summaryrefslogtreecommitdiffstatshomepage
path: root/src
diff options
context:
space:
mode:
author motoschifo <motoschifo@users.noreply.github.com>2016-02-07 10:18:44 +0100
committer motoschifo <motoschifo@users.noreply.github.com>2016-02-07 10:18:44 +0100
commit44f98845f7bd276a8db6a413e08981c2a44b1d38 (patch)
tree0d4547b361b228c17d535b2fa756ec0a52356e6b /src
parent38e15d788531b8eef8bc3d1c2c9814b9008f61e0 (diff)
parent5bc83a25063330ab9177a291ab984c5c7052aa02 (diff)
Merge pull request #1 from mamedev/master
Update to 0.170
Diffstat (limited to 'src')
-rw-r--r--src/devices/bus/a2bus/a2pic.cpp20
-rw-r--r--src/devices/bus/cbm2/hrg.cpp4
-rw-r--r--src/devices/bus/cbm2/hrg.h2
-rw-r--r--src/devices/bus/centronics/epson_ex800.cpp5
-rw-r--r--src/devices/bus/centronics/epson_lx800.cpp3
-rw-r--r--src/devices/bus/centronics/epson_lx810l.cpp6
-rw-r--r--src/devices/bus/coco/coco_dwsock.cpp3
-rw-r--r--src/devices/bus/cpc/symbfac2.cpp14
-rw-r--r--src/devices/bus/cpc/transtape.cpp4
-rw-r--r--src/devices/bus/intv/ecs.cpp164
-rw-r--r--src/devices/bus/isa/com.cpp8
-rw-r--r--src/devices/bus/megadrive/svp.cpp2
-rw-r--r--src/devices/bus/megadrive/svp.h2
-rw-r--r--src/devices/bus/neogeo/bootleg_prot.cpp4
-rw-r--r--src/devices/bus/pet/hsg.cpp4
-rw-r--r--src/devices/bus/pet/hsg.h2
-rw-r--r--src/devices/bus/sms_ctrl/lphaser.cpp2
-rw-r--r--src/devices/bus/sms_ctrl/paddle.cpp4
-rw-r--r--src/devices/bus/sms_ctrl/sports.cpp6
-rw-r--r--src/devices/bus/sms_ctrl/sportsjp.cpp2
-rw-r--r--src/devices/bus/ti99_peb/bwg.cpp2
-rw-r--r--src/devices/bus/ti99_peb/hfdc.cpp4
-rw-r--r--src/devices/bus/ti99_peb/horizon.cpp4
-rw-r--r--src/devices/bus/ti99x/videowrp.h12
-rw-r--r--src/devices/bus/z88/z88.cpp6
-rw-r--r--src/devices/cpu/alto2/a2disp.cpp4
-rw-r--r--src/devices/cpu/alto2/alto2cpu.cpp4
-rw-r--r--src/devices/cpu/arm/arm.cpp6
-rw-r--r--src/devices/cpu/asap/asap.cpp8
-rw-r--r--src/devices/cpu/dsp32/dsp32.cpp12
-rw-r--r--src/devices/cpu/hd61700/hd61700.cpp4
-rw-r--r--src/devices/cpu/hphybrid/hphybrid.cpp28
-rw-r--r--src/devices/cpu/hphybrid/hphybrid.h154
-rw-r--r--src/devices/cpu/i386/i386.cpp61
-rw-r--r--src/devices/cpu/i386/i386.h8
-rw-r--r--src/devices/cpu/i386/i386ops.inc2
-rw-r--r--src/devices/cpu/i386/i386priv.h24
-rw-r--r--src/devices/cpu/i386/i486ops.inc8
-rw-r--r--src/devices/cpu/i4004/i4004.cpp4
-rw-r--r--src/devices/cpu/i8089/i8089.cpp4
-rw-r--r--src/devices/cpu/i86/i86.cpp27
-rw-r--r--src/devices/cpu/i86/i86.txt15
-rw-r--r--src/devices/cpu/i960/i960.cpp8
-rw-r--r--src/devices/cpu/m37710/m37710il.h8
-rw-r--r--src/devices/cpu/m6800/6800ops.inc19
-rw-r--r--src/devices/cpu/m6800/6800tbl.inc28
-rw-r--r--src/devices/cpu/m6800/m6800.cpp4
-rw-r--r--src/devices/cpu/m6800/m6800.h2
-rw-r--r--src/devices/cpu/m68000/m68k_in.cpp35
-rw-r--r--src/devices/cpu/m68000/m68kcpu.cpp36
-rw-r--r--src/devices/cpu/m68000/m68kcpu.h4
-rw-r--r--src/devices/cpu/m68000/m68kmake.cpp6
-rw-r--r--src/devices/cpu/m68000/m68kops.cpp34874
-rw-r--r--src/devices/cpu/m68000/m68kops.h1995
-rw-r--r--src/devices/cpu/m68000/makefile20
-rw-r--r--src/devices/cpu/mips/mips3.cpp67
-rw-r--r--src/devices/cpu/mips/mips3.h6
-rw-r--r--src/devices/cpu/mips/mips3com.cpp12
-rw-r--r--src/devices/cpu/mips/mips3com.h1
-rw-r--r--src/devices/cpu/mips/mips3drc.cpp6
-rw-r--r--src/devices/cpu/pdp1/pdp1.cpp2
-rw-r--r--src/devices/cpu/pdp1/tx0.cpp2
-rw-r--r--src/devices/cpu/powerpc/ppc.h7
-rw-r--r--src/devices/cpu/powerpc/ppccom.cpp28
-rw-r--r--src/devices/cpu/powerpc/ppcdrc.cpp10
-rw-r--r--src/devices/cpu/se3208/se3208.cpp32
-rw-r--r--src/devices/cpu/ssp1601/ssp1601.cpp2
-rw-r--r--src/devices/cpu/ssp1601/ssp1601d.cpp2
-rw-r--r--src/devices/cpu/t11/t11.cpp4
-rw-r--r--src/devices/cpu/tlcs900/tlcs900.cpp36
-rw-r--r--src/devices/cpu/tlcs900/tlcs900.h16
-rw-r--r--src/devices/cpu/tms32051/32051ops.inc58
-rw-r--r--src/devices/cpu/tms34010/tms34010.cpp2
-rw-r--r--src/devices/cpu/vtlb.cpp310
-rw-r--r--src/devices/cpu/vtlb.h88
-rw-r--r--src/devices/cpu/z80/z80.cpp22
-rw-r--r--src/devices/imagedev/floppy.cpp8
-rw-r--r--src/devices/imagedev/floppy.h7
-rw-r--r--src/devices/machine/atahle.h1
-rw-r--r--src/devices/machine/atapihle.cpp8
-rw-r--r--src/devices/machine/i8271.cpp20
-rw-r--r--src/devices/machine/i8271.h1
-rw-r--r--src/devices/machine/idehd.cpp13
-rw-r--r--src/devices/machine/intelfsh.cpp11
-rw-r--r--src/devices/machine/intelfsh.h11
-rw-r--r--src/devices/machine/k033906.cpp4
-rw-r--r--src/devices/machine/k033906.h4
-rw-r--r--src/devices/machine/rp5h01.cpp9
-rw-r--r--src/devices/machine/rp5h01.h2
-rw-r--r--src/devices/machine/timekpr.cpp8
-rw-r--r--src/devices/machine/timekpr.h2
-rw-r--r--src/devices/machine/tms6100.cpp20
-rw-r--r--src/devices/machine/tms6100.h6
-rw-r--r--src/devices/machine/wd_fdc.cpp3
-rw-r--r--src/devices/sound/2610intf.cpp33
-rw-r--r--src/devices/sound/2610intf.h3
-rw-r--r--src/devices/sound/aica.cpp19
-rw-r--r--src/devices/sound/aica.h1
-rw-r--r--src/devices/sound/beep.cpp31
-rw-r--r--src/devices/sound/beep.h5
-rw-r--r--src/devices/sound/c140.cpp42
-rw-r--r--src/devices/sound/c140.h1
-rw-r--r--src/devices/sound/es5506.cpp49
-rw-r--r--src/devices/sound/fm.cpp11
-rw-r--r--src/devices/sound/fm.h2
-rw-r--r--src/devices/sound/fm2612.cpp2
-rw-r--r--src/devices/sound/fmopl.cpp2
-rw-r--r--src/devices/sound/fmopl.h2
-rw-r--r--src/devices/sound/k056800.cpp6
-rw-r--r--src/devices/sound/msm5232.cpp2
-rw-r--r--src/devices/sound/msm5232.h2
-rw-r--r--src/devices/sound/namco.cpp31
-rw-r--r--src/devices/sound/namco.h3
-rw-r--r--src/devices/sound/rf5c400.cpp26
-rw-r--r--src/devices/sound/rf5c400.h3
-rw-r--r--src/devices/sound/s14001a.cpp938
-rw-r--r--src/devices/sound/s14001a.h141
-rw-r--r--src/devices/sound/scsp.cpp19
-rw-r--r--src/devices/sound/scsp.h34
-rw-r--r--src/devices/sound/sn76477.cpp448
-rw-r--r--src/devices/sound/sn76477.h25
-rw-r--r--src/devices/sound/tms5110.cpp34
-rw-r--r--src/devices/sound/tms5110.h6
-rw-r--r--src/devices/sound/upd7759.cpp124
-rw-r--r--src/devices/sound/upd7759.h2
-rw-r--r--src/devices/sound/ym2151.cpp2
-rw-r--r--src/devices/sound/ym2151.h2
-rw-r--r--src/devices/sound/ym2413.cpp2
-rw-r--r--src/devices/sound/ym2413.h2
-rw-r--r--src/devices/sound/ymdeltat.cpp2
-rw-r--r--src/devices/sound/ymdeltat.h2
-rw-r--r--src/devices/sound/ymf262.cpp2
-rw-r--r--src/devices/sound/ymf262.h2
-rw-r--r--src/devices/sound/ymf271.cpp37
-rw-r--r--src/devices/sound/ymf271.h8
-rw-r--r--src/devices/sound/ymz280b.cpp9
-rw-r--r--src/devices/video/ef9364.cpp359
-rw-r--r--src/devices/video/ef9364.h104
-rw-r--r--src/devices/video/ef9365.cpp2
-rw-r--r--src/devices/video/i82730.cpp4
-rw-r--r--src/devices/video/mc6845.cpp5
-rw-r--r--src/devices/video/pcd8544.cpp226
-rw-r--r--src/devices/video/pcd8544.h72
-rw-r--r--src/devices/video/vooddefs.h2045
-rw-r--r--src/devices/video/voodoo.cpp3430
-rw-r--r--src/devices/video/voodoo.h1794
-rw-r--r--src/devices/video/voodoo_pci.cpp4
-rw-r--r--src/devices/video/voodoo_rast.inc493
-rw-r--r--src/emu/bookkeeping.cpp5
-rw-r--r--src/emu/bookkeeping.h4
-rw-r--r--src/emu/cheat.cpp16
-rw-r--r--src/emu/cheat.h4
-rw-r--r--src/emu/clifront.cpp15
-rw-r--r--src/emu/config.h2
-rw-r--r--src/emu/debug/debugcmd.cpp5
-rw-r--r--src/emu/debug/debugcpu.cpp18
-rw-r--r--src/emu/debug/debugvw.cpp29
-rw-r--r--src/emu/debug/debugvw.h2
-rw-r--r--src/emu/debug/dvdisasm.cpp13
-rw-r--r--src/emu/debug/dvstate.cpp18
-rw-r--r--src/emu/debug/textbuf.cpp6
-rw-r--r--src/emu/devfind.h3
-rw-r--r--src/emu/device.cpp20
-rw-r--r--src/emu/device.h10
-rw-r--r--src/emu/diexec.cpp1
-rw-r--r--src/emu/diexec.h2
-rw-r--r--src/emu/digfx.cpp2
-rw-r--r--src/emu/digfx.h4
-rw-r--r--src/emu/diimage.cpp36
-rw-r--r--src/emu/dimemory.cpp5
-rw-r--r--src/emu/dimemory.h18
-rw-r--r--src/emu/disound.cpp5
-rw-r--r--src/emu/divtlb.cpp341
-rw-r--r--src/emu/divtlb.h89
-rw-r--r--src/emu/drawgfx.cpp10
-rw-r--r--src/emu/drawgfx.h10
-rw-r--r--src/emu/drivers/empty.cpp7
-rw-r--r--src/emu/emualloc.cpp29
-rw-r--r--src/emu/emualloc.h3
-rw-r--r--src/emu/emuopts.cpp66
-rw-r--r--src/emu/emuopts.h26
-rw-r--r--src/emu/gamedrv.h1
-rw-r--r--src/emu/image.cpp3
-rw-r--r--src/emu/image.h2
-rw-r--r--src/emu/info.cpp5
-rw-r--r--src/emu/info.h2
-rw-r--r--src/emu/inpttype.h20
-rw-r--r--src/emu/ioport.h16
-rw-r--r--src/emu/luaengine.cpp69
-rw-r--r--src/emu/machine.cpp143
-rw-r--r--src/emu/machine.h22
-rw-r--r--src/emu/mame.cpp19
-rw-r--r--src/emu/memory.cpp106
-rw-r--r--src/emu/memory.h23
-rw-r--r--src/emu/output.cpp6
-rw-r--r--src/emu/render.cpp7
-rw-r--r--src/emu/render.h7
-rw-r--r--src/emu/rendfont.cpp126
-rw-r--r--src/emu/rendfont.h14
-rw-r--r--src/emu/rendutil.cpp4
-rw-r--r--src/emu/rendutil.h2
-rw-r--r--src/emu/romload.cpp4
-rw-r--r--src/emu/screen.h5
-rw-r--r--src/emu/sound.cpp6
-rw-r--r--src/emu/sound.h2
-rw-r--r--src/emu/sound/wavwrite.cpp2
-rw-r--r--src/emu/tilemap.cpp2
-rw-r--r--src/emu/tilemap.h4
-rw-r--r--src/emu/ui/auditmenu.cpp200
-rw-r--r--src/emu/ui/auditmenu.h37
-rw-r--r--src/emu/ui/cmddata.h404
-rw-r--r--src/emu/ui/cmdrender.h151
-rw-r--r--src/emu/ui/ctrlmenu.cpp149
-rw-r--r--src/emu/ui/ctrlmenu.h41
-rw-r--r--src/emu/ui/custmenu.cpp616
-rw-r--r--src/emu/ui/custmenu.h131
-rw-r--r--src/emu/ui/custui.cpp1049
-rw-r--r--src/emu/ui/custui.h182
-rw-r--r--src/emu/ui/datfile.cpp643
-rw-r--r--src/emu/ui/datfile.h79
-rw-r--r--src/emu/ui/datmenu.cpp569
-rw-r--r--src/emu/ui/datmenu.h93
-rw-r--r--src/emu/ui/defimg.h261
-rw-r--r--src/emu/ui/dirmenu.cpp690
-rw-r--r--src/emu/ui/dirmenu.h128
-rw-r--r--src/emu/ui/dsplmenu.cpp201
-rw-r--r--src/emu/ui/dsplmenu.h46
-rw-r--r--src/emu/ui/filemngr.cpp4
-rw-r--r--src/emu/ui/icorender.h233
-rw-r--r--src/emu/ui/imgcntrl.cpp14
-rw-r--r--src/emu/ui/inifile.cpp454
-rw-r--r--src/emu/ui/inifile.h122
-rw-r--r--src/emu/ui/inputmap.cpp2
-rw-r--r--src/emu/ui/mainmenu.cpp149
-rw-r--r--src/emu/ui/mainmenu.h11
-rw-r--r--src/emu/ui/menu.cpp1853
-rw-r--r--src/emu/ui/menu.h160
-rw-r--r--src/emu/ui/miscmenu.cpp127
-rw-r--r--src/emu/ui/miscmenu.h25
-rw-r--r--src/emu/ui/moptions.cpp92
-rw-r--r--src/emu/ui/moptions.h148
-rw-r--r--src/emu/ui/optsmenu.cpp342
-rw-r--r--src/emu/ui/optsmenu.h48
-rw-r--r--src/emu/ui/selector.cpp244
-rw-r--r--src/emu/ui/selector.h51
-rw-r--r--src/emu/ui/selgame.cpp2673
-rw-r--r--src/emu/ui/selgame.h75
-rw-r--r--src/emu/ui/selsoft.cpp1974
-rw-r--r--src/emu/ui/selsoft.h112
-rw-r--r--src/emu/ui/simpleselgame.cpp445
-rw-r--r--src/emu/ui/simpleselgame.h47
-rw-r--r--src/emu/ui/sliders.cpp6
-rw-r--r--src/emu/ui/slotopt.cpp4
-rw-r--r--src/emu/ui/sndmenu.cpp174
-rw-r--r--src/emu/ui/sndmenu.h42
-rw-r--r--src/emu/ui/starimg.h37
-rw-r--r--src/emu/ui/swlist.cpp2
-rw-r--r--src/emu/ui/toolbar.h250
-rw-r--r--src/emu/ui/ui.cpp362
-rw-r--r--src/emu/ui/ui.h216
-rw-r--r--src/emu/ui/uicmd14.pngbin0 -> 3254 bytes
-rw-r--r--src/emu/ui/utils.cpp178
-rw-r--r--src/emu/ui/utils.h355
-rw-r--r--src/emu/ui/videoopt.cpp2
-rw-r--r--src/emu/ui/viewgfx.cpp2
-rw-r--r--src/emu/uiinput.cpp64
-rw-r--r--src/emu/uiinput.h8
-rw-r--r--src/emu/validity.cpp18
-rw-r--r--src/emu/validity.h2
-rw-r--r--src/emu/video.cpp27
-rw-r--r--src/emu/video.h2
-rw-r--r--src/ldplayer/ldplayer.cpp20
-rw-r--r--src/lib/util/corealloc.h8
-rw-r--r--src/lib/util/options.cpp23
-rw-r--r--src/lib/util/options.h5
-rw-r--r--src/mame/arcade.lst96
-rw-r--r--src/mame/audio/carnival.cpp247
-rw-r--r--src/mame/audio/cclimber.cpp25
-rw-r--r--src/mame/audio/cclimber.h3
-rw-r--r--src/mame/audio/dcs.cpp97
-rw-r--r--src/mame/audio/dcs.h4
-rw-r--r--src/mame/audio/depthch.cpp25
-rw-r--r--src/mame/audio/gottlieb.cpp4
-rw-r--r--src/mame/audio/invinco.cpp29
-rw-r--r--src/mame/audio/m72.cpp15
-rw-r--r--src/mame/audio/m72.h2
-rw-r--r--src/mame/audio/polyplay.cpp2
-rw-r--r--src/mame/audio/pulsar.cpp25
-rw-r--r--src/mame/audio/qix.cpp4
-rw-r--r--src/mame/audio/spiders.cpp2
-rw-r--r--src/mame/audio/sprint2.cpp2
-rw-r--r--src/mame/audio/tank8.cpp2
-rw-r--r--src/mame/drivers/20pacgal.cpp34
-rw-r--r--src/mame/drivers/40love.cpp4
-rw-r--r--src/mame/drivers/4enraya.cpp3
-rw-r--r--src/mame/drivers/8080bw.cpp28
-rw-r--r--src/mame/drivers/a5105.cpp3
-rw-r--r--src/mame/drivers/ace.cpp2
-rw-r--r--src/mame/drivers/aerofgt.cpp6
-rw-r--r--src/mame/drivers/aleck64.cpp7
-rw-r--r--src/mame/drivers/alg.cpp4
-rw-r--r--src/mame/drivers/alphatro.cpp3
-rw-r--r--src/mame/drivers/alto2.cpp10
-rw-r--r--src/mame/drivers/amiga.cpp24
-rw-r--r--src/mame/drivers/amust.cpp3
-rw-r--r--src/mame/drivers/apollo.cpp8
-rw-r--r--src/mame/drivers/arcadecl.cpp2
-rw-r--r--src/mame/drivers/aristmk5.cpp80
-rw-r--r--src/mame/drivers/arkanoid.cpp18
-rw-r--r--src/mame/drivers/armedf.cpp6
-rw-r--r--src/mame/drivers/arsystems.cpp31
-rw-r--r--src/mame/drivers/atarifb.cpp2
-rw-r--r--src/mame/drivers/atarig1.cpp94
-rw-r--r--src/mame/drivers/atarisy1.cpp111
-rw-r--r--src/mame/drivers/atarisy2.cpp174
-rw-r--r--src/mame/drivers/atetris.cpp6
-rw-r--r--src/mame/drivers/atom.cpp94
-rw-r--r--src/mame/drivers/bagman.cpp32
-rw-r--r--src/mame/drivers/barata.cpp2
-rw-r--r--src/mame/drivers/batman.cpp2
-rw-r--r--src/mame/drivers/bbc.cpp56
-rw-r--r--src/mame/drivers/bbcbc.cpp4
-rw-r--r--src/mame/drivers/berzerk.cpp84
-rw-r--r--src/mame/drivers/bfm_sc1.cpp2
-rw-r--r--src/mame/drivers/bfm_sc2.cpp15
-rw-r--r--src/mame/drivers/bfm_sc4.cpp6240
-rw-r--r--src/mame/drivers/bfmsys85.cpp71
-rw-r--r--src/mame/drivers/bigbord2.cpp3
-rw-r--r--src/mame/drivers/bigevglf.cpp2
-rw-r--r--src/mame/drivers/bmjr.cpp3
-rw-r--r--src/mame/drivers/bnstars.cpp4
-rw-r--r--src/mame/drivers/br8641.cpp10
-rw-r--r--src/mame/drivers/bw12.cpp3
-rw-r--r--src/mame/drivers/byvid.cpp6
-rw-r--r--src/mame/drivers/casloopy.cpp12
-rw-r--r--src/mame/drivers/cb2001.cpp2
-rw-r--r--src/mame/drivers/cc40.cpp2
-rw-r--r--src/mame/drivers/ccastles.cpp6
-rw-r--r--src/mame/drivers/cd2650.cpp3
-rw-r--r--src/mame/drivers/changela.cpp2
-rw-r--r--src/mame/drivers/chihiro.cpp1
-rw-r--r--src/mame/drivers/cobra.cpp198
-rw-r--r--src/mame/drivers/compis.cpp8
-rw-r--r--src/mame/drivers/cps1.cpp4
-rw-r--r--src/mame/drivers/cps3.cpp37
-rw-r--r--src/mame/drivers/crimfght.cpp2
-rw-r--r--src/mame/drivers/cubeqst.cpp1
-rw-r--r--src/mame/drivers/cubo.cpp11
-rw-r--r--src/mame/drivers/cyberbal.cpp31
-rw-r--r--src/mame/drivers/d6800.cpp4
-rw-r--r--src/mame/drivers/dai3wksi.cpp4
-rw-r--r--src/mame/drivers/darius.cpp2
-rw-r--r--src/mame/drivers/dccons.cpp8
-rw-r--r--src/mame/drivers/dec0.cpp46
-rw-r--r--src/mame/drivers/deco156.cpp32
-rw-r--r--src/mame/drivers/decwritr.cpp3
-rw-r--r--src/mame/drivers/deshoros.cpp11
-rw-r--r--src/mame/drivers/didact.cpp576
-rw-r--r--src/mame/drivers/dim68k.cpp5
-rw-r--r--src/mame/drivers/dkong.cpp2
-rw-r--r--src/mame/drivers/dynax.cpp6
-rw-r--r--src/mame/drivers/electron.cpp2
-rw-r--r--src/mame/drivers/esd16.cpp35
-rw-r--r--src/mame/drivers/exedexes.cpp2
-rw-r--r--src/mame/drivers/exerion.cpp2
-rw-r--r--src/mame/drivers/fantland.cpp2
-rw-r--r--src/mame/drivers/fastinvaders.cpp271
-rw-r--r--src/mame/drivers/fidel6502.cpp741
-rw-r--r--src/mame/drivers/fidelz80.cpp1380
-rw-r--r--src/mame/drivers/firetrk.cpp26
-rw-r--r--src/mame/drivers/fitfight.cpp2
-rw-r--r--src/mame/drivers/fm7.cpp70
-rw-r--r--src/mame/drivers/fp1100.cpp3
-rw-r--r--src/mame/drivers/funkball.cpp4
-rw-r--r--src/mame/drivers/funworld.cpp6
-rw-r--r--src/mame/drivers/gaelco2.cpp90
-rw-r--r--src/mame/drivers/gaelco3d.cpp6
-rw-r--r--src/mame/drivers/gal3.cpp2
-rw-r--r--src/mame/drivers/galaxi.cpp81
-rw-r--r--src/mame/drivers/galaxian.cpp6
-rw-r--r--src/mame/drivers/gauntlet.cpp104
-rw-r--r--src/mame/drivers/geneve.cpp10
-rw-r--r--src/mame/drivers/gkigt.cpp155
-rw-r--r--src/mame/drivers/glasgow.cpp4
-rw-r--r--src/mame/drivers/glass.cpp9
-rw-r--r--src/mame/drivers/goupil.cpp511
-rw-r--r--src/mame/drivers/gticlub.cpp8
-rw-r--r--src/mame/drivers/gundealr.cpp47
-rw-r--r--src/mame/drivers/h19.cpp3
-rw-r--r--src/mame/drivers/h8.cpp3
-rw-r--r--src/mame/drivers/harddriv.cpp42
-rw-r--r--src/mame/drivers/hh_cop400.cpp2
-rw-r--r--src/mame/drivers/hh_hmcs40.cpp20
-rw-r--r--src/mame/drivers/hh_tms1k.cpp37
-rw-r--r--src/mame/drivers/hh_ucom4.cpp6
-rw-r--r--src/mame/drivers/highvdeo.cpp16
-rw-r--r--src/mame/drivers/hornet.cpp43
-rw-r--r--src/mame/drivers/hp9845.cpp22
-rw-r--r--src/mame/drivers/ie15.cpp9
-rw-r--r--src/mame/drivers/igs009.cpp2
-rw-r--r--src/mame/drivers/igs011.cpp43
-rw-r--r--src/mame/drivers/igspoker.cpp18
-rw-r--r--src/mame/drivers/imds2.cpp3
-rw-r--r--src/mame/drivers/iteagle.cpp26
-rw-r--r--src/mame/drivers/itech8.cpp46
-rw-r--r--src/mame/drivers/itt3030.cpp3
-rw-r--r--src/mame/drivers/jackal.cpp7
-rw-r--r--src/mame/drivers/jackie.cpp2
-rw-r--r--src/mame/drivers/jaguar.cpp14
-rw-r--r--src/mame/drivers/jpmimpct.cpp4
-rw-r--r--src/mame/drivers/jpmmps.cpp4
-rw-r--r--src/mame/drivers/jpmsys5.cpp8
-rw-r--r--src/mame/drivers/jr100.cpp6
-rw-r--r--src/mame/drivers/jr200.cpp4
-rw-r--r--src/mame/drivers/juicebox.cpp10
-rw-r--r--src/mame/drivers/kaneko16.cpp88
-rw-r--r--src/mame/drivers/kaypro.cpp4
-rw-r--r--src/mame/drivers/kurukuru.cpp207
-rw-r--r--src/mame/drivers/ladyfrog.cpp19
-rw-r--r--src/mame/drivers/legionna.cpp56
-rw-r--r--src/mame/drivers/liberatr.cpp54
-rw-r--r--src/mame/drivers/m58.cpp46
-rw-r--r--src/mame/drivers/m92.cpp13
-rw-r--r--src/mame/drivers/magictg.cpp10
-rw-r--r--src/mame/drivers/marywu.cpp202
-rw-r--r--src/mame/drivers/mazerbla.cpp2
-rw-r--r--src/mame/drivers/mc1000.cpp1
-rw-r--r--src/mame/drivers/meadwttl.cpp6
-rw-r--r--src/mame/drivers/megasys1.cpp125
-rw-r--r--src/mame/drivers/mephisto.cpp2
-rw-r--r--src/mame/drivers/merit.cpp43
-rw-r--r--src/mame/drivers/metro.cpp98
-rw-r--r--src/mame/drivers/micral.cpp3
-rw-r--r--src/mame/drivers/microdec.cpp4
-rw-r--r--src/mame/drivers/micronic.cpp2
-rw-r--r--src/mame/drivers/micropin.cpp4
-rw-r--r--src/mame/drivers/midtunit.cpp377
-rw-r--r--src/mame/drivers/midzeus.cpp1
-rw-r--r--src/mame/drivers/mmodular.cpp28
-rw-r--r--src/mame/drivers/model3.cpp233
-rw-r--r--src/mame/drivers/monty.cpp4
-rw-r--r--src/mame/drivers/mpu3.cpp2
-rw-r--r--src/mame/drivers/mpu4hw.cpp2
-rw-r--r--src/mame/drivers/mquake.cpp4
-rw-r--r--src/mame/drivers/msisaac.cpp2
-rw-r--r--src/mame/drivers/multi8.cpp3
-rw-r--r--src/mame/drivers/mz2000.cpp3
-rw-r--r--src/mame/drivers/mz2500.cpp3
-rw-r--r--src/mame/drivers/mz3500.cpp3
-rw-r--r--src/mame/drivers/n64.cpp6
-rw-r--r--src/mame/drivers/namcos22.cpp2
-rw-r--r--src/mame/drivers/namcos86.cpp16
-rw-r--r--src/mame/drivers/naomi.cpp311
-rw-r--r--src/mame/drivers/nc.cpp2
-rw-r--r--src/mame/drivers/neogeo.cpp16
-rw-r--r--src/mame/drivers/neogeo_noslot.cpp221
-rw-r--r--src/mame/drivers/nibble.cpp362
-rw-r--r--src/mame/drivers/nightgal.cpp116
-rw-r--r--src/mame/drivers/ninjakd2.cpp68
-rw-r--r--src/mame/drivers/nokia_3310.cpp848
-rw-r--r--src/mame/drivers/nova2001.cpp4
-rw-r--r--src/mame/drivers/nwk-tr.cpp15
-rw-r--r--src/mame/drivers/opwolf.cpp2
-rw-r--r--src/mame/drivers/osi.cpp7
-rw-r--r--src/mame/drivers/overdriv.cpp94
-rw-r--r--src/mame/drivers/p2000t.cpp2
-rw-r--r--src/mame/drivers/p8k.cpp4
-rw-r--r--src/mame/drivers/pacman.cpp46
-rw-r--r--src/mame/drivers/palm.cpp2
-rw-r--r--src/mame/drivers/palmz22.cpp4
-rw-r--r--src/mame/drivers/pasha2.cpp29
-rw-r--r--src/mame/drivers/pb1000.cpp2
-rw-r--r--src/mame/drivers/pc100.cpp3
-rw-r--r--src/mame/drivers/pc2000.cpp13
-rw-r--r--src/mame/drivers/pc4.cpp2
-rw-r--r--src/mame/drivers/pc8801.cpp3
-rw-r--r--src/mame/drivers/pc9801.cpp33
-rw-r--r--src/mame/drivers/pce220.cpp4
-rw-r--r--src/mame/drivers/pcw.cpp13
-rw-r--r--src/mame/drivers/pcw16.cpp3
-rw-r--r--src/mame/drivers/pcxt.cpp2
-rw-r--r--src/mame/drivers/peoplepc.cpp2
-rw-r--r--src/mame/drivers/peplus.cpp12
-rw-r--r--src/mame/drivers/phoenix.cpp2
-rw-r--r--src/mame/drivers/playch10.cpp2
-rw-r--r--src/mame/drivers/polyplay.cpp4
-rw-r--r--src/mame/drivers/popeye.cpp7
-rw-r--r--src/mame/drivers/prestige.cpp11
-rw-r--r--src/mame/drivers/proconn.cpp4
-rw-r--r--src/mame/drivers/prophet600.cpp66
-rw-r--r--src/mame/drivers/pse.cpp50
-rw-r--r--src/mame/drivers/psikyo4.cpp2
-rw-r--r--src/mame/drivers/psion.cpp2
-rw-r--r--src/mame/drivers/psychic5.cpp34
-rw-r--r--src/mame/drivers/pulsar.cpp5
-rw-r--r--src/mame/drivers/pve500.cpp3
-rw-r--r--src/mame/drivers/px4.cpp32
-rw-r--r--src/mame/drivers/qix.cpp7
-rw-r--r--src/mame/drivers/r9751.cpp180
-rw-r--r--src/mame/drivers/rampart.cpp10
-rw-r--r--src/mame/drivers/rastan.cpp2
-rw-r--r--src/mame/drivers/relief.cpp6
-rw-r--r--src/mame/drivers/rex6000.cpp17
-rw-r--r--src/mame/drivers/rsc55.cpp2
-rw-r--r--src/mame/drivers/rungun.cpp4
-rw-r--r--src/mame/drivers/sam.cpp398
-rw-r--r--src/mame/drivers/savquest.cpp4
-rw-r--r--src/mame/drivers/sbowling.cpp2
-rw-r--r--src/mame/drivers/sbrain.cpp3
-rw-r--r--src/mame/drivers/sc2.cpp8
-rw-r--r--src/mame/drivers/seattle.cpp6
-rw-r--r--src/mame/drivers/segac2.cpp106
-rw-r--r--src/mame/drivers/segas16a.cpp19
-rw-r--r--src/mame/drivers/segas16b.cpp29
-rw-r--r--src/mame/drivers/segas18.cpp20
-rw-r--r--src/mame/drivers/segas24.cpp6
-rw-r--r--src/mame/drivers/segaybd.cpp36
-rw-r--r--src/mame/drivers/seibuspi.cpp49
-rw-r--r--src/mame/drivers/sfbonus.cpp49
-rw-r--r--src/mame/drivers/sfkick.cpp24
-rw-r--r--src/mame/drivers/shougi.cpp2
-rw-r--r--src/mame/drivers/slapfght.cpp166
-rw-r--r--src/mame/drivers/smc777.cpp3
-rw-r--r--src/mame/drivers/snk.cpp95
-rw-r--r--src/mame/drivers/spaceg.cpp2
-rw-r--r--src/mame/drivers/spc1500.cpp247
-rw-r--r--src/mame/drivers/spoker.cpp4
-rw-r--r--src/mame/drivers/sprint4.cpp6
-rw-r--r--src/mame/drivers/ssv.cpp2
-rw-r--r--src/mame/drivers/st_mp200.cpp26
-rw-r--r--src/mame/drivers/starwars.cpp15
-rw-r--r--src/mame/drivers/studio2.cpp32
-rw-r--r--src/mame/drivers/stv.cpp316
-rw-r--r--src/mame/drivers/super80.cpp1
-rw-r--r--src/mame/drivers/supercon.cpp2
-rw-r--r--src/mame/drivers/system16.cpp4
-rw-r--r--src/mame/drivers/taito_b.cpp2
-rw-r--r--src/mame/drivers/taito_f2.cpp1
-rw-r--r--src/mame/drivers/taito_f3.cpp8
-rw-r--r--src/mame/drivers/taitopjc.cpp4
-rw-r--r--src/mame/drivers/taitosj.cpp12
-rw-r--r--src/mame/drivers/taitotz.cpp583
-rw-r--r--src/mame/drivers/tankbust.cpp2
-rw-r--r--src/mame/drivers/targeth.cpp6
-rw-r--r--src/mame/drivers/tavernie.cpp3
-rw-r--r--src/mame/drivers/tb303.cpp50
-rw-r--r--src/mame/drivers/thoop2.cpp3
-rw-r--r--src/mame/drivers/thunderj.cpp2
-rw-r--r--src/mame/drivers/ti99_4p.cpp10
-rw-r--r--src/mame/drivers/ti99_4x.cpp10
-rw-r--r--src/mame/drivers/ticalc1x.cpp6
-rw-r--r--src/mame/drivers/timex.cpp8
-rw-r--r--src/mame/drivers/tispeak.cpp329
-rw-r--r--src/mame/drivers/tmc1800.cpp2
-rw-r--r--src/mame/drivers/tourvis.cpp117
-rw-r--r--src/mame/drivers/tp84.cpp7
-rw-r--r--src/mame/drivers/tr606.cpp109
-rw-r--r--src/mame/drivers/ts803.cpp38
-rw-r--r--src/mame/drivers/tubep.cpp2
-rw-r--r--src/mame/drivers/tumbleb.cpp13
-rw-r--r--src/mame/drivers/ultratnk.cpp2
-rw-r--r--src/mame/drivers/vc4000.cpp2
-rw-r--r--src/mame/drivers/vegas.cpp14
-rw-r--r--src/mame/drivers/vicdual.cpp58
-rw-r--r--src/mame/drivers/viper.cpp129
-rw-r--r--src/mame/drivers/vk100.cpp3
-rw-r--r--src/mame/drivers/vt100.cpp4
-rw-r--r--src/mame/drivers/wallc.cpp2
-rw-r--r--src/mame/drivers/whitestar.cpp374
-rw-r--r--src/mame/drivers/wildpkr.cpp6
-rw-r--r--src/mame/drivers/williams.cpp8
-rw-r--r--src/mame/drivers/witch.cpp45
-rw-r--r--src/mame/drivers/wolfpack.cpp17
-rw-r--r--src/mame/drivers/wpc_an.cpp36
-rw-r--r--src/mame/drivers/wpc_dot.cpp2
-rw-r--r--src/mame/drivers/wrally.cpp40
-rw-r--r--src/mame/drivers/x07.cpp5
-rw-r--r--src/mame/drivers/x1.cpp18
-rw-r--r--src/mame/drivers/xerox820.cpp3
-rw-r--r--src/mame/drivers/xybots.cpp4
-rw-r--r--src/mame/drivers/z9001.cpp3
-rw-r--r--src/mame/drivers/zaxxon.cpp12
-rw-r--r--src/mame/drivers/zn.cpp1
-rw-r--r--src/mame/drivers/zorba.cpp3
-rw-r--r--src/mame/drivers/zrt80.cpp3
-rw-r--r--src/mame/includes/20pacgal.h1
-rw-r--r--src/mame/includes/40love.h8
-rw-r--r--src/mame/includes/4enraya.h19
-rw-r--r--src/mame/includes/8080bw.h5
-rw-r--r--src/mame/includes/arcadecl.h3
-rw-r--r--src/mame/includes/arkanoid.h4
-rw-r--r--src/mame/includes/atarifb.h2
-rw-r--r--src/mame/includes/atarig1.h4
-rw-r--r--src/mame/includes/atarisy1.h8
-rw-r--r--src/mame/includes/atarisy2.h14
-rw-r--r--src/mame/includes/badlands.h5
-rw-r--r--src/mame/includes/bigevglf.h2
-rw-r--r--src/mame/includes/btime.h34
-rw-r--r--src/mame/includes/ccastles.h4
-rw-r--r--src/mame/includes/changela.h2
-rw-r--r--src/mame/includes/chihiro.h21
-rw-r--r--src/mame/includes/compis.h8
-rw-r--r--src/mame/includes/cps1.h4
-rw-r--r--src/mame/includes/cps3.h44
-rw-r--r--src/mame/includes/cyberbal.h4
-rw-r--r--src/mame/includes/darius.h2
-rw-r--r--src/mame/includes/dkong.h59
-rw-r--r--src/mame/includes/dynax.h43
-rw-r--r--src/mame/includes/exedexes.h2
-rw-r--r--src/mame/includes/fidelz80.h64
-rw-r--r--src/mame/includes/fm7.h134
-rw-r--r--src/mame/includes/gaelco2.h10
-rw-r--r--src/mame/includes/gauntlet.h18
-rw-r--r--src/mame/includes/harddriv.h396
-rw-r--r--src/mame/includes/hh_tms1k.h1
-rw-r--r--src/mame/includes/jackal.h5
-rw-r--r--src/mame/includes/jaguar.h2
-rw-r--r--src/mame/includes/kaneko16.h2
-rw-r--r--src/mame/includes/liberatr.h22
-rw-r--r--src/mame/includes/m107.h23
-rw-r--r--src/mame/includes/m58.h14
-rw-r--r--src/mame/includes/megasys1.h4
-rw-r--r--src/mame/includes/msisaac.h2
-rw-r--r--src/mame/includes/n64.h58
-rw-r--r--src/mame/includes/namcos86.h22
-rw-r--r--src/mame/includes/nb1414m4.h2
-rw-r--r--src/mame/includes/nbmj8891.h14
-rw-r--r--src/mame/includes/ninjakd2.h2
-rw-r--r--src/mame/includes/opwolf.h2
-rw-r--r--src/mame/includes/overdriv.h16
-rw-r--r--src/mame/includes/p2000t.h2
-rw-r--r--src/mame/includes/phoenix.h2
-rw-r--r--src/mame/includes/playch10.h24
-rw-r--r--src/mame/includes/polyplay.h2
-rw-r--r--src/mame/includes/popeye.h5
-rw-r--r--src/mame/includes/qix.h7
-rw-r--r--src/mame/includes/rampart.h3
-rw-r--r--src/mame/includes/rastan.h2
-rw-r--r--src/mame/includes/relief.h6
-rw-r--r--src/mame/includes/segas16b.h2
-rw-r--r--src/mame/includes/segas18.h1
-rw-r--r--src/mame/includes/segas24.h19
-rw-r--r--src/mame/includes/segaybd.h2
-rw-r--r--src/mame/includes/slapstic.h22
-rw-r--r--src/mame/includes/snk.h1
-rw-r--r--src/mame/includes/starwars.h2
-rw-r--r--src/mame/includes/taito_b.h2
-rw-r--r--src/mame/includes/tankbust.h2
-rw-r--r--src/mame/includes/tp84.h4
-rw-r--r--src/mame/includes/tubep.h2
-rw-r--r--src/mame/includes/vicdual.h3
-rw-r--r--src/mame/includes/vsnes.h23
-rw-r--r--src/mame/includes/williams.h4
-rw-r--r--src/mame/includes/wolfpack.h11
-rw-r--r--src/mame/includes/x1.h2
-rw-r--r--src/mame/layout/fidel_bcc.lay69
-rw-r--r--src/mame/layout/fidel_cc.lay87
-rw-r--r--src/mame/layout/fidel_csc.lay493
-rw-r--r--src/mame/layout/fidel_fev.lay483
-rw-r--r--src/mame/layout/fidel_sc12.lay500
-rw-r--r--src/mame/layout/fidel_vbrc.lay48
-rw-r--r--src/mame/layout/fidel_vcc.lay67
-rw-r--r--src/mame/layout/fidel_vsc.lay685
-rw-r--r--src/mame/layout/k28.lay26
-rw-r--r--src/mame/layout/marywu.lay172
-rwxr-xr-xsrc/mame/layout/md6802.lay125
-rwxr-xr-xsrc/mame/layout/mp68a.lay116
-rw-r--r--src/mame/layout/tr606.lay20
-rw-r--r--src/mame/machine/315-5838_317-0229_comp.cpp124
-rw-r--r--src/mame/machine/315-5838_317-0229_comp.h16
-rw-r--r--src/mame/machine/6883sam.cpp1
-rw-r--r--src/mame/machine/amstrad.cpp71
-rw-r--r--src/mame/machine/apollo_kbd.cpp1
-rw-r--r--src/mame/machine/arkanoid.cpp32
-rw-r--r--src/mame/machine/atarifb.cpp2
-rw-r--r--src/mame/machine/atarigen.cpp162
-rw-r--r--src/mame/machine/atarigen.h34
-rw-r--r--src/mame/machine/awboard.cpp9
-rw-r--r--src/mame/machine/bbc.cpp20
-rw-r--r--src/mame/machine/beta.cpp4
-rw-r--r--src/mame/machine/bigevglf.cpp2
-rw-r--r--src/mame/machine/dec_lk201.cpp2
-rw-r--r--src/mame/machine/electron.cpp4
-rw-r--r--src/mame/machine/gaelco2.cpp1
-rw-r--r--src/mame/machine/gamecom.cpp4
-rw-r--r--src/mame/machine/harddriv.cpp32
-rw-r--r--src/mame/machine/iteagle_fpga.cpp43
-rw-r--r--src/mame/machine/iteagle_fpga.h2
-rw-r--r--src/mame/machine/kay_kbd.cpp1
-rw-r--r--src/mame/machine/kc.cpp2
-rw-r--r--src/mame/machine/megacd.cpp50
-rw-r--r--src/mame/machine/meters.cpp4
-rw-r--r--src/mame/machine/meters.h5
-rw-r--r--src/mame/machine/midwayic.cpp16
-rw-r--r--src/mame/machine/ms7004.cpp2
-rw-r--r--src/mame/machine/mz700.cpp5
-rw-r--r--src/mame/machine/n64.cpp278
-rw-r--r--src/mame/machine/naomi.cpp21
-rw-r--r--src/mame/machine/nb1414m4.cpp3
-rw-r--r--src/mame/machine/opwolf.cpp2
-rw-r--r--src/mame/machine/p2000t.cpp2
-rw-r--r--src/mame/machine/pc9801_cd.cpp34
-rw-r--r--src/mame/machine/pc9801_cd.h23
-rw-r--r--src/mame/machine/pc9801_kbd.cpp8
-rw-r--r--src/mame/machine/pc9801_kbd.h1
-rw-r--r--src/mame/machine/playch10.cpp4
-rw-r--r--src/mame/machine/qix.cpp7
-rw-r--r--src/mame/machine/slapstic.cpp19
-rw-r--r--src/mame/machine/sms.cpp7
-rw-r--r--src/mame/machine/starwars.cpp2
-rw-r--r--src/mame/machine/vsnes.cpp17
-rw-r--r--src/mame/machine/williams.cpp4
-rw-r--r--src/mame/machine/xbox.cpp4
-rw-r--r--src/mame/mess.lst61
-rw-r--r--src/mame/video/40love.cpp10
-rw-r--r--src/mame/video/911_vdt.cpp4
-rw-r--r--src/mame/video/atari.cpp4
-rw-r--r--src/mame/video/atarifb.cpp2
-rw-r--r--src/mame/video/avgdvg.cpp15
-rw-r--r--src/mame/video/avgdvg.h3
-rw-r--r--src/mame/video/batman.cpp28
-rw-r--r--src/mame/video/battlex.cpp2
-rw-r--r--src/mame/video/bigevglf.cpp2
-rw-r--r--src/mame/video/btime.cpp48
-rw-r--r--src/mame/video/c116.cpp2
-rw-r--r--src/mame/video/c45.cpp7
-rw-r--r--src/mame/video/ccastles.cpp4
-rw-r--r--src/mame/video/changela.cpp2
-rw-r--r--src/mame/video/chihiro.cpp75
-rw-r--r--src/mame/video/cps1.cpp7
-rw-r--r--src/mame/video/cyberbal.cpp4
-rw-r--r--src/mame/video/darius.cpp2
-rw-r--r--src/mame/video/dynax.cpp62
-rw-r--r--src/mame/video/electron.cpp47
-rw-r--r--src/mame/video/exedexes.cpp2
-rw-r--r--src/mame/video/flkatck.cpp2
-rw-r--r--src/mame/video/fromanc2.cpp6
-rw-r--r--src/mame/video/gp9001.cpp10
-rw-r--r--src/mame/video/grchamp.cpp2
-rw-r--r--src/mame/video/jackal.cpp7
-rw-r--r--src/mame/video/k007121.cpp7
-rw-r--r--src/mame/video/k007121.h2
-rw-r--r--src/mame/video/k051316.cpp2
-rw-r--r--src/mame/video/k051316.h2
-rw-r--r--src/mame/video/k051960.cpp14
-rw-r--r--src/mame/video/k052109.cpp2
-rw-r--r--src/mame/video/k053244_k053245.cpp10
-rw-r--r--src/mame/video/k053250.cpp2
-rw-r--r--src/mame/video/k053936.cpp8
-rw-r--r--src/mame/video/k053936.h2
-rw-r--r--src/mame/video/k054338.cpp14
-rw-r--r--src/mame/video/k054338.h2
-rw-r--r--src/mame/video/kaneko16.cpp8
-rw-r--r--src/mame/video/kaneko_spr.cpp4
-rw-r--r--src/mame/video/konami_helper.cpp2
-rw-r--r--src/mame/video/m107.cpp5
-rw-r--r--src/mame/video/m58.cpp38
-rw-r--r--src/mame/video/megasys1.cpp31
-rw-r--r--src/mame/video/msisaac.cpp2
-rw-r--r--src/mame/video/n64.cpp106
-rw-r--r--src/mame/video/n64.h34
-rw-r--r--src/mame/video/nbmj8891.cpp11
-rw-r--r--src/mame/video/offtwall.cpp8
-rw-r--r--src/mame/video/opwolf.cpp2
-rw-r--r--src/mame/video/p2000m.cpp2
-rw-r--r--src/mame/video/phoenix.cpp2
-rw-r--r--src/mame/video/polyplay.cpp2
-rw-r--r--src/mame/video/popeye.cpp5
-rw-r--r--src/mame/video/psychic5.cpp2
-rw-r--r--src/mame/video/qix.cpp7
-rw-r--r--src/mame/video/rastan.cpp2
-rw-r--r--src/mame/video/rdptpipe.cpp2
-rw-r--r--src/mame/video/relief.cpp10
-rw-r--r--src/mame/video/sega16sp.cpp5
-rw-r--r--src/mame/video/sega16sp.h3
-rw-r--r--src/mame/video/segas16b.cpp4
-rw-r--r--src/mame/video/seibuspi.cpp6
-rw-r--r--src/mame/video/seta.cpp3
-rw-r--r--src/mame/video/shuuz.cpp8
-rw-r--r--src/mame/video/snk.cpp13
-rw-r--r--src/mame/video/st0020.cpp28
-rw-r--r--src/mame/video/st0020.h2
-rw-r--r--src/mame/video/taito_b.cpp2
-rw-r--r--src/mame/video/tankbust.cpp2
-rw-r--r--src/mame/video/tecmo_mix.cpp4
-rw-r--r--src/mame/video/tecmo_mix.h2
-rw-r--r--src/mame/video/thunderj.cpp28
-rw-r--r--src/mame/video/timeplt.cpp3
-rw-r--r--src/mame/video/toaplan_scu.cpp4
-rw-r--r--src/mame/video/tp84.cpp4
-rw-r--r--src/mame/video/tubep.cpp2
-rw-r--r--src/mame/video/williams.cpp4
-rw-r--r--src/osd/modules/debugger/debugint.cpp6
-rw-r--r--src/osd/modules/lib/osdobj_common.cpp1
-rw-r--r--src/osd/modules/render/d3d/d3dhlsl.cpp497
-rw-r--r--src/osd/modules/render/d3d/d3dhlsl.h13
-rw-r--r--src/osd/modules/render/drawd3d.cpp33
-rw-r--r--src/osd/modules/render/drawd3d.h3
-rw-r--r--src/osd/modules/render/drawdd.cpp2
-rw-r--r--src/osd/modules/sound/js_sound.cpp6
-rw-r--r--src/osd/modules/sound/js_sound.js213
-rw-r--r--src/osd/modules/sound/xaudio2_sound.cpp701
-rw-r--r--src/osd/modules/sync/osdsync.h16
-rw-r--r--src/osd/modules/sync/sync_mini.cpp57
-rw-r--r--src/osd/modules/sync/sync_ntc.cpp279
-rw-r--r--src/osd/modules/sync/sync_os2.cpp280
-rw-r--r--src/osd/modules/sync/sync_sdl.cpp132
-rw-r--r--src/osd/modules/sync/sync_tc.cpp117
-rw-r--r--src/osd/modules/sync/sync_windows.cpp177
-rw-r--r--src/osd/modules/sync/work_osd.cpp50
-rw-r--r--src/osd/osdcore.h87
-rw-r--r--src/osd/osdmini/minimisc.cpp4
-rw-r--r--src/osd/osdmini/minisync.cpp66
-rw-r--r--src/osd/sdl/input.cpp56
-rw-r--r--src/osd/sdl/sdlfile.cpp3
-rw-r--r--src/osd/windows/input.cpp34
-rw-r--r--src/osd/windows/output.cpp8
-rw-r--r--src/osd/windows/window.cpp39
-rw-r--r--src/osd/windows/window.h3
-rw-r--r--src/osd/windows/winmain.cpp12
-rw-r--r--src/osd/windows/winmain.h8
-rw-r--r--src/version.cpp2
822 files changed, 42335 insertions, 55311 deletions
diff --git a/src/devices/bus/a2bus/a2pic.cpp b/src/devices/bus/a2bus/a2pic.cpp
index f47f964f192..c16ee6f2140 100644
--- a/src/devices/bus/a2bus/a2pic.cpp
+++ b/src/devices/bus/a2bus/a2pic.cpp
@@ -49,11 +49,11 @@ static INPUT_PORTS_START( pic )
PORT_DIPSETTING( 0x06, "13 microseconds" )
PORT_DIPSETTING( 0x07, "15 microseconds" )
- PORT_DIPNAME( 0x08, 0x00, "Strobe polarity (SW4)" )
+ PORT_DIPNAME( 0x08, 0x08, "Strobe polarity (SW4)" )
PORT_DIPSETTING( 0x00, "Positive" )
PORT_DIPSETTING( 0x08, "Negative" )
- PORT_DIPNAME( 0x10, 0x00, "Acknowledge polarity (SW5)" )
+ PORT_DIPNAME( 0x10, 0x10, "Acknowledge polarity (SW5)" )
PORT_DIPSETTING( 0x00, "Positive" )
PORT_DIPSETTING( 0x10, "Negative" )
@@ -181,13 +181,27 @@ UINT8 a2bus_pic_device::read_cnxx(address_space &space, UINT8 offset)
UINT8 a2bus_pic_device::read_c0nx(address_space &space, UINT8 offset)
{
+ UINT8 rv = 0;
+
switch (offset)
{
case 3:
return m_ctx_data_in->read();
case 4:
- return m_ack;
+ rv = m_ack;
+
+ // clear flip-flop
+ if (m_dsw1->read() & 0x10) // negative polarity
+ {
+ m_ack |= 0x80;
+ }
+ else
+ {
+ m_ack &= ~0x80;
+ }
+
+ return rv;
case 6: // does reading this really work?
m_irqenable = true;
diff --git a/src/devices/bus/cbm2/hrg.cpp b/src/devices/bus/cbm2/hrg.cpp
index e0e9bf667ba..bb0e38a22cb 100644
--- a/src/devices/bus/cbm2/hrg.cpp
+++ b/src/devices/bus/cbm2/hrg.cpp
@@ -90,7 +90,7 @@ static MACHINE_CONFIG_FRAGMENT( cbm2_hrg_a )
MCFG_SCREEN_SIZE(512, 512)
MCFG_SCREEN_VISIBLE_AREA(0, 512-1, 0, 512-1)
MCFG_SCREEN_REFRESH_RATE(25)
- MCFG_PALETTE_ADD_MONOCHROME_GREEN("palette")
+ MCFG_PALETTE_ADD_MONOCHROME_GREEN("palette")
MCFG_DEVICE_ADD(EF9365_TAG, EF9365, 1750000)
MCFG_VIDEO_SET_SCREEN(SCREEN_TAG)
@@ -111,7 +111,7 @@ static MACHINE_CONFIG_FRAGMENT( cbm2_hrg_b )
MCFG_SCREEN_SIZE(512, 256)
MCFG_SCREEN_VISIBLE_AREA(0, 512-1, 0, 256-1)
MCFG_SCREEN_REFRESH_RATE(50)
- MCFG_PALETTE_ADD_MONOCHROME_GREEN("palette")
+ MCFG_PALETTE_ADD_MONOCHROME_GREEN("palette")
MCFG_DEVICE_ADD(EF9366_TAG, EF9365, 1750000)
MCFG_VIDEO_SET_SCREEN(SCREEN_TAG)
diff --git a/src/devices/bus/cbm2/hrg.h b/src/devices/bus/cbm2/hrg.h
index 67e0f25ad90..c93b806b3e1 100644
--- a/src/devices/bus/cbm2/hrg.h
+++ b/src/devices/bus/cbm2/hrg.h
@@ -24,7 +24,7 @@
// ======================> cbm2_hrg_t
class cbm2_hrg_t : public device_t,
- public device_cbm2_expansion_card_interface
+ public device_cbm2_expansion_card_interface
{
public:
// construction/destruction
diff --git a/src/devices/bus/centronics/epson_ex800.cpp b/src/devices/bus/centronics/epson_ex800.cpp
index c8a1acc54a6..c09cc8f4af7 100644
--- a/src/devices/bus/centronics/epson_ex800.cpp
+++ b/src/devices/bus/centronics/epson_ex800.cpp
@@ -235,7 +235,7 @@ static MACHINE_CONFIG_FRAGMENT( epson_ex800 )
/* audio hardware */
MCFG_SPEAKER_STANDARD_MONO("mono")
- MCFG_SOUND_ADD("beeper", BEEP, 0)
+ MCFG_SOUND_ADD("beeper", BEEP, 4000) /* measured at 4000 Hz */
MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.0)
MACHINE_CONFIG_END
@@ -269,7 +269,7 @@ INPUT_CHANGED_MEMBER(epson_ex800_t::online_switch)
INPUT_PORTS_START( epson_ex800 )
PORT_START("ONLISW")
PORT_BIT(0xfe, IP_ACTIVE_HIGH, IPT_UNUSED)
- PORT_BIT(0x01, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_NAME("ON LINE") PORT_CODE(KEYCODE_F9) PORT_CHANGED_MEMBER(DEVICE_SELF, epson_ex800_t, online_switch, NULL)
+ PORT_BIT(0x01, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_NAME("ON LINE") PORT_CODE(KEYCODE_F9) PORT_CHANGED_MEMBER(DEVICE_SELF, epson_ex800_t, online_switch, nullptr)
PORT_START("FEED")
PORT_BIT(0xfc, IP_ACTIVE_LOW, IPT_UNUSED)
@@ -384,7 +384,6 @@ void epson_ex800_t::device_reset()
{
/* Setup beep */
m_beeper->set_state(0);
- m_beeper->set_frequency(4000); /* measured at 4000 Hz */
}
diff --git a/src/devices/bus/centronics/epson_lx800.cpp b/src/devices/bus/centronics/epson_lx800.cpp
index 546c6e9439b..ad52bc8c349 100644
--- a/src/devices/bus/centronics/epson_lx800.cpp
+++ b/src/devices/bus/centronics/epson_lx800.cpp
@@ -91,7 +91,7 @@ static MACHINE_CONFIG_FRAGMENT( epson_lx800 )
/* audio hardware */
MCFG_SPEAKER_STANDARD_MONO("mono")
- MCFG_SOUND_ADD("beeper", BEEP, 0)
+ MCFG_SOUND_ADD("beeper", BEEP, 4000) // ?
MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.05)
/* gate array */
@@ -232,7 +232,6 @@ void epson_lx800_t::device_start()
void epson_lx800_t::device_reset()
{
m_beep->set_state(0);
- m_beep->set_frequency(4000); /* ? */
}
diff --git a/src/devices/bus/centronics/epson_lx810l.cpp b/src/devices/bus/centronics/epson_lx810l.cpp
index 3c599360dd8..77a130b26bf 100644
--- a/src/devices/bus/centronics/epson_lx810l.cpp
+++ b/src/devices/bus/centronics/epson_lx810l.cpp
@@ -26,7 +26,7 @@
*/
#include "epson_lx810l.h"
-extern const char layout_lx800[]; /* use layout from lx800 */
+//extern const char layout_lx800[]; /* use layout from lx800 */
//#define LX810LDEBUG
#ifdef LX810LDEBUG
@@ -132,7 +132,7 @@ static MACHINE_CONFIG_FRAGMENT( epson_lx810l )
MCFG_UPD7810_CO0(WRITELINE(epson_lx810l_t, co0_w))
MCFG_UPD7810_CO1(WRITELINE(epson_lx810l_t, co1_w))
- MCFG_DEFAULT_LAYOUT(layout_lx800)
+// MCFG_DEFAULT_LAYOUT(layout_lx800)
/* video hardware (simulates paper) */
MCFG_SCREEN_ADD("screen", RASTER)
@@ -192,7 +192,7 @@ static INPUT_PORTS_START( epson_lx810l )
/* Buttons on printer */
PORT_START("ONLINE")
- PORT_BIT(0x01, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("On Line") PORT_CODE(KEYCODE_O) PORT_CHANGED_MEMBER(DEVICE_SELF, epson_lx810l_t, online_sw, NULL)
+ PORT_BIT(0x01, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("On Line") PORT_CODE(KEYCODE_O) PORT_CHANGED_MEMBER(DEVICE_SELF, epson_lx810l_t, online_sw, nullptr)
PORT_START("FORMFEED")
PORT_BIT(0x01, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("Form Feed") PORT_CODE(KEYCODE_F) PORT_TOGGLE
PORT_START("LINEFEED")
diff --git a/src/devices/bus/coco/coco_dwsock.cpp b/src/devices/bus/coco/coco_dwsock.cpp
index e48b3e565d1..2750f266998 100644
--- a/src/devices/bus/coco/coco_dwsock.cpp
+++ b/src/devices/bus/coco/coco_dwsock.cpp
@@ -26,8 +26,7 @@ const device_type COCO_DWSOCK = &device_creator<beckerport_device>;
INPUT_PORTS_START( coco_drivewire )
PORT_START(DRIVEWIRE_PORT_TAG)
- PORT_CONFNAME( 0xffff, 65504, "Drivewire Server TCP Port")
- PORT_CHANGED_MEMBER(DEVICE_SELF, beckerport_device, drivewire_port_changed, NULL )
+ PORT_CONFNAME( 0xffff, 65504, "Drivewire Server TCP Port") PORT_CHANGED_MEMBER(DEVICE_SELF, beckerport_device, drivewire_port_changed, nullptr)
PORT_CONFSETTING( 65500, "65500" )
PORT_CONFSETTING( 65501, "65501" )
PORT_CONFSETTING( 65502, "65502" )
diff --git a/src/devices/bus/cpc/symbfac2.cpp b/src/devices/bus/cpc/symbfac2.cpp
index c80d22da6c6..f64b6cfa131 100644
--- a/src/devices/bus/cpc/symbfac2.cpp
+++ b/src/devices/bus/cpc/symbfac2.cpp
@@ -36,17 +36,17 @@ MACHINE_CONFIG_END
static INPUT_PORTS_START(cpc_symbiface2)
PORT_START("sf2_mouse_x")
- PORT_BIT(0x3f , 0x00, IPT_MOUSE_X) PORT_SENSITIVITY(50) PORT_KEYDELTA(0) PORT_REVERSE PORT_PLAYER(1) PORT_CODE(MOUSECODE_X) PORT_CHANGED_MEMBER(DEVICE_SELF,cpc_symbiface2_device,mouse_change_x,NULL)
+ PORT_BIT(0x3f , 0x00, IPT_MOUSE_X) PORT_SENSITIVITY(50) PORT_KEYDELTA(0) PORT_REVERSE PORT_PLAYER(1) PORT_CODE(MOUSECODE_X) PORT_CHANGED_MEMBER(DEVICE_SELF,cpc_symbiface2_device,mouse_change_x,nullptr)
PORT_START("sf2_mouse_y")
- PORT_BIT(0x3f , 0x00, IPT_MOUSE_Y) PORT_SENSITIVITY(50) PORT_KEYDELTA(0) PORT_PLAYER(1) PORT_CODE(MOUSECODE_Y) PORT_CHANGED_MEMBER(DEVICE_SELF,cpc_symbiface2_device,mouse_change_x,NULL)
+ PORT_BIT(0x3f , 0x00, IPT_MOUSE_Y) PORT_SENSITIVITY(50) PORT_KEYDELTA(0) PORT_PLAYER(1) PORT_CODE(MOUSECODE_Y) PORT_CHANGED_MEMBER(DEVICE_SELF,cpc_symbiface2_device,mouse_change_x,nullptr)
PORT_START("sf2_mouse_buttons")
- PORT_BIT(0x00000001, IP_ACTIVE_HIGH, IPT_OTHER) PORT_NAME("PS/2 Mouse left button") PORT_CODE(MOUSECODE_BUTTON1) PORT_CHANGED_MEMBER(DEVICE_SELF,cpc_symbiface2_device,mouse_change_x,NULL)
- PORT_BIT(0x00000002, IP_ACTIVE_HIGH, IPT_OTHER) PORT_NAME("PS/2 Mouse right button") PORT_CODE(MOUSECODE_BUTTON3) PORT_CHANGED_MEMBER(DEVICE_SELF,cpc_symbiface2_device,mouse_change_x,NULL)
- PORT_BIT(0x00000004, IP_ACTIVE_HIGH, IPT_OTHER) PORT_NAME("PS/2 Mouse middle button") PORT_CODE(MOUSECODE_BUTTON2) PORT_CHANGED_MEMBER(DEVICE_SELF,cpc_symbiface2_device,mouse_change_x,NULL)
- PORT_BIT(0x00000008, IP_ACTIVE_HIGH, IPT_OTHER) PORT_NAME("PS/2 Mouse back button") PORT_CODE(MOUSECODE_BUTTON4) PORT_CHANGED_MEMBER(DEVICE_SELF,cpc_symbiface2_device,mouse_change_x,NULL)
- PORT_BIT(0x00000010, IP_ACTIVE_HIGH, IPT_OTHER) PORT_NAME("PS/2 Mouse forward button") PORT_CODE(MOUSECODE_BUTTON5) PORT_CHANGED_MEMBER(DEVICE_SELF,cpc_symbiface2_device,mouse_change_x,NULL)
+ PORT_BIT(0x00000001, IP_ACTIVE_HIGH, IPT_OTHER) PORT_NAME("PS/2 Mouse left button") PORT_CODE(MOUSECODE_BUTTON1) PORT_CHANGED_MEMBER(DEVICE_SELF,cpc_symbiface2_device,mouse_change_x,nullptr)
+ PORT_BIT(0x00000002, IP_ACTIVE_HIGH, IPT_OTHER) PORT_NAME("PS/2 Mouse right button") PORT_CODE(MOUSECODE_BUTTON3) PORT_CHANGED_MEMBER(DEVICE_SELF,cpc_symbiface2_device,mouse_change_x,nullptr)
+ PORT_BIT(0x00000004, IP_ACTIVE_HIGH, IPT_OTHER) PORT_NAME("PS/2 Mouse middle button") PORT_CODE(MOUSECODE_BUTTON2) PORT_CHANGED_MEMBER(DEVICE_SELF,cpc_symbiface2_device,mouse_change_x,nullptr)
+ PORT_BIT(0x00000008, IP_ACTIVE_HIGH, IPT_OTHER) PORT_NAME("PS/2 Mouse back button") PORT_CODE(MOUSECODE_BUTTON4) PORT_CHANGED_MEMBER(DEVICE_SELF,cpc_symbiface2_device,mouse_change_x,nullptr)
+ PORT_BIT(0x00000010, IP_ACTIVE_HIGH, IPT_OTHER) PORT_NAME("PS/2 Mouse forward button") PORT_CODE(MOUSECODE_BUTTON5) PORT_CHANGED_MEMBER(DEVICE_SELF,cpc_symbiface2_device,mouse_change_x,nullptr)
// TODO: mouse scroll wheel support
// PORT_START("sf2_mouse_scroll")
diff --git a/src/devices/bus/cpc/transtape.cpp b/src/devices/bus/cpc/transtape.cpp
index 311918e9bda..680a40890d4 100644
--- a/src/devices/bus/cpc/transtape.cpp
+++ b/src/devices/bus/cpc/transtape.cpp
@@ -29,8 +29,8 @@ const rom_entry *cpc_transtape_device::device_rom_region() const
static INPUT_PORTS_START(cpc_transtape)
PORT_START("transtape")
- PORT_BIT(0x01, IP_ACTIVE_HIGH, IPT_OTHER) PORT_NAME("Red Button") PORT_CODE(KEYCODE_F1) PORT_CHANGED_MEMBER(DEVICE_SELF,cpc_transtape_device,button_red_w,1)
- PORT_BIT(0x02, IP_ACTIVE_HIGH, IPT_OTHER) PORT_NAME("Black Button") PORT_CODE(KEYCODE_F2) PORT_CHANGED_MEMBER(DEVICE_SELF,cpc_transtape_device,button_black_w,1)
+ PORT_BIT(0x01, IP_ACTIVE_HIGH, IPT_OTHER) PORT_NAME("Red Button") PORT_CODE(KEYCODE_F1) PORT_CHANGED_MEMBER(DEVICE_SELF,cpc_transtape_device,button_red_w,nullptr)
+ PORT_BIT(0x02, IP_ACTIVE_HIGH, IPT_OTHER) PORT_NAME("Black Button") PORT_CODE(KEYCODE_F2) PORT_CHANGED_MEMBER(DEVICE_SELF,cpc_transtape_device,button_black_w,nullptr)
INPUT_PORTS_END
ioport_constructor cpc_transtape_device::device_input_ports() const
diff --git a/src/devices/bus/intv/ecs.cpp b/src/devices/bus/intv/ecs.cpp
index b855bb73143..b9da2d9803b 100644
--- a/src/devices/bus/intv/ecs.cpp
+++ b/src/devices/bus/intv/ecs.cpp
@@ -138,12 +138,24 @@ UINT8 intv_ecs_device::intv_control_r(int hand)
}
}
- switch ((m_options->read() >> hand) & 4)
+ y = (m_options->read() >> ((hand + 2) * 2)) & 3;
+ switch (y)
{
- case 0: /* disc == digital */
+ case 0: /* disc == digital 8-way */
+ case 1: /* disc == digital 16-way */
default:
x = m_disc[hand]->read();
+ if (!!x && (!y || !(x & 0x7777)))
+ {
+ // merge cardinals to form true diagonals
+ y = ((x >> 2) & (x << 2)) | ((x >> (16 - 2)) & (x >> 2));
+ x = y | (x & ~((y << 2) | (y >> 2) | (y << (16 - 2))));
+ }
+
+ // only one disc direction is allowed
+ x &= -x;
+
for (y = 0; y < 16; y++)
{
if (x & (1 << y))
@@ -153,7 +165,7 @@ UINT8 intv_ecs_device::intv_control_r(int hand)
}
break;
- case 4: /* disc == _fake_ analog */
+ case 2: /* disc == _fake_ analog */
x = m_discx[hand]->read();
y = m_discy[hand]->read();
@@ -417,89 +429,89 @@ INPUT_PORTS_END
static INPUT_PORTS_START( intv_ecs_pads )
// First ECS Hand Controller
PORT_START("KEYPAD.0")
- PORT_BIT( 0x8000, IP_ACTIVE_HIGH, IPT_KEYPAD ) PORT_NAME("P3/1") PORT_CONDITION("CNTRLSEL",0x0f,EQUALS,0x00)
- PORT_BIT( 0x4000, IP_ACTIVE_HIGH, IPT_KEYPAD ) PORT_NAME("P3/2") PORT_CONDITION("CNTRLSEL",0x0f,EQUALS,0x00)
- PORT_BIT( 0x2000, IP_ACTIVE_HIGH, IPT_KEYPAD ) PORT_NAME("P3/3") PORT_CONDITION("CNTRLSEL",0x0f,EQUALS,0x00)
- PORT_BIT( 0x1000, IP_ACTIVE_HIGH, IPT_KEYPAD ) PORT_NAME("P3/4") PORT_CONDITION("CNTRLSEL",0x0f,EQUALS,0x00)
- PORT_BIT( 0x0800, IP_ACTIVE_HIGH, IPT_KEYPAD ) PORT_NAME("P3/5") PORT_CONDITION("CNTRLSEL",0x0f,EQUALS,0x00)
- PORT_BIT( 0x0400, IP_ACTIVE_HIGH, IPT_KEYPAD ) PORT_NAME("P3/6") PORT_CONDITION("CNTRLSEL",0x0f,EQUALS,0x00)
- PORT_BIT( 0x0200, IP_ACTIVE_HIGH, IPT_KEYPAD ) PORT_NAME("P3/7") PORT_CONDITION("CNTRLSEL",0x0f,EQUALS,0x00)
- PORT_BIT( 0x0100, IP_ACTIVE_HIGH, IPT_KEYPAD ) PORT_NAME("P3/8") PORT_CONDITION("CNTRLSEL",0x0f,EQUALS,0x00)
- PORT_BIT( 0x0080, IP_ACTIVE_HIGH, IPT_KEYPAD ) PORT_NAME("P3/9") PORT_CONDITION("CNTRLSEL",0x0f,EQUALS,0x00)
- PORT_BIT( 0x0040, IP_ACTIVE_HIGH, IPT_KEYPAD ) PORT_NAME("P3/Clear") PORT_CONDITION("CNTRLSEL",0x0f,EQUALS,0x00)
- PORT_BIT( 0x0020, IP_ACTIVE_HIGH, IPT_KEYPAD ) PORT_NAME("P3/0") PORT_CONDITION("CNTRLSEL",0x0f,EQUALS,0x00)
- PORT_BIT( 0x0010, IP_ACTIVE_HIGH, IPT_KEYPAD ) PORT_NAME("P3/Enter") PORT_CONDITION("CNTRLSEL",0x0f,EQUALS,0x00)
- PORT_BIT( 0x0008, IP_ACTIVE_HIGH, IPT_BUTTON1 ) PORT_NAME("P3/Upper") PORT_PLAYER(3) PORT_CONDITION("CNTRLSEL",0x0f,EQUALS,0x00)
- PORT_BIT( 0x0004, IP_ACTIVE_HIGH, IPT_BUTTON2 ) PORT_NAME("P3/Lower-Left") PORT_PLAYER(3) PORT_CONDITION("CNTRLSEL",0x0f,EQUALS,0x00)
- PORT_BIT( 0x0002, IP_ACTIVE_HIGH, IPT_BUTTON3 ) PORT_NAME("P3/Lower-Right") PORT_PLAYER(3) PORT_CONDITION("CNTRLSEL",0x0f,EQUALS,0x00)
+ PORT_BIT( 0x8000, IP_ACTIVE_HIGH, IPT_KEYPAD ) PORT_NAME("P3 1") PORT_CONDITION("CNTRLSEL",0x0f,EQUALS,0x00)
+ PORT_BIT( 0x4000, IP_ACTIVE_HIGH, IPT_KEYPAD ) PORT_NAME("P3 2") PORT_CONDITION("CNTRLSEL",0x0f,EQUALS,0x00)
+ PORT_BIT( 0x2000, IP_ACTIVE_HIGH, IPT_KEYPAD ) PORT_NAME("P3 3") PORT_CONDITION("CNTRLSEL",0x0f,EQUALS,0x00)
+ PORT_BIT( 0x1000, IP_ACTIVE_HIGH, IPT_KEYPAD ) PORT_NAME("P3 4") PORT_CONDITION("CNTRLSEL",0x0f,EQUALS,0x00)
+ PORT_BIT( 0x0800, IP_ACTIVE_HIGH, IPT_KEYPAD ) PORT_NAME("P3 5") PORT_CONDITION("CNTRLSEL",0x0f,EQUALS,0x00)
+ PORT_BIT( 0x0400, IP_ACTIVE_HIGH, IPT_KEYPAD ) PORT_NAME("P3 6") PORT_CONDITION("CNTRLSEL",0x0f,EQUALS,0x00)
+ PORT_BIT( 0x0200, IP_ACTIVE_HIGH, IPT_KEYPAD ) PORT_NAME("P3 7") PORT_CONDITION("CNTRLSEL",0x0f,EQUALS,0x00)
+ PORT_BIT( 0x0100, IP_ACTIVE_HIGH, IPT_KEYPAD ) PORT_NAME("P3 8") PORT_CONDITION("CNTRLSEL",0x0f,EQUALS,0x00)
+ PORT_BIT( 0x0080, IP_ACTIVE_HIGH, IPT_KEYPAD ) PORT_NAME("P3 9") PORT_CONDITION("CNTRLSEL",0x0f,EQUALS,0x00)
+ PORT_BIT( 0x0040, IP_ACTIVE_HIGH, IPT_KEYPAD ) PORT_NAME("P3 Clear") PORT_CONDITION("CNTRLSEL",0x0f,EQUALS,0x00)
+ PORT_BIT( 0x0020, IP_ACTIVE_HIGH, IPT_KEYPAD ) PORT_NAME("P3 0") PORT_CONDITION("CNTRLSEL",0x0f,EQUALS,0x00)
+ PORT_BIT( 0x0010, IP_ACTIVE_HIGH, IPT_KEYPAD ) PORT_NAME("P3 Enter") PORT_CONDITION("CNTRLSEL",0x0f,EQUALS,0x00)
+ PORT_BIT( 0x0008, IP_ACTIVE_HIGH, IPT_BUTTON1 ) PORT_NAME("P3 Upper") PORT_PLAYER(3) PORT_CONDITION("CNTRLSEL",0x0f,EQUALS,0x00)
+ PORT_BIT( 0x0004, IP_ACTIVE_HIGH, IPT_BUTTON2 ) PORT_NAME("P3 Lower-Left") PORT_PLAYER(3) PORT_CONDITION("CNTRLSEL",0x0f,EQUALS,0x00)
+ PORT_BIT( 0x0002, IP_ACTIVE_HIGH, IPT_BUTTON3 ) PORT_NAME("P3 Lower-Right") PORT_PLAYER(3) PORT_CONDITION("CNTRLSEL",0x0f,EQUALS,0x00)
PORT_BIT( 0x0001, IP_ACTIVE_HIGH, IPT_UNUSED )
PORT_START("DISC.0")
- PORT_BIT( 0x8000, IP_ACTIVE_HIGH, IPT_JOYSTICK_UP ) PORT_NAME("P3/Up") PORT_PLAYER(3) PORT_CONDITION("OPTIONS",0x04,EQUALS,0x00) PORT_CONDITION("CNTRLSEL",0x0f,EQUALS,0x00)
- PORT_BIT( 0x4000, IP_ACTIVE_HIGH, IPT_OTHER ) PORT_NAME("P3/Up-Up-Right") PORT_CONDITION("OPTIONS",0x04,EQUALS,0x00) PORT_CONDITION("CNTRLSEL",0x0f,EQUALS,0x00)
- PORT_BIT( 0x2000, IP_ACTIVE_HIGH, IPT_OTHER ) PORT_NAME("P3/Right") PORT_CONDITION("OPTIONS",0x04,EQUALS,0x00) PORT_CONDITION("CNTRLSEL",0x0f,EQUALS,0x00)
- PORT_BIT( 0x1000, IP_ACTIVE_HIGH, IPT_OTHER ) PORT_NAME("P3/Right-Up-Right") PORT_CONDITION("OPTIONS",0x04,EQUALS,0x00) PORT_CONDITION("CNTRLSEL",0x0f,EQUALS,0x00)
- PORT_BIT( 0x0800, IP_ACTIVE_HIGH, IPT_JOYSTICK_RIGHT ) PORT_NAME("P3/Right") PORT_PLAYER(3) PORT_CONDITION("OPTIONS",0x04,EQUALS,0x00) PORT_CONDITION("CNTRLSEL",0x0f,EQUALS,0x00)
- PORT_BIT( 0x0400, IP_ACTIVE_HIGH, IPT_OTHER ) PORT_NAME("P3/Right-Down-Right") PORT_CONDITION("OPTIONS",0x04,EQUALS,0x00) PORT_CONDITION("CNTRLSEL",0x0f,EQUALS,0x00)
- PORT_BIT( 0x0200, IP_ACTIVE_HIGH, IPT_OTHER ) PORT_NAME("P3/Down-Right") PORT_CONDITION("OPTIONS",0x04,EQUALS,0x00) PORT_CONDITION("CNTRLSEL",0x0f,EQUALS,0x00)
- PORT_BIT( 0x0100, IP_ACTIVE_HIGH, IPT_OTHER ) PORT_NAME("P3/Down-Down-Right") PORT_CONDITION("OPTIONS",0x04,EQUALS,0x00) PORT_CONDITION("CNTRLSEL",0x0f,EQUALS,0x00)
- PORT_BIT( 0x0080, IP_ACTIVE_HIGH, IPT_JOYSTICK_DOWN ) PORT_NAME("P3/Down") PORT_PLAYER(3) PORT_CONDITION("OPTIONS",0x04,EQUALS,0x00) PORT_CONDITION("CNTRLSEL",0x0f,EQUALS,0x00)
- PORT_BIT( 0x0040, IP_ACTIVE_HIGH, IPT_OTHER ) PORT_NAME("P3/Down-Down-Left") PORT_CONDITION("OPTIONS",0x04,EQUALS,0x00) PORT_CONDITION("CNTRLSEL",0x0f,EQUALS,0x00)
- PORT_BIT( 0x0020, IP_ACTIVE_HIGH, IPT_OTHER ) PORT_NAME("P3/Down-Left") PORT_CONDITION("OPTIONS",0x04,EQUALS,0x00) PORT_CONDITION("CNTRLSEL",0x0f,EQUALS,0x00)
- PORT_BIT( 0x0010, IP_ACTIVE_HIGH, IPT_OTHER ) PORT_NAME("P3/Left-Down-Left") PORT_CONDITION("OPTIONS",0x04,EQUALS,0x00) PORT_CONDITION("CNTRLSEL",0x0f,EQUALS,0x00)
- PORT_BIT( 0x0008, IP_ACTIVE_HIGH, IPT_JOYSTICK_LEFT ) PORT_NAME("P3/Left") PORT_PLAYER(3) PORT_CONDITION("OPTIONS",0x04,EQUALS,0x00) PORT_CONDITION("CNTRLSEL",0x0f,EQUALS,0x00)
- PORT_BIT( 0x0004, IP_ACTIVE_HIGH, IPT_OTHER ) PORT_NAME("P3/Left-Up-Left") PORT_CONDITION("OPTIONS",0x04,EQUALS,0x00) PORT_CONDITION("CNTRLSEL",0x0f,EQUALS,0x00)
- PORT_BIT( 0x0002, IP_ACTIVE_HIGH, IPT_OTHER ) PORT_NAME("P3/Up-Left") PORT_CONDITION("OPTIONS",0x04,EQUALS,0x00) PORT_CONDITION("CNTRLSEL",0x0f,EQUALS,0x00)
- PORT_BIT( 0x0001, IP_ACTIVE_HIGH, IPT_OTHER ) PORT_NAME("P3/Up-Up-Left") PORT_CONDITION("OPTIONS",0x04,EQUALS,0x00) PORT_CONDITION("CNTRLSEL",0x0f,EQUALS,0x00)
+ PORT_BIT( 0x8000, IP_ACTIVE_HIGH, IPT_JOYSTICK_UP ) PORT_NAME("P3 Up") PORT_PLAYER(3) PORT_CONDITION("CNTRLSEL",0x0f,EQUALS,0x00) PORT_CONDITION("OPTIONS",0x30,NOTEQUALS,0x20)
+ PORT_BIT( 0x4000, IP_ACTIVE_HIGH, IPT_OTHER ) PORT_NAME("P3 Up-Up-Right") PORT_CONDITION("CNTRLSEL",0x0f,EQUALS,0x00) PORT_CONDITION("OPTIONS",0x30,EQUALS,0x10)
+ PORT_BIT( 0x2000, IP_ACTIVE_HIGH, IPT_OTHER ) PORT_NAME("P3 Up-Right") PORT_CONDITION("CNTRLSEL",0x0f,EQUALS,0x00) PORT_CONDITION("OPTIONS",0x30,EQUALS,0x10)
+ PORT_BIT( 0x1000, IP_ACTIVE_HIGH, IPT_OTHER ) PORT_NAME("P3 Right-Up-Right") PORT_CONDITION("CNTRLSEL",0x0f,EQUALS,0x00) PORT_CONDITION("OPTIONS",0x30,EQUALS,0x10)
+ PORT_BIT( 0x0800, IP_ACTIVE_HIGH, IPT_JOYSTICK_RIGHT ) PORT_NAME("P3 Right") PORT_PLAYER(3) PORT_CONDITION("CNTRLSEL",0x0f,EQUALS,0x00) PORT_CONDITION("OPTIONS",0x30,NOTEQUALS,0x20)
+ PORT_BIT( 0x0400, IP_ACTIVE_HIGH, IPT_OTHER ) PORT_NAME("P3 Right-Down-Right") PORT_CONDITION("CNTRLSEL",0x0f,EQUALS,0x00) PORT_CONDITION("OPTIONS",0x30,EQUALS,0x10)
+ PORT_BIT( 0x0200, IP_ACTIVE_HIGH, IPT_OTHER ) PORT_NAME("P3 Down-Right") PORT_CONDITION("CNTRLSEL",0x0f,EQUALS,0x00) PORT_CONDITION("OPTIONS",0x30,EQUALS,0x10)
+ PORT_BIT( 0x0100, IP_ACTIVE_HIGH, IPT_OTHER ) PORT_NAME("P3 Down-Down-Right") PORT_CONDITION("CNTRLSEL",0x0f,EQUALS,0x00) PORT_CONDITION("OPTIONS",0x30,EQUALS,0x10)
+ PORT_BIT( 0x0080, IP_ACTIVE_HIGH, IPT_JOYSTICK_DOWN ) PORT_NAME("P3 Down") PORT_PLAYER(3) PORT_CONDITION("CNTRLSEL",0x0f,EQUALS,0x00) PORT_CONDITION("OPTIONS",0x30,NOTEQUALS,0x20)
+ PORT_BIT( 0x0040, IP_ACTIVE_HIGH, IPT_OTHER ) PORT_NAME("P3 Down-Down-Left") PORT_CONDITION("CNTRLSEL",0x0f,EQUALS,0x00) PORT_CONDITION("OPTIONS",0x30,EQUALS,0x10)
+ PORT_BIT( 0x0020, IP_ACTIVE_HIGH, IPT_OTHER ) PORT_NAME("P3 Down-Left") PORT_CONDITION("CNTRLSEL",0x0f,EQUALS,0x00) PORT_CONDITION("OPTIONS",0x30,EQUALS,0x10)
+ PORT_BIT( 0x0010, IP_ACTIVE_HIGH, IPT_OTHER ) PORT_NAME("P3 Left-Down-Left") PORT_CONDITION("CNTRLSEL",0x0f,EQUALS,0x00) PORT_CONDITION("OPTIONS",0x30,EQUALS,0x10)
+ PORT_BIT( 0x0008, IP_ACTIVE_HIGH, IPT_JOYSTICK_LEFT ) PORT_NAME("P3 Left") PORT_PLAYER(3) PORT_CONDITION("CNTRLSEL",0x0f,EQUALS,0x00) PORT_CONDITION("OPTIONS",0x30,NOTEQUALS,0x20)
+ PORT_BIT( 0x0004, IP_ACTIVE_HIGH, IPT_OTHER ) PORT_NAME("P3 Left-Up-Left") PORT_CONDITION("CNTRLSEL",0x0f,EQUALS,0x00) PORT_CONDITION("OPTIONS",0x30,EQUALS,0x10)
+ PORT_BIT( 0x0002, IP_ACTIVE_HIGH, IPT_OTHER ) PORT_NAME("P3 Up-Left") PORT_CONDITION("CNTRLSEL",0x0f,EQUALS,0x00) PORT_CONDITION("OPTIONS",0x30,EQUALS,0x10)
+ PORT_BIT( 0x0001, IP_ACTIVE_HIGH, IPT_OTHER ) PORT_NAME("P3 Up-Up-Left") PORT_CONDITION("CNTRLSEL",0x0f,EQUALS,0x00) PORT_CONDITION("OPTIONS",0x30,EQUALS,0x10)
PORT_START("DISCX.0")
- PORT_BIT( 0xff, 0x50, IPT_AD_STICK_X ) PORT_NAME("P3/X") PORT_MINMAX(0x00,0x9f) PORT_SENSITIVITY(100) PORT_KEYDELTA(0x50) PORT_PLAYER(3) PORT_CONDITION("OPTIONS",0x04,EQUALS,0x04) PORT_CONDITION("CNTRLSEL",0x0f,EQUALS,0x00)
+ PORT_BIT( 0xff, 0x50, IPT_AD_STICK_X ) PORT_NAME("P3 X") PORT_MINMAX(0x00,0x9f) PORT_SENSITIVITY(100) PORT_KEYDELTA(0x50) PORT_PLAYER(3) PORT_CONDITION("CNTRLSEL",0x0f,EQUALS,0x00) PORT_CONDITION("OPTIONS",0x30,EQUALS,0x20)
PORT_START("DISCY.0")
- PORT_BIT( 0xff, 0x50, IPT_AD_STICK_Y ) PORT_NAME("P3/Y") PORT_MINMAX(0x00,0x9f) PORT_SENSITIVITY(100) PORT_KEYDELTA(0x50) PORT_PLAYER(3) PORT_CONDITION("OPTIONS",0x04,EQUALS,0x04) PORT_CONDITION("CNTRLSEL",0x0f,EQUALS,0x00)
+ PORT_BIT( 0xff, 0x50, IPT_AD_STICK_Y ) PORT_NAME("P3 Y") PORT_MINMAX(0x00,0x9f) PORT_SENSITIVITY(100) PORT_KEYDELTA(0x50) PORT_PLAYER(3) PORT_CONDITION("CNTRLSEL",0x0f,EQUALS,0x00) PORT_CONDITION("OPTIONS",0x30,EQUALS,0x20)
// Second ECS Hand Controller
PORT_START("KEYPAD.1")
- PORT_BIT( 0x8000, IP_ACTIVE_HIGH, IPT_KEYPAD ) PORT_NAME("P4/1") PORT_CONDITION("CNTRLSEL",0x0f,EQUALS,0x00)
- PORT_BIT( 0x4000, IP_ACTIVE_HIGH, IPT_KEYPAD ) PORT_NAME("P4/2") PORT_CONDITION("CNTRLSEL",0x0f,EQUALS,0x00)
- PORT_BIT( 0x2000, IP_ACTIVE_HIGH, IPT_KEYPAD ) PORT_NAME("P4/3") PORT_CONDITION("CNTRLSEL",0x0f,EQUALS,0x00)
- PORT_BIT( 0x1000, IP_ACTIVE_HIGH, IPT_KEYPAD ) PORT_NAME("P4/4") PORT_CONDITION("CNTRLSEL",0x0f,EQUALS,0x00)
- PORT_BIT( 0x0800, IP_ACTIVE_HIGH, IPT_KEYPAD ) PORT_NAME("P4/5") PORT_CONDITION("CNTRLSEL",0x0f,EQUALS,0x00)
- PORT_BIT( 0x0400, IP_ACTIVE_HIGH, IPT_KEYPAD ) PORT_NAME("P4/6") PORT_CONDITION("CNTRLSEL",0x0f,EQUALS,0x00)
- PORT_BIT( 0x0200, IP_ACTIVE_HIGH, IPT_KEYPAD ) PORT_NAME("P4/7") PORT_CONDITION("CNTRLSEL",0x0f,EQUALS,0x00)
- PORT_BIT( 0x0100, IP_ACTIVE_HIGH, IPT_KEYPAD ) PORT_NAME("P4/8") PORT_CONDITION("CNTRLSEL",0x0f,EQUALS,0x00)
- PORT_BIT( 0x0080, IP_ACTIVE_HIGH, IPT_KEYPAD ) PORT_NAME("P4/9") PORT_CONDITION("CNTRLSEL",0x0f,EQUALS,0x00)
- PORT_BIT( 0x0040, IP_ACTIVE_HIGH, IPT_KEYPAD ) PORT_NAME("P4/Clear") PORT_CONDITION("CNTRLSEL",0x0f,EQUALS,0x00)
- PORT_BIT( 0x0020, IP_ACTIVE_HIGH, IPT_KEYPAD ) PORT_NAME("P4/0") PORT_CONDITION("CNTRLSEL",0x0f,EQUALS,0x00)
- PORT_BIT( 0x0010, IP_ACTIVE_HIGH, IPT_KEYPAD ) PORT_NAME("P4/Enter") PORT_CONDITION("CNTRLSEL",0x0f,EQUALS,0x00)
- PORT_BIT( 0x0008, IP_ACTIVE_HIGH, IPT_BUTTON1 ) PORT_NAME("P4/Upper") PORT_PLAYER(4) PORT_CONDITION("CNTRLSEL",0x0f,EQUALS,0x00)
- PORT_BIT( 0x0004, IP_ACTIVE_HIGH, IPT_BUTTON2 ) PORT_NAME("P4/Lower-Left") PORT_PLAYER(4) PORT_CONDITION("CNTRLSEL",0x0f,EQUALS,0x00)
- PORT_BIT( 0x0002, IP_ACTIVE_HIGH, IPT_BUTTON3 ) PORT_NAME("P4/Lower-Right") PORT_PLAYER(4) PORT_CONDITION("CNTRLSEL",0x0f,EQUALS,0x00)
+ PORT_BIT( 0x8000, IP_ACTIVE_HIGH, IPT_KEYPAD ) PORT_NAME("P4 1") PORT_CONDITION("CNTRLSEL",0x0f,EQUALS,0x00)
+ PORT_BIT( 0x4000, IP_ACTIVE_HIGH, IPT_KEYPAD ) PORT_NAME("P4 2") PORT_CONDITION("CNTRLSEL",0x0f,EQUALS,0x00)
+ PORT_BIT( 0x2000, IP_ACTIVE_HIGH, IPT_KEYPAD ) PORT_NAME("P4 3") PORT_CONDITION("CNTRLSEL",0x0f,EQUALS,0x00)
+ PORT_BIT( 0x1000, IP_ACTIVE_HIGH, IPT_KEYPAD ) PORT_NAME("P4 4") PORT_CONDITION("CNTRLSEL",0x0f,EQUALS,0x00)
+ PORT_BIT( 0x0800, IP_ACTIVE_HIGH, IPT_KEYPAD ) PORT_NAME("P4 5") PORT_CONDITION("CNTRLSEL",0x0f,EQUALS,0x00)
+ PORT_BIT( 0x0400, IP_ACTIVE_HIGH, IPT_KEYPAD ) PORT_NAME("P4 6") PORT_CONDITION("CNTRLSEL",0x0f,EQUALS,0x00)
+ PORT_BIT( 0x0200, IP_ACTIVE_HIGH, IPT_KEYPAD ) PORT_NAME("P4 7") PORT_CONDITION("CNTRLSEL",0x0f,EQUALS,0x00)
+ PORT_BIT( 0x0100, IP_ACTIVE_HIGH, IPT_KEYPAD ) PORT_NAME("P4 8") PORT_CONDITION("CNTRLSEL",0x0f,EQUALS,0x00)
+ PORT_BIT( 0x0080, IP_ACTIVE_HIGH, IPT_KEYPAD ) PORT_NAME("P4 9") PORT_CONDITION("CNTRLSEL",0x0f,EQUALS,0x00)
+ PORT_BIT( 0x0040, IP_ACTIVE_HIGH, IPT_KEYPAD ) PORT_NAME("P4 Clear") PORT_CONDITION("CNTRLSEL",0x0f,EQUALS,0x00)
+ PORT_BIT( 0x0020, IP_ACTIVE_HIGH, IPT_KEYPAD ) PORT_NAME("P4 0") PORT_CONDITION("CNTRLSEL",0x0f,EQUALS,0x00)
+ PORT_BIT( 0x0010, IP_ACTIVE_HIGH, IPT_KEYPAD ) PORT_NAME("P4 Enter") PORT_CONDITION("CNTRLSEL",0x0f,EQUALS,0x00)
+ PORT_BIT( 0x0008, IP_ACTIVE_HIGH, IPT_BUTTON1 ) PORT_NAME("P4 Upper") PORT_PLAYER(4) PORT_CONDITION("CNTRLSEL",0x0f,EQUALS,0x00)
+ PORT_BIT( 0x0004, IP_ACTIVE_HIGH, IPT_BUTTON2 ) PORT_NAME("P4 Lower-Left") PORT_PLAYER(4) PORT_CONDITION("CNTRLSEL",0x0f,EQUALS,0x00)
+ PORT_BIT( 0x0002, IP_ACTIVE_HIGH, IPT_BUTTON3 ) PORT_NAME("P4 Lower-Right") PORT_PLAYER(4) PORT_CONDITION("CNTRLSEL",0x0f,EQUALS,0x00)
PORT_BIT( 0x0001, IP_ACTIVE_HIGH, IPT_UNUSED )
PORT_START("DISC.1")
- PORT_BIT( 0x8000, IP_ACTIVE_HIGH, IPT_JOYSTICK_UP ) PORT_NAME("P4/Up") PORT_PLAYER(4) PORT_CONDITION("OPTIONS",0x08,EQUALS,0x00) PORT_CONDITION("CNTRLSEL",0x0f,EQUALS,0x00)
- PORT_BIT( 0x4000, IP_ACTIVE_HIGH, IPT_OTHER ) PORT_NAME("P4/Up-Up-Right") PORT_CONDITION("OPTIONS",0x08,EQUALS,0x00) PORT_CONDITION("CNTRLSEL",0x0f,EQUALS,0x00)
- PORT_BIT( 0x2000, IP_ACTIVE_HIGH, IPT_OTHER ) PORT_NAME("P4/Up-Right") PORT_CONDITION("OPTIONS",0x08,EQUALS,0x00) PORT_CONDITION("CNTRLSEL",0x0f,EQUALS,0x00)
- PORT_BIT( 0x1000, IP_ACTIVE_HIGH, IPT_OTHER ) PORT_NAME("P4/Right-Up-Right") PORT_CONDITION("OPTIONS",0x08,EQUALS,0x00) PORT_CONDITION("CNTRLSEL",0x0f,EQUALS,0x00)
- PORT_BIT( 0x0800, IP_ACTIVE_HIGH, IPT_JOYSTICK_RIGHT ) PORT_NAME("P4/Right") PORT_PLAYER(4) PORT_CONDITION("OPTIONS",0x08,EQUALS,0x00) PORT_CONDITION("CNTRLSEL",0x0f,EQUALS,0x00)
- PORT_BIT( 0x0400, IP_ACTIVE_HIGH, IPT_OTHER ) PORT_NAME("P4/Right-Down-Right") PORT_CONDITION("OPTIONS",0x08,EQUALS,0x00) PORT_CONDITION("CNTRLSEL",0x0f,EQUALS,0x00)
- PORT_BIT( 0x0200, IP_ACTIVE_HIGH, IPT_OTHER ) PORT_NAME("P4/Down-Right") PORT_CONDITION("OPTIONS",0x08,EQUALS,0x00) PORT_CONDITION("CNTRLSEL",0x0f,EQUALS,0x00)
- PORT_BIT( 0x0100, IP_ACTIVE_HIGH, IPT_OTHER ) PORT_NAME("P4/Down-Down-Right") PORT_CONDITION("OPTIONS",0x08,EQUALS,0x00) PORT_CONDITION("CNTRLSEL",0x0f,EQUALS,0x00)
- PORT_BIT( 0x0080, IP_ACTIVE_HIGH, IPT_JOYSTICK_DOWN ) PORT_NAME("P4/Down") PORT_PLAYER(4) PORT_CONDITION("OPTIONS",0x08,EQUALS,0x00) PORT_CONDITION("CNTRLSEL",0x0f,EQUALS,0x00)
- PORT_BIT( 0x0040, IP_ACTIVE_HIGH, IPT_OTHER ) PORT_NAME("P4/Down-Down-Left") PORT_CONDITION("OPTIONS",0x08,EQUALS,0x00) PORT_CONDITION("CNTRLSEL",0x0f,EQUALS,0x00)
- PORT_BIT( 0x0020, IP_ACTIVE_HIGH, IPT_OTHER ) PORT_NAME("P4/Down-Left") PORT_CONDITION("OPTIONS",0x08,EQUALS,0x00) PORT_CONDITION("CNTRLSEL",0x0f,EQUALS,0x00)
- PORT_BIT( 0x0010, IP_ACTIVE_HIGH, IPT_OTHER ) PORT_NAME("P4/Left-Down-Left") PORT_CONDITION("OPTIONS",0x08,EQUALS,0x00) PORT_CONDITION("CNTRLSEL",0x0f,EQUALS,0x00)
- PORT_BIT( 0x0008, IP_ACTIVE_HIGH, IPT_JOYSTICK_LEFT ) PORT_NAME("P4/Left") PORT_PLAYER(4) PORT_CONDITION("OPTIONS",0x08,EQUALS,0x00) PORT_CONDITION("CNTRLSEL",0x0f,EQUALS,0x00)
- PORT_BIT( 0x0004, IP_ACTIVE_HIGH, IPT_OTHER ) PORT_NAME("P4/Left-Up-Left") PORT_CONDITION("OPTIONS",0x08,EQUALS,0x00) PORT_CONDITION("CNTRLSEL",0x0f,EQUALS,0x00)
- PORT_BIT( 0x0002, IP_ACTIVE_HIGH, IPT_OTHER ) PORT_NAME("P4/Up-Left") PORT_CONDITION("OPTIONS",0x08,EQUALS,0x00) PORT_CONDITION("CNTRLSEL",0x0f,EQUALS,0x00)
- PORT_BIT( 0x0001, IP_ACTIVE_HIGH, IPT_OTHER ) PORT_NAME("P4/Up-Up-Left") PORT_CONDITION("OPTIONS",0x08,EQUALS,0x00) PORT_CONDITION("CNTRLSEL",0x0f,EQUALS,0x00)
+ PORT_BIT( 0x8000, IP_ACTIVE_HIGH, IPT_JOYSTICK_UP ) PORT_NAME("P4 Up") PORT_PLAYER(4) PORT_CONDITION("CNTRLSEL",0x0f,EQUALS,0x00) PORT_CONDITION("OPTIONS",0xC0,NOTEQUALS,0x80)
+ PORT_BIT( 0x4000, IP_ACTIVE_HIGH, IPT_OTHER ) PORT_NAME("P4 Up-Up-Right") PORT_CONDITION("CNTRLSEL",0x0f,EQUALS,0x00) PORT_CONDITION("OPTIONS",0xC0,EQUALS,0x40)
+ PORT_BIT( 0x2000, IP_ACTIVE_HIGH, IPT_OTHER ) PORT_NAME("P4 Up-Right") PORT_CONDITION("CNTRLSEL",0x0f,EQUALS,0x00) PORT_CONDITION("OPTIONS",0xC0,EQUALS,0x40)
+ PORT_BIT( 0x1000, IP_ACTIVE_HIGH, IPT_OTHER ) PORT_NAME("P4 Right-Up-Right") PORT_CONDITION("CNTRLSEL",0x0f,EQUALS,0x00) PORT_CONDITION("OPTIONS",0xC0,EQUALS,0x40)
+ PORT_BIT( 0x0800, IP_ACTIVE_HIGH, IPT_JOYSTICK_RIGHT ) PORT_NAME("P4 Right") PORT_PLAYER(4) PORT_CONDITION("CNTRLSEL",0x0f,EQUALS,0x00) PORT_CONDITION("OPTIONS",0xC0,NOTEQUALS,0x80)
+ PORT_BIT( 0x0400, IP_ACTIVE_HIGH, IPT_OTHER ) PORT_NAME("P4 Right-Down-Right") PORT_CONDITION("CNTRLSEL",0x0f,EQUALS,0x00) PORT_CONDITION("OPTIONS",0xC0,EQUALS,0x40)
+ PORT_BIT( 0x0200, IP_ACTIVE_HIGH, IPT_OTHER ) PORT_NAME("P4 Down-Right") PORT_CONDITION("CNTRLSEL",0x0f,EQUALS,0x00) PORT_CONDITION("OPTIONS",0xC0,EQUALS,0x40)
+ PORT_BIT( 0x0100, IP_ACTIVE_HIGH, IPT_OTHER ) PORT_NAME("P4 Down-Down-Right") PORT_CONDITION("CNTRLSEL",0x0f,EQUALS,0x00) PORT_CONDITION("OPTIONS",0xC0,EQUALS,0x40)
+ PORT_BIT( 0x0080, IP_ACTIVE_HIGH, IPT_JOYSTICK_DOWN ) PORT_NAME("P4 Down") PORT_PLAYER(4) PORT_CONDITION("CNTRLSEL",0x0f,EQUALS,0x00) PORT_CONDITION("OPTIONS",0xC0,NOTEQUALS,0x80)
+ PORT_BIT( 0x0040, IP_ACTIVE_HIGH, IPT_OTHER ) PORT_NAME("P4 Down-Down-Left") PORT_CONDITION("CNTRLSEL",0x0f,EQUALS,0x00) PORT_CONDITION("OPTIONS",0xC0,EQUALS,0x40)
+ PORT_BIT( 0x0020, IP_ACTIVE_HIGH, IPT_OTHER ) PORT_NAME("P4 Down-Left") PORT_CONDITION("CNTRLSEL",0x0f,EQUALS,0x00) PORT_CONDITION("OPTIONS",0xC0,EQUALS,0x40)
+ PORT_BIT( 0x0010, IP_ACTIVE_HIGH, IPT_OTHER ) PORT_NAME("P4 Left-Down-Left") PORT_CONDITION("CNTRLSEL",0x0f,EQUALS,0x00) PORT_CONDITION("OPTIONS",0xC0,EQUALS,0x40)
+ PORT_BIT( 0x0008, IP_ACTIVE_HIGH, IPT_JOYSTICK_LEFT ) PORT_NAME("P4 Left") PORT_PLAYER(4) PORT_CONDITION("CNTRLSEL",0x0f,EQUALS,0x00) PORT_CONDITION("OPTIONS",0xC0,NOTEQUALS,0x80)
+ PORT_BIT( 0x0004, IP_ACTIVE_HIGH, IPT_OTHER ) PORT_NAME("P4 Left-Up-Left") PORT_CONDITION("CNTRLSEL",0x0f,EQUALS,0x00) PORT_CONDITION("OPTIONS",0xC0,EQUALS,0x40)
+ PORT_BIT( 0x0002, IP_ACTIVE_HIGH, IPT_OTHER ) PORT_NAME("P4 Up-Left") PORT_CONDITION("CNTRLSEL",0x0f,EQUALS,0x00) PORT_CONDITION("OPTIONS",0xC0,EQUALS,0x40)
+ PORT_BIT( 0x0001, IP_ACTIVE_HIGH, IPT_OTHER ) PORT_NAME("P4 Up-Up-Left") PORT_CONDITION("CNTRLSEL",0x0f,EQUALS,0x00) PORT_CONDITION("OPTIONS",0xC0,EQUALS,0x40)
PORT_START("DISCX.1")
- PORT_BIT( 0xff, 0x50, IPT_AD_STICK_X ) PORT_NAME("P4/X") PORT_MINMAX(0x00,0x9f) PORT_SENSITIVITY(100) PORT_KEYDELTA(0x50) PORT_CODE_DEC(KEYCODE_D) PORT_CODE_INC(KEYCODE_G) PORT_PLAYER(4) PORT_CONDITION("OPTIONS",0x08,EQUALS,0x08) PORT_CONDITION("CNTRLSEL",0x0f,EQUALS,0x00)
+ PORT_BIT( 0xff, 0x50, IPT_AD_STICK_X ) PORT_NAME("P4 X") PORT_MINMAX(0x00,0x9f) PORT_SENSITIVITY(100) PORT_KEYDELTA(0x50) PORT_CODE_DEC(KEYCODE_D) PORT_CODE_INC(KEYCODE_G) PORT_PLAYER(4) PORT_CONDITION("CNTRLSEL",0x0f,EQUALS,0x00) PORT_CONDITION("OPTIONS",0xC0,EQUALS,0x80)
PORT_START("DISCY.1")
- PORT_BIT( 0xff, 0x50, IPT_AD_STICK_Y ) PORT_NAME("P4/Y") PORT_MINMAX(0x00,0x9f) PORT_SENSITIVITY(100) PORT_KEYDELTA(0x50) PORT_CODE_DEC(KEYCODE_R) PORT_CODE_INC(KEYCODE_F) PORT_PLAYER(4) PORT_CONDITION("OPTIONS",0x08,EQUALS,0x08) PORT_CONDITION("CNTRLSEL",0x0f,EQUALS,0x00)
+ PORT_BIT( 0xff, 0x50, IPT_AD_STICK_Y ) PORT_NAME("P4 Y") PORT_MINMAX(0x00,0x9f) PORT_SENSITIVITY(100) PORT_KEYDELTA(0x50) PORT_CODE_DEC(KEYCODE_R) PORT_CODE_INC(KEYCODE_F) PORT_PLAYER(4) PORT_CONDITION("CNTRLSEL",0x0f,EQUALS,0x00) PORT_CONDITION("OPTIONS",0xC0,EQUALS,0x80)
INPUT_PORTS_END
static INPUT_PORTS_START( intv_ecs )
@@ -508,12 +520,14 @@ static INPUT_PORTS_START( intv_ecs )
PORT_INCLUDE( intv_ecs_kbd )
PORT_START("OPTIONS")
- PORT_CONFNAME( 0x04, 0x00, "ECS_P3 Disc" ) PORT_CONDITION("CNTRLSEL",0x0f,EQUALS,0x00)
- PORT_CONFSETTING( 0x00, "Digital" )
- PORT_CONFSETTING( 0x04, "Analog" )
- PORT_CONFNAME( 0x08, 0x00, "ECS_P4 Disc" ) PORT_CONDITION("CNTRLSEL",0x0f,EQUALS,0x00)
- PORT_CONFSETTING( 0x00, "Digital" )
- PORT_CONFSETTING( 0x08, "Analog" )
+ PORT_CONFNAME( 0x30, 0x00, "ECS P3 Disc" ) PORT_CONDITION("CNTRLSEL",0x0f,EQUALS,0x00)
+ PORT_CONFSETTING( 0x00, "Digital 8-way" )
+ PORT_CONFSETTING( 0x10, "Digital 16-way" )
+ PORT_CONFSETTING( 0x20, "Analog" )
+ PORT_CONFNAME( 0xC0, 0x00, "ECS P4 Disc" ) PORT_CONDITION("CNTRLSEL",0x0f,EQUALS,0x00)
+ PORT_CONFSETTING( 0x00, "Digital 8-way" )
+ PORT_CONFSETTING( 0x40, "Digital 16-way" )
+ PORT_CONFSETTING( 0x80, "Analog" )
PORT_START("CNTRLSEL")
PORT_CONFNAME( 0x0F, 0x02, "ECS Controller")
diff --git a/src/devices/bus/isa/com.cpp b/src/devices/bus/isa/com.cpp
index 9a15b0b2e1f..e61777c63c2 100644
--- a/src/devices/bus/isa/com.cpp
+++ b/src/devices/bus/isa/com.cpp
@@ -56,14 +56,14 @@ static MACHINE_CONFIG_FRAGMENT( com_config )
MCFG_RS232_RI_HANDLER(DEVWRITELINE("uart_1", ins8250_uart_device, ri_w))
MCFG_RS232_CTS_HANDLER(DEVWRITELINE("uart_1", ins8250_uart_device, cts_w))
- //MCFG_RS232_PORT_ADD( "serport2", isa_com, NULL )
+ //MCFG_RS232_PORT_ADD( "serport2", isa_com, nullptr )
//MCFG_RS232_RXD_HANDLER(DEVWRITELINE("uart_1", ins8250_uart_device, rx_w))
//MCFG_RS232_DCD_HANDLER(DEVWRITELINE("uart_1", ins8250_uart_device, dcd_w))
//MCFG_RS232_DSR_HANDLER(DEVWRITELINE("uart_1", ins8250_uart_device, dsr_w))
//MCFG_RS232_RI_HANDLER(DEVWRITELINE("uart_1", ins8250_uart_device, ri_w))
//MCFG_RS232_CTS_HANDLER(DEVWRITELINE("uart_1", ins8250_uart_device, cts_w))
- //MCFG_RS232_PORT_ADD( "serport3", isa_com, NULL )
+ //MCFG_RS232_PORT_ADD( "serport3", isa_com, nullptr )
//MCFG_RS232_RXD_HANDLER(DEVWRITELINE("uart_2", ins8250_uart_device, rx_w))
//MCFG_RS232_DCD_HANDLER(DEVWRITELINE("uart_2", ins8250_uart_device, dcd_w))
//MCFG_RS232_DSR_HANDLER(DEVWRITELINE("uart_2", ins8250_uart_device, dsr_w))
@@ -164,8 +164,8 @@ static MACHINE_CONFIG_FRAGMENT( com_at_config )
MCFG_RS232_RI_HANDLER(DEVWRITELINE("uart_1", ins8250_uart_device, ri_w))
MCFG_RS232_CTS_HANDLER(DEVWRITELINE("uart_1", ins8250_uart_device, cts_w))
-// MCFG_RS232_PORT_ADD( "serport2", isa_com, NULL )
-// MCFG_RS232_PORT_ADD( "serport3", isa_com, NULL )
+// MCFG_RS232_PORT_ADD( "serport2", isa_com, nullptr )
+// MCFG_RS232_PORT_ADD( "serport3", isa_com, nullptr )
MACHINE_CONFIG_END
//**************************************************************************
diff --git a/src/devices/bus/megadrive/svp.cpp b/src/devices/bus/megadrive/svp.cpp
index 9aa905b7a66..589a58138a6 100644
--- a/src/devices/bus/megadrive/svp.cpp
+++ b/src/devices/bus/megadrive/svp.cpp
@@ -1,4 +1,4 @@
-// license:???
+// license:BSD-3-Clause
// copyright-holders:Fabio Priuli,Pierpaolo Prazzoli,Grazvydas Ignotas
/****************************************** SVP related *****************************************/
diff --git a/src/devices/bus/megadrive/svp.h b/src/devices/bus/megadrive/svp.h
index dce7115cf05..73c230c92a0 100644
--- a/src/devices/bus/megadrive/svp.h
+++ b/src/devices/bus/megadrive/svp.h
@@ -1,4 +1,4 @@
-// license:???
+// license:BSD-3-Clause
// copyright-holders:Fabio Priuli,Pierpaolo Prazzoli,Grazvydas Ignotas
#ifndef __MD_SVP_H
#define __MD_SVP_H
diff --git a/src/devices/bus/neogeo/bootleg_prot.cpp b/src/devices/bus/neogeo/bootleg_prot.cpp
index 8c023f00091..145e17efa0b 100644
--- a/src/devices/bus/neogeo/bootleg_prot.cpp
+++ b/src/devices/bus/neogeo/bootleg_prot.cpp
@@ -142,8 +142,7 @@ WRITE16_MEMBER( ngbootleg_prot_device::kof10th_custom_w )
//UINT16 *prom = (UINT16*)m_mainrom;
COMBINE_DATA(&m_cartridge_ram2[(0x00000/2) + (offset & 0xFFFF)]);
} else { // Write S data on-the-fly
- UINT8 *srom = m_fixedrom;
- srom[offset] = BITSWAP8(data,7,6,0,4,3,2,1,5);
+ m_fixedrom[offset] = BITSWAP8(data,7,6,0,4,3,2,1,5);
}
}
@@ -173,6 +172,7 @@ void ngbootleg_prot_device::install_kof10th_protection (cpu_device* maincpu, neo
maincpu->space(AS_PROGRAM).install_write_handler(0x240000, 0x2fffff, write16_delegate(FUNC(ngbootleg_prot_device::kof10th_bankswitch_w),this));
memcpy(m_cartridge_ram2, cpurom + 0xe0000, 0x20000);
+ save_pointer(NAME(m_fixedrom), 0x40000);
}
void ngbootleg_prot_device::decrypt_kof10th(UINT8* cpurom, UINT32 cpurom_size)
diff --git a/src/devices/bus/pet/hsg.cpp b/src/devices/bus/pet/hsg.cpp
index 2a90008c307..d0bd43d0020 100644
--- a/src/devices/bus/pet/hsg.cpp
+++ b/src/devices/bus/pet/hsg.cpp
@@ -92,7 +92,7 @@ static MACHINE_CONFIG_FRAGMENT( cbm8000_hsg_a )
MCFG_SCREEN_SIZE(512, 512)
MCFG_SCREEN_VISIBLE_AREA(0, 512-1, 0, 512-1)
MCFG_SCREEN_REFRESH_RATE(25)
- MCFG_PALETTE_ADD_MONOCHROME_GREEN("palette")
+ MCFG_PALETTE_ADD_MONOCHROME_GREEN("palette")
MCFG_DEVICE_ADD(EF9365_TAG, EF9365, 1750000)
MCFG_VIDEO_SET_SCREEN(SCREEN_TAG)
@@ -113,7 +113,7 @@ static MACHINE_CONFIG_FRAGMENT( cbm8000_hsg_b )
MCFG_SCREEN_SIZE(512, 256)
MCFG_SCREEN_VISIBLE_AREA(0, 512-1, 0, 256-1)
MCFG_SCREEN_REFRESH_RATE(50)
- MCFG_PALETTE_ADD_MONOCHROME_GREEN("palette")
+ MCFG_PALETTE_ADD_MONOCHROME_GREEN("palette")
MCFG_DEVICE_ADD(EF9366_TAG, EF9365, 1750000)
MCFG_VIDEO_SET_SCREEN(SCREEN_TAG)
diff --git a/src/devices/bus/pet/hsg.h b/src/devices/bus/pet/hsg.h
index abe9067c498..c8d81463b5b 100644
--- a/src/devices/bus/pet/hsg.h
+++ b/src/devices/bus/pet/hsg.h
@@ -24,7 +24,7 @@
// ======================> cbm8000_hsg_t
class cbm8000_hsg_t : public device_t,
- public device_pet_expansion_card_interface
+ public device_pet_expansion_card_interface
{
public:
// construction/destruction
diff --git a/src/devices/bus/sms_ctrl/lphaser.cpp b/src/devices/bus/sms_ctrl/lphaser.cpp
index 54e03d5627e..7c1056da5f0 100644
--- a/src/devices/bus/sms_ctrl/lphaser.cpp
+++ b/src/devices/bus/sms_ctrl/lphaser.cpp
@@ -38,7 +38,7 @@ INPUT_CHANGED_MEMBER( sms_light_phaser_device::position_changed )
static INPUT_PORTS_START( sms_light_phaser )
PORT_START("CTRL_PORT")
PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_BUTTON1 ) // TL (trigger)
- PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_SPECIAL ) PORT_CUSTOM_MEMBER(DEVICE_SELF, sms_light_phaser_device, th_pin_r, NULL)
+ PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_SPECIAL ) PORT_CUSTOM_MEMBER(DEVICE_SELF, sms_light_phaser_device, th_pin_r, nullptr)
PORT_BIT( 0x9f, IP_ACTIVE_LOW, IPT_UNUSED )
PORT_START("LPHASER_X")
diff --git a/src/devices/bus/sms_ctrl/paddle.cpp b/src/devices/bus/sms_ctrl/paddle.cpp
index e2418f38345..5486c9a50bd 100644
--- a/src/devices/bus/sms_ctrl/paddle.cpp
+++ b/src/devices/bus/sms_ctrl/paddle.cpp
@@ -41,11 +41,11 @@ CUSTOM_INPUT_MEMBER( sms_paddle_device::tr_pin_r )
static INPUT_PORTS_START( sms_paddle )
PORT_START("CTRL_PORT")
- PORT_BIT( 0x0f, IP_ACTIVE_LOW, IPT_SPECIAL ) PORT_CUSTOM_MEMBER(DEVICE_SELF, sms_paddle_device, dir_pins_r, NULL) // Directional pins
+ PORT_BIT( 0x0f, IP_ACTIVE_LOW, IPT_SPECIAL ) PORT_CUSTOM_MEMBER(DEVICE_SELF, sms_paddle_device, dir_pins_r, nullptr) // Directional pins
PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_UNUSED ) // Vcc
PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_BUTTON1 ) // TL
PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_UNUSED ) // TH
- PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_SPECIAL ) PORT_CUSTOM_MEMBER(DEVICE_SELF, sms_paddle_device, tr_pin_r, NULL)
+ PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_SPECIAL ) PORT_CUSTOM_MEMBER(DEVICE_SELF, sms_paddle_device, tr_pin_r, nullptr)
PORT_START("PADDLE_X") // Paddle knob
PORT_BIT( 0xff, 0x80, IPT_PADDLE) PORT_SENSITIVITY(40) PORT_KEYDELTA(20) PORT_CENTERDELTA(0) PORT_MINMAX(0,255)
diff --git a/src/devices/bus/sms_ctrl/sports.cpp b/src/devices/bus/sms_ctrl/sports.cpp
index e7ea829372c..68a2b142eec 100644
--- a/src/devices/bus/sms_ctrl/sports.cpp
+++ b/src/devices/bus/sms_ctrl/sports.cpp
@@ -103,17 +103,17 @@ CUSTOM_INPUT_MEMBER( sms_sports_pad_device::dir_pins_r )
static INPUT_PORTS_START( sms_sports_pad )
PORT_START("SPORTS_IN")
- PORT_BIT( 0x0f, IP_ACTIVE_LOW, IPT_SPECIAL ) PORT_CUSTOM_MEMBER(DEVICE_SELF, sms_sports_pad_device, dir_pins_r, NULL) // Directional pins
+ PORT_BIT( 0x0f, IP_ACTIVE_LOW, IPT_SPECIAL ) PORT_CUSTOM_MEMBER(DEVICE_SELF, sms_sports_pad_device, dir_pins_r, nullptr) // Directional pins
PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_UNUSED ) // Vcc
PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_BUTTON1 ) // TL (Button 1)
- PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_SPECIAL ) PORT_CUSTOM_MEMBER(DEVICE_SELF, sms_sports_pad_device, th_pin_r, NULL)
+ PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_SPECIAL ) PORT_CUSTOM_MEMBER(DEVICE_SELF, sms_sports_pad_device, th_pin_r, nullptr)
PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_BUTTON2 ) // TR (Button 2)
PORT_START("SPORTS_OUT")
PORT_BIT( 0x0f, IP_ACTIVE_LOW, IPT_UNUSED ) // Directional pins
PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_UNUSED ) // Vcc
PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_UNUSED ) // TL (Button 1)
- PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_OUTPUT ) PORT_CHANGED_MEMBER(DEVICE_SELF, sms_sports_pad_device, th_pin_w, NULL)
+ PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_OUTPUT ) PORT_CHANGED_MEMBER(DEVICE_SELF, sms_sports_pad_device, th_pin_w, nullptr)
PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_UNUSED ) // TR (Button 2)
PORT_START("SPORTS_X") /* Sports Pad X axis */
diff --git a/src/devices/bus/sms_ctrl/sportsjp.cpp b/src/devices/bus/sms_ctrl/sportsjp.cpp
index d431f0a6816..260654c7dac 100644
--- a/src/devices/bus/sms_ctrl/sportsjp.cpp
+++ b/src/devices/bus/sms_ctrl/sportsjp.cpp
@@ -52,7 +52,7 @@ DECLARE_CUSTOM_INPUT_MEMBER( sms_sports_pad_jp_device::dir_pins_r )
static INPUT_PORTS_START( sms_sports_pad_jp )
PORT_START("SPORTS_JP_IN")
- PORT_BIT( 0x0f, IP_ACTIVE_LOW, IPT_SPECIAL ) PORT_CUSTOM_MEMBER(DEVICE_SELF, sms_sports_pad_jp_device, dir_pins_r, NULL) // Directional pins
+ PORT_BIT( 0x0f, IP_ACTIVE_LOW, IPT_SPECIAL ) PORT_CUSTOM_MEMBER(DEVICE_SELF, sms_sports_pad_jp_device, dir_pins_r, nullptr) // Directional pins
PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_UNUSED ) // Vcc
PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_BUTTON1 ) // TL (Button 1)
PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_UNUSED ) // TH
diff --git a/src/devices/bus/ti99_peb/bwg.cpp b/src/devices/bus/ti99_peb/bwg.cpp
index 4085dcfe230..4716ccedf8a 100644
--- a/src/devices/bus/ti99_peb/bwg.cpp
+++ b/src/devices/bus/ti99_peb/bwg.cpp
@@ -151,7 +151,7 @@ SETADDRESS_DBIN_MEMBER( snug_bwg_device::setaddress_dbin )
&& ((state==ASSERT_LINE && ((m_address & 0x1ff8)==0x1ff0)) // read
|| (state==CLEAR_LINE && ((m_address & 0x1ff8)==0x1ff8))); // write
- m_WDsel = m_WDsel0 && ((m_address & 1)==0);
+ m_WDsel = m_WDsel0 && WORD_ALIGNED(m_address);
// Is the RTC selected on the card? (even addr)
m_RTCsel = m_inDsrArea && m_rtc_enabled && ((m_address & 0x1fe1)==0x1fe0);
diff --git a/src/devices/bus/ti99_peb/hfdc.cpp b/src/devices/bus/ti99_peb/hfdc.cpp
index c3e4779c1ef..46ca7a1b819 100644
--- a/src/devices/bus/ti99_peb/hfdc.cpp
+++ b/src/devices/bus/ti99_peb/hfdc.cpp
@@ -232,7 +232,7 @@ READ8Z_MEMBER(myarc_hfdc_device::readz)
if (m_dip == CLEAR_LINE) *value = m_buffer_ram[(m_ram_page[bank]<<10) | (m_address & 0x03ff)];
if (TRACE_RAM)
{
- if ((m_address & 1)==0) // only show even addresses with words
+ if (WORD_ALIGNED(m_address))
{
int valword = (((*value) << 8) | m_buffer_ram[(m_ram_page[bank]<<10) | ((m_address+1) & 0x03ff)])&0xffff;
logerror("%s: %04x[%02x] -> %04x\n", tag(), m_address & 0xffff, m_ram_page[bank], valword);
@@ -246,7 +246,7 @@ READ8Z_MEMBER(myarc_hfdc_device::readz)
*value = m_dsrrom[(m_rom_page << 12) | (m_address & 0x0fff)];
if (TRACE_ROM)
{
- if ((m_address & 1)==0) // only show even addresses with words
+ if (WORD_ALIGNED(m_address))
{
int valword = (((*value) << 8) | m_dsrrom[(m_rom_page << 12) | ((m_address + 1) & 0x0fff)])&0xffff;
logerror("%s: %04x[%02x] -> %04x\n", tag(), m_address & 0xffff, m_rom_page, valword);
diff --git a/src/devices/bus/ti99_peb/horizon.cpp b/src/devices/bus/ti99_peb/horizon.cpp
index cdae19a2bbb..babfcb9e7fd 100644
--- a/src/devices/bus/ti99_peb/horizon.cpp
+++ b/src/devices/bus/ti99_peb/horizon.cpp
@@ -408,7 +408,7 @@ INPUT_PORTS_START( horizon )
PORT_DIPSETTING( 0x02, "Geneve mode" )
PORT_START( "HORIZONACT" )
- PORT_DIPNAME( 0x01, 0x00, "Horizon killswitch" ) PORT_CHANGED_MEMBER(DEVICE_SELF, horizon_ramdisk_device, ks_changed, 1)
+ PORT_DIPNAME( 0x01, 0x00, "Horizon killswitch" ) PORT_CHANGED_MEMBER(DEVICE_SELF, horizon_ramdisk_device, ks_changed, nullptr)
PORT_DIPSETTING( 0x00, DEF_STR( Off ) )
PORT_DIPSETTING( 0x01, DEF_STR( On ) )
@@ -432,7 +432,7 @@ INPUT_PORTS_END
ROM_START( horizon )
ROM_REGION(MAXRAM_SIZE, NVRAMREGION, 0)
- ROM_FILL(0x0000, MAXRAM_SIZE, nullptr)
+ ROM_FILL(0x0000, MAXRAM_SIZE, 0x00)
ROM_REGION(0x8000, RAMREGION, 0)
ROM_FILL(0x0000, 0x8000, 0x00)
ROM_END
diff --git a/src/devices/bus/ti99x/videowrp.h b/src/devices/bus/ti99x/videowrp.h
index de08dfb3dce..cb339e9dd60 100644
--- a/src/devices/bus/ti99x/videowrp.h
+++ b/src/devices/bus/ti99x/videowrp.h
@@ -163,18 +163,6 @@ protected:
MCFG_TMS9928A_SCREEN_ADD_PAL( SCREEN_TAG ) \
MCFG_SCREEN_UPDATE_DEVICE( VDP_TAG, tms9928a_device, screen_update )
-#define MCFG_TI_V9938_ADD(_tag, _rate, _screen, _blank, _x, _y, _class, _int) \
- MCFG_DEVICE_ADD(_tag, V9938VIDEO, 0) \
- MCFG_V9938_ADD(VDP_TAG, _screen, 0x20000, XTAL_21_4772MHz) /* typical 9938 clock, not verified */ \
- MCFG_V99X8_INTERRUPT_CALLBACK(WRITELINE(_class, _int)) \
- MCFG_SCREEN_ADD(_screen, RASTER) \
- MCFG_SCREEN_REFRESH_RATE(_rate) \
- MCFG_SCREEN_UPDATE_DEVICE(VDP_TAG, v9938_device, screen_update) \
- MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(_blank)) \
- MCFG_SCREEN_SIZE(_x, _y) \
- MCFG_SCREEN_VISIBLE_AREA(0, _x - 1, 0, _y - 1) \
- MCFG_SCREEN_PALETTE(VDP_TAG ":palette")
-
#define MCFG_TI_SOUND_94624_ADD(_tag) \
MCFG_DEVICE_ADD(_tag, TISOUND_94624, 0)
diff --git a/src/devices/bus/z88/z88.cpp b/src/devices/bus/z88/z88.cpp
index 7af6b781369..62313b76dd3 100644
--- a/src/devices/bus/z88/z88.cpp
+++ b/src/devices/bus/z88/z88.cpp
@@ -158,7 +158,11 @@ bool z88cart_slot_device::call_load()
void z88cart_slot_device::call_unload()
{
if (m_cart)
- memset(m_cart->get_cart_base(), 0xff, m_cart->get_cart_size());
+ {
+ auto cart_size = m_cart->get_cart_size();
+ if (cart_size>0)
+ memset(m_cart->get_cart_base(), 0xff, cart_size);
+ }
// open the flap
m_out_flp_cb(ASSERT_LINE);
diff --git a/src/devices/cpu/alto2/a2disp.cpp b/src/devices/cpu/alto2/a2disp.cpp
index aedc0096f3a..30f38f94fa4 100644
--- a/src/devices/cpu/alto2/a2disp.cpp
+++ b/src/devices/cpu/alto2/a2disp.cpp
@@ -581,8 +581,8 @@ void alto2_cpu_device::reset_disp()
UINT32 alto2_cpu_device::screen_update(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect)
{
pen_t palette_bw[2];
- palette_bw[0] = screen.palette()->white_pen();
- palette_bw[1] = screen.palette()->black_pen();
+ palette_bw[0] = screen.palette().white_pen();
+ palette_bw[1] = screen.palette().black_pen();
// copy even or odd field
for (int y = m_dsp.odd_frame ? 0 : 1; y < ALTO2_DISPLAY_HEIGHT; y += 2)
draw_scanline8(*m_dsp.bitmap, 0, y, ALTO2_DISPLAY_WIDTH, m_dsp.scanline[y], palette_bw);
diff --git a/src/devices/cpu/alto2/alto2cpu.cpp b/src/devices/cpu/alto2/alto2cpu.cpp
index a3538dee290..653f56949e5 100644
--- a/src/devices/cpu/alto2/alto2cpu.cpp
+++ b/src/devices/cpu/alto2/alto2cpu.cpp
@@ -204,7 +204,9 @@ alto2_cpu_device::alto2_cpu_device(const machine_config& mconfig, const char* ta
m_ether_a49(nullptr),
m_eth()
{
- m_is_octal = true;
+ m_ucode_config.m_is_octal = true;
+ m_const_config.m_is_octal = true;
+ m_iomem_config.m_is_octal = true;
memset(m_task_mpc, 0x00, sizeof(m_task_mpc));
memset(m_task_next2, 0x00, sizeof(m_task_next2));
memset(m_r, 0x00, sizeof(m_r));
diff --git a/src/devices/cpu/arm/arm.cpp b/src/devices/cpu/arm/arm.cpp
index 41724668f53..34dc1635639 100644
--- a/src/devices/cpu/arm/arm.cpp
+++ b/src/devices/cpu/arm/arm.cpp
@@ -259,7 +259,7 @@ void arm_cpu_device::cpu_write32( int addr, UINT32 data )
{
/* Unaligned writes are treated as normal writes */
m_program->write_dword(addr&ADDRESS_MASK,data);
- if (ARM_DEBUG_CORE && addr&3) logerror("%08x: Unaligned write %08x\n",R15,addr);
+ if (ARM_DEBUG_CORE && !DWORD_ALIGNED(addr)) logerror("%08x: Unaligned write %08x\n",R15,addr);
}
void arm_cpu_device::cpu_write8( int addr, UINT8 data )
@@ -272,9 +272,9 @@ UINT32 arm_cpu_device::cpu_read32( int addr )
UINT32 result = m_program->read_dword(addr&ADDRESS_MASK);
/* Unaligned reads rotate the word, they never combine words */
- if (addr&3)
+ if (!DWORD_ALIGNED(addr))
{
- if (ARM_DEBUG_CORE && addr&1)
+ if (ARM_DEBUG_CORE && !WORD_ALIGNED(addr))
logerror("%08x: Unaligned byte read %08x\n",R15,addr);
if ((addr&3)==1)
diff --git a/src/devices/cpu/asap/asap.cpp b/src/devices/cpu/asap/asap.cpp
index c22d0cdcee2..b369ab6d07b 100644
--- a/src/devices/cpu/asap/asap.cpp
+++ b/src/devices/cpu/asap/asap.cpp
@@ -364,7 +364,7 @@ inline UINT8 asap_device::readbyte(offs_t address)
inline UINT16 asap_device::readword(offs_t address)
{
// aligned reads are easy
- if (!(address & 1))
+ if (WORD_ALIGNED(address))
return m_program->read_word(address);
// misaligned reads are tricky
@@ -379,7 +379,7 @@ inline UINT16 asap_device::readword(offs_t address)
inline UINT32 asap_device::readlong(offs_t address)
{
// aligned reads are easy
- if (!(address & 3))
+ if (DWORD_ALIGNED(address))
return m_program->read_dword(address);
// misaligned reads are tricky
@@ -405,7 +405,7 @@ inline void asap_device::writebyte(offs_t address, UINT8 data)
inline void asap_device::writeword(offs_t address, UINT16 data)
{
// aligned writes are easy
- if (!(address & 1))
+ if (WORD_ALIGNED(address))
{
m_program->write_word(address, data);
return;
@@ -429,7 +429,7 @@ inline void asap_device::writeword(offs_t address, UINT16 data)
inline void asap_device::writelong(offs_t address, UINT32 data)
{
// aligned writes are easy
- if (!(address & 3))
+ if (DWORD_ALIGNED(address))
{
m_program->write_dword(address, data);
return;
diff --git a/src/devices/cpu/dsp32/dsp32.cpp b/src/devices/cpu/dsp32/dsp32.cpp
index f060e81d13c..98640f7d1b4 100644
--- a/src/devices/cpu/dsp32/dsp32.cpp
+++ b/src/devices/cpu/dsp32/dsp32.cpp
@@ -452,7 +452,8 @@ inline void dsp32c_device::WBYTE(offs_t addr, UINT8 data)
inline UINT16 dsp32c_device::RWORD(offs_t addr)
{
#if DETECT_MISALIGNED_MEMORY
- if (addr & 1) fprintf(stderr, "Unaligned word read @ %06X, PC=%06X\n", addr, PC);
+ if (!WORD_ALIGNED(addr))
+ osd_printf_error("Unaligned word read @ %06X, PC=%06X\n", addr, PC);
#endif
return m_program->read_word(addr);
}
@@ -460,7 +461,8 @@ inline UINT16 dsp32c_device::RWORD(offs_t addr)
inline UINT32 dsp32c_device::RLONG(offs_t addr)
{
#if DETECT_MISALIGNED_MEMORY
- if (addr & 3) fprintf(stderr, "Unaligned long read @ %06X, PC=%06X\n", addr, PC);
+ if (!DWORD_ALIGNED(addr))
+ osd_printf_error("Unaligned long read @ %06X, PC=%06X\n", addr, PC);
#endif
return m_program->read_dword(addr);
}
@@ -468,7 +470,8 @@ inline UINT32 dsp32c_device::RLONG(offs_t addr)
inline void dsp32c_device::WWORD(offs_t addr, UINT16 data)
{
#if DETECT_MISALIGNED_MEMORY
- if (addr & 1) fprintf(stderr, "Unaligned word write @ %06X, PC=%06X\n", addr, PC);
+ if (!WORD_ALIGNED(addr))
+ osd_printf_error("Unaligned word write @ %06X, PC=%06X\n", addr, PC);
#endif
m_program->write_word(addr, data);
}
@@ -476,7 +479,8 @@ inline void dsp32c_device::WWORD(offs_t addr, UINT16 data)
inline void dsp32c_device::WLONG(offs_t addr, UINT32 data)
{
#if DETECT_MISALIGNED_MEMORY
- if (addr & 3) fprintf(stderr, "Unaligned long write @ %06X, PC=%06X\n", addr, PC);
+ if (!DWORD_ALIGNED(addr))
+ osd_printf_error("Unaligned long write @ %06X, PC=%06X\n", addr, PC);
#endif
m_program->write_dword(addr, data);
}
diff --git a/src/devices/cpu/hd61700/hd61700.cpp b/src/devices/cpu/hd61700/hd61700.cpp
index c786c7235ba..4e8d2c6590d 100644
--- a/src/devices/cpu/hd61700/hd61700.cpp
+++ b/src/devices/cpu/hd61700/hd61700.cpp
@@ -2654,7 +2654,7 @@ void hd61700_cpu_device::execute_run()
}
//if is in the internal ROM align the pc
- if ((m_fetch_addr&1) && m_pc < INT_ROM)
+ if (!WORD_ALIGNED(m_fetch_addr) && m_pc < INT_ROM)
set_pc((m_fetch_addr+1)>>1);
m_icount -= 3;
@@ -2871,7 +2871,7 @@ inline void hd61700_cpu_device::check_optional_jr(UINT8 arg)
{
if (arg & 0x80)
{
- if (m_pc < INT_ROM && !(m_fetch_addr&1)) read_op();
+ if (m_pc < INT_ROM && WORD_ALIGNED(m_fetch_addr)) read_op();
UINT8 arg1 = read_op();
diff --git a/src/devices/cpu/hphybrid/hphybrid.cpp b/src/devices/cpu/hphybrid/hphybrid.cpp
index 3d9c9631c5d..052c7058604 100644
--- a/src/devices/cpu/hphybrid/hphybrid.cpp
+++ b/src/devices/cpu/hphybrid/hphybrid.cpp
@@ -1485,20 +1485,20 @@ UINT32 hp_5061_3001_cpu_device::add_mae(aec_cases_t aec_case , UINT16 addr)
bsc_reg = HP_REG_R37_ADDR;
break;
- case AEC_CASE_I:
- // Behaviour of AEC during interrupt vector fetch is undocumented but it can be guessed from 9845B firmware.
- // Basically in this case the integrated AEC seems to do what the discrete implementation in 9845A does:
- // top half of memory is mapped to block 0 (fixed) and bottom half is mapped according to content of R35
- // (see pg 334 of patent).
- bsc_reg = top_half ? 0 : HP_REG_R35_ADDR;
- break;
-
- default:
- logerror("hphybrid: aec_case=%d\n" , aec_case);
- return 0;
- }
-
- UINT16 aec_reg = (bsc_reg != 0) ? (m_reg_aec[ bsc_reg - HP_REG_R32_ADDR ] & BSC_REG_MASK) : 0;
+ case AEC_CASE_I:
+ // Behaviour of AEC during interrupt vector fetch is undocumented but it can be guessed from 9845B firmware.
+ // Basically in this case the integrated AEC seems to do what the discrete implementation in 9845A does:
+ // top half of memory is mapped to block 0 (fixed) and bottom half is mapped according to content of R35
+ // (see pg 334 of patent).
+ bsc_reg = top_half ? 0 : HP_REG_R35_ADDR;
+ break;
+
+ default:
+ logerror("hphybrid: aec_case=%d\n" , aec_case);
+ return 0;
+ }
+
+ UINT16 aec_reg = (bsc_reg != 0) ? (m_reg_aec[ bsc_reg - HP_REG_R32_ADDR ] & BSC_REG_MASK) : 0;
if (m_forced_bsc_25) {
aec_reg = (aec_reg & 0xf) | 0x20;
diff --git a/src/devices/cpu/hphybrid/hphybrid.h b/src/devices/cpu/hphybrid/hphybrid.h
index 8baeeb66c1d..97aea0febce 100644
--- a/src/devices/cpu/hphybrid/hphybrid.h
+++ b/src/devices/cpu/hphybrid/hphybrid.h
@@ -90,83 +90,83 @@ public:
template<class _Object> static devcb_base &set_pa_changed_func(device_t &device, _Object object) { return downcast<hp_hybrid_cpu_device &>(device).m_pa_changed_func.set_callback(object); }
protected:
- hp_hybrid_cpu_device(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, UINT32 clock, const char *shortname , UINT8 addrwidth);
-
- // device-level overrides
- virtual void device_start() override;
- virtual void device_reset() override;
-
- // device_execute_interface overrides
- virtual UINT32 execute_min_cycles() const override { return 6; }
- virtual UINT32 execute_input_lines() const override { return 2; }
- virtual UINT32 execute_default_irq_vector() const override { return 0xffff; }
- virtual void execute_run() override;
- virtual void execute_set_input(int inputnum, int state) override;
-
- UINT16 execute_one(UINT16 opcode);
- UINT16 execute_one_sub(UINT16 opcode);
- // Execute an instruction that doesn't belong to either BPC or IOC
- virtual UINT16 execute_no_bpc_ioc(UINT16 opcode) = 0;
-
- // device_memory_interface overrides
- virtual const address_space_config *memory_space_config(address_spacenum spacenum = AS_0) const override { return (spacenum == AS_PROGRAM) ? &m_program_config : ( (spacenum == AS_IO) ? &m_io_config : NULL ); }
-
- // device_state_interface overrides
- void state_string_export(const device_state_entry &entry, std::string &str) const override;
-
- // device_disasm_interface overrides
- virtual UINT32 disasm_min_opcode_bytes() const override { return 2; }
- virtual UINT32 disasm_max_opcode_bytes() const override { return 2; }
- virtual offs_t disasm_disassemble(char *buffer, offs_t pc, const UINT8 *oprom, const UINT8 *opram, UINT32 options) override;
-
- // Different cases of memory access
- // See patent @ pg 361
- typedef enum {
- AEC_CASE_A, // Instr. fetches, non-base page fetches of link pointers, BPC direct non-base page accesses
- AEC_CASE_B, // Base page fetches of link pointers, BPC direct base page accesses
- AEC_CASE_C, // IOC, EMC & BPC indirect final destination accesses
- AEC_CASE_D, // DMA accesses
- AEC_CASE_I // Interrupt vector fetches
- } aec_cases_t;
-
- // do memory address extension
- virtual UINT32 add_mae(aec_cases_t aec_case , UINT16 addr) = 0;
-
- UINT16 remove_mae(UINT32 addr);
-
- UINT16 RM(aec_cases_t aec_case , UINT16 addr);
- UINT16 RM(UINT32 addr);
- virtual UINT16 read_non_common_reg(UINT16 addr) = 0;
-
- void WM(aec_cases_t aec_case , UINT16 addr , UINT16 v);
- void WM(UINT32 addr , UINT16 v);
- virtual void write_non_common_reg(UINT16 addr , UINT16 v) = 0;
-
- UINT16 fetch(void);
-
- UINT16 get_skip_addr(UINT16 opcode , bool condition) const;
-
- devcb_write8 m_pa_changed_func;
-
- int m_icount;
- bool m_forced_bsc_25;
-
- // State of processor
- UINT16 m_reg_A; // Register A
- UINT16 m_reg_B; // Register B
- UINT16 m_reg_P; // Register P
- UINT16 m_reg_R; // Register R
- UINT16 m_reg_C; // Register C
- UINT16 m_reg_D; // Register D
- UINT16 m_reg_IV; // Register IV
- UINT16 m_reg_W; // Register W
- UINT8 m_reg_PA[ HPHYBRID_INT_LVLS + 1 ]; // Stack of register PA (4 bit-long)
- UINT16 m_flags; // Flags
- UINT8 m_dmapa; // DMA peripheral address (4 bits)
- UINT16 m_dmama; // DMA address
- UINT16 m_dmac; // DMA counter
- UINT16 m_reg_I; // Instruction register
- UINT32 m_genpc; // Full PC
+ hp_hybrid_cpu_device(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, UINT32 clock, const char *shortname , UINT8 addrwidth);
+
+ // device-level overrides
+ virtual void device_start() override;
+ virtual void device_reset() override;
+
+ // device_execute_interface overrides
+ virtual UINT32 execute_min_cycles() const override { return 6; }
+ virtual UINT32 execute_input_lines() const override { return 2; }
+ virtual UINT32 execute_default_irq_vector() const override { return 0xffff; }
+ virtual void execute_run() override;
+ virtual void execute_set_input(int inputnum, int state) override;
+
+ UINT16 execute_one(UINT16 opcode);
+ UINT16 execute_one_sub(UINT16 opcode);
+ // Execute an instruction that doesn't belong to either BPC or IOC
+ virtual UINT16 execute_no_bpc_ioc(UINT16 opcode) = 0;
+
+ // device_memory_interface overrides
+ virtual const address_space_config *memory_space_config(address_spacenum spacenum = AS_0) const override { return (spacenum == AS_PROGRAM) ? &m_program_config : ( (spacenum == AS_IO) ? &m_io_config : NULL ); }
+
+ // device_state_interface overrides
+ void state_string_export(const device_state_entry &entry, std::string &str) const override;
+
+ // device_disasm_interface overrides
+ virtual UINT32 disasm_min_opcode_bytes() const override { return 2; }
+ virtual UINT32 disasm_max_opcode_bytes() const override { return 2; }
+ virtual offs_t disasm_disassemble(char *buffer, offs_t pc, const UINT8 *oprom, const UINT8 *opram, UINT32 options) override;
+
+ // Different cases of memory access
+ // See patent @ pg 361
+ typedef enum {
+ AEC_CASE_A, // Instr. fetches, non-base page fetches of link pointers, BPC direct non-base page accesses
+ AEC_CASE_B, // Base page fetches of link pointers, BPC direct base page accesses
+ AEC_CASE_C, // IOC, EMC & BPC indirect final destination accesses
+ AEC_CASE_D, // DMA accesses
+ AEC_CASE_I // Interrupt vector fetches
+ } aec_cases_t;
+
+ // do memory address extension
+ virtual UINT32 add_mae(aec_cases_t aec_case , UINT16 addr) = 0;
+
+ UINT16 remove_mae(UINT32 addr);
+
+ UINT16 RM(aec_cases_t aec_case , UINT16 addr);
+ UINT16 RM(UINT32 addr);
+ virtual UINT16 read_non_common_reg(UINT16 addr) = 0;
+
+ void WM(aec_cases_t aec_case , UINT16 addr , UINT16 v);
+ void WM(UINT32 addr , UINT16 v);
+ virtual void write_non_common_reg(UINT16 addr , UINT16 v) = 0;
+
+ UINT16 fetch(void);
+
+ UINT16 get_skip_addr(UINT16 opcode , bool condition) const;
+
+ devcb_write8 m_pa_changed_func;
+
+ int m_icount;
+ bool m_forced_bsc_25;
+
+ // State of processor
+ UINT16 m_reg_A; // Register A
+ UINT16 m_reg_B; // Register B
+ UINT16 m_reg_P; // Register P
+ UINT16 m_reg_R; // Register R
+ UINT16 m_reg_C; // Register C
+ UINT16 m_reg_D; // Register D
+ UINT16 m_reg_IV; // Register IV
+ UINT16 m_reg_W; // Register W
+ UINT8 m_reg_PA[ HPHYBRID_INT_LVLS + 1 ]; // Stack of register PA (4 bit-long)
+ UINT16 m_flags; // Flags
+ UINT8 m_dmapa; // DMA peripheral address (4 bits)
+ UINT16 m_dmama; // DMA address
+ UINT16 m_dmac; // DMA counter
+ UINT16 m_reg_I; // Instruction register
+ UINT32 m_genpc; // Full PC
private:
address_space_config m_program_config;
diff --git a/src/devices/cpu/i386/i386.cpp b/src/devices/cpu/i386/i386.cpp
index f0d57ada9a0..62a65155a59 100644
--- a/src/devices/cpu/i386/i386.cpp
+++ b/src/devices/cpu/i386/i386.cpp
@@ -41,23 +41,31 @@ const device_type PENTIUM4 = &device_creator<pentium4_device>;
i386_device::i386_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock)
: cpu_device(mconfig, I386, "I386", tag, owner, clock, "i386", __FILE__)
+ , device_vtlb_interface(mconfig, *this, AS_PROGRAM)
, m_program_config("program", ENDIANNESS_LITTLE, 32, 32, 0)
, m_io_config("io", ENDIANNESS_LITTLE, 32, 16, 0)
, m_smiact(*this)
{
m_program_config.m_logaddr_width = 32;
m_program_config.m_page_shift = 12;
+
+ // 32 unified
+ set_vtlb_dynamic_entries(32);
}
i386_device::i386_device(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, UINT32 clock, const char *shortname, const char *source, int program_data_width, int program_addr_width, int io_data_width)
: cpu_device(mconfig, type, name, tag, owner, clock, shortname, source)
+ , device_vtlb_interface(mconfig, *this, AS_PROGRAM)
, m_program_config("program", ENDIANNESS_LITTLE, program_data_width, program_addr_width, 0)
, m_io_config("io", ENDIANNESS_LITTLE, io_data_width, 16, 0)
, m_smiact(*this)
{
m_program_config.m_logaddr_width = 32;
m_program_config.m_page_shift = 12;
+
+ // 32 unified
+ set_vtlb_dynamic_entries(32);
}
i386SX_device::i386SX_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock)
@@ -73,11 +81,15 @@ i486_device::i486_device(const machine_config &mconfig, const char *tag, device_
pentium_device::pentium_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock)
: i386_device(mconfig, PENTIUM, "PENTIUM", tag, owner, clock, "pentium", __FILE__)
{
+ // 64 dtlb small, 8 dtlb large, 32 itlb
+ set_vtlb_dynamic_entries(96);
}
pentium_device::pentium_device(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, UINT32 clock, const char *shortname, const char *source)
: i386_device(mconfig, type, name, tag, owner, clock, shortname, source)
{
+ // 64 dtlb small, 8 dtlb large, 32 itlb
+ set_vtlb_dynamic_entries(96);
}
mediagx_device::mediagx_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock)
@@ -93,21 +105,29 @@ pentium_pro_device::pentium_pro_device(const machine_config &mconfig, const char
pentium_mmx_device::pentium_mmx_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock)
: pentium_device(mconfig, PENTIUM_MMX, "Pentium MMX", tag, owner, clock, "pentium_mmx", __FILE__)
{
+ // 64 dtlb small, 8 dtlb large, 32 itlb small, 2 itlb large
+ set_vtlb_dynamic_entries(96);
}
pentium2_device::pentium2_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock)
: pentium_device(mconfig, PENTIUM2, "Pentium II", tag, owner, clock, "pentium2", __FILE__)
{
+ // 64 dtlb small, 8 dtlb large, 32 itlb small, 2 itlb large
+ set_vtlb_dynamic_entries(96);
}
pentium3_device::pentium3_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock)
: pentium_device(mconfig, PENTIUM3, "Pentium III", tag, owner, clock, "pentium3", __FILE__)
{
+ // 64 dtlb small, 8 dtlb large, 32 itlb small, 2 itlb large
+ set_vtlb_dynamic_entries(96);
}
pentium4_device::pentium4_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock)
: pentium_device(mconfig, PENTIUM4, "Pentium 4", tag, owner, clock, "pentium4", __FILE__)
{
+ // 128 dtlb, 64 itlb
+ set_vtlb_dynamic_entries(196);
}
@@ -1306,7 +1326,7 @@ void i386_device::i386_task_switch(UINT16 selector, UINT8 nested)
}
m_cr[3] = READ32(tss+0x1c); // CR3 (PDBR)
if(oldcr3 != m_cr[3])
- vtlb_flush_dynamic(m_vtlb);
+ vtlb_flush_dynamic();
/* Set the busy bit in the new task's descriptor */
if(selector & 0x0004)
@@ -3178,7 +3198,7 @@ void i386_device::i386_postload()
CHANGE_PC(m_eip);
}
-void i386_device::i386_common_init(int tlbsize)
+void i386_device::i386_common_init()
{
int i, j;
static const int regs8[8] = {AL,CL,DL,BL,AH,CH,DH,BH};
@@ -3211,7 +3231,6 @@ void i386_device::i386_common_init(int tlbsize)
m_program = &space(AS_PROGRAM);
m_direct = &m_program->direct();
m_io = &space(AS_IO);
- m_vtlb = vtlb_alloc(this, AS_PROGRAM, 0, tlbsize);
m_smi = false;
m_debugger_temp = 0;
m_lock = false;
@@ -3294,7 +3313,7 @@ void i386_device::i386_common_init(int tlbsize)
void i386_device::device_start()
{
- i386_common_init(32);
+ i386_common_init();
build_opcode_table(OP_I386);
m_cycle_table_rm = cycle_table_rm[CPU_CYCLES_I386].get();
@@ -3698,7 +3717,6 @@ void i386_device::zero_state()
void i386_device::device_reset()
{
zero_state();
- vtlb_flush_dynamic(m_vtlb);
m_sreg[CS].selector = 0xf000;
m_sreg[CS].base = 0xffff0000;
@@ -3890,7 +3908,7 @@ void i386_device::i386_set_a20_line(int state)
m_a20_mask = ~(1 << 20);
}
// TODO: how does A20M and the tlb interact
- vtlb_flush_dynamic(m_vtlb);
+ vtlb_flush_dynamic();
}
void i386_device::execute_run()
@@ -3976,7 +3994,7 @@ offs_t i386_device::disasm_disassemble(char *buffer, offs_t pc, const UINT8 *opr
void i486_device::device_start()
{
- i386_common_init(32);
+ i386_common_init();
build_opcode_table(OP_I386 | OP_FPU | OP_I486);
build_x87_opcode_table();
@@ -3989,7 +4007,6 @@ void i486_device::device_start()
void i486_device::device_reset()
{
zero_state();
- vtlb_flush_dynamic(m_vtlb);
m_sreg[CS].selector = 0xf000;
m_sreg[CS].base = 0xffff0000;
@@ -4033,8 +4050,7 @@ void i486_device::device_reset()
void pentium_device::device_start()
{
- // 64 dtlb small, 8 dtlb large, 32 itlb
- i386_common_init(96);
+ i386_common_init();
register_state_i386_x87();
build_opcode_table(OP_I386 | OP_FPU | OP_I486 | OP_PENTIUM);
@@ -4046,7 +4062,6 @@ void pentium_device::device_start()
void pentium_device::device_reset()
{
zero_state();
- vtlb_flush_dynamic(m_vtlb);
m_sreg[CS].selector = 0xf000;
m_sreg[CS].base = 0xffff0000;
@@ -4107,8 +4122,7 @@ void pentium_device::device_reset()
void mediagx_device::device_start()
{
- // probably 32 unified
- i386_common_init(32);
+ i386_common_init();
register_state_i386_x87();
build_x87_opcode_table();
@@ -4120,7 +4134,6 @@ void mediagx_device::device_start()
void mediagx_device::device_reset()
{
zero_state();
- vtlb_flush_dynamic(m_vtlb);
m_sreg[CS].selector = 0xf000;
m_sreg[CS].base = 0xffff0000;
@@ -4172,8 +4185,7 @@ void mediagx_device::device_reset()
void pentium_pro_device::device_start()
{
- // 64 dtlb small, 32 itlb
- i386_common_init(96);
+ i386_common_init();
register_state_i386_x87();
build_x87_opcode_table();
@@ -4185,7 +4197,6 @@ void pentium_pro_device::device_start()
void pentium_pro_device::device_reset()
{
zero_state();
- vtlb_flush_dynamic(m_vtlb);
m_sreg[CS].selector = 0xf000;
m_sreg[CS].base = 0xffff0000;
@@ -4247,8 +4258,7 @@ void pentium_pro_device::device_reset()
void pentium_mmx_device::device_start()
{
- // 64 dtlb small, 8 dtlb large, 32 itlb small, 2 itlb large
- i386_common_init(96);
+ i386_common_init();
register_state_i386_x87();
build_x87_opcode_table();
@@ -4260,7 +4270,6 @@ void pentium_mmx_device::device_start()
void pentium_mmx_device::device_reset()
{
zero_state();
- vtlb_flush_dynamic(m_vtlb);
m_sreg[CS].selector = 0xf000;
m_sreg[CS].base = 0xffff0000;
@@ -4320,8 +4329,7 @@ void pentium_mmx_device::device_reset()
void pentium2_device::device_start()
{
- // 64 dtlb small, 8 dtlb large, 32 itlb small, 2 itlb large
- i386_common_init(96);
+ i386_common_init();
register_state_i386_x87();
build_x87_opcode_table();
@@ -4333,7 +4341,6 @@ void pentium2_device::device_start()
void pentium2_device::device_reset()
{
zero_state();
- vtlb_flush_dynamic(m_vtlb);
m_sreg[CS].selector = 0xf000;
m_sreg[CS].base = 0xffff0000;
@@ -4387,8 +4394,7 @@ void pentium2_device::device_reset()
void pentium3_device::device_start()
{
- // 64 dtlb small, 8 dtlb large, 32 itlb small, 2 itlb large
- i386_common_init(96);
+ i386_common_init();
register_state_i386_x87_xmm();
build_x87_opcode_table();
@@ -4400,7 +4406,6 @@ void pentium3_device::device_start()
void pentium3_device::device_reset()
{
zero_state();
- vtlb_flush_dynamic(m_vtlb);
m_sreg[CS].selector = 0xf000;
m_sreg[CS].base = 0xffff0000;
@@ -4456,8 +4461,7 @@ void pentium3_device::device_reset()
void pentium4_device::device_start()
{
- // 128 dtlb, 64 itlb
- i386_common_init(196);
+ i386_common_init();
register_state_i386_x87_xmm();
build_x87_opcode_table();
@@ -4469,7 +4473,6 @@ void pentium4_device::device_start()
void pentium4_device::device_reset()
{
zero_state();
- vtlb_flush_dynamic(m_vtlb);
m_sreg[CS].selector = 0xf000;
m_sreg[CS].base = 0xffff0000;
diff --git a/src/devices/cpu/i386/i386.h b/src/devices/cpu/i386/i386.h
index c9ef38b4280..979aaf08f45 100644
--- a/src/devices/cpu/i386/i386.h
+++ b/src/devices/cpu/i386/i386.h
@@ -8,7 +8,7 @@
#include "softfloat/milieu.h"
#include "softfloat/softfloat.h"
#include "debug/debugcpu.h"
-#include "cpu/vtlb.h"
+#include "divtlb.h"
#define INPUT_LINE_A20 1
@@ -24,7 +24,7 @@
#define X86_NUM_CPUS 4
-class i386_device : public cpu_device
+class i386_device : public cpu_device, public device_vtlb_interface
{
public:
// construction/destruction
@@ -270,8 +270,6 @@ struct I386_CALL_GATE
UINT8 *m_cycle_table_pm;
UINT8 *m_cycle_table_rm;
- vtlb_state *m_vtlb;
-
bool m_smm;
bool m_smi;
bool m_smi_latched;
@@ -1411,7 +1409,7 @@ struct I386_CALL_GATE
void build_x87_opcode_table_df();
void build_x87_opcode_table();
void i386_postload();
- void i386_common_init(int tlbsize);
+ void i386_common_init();
void build_opcode_table(UINT32 features);
void pentium_smi();
void zero_state();
diff --git a/src/devices/cpu/i386/i386ops.inc b/src/devices/cpu/i386/i386ops.inc
index dc237c98469..ea15f9a5923 100644
--- a/src/devices/cpu/i386/i386ops.inc
+++ b/src/devices/cpu/i386/i386ops.inc
@@ -701,7 +701,7 @@ void i386_device::i386_mov_cr_r32() // Opcode 0x0f 22
case 2: CYCLES(CYCLES_MOV_REG_CR2); break;
case 3:
CYCLES(CYCLES_MOV_REG_CR3);
- vtlb_flush_dynamic(m_vtlb);
+ vtlb_flush_dynamic();
break;
case 4: CYCLES(1); break; // TODO
default:
diff --git a/src/devices/cpu/i386/i386priv.h b/src/devices/cpu/i386/i386priv.h
index 9913d851fa2..339e630d1cd 100644
--- a/src/devices/cpu/i386/i386priv.h
+++ b/src/devices/cpu/i386/i386priv.h
@@ -486,7 +486,7 @@ int i386_device::translate_address(int pl, int type, UINT32 *address, UINT32 *er
if(!(m_cr[0] & 0x80000000)) // Some (very few) old OS's won't work with this
return TRUE;
- const vtlb_entry *table = vtlb_table(m_vtlb);
+ const vtlb_entry *table = vtlb_table();
UINT32 index = *address >> 12;
vtlb_entry entry = table[index];
if(type == TRANSLATE_FETCH)
@@ -506,7 +506,7 @@ int i386_device::translate_address(int pl, int type, UINT32 *address, UINT32 *er
*error |= 1;
return FALSE;
}
- vtlb_dynload(m_vtlb, index, *address, entry);
+ vtlb_dynload(index, *address, entry);
return TRUE;
}
if(!(entry & (1 << type)))
@@ -557,7 +557,7 @@ UINT16 i386_device::FETCH16()
UINT16 value;
UINT32 address = m_pc, error;
- if( address & 0x1 ) { /* Unaligned read */
+ if( !WORD_ALIGNED(address) ) { /* Unaligned read */
value = (FETCH() << 0);
value |= (FETCH() << 8);
} else {
@@ -575,7 +575,7 @@ UINT32 i386_device::FETCH32()
UINT32 value;
UINT32 address = m_pc, error;
- if( m_pc & 0x3 ) { /* Unaligned read */
+ if( !DWORD_ALIGNED(m_pc) ) { /* Unaligned read */
value = (FETCH() << 0);
value |= (FETCH() << 8);
value |= (FETCH() << 16);
@@ -607,7 +607,7 @@ UINT16 i386_device::READ16(UINT32 ea)
UINT16 value;
UINT32 address = ea, error;
- if( ea & 0x1 ) { /* Unaligned read */
+ if( !WORD_ALIGNED(ea) ) { /* Unaligned read */
value = (READ8( address+0 ) << 0);
value |= (READ8( address+1 ) << 8);
} else {
@@ -624,7 +624,7 @@ UINT32 i386_device::READ32(UINT32 ea)
UINT32 value;
UINT32 address = ea, error;
- if( ea & 0x3 ) { /* Unaligned read */
+ if( !DWORD_ALIGNED(ea) ) { /* Unaligned read */
value = (READ8( address+0 ) << 0);
value |= (READ8( address+1 ) << 8);
value |= (READ8( address+2 ) << 16),
@@ -644,7 +644,7 @@ UINT64 i386_device::READ64(UINT32 ea)
UINT64 value;
UINT32 address = ea, error;
- if( ea & 0x7 ) { /* Unaligned read */
+ if( !QWORD_ALIGNED(ea) ) { /* Unaligned read */
value = (((UINT64) READ8( address+0 )) << 0);
value |= (((UINT64) READ8( address+1 )) << 8);
value |= (((UINT64) READ8( address+2 )) << 16);
@@ -678,7 +678,7 @@ UINT16 i386_device::READ16PL0(UINT32 ea)
UINT16 value;
UINT32 address = ea, error;
- if( ea & 0x1 ) { /* Unaligned read */
+ if( !WORD_ALIGNED(ea) ) { /* Unaligned read */
value = (READ8PL0( address+0 ) << 0);
value |= (READ8PL0( address+1 ) << 8);
} else {
@@ -696,7 +696,7 @@ UINT32 i386_device::READ32PL0(UINT32 ea)
UINT32 value;
UINT32 address = ea, error;
- if( ea & 0x3 ) { /* Unaligned read */
+ if( !DWORD_ALIGNED(ea) ) { /* Unaligned read */
value = (READ8PL0( address+0 ) << 0);
value |= (READ8PL0( address+1 ) << 8);
value |= (READ8PL0( address+2 ) << 16);
@@ -732,7 +732,7 @@ void i386_device::WRITE16(UINT32 ea, UINT16 value)
{
UINT32 address = ea, error;
- if( ea & 0x1 ) { /* Unaligned write */
+ if( !WORD_ALIGNED(ea) ) { /* Unaligned write */
WRITE8( address+0, value & 0xff );
WRITE8( address+1, (value >> 8) & 0xff );
} else {
@@ -747,7 +747,7 @@ void i386_device::WRITE32(UINT32 ea, UINT32 value)
{
UINT32 address = ea, error;
- if( ea & 0x3 ) { /* Unaligned write */
+ if( !DWORD_ALIGNED(ea) ) { /* Unaligned write */
WRITE8( address+0, value & 0xff );
WRITE8( address+1, (value >> 8) & 0xff );
WRITE8( address+2, (value >> 16) & 0xff );
@@ -765,7 +765,7 @@ void i386_device::WRITE64(UINT32 ea, UINT64 value)
{
UINT32 address = ea, error;
- if( ea & 0x7 ) { /* Unaligned write */
+ if( !QWORD_ALIGNED(ea) ) { /* Unaligned write */
WRITE8( address+0, value & 0xff );
WRITE8( address+1, (value >> 8) & 0xff );
WRITE8( address+2, (value >> 16) & 0xff );
diff --git a/src/devices/cpu/i386/i486ops.inc b/src/devices/cpu/i386/i486ops.inc
index d22f6c079c3..8be406692d4 100644
--- a/src/devices/cpu/i386/i486ops.inc
+++ b/src/devices/cpu/i386/i486ops.inc
@@ -312,7 +312,7 @@ void i386_device::i486_group0F01_16() // Opcode 0x0f 01
}
ea = GetEA(modrm,-1);
CYCLES(25); // TODO: add to cycles.h
- vtlb_flush_address(m_vtlb, ea);
+ vtlb_flush_address(ea);
break;
}
default:
@@ -430,7 +430,7 @@ void i386_device::i486_group0F01_32() // Opcode 0x0f 01
}
ea = GetEA(modrm,-1);
CYCLES(25); // TODO: add to cycles.h
- vtlb_flush_address(m_vtlb, ea);
+ vtlb_flush_address(ea);
break;
}
default:
@@ -500,12 +500,12 @@ void i386_device::i486_mov_cr_r32() // Opcode 0x0f 22
case 0:
CYCLES(CYCLES_MOV_REG_CR0);
if((oldcr ^ m_cr[cr]) & 0x80010000)
- vtlb_flush_dynamic(m_vtlb);
+ vtlb_flush_dynamic();
break;
case 2: CYCLES(CYCLES_MOV_REG_CR2); break;
case 3:
CYCLES(CYCLES_MOV_REG_CR3);
- vtlb_flush_dynamic(m_vtlb);
+ vtlb_flush_dynamic();
break;
case 4: CYCLES(1); break; // TODO
default:
diff --git a/src/devices/cpu/i4004/i4004.cpp b/src/devices/cpu/i4004/i4004.cpp
index d4ba8891260..371074238c9 100644
--- a/src/devices/cpu/i4004/i4004.cpp
+++ b/src/devices/cpu/i4004/i4004.cpp
@@ -30,7 +30,9 @@ i4004_cpu_device::i4004_cpu_device(const machine_config &mconfig, const char *ta
, m_io_config("io", ENDIANNESS_LITTLE, 8, 6, 0)
, m_data_config("data", ENDIANNESS_LITTLE, 8, 12, 0), m_A(0), m_C(0), m_TEST(0), m_flags(0), m_program(nullptr), m_direct(nullptr), m_data(nullptr), m_io(nullptr), m_icount(0), m_pc_pos(0), m_addr_mask(0)
{
- m_is_octal = true;
+ m_program_config.m_is_octal = true;
+ m_io_config.m_is_octal = true;
+ m_data_config.m_is_octal = true;
}
diff --git a/src/devices/cpu/i8089/i8089.cpp b/src/devices/cpu/i8089/i8089.cpp
index 22494cfdd2f..ade9e4f768b 100644
--- a/src/devices/cpu/i8089/i8089.cpp
+++ b/src/devices/cpu/i8089/i8089.cpp
@@ -289,7 +289,7 @@ UINT16 i8089_device::read_word(bool space, offs_t address)
UINT16 data;
address_space *aspace = (space ? m_io : m_mem);
- if (sysbus_width() && !(address & 1))
+ if (sysbus_width() && WORD_ALIGNED(address))
{
data = aspace->read_word(address);
}
@@ -311,7 +311,7 @@ void i8089_device::write_word(bool space, offs_t address, UINT16 data)
{
address_space *aspace = (space ? m_io : m_mem);
- if (sysbus_width() && !(address & 1))
+ if (sysbus_width() && WORD_ALIGNED(address))
{
aspace->write_word(address, data);
}
diff --git a/src/devices/cpu/i86/i86.cpp b/src/devices/cpu/i86/i86.cpp
index cffe2793516..28669d16563 100644
--- a/src/devices/cpu/i86/i86.cpp
+++ b/src/devices/cpu/i86/i86.cpp
@@ -144,7 +144,7 @@ void i8086_cpu_device::execute_run()
m_seg_prefix = false;
/* Dispatch IRQ */
- if ( m_pending_irq && m_no_interrupt == 0 )
+ if ( m_pending_irq && (m_no_interrupt == 0) )
{
if ( m_pending_irq & NMI_IRQ )
{
@@ -159,25 +159,29 @@ void i8086_cpu_device::execute_run()
}
}
- /* No interrupt allowed between last instruction and this one */
- if ( m_no_interrupt )
+ /* Trap should allow one instruction to be executed.
+ CPUID.ASM (by Bob Smith, 1985) suggests that in situations where m_no_interrupt is 1,
+ (directly after POP SS / MOV_SREG), single step IRQs don't fire.
+ */
+ if (m_fire_trap )
{
- m_no_interrupt--;
- }
-
- /* trap should allow one instruction to be executed */
- if ( m_fire_trap )
- {
- if ( m_fire_trap >= 2 )
+ if ( (m_fire_trap >= 2) && (m_no_interrupt == 0) )
{
+ m_fire_trap = 0; // reset trap flag upon entry
interrupt(1);
- m_fire_trap = 0;
}
else
{
m_fire_trap++;
}
}
+
+ /* No interrupt allowed between last instruction and this one */
+ if ( m_no_interrupt )
+ {
+ m_no_interrupt--;
+ }
+
}
if (!m_seg_prefix)
@@ -1404,6 +1408,7 @@ bool i8086_common_cpu_device::common_op(UINT8 op)
m_src = GetRMWord();
m_sregs[(m_modrm & 0x18) >> 3] = m_src; // confirmed on hw: modrm bit 5 ignored
CLKM(MOV_SR,MOV_SM);
+ m_no_interrupt = 1; // Disable IRQ after load segment register.
break;
case 0x8f: // i_popw
diff --git a/src/devices/cpu/i86/i86.txt b/src/devices/cpu/i86/i86.txt
index 39b54d6a8d0..fb27b8526fe 100644
--- a/src/devices/cpu/i86/i86.txt
+++ b/src/devices/cpu/i86/i86.txt
@@ -29,6 +29,7 @@ mov sreg, doesnot disable until next operation is executed
8086/8088
---------
"mov cs, " causes unconditional jump!
+0xd6 is salc (sbb al,al) as all other intel x86-16 and -32 cpus
80C86/80C88
-----------
@@ -36,9 +37,10 @@ mov sreg, doesnot disable until next operation is executed
80186/80188
-----------
-integrated pic8259, pit8253, dma8253 (but not at standard pc addresses)
+integrated pic, timer and dmac entirely incompatible with 8259, 825[3,4] and 82[3,5]7
additional instructions
-"mov cs, " ?
+#BR/bound/int 5, #UD/illegal instruction/int 6, #NM/coprocessor unavailable/int 7 support
+"mov cs, " ignored (likely causes int 6)
shift count anded with 0x1f
80188
@@ -52,6 +54,7 @@ although it is based on 80186 instruction set, some behaviours follow 8086
8080 emulation mode
"mov cs, " ignored
shift count not anded (acts like 8086)
+0xd6 is xlat alias
NEC 70116 (V30)
---------------
@@ -69,11 +72,11 @@ no 8080 emulation mode
NEC V40
-------
-pinout, integrated peripherals as 80186
+pinout, integrated peripherals 8259,54,37 clones at nonpc compatible addresses
NEC V50
-------
-pinout, integrated peripherals as 80188
+pinout, integrated peripherals as v40
NEC V33?
--------
@@ -92,9 +95,9 @@ v30? emulation mode (without 8080 emulation mode)
80286
-----
-80186 with additional instructions
+80186 with additional instructions but no peripherals
24 bit address bus,
-protected mode
+protected mode selector/descriptor
80386 and later
---------------
diff --git a/src/devices/cpu/i960/i960.cpp b/src/devices/cpu/i960/i960.cpp
index 224b844387c..f754445379b 100644
--- a/src/devices/cpu/i960/i960.cpp
+++ b/src/devices/cpu/i960/i960.cpp
@@ -26,7 +26,7 @@ i960_cpu_device::i960_cpu_device(const machine_config &mconfig, const char *tag,
UINT32 i960_cpu_device::i960_read_dword_unaligned(UINT32 address)
{
- if (address & 3)
+ if (!DWORD_ALIGNED(address))
return m_program->read_byte(address) | m_program->read_byte(address+1)<<8 | m_program->read_byte(address+2)<<16 | m_program->read_byte(address+3)<<24;
else
return m_program->read_dword(address);
@@ -34,7 +34,7 @@ UINT32 i960_cpu_device::i960_read_dword_unaligned(UINT32 address)
UINT16 i960_cpu_device::i960_read_word_unaligned(UINT32 address)
{
- if (address & 1)
+ if (!WORD_ALIGNED(address))
return m_program->read_byte(address) | m_program->read_byte(address+1)<<8;
else
return m_program->read_word(address);
@@ -42,7 +42,7 @@ UINT16 i960_cpu_device::i960_read_word_unaligned(UINT32 address)
void i960_cpu_device::i960_write_dword_unaligned(UINT32 address, UINT32 data)
{
- if (address & 3)
+ if (!DWORD_ALIGNED(address))
{
m_program->write_byte(address, data & 0xff);
m_program->write_byte(address+1, (data>>8)&0xff);
@@ -57,7 +57,7 @@ void i960_cpu_device::i960_write_dword_unaligned(UINT32 address, UINT32 data)
void i960_cpu_device::i960_write_word_unaligned(UINT32 address, UINT16 data)
{
- if (address & 1)
+ if (!WORD_ALIGNED(address))
{
m_program->write_byte(address, data & 0xff);
m_program->write_byte(address+1, (data>>8)&0xff);
diff --git a/src/devices/cpu/m37710/m37710il.h b/src/devices/cpu/m37710/m37710il.h
index ffc1aed0a7a..eb79f0fddd6 100644
--- a/src/devices/cpu/m37710/m37710il.h
+++ b/src/devices/cpu/m37710/m37710il.h
@@ -42,7 +42,7 @@ inline UINT32 m37710_cpu_device::m37710i_read_16_normal(UINT32 address)
inline UINT32 m37710_cpu_device::m37710i_read_16_immediate(UINT32 address)
{
- if (address & 1)
+ if (!WORD_ALIGNED(address))
return m37710_read_8_immediate(address) | (m37710_read_8_immediate(address+1)<<8);
else
return m37710_read_16_immediate(address);
@@ -65,7 +65,7 @@ inline void m37710_cpu_device::m37710i_write_16_direct(UINT32 address, UINT32 va
inline UINT32 m37710_cpu_device::m37710i_read_24_normal(UINT32 address)
{
- if (address & 1)
+ if (!WORD_ALIGNED(address))
return m37710_read_8(address) | (m37710_read_16(address+1)<<8);
else
return m37710_read_16(address) | (m37710_read_8(address+2)<<16);
@@ -73,7 +73,7 @@ inline UINT32 m37710_cpu_device::m37710i_read_24_normal(UINT32 address)
inline UINT32 m37710_cpu_device::m37710i_read_24_immediate(UINT32 address)
{
- if (address & 1)
+ if (!WORD_ALIGNED(address))
return m37710_read_8_immediate(address) | (m37710_read_16_immediate(address+1)<<8);
else
return m37710_read_16_immediate(address) | (m37710_read_8_immediate(address+2)<<16);
@@ -81,7 +81,7 @@ inline UINT32 m37710_cpu_device::m37710i_read_24_immediate(UINT32 address)
inline UINT32 m37710_cpu_device::m37710i_read_24_direct(UINT32 address)
{
- if (address & 1)
+ if (!WORD_ALIGNED(address))
return m37710_read_8(address) | (m37710_read_16(address+1)<<8);
else
return m37710_read_16(address) | (m37710_read_8(address+2)<<16);
diff --git a/src/devices/cpu/m6800/6800ops.inc b/src/devices/cpu/m6800/6800ops.inc
index cf0360c7538..c9712dca9ff 100644
--- a/src/devices/cpu/m6800/6800ops.inc
+++ b/src/devices/cpu/m6800/6800ops.inc
@@ -2282,3 +2282,22 @@ OP_HANDLER( stx_ex )
EXTENDED;
WM16(EAD,&m_x);
}
+
+/* NCS specific, guessed opcodes (tested by Night Gal Summer) */
+// $bb - load A from [X + $0]
+OP_HANDLER( ldax_imm )
+{
+ EA=X;
+ A=RM(EAD);
+ CLR_NZV;
+ SET_NZ8(A);
+}
+
+// $00 - store A to [X + $0]
+OP_HANDLER( stax_imm )
+{
+ CLR_NZV;
+ SET_NZ8(A);
+ EA=X;
+ WM(EAD,A);
+} \ No newline at end of file
diff --git a/src/devices/cpu/m6800/6800tbl.inc b/src/devices/cpu/m6800/6800tbl.inc
index 38376dadd59..c830f9ebe75 100644
--- a/src/devices/cpu/m6800/6800tbl.inc
+++ b/src/devices/cpu/m6800/6800tbl.inc
@@ -105,30 +105,54 @@ const m6800_cpu_device::op_func m6800_cpu_device::hd63701_insn[0x100] = {
};
const m6800_cpu_device::op_func m6800_cpu_device::nsc8105_insn[0x100] = {
-&m6800_cpu_device::illegal,&m6800_cpu_device::illegal,&m6800_cpu_device::nop, &m6800_cpu_device::illegal,&m6800_cpu_device::illegal,&m6800_cpu_device::tap, &m6800_cpu_device::illegal,&m6800_cpu_device::tpa,
+// 0
+&m6800_cpu_device::stax_imm,&m6800_cpu_device::illegal,&m6800_cpu_device::nop, &m6800_cpu_device::illegal,&m6800_cpu_device::illegal,&m6800_cpu_device::tap, &m6800_cpu_device::illegal,&m6800_cpu_device::tpa,
+// 8
&m6800_cpu_device::inx, &m6800_cpu_device::clv, &m6800_cpu_device::dex, &m6800_cpu_device::sev, &m6800_cpu_device::clc, &m6800_cpu_device::cli, &m6800_cpu_device::sec, &m6800_cpu_device::sei,
+// 10
&m6800_cpu_device::sba, &m6800_cpu_device::illegal,&m6800_cpu_device::cba, &m6800_cpu_device::illegal,&m6800_cpu_device::illegal,&m6800_cpu_device::tab, &m6800_cpu_device::illegal,&m6800_cpu_device::tba,
+// 18
&m6800_cpu_device::illegal,&m6800_cpu_device::illegal,&m6800_cpu_device::daa, &m6800_cpu_device::aba, &m6800_cpu_device::illegal,&m6800_cpu_device::illegal,&m6800_cpu_device::illegal,&m6800_cpu_device::illegal,
+// 20
&m6800_cpu_device::bra, &m6800_cpu_device::bhi, &m6800_cpu_device::brn, &m6800_cpu_device::bls, &m6800_cpu_device::bcc, &m6800_cpu_device::bne, &m6800_cpu_device::bcs, &m6800_cpu_device::beq,
+// 28
&m6800_cpu_device::bvc, &m6800_cpu_device::bpl, &m6800_cpu_device::bvs, &m6800_cpu_device::bmi, &m6800_cpu_device::bge, &m6800_cpu_device::bgt, &m6800_cpu_device::blt, &m6800_cpu_device::ble,
+// 30
&m6800_cpu_device::tsx, &m6800_cpu_device::pula, &m6800_cpu_device::ins, &m6800_cpu_device::pulb, &m6800_cpu_device::des, &m6800_cpu_device::psha, &m6800_cpu_device::txs, &m6800_cpu_device::pshb,
+// 38
&m6800_cpu_device::illegal,&m6800_cpu_device::illegal,&m6800_cpu_device::rts, &m6800_cpu_device::rti, &m6800_cpu_device::illegal,&m6800_cpu_device::wai, &m6800_cpu_device::illegal,&m6800_cpu_device::swi,
+// 40
&m6800_cpu_device::suba_im,&m6800_cpu_device::sbca_im,&m6800_cpu_device::cmpa_im,&m6800_cpu_device::illegal,&m6800_cpu_device::anda_im,&m6800_cpu_device::lda_im, &m6800_cpu_device::bita_im,&m6800_cpu_device::sta_im,
+// 48
&m6800_cpu_device::eora_im,&m6800_cpu_device::ora_im, &m6800_cpu_device::adca_im,&m6800_cpu_device::adda_im,&m6800_cpu_device::cmpx_im,&m6800_cpu_device::lds_im, &m6800_cpu_device::bsr, &m6800_cpu_device::sts_im,
+// 50
&m6800_cpu_device::suba_di,&m6800_cpu_device::sbca_di,&m6800_cpu_device::cmpa_di,&m6800_cpu_device::illegal,&m6800_cpu_device::anda_di,&m6800_cpu_device::lda_di, &m6800_cpu_device::bita_di,&m6800_cpu_device::sta_di,
+// 58
&m6800_cpu_device::eora_di,&m6800_cpu_device::ora_di, &m6800_cpu_device::adca_di,&m6800_cpu_device::adda_di,&m6800_cpu_device::cmpx_di,&m6800_cpu_device::lds_di, &m6800_cpu_device::jsr_di, &m6800_cpu_device::sts_di,
+// 60
&m6800_cpu_device::suba_ix,&m6800_cpu_device::sbca_ix,&m6800_cpu_device::cmpa_ix,&m6800_cpu_device::illegal,&m6800_cpu_device::anda_ix,&m6800_cpu_device::lda_ix, &m6800_cpu_device::bita_ix,&m6800_cpu_device::sta_ix,
+// 68
&m6800_cpu_device::eora_ix,&m6800_cpu_device::ora_ix, &m6800_cpu_device::adca_ix,&m6800_cpu_device::adda_ix,&m6800_cpu_device::cmpx_ix,&m6800_cpu_device::lds_ix, &m6800_cpu_device::jsr_ix, &m6800_cpu_device::sts_ix,
+// 70
&m6800_cpu_device::suba_ex,&m6800_cpu_device::sbca_ex,&m6800_cpu_device::cmpa_ex,&m6800_cpu_device::illegal,&m6800_cpu_device::anda_ex,&m6800_cpu_device::lda_ex, &m6800_cpu_device::bita_ex,&m6800_cpu_device::sta_ex,
+// 78
&m6800_cpu_device::eora_ex,&m6800_cpu_device::ora_ex, &m6800_cpu_device::adca_ex,&m6800_cpu_device::adda_ex,&m6800_cpu_device::cmpx_ex,&m6800_cpu_device::lds_ex, &m6800_cpu_device::jsr_ex, &m6800_cpu_device::sts_ex,
+// 80
&m6800_cpu_device::nega, &m6800_cpu_device::illegal,&m6800_cpu_device::illegal,&m6800_cpu_device::coma, &m6800_cpu_device::lsra, &m6800_cpu_device::rora, &m6800_cpu_device::illegal,&m6800_cpu_device::asra,
+// 88
&m6800_cpu_device::asla, &m6800_cpu_device::deca, &m6800_cpu_device::rola, &m6800_cpu_device::illegal,&m6800_cpu_device::inca, &m6800_cpu_device::illegal,&m6800_cpu_device::tsta, &m6800_cpu_device::clra,
+// 90
&m6800_cpu_device::negb, &m6800_cpu_device::illegal,&m6800_cpu_device::illegal,&m6800_cpu_device::comb, &m6800_cpu_device::lsrb, &m6800_cpu_device::rorb, &m6800_cpu_device::illegal,&m6800_cpu_device::asrb,
+// 98
&m6800_cpu_device::aslb, &m6800_cpu_device::decb, &m6800_cpu_device::rolb, &m6800_cpu_device::illegal,&m6800_cpu_device::incb, &m6800_cpu_device::illegal,&m6800_cpu_device::tstb, &m6800_cpu_device::clrb,
+// a0
&m6800_cpu_device::neg_ix, &m6800_cpu_device::illegal,&m6800_cpu_device::illegal,&m6800_cpu_device::com_ix, &m6800_cpu_device::lsr_ix, &m6800_cpu_device::ror_ix, &m6800_cpu_device::illegal,&m6800_cpu_device::asr_ix,
+// a8
&m6800_cpu_device::asl_ix, &m6800_cpu_device::dec_ix, &m6800_cpu_device::rol_ix, &m6800_cpu_device::illegal,&m6800_cpu_device::inc_ix, &m6800_cpu_device::jmp_ix, &m6800_cpu_device::tst_ix, &m6800_cpu_device::clr_ix,
+// b0
&m6800_cpu_device::neg_ex, &m6800_cpu_device::illegal,&m6800_cpu_device::illegal,&m6800_cpu_device::com_ex, &m6800_cpu_device::lsr_ex, &m6800_cpu_device::ror_ex, &m6800_cpu_device::illegal,&m6800_cpu_device::asr_ex,
-&m6800_cpu_device::asl_ex, &m6800_cpu_device::dec_ex, &m6800_cpu_device::rol_ex, &m6800_cpu_device::illegal,&m6800_cpu_device::inc_ex, &m6800_cpu_device::jmp_ex, &m6800_cpu_device::tst_ex, &m6800_cpu_device::clr_ex,
+// b8
+&m6800_cpu_device::asl_ex, &m6800_cpu_device::dec_ex, &m6800_cpu_device::rol_ex, &m6800_cpu_device::ldax_imm,&m6800_cpu_device::inc_ex, &m6800_cpu_device::jmp_ex, &m6800_cpu_device::tst_ex, &m6800_cpu_device::clr_ex,
&m6800_cpu_device::subb_im,&m6800_cpu_device::sbcb_im,&m6800_cpu_device::cmpb_im,&m6800_cpu_device::illegal,&m6800_cpu_device::andb_im,&m6800_cpu_device::ldb_im, &m6800_cpu_device::bitb_im,&m6800_cpu_device::stb_im,
&m6800_cpu_device::eorb_im,&m6800_cpu_device::orb_im, &m6800_cpu_device::adcb_im,&m6800_cpu_device::addb_im,&m6800_cpu_device::illegal,&m6800_cpu_device::ldx_im, &m6800_cpu_device::illegal,&m6800_cpu_device::stx_im,
&m6800_cpu_device::subb_di,&m6800_cpu_device::sbcb_di,&m6800_cpu_device::cmpb_di,&m6800_cpu_device::illegal,&m6800_cpu_device::andb_di,&m6800_cpu_device::ldb_di, &m6800_cpu_device::bitb_di,&m6800_cpu_device::stb_di,
diff --git a/src/devices/cpu/m6800/m6800.cpp b/src/devices/cpu/m6800/m6800.cpp
index 84d3b8d03e2..730d7a1be4b 100644
--- a/src/devices/cpu/m6800/m6800.cpp
+++ b/src/devices/cpu/m6800/m6800.cpp
@@ -488,7 +488,7 @@ const UINT8 m6800_cpu_device::cycles_63701[256] =
const UINT8 m6800_cpu_device::cycles_nsc8105[256] =
{
/* 0 1 2 3 4 5 6 7 8 9 A B C D E F */
- /*0*/ XX,XX, 2,XX,XX, 2,XX, 2, 4, 2, 4, 2, 2, 2, 2, 2,
+ /*0*/ 5,XX, 2,XX,XX, 2,XX, 2, 4, 2, 4, 2, 2, 2, 2, 2,
/*1*/ 2,XX, 2,XX,XX, 2,XX, 2,XX,XX, 2, 2,XX,XX,XX,XX,
/*2*/ 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
/*3*/ 4, 4, 4, 4, 4, 4, 4, 4,XX,XX, 5,10,XX, 9,XX,12,
@@ -499,7 +499,7 @@ const UINT8 m6800_cpu_device::cycles_nsc8105[256] =
/*8*/ 2,XX,XX, 2, 2, 2,XX, 2, 2, 2, 2,XX, 2,XX, 2, 2,
/*9*/ 2,XX,XX, 2, 2, 2,XX, 2, 2, 2, 2,XX, 2,XX, 2, 2,
/*A*/ 7,XX,XX, 7, 7, 7,XX, 7, 7, 7, 7,XX, 7, 4, 7, 7,
- /*B*/ 6,XX,XX, 6, 6, 6,XX, 6, 6, 6, 6,XX, 6, 3, 6, 6,
+ /*B*/ 6,XX,XX, 6, 6, 6,XX, 6, 6, 6, 6, 5, 6, 3, 6, 6,
/*C*/ 2, 2, 2,XX, 2, 2, 2, 3, 2, 2, 2, 2,XX, 3,XX, 4,
/*D*/ 3, 3, 3,XX, 3, 3, 3, 4, 3, 3, 3, 3,XX, 4,XX, 5,
/*E*/ 5, 5, 5,XX, 5, 5, 5, 6, 5, 5, 5, 5, 5, 6,XX, 7,
diff --git a/src/devices/cpu/m6800/m6800.h b/src/devices/cpu/m6800/m6800.h
index bb6055e8ad0..a096bd922cd 100644
--- a/src/devices/cpu/m6800/m6800.h
+++ b/src/devices/cpu/m6800/m6800.h
@@ -426,6 +426,8 @@ protected:
void cpx_im();
void cpx_ix();
void trap();
+ void ldax_imm();
+ void stax_imm();
};
diff --git a/src/devices/cpu/m68000/m68k_in.cpp b/src/devices/cpu/m68000/m68k_in.cpp
index 9bdc9558a83..df98a736226 100644
--- a/src/devices/cpu/m68000/m68k_in.cpp
+++ b/src/devices/cpu/m68000/m68k_in.cpp
@@ -81,7 +81,8 @@ must fix:
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
M68KMAKE_PROTOTYPE_HEADER
-
+// license:BSD-3-Clause
+// copyright-holders:Karl Stenerud
/* ======================================================================== */
/* ============================ OPCODE HANDLERS =========================== */
/* ======================================================================== */
@@ -139,7 +140,7 @@ static const opcode_handler_struct m68k_opcode_handler_table[] =
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
M68KMAKE_TABLE_FOOTER
- {0, 0, 0, {0, 0, 0, 0, 0}}
+ {nullptr, 0, 0, {0, 0, 0, 0, 0}}
};
@@ -2959,9 +2960,9 @@ M68KMAKE_OP(bfins, 32, ., .)
if((width + offset) > 32)
{
mask_byte = MASK_OUT_ABOVE_8(mask_base) << (8-offset);
- insert_byte = MASK_OUT_ABOVE_8(insert_base);
+ insert_byte = MASK_OUT_ABOVE_8(insert_base) << (8-offset);
data_byte = m68ki_read_8((mc68kcpu), ea+4);
- (mc68kcpu)->not_z_flag |= (data_byte & mask_byte);
+ (mc68kcpu)->not_z_flag |= (insert_byte & mask_byte);
m68ki_write_8((mc68kcpu), ea+4, (data_byte & ~mask_byte) | insert_byte);
}
return;
@@ -3315,7 +3316,7 @@ M68KMAKE_OP(callm, 32, ., .)
m68ki_trace_t0(mc68kcpu); /* auto-disable (see m68kcpu.h) */
REG_PC(mc68kcpu) += 2;
(void)ea; /* just to avoid an 'unused variable' warning */
- logerror("%s at %08x: called unimplemented instruction %04x (callm)\n",
+ mc68kcpu->logerror("%s at %08x: called unimplemented instruction %04x (callm)\n",
(mc68kcpu)->tag(), REG_PC(mc68kcpu) - 2, (mc68kcpu)->ir);
return;
}
@@ -4414,7 +4415,7 @@ M68KMAKE_OP(cpbcc, 32, ., .)
{
if(CPU_TYPE_IS_EC020_PLUS((mc68kcpu)->cpu_type))
{
- logerror("%s at %08x: called unimplemented instruction %04x (cpbcc)\n",
+ mc68kcpu->logerror("%s at %08x: called unimplemented instruction %04x (cpbcc)\n",
(mc68kcpu)->tag(), REG_PC(mc68kcpu) - 2, (mc68kcpu)->ir);
return;
}
@@ -4426,7 +4427,7 @@ M68KMAKE_OP(cpdbcc, 32, ., .)
{
if(CPU_TYPE_IS_EC020_PLUS((mc68kcpu)->cpu_type))
{
- logerror("%s at %08x: called unimplemented instruction %04x (cpdbcc)\n",
+ mc68kcpu->logerror("%s at %08x: called unimplemented instruction %04x (cpdbcc)\n",
(mc68kcpu)->tag(), REG_PC(mc68kcpu) - 2, (mc68kcpu)->ir);
return;
}
@@ -4438,7 +4439,7 @@ M68KMAKE_OP(cpgen, 32, ., .)
{
if(CPU_TYPE_IS_EC020_PLUS((mc68kcpu)->cpu_type) && (mc68kcpu->has_fpu || mc68kcpu->has_pmmu))
{
- logerror("%s at %08x: called unimplemented instruction %04x (cpgen)\n",
+ mc68kcpu->logerror("%s at %08x: called unimplemented instruction %04x (cpgen)\n",
(mc68kcpu)->tag(), REG_PC(mc68kcpu) - 2, (mc68kcpu)->ir);
return;
}
@@ -4450,7 +4451,7 @@ M68KMAKE_OP(cpscc, 32, ., .)
{
if(CPU_TYPE_IS_EC020_PLUS((mc68kcpu)->cpu_type))
{
- logerror("%s at %08x: called unimplemented instruction %04x (cpscc)\n",
+ mc68kcpu->logerror("%s at %08x: called unimplemented instruction %04x (cpscc)\n",
(mc68kcpu)->tag(), REG_PC(mc68kcpu) - 2, (mc68kcpu)->ir);
return;
}
@@ -4462,7 +4463,7 @@ M68KMAKE_OP(cptrapcc, 32, ., .)
{
if(CPU_TYPE_IS_EC020_PLUS((mc68kcpu)->cpu_type))
{
- logerror("%s at %08x: called unimplemented instruction %04x (cptrapcc)\n",
+ mc68kcpu->logerror("%s at %08x: called unimplemented instruction %04x (cptrapcc)\n",
(mc68kcpu)->tag(), REG_PC(mc68kcpu) - 2, (mc68kcpu)->ir);
return;
}
@@ -6827,7 +6828,7 @@ M68KMAKE_OP(movec, 32, rc, .)
(mc68kcpu)->cacr = REG_DA(mc68kcpu)[(word2 >> 12) & 15] & 0x0f;
}
-// logerror("movec to cacr=%04x\n", (mc68kcpu)->cacr);
+// mc68kcpu->logerror("movec to cacr=%04x\n", (mc68kcpu)->cacr);
if ((mc68kcpu)->cacr & (M68K_CACR_CI | M68K_CACR_CEI))
{
m68ki_ic_clear(mc68kcpu);
@@ -8239,7 +8240,7 @@ M68KMAKE_OP(pflusha, 32, ., .)
{
if ((CPU_TYPE_IS_EC020_PLUS((mc68kcpu)->cpu_type)) && ((mc68kcpu)->has_pmmu))
{
- logerror("68040: unhandled PFLUSHA (ir=%04x)\n", mc68kcpu->ir);
+ mc68kcpu->logerror("68040: unhandled PFLUSHA (ir=%04x)\n", mc68kcpu->ir);
return;
}
m68ki_exception_1111(mc68kcpu);
@@ -8249,7 +8250,7 @@ M68KMAKE_OP(pflushan, 32, ., .)
{
if ((CPU_TYPE_IS_EC020_PLUS((mc68kcpu)->cpu_type)) && ((mc68kcpu)->has_pmmu))
{
- logerror("68040: unhandled PFLUSHAN (ir=%04x)\n", mc68kcpu->ir);
+ mc68kcpu->logerror("68040: unhandled PFLUSHAN (ir=%04x)\n", mc68kcpu->ir);
return;
}
m68ki_exception_1111(mc68kcpu);
@@ -8271,7 +8272,7 @@ M68KMAKE_OP(ptest, 32, ., .)
{
if ((CPU_TYPE_IS_040_PLUS((mc68kcpu)->cpu_type)) && ((mc68kcpu)->has_pmmu))
{
- logerror("68040: unhandled PTEST\n");
+ mc68kcpu->logerror("68040: unhandled PTEST\n");
return;
}
else
@@ -9151,7 +9152,7 @@ M68KMAKE_OP(rtm, 32, ., .)
if(CPU_TYPE_IS_020_VARIANT((mc68kcpu)->cpu_type))
{
m68ki_trace_t0(mc68kcpu); /* auto-disable (see m68kcpu.h) */
- logerror("%s at %08x: called unimplemented instruction %04x (rtm)\n",
+ mc68kcpu->logerror("%s at %08x: called unimplemented instruction %04x (rtm)\n",
(mc68kcpu)->tag(), REG_PC(mc68kcpu) - 2, (mc68kcpu)->ir);
return;
}
@@ -10515,7 +10516,7 @@ M68KMAKE_OP(cinv, 32, ., .)
UINT16 ir = mc68kcpu->ir;
UINT8 cache = (ir >> 6) & 3;
// UINT8 scope = (ir >> 3) & 3;
-// 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);
+// 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);
switch (cache)
{
case 2:
@@ -10532,7 +10533,7 @@ M68KMAKE_OP(cpush, 32, ., .)
{
if(CPU_TYPE_IS_040_PLUS((mc68kcpu)->cpu_type))
{
- logerror("%s at %08x: called unimplemented instruction %04x (cpush)\n",
+ mc68kcpu->logerror("%s at %08x: called unimplemented instruction %04x (cpush)\n",
(mc68kcpu)->tag(), REG_PC(mc68kcpu) - 2, (mc68kcpu)->ir);
return;
}
diff --git a/src/devices/cpu/m68000/m68kcpu.cpp b/src/devices/cpu/m68000/m68kcpu.cpp
index dc7e0b14a6f..aaa1db079cf 100644
--- a/src/devices/cpu/m68000/m68kcpu.cpp
+++ b/src/devices/cpu/m68000/m68kcpu.cpp
@@ -1383,7 +1383,7 @@ UINT16 m68000_base_device::readword_d32_mmu(offs_t address)
UINT32 address0 = pmmu_translate_addr(this, address);
if (mmu_tmp_buserror_occurred) {
return ~0;
- } else if (!(address & 1)) {
+ } else if (WORD_ALIGNED(address)) {
return m_space->read_word(address0);
} else {
UINT32 address1 = pmmu_translate_addr(this, address + 1);
@@ -1396,7 +1396,7 @@ UINT16 m68000_base_device::readword_d32_mmu(offs_t address)
}
}
- if (!(address & 1))
+ if (WORD_ALIGNED(address))
return m_space->read_word(address);
result = m_space->read_byte(address) << 8;
return result | m_space->read_byte(address + 1);
@@ -1410,7 +1410,7 @@ void m68000_base_device::writeword_d32_mmu(offs_t address, UINT16 data)
UINT32 address0 = pmmu_translate_addr(this, address);
if (mmu_tmp_buserror_occurred) {
return;
- } else if (!(address & 1)) {
+ } else if (WORD_ALIGNED(address)) {
m_space->write_word(address0, data);
return;
} else {
@@ -1425,7 +1425,7 @@ void m68000_base_device::writeword_d32_mmu(offs_t address, UINT16 data)
}
}
- if (!(address & 1))
+ if (WORD_ALIGNED(address))
{
m_space->write_word(address, data);
return;
@@ -1447,13 +1447,13 @@ UINT32 m68000_base_device::readlong_d32_mmu(offs_t address)
} else if ((address +3) & 0xfc) {
// not at page boundary; use default code
address = address0;
- } else if (!(address & 3)) { // 0
+ } else if (DWORD_ALIGNED(address)) { // 0
return m_space->read_dword(address0);
} else {
UINT32 address2 = pmmu_translate_addr(this, address+2);
if (mmu_tmp_buserror_occurred) {
return ~0;
- } else if (!(address & 1)) { // 2
+ } else if (WORD_ALIGNED(address)) { // 2
result = m_space->read_word(address0) << 16;
return result | m_space->read_word(address2);
} else {
@@ -1470,9 +1470,9 @@ UINT32 m68000_base_device::readlong_d32_mmu(offs_t address)
}
}
- if (!(address & 3))
+ if (DWORD_ALIGNED(address))
return m_space->read_dword(address);
- else if (!(address & 1))
+ else if (WORD_ALIGNED(address))
{
result = m_space->read_word(address) << 16;
return result | m_space->read_word(address + 2);
@@ -1493,14 +1493,14 @@ void m68000_base_device::writelong_d32_mmu(offs_t address, UINT32 data)
} else if ((address +3) & 0xfc) {
// not at page boundary; use default code
address = address0;
- } else if (!(address & 3)) { // 0
+ } else if (DWORD_ALIGNED(address)) { // 0
m_space->write_dword(address0, data);
return;
} else {
UINT32 address2 = pmmu_translate_addr(this, address+2);
if (mmu_tmp_buserror_occurred) {
return;
- } else if (!(address & 1)) { // 2
+ } else if (WORD_ALIGNED(address)) { // 2
m_space->write_word(address0, data >> 16);
m_space->write_word(address2, data);
return;
@@ -1519,12 +1519,12 @@ void m68000_base_device::writelong_d32_mmu(offs_t address, UINT32 data)
}
}
- if (!(address & 3))
+ if (DWORD_ALIGNED(address))
{
m_space->write_dword(address, data);
return;
}
- else if (!(address & 1))
+ else if (WORD_ALIGNED(address))
{
m_space->write_word(address, data >> 16);
m_space->write_word(address + 2, data);
@@ -1594,7 +1594,7 @@ UINT16 m68000_base_device::readword_d32_hmmu(offs_t address)
address = hmmu_translate_addr(this, address);
}
- if (!(address & 1))
+ if (WORD_ALIGNED(address))
return m_space->read_word(address);
result = m_space->read_byte(address) << 8;
return result | m_space->read_byte(address + 1);
@@ -1608,7 +1608,7 @@ void m68000_base_device::writeword_d32_hmmu(offs_t address, UINT16 data)
address = hmmu_translate_addr(this, address);
}
- if (!(address & 1))
+ if (WORD_ALIGNED(address))
{
m_space->write_word(address, data);
return;
@@ -1627,9 +1627,9 @@ UINT32 m68000_base_device::readlong_d32_hmmu(offs_t address)
address = hmmu_translate_addr(this, address);
}
- if (!(address & 3))
+ if (DWORD_ALIGNED(address))
return m_space->read_dword(address);
- else if (!(address & 1))
+ else if (WORD_ALIGNED(address))
{
result = m_space->read_word(address) << 16;
return result | m_space->read_word(address + 2);
@@ -1647,12 +1647,12 @@ void m68000_base_device::writelong_d32_hmmu(offs_t address, UINT32 data)
address = hmmu_translate_addr(this, address);
}
- if (!(address & 3))
+ if (DWORD_ALIGNED(address))
{
m_space->write_dword(address, data);
return;
}
- else if (!(address & 1))
+ else if (WORD_ALIGNED(address))
{
m_space->write_word(address, data >> 16);
m_space->write_word(address + 2, data);
diff --git a/src/devices/cpu/m68000/m68kcpu.h b/src/devices/cpu/m68000/m68kcpu.h
index 5cec889e002..7860298988f 100644
--- a/src/devices/cpu/m68000/m68kcpu.h
+++ b/src/devices/cpu/m68000/m68kcpu.h
@@ -626,7 +626,7 @@ static inline unsigned int m68k_read_pcrelative_8(m68000_base_device *m68k, unsi
static inline unsigned int m68k_read_pcrelative_16(m68000_base_device *m68k, unsigned int address)
{
- if(address & 1)
+ if (!WORD_ALIGNED(address))
return
(m68k->readimm16(address-1) << 8) |
(m68k->readimm16(address+1) >> 8);
@@ -638,7 +638,7 @@ static inline unsigned int m68k_read_pcrelative_16(m68000_base_device *m68k, uns
static inline unsigned int m68k_read_pcrelative_32(m68000_base_device *m68k, unsigned int address)
{
- if(address & 1)
+ if (!WORD_ALIGNED(address))
return
(m68k->readimm16(address-1) << 24) |
(m68k->readimm16(address+1) << 8) |
diff --git a/src/devices/cpu/m68000/m68kmake.cpp b/src/devices/cpu/m68000/m68kmake.cpp
index 9b732dbec59..941ae23f0aa 100644
--- a/src/devices/cpu/m68000/m68kmake.cpp
+++ b/src/devices/cpu/m68000/m68kmake.cpp
@@ -92,9 +92,9 @@ static const char g_version[] = "4.90";
#define MAX_OPCODE_OUTPUT_TABLE_LENGTH 3000 /* Max length of opcode handler tbl */
/* Default filenames */
-#define FILENAME_INPUT "m68k_in.c"
+#define FILENAME_INPUT "m68k_in.cpp"
#define FILENAME_PROTOTYPE "m68kops.h"
-#define FILENAME_TABLE "m68kops.c"
+#define FILENAME_TABLE "m68kops.cpp"
/* Identifier sequences recognized by this program */
@@ -670,7 +670,7 @@ static opcode_struct* find_opcode(char* name, int size, char* spec_proc, char* s
opcode_struct* op;
- for(op = g_opcode_input_table;op->name != nullptr;op++)
+ for(op = g_opcode_input_table;op->name[0] != 0;op++)
{
if( strcmp(name, op->name) == 0 &&
(size == op->size) &&
diff --git a/src/devices/cpu/m68000/m68kops.cpp b/src/devices/cpu/m68000/m68kops.cpp
deleted file mode 100644
index e3884c55195..00000000000
--- a/src/devices/cpu/m68000/m68kops.cpp
+++ /dev/null
@@ -1,34874 +0,0 @@
-#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);
-
-/* ======================================================================== */
-/* ========================= INSTRUCTION HANDLERS ========================= */
-/* ======================================================================== */
-
-
-void m68000_base_device_ops::m68k_op_1010(m68000_base_device* mc68kcpu)
-{
- m68ki_exception_1010(mc68kcpu);
-}
-
-
-void m68000_base_device_ops::m68k_op_1111(m68000_base_device* mc68kcpu)
-{
- m68ki_exception_1111(mc68kcpu);
-}
-
-
-void m68000_base_device_ops::m68k_op_040fpu0_32(m68000_base_device* mc68kcpu)
-{
- if((mc68kcpu)->has_fpu)
- {
- m68040_fpu_op0(mc68kcpu);
- return;
- }
- m68ki_exception_1111(mc68kcpu);
-}
-
-
-void m68000_base_device_ops::m68k_op_040fpu1_32(m68000_base_device* mc68kcpu)
-{
- if((mc68kcpu)->has_fpu)
- {
- m68040_fpu_op1(mc68kcpu);
- return;
- }
- m68ki_exception_1111(mc68kcpu);
-}
-
-
-void m68000_base_device_ops::m68k_op_abcd_8_rr(m68000_base_device* mc68kcpu)
-{
- UINT32* r_dst = &DX(mc68kcpu);
- UINT32 src = DY(mc68kcpu);
- UINT32 dst = *r_dst;
- UINT32 res = LOW_NIBBLE(src) + LOW_NIBBLE(dst) + XFLAG_AS_1(mc68kcpu);
-
- (mc68kcpu)->v_flag = ~res; /* Undefined V behavior */
-
- if(res > 9)
- res += 6;
- res += HIGH_NIBBLE(src) + HIGH_NIBBLE(dst);
- (mc68kcpu)->x_flag = (mc68kcpu)->c_flag = (res > 0x99) << 8;
- if((mc68kcpu)->c_flag)
- res -= 0xa0;
-
- (mc68kcpu)->v_flag &= res; /* Undefined V behavior part II */
- (mc68kcpu)->n_flag = NFLAG_8(res); /* Undefined N behavior */
-
- res = MASK_OUT_ABOVE_8(res);
- (mc68kcpu)->not_z_flag |= res;
-
- *r_dst = MASK_OUT_BELOW_8(*r_dst) | res;
-}
-
-
-void m68000_base_device_ops::m68k_op_abcd_8_mm_ax7(m68000_base_device* mc68kcpu)
-{
- UINT32 src = OPER_AY_PD_8(mc68kcpu);
- UINT32 ea = EA_A7_PD_8(mc68kcpu);
- UINT32 dst = m68ki_read_8((mc68kcpu), ea);
- UINT32 res = LOW_NIBBLE(src) + LOW_NIBBLE(dst) + XFLAG_AS_1(mc68kcpu);
-
- (mc68kcpu)->v_flag = ~res; /* Undefined V behavior */
-
- if(res > 9)
- res += 6;
- res += HIGH_NIBBLE(src) + HIGH_NIBBLE(dst);
- (mc68kcpu)->x_flag = (mc68kcpu)->c_flag = (res > 0x99) << 8;
- if((mc68kcpu)->c_flag)
- res -= 0xa0;
-
- (mc68kcpu)->v_flag &= res; /* Undefined V behavior part II */
- (mc68kcpu)->n_flag = NFLAG_8(res); /* Undefined N behavior */
-
- res = MASK_OUT_ABOVE_8(res);
- (mc68kcpu)->not_z_flag |= res;
-
- m68ki_write_8((mc68kcpu), ea, res);
-}
-
-
-void m68000_base_device_ops::m68k_op_abcd_8_mm_ay7(m68000_base_device* mc68kcpu)
-{
- UINT32 src = OPER_A7_PD_8(mc68kcpu);
- UINT32 ea = EA_AX_PD_8(mc68kcpu);
- UINT32 dst = m68ki_read_8((mc68kcpu), ea);
- UINT32 res = LOW_NIBBLE(src) + LOW_NIBBLE(dst) + XFLAG_AS_1(mc68kcpu);
-
- (mc68kcpu)->v_flag = ~res; /* Undefined V behavior */
-
- if(res > 9)
- res += 6;
- res += HIGH_NIBBLE(src) + HIGH_NIBBLE(dst);
- (mc68kcpu)->x_flag = (mc68kcpu)->c_flag = (res > 0x99) << 8;
- if((mc68kcpu)->c_flag)
- res -= 0xa0;
-
- (mc68kcpu)->v_flag &= res; /* Undefined V behavior part II */
- (mc68kcpu)->n_flag = NFLAG_8(res); /* Undefined N behavior */
-
- res = MASK_OUT_ABOVE_8(res);
- (mc68kcpu)->not_z_flag |= res;
-
- m68ki_write_8((mc68kcpu), ea, res);
-}
-
-
-void m68000_base_device_ops::m68k_op_abcd_8_mm_axy7(m68000_base_device* mc68kcpu)
-{
- UINT32 src = OPER_A7_PD_8(mc68kcpu);
- UINT32 ea = EA_A7_PD_8(mc68kcpu);
- UINT32 dst = m68ki_read_8((mc68kcpu), ea);
- UINT32 res = LOW_NIBBLE(src) + LOW_NIBBLE(dst) + XFLAG_AS_1(mc68kcpu);
-
- (mc68kcpu)->v_flag = ~res; /* Undefined V behavior */
-
- if(res > 9)
- res += 6;
- res += HIGH_NIBBLE(src) + HIGH_NIBBLE(dst);
- (mc68kcpu)->x_flag = (mc68kcpu)->c_flag = (res > 0x99) << 8;
- if((mc68kcpu)->c_flag)
- res -= 0xa0;
-
- (mc68kcpu)->v_flag &= res; /* Undefined V behavior part II */
- (mc68kcpu)->n_flag = NFLAG_8(res); /* Undefined N behavior */
-
- res = MASK_OUT_ABOVE_8(res);
- (mc68kcpu)->not_z_flag |= res;
-
- m68ki_write_8((mc68kcpu), ea, res);
-}
-
-
-void m68000_base_device_ops::m68k_op_abcd_8_mm(m68000_base_device* mc68kcpu)
-{
- UINT32 src = OPER_AY_PD_8(mc68kcpu);
- UINT32 ea = EA_AX_PD_8(mc68kcpu);
- UINT32 dst = m68ki_read_8((mc68kcpu), ea);
- UINT32 res = LOW_NIBBLE(src) + LOW_NIBBLE(dst) + XFLAG_AS_1(mc68kcpu);
-
- (mc68kcpu)->v_flag = ~res; /* Undefined V behavior */
-
- if(res > 9)
- res += 6;
- res += HIGH_NIBBLE(src) + HIGH_NIBBLE(dst);
- (mc68kcpu)->x_flag = (mc68kcpu)->c_flag = (res > 0x99) << 8;
- if((mc68kcpu)->c_flag)
- res -= 0xa0;
-
- (mc68kcpu)->v_flag &= res; /* Undefined V behavior part II */
- (mc68kcpu)->n_flag = NFLAG_8(res); /* Undefined N behavior */
-
- res = MASK_OUT_ABOVE_8(res);
- (mc68kcpu)->not_z_flag |= res;
-
- m68ki_write_8((mc68kcpu), ea, res);
-}
-
-
-void m68000_base_device_ops::m68k_op_add_8_er_d(m68000_base_device* mc68kcpu)
-{
- UINT32* r_dst = &DX(mc68kcpu);
- UINT32 src = MASK_OUT_ABOVE_8(DY(mc68kcpu));
- UINT32 dst = MASK_OUT_ABOVE_8(*r_dst);
- UINT32 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);
-
- *r_dst = MASK_OUT_BELOW_8(*r_dst) | (mc68kcpu)->not_z_flag;
-}
-
-
-void m68000_base_device_ops::m68k_op_add_8_er_ai(m68000_base_device* mc68kcpu)
-{
- UINT32* r_dst = &DX(mc68kcpu);
- UINT32 src = OPER_AY_AI_8(mc68kcpu);
- UINT32 dst = MASK_OUT_ABOVE_8(*r_dst);
- UINT32 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);
-
- *r_dst = MASK_OUT_BELOW_8(*r_dst) | (mc68kcpu)->not_z_flag;
-}
-
-
-void m68000_base_device_ops::m68k_op_add_8_er_pi(m68000_base_device* mc68kcpu)
-{
- UINT32* r_dst = &DX(mc68kcpu);
- UINT32 src = OPER_AY_PI_8(mc68kcpu);
- UINT32 dst = MASK_OUT_ABOVE_8(*r_dst);
- UINT32 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);
-
- *r_dst = MASK_OUT_BELOW_8(*r_dst) | (mc68kcpu)->not_z_flag;
-}
-
-
-void m68000_base_device_ops::m68k_op_add_8_er_pi7(m68000_base_device* mc68kcpu)
-{
- UINT32* r_dst = &DX(mc68kcpu);
- UINT32 src = OPER_A7_PI_8(mc68kcpu);
- UINT32 dst = MASK_OUT_ABOVE_8(*r_dst);
- UINT32 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);
-
- *r_dst = MASK_OUT_BELOW_8(*r_dst) | (mc68kcpu)->not_z_flag;
-}
-
-
-void m68000_base_device_ops::m68k_op_add_8_er_pd(m68000_base_device* mc68kcpu)
-{
- UINT32* r_dst = &DX(mc68kcpu);
- UINT32 src = OPER_AY_PD_8(mc68kcpu);
- UINT32 dst = MASK_OUT_ABOVE_8(*r_dst);
- UINT32 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);
-
- *r_dst = MASK_OUT_BELOW_8(*r_dst) | (mc68kcpu)->not_z_flag;
-}
-
-
-void m68000_base_device_ops::m68k_op_add_8_er_pd7(m68000_base_device* mc68kcpu)
-{
- UINT32* r_dst = &DX(mc68kcpu);
- UINT32 src = OPER_A7_PD_8(mc68kcpu);
- UINT32 dst = MASK_OUT_ABOVE_8(*r_dst);
- UINT32 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);
-
- *r_dst = MASK_OUT_BELOW_8(*r_dst) | (mc68kcpu)->not_z_flag;
-}
-
-
-void m68000_base_device_ops::m68k_op_add_8_er_di(m68000_base_device* mc68kcpu)
-{
- UINT32* r_dst = &DX(mc68kcpu);
- UINT32 src = OPER_AY_DI_8(mc68kcpu);
- UINT32 dst = MASK_OUT_ABOVE_8(*r_dst);
- UINT32 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);
-
- *r_dst = MASK_OUT_BELOW_8(*r_dst) | (mc68kcpu)->not_z_flag;
-}
-
-
-void m68000_base_device_ops::m68k_op_add_8_er_ix(m68000_base_device* mc68kcpu)
-{
- UINT32* r_dst = &DX(mc68kcpu);
- UINT32 src = OPER_AY_IX_8(mc68kcpu);
- UINT32 dst = MASK_OUT_ABOVE_8(*r_dst);
- UINT32 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);
-
- *r_dst = MASK_OUT_BELOW_8(*r_dst) | (mc68kcpu)->not_z_flag;
-}
-
-
-void m68000_base_device_ops::m68k_op_add_8_er_aw(m68000_base_device* mc68kcpu)
-{
- UINT32* r_dst = &DX(mc68kcpu);
- UINT32 src = OPER_AW_8(mc68kcpu);
- UINT32 dst = MASK_OUT_ABOVE_8(*r_dst);
- UINT32 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);
-
- *r_dst = MASK_OUT_BELOW_8(*r_dst) | (mc68kcpu)->not_z_flag;
-}
-
-
-void m68000_base_device_ops::m68k_op_add_8_er_al(m68000_base_device* mc68kcpu)
-{
- UINT32* r_dst = &DX(mc68kcpu);
- UINT32 src = OPER_AL_8(mc68kcpu);
- UINT32 dst = MASK_OUT_ABOVE_8(*r_dst);
- UINT32 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);
-
- *r_dst = MASK_OUT_BELOW_8(*r_dst) | (mc68kcpu)->not_z_flag;
-}
-
-
-void m68000_base_device_ops::m68k_op_add_8_er_pcdi(m68000_base_device* mc68kcpu)
-{
- UINT32* r_dst = &DX(mc68kcpu);
- UINT32 src = OPER_PCDI_8(mc68kcpu);
- UINT32 dst = MASK_OUT_ABOVE_8(*r_dst);
- UINT32 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);
-
- *r_dst = MASK_OUT_BELOW_8(*r_dst) | (mc68kcpu)->not_z_flag;
-}
-
-
-void m68000_base_device_ops::m68k_op_add_8_er_pcix(m68000_base_device* mc68kcpu)
-{
- UINT32* r_dst = &DX(mc68kcpu);
- UINT32 src = OPER_PCIX_8(mc68kcpu);
- UINT32 dst = MASK_OUT_ABOVE_8(*r_dst);
- UINT32 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);
-
- *r_dst = MASK_OUT_BELOW_8(*r_dst) | (mc68kcpu)->not_z_flag;
-}
-
-
-void m68000_base_device_ops::m68k_op_add_8_er_i(m68000_base_device* mc68kcpu)
-{
- UINT32* r_dst = &DX(mc68kcpu);
- UINT32 src = OPER_I_8(mc68kcpu);
- UINT32 dst = MASK_OUT_ABOVE_8(*r_dst);
- UINT32 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);
-
- *r_dst = MASK_OUT_BELOW_8(*r_dst) | (mc68kcpu)->not_z_flag;
-}
-
-
-void m68000_base_device_ops::m68k_op_add_16_er_d(m68000_base_device* mc68kcpu)
-{
- UINT32* r_dst = &DX(mc68kcpu);
- UINT32 src = MASK_OUT_ABOVE_16(DY(mc68kcpu));
- UINT32 dst = MASK_OUT_ABOVE_16(*r_dst);
- UINT32 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);
-
- *r_dst = MASK_OUT_BELOW_16(*r_dst) | (mc68kcpu)->not_z_flag;
-}
-
-
-void m68000_base_device_ops::m68k_op_add_16_er_a(m68000_base_device* mc68kcpu)
-{
- UINT32* r_dst = &DX(mc68kcpu);
- UINT32 src = MASK_OUT_ABOVE_16(AY(mc68kcpu));
- UINT32 dst = MASK_OUT_ABOVE_16(*r_dst);
- UINT32 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);
-
- *r_dst = MASK_OUT_BELOW_16(*r_dst) | (mc68kcpu)->not_z_flag;
-}
-
-
-void m68000_base_device_ops::m68k_op_add_16_er_ai(m68000_base_device* mc68kcpu)
-{
- UINT32* r_dst = &DX(mc68kcpu);
- UINT32 src = OPER_AY_AI_16(mc68kcpu);
- UINT32 dst = MASK_OUT_ABOVE_16(*r_dst);
- UINT32 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);
-
- *r_dst = MASK_OUT_BELOW_16(*r_dst) | (mc68kcpu)->not_z_flag;
-}
-
-
-void m68000_base_device_ops::m68k_op_add_16_er_pi(m68000_base_device* mc68kcpu)
-{
- UINT32* r_dst = &DX(mc68kcpu);
- UINT32 src = OPER_AY_PI_16(mc68kcpu);
- UINT32 dst = MASK_OUT_ABOVE_16(*r_dst);
- UINT32 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);
-
- *r_dst = MASK_OUT_BELOW_16(*r_dst) | (mc68kcpu)->not_z_flag;
-}
-
-
-void m68000_base_device_ops::m68k_op_add_16_er_pd(m68000_base_device* mc68kcpu)
-{
- UINT32* r_dst = &DX(mc68kcpu);
- UINT32 src = OPER_AY_PD_16(mc68kcpu);
- UINT32 dst = MASK_OUT_ABOVE_16(*r_dst);
- UINT32 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);
-
- *r_dst = MASK_OUT_BELOW_16(*r_dst) | (mc68kcpu)->not_z_flag;
-}
-
-
-void m68000_base_device_ops::m68k_op_add_16_er_di(m68000_base_device* mc68kcpu)
-{
- UINT32* r_dst = &DX(mc68kcpu);
- UINT32 src = OPER_AY_DI_16(mc68kcpu);
- UINT32 dst = MASK_OUT_ABOVE_16(*r_dst);
- UINT32 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);
-
- *r_dst = MASK_OUT_BELOW_16(*r_dst) | (mc68kcpu)->not_z_flag;
-}
-
-
-void m68000_base_device_ops::m68k_op_add_16_er_ix(m68000_base_device* mc68kcpu)
-{
- UINT32* r_dst = &DX(mc68kcpu);
- UINT32 src = OPER_AY_IX_16(mc68kcpu);
- UINT32 dst = MASK_OUT_ABOVE_16(*r_dst);
- UINT32 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);
-
- *r_dst = MASK_OUT_BELOW_16(*r_dst) | (mc68kcpu)->not_z_flag;
-}
-
-
-void m68000_base_device_ops::m68k_op_add_16_er_aw(m68000_base_device* mc68kcpu)
-{
- UINT32* r_dst = &DX(mc68kcpu);
- UINT32 src = OPER_AW_16(mc68kcpu);
- UINT32 dst = MASK_OUT_ABOVE_16(*r_dst);
- UINT32 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);
-
- *r_dst = MASK_OUT_BELOW_16(*r_dst) | (mc68kcpu)->not_z_flag;
-}
-
-
-void m68000_base_device_ops::m68k_op_add_16_er_al(m68000_base_device* mc68kcpu)
-{
- UINT32* r_dst = &DX(mc68kcpu);
- UINT32 src = OPER_AL_16(mc68kcpu);
- UINT32 dst = MASK_OUT_ABOVE_16(*r_dst);
- UINT32 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);
-
- *r_dst = MASK_OUT_BELOW_16(*r_dst) | (mc68kcpu)->not_z_flag;
-}
-
-
-void m68000_base_device_ops::m68k_op_add_16_er_pcdi(m68000_base_device* mc68kcpu)
-{
- UINT32* r_dst = &DX(mc68kcpu);
- UINT32 src = OPER_PCDI_16(mc68kcpu);
- UINT32 dst = MASK_OUT_ABOVE_16(*r_dst);
- UINT32 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);
-
- *r_dst = MASK_OUT_BELOW_16(*r_dst) | (mc68kcpu)->not_z_flag;
-}
-
-
-void m68000_base_device_ops::m68k_op_add_16_er_pcix(m68000_base_device* mc68kcpu)
-{
- UINT32* r_dst = &DX(mc68kcpu);
- UINT32 src = OPER_PCIX_16(mc68kcpu);
- UINT32 dst = MASK_OUT_ABOVE_16(*r_dst);
- UINT32 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);
-
- *r_dst = MASK_OUT_BELOW_16(*r_dst) | (mc68kcpu)->not_z_flag;
-}
-
-
-void m68000_base_device_ops::m68k_op_add_16_er_i(m68000_base_device* mc68kcpu)
-{
- UINT32* r_dst = &DX(mc68kcpu);
- UINT32 src = OPER_I_16(mc68kcpu);
- UINT32 dst = MASK_OUT_ABOVE_16(*r_dst);
- UINT32 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);
-
- *r_dst = MASK_OUT_BELOW_16(*r_dst) | (mc68kcpu)->not_z_flag;
-}
-
-
-void m68000_base_device_ops::m68k_op_add_32_er_d(m68000_base_device* mc68kcpu)
-{
- UINT32* r_dst = &DX(mc68kcpu);
- UINT32 src = DY(mc68kcpu);
- UINT32 dst = *r_dst;
- UINT32 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);
-
- *r_dst = (mc68kcpu)->not_z_flag;
-}
-
-
-void m68000_base_device_ops::m68k_op_add_32_er_a(m68000_base_device* mc68kcpu)
-{
- UINT32* r_dst = &DX(mc68kcpu);
- UINT32 src = AY(mc68kcpu);
- UINT32 dst = *r_dst;
- UINT32 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);
-
- *r_dst = (mc68kcpu)->not_z_flag;
-}
-
-
-void m68000_base_device_ops::m68k_op_add_32_er_ai(m68000_base_device* mc68kcpu)
-{
- UINT32* r_dst = &DX(mc68kcpu);
- UINT32 src = OPER_AY_AI_32(mc68kcpu);
- UINT32 dst = *r_dst;
- UINT32 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);
-
- *r_dst = (mc68kcpu)->not_z_flag;
-}
-
-
-void m68000_base_device_ops::m68k_op_add_32_er_pi(m68000_base_device* mc68kcpu)
-{
- UINT32* r_dst = &DX(mc68kcpu);
- UINT32 src = OPER_AY_PI_32(mc68kcpu);
- UINT32 dst = *r_dst;
- UINT32 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);
-
- *r_dst = (mc68kcpu)->not_z_flag;
-}
-
-
-void m68000_base_device_ops::m68k_op_add_32_er_pd(m68000_base_device* mc68kcpu)
-{
- UINT32* r_dst = &DX(mc68kcpu);
- UINT32 src = OPER_AY_PD_32(mc68kcpu);
- UINT32 dst = *r_dst;
- UINT32 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);
-
- *r_dst = (mc68kcpu)->not_z_flag;
-}
-
-
-void m68000_base_device_ops::m68k_op_add_32_er_di(m68000_base_device* mc68kcpu)
-{
- UINT32* r_dst = &DX(mc68kcpu);
- UINT32 src = OPER_AY_DI_32(mc68kcpu);
- UINT32 dst = *r_dst;
- UINT32 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);
-
- *r_dst = (mc68kcpu)->not_z_flag;
-}
-
-
-void m68000_base_device_ops::m68k_op_add_32_er_ix(m68000_base_device* mc68kcpu)
-{
- UINT32* r_dst = &DX(mc68kcpu);
- UINT32 src = OPER_AY_IX_32(mc68kcpu);
- UINT32 dst = *r_dst;
- UINT32 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);
-
- *r_dst = (mc68kcpu)->not_z_flag;
-}
-
-
-void m68000_base_device_ops::m68k_op_add_32_er_aw(m68000_base_device* mc68kcpu)
-{
- UINT32* r_dst = &DX(mc68kcpu);
- UINT32 src = OPER_AW_32(mc68kcpu);
- UINT32 dst = *r_dst;
- UINT32 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);
-
- *r_dst = (mc68kcpu)->not_z_flag;
-}
-
-
-void m68000_base_device_ops::m68k_op_add_32_er_al(m68000_base_device* mc68kcpu)
-{
- UINT32* r_dst = &DX(mc68kcpu);
- UINT32 src = OPER_AL_32(mc68kcpu);
- UINT32 dst = *r_dst;
- UINT32 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);
-
- *r_dst = (mc68kcpu)->not_z_flag;
-}
-
-
-void m68000_base_device_ops::m68k_op_add_32_er_pcdi(m68000_base_device* mc68kcpu)
-{
- UINT32* r_dst = &DX(mc68kcpu);
- UINT32 src = OPER_PCDI_32(mc68kcpu);
- UINT32 dst = *r_dst;
- UINT32 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);
-
- *r_dst = (mc68kcpu)->not_z_flag;
-}
-
-
-void m68000_base_device_ops::m68k_op_add_32_er_pcix(m68000_base_device* mc68kcpu)
-{
- UINT32* r_dst = &DX(mc68kcpu);
- UINT32 src = OPER_PCIX_32(mc68kcpu);
- UINT32 dst = *r_dst;
- UINT32 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);
-
- *r_dst = (mc68kcpu)->not_z_flag;
-}
-
-
-void m68000_base_device_ops::m68k_op_add_32_er_i(m68000_base_device* mc68kcpu)
-{
- UINT32* r_dst = &DX(mc68kcpu);
- UINT32 src = OPER_I_32(mc68kcpu);
- UINT32 dst = *r_dst;
- UINT32 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);
-
- *r_dst = (mc68kcpu)->not_z_flag;
-}
-
-
-void m68000_base_device_ops::m68k_op_add_8_re_ai(m68000_base_device* mc68kcpu)
-{
- UINT32 ea = EA_AY_AI_8(mc68kcpu);
- UINT32 src = MASK_OUT_ABOVE_8(DX(mc68kcpu));
- UINT32 dst = m68ki_read_8((mc68kcpu), ea);
- UINT32 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);
-
- m68ki_write_8((mc68kcpu), ea, (mc68kcpu)->not_z_flag);
-}
-
-
-void m68000_base_device_ops::m68k_op_add_8_re_pi(m68000_base_device* mc68kcpu)
-{
- UINT32 ea = EA_AY_PI_8(mc68kcpu);
- UINT32 src = MASK_OUT_ABOVE_8(DX(mc68kcpu));
- UINT32 dst = m68ki_read_8((mc68kcpu), ea);
- UINT32 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);
-
- m68ki_write_8((mc68kcpu), ea, (mc68kcpu)->not_z_flag);
-}
-
-
-void m68000_base_device_ops::m68k_op_add_8_re_pi7(m68000_base_device* mc68kcpu)
-{
- UINT32 ea = EA_A7_PI_8(mc68kcpu);
- UINT32 src = MASK_OUT_ABOVE_8(DX(mc68kcpu));
- UINT32 dst = m68ki_read_8((mc68kcpu), ea);
- UINT32 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);
-
- m68ki_write_8((mc68kcpu), ea, (mc68kcpu)->not_z_flag);
-}
-
-
-void m68000_base_device_ops::m68k_op_add_8_re_pd(m68000_base_device* mc68kcpu)
-{
- UINT32 ea = EA_AY_PD_8(mc68kcpu);
- UINT32 src = MASK_OUT_ABOVE_8(DX(mc68kcpu));
- UINT32 dst = m68ki_read_8((mc68kcpu), ea);
- UINT32 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);
-
- m68ki_write_8((mc68kcpu), ea, (mc68kcpu)->not_z_flag);
-}
-
-
-void m68000_base_device_ops::m68k_op_add_8_re_pd7(m68000_base_device* mc68kcpu)
-{
- UINT32 ea = EA_A7_PD_8(mc68kcpu);
- UINT32 src = MASK_OUT_ABOVE_8(DX(mc68kcpu));
- UINT32 dst = m68ki_read_8((mc68kcpu), ea);
- UINT32 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);
-
- m68ki_write_8((mc68kcpu), ea, (mc68kcpu)->not_z_flag);
-}
-
-
-void m68000_base_device_ops::m68k_op_add_8_re_di(m68000_base_device* mc68kcpu)
-{
- UINT32 ea = EA_AY_DI_8(mc68kcpu);
- UINT32 src = MASK_OUT_ABOVE_8(DX(mc68kcpu));
- UINT32 dst = m68ki_read_8((mc68kcpu), ea);
- UINT32 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);
-
- m68ki_write_8((mc68kcpu), ea, (mc68kcpu)->not_z_flag);
-}
-
-
-void m68000_base_device_ops::m68k_op_add_8_re_ix(m68000_base_device* mc68kcpu)
-{
- UINT32 ea = EA_AY_IX_8(mc68kcpu);
- UINT32 src = MASK_OUT_ABOVE_8(DX(mc68kcpu));
- UINT32 dst = m68ki_read_8((mc68kcpu), ea);
- UINT32 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);
-
- m68ki_write_8((mc68kcpu), ea, (mc68kcpu)->not_z_flag);
-}
-
-
-void m68000_base_device_ops::m68k_op_add_8_re_aw(m68000_base_device* mc68kcpu)
-{
- UINT32 ea = EA_AW_8(mc68kcpu);
- UINT32 src = MASK_OUT_ABOVE_8(DX(mc68kcpu));
- UINT32 dst = m68ki_read_8((mc68kcpu), ea);
- UINT32 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);
-
- m68ki_write_8((mc68kcpu), ea, (mc68kcpu)->not_z_flag);
-}
-
-
-void m68000_base_device_ops::m68k_op_add_8_re_al(m68000_base_device* mc68kcpu)
-{
- UINT32 ea = EA_AL_8(mc68kcpu);
- UINT32 src = MASK_OUT_ABOVE_8(DX(mc68kcpu));
- UINT32 dst = m68ki_read_8((mc68kcpu), ea);
- UINT32 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);
-
- m68ki_write_8((mc68kcpu), ea, (mc68kcpu)->not_z_flag);
-}
-
-
-void m68000_base_device_ops::m68k_op_add_16_re_ai(m68000_base_device* mc68kcpu)
-{
- UINT32 ea = EA_AY_AI_16(mc68kcpu);
- UINT32 src = MASK_OUT_ABOVE_16(DX(mc68kcpu));
- UINT32 dst = m68ki_read_16((mc68kcpu), ea);
- UINT32 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);
-
- m68ki_write_16((mc68kcpu), ea, (mc68kcpu)->not_z_flag);
-}
-
-
-void m68000_base_device_ops::m68k_op_add_16_re_pi(m68000_base_device* mc68kcpu)
-{
- UINT32 ea = EA_AY_PI_16(mc68kcpu);
- UINT32 src = MASK_OUT_ABOVE_16(DX(mc68kcpu));
- UINT32 dst = m68ki_read_16((mc68kcpu), ea);
- UINT32 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);
-
- m68ki_write_16((mc68kcpu), ea, (mc68kcpu)->not_z_flag);
-}
-
-
-void m68000_base_device_ops::m68k_op_add_16_re_pd(m68000_base_device* mc68kcpu)
-{
- UINT32 ea = EA_AY_PD_16(mc68kcpu);
- UINT32 src = MASK_OUT_ABOVE_16(DX(mc68kcpu));
- UINT32 dst = m68ki_read_16((mc68kcpu), ea);
- UINT32 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);
-
- m68ki_write_16((mc68kcpu), ea, (mc68kcpu)->not_z_flag);
-}
-
-
-void m68000_base_device_ops::m68k_op_add_16_re_di(m68000_base_device* mc68kcpu)
-{
- UINT32 ea = EA_AY_DI_16(mc68kcpu);
- UINT32 src = MASK_OUT_ABOVE_16(DX(mc68kcpu));
- UINT32 dst = m68ki_read_16((mc68kcpu), ea);
- UINT32 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);
-
- m68ki_write_16((mc68kcpu), ea, (mc68kcpu)->not_z_flag);
-}
-
-
-void m68000_base_device_ops::m68k_op_add_16_re_ix(m68000_base_device* mc68kcpu)
-{
- UINT32 ea = EA_AY_IX_16(mc68kcpu);
- UINT32 src = MASK_OUT_ABOVE_16(DX(mc68kcpu));
- UINT32 dst = m68ki_read_16((mc68kcpu), ea);
- UINT32 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);
-
- m68ki_write_16((mc68kcpu), ea, (mc68kcpu)->not_z_flag);
-}
-
-
-void m68000_base_device_ops::m68k_op_add_16_re_aw(m68000_base_device* mc68kcpu)
-{
- UINT32 ea = EA_AW_16(mc68kcpu);
- UINT32 src = MASK_OUT_ABOVE_16(DX(mc68kcpu));
- UINT32 dst = m68ki_read_16((mc68kcpu), ea);
- UINT32 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);
-
- m68ki_write_16((mc68kcpu), ea, (mc68kcpu)->not_z_flag);
-}
-
-
-void m68000_base_device_ops::m68k_op_add_16_re_al(m68000_base_device* mc68kcpu)
-{
- UINT32 ea = EA_AL_16(mc68kcpu);
- UINT32 src = MASK_OUT_ABOVE_16(DX(mc68kcpu));
- UINT32 dst = m68ki_read_16((mc68kcpu), ea);
- UINT32 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);
-
- m68ki_write_16((mc68kcpu), ea, (mc68kcpu)->not_z_flag);
-}
-
-
-void m68000_base_device_ops::m68k_op_add_32_re_ai(m68000_base_device* mc68kcpu)
-{
- UINT32 ea = EA_AY_AI_32(mc68kcpu);
- UINT32 src = DX(mc68kcpu);
- UINT32 dst = m68ki_read_32((mc68kcpu), ea);
- UINT32 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);
-
- m68ki_write_32((mc68kcpu), ea, (mc68kcpu)->not_z_flag);
-}
-
-
-void m68000_base_device_ops::m68k_op_add_32_re_pi(m68000_base_device* mc68kcpu)
-{
- UINT32 ea = EA_AY_PI_32(mc68kcpu);
- UINT32 src = DX(mc68kcpu);
- UINT32 dst = m68ki_read_32((mc68kcpu), ea);
- UINT32 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);
-
- m68ki_write_32((mc68kcpu), ea, (mc68kcpu)->not_z_flag);
-}
-
-
-void m68000_base_device_ops::m68k_op_add_32_re_pd(m68000_base_device* mc68kcpu)
-{
- UINT32 ea = EA_AY_PD_32(mc68kcpu);
- UINT32 src = DX(mc68kcpu);
- UINT32 dst = m68ki_read_32((mc68kcpu), ea);
- UINT32 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);
-
- m68ki_write_32((mc68kcpu), ea, (mc68kcpu)->not_z_flag);
-}
-
-
-void m68000_base_device_ops::m68k_op_add_32_re_di(m68000_base_device* mc68kcpu)
-{
- UINT32 ea = EA_AY_DI_32(mc68kcpu);
- UINT32 src = DX(mc68kcpu);
- UINT32 dst = m68ki_read_32((mc68kcpu), ea);
- UINT32 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);
-
- m68ki_write_32((mc68kcpu), ea, (mc68kcpu)->not_z_flag);
-}
-
-
-void m68000_base_device_ops::m68k_op_add_32_re_ix(m68000_base_device* mc68kcpu)
-{
- UINT32 ea = EA_AY_IX_32(mc68kcpu);
- UINT32 src = DX(mc68kcpu);
- UINT32 dst = m68ki_read_32((mc68kcpu), ea);
- UINT32 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);
-
- m68ki_write_32((mc68kcpu), ea, (mc68kcpu)->not_z_flag);
-}
-
-
-void m68000_base_device_ops::m68k_op_add_32_re_aw(m68000_base_device* mc68kcpu)
-{
- UINT32 ea = EA_AW_32(mc68kcpu);
- UINT32 src = DX(mc68kcpu);
- UINT32 dst = m68ki_read_32((mc68kcpu), ea);
- UINT32 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);
-
- m68ki_write_32((mc68kcpu), ea, (mc68kcpu)->not_z_flag);
-}
-
-
-void m68000_base_device_ops::m68k_op_add_32_re_al(m68000_base_device* mc68kcpu)
-{
- UINT32 ea = EA_AL_32(mc68kcpu);
- UINT32 src = DX(mc68kcpu);
- UINT32 dst = m68ki_read_32((mc68kcpu), ea);
- UINT32 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);
-
- m68ki_write_32((mc68kcpu), ea, (mc68kcpu)->not_z_flag);
-}
-
-
-void m68000_base_device_ops::m68k_op_adda_16_d(m68000_base_device* mc68kcpu)
-{
- UINT32* r_dst = &AX(mc68kcpu);
-
- *r_dst = MASK_OUT_ABOVE_32(*r_dst + MAKE_INT_16(DY(mc68kcpu)));
-}
-
-
-void m68000_base_device_ops::m68k_op_adda_16_a(m68000_base_device* mc68kcpu)
-{
- UINT32* r_dst = &AX(mc68kcpu);
-
- *r_dst = MASK_OUT_ABOVE_32(*r_dst + MAKE_INT_16(AY(mc68kcpu)));
-}
-
-
-void m68000_base_device_ops::m68k_op_adda_16_ai(m68000_base_device* mc68kcpu)
-{
- UINT32* r_dst = &AX(mc68kcpu);
- UINT32 src = MAKE_INT_16(OPER_AY_AI_16(mc68kcpu));
-
- *r_dst = MASK_OUT_ABOVE_32(*r_dst + src);
-}
-
-
-void m68000_base_device_ops::m68k_op_adda_16_pi(m68000_base_device* mc68kcpu)
-{
- UINT32* r_dst = &AX(mc68kcpu);
- UINT32 src = MAKE_INT_16(OPER_AY_PI_16(mc68kcpu));
-
- *r_dst = MASK_OUT_ABOVE_32(*r_dst + src);
-}
-
-
-void m68000_base_device_ops::m68k_op_adda_16_pd(m68000_base_device* mc68kcpu)
-{
- UINT32* r_dst = &AX(mc68kcpu);
- UINT32 src = MAKE_INT_16(OPER_AY_PD_16(mc68kcpu));
-
- *r_dst = MASK_OUT_ABOVE_32(*r_dst + src);
-}
-
-
-void m68000_base_device_ops::m68k_op_adda_16_di(m68000_base_device* mc68kcpu)
-{
- UINT32* r_dst = &AX(mc68kcpu);
- UINT32 src = MAKE_INT_16(OPER_AY_DI_16(mc68kcpu));
-
- *r_dst = MASK_OUT_ABOVE_32(*r_dst + src);
-}
-
-
-void m68000_base_device_ops::m68k_op_adda_16_ix(m68000_base_device* mc68kcpu)
-{
- UINT32* r_dst = &AX(mc68kcpu);
- UINT32 src = MAKE_INT_16(OPER_AY_IX_16(mc68kcpu));
-
- *r_dst = MASK_OUT_ABOVE_32(*r_dst + src);
-}
-
-
-void m68000_base_device_ops::m68k_op_adda_16_aw(m68000_base_device* mc68kcpu)
-{
- UINT32* r_dst = &AX(mc68kcpu);
- UINT32 src = MAKE_INT_16(OPER_AW_16(mc68kcpu));
-
- *r_dst = MASK_OUT_ABOVE_32(*r_dst + src);
-}
-
-
-void m68000_base_device_ops::m68k_op_adda_16_al(m68000_base_device* mc68kcpu)
-{
- UINT32* r_dst = &AX(mc68kcpu);
- UINT32 src = MAKE_INT_16(OPER_AL_16(mc68kcpu));
-
- *r_dst = MASK_OUT_ABOVE_32(*r_dst + src);
-}
-
-
-void m68000_base_device_ops::m68k_op_adda_16_pcdi(m68000_base_device* mc68kcpu)
-{
- UINT32* r_dst = &AX(mc68kcpu);
- UINT32 src = MAKE_INT_16(OPER_PCDI_16(mc68kcpu));
-
- *r_dst = MASK_OUT_ABOVE_32(*r_dst + src);
-}
-
-
-void m68000_base_device_ops::m68k_op_adda_16_pcix(m68000_base_device* mc68kcpu)
-{
- UINT32* r_dst = &AX(mc68kcpu);
- UINT32 src = MAKE_INT_16(OPER_PCIX_16(mc68kcpu));
-
- *r_dst = MASK_OUT_ABOVE_32(*r_dst + src);
-}
-
-
-void m68000_base_device_ops::m68k_op_adda_16_i(m68000_base_device* mc68kcpu)
-{
- UINT32* r_dst = &AX(mc68kcpu);
- UINT32 src = MAKE_INT_16(OPER_I_16(mc68kcpu));
-
- *r_dst = MASK_OUT_ABOVE_32(*r_dst + src);
-}
-
-
-void m68000_base_device_ops::m68k_op_adda_32_d(m68000_base_device* mc68kcpu)
-{
- UINT32* r_dst = &AX(mc68kcpu);
-
- *r_dst = MASK_OUT_ABOVE_32(*r_dst + DY(mc68kcpu));
-}
-
-
-void m68000_base_device_ops::m68k_op_adda_32_a(m68000_base_device* mc68kcpu)
-{
- UINT32* r_dst = &AX(mc68kcpu);
-
- *r_dst = MASK_OUT_ABOVE_32(*r_dst + AY(mc68kcpu));
-}
-
-
-void m68000_base_device_ops::m68k_op_adda_32_ai(m68000_base_device* mc68kcpu)
-{
- UINT32* r_dst = &AX(mc68kcpu);
- UINT32 src = OPER_AY_AI_32(mc68kcpu);
-
- *r_dst = MASK_OUT_ABOVE_32(*r_dst + src);
-}
-
-
-void m68000_base_device_ops::m68k_op_adda_32_pi(m68000_base_device* mc68kcpu)
-{
- UINT32* r_dst = &AX(mc68kcpu);
- UINT32 src = OPER_AY_PI_32(mc68kcpu);
-
- *r_dst = MASK_OUT_ABOVE_32(*r_dst + src);
-}
-
-
-void m68000_base_device_ops::m68k_op_adda_32_pd(m68000_base_device* mc68kcpu)
-{
- UINT32* r_dst = &AX(mc68kcpu);
- UINT32 src = OPER_AY_PD_32(mc68kcpu);
-
- *r_dst = MASK_OUT_ABOVE_32(*r_dst + src);
-}
-
-
-void m68000_base_device_ops::m68k_op_adda_32_di(m68000_base_device* mc68kcpu)
-{
- UINT32* r_dst = &AX(mc68kcpu);
- UINT32 src = OPER_AY_DI_32(mc68kcpu);
-
- *r_dst = MASK_OUT_ABOVE_32(*r_dst + src);
-}
-
-
-void m68000_base_device_ops::m68k_op_adda_32_ix(m68000_base_device* mc68kcpu)
-{
- UINT32* r_dst = &AX(mc68kcpu);
- UINT32 src = OPER_AY_IX_32(mc68kcpu);
-
- *r_dst = MASK_OUT_ABOVE_32(*r_dst + src);
-}
-
-
-void m68000_base_device_ops::m68k_op_adda_32_aw(m68000_base_device* mc68kcpu)
-{
- UINT32* r_dst = &AX(mc68kcpu);
- UINT32 src = OPER_AW_32(mc68kcpu);
-
- *r_dst = MASK_OUT_ABOVE_32(*r_dst + src);
-}
-
-
-void m68000_base_device_ops::m68k_op_adda_32_al(m68000_base_device* mc68kcpu)
-{
- UINT32* r_dst = &AX(mc68kcpu);
- UINT32 src = OPER_AL_32(mc68kcpu);
-
- *r_dst = MASK_OUT_ABOVE_32(*r_dst + src);
-}
-
-
-void m68000_base_device_ops::m68k_op_adda_32_pcdi(m68000_base_device* mc68kcpu)
-{
- UINT32* r_dst = &AX(mc68kcpu);
- UINT32 src = OPER_PCDI_32(mc68kcpu);
-
- *r_dst = MASK_OUT_ABOVE_32(*r_dst + src);
-}
-
-
-void m68000_base_device_ops::m68k_op_adda_32_pcix(m68000_base_device* mc68kcpu)
-{
- UINT32* r_dst = &AX(mc68kcpu);
- UINT32 src = OPER_PCIX_32(mc68kcpu);
-
- *r_dst = MASK_OUT_ABOVE_32(*r_dst + src);
-}
-
-
-void m68000_base_device_ops::m68k_op_adda_32_i(m68000_base_device* mc68kcpu)
-{
- UINT32* r_dst = &AX(mc68kcpu);
- UINT32 src = OPER_I_32(mc68kcpu);
-
- *r_dst = MASK_OUT_ABOVE_32(*r_dst + src);
-}
-
-
-void m68000_base_device_ops::m68k_op_addi_8_d(m68000_base_device* mc68kcpu)
-{
- UINT32* r_dst = &DY(mc68kcpu);
- UINT32 src = OPER_I_8(mc68kcpu);
- UINT32 dst = MASK_OUT_ABOVE_8(*r_dst);
- UINT32 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);
-
- *r_dst = MASK_OUT_BELOW_8(*r_dst) | (mc68kcpu)->not_z_flag;
-}
-
-
-void m68000_base_device_ops::m68k_op_addi_8_ai(m68000_base_device* mc68kcpu)
-{
- UINT32 src = OPER_I_8(mc68kcpu);
- UINT32 ea = EA_AY_AI_8(mc68kcpu);
- UINT32 dst = m68ki_read_8((mc68kcpu), ea);
- UINT32 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);
-
- m68ki_write_8((mc68kcpu), ea, (mc68kcpu)->not_z_flag);
-}
-
-
-void m68000_base_device_ops::m68k_op_addi_8_pi(m68000_base_device* mc68kcpu)
-{
- UINT32 src = OPER_I_8(mc68kcpu);
- UINT32 ea = EA_AY_PI_8(mc68kcpu);
- UINT32 dst = m68ki_read_8((mc68kcpu), ea);
- UINT32 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);
-
- m68ki_write_8((mc68kcpu), ea, (mc68kcpu)->not_z_flag);
-}
-
-
-void m68000_base_device_ops::m68k_op_addi_8_pi7(m68000_base_device* mc68kcpu)
-{
- UINT32 src = OPER_I_8(mc68kcpu);
- UINT32 ea = EA_A7_PI_8(mc68kcpu);
- UINT32 dst = m68ki_read_8((mc68kcpu), ea);
- UINT32 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);
-
- m68ki_write_8((mc68kcpu), ea, (mc68kcpu)->not_z_flag);
-}
-
-
-void m68000_base_device_ops::m68k_op_addi_8_pd(m68000_base_device* mc68kcpu)
-{
- UINT32 src = OPER_I_8(mc68kcpu);
- UINT32 ea = EA_AY_PD_8(mc68kcpu);
- UINT32 dst = m68ki_read_8((mc68kcpu), ea);
- UINT32 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);
-
- m68ki_write_8((mc68kcpu), ea, (mc68kcpu)->not_z_flag);
-}
-
-
-void m68000_base_device_ops::m68k_op_addi_8_pd7(m68000_base_device* mc68kcpu)
-{
- UINT32 src = OPER_I_8(mc68kcpu);
- UINT32 ea = EA_A7_PD_8(mc68kcpu);
- UINT32 dst = m68ki_read_8((mc68kcpu), ea);
- UINT32 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);
-
- m68ki_write_8((mc68kcpu), ea, (mc68kcpu)->not_z_flag);
-}
-
-
-void m68000_base_device_ops::m68k_op_addi_8_di(m68000_base_device* mc68kcpu)
-{
- UINT32 src = OPER_I_8(mc68kcpu);
- UINT32 ea = EA_AY_DI_8(mc68kcpu);
- UINT32 dst = m68ki_read_8((mc68kcpu), ea);
- UINT32 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);
-
- m68ki_write_8((mc68kcpu), ea, (mc68kcpu)->not_z_flag);
-}
-
-
-void m68000_base_device_ops::m68k_op_addi_8_ix(m68000_base_device* mc68kcpu)
-{
- UINT32 src = OPER_I_8(mc68kcpu);
- UINT32 ea = EA_AY_IX_8(mc68kcpu);
- UINT32 dst = m68ki_read_8((mc68kcpu), ea);
- UINT32 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);
-
- m68ki_write_8((mc68kcpu), ea, (mc68kcpu)->not_z_flag);
-}
-
-
-void m68000_base_device_ops::m68k_op_addi_8_aw(m68000_base_device* mc68kcpu)
-{
- UINT32 src = OPER_I_8(mc68kcpu);
- UINT32 ea = EA_AW_8(mc68kcpu);
- UINT32 dst = m68ki_read_8((mc68kcpu), ea);
- UINT32 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);
-
- m68ki_write_8((mc68kcpu), ea, (mc68kcpu)->not_z_flag);
-}
-
-
-void m68000_base_device_ops::m68k_op_addi_8_al(m68000_base_device* mc68kcpu)
-{
- UINT32 src = OPER_I_8(mc68kcpu);
- UINT32 ea = EA_AL_8(mc68kcpu);
- UINT32 dst = m68ki_read_8((mc68kcpu), ea);
- UINT32 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);
-
- m68ki_write_8((mc68kcpu), ea, (mc68kcpu)->not_z_flag);
-}
-
-
-void m68000_base_device_ops::m68k_op_addi_16_d(m68000_base_device* mc68kcpu)
-{
- UINT32* r_dst = &DY(mc68kcpu);
- UINT32 src = OPER_I_16(mc68kcpu);
- UINT32 dst = MASK_OUT_ABOVE_16(*r_dst);
- UINT32 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);
-
- *r_dst = MASK_OUT_BELOW_16(*r_dst) | (mc68kcpu)->not_z_flag;
-}
-
-
-void m68000_base_device_ops::m68k_op_addi_16_ai(m68000_base_device* mc68kcpu)
-{
- UINT32 src = OPER_I_16(mc68kcpu);
- UINT32 ea = EA_AY_AI_16(mc68kcpu);
- UINT32 dst = m68ki_read_16((mc68kcpu), ea);
- UINT32 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);
-
- m68ki_write_16((mc68kcpu), ea, (mc68kcpu)->not_z_flag);
-}
-
-
-void m68000_base_device_ops::m68k_op_addi_16_pi(m68000_base_device* mc68kcpu)
-{
- UINT32 src = OPER_I_16(mc68kcpu);
- UINT32 ea = EA_AY_PI_16(mc68kcpu);
- UINT32 dst = m68ki_read_16((mc68kcpu), ea);
- UINT32 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);
-
- m68ki_write_16((mc68kcpu), ea, (mc68kcpu)->not_z_flag);
-}
-
-
-void m68000_base_device_ops::m68k_op_addi_16_pd(m68000_base_device* mc68kcpu)
-{
- UINT32 src = OPER_I_16(mc68kcpu);
- UINT32 ea = EA_AY_PD_16(mc68kcpu);
- UINT32 dst = m68ki_read_16((mc68kcpu), ea);
- UINT32 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);
-
- m68ki_write_16((mc68kcpu), ea, (mc68kcpu)->not_z_flag);
-}
-
-
-void m68000_base_device_ops::m68k_op_addi_16_di(m68000_base_device* mc68kcpu)
-{
- UINT32 src = OPER_I_16(mc68kcpu);
- UINT32 ea = EA_AY_DI_16(mc68kcpu);
- UINT32 dst = m68ki_read_16((mc68kcpu), ea);
- UINT32 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);
-
- m68ki_write_16((mc68kcpu), ea, (mc68kcpu)->not_z_flag);
-}
-
-
-void m68000_base_device_ops::m68k_op_addi_16_ix(m68000_base_device* mc68kcpu)
-{
- UINT32 src = OPER_I_16(mc68kcpu);
- UINT32 ea = EA_AY_IX_16(mc68kcpu);
- UINT32 dst = m68ki_read_16((mc68kcpu), ea);
- UINT32 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);
-
- m68ki_write_16((mc68kcpu), ea, (mc68kcpu)->not_z_flag);
-}
-
-
-void m68000_base_device_ops::m68k_op_addi_16_aw(m68000_base_device* mc68kcpu)
-{
- UINT32 src = OPER_I_16(mc68kcpu);
- UINT32 ea = EA_AW_16(mc68kcpu);
- UINT32 dst = m68ki_read_16((mc68kcpu), ea);
- UINT32 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);
-
- m68ki_write_16((mc68kcpu), ea, (mc68kcpu)->not_z_flag);
-}
-
-
-void m68000_base_device_ops::m68k_op_addi_16_al(m68000_base_device* mc68kcpu)
-{
- UINT32 src = OPER_I_16(mc68kcpu);
- UINT32 ea = EA_AL_16(mc68kcpu);
- UINT32 dst = m68ki_read_16((mc68kcpu), ea);
- UINT32 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);
-
- m68ki_write_16((mc68kcpu), ea, (mc68kcpu)->not_z_flag);
-}
-
-
-void m68000_base_device_ops::m68k_op_addi_32_d(m68000_base_device* mc68kcpu)
-{
- UINT32* r_dst = &DY(mc68kcpu);
- UINT32 src = OPER_I_32(mc68kcpu);
- UINT32 dst = *r_dst;
- UINT32 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);
-
- *r_dst = (mc68kcpu)->not_z_flag;
-}
-
-
-void m68000_base_device_ops::m68k_op_addi_32_ai(m68000_base_device* mc68kcpu)
-{
- UINT32 src = OPER_I_32(mc68kcpu);
- UINT32 ea = EA_AY_AI_32(mc68kcpu);
- UINT32 dst = m68ki_read_32((mc68kcpu), ea);
- UINT32 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);
-
- m68ki_write_32((mc68kcpu), ea, (mc68kcpu)->not_z_flag);
-}
-
-
-void m68000_base_device_ops::m68k_op_addi_32_pi(m68000_base_device* mc68kcpu)
-{
- UINT32 src = OPER_I_32(mc68kcpu);
- UINT32 ea = EA_AY_PI_32(mc68kcpu);
- UINT32 dst = m68ki_read_32((mc68kcpu), ea);
- UINT32 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);
-
- m68ki_write_32((mc68kcpu), ea, (mc68kcpu)->not_z_flag);
-}
-
-
-void m68000_base_device_ops::m68k_op_addi_32_pd(m68000_base_device* mc68kcpu)
-{
- UINT32 src = OPER_I_32(mc68kcpu);
- UINT32 ea = EA_AY_PD_32(mc68kcpu);
- UINT32 dst = m68ki_read_32((mc68kcpu), ea);
- UINT32 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);
-
- m68ki_write_32((mc68kcpu), ea, (mc68kcpu)->not_z_flag);
-}
-
-
-void m68000_base_device_ops::m68k_op_addi_32_di(m68000_base_device* mc68kcpu)
-{
- UINT32 src = OPER_I_32(mc68kcpu);
- UINT32 ea = EA_AY_DI_32(mc68kcpu);
- UINT32 dst = m68ki_read_32((mc68kcpu), ea);
- UINT32 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);
-
- m68ki_write_32((mc68kcpu), ea, (mc68kcpu)->not_z_flag);
-}
-
-
-void m68000_base_device_ops::m68k_op_addi_32_ix(m68000_base_device* mc68kcpu)
-{
- UINT32 src = OPER_I_32(mc68kcpu);
- UINT32 ea = EA_AY_IX_32(mc68kcpu);
- UINT32 dst = m68ki_read_32((mc68kcpu), ea);
- UINT32 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);
-
- m68ki_write_32((mc68kcpu), ea, (mc68kcpu)->not_z_flag);
-}
-
-
-void m68000_base_device_ops::m68k_op_addi_32_aw(m68000_base_device* mc68kcpu)
-{
- UINT32 src = OPER_I_32(mc68kcpu);
- UINT32 ea = EA_AW_32(mc68kcpu);
- UINT32 dst = m68ki_read_32((mc68kcpu), ea);
- UINT32 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);
-
- m68ki_write_32((mc68kcpu), ea, (mc68kcpu)->not_z_flag);
-}
-
-
-void m68000_base_device_ops::m68k_op_addi_32_al(m68000_base_device* mc68kcpu)
-{
- UINT32 src = OPER_I_32(mc68kcpu);
- UINT32 ea = EA_AL_32(mc68kcpu);
- UINT32 dst = m68ki_read_32((mc68kcpu), ea);
- UINT32 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);
-
- m68ki_write_32((mc68kcpu), ea, (mc68kcpu)->not_z_flag);
-}
-
-
-void m68000_base_device_ops::m68k_op_addq_8_d(m68000_base_device* mc68kcpu)
-{
- UINT32* r_dst = &DY(mc68kcpu);
- UINT32 src = ((((mc68kcpu)->ir >> 9) - 1) & 7) + 1;
- UINT32 dst = MASK_OUT_ABOVE_8(*r_dst);
- UINT32 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);
-
- *r_dst = MASK_OUT_BELOW_8(*r_dst) | (mc68kcpu)->not_z_flag;
-}
-
-
-void m68000_base_device_ops::m68k_op_addq_8_ai(m68000_base_device* mc68kcpu)
-{
- UINT32 src = ((((mc68kcpu)->ir >> 9) - 1) & 7) + 1;
- UINT32 ea = EA_AY_AI_8(mc68kcpu);
- UINT32 dst = m68ki_read_8((mc68kcpu), ea);
- UINT32 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);
-
- m68ki_write_8((mc68kcpu), ea, (mc68kcpu)->not_z_flag);
-}
-
-
-void m68000_base_device_ops::m68k_op_addq_8_pi(m68000_base_device* mc68kcpu)
-{
- UINT32 src = ((((mc68kcpu)->ir >> 9) - 1) & 7) + 1;
- UINT32 ea = EA_AY_PI_8(mc68kcpu);
- UINT32 dst = m68ki_read_8((mc68kcpu), ea);
- UINT32 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);
-
- m68ki_write_8((mc68kcpu), ea, (mc68kcpu)->not_z_flag);
-}
-
-
-void m68000_base_device_ops::m68k_op_addq_8_pi7(m68000_base_device* mc68kcpu)
-{
- UINT32 src = ((((mc68kcpu)->ir >> 9) - 1) & 7) + 1;
- UINT32 ea = EA_A7_PI_8(mc68kcpu);
- UINT32 dst = m68ki_read_8((mc68kcpu), ea);
- UINT32 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);
-
- m68ki_write_8((mc68kcpu), ea, (mc68kcpu)->not_z_flag);
-}
-
-
-void m68000_base_device_ops::m68k_op_addq_8_pd(m68000_base_device* mc68kcpu)
-{
- UINT32 src = ((((mc68kcpu)->ir >> 9) - 1) & 7) + 1;
- UINT32 ea = EA_AY_PD_8(mc68kcpu);
- UINT32 dst = m68ki_read_8((mc68kcpu), ea);
- UINT32 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);
-
- m68ki_write_8((mc68kcpu), ea, (mc68kcpu)->not_z_flag);
-}
-
-
-void m68000_base_device_ops::m68k_op_addq_8_pd7(m68000_base_device* mc68kcpu)
-{
- UINT32 src = ((((mc68kcpu)->ir >> 9) - 1) & 7) + 1;
- UINT32 ea = EA_A7_PD_8(mc68kcpu);
- UINT32 dst = m68ki_read_8((mc68kcpu), ea);
- UINT32 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);
-
- m68ki_write_8((mc68kcpu), ea, (mc68kcpu)->not_z_flag);
-}
-
-
-void m68000_base_device_ops::m68k_op_addq_8_di(m68000_base_device* mc68kcpu)
-{
- UINT32 src = ((((mc68kcpu)->ir >> 9) - 1) & 7) + 1;
- UINT32 ea = EA_AY_DI_8(mc68kcpu);
- UINT32 dst = m68ki_read_8((mc68kcpu), ea);
- UINT32 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);
-
- m68ki_write_8((mc68kcpu), ea, (mc68kcpu)->not_z_flag);
-}
-
-
-void m68000_base_device_ops::m68k_op_addq_8_ix(m68000_base_device* mc68kcpu)
-{
- UINT32 src = ((((mc68kcpu)->ir >> 9) - 1) & 7) + 1;
- UINT32 ea = EA_AY_IX_8(mc68kcpu);
- UINT32 dst = m68ki_read_8((mc68kcpu), ea);
- UINT32 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);
-
- m68ki_write_8((mc68kcpu), ea, (mc68kcpu)->not_z_flag);
-}
-
-
-void m68000_base_device_ops::m68k_op_addq_8_aw(m68000_base_device* mc68kcpu)
-{
- UINT32 src = ((((mc68kcpu)->ir >> 9) - 1) & 7) + 1;
- UINT32 ea = EA_AW_8(mc68kcpu);
- UINT32 dst = m68ki_read_8((mc68kcpu), ea);
- UINT32 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);
-
- m68ki_write_8((mc68kcpu), ea, (mc68kcpu)->not_z_flag);
-}
-
-
-void m68000_base_device_ops::m68k_op_addq_8_al(m68000_base_device* mc68kcpu)
-{
- UINT32 src = ((((mc68kcpu)->ir >> 9) - 1) & 7) + 1;
- UINT32 ea = EA_AL_8(mc68kcpu);
- UINT32 dst = m68ki_read_8((mc68kcpu), ea);
- UINT32 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);
-
- m68ki_write_8((mc68kcpu), ea, (mc68kcpu)->not_z_flag);
-}
-
-
-void m68000_base_device_ops::m68k_op_addq_16_d(m68000_base_device* mc68kcpu)
-{
- UINT32* r_dst = &DY(mc68kcpu);
- UINT32 src = ((((mc68kcpu)->ir >> 9) - 1) & 7) + 1;
- UINT32 dst = MASK_OUT_ABOVE_16(*r_dst);
- UINT32 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);
-
- *r_dst = MASK_OUT_BELOW_16(*r_dst) | (mc68kcpu)->not_z_flag;
-}
-
-
-void m68000_base_device_ops::m68k_op_addq_16_a(m68000_base_device* mc68kcpu)
-{
- UINT32* r_dst = &AY(mc68kcpu);
-
- *r_dst = MASK_OUT_ABOVE_32(*r_dst + ((((mc68kcpu)->ir >> 9) - 1) & 7) + 1);
-}
-
-
-void m68000_base_device_ops::m68k_op_addq_16_ai(m68000_base_device* mc68kcpu)
-{
- UINT32 src = ((((mc68kcpu)->ir >> 9) - 1) & 7) + 1;
- UINT32 ea = EA_AY_AI_16(mc68kcpu);
- UINT32 dst = m68ki_read_16((mc68kcpu), ea);
- UINT32 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);
-
- m68ki_write_16((mc68kcpu), ea, (mc68kcpu)->not_z_flag);
-}
-
-
-void m68000_base_device_ops::m68k_op_addq_16_pi(m68000_base_device* mc68kcpu)
-{
- UINT32 src = ((((mc68kcpu)->ir >> 9) - 1) & 7) + 1;
- UINT32 ea = EA_AY_PI_16(mc68kcpu);
- UINT32 dst = m68ki_read_16((mc68kcpu), ea);
- UINT32 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);
-
- m68ki_write_16((mc68kcpu), ea, (mc68kcpu)->not_z_flag);
-}
-
-
-void m68000_base_device_ops::m68k_op_addq_16_pd(m68000_base_device* mc68kcpu)
-{
- UINT32 src = ((((mc68kcpu)->ir >> 9) - 1) & 7) + 1;
- UINT32 ea = EA_AY_PD_16(mc68kcpu);
- UINT32 dst = m68ki_read_16((mc68kcpu), ea);
- UINT32 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);
-
- m68ki_write_16((mc68kcpu), ea, (mc68kcpu)->not_z_flag);
-}
-
-
-void m68000_base_device_ops::m68k_op_addq_16_di(m68000_base_device* mc68kcpu)
-{
- UINT32 src = ((((mc68kcpu)->ir >> 9) - 1) & 7) + 1;
- UINT32 ea = EA_AY_DI_16(mc68kcpu);
- UINT32 dst = m68ki_read_16((mc68kcpu), ea);
- UINT32 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);
-
- m68ki_write_16((mc68kcpu), ea, (mc68kcpu)->not_z_flag);
-}
-
-
-void m68000_base_device_ops::m68k_op_addq_16_ix(m68000_base_device* mc68kcpu)
-{
- UINT32 src = ((((mc68kcpu)->ir >> 9) - 1) & 7) + 1;
- UINT32 ea = EA_AY_IX_16(mc68kcpu);
- UINT32 dst = m68ki_read_16((mc68kcpu), ea);
- UINT32 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);
-
- m68ki_write_16((mc68kcpu), ea, (mc68kcpu)->not_z_flag);
-}
-
-
-void m68000_base_device_ops::m68k_op_addq_16_aw(m68000_base_device* mc68kcpu)
-{
- UINT32 src = ((((mc68kcpu)->ir >> 9) - 1) & 7) + 1;
- UINT32 ea = EA_AW_16(mc68kcpu);
- UINT32 dst = m68ki_read_16((mc68kcpu), ea);
- UINT32 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);
-
- m68ki_write_16((mc68kcpu), ea, (mc68kcpu)->not_z_flag);
-}
-
-
-void m68000_base_device_ops::m68k_op_addq_16_al(m68000_base_device* mc68kcpu)
-{
- UINT32 src = ((((mc68kcpu)->ir >> 9) - 1) & 7) + 1;
- UINT32 ea = EA_AL_16(mc68kcpu);
- UINT32 dst = m68ki_read_16((mc68kcpu), ea);
- UINT32 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);
-
- m68ki_write_16((mc68kcpu), ea, (mc68kcpu)->not_z_flag);
-}
-
-
-void m68000_base_device_ops::m68k_op_addq_32_d(m68000_base_device* mc68kcpu)
-{
- UINT32* r_dst = &DY(mc68kcpu);
- UINT32 src = ((((mc68kcpu)->ir >> 9) - 1) & 7) + 1;
- UINT32 dst = *r_dst;
- UINT32 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);
-
- *r_dst = (mc68kcpu)->not_z_flag;
-}
-
-
-void m68000_base_device_ops::m68k_op_addq_32_a(m68000_base_device* mc68kcpu)
-{
- UINT32* r_dst = &AY(mc68kcpu);
-
- *r_dst = MASK_OUT_ABOVE_32(*r_dst + ((((mc68kcpu)->ir >> 9) - 1) & 7) + 1);
-}
-
-
-void m68000_base_device_ops::m68k_op_addq_32_ai(m68000_base_device* mc68kcpu)
-{
- UINT32 src = ((((mc68kcpu)->ir >> 9) - 1) & 7) + 1;
- UINT32 ea = EA_AY_AI_32(mc68kcpu);
- UINT32 dst = m68ki_read_32((mc68kcpu), ea);
- UINT32 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);
-
- m68ki_write_32((mc68kcpu), ea, (mc68kcpu)->not_z_flag);
-}
-
-
-void m68000_base_device_ops::m68k_op_addq_32_pi(m68000_base_device* mc68kcpu)
-{
- UINT32 src = ((((mc68kcpu)->ir >> 9) - 1) & 7) + 1;
- UINT32 ea = EA_AY_PI_32(mc68kcpu);
- UINT32 dst = m68ki_read_32((mc68kcpu), ea);
- UINT32 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);
-
- m68ki_write_32((mc68kcpu), ea, (mc68kcpu)->not_z_flag);
-}
-
-
-void m68000_base_device_ops::m68k_op_addq_32_pd(m68000_base_device* mc68kcpu)
-{
- UINT32 src = ((((mc68kcpu)->ir >> 9) - 1) & 7) + 1;
- UINT32 ea = EA_AY_PD_32(mc68kcpu);
- UINT32 dst = m68ki_read_32((mc68kcpu), ea);
- UINT32 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);
-
- m68ki_write_32((mc68kcpu), ea, (mc68kcpu)->not_z_flag);
-}
-
-
-void m68000_base_device_ops::m68k_op_addq_32_di(m68000_base_device* mc68kcpu)
-{
- UINT32 src = ((((mc68kcpu)->ir >> 9) - 1) & 7) + 1;
- UINT32 ea = EA_AY_DI_32(mc68kcpu);
- UINT32 dst = m68ki_read_32((mc68kcpu), ea);
- UINT32 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);
-
- m68ki_write_32((mc68kcpu), ea, (mc68kcpu)->not_z_flag);
-}
-
-
-void m68000_base_device_ops::m68k_op_addq_32_ix(m68000_base_device* mc68kcpu)
-{
- UINT32 src = ((((mc68kcpu)->ir >> 9) - 1) & 7) + 1;
- UINT32 ea = EA_AY_IX_32(mc68kcpu);
- UINT32 dst = m68ki_read_32((mc68kcpu), ea);
- UINT32 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);
-
- m68ki_write_32((mc68kcpu), ea, (mc68kcpu)->not_z_flag);
-}
-
-
-void m68000_base_device_ops::m68k_op_addq_32_aw(m68000_base_device* mc68kcpu)
-{
- UINT32 src = ((((mc68kcpu)->ir >> 9) - 1) & 7) + 1;
- UINT32 ea = EA_AW_32(mc68kcpu);
- UINT32 dst = m68ki_read_32((mc68kcpu), ea);
- UINT32 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);
-
- m68ki_write_32((mc68kcpu), ea, (mc68kcpu)->not_z_flag);
-}
-
-
-void m68000_base_device_ops::m68k_op_addq_32_al(m68000_base_device* mc68kcpu)
-{
- UINT32 src = ((((mc68kcpu)->ir >> 9) - 1) & 7) + 1;
- UINT32 ea = EA_AL_32(mc68kcpu);
- UINT32 dst = m68ki_read_32((mc68kcpu), ea);
- UINT32 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);
-
- m68ki_write_32((mc68kcpu), ea, (mc68kcpu)->not_z_flag);
-}
-
-
-void m68000_base_device_ops::m68k_op_addx_8_rr(m68000_base_device* mc68kcpu)
-{
- UINT32* r_dst = &DX(mc68kcpu);
- UINT32 src = MASK_OUT_ABOVE_8(DY(mc68kcpu));
- UINT32 dst = MASK_OUT_ABOVE_8(*r_dst);
- UINT32 res = src + dst + XFLAG_AS_1(mc68kcpu);
-
- (mc68kcpu)->n_flag = NFLAG_8(res);
- (mc68kcpu)->v_flag = VFLAG_ADD_8(src, dst, res);
- (mc68kcpu)->x_flag = (mc68kcpu)->c_flag = CFLAG_8(res);
-
- res = MASK_OUT_ABOVE_8(res);
- (mc68kcpu)->not_z_flag |= res;
-
- *r_dst = MASK_OUT_BELOW_8(*r_dst) | res;
-}
-
-
-void m68000_base_device_ops::m68k_op_addx_16_rr(m68000_base_device* mc68kcpu)
-{
- UINT32* r_dst = &DX(mc68kcpu);
- UINT32 src = MASK_OUT_ABOVE_16(DY(mc68kcpu));
- UINT32 dst = MASK_OUT_ABOVE_16(*r_dst);
- UINT32 res = src + dst + XFLAG_AS_1(mc68kcpu);
-
- (mc68kcpu)->n_flag = NFLAG_16(res);
- (mc68kcpu)->v_flag = VFLAG_ADD_16(src, dst, res);
- (mc68kcpu)->x_flag = (mc68kcpu)->c_flag = CFLAG_16(res);
-
- res = MASK_OUT_ABOVE_16(res);
- (mc68kcpu)->not_z_flag |= res;
-
- *r_dst = MASK_OUT_BELOW_16(*r_dst) | res;
-}
-
-
-void m68000_base_device_ops::m68k_op_addx_32_rr(m68000_base_device* mc68kcpu)
-{
- UINT32* r_dst = &DX(mc68kcpu);
- UINT32 src = DY(mc68kcpu);
- UINT32 dst = *r_dst;
- UINT32 res = src + dst + XFLAG_AS_1(mc68kcpu);
-
- (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);
-
- res = MASK_OUT_ABOVE_32(res);
- (mc68kcpu)->not_z_flag |= res;
-
- *r_dst = res;
-}
-
-
-void m68000_base_device_ops::m68k_op_addx_8_mm_ax7(m68000_base_device* mc68kcpu)
-{
- UINT32 src = OPER_AY_PD_8(mc68kcpu);
- UINT32 ea = EA_A7_PD_8(mc68kcpu);
- UINT32 dst = m68ki_read_8((mc68kcpu), ea);
- UINT32 res = src + dst + XFLAG_AS_1(mc68kcpu);
-
- (mc68kcpu)->n_flag = NFLAG_8(res);
- (mc68kcpu)->v_flag = VFLAG_ADD_8(src, dst, res);
- (mc68kcpu)->x_flag = (mc68kcpu)->c_flag = CFLAG_8(res);
-
- res = MASK_OUT_ABOVE_8(res);
- (mc68kcpu)->not_z_flag |= res;
-
- m68ki_write_8((mc68kcpu), ea, res);
-}
-
-
-void m68000_base_device_ops::m68k_op_addx_8_mm_ay7(m68000_base_device* mc68kcpu)
-{
- UINT32 src = OPER_A7_PD_8(mc68kcpu);
- UINT32 ea = EA_AX_PD_8(mc68kcpu);
- UINT32 dst = m68ki_read_8((mc68kcpu), ea);
- UINT32 res = src + dst + XFLAG_AS_1(mc68kcpu);
-
- (mc68kcpu)->n_flag = NFLAG_8(res);
- (mc68kcpu)->v_flag = VFLAG_ADD_8(src, dst, res);
- (mc68kcpu)->x_flag = (mc68kcpu)->c_flag = CFLAG_8(res);
-
- res = MASK_OUT_ABOVE_8(res);
- (mc68kcpu)->not_z_flag |= res;
-
- m68ki_write_8((mc68kcpu), ea, res);
-}
-
-
-void m68000_base_device_ops::m68k_op_addx_8_mm_axy7(m68000_base_device* mc68kcpu)
-{
- UINT32 src = OPER_A7_PD_8(mc68kcpu);
- UINT32 ea = EA_A7_PD_8(mc68kcpu);
- UINT32 dst = m68ki_read_8((mc68kcpu), ea);
- UINT32 res = src + dst + XFLAG_AS_1(mc68kcpu);
-
- (mc68kcpu)->n_flag = NFLAG_8(res);
- (mc68kcpu)->v_flag = VFLAG_ADD_8(src, dst, res);
- (mc68kcpu)->x_flag = (mc68kcpu)->c_flag = CFLAG_8(res);
-
- res = MASK_OUT_ABOVE_8(res);
- (mc68kcpu)->not_z_flag |= res;
-
- m68ki_write_8((mc68kcpu), ea, res);
-}
-
-
-void m68000_base_device_ops::m68k_op_addx_8_mm(m68000_base_device* mc68kcpu)
-{
- UINT32 src = OPER_AY_PD_8(mc68kcpu);
- UINT32 ea = EA_AX_PD_8(mc68kcpu);
- UINT32 dst = m68ki_read_8((mc68kcpu), ea);
- UINT32 res = src + dst + XFLAG_AS_1(mc68kcpu);
-
- (mc68kcpu)->n_flag = NFLAG_8(res);
- (mc68kcpu)->v_flag = VFLAG_ADD_8(src, dst, res);
- (mc68kcpu)->x_flag = (mc68kcpu)->c_flag = CFLAG_8(res);
-
- res = MASK_OUT_ABOVE_8(res);
- (mc68kcpu)->not_z_flag |= res;
-
- m68ki_write_8((mc68kcpu), ea, res);
-}
-
-
-void m68000_base_device_ops::m68k_op_addx_16_mm(m68000_base_device* mc68kcpu)
-{
- UINT32 src = OPER_AY_PD_16(mc68kcpu);
- UINT32 ea = EA_AX_PD_16(mc68kcpu);
- UINT32 dst = m68ki_read_16((mc68kcpu), ea);
- UINT32 res = src + dst + XFLAG_AS_1(mc68kcpu);
-
- (mc68kcpu)->n_flag = NFLAG_16(res);
- (mc68kcpu)->v_flag = VFLAG_ADD_16(src, dst, res);
- (mc68kcpu)->x_flag = (mc68kcpu)->c_flag = CFLAG_16(res);
-
- res = MASK_OUT_ABOVE_16(res);
- (mc68kcpu)->not_z_flag |= res;
-
- m68ki_write_16((mc68kcpu), ea, res);
-}
-
-
-void m68000_base_device_ops::m68k_op_addx_32_mm(m68000_base_device* mc68kcpu)
-{
- UINT32 src = OPER_AY_PD_32(mc68kcpu);
- UINT32 ea = EA_AX_PD_32(mc68kcpu);
- UINT32 dst = m68ki_read_32((mc68kcpu), ea);
- UINT32 res = src + dst + XFLAG_AS_1(mc68kcpu);
-
- (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);
-
- res = MASK_OUT_ABOVE_32(res);
- (mc68kcpu)->not_z_flag |= res;
-
- m68ki_write_32((mc68kcpu), ea, res);
-}
-
-
-void m68000_base_device_ops::m68k_op_and_8_er_d(m68000_base_device* mc68kcpu)
-{
- (mc68kcpu)->not_z_flag = MASK_OUT_ABOVE_8(DX(mc68kcpu) &= (DY(mc68kcpu) | 0xffffff00));
-
- (mc68kcpu)->n_flag = NFLAG_8((mc68kcpu)->not_z_flag);
- (mc68kcpu)->c_flag = CFLAG_CLEAR;
- (mc68kcpu)->v_flag = VFLAG_CLEAR;
-}
-
-
-void m68000_base_device_ops::m68k_op_and_8_er_ai(m68000_base_device* mc68kcpu)
-{
- (mc68kcpu)->not_z_flag = MASK_OUT_ABOVE_8(DX(mc68kcpu) &= (OPER_AY_AI_8(mc68kcpu) | 0xffffff00));
-
- (mc68kcpu)->n_flag = NFLAG_8((mc68kcpu)->not_z_flag);
- (mc68kcpu)->c_flag = CFLAG_CLEAR;
- (mc68kcpu)->v_flag = VFLAG_CLEAR;
-}
-
-
-void m68000_base_device_ops::m68k_op_and_8_er_pi(m68000_base_device* mc68kcpu)
-{
- (mc68kcpu)->not_z_flag = MASK_OUT_ABOVE_8(DX(mc68kcpu) &= (OPER_AY_PI_8(mc68kcpu) | 0xffffff00));
-
- (mc68kcpu)->n_flag = NFLAG_8((mc68kcpu)->not_z_flag);
- (mc68kcpu)->c_flag = CFLAG_CLEAR;
- (mc68kcpu)->v_flag = VFLAG_CLEAR;
-}
-
-
-void m68000_base_device_ops::m68k_op_and_8_er_pi7(m68000_base_device* mc68kcpu)
-{
- (mc68kcpu)->not_z_flag = MASK_OUT_ABOVE_8(DX(mc68kcpu) &= (OPER_A7_PI_8(mc68kcpu) | 0xffffff00));
-
- (mc68kcpu)->n_flag = NFLAG_8((mc68kcpu)->not_z_flag);
- (mc68kcpu)->c_flag = CFLAG_CLEAR;
- (mc68kcpu)->v_flag = VFLAG_CLEAR;
-}
-
-
-void m68000_base_device_ops::m68k_op_and_8_er_pd(m68000_base_device* mc68kcpu)
-{
- (mc68kcpu)->not_z_flag = MASK_OUT_ABOVE_8(DX(mc68kcpu) &= (OPER_AY_PD_8(mc68kcpu) | 0xffffff00));
-
- (mc68kcpu)->n_flag = NFLAG_8((mc68kcpu)->not_z_flag);
- (mc68kcpu)->c_flag = CFLAG_CLEAR;
- (mc68kcpu)->v_flag = VFLAG_CLEAR;
-}
-
-
-void m68000_base_device_ops::m68k_op_and_8_er_pd7(m68000_base_device* mc68kcpu)
-{
- (mc68kcpu)->not_z_flag = MASK_OUT_ABOVE_8(DX(mc68kcpu) &= (OPER_A7_PD_8(mc68kcpu) | 0xffffff00));
-
- (mc68kcpu)->n_flag = NFLAG_8((mc68kcpu)->not_z_flag);
- (mc68kcpu)->c_flag = CFLAG_CLEAR;
- (mc68kcpu)->v_flag = VFLAG_CLEAR;
-}
-
-
-void m68000_base_device_ops::m68k_op_and_8_er_di(m68000_base_device* mc68kcpu)
-{
- (mc68kcpu)->not_z_flag = MASK_OUT_ABOVE_8(DX(mc68kcpu) &= (OPER_AY_DI_8(mc68kcpu) | 0xffffff00));
-
- (mc68kcpu)->n_flag = NFLAG_8((mc68kcpu)->not_z_flag);
- (mc68kcpu)->c_flag = CFLAG_CLEAR;
- (mc68kcpu)->v_flag = VFLAG_CLEAR;
-}
-
-
-void m68000_base_device_ops::m68k_op_and_8_er_ix(m68000_base_device* mc68kcpu)
-{
- (mc68kcpu)->not_z_flag = MASK_OUT_ABOVE_8(DX(mc68kcpu) &= (OPER_AY_IX_8(mc68kcpu) | 0xffffff00));
-
- (mc68kcpu)->n_flag = NFLAG_8((mc68kcpu)->not_z_flag);
- (mc68kcpu)->c_flag = CFLAG_CLEAR;
- (mc68kcpu)->v_flag = VFLAG_CLEAR;
-}
-
-
-void m68000_base_device_ops::m68k_op_and_8_er_aw(m68000_base_device* mc68kcpu)
-{
- (mc68kcpu)->not_z_flag = MASK_OUT_ABOVE_8(DX(mc68kcpu) &= (OPER_AW_8(mc68kcpu) | 0xffffff00));
-
- (mc68kcpu)->n_flag = NFLAG_8((mc68kcpu)->not_z_flag);
- (mc68kcpu)->c_flag = CFLAG_CLEAR;
- (mc68kcpu)->v_flag = VFLAG_CLEAR;
-}
-
-
-void m68000_base_device_ops::m68k_op_and_8_er_al(m68000_base_device* mc68kcpu)
-{
- (mc68kcpu)->not_z_flag = MASK_OUT_ABOVE_8(DX(mc68kcpu) &= (OPER_AL_8(mc68kcpu) | 0xffffff00));
-
- (mc68kcpu)->n_flag = NFLAG_8((mc68kcpu)->not_z_flag);
- (mc68kcpu)->c_flag = CFLAG_CLEAR;
- (mc68kcpu)->v_flag = VFLAG_CLEAR;
-}
-
-
-void m68000_base_device_ops::m68k_op_and_8_er_pcdi(m68000_base_device* mc68kcpu)
-{
- (mc68kcpu)->not_z_flag = MASK_OUT_ABOVE_8(DX(mc68kcpu) &= (OPER_PCDI_8(mc68kcpu) | 0xffffff00));
-
- (mc68kcpu)->n_flag = NFLAG_8((mc68kcpu)->not_z_flag);
- (mc68kcpu)->c_flag = CFLAG_CLEAR;
- (mc68kcpu)->v_flag = VFLAG_CLEAR;
-}
-
-
-void m68000_base_device_ops::m68k_op_and_8_er_pcix(m68000_base_device* mc68kcpu)
-{
- (mc68kcpu)->not_z_flag = MASK_OUT_ABOVE_8(DX(mc68kcpu) &= (OPER_PCIX_8(mc68kcpu) | 0xffffff00));
-
- (mc68kcpu)->n_flag = NFLAG_8((mc68kcpu)->not_z_flag);
- (mc68kcpu)->c_flag = CFLAG_CLEAR;
- (mc68kcpu)->v_flag = VFLAG_CLEAR;
-}
-
-
-void m68000_base_device_ops::m68k_op_and_8_er_i(m68000_base_device* mc68kcpu)
-{
- (mc68kcpu)->not_z_flag = MASK_OUT_ABOVE_8(DX(mc68kcpu) &= (OPER_I_8(mc68kcpu) | 0xffffff00));
-
- (mc68kcpu)->n_flag = NFLAG_8((mc68kcpu)->not_z_flag);
- (mc68kcpu)->c_flag = CFLAG_CLEAR;
- (mc68kcpu)->v_flag = VFLAG_CLEAR;
-}
-
-
-void m68000_base_device_ops::m68k_op_and_16_er_d(m68000_base_device* mc68kcpu)
-{
- (mc68kcpu)->not_z_flag = MASK_OUT_ABOVE_16(DX(mc68kcpu) &= (DY(mc68kcpu) | 0xffff0000));
-
- (mc68kcpu)->n_flag = NFLAG_16((mc68kcpu)->not_z_flag);
- (mc68kcpu)->c_flag = CFLAG_CLEAR;
- (mc68kcpu)->v_flag = VFLAG_CLEAR;
-}
-
-
-void m68000_base_device_ops::m68k_op_and_16_er_ai(m68000_base_device* mc68kcpu)
-{
- (mc68kcpu)->not_z_flag = MASK_OUT_ABOVE_16(DX(mc68kcpu) &= (OPER_AY_AI_16(mc68kcpu) | 0xffff0000));
-
- (mc68kcpu)->n_flag = NFLAG_16((mc68kcpu)->not_z_flag);
- (mc68kcpu)->c_flag = CFLAG_CLEAR;
- (mc68kcpu)->v_flag = VFLAG_CLEAR;
-}
-
-
-void m68000_base_device_ops::m68k_op_and_16_er_pi(m68000_base_device* mc68kcpu)
-{
- (mc68kcpu)->not_z_flag = MASK_OUT_ABOVE_16(DX(mc68kcpu) &= (OPER_AY_PI_16(mc68kcpu) | 0xffff0000));
-
- (mc68kcpu)->n_flag = NFLAG_16((mc68kcpu)->not_z_flag);
- (mc68kcpu)->c_flag = CFLAG_CLEAR;
- (mc68kcpu)->v_flag = VFLAG_CLEAR;
-}
-
-
-void m68000_base_device_ops::m68k_op_and_16_er_pd(m68000_base_device* mc68kcpu)
-{
- (mc68kcpu)->not_z_flag = MASK_OUT_ABOVE_16(DX(mc68kcpu) &= (OPER_AY_PD_16(mc68kcpu) | 0xffff0000));
-
- (mc68kcpu)->n_flag = NFLAG_16((mc68kcpu)->not_z_flag);
- (mc68kcpu)->c_flag = CFLAG_CLEAR;
- (mc68kcpu)->v_flag = VFLAG_CLEAR;
-}
-
-
-void m68000_base_device_ops::m68k_op_and_16_er_di(m68000_base_device* mc68kcpu)
-{
- (mc68kcpu)->not_z_flag = MASK_OUT_ABOVE_16(DX(mc68kcpu) &= (OPER_AY_DI_16(mc68kcpu) | 0xffff0000));
-
- (mc68kcpu)->n_flag = NFLAG_16((mc68kcpu)->not_z_flag);
- (mc68kcpu)->c_flag = CFLAG_CLEAR;
- (mc68kcpu)->v_flag = VFLAG_CLEAR;
-}
-
-
-void m68000_base_device_ops::m68k_op_and_16_er_ix(m68000_base_device* mc68kcpu)
-{
- (mc68kcpu)->not_z_flag = MASK_OUT_ABOVE_16(DX(mc68kcpu) &= (OPER_AY_IX_16(mc68kcpu) | 0xffff0000));
-
- (mc68kcpu)->n_flag = NFLAG_16((mc68kcpu)->not_z_flag);
- (mc68kcpu)->c_flag = CFLAG_CLEAR;
- (mc68kcpu)->v_flag = VFLAG_CLEAR;
-}
-
-
-void m68000_base_device_ops::m68k_op_and_16_er_aw(m68000_base_device* mc68kcpu)
-{
- (mc68kcpu)->not_z_flag = MASK_OUT_ABOVE_16(DX(mc68kcpu) &= (OPER_AW_16(mc68kcpu) | 0xffff0000));
-
- (mc68kcpu)->n_flag = NFLAG_16((mc68kcpu)->not_z_flag);
- (mc68kcpu)->c_flag = CFLAG_CLEAR;
- (mc68kcpu)->v_flag = VFLAG_CLEAR;
-}
-
-
-void m68000_base_device_ops::m68k_op_and_16_er_al(m68000_base_device* mc68kcpu)
-{
- (mc68kcpu)->not_z_flag = MASK_OUT_ABOVE_16(DX(mc68kcpu) &= (OPER_AL_16(mc68kcpu) | 0xffff0000));
-
- (mc68kcpu)->n_flag = NFLAG_16((mc68kcpu)->not_z_flag);
- (mc68kcpu)->c_flag = CFLAG_CLEAR;
- (mc68kcpu)->v_flag = VFLAG_CLEAR;
-}
-
-
-void m68000_base_device_ops::m68k_op_and_16_er_pcdi(m68000_base_device* mc68kcpu)
-{
- (mc68kcpu)->not_z_flag = MASK_OUT_ABOVE_16(DX(mc68kcpu) &= (OPER_PCDI_16(mc68kcpu) | 0xffff0000));
-
- (mc68kcpu)->n_flag = NFLAG_16((mc68kcpu)->not_z_flag);
- (mc68kcpu)->c_flag = CFLAG_CLEAR;
- (mc68kcpu)->v_flag = VFLAG_CLEAR;
-}
-
-
-void m68000_base_device_ops::m68k_op_and_16_er_pcix(m68000_base_device* mc68kcpu)
-{
- (mc68kcpu)->not_z_flag = MASK_OUT_ABOVE_16(DX(mc68kcpu) &= (OPER_PCIX_16(mc68kcpu) | 0xffff0000));
-
- (mc68kcpu)->n_flag = NFLAG_16((mc68kcpu)->not_z_flag);
- (mc68kcpu)->c_flag = CFLAG_CLEAR;
- (mc68kcpu)->v_flag = VFLAG_CLEAR;
-}
-
-
-void m68000_base_device_ops::m68k_op_and_16_er_i(m68000_base_device* mc68kcpu)
-{
- (mc68kcpu)->not_z_flag = MASK_OUT_ABOVE_16(DX(mc68kcpu) &= (OPER_I_16(mc68kcpu) | 0xffff0000));
-
- (mc68kcpu)->n_flag = NFLAG_16((mc68kcpu)->not_z_flag);
- (mc68kcpu)->c_flag = CFLAG_CLEAR;
- (mc68kcpu)->v_flag = VFLAG_CLEAR;
-}
-
-
-void m68000_base_device_ops::m68k_op_and_32_er_d(m68000_base_device* mc68kcpu)
-{
- (mc68kcpu)->not_z_flag = DX(mc68kcpu) &= DY(mc68kcpu);
-
- (mc68kcpu)->n_flag = NFLAG_32((mc68kcpu)->not_z_flag);
- (mc68kcpu)->c_flag = CFLAG_CLEAR;
- (mc68kcpu)->v_flag = VFLAG_CLEAR;
-}
-
-
-void m68000_base_device_ops::m68k_op_and_32_er_ai(m68000_base_device* mc68kcpu)
-{
- (mc68kcpu)->not_z_flag = DX(mc68kcpu) &= OPER_AY_AI_32(mc68kcpu);
-
- (mc68kcpu)->n_flag = NFLAG_32((mc68kcpu)->not_z_flag);
- (mc68kcpu)->c_flag = CFLAG_CLEAR;
- (mc68kcpu)->v_flag = VFLAG_CLEAR;
-}
-
-
-void m68000_base_device_ops::m68k_op_and_32_er_pi(m68000_base_device* mc68kcpu)
-{
- (mc68kcpu)->not_z_flag = DX(mc68kcpu) &= OPER_AY_PI_32(mc68kcpu);
-
- (mc68kcpu)->n_flag = NFLAG_32((mc68kcpu)->not_z_flag);
- (mc68kcpu)->c_flag = CFLAG_CLEAR;
- (mc68kcpu)->v_flag = VFLAG_CLEAR;
-}
-
-
-void m68000_base_device_ops::m68k_op_and_32_er_pd(m68000_base_device* mc68kcpu)
-{
- (mc68kcpu)->not_z_flag = DX(mc68kcpu) &= OPER_AY_PD_32(mc68kcpu);
-
- (mc68kcpu)->n_flag = NFLAG_32((mc68kcpu)->not_z_flag);
- (mc68kcpu)->c_flag = CFLAG_CLEAR;
- (mc68kcpu)->v_flag = VFLAG_CLEAR;
-}
-
-
-void m68000_base_device_ops::m68k_op_and_32_er_di(m68000_base_device* mc68kcpu)
-{
- (mc68kcpu)->not_z_flag = DX(mc68kcpu) &= OPER_AY_DI_32(mc68kcpu);
-
- (mc68kcpu)->n_flag = NFLAG_32((mc68kcpu)->not_z_flag);
- (mc68kcpu)->c_flag = CFLAG_CLEAR;
- (mc68kcpu)->v_flag = VFLAG_CLEAR;
-}
-
-
-void m68000_base_device_ops::m68k_op_and_32_er_ix(m68000_base_device* mc68kcpu)
-{
- (mc68kcpu)->not_z_flag = DX(mc68kcpu) &= OPER_AY_IX_32(mc68kcpu);
-
- (mc68kcpu)->n_flag = NFLAG_32((mc68kcpu)->not_z_flag);
- (mc68kcpu)->c_flag = CFLAG_CLEAR;
- (mc68kcpu)->v_flag = VFLAG_CLEAR;
-}
-
-
-void m68000_base_device_ops::m68k_op_and_32_er_aw(m68000_base_device* mc68kcpu)
-{
- (mc68kcpu)->not_z_flag = DX(mc68kcpu) &= OPER_AW_32(mc68kcpu);
-
- (mc68kcpu)->n_flag = NFLAG_32((mc68kcpu)->not_z_flag);
- (mc68kcpu)->c_flag = CFLAG_CLEAR;
- (mc68kcpu)->v_flag = VFLAG_CLEAR;
-}
-
-
-void m68000_base_device_ops::m68k_op_and_32_er_al(m68000_base_device* mc68kcpu)
-{
- (mc68kcpu)->not_z_flag = DX(mc68kcpu) &= OPER_AL_32(mc68kcpu);
-
- (mc68kcpu)->n_flag = NFLAG_32((mc68kcpu)->not_z_flag);
- (mc68kcpu)->c_flag = CFLAG_CLEAR;
- (mc68kcpu)->v_flag = VFLAG_CLEAR;
-}
-
-
-void m68000_base_device_ops::m68k_op_and_32_er_pcdi(m68000_base_device* mc68kcpu)
-{
- (mc68kcpu)->not_z_flag = DX(mc68kcpu) &= OPER_PCDI_32(mc68kcpu);
-
- (mc68kcpu)->n_flag = NFLAG_32((mc68kcpu)->not_z_flag);
- (mc68kcpu)->c_flag = CFLAG_CLEAR;
- (mc68kcpu)->v_flag = VFLAG_CLEAR;
-}
-
-
-void m68000_base_device_ops::m68k_op_and_32_er_pcix(m68000_base_device* mc68kcpu)
-{
- (mc68kcpu)->not_z_flag = DX(mc68kcpu) &= OPER_PCIX_32(mc68kcpu);
-
- (mc68kcpu)->n_flag = NFLAG_32((mc68kcpu)->not_z_flag);
- (mc68kcpu)->c_flag = CFLAG_CLEAR;
- (mc68kcpu)->v_flag = VFLAG_CLEAR;
-}
-
-
-void m68000_base_device_ops::m68k_op_and_32_er_i(m68000_base_device* mc68kcpu)
-{
- (mc68kcpu)->not_z_flag = DX(mc68kcpu) &= OPER_I_32(mc68kcpu);
-
- (mc68kcpu)->n_flag = NFLAG_32((mc68kcpu)->not_z_flag);
- (mc68kcpu)->c_flag = CFLAG_CLEAR;
- (mc68kcpu)->v_flag = VFLAG_CLEAR;
-}
-
-
-void m68000_base_device_ops::m68k_op_and_8_re_ai(m68000_base_device* mc68kcpu)
-{
- UINT32 ea = EA_AY_AI_8(mc68kcpu);
- UINT32 res = DX(mc68kcpu) & m68ki_read_8((mc68kcpu), 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);
-
- m68ki_write_8((mc68kcpu), ea, (mc68kcpu)->not_z_flag);
-}
-
-
-void m68000_base_device_ops::m68k_op_and_8_re_pi(m68000_base_device* mc68kcpu)
-{
- UINT32 ea = EA_AY_PI_8(mc68kcpu);
- UINT32 res = DX(mc68kcpu) & m68ki_read_8((mc68kcpu), 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);
-
- m68ki_write_8((mc68kcpu), ea, (mc68kcpu)->not_z_flag);
-}
-
-
-void m68000_base_device_ops::m68k_op_and_8_re_pi7(m68000_base_device* mc68kcpu)
-{
- UINT32 ea = EA_A7_PI_8(mc68kcpu);
- UINT32 res = DX(mc68kcpu) & m68ki_read_8((mc68kcpu), 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);
-
- m68ki_write_8((mc68kcpu), ea, (mc68kcpu)->not_z_flag);
-}
-
-
-void m68000_base_device_ops::m68k_op_and_8_re_pd(m68000_base_device* mc68kcpu)
-{
- UINT32 ea = EA_AY_PD_8(mc68kcpu);
- UINT32 res = DX(mc68kcpu) & m68ki_read_8((mc68kcpu), 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);
-
- m68ki_write_8((mc68kcpu), ea, (mc68kcpu)->not_z_flag);
-}
-
-
-void m68000_base_device_ops::m68k_op_and_8_re_pd7(m68000_base_device* mc68kcpu)
-{
- UINT32 ea = EA_A7_PD_8(mc68kcpu);
- UINT32 res = DX(mc68kcpu) & m68ki_read_8((mc68kcpu), 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);
-
- m68ki_write_8((mc68kcpu), ea, (mc68kcpu)->not_z_flag);
-}
-
-
-void m68000_base_device_ops::m68k_op_and_8_re_di(m68000_base_device* mc68kcpu)
-{
- UINT32 ea = EA_AY_DI_8(mc68kcpu);
- UINT32 res = DX(mc68kcpu) & m68ki_read_8((mc68kcpu), 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);
-
- m68ki_write_8((mc68kcpu), ea, (mc68kcpu)->not_z_flag);
-}
-
-
-void m68000_base_device_ops::m68k_op_and_8_re_ix(m68000_base_device* mc68kcpu)
-{
- UINT32 ea = EA_AY_IX_8(mc68kcpu);
- UINT32 res = DX(mc68kcpu) & m68ki_read_8((mc68kcpu), 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);
-
- m68ki_write_8((mc68kcpu), ea, (mc68kcpu)->not_z_flag);
-}
-
-
-void m68000_base_device_ops::m68k_op_and_8_re_aw(m68000_base_device* mc68kcpu)
-{
- UINT32 ea = EA_AW_8(mc68kcpu);
- UINT32 res = DX(mc68kcpu) & m68ki_read_8((mc68kcpu), 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);
-
- m68ki_write_8((mc68kcpu), ea, (mc68kcpu)->not_z_flag);
-}
-
-
-void m68000_base_device_ops::m68k_op_and_8_re_al(m68000_base_device* mc68kcpu)
-{
- UINT32 ea = EA_AL_8(mc68kcpu);
- UINT32 res = DX(mc68kcpu) & m68ki_read_8((mc68kcpu), 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);
-
- m68ki_write_8((mc68kcpu), ea, (mc68kcpu)->not_z_flag);
-}
-
-
-void m68000_base_device_ops::m68k_op_and_16_re_ai(m68000_base_device* mc68kcpu)
-{
- UINT32 ea = EA_AY_AI_16(mc68kcpu);
- UINT32 res = DX(mc68kcpu) & m68ki_read_16((mc68kcpu), 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);
-
- m68ki_write_16((mc68kcpu), ea, (mc68kcpu)->not_z_flag);
-}
-
-
-void m68000_base_device_ops::m68k_op_and_16_re_pi(m68000_base_device* mc68kcpu)
-{
- UINT32 ea = EA_AY_PI_16(mc68kcpu);
- UINT32 res = DX(mc68kcpu) & m68ki_read_16((mc68kcpu), 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);
-
- m68ki_write_16((mc68kcpu), ea, (mc68kcpu)->not_z_flag);
-}
-
-
-void m68000_base_device_ops::m68k_op_and_16_re_pd(m68000_base_device* mc68kcpu)
-{
- UINT32 ea = EA_AY_PD_16(mc68kcpu);
- UINT32 res = DX(mc68kcpu) & m68ki_read_16((mc68kcpu), 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);
-
- m68ki_write_16((mc68kcpu), ea, (mc68kcpu)->not_z_flag);
-}
-
-
-void m68000_base_device_ops::m68k_op_and_16_re_di(m68000_base_device* mc68kcpu)
-{
- UINT32 ea = EA_AY_DI_16(mc68kcpu);
- UINT32 res = DX(mc68kcpu) & m68ki_read_16((mc68kcpu), 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);
-
- m68ki_write_16((mc68kcpu), ea, (mc68kcpu)->not_z_flag);
-}
-
-
-void m68000_base_device_ops::m68k_op_and_16_re_ix(m68000_base_device* mc68kcpu)
-{
- UINT32 ea = EA_AY_IX_16(mc68kcpu);
- UINT32 res = DX(mc68kcpu) & m68ki_read_16((mc68kcpu), 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);
-
- m68ki_write_16((mc68kcpu), ea, (mc68kcpu)->not_z_flag);
-}
-
-
-void m68000_base_device_ops::m68k_op_and_16_re_aw(m68000_base_device* mc68kcpu)
-{
- UINT32 ea = EA_AW_16(mc68kcpu);
- UINT32 res = DX(mc68kcpu) & m68ki_read_16((mc68kcpu), 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);
-
- m68ki_write_16((mc68kcpu), ea, (mc68kcpu)->not_z_flag);
-}
-
-
-void m68000_base_device_ops::m68k_op_and_16_re_al(m68000_base_device* mc68kcpu)
-{
- UINT32 ea = EA_AL_16(mc68kcpu);
- UINT32 res = DX(mc68kcpu) & m68ki_read_16((mc68kcpu), 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);
-
- m68ki_write_16((mc68kcpu), ea, (mc68kcpu)->not_z_flag);
-}
-
-
-void m68000_base_device_ops::m68k_op_and_32_re_ai(m68000_base_device* mc68kcpu)
-{
- UINT32 ea = EA_AY_AI_32(mc68kcpu);
- UINT32 res = DX(mc68kcpu) & m68ki_read_32((mc68kcpu), ea);
-
- (mc68kcpu)->n_flag = NFLAG_32(res);
- (mc68kcpu)->not_z_flag = res;
- (mc68kcpu)->c_flag = CFLAG_CLEAR;
- (mc68kcpu)->v_flag = VFLAG_CLEAR;
-
- m68ki_write_32((mc68kcpu), ea, res);
-}
-
-
-void m68000_base_device_ops::m68k_op_and_32_re_pi(m68000_base_device* mc68kcpu)
-{
- UINT32 ea = EA_AY_PI_32(mc68kcpu);
- UINT32 res = DX(mc68kcpu) & m68ki_read_32((mc68kcpu), ea);
-
- (mc68kcpu)->n_flag = NFLAG_32(res);
- (mc68kcpu)->not_z_flag = res;
- (mc68kcpu)->c_flag = CFLAG_CLEAR;
- (mc68kcpu)->v_flag = VFLAG_CLEAR;
-
- m68ki_write_32((mc68kcpu), ea, res);
-}
-
-
-void m68000_base_device_ops::m68k_op_and_32_re_pd(m68000_base_device* mc68kcpu)
-{
- UINT32 ea = EA_AY_PD_32(mc68kcpu);
- UINT32 res = DX(mc68kcpu) & m68ki_read_32((mc68kcpu), ea);
-
- (mc68kcpu)->n_flag = NFLAG_32(res);
- (mc68kcpu)->not_z_flag = res;
- (mc68kcpu)->c_flag = CFLAG_CLEAR;
- (mc68kcpu)->v_flag = VFLAG_CLEAR;
-
- m68ki_write_32((mc68kcpu), ea, res);
-}
-
-
-void m68000_base_device_ops::m68k_op_and_32_re_di(m68000_base_device* mc68kcpu)
-{
- UINT32 ea = EA_AY_DI_32(mc68kcpu);
- UINT32 res = DX(mc68kcpu) & m68ki_read_32((mc68kcpu), ea);
-
- (mc68kcpu)->n_flag = NFLAG_32(res);
- (mc68kcpu)->not_z_flag = res;
- (mc68kcpu)->c_flag = CFLAG_CLEAR;
- (mc68kcpu)->v_flag = VFLAG_CLEAR;
-
- m68ki_write_32((mc68kcpu), ea, res);
-}
-
-
-void m68000_base_device_ops::m68k_op_and_32_re_ix(m68000_base_device* mc68kcpu)
-{
- UINT32 ea = EA_AY_IX_32(mc68kcpu);
- UINT32 res = DX(mc68kcpu) & m68ki_read_32((mc68kcpu), ea);
-
- (mc68kcpu)->n_flag = NFLAG_32(res);
- (mc68kcpu)->not_z_flag = res;
- (mc68kcpu)->c_flag = CFLAG_CLEAR;
- (mc68kcpu)->v_flag = VFLAG_CLEAR;
-
- m68ki_write_32((mc68kcpu), ea, res);
-}
-
-
-void m68000_base_device_ops::m68k_op_and_32_re_aw(m68000_base_device* mc68kcpu)
-{
- UINT32 ea = EA_AW_32(mc68kcpu);
- UINT32 res = DX(mc68kcpu) & m68ki_read_32((mc68kcpu), ea);
-
- (mc68kcpu)->n_flag = NFLAG_32(res);
- (mc68kcpu)->not_z_flag = res;
- (mc68kcpu)->c_flag = CFLAG_CLEAR;
- (mc68kcpu)->v_flag = VFLAG_CLEAR;
-
- m68ki_write_32((mc68kcpu), ea, res);
-}
-
-
-void m68000_base_device_ops::m68k_op_and_32_re_al(m68000_base_device* mc68kcpu)
-{
- UINT32 ea = EA_AL_32(mc68kcpu);
- UINT32 res = DX(mc68kcpu) & m68ki_read_32((mc68kcpu), ea);
-
- (mc68kcpu)->n_flag = NFLAG_32(res);
- (mc68kcpu)->not_z_flag = res;
- (mc68kcpu)->c_flag = CFLAG_CLEAR;
- (mc68kcpu)->v_flag = VFLAG_CLEAR;
-
- m68ki_write_32((mc68kcpu), ea, res);
-}
-
-
-void m68000_base_device_ops::m68k_op_andi_8_d(m68000_base_device* mc68kcpu)
-{
- (mc68kcpu)->not_z_flag = MASK_OUT_ABOVE_8(DY(mc68kcpu) &= (OPER_I_8(mc68kcpu) | 0xffffff00));
-
- (mc68kcpu)->n_flag = NFLAG_8((mc68kcpu)->not_z_flag);
- (mc68kcpu)->c_flag = CFLAG_CLEAR;
- (mc68kcpu)->v_flag = VFLAG_CLEAR;
-}
-
-
-void m68000_base_device_ops::m68k_op_andi_8_ai(m68000_base_device* mc68kcpu)
-{
- UINT32 src = OPER_I_8(mc68kcpu);
- UINT32 ea = EA_AY_AI_8(mc68kcpu);
- UINT32 res = src & m68ki_read_8((mc68kcpu), ea);
-
- (mc68kcpu)->n_flag = NFLAG_8(res);
- (mc68kcpu)->not_z_flag = res;
- (mc68kcpu)->c_flag = CFLAG_CLEAR;
- (mc68kcpu)->v_flag = VFLAG_CLEAR;
-
- m68ki_write_8((mc68kcpu), ea, res);
-}
-
-
-void m68000_base_device_ops::m68k_op_andi_8_pi(m68000_base_device* mc68kcpu)
-{
- UINT32 src = OPER_I_8(mc68kcpu);
- UINT32 ea = EA_AY_PI_8(mc68kcpu);
- UINT32 res = src & m68ki_read_8((mc68kcpu), ea);
-
- (mc68kcpu)->n_flag = NFLAG_8(res);
- (mc68kcpu)->not_z_flag = res;
- (mc68kcpu)->c_flag = CFLAG_CLEAR;
- (mc68kcpu)->v_flag = VFLAG_CLEAR;
-
- m68ki_write_8((mc68kcpu), ea, res);
-}
-
-
-void m68000_base_device_ops::m68k_op_andi_8_pi7(m68000_base_device* mc68kcpu)
-{
- UINT32 src = OPER_I_8(mc68kcpu);
- UINT32 ea = EA_A7_PI_8(mc68kcpu);
- UINT32 res = src & m68ki_read_8((mc68kcpu), ea);
-
- (mc68kcpu)->n_flag = NFLAG_8(res);
- (mc68kcpu)->not_z_flag = res;
- (mc68kcpu)->c_flag = CFLAG_CLEAR;
- (mc68kcpu)->v_flag = VFLAG_CLEAR;
-
- m68ki_write_8((mc68kcpu), ea, res);
-}
-
-
-void m68000_base_device_ops::m68k_op_andi_8_pd(m68000_base_device* mc68kcpu)
-{
- UINT32 src = OPER_I_8(mc68kcpu);
- UINT32 ea = EA_AY_PD_8(mc68kcpu);
- UINT32 res = src & m68ki_read_8((mc68kcpu), ea);
-
- (mc68kcpu)->n_flag = NFLAG_8(res);
- (mc68kcpu)->not_z_flag = res;
- (mc68kcpu)->c_flag = CFLAG_CLEAR;
- (mc68kcpu)->v_flag = VFLAG_CLEAR;
-
- m68ki_write_8((mc68kcpu), ea, res);
-}
-
-
-void m68000_base_device_ops::m68k_op_andi_8_pd7(m68000_base_device* mc68kcpu)
-{
- UINT32 src = OPER_I_8(mc68kcpu);
- UINT32 ea = EA_A7_PD_8(mc68kcpu);
- UINT32 res = src & m68ki_read_8((mc68kcpu), ea);
-
- (mc68kcpu)->n_flag = NFLAG_8(res);
- (mc68kcpu)->not_z_flag = res;
- (mc68kcpu)->c_flag = CFLAG_CLEAR;
- (mc68kcpu)->v_flag = VFLAG_CLEAR;
-
- m68ki_write_8((mc68kcpu), ea, res);
-}
-
-
-void m68000_base_device_ops::m68k_op_andi_8_di(m68000_base_device* mc68kcpu)
-{
- UINT32 src = OPER_I_8(mc68kcpu);
- UINT32 ea = EA_AY_DI_8(mc68kcpu);
- UINT32 res = src & m68ki_read_8((mc68kcpu), ea);
-
- (mc68kcpu)->n_flag = NFLAG_8(res);
- (mc68kcpu)->not_z_flag = res;
- (mc68kcpu)->c_flag = CFLAG_CLEAR;
- (mc68kcpu)->v_flag = VFLAG_CLEAR;
-
- m68ki_write_8((mc68kcpu), ea, res);
-}
-
-
-void m68000_base_device_ops::m68k_op_andi_8_ix(m68000_base_device* mc68kcpu)
-{
- UINT32 src = OPER_I_8(mc68kcpu);
- UINT32 ea = EA_AY_IX_8(mc68kcpu);
- UINT32 res = src & m68ki_read_8((mc68kcpu), ea);
-
- (mc68kcpu)->n_flag = NFLAG_8(res);
- (mc68kcpu)->not_z_flag = res;
- (mc68kcpu)->c_flag = CFLAG_CLEAR;
- (mc68kcpu)->v_flag = VFLAG_CLEAR;
-
- m68ki_write_8((mc68kcpu), ea, res);
-}
-
-
-void m68000_base_device_ops::m68k_op_andi_8_aw(m68000_base_device* mc68kcpu)
-{
- UINT32 src = OPER_I_8(mc68kcpu);
- UINT32 ea = EA_AW_8(mc68kcpu);
- UINT32 res = src & m68ki_read_8((mc68kcpu), ea);
-
- (mc68kcpu)->n_flag = NFLAG_8(res);
- (mc68kcpu)->not_z_flag = res;
- (mc68kcpu)->c_flag = CFLAG_CLEAR;
- (mc68kcpu)->v_flag = VFLAG_CLEAR;
-
- m68ki_write_8((mc68kcpu), ea, res);
-}
-
-
-void m68000_base_device_ops::m68k_op_andi_8_al(m68000_base_device* mc68kcpu)
-{
- UINT32 src = OPER_I_8(mc68kcpu);
- UINT32 ea = EA_AL_8(mc68kcpu);
- UINT32 res = src & m68ki_read_8((mc68kcpu), ea);
-
- (mc68kcpu)->n_flag = NFLAG_8(res);
- (mc68kcpu)->not_z_flag = res;
- (mc68kcpu)->c_flag = CFLAG_CLEAR;
- (mc68kcpu)->v_flag = VFLAG_CLEAR;
-
- m68ki_write_8((mc68kcpu), ea, res);
-}
-
-
-void m68000_base_device_ops::m68k_op_andi_16_d(m68000_base_device* mc68kcpu)
-{
- (mc68kcpu)->not_z_flag = MASK_OUT_ABOVE_16(DY(mc68kcpu) &= (OPER_I_16(mc68kcpu) | 0xffff0000));
-
- (mc68kcpu)->n_flag = NFLAG_16((mc68kcpu)->not_z_flag);
- (mc68kcpu)->c_flag = CFLAG_CLEAR;
- (mc68kcpu)->v_flag = VFLAG_CLEAR;
-}
-
-
-void m68000_base_device_ops::m68k_op_andi_16_ai(m68000_base_device* mc68kcpu)
-{
- UINT32 src = OPER_I_16(mc68kcpu);
- UINT32 ea = EA_AY_AI_16(mc68kcpu);
- UINT32 res = src & m68ki_read_16((mc68kcpu), ea);
-
- (mc68kcpu)->n_flag = NFLAG_16(res);
- (mc68kcpu)->not_z_flag = res;
- (mc68kcpu)->c_flag = CFLAG_CLEAR;
- (mc68kcpu)->v_flag = VFLAG_CLEAR;
-
- m68ki_write_16((mc68kcpu), ea, res);
-}
-
-
-void m68000_base_device_ops::m68k_op_andi_16_pi(m68000_base_device* mc68kcpu)
-{
- UINT32 src = OPER_I_16(mc68kcpu);
- UINT32 ea = EA_AY_PI_16(mc68kcpu);
- UINT32 res = src & m68ki_read_16((mc68kcpu), ea);
-
- (mc68kcpu)->n_flag = NFLAG_16(res);
- (mc68kcpu)->not_z_flag = res;
- (mc68kcpu)->c_flag = CFLAG_CLEAR;
- (mc68kcpu)->v_flag = VFLAG_CLEAR;
-
- m68ki_write_16((mc68kcpu), ea, res);
-}
-
-
-void m68000_base_device_ops::m68k_op_andi_16_pd(m68000_base_device* mc68kcpu)
-{
- UINT32 src = OPER_I_16(mc68kcpu);
- UINT32 ea = EA_AY_PD_16(mc68kcpu);
- UINT32 res = src & m68ki_read_16((mc68kcpu), ea);
-
- (mc68kcpu)->n_flag = NFLAG_16(res);
- (mc68kcpu)->not_z_flag = res;
- (mc68kcpu)->c_flag = CFLAG_CLEAR;
- (mc68kcpu)->v_flag = VFLAG_CLEAR;
-
- m68ki_write_16((mc68kcpu), ea, res);
-}
-
-
-void m68000_base_device_ops::m68k_op_andi_16_di(m68000_base_device* mc68kcpu)
-{
- UINT32 src = OPER_I_16(mc68kcpu);
- UINT32 ea = EA_AY_DI_16(mc68kcpu);
- UINT32 res = src & m68ki_read_16((mc68kcpu), ea);
-
- (mc68kcpu)->n_flag = NFLAG_16(res);
- (mc68kcpu)->not_z_flag = res;
- (mc68kcpu)->c_flag = CFLAG_CLEAR;
- (mc68kcpu)->v_flag = VFLAG_CLEAR;
-
- m68ki_write_16((mc68kcpu), ea, res);
-}
-
-
-void m68000_base_device_ops::m68k_op_andi_16_ix(m68000_base_device* mc68kcpu)
-{
- UINT32 src = OPER_I_16(mc68kcpu);
- UINT32 ea = EA_AY_IX_16(mc68kcpu);
- UINT32 res = src & m68ki_read_16((mc68kcpu), ea);
-
- (mc68kcpu)->n_flag = NFLAG_16(res);
- (mc68kcpu)->not_z_flag = res;
- (mc68kcpu)->c_flag = CFLAG_CLEAR;
- (mc68kcpu)->v_flag = VFLAG_CLEAR;
-
- m68ki_write_16((mc68kcpu), ea, res);
-}
-
-
-void m68000_base_device_ops::m68k_op_andi_16_aw(m68000_base_device* mc68kcpu)
-{
- UINT32 src = OPER_I_16(mc68kcpu);
- UINT32 ea = EA_AW_16(mc68kcpu);
- UINT32 res = src & m68ki_read_16((mc68kcpu), ea);
-
- (mc68kcpu)->n_flag = NFLAG_16(res);
- (mc68kcpu)->not_z_flag = res;
- (mc68kcpu)->c_flag = CFLAG_CLEAR;
- (mc68kcpu)->v_flag = VFLAG_CLEAR;
-
- m68ki_write_16((mc68kcpu), ea, res);
-}
-
-
-void m68000_base_device_ops::m68k_op_andi_16_al(m68000_base_device* mc68kcpu)
-{
- UINT32 src = OPER_I_16(mc68kcpu);
- UINT32 ea = EA_AL_16(mc68kcpu);
- UINT32 res = src & m68ki_read_16((mc68kcpu), ea);
-
- (mc68kcpu)->n_flag = NFLAG_16(res);
- (mc68kcpu)->not_z_flag = res;
- (mc68kcpu)->c_flag = CFLAG_CLEAR;
- (mc68kcpu)->v_flag = VFLAG_CLEAR;
-
- m68ki_write_16((mc68kcpu), ea, res);
-}
-
-
-void m68000_base_device_ops::m68k_op_andi_32_d(m68000_base_device* mc68kcpu)
-{
- (mc68kcpu)->not_z_flag = DY(mc68kcpu) &= (OPER_I_32(mc68kcpu));
-
- (mc68kcpu)->n_flag = NFLAG_32((mc68kcpu)->not_z_flag);
- (mc68kcpu)->c_flag = CFLAG_CLEAR;
- (mc68kcpu)->v_flag = VFLAG_CLEAR;
-}
-
-
-void m68000_base_device_ops::m68k_op_andi_32_ai(m68000_base_device* mc68kcpu)
-{
- UINT32 src = OPER_I_32(mc68kcpu);
- UINT32 ea = EA_AY_AI_32(mc68kcpu);
- UINT32 res = src & m68ki_read_32((mc68kcpu), ea);
-
- (mc68kcpu)->n_flag = NFLAG_32(res);
- (mc68kcpu)->not_z_flag = res;
- (mc68kcpu)->c_flag = CFLAG_CLEAR;
- (mc68kcpu)->v_flag = VFLAG_CLEAR;
-
- m68ki_write_32((mc68kcpu), ea, res);
-}
-
-
-void m68000_base_device_ops::m68k_op_andi_32_pi(m68000_base_device* mc68kcpu)
-{
- UINT32 src = OPER_I_32(mc68kcpu);
- UINT32 ea = EA_AY_PI_32(mc68kcpu);
- UINT32 res = src & m68ki_read_32((mc68kcpu), ea);
-
- (mc68kcpu)->n_flag = NFLAG_32(res);
- (mc68kcpu)->not_z_flag = res;
- (mc68kcpu)->c_flag = CFLAG_CLEAR;
- (mc68kcpu)->v_flag = VFLAG_CLEAR;
-
- m68ki_write_32((mc68kcpu), ea, res);
-}
-
-
-void m68000_base_device_ops::m68k_op_andi_32_pd(m68000_base_device* mc68kcpu)
-{
- UINT32 src = OPER_I_32(mc68kcpu);
- UINT32 ea = EA_AY_PD_32(mc68kcpu);
- UINT32 res = src & m68ki_read_32((mc68kcpu), ea);
-
- (mc68kcpu)->n_flag = NFLAG_32(res);
- (mc68kcpu)->not_z_flag = res;
- (mc68kcpu)->c_flag = CFLAG_CLEAR;
- (mc68kcpu)->v_flag = VFLAG_CLEAR;
-
- m68ki_write_32((mc68kcpu), ea, res);
-}
-
-
-void m68000_base_device_ops::m68k_op_andi_32_di(m68000_base_device* mc68kcpu)
-{
- UINT32 src = OPER_I_32(mc68kcpu);
- UINT32 ea = EA_AY_DI_32(mc68kcpu);
- UINT32 res = src & m68ki_read_32((mc68kcpu), ea);
-
- (mc68kcpu)->n_flag = NFLAG_32(res);
- (mc68kcpu)->not_z_flag = res;
- (mc68kcpu)->c_flag = CFLAG_CLEAR;
- (mc68kcpu)->v_flag = VFLAG_CLEAR;
-
- m68ki_write_32((mc68kcpu), ea, res);
-}
-
-
-void m68000_base_device_ops::m68k_op_andi_32_ix(m68000_base_device* mc68kcpu)
-{
- UINT32 src = OPER_I_32(mc68kcpu);
- UINT32 ea = EA_AY_IX_32(mc68kcpu);
- UINT32 res = src & m68ki_read_32((mc68kcpu), ea);
-
- (mc68kcpu)->n_flag = NFLAG_32(res);
- (mc68kcpu)->not_z_flag = res;
- (mc68kcpu)->c_flag = CFLAG_CLEAR;
- (mc68kcpu)->v_flag = VFLAG_CLEAR;
-
- m68ki_write_32((mc68kcpu), ea, res);
-}
-
-
-void m68000_base_device_ops::m68k_op_andi_32_aw(m68000_base_device* mc68kcpu)
-{
- UINT32 src = OPER_I_32(mc68kcpu);
- UINT32 ea = EA_AW_32(mc68kcpu);
- UINT32 res = src & m68ki_read_32((mc68kcpu), ea);
-
- (mc68kcpu)->n_flag = NFLAG_32(res);
- (mc68kcpu)->not_z_flag = res;
- (mc68kcpu)->c_flag = CFLAG_CLEAR;
- (mc68kcpu)->v_flag = VFLAG_CLEAR;
-
- m68ki_write_32((mc68kcpu), ea, res);
-}
-
-
-void m68000_base_device_ops::m68k_op_andi_32_al(m68000_base_device* mc68kcpu)
-{
- UINT32 src = OPER_I_32(mc68kcpu);
- UINT32 ea = EA_AL_32(mc68kcpu);
- UINT32 res = src & m68ki_read_32((mc68kcpu), ea);
-
- (mc68kcpu)->n_flag = NFLAG_32(res);
- (mc68kcpu)->not_z_flag = res;
- (mc68kcpu)->c_flag = CFLAG_CLEAR;
- (mc68kcpu)->v_flag = VFLAG_CLEAR;
-
- m68ki_write_32((mc68kcpu), ea, res);
-}
-
-
-void m68000_base_device_ops::m68k_op_andi_16_toc(m68000_base_device* mc68kcpu)
-{
- m68ki_set_ccr((mc68kcpu), m68ki_get_ccr(mc68kcpu) & OPER_I_16(mc68kcpu));
-}
-
-
-void m68000_base_device_ops::m68k_op_andi_16_tos(m68000_base_device* mc68kcpu)
-{
- if((mc68kcpu)->s_flag)
- {
- UINT32 src = OPER_I_16(mc68kcpu);
- m68ki_trace_t0(mc68kcpu); /* auto-disable (see m68kcpu.h) */
- m68ki_set_sr((mc68kcpu), m68ki_get_sr(mc68kcpu) & src);
- return;
- }
- m68ki_exception_privilege_violation(mc68kcpu);
-}
-
-
-void m68000_base_device_ops::m68k_op_asr_8_s(m68000_base_device* mc68kcpu)
-{
- UINT32* r_dst = &DY(mc68kcpu);
- UINT32 shift = ((((mc68kcpu)->ir >> 9) - 1) & 7) + 1;
- UINT32 src = MASK_OUT_ABOVE_8(*r_dst);
- UINT32 res = src >> shift;
-
- if(shift != 0)
- (mc68kcpu)->remaining_cycles -= shift<<(mc68kcpu)->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);
-}
-
-
-void m68000_base_device_ops::m68k_op_asr_16_s(m68000_base_device* mc68kcpu)
-{
- UINT32* r_dst = &DY(mc68kcpu);
- UINT32 shift = ((((mc68kcpu)->ir >> 9) - 1) & 7) + 1;
- UINT32 src = MASK_OUT_ABOVE_16(*r_dst);
- UINT32 res = src >> shift;
-
- if(shift != 0)
- (mc68kcpu)->remaining_cycles -= shift<<(mc68kcpu)->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);
-}
-
-
-void m68000_base_device_ops::m68k_op_asr_32_s(m68000_base_device* mc68kcpu)
-{
- UINT32* r_dst = &DY(mc68kcpu);
- UINT32 shift = ((((mc68kcpu)->ir >> 9) - 1) & 7) + 1;
- UINT32 src = *r_dst;
- UINT32 res = src >> shift;
-
- if(shift != 0)
- (mc68kcpu)->remaining_cycles -= shift<<(mc68kcpu)->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);
-}
-
-
-void m68000_base_device_ops::m68k_op_asr_8_r(m68000_base_device* mc68kcpu)
-{
- UINT32* r_dst = &DY(mc68kcpu);
- UINT32 shift = DX(mc68kcpu) & 0x3f;
- UINT32 src = MASK_OUT_ABOVE_8(*r_dst);
- UINT32 res = src >> shift;
-
- if(shift != 0)
- {
- (mc68kcpu)->remaining_cycles -= shift<<(mc68kcpu)->cyc_shift;
-
- if(shift < 8)
- {
- if(GET_MSB_8(src))
- res |= m68ki_shift_8_table[shift];
-
- *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;
- 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;
- 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;
- return;
- }
-
- (mc68kcpu)->c_flag = CFLAG_CLEAR;
- (mc68kcpu)->n_flag = NFLAG_8(src);
- (mc68kcpu)->not_z_flag = src;
- (mc68kcpu)->v_flag = VFLAG_CLEAR;
-}
-
-
-void m68000_base_device_ops::m68k_op_asr_16_r(m68000_base_device* mc68kcpu)
-{
- UINT32* r_dst = &DY(mc68kcpu);
- UINT32 shift = DX(mc68kcpu) & 0x3f;
- UINT32 src = MASK_OUT_ABOVE_16(*r_dst);
- UINT32 res = src >> shift;
-
- if(shift != 0)
- {
- (mc68kcpu)->remaining_cycles -= shift<<(mc68kcpu)->cyc_shift;
-
- if(shift < 16)
- {
- if(GET_MSB_16(src))
- res |= m68ki_shift_16_table[shift];
-
- *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;
- 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;
- 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;
- return;
- }
-
- (mc68kcpu)->c_flag = CFLAG_CLEAR;
- (mc68kcpu)->n_flag = NFLAG_16(src);
- (mc68kcpu)->not_z_flag = src;
- (mc68kcpu)->v_flag = VFLAG_CLEAR;
-}
-
-
-void m68000_base_device_ops::m68k_op_asr_32_r(m68000_base_device* mc68kcpu)
-{
- UINT32* r_dst = &DY(mc68kcpu);
- UINT32 shift = DX(mc68kcpu) & 0x3f;
- UINT32 src = *r_dst;
- UINT32 res = src >> shift;
-
- if(shift != 0)
- {
- (mc68kcpu)->remaining_cycles -= shift<<(mc68kcpu)->cyc_shift;
-
- if(shift < 32)
- {
- if(GET_MSB_32(src))
- res |= m68ki_shift_32_table[shift];
-
- *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;
- 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;
- 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;
- return;
- }
-
- (mc68kcpu)->c_flag = CFLAG_CLEAR;
- (mc68kcpu)->n_flag = NFLAG_32(src);
- (mc68kcpu)->not_z_flag = src;
- (mc68kcpu)->v_flag = VFLAG_CLEAR;
-}
-
-
-void m68000_base_device_ops::m68k_op_asr_16_ai(m68000_base_device* mc68kcpu)
-{
- UINT32 ea = EA_AY_AI_16(mc68kcpu);
- UINT32 src = m68ki_read_16((mc68kcpu), ea);
- UINT32 res = src >> 1;
-
- if(GET_MSB_16(src))
- res |= 0x8000;
-
- m68ki_write_16((mc68kcpu), 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;
-}
-
-
-void m68000_base_device_ops::m68k_op_asr_16_pi(m68000_base_device* mc68kcpu)
-{
- UINT32 ea = EA_AY_PI_16(mc68kcpu);
- UINT32 src = m68ki_read_16((mc68kcpu), ea);
- UINT32 res = src >> 1;
-
- if(GET_MSB_16(src))
- res |= 0x8000;
-
- m68ki_write_16((mc68kcpu), 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;
-}
-
-
-void m68000_base_device_ops::m68k_op_asr_16_pd(m68000_base_device* mc68kcpu)
-{
- UINT32 ea = EA_AY_PD_16(mc68kcpu);
- UINT32 src = m68ki_read_16((mc68kcpu), ea);
- UINT32 res = src >> 1;
-
- if(GET_MSB_16(src))
- res |= 0x8000;
-
- m68ki_write_16((mc68kcpu), 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;
-}
-
-
-void m68000_base_device_ops::m68k_op_asr_16_di(m68000_base_device* mc68kcpu)
-{
- UINT32 ea = EA_AY_DI_16(mc68kcpu);
- UINT32 src = m68ki_read_16((mc68kcpu), ea);
- UINT32 res = src >> 1;
-
- if(GET_MSB_16(src))
- res |= 0x8000;
-
- m68ki_write_16((mc68kcpu), 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;
-}
-
-
-void m68000_base_device_ops::m68k_op_asr_16_ix(m68000_base_device* mc68kcpu)
-{
- UINT32 ea = EA_AY_IX_16(mc68kcpu);
- UINT32 src = m68ki_read_16((mc68kcpu), ea);
- UINT32 res = src >> 1;
-
- if(GET_MSB_16(src))
- res |= 0x8000;
-
- m68ki_write_16((mc68kcpu), 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;
-}
-
-
-void m68000_base_device_ops::m68k_op_asr_16_aw(m68000_base_device* mc68kcpu)
-{
- UINT32 ea = EA_AW_16(mc68kcpu);
- UINT32 src = m68ki_read_16((mc68kcpu), ea);
- UINT32 res = src >> 1;
-
- if(GET_MSB_16(src))
- res |= 0x8000;
-
- m68ki_write_16((mc68kcpu), 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;
-}
-
-
-void m68000_base_device_ops::m68k_op_asr_16_al(m68000_base_device* mc68kcpu)
-{
- UINT32 ea = EA_AL_16(mc68kcpu);
- UINT32 src = m68ki_read_16((mc68kcpu), ea);
- UINT32 res = src >> 1;
-
- if(GET_MSB_16(src))
- res |= 0x8000;
-
- m68ki_write_16((mc68kcpu), 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;
-}
-
-
-void m68000_base_device_ops::m68k_op_asl_8_s(m68000_base_device* mc68kcpu)
-{
- UINT32* r_dst = &DY(mc68kcpu);
- UINT32 shift = ((((mc68kcpu)->ir >> 9) - 1) & 7) + 1;
- UINT32 src = MASK_OUT_ABOVE_8(*r_dst);
- UINT32 res = MASK_OUT_ABOVE_8(src << shift);
-
- if(shift != 0)
- (mc68kcpu)->remaining_cycles -= shift<<(mc68kcpu)->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;
- src &= m68ki_shift_8_table[shift + 1];
- (mc68kcpu)->v_flag = (!(src == 0 || (src == m68ki_shift_8_table[shift + 1] && shift < 8)))<<7;
-}
-
-
-void m68000_base_device_ops::m68k_op_asl_16_s(m68000_base_device* mc68kcpu)
-{
- UINT32* r_dst = &DY(mc68kcpu);
- UINT32 shift = ((((mc68kcpu)->ir >> 9) - 1) & 7) + 1;
- UINT32 src = MASK_OUT_ABOVE_16(*r_dst);
- UINT32 res = MASK_OUT_ABOVE_16(src << shift);
-
- if(shift != 0)
- (mc68kcpu)->remaining_cycles -= shift<<(mc68kcpu)->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);
- src &= m68ki_shift_16_table[shift + 1];
- (mc68kcpu)->v_flag = (!(src == 0 || src == m68ki_shift_16_table[shift + 1]))<<7;
-}
-
-
-void m68000_base_device_ops::m68k_op_asl_32_s(m68000_base_device* mc68kcpu)
-{
- UINT32* r_dst = &DY(mc68kcpu);
- UINT32 shift = ((((mc68kcpu)->ir >> 9) - 1) & 7) + 1;
- UINT32 src = *r_dst;
- UINT32 res = MASK_OUT_ABOVE_32(src << shift);
-
- if(shift != 0)
- (mc68kcpu)->remaining_cycles -= shift<<(mc68kcpu)->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);
- src &= m68ki_shift_32_table[shift + 1];
- (mc68kcpu)->v_flag = (!(src == 0 || src == m68ki_shift_32_table[shift + 1]))<<7;
-}
-
-
-void m68000_base_device_ops::m68k_op_asl_8_r(m68000_base_device* mc68kcpu)
-{
- UINT32* r_dst = &DY(mc68kcpu);
- UINT32 shift = DX(mc68kcpu) & 0x3f;
- UINT32 src = MASK_OUT_ABOVE_8(*r_dst);
- UINT32 res = MASK_OUT_ABOVE_8(src << shift);
-
- if(shift != 0)
- {
- (mc68kcpu)->remaining_cycles -= shift<<(mc68kcpu)->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;
- src &= m68ki_shift_8_table[shift + 1];
- (mc68kcpu)->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;
- return;
- }
-
- (mc68kcpu)->c_flag = CFLAG_CLEAR;
- (mc68kcpu)->n_flag = NFLAG_8(src);
- (mc68kcpu)->not_z_flag = src;
- (mc68kcpu)->v_flag = VFLAG_CLEAR;
-}
-
-
-void m68000_base_device_ops::m68k_op_asl_16_r(m68000_base_device* mc68kcpu)
-{
- UINT32* r_dst = &DY(mc68kcpu);
- UINT32 shift = DX(mc68kcpu) & 0x3f;
- UINT32 src = MASK_OUT_ABOVE_16(*r_dst);
- UINT32 res = MASK_OUT_ABOVE_16(src << shift);
-
- if(shift != 0)
- {
- (mc68kcpu)->remaining_cycles -= shift<<(mc68kcpu)->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;
- src &= m68ki_shift_16_table[shift + 1];
- (mc68kcpu)->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;
- return;
- }
-
- (mc68kcpu)->c_flag = CFLAG_CLEAR;
- (mc68kcpu)->n_flag = NFLAG_16(src);
- (mc68kcpu)->not_z_flag = src;
- (mc68kcpu)->v_flag = VFLAG_CLEAR;
-}
-
-
-void m68000_base_device_ops::m68k_op_asl_32_r(m68000_base_device* mc68kcpu)
-{
- UINT32* r_dst = &DY(mc68kcpu);
- UINT32 shift = DX(mc68kcpu) & 0x3f;
- UINT32 src = *r_dst;
- UINT32 res = MASK_OUT_ABOVE_32(src << shift);
-
- if(shift != 0)
- {
- (mc68kcpu)->remaining_cycles -= shift<<(mc68kcpu)->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;
- src &= m68ki_shift_32_table[shift + 1];
- (mc68kcpu)->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;
- return;
- }
-
- (mc68kcpu)->c_flag = CFLAG_CLEAR;
- (mc68kcpu)->n_flag = NFLAG_32(src);
- (mc68kcpu)->not_z_flag = src;
- (mc68kcpu)->v_flag = VFLAG_CLEAR;
-}
-
-
-void m68000_base_device_ops::m68k_op_asl_16_ai(m68000_base_device* mc68kcpu)
-{
- UINT32 ea = EA_AY_AI_16(mc68kcpu);
- UINT32 src = m68ki_read_16((mc68kcpu), ea);
- UINT32 res = MASK_OUT_ABOVE_16(src << 1);
-
- m68ki_write_16((mc68kcpu), ea, res);
-
- (mc68kcpu)->n_flag = NFLAG_16(res);
- (mc68kcpu)->not_z_flag = res;
- (mc68kcpu)->x_flag = (mc68kcpu)->c_flag = src >> 7;
- src &= 0xc000;
- (mc68kcpu)->v_flag = (!(src == 0 || src == 0xc000))<<7;
-}
-
-
-void m68000_base_device_ops::m68k_op_asl_16_pi(m68000_base_device* mc68kcpu)
-{
- UINT32 ea = EA_AY_PI_16(mc68kcpu);
- UINT32 src = m68ki_read_16((mc68kcpu), ea);
- UINT32 res = MASK_OUT_ABOVE_16(src << 1);
-
- m68ki_write_16((mc68kcpu), ea, res);
-
- (mc68kcpu)->n_flag = NFLAG_16(res);
- (mc68kcpu)->not_z_flag = res;
- (mc68kcpu)->x_flag = (mc68kcpu)->c_flag = src >> 7;
- src &= 0xc000;
- (mc68kcpu)->v_flag = (!(src == 0 || src == 0xc000))<<7;
-}
-
-
-void m68000_base_device_ops::m68k_op_asl_16_pd(m68000_base_device* mc68kcpu)
-{
- UINT32 ea = EA_AY_PD_16(mc68kcpu);
- UINT32 src = m68ki_read_16((mc68kcpu), ea);
- UINT32 res = MASK_OUT_ABOVE_16(src << 1);
-
- m68ki_write_16((mc68kcpu), ea, res);
-
- (mc68kcpu)->n_flag = NFLAG_16(res);
- (mc68kcpu)->not_z_flag = res;
- (mc68kcpu)->x_flag = (mc68kcpu)->c_flag = src >> 7;
- src &= 0xc000;
- (mc68kcpu)->v_flag = (!(src == 0 || src == 0xc000))<<7;
-}
-
-
-void m68000_base_device_ops::m68k_op_asl_16_di(m68000_base_device* mc68kcpu)
-{
- UINT32 ea = EA_AY_DI_16(mc68kcpu);
- UINT32 src = m68ki_read_16((mc68kcpu), ea);
- UINT32 res = MASK_OUT_ABOVE_16(src << 1);
-
- m68ki_write_16((mc68kcpu), ea, res);
-
- (mc68kcpu)->n_flag = NFLAG_16(res);
- (mc68kcpu)->not_z_flag = res;
- (mc68kcpu)->x_flag = (mc68kcpu)->c_flag = src >> 7;
- src &= 0xc000;
- (mc68kcpu)->v_flag = (!(src == 0 || src == 0xc000))<<7;
-}
-
-
-void m68000_base_device_ops::m68k_op_asl_16_ix(m68000_base_device* mc68kcpu)
-{
- UINT32 ea = EA_AY_IX_16(mc68kcpu);
- UINT32 src = m68ki_read_16((mc68kcpu), ea);
- UINT32 res = MASK_OUT_ABOVE_16(src << 1);
-
- m68ki_write_16((mc68kcpu), ea, res);
-
- (mc68kcpu)->n_flag = NFLAG_16(res);
- (mc68kcpu)->not_z_flag = res;
- (mc68kcpu)->x_flag = (mc68kcpu)->c_flag = src >> 7;
- src &= 0xc000;
- (mc68kcpu)->v_flag = (!(src == 0 || src == 0xc000))<<7;
-}
-
-
-void m68000_base_device_ops::m68k_op_asl_16_aw(m68000_base_device* mc68kcpu)
-{
- UINT32 ea = EA_AW_16(mc68kcpu);
- UINT32 src = m68ki_read_16((mc68kcpu), ea);
- UINT32 res = MASK_OUT_ABOVE_16(src << 1);
-
- m68ki_write_16((mc68kcpu), ea, res);
-
- (mc68kcpu)->n_flag = NFLAG_16(res);
- (mc68kcpu)->not_z_flag = res;
- (mc68kcpu)->x_flag = (mc68kcpu)->c_flag = src >> 7;
- src &= 0xc000;
- (mc68kcpu)->v_flag = (!(src == 0 || src == 0xc000))<<7;
-}
-
-
-void m68000_base_device_ops::m68k_op_asl_16_al(m68000_base_device* mc68kcpu)
-{
- UINT32 ea = EA_AL_16(mc68kcpu);
- UINT32 src = m68ki_read_16((mc68kcpu), ea);
- UINT32 res = MASK_OUT_ABOVE_16(src << 1);
-
- m68ki_write_16((mc68kcpu), ea, res);
-
- (mc68kcpu)->n_flag = NFLAG_16(res);
- (mc68kcpu)->not_z_flag = res;
- (mc68kcpu)->x_flag = (mc68kcpu)->c_flag = src >> 7;
- src &= 0xc000;
- (mc68kcpu)->v_flag = (!(src == 0 || src == 0xc000))<<7;
-}
-
-
-void m68000_base_device_ops::m68k_op_bhi_8(m68000_base_device* mc68kcpu)
-{
- if(COND_HI(mc68kcpu))
- {
- m68ki_trace_t0(mc68kcpu); /* auto-disable (see m68kcpu.h) */
- m68ki_branch_8((mc68kcpu), MASK_OUT_ABOVE_8((mc68kcpu)->ir));
- return;
- }
- (mc68kcpu)->remaining_cycles -= (mc68kcpu)->cyc_bcc_notake_b;
-}
-
-
-void m68000_base_device_ops::m68k_op_bls_8(m68000_base_device* mc68kcpu)
-{
- if(COND_LS(mc68kcpu))
- {
- m68ki_trace_t0(mc68kcpu); /* auto-disable (see m68kcpu.h) */
- m68ki_branch_8((mc68kcpu), MASK_OUT_ABOVE_8((mc68kcpu)->ir));
- return;
- }
- (mc68kcpu)->remaining_cycles -= (mc68kcpu)->cyc_bcc_notake_b;
-}
-
-
-void m68000_base_device_ops::m68k_op_bcc_8(m68000_base_device* mc68kcpu)
-{
- if(COND_CC(mc68kcpu))
- {
- m68ki_trace_t0(mc68kcpu); /* auto-disable (see m68kcpu.h) */
- m68ki_branch_8((mc68kcpu), MASK_OUT_ABOVE_8((mc68kcpu)->ir));
- return;
- }
- (mc68kcpu)->remaining_cycles -= (mc68kcpu)->cyc_bcc_notake_b;
-}
-
-
-void m68000_base_device_ops::m68k_op_bcs_8(m68000_base_device* mc68kcpu)
-{
- if(COND_CS(mc68kcpu))
- {
- m68ki_trace_t0(mc68kcpu); /* auto-disable (see m68kcpu.h) */
- m68ki_branch_8((mc68kcpu), MASK_OUT_ABOVE_8((mc68kcpu)->ir));
- return;
- }
- (mc68kcpu)->remaining_cycles -= (mc68kcpu)->cyc_bcc_notake_b;
-}
-
-
-void m68000_base_device_ops::m68k_op_bne_8(m68000_base_device* mc68kcpu)
-{
- if(COND_NE(mc68kcpu))
- {
- m68ki_trace_t0(mc68kcpu); /* auto-disable (see m68kcpu.h) */
- m68ki_branch_8((mc68kcpu), MASK_OUT_ABOVE_8((mc68kcpu)->ir));
- return;
- }
- (mc68kcpu)->remaining_cycles -= (mc68kcpu)->cyc_bcc_notake_b;
-}
-
-
-void m68000_base_device_ops::m68k_op_beq_8(m68000_base_device* mc68kcpu)
-{
- if(COND_EQ(mc68kcpu))
- {
- m68ki_trace_t0(mc68kcpu); /* auto-disable (see m68kcpu.h) */
- m68ki_branch_8((mc68kcpu), MASK_OUT_ABOVE_8((mc68kcpu)->ir));
- return;
- }
- (mc68kcpu)->remaining_cycles -= (mc68kcpu)->cyc_bcc_notake_b;
-}
-
-
-void m68000_base_device_ops::m68k_op_bvc_8(m68000_base_device* mc68kcpu)
-{
- if(COND_VC(mc68kcpu))
- {
- m68ki_trace_t0(mc68kcpu); /* auto-disable (see m68kcpu.h) */
- m68ki_branch_8((mc68kcpu), MASK_OUT_ABOVE_8((mc68kcpu)->ir));
- return;
- }
- (mc68kcpu)->remaining_cycles -= (mc68kcpu)->cyc_bcc_notake_b;
-}
-
-
-void m68000_base_device_ops::m68k_op_bvs_8(m68000_base_device* mc68kcpu)
-{
- if(COND_VS(mc68kcpu))
- {
- m68ki_trace_t0(mc68kcpu); /* auto-disable (see m68kcpu.h) */
- m68ki_branch_8((mc68kcpu), MASK_OUT_ABOVE_8((mc68kcpu)->ir));
- return;
- }
- (mc68kcpu)->remaining_cycles -= (mc68kcpu)->cyc_bcc_notake_b;
-}
-
-
-void m68000_base_device_ops::m68k_op_bpl_8(m68000_base_device* mc68kcpu)
-{
- if(COND_PL(mc68kcpu))
- {
- m68ki_trace_t0(mc68kcpu); /* auto-disable (see m68kcpu.h) */
- m68ki_branch_8((mc68kcpu), MASK_OUT_ABOVE_8((mc68kcpu)->ir));
- return;
- }
- (mc68kcpu)->remaining_cycles -= (mc68kcpu)->cyc_bcc_notake_b;
-}
-
-
-void m68000_base_device_ops::m68k_op_bmi_8(m68000_base_device* mc68kcpu)
-{
- if(COND_MI(mc68kcpu))
- {
- m68ki_trace_t0(mc68kcpu); /* auto-disable (see m68kcpu.h) */
- m68ki_branch_8((mc68kcpu), MASK_OUT_ABOVE_8((mc68kcpu)->ir));
- return;
- }
- (mc68kcpu)->remaining_cycles -= (mc68kcpu)->cyc_bcc_notake_b;
-}
-
-
-void m68000_base_device_ops::m68k_op_bge_8(m68000_base_device* mc68kcpu)
-{
- if(COND_GE(mc68kcpu))
- {
- m68ki_trace_t0(mc68kcpu); /* auto-disable (see m68kcpu.h) */
- m68ki_branch_8((mc68kcpu), MASK_OUT_ABOVE_8((mc68kcpu)->ir));
- return;
- }
- (mc68kcpu)->remaining_cycles -= (mc68kcpu)->cyc_bcc_notake_b;
-}
-
-
-void m68000_base_device_ops::m68k_op_blt_8(m68000_base_device* mc68kcpu)
-{
- if(COND_LT(mc68kcpu))
- {
- m68ki_trace_t0(mc68kcpu); /* auto-disable (see m68kcpu.h) */
- m68ki_branch_8((mc68kcpu), MASK_OUT_ABOVE_8((mc68kcpu)->ir));
- return;
- }
- (mc68kcpu)->remaining_cycles -= (mc68kcpu)->cyc_bcc_notake_b;
-}
-
-
-void m68000_base_device_ops::m68k_op_bgt_8(m68000_base_device* mc68kcpu)
-{
- if(COND_GT(mc68kcpu))
- {
- m68ki_trace_t0(mc68kcpu); /* auto-disable (see m68kcpu.h) */
- m68ki_branch_8((mc68kcpu), MASK_OUT_ABOVE_8((mc68kcpu)->ir));
- return;
- }
- (mc68kcpu)->remaining_cycles -= (mc68kcpu)->cyc_bcc_notake_b;
-}
-
-
-void m68000_base_device_ops::m68k_op_ble_8(m68000_base_device* mc68kcpu)
-{
- if(COND_LE(mc68kcpu))
- {
- m68ki_trace_t0(mc68kcpu); /* auto-disable (see m68kcpu.h) */
- m68ki_branch_8((mc68kcpu), MASK_OUT_ABOVE_8((mc68kcpu)->ir));
- return;
- }
- (mc68kcpu)->remaining_cycles -= (mc68kcpu)->cyc_bcc_notake_b;
-}
-
-
-void m68000_base_device_ops::m68k_op_bhi_16(m68000_base_device* mc68kcpu)
-{
- if(COND_HI(mc68kcpu))
- {
- UINT32 offset = OPER_I_16(mc68kcpu);
- REG_PC(mc68kcpu) -= 2;
- m68ki_trace_t0(mc68kcpu); /* auto-disable (see m68kcpu.h) */
- m68ki_branch_16((mc68kcpu), offset);
- return;
- }
- REG_PC(mc68kcpu) += 2;
- (mc68kcpu)->remaining_cycles -= (mc68kcpu)->cyc_bcc_notake_w;
-}
-
-
-void m68000_base_device_ops::m68k_op_bls_16(m68000_base_device* mc68kcpu)
-{
- if(COND_LS(mc68kcpu))
- {
- UINT32 offset = OPER_I_16(mc68kcpu);
- REG_PC(mc68kcpu) -= 2;
- m68ki_trace_t0(mc68kcpu); /* auto-disable (see m68kcpu.h) */
- m68ki_branch_16((mc68kcpu), offset);
- return;
- }
- REG_PC(mc68kcpu) += 2;
- (mc68kcpu)->remaining_cycles -= (mc68kcpu)->cyc_bcc_notake_w;
-}
-
-
-void m68000_base_device_ops::m68k_op_bcc_16(m68000_base_device* mc68kcpu)
-{
- if(COND_CC(mc68kcpu))
- {
- UINT32 offset = OPER_I_16(mc68kcpu);
- REG_PC(mc68kcpu) -= 2;
- m68ki_trace_t0(mc68kcpu); /* auto-disable (see m68kcpu.h) */
- m68ki_branch_16((mc68kcpu), offset);
- return;
- }
- REG_PC(mc68kcpu) += 2;
- (mc68kcpu)->remaining_cycles -= (mc68kcpu)->cyc_bcc_notake_w;
-}
-
-
-void m68000_base_device_ops::m68k_op_bcs_16(m68000_base_device* mc68kcpu)
-{
- if(COND_CS(mc68kcpu))
- {
- UINT32 offset = OPER_I_16(mc68kcpu);
- REG_PC(mc68kcpu) -= 2;
- m68ki_trace_t0(mc68kcpu); /* auto-disable (see m68kcpu.h) */
- m68ki_branch_16((mc68kcpu), offset);
- return;
- }
- REG_PC(mc68kcpu) += 2;
- (mc68kcpu)->remaining_cycles -= (mc68kcpu)->cyc_bcc_notake_w;
-}
-
-
-void m68000_base_device_ops::m68k_op_bne_16(m68000_base_device* mc68kcpu)
-{
- if(COND_NE(mc68kcpu))
- {
- UINT32 offset = OPER_I_16(mc68kcpu);
- REG_PC(mc68kcpu) -= 2;
- m68ki_trace_t0(mc68kcpu); /* auto-disable (see m68kcpu.h) */
- m68ki_branch_16((mc68kcpu), offset);
- return;
- }
- REG_PC(mc68kcpu) += 2;
- (mc68kcpu)->remaining_cycles -= (mc68kcpu)->cyc_bcc_notake_w;
-}
-
-
-void m68000_base_device_ops::m68k_op_beq_16(m68000_base_device* mc68kcpu)
-{
- if(COND_EQ(mc68kcpu))
- {
- UINT32 offset = OPER_I_16(mc68kcpu);
- REG_PC(mc68kcpu) -= 2;
- m68ki_trace_t0(mc68kcpu); /* auto-disable (see m68kcpu.h) */
- m68ki_branch_16((mc68kcpu), offset);
- return;
- }
- REG_PC(mc68kcpu) += 2;
- (mc68kcpu)->remaining_cycles -= (mc68kcpu)->cyc_bcc_notake_w;
-}
-
-
-void m68000_base_device_ops::m68k_op_bvc_16(m68000_base_device* mc68kcpu)
-{
- if(COND_VC(mc68kcpu))
- {
- UINT32 offset = OPER_I_16(mc68kcpu);
- REG_PC(mc68kcpu) -= 2;
- m68ki_trace_t0(mc68kcpu); /* auto-disable (see m68kcpu.h) */
- m68ki_branch_16((mc68kcpu), offset);
- return;
- }
- REG_PC(mc68kcpu) += 2;
- (mc68kcpu)->remaining_cycles -= (mc68kcpu)->cyc_bcc_notake_w;
-}
-
-
-void m68000_base_device_ops::m68k_op_bvs_16(m68000_base_device* mc68kcpu)
-{
- if(COND_VS(mc68kcpu))
- {
- UINT32 offset = OPER_I_16(mc68kcpu);
- REG_PC(mc68kcpu) -= 2;
- m68ki_trace_t0(mc68kcpu); /* auto-disable (see m68kcpu.h) */
- m68ki_branch_16((mc68kcpu), offset);
- return;
- }
- REG_PC(mc68kcpu) += 2;
- (mc68kcpu)->remaining_cycles -= (mc68kcpu)->cyc_bcc_notake_w;
-}
-
-
-void m68000_base_device_ops::m68k_op_bpl_16(m68000_base_device* mc68kcpu)
-{
- if(COND_PL(mc68kcpu))
- {
- UINT32 offset = OPER_I_16(mc68kcpu);
- REG_PC(mc68kcpu) -= 2;
- m68ki_trace_t0(mc68kcpu); /* auto-disable (see m68kcpu.h) */
- m68ki_branch_16((mc68kcpu), offset);
- return;
- }
- REG_PC(mc68kcpu) += 2;
- (mc68kcpu)->remaining_cycles -= (mc68kcpu)->cyc_bcc_notake_w;
-}
-
-
-void m68000_base_device_ops::m68k_op_bmi_16(m68000_base_device* mc68kcpu)
-{
- if(COND_MI(mc68kcpu))
- {
- UINT32 offset = OPER_I_16(mc68kcpu);
- REG_PC(mc68kcpu) -= 2;
- m68ki_trace_t0(mc68kcpu); /* auto-disable (see m68kcpu.h) */
- m68ki_branch_16((mc68kcpu), offset);
- return;
- }
- REG_PC(mc68kcpu) += 2;
- (mc68kcpu)->remaining_cycles -= (mc68kcpu)->cyc_bcc_notake_w;
-}
-
-
-void m68000_base_device_ops::m68k_op_bge_16(m68000_base_device* mc68kcpu)
-{
- if(COND_GE(mc68kcpu))
- {
- UINT32 offset = OPER_I_16(mc68kcpu);
- REG_PC(mc68kcpu) -= 2;
- m68ki_trace_t0(mc68kcpu); /* auto-disable (see m68kcpu.h) */
- m68ki_branch_16((mc68kcpu), offset);
- return;
- }
- REG_PC(mc68kcpu) += 2;
- (mc68kcpu)->remaining_cycles -= (mc68kcpu)->cyc_bcc_notake_w;
-}
-
-
-void m68000_base_device_ops::m68k_op_blt_16(m68000_base_device* mc68kcpu)
-{
- if(COND_LT(mc68kcpu))
- {
- UINT32 offset = OPER_I_16(mc68kcpu);
- REG_PC(mc68kcpu) -= 2;
- m68ki_trace_t0(mc68kcpu); /* auto-disable (see m68kcpu.h) */
- m68ki_branch_16((mc68kcpu), offset);
- return;
- }
- REG_PC(mc68kcpu) += 2;
- (mc68kcpu)->remaining_cycles -= (mc68kcpu)->cyc_bcc_notake_w;
-}
-
-
-void m68000_base_device_ops::m68k_op_bgt_16(m68000_base_device* mc68kcpu)
-{
- if(COND_GT(mc68kcpu))
- {
- UINT32 offset = OPER_I_16(mc68kcpu);
- REG_PC(mc68kcpu) -= 2;
- m68ki_trace_t0(mc68kcpu); /* auto-disable (see m68kcpu.h) */
- m68ki_branch_16((mc68kcpu), offset);
- return;
- }
- REG_PC(mc68kcpu) += 2;
- (mc68kcpu)->remaining_cycles -= (mc68kcpu)->cyc_bcc_notake_w;
-}
-
-
-void m68000_base_device_ops::m68k_op_ble_16(m68000_base_device* mc68kcpu)
-{
- if(COND_LE(mc68kcpu))
- {
- UINT32 offset = OPER_I_16(mc68kcpu);
- REG_PC(mc68kcpu) -= 2;
- m68ki_trace_t0(mc68kcpu); /* auto-disable (see m68kcpu.h) */
- m68ki_branch_16((mc68kcpu), offset);
- return;
- }
- REG_PC(mc68kcpu) += 2;
- (mc68kcpu)->remaining_cycles -= (mc68kcpu)->cyc_bcc_notake_w;
-}
-
-
-void m68000_base_device_ops::m68k_op_bhi_32(m68000_base_device* mc68kcpu)
-{
- if(CPU_TYPE_IS_EC020_PLUS((mc68kcpu)->cpu_type))
- {
- if(COND_HI(mc68kcpu))
- {
- UINT32 offset = OPER_I_32(mc68kcpu);
- REG_PC(mc68kcpu) -= 4;
- m68ki_trace_t0(mc68kcpu); /* auto-disable (see m68kcpu.h) */
- m68ki_branch_32((mc68kcpu), offset);
- return;
- }
- REG_PC(mc68kcpu) += 4;
- return;
- }
- else
- {
- if(COND_HI(mc68kcpu))
- {
- m68ki_trace_t0(mc68kcpu); /* auto-disable (see m68kcpu.h) */
- m68ki_branch_8((mc68kcpu), MASK_OUT_ABOVE_8((mc68kcpu)->ir));
- return;
- }
- (mc68kcpu)->remaining_cycles -= (mc68kcpu)->cyc_bcc_notake_b;
- }
-}
-
-
-void m68000_base_device_ops::m68k_op_bls_32(m68000_base_device* mc68kcpu)
-{
- if(CPU_TYPE_IS_EC020_PLUS((mc68kcpu)->cpu_type))
- {
- if(COND_LS(mc68kcpu))
- {
- UINT32 offset = OPER_I_32(mc68kcpu);
- REG_PC(mc68kcpu) -= 4;
- m68ki_trace_t0(mc68kcpu); /* auto-disable (see m68kcpu.h) */
- m68ki_branch_32((mc68kcpu), offset);
- return;
- }
- REG_PC(mc68kcpu) += 4;
- return;
- }
- else
- {
- if(COND_LS(mc68kcpu))
- {
- m68ki_trace_t0(mc68kcpu); /* auto-disable (see m68kcpu.h) */
- m68ki_branch_8((mc68kcpu), MASK_OUT_ABOVE_8((mc68kcpu)->ir));
- return;
- }
- (mc68kcpu)->remaining_cycles -= (mc68kcpu)->cyc_bcc_notake_b;
- }
-}
-
-
-void m68000_base_device_ops::m68k_op_bcc_32(m68000_base_device* mc68kcpu)
-{
- if(CPU_TYPE_IS_EC020_PLUS((mc68kcpu)->cpu_type))
- {
- if(COND_CC(mc68kcpu))
- {
- UINT32 offset = OPER_I_32(mc68kcpu);
- REG_PC(mc68kcpu) -= 4;
- m68ki_trace_t0(mc68kcpu); /* auto-disable (see m68kcpu.h) */
- m68ki_branch_32((mc68kcpu), offset);
- return;
- }
- REG_PC(mc68kcpu) += 4;
- return;
- }
- else
- {
- if(COND_CC(mc68kcpu))
- {
- m68ki_trace_t0(mc68kcpu); /* auto-disable (see m68kcpu.h) */
- m68ki_branch_8((mc68kcpu), MASK_OUT_ABOVE_8((mc68kcpu)->ir));
- return;
- }
- (mc68kcpu)->remaining_cycles -= (mc68kcpu)->cyc_bcc_notake_b;
- }
-}
-
-
-void m68000_base_device_ops::m68k_op_bcs_32(m68000_base_device* mc68kcpu)
-{
- if(CPU_TYPE_IS_EC020_PLUS((mc68kcpu)->cpu_type))
- {
- if(COND_CS(mc68kcpu))
- {
- UINT32 offset = OPER_I_32(mc68kcpu);
- REG_PC(mc68kcpu) -= 4;
- m68ki_trace_t0(mc68kcpu); /* auto-disable (see m68kcpu.h) */
- m68ki_branch_32((mc68kcpu), offset);
- return;
- }
- REG_PC(mc68kcpu) += 4;
- return;
- }
- else
- {
- if(COND_CS(mc68kcpu))
- {
- m68ki_trace_t0(mc68kcpu); /* auto-disable (see m68kcpu.h) */
- m68ki_branch_8((mc68kcpu), MASK_OUT_ABOVE_8((mc68kcpu)->ir));
- return;
- }
- (mc68kcpu)->remaining_cycles -= (mc68kcpu)->cyc_bcc_notake_b;
- }
-}
-
-
-void m68000_base_device_ops::m68k_op_bne_32(m68000_base_device* mc68kcpu)
-{
- if(CPU_TYPE_IS_EC020_PLUS((mc68kcpu)->cpu_type))
- {
- if(COND_NE(mc68kcpu))
- {
- UINT32 offset = OPER_I_32(mc68kcpu);
- REG_PC(mc68kcpu) -= 4;
- m68ki_trace_t0(mc68kcpu); /* auto-disable (see m68kcpu.h) */
- m68ki_branch_32((mc68kcpu), offset);
- return;
- }
- REG_PC(mc68kcpu) += 4;
- return;
- }
- else
- {
- if(COND_NE(mc68kcpu))
- {
- m68ki_trace_t0(mc68kcpu); /* auto-disable (see m68kcpu.h) */
- m68ki_branch_8((mc68kcpu), MASK_OUT_ABOVE_8((mc68kcpu)->ir));
- return;
- }
- (mc68kcpu)->remaining_cycles -= (mc68kcpu)->cyc_bcc_notake_b;
- }
-}
-
-
-void m68000_base_device_ops::m68k_op_beq_32(m68000_base_device* mc68kcpu)
-{
- if(CPU_TYPE_IS_EC020_PLUS((mc68kcpu)->cpu_type))
- {
- if(COND_EQ(mc68kcpu))
- {
- UINT32 offset = OPER_I_32(mc68kcpu);
- REG_PC(mc68kcpu) -= 4;
- m68ki_trace_t0(mc68kcpu); /* auto-disable (see m68kcpu.h) */
- m68ki_branch_32((mc68kcpu), offset);
- return;
- }
- REG_PC(mc68kcpu) += 4;
- return;
- }
- else
- {
- if(COND_EQ(mc68kcpu))
- {
- m68ki_trace_t0(mc68kcpu); /* auto-disable (see m68kcpu.h) */
- m68ki_branch_8((mc68kcpu), MASK_OUT_ABOVE_8((mc68kcpu)->ir));
- return;
- }
- (mc68kcpu)->remaining_cycles -= (mc68kcpu)->cyc_bcc_notake_b;
- }
-}
-
-
-void m68000_base_device_ops::m68k_op_bvc_32(m68000_base_device* mc68kcpu)
-{
- if(CPU_TYPE_IS_EC020_PLUS((mc68kcpu)->cpu_type))
- {
- if(COND_VC(mc68kcpu))
- {
- UINT32 offset = OPER_I_32(mc68kcpu);
- REG_PC(mc68kcpu) -= 4;
- m68ki_trace_t0(mc68kcpu); /* auto-disable (see m68kcpu.h) */
- m68ki_branch_32((mc68kcpu), offset);
- return;
- }
- REG_PC(mc68kcpu) += 4;
- return;
- }
- else
- {
- if(COND_VC(mc68kcpu))
- {
- m68ki_trace_t0(mc68kcpu); /* auto-disable (see m68kcpu.h) */
- m68ki_branch_8((mc68kcpu), MASK_OUT_ABOVE_8((mc68kcpu)->ir));
- return;
- }
- (mc68kcpu)->remaining_cycles -= (mc68kcpu)->cyc_bcc_notake_b;
- }
-}
-
-
-void m68000_base_device_ops::m68k_op_bvs_32(m68000_base_device* mc68kcpu)
-{
- if(CPU_TYPE_IS_EC020_PLUS((mc68kcpu)->cpu_type))
- {
- if(COND_VS(mc68kcpu))
- {
- UINT32 offset = OPER_I_32(mc68kcpu);
- REG_PC(mc68kcpu) -= 4;
- m68ki_trace_t0(mc68kcpu); /* auto-disable (see m68kcpu.h) */
- m68ki_branch_32((mc68kcpu), offset);
- return;
- }
- REG_PC(mc68kcpu) += 4;
- return;
- }
- else
- {
- if(COND_VS(mc68kcpu))
- {
- m68ki_trace_t0(mc68kcpu); /* auto-disable (see m68kcpu.h) */
- m68ki_branch_8((mc68kcpu), MASK_OUT_ABOVE_8((mc68kcpu)->ir));
- return;
- }
- (mc68kcpu)->remaining_cycles -= (mc68kcpu)->cyc_bcc_notake_b;
- }
-}
-
-
-void m68000_base_device_ops::m68k_op_bpl_32(m68000_base_device* mc68kcpu)
-{
- if(CPU_TYPE_IS_EC020_PLUS((mc68kcpu)->cpu_type))
- {
- if(COND_PL(mc68kcpu))
- {
- UINT32 offset = OPER_I_32(mc68kcpu);
- REG_PC(mc68kcpu) -= 4;
- m68ki_trace_t0(mc68kcpu); /* auto-disable (see m68kcpu.h) */
- m68ki_branch_32((mc68kcpu), offset);
- return;
- }
- REG_PC(mc68kcpu) += 4;
- return;
- }
- else
- {
- if(COND_PL(mc68kcpu))
- {
- m68ki_trace_t0(mc68kcpu); /* auto-disable (see m68kcpu.h) */
- m68ki_branch_8((mc68kcpu), MASK_OUT_ABOVE_8((mc68kcpu)->ir));
- return;
- }
- (mc68kcpu)->remaining_cycles -= (mc68kcpu)->cyc_bcc_notake_b;
- }
-}
-
-
-void m68000_base_device_ops::m68k_op_bmi_32(m68000_base_device* mc68kcpu)
-{
- if(CPU_TYPE_IS_EC020_PLUS((mc68kcpu)->cpu_type))
- {
- if(COND_MI(mc68kcpu))
- {
- UINT32 offset = OPER_I_32(mc68kcpu);
- REG_PC(mc68kcpu) -= 4;
- m68ki_trace_t0(mc68kcpu); /* auto-disable (see m68kcpu.h) */
- m68ki_branch_32((mc68kcpu), offset);
- return;
- }
- REG_PC(mc68kcpu) += 4;
- return;
- }
- else
- {
- if(COND_MI(mc68kcpu))
- {
- m68ki_trace_t0(mc68kcpu); /* auto-disable (see m68kcpu.h) */
- m68ki_branch_8((mc68kcpu), MASK_OUT_ABOVE_8((mc68kcpu)->ir));
- return;
- }
- (mc68kcpu)->remaining_cycles -= (mc68kcpu)->cyc_bcc_notake_b;
- }
-}
-
-
-void m68000_base_device_ops::m68k_op_bge_32(m68000_base_device* mc68kcpu)
-{
- if(CPU_TYPE_IS_EC020_PLUS((mc68kcpu)->cpu_type))
- {
- if(COND_GE(mc68kcpu))
- {
- UINT32 offset = OPER_I_32(mc68kcpu);
- REG_PC(mc68kcpu) -= 4;
- m68ki_trace_t0(mc68kcpu); /* auto-disable (see m68kcpu.h) */
- m68ki_branch_32((mc68kcpu), offset);
- return;
- }
- REG_PC(mc68kcpu) += 4;
- return;
- }
- else
- {
- if(COND_GE(mc68kcpu))
- {
- m68ki_trace_t0(mc68kcpu); /* auto-disable (see m68kcpu.h) */
- m68ki_branch_8((mc68kcpu), MASK_OUT_ABOVE_8((mc68kcpu)->ir));
- return;
- }
- (mc68kcpu)->remaining_cycles -= (mc68kcpu)->cyc_bcc_notake_b;
- }
-}
-
-
-void m68000_base_device_ops::m68k_op_blt_32(m68000_base_device* mc68kcpu)
-{
- if(CPU_TYPE_IS_EC020_PLUS((mc68kcpu)->cpu_type))
- {
- if(COND_LT(mc68kcpu))
- {
- UINT32 offset = OPER_I_32(mc68kcpu);
- REG_PC(mc68kcpu) -= 4;
- m68ki_trace_t0(mc68kcpu); /* auto-disable (see m68kcpu.h) */
- m68ki_branch_32((mc68kcpu), offset);
- return;
- }
- REG_PC(mc68kcpu) += 4;
- return;
- }
- else
- {
- if(COND_LT(mc68kcpu))
- {
- m68ki_trace_t0(mc68kcpu); /* auto-disable (see m68kcpu.h) */
- m68ki_branch_8((mc68kcpu), MASK_OUT_ABOVE_8((mc68kcpu)->ir));
- return;
- }
- (mc68kcpu)->remaining_cycles -= (mc68kcpu)->cyc_bcc_notake_b;
- }
-}
-
-
-void m68000_base_device_ops::m68k_op_bgt_32(m68000_base_device* mc68kcpu)
-{
- if(CPU_TYPE_IS_EC020_PLUS((mc68kcpu)->cpu_type))
- {
- if(COND_GT(mc68kcpu))
- {
- UINT32 offset = OPER_I_32(mc68kcpu);
- REG_PC(mc68kcpu) -= 4;
- m68ki_trace_t0(mc68kcpu); /* auto-disable (see m68kcpu.h) */
- m68ki_branch_32((mc68kcpu), offset);
- return;
- }
- REG_PC(mc68kcpu) += 4;
- return;
- }
- else
- {
- if(COND_GT(mc68kcpu))
- {
- m68ki_trace_t0(mc68kcpu); /* auto-disable (see m68kcpu.h) */
- m68ki_branch_8((mc68kcpu), MASK_OUT_ABOVE_8((mc68kcpu)->ir));
- return;
- }
- (mc68kcpu)->remaining_cycles -= (mc68kcpu)->cyc_bcc_notake_b;
- }
-}
-
-
-void m68000_base_device_ops::m68k_op_ble_32(m68000_base_device* mc68kcpu)
-{
- if(CPU_TYPE_IS_EC020_PLUS((mc68kcpu)->cpu_type))
- {
- if(COND_LE(mc68kcpu))
- {
- UINT32 offset = OPER_I_32(mc68kcpu);
- REG_PC(mc68kcpu) -= 4;
- m68ki_trace_t0(mc68kcpu); /* auto-disable (see m68kcpu.h) */
- m68ki_branch_32((mc68kcpu), offset);
- return;
- }
- REG_PC(mc68kcpu) += 4;
- return;
- }
- else
- {
- if(COND_LE(mc68kcpu))
- {
- m68ki_trace_t0(mc68kcpu); /* auto-disable (see m68kcpu.h) */
- m68ki_branch_8((mc68kcpu), MASK_OUT_ABOVE_8((mc68kcpu)->ir));
- return;
- }
- (mc68kcpu)->remaining_cycles -= (mc68kcpu)->cyc_bcc_notake_b;
- }
-}
-
-
-void m68000_base_device_ops::m68k_op_bchg_32_r_d(m68000_base_device* mc68kcpu)
-{
- UINT32* r_dst = &DY(mc68kcpu);
- UINT32 mask = 1 << (DX(mc68kcpu) & 0x1f);
-
- (mc68kcpu)->not_z_flag = *r_dst & mask;
- *r_dst ^= mask;
-}
-
-
-void m68000_base_device_ops::m68k_op_bchg_8_r_ai(m68000_base_device* mc68kcpu)
-{
- UINT32 ea = EA_AY_AI_8(mc68kcpu);
- UINT32 src = m68ki_read_8((mc68kcpu), ea);
- UINT32 mask = 1 << (DX(mc68kcpu) & 7);
-
- (mc68kcpu)->not_z_flag = src & mask;
- m68ki_write_8((mc68kcpu), ea, src ^ mask);
-}
-
-
-void m68000_base_device_ops::m68k_op_bchg_8_r_pi(m68000_base_device* mc68kcpu)
-{
- UINT32 ea = EA_AY_PI_8(mc68kcpu);
- UINT32 src = m68ki_read_8((mc68kcpu), ea);
- UINT32 mask = 1 << (DX(mc68kcpu) & 7);
-
- (mc68kcpu)->not_z_flag = src & mask;
- m68ki_write_8((mc68kcpu), ea, src ^ mask);
-}
-
-
-void m68000_base_device_ops::m68k_op_bchg_8_r_pi7(m68000_base_device* mc68kcpu)
-{
- UINT32 ea = EA_A7_PI_8(mc68kcpu);
- UINT32 src = m68ki_read_8((mc68kcpu), ea);
- UINT32 mask = 1 << (DX(mc68kcpu) & 7);
-
- (mc68kcpu)->not_z_flag = src & mask;
- m68ki_write_8((mc68kcpu), ea, src ^ mask);
-}
-
-
-void m68000_base_device_ops::m68k_op_bchg_8_r_pd(m68000_base_device* mc68kcpu)
-{
- UINT32 ea = EA_AY_PD_8(mc68kcpu);
- UINT32 src = m68ki_read_8((mc68kcpu), ea);
- UINT32 mask = 1 << (DX(mc68kcpu) & 7);
-
- (mc68kcpu)->not_z_flag = src & mask;
- m68ki_write_8((mc68kcpu), ea, src ^ mask);
-}
-
-
-void m68000_base_device_ops::m68k_op_bchg_8_r_pd7(m68000_base_device* mc68kcpu)
-{
- UINT32 ea = EA_A7_PD_8(mc68kcpu);
- UINT32 src = m68ki_read_8((mc68kcpu), ea);
- UINT32 mask = 1 << (DX(mc68kcpu) & 7);
-
- (mc68kcpu)->not_z_flag = src & mask;
- m68ki_write_8((mc68kcpu), ea, src ^ mask);
-}
-
-
-void m68000_base_device_ops::m68k_op_bchg_8_r_di(m68000_base_device* mc68kcpu)
-{
- UINT32 ea = EA_AY_DI_8(mc68kcpu);
- UINT32 src = m68ki_read_8((mc68kcpu), ea);
- UINT32 mask = 1 << (DX(mc68kcpu) & 7);
-
- (mc68kcpu)->not_z_flag = src & mask;
- m68ki_write_8((mc68kcpu), ea, src ^ mask);
-}
-
-
-void m68000_base_device_ops::m68k_op_bchg_8_r_ix(m68000_base_device* mc68kcpu)
-{
- UINT32 ea = EA_AY_IX_8(mc68kcpu);
- UINT32 src = m68ki_read_8((mc68kcpu), ea);
- UINT32 mask = 1 << (DX(mc68kcpu) & 7);
-
- (mc68kcpu)->not_z_flag = src & mask;
- m68ki_write_8((mc68kcpu), ea, src ^ mask);
-}
-
-
-void m68000_base_device_ops::m68k_op_bchg_8_r_aw(m68000_base_device* mc68kcpu)
-{
- UINT32 ea = EA_AW_8(mc68kcpu);
- UINT32 src = m68ki_read_8((mc68kcpu), ea);
- UINT32 mask = 1 << (DX(mc68kcpu) & 7);
-
- (mc68kcpu)->not_z_flag = src & mask;
- m68ki_write_8((mc68kcpu), ea, src ^ mask);
-}
-
-
-void m68000_base_device_ops::m68k_op_bchg_8_r_al(m68000_base_device* mc68kcpu)
-{
- UINT32 ea = EA_AL_8(mc68kcpu);
- UINT32 src = m68ki_read_8((mc68kcpu), ea);
- UINT32 mask = 1 << (DX(mc68kcpu) & 7);
-
- (mc68kcpu)->not_z_flag = src & mask;
- m68ki_write_8((mc68kcpu), ea, src ^ mask);
-}
-
-
-void m68000_base_device_ops::m68k_op_bchg_32_s_d(m68000_base_device* mc68kcpu)
-{
- UINT32* r_dst = &DY(mc68kcpu);
- UINT32 mask = 1 << (OPER_I_8(mc68kcpu) & 0x1f);
-
- (mc68kcpu)->not_z_flag = *r_dst & mask;
- *r_dst ^= mask;
-}
-
-
-void m68000_base_device_ops::m68k_op_bchg_8_s_ai(m68000_base_device* mc68kcpu)
-{
- UINT32 mask = 1 << (OPER_I_8(mc68kcpu) & 7);
- UINT32 ea = EA_AY_AI_8(mc68kcpu);
- UINT32 src = m68ki_read_8((mc68kcpu), ea);
-
- (mc68kcpu)->not_z_flag = src & mask;
- m68ki_write_8((mc68kcpu), ea, src ^ mask);
-}
-
-
-void m68000_base_device_ops::m68k_op_bchg_8_s_pi(m68000_base_device* mc68kcpu)
-{
- UINT32 mask = 1 << (OPER_I_8(mc68kcpu) & 7);
- UINT32 ea = EA_AY_PI_8(mc68kcpu);
- UINT32 src = m68ki_read_8((mc68kcpu), ea);
-
- (mc68kcpu)->not_z_flag = src & mask;
- m68ki_write_8((mc68kcpu), ea, src ^ mask);
-}
-
-
-void m68000_base_device_ops::m68k_op_bchg_8_s_pi7(m68000_base_device* mc68kcpu)
-{
- UINT32 mask = 1 << (OPER_I_8(mc68kcpu) & 7);
- UINT32 ea = EA_A7_PI_8(mc68kcpu);
- UINT32 src = m68ki_read_8((mc68kcpu), ea);
-
- (mc68kcpu)->not_z_flag = src & mask;
- m68ki_write_8((mc68kcpu), ea, src ^ mask);
-}
-
-
-void m68000_base_device_ops::m68k_op_bchg_8_s_pd(m68000_base_device* mc68kcpu)
-{
- UINT32 mask = 1 << (OPER_I_8(mc68kcpu) & 7);
- UINT32 ea = EA_AY_PD_8(mc68kcpu);
- UINT32 src = m68ki_read_8((mc68kcpu), ea);
-
- (mc68kcpu)->not_z_flag = src & mask;
- m68ki_write_8((mc68kcpu), ea, src ^ mask);
-}
-
-
-void m68000_base_device_ops::m68k_op_bchg_8_s_pd7(m68000_base_device* mc68kcpu)
-{
- UINT32 mask = 1 << (OPER_I_8(mc68kcpu) & 7);
- UINT32 ea = EA_A7_PD_8(mc68kcpu);
- UINT32 src = m68ki_read_8((mc68kcpu), ea);
-
- (mc68kcpu)->not_z_flag = src & mask;
- m68ki_write_8((mc68kcpu), ea, src ^ mask);
-}
-
-
-void m68000_base_device_ops::m68k_op_bchg_8_s_di(m68000_base_device* mc68kcpu)
-{
- UINT32 mask = 1 << (OPER_I_8(mc68kcpu) & 7);
- UINT32 ea = EA_AY_DI_8(mc68kcpu);
- UINT32 src = m68ki_read_8((mc68kcpu), ea);
-
- (mc68kcpu)->not_z_flag = src & mask;
- m68ki_write_8((mc68kcpu), ea, src ^ mask);
-}
-
-
-void m68000_base_device_ops::m68k_op_bchg_8_s_ix(m68000_base_device* mc68kcpu)
-{
- UINT32 mask = 1 << (OPER_I_8(mc68kcpu) & 7);
- UINT32 ea = EA_AY_IX_8(mc68kcpu);
- UINT32 src = m68ki_read_8((mc68kcpu), ea);
-
- (mc68kcpu)->not_z_flag = src & mask;
- m68ki_write_8((mc68kcpu), ea, src ^ mask);
-}
-
-
-void m68000_base_device_ops::m68k_op_bchg_8_s_aw(m68000_base_device* mc68kcpu)
-{
- UINT32 mask = 1 << (OPER_I_8(mc68kcpu) & 7);
- UINT32 ea = EA_AW_8(mc68kcpu);
- UINT32 src = m68ki_read_8((mc68kcpu), ea);
-
- (mc68kcpu)->not_z_flag = src & mask;
- m68ki_write_8((mc68kcpu), ea, src ^ mask);
-}
-
-
-void m68000_base_device_ops::m68k_op_bchg_8_s_al(m68000_base_device* mc68kcpu)
-{
- UINT32 mask = 1 << (OPER_I_8(mc68kcpu) & 7);
- UINT32 ea = EA_AL_8(mc68kcpu);
- UINT32 src = m68ki_read_8((mc68kcpu), ea);
-
- (mc68kcpu)->not_z_flag = src & mask;
- m68ki_write_8((mc68kcpu), ea, src ^ mask);
-}
-
-
-void m68000_base_device_ops::m68k_op_bclr_32_r_d(m68000_base_device* mc68kcpu)
-{
- UINT32* r_dst = &DY(mc68kcpu);
- UINT32 mask = 1 << (DX(mc68kcpu) & 0x1f);
-
- (mc68kcpu)->not_z_flag = *r_dst & mask;
- *r_dst &= ~mask;
-}
-
-
-void m68000_base_device_ops::m68k_op_bclr_8_r_ai(m68000_base_device* mc68kcpu)
-{
- UINT32 ea = EA_AY_AI_8(mc68kcpu);
- UINT32 src = m68ki_read_8((mc68kcpu), ea);
- UINT32 mask = 1 << (DX(mc68kcpu) & 7);
-
- (mc68kcpu)->not_z_flag = src & mask;
- m68ki_write_8((mc68kcpu), ea, src & ~mask);
-}
-
-
-void m68000_base_device_ops::m68k_op_bclr_8_r_pi(m68000_base_device* mc68kcpu)
-{
- UINT32 ea = EA_AY_PI_8(mc68kcpu);
- UINT32 src = m68ki_read_8((mc68kcpu), ea);
- UINT32 mask = 1 << (DX(mc68kcpu) & 7);
-
- (mc68kcpu)->not_z_flag = src & mask;
- m68ki_write_8((mc68kcpu), ea, src & ~mask);
-}
-
-
-void m68000_base_device_ops::m68k_op_bclr_8_r_pi7(m68000_base_device* mc68kcpu)
-{
- UINT32 ea = EA_A7_PI_8(mc68kcpu);
- UINT32 src = m68ki_read_8((mc68kcpu), ea);
- UINT32 mask = 1 << (DX(mc68kcpu) & 7);
-
- (mc68kcpu)->not_z_flag = src & mask;
- m68ki_write_8((mc68kcpu), ea, src & ~mask);
-}
-
-
-void m68000_base_device_ops::m68k_op_bclr_8_r_pd(m68000_base_device* mc68kcpu)
-{
- UINT32 ea = EA_AY_PD_8(mc68kcpu);
- UINT32 src = m68ki_read_8((mc68kcpu), ea);
- UINT32 mask = 1 << (DX(mc68kcpu) & 7);
-
- (mc68kcpu)->not_z_flag = src & mask;
- m68ki_write_8((mc68kcpu), ea, src & ~mask);
-}
-
-
-void m68000_base_device_ops::m68k_op_bclr_8_r_pd7(m68000_base_device* mc68kcpu)
-{
- UINT32 ea = EA_A7_PD_8(mc68kcpu);
- UINT32 src = m68ki_read_8((mc68kcpu), ea);
- UINT32 mask = 1 << (DX(mc68kcpu) & 7);
-
- (mc68kcpu)->not_z_flag = src & mask;
- m68ki_write_8((mc68kcpu), ea, src & ~mask);
-}
-
-
-void m68000_base_device_ops::m68k_op_bclr_8_r_di(m68000_base_device* mc68kcpu)
-{
- UINT32 ea = EA_AY_DI_8(mc68kcpu);
- UINT32 src = m68ki_read_8((mc68kcpu), ea);
- UINT32 mask = 1 << (DX(mc68kcpu) & 7);
-
- (mc68kcpu)->not_z_flag = src & mask;
- m68ki_write_8((mc68kcpu), ea, src & ~mask);
-}
-
-
-void m68000_base_device_ops::m68k_op_bclr_8_r_ix(m68000_base_device* mc68kcpu)
-{
- UINT32 ea = EA_AY_IX_8(mc68kcpu);
- UINT32 src = m68ki_read_8((mc68kcpu), ea);
- UINT32 mask = 1 << (DX(mc68kcpu) & 7);
-
- (mc68kcpu)->not_z_flag = src & mask;
- m68ki_write_8((mc68kcpu), ea, src & ~mask);
-}
-
-
-void m68000_base_device_ops::m68k_op_bclr_8_r_aw(m68000_base_device* mc68kcpu)
-{
- UINT32 ea = EA_AW_8(mc68kcpu);
- UINT32 src = m68ki_read_8((mc68kcpu), ea);
- UINT32 mask = 1 << (DX(mc68kcpu) & 7);
-
- (mc68kcpu)->not_z_flag = src & mask;
- m68ki_write_8((mc68kcpu), ea, src & ~mask);
-}
-
-
-void m68000_base_device_ops::m68k_op_bclr_8_r_al(m68000_base_device* mc68kcpu)
-{
- UINT32 ea = EA_AL_8(mc68kcpu);
- UINT32 src = m68ki_read_8((mc68kcpu), ea);
- UINT32 mask = 1 << (DX(mc68kcpu) & 7);
-
- (mc68kcpu)->not_z_flag = src & mask;
- m68ki_write_8((mc68kcpu), ea, src & ~mask);
-}
-
-
-void m68000_base_device_ops::m68k_op_bclr_32_s_d(m68000_base_device* mc68kcpu)
-{
- UINT32* r_dst = &DY(mc68kcpu);
- UINT32 mask = 1 << (OPER_I_8(mc68kcpu) & 0x1f);
-
- (mc68kcpu)->not_z_flag = *r_dst & mask;
- *r_dst &= ~mask;
-}
-
-
-void m68000_base_device_ops::m68k_op_bclr_8_s_ai(m68000_base_device* mc68kcpu)
-{
- UINT32 mask = 1 << (OPER_I_8(mc68kcpu) & 7);
- UINT32 ea = EA_AY_AI_8(mc68kcpu);
- UINT32 src = m68ki_read_8((mc68kcpu), ea);
-
- (mc68kcpu)->not_z_flag = src & mask;
- m68ki_write_8((mc68kcpu), ea, src & ~mask);
-}
-
-
-void m68000_base_device_ops::m68k_op_bclr_8_s_pi(m68000_base_device* mc68kcpu)
-{
- UINT32 mask = 1 << (OPER_I_8(mc68kcpu) & 7);
- UINT32 ea = EA_AY_PI_8(mc68kcpu);
- UINT32 src = m68ki_read_8((mc68kcpu), ea);
-
- (mc68kcpu)->not_z_flag = src & mask;
- m68ki_write_8((mc68kcpu), ea, src & ~mask);
-}
-
-
-void m68000_base_device_ops::m68k_op_bclr_8_s_pi7(m68000_base_device* mc68kcpu)
-{
- UINT32 mask = 1 << (OPER_I_8(mc68kcpu) & 7);
- UINT32 ea = EA_A7_PI_8(mc68kcpu);
- UINT32 src = m68ki_read_8((mc68kcpu), ea);
-
- (mc68kcpu)->not_z_flag = src & mask;
- m68ki_write_8((mc68kcpu), ea, src & ~mask);
-}
-
-
-void m68000_base_device_ops::m68k_op_bclr_8_s_pd(m68000_base_device* mc68kcpu)
-{
- UINT32 mask = 1 << (OPER_I_8(mc68kcpu) & 7);
- UINT32 ea = EA_AY_PD_8(mc68kcpu);
- UINT32 src = m68ki_read_8((mc68kcpu), ea);
-
- (mc68kcpu)->not_z_flag = src & mask;
- m68ki_write_8((mc68kcpu), ea, src & ~mask);
-}
-
-
-void m68000_base_device_ops::m68k_op_bclr_8_s_pd7(m68000_base_device* mc68kcpu)
-{
- UINT32 mask = 1 << (OPER_I_8(mc68kcpu) & 7);
- UINT32 ea = EA_A7_PD_8(mc68kcpu);
- UINT32 src = m68ki_read_8((mc68kcpu), ea);
-
- (mc68kcpu)->not_z_flag = src & mask;
- m68ki_write_8((mc68kcpu), ea, src & ~mask);
-}
-
-
-void m68000_base_device_ops::m68k_op_bclr_8_s_di(m68000_base_device* mc68kcpu)
-{
- UINT32 mask = 1 << (OPER_I_8(mc68kcpu) & 7);
- UINT32 ea = EA_AY_DI_8(mc68kcpu);
- UINT32 src = m68ki_read_8((mc68kcpu), ea);
-
- (mc68kcpu)->not_z_flag = src & mask;
- m68ki_write_8((mc68kcpu), ea, src & ~mask);
-}
-
-
-void m68000_base_device_ops::m68k_op_bclr_8_s_ix(m68000_base_device* mc68kcpu)
-{
- UINT32 mask = 1 << (OPER_I_8(mc68kcpu) & 7);
- UINT32 ea = EA_AY_IX_8(mc68kcpu);
- UINT32 src = m68ki_read_8((mc68kcpu), ea);
-
- (mc68kcpu)->not_z_flag = src & mask;
- m68ki_write_8((mc68kcpu), ea, src & ~mask);
-}
-
-
-void m68000_base_device_ops::m68k_op_bclr_8_s_aw(m68000_base_device* mc68kcpu)
-{
- UINT32 mask = 1 << (OPER_I_8(mc68kcpu) & 7);
- UINT32 ea = EA_AW_8(mc68kcpu);
- UINT32 src = m68ki_read_8((mc68kcpu), ea);
-
- (mc68kcpu)->not_z_flag = src & mask;
- m68ki_write_8((mc68kcpu), ea, src & ~mask);
-}
-
-
-void m68000_base_device_ops::m68k_op_bclr_8_s_al(m68000_base_device* mc68kcpu)
-{
- UINT32 mask = 1 << (OPER_I_8(mc68kcpu) & 7);
- UINT32 ea = EA_AL_8(mc68kcpu);
- UINT32 src = m68ki_read_8((mc68kcpu), ea);
-
- (mc68kcpu)->not_z_flag = src & mask;
- m68ki_write_8((mc68kcpu), ea, src & ~mask);
-}
-
-
-void m68000_base_device_ops::m68k_op_bfchg_32_d(m68000_base_device* mc68kcpu)
-{
- if(CPU_TYPE_IS_EC020_PLUS((mc68kcpu)->cpu_type))
- {
- UINT32 word2 = OPER_I_16(mc68kcpu);
- UINT32 offset = (word2>>6)&31;
- UINT32 width = word2;
- UINT32* data = &DY(mc68kcpu);
- UINT64 mask;
-
-
- if(BIT_B(word2))
- offset = REG_D(mc68kcpu)[offset&7];
- if(BIT_5(word2))
- width = REG_D(mc68kcpu)[width&7];
-
- offset &= 31;
- width = ((width-1) & 31) + 1;
-
- 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;
-
- *data ^= mask;
-
- return;
- }
- m68ki_exception_illegal(mc68kcpu);
-}
-
-
-void m68000_base_device_ops::m68k_op_bfchg_32_ai(m68000_base_device* mc68kcpu)
-{
- if(CPU_TYPE_IS_EC020_PLUS((mc68kcpu)->cpu_type))
- {
- UINT32 word2 = OPER_I_16(mc68kcpu);
- INT32 offset = (word2>>6)&31;
- UINT32 width = word2;
- UINT32 mask_base;
- UINT32 data_long;
- UINT32 mask_long;
- UINT32 data_byte;
- UINT32 mask_byte;
- UINT32 ea = EA_AY_AI_8(mc68kcpu);
-
-
- if(BIT_B(word2))
- offset = MAKE_INT_32(REG_D(mc68kcpu)[offset&7]);
- if(BIT_5(word2))
- width = REG_D(mc68kcpu)[width&7];
-
- /* Offset is signed so we have to use ugly math =( */
- ea += offset / 8;
- offset %= 8;
- if(offset < 0)
- {
- offset += 8;
- ea--;
- }
- width = ((width-1) & 31) + 1;
-
- 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;
-
- m68ki_write_32((mc68kcpu), 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);
- }
- return;
- }
- m68ki_exception_illegal(mc68kcpu);
-}
-
-
-void m68000_base_device_ops::m68k_op_bfchg_32_di(m68000_base_device* mc68kcpu)
-{
- if(CPU_TYPE_IS_EC020_PLUS((mc68kcpu)->cpu_type))
- {
- UINT32 word2 = OPER_I_16(mc68kcpu);
- INT32 offset = (word2>>6)&31;
- UINT32 width = word2;
- UINT32 mask_base;
- UINT32 data_long;
- UINT32 mask_long;
- UINT32 data_byte;
- UINT32 mask_byte;
- UINT32 ea = EA_AY_DI_8(mc68kcpu);
-
-
- if(BIT_B(word2))
- offset = MAKE_INT_32(REG_D(mc68kcpu)[offset&7]);
- if(BIT_5(word2))
- width = REG_D(mc68kcpu)[width&7];
-
- /* Offset is signed so we have to use ugly math =( */
- ea += offset / 8;
- offset %= 8;
- if(offset < 0)
- {
- offset += 8;
- ea--;
- }
- width = ((width-1) & 31) + 1;
-
- 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;
-
- m68ki_write_32((mc68kcpu), 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);
- }
- return;
- }
- m68ki_exception_illegal(mc68kcpu);
-}
-
-
-void m68000_base_device_ops::m68k_op_bfchg_32_ix(m68000_base_device* mc68kcpu)
-{
- if(CPU_TYPE_IS_EC020_PLUS((mc68kcpu)->cpu_type))
- {
- UINT32 word2 = OPER_I_16(mc68kcpu);
- INT32 offset = (word2>>6)&31;
- UINT32 width = word2;
- UINT32 mask_base;
- UINT32 data_long;
- UINT32 mask_long;
- UINT32 data_byte;
- UINT32 mask_byte;
- UINT32 ea = EA_AY_IX_8(mc68kcpu);
-
-
- if(BIT_B(word2))
- offset = MAKE_INT_32(REG_D(mc68kcpu)[offset&7]);
- if(BIT_5(word2))
- width = REG_D(mc68kcpu)[width&7];
-
- /* Offset is signed so we have to use ugly math =( */
- ea += offset / 8;
- offset %= 8;
- if(offset < 0)
- {
- offset += 8;
- ea--;
- }
- width = ((width-1) & 31) + 1;
-
- 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;
-
- m68ki_write_32((mc68kcpu), 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);
- }
- return;
- }
- m68ki_exception_illegal(mc68kcpu);
-}
-
-
-void m68000_base_device_ops::m68k_op_bfchg_32_aw(m68000_base_device* mc68kcpu)
-{
- if(CPU_TYPE_IS_EC020_PLUS((mc68kcpu)->cpu_type))
- {
- UINT32 word2 = OPER_I_16(mc68kcpu);
- INT32 offset = (word2>>6)&31;
- UINT32 width = word2;
- UINT32 mask_base;
- UINT32 data_long;
- UINT32 mask_long;
- UINT32 data_byte;
- UINT32 mask_byte;
- UINT32 ea = EA_AW_8(mc68kcpu);
-
-
- if(BIT_B(word2))
- offset = MAKE_INT_32(REG_D(mc68kcpu)[offset&7]);
- if(BIT_5(word2))
- width = REG_D(mc68kcpu)[width&7];
-
- /* Offset is signed so we have to use ugly math =( */
- ea += offset / 8;
- offset %= 8;
- if(offset < 0)
- {
- offset += 8;
- ea--;
- }
- width = ((width-1) & 31) + 1;
-
- 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;
-
- m68ki_write_32((mc68kcpu), 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);
- }
- return;
- }
- m68ki_exception_illegal(mc68kcpu);
-}
-
-
-void m68000_base_device_ops::m68k_op_bfchg_32_al(m68000_base_device* mc68kcpu)
-{
- if(CPU_TYPE_IS_EC020_PLUS((mc68kcpu)->cpu_type))
- {
- UINT32 word2 = OPER_I_16(mc68kcpu);
- INT32 offset = (word2>>6)&31;
- UINT32 width = word2;
- UINT32 mask_base;
- UINT32 data_long;
- UINT32 mask_long;
- UINT32 data_byte;
- UINT32 mask_byte;
- UINT32 ea = EA_AL_8(mc68kcpu);
-
-
- if(BIT_B(word2))
- offset = MAKE_INT_32(REG_D(mc68kcpu)[offset&7]);
- if(BIT_5(word2))
- width = REG_D(mc68kcpu)[width&7];
-
- /* Offset is signed so we have to use ugly math =( */
- ea += offset / 8;
- offset %= 8;
- if(offset < 0)
- {
- offset += 8;
- ea--;
- }
- width = ((width-1) & 31) + 1;
-
- 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;
-
- m68ki_write_32((mc68kcpu), 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);
- }
- return;
- }
- m68ki_exception_illegal(mc68kcpu);
-}
-
-
-void m68000_base_device_ops::m68k_op_bfclr_32_d(m68000_base_device* mc68kcpu)
-{
- if(CPU_TYPE_IS_EC020_PLUS((mc68kcpu)->cpu_type))
- {
- UINT32 word2 = OPER_I_16(mc68kcpu);
- UINT32 offset = (word2>>6)&31;
- UINT32 width = word2;
- UINT32* data = &DY(mc68kcpu);
- UINT64 mask;
-
-
- if(BIT_B(word2))
- offset = REG_D(mc68kcpu)[offset&7];
- if(BIT_5(word2))
- width = REG_D(mc68kcpu)[width&7];
-
-
- offset &= 31;
- width = ((width-1) & 31) + 1;
-
-
- 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;
-
- *data &= ~mask;
-
- return;
- }
- m68ki_exception_illegal(mc68kcpu);
-}
-
-
-void m68000_base_device_ops::m68k_op_bfclr_32_ai(m68000_base_device* mc68kcpu)
-{
- if(CPU_TYPE_IS_EC020_PLUS((mc68kcpu)->cpu_type))
- {
- UINT32 word2 = OPER_I_16(mc68kcpu);
- INT32 offset = (word2>>6)&31;
- UINT32 width = word2;
- UINT32 mask_base;
- UINT32 data_long;
- UINT32 mask_long;
- UINT32 data_byte;
- UINT32 mask_byte;
- UINT32 ea = EA_AY_AI_8(mc68kcpu);
-
-
- if(BIT_B(word2))
- offset = MAKE_INT_32(REG_D(mc68kcpu)[offset&7]);
- if(BIT_5(word2))
- width = REG_D(mc68kcpu)[width&7];
-
- /* Offset is signed so we have to use ugly math =( */
- ea += offset / 8;
- offset %= 8;
- if(offset < 0)
- {
- offset += 8;
- ea--;
- }
- width = ((width-1) & 31) + 1;
-
- 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;
-
- m68ki_write_32((mc68kcpu), 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);
- }
- return;
- }
- m68ki_exception_illegal(mc68kcpu);
-}
-
-
-void m68000_base_device_ops::m68k_op_bfclr_32_di(m68000_base_device* mc68kcpu)
-{
- if(CPU_TYPE_IS_EC020_PLUS((mc68kcpu)->cpu_type))
- {
- UINT32 word2 = OPER_I_16(mc68kcpu);
- INT32 offset = (word2>>6)&31;
- UINT32 width = word2;
- UINT32 mask_base;
- UINT32 data_long;
- UINT32 mask_long;
- UINT32 data_byte;
- UINT32 mask_byte;
- UINT32 ea = EA_AY_DI_8(mc68kcpu);
-
-
- if(BIT_B(word2))
- offset = MAKE_INT_32(REG_D(mc68kcpu)[offset&7]);
- if(BIT_5(word2))
- width = REG_D(mc68kcpu)[width&7];
-
- /* Offset is signed so we have to use ugly math =( */
- ea += offset / 8;
- offset %= 8;
- if(offset < 0)
- {
- offset += 8;
- ea--;
- }
- width = ((width-1) & 31) + 1;
-
- 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;
-
- m68ki_write_32((mc68kcpu), 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);
- }
- return;
- }
- m68ki_exception_illegal(mc68kcpu);
-}
-
-
-void m68000_base_device_ops::m68k_op_bfclr_32_ix(m68000_base_device* mc68kcpu)
-{
- if(CPU_TYPE_IS_EC020_PLUS((mc68kcpu)->cpu_type))
- {
- UINT32 word2 = OPER_I_16(mc68kcpu);
- INT32 offset = (word2>>6)&31;
- UINT32 width = word2;
- UINT32 mask_base;
- UINT32 data_long;
- UINT32 mask_long;
- UINT32 data_byte;
- UINT32 mask_byte;
- UINT32 ea = EA_AY_IX_8(mc68kcpu);
-
-
- if(BIT_B(word2))
- offset = MAKE_INT_32(REG_D(mc68kcpu)[offset&7]);
- if(BIT_5(word2))
- width = REG_D(mc68kcpu)[width&7];
-
- /* Offset is signed so we have to use ugly math =( */
- ea += offset / 8;
- offset %= 8;
- if(offset < 0)
- {
- offset += 8;
- ea--;
- }
- width = ((width-1) & 31) + 1;
-
- 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;
-
- m68ki_write_32((mc68kcpu), 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);
- }
- return;
- }
- m68ki_exception_illegal(mc68kcpu);
-}
-
-
-void m68000_base_device_ops::m68k_op_bfclr_32_aw(m68000_base_device* mc68kcpu)
-{
- if(CPU_TYPE_IS_EC020_PLUS((mc68kcpu)->cpu_type))
- {
- UINT32 word2 = OPER_I_16(mc68kcpu);
- INT32 offset = (word2>>6)&31;
- UINT32 width = word2;
- UINT32 mask_base;
- UINT32 data_long;
- UINT32 mask_long;
- UINT32 data_byte;
- UINT32 mask_byte;
- UINT32 ea = EA_AW_8(mc68kcpu);
-
-
- if(BIT_B(word2))
- offset = MAKE_INT_32(REG_D(mc68kcpu)[offset&7]);
- if(BIT_5(word2))
- width = REG_D(mc68kcpu)[width&7];
-
- /* Offset is signed so we have to use ugly math =( */
- ea += offset / 8;
- offset %= 8;
- if(offset < 0)
- {
- offset += 8;
- ea--;
- }
- width = ((width-1) & 31) + 1;
-
- 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;
-
- m68ki_write_32((mc68kcpu), 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);
- }
- return;
- }
- m68ki_exception_illegal(mc68kcpu);
-}
-
-
-void m68000_base_device_ops::m68k_op_bfclr_32_al(m68000_base_device* mc68kcpu)
-{
- if(CPU_TYPE_IS_EC020_PLUS((mc68kcpu)->cpu_type))
- {
- UINT32 word2 = OPER_I_16(mc68kcpu);
- INT32 offset = (word2>>6)&31;
- UINT32 width = word2;
- UINT32 mask_base;
- UINT32 data_long;
- UINT32 mask_long;
- UINT32 data_byte;
- UINT32 mask_byte;
- UINT32 ea = EA_AL_8(mc68kcpu);
-
-
- if(BIT_B(word2))
- offset = MAKE_INT_32(REG_D(mc68kcpu)[offset&7]);
- if(BIT_5(word2))
- width = REG_D(mc68kcpu)[width&7];
-
- /* Offset is signed so we have to use ugly math =( */
- ea += offset / 8;
- offset %= 8;
- if(offset < 0)
- {
- offset += 8;
- ea--;
- }
- width = ((width-1) & 31) + 1;
-
- 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;
-
- m68ki_write_32((mc68kcpu), 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);
- }
- return;
- }
- m68ki_exception_illegal(mc68kcpu);
-}
-
-
-void m68000_base_device_ops::m68k_op_bfexts_32_d(m68000_base_device* mc68kcpu)
-{
- if(CPU_TYPE_IS_EC020_PLUS((mc68kcpu)->cpu_type))
- {
- UINT32 word2 = OPER_I_16(mc68kcpu);
- UINT32 offset = (word2>>6)&31;
- UINT32 width = word2;
- UINT64 data = DY(mc68kcpu);
-
-
- if(BIT_B(word2))
- offset = REG_D(mc68kcpu)[offset&7];
- if(BIT_5(word2))
- width = REG_D(mc68kcpu)[width&7];
-
- offset &= 31;
- width = ((width-1) & 31) + 1;
-
- data = ROL_32(data, offset);
- (mc68kcpu)->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;
-
- REG_D(mc68kcpu)[(word2>>12)&7] = data;
-
- return;
- }
- m68ki_exception_illegal(mc68kcpu);
-}
-
-
-void m68000_base_device_ops::m68k_op_bfexts_32_ai(m68000_base_device* mc68kcpu)
-{
- if(CPU_TYPE_IS_EC020_PLUS((mc68kcpu)->cpu_type))
- {
- UINT32 word2 = OPER_I_16(mc68kcpu);
- INT32 offset = (word2>>6)&31;
- UINT32 width = word2;
- UINT32 data;
- UINT32 ea = EA_AY_AI_8(mc68kcpu);
-
-
- if(BIT_B(word2))
- offset = MAKE_INT_32(REG_D(mc68kcpu)[offset&7]);
- if(BIT_5(word2))
- width = REG_D(mc68kcpu)[width&7];
-
- if(BIT_B(word2))
- {
- /* Offset is signed so we have to use ugly math =( */
- ea += offset / 8;
- offset %= 8;
- if(offset < 0)
- {
- offset += 8;
- ea--;
- }
- }
- 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 = MASK_OUT_ABOVE_32(data<<offset);
-
- if((offset+width) > 32)
- data |= (m68ki_read_8((mc68kcpu), ea+4) << offset) >> 8;
-
- (mc68kcpu)->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;
-
- REG_D(mc68kcpu)[(word2 >> 12) & 7] = data;
-
- return;
- }
- m68ki_exception_illegal(mc68kcpu);
-}
-
-
-void m68000_base_device_ops::m68k_op_bfexts_32_di(m68000_base_device* mc68kcpu)
-{
- if(CPU_TYPE_IS_EC020_PLUS((mc68kcpu)->cpu_type))
- {
- UINT32 word2 = OPER_I_16(mc68kcpu);
- INT32 offset = (word2>>6)&31;
- UINT32 width = word2;
- UINT32 data;
- UINT32 ea = EA_AY_DI_8(mc68kcpu);
-
-
- if(BIT_B(word2))
- offset = MAKE_INT_32(REG_D(mc68kcpu)[offset&7]);
- if(BIT_5(word2))
- width = REG_D(mc68kcpu)[width&7];
-
- if(BIT_B(word2))
- {
- /* Offset is signed so we have to use ugly math =( */
- ea += offset / 8;
- offset %= 8;
- if(offset < 0)
- {
- offset += 8;
- ea--;
- }
- }
- 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 = MASK_OUT_ABOVE_32(data<<offset);
-
- if((offset+width) > 32)
- data |= (m68ki_read_8((mc68kcpu), ea+4) << offset) >> 8;
-
- (mc68kcpu)->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;
-
- REG_D(mc68kcpu)[(word2 >> 12) & 7] = data;
-
- return;
- }
- m68ki_exception_illegal(mc68kcpu);
-}
-
-
-void m68000_base_device_ops::m68k_op_bfexts_32_ix(m68000_base_device* mc68kcpu)
-{
- if(CPU_TYPE_IS_EC020_PLUS((mc68kcpu)->cpu_type))
- {
- UINT32 word2 = OPER_I_16(mc68kcpu);
- INT32 offset = (word2>>6)&31;
- UINT32 width = word2;
- UINT32 data;
- UINT32 ea = EA_AY_IX_8(mc68kcpu);
-
-
- if(BIT_B(word2))
- offset = MAKE_INT_32(REG_D(mc68kcpu)[offset&7]);
- if(BIT_5(word2))
- width = REG_D(mc68kcpu)[width&7];
-
- if(BIT_B(word2))
- {
- /* Offset is signed so we have to use ugly math =( */
- ea += offset / 8;
- offset %= 8;
- if(offset < 0)
- {
- offset += 8;
- ea--;
- }
- }
- 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 = MASK_OUT_ABOVE_32(data<<offset);
-
- if((offset+width) > 32)
- data |= (m68ki_read_8((mc68kcpu), ea+4) << offset) >> 8;
-
- (mc68kcpu)->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;
-
- REG_D(mc68kcpu)[(word2 >> 12) & 7] = data;
-
- return;
- }
- m68ki_exception_illegal(mc68kcpu);
-}
-
-
-void m68000_base_device_ops::m68k_op_bfexts_32_aw(m68000_base_device* mc68kcpu)
-{
- if(CPU_TYPE_IS_EC020_PLUS((mc68kcpu)->cpu_type))
- {
- UINT32 word2 = OPER_I_16(mc68kcpu);
- INT32 offset = (word2>>6)&31;
- UINT32 width = word2;
- UINT32 data;
- UINT32 ea = EA_AW_8(mc68kcpu);
-
-
- if(BIT_B(word2))
- offset = MAKE_INT_32(REG_D(mc68kcpu)[offset&7]);
- if(BIT_5(word2))
- width = REG_D(mc68kcpu)[width&7];
-
- if(BIT_B(word2))
- {
- /* Offset is signed so we have to use ugly math =( */
- ea += offset / 8;
- offset %= 8;
- if(offset < 0)
- {
- offset += 8;
- ea--;
- }
- }
- 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 = MASK_OUT_ABOVE_32(data<<offset);
-
- if((offset+width) > 32)
- data |= (m68ki_read_8((mc68kcpu), ea+4) << offset) >> 8;
-
- (mc68kcpu)->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;
-
- REG_D(mc68kcpu)[(word2 >> 12) & 7] = data;
-
- return;
- }
- m68ki_exception_illegal(mc68kcpu);
-}
-
-
-void m68000_base_device_ops::m68k_op_bfexts_32_al(m68000_base_device* mc68kcpu)
-{
- if(CPU_TYPE_IS_EC020_PLUS((mc68kcpu)->cpu_type))
- {
- UINT32 word2 = OPER_I_16(mc68kcpu);
- INT32 offset = (word2>>6)&31;
- UINT32 width = word2;
- UINT32 data;
- UINT32 ea = EA_AL_8(mc68kcpu);
-
-
- if(BIT_B(word2))
- offset = MAKE_INT_32(REG_D(mc68kcpu)[offset&7]);
- if(BIT_5(word2))
- width = REG_D(mc68kcpu)[width&7];
-
- if(BIT_B(word2))
- {
- /* Offset is signed so we have to use ugly math =( */
- ea += offset / 8;
- offset %= 8;
- if(offset < 0)
- {
- offset += 8;
- ea--;
- }
- }
- 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 = MASK_OUT_ABOVE_32(data<<offset);
-
- if((offset+width) > 32)
- data |= (m68ki_read_8((mc68kcpu), ea+4) << offset) >> 8;
-
- (mc68kcpu)->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;
-
- REG_D(mc68kcpu)[(word2 >> 12) & 7] = data;
-
- return;
- }
- m68ki_exception_illegal(mc68kcpu);
-}
-
-
-void m68000_base_device_ops::m68k_op_bfexts_32_pcdi(m68000_base_device* mc68kcpu)
-{
- if(CPU_TYPE_IS_EC020_PLUS((mc68kcpu)->cpu_type))
- {
- UINT32 word2 = OPER_I_16(mc68kcpu);
- INT32 offset = (word2>>6)&31;
- UINT32 width = word2;
- UINT32 data;
- UINT32 ea = EA_PCDI_8(mc68kcpu);
-
-
- if(BIT_B(word2))
- offset = MAKE_INT_32(REG_D(mc68kcpu)[offset&7]);
- if(BIT_5(word2))
- width = REG_D(mc68kcpu)[width&7];
-
- if(BIT_B(word2))
- {
- /* Offset is signed so we have to use ugly math =( */
- ea += offset / 8;
- offset %= 8;
- if(offset < 0)
- {
- offset += 8;
- ea--;
- }
- }
- 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 = MASK_OUT_ABOVE_32(data<<offset);
-
- if((offset+width) > 32)
- data |= (m68ki_read_8((mc68kcpu), ea+4) << offset) >> 8;
-
- (mc68kcpu)->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;
-
- REG_D(mc68kcpu)[(word2 >> 12) & 7] = data;
-
- return;
- }
- m68ki_exception_illegal(mc68kcpu);
-}
-
-
-void m68000_base_device_ops::m68k_op_bfexts_32_pcix(m68000_base_device* mc68kcpu)
-{
- if(CPU_TYPE_IS_EC020_PLUS((mc68kcpu)->cpu_type))
- {
- UINT32 word2 = OPER_I_16(mc68kcpu);
- INT32 offset = (word2>>6)&31;
- UINT32 width = word2;
- UINT32 data;
- UINT32 ea = EA_PCIX_8(mc68kcpu);
-
-
- if(BIT_B(word2))
- offset = MAKE_INT_32(REG_D(mc68kcpu)[offset&7]);
- if(BIT_5(word2))
- width = REG_D(mc68kcpu)[width&7];
-
- if(BIT_B(word2))
- {
- /* Offset is signed so we have to use ugly math =( */
- ea += offset / 8;
- offset %= 8;
- if(offset < 0)
- {
- offset += 8;
- ea--;
- }
- }
- 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 = MASK_OUT_ABOVE_32(data<<offset);
-
- if((offset+width) > 32)
- data |= (m68ki_read_8((mc68kcpu), ea+4) << offset) >> 8;
-
- (mc68kcpu)->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;
-
- REG_D(mc68kcpu)[(word2 >> 12) & 7] = data;
-
- return;
- }
- m68ki_exception_illegal(mc68kcpu);
-}
-
-
-void m68000_base_device_ops::m68k_op_bfextu_32_d(m68000_base_device* mc68kcpu)
-{
- if(CPU_TYPE_IS_EC020_PLUS((mc68kcpu)->cpu_type))
- {
- UINT32 word2 = OPER_I_16(mc68kcpu);
- UINT32 offset = (word2>>6)&31;
- UINT32 width = word2;
- UINT64 data = DY(mc68kcpu);
-
-
- if(BIT_B(word2))
- offset = REG_D(mc68kcpu)[offset&7];
- if(BIT_5(word2))
- width = REG_D(mc68kcpu)[width&7];
-
- offset &= 31;
- width = ((width-1) & 31) + 1;
-
- data = ROL_32(data, offset);
- (mc68kcpu)->n_flag = NFLAG_32(data);
- data >>= 32 - width;
-
- (mc68kcpu)->not_z_flag = data;
- (mc68kcpu)->v_flag = VFLAG_CLEAR;
- (mc68kcpu)->c_flag = CFLAG_CLEAR;
-
- REG_D(mc68kcpu)[(word2>>12)&7] = data;
-
- return;
- }
- m68ki_exception_illegal(mc68kcpu);
-}
-
-
-void m68000_base_device_ops::m68k_op_bfextu_32_ai(m68000_base_device* mc68kcpu)
-{
- if(CPU_TYPE_IS_EC020_PLUS((mc68kcpu)->cpu_type))
- {
- UINT32 word2 = OPER_I_16(mc68kcpu);
- INT32 offset = (word2>>6)&31;
- UINT32 width = word2;
- UINT32 data;
- UINT32 ea = EA_AY_AI_8(mc68kcpu);
-
-
- if(BIT_B(word2))
- offset = MAKE_INT_32(REG_D(mc68kcpu)[offset&7]);
- if(BIT_5(word2))
- width = REG_D(mc68kcpu)[width&7];
-
- if(BIT_B(word2))
- {
- /* Offset is signed so we have to use ugly math =( */
- ea += offset / 8;
- offset %= 8;
- if(offset < 0)
- {
- offset += 8;
- ea--;
- }
- }
- 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 = MASK_OUT_ABOVE_32(data<<offset);
-
- if((offset+width) > 32)
- data |= (m68ki_read_8((mc68kcpu), ea+4) << offset) >> 8;
-
- (mc68kcpu)->n_flag = NFLAG_32(data);
- data >>= (32 - width);
-
- (mc68kcpu)->not_z_flag = data;
- (mc68kcpu)->v_flag = VFLAG_CLEAR;
- (mc68kcpu)->c_flag = CFLAG_CLEAR;
-
- REG_D(mc68kcpu)[(word2 >> 12) & 7] = data;
-
- return;
- }
- m68ki_exception_illegal(mc68kcpu);
-}
-
-
-void m68000_base_device_ops::m68k_op_bfextu_32_di(m68000_base_device* mc68kcpu)
-{
- if(CPU_TYPE_IS_EC020_PLUS((mc68kcpu)->cpu_type))
- {
- UINT32 word2 = OPER_I_16(mc68kcpu);
- INT32 offset = (word2>>6)&31;
- UINT32 width = word2;
- UINT32 data;
- UINT32 ea = EA_AY_DI_8(mc68kcpu);
-
-
- if(BIT_B(word2))
- offset = MAKE_INT_32(REG_D(mc68kcpu)[offset&7]);
- if(BIT_5(word2))
- width = REG_D(mc68kcpu)[width&7];
-
- if(BIT_B(word2))
- {
- /* Offset is signed so we have to use ugly math =( */
- ea += offset / 8;
- offset %= 8;
- if(offset < 0)
- {
- offset += 8;
- ea--;
- }
- }
- 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 = MASK_OUT_ABOVE_32(data<<offset);
-
- if((offset+width) > 32)
- data |= (m68ki_read_8((mc68kcpu), ea+4) << offset) >> 8;
-
- (mc68kcpu)->n_flag = NFLAG_32(data);
- data >>= (32 - width);
-
- (mc68kcpu)->not_z_flag = data;
- (mc68kcpu)->v_flag = VFLAG_CLEAR;
- (mc68kcpu)->c_flag = CFLAG_CLEAR;
-
- REG_D(mc68kcpu)[(word2 >> 12) & 7] = data;
-
- return;
- }
- m68ki_exception_illegal(mc68kcpu);
-}
-
-
-void m68000_base_device_ops::m68k_op_bfextu_32_ix(m68000_base_device* mc68kcpu)
-{
- if(CPU_TYPE_IS_EC020_PLUS((mc68kcpu)->cpu_type))
- {
- UINT32 word2 = OPER_I_16(mc68kcpu);
- INT32 offset = (word2>>6)&31;
- UINT32 width = word2;
- UINT32 data;
- UINT32 ea = EA_AY_IX_8(mc68kcpu);
-
-
- if(BIT_B(word2))
- offset = MAKE_INT_32(REG_D(mc68kcpu)[offset&7]);
- if(BIT_5(word2))
- width = REG_D(mc68kcpu)[width&7];
-
- if(BIT_B(word2))
- {
- /* Offset is signed so we have to use ugly math =( */
- ea += offset / 8;
- offset %= 8;
- if(offset < 0)
- {
- offset += 8;
- ea--;
- }
- }
- 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 = MASK_OUT_ABOVE_32(data<<offset);
-
- if((offset+width) > 32)
- data |= (m68ki_read_8((mc68kcpu), ea+4) << offset) >> 8;
-
- (mc68kcpu)->n_flag = NFLAG_32(data);
- data >>= (32 - width);
-
- (mc68kcpu)->not_z_flag = data;
- (mc68kcpu)->v_flag = VFLAG_CLEAR;
- (mc68kcpu)->c_flag = CFLAG_CLEAR;
-
- REG_D(mc68kcpu)[(word2 >> 12) & 7] = data;
-
- return;
- }
- m68ki_exception_illegal(mc68kcpu);
-}
-
-
-void m68000_base_device_ops::m68k_op_bfextu_32_aw(m68000_base_device* mc68kcpu)
-{
- if(CPU_TYPE_IS_EC020_PLUS((mc68kcpu)->cpu_type))
- {
- UINT32 word2 = OPER_I_16(mc68kcpu);
- INT32 offset = (word2>>6)&31;
- UINT32 width = word2;
- UINT32 data;
- UINT32 ea = EA_AW_8(mc68kcpu);
-
-
- if(BIT_B(word2))
- offset = MAKE_INT_32(REG_D(mc68kcpu)[offset&7]);
- if(BIT_5(word2))
- width = REG_D(mc68kcpu)[width&7];
-
- if(BIT_B(word2))
- {
- /* Offset is signed so we have to use ugly math =( */
- ea += offset / 8;
- offset %= 8;
- if(offset < 0)
- {
- offset += 8;
- ea--;
- }
- }
- 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 = MASK_OUT_ABOVE_32(data<<offset);
-
- if((offset+width) > 32)
- data |= (m68ki_read_8((mc68kcpu), ea+4) << offset) >> 8;
-
- (mc68kcpu)->n_flag = NFLAG_32(data);
- data >>= (32 - width);
-
- (mc68kcpu)->not_z_flag = data;
- (mc68kcpu)->v_flag = VFLAG_CLEAR;
- (mc68kcpu)->c_flag = CFLAG_CLEAR;
-
- REG_D(mc68kcpu)[(word2 >> 12) & 7] = data;
-
- return;
- }
- m68ki_exception_illegal(mc68kcpu);
-}
-
-
-void m68000_base_device_ops::m68k_op_bfextu_32_al(m68000_base_device* mc68kcpu)
-{
- if(CPU_TYPE_IS_EC020_PLUS((mc68kcpu)->cpu_type))
- {
- UINT32 word2 = OPER_I_16(mc68kcpu);
- INT32 offset = (word2>>6)&31;
- UINT32 width = word2;
- UINT32 data;
- UINT32 ea = EA_AL_8(mc68kcpu);
-
-
- if(BIT_B(word2))
- offset = MAKE_INT_32(REG_D(mc68kcpu)[offset&7]);
- if(BIT_5(word2))
- width = REG_D(mc68kcpu)[width&7];
-
- if(BIT_B(word2))
- {
- /* Offset is signed so we have to use ugly math =( */
- ea += offset / 8;
- offset %= 8;
- if(offset < 0)
- {
- offset += 8;
- ea--;
- }
- }
- 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 = MASK_OUT_ABOVE_32(data<<offset);
-
- if((offset+width) > 32)
- data |= (m68ki_read_8((mc68kcpu), ea+4) << offset) >> 8;
-
- (mc68kcpu)->n_flag = NFLAG_32(data);
- data >>= (32 - width);
-
- (mc68kcpu)->not_z_flag = data;
- (mc68kcpu)->v_flag = VFLAG_CLEAR;
- (mc68kcpu)->c_flag = CFLAG_CLEAR;
-
- REG_D(mc68kcpu)[(word2 >> 12) & 7] = data;
-
- return;
- }
- m68ki_exception_illegal(mc68kcpu);
-}
-
-
-void m68000_base_device_ops::m68k_op_bfextu_32_pcdi(m68000_base_device* mc68kcpu)
-{
- if(CPU_TYPE_IS_EC020_PLUS((mc68kcpu)->cpu_type))
- {
- UINT32 word2 = OPER_I_16(mc68kcpu);
- INT32 offset = (word2>>6)&31;
- UINT32 width = word2;
- UINT32 data;
- UINT32 ea = EA_PCDI_8(mc68kcpu);
-
-
- if(BIT_B(word2))
- offset = MAKE_INT_32(REG_D(mc68kcpu)[offset&7]);
- if(BIT_5(word2))
- width = REG_D(mc68kcpu)[width&7];
-
- if(BIT_B(word2))
- {
- /* Offset is signed so we have to use ugly math =( */
- ea += offset / 8;
- offset %= 8;
- if(offset < 0)
- {
- offset += 8;
- ea--;
- }
- }
- 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 = MASK_OUT_ABOVE_32(data<<offset);
-
- if((offset+width) > 32)
- data |= (m68ki_read_8((mc68kcpu), ea+4) << offset) >> 8;
-
- (mc68kcpu)->n_flag = NFLAG_32(data);
- data >>= (32 - width);
-
- (mc68kcpu)->not_z_flag = data;
- (mc68kcpu)->v_flag = VFLAG_CLEAR;
- (mc68kcpu)->c_flag = CFLAG_CLEAR;
-
- REG_D(mc68kcpu)[(word2 >> 12) & 7] = data;
-
- return;
- }
- m68ki_exception_illegal(mc68kcpu);
-}
-
-
-void m68000_base_device_ops::m68k_op_bfextu_32_pcix(m68000_base_device* mc68kcpu)
-{
- if(CPU_TYPE_IS_EC020_PLUS((mc68kcpu)->cpu_type))
- {
- UINT32 word2 = OPER_I_16(mc68kcpu);
- INT32 offset = (word2>>6)&31;
- UINT32 width = word2;
- UINT32 data;
- UINT32 ea = EA_PCIX_8(mc68kcpu);
-
-
- if(BIT_B(word2))
- offset = MAKE_INT_32(REG_D(mc68kcpu)[offset&7]);
- if(BIT_5(word2))
- width = REG_D(mc68kcpu)[width&7];
-
- if(BIT_B(word2))
- {
- /* Offset is signed so we have to use ugly math =( */
- ea += offset / 8;
- offset %= 8;
- if(offset < 0)
- {
- offset += 8;
- ea--;
- }
- }
- 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 = MASK_OUT_ABOVE_32(data<<offset);
-
- if((offset+width) > 32)
- data |= (m68ki_read_8((mc68kcpu), ea+4) << offset) >> 8;
-
- (mc68kcpu)->n_flag = NFLAG_32(data);
- data >>= (32 - width);
-
- (mc68kcpu)->not_z_flag = data;
- (mc68kcpu)->v_flag = VFLAG_CLEAR;
- (mc68kcpu)->c_flag = CFLAG_CLEAR;
-
- REG_D(mc68kcpu)[(word2 >> 12) & 7] = data;
-
- return;
- }
- m68ki_exception_illegal(mc68kcpu);
-}
-
-
-void m68000_base_device_ops::m68k_op_bfffo_32_d(m68000_base_device* mc68kcpu)
-{
- if(CPU_TYPE_IS_EC020_PLUS((mc68kcpu)->cpu_type))
- {
- UINT32 word2 = OPER_I_16(mc68kcpu);
- UINT32 offset = (word2>>6)&31;
- UINT32 width = word2;
- UINT64 data = DY(mc68kcpu);
- UINT32 bit;
-
-
- if(BIT_B(word2))
- offset = REG_D(mc68kcpu)[offset&7];
- if(BIT_5(word2))
- width = REG_D(mc68kcpu)[width&7];
-
- offset &= 31;
- width = ((width-1) & 31) + 1;
-
- data = ROL_32(data, offset);
- (mc68kcpu)->n_flag = NFLAG_32(data);
- data >>= 32 - width;
-
- (mc68kcpu)->not_z_flag = data;
- (mc68kcpu)->v_flag = VFLAG_CLEAR;
- (mc68kcpu)->c_flag = CFLAG_CLEAR;
-
- for(bit = 1<<(width-1);bit && !(data & bit);bit>>= 1)
- offset++;
-
- REG_D(mc68kcpu)[(word2>>12)&7] = offset;
-
- return;
- }
- m68ki_exception_illegal(mc68kcpu);
-}
-
-
-void m68000_base_device_ops::m68k_op_bfffo_32_ai(m68000_base_device* mc68kcpu)
-{
- if(CPU_TYPE_IS_EC020_PLUS((mc68kcpu)->cpu_type))
- {
- UINT32 word2 = OPER_I_16(mc68kcpu);
- INT32 offset = (word2>>6)&31;
- INT32 local_offset;
- UINT32 width = word2;
- UINT32 data;
- UINT32 bit;
- UINT32 ea = EA_AY_AI_8(mc68kcpu);
-
-
- if(BIT_B(word2))
- offset = MAKE_INT_32(REG_D(mc68kcpu)[offset&7]);
- if(BIT_5(word2))
- width = REG_D(mc68kcpu)[width&7];
-
- /* Offset is signed so we have to use ugly math =( */
- ea += offset / 8;
- local_offset = offset % 8;
- if(local_offset < 0)
- {
- local_offset += 8;
- ea--;
- }
- width = ((width-1) & 31) + 1;
-
- data = (offset+width) < 16 ? (m68ki_read_16((mc68kcpu), ea) << 16) : m68ki_read_32((mc68kcpu), ea);
- data = MASK_OUT_ABOVE_32(data<<local_offset);
-
- if((local_offset+width) > 32)
- data |= (m68ki_read_8((mc68kcpu), ea+4) << local_offset) >> 8;
-
- (mc68kcpu)->n_flag = NFLAG_32(data);
- data >>= (32 - width);
-
- (mc68kcpu)->not_z_flag = data;
- (mc68kcpu)->v_flag = VFLAG_CLEAR;
- (mc68kcpu)->c_flag = CFLAG_CLEAR;
-
- for(bit = 1<<(width-1);bit && !(data & bit);bit>>= 1)
- offset++;
-
- REG_D(mc68kcpu)[(word2>>12)&7] = offset;
-
- return;
- }
- m68ki_exception_illegal(mc68kcpu);
-}
-
-
-void m68000_base_device_ops::m68k_op_bfffo_32_di(m68000_base_device* mc68kcpu)
-{
- if(CPU_TYPE_IS_EC020_PLUS((mc68kcpu)->cpu_type))
- {
- UINT32 word2 = OPER_I_16(mc68kcpu);
- INT32 offset = (word2>>6)&31;
- INT32 local_offset;
- UINT32 width = word2;
- UINT32 data;
- UINT32 bit;
- UINT32 ea = EA_AY_DI_8(mc68kcpu);
-
-
- if(BIT_B(word2))
- offset = MAKE_INT_32(REG_D(mc68kcpu)[offset&7]);
- if(BIT_5(word2))
- width = REG_D(mc68kcpu)[width&7];
-
- /* Offset is signed so we have to use ugly math =( */
- ea += offset / 8;
- local_offset = offset % 8;
- if(local_offset < 0)
- {
- local_offset += 8;
- ea--;
- }
- width = ((width-1) & 31) + 1;
-
- data = (offset+width) < 16 ? (m68ki_read_16((mc68kcpu), ea) << 16) : m68ki_read_32((mc68kcpu), ea);
- data = MASK_OUT_ABOVE_32(data<<local_offset);
-
- if((local_offset+width) > 32)
- data |= (m68ki_read_8((mc68kcpu), ea+4) << local_offset) >> 8;
-
- (mc68kcpu)->n_flag = NFLAG_32(data);
- data >>= (32 - width);
-
- (mc68kcpu)->not_z_flag = data;
- (mc68kcpu)->v_flag = VFLAG_CLEAR;
- (mc68kcpu)->c_flag = CFLAG_CLEAR;
-
- for(bit = 1<<(width-1);bit && !(data & bit);bit>>= 1)
- offset++;
-
- REG_D(mc68kcpu)[(word2>>12)&7] = offset;
-
- return;
- }
- m68ki_exception_illegal(mc68kcpu);
-}
-
-
-void m68000_base_device_ops::m68k_op_bfffo_32_ix(m68000_base_device* mc68kcpu)
-{
- if(CPU_TYPE_IS_EC020_PLUS((mc68kcpu)->cpu_type))
- {
- UINT32 word2 = OPER_I_16(mc68kcpu);
- INT32 offset = (word2>>6)&31;
- INT32 local_offset;
- UINT32 width = word2;
- UINT32 data;
- UINT32 bit;
- UINT32 ea = EA_AY_IX_8(mc68kcpu);
-
-
- if(BIT_B(word2))
- offset = MAKE_INT_32(REG_D(mc68kcpu)[offset&7]);
- if(BIT_5(word2))
- width = REG_D(mc68kcpu)[width&7];
-
- /* Offset is signed so we have to use ugly math =( */
- ea += offset / 8;
- local_offset = offset % 8;
- if(local_offset < 0)
- {
- local_offset += 8;
- ea--;
- }
- width = ((width-1) & 31) + 1;
-
- data = (offset+width) < 16 ? (m68ki_read_16((mc68kcpu), ea) << 16) : m68ki_read_32((mc68kcpu), ea);
- data = MASK_OUT_ABOVE_32(data<<local_offset);
-
- if((local_offset+width) > 32)
- data |= (m68ki_read_8((mc68kcpu), ea+4) << local_offset) >> 8;
-
- (mc68kcpu)->n_flag = NFLAG_32(data);
- data >>= (32 - width);
-
- (mc68kcpu)->not_z_flag = data;
- (mc68kcpu)->v_flag = VFLAG_CLEAR;
- (mc68kcpu)->c_flag = CFLAG_CLEAR;
-
- for(bit = 1<<(width-1);bit && !(data & bit);bit>>= 1)
- offset++;
-
- REG_D(mc68kcpu)[(word2>>12)&7] = offset;
-
- return;
- }
- m68ki_exception_illegal(mc68kcpu);
-}
-
-
-void m68000_base_device_ops::m68k_op_bfffo_32_aw(m68000_base_device* mc68kcpu)
-{
- if(CPU_TYPE_IS_EC020_PLUS((mc68kcpu)->cpu_type))
- {
- UINT32 word2 = OPER_I_16(mc68kcpu);
- INT32 offset = (word2>>6)&31;
- INT32 local_offset;
- UINT32 width = word2;
- UINT32 data;
- UINT32 bit;
- UINT32 ea = EA_AW_8(mc68kcpu);
-
-
- if(BIT_B(word2))
- offset = MAKE_INT_32(REG_D(mc68kcpu)[offset&7]);
- if(BIT_5(word2))
- width = REG_D(mc68kcpu)[width&7];
-
- /* Offset is signed so we have to use ugly math =( */
- ea += offset / 8;
- local_offset = offset % 8;
- if(local_offset < 0)
- {
- local_offset += 8;
- ea--;
- }
- width = ((width-1) & 31) + 1;
-
- data = (offset+width) < 16 ? (m68ki_read_16((mc68kcpu), ea) << 16) : m68ki_read_32((mc68kcpu), ea);
- data = MASK_OUT_ABOVE_32(data<<local_offset);
-
- if((local_offset+width) > 32)
- data |= (m68ki_read_8((mc68kcpu), ea+4) << local_offset) >> 8;
-
- (mc68kcpu)->n_flag = NFLAG_32(data);
- data >>= (32 - width);
-
- (mc68kcpu)->not_z_flag = data;
- (mc68kcpu)->v_flag = VFLAG_CLEAR;
- (mc68kcpu)->c_flag = CFLAG_CLEAR;
-
- for(bit = 1<<(width-1);bit && !(data & bit);bit>>= 1)
- offset++;
-
- REG_D(mc68kcpu)[(word2>>12)&7] = offset;
-
- return;
- }
- m68ki_exception_illegal(mc68kcpu);
-}
-
-
-void m68000_base_device_ops::m68k_op_bfffo_32_al(m68000_base_device* mc68kcpu)
-{
- if(CPU_TYPE_IS_EC020_PLUS((mc68kcpu)->cpu_type))
- {
- UINT32 word2 = OPER_I_16(mc68kcpu);
- INT32 offset = (word2>>6)&31;
- INT32 local_offset;
- UINT32 width = word2;
- UINT32 data;
- UINT32 bit;
- UINT32 ea = EA_AL_8(mc68kcpu);
-
-
- if(BIT_B(word2))
- offset = MAKE_INT_32(REG_D(mc68kcpu)[offset&7]);
- if(BIT_5(word2))
- width = REG_D(mc68kcpu)[width&7];
-
- /* Offset is signed so we have to use ugly math =( */
- ea += offset / 8;
- local_offset = offset % 8;
- if(local_offset < 0)
- {
- local_offset += 8;
- ea--;
- }
- width = ((width-1) & 31) + 1;
-
- data = (offset+width) < 16 ? (m68ki_read_16((mc68kcpu), ea) << 16) : m68ki_read_32((mc68kcpu), ea);
- data = MASK_OUT_ABOVE_32(data<<local_offset);
-
- if((local_offset+width) > 32)
- data |= (m68ki_read_8((mc68kcpu), ea+4) << local_offset) >> 8;
-
- (mc68kcpu)->n_flag = NFLAG_32(data);
- data >>= (32 - width);
-
- (mc68kcpu)->not_z_flag = data;
- (mc68kcpu)->v_flag = VFLAG_CLEAR;
- (mc68kcpu)->c_flag = CFLAG_CLEAR;
-
- for(bit = 1<<(width-1);bit && !(data & bit);bit>>= 1)
- offset++;
-
- REG_D(mc68kcpu)[(word2>>12)&7] = offset;
-
- return;
- }
- m68ki_exception_illegal(mc68kcpu);
-}
-
-
-void m68000_base_device_ops::m68k_op_bfffo_32_pcdi(m68000_base_device* mc68kcpu)
-{
- if(CPU_TYPE_IS_EC020_PLUS((mc68kcpu)->cpu_type))
- {
- UINT32 word2 = OPER_I_16(mc68kcpu);
- INT32 offset = (word2>>6)&31;
- INT32 local_offset;
- UINT32 width = word2;
- UINT32 data;
- UINT32 bit;
- UINT32 ea = EA_PCDI_8(mc68kcpu);
-
-
- if(BIT_B(word2))
- offset = MAKE_INT_32(REG_D(mc68kcpu)[offset&7]);
- if(BIT_5(word2))
- width = REG_D(mc68kcpu)[width&7];
-
- /* Offset is signed so we have to use ugly math =( */
- ea += offset / 8;
- local_offset = offset % 8;
- if(local_offset < 0)
- {
- local_offset += 8;
- ea--;
- }
- width = ((width-1) & 31) + 1;
-
- data = (offset+width) < 16 ? (m68ki_read_16((mc68kcpu), ea) << 16) : m68ki_read_32((mc68kcpu), ea);
- data = MASK_OUT_ABOVE_32(data<<local_offset);
-
- if((local_offset+width) > 32)
- data |= (m68ki_read_8((mc68kcpu), ea+4) << local_offset) >> 8;
-
- (mc68kcpu)->n_flag = NFLAG_32(data);
- data >>= (32 - width);
-
- (mc68kcpu)->not_z_flag = data;
- (mc68kcpu)->v_flag = VFLAG_CLEAR;
- (mc68kcpu)->c_flag = CFLAG_CLEAR;
-
- for(bit = 1<<(width-1);bit && !(data & bit);bit>>= 1)
- offset++;
-
- REG_D(mc68kcpu)[(word2>>12)&7] = offset;
-
- return;
- }
- m68ki_exception_illegal(mc68kcpu);
-}
-
-
-void m68000_base_device_ops::m68k_op_bfffo_32_pcix(m68000_base_device* mc68kcpu)
-{
- if(CPU_TYPE_IS_EC020_PLUS((mc68kcpu)->cpu_type))
- {
- UINT32 word2 = OPER_I_16(mc68kcpu);
- INT32 offset = (word2>>6)&31;
- INT32 local_offset;
- UINT32 width = word2;
- UINT32 data;
- UINT32 bit;
- UINT32 ea = EA_PCIX_8(mc68kcpu);
-
-
- if(BIT_B(word2))
- offset = MAKE_INT_32(REG_D(mc68kcpu)[offset&7]);
- if(BIT_5(word2))
- width = REG_D(mc68kcpu)[width&7];
-
- /* Offset is signed so we have to use ugly math =( */
- ea += offset / 8;
- local_offset = offset % 8;
- if(local_offset < 0)
- {
- local_offset += 8;
- ea--;
- }
- width = ((width-1) & 31) + 1;
-
- data = (offset+width) < 16 ? (m68ki_read_16((mc68kcpu), ea) << 16) : m68ki_read_32((mc68kcpu), ea);
- data = MASK_OUT_ABOVE_32(data<<local_offset);
-
- if((local_offset+width) > 32)
- data |= (m68ki_read_8((mc68kcpu), ea+4) << local_offset) >> 8;
-
- (mc68kcpu)->n_flag = NFLAG_32(data);
- data >>= (32 - width);
-
- (mc68kcpu)->not_z_flag = data;
- (mc68kcpu)->v_flag = VFLAG_CLEAR;
- (mc68kcpu)->c_flag = CFLAG_CLEAR;
-
- for(bit = 1<<(width-1);bit && !(data & bit);bit>>= 1)
- offset++;
-
- REG_D(mc68kcpu)[(word2>>12)&7] = offset;
-
- return;
- }
- m68ki_exception_illegal(mc68kcpu);
-}
-
-
-void m68000_base_device_ops::m68k_op_bfins_32_d(m68000_base_device* mc68kcpu)
-{
- if(CPU_TYPE_IS_EC020_PLUS((mc68kcpu)->cpu_type))
- {
- UINT32 word2 = OPER_I_16(mc68kcpu);
- UINT32 offset = (word2>>6)&31;
- UINT32 width = word2;
- UINT32* data = &DY(mc68kcpu);
- UINT64 mask;
- UINT64 insert = REG_D(mc68kcpu)[(word2>>12)&7];
-
-
- if(BIT_B(word2))
- offset = REG_D(mc68kcpu)[offset&7];
- if(BIT_5(word2))
- width = REG_D(mc68kcpu)[width&7];
-
-
- offset &= 31;
- width = ((width-1) & 31) + 1;
-
-
- mask = MASK_OUT_ABOVE_32(0xffffffff << (32 - width));
- mask = ROR_32(mask, offset);
-
- insert = MASK_OUT_ABOVE_32(insert << (32 - width));
- (mc68kcpu)->n_flag = NFLAG_32(insert);
- (mc68kcpu)->not_z_flag = insert;
- insert = ROR_32(insert, offset);
-
- (mc68kcpu)->v_flag = VFLAG_CLEAR;
- (mc68kcpu)->c_flag = CFLAG_CLEAR;
-
- *data &= ~mask;
- *data |= insert;
-
- return;
- }
- m68ki_exception_illegal(mc68kcpu);
-}
-
-
-void m68000_base_device_ops::m68k_op_bfins_32_ai(m68000_base_device* mc68kcpu)
-{
- if(CPU_TYPE_IS_EC020_PLUS((mc68kcpu)->cpu_type))
- {
- UINT32 word2 = OPER_I_16(mc68kcpu);
- INT32 offset = (word2>>6)&31;
- UINT32 width = word2;
- UINT32 insert_base = REG_D(mc68kcpu)[(word2>>12)&7];
- UINT32 insert_long;
- UINT32 insert_byte;
- UINT32 mask_base;
- UINT32 data_long;
- UINT32 mask_long;
- UINT32 data_byte;
- UINT32 mask_byte;
- UINT32 ea = EA_AY_AI_8(mc68kcpu);
-
-
- if(BIT_B(word2))
- offset = MAKE_INT_32(REG_D(mc68kcpu)[offset&7]);
- if(BIT_5(word2))
- width = REG_D(mc68kcpu)[width&7];
-
- if(BIT_B(word2))
- {
- /* Offset is signed so we have to use ugly math =( */
- ea += offset / 8;
- offset %= 8;
- if(offset < 0)
- {
- offset += 8;
- ea--;
- }
- }
- width = ((width-1) & 31) + 1;
-
- mask_base = MASK_OUT_ABOVE_32(0xffffffff << (32 - width));
- 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;
- 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;
-
- if((width + offset) < 8)
- {
- m68ki_write_8((mc68kcpu), 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);
- }
- else
- {
- m68ki_write_32((mc68kcpu), 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);
- 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) | insert_byte);
- }
- return;
- }
- m68ki_exception_illegal(mc68kcpu);
-}
-
-
-void m68000_base_device_ops::m68k_op_bfins_32_di(m68000_base_device* mc68kcpu)
-{
- if(CPU_TYPE_IS_EC020_PLUS((mc68kcpu)->cpu_type))
- {
- UINT32 word2 = OPER_I_16(mc68kcpu);
- INT32 offset = (word2>>6)&31;
- UINT32 width = word2;
- UINT32 insert_base = REG_D(mc68kcpu)[(word2>>12)&7];
- UINT32 insert_long;
- UINT32 insert_byte;
- UINT32 mask_base;
- UINT32 data_long;
- UINT32 mask_long;
- UINT32 data_byte;
- UINT32 mask_byte;
- UINT32 ea = EA_AY_DI_8(mc68kcpu);
-
-
- if(BIT_B(word2))
- offset = MAKE_INT_32(REG_D(mc68kcpu)[offset&7]);
- if(BIT_5(word2))
- width = REG_D(mc68kcpu)[width&7];
-
- if(BIT_B(word2))
- {
- /* Offset is signed so we have to use ugly math =( */
- ea += offset / 8;
- offset %= 8;
- if(offset < 0)
- {
- offset += 8;
- ea--;
- }
- }
- width = ((width-1) & 31) + 1;
-
- mask_base = MASK_OUT_ABOVE_32(0xffffffff << (32 - width));
- 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;
- 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;
-
- if((width + offset) < 8)
- {
- m68ki_write_8((mc68kcpu), 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);
- }
- else
- {
- m68ki_write_32((mc68kcpu), 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);
- 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) | insert_byte);
- }
- return;
- }
- m68ki_exception_illegal(mc68kcpu);
-}
-
-
-void m68000_base_device_ops::m68k_op_bfins_32_ix(m68000_base_device* mc68kcpu)
-{
- if(CPU_TYPE_IS_EC020_PLUS((mc68kcpu)->cpu_type))
- {
- UINT32 word2 = OPER_I_16(mc68kcpu);
- INT32 offset = (word2>>6)&31;
- UINT32 width = word2;
- UINT32 insert_base = REG_D(mc68kcpu)[(word2>>12)&7];
- UINT32 insert_long;
- UINT32 insert_byte;
- UINT32 mask_base;
- UINT32 data_long;
- UINT32 mask_long;
- UINT32 data_byte;
- UINT32 mask_byte;
- UINT32 ea = EA_AY_IX_8(mc68kcpu);
-
-
- if(BIT_B(word2))
- offset = MAKE_INT_32(REG_D(mc68kcpu)[offset&7]);
- if(BIT_5(word2))
- width = REG_D(mc68kcpu)[width&7];
-
- if(BIT_B(word2))
- {
- /* Offset is signed so we have to use ugly math =( */
- ea += offset / 8;
- offset %= 8;
- if(offset < 0)
- {
- offset += 8;
- ea--;
- }
- }
- width = ((width-1) & 31) + 1;
-
- mask_base = MASK_OUT_ABOVE_32(0xffffffff << (32 - width));
- 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;
- 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;
-
- if((width + offset) < 8)
- {
- m68ki_write_8((mc68kcpu), 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);
- }
- else
- {
- m68ki_write_32((mc68kcpu), 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);
- 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) | insert_byte);
- }
- return;
- }
- m68ki_exception_illegal(mc68kcpu);
-}
-
-
-void m68000_base_device_ops::m68k_op_bfins_32_aw(m68000_base_device* mc68kcpu)
-{
- if(CPU_TYPE_IS_EC020_PLUS((mc68kcpu)->cpu_type))
- {
- UINT32 word2 = OPER_I_16(mc68kcpu);
- INT32 offset = (word2>>6)&31;
- UINT32 width = word2;
- UINT32 insert_base = REG_D(mc68kcpu)[(word2>>12)&7];
- UINT32 insert_long;
- UINT32 insert_byte;
- UINT32 mask_base;
- UINT32 data_long;
- UINT32 mask_long;
- UINT32 data_byte;
- UINT32 mask_byte;
- UINT32 ea = EA_AW_8(mc68kcpu);
-
-
- if(BIT_B(word2))
- offset = MAKE_INT_32(REG_D(mc68kcpu)[offset&7]);
- if(BIT_5(word2))
- width = REG_D(mc68kcpu)[width&7];
-
- if(BIT_B(word2))
- {
- /* Offset is signed so we have to use ugly math =( */
- ea += offset / 8;
- offset %= 8;
- if(offset < 0)
- {
- offset += 8;
- ea--;
- }
- }
- width = ((width-1) & 31) + 1;
-
- mask_base = MASK_OUT_ABOVE_32(0xffffffff << (32 - width));
- 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;
- 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;
-
- if((width + offset) < 8)
- {
- m68ki_write_8((mc68kcpu), 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);
- }
- else
- {
- m68ki_write_32((mc68kcpu), 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);
- 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) | insert_byte);
- }
- return;
- }
- m68ki_exception_illegal(mc68kcpu);
-}
-
-
-void m68000_base_device_ops::m68k_op_bfins_32_al(m68000_base_device* mc68kcpu)
-{
- if(CPU_TYPE_IS_EC020_PLUS((mc68kcpu)->cpu_type))
- {
- UINT32 word2 = OPER_I_16(mc68kcpu);
- INT32 offset = (word2>>6)&31;
- UINT32 width = word2;
- UINT32 insert_base = REG_D(mc68kcpu)[(word2>>12)&7];
- UINT32 insert_long;
- UINT32 insert_byte;
- UINT32 mask_base;
- UINT32 data_long;
- UINT32 mask_long;
- UINT32 data_byte;
- UINT32 mask_byte;
- UINT32 ea = EA_AL_8(mc68kcpu);
-
-
- if(BIT_B(word2))
- offset = MAKE_INT_32(REG_D(mc68kcpu)[offset&7]);
- if(BIT_5(word2))
- width = REG_D(mc68kcpu)[width&7];
-
- if(BIT_B(word2))
- {
- /* Offset is signed so we have to use ugly math =( */
- ea += offset / 8;
- offset %= 8;
- if(offset < 0)
- {
- offset += 8;
- ea--;
- }
- }
- width = ((width-1) & 31) + 1;
-
- mask_base = MASK_OUT_ABOVE_32(0xffffffff << (32 - width));
- 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;
- 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;
-
- if((width + offset) < 8)
- {
- m68ki_write_8((mc68kcpu), 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);
- }
- else
- {
- m68ki_write_32((mc68kcpu), 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);
- 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) | insert_byte);
- }
- return;
- }
- m68ki_exception_illegal(mc68kcpu);
-}
-
-
-void m68000_base_device_ops::m68k_op_bfset_32_d(m68000_base_device* mc68kcpu)
-{
- if(CPU_TYPE_IS_EC020_PLUS((mc68kcpu)->cpu_type))
- {
- UINT32 word2 = OPER_I_16(mc68kcpu);
- UINT32 offset = (word2>>6)&31;
- UINT32 width = word2;
- UINT32* data = &DY(mc68kcpu);
- UINT64 mask;
-
-
- if(BIT_B(word2))
- offset = REG_D(mc68kcpu)[offset&7];
- if(BIT_5(word2))
- width = REG_D(mc68kcpu)[width&7];
-
-
- offset &= 31;
- width = ((width-1) & 31) + 1;
-
-
- 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;
-
- *data |= mask;
-
- return;
- }
- m68ki_exception_illegal(mc68kcpu);
-}
-
-
-void m68000_base_device_ops::m68k_op_bfset_32_ai(m68000_base_device* mc68kcpu)
-{
- if(CPU_TYPE_IS_EC020_PLUS((mc68kcpu)->cpu_type))
- {
- UINT32 word2 = OPER_I_16(mc68kcpu);
- INT32 offset = (word2>>6)&31;
- UINT32 width = word2;
- UINT32 mask_base;
- UINT32 data_long;
- UINT32 mask_long;
- UINT32 data_byte;
- UINT32 mask_byte;
- UINT32 ea = EA_AY_AI_8(mc68kcpu);
-
- if(BIT_B(word2))
- offset = MAKE_INT_32(REG_D(mc68kcpu)[offset&7]);
- if(BIT_5(word2))
- width = REG_D(mc68kcpu)[width&7];
-
- /* Offset is signed so we have to use ugly math =( */
- ea += offset / 8;
- offset %= 8;
- if(offset < 0)
- {
- offset += 8;
- ea--;
- }
- width = ((width-1) & 31) + 1;
-
- 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;
-
- m68ki_write_32((mc68kcpu), 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);
- }
- return;
- }
- m68ki_exception_illegal(mc68kcpu);
-}
-
-
-void m68000_base_device_ops::m68k_op_bfset_32_di(m68000_base_device* mc68kcpu)
-{
- if(CPU_TYPE_IS_EC020_PLUS((mc68kcpu)->cpu_type))
- {
- UINT32 word2 = OPER_I_16(mc68kcpu);
- INT32 offset = (word2>>6)&31;
- UINT32 width = word2;
- UINT32 mask_base;
- UINT32 data_long;
- UINT32 mask_long;
- UINT32 data_byte;
- UINT32 mask_byte;
- UINT32 ea = EA_AY_DI_8(mc68kcpu);
-
- if(BIT_B(word2))
- offset = MAKE_INT_32(REG_D(mc68kcpu)[offset&7]);
- if(BIT_5(word2))
- width = REG_D(mc68kcpu)[width&7];
-
- /* Offset is signed so we have to use ugly math =( */
- ea += offset / 8;
- offset %= 8;
- if(offset < 0)
- {
- offset += 8;
- ea--;
- }
- width = ((width-1) & 31) + 1;
-
- 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;
-
- m68ki_write_32((mc68kcpu), 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);
- }
- return;
- }
- m68ki_exception_illegal(mc68kcpu);
-}
-
-
-void m68000_base_device_ops::m68k_op_bfset_32_ix(m68000_base_device* mc68kcpu)
-{
- if(CPU_TYPE_IS_EC020_PLUS((mc68kcpu)->cpu_type))
- {
- UINT32 word2 = OPER_I_16(mc68kcpu);
- INT32 offset = (word2>>6)&31;
- UINT32 width = word2;
- UINT32 mask_base;
- UINT32 data_long;
- UINT32 mask_long;
- UINT32 data_byte;
- UINT32 mask_byte;
- UINT32 ea = EA_AY_IX_8(mc68kcpu);
-
- if(BIT_B(word2))
- offset = MAKE_INT_32(REG_D(mc68kcpu)[offset&7]);
- if(BIT_5(word2))
- width = REG_D(mc68kcpu)[width&7];
-
- /* Offset is signed so we have to use ugly math =( */
- ea += offset / 8;
- offset %= 8;
- if(offset < 0)
- {
- offset += 8;
- ea--;
- }
- width = ((width-1) & 31) + 1;
-
- 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;
-
- m68ki_write_32((mc68kcpu), 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);
- }
- return;
- }
- m68ki_exception_illegal(mc68kcpu);
-}
-
-
-void m68000_base_device_ops::m68k_op_bfset_32_aw(m68000_base_device* mc68kcpu)
-{
- if(CPU_TYPE_IS_EC020_PLUS((mc68kcpu)->cpu_type))
- {
- UINT32 word2 = OPER_I_16(mc68kcpu);
- INT32 offset = (word2>>6)&31;
- UINT32 width = word2;
- UINT32 mask_base;
- UINT32 data_long;
- UINT32 mask_long;
- UINT32 data_byte;
- UINT32 mask_byte;
- UINT32 ea = EA_AW_8(mc68kcpu);
-
- if(BIT_B(word2))
- offset = MAKE_INT_32(REG_D(mc68kcpu)[offset&7]);
- if(BIT_5(word2))
- width = REG_D(mc68kcpu)[width&7];
-
- /* Offset is signed so we have to use ugly math =( */
- ea += offset / 8;
- offset %= 8;
- if(offset < 0)
- {
- offset += 8;
- ea--;
- }
- width = ((width-1) & 31) + 1;
-
- 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;
-
- m68ki_write_32((mc68kcpu), 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);
- }
- return;
- }
- m68ki_exception_illegal(mc68kcpu);
-}
-
-
-void m68000_base_device_ops::m68k_op_bfset_32_al(m68000_base_device* mc68kcpu)
-{
- if(CPU_TYPE_IS_EC020_PLUS((mc68kcpu)->cpu_type))
- {
- UINT32 word2 = OPER_I_16(mc68kcpu);
- INT32 offset = (word2>>6)&31;
- UINT32 width = word2;
- UINT32 mask_base;
- UINT32 data_long;
- UINT32 mask_long;
- UINT32 data_byte;
- UINT32 mask_byte;
- UINT32 ea = EA_AL_8(mc68kcpu);
-
- if(BIT_B(word2))
- offset = MAKE_INT_32(REG_D(mc68kcpu)[offset&7]);
- if(BIT_5(word2))
- width = REG_D(mc68kcpu)[width&7];
-
- /* Offset is signed so we have to use ugly math =( */
- ea += offset / 8;
- offset %= 8;
- if(offset < 0)
- {
- offset += 8;
- ea--;
- }
- width = ((width-1) & 31) + 1;
-
- 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;
-
- m68ki_write_32((mc68kcpu), 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);
- }
- return;
- }
- m68ki_exception_illegal(mc68kcpu);
-}
-
-
-void m68000_base_device_ops::m68k_op_bftst_32_d(m68000_base_device* mc68kcpu)
-{
- if(CPU_TYPE_IS_EC020_PLUS((mc68kcpu)->cpu_type))
- {
- UINT32 word2 = OPER_I_16(mc68kcpu);
- UINT32 offset = (word2>>6)&31;
- UINT32 width = word2;
- UINT32* data = &DY(mc68kcpu);
- UINT64 mask;
-
-
- if(BIT_B(word2))
- offset = REG_D(mc68kcpu)[offset&7];
- if(BIT_5(word2))
- width = REG_D(mc68kcpu)[width&7];
-
-
- offset &= 31;
- width = ((width-1) & 31) + 1;
-
-
- 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;
-
- return;
- }
- m68ki_exception_illegal(mc68kcpu);
-}
-
-
-void m68000_base_device_ops::m68k_op_bftst_32_ai(m68000_base_device* mc68kcpu)
-{
- if(CPU_TYPE_IS_EC020_PLUS((mc68kcpu)->cpu_type))
- {
- UINT32 word2 = OPER_I_16(mc68kcpu);
- INT32 offset = (word2>>6)&31;
- UINT32 width = word2;
- UINT32 mask_base;
- UINT32 data_long;
- UINT32 mask_long;
- UINT32 data_byte;
- UINT32 mask_byte;
- UINT32 ea = EA_AY_AI_8(mc68kcpu);
-
- if(BIT_B(word2))
- offset = MAKE_INT_32(REG_D(mc68kcpu)[offset&7]);
- if(BIT_5(word2))
- width = REG_D(mc68kcpu)[width&7];
-
- /* Offset is signed so we have to use ugly math =( */
- ea += offset / 8;
- offset %= 8;
- if(offset < 0)
- {
- offset += 8;
- ea--;
- }
- width = ((width-1) & 31) + 1;
-
-
- 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;
-
- 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);
- }
- return;
- }
- m68ki_exception_illegal(mc68kcpu);
-}
-
-
-void m68000_base_device_ops::m68k_op_bftst_32_di(m68000_base_device* mc68kcpu)
-{
- if(CPU_TYPE_IS_EC020_PLUS((mc68kcpu)->cpu_type))
- {
- UINT32 word2 = OPER_I_16(mc68kcpu);
- INT32 offset = (word2>>6)&31;
- UINT32 width = word2;
- UINT32 mask_base;
- UINT32 data_long;
- UINT32 mask_long;
- UINT32 data_byte;
- UINT32 mask_byte;
- UINT32 ea = EA_AY_DI_8(mc68kcpu);
-
- if(BIT_B(word2))
- offset = MAKE_INT_32(REG_D(mc68kcpu)[offset&7]);
- if(BIT_5(word2))
- width = REG_D(mc68kcpu)[width&7];
-
- /* Offset is signed so we have to use ugly math =( */
- ea += offset / 8;
- offset %= 8;
- if(offset < 0)
- {
- offset += 8;
- ea--;
- }
- width = ((width-1) & 31) + 1;
-
-
- 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;
-
- 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);
- }
- return;
- }
- m68ki_exception_illegal(mc68kcpu);
-}
-
-
-void m68000_base_device_ops::m68k_op_bftst_32_ix(m68000_base_device* mc68kcpu)
-{
- if(CPU_TYPE_IS_EC020_PLUS((mc68kcpu)->cpu_type))
- {
- UINT32 word2 = OPER_I_16(mc68kcpu);
- INT32 offset = (word2>>6)&31;
- UINT32 width = word2;
- UINT32 mask_base;
- UINT32 data_long;
- UINT32 mask_long;
- UINT32 data_byte;
- UINT32 mask_byte;
- UINT32 ea = EA_AY_IX_8(mc68kcpu);
-
- if(BIT_B(word2))
- offset = MAKE_INT_32(REG_D(mc68kcpu)[offset&7]);
- if(BIT_5(word2))
- width = REG_D(mc68kcpu)[width&7];
-
- /* Offset is signed so we have to use ugly math =( */
- ea += offset / 8;
- offset %= 8;
- if(offset < 0)
- {
- offset += 8;
- ea--;
- }
- width = ((width-1) & 31) + 1;
-
-
- 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;
-
- 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);
- }
- return;
- }
- m68ki_exception_illegal(mc68kcpu);
-}
-
-
-void m68000_base_device_ops::m68k_op_bftst_32_aw(m68000_base_device* mc68kcpu)
-{
- if(CPU_TYPE_IS_EC020_PLUS((mc68kcpu)->cpu_type))
- {
- UINT32 word2 = OPER_I_16(mc68kcpu);
- INT32 offset = (word2>>6)&31;
- UINT32 width = word2;
- UINT32 mask_base;
- UINT32 data_long;
- UINT32 mask_long;
- UINT32 data_byte;
- UINT32 mask_byte;
- UINT32 ea = EA_AW_8(mc68kcpu);
-
- if(BIT_B(word2))
- offset = MAKE_INT_32(REG_D(mc68kcpu)[offset&7]);
- if(BIT_5(word2))
- width = REG_D(mc68kcpu)[width&7];
-
- /* Offset is signed so we have to use ugly math =( */
- ea += offset / 8;
- offset %= 8;
- if(offset < 0)
- {
- offset += 8;
- ea--;
- }
- width = ((width-1) & 31) + 1;
-
-
- 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;
-
- 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);
- }
- return;
- }
- m68ki_exception_illegal(mc68kcpu);
-}
-
-
-void m68000_base_device_ops::m68k_op_bftst_32_al(m68000_base_device* mc68kcpu)
-{
- if(CPU_TYPE_IS_EC020_PLUS((mc68kcpu)->cpu_type))
- {
- UINT32 word2 = OPER_I_16(mc68kcpu);
- INT32 offset = (word2>>6)&31;
- UINT32 width = word2;
- UINT32 mask_base;
- UINT32 data_long;
- UINT32 mask_long;
- UINT32 data_byte;
- UINT32 mask_byte;
- UINT32 ea = EA_AL_8(mc68kcpu);
-
- if(BIT_B(word2))
- offset = MAKE_INT_32(REG_D(mc68kcpu)[offset&7]);
- if(BIT_5(word2))
- width = REG_D(mc68kcpu)[width&7];
-
- /* Offset is signed so we have to use ugly math =( */
- ea += offset / 8;
- offset %= 8;
- if(offset < 0)
- {
- offset += 8;
- ea--;
- }
- width = ((width-1) & 31) + 1;
-
-
- 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;
-
- 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);
- }
- return;
- }
- m68ki_exception_illegal(mc68kcpu);
-}
-
-
-void m68000_base_device_ops::m68k_op_bftst_32_pcdi(m68000_base_device* mc68kcpu)
-{
- if(CPU_TYPE_IS_EC020_PLUS((mc68kcpu)->cpu_type))
- {
- UINT32 word2 = OPER_I_16(mc68kcpu);
- INT32 offset = (word2>>6)&31;
- UINT32 width = word2;
- UINT32 mask_base;
- UINT32 data_long;
- UINT32 mask_long;
- UINT32 data_byte;
- UINT32 mask_byte;
- UINT32 ea = EA_PCDI_8(mc68kcpu);
-
- if(BIT_B(word2))
- offset = MAKE_INT_32(REG_D(mc68kcpu)[offset&7]);
- if(BIT_5(word2))
- width = REG_D(mc68kcpu)[width&7];
-
- /* Offset is signed so we have to use ugly math =( */
- ea += offset / 8;
- offset %= 8;
- if(offset < 0)
- {
- offset += 8;
- ea--;
- }
- width = ((width-1) & 31) + 1;
-
-
- 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;
-
- 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);
- }
- return;
- }
- m68ki_exception_illegal(mc68kcpu);
-}
-
-
-void m68000_base_device_ops::m68k_op_bftst_32_pcix(m68000_base_device* mc68kcpu)
-{
- if(CPU_TYPE_IS_EC020_PLUS((mc68kcpu)->cpu_type))
- {
- UINT32 word2 = OPER_I_16(mc68kcpu);
- INT32 offset = (word2>>6)&31;
- UINT32 width = word2;
- UINT32 mask_base;
- UINT32 data_long;
- UINT32 mask_long;
- UINT32 data_byte;
- UINT32 mask_byte;
- UINT32 ea = EA_PCIX_8(mc68kcpu);
-
- if(BIT_B(word2))
- offset = MAKE_INT_32(REG_D(mc68kcpu)[offset&7]);
- if(BIT_5(word2))
- width = REG_D(mc68kcpu)[width&7];
-
- /* Offset is signed so we have to use ugly math =( */
- ea += offset / 8;
- offset %= 8;
- if(offset < 0)
- {
- offset += 8;
- ea--;
- }
- width = ((width-1) & 31) + 1;
-
-
- 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;
-
- 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);
- }
- return;
- }
- m68ki_exception_illegal(mc68kcpu);
-}
-
-
-void m68000_base_device_ops::m68k_op_bkpt(m68000_base_device* mc68kcpu)
-{
- if(CPU_TYPE_IS_010_PLUS((mc68kcpu)->cpu_type))
- {
- 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);
- }
- m68ki_exception_illegal(mc68kcpu);
-}
-
-
-void m68000_base_device_ops::m68k_op_bra_8(m68000_base_device* mc68kcpu)
-{
- 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;
-}
-
-
-void m68000_base_device_ops::m68k_op_bra_16(m68000_base_device* mc68kcpu)
-{
- UINT32 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;
-}
-
-
-void m68000_base_device_ops::m68k_op_bra_32(m68000_base_device* mc68kcpu)
-{
- if(CPU_TYPE_IS_EC020_PLUS((mc68kcpu)->cpu_type))
- {
- UINT32 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;
- 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;
- }
-}
-
-
-void m68000_base_device_ops::m68k_op_bset_32_r_d(m68000_base_device* mc68kcpu)
-{
- UINT32* r_dst = &DY(mc68kcpu);
- UINT32 mask = 1 << (DX(mc68kcpu) & 0x1f);
-
- (mc68kcpu)->not_z_flag = *r_dst & mask;
- *r_dst |= mask;
-}
-
-
-void m68000_base_device_ops::m68k_op_bset_8_r_ai(m68000_base_device* mc68kcpu)
-{
- UINT32 ea = EA_AY_AI_8(mc68kcpu);
- UINT32 src = m68ki_read_8((mc68kcpu), ea);
- UINT32 mask = 1 << (DX(mc68kcpu) & 7);
-
- (mc68kcpu)->not_z_flag = src & mask;
- m68ki_write_8((mc68kcpu), ea, src | mask);
-}
-
-
-void m68000_base_device_ops::m68k_op_bset_8_r_pi(m68000_base_device* mc68kcpu)
-{
- UINT32 ea = EA_AY_PI_8(mc68kcpu);
- UINT32 src = m68ki_read_8((mc68kcpu), ea);
- UINT32 mask = 1 << (DX(mc68kcpu) & 7);
-
- (mc68kcpu)->not_z_flag = src & mask;
- m68ki_write_8((mc68kcpu), ea, src | mask);
-}
-
-
-void m68000_base_device_ops::m68k_op_bset_8_r_pi7(m68000_base_device* mc68kcpu)
-{
- UINT32 ea = EA_A7_PI_8(mc68kcpu);
- UINT32 src = m68ki_read_8((mc68kcpu), ea);
- UINT32 mask = 1 << (DX(mc68kcpu) & 7);
-
- (mc68kcpu)->not_z_flag = src & mask;
- m68ki_write_8((mc68kcpu), ea, src | mask);
-}
-
-
-void m68000_base_device_ops::m68k_op_bset_8_r_pd(m68000_base_device* mc68kcpu)
-{
- UINT32 ea = EA_AY_PD_8(mc68kcpu);
- UINT32 src = m68ki_read_8((mc68kcpu), ea);
- UINT32 mask = 1 << (DX(mc68kcpu) & 7);
-
- (mc68kcpu)->not_z_flag = src & mask;
- m68ki_write_8((mc68kcpu), ea, src | mask);
-}
-
-
-void m68000_base_device_ops::m68k_op_bset_8_r_pd7(m68000_base_device* mc68kcpu)
-{
- UINT32 ea = EA_A7_PD_8(mc68kcpu);
- UINT32 src = m68ki_read_8((mc68kcpu), ea);
- UINT32 mask = 1 << (DX(mc68kcpu) & 7);
-
- (mc68kcpu)->not_z_flag = src & mask;
- m68ki_write_8((mc68kcpu), ea, src | mask);
-}
-
-
-void m68000_base_device_ops::m68k_op_bset_8_r_di(m68000_base_device* mc68kcpu)
-{
- UINT32 ea = EA_AY_DI_8(mc68kcpu);
- UINT32 src = m68ki_read_8((mc68kcpu), ea);
- UINT32 mask = 1 << (DX(mc68kcpu) & 7);
-
- (mc68kcpu)->not_z_flag = src & mask;
- m68ki_write_8((mc68kcpu), ea, src | mask);
-}
-
-
-void m68000_base_device_ops::m68k_op_bset_8_r_ix(m68000_base_device* mc68kcpu)
-{
- UINT32 ea = EA_AY_IX_8(mc68kcpu);
- UINT32 src = m68ki_read_8((mc68kcpu), ea);
- UINT32 mask = 1 << (DX(mc68kcpu) & 7);
-
- (mc68kcpu)->not_z_flag = src & mask;
- m68ki_write_8((mc68kcpu), ea, src | mask);
-}
-
-
-void m68000_base_device_ops::m68k_op_bset_8_r_aw(m68000_base_device* mc68kcpu)
-{
- UINT32 ea = EA_AW_8(mc68kcpu);
- UINT32 src = m68ki_read_8((mc68kcpu), ea);
- UINT32 mask = 1 << (DX(mc68kcpu) & 7);
-
- (mc68kcpu)->not_z_flag = src & mask;
- m68ki_write_8((mc68kcpu), ea, src | mask);
-}
-
-
-void m68000_base_device_ops::m68k_op_bset_8_r_al(m68000_base_device* mc68kcpu)
-{
- UINT32 ea = EA_AL_8(mc68kcpu);
- UINT32 src = m68ki_read_8((mc68kcpu), ea);
- UINT32 mask = 1 << (DX(mc68kcpu) & 7);
-
- (mc68kcpu)->not_z_flag = src & mask;
- m68ki_write_8((mc68kcpu), ea, src | mask);
-}
-
-
-void m68000_base_device_ops::m68k_op_bset_32_s_d(m68000_base_device* mc68kcpu)
-{
- UINT32* r_dst = &DY(mc68kcpu);
- UINT32 mask = 1 << (OPER_I_8(mc68kcpu) & 0x1f);
-
- (mc68kcpu)->not_z_flag = *r_dst & mask;
- *r_dst |= mask;
-}
-
-
-void m68000_base_device_ops::m68k_op_bset_8_s_ai(m68000_base_device* mc68kcpu)
-{
- UINT32 mask = 1 << (OPER_I_8(mc68kcpu) & 7);
- UINT32 ea = EA_AY_AI_8(mc68kcpu);
- UINT32 src = m68ki_read_8((mc68kcpu), ea);
-
- (mc68kcpu)->not_z_flag = src & mask;
- m68ki_write_8((mc68kcpu), ea, src | mask);
-}
-
-
-void m68000_base_device_ops::m68k_op_bset_8_s_pi(m68000_base_device* mc68kcpu)
-{
- UINT32 mask = 1 << (OPER_I_8(mc68kcpu) & 7);
- UINT32 ea = EA_AY_PI_8(mc68kcpu);
- UINT32 src = m68ki_read_8((mc68kcpu), ea);
-
- (mc68kcpu)->not_z_flag = src & mask;
- m68ki_write_8((mc68kcpu), ea, src | mask);
-}
-
-
-void m68000_base_device_ops::m68k_op_bset_8_s_pi7(m68000_base_device* mc68kcpu)
-{
- UINT32 mask = 1 << (OPER_I_8(mc68kcpu) & 7);
- UINT32 ea = EA_A7_PI_8(mc68kcpu);
- UINT32 src = m68ki_read_8((mc68kcpu), ea);
-
- (mc68kcpu)->not_z_flag = src & mask;
- m68ki_write_8((mc68kcpu), ea, src | mask);
-}
-
-
-void m68000_base_device_ops::m68k_op_bset_8_s_pd(m68000_base_device* mc68kcpu)
-{
- UINT32 mask = 1 << (OPER_I_8(mc68kcpu) & 7);
- UINT32 ea = EA_AY_PD_8(mc68kcpu);
- UINT32 src = m68ki_read_8((mc68kcpu), ea);
-
- (mc68kcpu)->not_z_flag = src & mask;
- m68ki_write_8((mc68kcpu), ea, src | mask);
-}
-
-
-void m68000_base_device_ops::m68k_op_bset_8_s_pd7(m68000_base_device* mc68kcpu)
-{
- UINT32 mask = 1 << (OPER_I_8(mc68kcpu) & 7);
- UINT32 ea = EA_A7_PD_8(mc68kcpu);
- UINT32 src = m68ki_read_8((mc68kcpu), ea);
-
- (mc68kcpu)->not_z_flag = src & mask;
- m68ki_write_8((mc68kcpu), ea, src | mask);
-}
-
-
-void m68000_base_device_ops::m68k_op_bset_8_s_di(m68000_base_device* mc68kcpu)
-{
- UINT32 mask = 1 << (OPER_I_8(mc68kcpu) & 7);
- UINT32 ea = EA_AY_DI_8(mc68kcpu);
- UINT32 src = m68ki_read_8((mc68kcpu), ea);
-
- (mc68kcpu)->not_z_flag = src & mask;
- m68ki_write_8((mc68kcpu), ea, src | mask);
-}
-
-
-void m68000_base_device_ops::m68k_op_bset_8_s_ix(m68000_base_device* mc68kcpu)
-{
- UINT32 mask = 1 << (OPER_I_8(mc68kcpu) & 7);
- UINT32 ea = EA_AY_IX_8(mc68kcpu);
- UINT32 src = m68ki_read_8((mc68kcpu), ea);
-
- (mc68kcpu)->not_z_flag = src & mask;
- m68ki_write_8((mc68kcpu), ea, src | mask);
-}
-
-
-void m68000_base_device_ops::m68k_op_bset_8_s_aw(m68000_base_device* mc68kcpu)
-{
- UINT32 mask = 1 << (OPER_I_8(mc68kcpu) & 7);
- UINT32 ea = EA_AW_8(mc68kcpu);
- UINT32 src = m68ki_read_8((mc68kcpu), ea);
-
- (mc68kcpu)->not_z_flag = src & mask;
- m68ki_write_8((mc68kcpu), ea, src | mask);
-}
-
-
-void m68000_base_device_ops::m68k_op_bset_8_s_al(m68000_base_device* mc68kcpu)
-{
- UINT32 mask = 1 << (OPER_I_8(mc68kcpu) & 7);
- UINT32 ea = EA_AL_8(mc68kcpu);
- UINT32 src = m68ki_read_8((mc68kcpu), ea);
-
- (mc68kcpu)->not_z_flag = src & mask;
- m68ki_write_8((mc68kcpu), ea, src | mask);
-}
-
-
-void m68000_base_device_ops::m68k_op_bsr_8(m68000_base_device* mc68kcpu)
-{
- 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));
-}
-
-
-void m68000_base_device_ops::m68k_op_bsr_16(m68000_base_device* mc68kcpu)
-{
- UINT32 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);
-}
-
-
-void m68000_base_device_ops::m68k_op_bsr_32(m68000_base_device* mc68kcpu)
-{
- if(CPU_TYPE_IS_EC020_PLUS((mc68kcpu)->cpu_type))
- {
- UINT32 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);
- 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));
- }
-}
-
-
-void m68000_base_device_ops::m68k_op_btst_32_r_d(m68000_base_device* mc68kcpu)
-{
- (mc68kcpu)->not_z_flag = DY(mc68kcpu) & (1 << (DX(mc68kcpu) & 0x1f));
-}
-
-
-void m68000_base_device_ops::m68k_op_btst_8_r_ai(m68000_base_device* mc68kcpu)
-{
- (mc68kcpu)->not_z_flag = OPER_AY_AI_8(mc68kcpu) & (1 << (DX(mc68kcpu) & 7));
-}
-
-
-void m68000_base_device_ops::m68k_op_btst_8_r_pi(m68000_base_device* mc68kcpu)
-{
- (mc68kcpu)->not_z_flag = OPER_AY_PI_8(mc68kcpu) & (1 << (DX(mc68kcpu) & 7));
-}
-
-
-void m68000_base_device_ops::m68k_op_btst_8_r_pi7(m68000_base_device* mc68kcpu)
-{
- (mc68kcpu)->not_z_flag = OPER_A7_PI_8(mc68kcpu) & (1 << (DX(mc68kcpu) & 7));
-}
-
-
-void m68000_base_device_ops::m68k_op_btst_8_r_pd(m68000_base_device* mc68kcpu)
-{
- (mc68kcpu)->not_z_flag = OPER_AY_PD_8(mc68kcpu) & (1 << (DX(mc68kcpu) & 7));
-}
-
-
-void m68000_base_device_ops::m68k_op_btst_8_r_pd7(m68000_base_device* mc68kcpu)
-{
- (mc68kcpu)->not_z_flag = OPER_A7_PD_8(mc68kcpu) & (1 << (DX(mc68kcpu) & 7));
-}
-
-
-void m68000_base_device_ops::m68k_op_btst_8_r_di(m68000_base_device* mc68kcpu)
-{
- (mc68kcpu)->not_z_flag = OPER_AY_DI_8(mc68kcpu) & (1 << (DX(mc68kcpu) & 7));
-}
-
-
-void m68000_base_device_ops::m68k_op_btst_8_r_ix(m68000_base_device* mc68kcpu)
-{
- (mc68kcpu)->not_z_flag = OPER_AY_IX_8(mc68kcpu) & (1 << (DX(mc68kcpu) & 7));
-}
-
-
-void m68000_base_device_ops::m68k_op_btst_8_r_aw(m68000_base_device* mc68kcpu)
-{
- (mc68kcpu)->not_z_flag = OPER_AW_8(mc68kcpu) & (1 << (DX(mc68kcpu) & 7));
-}
-
-
-void m68000_base_device_ops::m68k_op_btst_8_r_al(m68000_base_device* mc68kcpu)
-{
- (mc68kcpu)->not_z_flag = OPER_AL_8(mc68kcpu) & (1 << (DX(mc68kcpu) & 7));
-}
-
-
-void m68000_base_device_ops::m68k_op_btst_8_r_pcdi(m68000_base_device* mc68kcpu)
-{
- (mc68kcpu)->not_z_flag = OPER_PCDI_8(mc68kcpu) & (1 << (DX(mc68kcpu) & 7));
-}
-
-
-void m68000_base_device_ops::m68k_op_btst_8_r_pcix(m68000_base_device* mc68kcpu)
-{
- (mc68kcpu)->not_z_flag = OPER_PCIX_8(mc68kcpu) & (1 << (DX(mc68kcpu) & 7));
-}
-
-
-void m68000_base_device_ops::m68k_op_btst_8_r_i(m68000_base_device* mc68kcpu)
-{
- (mc68kcpu)->not_z_flag = OPER_I_8(mc68kcpu) & (1 << (DX(mc68kcpu) & 7));
-}
-
-
-void m68000_base_device_ops::m68k_op_btst_32_s_d(m68000_base_device* mc68kcpu)
-{
- (mc68kcpu)->not_z_flag = DY(mc68kcpu) & (1 << (OPER_I_8(mc68kcpu) & 0x1f));
-}
-
-
-void m68000_base_device_ops::m68k_op_btst_8_s_ai(m68000_base_device* mc68kcpu)
-{
- UINT32 bit = OPER_I_8(mc68kcpu) & 7;
-
- (mc68kcpu)->not_z_flag = OPER_AY_AI_8(mc68kcpu) & (1 << bit);
-}
-
-
-void m68000_base_device_ops::m68k_op_btst_8_s_pi(m68000_base_device* mc68kcpu)
-{
- UINT32 bit = OPER_I_8(mc68kcpu) & 7;
-
- (mc68kcpu)->not_z_flag = OPER_AY_PI_8(mc68kcpu) & (1 << bit);
-}
-
-
-void m68000_base_device_ops::m68k_op_btst_8_s_pi7(m68000_base_device* mc68kcpu)
-{
- UINT32 bit = OPER_I_8(mc68kcpu) & 7;
-
- (mc68kcpu)->not_z_flag = OPER_A7_PI_8(mc68kcpu) & (1 << bit);
-}
-
-
-void m68000_base_device_ops::m68k_op_btst_8_s_pd(m68000_base_device* mc68kcpu)
-{
- UINT32 bit = OPER_I_8(mc68kcpu) & 7;
-
- (mc68kcpu)->not_z_flag = OPER_AY_PD_8(mc68kcpu) & (1 << bit);
-}
-
-
-void m68000_base_device_ops::m68k_op_btst_8_s_pd7(m68000_base_device* mc68kcpu)
-{
- UINT32 bit = OPER_I_8(mc68kcpu) & 7;
-
- (mc68kcpu)->not_z_flag = OPER_A7_PD_8(mc68kcpu) & (1 << bit);
-}
-
-
-void m68000_base_device_ops::m68k_op_btst_8_s_di(m68000_base_device* mc68kcpu)
-{
- UINT32 bit = OPER_I_8(mc68kcpu) & 7;
-
- (mc68kcpu)->not_z_flag = OPER_AY_DI_8(mc68kcpu) & (1 << bit);
-}
-
-
-void m68000_base_device_ops::m68k_op_btst_8_s_ix(m68000_base_device* mc68kcpu)
-{
- UINT32 bit = OPER_I_8(mc68kcpu) & 7;
-
- (mc68kcpu)->not_z_flag = OPER_AY_IX_8(mc68kcpu) & (1 << bit);
-}
-
-
-void m68000_base_device_ops::m68k_op_btst_8_s_aw(m68000_base_device* mc68kcpu)
-{
- UINT32 bit = OPER_I_8(mc68kcpu) & 7;
-
- (mc68kcpu)->not_z_flag = OPER_AW_8(mc68kcpu) & (1 << bit);
-}
-
-
-void m68000_base_device_ops::m68k_op_btst_8_s_al(m68000_base_device* mc68kcpu)
-{
- UINT32 bit = OPER_I_8(mc68kcpu) & 7;
-
- (mc68kcpu)->not_z_flag = OPER_AL_8(mc68kcpu) & (1 << bit);
-}
-
-
-void m68000_base_device_ops::m68k_op_btst_8_s_pcdi(m68000_base_device* mc68kcpu)
-{
- UINT32 bit = OPER_I_8(mc68kcpu) & 7;
-
- (mc68kcpu)->not_z_flag = OPER_PCDI_8(mc68kcpu) & (1 << bit);
-}
-
-
-void m68000_base_device_ops::m68k_op_btst_8_s_pcix(m68000_base_device* mc68kcpu)
-{
- UINT32 bit = OPER_I_8(mc68kcpu) & 7;
-
- (mc68kcpu)->not_z_flag = OPER_PCIX_8(mc68kcpu) & (1 << bit);
-}
-
-
-void m68000_base_device_ops::m68k_op_callm_32_ai(m68000_base_device* mc68kcpu)
-{
- /* note: watch out for pcrelative modes */
- if(CPU_TYPE_IS_020_VARIANT((mc68kcpu)->cpu_type))
- {
- UINT32 ea = EA_AY_AI_32(mc68kcpu);
-
- m68ki_trace_t0(mc68kcpu); /* auto-disable (see m68kcpu.h) */
- REG_PC(mc68kcpu) += 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);
- return;
- }
- m68ki_exception_illegal(mc68kcpu);
-}
-
-
-void m68000_base_device_ops::m68k_op_callm_32_di(m68000_base_device* mc68kcpu)
-{
- /* note: watch out for pcrelative modes */
- if(CPU_TYPE_IS_020_VARIANT((mc68kcpu)->cpu_type))
- {
- UINT32 ea = EA_AY_DI_32(mc68kcpu);
-
- m68ki_trace_t0(mc68kcpu); /* auto-disable (see m68kcpu.h) */
- REG_PC(mc68kcpu) += 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);
- return;
- }
- m68ki_exception_illegal(mc68kcpu);
-}
-
-
-void m68000_base_device_ops::m68k_op_callm_32_ix(m68000_base_device* mc68kcpu)
-{
- /* note: watch out for pcrelative modes */
- if(CPU_TYPE_IS_020_VARIANT((mc68kcpu)->cpu_type))
- {
- UINT32 ea = EA_AY_IX_32(mc68kcpu);
-
- m68ki_trace_t0(mc68kcpu); /* auto-disable (see m68kcpu.h) */
- REG_PC(mc68kcpu) += 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);
- return;
- }
- m68ki_exception_illegal(mc68kcpu);
-}
-
-
-void m68000_base_device_ops::m68k_op_callm_32_aw(m68000_base_device* mc68kcpu)
-{
- /* note: watch out for pcrelative modes */
- if(CPU_TYPE_IS_020_VARIANT((mc68kcpu)->cpu_type))
- {
- UINT32 ea = EA_AW_32(mc68kcpu);
-
- m68ki_trace_t0(mc68kcpu); /* auto-disable (see m68kcpu.h) */
- REG_PC(mc68kcpu) += 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);
- return;
- }
- m68ki_exception_illegal(mc68kcpu);
-}
-
-
-void m68000_base_device_ops::m68k_op_callm_32_al(m68000_base_device* mc68kcpu)
-{
- /* note: watch out for pcrelative modes */
- if(CPU_TYPE_IS_020_VARIANT((mc68kcpu)->cpu_type))
- {
- UINT32 ea = EA_AL_32(mc68kcpu);
-
- m68ki_trace_t0(mc68kcpu); /* auto-disable (see m68kcpu.h) */
- REG_PC(mc68kcpu) += 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);
- return;
- }
- m68ki_exception_illegal(mc68kcpu);
-}
-
-
-void m68000_base_device_ops::m68k_op_callm_32_pcdi(m68000_base_device* mc68kcpu)
-{
- /* note: watch out for pcrelative modes */
- if(CPU_TYPE_IS_020_VARIANT((mc68kcpu)->cpu_type))
- {
- UINT32 ea = EA_PCDI_32(mc68kcpu);
-
- m68ki_trace_t0(mc68kcpu); /* auto-disable (see m68kcpu.h) */
- REG_PC(mc68kcpu) += 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);
- return;
- }
- m68ki_exception_illegal(mc68kcpu);
-}
-
-
-void m68000_base_device_ops::m68k_op_callm_32_pcix(m68000_base_device* mc68kcpu)
-{
- /* note: watch out for pcrelative modes */
- if(CPU_TYPE_IS_020_VARIANT((mc68kcpu)->cpu_type))
- {
- UINT32 ea = EA_PCIX_32(mc68kcpu);
-
- m68ki_trace_t0(mc68kcpu); /* auto-disable (see m68kcpu.h) */
- REG_PC(mc68kcpu) += 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);
- return;
- }
- m68ki_exception_illegal(mc68kcpu);
-}
-
-
-void m68000_base_device_ops::m68k_op_cas_8_ai(m68000_base_device* mc68kcpu)
-{
- if(CPU_TYPE_IS_EC020_PLUS((mc68kcpu)->cpu_type))
- {
- UINT32 word2 = OPER_I_16(mc68kcpu);
- UINT32 ea = EA_AY_AI_8(mc68kcpu);
- UINT32 dest = m68ki_read_8((mc68kcpu), ea);
- UINT32* compare = &REG_D(mc68kcpu)[word2 & 7];
- UINT32 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);
-
- if(COND_NE(mc68kcpu))
- *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]));
- }
- return;
- }
- m68ki_exception_illegal(mc68kcpu);
-}
-
-
-void m68000_base_device_ops::m68k_op_cas_8_pi(m68000_base_device* mc68kcpu)
-{
- if(CPU_TYPE_IS_EC020_PLUS((mc68kcpu)->cpu_type))
- {
- UINT32 word2 = OPER_I_16(mc68kcpu);
- UINT32 ea = EA_AY_PI_8(mc68kcpu);
- UINT32 dest = m68ki_read_8((mc68kcpu), ea);
- UINT32* compare = &REG_D(mc68kcpu)[word2 & 7];
- UINT32 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);
-
- if(COND_NE(mc68kcpu))
- *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]));
- }
- return;
- }
- m68ki_exception_illegal(mc68kcpu);
-}
-
-
-void m68000_base_device_ops::m68k_op_cas_8_pi7(m68000_base_device* mc68kcpu)
-{
- if(CPU_TYPE_IS_EC020_PLUS((mc68kcpu)->cpu_type))
- {
- UINT32 word2 = OPER_I_16(mc68kcpu);
- UINT32 ea = EA_A7_PI_8(mc68kcpu);
- UINT32 dest = m68ki_read_8((mc68kcpu), ea);
- UINT32* compare = &REG_D(mc68kcpu)[word2 & 7];
- UINT32 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);
-
- if(COND_NE(mc68kcpu))
- *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]));
- }
- return;
- }
- m68ki_exception_illegal(mc68kcpu);
-}
-
-
-void m68000_base_device_ops::m68k_op_cas_8_pd(m68000_base_device* mc68kcpu)
-{
- if(CPU_TYPE_IS_EC020_PLUS((mc68kcpu)->cpu_type))
- {
- UINT32 word2 = OPER_I_16(mc68kcpu);
- UINT32 ea = EA_AY_PD_8(mc68kcpu);
- UINT32 dest = m68ki_read_8((mc68kcpu), ea);
- UINT32* compare = &REG_D(mc68kcpu)[word2 & 7];
- UINT32 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);
-
- if(COND_NE(mc68kcpu))
- *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]));
- }
- return;
- }
- m68ki_exception_illegal(mc68kcpu);
-}
-
-
-void m68000_base_device_ops::m68k_op_cas_8_pd7(m68000_base_device* mc68kcpu)
-{
- if(CPU_TYPE_IS_EC020_PLUS((mc68kcpu)->cpu_type))
- {
- UINT32 word2 = OPER_I_16(mc68kcpu);
- UINT32 ea = EA_A7_PD_8(mc68kcpu);
- UINT32 dest = m68ki_read_8((mc68kcpu), ea);
- UINT32* compare = &REG_D(mc68kcpu)[word2 & 7];
- UINT32 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);
-
- if(COND_NE(mc68kcpu))
- *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]));
- }
- return;
- }
- m68ki_exception_illegal(mc68kcpu);
-}
-
-
-void m68000_base_device_ops::m68k_op_cas_8_di(m68000_base_device* mc68kcpu)
-{
- if(CPU_TYPE_IS_EC020_PLUS((mc68kcpu)->cpu_type))
- {
- UINT32 word2 = OPER_I_16(mc68kcpu);
- UINT32 ea = EA_AY_DI_8(mc68kcpu);
- UINT32 dest = m68ki_read_8((mc68kcpu), ea);
- UINT32* compare = &REG_D(mc68kcpu)[word2 & 7];
- UINT32 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);
-
- if(COND_NE(mc68kcpu))
- *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]));
- }
- return;
- }
- m68ki_exception_illegal(mc68kcpu);
-}
-
-
-void m68000_base_device_ops::m68k_op_cas_8_ix(m68000_base_device* mc68kcpu)
-{
- if(CPU_TYPE_IS_EC020_PLUS((mc68kcpu)->cpu_type))
- {
- UINT32 word2 = OPER_I_16(mc68kcpu);
- UINT32 ea = EA_AY_IX_8(mc68kcpu);
- UINT32 dest = m68ki_read_8((mc68kcpu), ea);
- UINT32* compare = &REG_D(mc68kcpu)[word2 & 7];
- UINT32 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);
-
- if(COND_NE(mc68kcpu))
- *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]));
- }
- return;
- }
- m68ki_exception_illegal(mc68kcpu);
-}
-
-
-void m68000_base_device_ops::m68k_op_cas_8_aw(m68000_base_device* mc68kcpu)
-{
- if(CPU_TYPE_IS_EC020_PLUS((mc68kcpu)->cpu_type))
- {
- UINT32 word2 = OPER_I_16(mc68kcpu);
- UINT32 ea = EA_AW_8(mc68kcpu);
- UINT32 dest = m68ki_read_8((mc68kcpu), ea);
- UINT32* compare = &REG_D(mc68kcpu)[word2 & 7];
- UINT32 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);
-
- if(COND_NE(mc68kcpu))
- *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]));
- }
- return;
- }
- m68ki_exception_illegal(mc68kcpu);
-}
-
-
-void m68000_base_device_ops::m68k_op_cas_8_al(m68000_base_device* mc68kcpu)
-{
- if(CPU_TYPE_IS_EC020_PLUS((mc68kcpu)->cpu_type))
- {
- UINT32 word2 = OPER_I_16(mc68kcpu);
- UINT32 ea = EA_AL_8(mc68kcpu);
- UINT32 dest = m68ki_read_8((mc68kcpu), ea);
- UINT32* compare = &REG_D(mc68kcpu)[word2 & 7];
- UINT32 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);
-
- if(COND_NE(mc68kcpu))
- *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]));
- }
- return;
- }
- m68ki_exception_illegal(mc68kcpu);
-}
-
-
-void m68000_base_device_ops::m68k_op_cas_16_ai(m68000_base_device* mc68kcpu)
-{
- if(CPU_TYPE_IS_EC020_PLUS((mc68kcpu)->cpu_type))
- {
- UINT32 word2 = OPER_I_16(mc68kcpu);
- UINT32 ea = EA_AY_AI_16(mc68kcpu);
- UINT32 dest = m68ki_read_16((mc68kcpu), ea);
- UINT32* compare = &REG_D(mc68kcpu)[word2 & 7];
- UINT32 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);
-
- if(COND_NE(mc68kcpu))
- *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]));
- }
- return;
- }
- m68ki_exception_illegal(mc68kcpu);
-}
-
-
-void m68000_base_device_ops::m68k_op_cas_16_pi(m68000_base_device* mc68kcpu)
-{
- if(CPU_TYPE_IS_EC020_PLUS((mc68kcpu)->cpu_type))
- {
- UINT32 word2 = OPER_I_16(mc68kcpu);
- UINT32 ea = EA_AY_PI_16(mc68kcpu);
- UINT32 dest = m68ki_read_16((mc68kcpu), ea);
- UINT32* compare = &REG_D(mc68kcpu)[word2 & 7];
- UINT32 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);
-
- if(COND_NE(mc68kcpu))
- *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]));
- }
- return;
- }
- m68ki_exception_illegal(mc68kcpu);
-}
-
-
-void m68000_base_device_ops::m68k_op_cas_16_pd(m68000_base_device* mc68kcpu)
-{
- if(CPU_TYPE_IS_EC020_PLUS((mc68kcpu)->cpu_type))
- {
- UINT32 word2 = OPER_I_16(mc68kcpu);
- UINT32 ea = EA_AY_PD_16(mc68kcpu);
- UINT32 dest = m68ki_read_16((mc68kcpu), ea);
- UINT32* compare = &REG_D(mc68kcpu)[word2 & 7];
- UINT32 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);
-
- if(COND_NE(mc68kcpu))
- *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]));
- }
- return;
- }
- m68ki_exception_illegal(mc68kcpu);
-}
-
-
-void m68000_base_device_ops::m68k_op_cas_16_di(m68000_base_device* mc68kcpu)
-{
- if(CPU_TYPE_IS_EC020_PLUS((mc68kcpu)->cpu_type))
- {
- UINT32 word2 = OPER_I_16(mc68kcpu);
- UINT32 ea = EA_AY_DI_16(mc68kcpu);
- UINT32 dest = m68ki_read_16((mc68kcpu), ea);
- UINT32* compare = &REG_D(mc68kcpu)[word2 & 7];
- UINT32 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);
-
- if(COND_NE(mc68kcpu))
- *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]));
- }
- return;
- }
- m68ki_exception_illegal(mc68kcpu);
-}
-
-
-void m68000_base_device_ops::m68k_op_cas_16_ix(m68000_base_device* mc68kcpu)
-{
- if(CPU_TYPE_IS_EC020_PLUS((mc68kcpu)->cpu_type))
- {
- UINT32 word2 = OPER_I_16(mc68kcpu);
- UINT32 ea = EA_AY_IX_16(mc68kcpu);
- UINT32 dest = m68ki_read_16((mc68kcpu), ea);
- UINT32* compare = &REG_D(mc68kcpu)[word2 & 7];
- UINT32 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);
-
- if(COND_NE(mc68kcpu))
- *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]));
- }
- return;
- }
- m68ki_exception_illegal(mc68kcpu);
-}
-
-
-void m68000_base_device_ops::m68k_op_cas_16_aw(m68000_base_device* mc68kcpu)
-{
- if(CPU_TYPE_IS_EC020_PLUS((mc68kcpu)->cpu_type))
- {
- UINT32 word2 = OPER_I_16(mc68kcpu);
- UINT32 ea = EA_AW_16(mc68kcpu);
- UINT32 dest = m68ki_read_16((mc68kcpu), ea);
- UINT32* compare = &REG_D(mc68kcpu)[word2 & 7];
- UINT32 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);
-
- if(COND_NE(mc68kcpu))
- *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]));
- }
- return;
- }
- m68ki_exception_illegal(mc68kcpu);
-}
-
-
-void m68000_base_device_ops::m68k_op_cas_16_al(m68000_base_device* mc68kcpu)
-{
- if(CPU_TYPE_IS_EC020_PLUS((mc68kcpu)->cpu_type))
- {
- UINT32 word2 = OPER_I_16(mc68kcpu);
- UINT32 ea = EA_AL_16(mc68kcpu);
- UINT32 dest = m68ki_read_16((mc68kcpu), ea);
- UINT32* compare = &REG_D(mc68kcpu)[word2 & 7];
- UINT32 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);
-
- if(COND_NE(mc68kcpu))
- *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]));
- }
- return;
- }
- m68ki_exception_illegal(mc68kcpu);
-}
-
-
-void m68000_base_device_ops::m68k_op_cas_32_ai(m68000_base_device* mc68kcpu)
-{
- if(CPU_TYPE_IS_EC020_PLUS((mc68kcpu)->cpu_type))
- {
- UINT32 word2 = OPER_I_16(mc68kcpu);
- UINT32 ea = EA_AY_AI_32(mc68kcpu);
- UINT32 dest = m68ki_read_32((mc68kcpu), ea);
- UINT32* compare = &REG_D(mc68kcpu)[word2 & 7];
- UINT32 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);
-
- if(COND_NE(mc68kcpu))
- *compare = dest;
- else
- {
- (mc68kcpu)->remaining_cycles -= 3;
- m68ki_write_32((mc68kcpu), ea, REG_D(mc68kcpu)[(word2 >> 6) & 7]);
- }
- return;
- }
- m68ki_exception_illegal(mc68kcpu);
-}
-
-
-void m68000_base_device_ops::m68k_op_cas_32_pi(m68000_base_device* mc68kcpu)
-{
- if(CPU_TYPE_IS_EC020_PLUS((mc68kcpu)->cpu_type))
- {
- UINT32 word2 = OPER_I_16(mc68kcpu);
- UINT32 ea = EA_AY_PI_32(mc68kcpu);
- UINT32 dest = m68ki_read_32((mc68kcpu), ea);
- UINT32* compare = &REG_D(mc68kcpu)[word2 & 7];
- UINT32 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);
-
- if(COND_NE(mc68kcpu))
- *compare = dest;
- else
- {
- (mc68kcpu)->remaining_cycles -= 3;
- m68ki_write_32((mc68kcpu), ea, REG_D(mc68kcpu)[(word2 >> 6) & 7]);
- }
- return;
- }
- m68ki_exception_illegal(mc68kcpu);
-}
-
-
-void m68000_base_device_ops::m68k_op_cas_32_pd(m68000_base_device* mc68kcpu)
-{
- if(CPU_TYPE_IS_EC020_PLUS((mc68kcpu)->cpu_type))
- {
- UINT32 word2 = OPER_I_16(mc68kcpu);
- UINT32 ea = EA_AY_PD_32(mc68kcpu);
- UINT32 dest = m68ki_read_32((mc68kcpu), ea);
- UINT32* compare = &REG_D(mc68kcpu)[word2 & 7];
- UINT32 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);
-
- if(COND_NE(mc68kcpu))
- *compare = dest;
- else
- {
- (mc68kcpu)->remaining_cycles -= 3;
- m68ki_write_32((mc68kcpu), ea, REG_D(mc68kcpu)[(word2 >> 6) & 7]);
- }
- return;
- }
- m68ki_exception_illegal(mc68kcpu);
-}
-
-
-void m68000_base_device_ops::m68k_op_cas_32_di(m68000_base_device* mc68kcpu)
-{
- if(CPU_TYPE_IS_EC020_PLUS((mc68kcpu)->cpu_type))
- {
- UINT32 word2 = OPER_I_16(mc68kcpu);
- UINT32 ea = EA_AY_DI_32(mc68kcpu);
- UINT32 dest = m68ki_read_32((mc68kcpu), ea);
- UINT32* compare = &REG_D(mc68kcpu)[word2 & 7];
- UINT32 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);
-
- if(COND_NE(mc68kcpu))
- *compare = dest;
- else
- {
- (mc68kcpu)->remaining_cycles -= 3;
- m68ki_write_32((mc68kcpu), ea, REG_D(mc68kcpu)[(word2 >> 6) & 7]);
- }
- return;
- }
- m68ki_exception_illegal(mc68kcpu);
-}
-
-
-void m68000_base_device_ops::m68k_op_cas_32_ix(m68000_base_device* mc68kcpu)
-{
- if(CPU_TYPE_IS_EC020_PLUS((mc68kcpu)->cpu_type))
- {
- UINT32 word2 = OPER_I_16(mc68kcpu);
- UINT32 ea = EA_AY_IX_32(mc68kcpu);
- UINT32 dest = m68ki_read_32((mc68kcpu), ea);
- UINT32* compare = &REG_D(mc68kcpu)[word2 & 7];
- UINT32 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);
-
- if(COND_NE(mc68kcpu))
- *compare = dest;
- else
- {
- (mc68kcpu)->remaining_cycles -= 3;
- m68ki_write_32((mc68kcpu), ea, REG_D(mc68kcpu)[(word2 >> 6) & 7]);
- }
- return;
- }
- m68ki_exception_illegal(mc68kcpu);
-}
-
-
-void m68000_base_device_ops::m68k_op_cas_32_aw(m68000_base_device* mc68kcpu)
-{
- if(CPU_TYPE_IS_EC020_PLUS((mc68kcpu)->cpu_type))
- {
- UINT32 word2 = OPER_I_16(mc68kcpu);
- UINT32 ea = EA_AW_32(mc68kcpu);
- UINT32 dest = m68ki_read_32((mc68kcpu), ea);
- UINT32* compare = &REG_D(mc68kcpu)[word2 & 7];
- UINT32 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);
-
- if(COND_NE(mc68kcpu))
- *compare = dest;
- else
- {
- (mc68kcpu)->remaining_cycles -= 3;
- m68ki_write_32((mc68kcpu), ea, REG_D(mc68kcpu)[(word2 >> 6) & 7]);
- }
- return;
- }
- m68ki_exception_illegal(mc68kcpu);
-}
-
-
-void m68000_base_device_ops::m68k_op_cas_32_al(m68000_base_device* mc68kcpu)
-{
- if(CPU_TYPE_IS_EC020_PLUS((mc68kcpu)->cpu_type))
- {
- UINT32 word2 = OPER_I_16(mc68kcpu);
- UINT32 ea = EA_AL_32(mc68kcpu);
- UINT32 dest = m68ki_read_32((mc68kcpu), ea);
- UINT32* compare = &REG_D(mc68kcpu)[word2 & 7];
- UINT32 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);
-
- if(COND_NE(mc68kcpu))
- *compare = dest;
- else
- {
- (mc68kcpu)->remaining_cycles -= 3;
- m68ki_write_32((mc68kcpu), ea, REG_D(mc68kcpu)[(word2 >> 6) & 7]);
- }
- return;
- }
- m68ki_exception_illegal(mc68kcpu);
-}
-
-
-void m68000_base_device_ops::m68k_op_cas2_16(m68000_base_device* mc68kcpu)
-{
- if(CPU_TYPE_IS_EC020_PLUS((mc68kcpu)->cpu_type))
- {
- UINT32 word2 = OPER_I_32(mc68kcpu);
- UINT32* compare1 = &REG_D(mc68kcpu)[(word2 >> 16) & 7];
- UINT32 ea1 = REG_DA(mc68kcpu)[(word2 >> 28) & 15];
- UINT32 dest1 = m68ki_read_16((mc68kcpu), ea1);
- UINT32 res1 = dest1 - MASK_OUT_ABOVE_16(*compare1);
- UINT32* compare2 = &REG_D(mc68kcpu)[word2 & 7];
- UINT32 ea2 = REG_DA(mc68kcpu)[(word2 >> 12) & 15];
- UINT32 dest2 = m68ki_read_16((mc68kcpu), ea2);
- UINT32 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);
-
- if(COND_EQ(mc68kcpu))
- {
- 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);
-
- if(COND_EQ(mc68kcpu))
- {
- (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]);
- return;
- }
- }
- *compare1 = BIT_1F(word2) ? MAKE_INT_16(dest1) : MASK_OUT_BELOW_16(*compare1) | dest1;
- *compare2 = BIT_F(word2) ? MAKE_INT_16(dest2) : MASK_OUT_BELOW_16(*compare2) | dest2;
- return;
- }
- m68ki_exception_illegal(mc68kcpu);
-}
-
-
-void m68000_base_device_ops::m68k_op_cas2_32(m68000_base_device* mc68kcpu)
-{
- if(CPU_TYPE_IS_EC020_PLUS((mc68kcpu)->cpu_type))
- {
- UINT32 word2 = OPER_I_32(mc68kcpu);
- UINT32* compare1 = &REG_D(mc68kcpu)[(word2 >> 16) & 7];
- UINT32 ea1 = REG_DA(mc68kcpu)[(word2 >> 28) & 15];
- UINT32 dest1 = m68ki_read_32((mc68kcpu), ea1);
- UINT32 res1 = dest1 - *compare1;
- UINT32* compare2 = &REG_D(mc68kcpu)[word2 & 7];
- UINT32 ea2 = REG_DA(mc68kcpu)[(word2 >> 12) & 15];
- UINT32 dest2 = m68ki_read_32((mc68kcpu), ea2);
- UINT32 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);
-
- if(COND_EQ(mc68kcpu))
- {
- 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);
-
- if(COND_EQ(mc68kcpu))
- {
- (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]);
- return;
- }
- }
- *compare1 = dest1;
- *compare2 = dest2;
- return;
- }
- m68ki_exception_illegal(mc68kcpu);
-}
-
-
-void m68000_base_device_ops::m68k_op_chk_16_d(m68000_base_device* mc68kcpu)
-{
- INT32 src = MAKE_INT_16(DX(mc68kcpu));
- INT32 bound = MAKE_INT_16(DY(mc68kcpu));
-
- (mc68kcpu)->not_z_flag = ZFLAG_16(src); /* Undocumented */
- (mc68kcpu)->v_flag = VFLAG_CLEAR; /* Undocumented */
- (mc68kcpu)->c_flag = CFLAG_CLEAR; /* Undocumented */
-
- if(src >= 0 && src <= bound)
- {
- return;
- }
- (mc68kcpu)->n_flag = (src < 0)<<7;
- m68ki_exception_trap((mc68kcpu), EXCEPTION_CHK);
-}
-
-
-void m68000_base_device_ops::m68k_op_chk_16_ai(m68000_base_device* mc68kcpu)
-{
- INT32 src = MAKE_INT_16(DX(mc68kcpu));
- INT32 bound = MAKE_INT_16(OPER_AY_AI_16(mc68kcpu));
-
- (mc68kcpu)->not_z_flag = ZFLAG_16(src); /* Undocumented */
- (mc68kcpu)->v_flag = VFLAG_CLEAR; /* Undocumented */
- (mc68kcpu)->c_flag = CFLAG_CLEAR; /* Undocumented */
-
- if(src >= 0 && src <= bound)
- {
- return;
- }
- (mc68kcpu)->n_flag = (src < 0)<<7;
- m68ki_exception_trap((mc68kcpu), EXCEPTION_CHK);
-}
-
-
-void m68000_base_device_ops::m68k_op_chk_16_pi(m68000_base_device* mc68kcpu)
-{
- INT32 src = MAKE_INT_16(DX(mc68kcpu));
- INT32 bound = MAKE_INT_16(OPER_AY_PI_16(mc68kcpu));
-
- (mc68kcpu)->not_z_flag = ZFLAG_16(src); /* Undocumented */
- (mc68kcpu)->v_flag = VFLAG_CLEAR; /* Undocumented */
- (mc68kcpu)->c_flag = CFLAG_CLEAR; /* Undocumented */
-
- if(src >= 0 && src <= bound)
- {
- return;
- }
- (mc68kcpu)->n_flag = (src < 0)<<7;
- m68ki_exception_trap((mc68kcpu), EXCEPTION_CHK);
-}
-
-
-void m68000_base_device_ops::m68k_op_chk_16_pd(m68000_base_device* mc68kcpu)
-{
- INT32 src = MAKE_INT_16(DX(mc68kcpu));
- INT32 bound = MAKE_INT_16(OPER_AY_PD_16(mc68kcpu));
-
- (mc68kcpu)->not_z_flag = ZFLAG_16(src); /* Undocumented */
- (mc68kcpu)->v_flag = VFLAG_CLEAR; /* Undocumented */
- (mc68kcpu)->c_flag = CFLAG_CLEAR; /* Undocumented */
-
- if(src >= 0 && src <= bound)
- {
- return;
- }
- (mc68kcpu)->n_flag = (src < 0)<<7;
- m68ki_exception_trap((mc68kcpu), EXCEPTION_CHK);
-}
-
-
-void m68000_base_device_ops::m68k_op_chk_16_di(m68000_base_device* mc68kcpu)
-{
- INT32 src = MAKE_INT_16(DX(mc68kcpu));
- INT32 bound = MAKE_INT_16(OPER_AY_DI_16(mc68kcpu));
-
- (mc68kcpu)->not_z_flag = ZFLAG_16(src); /* Undocumented */
- (mc68kcpu)->v_flag = VFLAG_CLEAR; /* Undocumented */
- (mc68kcpu)->c_flag = CFLAG_CLEAR; /* Undocumented */
-
- if(src >= 0 && src <= bound)
- {
- return;
- }
- (mc68kcpu)->n_flag = (src < 0)<<7;
- m68ki_exception_trap((mc68kcpu), EXCEPTION_CHK);
-}
-
-
-void m68000_base_device_ops::m68k_op_chk_16_ix(m68000_base_device* mc68kcpu)
-{
- INT32 src = MAKE_INT_16(DX(mc68kcpu));
- INT32 bound = MAKE_INT_16(OPER_AY_IX_16(mc68kcpu));
-
- (mc68kcpu)->not_z_flag = ZFLAG_16(src); /* Undocumented */
- (mc68kcpu)->v_flag = VFLAG_CLEAR; /* Undocumented */
- (mc68kcpu)->c_flag = CFLAG_CLEAR; /* Undocumented */
-
- if(src >= 0 && src <= bound)
- {
- return;
- }
- (mc68kcpu)->n_flag = (src < 0)<<7;
- m68ki_exception_trap((mc68kcpu), EXCEPTION_CHK);
-}
-
-
-void m68000_base_device_ops::m68k_op_chk_16_aw(m68000_base_device* mc68kcpu)
-{
- INT32 src = MAKE_INT_16(DX(mc68kcpu));
- INT32 bound = MAKE_INT_16(OPER_AW_16(mc68kcpu));
-
- (mc68kcpu)->not_z_flag = ZFLAG_16(src); /* Undocumented */
- (mc68kcpu)->v_flag = VFLAG_CLEAR; /* Undocumented */
- (mc68kcpu)->c_flag = CFLAG_CLEAR; /* Undocumented */
-
- if(src >= 0 && src <= bound)
- {
- return;
- }
- (mc68kcpu)->n_flag = (src < 0)<<7;
- m68ki_exception_trap((mc68kcpu), EXCEPTION_CHK);
-}
-
-
-void m68000_base_device_ops::m68k_op_chk_16_al(m68000_base_device* mc68kcpu)
-{
- INT32 src = MAKE_INT_16(DX(mc68kcpu));
- INT32 bound = MAKE_INT_16(OPER_AL_16(mc68kcpu));
-
- (mc68kcpu)->not_z_flag = ZFLAG_16(src); /* Undocumented */
- (mc68kcpu)->v_flag = VFLAG_CLEAR; /* Undocumented */
- (mc68kcpu)->c_flag = CFLAG_CLEAR; /* Undocumented */
-
- if(src >= 0 && src <= bound)
- {
- return;
- }
- (mc68kcpu)->n_flag = (src < 0)<<7;
- m68ki_exception_trap((mc68kcpu), EXCEPTION_CHK);
-}
-
-
-void m68000_base_device_ops::m68k_op_chk_16_pcdi(m68000_base_device* mc68kcpu)
-{
- INT32 src = MAKE_INT_16(DX(mc68kcpu));
- INT32 bound = MAKE_INT_16(OPER_PCDI_16(mc68kcpu));
-
- (mc68kcpu)->not_z_flag = ZFLAG_16(src); /* Undocumented */
- (mc68kcpu)->v_flag = VFLAG_CLEAR; /* Undocumented */
- (mc68kcpu)->c_flag = CFLAG_CLEAR; /* Undocumented */
-
- if(src >= 0 && src <= bound)
- {
- return;
- }
- (mc68kcpu)->n_flag = (src < 0)<<7;
- m68ki_exception_trap((mc68kcpu), EXCEPTION_CHK);
-}
-
-
-void m68000_base_device_ops::m68k_op_chk_16_pcix(m68000_base_device* mc68kcpu)
-{
- INT32 src = MAKE_INT_16(DX(mc68kcpu));
- INT32 bound = MAKE_INT_16(OPER_PCIX_16(mc68kcpu));
-
- (mc68kcpu)->not_z_flag = ZFLAG_16(src); /* Undocumented */
- (mc68kcpu)->v_flag = VFLAG_CLEAR; /* Undocumented */
- (mc68kcpu)->c_flag = CFLAG_CLEAR; /* Undocumented */
-
- if(src >= 0 && src <= bound)
- {
- return;
- }
- (mc68kcpu)->n_flag = (src < 0)<<7;
- m68ki_exception_trap((mc68kcpu), EXCEPTION_CHK);
-}
-
-
-void m68000_base_device_ops::m68k_op_chk_16_i(m68000_base_device* mc68kcpu)
-{
- INT32 src = MAKE_INT_16(DX(mc68kcpu));
- INT32 bound = MAKE_INT_16(OPER_I_16(mc68kcpu));
-
- (mc68kcpu)->not_z_flag = ZFLAG_16(src); /* Undocumented */
- (mc68kcpu)->v_flag = VFLAG_CLEAR; /* Undocumented */
- (mc68kcpu)->c_flag = CFLAG_CLEAR; /* Undocumented */
-
- if(src >= 0 && src <= bound)
- {
- return;
- }
- (mc68kcpu)->n_flag = (src < 0)<<7;
- m68ki_exception_trap((mc68kcpu), EXCEPTION_CHK);
-}
-
-
-void m68000_base_device_ops::m68k_op_chk_32_d(m68000_base_device* mc68kcpu)
-{
- if(CPU_TYPE_IS_EC020_PLUS((mc68kcpu)->cpu_type))
- {
- INT32 src = MAKE_INT_32(DX(mc68kcpu));
- INT32 bound = MAKE_INT_32(DY(mc68kcpu));
-
- (mc68kcpu)->not_z_flag = ZFLAG_32(src); /* Undocumented */
- (mc68kcpu)->v_flag = VFLAG_CLEAR; /* Undocumented */
- (mc68kcpu)->c_flag = CFLAG_CLEAR; /* Undocumented */
-
- if(src >= 0 && src <= bound)
- {
- return;
- }
- (mc68kcpu)->n_flag = (src < 0)<<7;
- m68ki_exception_trap((mc68kcpu), EXCEPTION_CHK);
- return;
- }
- m68ki_exception_illegal(mc68kcpu);
-}
-
-
-void m68000_base_device_ops::m68k_op_chk_32_ai(m68000_base_device* mc68kcpu)
-{
- if(CPU_TYPE_IS_EC020_PLUS((mc68kcpu)->cpu_type))
- {
- INT32 src = MAKE_INT_32(DX(mc68kcpu));
- INT32 bound = MAKE_INT_32(OPER_AY_AI_32(mc68kcpu));
-
- (mc68kcpu)->not_z_flag = ZFLAG_32(src); /* Undocumented */
- (mc68kcpu)->v_flag = VFLAG_CLEAR; /* Undocumented */
- (mc68kcpu)->c_flag = CFLAG_CLEAR; /* Undocumented */
-
- if(src >= 0 && src <= bound)
- {
- return;
- }
- (mc68kcpu)->n_flag = (src < 0)<<7;
- m68ki_exception_trap((mc68kcpu), EXCEPTION_CHK);
- return;
- }
- m68ki_exception_illegal(mc68kcpu);
-}
-
-
-void m68000_base_device_ops::m68k_op_chk_32_pi(m68000_base_device* mc68kcpu)
-{
- if(CPU_TYPE_IS_EC020_PLUS((mc68kcpu)->cpu_type))
- {
- INT32 src = MAKE_INT_32(DX(mc68kcpu));
- INT32 bound = MAKE_INT_32(OPER_AY_PI_32(mc68kcpu));
-
- (mc68kcpu)->not_z_flag = ZFLAG_32(src); /* Undocumented */
- (mc68kcpu)->v_flag = VFLAG_CLEAR; /* Undocumented */
- (mc68kcpu)->c_flag = CFLAG_CLEAR; /* Undocumented */
-
- if(src >= 0 && src <= bound)
- {
- return;
- }
- (mc68kcpu)->n_flag = (src < 0)<<7;
- m68ki_exception_trap((mc68kcpu), EXCEPTION_CHK);
- return;
- }
- m68ki_exception_illegal(mc68kcpu);
-}
-
-
-void m68000_base_device_ops::m68k_op_chk_32_pd(m68000_base_device* mc68kcpu)
-{
- if(CPU_TYPE_IS_EC020_PLUS((mc68kcpu)->cpu_type))
- {
- INT32 src = MAKE_INT_32(DX(mc68kcpu));
- INT32 bound = MAKE_INT_32(OPER_AY_PD_32(mc68kcpu));
-
- (mc68kcpu)->not_z_flag = ZFLAG_32(src); /* Undocumented */
- (mc68kcpu)->v_flag = VFLAG_CLEAR; /* Undocumented */
- (mc68kcpu)->c_flag = CFLAG_CLEAR; /* Undocumented */
-
- if(src >= 0 && src <= bound)
- {
- return;
- }
- (mc68kcpu)->n_flag = (src < 0)<<7;
- m68ki_exception_trap((mc68kcpu), EXCEPTION_CHK);
- return;
- }
- m68ki_exception_illegal(mc68kcpu);
-}
-
-
-void m68000_base_device_ops::m68k_op_chk_32_di(m68000_base_device* mc68kcpu)
-{
- if(CPU_TYPE_IS_EC020_PLUS((mc68kcpu)->cpu_type))
- {
- INT32 src = MAKE_INT_32(DX(mc68kcpu));
- INT32 bound = MAKE_INT_32(OPER_AY_DI_32(mc68kcpu));
-
- (mc68kcpu)->not_z_flag = ZFLAG_32(src); /* Undocumented */
- (mc68kcpu)->v_flag = VFLAG_CLEAR; /* Undocumented */
- (mc68kcpu)->c_flag = CFLAG_CLEAR; /* Undocumented */
-
- if(src >= 0 && src <= bound)
- {
- return;
- }
- (mc68kcpu)->n_flag = (src < 0)<<7;
- m68ki_exception_trap((mc68kcpu), EXCEPTION_CHK);
- return;
- }
- m68ki_exception_illegal(mc68kcpu);
-}
-
-
-void m68000_base_device_ops::m68k_op_chk_32_ix(m68000_base_device* mc68kcpu)
-{
- if(CPU_TYPE_IS_EC020_PLUS((mc68kcpu)->cpu_type))
- {
- INT32 src = MAKE_INT_32(DX(mc68kcpu));
- INT32 bound = MAKE_INT_32(OPER_AY_IX_32(mc68kcpu));
-
- (mc68kcpu)->not_z_flag = ZFLAG_32(src); /* Undocumented */
- (mc68kcpu)->v_flag = VFLAG_CLEAR; /* Undocumented */
- (mc68kcpu)->c_flag = CFLAG_CLEAR; /* Undocumented */
-
- if(src >= 0 && src <= bound)
- {
- return;
- }
- (mc68kcpu)->n_flag = (src < 0)<<7;
- m68ki_exception_trap((mc68kcpu), EXCEPTION_CHK);
- return;
- }
- m68ki_exception_illegal(mc68kcpu);
-}
-
-
-void m68000_base_device_ops::m68k_op_chk_32_aw(m68000_base_device* mc68kcpu)
-{
- if(CPU_TYPE_IS_EC020_PLUS((mc68kcpu)->cpu_type))
- {
- INT32 src = MAKE_INT_32(DX(mc68kcpu));
- INT32 bound = MAKE_INT_32(OPER_AW_32(mc68kcpu));
-
- (mc68kcpu)->not_z_flag = ZFLAG_32(src); /* Undocumented */
- (mc68kcpu)->v_flag = VFLAG_CLEAR; /* Undocumented */
- (mc68kcpu)->c_flag = CFLAG_CLEAR; /* Undocumented */
-
- if(src >= 0 && src <= bound)
- {
- return;
- }
- (mc68kcpu)->n_flag = (src < 0)<<7;
- m68ki_exception_trap((mc68kcpu), EXCEPTION_CHK);
- return;
- }
- m68ki_exception_illegal(mc68kcpu);
-}
-
-
-void m68000_base_device_ops::m68k_op_chk_32_al(m68000_base_device* mc68kcpu)
-{
- if(CPU_TYPE_IS_EC020_PLUS((mc68kcpu)->cpu_type))
- {
- INT32 src = MAKE_INT_32(DX(mc68kcpu));
- INT32 bound = MAKE_INT_32(OPER_AL_32(mc68kcpu));
-
- (mc68kcpu)->not_z_flag = ZFLAG_32(src); /* Undocumented */
- (mc68kcpu)->v_flag = VFLAG_CLEAR; /* Undocumented */
- (mc68kcpu)->c_flag = CFLAG_CLEAR; /* Undocumented */
-
- if(src >= 0 && src <= bound)
- {
- return;
- }
- (mc68kcpu)->n_flag = (src < 0)<<7;
- m68ki_exception_trap((mc68kcpu), EXCEPTION_CHK);
- return;
- }
- m68ki_exception_illegal(mc68kcpu);
-}
-
-
-void m68000_base_device_ops::m68k_op_chk_32_pcdi(m68000_base_device* mc68kcpu)
-{
- if(CPU_TYPE_IS_EC020_PLUS((mc68kcpu)->cpu_type))
- {
- INT32 src = MAKE_INT_32(DX(mc68kcpu));
- INT32 bound = MAKE_INT_32(OPER_PCDI_32(mc68kcpu));
-
- (mc68kcpu)->not_z_flag = ZFLAG_32(src); /* Undocumented */
- (mc68kcpu)->v_flag = VFLAG_CLEAR; /* Undocumented */
- (mc68kcpu)->c_flag = CFLAG_CLEAR; /* Undocumented */
-
- if(src >= 0 && src <= bound)
- {
- return;
- }
- (mc68kcpu)->n_flag = (src < 0)<<7;
- m68ki_exception_trap((mc68kcpu), EXCEPTION_CHK);
- return;
- }
- m68ki_exception_illegal(mc68kcpu);
-}
-
-
-void m68000_base_device_ops::m68k_op_chk_32_pcix(m68000_base_device* mc68kcpu)
-{
- if(CPU_TYPE_IS_EC020_PLUS((mc68kcpu)->cpu_type))
- {
- INT32 src = MAKE_INT_32(DX(mc68kcpu));
- INT32 bound = MAKE_INT_32(OPER_PCIX_32(mc68kcpu));
-
- (mc68kcpu)->not_z_flag = ZFLAG_32(src); /* Undocumented */
- (mc68kcpu)->v_flag = VFLAG_CLEAR; /* Undocumented */
- (mc68kcpu)->c_flag = CFLAG_CLEAR; /* Undocumented */
-
- if(src >= 0 && src <= bound)
- {
- return;
- }
- (mc68kcpu)->n_flag = (src < 0)<<7;
- m68ki_exception_trap((mc68kcpu), EXCEPTION_CHK);
- return;
- }
- m68ki_exception_illegal(mc68kcpu);
-}
-
-
-void m68000_base_device_ops::m68k_op_chk_32_i(m68000_base_device* mc68kcpu)
-{
- if(CPU_TYPE_IS_EC020_PLUS((mc68kcpu)->cpu_type))
- {
- INT32 src = MAKE_INT_32(DX(mc68kcpu));
- INT32 bound = MAKE_INT_32(OPER_I_32(mc68kcpu));
-
- (mc68kcpu)->not_z_flag = ZFLAG_32(src); /* Undocumented */
- (mc68kcpu)->v_flag = VFLAG_CLEAR; /* Undocumented */
- (mc68kcpu)->c_flag = CFLAG_CLEAR; /* Undocumented */
-
- if(src >= 0 && src <= bound)
- {
- return;
- }
- (mc68kcpu)->n_flag = (src < 0)<<7;
- m68ki_exception_trap((mc68kcpu), EXCEPTION_CHK);
- return;
- }
- m68ki_exception_illegal(mc68kcpu);
-}
-
-
-void m68000_base_device_ops::m68k_op_chk2cmp2_8_pcdi(m68000_base_device* mc68kcpu)
-{
- if(CPU_TYPE_IS_EC020_PLUS((mc68kcpu)->cpu_type))
- {
- UINT32 word2 = OPER_I_16(mc68kcpu);
- UINT32 compare = REG_DA(mc68kcpu)[(word2 >> 12) & 15]&0xff;
- UINT32 ea = EA_PCDI_8(mc68kcpu);
- UINT32 lower_bound = m68ki_read_pcrel_8((mc68kcpu), ea);
- UINT32 upper_bound = m68ki_read_pcrel_8((mc68kcpu), ea + 1);
-
- if(!BIT_F(word2))
- (mc68kcpu)->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))
- {
- if(BIT_B(word2))
- m68ki_exception_trap((mc68kcpu), EXCEPTION_CHK);
- return;
- }
-
- (mc68kcpu)->c_flag = upper_bound - compare;
- if(COND_CS(mc68kcpu) && BIT_B(word2))
- m68ki_exception_trap((mc68kcpu), EXCEPTION_CHK);
- return;
- }
- m68ki_exception_illegal(mc68kcpu);
-}
-
-
-void m68000_base_device_ops::m68k_op_chk2cmp2_8_pcix(m68000_base_device* mc68kcpu)
-{
- if(CPU_TYPE_IS_EC020_PLUS((mc68kcpu)->cpu_type))
- {
- UINT32 word2 = OPER_I_16(mc68kcpu);
- UINT32 compare = REG_DA(mc68kcpu)[(word2 >> 12) & 15]&0xff;
- UINT32 ea = EA_PCIX_8(mc68kcpu);
- UINT32 lower_bound = m68ki_read_pcrel_8((mc68kcpu), ea);
- UINT32 upper_bound = m68ki_read_pcrel_8((mc68kcpu), ea + 1);
-
- if(!BIT_F(word2))
- (mc68kcpu)->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))
- {
- if(BIT_B(word2))
- m68ki_exception_trap((mc68kcpu), EXCEPTION_CHK);
- return;
- }
-
- (mc68kcpu)->c_flag = upper_bound - compare;
- if(COND_CS(mc68kcpu) && BIT_B(word2))
- m68ki_exception_trap((mc68kcpu), EXCEPTION_CHK);
- return;
- }
- m68ki_exception_illegal(mc68kcpu);
-}
-
-
-void m68000_base_device_ops::m68k_op_chk2cmp2_8_ai(m68000_base_device* mc68kcpu)
-{
- if(CPU_TYPE_IS_EC020_PLUS((mc68kcpu)->cpu_type))
- {
- UINT32 word2 = OPER_I_16(mc68kcpu);
- UINT32 compare = REG_DA(mc68kcpu)[(word2 >> 12) & 15]&0xff;
- UINT32 ea = EA_AY_AI_8(mc68kcpu);
- UINT32 lower_bound = m68ki_read_8((mc68kcpu), ea);
- UINT32 upper_bound = m68ki_read_8((mc68kcpu), ea + 1);
-
- if(!BIT_F(word2))
- (mc68kcpu)->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))
- {
- if(BIT_B(word2))
- m68ki_exception_trap((mc68kcpu), EXCEPTION_CHK);
- return;
- }
-
- (mc68kcpu)->c_flag = upper_bound - compare;
- if(COND_CS(mc68kcpu) && BIT_B(word2))
- m68ki_exception_trap((mc68kcpu), EXCEPTION_CHK);
- return;
- }
- m68ki_exception_illegal(mc68kcpu);
-}
-
-
-void m68000_base_device_ops::m68k_op_chk2cmp2_8_di(m68000_base_device* mc68kcpu)
-{
- if(CPU_TYPE_IS_EC020_PLUS((mc68kcpu)->cpu_type))
- {
- UINT32 word2 = OPER_I_16(mc68kcpu);
- UINT32 compare = REG_DA(mc68kcpu)[(word2 >> 12) & 15]&0xff;
- UINT32 ea = EA_AY_DI_8(mc68kcpu);
- UINT32 lower_bound = m68ki_read_8((mc68kcpu), ea);
- UINT32 upper_bound = m68ki_read_8((mc68kcpu), ea + 1);
-
- if(!BIT_F(word2))
- (mc68kcpu)->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))
- {
- if(BIT_B(word2))
- m68ki_exception_trap((mc68kcpu), EXCEPTION_CHK);
- return;
- }
-
- (mc68kcpu)->c_flag = upper_bound - compare;
- if(COND_CS(mc68kcpu) && BIT_B(word2))
- m68ki_exception_trap((mc68kcpu), EXCEPTION_CHK);
- return;
- }
- m68ki_exception_illegal(mc68kcpu);
-}
-
-
-void m68000_base_device_ops::m68k_op_chk2cmp2_8_ix(m68000_base_device* mc68kcpu)
-{
- if(CPU_TYPE_IS_EC020_PLUS((mc68kcpu)->cpu_type))
- {
- UINT32 word2 = OPER_I_16(mc68kcpu);
- UINT32 compare = REG_DA(mc68kcpu)[(word2 >> 12) & 15]&0xff;
- UINT32 ea = EA_AY_IX_8(mc68kcpu);
- UINT32 lower_bound = m68ki_read_8((mc68kcpu), ea);
- UINT32 upper_bound = m68ki_read_8((mc68kcpu), ea + 1);
-
- if(!BIT_F(word2))
- (mc68kcpu)->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))
- {
- if(BIT_B(word2))
- m68ki_exception_trap((mc68kcpu), EXCEPTION_CHK);
- return;
- }
-
- (mc68kcpu)->c_flag = upper_bound - compare;
- if(COND_CS(mc68kcpu) && BIT_B(word2))
- m68ki_exception_trap((mc68kcpu), EXCEPTION_CHK);
- return;
- }
- m68ki_exception_illegal(mc68kcpu);
-}
-
-
-void m68000_base_device_ops::m68k_op_chk2cmp2_8_aw(m68000_base_device* mc68kcpu)
-{
- if(CPU_TYPE_IS_EC020_PLUS((mc68kcpu)->cpu_type))
- {
- UINT32 word2 = OPER_I_16(mc68kcpu);
- UINT32 compare = REG_DA(mc68kcpu)[(word2 >> 12) & 15]&0xff;
- UINT32 ea = EA_AW_8(mc68kcpu);
- UINT32 lower_bound = m68ki_read_8((mc68kcpu), ea);
- UINT32 upper_bound = m68ki_read_8((mc68kcpu), ea + 1);
-
- if(!BIT_F(word2))
- (mc68kcpu)->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))
- {
- if(BIT_B(word2))
- m68ki_exception_trap((mc68kcpu), EXCEPTION_CHK);
- return;
- }
-
- (mc68kcpu)->c_flag = upper_bound - compare;
- if(COND_CS(mc68kcpu) && BIT_B(word2))
- m68ki_exception_trap((mc68kcpu), EXCEPTION_CHK);
- return;
- }
- m68ki_exception_illegal(mc68kcpu);
-}
-
-
-void m68000_base_device_ops::m68k_op_chk2cmp2_8_al(m68000_base_device* mc68kcpu)
-{
- if(CPU_TYPE_IS_EC020_PLUS((mc68kcpu)->cpu_type))
- {
- UINT32 word2 = OPER_I_16(mc68kcpu);
- UINT32 compare = REG_DA(mc68kcpu)[(word2 >> 12) & 15]&0xff;
- UINT32 ea = EA_AL_8(mc68kcpu);
- UINT32 lower_bound = m68ki_read_8((mc68kcpu), ea);
- UINT32 upper_bound = m68ki_read_8((mc68kcpu), ea + 1);
-
- if(!BIT_F(word2))
- (mc68kcpu)->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))
- {
- if(BIT_B(word2))
- m68ki_exception_trap((mc68kcpu), EXCEPTION_CHK);
- return;
- }
-
- (mc68kcpu)->c_flag = upper_bound - compare;
- if(COND_CS(mc68kcpu) && BIT_B(word2))
- m68ki_exception_trap((mc68kcpu), EXCEPTION_CHK);
- return;
- }
- m68ki_exception_illegal(mc68kcpu);
-}
-
-
-void m68000_base_device_ops::m68k_op_chk2cmp2_16_pcdi(m68000_base_device* mc68kcpu)
-{
- if(CPU_TYPE_IS_EC020_PLUS((mc68kcpu)->cpu_type))
- {
- UINT32 word2 = OPER_I_16(mc68kcpu);
- UINT32 compare = REG_DA(mc68kcpu)[(word2 >> 12) & 15]&0xffff;
- UINT32 ea = EA_PCDI_16(mc68kcpu);
- UINT32 lower_bound = m68ki_read_pcrel_16((mc68kcpu), ea);
- UINT32 upper_bound = m68ki_read_pcrel_16((mc68kcpu), ea + 2);
-
- if(!BIT_F(word2))
- (mc68kcpu)->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))
- {
- if(BIT_B(word2))
- m68ki_exception_trap((mc68kcpu), EXCEPTION_CHK);
- return;
- }
-
- if(!BIT_F(word2))
- (mc68kcpu)->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);
- return;
- }
- m68ki_exception_illegal(mc68kcpu);
-}
-
-
-void m68000_base_device_ops::m68k_op_chk2cmp2_16_pcix(m68000_base_device* mc68kcpu)
-{
- if(CPU_TYPE_IS_EC020_PLUS((mc68kcpu)->cpu_type))
- {
- UINT32 word2 = OPER_I_16(mc68kcpu);
- UINT32 compare = REG_DA(mc68kcpu)[(word2 >> 12) & 15]&0xffff;
- UINT32 ea = EA_PCIX_16(mc68kcpu);
- UINT32 lower_bound = m68ki_read_pcrel_16((mc68kcpu), ea);
- UINT32 upper_bound = m68ki_read_pcrel_16((mc68kcpu), ea + 2);
-
- if(!BIT_F(word2))
- (mc68kcpu)->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))
- {
- if(BIT_B(word2))
- m68ki_exception_trap((mc68kcpu), EXCEPTION_CHK);
- return;
- }
-
- if(!BIT_F(word2))
- (mc68kcpu)->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);
- return;
- }
- m68ki_exception_illegal(mc68kcpu);
-}
-
-
-void m68000_base_device_ops::m68k_op_chk2cmp2_16_ai(m68000_base_device* mc68kcpu)
-{
- if(CPU_TYPE_IS_EC020_PLUS((mc68kcpu)->cpu_type))
- {
- UINT32 word2 = OPER_I_16(mc68kcpu);
- UINT32 compare = REG_DA(mc68kcpu)[(word2 >> 12) & 15]&0xffff;
- UINT32 ea = EA_AY_AI_16(mc68kcpu);
- UINT32 lower_bound = m68ki_read_16((mc68kcpu), ea);
- UINT32 upper_bound = m68ki_read_16((mc68kcpu), ea + 2);
-
- if(!BIT_F(word2))
- (mc68kcpu)->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))
- {
- if(BIT_B(word2))
- m68ki_exception_trap((mc68kcpu), EXCEPTION_CHK);
- return;
- }
- if(!BIT_F(word2))
- (mc68kcpu)->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);
- return;
- }
- m68ki_exception_illegal(mc68kcpu);
-}
-
-
-void m68000_base_device_ops::m68k_op_chk2cmp2_16_di(m68000_base_device* mc68kcpu)
-{
- if(CPU_TYPE_IS_EC020_PLUS((mc68kcpu)->cpu_type))
- {
- UINT32 word2 = OPER_I_16(mc68kcpu);
- UINT32 compare = REG_DA(mc68kcpu)[(word2 >> 12) & 15]&0xffff;
- UINT32 ea = EA_AY_DI_16(mc68kcpu);
- UINT32 lower_bound = m68ki_read_16((mc68kcpu), ea);
- UINT32 upper_bound = m68ki_read_16((mc68kcpu), ea + 2);
-
- if(!BIT_F(word2))
- (mc68kcpu)->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))
- {
- if(BIT_B(word2))
- m68ki_exception_trap((mc68kcpu), EXCEPTION_CHK);
- return;
- }
- if(!BIT_F(word2))
- (mc68kcpu)->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);
- return;
- }
- m68ki_exception_illegal(mc68kcpu);
-}
-
-
-void m68000_base_device_ops::m68k_op_chk2cmp2_16_ix(m68000_base_device* mc68kcpu)
-{
- if(CPU_TYPE_IS_EC020_PLUS((mc68kcpu)->cpu_type))
- {
- UINT32 word2 = OPER_I_16(mc68kcpu);
- UINT32 compare = REG_DA(mc68kcpu)[(word2 >> 12) & 15]&0xffff;
- UINT32 ea = EA_AY_IX_16(mc68kcpu);
- UINT32 lower_bound = m68ki_read_16((mc68kcpu), ea);
- UINT32 upper_bound = m68ki_read_16((mc68kcpu), ea + 2);
-
- if(!BIT_F(word2))
- (mc68kcpu)->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))
- {
- if(BIT_B(word2))
- m68ki_exception_trap((mc68kcpu), EXCEPTION_CHK);
- return;
- }
- if(!BIT_F(word2))
- (mc68kcpu)->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);
- return;
- }
- m68ki_exception_illegal(mc68kcpu);
-}
-
-
-void m68000_base_device_ops::m68k_op_chk2cmp2_16_aw(m68000_base_device* mc68kcpu)
-{
- if(CPU_TYPE_IS_EC020_PLUS((mc68kcpu)->cpu_type))
- {
- UINT32 word2 = OPER_I_16(mc68kcpu);
- UINT32 compare = REG_DA(mc68kcpu)[(word2 >> 12) & 15]&0xffff;
- UINT32 ea = EA_AW_16(mc68kcpu);
- UINT32 lower_bound = m68ki_read_16((mc68kcpu), ea);
- UINT32 upper_bound = m68ki_read_16((mc68kcpu), ea + 2);
-
- if(!BIT_F(word2))
- (mc68kcpu)->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))
- {
- if(BIT_B(word2))
- m68ki_exception_trap((mc68kcpu), EXCEPTION_CHK);
- return;
- }
- if(!BIT_F(word2))
- (mc68kcpu)->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);
- return;
- }
- m68ki_exception_illegal(mc68kcpu);
-}
-
-
-void m68000_base_device_ops::m68k_op_chk2cmp2_16_al(m68000_base_device* mc68kcpu)
-{
- if(CPU_TYPE_IS_EC020_PLUS((mc68kcpu)->cpu_type))
- {
- UINT32 word2 = OPER_I_16(mc68kcpu);
- UINT32 compare = REG_DA(mc68kcpu)[(word2 >> 12) & 15]&0xffff;
- UINT32 ea = EA_AL_16(mc68kcpu);
- UINT32 lower_bound = m68ki_read_16((mc68kcpu), ea);
- UINT32 upper_bound = m68ki_read_16((mc68kcpu), ea + 2);
-
- if(!BIT_F(word2))
- (mc68kcpu)->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))
- {
- if(BIT_B(word2))
- m68ki_exception_trap((mc68kcpu), EXCEPTION_CHK);
- return;
- }
- if(!BIT_F(word2))
- (mc68kcpu)->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);
- return;
- }
- m68ki_exception_illegal(mc68kcpu);
-}
-
-
-void m68000_base_device_ops::m68k_op_chk2cmp2_32_pcdi(m68000_base_device* mc68kcpu)
-{
- if(CPU_TYPE_IS_EC020_PLUS((mc68kcpu)->cpu_type))
- {
- UINT32 word2 = OPER_I_16(mc68kcpu);
- UINT32 compare = REG_DA(mc68kcpu)[(word2 >> 12) & 15];
- UINT32 ea = EA_PCDI_32(mc68kcpu);
- UINT32 lower_bound = m68ki_read_pcrel_32((mc68kcpu), ea);
- UINT32 upper_bound = m68ki_read_pcrel_32((mc68kcpu), 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))
- {
- if(BIT_B(word2))
- m68ki_exception_trap((mc68kcpu), 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);
- return;
- }
- m68ki_exception_illegal(mc68kcpu);
-}
-
-
-void m68000_base_device_ops::m68k_op_chk2cmp2_32_pcix(m68000_base_device* mc68kcpu)
-{
- if(CPU_TYPE_IS_EC020_PLUS((mc68kcpu)->cpu_type))
- {
- UINT32 word2 = OPER_I_16(mc68kcpu);
- UINT32 compare = REG_DA(mc68kcpu)[(word2 >> 12) & 15];
- UINT32 ea = EA_PCIX_32(mc68kcpu);
- UINT32 lower_bound = m68ki_read_pcrel_32((mc68kcpu), ea);
- UINT32 upper_bound = m68ki_read_pcrel_32((mc68kcpu), 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))
- {
- if(BIT_B(word2))
- m68ki_exception_trap((mc68kcpu), 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);
- return;
- }
- m68ki_exception_illegal(mc68kcpu);
-}
-
-
-void m68000_base_device_ops::m68k_op_chk2cmp2_32_ai(m68000_base_device* mc68kcpu)
-{
- if(CPU_TYPE_IS_EC020_PLUS((mc68kcpu)->cpu_type))
- {
- UINT32 word2 = OPER_I_16(mc68kcpu);
- UINT32 compare = REG_DA(mc68kcpu)[(word2 >> 12) & 15];
- UINT32 ea = EA_AY_AI_32(mc68kcpu);
- UINT32 lower_bound = m68ki_read_32((mc68kcpu), ea);
- UINT32 upper_bound = m68ki_read_32((mc68kcpu), 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))
- {
- if(BIT_B(word2))
- m68ki_exception_trap((mc68kcpu), 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);
- return;
- }
- m68ki_exception_illegal(mc68kcpu);
-}
-
-
-void m68000_base_device_ops::m68k_op_chk2cmp2_32_di(m68000_base_device* mc68kcpu)
-{
- if(CPU_TYPE_IS_EC020_PLUS((mc68kcpu)->cpu_type))
- {
- UINT32 word2 = OPER_I_16(mc68kcpu);
- UINT32 compare = REG_DA(mc68kcpu)[(word2 >> 12) & 15];
- UINT32 ea = EA_AY_DI_32(mc68kcpu);
- UINT32 lower_bound = m68ki_read_32((mc68kcpu), ea);
- UINT32 upper_bound = m68ki_read_32((mc68kcpu), 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))
- {
- if(BIT_B(word2))
- m68ki_exception_trap((mc68kcpu), 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);
- return;
- }
- m68ki_exception_illegal(mc68kcpu);
-}
-
-
-void m68000_base_device_ops::m68k_op_chk2cmp2_32_ix(m68000_base_device* mc68kcpu)
-{
- if(CPU_TYPE_IS_EC020_PLUS((mc68kcpu)->cpu_type))
- {
- UINT32 word2 = OPER_I_16(mc68kcpu);
- UINT32 compare = REG_DA(mc68kcpu)[(word2 >> 12) & 15];
- UINT32 ea = EA_AY_IX_32(mc68kcpu);
- UINT32 lower_bound = m68ki_read_32((mc68kcpu), ea);
- UINT32 upper_bound = m68ki_read_32((mc68kcpu), 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))
- {
- if(BIT_B(word2))
- m68ki_exception_trap((mc68kcpu), 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);
- return;
- }
- m68ki_exception_illegal(mc68kcpu);
-}
-
-
-void m68000_base_device_ops::m68k_op_chk2cmp2_32_aw(m68000_base_device* mc68kcpu)
-{
- if(CPU_TYPE_IS_EC020_PLUS((mc68kcpu)->cpu_type))
- {
- UINT32 word2 = OPER_I_16(mc68kcpu);
- UINT32 compare = REG_DA(mc68kcpu)[(word2 >> 12) & 15];
- UINT32 ea = EA_AW_32(mc68kcpu);
- UINT32 lower_bound = m68ki_read_32((mc68kcpu), ea);
- UINT32 upper_bound = m68ki_read_32((mc68kcpu), 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))
- {
- if(BIT_B(word2))
- m68ki_exception_trap((mc68kcpu), 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);
- return;
- }
- m68ki_exception_illegal(mc68kcpu);
-}
-
-
-void m68000_base_device_ops::m68k_op_chk2cmp2_32_al(m68000_base_device* mc68kcpu)
-{
- if(CPU_TYPE_IS_EC020_PLUS((mc68kcpu)->cpu_type))
- {
- UINT32 word2 = OPER_I_16(mc68kcpu);
- UINT32 compare = REG_DA(mc68kcpu)[(word2 >> 12) & 15];
- UINT32 ea = EA_AL_32(mc68kcpu);
- UINT32 lower_bound = m68ki_read_32((mc68kcpu), ea);
- UINT32 upper_bound = m68ki_read_32((mc68kcpu), 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))
- {
- if(BIT_B(word2))
- m68ki_exception_trap((mc68kcpu), 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);
- return;
- }
- m68ki_exception_illegal(mc68kcpu);
-}
-
-
-void m68000_base_device_ops::m68k_op_clr_8_d(m68000_base_device* mc68kcpu)
-{
- DY(mc68kcpu) &= 0xffffff00;
-
- (mc68kcpu)->n_flag = NFLAG_CLEAR;
- (mc68kcpu)->v_flag = VFLAG_CLEAR;
- (mc68kcpu)->c_flag = CFLAG_CLEAR;
- (mc68kcpu)->not_z_flag = ZFLAG_SET;
-}
-
-
-void m68000_base_device_ops::m68k_op_clr_8_ai(m68000_base_device* mc68kcpu)
-{
- UINT32 ea = EA_AY_AI_8(mc68kcpu);
-
- if(CPU_TYPE_IS_000((mc68kcpu)->cpu_type))
- {
- m68ki_read_8((mc68kcpu), ea); /* the 68000 does a dummy read, the value is discarded */
- }
-
- m68ki_write_8((mc68kcpu), ea, 0);
-
- (mc68kcpu)->n_flag = NFLAG_CLEAR;
- (mc68kcpu)->v_flag = VFLAG_CLEAR;
- (mc68kcpu)->c_flag = CFLAG_CLEAR;
- (mc68kcpu)->not_z_flag = ZFLAG_SET;
-}
-
-
-void m68000_base_device_ops::m68k_op_clr_8_pi(m68000_base_device* mc68kcpu)
-{
- UINT32 ea = EA_AY_PI_8(mc68kcpu);
-
- if(CPU_TYPE_IS_000((mc68kcpu)->cpu_type))
- {
- m68ki_read_8((mc68kcpu), ea); /* the 68000 does a dummy read, the value is discarded */
- }
-
- m68ki_write_8((mc68kcpu), ea, 0);
-
- (mc68kcpu)->n_flag = NFLAG_CLEAR;
- (mc68kcpu)->v_flag = VFLAG_CLEAR;
- (mc68kcpu)->c_flag = CFLAG_CLEAR;
- (mc68kcpu)->not_z_flag = ZFLAG_SET;
-}
-
-
-void m68000_base_device_ops::m68k_op_clr_8_pi7(m68000_base_device* mc68kcpu)
-{
- UINT32 ea = EA_A7_PI_8(mc68kcpu);
-
- if(CPU_TYPE_IS_000((mc68kcpu)->cpu_type))
- {
- m68ki_read_8((mc68kcpu), ea); /* the 68000 does a dummy read, the value is discarded */
- }
-
- m68ki_write_8((mc68kcpu), ea, 0);
-
- (mc68kcpu)->n_flag = NFLAG_CLEAR;
- (mc68kcpu)->v_flag = VFLAG_CLEAR;
- (mc68kcpu)->c_flag = CFLAG_CLEAR;
- (mc68kcpu)->not_z_flag = ZFLAG_SET;
-}
-
-
-void m68000_base_device_ops::m68k_op_clr_8_pd(m68000_base_device* mc68kcpu)
-{
- UINT32 ea = EA_AY_PD_8(mc68kcpu);
-
- if(CPU_TYPE_IS_000((mc68kcpu)->cpu_type))
- {
- m68ki_read_8((mc68kcpu), ea); /* the 68000 does a dummy read, the value is discarded */
- }
-
- m68ki_write_8((mc68kcpu), ea, 0);
-
- (mc68kcpu)->n_flag = NFLAG_CLEAR;
- (mc68kcpu)->v_flag = VFLAG_CLEAR;
- (mc68kcpu)->c_flag = CFLAG_CLEAR;
- (mc68kcpu)->not_z_flag = ZFLAG_SET;
-}
-
-
-void m68000_base_device_ops::m68k_op_clr_8_pd7(m68000_base_device* mc68kcpu)
-{
- UINT32 ea = EA_A7_PD_8(mc68kcpu);
-
- if(CPU_TYPE_IS_000((mc68kcpu)->cpu_type))
- {
- m68ki_read_8((mc68kcpu), ea); /* the 68000 does a dummy read, the value is discarded */
- }
-
- m68ki_write_8((mc68kcpu), ea, 0);
-
- (mc68kcpu)->n_flag = NFLAG_CLEAR;
- (mc68kcpu)->v_flag = VFLAG_CLEAR;
- (mc68kcpu)->c_flag = CFLAG_CLEAR;
- (mc68kcpu)->not_z_flag = ZFLAG_SET;
-}
-
-
-void m68000_base_device_ops::m68k_op_clr_8_di(m68000_base_device* mc68kcpu)
-{
- UINT32 ea = EA_AY_DI_8(mc68kcpu);
-
- if(CPU_TYPE_IS_000((mc68kcpu)->cpu_type))
- {
- m68ki_read_8((mc68kcpu), ea); /* the 68000 does a dummy read, the value is discarded */
- }
-
- m68ki_write_8((mc68kcpu), ea, 0);
-
- (mc68kcpu)->n_flag = NFLAG_CLEAR;
- (mc68kcpu)->v_flag = VFLAG_CLEAR;
- (mc68kcpu)->c_flag = CFLAG_CLEAR;
- (mc68kcpu)->not_z_flag = ZFLAG_SET;
-}
-
-
-void m68000_base_device_ops::m68k_op_clr_8_ix(m68000_base_device* mc68kcpu)
-{
- UINT32 ea = EA_AY_IX_8(mc68kcpu);
-
- if(CPU_TYPE_IS_000((mc68kcpu)->cpu_type))
- {
- m68ki_read_8((mc68kcpu), ea); /* the 68000 does a dummy read, the value is discarded */
- }
-
- m68ki_write_8((mc68kcpu), ea, 0);
-
- (mc68kcpu)->n_flag = NFLAG_CLEAR;
- (mc68kcpu)->v_flag = VFLAG_CLEAR;
- (mc68kcpu)->c_flag = CFLAG_CLEAR;
- (mc68kcpu)->not_z_flag = ZFLAG_SET;
-}
-
-
-void m68000_base_device_ops::m68k_op_clr_8_aw(m68000_base_device* mc68kcpu)
-{
- UINT32 ea = EA_AW_8(mc68kcpu);
-
- if(CPU_TYPE_IS_000((mc68kcpu)->cpu_type))
- {
- m68ki_read_8((mc68kcpu), ea); /* the 68000 does a dummy read, the value is discarded */
- }
-
- m68ki_write_8((mc68kcpu), ea, 0);
-
- (mc68kcpu)->n_flag = NFLAG_CLEAR;
- (mc68kcpu)->v_flag = VFLAG_CLEAR;
- (mc68kcpu)->c_flag = CFLAG_CLEAR;
- (mc68kcpu)->not_z_flag = ZFLAG_SET;
-}
-
-
-void m68000_base_device_ops::m68k_op_clr_8_al(m68000_base_device* mc68kcpu)
-{
- UINT32 ea = EA_AL_8(mc68kcpu);
-
- if(CPU_TYPE_IS_000((mc68kcpu)->cpu_type))
- {
- m68ki_read_8((mc68kcpu), ea); /* the 68000 does a dummy read, the value is discarded */
- }
-
- m68ki_write_8((mc68kcpu), ea, 0);
-
- (mc68kcpu)->n_flag = NFLAG_CLEAR;
- (mc68kcpu)->v_flag = VFLAG_CLEAR;
- (mc68kcpu)->c_flag = CFLAG_CLEAR;
- (mc68kcpu)->not_z_flag = ZFLAG_SET;
-}
-
-
-void m68000_base_device_ops::m68k_op_clr_16_d(m68000_base_device* mc68kcpu)
-{
- DY(mc68kcpu) &= 0xffff0000;
-
- (mc68kcpu)->n_flag = NFLAG_CLEAR;
- (mc68kcpu)->v_flag = VFLAG_CLEAR;
- (mc68kcpu)->c_flag = CFLAG_CLEAR;
- (mc68kcpu)->not_z_flag = ZFLAG_SET;
-}
-
-
-void m68000_base_device_ops::m68k_op_clr_16_ai(m68000_base_device* mc68kcpu)
-{
- UINT32 ea = EA_AY_AI_16(mc68kcpu);
-
- if(CPU_TYPE_IS_000((mc68kcpu)->cpu_type))
- {
- m68ki_read_16((mc68kcpu), ea); /* the 68000 does a dummy read, the value is discarded */
- }
-
- m68ki_write_16((mc68kcpu), ea, 0);
-
- (mc68kcpu)->n_flag = NFLAG_CLEAR;
- (mc68kcpu)->v_flag = VFLAG_CLEAR;
- (mc68kcpu)->c_flag = CFLAG_CLEAR;
- (mc68kcpu)->not_z_flag = ZFLAG_SET;
-}
-
-
-void m68000_base_device_ops::m68k_op_clr_16_pi(m68000_base_device* mc68kcpu)
-{
- UINT32 ea = EA_AY_PI_16(mc68kcpu);
-
- if(CPU_TYPE_IS_000((mc68kcpu)->cpu_type))
- {
- m68ki_read_16((mc68kcpu), ea); /* the 68000 does a dummy read, the value is discarded */
- }
-
- m68ki_write_16((mc68kcpu), ea, 0);
-
- (mc68kcpu)->n_flag = NFLAG_CLEAR;
- (mc68kcpu)->v_flag = VFLAG_CLEAR;
- (mc68kcpu)->c_flag = CFLAG_CLEAR;
- (mc68kcpu)->not_z_flag = ZFLAG_SET;
-}
-
-
-void m68000_base_device_ops::m68k_op_clr_16_pd(m68000_base_device* mc68kcpu)
-{
- UINT32 ea = EA_AY_PD_16(mc68kcpu);
-
- if(CPU_TYPE_IS_000((mc68kcpu)->cpu_type))
- {
- m68ki_read_16((mc68kcpu), ea); /* the 68000 does a dummy read, the value is discarded */
- }
-
- m68ki_write_16((mc68kcpu), ea, 0);
-
- (mc68kcpu)->n_flag = NFLAG_CLEAR;
- (mc68kcpu)->v_flag = VFLAG_CLEAR;
- (mc68kcpu)->c_flag = CFLAG_CLEAR;
- (mc68kcpu)->not_z_flag = ZFLAG_SET;
-}
-
-
-void m68000_base_device_ops::m68k_op_clr_16_di(m68000_base_device* mc68kcpu)
-{
- UINT32 ea = EA_AY_DI_16(mc68kcpu);
-
- if(CPU_TYPE_IS_000((mc68kcpu)->cpu_type))
- {
- m68ki_read_16((mc68kcpu), ea); /* the 68000 does a dummy read, the value is discarded */
- }
-
- m68ki_write_16((mc68kcpu), ea, 0);
-
- (mc68kcpu)->n_flag = NFLAG_CLEAR;
- (mc68kcpu)->v_flag = VFLAG_CLEAR;
- (mc68kcpu)->c_flag = CFLAG_CLEAR;
- (mc68kcpu)->not_z_flag = ZFLAG_SET;
-}
-
-
-void m68000_base_device_ops::m68k_op_clr_16_ix(m68000_base_device* mc68kcpu)
-{
- UINT32 ea = EA_AY_IX_16(mc68kcpu);
-
- if(CPU_TYPE_IS_000((mc68kcpu)->cpu_type))
- {
- m68ki_read_16((mc68kcpu), ea); /* the 68000 does a dummy read, the value is discarded */
- }
-
- m68ki_write_16((mc68kcpu), ea, 0);
-
- (mc68kcpu)->n_flag = NFLAG_CLEAR;
- (mc68kcpu)->v_flag = VFLAG_CLEAR;
- (mc68kcpu)->c_flag = CFLAG_CLEAR;
- (mc68kcpu)->not_z_flag = ZFLAG_SET;
-}
-
-
-void m68000_base_device_ops::m68k_op_clr_16_aw(m68000_base_device* mc68kcpu)
-{
- UINT32 ea = EA_AW_16(mc68kcpu);
-
- if(CPU_TYPE_IS_000((mc68kcpu)->cpu_type))
- {
- m68ki_read_16((mc68kcpu), ea); /* the 68000 does a dummy read, the value is discarded */
- }
-
- m68ki_write_16((mc68kcpu), ea, 0);
-
- (mc68kcpu)->n_flag = NFLAG_CLEAR;
- (mc68kcpu)->v_flag = VFLAG_CLEAR;
- (mc68kcpu)->c_flag = CFLAG_CLEAR;
- (mc68kcpu)->not_z_flag = ZFLAG_SET;
-}
-
-
-void m68000_base_device_ops::m68k_op_clr_16_al(m68000_base_device* mc68kcpu)
-{
- UINT32 ea = EA_AL_16(mc68kcpu);
-
- if(CPU_TYPE_IS_000((mc68kcpu)->cpu_type))
- {
- m68ki_read_16((mc68kcpu), ea); /* the 68000 does a dummy read, the value is discarded */
- }
-
- m68ki_write_16((mc68kcpu), ea, 0);
-
- (mc68kcpu)->n_flag = NFLAG_CLEAR;
- (mc68kcpu)->v_flag = VFLAG_CLEAR;
- (mc68kcpu)->c_flag = CFLAG_CLEAR;
- (mc68kcpu)->not_z_flag = ZFLAG_SET;
-}
-
-
-void m68000_base_device_ops::m68k_op_clr_32_d(m68000_base_device* mc68kcpu)
-{
- DY(mc68kcpu) = 0;
-
- (mc68kcpu)->n_flag = NFLAG_CLEAR;
- (mc68kcpu)->v_flag = VFLAG_CLEAR;
- (mc68kcpu)->c_flag = CFLAG_CLEAR;
- (mc68kcpu)->not_z_flag = ZFLAG_SET;
-}
-
-
-void m68000_base_device_ops::m68k_op_clr_32_ai(m68000_base_device* mc68kcpu)
-{
- UINT32 ea = EA_AY_AI_32(mc68kcpu);
-
- if(CPU_TYPE_IS_000((mc68kcpu)->cpu_type))
- {
- m68ki_read_32((mc68kcpu), ea); /* the 68000 does a dummy read, the value is discarded */
- }
-
- m68ki_write_32((mc68kcpu), ea, 0);
-
- (mc68kcpu)->n_flag = NFLAG_CLEAR;
- (mc68kcpu)->v_flag = VFLAG_CLEAR;
- (mc68kcpu)->c_flag = CFLAG_CLEAR;
- (mc68kcpu)->not_z_flag = ZFLAG_SET;
-}
-
-
-void m68000_base_device_ops::m68k_op_clr_32_pi(m68000_base_device* mc68kcpu)
-{
- UINT32 ea = EA_AY_PI_32(mc68kcpu);
-
- if(CPU_TYPE_IS_000((mc68kcpu)->cpu_type))
- {
- m68ki_read_32((mc68kcpu), ea); /* the 68000 does a dummy read, the value is discarded */
- }
-
- m68ki_write_32((mc68kcpu), ea, 0);
-
- (mc68kcpu)->n_flag = NFLAG_CLEAR;
- (mc68kcpu)->v_flag = VFLAG_CLEAR;
- (mc68kcpu)->c_flag = CFLAG_CLEAR;
- (mc68kcpu)->not_z_flag = ZFLAG_SET;
-}
-
-
-void m68000_base_device_ops::m68k_op_clr_32_pd(m68000_base_device* mc68kcpu)
-{
- UINT32 ea = EA_AY_PD_32(mc68kcpu);
-
- if(CPU_TYPE_IS_000((mc68kcpu)->cpu_type))
- {
- m68ki_read_32((mc68kcpu), ea); /* the 68000 does a dummy read, the value is discarded */
- }
-
- m68ki_write_32((mc68kcpu), ea, 0);
-
- (mc68kcpu)->n_flag = NFLAG_CLEAR;
- (mc68kcpu)->v_flag = VFLAG_CLEAR;
- (mc68kcpu)->c_flag = CFLAG_CLEAR;
- (mc68kcpu)->not_z_flag = ZFLAG_SET;
-}
-
-
-void m68000_base_device_ops::m68k_op_clr_32_di(m68000_base_device* mc68kcpu)
-{
- UINT32 ea = EA_AY_DI_32(mc68kcpu);
-
- if(CPU_TYPE_IS_000((mc68kcpu)->cpu_type))
- {
- m68ki_read_32((mc68kcpu), ea); /* the 68000 does a dummy read, the value is discarded */
- }
-
- m68ki_write_32((mc68kcpu), ea, 0);
-
- (mc68kcpu)->n_flag = NFLAG_CLEAR;
- (mc68kcpu)->v_flag = VFLAG_CLEAR;
- (mc68kcpu)->c_flag = CFLAG_CLEAR;
- (mc68kcpu)->not_z_flag = ZFLAG_SET;
-}
-
-
-void m68000_base_device_ops::m68k_op_clr_32_ix(m68000_base_device* mc68kcpu)
-{
- UINT32 ea = EA_AY_IX_32(mc68kcpu);
-
- if(CPU_TYPE_IS_000((mc68kcpu)->cpu_type))
- {
- m68ki_read_32((mc68kcpu), ea); /* the 68000 does a dummy read, the value is discarded */
- }
-
- m68ki_write_32((mc68kcpu), ea, 0);
-
- (mc68kcpu)->n_flag = NFLAG_CLEAR;
- (mc68kcpu)->v_flag = VFLAG_CLEAR;
- (mc68kcpu)->c_flag = CFLAG_CLEAR;
- (mc68kcpu)->not_z_flag = ZFLAG_SET;
-}
-
-
-void m68000_base_device_ops::m68k_op_clr_32_aw(m68000_base_device* mc68kcpu)
-{
- UINT32 ea = EA_AW_32(mc68kcpu);
-
- if(CPU_TYPE_IS_000((mc68kcpu)->cpu_type))
- {
- m68ki_read_32((mc68kcpu), ea); /* the 68000 does a dummy read, the value is discarded */
- }
-
- m68ki_write_32((mc68kcpu), ea, 0);
-
- (mc68kcpu)->n_flag = NFLAG_CLEAR;
- (mc68kcpu)->v_flag = VFLAG_CLEAR;
- (mc68kcpu)->c_flag = CFLAG_CLEAR;
- (mc68kcpu)->not_z_flag = ZFLAG_SET;
-}
-
-
-void m68000_base_device_ops::m68k_op_clr_32_al(m68000_base_device* mc68kcpu)
-{
- UINT32 ea = EA_AL_32(mc68kcpu);
-
- if(CPU_TYPE_IS_000((mc68kcpu)->cpu_type))
- {
- m68ki_read_32((mc68kcpu), ea); /* the 68000 does a dummy read, the value is discarded */
- }
-
- m68ki_write_32((mc68kcpu), ea, 0);
-
- (mc68kcpu)->n_flag = NFLAG_CLEAR;
- (mc68kcpu)->v_flag = VFLAG_CLEAR;
- (mc68kcpu)->c_flag = CFLAG_CLEAR;
- (mc68kcpu)->not_z_flag = ZFLAG_SET;
-}
-
-
-void m68000_base_device_ops::m68k_op_cmp_8_d(m68000_base_device* mc68kcpu)
-{
- UINT32 src = MASK_OUT_ABOVE_8(DY(mc68kcpu));
- UINT32 dst = MASK_OUT_ABOVE_8(DX(mc68kcpu));
- UINT32 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);
-}
-
-
-void m68000_base_device_ops::m68k_op_cmp_8_ai(m68000_base_device* mc68kcpu)
-{
- UINT32 src = OPER_AY_AI_8(mc68kcpu);
- UINT32 dst = MASK_OUT_ABOVE_8(DX(mc68kcpu));
- UINT32 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);
-}
-
-
-void m68000_base_device_ops::m68k_op_cmp_8_pi(m68000_base_device* mc68kcpu)
-{
- UINT32 src = OPER_AY_PI_8(mc68kcpu);
- UINT32 dst = MASK_OUT_ABOVE_8(DX(mc68kcpu));
- UINT32 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);
-}
-
-
-void m68000_base_device_ops::m68k_op_cmp_8_pi7(m68000_base_device* mc68kcpu)
-{
- UINT32 src = OPER_A7_PI_8(mc68kcpu);
- UINT32 dst = MASK_OUT_ABOVE_8(DX(mc68kcpu));
- UINT32 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);
-}
-
-
-void m68000_base_device_ops::m68k_op_cmp_8_pd(m68000_base_device* mc68kcpu)
-{
- UINT32 src = OPER_AY_PD_8(mc68kcpu);
- UINT32 dst = MASK_OUT_ABOVE_8(DX(mc68kcpu));
- UINT32 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);
-}
-
-
-void m68000_base_device_ops::m68k_op_cmp_8_pd7(m68000_base_device* mc68kcpu)
-{
- UINT32 src = OPER_A7_PD_8(mc68kcpu);
- UINT32 dst = MASK_OUT_ABOVE_8(DX(mc68kcpu));
- UINT32 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);
-}
-
-
-void m68000_base_device_ops::m68k_op_cmp_8_di(m68000_base_device* mc68kcpu)
-{
- UINT32 src = OPER_AY_DI_8(mc68kcpu);
- UINT32 dst = MASK_OUT_ABOVE_8(DX(mc68kcpu));
- UINT32 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);
-}
-
-
-void m68000_base_device_ops::m68k_op_cmp_8_ix(m68000_base_device* mc68kcpu)
-{
- UINT32 src = OPER_AY_IX_8(mc68kcpu);
- UINT32 dst = MASK_OUT_ABOVE_8(DX(mc68kcpu));
- UINT32 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);
-}
-
-
-void m68000_base_device_ops::m68k_op_cmp_8_aw(m68000_base_device* mc68kcpu)
-{
- UINT32 src = OPER_AW_8(mc68kcpu);
- UINT32 dst = MASK_OUT_ABOVE_8(DX(mc68kcpu));
- UINT32 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);
-}
-
-
-void m68000_base_device_ops::m68k_op_cmp_8_al(m68000_base_device* mc68kcpu)
-{
- UINT32 src = OPER_AL_8(mc68kcpu);
- UINT32 dst = MASK_OUT_ABOVE_8(DX(mc68kcpu));
- UINT32 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);
-}
-
-
-void m68000_base_device_ops::m68k_op_cmp_8_pcdi(m68000_base_device* mc68kcpu)
-{
- UINT32 src = OPER_PCDI_8(mc68kcpu);
- UINT32 dst = MASK_OUT_ABOVE_8(DX(mc68kcpu));
- UINT32 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);
-}
-
-
-void m68000_base_device_ops::m68k_op_cmp_8_pcix(m68000_base_device* mc68kcpu)
-{
- UINT32 src = OPER_PCIX_8(mc68kcpu);
- UINT32 dst = MASK_OUT_ABOVE_8(DX(mc68kcpu));
- UINT32 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);
-}
-
-
-void m68000_base_device_ops::m68k_op_cmp_8_i(m68000_base_device* mc68kcpu)
-{
- UINT32 src = OPER_I_8(mc68kcpu);
- UINT32 dst = MASK_OUT_ABOVE_8(DX(mc68kcpu));
- UINT32 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);
-}
-
-
-void m68000_base_device_ops::m68k_op_cmp_16_d(m68000_base_device* mc68kcpu)
-{
- UINT32 src = MASK_OUT_ABOVE_16(DY(mc68kcpu));
- UINT32 dst = MASK_OUT_ABOVE_16(DX(mc68kcpu));
- UINT32 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);
-}
-
-
-void m68000_base_device_ops::m68k_op_cmp_16_a(m68000_base_device* mc68kcpu)
-{
- UINT32 src = MASK_OUT_ABOVE_16(AY(mc68kcpu));
- UINT32 dst = MASK_OUT_ABOVE_16(DX(mc68kcpu));
- UINT32 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);
-}
-
-
-void m68000_base_device_ops::m68k_op_cmp_16_ai(m68000_base_device* mc68kcpu)
-{
- UINT32 src = OPER_AY_AI_16(mc68kcpu);
- UINT32 dst = MASK_OUT_ABOVE_16(DX(mc68kcpu));
- UINT32 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);
-}
-
-
-void m68000_base_device_ops::m68k_op_cmp_16_pi(m68000_base_device* mc68kcpu)
-{
- UINT32 src = OPER_AY_PI_16(mc68kcpu);
- UINT32 dst = MASK_OUT_ABOVE_16(DX(mc68kcpu));
- UINT32 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);
-}
-
-
-void m68000_base_device_ops::m68k_op_cmp_16_pd(m68000_base_device* mc68kcpu)
-{
- UINT32 src = OPER_AY_PD_16(mc68kcpu);
- UINT32 dst = MASK_OUT_ABOVE_16(DX(mc68kcpu));
- UINT32 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);
-}
-
-
-void m68000_base_device_ops::m68k_op_cmp_16_di(m68000_base_device* mc68kcpu)
-{
- UINT32 src = OPER_AY_DI_16(mc68kcpu);
- UINT32 dst = MASK_OUT_ABOVE_16(DX(mc68kcpu));
- UINT32 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);
-}
-
-
-void m68000_base_device_ops::m68k_op_cmp_16_ix(m68000_base_device* mc68kcpu)
-{
- UINT32 src = OPER_AY_IX_16(mc68kcpu);
- UINT32 dst = MASK_OUT_ABOVE_16(DX(mc68kcpu));
- UINT32 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);
-}
-
-
-void m68000_base_device_ops::m68k_op_cmp_16_aw(m68000_base_device* mc68kcpu)
-{
- UINT32 src = OPER_AW_16(mc68kcpu);
- UINT32 dst = MASK_OUT_ABOVE_16(DX(mc68kcpu));
- UINT32 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);
-}
-
-
-void m68000_base_device_ops::m68k_op_cmp_16_al(m68000_base_device* mc68kcpu)
-{
- UINT32 src = OPER_AL_16(mc68kcpu);
- UINT32 dst = MASK_OUT_ABOVE_16(DX(mc68kcpu));
- UINT32 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);
-}
-
-
-void m68000_base_device_ops::m68k_op_cmp_16_pcdi(m68000_base_device* mc68kcpu)
-{
- UINT32 src = OPER_PCDI_16(mc68kcpu);
- UINT32 dst = MASK_OUT_ABOVE_16(DX(mc68kcpu));
- UINT32 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);
-}
-
-
-void m68000_base_device_ops::m68k_op_cmp_16_pcix(m68000_base_device* mc68kcpu)
-{
- UINT32 src = OPER_PCIX_16(mc68kcpu);
- UINT32 dst = MASK_OUT_ABOVE_16(DX(mc68kcpu));
- UINT32 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);
-}
-
-
-void m68000_base_device_ops::m68k_op_cmp_16_i(m68000_base_device* mc68kcpu)
-{
- UINT32 src = OPER_I_16(mc68kcpu);
- UINT32 dst = MASK_OUT_ABOVE_16(DX(mc68kcpu));
- UINT32 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);
-}
-
-
-void m68000_base_device_ops::m68k_op_cmp_32_d(m68000_base_device* mc68kcpu)
-{
- UINT32 src = DY(mc68kcpu);
- UINT32 dst = DX(mc68kcpu);
- UINT32 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);
-}
-
-
-void m68000_base_device_ops::m68k_op_cmp_32_a(m68000_base_device* mc68kcpu)
-{
- UINT32 src = AY(mc68kcpu);
- UINT32 dst = DX(mc68kcpu);
- UINT32 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);
-}
-
-
-void m68000_base_device_ops::m68k_op_cmp_32_ai(m68000_base_device* mc68kcpu)
-{
- UINT32 src = OPER_AY_AI_32(mc68kcpu);
- UINT32 dst = DX(mc68kcpu);
- UINT32 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);
-}
-
-
-void m68000_base_device_ops::m68k_op_cmp_32_pi(m68000_base_device* mc68kcpu)
-{
- UINT32 src = OPER_AY_PI_32(mc68kcpu);
- UINT32 dst = DX(mc68kcpu);
- UINT32 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);
-}
-
-
-void m68000_base_device_ops::m68k_op_cmp_32_pd(m68000_base_device* mc68kcpu)
-{
- UINT32 src = OPER_AY_PD_32(mc68kcpu);
- UINT32 dst = DX(mc68kcpu);
- UINT32 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);
-}
-
-
-void m68000_base_device_ops::m68k_op_cmp_32_di(m68000_base_device* mc68kcpu)
-{
- UINT32 src = OPER_AY_DI_32(mc68kcpu);
- UINT32 dst = DX(mc68kcpu);
- UINT32 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);
-}
-
-
-void m68000_base_device_ops::m68k_op_cmp_32_ix(m68000_base_device* mc68kcpu)
-{
- UINT32 src = OPER_AY_IX_32(mc68kcpu);
- UINT32 dst = DX(mc68kcpu);
- UINT32 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);
-}
-
-
-void m68000_base_device_ops::m68k_op_cmp_32_aw(m68000_base_device* mc68kcpu)
-{
- UINT32 src = OPER_AW_32(mc68kcpu);
- UINT32 dst = DX(mc68kcpu);
- UINT32 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);
-}
-
-
-void m68000_base_device_ops::m68k_op_cmp_32_al(m68000_base_device* mc68kcpu)
-{
- UINT32 src = OPER_AL_32(mc68kcpu);
- UINT32 dst = DX(mc68kcpu);
- UINT32 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);
-}
-
-
-void m68000_base_device_ops::m68k_op_cmp_32_pcdi(m68000_base_device* mc68kcpu)
-{
- UINT32 src = OPER_PCDI_32(mc68kcpu);
- UINT32 dst = DX(mc68kcpu);
- UINT32 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);
-}
-
-
-void m68000_base_device_ops::m68k_op_cmp_32_pcix(m68000_base_device* mc68kcpu)
-{
- UINT32 src = OPER_PCIX_32(mc68kcpu);
- UINT32 dst = DX(mc68kcpu);
- UINT32 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);
-}
-
-
-void m68000_base_device_ops::m68k_op_cmp_32_i(m68000_base_device* mc68kcpu)
-{
- UINT32 src = OPER_I_32(mc68kcpu);
- UINT32 dst = DX(mc68kcpu);
- UINT32 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);
-}
-
-
-void m68000_base_device_ops::m68k_op_cmpa_16_d(m68000_base_device* mc68kcpu)
-{
- UINT32 src = MAKE_INT_16(DY(mc68kcpu));
- UINT32 dst = AX(mc68kcpu);
- UINT32 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);
-}
-
-
-void m68000_base_device_ops::m68k_op_cmpa_16_a(m68000_base_device* mc68kcpu)
-{
- UINT32 src = MAKE_INT_16(AY(mc68kcpu));
- UINT32 dst = AX(mc68kcpu);
- UINT32 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);
-}
-
-
-void m68000_base_device_ops::m68k_op_cmpa_16_ai(m68000_base_device* mc68kcpu)
-{
- UINT32 src = MAKE_INT_16(OPER_AY_AI_16(mc68kcpu));
- UINT32 dst = AX(mc68kcpu);
- UINT32 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);
-}
-
-
-void m68000_base_device_ops::m68k_op_cmpa_16_pi(m68000_base_device* mc68kcpu)
-{
- UINT32 src = MAKE_INT_16(OPER_AY_PI_16(mc68kcpu));
- UINT32 dst = AX(mc68kcpu);
- UINT32 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);
-}
-
-
-void m68000_base_device_ops::m68k_op_cmpa_16_pd(m68000_base_device* mc68kcpu)
-{
- UINT32 src = MAKE_INT_16(OPER_AY_PD_16(mc68kcpu));
- UINT32 dst = AX(mc68kcpu);
- UINT32 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);
-}
-
-
-void m68000_base_device_ops::m68k_op_cmpa_16_di(m68000_base_device* mc68kcpu)
-{
- UINT32 src = MAKE_INT_16(OPER_AY_DI_16(mc68kcpu));
- UINT32 dst = AX(mc68kcpu);
- UINT32 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);
-}
-
-
-void m68000_base_device_ops::m68k_op_cmpa_16_ix(m68000_base_device* mc68kcpu)
-{
- UINT32 src = MAKE_INT_16(OPER_AY_IX_16(mc68kcpu));
- UINT32 dst = AX(mc68kcpu);
- UINT32 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);
-}
-
-
-void m68000_base_device_ops::m68k_op_cmpa_16_aw(m68000_base_device* mc68kcpu)
-{
- UINT32 src = MAKE_INT_16(OPER_AW_16(mc68kcpu));
- UINT32 dst = AX(mc68kcpu);
- UINT32 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);
-}
-
-
-void m68000_base_device_ops::m68k_op_cmpa_16_al(m68000_base_device* mc68kcpu)
-{
- UINT32 src = MAKE_INT_16(OPER_AL_16(mc68kcpu));
- UINT32 dst = AX(mc68kcpu);
- UINT32 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);
-}
-
-
-void m68000_base_device_ops::m68k_op_cmpa_16_pcdi(m68000_base_device* mc68kcpu)
-{
- UINT32 src = MAKE_INT_16(OPER_PCDI_16(mc68kcpu));
- UINT32 dst = AX(mc68kcpu);
- UINT32 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);
-}
-
-
-void m68000_base_device_ops::m68k_op_cmpa_16_pcix(m68000_base_device* mc68kcpu)
-{
- UINT32 src = MAKE_INT_16(OPER_PCIX_16(mc68kcpu));
- UINT32 dst = AX(mc68kcpu);
- UINT32 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);
-}
-
-
-void m68000_base_device_ops::m68k_op_cmpa_16_i(m68000_base_device* mc68kcpu)
-{
- UINT32 src = MAKE_INT_16(OPER_I_16(mc68kcpu));
- UINT32 dst = AX(mc68kcpu);
- UINT32 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);
-}
-
-
-void m68000_base_device_ops::m68k_op_cmpa_32_d(m68000_base_device* mc68kcpu)
-{
- UINT32 src = DY(mc68kcpu);
- UINT32 dst = AX(mc68kcpu);
- UINT32 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);
-}
-
-
-void m68000_base_device_ops::m68k_op_cmpa_32_a(m68000_base_device* mc68kcpu)
-{
- UINT32 src = AY(mc68kcpu);
- UINT32 dst = AX(mc68kcpu);
- UINT32 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);
-}
-
-
-void m68000_base_device_ops::m68k_op_cmpa_32_ai(m68000_base_device* mc68kcpu)
-{
- UINT32 src = OPER_AY_AI_32(mc68kcpu);
- UINT32 dst = AX(mc68kcpu);
- UINT32 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);
-}
-
-
-void m68000_base_device_ops::m68k_op_cmpa_32_pi(m68000_base_device* mc68kcpu)
-{
- UINT32 src = OPER_AY_PI_32(mc68kcpu);
- UINT32 dst = AX(mc68kcpu);
- UINT32 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);
-}
-
-
-void m68000_base_device_ops::m68k_op_cmpa_32_pd(m68000_base_device* mc68kcpu)
-{
- UINT32 src = OPER_AY_PD_32(mc68kcpu);
- UINT32 dst = AX(mc68kcpu);
- UINT32 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);
-}
-
-
-void m68000_base_device_ops::m68k_op_cmpa_32_di(m68000_base_device* mc68kcpu)
-{
- UINT32 src = OPER_AY_DI_32(mc68kcpu);
- UINT32 dst = AX(mc68kcpu);
- UINT32 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);
-}
-
-
-void m68000_base_device_ops::m68k_op_cmpa_32_ix(m68000_base_device* mc68kcpu)
-{
- UINT32 src = OPER_AY_IX_32(mc68kcpu);
- UINT32 dst = AX(mc68kcpu);
- UINT32 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);
-}
-
-
-void m68000_base_device_ops::m68k_op_cmpa_32_aw(m68000_base_device* mc68kcpu)
-{
- UINT32 src = OPER_AW_32(mc68kcpu);
- UINT32 dst = AX(mc68kcpu);
- UINT32 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);
-}
-
-
-void m68000_base_device_ops::m68k_op_cmpa_32_al(m68000_base_device* mc68kcpu)
-{
- UINT32 src = OPER_AL_32(mc68kcpu);
- UINT32 dst = AX(mc68kcpu);
- UINT32 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);
-}
-
-
-void m68000_base_device_ops::m68k_op_cmpa_32_pcdi(m68000_base_device* mc68kcpu)
-{
- UINT32 src = OPER_PCDI_32(mc68kcpu);
- UINT32 dst = AX(mc68kcpu);
- UINT32 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);
-}
-
-
-void m68000_base_device_ops::m68k_op_cmpa_32_pcix(m68000_base_device* mc68kcpu)
-{
- UINT32 src = OPER_PCIX_32(mc68kcpu);
- UINT32 dst = AX(mc68kcpu);
- UINT32 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);
-}
-
-
-void m68000_base_device_ops::m68k_op_cmpa_32_i(m68000_base_device* mc68kcpu)
-{
- UINT32 src = OPER_I_32(mc68kcpu);
- UINT32 dst = AX(mc68kcpu);
- UINT32 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);
-}
-
-
-void m68000_base_device_ops::m68k_op_cmpi_8_d(m68000_base_device* mc68kcpu)
-{
- UINT32 src = OPER_I_8(mc68kcpu);
- UINT32 dst = MASK_OUT_ABOVE_8(DY(mc68kcpu));
- UINT32 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);
-}
-
-
-void m68000_base_device_ops::m68k_op_cmpi_8_ai(m68000_base_device* mc68kcpu)
-{
- UINT32 src = OPER_I_8(mc68kcpu);
- UINT32 dst = OPER_AY_AI_8(mc68kcpu);
- UINT32 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);
-}
-
-
-void m68000_base_device_ops::m68k_op_cmpi_8_pi(m68000_base_device* mc68kcpu)
-{
- UINT32 src = OPER_I_8(mc68kcpu);
- UINT32 dst = OPER_AY_PI_8(mc68kcpu);
- UINT32 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);
-}
-
-
-void m68000_base_device_ops::m68k_op_cmpi_8_pi7(m68000_base_device* mc68kcpu)
-{
- UINT32 src = OPER_I_8(mc68kcpu);
- UINT32 dst = OPER_A7_PI_8(mc68kcpu);
- UINT32 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);
-}
-
-
-void m68000_base_device_ops::m68k_op_cmpi_8_pd(m68000_base_device* mc68kcpu)
-{
- UINT32 src = OPER_I_8(mc68kcpu);
- UINT32 dst = OPER_AY_PD_8(mc68kcpu);
- UINT32 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);
-}
-
-
-void m68000_base_device_ops::m68k_op_cmpi_8_pd7(m68000_base_device* mc68kcpu)
-{
- UINT32 src = OPER_I_8(mc68kcpu);
- UINT32 dst = OPER_A7_PD_8(mc68kcpu);
- UINT32 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);
-}
-
-
-void m68000_base_device_ops::m68k_op_cmpi_8_di(m68000_base_device* mc68kcpu)
-{
- UINT32 src = OPER_I_8(mc68kcpu);
- UINT32 dst = OPER_AY_DI_8(mc68kcpu);
- UINT32 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);
-}
-
-
-void m68000_base_device_ops::m68k_op_cmpi_8_ix(m68000_base_device* mc68kcpu)
-{
- UINT32 src = OPER_I_8(mc68kcpu);
- UINT32 dst = OPER_AY_IX_8(mc68kcpu);
- UINT32 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);
-}
-
-
-void m68000_base_device_ops::m68k_op_cmpi_8_aw(m68000_base_device* mc68kcpu)
-{
- UINT32 src = OPER_I_8(mc68kcpu);
- UINT32 dst = OPER_AW_8(mc68kcpu);
- UINT32 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);
-}
-
-
-void m68000_base_device_ops::m68k_op_cmpi_8_al(m68000_base_device* mc68kcpu)
-{
- UINT32 src = OPER_I_8(mc68kcpu);
- UINT32 dst = OPER_AL_8(mc68kcpu);
- UINT32 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);
-}
-
-
-void m68000_base_device_ops::m68k_op_cmpi_8_pcdi(m68000_base_device* mc68kcpu)
-{
- if(CPU_TYPE_IS_EC020_PLUS((mc68kcpu)->cpu_type))
- {
- UINT32 src = OPER_I_8(mc68kcpu);
- UINT32 dst = OPER_PCDI_8(mc68kcpu);
- UINT32 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);
- return;
- }
- m68ki_exception_illegal(mc68kcpu);
-}
-
-
-void m68000_base_device_ops::m68k_op_cmpi_8_pcix(m68000_base_device* mc68kcpu)
-{
- if(CPU_TYPE_IS_EC020_PLUS((mc68kcpu)->cpu_type))
- {
- UINT32 src = OPER_I_8(mc68kcpu);
- UINT32 dst = OPER_PCIX_8(mc68kcpu);
- UINT32 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);
- return;
- }
- m68ki_exception_illegal(mc68kcpu);
-}
-
-
-void m68000_base_device_ops::m68k_op_cmpi_16_d(m68000_base_device* mc68kcpu)
-{
- UINT32 src = OPER_I_16(mc68kcpu);
- UINT32 dst = MASK_OUT_ABOVE_16(DY(mc68kcpu));
- UINT32 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);
-}
-
-
-void m68000_base_device_ops::m68k_op_cmpi_16_ai(m68000_base_device* mc68kcpu)
-{
- UINT32 src = OPER_I_16(mc68kcpu);
- UINT32 dst = OPER_AY_AI_16(mc68kcpu);
- UINT32 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);
-}
-
-
-void m68000_base_device_ops::m68k_op_cmpi_16_pi(m68000_base_device* mc68kcpu)
-{
- UINT32 src = OPER_I_16(mc68kcpu);
- UINT32 dst = OPER_AY_PI_16(mc68kcpu);
- UINT32 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);
-}
-
-
-void m68000_base_device_ops::m68k_op_cmpi_16_pd(m68000_base_device* mc68kcpu)
-{
- UINT32 src = OPER_I_16(mc68kcpu);
- UINT32 dst = OPER_AY_PD_16(mc68kcpu);
- UINT32 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);
-}
-
-
-void m68000_base_device_ops::m68k_op_cmpi_16_di(m68000_base_device* mc68kcpu)
-{
- UINT32 src = OPER_I_16(mc68kcpu);
- UINT32 dst = OPER_AY_DI_16(mc68kcpu);
- UINT32 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);
-}
-
-
-void m68000_base_device_ops::m68k_op_cmpi_16_ix(m68000_base_device* mc68kcpu)
-{
- UINT32 src = OPER_I_16(mc68kcpu);
- UINT32 dst = OPER_AY_IX_16(mc68kcpu);
- UINT32 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);
-}
-
-
-void m68000_base_device_ops::m68k_op_cmpi_16_aw(m68000_base_device* mc68kcpu)
-{
- UINT32 src = OPER_I_16(mc68kcpu);
- UINT32 dst = OPER_AW_16(mc68kcpu);
- UINT32 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);
-}
-
-
-void m68000_base_device_ops::m68k_op_cmpi_16_al(m68000_base_device* mc68kcpu)
-{
- UINT32 src = OPER_I_16(mc68kcpu);
- UINT32 dst = OPER_AL_16(mc68kcpu);
- UINT32 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);
-}
-
-
-void m68000_base_device_ops::m68k_op_cmpi_16_pcdi(m68000_base_device* mc68kcpu)
-{
- if(CPU_TYPE_IS_EC020_PLUS((mc68kcpu)->cpu_type))
- {
- UINT32 src = OPER_I_16(mc68kcpu);
- UINT32 dst = OPER_PCDI_16(mc68kcpu);
- UINT32 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);
- return;
- }
- m68ki_exception_illegal(mc68kcpu);
-}
-
-
-void m68000_base_device_ops::m68k_op_cmpi_16_pcix(m68000_base_device* mc68kcpu)
-{
- if(CPU_TYPE_IS_EC020_PLUS((mc68kcpu)->cpu_type))
- {
- UINT32 src = OPER_I_16(mc68kcpu);
- UINT32 dst = OPER_PCIX_16(mc68kcpu);
- UINT32 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);
- return;
- }
- m68ki_exception_illegal(mc68kcpu);
-}
-
-
-void m68000_base_device_ops::m68k_op_cmpi_32_d(m68000_base_device* mc68kcpu)
-{
- UINT32 src = OPER_I_32(mc68kcpu);
- UINT32 dst = DY(mc68kcpu);
- UINT32 res = dst - src;
-
- if (!(mc68kcpu)->cmpild_instr_callback.isnull())
- ((mc68kcpu)->cmpild_instr_callback)(*(mc68kcpu)->program, (mc68kcpu)->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);
-}
-
-
-void m68000_base_device_ops::m68k_op_cmpi_32_ai(m68000_base_device* mc68kcpu)
-{
- UINT32 src = OPER_I_32(mc68kcpu);
- UINT32 dst = OPER_AY_AI_32(mc68kcpu);
- UINT32 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);
-}
-
-
-void m68000_base_device_ops::m68k_op_cmpi_32_pi(m68000_base_device* mc68kcpu)
-{
- UINT32 src = OPER_I_32(mc68kcpu);
- UINT32 dst = OPER_AY_PI_32(mc68kcpu);
- UINT32 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);
-}
-
-
-void m68000_base_device_ops::m68k_op_cmpi_32_pd(m68000_base_device* mc68kcpu)
-{
- UINT32 src = OPER_I_32(mc68kcpu);
- UINT32 dst = OPER_AY_PD_32(mc68kcpu);
- UINT32 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);
-}
-
-
-void m68000_base_device_ops::m68k_op_cmpi_32_di(m68000_base_device* mc68kcpu)
-{
- UINT32 src = OPER_I_32(mc68kcpu);
- UINT32 dst = OPER_AY_DI_32(mc68kcpu);
- UINT32 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);
-}
-
-
-void m68000_base_device_ops::m68k_op_cmpi_32_ix(m68000_base_device* mc68kcpu)
-{
- UINT32 src = OPER_I_32(mc68kcpu);
- UINT32 dst = OPER_AY_IX_32(mc68kcpu);
- UINT32 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);
-}
-
-
-void m68000_base_device_ops::m68k_op_cmpi_32_aw(m68000_base_device* mc68kcpu)
-{
- UINT32 src = OPER_I_32(mc68kcpu);
- UINT32 dst = OPER_AW_32(mc68kcpu);
- UINT32 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);
-}
-
-
-void m68000_base_device_ops::m68k_op_cmpi_32_al(m68000_base_device* mc68kcpu)
-{
- UINT32 src = OPER_I_32(mc68kcpu);
- UINT32 dst = OPER_AL_32(mc68kcpu);
- UINT32 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);
-}
-
-
-void m68000_base_device_ops::m68k_op_cmpi_32_pcdi(m68000_base_device* mc68kcpu)
-{
- if(CPU_TYPE_IS_EC020_PLUS((mc68kcpu)->cpu_type))
- {
- UINT32 src = OPER_I_32(mc68kcpu);
- UINT32 dst = OPER_PCDI_32(mc68kcpu);
- UINT32 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);
- return;
- }
- m68ki_exception_illegal(mc68kcpu);
-}
-
-
-void m68000_base_device_ops::m68k_op_cmpi_32_pcix(m68000_base_device* mc68kcpu)
-{
- if(CPU_TYPE_IS_EC020_PLUS((mc68kcpu)->cpu_type))
- {
- UINT32 src = OPER_I_32(mc68kcpu);
- UINT32 dst = OPER_PCIX_32(mc68kcpu);
- UINT32 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);
- return;
- }
- m68ki_exception_illegal(mc68kcpu);
-}
-
-
-void m68000_base_device_ops::m68k_op_cmpm_8_ax7(m68000_base_device* mc68kcpu)
-{
- UINT32 src = OPER_AY_PI_8(mc68kcpu);
- UINT32 dst = OPER_A7_PI_8(mc68kcpu);
- UINT32 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);
-}
-
-
-void m68000_base_device_ops::m68k_op_cmpm_8_ay7(m68000_base_device* mc68kcpu)
-{
- UINT32 src = OPER_A7_PI_8(mc68kcpu);
- UINT32 dst = OPER_AX_PI_8(mc68kcpu);
- UINT32 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);
-}
-
-
-void m68000_base_device_ops::m68k_op_cmpm_8_axy7(m68000_base_device* mc68kcpu)
-{
- UINT32 src = OPER_A7_PI_8(mc68kcpu);
- UINT32 dst = OPER_A7_PI_8(mc68kcpu);
- UINT32 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);
-}
-
-
-void m68000_base_device_ops::m68k_op_cmpm_8(m68000_base_device* mc68kcpu)
-{
- UINT32 src = OPER_AY_PI_8(mc68kcpu);
- UINT32 dst = OPER_AX_PI_8(mc68kcpu);
- UINT32 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);
-}
-
-
-void m68000_base_device_ops::m68k_op_cmpm_16(m68000_base_device* mc68kcpu)
-{
- UINT32 src = OPER_AY_PI_16(mc68kcpu);
- UINT32 dst = OPER_AX_PI_16(mc68kcpu);
- UINT32 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);
-}
-
-
-void m68000_base_device_ops::m68k_op_cmpm_32(m68000_base_device* mc68kcpu)
-{
- UINT32 src = OPER_AY_PI_32(mc68kcpu);
- UINT32 dst = OPER_AX_PI_32(mc68kcpu);
- UINT32 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);
-}
-
-
-void m68000_base_device_ops::m68k_op_cpbcc_32(m68000_base_device* mc68kcpu)
-{
- if(CPU_TYPE_IS_EC020_PLUS((mc68kcpu)->cpu_type))
- {
- mc68kcpu->logerror("%s at %08x: called unimplemented instruction %04x (cpbcc)\n",
- (mc68kcpu)->tag(), REG_PC(mc68kcpu) - 2, (mc68kcpu)->ir);
- return;
- }
- m68ki_exception_1111(mc68kcpu);
-}
-
-
-void m68000_base_device_ops::m68k_op_cpdbcc_32(m68000_base_device* mc68kcpu)
-{
- if(CPU_TYPE_IS_EC020_PLUS((mc68kcpu)->cpu_type))
- {
- mc68kcpu->logerror("%s at %08x: called unimplemented instruction %04x (cpdbcc)\n",
- (mc68kcpu)->tag(), REG_PC(mc68kcpu) - 2, (mc68kcpu)->ir);
- return;
- }
- m68ki_exception_1111(mc68kcpu);
-}
-
-
-void m68000_base_device_ops::m68k_op_cpgen_32(m68000_base_device* mc68kcpu)
-{
- if(CPU_TYPE_IS_EC020_PLUS((mc68kcpu)->cpu_type) && (mc68kcpu->has_fpu || mc68kcpu->has_pmmu))
- {
- mc68kcpu->logerror("%s at %08x: called unimplemented instruction %04x (cpgen)\n",
- (mc68kcpu)->tag(), REG_PC(mc68kcpu) - 2, (mc68kcpu)->ir);
- return;
- }
- m68ki_exception_1111(mc68kcpu);
-}
-
-
-void m68000_base_device_ops::m68k_op_cpscc_32(m68000_base_device* mc68kcpu)
-{
- if(CPU_TYPE_IS_EC020_PLUS((mc68kcpu)->cpu_type))
- {
- mc68kcpu->logerror("%s at %08x: called unimplemented instruction %04x (cpscc)\n",
- (mc68kcpu)->tag(), REG_PC(mc68kcpu) - 2, (mc68kcpu)->ir);
- return;
- }
- m68ki_exception_1111(mc68kcpu);
-}
-
-
-void m68000_base_device_ops::m68k_op_cptrapcc_32(m68000_base_device* mc68kcpu)
-{
- if(CPU_TYPE_IS_EC020_PLUS((mc68kcpu)->cpu_type))
- {
- mc68kcpu->logerror("%s at %08x: called unimplemented instruction %04x (cptrapcc)\n",
- (mc68kcpu)->tag(), REG_PC(mc68kcpu) - 2, (mc68kcpu)->ir);
- return;
- }
- m68ki_exception_1111(mc68kcpu);
-}
-
-
-void m68000_base_device_ops::m68k_op_ftrapcc_32(m68000_base_device* mc68kcpu)
-{
- if((mc68kcpu)->has_fpu)
- {
- m68881_ftrap(mc68kcpu);
- return;
- }
- m68ki_exception_1111(mc68kcpu);
-}
-
-
-void m68000_base_device_ops::m68k_op_dbt_16(m68000_base_device* mc68kcpu)
-{
- REG_PC(mc68kcpu) += 2;
-}
-
-
-void m68000_base_device_ops::m68k_op_dbf_16(m68000_base_device* mc68kcpu)
-{
- UINT32* r_dst = &DY(mc68kcpu);
- UINT32 res = MASK_OUT_ABOVE_16(*r_dst - 1);
-
- *r_dst = MASK_OUT_BELOW_16(*r_dst) | res;
- if(res != 0xffff)
- {
- UINT32 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;
- return;
- }
- REG_PC(mc68kcpu) += 2;
- (mc68kcpu)->remaining_cycles -= (mc68kcpu)->cyc_dbcc_f_exp;
-}
-
-
-void m68000_base_device_ops::m68k_op_dbhi_16(m68000_base_device* mc68kcpu)
-{
- if(COND_NOT_HI(mc68kcpu))
- {
- UINT32* r_dst = &DY(mc68kcpu);
- UINT32 res = MASK_OUT_ABOVE_16(*r_dst - 1);
-
- *r_dst = MASK_OUT_BELOW_16(*r_dst) | res;
- if(res != 0xffff)
- {
- UINT32 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;
- return;
- }
- REG_PC(mc68kcpu) += 2;
- (mc68kcpu)->remaining_cycles -= (mc68kcpu)->cyc_dbcc_f_exp;
- return;
- }
- REG_PC(mc68kcpu) += 2;
-}
-
-
-void m68000_base_device_ops::m68k_op_dbls_16(m68000_base_device* mc68kcpu)
-{
- if(COND_NOT_LS(mc68kcpu))
- {
- UINT32* r_dst = &DY(mc68kcpu);
- UINT32 res = MASK_OUT_ABOVE_16(*r_dst - 1);
-
- *r_dst = MASK_OUT_BELOW_16(*r_dst) | res;
- if(res != 0xffff)
- {
- UINT32 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;
- return;
- }
- REG_PC(mc68kcpu) += 2;
- (mc68kcpu)->remaining_cycles -= (mc68kcpu)->cyc_dbcc_f_exp;
- return;
- }
- REG_PC(mc68kcpu) += 2;
-}
-
-
-void m68000_base_device_ops::m68k_op_dbcc_16(m68000_base_device* mc68kcpu)
-{
- if(COND_NOT_CC(mc68kcpu))
- {
- UINT32* r_dst = &DY(mc68kcpu);
- UINT32 res = MASK_OUT_ABOVE_16(*r_dst - 1);
-
- *r_dst = MASK_OUT_BELOW_16(*r_dst) | res;
- if(res != 0xffff)
- {
- UINT32 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;
- return;
- }
- REG_PC(mc68kcpu) += 2;
- (mc68kcpu)->remaining_cycles -= (mc68kcpu)->cyc_dbcc_f_exp;
- return;
- }
- REG_PC(mc68kcpu) += 2;
-}
-
-
-void m68000_base_device_ops::m68k_op_dbcs_16(m68000_base_device* mc68kcpu)
-{
- if(COND_NOT_CS(mc68kcpu))
- {
- UINT32* r_dst = &DY(mc68kcpu);
- UINT32 res = MASK_OUT_ABOVE_16(*r_dst - 1);
-
- *r_dst = MASK_OUT_BELOW_16(*r_dst) | res;
- if(res != 0xffff)
- {
- UINT32 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;
- return;
- }
- REG_PC(mc68kcpu) += 2;
- (mc68kcpu)->remaining_cycles -= (mc68kcpu)->cyc_dbcc_f_exp;
- return;
- }
- REG_PC(mc68kcpu) += 2;
-}
-
-
-void m68000_base_device_ops::m68k_op_dbne_16(m68000_base_device* mc68kcpu)
-{
- if(COND_NOT_NE(mc68kcpu))
- {
- UINT32* r_dst = &DY(mc68kcpu);
- UINT32 res = MASK_OUT_ABOVE_16(*r_dst - 1);
-
- *r_dst = MASK_OUT_BELOW_16(*r_dst) | res;
- if(res != 0xffff)
- {
- UINT32 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;
- return;
- }
- REG_PC(mc68kcpu) += 2;
- (mc68kcpu)->remaining_cycles -= (mc68kcpu)->cyc_dbcc_f_exp;
- return;
- }
- REG_PC(mc68kcpu) += 2;
-}
-
-
-void m68000_base_device_ops::m68k_op_dbeq_16(m68000_base_device* mc68kcpu)
-{
- if(COND_NOT_EQ(mc68kcpu))
- {
- UINT32* r_dst = &DY(mc68kcpu);
- UINT32 res = MASK_OUT_ABOVE_16(*r_dst - 1);
-
- *r_dst = MASK_OUT_BELOW_16(*r_dst) | res;
- if(res != 0xffff)
- {
- UINT32 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;
- return;
- }
- REG_PC(mc68kcpu) += 2;
- (mc68kcpu)->remaining_cycles -= (mc68kcpu)->cyc_dbcc_f_exp;
- return;
- }
- REG_PC(mc68kcpu) += 2;
-}
-
-
-void m68000_base_device_ops::m68k_op_dbvc_16(m68000_base_device* mc68kcpu)
-{
- if(COND_NOT_VC(mc68kcpu))
- {
- UINT32* r_dst = &DY(mc68kcpu);
- UINT32 res = MASK_OUT_ABOVE_16(*r_dst - 1);
-
- *r_dst = MASK_OUT_BELOW_16(*r_dst) | res;
- if(res != 0xffff)
- {
- UINT32 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;
- return;
- }
- REG_PC(mc68kcpu) += 2;
- (mc68kcpu)->remaining_cycles -= (mc68kcpu)->cyc_dbcc_f_exp;
- return;
- }
- REG_PC(mc68kcpu) += 2;
-}
-
-
-void m68000_base_device_ops::m68k_op_dbvs_16(m68000_base_device* mc68kcpu)
-{
- if(COND_NOT_VS(mc68kcpu))
- {
- UINT32* r_dst = &DY(mc68kcpu);
- UINT32 res = MASK_OUT_ABOVE_16(*r_dst - 1);
-
- *r_dst = MASK_OUT_BELOW_16(*r_dst) | res;
- if(res != 0xffff)
- {
- UINT32 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;
- return;
- }
- REG_PC(mc68kcpu) += 2;
- (mc68kcpu)->remaining_cycles -= (mc68kcpu)->cyc_dbcc_f_exp;
- return;
- }
- REG_PC(mc68kcpu) += 2;
-}
-
-
-void m68000_base_device_ops::m68k_op_dbpl_16(m68000_base_device* mc68kcpu)
-{
- if(COND_NOT_PL(mc68kcpu))
- {
- UINT32* r_dst = &DY(mc68kcpu);
- UINT32 res = MASK_OUT_ABOVE_16(*r_dst - 1);
-
- *r_dst = MASK_OUT_BELOW_16(*r_dst) | res;
- if(res != 0xffff)
- {
- UINT32 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;
- return;
- }
- REG_PC(mc68kcpu) += 2;
- (mc68kcpu)->remaining_cycles -= (mc68kcpu)->cyc_dbcc_f_exp;
- return;
- }
- REG_PC(mc68kcpu) += 2;
-}
-
-
-void m68000_base_device_ops::m68k_op_dbmi_16(m68000_base_device* mc68kcpu)
-{
- if(COND_NOT_MI(mc68kcpu))
- {
- UINT32* r_dst = &DY(mc68kcpu);
- UINT32 res = MASK_OUT_ABOVE_16(*r_dst - 1);
-
- *r_dst = MASK_OUT_BELOW_16(*r_dst) | res;
- if(res != 0xffff)
- {
- UINT32 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;
- return;
- }
- REG_PC(mc68kcpu) += 2;
- (mc68kcpu)->remaining_cycles -= (mc68kcpu)->cyc_dbcc_f_exp;
- return;
- }
- REG_PC(mc68kcpu) += 2;
-}
-
-
-void m68000_base_device_ops::m68k_op_dbge_16(m68000_base_device* mc68kcpu)
-{
- if(COND_NOT_GE(mc68kcpu))
- {
- UINT32* r_dst = &DY(mc68kcpu);
- UINT32 res = MASK_OUT_ABOVE_16(*r_dst - 1);
-
- *r_dst = MASK_OUT_BELOW_16(*r_dst) | res;
- if(res != 0xffff)
- {
- UINT32 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;
- return;
- }
- REG_PC(mc68kcpu) += 2;
- (mc68kcpu)->remaining_cycles -= (mc68kcpu)->cyc_dbcc_f_exp;
- return;
- }
- REG_PC(mc68kcpu) += 2;
-}
-
-
-void m68000_base_device_ops::m68k_op_dblt_16(m68000_base_device* mc68kcpu)
-{
- if(COND_NOT_LT(mc68kcpu))
- {
- UINT32* r_dst = &DY(mc68kcpu);
- UINT32 res = MASK_OUT_ABOVE_16(*r_dst - 1);
-
- *r_dst = MASK_OUT_BELOW_16(*r_dst) | res;
- if(res != 0xffff)
- {
- UINT32 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;
- return;
- }
- REG_PC(mc68kcpu) += 2;
- (mc68kcpu)->remaining_cycles -= (mc68kcpu)->cyc_dbcc_f_exp;
- return;
- }
- REG_PC(mc68kcpu) += 2;
-}
-
-
-void m68000_base_device_ops::m68k_op_dbgt_16(m68000_base_device* mc68kcpu)
-{
- if(COND_NOT_GT(mc68kcpu))
- {
- UINT32* r_dst = &DY(mc68kcpu);
- UINT32 res = MASK_OUT_ABOVE_16(*r_dst - 1);
-
- *r_dst = MASK_OUT_BELOW_16(*r_dst) | res;
- if(res != 0xffff)
- {
- UINT32 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;
- return;
- }
- REG_PC(mc68kcpu) += 2;
- (mc68kcpu)->remaining_cycles -= (mc68kcpu)->cyc_dbcc_f_exp;
- return;
- }
- REG_PC(mc68kcpu) += 2;
-}
-
-
-void m68000_base_device_ops::m68k_op_dble_16(m68000_base_device* mc68kcpu)
-{
- if(COND_NOT_LE(mc68kcpu))
- {
- UINT32* r_dst = &DY(mc68kcpu);
- UINT32 res = MASK_OUT_ABOVE_16(*r_dst - 1);
-
- *r_dst = MASK_OUT_BELOW_16(*r_dst) | res;
- if(res != 0xffff)
- {
- UINT32 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;
- return;
- }
- REG_PC(mc68kcpu) += 2;
- (mc68kcpu)->remaining_cycles -= (mc68kcpu)->cyc_dbcc_f_exp;
- return;
- }
- REG_PC(mc68kcpu) += 2;
-}
-
-
-void m68000_base_device_ops::m68k_op_divs_16_d(m68000_base_device* mc68kcpu)
-{
- UINT32* r_dst = &DX(mc68kcpu);
- INT32 src = MAKE_INT_16(DY(mc68kcpu));
- INT32 quotient;
- INT32 remainder;
-
- if(src != 0)
- {
- if((UINT32)*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;
- *r_dst = 0;
- return;
- }
-
- quotient = MAKE_INT_32(*r_dst) / src;
- remainder = MAKE_INT_32(*r_dst) % src;
-
- 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;
- *r_dst = MASK_OUT_ABOVE_32(MASK_OUT_ABOVE_16(quotient) | (remainder << 16));
- return;
- }
- (mc68kcpu)->v_flag = VFLAG_SET;
- return;
- }
- m68ki_exception_trap((mc68kcpu), EXCEPTION_ZERO_DIVIDE);
-}
-
-
-void m68000_base_device_ops::m68k_op_divs_16_ai(m68000_base_device* mc68kcpu)
-{
- UINT32* r_dst = &DX(mc68kcpu);
- INT32 src = MAKE_INT_16(OPER_AY_AI_16(mc68kcpu));
- INT32 quotient;
- INT32 remainder;
-
- if(src != 0)
- {
- if((UINT32)*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;
- *r_dst = 0;
- return;
- }
-
- quotient = MAKE_INT_32(*r_dst) / src;
- remainder = MAKE_INT_32(*r_dst) % src;
-
- 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;
- *r_dst = MASK_OUT_ABOVE_32(MASK_OUT_ABOVE_16(quotient) | (remainder << 16));
- return;
- }
- (mc68kcpu)->v_flag = VFLAG_SET;
- return;
- }
- m68ki_exception_trap((mc68kcpu), EXCEPTION_ZERO_DIVIDE);
-}
-
-
-void m68000_base_device_ops::m68k_op_divs_16_pi(m68000_base_device* mc68kcpu)
-{
- UINT32* r_dst = &DX(mc68kcpu);
- INT32 src = MAKE_INT_16(OPER_AY_PI_16(mc68kcpu));
- INT32 quotient;
- INT32 remainder;
-
- if(src != 0)
- {
- if((UINT32)*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;
- *r_dst = 0;
- return;
- }
-
- quotient = MAKE_INT_32(*r_dst) / src;
- remainder = MAKE_INT_32(*r_dst) % src;
-
- 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;
- *r_dst = MASK_OUT_ABOVE_32(MASK_OUT_ABOVE_16(quotient) | (remainder << 16));
- return;
- }
- (mc68kcpu)->v_flag = VFLAG_SET;
- return;
- }
- m68ki_exception_trap((mc68kcpu), EXCEPTION_ZERO_DIVIDE);
-}
-
-
-void m68000_base_device_ops::m68k_op_divs_16_pd(m68000_base_device* mc68kcpu)
-{
- UINT32* r_dst = &DX(mc68kcpu);
- INT32 src = MAKE_INT_16(OPER_AY_PD_16(mc68kcpu));
- INT32 quotient;
- INT32 remainder;
-
- if(src != 0)
- {
- if((UINT32)*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;
- *r_dst = 0;
- return;
- }
-
- quotient = MAKE_INT_32(*r_dst) / src;
- remainder = MAKE_INT_32(*r_dst) % src;
-
- 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;
- *r_dst = MASK_OUT_ABOVE_32(MASK_OUT_ABOVE_16(quotient) | (remainder << 16));
- return;
- }
- (mc68kcpu)->v_flag = VFLAG_SET;
- return;
- }
- m68ki_exception_trap((mc68kcpu), EXCEPTION_ZERO_DIVIDE);
-}
-
-
-void m68000_base_device_ops::m68k_op_divs_16_di(m68000_base_device* mc68kcpu)
-{
- UINT32* r_dst = &DX(mc68kcpu);
- INT32 src = MAKE_INT_16(OPER_AY_DI_16(mc68kcpu));
- INT32 quotient;
- INT32 remainder;
-
- if(src != 0)
- {
- if((UINT32)*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;
- *r_dst = 0;
- return;
- }
-
- quotient = MAKE_INT_32(*r_dst) / src;
- remainder = MAKE_INT_32(*r_dst) % src;
-
- 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;
- *r_dst = MASK_OUT_ABOVE_32(MASK_OUT_ABOVE_16(quotient) | (remainder << 16));
- return;
- }
- (mc68kcpu)->v_flag = VFLAG_SET;
- return;
- }
- m68ki_exception_trap((mc68kcpu), EXCEPTION_ZERO_DIVIDE);
-}
-
-
-void m68000_base_device_ops::m68k_op_divs_16_ix(m68000_base_device* mc68kcpu)
-{
- UINT32* r_dst = &DX(mc68kcpu);
- INT32 src = MAKE_INT_16(OPER_AY_IX_16(mc68kcpu));
- INT32 quotient;
- INT32 remainder;
-
- if(src != 0)
- {
- if((UINT32)*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;
- *r_dst = 0;
- return;
- }
-
- quotient = MAKE_INT_32(*r_dst) / src;
- remainder = MAKE_INT_32(*r_dst) % src;
-
- 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;
- *r_dst = MASK_OUT_ABOVE_32(MASK_OUT_ABOVE_16(quotient) | (remainder << 16));
- return;
- }
- (mc68kcpu)->v_flag = VFLAG_SET;
- return;
- }
- m68ki_exception_trap((mc68kcpu), EXCEPTION_ZERO_DIVIDE);
-}
-
-
-void m68000_base_device_ops::m68k_op_divs_16_aw(m68000_base_device* mc68kcpu)
-{
- UINT32* r_dst = &DX(mc68kcpu);
- INT32 src = MAKE_INT_16(OPER_AW_16(mc68kcpu));
- INT32 quotient;
- INT32 remainder;
-
- if(src != 0)
- {
- if((UINT32)*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;
- *r_dst = 0;
- return;
- }
-
- quotient = MAKE_INT_32(*r_dst) / src;
- remainder = MAKE_INT_32(*r_dst) % src;
-
- 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;
- *r_dst = MASK_OUT_ABOVE_32(MASK_OUT_ABOVE_16(quotient) | (remainder << 16));
- return;
- }
- (mc68kcpu)->v_flag = VFLAG_SET;
- return;
- }
- m68ki_exception_trap((mc68kcpu), EXCEPTION_ZERO_DIVIDE);
-}
-
-
-void m68000_base_device_ops::m68k_op_divs_16_al(m68000_base_device* mc68kcpu)
-{
- UINT32* r_dst = &DX(mc68kcpu);
- INT32 src = MAKE_INT_16(OPER_AL_16(mc68kcpu));
- INT32 quotient;
- INT32 remainder;
-
- if(src != 0)
- {
- if((UINT32)*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;
- *r_dst = 0;
- return;
- }
-
- quotient = MAKE_INT_32(*r_dst) / src;
- remainder = MAKE_INT_32(*r_dst) % src;
-
- 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;
- *r_dst = MASK_OUT_ABOVE_32(MASK_OUT_ABOVE_16(quotient) | (remainder << 16));
- return;
- }
- (mc68kcpu)->v_flag = VFLAG_SET;
- return;
- }
- m68ki_exception_trap((mc68kcpu), EXCEPTION_ZERO_DIVIDE);
-}
-
-
-void m68000_base_device_ops::m68k_op_divs_16_pcdi(m68000_base_device* mc68kcpu)
-{
- UINT32* r_dst = &DX(mc68kcpu);
- INT32 src = MAKE_INT_16(OPER_PCDI_16(mc68kcpu));
- INT32 quotient;
- INT32 remainder;
-
- if(src != 0)
- {
- if((UINT32)*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;
- *r_dst = 0;
- return;
- }
-
- quotient = MAKE_INT_32(*r_dst) / src;
- remainder = MAKE_INT_32(*r_dst) % src;
-
- 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;
- *r_dst = MASK_OUT_ABOVE_32(MASK_OUT_ABOVE_16(quotient) | (remainder << 16));
- return;
- }
- (mc68kcpu)->v_flag = VFLAG_SET;
- return;
- }
- m68ki_exception_trap((mc68kcpu), EXCEPTION_ZERO_DIVIDE);
-}
-
-
-void m68000_base_device_ops::m68k_op_divs_16_pcix(m68000_base_device* mc68kcpu)
-{
- UINT32* r_dst = &DX(mc68kcpu);
- INT32 src = MAKE_INT_16(OPER_PCIX_16(mc68kcpu));
- INT32 quotient;
- INT32 remainder;
-
- if(src != 0)
- {
- if((UINT32)*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;
- *r_dst = 0;
- return;
- }
-
- quotient = MAKE_INT_32(*r_dst) / src;
- remainder = MAKE_INT_32(*r_dst) % src;
-
- 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;
- *r_dst = MASK_OUT_ABOVE_32(MASK_OUT_ABOVE_16(quotient) | (remainder << 16));
- return;
- }
- (mc68kcpu)->v_flag = VFLAG_SET;
- return;
- }
- m68ki_exception_trap((mc68kcpu), EXCEPTION_ZERO_DIVIDE);
-}
-
-
-void m68000_base_device_ops::m68k_op_divs_16_i(m68000_base_device* mc68kcpu)
-{
- UINT32* r_dst = &DX(mc68kcpu);
- INT32 src = MAKE_INT_16(OPER_I_16(mc68kcpu));
- INT32 quotient;
- INT32 remainder;
-
- if(src != 0)
- {
- if((UINT32)*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;
- *r_dst = 0;
- return;
- }
-
- quotient = MAKE_INT_32(*r_dst) / src;
- remainder = MAKE_INT_32(*r_dst) % src;
-
- 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;
- *r_dst = MASK_OUT_ABOVE_32(MASK_OUT_ABOVE_16(quotient) | (remainder << 16));
- return;
- }
- (mc68kcpu)->v_flag = VFLAG_SET;
- return;
- }
- m68ki_exception_trap((mc68kcpu), EXCEPTION_ZERO_DIVIDE);
-}
-
-
-void m68000_base_device_ops::m68k_op_divu_16_d(m68000_base_device* mc68kcpu)
-{
- UINT32* r_dst = &DX(mc68kcpu);
- UINT32 src = MASK_OUT_ABOVE_16(DY(mc68kcpu));
-
- if(src != 0)
- {
- UINT32 quotient = *r_dst / src;
- UINT32 remainder = *r_dst % src;
-
- if(quotient < 0x10000)
- {
- (mc68kcpu)->not_z_flag = quotient;
- (mc68kcpu)->n_flag = NFLAG_16(quotient);
- (mc68kcpu)->v_flag = VFLAG_CLEAR;
- (mc68kcpu)->c_flag = CFLAG_CLEAR;
- *r_dst = MASK_OUT_ABOVE_32(MASK_OUT_ABOVE_16(quotient) | (remainder << 16));
- return;
- }
- (mc68kcpu)->v_flag = VFLAG_SET;
- return;
- }
- m68ki_exception_trap((mc68kcpu), EXCEPTION_ZERO_DIVIDE);
-}
-
-
-void m68000_base_device_ops::m68k_op_divu_16_ai(m68000_base_device* mc68kcpu)
-{
- UINT32* r_dst = &DX(mc68kcpu);
- UINT32 src = OPER_AY_AI_16(mc68kcpu);
-
- if(src != 0)
- {
- UINT32 quotient = *r_dst / src;
- UINT32 remainder = *r_dst % src;
-
- if(quotient < 0x10000)
- {
- (mc68kcpu)->not_z_flag = quotient;
- (mc68kcpu)->n_flag = NFLAG_16(quotient);
- (mc68kcpu)->v_flag = VFLAG_CLEAR;
- (mc68kcpu)->c_flag = CFLAG_CLEAR;
- *r_dst = MASK_OUT_ABOVE_32(MASK_OUT_ABOVE_16(quotient) | (remainder << 16));
- return;
- }
- (mc68kcpu)->v_flag = VFLAG_SET;
- return;
- }
- m68ki_exception_trap((mc68kcpu), EXCEPTION_ZERO_DIVIDE);
-}
-
-
-void m68000_base_device_ops::m68k_op_divu_16_pi(m68000_base_device* mc68kcpu)
-{
- UINT32* r_dst = &DX(mc68kcpu);
- UINT32 src = OPER_AY_PI_16(mc68kcpu);
-
- if(src != 0)
- {
- UINT32 quotient = *r_dst / src;
- UINT32 remainder = *r_dst % src;
-
- if(quotient < 0x10000)
- {
- (mc68kcpu)->not_z_flag = quotient;
- (mc68kcpu)->n_flag = NFLAG_16(quotient);
- (mc68kcpu)->v_flag = VFLAG_CLEAR;
- (mc68kcpu)->c_flag = CFLAG_CLEAR;
- *r_dst = MASK_OUT_ABOVE_32(MASK_OUT_ABOVE_16(quotient) | (remainder << 16));
- return;
- }
- (mc68kcpu)->v_flag = VFLAG_SET;
- return;
- }
- m68ki_exception_trap((mc68kcpu), EXCEPTION_ZERO_DIVIDE);
-}
-
-
-void m68000_base_device_ops::m68k_op_divu_16_pd(m68000_base_device* mc68kcpu)
-{
- UINT32* r_dst = &DX(mc68kcpu);
- UINT32 src = OPER_AY_PD_16(mc68kcpu);
-
- if(src != 0)
- {
- UINT32 quotient = *r_dst / src;
- UINT32 remainder = *r_dst % src;
-
- if(quotient < 0x10000)
- {
- (mc68kcpu)->not_z_flag = quotient;
- (mc68kcpu)->n_flag = NFLAG_16(quotient);
- (mc68kcpu)->v_flag = VFLAG_CLEAR;
- (mc68kcpu)->c_flag = CFLAG_CLEAR;
- *r_dst = MASK_OUT_ABOVE_32(MASK_OUT_ABOVE_16(quotient) | (remainder << 16));
- return;
- }
- (mc68kcpu)->v_flag = VFLAG_SET;
- return;
- }
- m68ki_exception_trap((mc68kcpu), EXCEPTION_ZERO_DIVIDE);
-}
-
-
-void m68000_base_device_ops::m68k_op_divu_16_di(m68000_base_device* mc68kcpu)
-{
- UINT32* r_dst = &DX(mc68kcpu);
- UINT32 src = OPER_AY_DI_16(mc68kcpu);
-
- if(src != 0)
- {
- UINT32 quotient = *r_dst / src;
- UINT32 remainder = *r_dst % src;
-
- if(quotient < 0x10000)
- {
- (mc68kcpu)->not_z_flag = quotient;
- (mc68kcpu)->n_flag = NFLAG_16(quotient);
- (mc68kcpu)->v_flag = VFLAG_CLEAR;
- (mc68kcpu)->c_flag = CFLAG_CLEAR;
- *r_dst = MASK_OUT_ABOVE_32(MASK_OUT_ABOVE_16(quotient) | (remainder << 16));
- return;
- }
- (mc68kcpu)->v_flag = VFLAG_SET;
- return;
- }
- m68ki_exception_trap((mc68kcpu), EXCEPTION_ZERO_DIVIDE);
-}
-
-
-void m68000_base_device_ops::m68k_op_divu_16_ix(m68000_base_device* mc68kcpu)
-{
- UINT32* r_dst = &DX(mc68kcpu);
- UINT32 src = OPER_AY_IX_16(mc68kcpu);
-
- if(src != 0)
- {
- UINT32 quotient = *r_dst / src;
- UINT32 remainder = *r_dst % src;
-
- if(quotient < 0x10000)
- {
- (mc68kcpu)->not_z_flag = quotient;
- (mc68kcpu)->n_flag = NFLAG_16(quotient);
- (mc68kcpu)->v_flag = VFLAG_CLEAR;
- (mc68kcpu)->c_flag = CFLAG_CLEAR;
- *r_dst = MASK_OUT_ABOVE_32(MASK_OUT_ABOVE_16(quotient) | (remainder << 16));
- return;
- }
- (mc68kcpu)->v_flag = VFLAG_SET;
- return;
- }
- m68ki_exception_trap((mc68kcpu), EXCEPTION_ZERO_DIVIDE);
-}
-
-
-void m68000_base_device_ops::m68k_op_divu_16_aw(m68000_base_device* mc68kcpu)
-{
- UINT32* r_dst = &DX(mc68kcpu);
- UINT32 src = OPER_AW_16(mc68kcpu);
-
- if(src != 0)
- {
- UINT32 quotient = *r_dst / src;
- UINT32 remainder = *r_dst % src;
-
- if(quotient < 0x10000)
- {
- (mc68kcpu)->not_z_flag = quotient;
- (mc68kcpu)->n_flag = NFLAG_16(quotient);
- (mc68kcpu)->v_flag = VFLAG_CLEAR;
- (mc68kcpu)->c_flag = CFLAG_CLEAR;
- *r_dst = MASK_OUT_ABOVE_32(MASK_OUT_ABOVE_16(quotient) | (remainder << 16));
- return;
- }
- (mc68kcpu)->v_flag = VFLAG_SET;
- return;
- }
- m68ki_exception_trap((mc68kcpu), EXCEPTION_ZERO_DIVIDE);
-}
-
-
-void m68000_base_device_ops::m68k_op_divu_16_al(m68000_base_device* mc68kcpu)
-{
- UINT32* r_dst = &DX(mc68kcpu);
- UINT32 src = OPER_AL_16(mc68kcpu);
-
- if(src != 0)
- {
- UINT32 quotient = *r_dst / src;
- UINT32 remainder = *r_dst % src;
-
- if(quotient < 0x10000)
- {
- (mc68kcpu)->not_z_flag = quotient;
- (mc68kcpu)->n_flag = NFLAG_16(quotient);
- (mc68kcpu)->v_flag = VFLAG_CLEAR;
- (mc68kcpu)->c_flag = CFLAG_CLEAR;
- *r_dst = MASK_OUT_ABOVE_32(MASK_OUT_ABOVE_16(quotient) | (remainder << 16));
- return;
- }
- (mc68kcpu)->v_flag = VFLAG_SET;
- return;
- }
- m68ki_exception_trap((mc68kcpu), EXCEPTION_ZERO_DIVIDE);
-}
-
-
-void m68000_base_device_ops::m68k_op_divu_16_pcdi(m68000_base_device* mc68kcpu)
-{
- UINT32* r_dst = &DX(mc68kcpu);
- UINT32 src = OPER_PCDI_16(mc68kcpu);
-
- if(src != 0)
- {
- UINT32 quotient = *r_dst / src;
- UINT32 remainder = *r_dst % src;
-
- if(quotient < 0x10000)
- {
- (mc68kcpu)->not_z_flag = quotient;
- (mc68kcpu)->n_flag = NFLAG_16(quotient);
- (mc68kcpu)->v_flag = VFLAG_CLEAR;
- (mc68kcpu)->c_flag = CFLAG_CLEAR;
- *r_dst = MASK_OUT_ABOVE_32(MASK_OUT_ABOVE_16(quotient) | (remainder << 16));
- return;
- }
- (mc68kcpu)->v_flag = VFLAG_SET;
- return;
- }
- m68ki_exception_trap((mc68kcpu), EXCEPTION_ZERO_DIVIDE);
-}
-
-
-void m68000_base_device_ops::m68k_op_divu_16_pcix(m68000_base_device* mc68kcpu)
-{
- UINT32* r_dst = &DX(mc68kcpu);
- UINT32 src = OPER_PCIX_16(mc68kcpu);
-
- if(src != 0)
- {
- UINT32 quotient = *r_dst / src;
- UINT32 remainder = *r_dst % src;
-
- if(quotient < 0x10000)
- {
- (mc68kcpu)->not_z_flag = quotient;
- (mc68kcpu)->n_flag = NFLAG_16(quotient);
- (mc68kcpu)->v_flag = VFLAG_CLEAR;
- (mc68kcpu)->c_flag = CFLAG_CLEAR;
- *r_dst = MASK_OUT_ABOVE_32(MASK_OUT_ABOVE_16(quotient) | (remainder << 16));
- return;
- }
- (mc68kcpu)->v_flag = VFLAG_SET;
- return;
- }
- m68ki_exception_trap((mc68kcpu), EXCEPTION_ZERO_DIVIDE);
-}
-
-
-void m68000_base_device_ops::m68k_op_divu_16_i(m68000_base_device* mc68kcpu)
-{
- UINT32* r_dst = &DX(mc68kcpu);
- UINT32 src = OPER_I_16(mc68kcpu);
-
- if(src != 0)
- {
- UINT32 quotient = *r_dst / src;
- UINT32 remainder = *r_dst % src;
-
- if(quotient < 0x10000)
- {
- (mc68kcpu)->not_z_flag = quotient;
- (mc68kcpu)->n_flag = NFLAG_16(quotient);
- (mc68kcpu)->v_flag = VFLAG_CLEAR;
- (mc68kcpu)->c_flag = CFLAG_CLEAR;
- *r_dst = MASK_OUT_ABOVE_32(MASK_OUT_ABOVE_16(quotient) | (remainder << 16));
- return;
- }
- (mc68kcpu)->v_flag = VFLAG_SET;
- return;
- }
- m68ki_exception_trap((mc68kcpu), EXCEPTION_ZERO_DIVIDE);
-}
-
-
-void m68000_base_device_ops::m68k_op_divl_32_d(m68000_base_device* mc68kcpu)
-{
- if(CPU_TYPE_IS_EC020_PLUS((mc68kcpu)->cpu_type))
- {
- UINT32 word2 = OPER_I_16(mc68kcpu);
- UINT64 divisor = DY(mc68kcpu);
- UINT64 dividend;
- UINT64 quotient;
- UINT64 remainder;
-
- if(divisor != 0)
- {
- if(BIT_A(word2)) /* 64 bit */
- {
- dividend = REG_D(mc68kcpu)[word2 & 7];
- dividend <<= 32;
- dividend |= REG_D(mc68kcpu)[(word2 >> 12) & 7];
-
- if(BIT_B(word2)) /* signed */
- {
- quotient = (UINT64)((INT64)dividend / (INT64)((INT32)divisor));
- remainder = (UINT64)((INT64)dividend % (INT64)((INT32)divisor));
- if((INT64)quotient != (INT64)((INT32)quotient))
- {
- (mc68kcpu)->v_flag = VFLAG_SET;
- return;
- }
- }
- else /* unsigned */
- {
- quotient = dividend / divisor;
- if(quotient > 0xffffffff)
- {
- (mc68kcpu)->v_flag = VFLAG_SET;
- return;
- }
- remainder = dividend % divisor;
- }
- }
- else /* 32 bit */
- {
- dividend = REG_D(mc68kcpu)[(word2 >> 12) & 7];
- if(BIT_B(word2)) /* signed */
- {
- quotient = (UINT64)((INT64)((INT32)dividend) / (INT64)((INT32)divisor));
- remainder = (UINT64)((INT64)((INT32)dividend) % (INT64)((INT32)divisor));
- }
- else /* unsigned */
- {
- quotient = dividend / divisor;
- remainder = dividend % divisor;
- }
- }
-
- REG_D(mc68kcpu)[word2 & 7] = remainder;
- REG_D(mc68kcpu)[(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;
- return;
- }
- m68ki_exception_trap((mc68kcpu), EXCEPTION_ZERO_DIVIDE);
- return;
- }
- m68ki_exception_illegal(mc68kcpu);
-}
-
-
-void m68000_base_device_ops::m68k_op_divl_32_ai(m68000_base_device* mc68kcpu)
-{
- if(CPU_TYPE_IS_EC020_PLUS((mc68kcpu)->cpu_type))
- {
- UINT32 word2 = OPER_I_16(mc68kcpu);
- UINT64 divisor = OPER_AY_AI_32(mc68kcpu);
- UINT64 dividend;
- UINT64 quotient;
- UINT64 remainder;
-
- if(divisor != 0)
- {
- if(BIT_A(word2)) /* 64 bit */
- {
- dividend = REG_D(mc68kcpu)[word2 & 7];
- dividend <<= 32;
- dividend |= REG_D(mc68kcpu)[(word2 >> 12) & 7];
-
- if(BIT_B(word2)) /* signed */
- {
- quotient = (UINT64)((INT64)dividend / (INT64)((INT32)divisor));
- remainder = (UINT64)((INT64)dividend % (INT64)((INT32)divisor));
- if((INT64)quotient != (INT64)((INT32)quotient))
- {
- (mc68kcpu)->v_flag = VFLAG_SET;
- return;
- }
- }
- else /* unsigned */
- {
- quotient = dividend / divisor;
- if(quotient > 0xffffffff)
- {
- (mc68kcpu)->v_flag = VFLAG_SET;
- return;
- }
- remainder = dividend % divisor;
- }
- }
- else /* 32 bit */
- {
- dividend = REG_D(mc68kcpu)[(word2 >> 12) & 7];
- if(BIT_B(word2)) /* signed */
- {
- quotient = (UINT64)((INT64)((INT32)dividend) / (INT64)((INT32)divisor));
- remainder = (UINT64)((INT64)((INT32)dividend) % (INT64)((INT32)divisor));
- }
- else /* unsigned */
- {
- quotient = dividend / divisor;
- remainder = dividend % divisor;
- }
- }
-
- REG_D(mc68kcpu)[word2 & 7] = remainder;
- REG_D(mc68kcpu)[(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;
- return;
- }
- m68ki_exception_trap((mc68kcpu), EXCEPTION_ZERO_DIVIDE);
- return;
- }
- m68ki_exception_illegal(mc68kcpu);
-}
-
-
-void m68000_base_device_ops::m68k_op_divl_32_pi(m68000_base_device* mc68kcpu)
-{
- if(CPU_TYPE_IS_EC020_PLUS((mc68kcpu)->cpu_type))
- {
- UINT32 word2 = OPER_I_16(mc68kcpu);
- UINT64 divisor = OPER_AY_PI_32(mc68kcpu);
- UINT64 dividend;
- UINT64 quotient;
- UINT64 remainder;
-
- if(divisor != 0)
- {
- if(BIT_A(word2)) /* 64 bit */
- {
- dividend = REG_D(mc68kcpu)[word2 & 7];
- dividend <<= 32;
- dividend |= REG_D(mc68kcpu)[(word2 >> 12) & 7];
-
- if(BIT_B(word2)) /* signed */
- {
- quotient = (UINT64)((INT64)dividend / (INT64)((INT32)divisor));
- remainder = (UINT64)((INT64)dividend % (INT64)((INT32)divisor));
- if((INT64)quotient != (INT64)((INT32)quotient))
- {
- (mc68kcpu)->v_flag = VFLAG_SET;
- return;
- }
- }
- else /* unsigned */
- {
- quotient = dividend / divisor;
- if(quotient > 0xffffffff)
- {
- (mc68kcpu)->v_flag = VFLAG_SET;
- return;
- }
- remainder = dividend % divisor;
- }
- }
- else /* 32 bit */
- {
- dividend = REG_D(mc68kcpu)[(word2 >> 12) & 7];
- if(BIT_B(word2)) /* signed */
- {
- quotient = (UINT64)((INT64)((INT32)dividend) / (INT64)((INT32)divisor));
- remainder = (UINT64)((INT64)((INT32)dividend) % (INT64)((INT32)divisor));
- }
- else /* unsigned */
- {
- quotient = dividend / divisor;
- remainder = dividend % divisor;
- }
- }
-
- REG_D(mc68kcpu)[word2 & 7] = remainder;
- REG_D(mc68kcpu)[(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;
- return;
- }
- m68ki_exception_trap((mc68kcpu), EXCEPTION_ZERO_DIVIDE);
- return;
- }
- m68ki_exception_illegal(mc68kcpu);
-}
-
-
-void m68000_base_device_ops::m68k_op_divl_32_pd(m68000_base_device* mc68kcpu)
-{
- if(CPU_TYPE_IS_EC020_PLUS((mc68kcpu)->cpu_type))
- {
- UINT32 word2 = OPER_I_16(mc68kcpu);
- UINT64 divisor = OPER_AY_PD_32(mc68kcpu);
- UINT64 dividend;
- UINT64 quotient;
- UINT64 remainder;
-
- if(divisor != 0)
- {
- if(BIT_A(word2)) /* 64 bit */
- {
- dividend = REG_D(mc68kcpu)[word2 & 7];
- dividend <<= 32;
- dividend |= REG_D(mc68kcpu)[(word2 >> 12) & 7];
-
- if(BIT_B(word2)) /* signed */
- {
- quotient = (UINT64)((INT64)dividend / (INT64)((INT32)divisor));
- remainder = (UINT64)((INT64)dividend % (INT64)((INT32)divisor));
- if((INT64)quotient != (INT64)((INT32)quotient))
- {
- (mc68kcpu)->v_flag = VFLAG_SET;
- return;
- }
- }
- else /* unsigned */
- {
- quotient = dividend / divisor;
- if(quotient > 0xffffffff)
- {
- (mc68kcpu)->v_flag = VFLAG_SET;
- return;
- }
- remainder = dividend % divisor;
- }
- }
- else /* 32 bit */
- {
- dividend = REG_D(mc68kcpu)[(word2 >> 12) & 7];
- if(BIT_B(word2)) /* signed */
- {
- quotient = (UINT64)((INT64)((INT32)dividend) / (INT64)((INT32)divisor));
- remainder = (UINT64)((INT64)((INT32)dividend) % (INT64)((INT32)divisor));
- }
- else /* unsigned */
- {
- quotient = dividend / divisor;
- remainder = dividend % divisor;
- }
- }
-
- REG_D(mc68kcpu)[word2 & 7] = remainder;
- REG_D(mc68kcpu)[(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;
- return;
- }
- m68ki_exception_trap((mc68kcpu), EXCEPTION_ZERO_DIVIDE);
- return;
- }
- m68ki_exception_illegal(mc68kcpu);
-}
-
-
-void m68000_base_device_ops::m68k_op_divl_32_di(m68000_base_device* mc68kcpu)
-{
- if(CPU_TYPE_IS_EC020_PLUS((mc68kcpu)->cpu_type))
- {
- UINT32 word2 = OPER_I_16(mc68kcpu);
- UINT64 divisor = OPER_AY_DI_32(mc68kcpu);
- UINT64 dividend;
- UINT64 quotient;
- UINT64 remainder;
-
- if(divisor != 0)
- {
- if(BIT_A(word2)) /* 64 bit */
- {
- dividend = REG_D(mc68kcpu)[word2 & 7];
- dividend <<= 32;
- dividend |= REG_D(mc68kcpu)[(word2 >> 12) & 7];
-
- if(BIT_B(word2)) /* signed */
- {
- quotient = (UINT64)((INT64)dividend / (INT64)((INT32)divisor));
- remainder = (UINT64)((INT64)dividend % (INT64)((INT32)divisor));
- if((INT64)quotient != (INT64)((INT32)quotient))
- {
- (mc68kcpu)->v_flag = VFLAG_SET;
- return;
- }
- }
- else /* unsigned */
- {
- quotient = dividend / divisor;
- if(quotient > 0xffffffff)
- {
- (mc68kcpu)->v_flag = VFLAG_SET;
- return;
- }
- remainder = dividend % divisor;
- }
- }
- else /* 32 bit */
- {
- dividend = REG_D(mc68kcpu)[(word2 >> 12) & 7];
- if(BIT_B(word2)) /* signed */
- {
- quotient = (UINT64)((INT64)((INT32)dividend) / (INT64)((INT32)divisor));
- remainder = (UINT64)((INT64)((INT32)dividend) % (INT64)((INT32)divisor));
- }
- else /* unsigned */
- {
- quotient = dividend / divisor;
- remainder = dividend % divisor;
- }
- }
-
- REG_D(mc68kcpu)[word2 & 7] = remainder;
- REG_D(mc68kcpu)[(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;
- return;
- }
- m68ki_exception_trap((mc68kcpu), EXCEPTION_ZERO_DIVIDE);
- return;
- }
- m68ki_exception_illegal(mc68kcpu);
-}
-
-
-void m68000_base_device_ops::m68k_op_divl_32_ix(m68000_base_device* mc68kcpu)
-{
- if(CPU_TYPE_IS_EC020_PLUS((mc68kcpu)->cpu_type))
- {
- UINT32 word2 = OPER_I_16(mc68kcpu);
- UINT64 divisor = OPER_AY_IX_32(mc68kcpu);
- UINT64 dividend;
- UINT64 quotient;
- UINT64 remainder;
-
- if(divisor != 0)
- {
- if(BIT_A(word2)) /* 64 bit */
- {
- dividend = REG_D(mc68kcpu)[word2 & 7];
- dividend <<= 32;
- dividend |= REG_D(mc68kcpu)[(word2 >> 12) & 7];
-
- if(BIT_B(word2)) /* signed */
- {
- quotient = (UINT64)((INT64)dividend / (INT64)((INT32)divisor));
- remainder = (UINT64)((INT64)dividend % (INT64)((INT32)divisor));
- if((INT64)quotient != (INT64)((INT32)quotient))
- {
- (mc68kcpu)->v_flag = VFLAG_SET;
- return;
- }
- }
- else /* unsigned */
- {
- quotient = dividend / divisor;
- if(quotient > 0xffffffff)
- {
- (mc68kcpu)->v_flag = VFLAG_SET;
- return;
- }
- remainder = dividend % divisor;
- }
- }
- else /* 32 bit */
- {
- dividend = REG_D(mc68kcpu)[(word2 >> 12) & 7];
- if(BIT_B(word2)) /* signed */
- {
- quotient = (UINT64)((INT64)((INT32)dividend) / (INT64)((INT32)divisor));
- remainder = (UINT64)((INT64)((INT32)dividend) % (INT64)((INT32)divisor));
- }
- else /* unsigned */
- {
- quotient = dividend / divisor;
- remainder = dividend % divisor;
- }
- }
-
- REG_D(mc68kcpu)[word2 & 7] = remainder;
- REG_D(mc68kcpu)[(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;
- return;
- }
- m68ki_exception_trap((mc68kcpu), EXCEPTION_ZERO_DIVIDE);
- return;
- }
- m68ki_exception_illegal(mc68kcpu);
-}
-
-
-void m68000_base_device_ops::m68k_op_divl_32_aw(m68000_base_device* mc68kcpu)
-{
- if(CPU_TYPE_IS_EC020_PLUS((mc68kcpu)->cpu_type))
- {
- UINT32 word2 = OPER_I_16(mc68kcpu);
- UINT64 divisor = OPER_AW_32(mc68kcpu);
- UINT64 dividend;
- UINT64 quotient;
- UINT64 remainder;
-
- if(divisor != 0)
- {
- if(BIT_A(word2)) /* 64 bit */
- {
- dividend = REG_D(mc68kcpu)[word2 & 7];
- dividend <<= 32;
- dividend |= REG_D(mc68kcpu)[(word2 >> 12) & 7];
-
- if(BIT_B(word2)) /* signed */
- {
- quotient = (UINT64)((INT64)dividend / (INT64)((INT32)divisor));
- remainder = (UINT64)((INT64)dividend % (INT64)((INT32)divisor));
- if((INT64)quotient != (INT64)((INT32)quotient))
- {
- (mc68kcpu)->v_flag = VFLAG_SET;
- return;
- }
- }
- else /* unsigned */
- {
- quotient = dividend / divisor;
- if(quotient > 0xffffffff)
- {
- (mc68kcpu)->v_flag = VFLAG_SET;
- return;
- }
- remainder = dividend % divisor;
- }
- }
- else /* 32 bit */
- {
- dividend = REG_D(mc68kcpu)[(word2 >> 12) & 7];
- if(BIT_B(word2)) /* signed */
- {
- quotient = (UINT64)((INT64)((INT32)dividend) / (INT64)((INT32)divisor));
- remainder = (UINT64)((INT64)((INT32)dividend) % (INT64)((INT32)divisor));
- }
- else /* unsigned */
- {
- quotient = dividend / divisor;
- remainder = dividend % divisor;
- }
- }
-
- REG_D(mc68kcpu)[word2 & 7] = remainder;
- REG_D(mc68kcpu)[(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;
- return;
- }
- m68ki_exception_trap((mc68kcpu), EXCEPTION_ZERO_DIVIDE);
- return;
- }
- m68ki_exception_illegal(mc68kcpu);
-}
-
-
-void m68000_base_device_ops::m68k_op_divl_32_al(m68000_base_device* mc68kcpu)
-{
- if(CPU_TYPE_IS_EC020_PLUS((mc68kcpu)->cpu_type))
- {
- UINT32 word2 = OPER_I_16(mc68kcpu);
- UINT64 divisor = OPER_AL_32(mc68kcpu);
- UINT64 dividend;
- UINT64 quotient;
- UINT64 remainder;
-
- if(divisor != 0)
- {
- if(BIT_A(word2)) /* 64 bit */
- {
- dividend = REG_D(mc68kcpu)[word2 & 7];
- dividend <<= 32;
- dividend |= REG_D(mc68kcpu)[(word2 >> 12) & 7];
-
- if(BIT_B(word2)) /* signed */
- {
- quotient = (UINT64)((INT64)dividend / (INT64)((INT32)divisor));
- remainder = (UINT64)((INT64)dividend % (INT64)((INT32)divisor));
- if((INT64)quotient != (INT64)((INT32)quotient))
- {
- (mc68kcpu)->v_flag = VFLAG_SET;
- return;
- }
- }
- else /* unsigned */
- {
- quotient = dividend / divisor;
- if(quotient > 0xffffffff)
- {
- (mc68kcpu)->v_flag = VFLAG_SET;
- return;
- }
- remainder = dividend % divisor;
- }
- }
- else /* 32 bit */
- {
- dividend = REG_D(mc68kcpu)[(word2 >> 12) & 7];
- if(BIT_B(word2)) /* signed */
- {
- quotient = (UINT64)((INT64)((INT32)dividend) / (INT64)((INT32)divisor));
- remainder = (UINT64)((INT64)((INT32)dividend) % (INT64)((INT32)divisor));
- }
- else /* unsigned */
- {
- quotient = dividend / divisor;
- remainder = dividend % divisor;
- }
- }
-
- REG_D(mc68kcpu)[word2 & 7] = remainder;
- REG_D(mc68kcpu)[(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;
- return;
- }
- m68ki_exception_trap((mc68kcpu), EXCEPTION_ZERO_DIVIDE);
- return;
- }
- m68ki_exception_illegal(mc68kcpu);
-}
-
-
-void m68000_base_device_ops::m68k_op_divl_32_pcdi(m68000_base_device* mc68kcpu)
-{
- if(CPU_TYPE_IS_EC020_PLUS((mc68kcpu)->cpu_type))
- {
- UINT32 word2 = OPER_I_16(mc68kcpu);
- UINT64 divisor = OPER_PCDI_32(mc68kcpu);
- UINT64 dividend;
- UINT64 quotient;
- UINT64 remainder;
-
- if(divisor != 0)
- {
- if(BIT_A(word2)) /* 64 bit */
- {
- dividend = REG_D(mc68kcpu)[word2 & 7];
- dividend <<= 32;
- dividend |= REG_D(mc68kcpu)[(word2 >> 12) & 7];
-
- if(BIT_B(word2)) /* signed */
- {
- quotient = (UINT64)((INT64)dividend / (INT64)((INT32)divisor));
- remainder = (UINT64)((INT64)dividend % (INT64)((INT32)divisor));
- if((INT64)quotient != (INT64)((INT32)quotient))
- {
- (mc68kcpu)->v_flag = VFLAG_SET;
- return;
- }
- }
- else /* unsigned */
- {
- quotient = dividend / divisor;
- if(quotient > 0xffffffff)
- {
- (mc68kcpu)->v_flag = VFLAG_SET;
- return;
- }
- remainder = dividend % divisor;
- }
- }
- else /* 32 bit */
- {
- dividend = REG_D(mc68kcpu)[(word2 >> 12) & 7];
- if(BIT_B(word2)) /* signed */
- {
- quotient = (UINT64)((INT64)((INT32)dividend) / (INT64)((INT32)divisor));
- remainder = (UINT64)((INT64)((INT32)dividend) % (INT64)((INT32)divisor));
- }
- else /* unsigned */
- {
- quotient = dividend / divisor;
- remainder = dividend % divisor;
- }
- }
-
- REG_D(mc68kcpu)[word2 & 7] = remainder;
- REG_D(mc68kcpu)[(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;
- return;
- }
- m68ki_exception_trap((mc68kcpu), EXCEPTION_ZERO_DIVIDE);
- return;
- }
- m68ki_exception_illegal(mc68kcpu);
-}
-
-
-void m68000_base_device_ops::m68k_op_divl_32_pcix(m68000_base_device* mc68kcpu)
-{
- if(CPU_TYPE_IS_EC020_PLUS((mc68kcpu)->cpu_type))
- {
- UINT32 word2 = OPER_I_16(mc68kcpu);
- UINT64 divisor = OPER_PCIX_32(mc68kcpu);
- UINT64 dividend;
- UINT64 quotient;
- UINT64 remainder;
-
- if(divisor != 0)
- {
- if(BIT_A(word2)) /* 64 bit */
- {
- dividend = REG_D(mc68kcpu)[word2 & 7];
- dividend <<= 32;
- dividend |= REG_D(mc68kcpu)[(word2 >> 12) & 7];
-
- if(BIT_B(word2)) /* signed */
- {
- quotient = (UINT64)((INT64)dividend / (INT64)((INT32)divisor));
- remainder = (UINT64)((INT64)dividend % (INT64)((INT32)divisor));
- if((INT64)quotient != (INT64)((INT32)quotient))
- {
- (mc68kcpu)->v_flag = VFLAG_SET;
- return;
- }
- }
- else /* unsigned */
- {
- quotient = dividend / divisor;
- if(quotient > 0xffffffff)
- {
- (mc68kcpu)->v_flag = VFLAG_SET;
- return;
- }
- remainder = dividend % divisor;
- }
- }
- else /* 32 bit */
- {
- dividend = REG_D(mc68kcpu)[(word2 >> 12) & 7];
- if(BIT_B(word2)) /* signed */
- {
- quotient = (UINT64)((INT64)((INT32)dividend) / (INT64)((INT32)divisor));
- remainder = (UINT64)((INT64)((INT32)dividend) % (INT64)((INT32)divisor));
- }
- else /* unsigned */
- {
- quotient = dividend / divisor;
- remainder = dividend % divisor;
- }
- }
-
- REG_D(mc68kcpu)[word2 & 7] = remainder;
- REG_D(mc68kcpu)[(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;
- return;
- }
- m68ki_exception_trap((mc68kcpu), EXCEPTION_ZERO_DIVIDE);
- return;
- }
- m68ki_exception_illegal(mc68kcpu);
-}
-
-
-void m68000_base_device_ops::m68k_op_divl_32_i(m68000_base_device* mc68kcpu)
-{
- if(CPU_TYPE_IS_EC020_PLUS((mc68kcpu)->cpu_type))
- {
- UINT32 word2 = OPER_I_16(mc68kcpu);
- UINT64 divisor = OPER_I_32(mc68kcpu);
- UINT64 dividend;
- UINT64 quotient;
- UINT64 remainder;
-
- if(divisor != 0)
- {
- if(BIT_A(word2)) /* 64 bit */
- {
- dividend = REG_D(mc68kcpu)[word2 & 7];
- dividend <<= 32;
- dividend |= REG_D(mc68kcpu)[(word2 >> 12) & 7];
-
- if(BIT_B(word2)) /* signed */
- {
- quotient = (UINT64)((INT64)dividend / (INT64)((INT32)divisor));
- remainder = (UINT64)((INT64)dividend % (INT64)((INT32)divisor));
- if((INT64)quotient != (INT64)((INT32)quotient))
- {
- (mc68kcpu)->v_flag = VFLAG_SET;
- return;
- }
- }
- else /* unsigned */
- {
- quotient = dividend / divisor;
- if(quotient > 0xffffffff)
- {
- (mc68kcpu)->v_flag = VFLAG_SET;
- return;
- }
- remainder = dividend % divisor;
- }
- }
- else /* 32 bit */
- {
- dividend = REG_D(mc68kcpu)[(word2 >> 12) & 7];
- if(BIT_B(word2)) /* signed */
- {
- quotient = (UINT64)((INT64)((INT32)dividend) / (INT64)((INT32)divisor));
- remainder = (UINT64)((INT64)((INT32)dividend) % (INT64)((INT32)divisor));
- }
- else /* unsigned */
- {
- quotient = dividend / divisor;
- remainder = dividend % divisor;
- }
- }
-
- REG_D(mc68kcpu)[word2 & 7] = remainder;
- REG_D(mc68kcpu)[(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;
- return;
- }
- m68ki_exception_trap((mc68kcpu), EXCEPTION_ZERO_DIVIDE);
- return;
- }
- m68ki_exception_illegal(mc68kcpu);
-}
-
-
-void m68000_base_device_ops::m68k_op_eor_8_d(m68000_base_device* mc68kcpu)
-{
- UINT32 res = MASK_OUT_ABOVE_8(DY(mc68kcpu) ^= MASK_OUT_ABOVE_8(DX(mc68kcpu)));
-
- (mc68kcpu)->n_flag = NFLAG_8(res);
- (mc68kcpu)->not_z_flag = res;
- (mc68kcpu)->c_flag = CFLAG_CLEAR;
- (mc68kcpu)->v_flag = VFLAG_CLEAR;
-}
-
-
-void m68000_base_device_ops::m68k_op_eor_8_ai(m68000_base_device* mc68kcpu)
-{
- UINT32 ea = EA_AY_AI_8(mc68kcpu);
- UINT32 res = MASK_OUT_ABOVE_8(DX(mc68kcpu) ^ m68ki_read_8((mc68kcpu), ea));
-
- m68ki_write_8((mc68kcpu), ea, res);
-
- (mc68kcpu)->n_flag = NFLAG_8(res);
- (mc68kcpu)->not_z_flag = res;
- (mc68kcpu)->c_flag = CFLAG_CLEAR;
- (mc68kcpu)->v_flag = VFLAG_CLEAR;
-}
-
-
-void m68000_base_device_ops::m68k_op_eor_8_pi(m68000_base_device* mc68kcpu)
-{
- UINT32 ea = EA_AY_PI_8(mc68kcpu);
- UINT32 res = MASK_OUT_ABOVE_8(DX(mc68kcpu) ^ m68ki_read_8((mc68kcpu), ea));
-
- m68ki_write_8((mc68kcpu), ea, res);
-
- (mc68kcpu)->n_flag = NFLAG_8(res);
- (mc68kcpu)->not_z_flag = res;
- (mc68kcpu)->c_flag = CFLAG_CLEAR;
- (mc68kcpu)->v_flag = VFLAG_CLEAR;
-}
-
-
-void m68000_base_device_ops::m68k_op_eor_8_pi7(m68000_base_device* mc68kcpu)
-{
- UINT32 ea = EA_A7_PI_8(mc68kcpu);
- UINT32 res = MASK_OUT_ABOVE_8(DX(mc68kcpu) ^ m68ki_read_8((mc68kcpu), ea));
-
- m68ki_write_8((mc68kcpu), ea, res);
-
- (mc68kcpu)->n_flag = NFLAG_8(res);
- (mc68kcpu)->not_z_flag = res;
- (mc68kcpu)->c_flag = CFLAG_CLEAR;
- (mc68kcpu)->v_flag = VFLAG_CLEAR;
-}
-
-
-void m68000_base_device_ops::m68k_op_eor_8_pd(m68000_base_device* mc68kcpu)
-{
- UINT32 ea = EA_AY_PD_8(mc68kcpu);
- UINT32 res = MASK_OUT_ABOVE_8(DX(mc68kcpu) ^ m68ki_read_8((mc68kcpu), ea));
-
- m68ki_write_8((mc68kcpu), ea, res);
-
- (mc68kcpu)->n_flag = NFLAG_8(res);
- (mc68kcpu)->not_z_flag = res;
- (mc68kcpu)->c_flag = CFLAG_CLEAR;
- (mc68kcpu)->v_flag = VFLAG_CLEAR;
-}
-
-
-void m68000_base_device_ops::m68k_op_eor_8_pd7(m68000_base_device* mc68kcpu)
-{
- UINT32 ea = EA_A7_PD_8(mc68kcpu);
- UINT32 res = MASK_OUT_ABOVE_8(DX(mc68kcpu) ^ m68ki_read_8((mc68kcpu), ea));
-
- m68ki_write_8((mc68kcpu), ea, res);
-
- (mc68kcpu)->n_flag = NFLAG_8(res);
- (mc68kcpu)->not_z_flag = res;
- (mc68kcpu)->c_flag = CFLAG_CLEAR;
- (mc68kcpu)->v_flag = VFLAG_CLEAR;
-}
-
-
-void m68000_base_device_ops::m68k_op_eor_8_di(m68000_base_device* mc68kcpu)
-{
- UINT32 ea = EA_AY_DI_8(mc68kcpu);
- UINT32 res = MASK_OUT_ABOVE_8(DX(mc68kcpu) ^ m68ki_read_8((mc68kcpu), ea));
-
- m68ki_write_8((mc68kcpu), ea, res);
-
- (mc68kcpu)->n_flag = NFLAG_8(res);
- (mc68kcpu)->not_z_flag = res;
- (mc68kcpu)->c_flag = CFLAG_CLEAR;
- (mc68kcpu)->v_flag = VFLAG_CLEAR;
-}
-
-
-void m68000_base_device_ops::m68k_op_eor_8_ix(m68000_base_device* mc68kcpu)
-{
- UINT32 ea = EA_AY_IX_8(mc68kcpu);
- UINT32 res = MASK_OUT_ABOVE_8(DX(mc68kcpu) ^ m68ki_read_8((mc68kcpu), ea));
-
- m68ki_write_8((mc68kcpu), ea, res);
-
- (mc68kcpu)->n_flag = NFLAG_8(res);
- (mc68kcpu)->not_z_flag = res;
- (mc68kcpu)->c_flag = CFLAG_CLEAR;
- (mc68kcpu)->v_flag = VFLAG_CLEAR;
-}
-
-
-void m68000_base_device_ops::m68k_op_eor_8_aw(m68000_base_device* mc68kcpu)
-{
- UINT32 ea = EA_AW_8(mc68kcpu);
- UINT32 res = MASK_OUT_ABOVE_8(DX(mc68kcpu) ^ m68ki_read_8((mc68kcpu), ea));
-
- m68ki_write_8((mc68kcpu), ea, res);
-
- (mc68kcpu)->n_flag = NFLAG_8(res);
- (mc68kcpu)->not_z_flag = res;
- (mc68kcpu)->c_flag = CFLAG_CLEAR;
- (mc68kcpu)->v_flag = VFLAG_CLEAR;
-}
-
-
-void m68000_base_device_ops::m68k_op_eor_8_al(m68000_base_device* mc68kcpu)
-{
- UINT32 ea = EA_AL_8(mc68kcpu);
- UINT32 res = MASK_OUT_ABOVE_8(DX(mc68kcpu) ^ m68ki_read_8((mc68kcpu), ea));
-
- m68ki_write_8((mc68kcpu), ea, res);
-
- (mc68kcpu)->n_flag = NFLAG_8(res);
- (mc68kcpu)->not_z_flag = res;
- (mc68kcpu)->c_flag = CFLAG_CLEAR;
- (mc68kcpu)->v_flag = VFLAG_CLEAR;
-}
-
-
-void m68000_base_device_ops::m68k_op_eor_16_d(m68000_base_device* mc68kcpu)
-{
- UINT32 res = MASK_OUT_ABOVE_16(DY(mc68kcpu) ^= MASK_OUT_ABOVE_16(DX(mc68kcpu)));
-
- (mc68kcpu)->n_flag = NFLAG_16(res);
- (mc68kcpu)->not_z_flag = res;
- (mc68kcpu)->c_flag = CFLAG_CLEAR;
- (mc68kcpu)->v_flag = VFLAG_CLEAR;
-}
-
-
-void m68000_base_device_ops::m68k_op_eor_16_ai(m68000_base_device* mc68kcpu)
-{
- UINT32 ea = EA_AY_AI_16(mc68kcpu);
- UINT32 res = MASK_OUT_ABOVE_16(DX(mc68kcpu) ^ m68ki_read_16((mc68kcpu), ea));
-
- m68ki_write_16((mc68kcpu), ea, res);
-
- (mc68kcpu)->n_flag = NFLAG_16(res);
- (mc68kcpu)->not_z_flag = res;
- (mc68kcpu)->c_flag = CFLAG_CLEAR;
- (mc68kcpu)->v_flag = VFLAG_CLEAR;
-}
-
-
-void m68000_base_device_ops::m68k_op_eor_16_pi(m68000_base_device* mc68kcpu)
-{
- UINT32 ea = EA_AY_PI_16(mc68kcpu);
- UINT32 res = MASK_OUT_ABOVE_16(DX(mc68kcpu) ^ m68ki_read_16((mc68kcpu), ea));
-
- m68ki_write_16((mc68kcpu), ea, res);
-
- (mc68kcpu)->n_flag = NFLAG_16(res);
- (mc68kcpu)->not_z_flag = res;
- (mc68kcpu)->c_flag = CFLAG_CLEAR;
- (mc68kcpu)->v_flag = VFLAG_CLEAR;
-}
-
-
-void m68000_base_device_ops::m68k_op_eor_16_pd(m68000_base_device* mc68kcpu)
-{
- UINT32 ea = EA_AY_PD_16(mc68kcpu);
- UINT32 res = MASK_OUT_ABOVE_16(DX(mc68kcpu) ^ m68ki_read_16((mc68kcpu), ea));
-
- m68ki_write_16((mc68kcpu), ea, res);
-
- (mc68kcpu)->n_flag = NFLAG_16(res);
- (mc68kcpu)->not_z_flag = res;
- (mc68kcpu)->c_flag = CFLAG_CLEAR;
- (mc68kcpu)->v_flag = VFLAG_CLEAR;
-}
-
-
-void m68000_base_device_ops::m68k_op_eor_16_di(m68000_base_device* mc68kcpu)
-{
- UINT32 ea = EA_AY_DI_16(mc68kcpu);
- UINT32 res = MASK_OUT_ABOVE_16(DX(mc68kcpu) ^ m68ki_read_16((mc68kcpu), ea));
-
- m68ki_write_16((mc68kcpu), ea, res);
-
- (mc68kcpu)->n_flag = NFLAG_16(res);
- (mc68kcpu)->not_z_flag = res;
- (mc68kcpu)->c_flag = CFLAG_CLEAR;
- (mc68kcpu)->v_flag = VFLAG_CLEAR;
-}
-
-
-void m68000_base_device_ops::m68k_op_eor_16_ix(m68000_base_device* mc68kcpu)
-{
- UINT32 ea = EA_AY_IX_16(mc68kcpu);
- UINT32 res = MASK_OUT_ABOVE_16(DX(mc68kcpu) ^ m68ki_read_16((mc68kcpu), ea));
-
- m68ki_write_16((mc68kcpu), ea, res);
-
- (mc68kcpu)->n_flag = NFLAG_16(res);
- (mc68kcpu)->not_z_flag = res;
- (mc68kcpu)->c_flag = CFLAG_CLEAR;
- (mc68kcpu)->v_flag = VFLAG_CLEAR;
-}
-
-
-void m68000_base_device_ops::m68k_op_eor_16_aw(m68000_base_device* mc68kcpu)
-{
- UINT32 ea = EA_AW_16(mc68kcpu);
- UINT32 res = MASK_OUT_ABOVE_16(DX(mc68kcpu) ^ m68ki_read_16((mc68kcpu), ea));
-
- m68ki_write_16((mc68kcpu), ea, res);
-
- (mc68kcpu)->n_flag = NFLAG_16(res);
- (mc68kcpu)->not_z_flag = res;
- (mc68kcpu)->c_flag = CFLAG_CLEAR;
- (mc68kcpu)->v_flag = VFLAG_CLEAR;
-}
-
-
-void m68000_base_device_ops::m68k_op_eor_16_al(m68000_base_device* mc68kcpu)
-{
- UINT32 ea = EA_AL_16(mc68kcpu);
- UINT32 res = MASK_OUT_ABOVE_16(DX(mc68kcpu) ^ m68ki_read_16((mc68kcpu), ea));
-
- m68ki_write_16((mc68kcpu), ea, res);
-
- (mc68kcpu)->n_flag = NFLAG_16(res);
- (mc68kcpu)->not_z_flag = res;
- (mc68kcpu)->c_flag = CFLAG_CLEAR;
- (mc68kcpu)->v_flag = VFLAG_CLEAR;
-}
-
-
-void m68000_base_device_ops::m68k_op_eor_32_d(m68000_base_device* mc68kcpu)
-{
- UINT32 res = DY(mc68kcpu) ^= DX(mc68kcpu);
-
- (mc68kcpu)->n_flag = NFLAG_32(res);
- (mc68kcpu)->not_z_flag = res;
- (mc68kcpu)->c_flag = CFLAG_CLEAR;
- (mc68kcpu)->v_flag = VFLAG_CLEAR;
-}
-
-
-void m68000_base_device_ops::m68k_op_eor_32_ai(m68000_base_device* mc68kcpu)
-{
- UINT32 ea = EA_AY_AI_32(mc68kcpu);
- UINT32 res = DX(mc68kcpu) ^ m68ki_read_32((mc68kcpu), ea);
-
- m68ki_write_32((mc68kcpu), ea, res);
-
- (mc68kcpu)->n_flag = NFLAG_32(res);
- (mc68kcpu)->not_z_flag = res;
- (mc68kcpu)->c_flag = CFLAG_CLEAR;
- (mc68kcpu)->v_flag = VFLAG_CLEAR;
-}
-
-
-void m68000_base_device_ops::m68k_op_eor_32_pi(m68000_base_device* mc68kcpu)
-{
- UINT32 ea = EA_AY_PI_32(mc68kcpu);
- UINT32 res = DX(mc68kcpu) ^ m68ki_read_32((mc68kcpu), ea);
-
- m68ki_write_32((mc68kcpu), ea, res);
-
- (mc68kcpu)->n_flag = NFLAG_32(res);
- (mc68kcpu)->not_z_flag = res;
- (mc68kcpu)->c_flag = CFLAG_CLEAR;
- (mc68kcpu)->v_flag = VFLAG_CLEAR;
-}
-
-
-void m68000_base_device_ops::m68k_op_eor_32_pd(m68000_base_device* mc68kcpu)
-{
- UINT32 ea = EA_AY_PD_32(mc68kcpu);
- UINT32 res = DX(mc68kcpu) ^ m68ki_read_32((mc68kcpu), ea);
-
- m68ki_write_32((mc68kcpu), ea, res);
-
- (mc68kcpu)->n_flag = NFLAG_32(res);
- (mc68kcpu)->not_z_flag = res;
- (mc68kcpu)->c_flag = CFLAG_CLEAR;
- (mc68kcpu)->v_flag = VFLAG_CLEAR;
-}
-
-
-void m68000_base_device_ops::m68k_op_eor_32_di(m68000_base_device* mc68kcpu)
-{
- UINT32 ea = EA_AY_DI_32(mc68kcpu);
- UINT32 res = DX(mc68kcpu) ^ m68ki_read_32((mc68kcpu), ea);
-
- m68ki_write_32((mc68kcpu), ea, res);
-
- (mc68kcpu)->n_flag = NFLAG_32(res);
- (mc68kcpu)->not_z_flag = res;
- (mc68kcpu)->c_flag = CFLAG_CLEAR;
- (mc68kcpu)->v_flag = VFLAG_CLEAR;
-}
-
-
-void m68000_base_device_ops::m68k_op_eor_32_ix(m68000_base_device* mc68kcpu)
-{
- UINT32 ea = EA_AY_IX_32(mc68kcpu);
- UINT32 res = DX(mc68kcpu) ^ m68ki_read_32((mc68kcpu), ea);
-
- m68ki_write_32((mc68kcpu), ea, res);
-
- (mc68kcpu)->n_flag = NFLAG_32(res);
- (mc68kcpu)->not_z_flag = res;
- (mc68kcpu)->c_flag = CFLAG_CLEAR;
- (mc68kcpu)->v_flag = VFLAG_CLEAR;
-}
-
-
-void m68000_base_device_ops::m68k_op_eor_32_aw(m68000_base_device* mc68kcpu)
-{
- UINT32 ea = EA_AW_32(mc68kcpu);
- UINT32 res = DX(mc68kcpu) ^ m68ki_read_32((mc68kcpu), ea);
-
- m68ki_write_32((mc68kcpu), ea, res);
-
- (mc68kcpu)->n_flag = NFLAG_32(res);
- (mc68kcpu)->not_z_flag = res;
- (mc68kcpu)->c_flag = CFLAG_CLEAR;
- (mc68kcpu)->v_flag = VFLAG_CLEAR;
-}
-
-
-void m68000_base_device_ops::m68k_op_eor_32_al(m68000_base_device* mc68kcpu)
-{
- UINT32 ea = EA_AL_32(mc68kcpu);
- UINT32 res = DX(mc68kcpu) ^ m68ki_read_32((mc68kcpu), ea);
-
- m68ki_write_32((mc68kcpu), ea, res);
-
- (mc68kcpu)->n_flag = NFLAG_32(res);
- (mc68kcpu)->not_z_flag = res;
- (mc68kcpu)->c_flag = CFLAG_CLEAR;
- (mc68kcpu)->v_flag = VFLAG_CLEAR;
-}
-
-
-void m68000_base_device_ops::m68k_op_eori_8_d(m68000_base_device* mc68kcpu)
-{
- UINT32 res = MASK_OUT_ABOVE_8(DY(mc68kcpu) ^= OPER_I_8(mc68kcpu));
-
- (mc68kcpu)->n_flag = NFLAG_8(res);
- (mc68kcpu)->not_z_flag = res;
- (mc68kcpu)->c_flag = CFLAG_CLEAR;
- (mc68kcpu)->v_flag = VFLAG_CLEAR;
-}
-
-
-void m68000_base_device_ops::m68k_op_eori_8_ai(m68000_base_device* mc68kcpu)
-{
- UINT32 src = OPER_I_8(mc68kcpu);
- UINT32 ea = EA_AY_AI_8(mc68kcpu);
- UINT32 res = src ^ m68ki_read_8((mc68kcpu), ea);
-
- m68ki_write_8((mc68kcpu), ea, res);
-
- (mc68kcpu)->n_flag = NFLAG_8(res);
- (mc68kcpu)->not_z_flag = res;
- (mc68kcpu)->c_flag = CFLAG_CLEAR;
- (mc68kcpu)->v_flag = VFLAG_CLEAR;
-}
-
-
-void m68000_base_device_ops::m68k_op_eori_8_pi(m68000_base_device* mc68kcpu)
-{
- UINT32 src = OPER_I_8(mc68kcpu);
- UINT32 ea = EA_AY_PI_8(mc68kcpu);
- UINT32 res = src ^ m68ki_read_8((mc68kcpu), ea);
-
- m68ki_write_8((mc68kcpu), ea, res);
-
- (mc68kcpu)->n_flag = NFLAG_8(res);
- (mc68kcpu)->not_z_flag = res;
- (mc68kcpu)->c_flag = CFLAG_CLEAR;
- (mc68kcpu)->v_flag = VFLAG_CLEAR;
-}
-
-
-void m68000_base_device_ops::m68k_op_eori_8_pi7(m68000_base_device* mc68kcpu)
-{
- UINT32 src = OPER_I_8(mc68kcpu);
- UINT32 ea = EA_A7_PI_8(mc68kcpu);
- UINT32 res = src ^ m68ki_read_8((mc68kcpu), ea);
-
- m68ki_write_8((mc68kcpu), ea, res);
-
- (mc68kcpu)->n_flag = NFLAG_8(res);
- (mc68kcpu)->not_z_flag = res;
- (mc68kcpu)->c_flag = CFLAG_CLEAR;
- (mc68kcpu)->v_flag = VFLAG_CLEAR;
-}
-
-
-void m68000_base_device_ops::m68k_op_eori_8_pd(m68000_base_device* mc68kcpu)
-{
- UINT32 src = OPER_I_8(mc68kcpu);
- UINT32 ea = EA_AY_PD_8(mc68kcpu);
- UINT32 res = src ^ m68ki_read_8((mc68kcpu), ea);
-
- m68ki_write_8((mc68kcpu), ea, res);
-
- (mc68kcpu)->n_flag = NFLAG_8(res);
- (mc68kcpu)->not_z_flag = res;
- (mc68kcpu)->c_flag = CFLAG_CLEAR;
- (mc68kcpu)->v_flag = VFLAG_CLEAR;
-}
-
-
-void m68000_base_device_ops::m68k_op_eori_8_pd7(m68000_base_device* mc68kcpu)
-{
- UINT32 src = OPER_I_8(mc68kcpu);
- UINT32 ea = EA_A7_PD_8(mc68kcpu);
- UINT32 res = src ^ m68ki_read_8((mc68kcpu), ea);
-
- m68ki_write_8((mc68kcpu), ea, res);
-
- (mc68kcpu)->n_flag = NFLAG_8(res);
- (mc68kcpu)->not_z_flag = res;
- (mc68kcpu)->c_flag = CFLAG_CLEAR;
- (mc68kcpu)->v_flag = VFLAG_CLEAR;
-}
-
-
-void m68000_base_device_ops::m68k_op_eori_8_di(m68000_base_device* mc68kcpu)
-{
- UINT32 src = OPER_I_8(mc68kcpu);
- UINT32 ea = EA_AY_DI_8(mc68kcpu);
- UINT32 res = src ^ m68ki_read_8((mc68kcpu), ea);
-
- m68ki_write_8((mc68kcpu), ea, res);
-
- (mc68kcpu)->n_flag = NFLAG_8(res);
- (mc68kcpu)->not_z_flag = res;
- (mc68kcpu)->c_flag = CFLAG_CLEAR;
- (mc68kcpu)->v_flag = VFLAG_CLEAR;
-}
-
-
-void m68000_base_device_ops::m68k_op_eori_8_ix(m68000_base_device* mc68kcpu)
-{
- UINT32 src = OPER_I_8(mc68kcpu);
- UINT32 ea = EA_AY_IX_8(mc68kcpu);
- UINT32 res = src ^ m68ki_read_8((mc68kcpu), ea);
-
- m68ki_write_8((mc68kcpu), ea, res);
-
- (mc68kcpu)->n_flag = NFLAG_8(res);
- (mc68kcpu)->not_z_flag = res;
- (mc68kcpu)->c_flag = CFLAG_CLEAR;
- (mc68kcpu)->v_flag = VFLAG_CLEAR;
-}
-
-
-void m68000_base_device_ops::m68k_op_eori_8_aw(m68000_base_device* mc68kcpu)
-{
- UINT32 src = OPER_I_8(mc68kcpu);
- UINT32 ea = EA_AW_8(mc68kcpu);
- UINT32 res = src ^ m68ki_read_8((mc68kcpu), ea);
-
- m68ki_write_8((mc68kcpu), ea, res);
-
- (mc68kcpu)->n_flag = NFLAG_8(res);
- (mc68kcpu)->not_z_flag = res;
- (mc68kcpu)->c_flag = CFLAG_CLEAR;
- (mc68kcpu)->v_flag = VFLAG_CLEAR;
-}
-
-
-void m68000_base_device_ops::m68k_op_eori_8_al(m68000_base_device* mc68kcpu)
-{
- UINT32 src = OPER_I_8(mc68kcpu);
- UINT32 ea = EA_AL_8(mc68kcpu);
- UINT32 res = src ^ m68ki_read_8((mc68kcpu), ea);
-
- m68ki_write_8((mc68kcpu), ea, res);
-
- (mc68kcpu)->n_flag = NFLAG_8(res);
- (mc68kcpu)->not_z_flag = res;
- (mc68kcpu)->c_flag = CFLAG_CLEAR;
- (mc68kcpu)->v_flag = VFLAG_CLEAR;
-}
-
-
-void m68000_base_device_ops::m68k_op_eori_16_d(m68000_base_device* mc68kcpu)
-{
- UINT32 res = MASK_OUT_ABOVE_16(DY(mc68kcpu) ^= OPER_I_16(mc68kcpu));
-
- (mc68kcpu)->n_flag = NFLAG_16(res);
- (mc68kcpu)->not_z_flag = res;
- (mc68kcpu)->c_flag = CFLAG_CLEAR;
- (mc68kcpu)->v_flag = VFLAG_CLEAR;
-}
-
-
-void m68000_base_device_ops::m68k_op_eori_16_ai(m68000_base_device* mc68kcpu)
-{
- UINT32 src = OPER_I_16(mc68kcpu);
- UINT32 ea = EA_AY_AI_16(mc68kcpu);
- UINT32 res = src ^ m68ki_read_16((mc68kcpu), ea);
-
- m68ki_write_16((mc68kcpu), ea, res);
-
- (mc68kcpu)->n_flag = NFLAG_16(res);
- (mc68kcpu)->not_z_flag = res;
- (mc68kcpu)->c_flag = CFLAG_CLEAR;
- (mc68kcpu)->v_flag = VFLAG_CLEAR;
-}
-
-
-void m68000_base_device_ops::m68k_op_eori_16_pi(m68000_base_device* mc68kcpu)
-{
- UINT32 src = OPER_I_16(mc68kcpu);
- UINT32 ea = EA_AY_PI_16(mc68kcpu);
- UINT32 res = src ^ m68ki_read_16((mc68kcpu), ea);
-
- m68ki_write_16((mc68kcpu), ea, res);
-
- (mc68kcpu)->n_flag = NFLAG_16(res);
- (mc68kcpu)->not_z_flag = res;
- (mc68kcpu)->c_flag = CFLAG_CLEAR;
- (mc68kcpu)->v_flag = VFLAG_CLEAR;
-}
-
-
-void m68000_base_device_ops::m68k_op_eori_16_pd(m68000_base_device* mc68kcpu)
-{
- UINT32 src = OPER_I_16(mc68kcpu);
- UINT32 ea = EA_AY_PD_16(mc68kcpu);
- UINT32 res = src ^ m68ki_read_16((mc68kcpu), ea);
-
- m68ki_write_16((mc68kcpu), ea, res);
-
- (mc68kcpu)->n_flag = NFLAG_16(res);
- (mc68kcpu)->not_z_flag = res;
- (mc68kcpu)->c_flag = CFLAG_CLEAR;
- (mc68kcpu)->v_flag = VFLAG_CLEAR;
-}
-
-
-void m68000_base_device_ops::m68k_op_eori_16_di(m68000_base_device* mc68kcpu)
-{
- UINT32 src = OPER_I_16(mc68kcpu);
- UINT32 ea = EA_AY_DI_16(mc68kcpu);
- UINT32 res = src ^ m68ki_read_16((mc68kcpu), ea);
-
- m68ki_write_16((mc68kcpu), ea, res);
-
- (mc68kcpu)->n_flag = NFLAG_16(res);
- (mc68kcpu)->not_z_flag = res;
- (mc68kcpu)->c_flag = CFLAG_CLEAR;
- (mc68kcpu)->v_flag = VFLAG_CLEAR;
-}
-
-
-void m68000_base_device_ops::m68k_op_eori_16_ix(m68000_base_device* mc68kcpu)
-{
- UINT32 src = OPER_I_16(mc68kcpu);
- UINT32 ea = EA_AY_IX_16(mc68kcpu);
- UINT32 res = src ^ m68ki_read_16((mc68kcpu), ea);
-
- m68ki_write_16((mc68kcpu), ea, res);
-
- (mc68kcpu)->n_flag = NFLAG_16(res);
- (mc68kcpu)->not_z_flag = res;
- (mc68kcpu)->c_flag = CFLAG_CLEAR;
- (mc68kcpu)->v_flag = VFLAG_CLEAR;
-}
-
-
-void m68000_base_device_ops::m68k_op_eori_16_aw(m68000_base_device* mc68kcpu)
-{
- UINT32 src = OPER_I_16(mc68kcpu);
- UINT32 ea = EA_AW_16(mc68kcpu);
- UINT32 res = src ^ m68ki_read_16((mc68kcpu), ea);
-
- m68ki_write_16((mc68kcpu), ea, res);
-
- (mc68kcpu)->n_flag = NFLAG_16(res);
- (mc68kcpu)->not_z_flag = res;
- (mc68kcpu)->c_flag = CFLAG_CLEAR;
- (mc68kcpu)->v_flag = VFLAG_CLEAR;
-}
-
-
-void m68000_base_device_ops::m68k_op_eori_16_al(m68000_base_device* mc68kcpu)
-{
- UINT32 src = OPER_I_16(mc68kcpu);
- UINT32 ea = EA_AL_16(mc68kcpu);
- UINT32 res = src ^ m68ki_read_16((mc68kcpu), ea);
-
- m68ki_write_16((mc68kcpu), ea, res);
-
- (mc68kcpu)->n_flag = NFLAG_16(res);
- (mc68kcpu)->not_z_flag = res;
- (mc68kcpu)->c_flag = CFLAG_CLEAR;
- (mc68kcpu)->v_flag = VFLAG_CLEAR;
-}
-
-
-void m68000_base_device_ops::m68k_op_eori_32_d(m68000_base_device* mc68kcpu)
-{
- UINT32 res = DY(mc68kcpu) ^= OPER_I_32(mc68kcpu);
-
- (mc68kcpu)->n_flag = NFLAG_32(res);
- (mc68kcpu)->not_z_flag = res;
- (mc68kcpu)->c_flag = CFLAG_CLEAR;
- (mc68kcpu)->v_flag = VFLAG_CLEAR;
-}
-
-
-void m68000_base_device_ops::m68k_op_eori_32_ai(m68000_base_device* mc68kcpu)
-{
- UINT32 src = OPER_I_32(mc68kcpu);
- UINT32 ea = EA_AY_AI_32(mc68kcpu);
- UINT32 res = src ^ m68ki_read_32((mc68kcpu), ea);
-
- m68ki_write_32((mc68kcpu), ea, res);
-
- (mc68kcpu)->n_flag = NFLAG_32(res);
- (mc68kcpu)->not_z_flag = res;
- (mc68kcpu)->c_flag = CFLAG_CLEAR;
- (mc68kcpu)->v_flag = VFLAG_CLEAR;
-}
-
-
-void m68000_base_device_ops::m68k_op_eori_32_pi(m68000_base_device* mc68kcpu)
-{
- UINT32 src = OPER_I_32(mc68kcpu);
- UINT32 ea = EA_AY_PI_32(mc68kcpu);
- UINT32 res = src ^ m68ki_read_32((mc68kcpu), ea);
-
- m68ki_write_32((mc68kcpu), ea, res);
-
- (mc68kcpu)->n_flag = NFLAG_32(res);
- (mc68kcpu)->not_z_flag = res;
- (mc68kcpu)->c_flag = CFLAG_CLEAR;
- (mc68kcpu)->v_flag = VFLAG_CLEAR;
-}
-
-
-void m68000_base_device_ops::m68k_op_eori_32_pd(m68000_base_device* mc68kcpu)
-{
- UINT32 src = OPER_I_32(mc68kcpu);
- UINT32 ea = EA_AY_PD_32(mc68kcpu);
- UINT32 res = src ^ m68ki_read_32((mc68kcpu), ea);
-
- m68ki_write_32((mc68kcpu), ea, res);
-
- (mc68kcpu)->n_flag = NFLAG_32(res);
- (mc68kcpu)->not_z_flag = res;
- (mc68kcpu)->c_flag = CFLAG_CLEAR;
- (mc68kcpu)->v_flag = VFLAG_CLEAR;
-}
-
-
-void m68000_base_device_ops::m68k_op_eori_32_di(m68000_base_device* mc68kcpu)
-{
- UINT32 src = OPER_I_32(mc68kcpu);
- UINT32 ea = EA_AY_DI_32(mc68kcpu);
- UINT32 res = src ^ m68ki_read_32((mc68kcpu), ea);
-
- m68ki_write_32((mc68kcpu), ea, res);
-
- (mc68kcpu)->n_flag = NFLAG_32(res);
- (mc68kcpu)->not_z_flag = res;
- (mc68kcpu)->c_flag = CFLAG_CLEAR;
- (mc68kcpu)->v_flag = VFLAG_CLEAR;
-}
-
-
-void m68000_base_device_ops::m68k_op_eori_32_ix(m68000_base_device* mc68kcpu)
-{
- UINT32 src = OPER_I_32(mc68kcpu);
- UINT32 ea = EA_AY_IX_32(mc68kcpu);
- UINT32 res = src ^ m68ki_read_32((mc68kcpu), ea);
-
- m68ki_write_32((mc68kcpu), ea, res);
-
- (mc68kcpu)->n_flag = NFLAG_32(res);
- (mc68kcpu)->not_z_flag = res;
- (mc68kcpu)->c_flag = CFLAG_CLEAR;
- (mc68kcpu)->v_flag = VFLAG_CLEAR;
-}
-
-
-void m68000_base_device_ops::m68k_op_eori_32_aw(m68000_base_device* mc68kcpu)
-{
- UINT32 src = OPER_I_32(mc68kcpu);
- UINT32 ea = EA_AW_32(mc68kcpu);
- UINT32 res = src ^ m68ki_read_32((mc68kcpu), ea);
-
- m68ki_write_32((mc68kcpu), ea, res);
-
- (mc68kcpu)->n_flag = NFLAG_32(res);
- (mc68kcpu)->not_z_flag = res;
- (mc68kcpu)->c_flag = CFLAG_CLEAR;
- (mc68kcpu)->v_flag = VFLAG_CLEAR;
-}
-
-
-void m68000_base_device_ops::m68k_op_eori_32_al(m68000_base_device* mc68kcpu)
-{
- UINT32 src = OPER_I_32(mc68kcpu);
- UINT32 ea = EA_AL_32(mc68kcpu);
- UINT32 res = src ^ m68ki_read_32((mc68kcpu), ea);
-
- m68ki_write_32((mc68kcpu), ea, res);
-
- (mc68kcpu)->n_flag = NFLAG_32(res);
- (mc68kcpu)->not_z_flag = res;
- (mc68kcpu)->c_flag = CFLAG_CLEAR;
- (mc68kcpu)->v_flag = VFLAG_CLEAR;
-}
-
-
-void m68000_base_device_ops::m68k_op_eori_16_toc(m68000_base_device* mc68kcpu)
-{
- m68ki_set_ccr((mc68kcpu), m68ki_get_ccr(mc68kcpu) ^ OPER_I_16(mc68kcpu));
-}
-
-
-void m68000_base_device_ops::m68k_op_eori_16_tos(m68000_base_device* mc68kcpu)
-{
- if((mc68kcpu)->s_flag)
- {
- UINT32 src = OPER_I_16(mc68kcpu);
- m68ki_trace_t0(mc68kcpu); /* auto-disable (see m68kcpu.h) */
- m68ki_set_sr((mc68kcpu), m68ki_get_sr(mc68kcpu) ^ src);
- return;
- }
- m68ki_exception_privilege_violation(mc68kcpu);
-}
-
-
-void m68000_base_device_ops::m68k_op_exg_32_dd(m68000_base_device* mc68kcpu)
-{
- UINT32* reg_a = &DX(mc68kcpu);
- UINT32* reg_b = &DY(mc68kcpu);
- UINT32 tmp = *reg_a;
- *reg_a = *reg_b;
- *reg_b = tmp;
-}
-
-
-void m68000_base_device_ops::m68k_op_exg_32_aa(m68000_base_device* mc68kcpu)
-{
- UINT32* reg_a = &AX(mc68kcpu);
- UINT32* reg_b = &AY(mc68kcpu);
- UINT32 tmp = *reg_a;
- *reg_a = *reg_b;
- *reg_b = tmp;
-}
-
-
-void m68000_base_device_ops::m68k_op_exg_32_da(m68000_base_device* mc68kcpu)
-{
- UINT32* reg_a = &DX(mc68kcpu);
- UINT32* reg_b = &AY(mc68kcpu);
- UINT32 tmp = *reg_a;
- *reg_a = *reg_b;
- *reg_b = tmp;
-}
-
-
-void m68000_base_device_ops::m68k_op_ext_16(m68000_base_device* mc68kcpu)
-{
- UINT32* r_dst = &DY(mc68kcpu);
-
- *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;
-}
-
-
-void m68000_base_device_ops::m68k_op_ext_32(m68000_base_device* mc68kcpu)
-{
- UINT32* r_dst = &DY(mc68kcpu);
-
- *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;
-}
-
-
-void m68000_base_device_ops::m68k_op_extb_32(m68000_base_device* mc68kcpu)
-{
- if(CPU_TYPE_IS_EC020_PLUS((mc68kcpu)->cpu_type))
- {
- UINT32* r_dst = &DY(mc68kcpu);
-
- *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;
- return;
- }
- m68ki_exception_illegal(mc68kcpu);
-}
-
-
-void m68000_base_device_ops::m68k_op_illegal(m68000_base_device* mc68kcpu)
-{
- m68ki_exception_illegal(mc68kcpu);
-}
-
-
-void m68000_base_device_ops::m68k_op_jmp_32_ai(m68000_base_device* mc68kcpu)
-{
- m68ki_jump((mc68kcpu), EA_AY_AI_32(mc68kcpu));
- m68ki_trace_t0(mc68kcpu); /* auto-disable (see m68kcpu.h) */
- if(REG_PC(mc68kcpu) == REG_PPC(mc68kcpu) && (mc68kcpu)->remaining_cycles > 0)
- (mc68kcpu)->remaining_cycles = 0;
-}
-
-
-void m68000_base_device_ops::m68k_op_jmp_32_di(m68000_base_device* mc68kcpu)
-{
- m68ki_jump((mc68kcpu), EA_AY_DI_32(mc68kcpu));
- m68ki_trace_t0(mc68kcpu); /* auto-disable (see m68kcpu.h) */
- if(REG_PC(mc68kcpu) == REG_PPC(mc68kcpu) && (mc68kcpu)->remaining_cycles > 0)
- (mc68kcpu)->remaining_cycles = 0;
-}
-
-
-void m68000_base_device_ops::m68k_op_jmp_32_ix(m68000_base_device* mc68kcpu)
-{
- m68ki_jump((mc68kcpu), EA_AY_IX_32(mc68kcpu));
- m68ki_trace_t0(mc68kcpu); /* auto-disable (see m68kcpu.h) */
- if(REG_PC(mc68kcpu) == REG_PPC(mc68kcpu) && (mc68kcpu)->remaining_cycles > 0)
- (mc68kcpu)->remaining_cycles = 0;
-}
-
-
-void m68000_base_device_ops::m68k_op_jmp_32_aw(m68000_base_device* mc68kcpu)
-{
- m68ki_jump((mc68kcpu), EA_AW_32(mc68kcpu));
- m68ki_trace_t0(mc68kcpu); /* auto-disable (see m68kcpu.h) */
- if(REG_PC(mc68kcpu) == REG_PPC(mc68kcpu) && (mc68kcpu)->remaining_cycles > 0)
- (mc68kcpu)->remaining_cycles = 0;
-}
-
-
-void m68000_base_device_ops::m68k_op_jmp_32_al(m68000_base_device* mc68kcpu)
-{
- m68ki_jump((mc68kcpu), EA_AL_32(mc68kcpu));
- m68ki_trace_t0(mc68kcpu); /* auto-disable (see m68kcpu.h) */
- if(REG_PC(mc68kcpu) == REG_PPC(mc68kcpu) && (mc68kcpu)->remaining_cycles > 0)
- (mc68kcpu)->remaining_cycles = 0;
-}
-
-
-void m68000_base_device_ops::m68k_op_jmp_32_pcdi(m68000_base_device* mc68kcpu)
-{
- m68ki_jump((mc68kcpu), EA_PCDI_32(mc68kcpu));
- m68ki_trace_t0(mc68kcpu); /* auto-disable (see m68kcpu.h) */
- if(REG_PC(mc68kcpu) == REG_PPC(mc68kcpu) && (mc68kcpu)->remaining_cycles > 0)
- (mc68kcpu)->remaining_cycles = 0;
-}
-
-
-void m68000_base_device_ops::m68k_op_jmp_32_pcix(m68000_base_device* mc68kcpu)
-{
- m68ki_jump((mc68kcpu), EA_PCIX_32(mc68kcpu));
- m68ki_trace_t0(mc68kcpu); /* auto-disable (see m68kcpu.h) */
- if(REG_PC(mc68kcpu) == REG_PPC(mc68kcpu) && (mc68kcpu)->remaining_cycles > 0)
- (mc68kcpu)->remaining_cycles = 0;
-}
-
-
-void m68000_base_device_ops::m68k_op_jsr_32_ai(m68000_base_device* mc68kcpu)
-{
- UINT32 ea = EA_AY_AI_32(mc68kcpu);
- m68ki_trace_t0(mc68kcpu); /* auto-disable (see m68kcpu.h) */
- m68ki_push_32((mc68kcpu), REG_PC(mc68kcpu));
- m68ki_jump((mc68kcpu), ea);
-}
-
-
-void m68000_base_device_ops::m68k_op_jsr_32_di(m68000_base_device* mc68kcpu)
-{
- UINT32 ea = EA_AY_DI_32(mc68kcpu);
- m68ki_trace_t0(mc68kcpu); /* auto-disable (see m68kcpu.h) */
- m68ki_push_32((mc68kcpu), REG_PC(mc68kcpu));
- m68ki_jump((mc68kcpu), ea);
-}
-
-
-void m68000_base_device_ops::m68k_op_jsr_32_ix(m68000_base_device* mc68kcpu)
-{
- UINT32 ea = EA_AY_IX_32(mc68kcpu);
- m68ki_trace_t0(mc68kcpu); /* auto-disable (see m68kcpu.h) */
- m68ki_push_32((mc68kcpu), REG_PC(mc68kcpu));
- m68ki_jump((mc68kcpu), ea);
-}
-
-
-void m68000_base_device_ops::m68k_op_jsr_32_aw(m68000_base_device* mc68kcpu)
-{
- UINT32 ea = EA_AW_32(mc68kcpu);
- m68ki_trace_t0(mc68kcpu); /* auto-disable (see m68kcpu.h) */
- m68ki_push_32((mc68kcpu), REG_PC(mc68kcpu));
- m68ki_jump((mc68kcpu), ea);
-}
-
-
-void m68000_base_device_ops::m68k_op_jsr_32_al(m68000_base_device* mc68kcpu)
-{
- UINT32 ea = EA_AL_32(mc68kcpu);
- m68ki_trace_t0(mc68kcpu); /* auto-disable (see m68kcpu.h) */
- m68ki_push_32((mc68kcpu), REG_PC(mc68kcpu));
- m68ki_jump((mc68kcpu), ea);
-}
-
-
-void m68000_base_device_ops::m68k_op_jsr_32_pcdi(m68000_base_device* mc68kcpu)
-{
- UINT32 ea = EA_PCDI_32(mc68kcpu);
- m68ki_trace_t0(mc68kcpu); /* auto-disable (see m68kcpu.h) */
- m68ki_push_32((mc68kcpu), REG_PC(mc68kcpu));
- m68ki_jump((mc68kcpu), ea);
-}
-
-
-void m68000_base_device_ops::m68k_op_jsr_32_pcix(m68000_base_device* mc68kcpu)
-{
- UINT32 ea = EA_PCIX_32(mc68kcpu);
- m68ki_trace_t0(mc68kcpu); /* auto-disable (see m68kcpu.h) */
- m68ki_push_32((mc68kcpu), REG_PC(mc68kcpu));
- m68ki_jump((mc68kcpu), ea);
-}
-
-
-void m68000_base_device_ops::m68k_op_lea_32_ai(m68000_base_device* mc68kcpu)
-{
- AX(mc68kcpu) = EA_AY_AI_32(mc68kcpu);
-}
-
-
-void m68000_base_device_ops::m68k_op_lea_32_di(m68000_base_device* mc68kcpu)
-{
- AX(mc68kcpu) = EA_AY_DI_32(mc68kcpu);
-}
-
-
-void m68000_base_device_ops::m68k_op_lea_32_ix(m68000_base_device* mc68kcpu)
-{
- AX(mc68kcpu) = EA_AY_IX_32(mc68kcpu);
-}
-
-
-void m68000_base_device_ops::m68k_op_lea_32_aw(m68000_base_device* mc68kcpu)
-{
- AX(mc68kcpu) = EA_AW_32(mc68kcpu);
-}
-
-
-void m68000_base_device_ops::m68k_op_lea_32_al(m68000_base_device* mc68kcpu)
-{
- AX(mc68kcpu) = EA_AL_32(mc68kcpu);
-}
-
-
-void m68000_base_device_ops::m68k_op_lea_32_pcdi(m68000_base_device* mc68kcpu)
-{
- AX(mc68kcpu) = EA_PCDI_32(mc68kcpu);
-}
-
-
-void m68000_base_device_ops::m68k_op_lea_32_pcix(m68000_base_device* mc68kcpu)
-{
- AX(mc68kcpu) = EA_PCIX_32(mc68kcpu);
-}
-
-
-void m68000_base_device_ops::m68k_op_link_16_a7(m68000_base_device* mc68kcpu)
-{
- 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)));
-}
-
-
-void m68000_base_device_ops::m68k_op_link_16(m68000_base_device* mc68kcpu)
-{
- UINT32* r_dst = &AY(mc68kcpu);
-
- 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)));
-}
-
-
-void m68000_base_device_ops::m68k_op_link_32_a7(m68000_base_device* mc68kcpu)
-{
- if(CPU_TYPE_IS_EC020_PLUS((mc68kcpu)->cpu_type))
- {
- 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));
- return;
- }
- m68ki_exception_illegal(mc68kcpu);
-}
-
-
-void m68000_base_device_ops::m68k_op_link_32(m68000_base_device* mc68kcpu)
-{
- if(CPU_TYPE_IS_EC020_PLUS((mc68kcpu)->cpu_type))
- {
- UINT32* r_dst = &AY(mc68kcpu);
-
- 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));
- return;
- }
- m68ki_exception_illegal(mc68kcpu);
-}
-
-
-void m68000_base_device_ops::m68k_op_lsr_8_s(m68000_base_device* mc68kcpu)
-{
- UINT32* r_dst = &DY(mc68kcpu);
- UINT32 shift = ((((mc68kcpu)->ir >> 9) - 1) & 7) + 1;
- UINT32 src = MASK_OUT_ABOVE_8(*r_dst);
- UINT32 res = src >> shift;
-
- if(shift != 0)
- (mc68kcpu)->remaining_cycles -= shift<<(mc68kcpu)->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;
-}
-
-
-void m68000_base_device_ops::m68k_op_lsr_16_s(m68000_base_device* mc68kcpu)
-{
- UINT32* r_dst = &DY(mc68kcpu);
- UINT32 shift = ((((mc68kcpu)->ir >> 9) - 1) & 7) + 1;
- UINT32 src = MASK_OUT_ABOVE_16(*r_dst);
- UINT32 res = src >> shift;
-
- if(shift != 0)
- (mc68kcpu)->remaining_cycles -= shift<<(mc68kcpu)->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;
-}
-
-
-void m68000_base_device_ops::m68k_op_lsr_32_s(m68000_base_device* mc68kcpu)
-{
- UINT32* r_dst = &DY(mc68kcpu);
- UINT32 shift = ((((mc68kcpu)->ir >> 9) - 1) & 7) + 1;
- UINT32 src = *r_dst;
- UINT32 res = src >> shift;
-
- if(shift != 0)
- (mc68kcpu)->remaining_cycles -= shift<<(mc68kcpu)->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;
-}
-
-
-void m68000_base_device_ops::m68k_op_lsr_8_r(m68000_base_device* mc68kcpu)
-{
- UINT32* r_dst = &DY(mc68kcpu);
- UINT32 shift = DX(mc68kcpu) & 0x3f;
- UINT32 src = MASK_OUT_ABOVE_8(*r_dst);
- UINT32 res = src >> shift;
-
- if(shift != 0)
- {
- (mc68kcpu)->remaining_cycles -= shift<<(mc68kcpu)->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;
- 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;
- return;
- }
-
- (mc68kcpu)->c_flag = CFLAG_CLEAR;
- (mc68kcpu)->n_flag = NFLAG_8(src);
- (mc68kcpu)->not_z_flag = src;
- (mc68kcpu)->v_flag = VFLAG_CLEAR;
-}
-
-
-void m68000_base_device_ops::m68k_op_lsr_16_r(m68000_base_device* mc68kcpu)
-{
- UINT32* r_dst = &DY(mc68kcpu);
- UINT32 shift = DX(mc68kcpu) & 0x3f;
- UINT32 src = MASK_OUT_ABOVE_16(*r_dst);
- UINT32 res = src >> shift;
-
- if(shift != 0)
- {
- (mc68kcpu)->remaining_cycles -= shift<<(mc68kcpu)->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;
- 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;
- return;
- }
-
- (mc68kcpu)->c_flag = CFLAG_CLEAR;
- (mc68kcpu)->n_flag = NFLAG_16(src);
- (mc68kcpu)->not_z_flag = src;
- (mc68kcpu)->v_flag = VFLAG_CLEAR;
-}
-
-
-void m68000_base_device_ops::m68k_op_lsr_32_r(m68000_base_device* mc68kcpu)
-{
- UINT32* r_dst = &DY(mc68kcpu);
- UINT32 shift = DX(mc68kcpu) & 0x3f;
- UINT32 src = *r_dst;
- UINT32 res = src >> shift;
-
- if(shift != 0)
- {
- (mc68kcpu)->remaining_cycles -= shift<<(mc68kcpu)->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;
- 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;
- return;
- }
-
- (mc68kcpu)->c_flag = CFLAG_CLEAR;
- (mc68kcpu)->n_flag = NFLAG_32(src);
- (mc68kcpu)->not_z_flag = src;
- (mc68kcpu)->v_flag = VFLAG_CLEAR;
-}
-
-
-void m68000_base_device_ops::m68k_op_lsr_16_ai(m68000_base_device* mc68kcpu)
-{
- UINT32 ea = EA_AY_AI_16(mc68kcpu);
- UINT32 src = m68ki_read_16((mc68kcpu), ea);
- UINT32 res = src >> 1;
-
- m68ki_write_16((mc68kcpu), 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;
-}
-
-
-void m68000_base_device_ops::m68k_op_lsr_16_pi(m68000_base_device* mc68kcpu)
-{
- UINT32 ea = EA_AY_PI_16(mc68kcpu);
- UINT32 src = m68ki_read_16((mc68kcpu), ea);
- UINT32 res = src >> 1;
-
- m68ki_write_16((mc68kcpu), 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;
-}
-
-
-void m68000_base_device_ops::m68k_op_lsr_16_pd(m68000_base_device* mc68kcpu)
-{
- UINT32 ea = EA_AY_PD_16(mc68kcpu);
- UINT32 src = m68ki_read_16((mc68kcpu), ea);
- UINT32 res = src >> 1;
-
- m68ki_write_16((mc68kcpu), 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;
-}
-
-
-void m68000_base_device_ops::m68k_op_lsr_16_di(m68000_base_device* mc68kcpu)
-{
- UINT32 ea = EA_AY_DI_16(mc68kcpu);
- UINT32 src = m68ki_read_16((mc68kcpu), ea);
- UINT32 res = src >> 1;
-
- m68ki_write_16((mc68kcpu), 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;
-}
-
-
-void m68000_base_device_ops::m68k_op_lsr_16_ix(m68000_base_device* mc68kcpu)
-{
- UINT32 ea = EA_AY_IX_16(mc68kcpu);
- UINT32 src = m68ki_read_16((mc68kcpu), ea);
- UINT32 res = src >> 1;
-
- m68ki_write_16((mc68kcpu), 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;
-}
-
-
-void m68000_base_device_ops::m68k_op_lsr_16_aw(m68000_base_device* mc68kcpu)
-{
- UINT32 ea = EA_AW_16(mc68kcpu);
- UINT32 src = m68ki_read_16((mc68kcpu), ea);
- UINT32 res = src >> 1;
-
- m68ki_write_16((mc68kcpu), 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;
-}
-
-
-void m68000_base_device_ops::m68k_op_lsr_16_al(m68000_base_device* mc68kcpu)
-{
- UINT32 ea = EA_AL_16(mc68kcpu);
- UINT32 src = m68ki_read_16((mc68kcpu), ea);
- UINT32 res = src >> 1;
-
- m68ki_write_16((mc68kcpu), 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;
-}
-
-
-void m68000_base_device_ops::m68k_op_lsl_8_s(m68000_base_device* mc68kcpu)
-{
- UINT32* r_dst = &DY(mc68kcpu);
- UINT32 shift = ((((mc68kcpu)->ir >> 9) - 1) & 7) + 1;
- UINT32 src = MASK_OUT_ABOVE_8(*r_dst);
- UINT32 res = MASK_OUT_ABOVE_8(src << shift);
-
- if(shift != 0)
- (mc68kcpu)->remaining_cycles -= shift<<(mc68kcpu)->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;
-}
-
-
-void m68000_base_device_ops::m68k_op_lsl_16_s(m68000_base_device* mc68kcpu)
-{
- UINT32* r_dst = &DY(mc68kcpu);
- UINT32 shift = ((((mc68kcpu)->ir >> 9) - 1) & 7) + 1;
- UINT32 src = MASK_OUT_ABOVE_16(*r_dst);
- UINT32 res = MASK_OUT_ABOVE_16(src << shift);
-
- if(shift != 0)
- (mc68kcpu)->remaining_cycles -= shift<<(mc68kcpu)->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;
-}
-
-
-void m68000_base_device_ops::m68k_op_lsl_32_s(m68000_base_device* mc68kcpu)
-{
- UINT32* r_dst = &DY(mc68kcpu);
- UINT32 shift = ((((mc68kcpu)->ir >> 9) - 1) & 7) + 1;
- UINT32 src = *r_dst;
- UINT32 res = MASK_OUT_ABOVE_32(src << shift);
-
- if(shift != 0)
- (mc68kcpu)->remaining_cycles -= shift<<(mc68kcpu)->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;
-}
-
-
-void m68000_base_device_ops::m68k_op_lsl_8_r(m68000_base_device* mc68kcpu)
-{
- UINT32* r_dst = &DY(mc68kcpu);
- UINT32 shift = DX(mc68kcpu) & 0x3f;
- UINT32 src = MASK_OUT_ABOVE_8(*r_dst);
- UINT32 res = MASK_OUT_ABOVE_8(src << shift);
-
- if(shift != 0)
- {
- (mc68kcpu)->remaining_cycles -= shift<<(mc68kcpu)->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;
- 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;
- return;
- }
-
- (mc68kcpu)->c_flag = CFLAG_CLEAR;
- (mc68kcpu)->n_flag = NFLAG_8(src);
- (mc68kcpu)->not_z_flag = src;
- (mc68kcpu)->v_flag = VFLAG_CLEAR;
-}
-
-
-void m68000_base_device_ops::m68k_op_lsl_16_r(m68000_base_device* mc68kcpu)
-{
- UINT32* r_dst = &DY(mc68kcpu);
- UINT32 shift = DX(mc68kcpu) & 0x3f;
- UINT32 src = MASK_OUT_ABOVE_16(*r_dst);
- UINT32 res = MASK_OUT_ABOVE_16(src << shift);
-
- if(shift != 0)
- {
- (mc68kcpu)->remaining_cycles -= shift<<(mc68kcpu)->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;
- 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;
- return;
- }
-
- (mc68kcpu)->c_flag = CFLAG_CLEAR;
- (mc68kcpu)->n_flag = NFLAG_16(src);
- (mc68kcpu)->not_z_flag = src;
- (mc68kcpu)->v_flag = VFLAG_CLEAR;
-}
-
-
-void m68000_base_device_ops::m68k_op_lsl_32_r(m68000_base_device* mc68kcpu)
-{
- UINT32* r_dst = &DY(mc68kcpu);
- UINT32 shift = DX(mc68kcpu) & 0x3f;
- UINT32 src = *r_dst;
- UINT32 res = MASK_OUT_ABOVE_32(src << shift);
-
- if(shift != 0)
- {
- (mc68kcpu)->remaining_cycles -= shift<<(mc68kcpu)->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;
- 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;
- return;
- }
-
- (mc68kcpu)->c_flag = CFLAG_CLEAR;
- (mc68kcpu)->n_flag = NFLAG_32(src);
- (mc68kcpu)->not_z_flag = src;
- (mc68kcpu)->v_flag = VFLAG_CLEAR;
-}
-
-
-void m68000_base_device_ops::m68k_op_lsl_16_ai(m68000_base_device* mc68kcpu)
-{
- UINT32 ea = EA_AY_AI_16(mc68kcpu);
- UINT32 src = m68ki_read_16((mc68kcpu), ea);
- UINT32 res = MASK_OUT_ABOVE_16(src << 1);
-
- m68ki_write_16((mc68kcpu), 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;
-}
-
-
-void m68000_base_device_ops::m68k_op_lsl_16_pi(m68000_base_device* mc68kcpu)
-{
- UINT32 ea = EA_AY_PI_16(mc68kcpu);
- UINT32 src = m68ki_read_16((mc68kcpu), ea);
- UINT32 res = MASK_OUT_ABOVE_16(src << 1);
-
- m68ki_write_16((mc68kcpu), 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;
-}
-
-
-void m68000_base_device_ops::m68k_op_lsl_16_pd(m68000_base_device* mc68kcpu)
-{
- UINT32 ea = EA_AY_PD_16(mc68kcpu);
- UINT32 src = m68ki_read_16((mc68kcpu), ea);
- UINT32 res = MASK_OUT_ABOVE_16(src << 1);
-
- m68ki_write_16((mc68kcpu), 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;
-}
-
-
-void m68000_base_device_ops::m68k_op_lsl_16_di(m68000_base_device* mc68kcpu)
-{
- UINT32 ea = EA_AY_DI_16(mc68kcpu);
- UINT32 src = m68ki_read_16((mc68kcpu), ea);
- UINT32 res = MASK_OUT_ABOVE_16(src << 1);
-
- m68ki_write_16((mc68kcpu), 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;
-}
-
-
-void m68000_base_device_ops::m68k_op_lsl_16_ix(m68000_base_device* mc68kcpu)
-{
- UINT32 ea = EA_AY_IX_16(mc68kcpu);
- UINT32 src = m68ki_read_16((mc68kcpu), ea);
- UINT32 res = MASK_OUT_ABOVE_16(src << 1);
-
- m68ki_write_16((mc68kcpu), 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;
-}
-
-
-void m68000_base_device_ops::m68k_op_lsl_16_aw(m68000_base_device* mc68kcpu)
-{
- UINT32 ea = EA_AW_16(mc68kcpu);
- UINT32 src = m68ki_read_16((mc68kcpu), ea);
- UINT32 res = MASK_OUT_ABOVE_16(src << 1);
-
- m68ki_write_16((mc68kcpu), 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;
-}
-
-
-void m68000_base_device_ops::m68k_op_lsl_16_al(m68000_base_device* mc68kcpu)
-{
- UINT32 ea = EA_AL_16(mc68kcpu);
- UINT32 src = m68ki_read_16((mc68kcpu), ea);
- UINT32 res = MASK_OUT_ABOVE_16(src << 1);
-
- m68ki_write_16((mc68kcpu), 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;
-}
-
-
-void m68000_base_device_ops::m68k_op_move_8_d_d(m68000_base_device* mc68kcpu)
-{
- UINT32 res = MASK_OUT_ABOVE_8(DY(mc68kcpu));
- UINT32* r_dst = &DX(mc68kcpu);
-
- *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;
-}
-
-
-void m68000_base_device_ops::m68k_op_move_8_d_ai(m68000_base_device* mc68kcpu)
-{
- UINT32 res = OPER_AY_AI_8(mc68kcpu);
- UINT32* r_dst = &DX(mc68kcpu);
-
- *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;
-}
-
-
-void m68000_base_device_ops::m68k_op_move_8_d_pi(m68000_base_device* mc68kcpu)
-{
- UINT32 res = OPER_AY_PI_8(mc68kcpu);
- UINT32* r_dst = &DX(mc68kcpu);
-
- *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;
-}
-
-
-void m68000_base_device_ops::m68k_op_move_8_d_pi7(m68000_base_device* mc68kcpu)
-{
- UINT32 res = OPER_A7_PI_8(mc68kcpu);
- UINT32* r_dst = &DX(mc68kcpu);
-
- *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;
-}
-
-
-void m68000_base_device_ops::m68k_op_move_8_d_pd(m68000_base_device* mc68kcpu)
-{
- UINT32 res = OPER_AY_PD_8(mc68kcpu);
- UINT32* r_dst = &DX(mc68kcpu);
-
- *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;
-}
-
-
-void m68000_base_device_ops::m68k_op_move_8_d_pd7(m68000_base_device* mc68kcpu)
-{
- UINT32 res = OPER_A7_PD_8(mc68kcpu);
- UINT32* r_dst = &DX(mc68kcpu);
-
- *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;
-}
-
-
-void m68000_base_device_ops::m68k_op_move_8_d_di(m68000_base_device* mc68kcpu)
-{
- UINT32 res = OPER_AY_DI_8(mc68kcpu);
- UINT32* r_dst = &DX(mc68kcpu);
-
- *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;
-}
-
-
-void m68000_base_device_ops::m68k_op_move_8_d_ix(m68000_base_device* mc68kcpu)
-{
- UINT32 res = OPER_AY_IX_8(mc68kcpu);
- UINT32* r_dst = &DX(mc68kcpu);
-
- *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;
-}
-
-
-void m68000_base_device_ops::m68k_op_move_8_d_aw(m68000_base_device* mc68kcpu)
-{
- UINT32 res = OPER_AW_8(mc68kcpu);
- UINT32* r_dst = &DX(mc68kcpu);
-
- *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;
-}
-
-
-void m68000_base_device_ops::m68k_op_move_8_d_al(m68000_base_device* mc68kcpu)
-{
- UINT32 res = OPER_AL_8(mc68kcpu);
- UINT32* r_dst = &DX(mc68kcpu);
-
- *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;
-}
-
-
-void m68000_base_device_ops::m68k_op_move_8_d_pcdi(m68000_base_device* mc68kcpu)
-{
- UINT32 res = OPER_PCDI_8(mc68kcpu);
- UINT32* r_dst = &DX(mc68kcpu);
-
- *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;
-}
-
-
-void m68000_base_device_ops::m68k_op_move_8_d_pcix(m68000_base_device* mc68kcpu)
-{
- UINT32 res = OPER_PCIX_8(mc68kcpu);
- UINT32* r_dst = &DX(mc68kcpu);
-
- *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;
-}
-
-
-void m68000_base_device_ops::m68k_op_move_8_d_i(m68000_base_device* mc68kcpu)
-{
- UINT32 res = OPER_I_8(mc68kcpu);
- UINT32* r_dst = &DX(mc68kcpu);
-
- *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;
-}
-
-
-void m68000_base_device_ops::m68k_op_move_8_ai_d(m68000_base_device* mc68kcpu)
-{
- UINT32 res = MASK_OUT_ABOVE_8(DY(mc68kcpu));
- UINT32 ea = EA_AX_AI_8(mc68kcpu);
-
- m68ki_write_8((mc68kcpu), ea, res);
-
- (mc68kcpu)->n_flag = NFLAG_8(res);
- (mc68kcpu)->not_z_flag = res;
- (mc68kcpu)->v_flag = VFLAG_CLEAR;
- (mc68kcpu)->c_flag = CFLAG_CLEAR;
-}
-
-
-void m68000_base_device_ops::m68k_op_move_8_ai_ai(m68000_base_device* mc68kcpu)
-{
- UINT32 res = OPER_AY_AI_8(mc68kcpu);
- UINT32 ea = EA_AX_AI_8(mc68kcpu);
-
- m68ki_write_8((mc68kcpu), ea, res);
-
- (mc68kcpu)->n_flag = NFLAG_8(res);
- (mc68kcpu)->not_z_flag = res;
- (mc68kcpu)->v_flag = VFLAG_CLEAR;
- (mc68kcpu)->c_flag = CFLAG_CLEAR;
-}
-
-
-void m68000_base_device_ops::m68k_op_move_8_ai_pi(m68000_base_device* mc68kcpu)
-{
- UINT32 res = OPER_AY_PI_8(mc68kcpu);
- UINT32 ea = EA_AX_AI_8(mc68kcpu);
-
- m68ki_write_8((mc68kcpu), ea, res);
-
- (mc68kcpu)->n_flag = NFLAG_8(res);
- (mc68kcpu)->not_z_flag = res;
- (mc68kcpu)->v_flag = VFLAG_CLEAR;
- (mc68kcpu)->c_flag = CFLAG_CLEAR;
-}
-
-
-void m68000_base_device_ops::m68k_op_move_8_ai_pi7(m68000_base_device* mc68kcpu)
-{
- UINT32 res = OPER_A7_PI_8(mc68kcpu);
- UINT32 ea = EA_AX_AI_8(mc68kcpu);
-
- m68ki_write_8((mc68kcpu), ea, res);
-
- (mc68kcpu)->n_flag = NFLAG_8(res);
- (mc68kcpu)->not_z_flag = res;
- (mc68kcpu)->v_flag = VFLAG_CLEAR;
- (mc68kcpu)->c_flag = CFLAG_CLEAR;
-}
-
-
-void m68000_base_device_ops::m68k_op_move_8_ai_pd(m68000_base_device* mc68kcpu)
-{
- UINT32 res = OPER_AY_PD_8(mc68kcpu);
- UINT32 ea = EA_AX_AI_8(mc68kcpu);
-
- m68ki_write_8((mc68kcpu), ea, res);
-
- (mc68kcpu)->n_flag = NFLAG_8(res);
- (mc68kcpu)->not_z_flag = res;
- (mc68kcpu)->v_flag = VFLAG_CLEAR;
- (mc68kcpu)->c_flag = CFLAG_CLEAR;
-}
-
-
-void m68000_base_device_ops::m68k_op_move_8_ai_pd7(m68000_base_device* mc68kcpu)
-{
- UINT32 res = OPER_A7_PD_8(mc68kcpu);
- UINT32 ea = EA_AX_AI_8(mc68kcpu);
-
- m68ki_write_8((mc68kcpu), ea, res);
-
- (mc68kcpu)->n_flag = NFLAG_8(res);
- (mc68kcpu)->not_z_flag = res;
- (mc68kcpu)->v_flag = VFLAG_CLEAR;
- (mc68kcpu)->c_flag = CFLAG_CLEAR;
-}
-
-
-void m68000_base_device_ops::m68k_op_move_8_ai_di(m68000_base_device* mc68kcpu)
-{
- UINT32 res = OPER_AY_DI_8(mc68kcpu);
- UINT32 ea = EA_AX_AI_8(mc68kcpu);
-
- m68ki_write_8((mc68kcpu), ea, res);
-
- (mc68kcpu)->n_flag = NFLAG_8(res);
- (mc68kcpu)->not_z_flag = res;
- (mc68kcpu)->v_flag = VFLAG_CLEAR;
- (mc68kcpu)->c_flag = CFLAG_CLEAR;
-}
-
-
-void m68000_base_device_ops::m68k_op_move_8_ai_ix(m68000_base_device* mc68kcpu)
-{
- UINT32 res = OPER_AY_IX_8(mc68kcpu);
- UINT32 ea = EA_AX_AI_8(mc68kcpu);
-
- m68ki_write_8((mc68kcpu), ea, res);
-
- (mc68kcpu)->n_flag = NFLAG_8(res);
- (mc68kcpu)->not_z_flag = res;
- (mc68kcpu)->v_flag = VFLAG_CLEAR;
- (mc68kcpu)->c_flag = CFLAG_CLEAR;
-}
-
-
-void m68000_base_device_ops::m68k_op_move_8_ai_aw(m68000_base_device* mc68kcpu)
-{
- UINT32 res = OPER_AW_8(mc68kcpu);
- UINT32 ea = EA_AX_AI_8(mc68kcpu);
-
- m68ki_write_8((mc68kcpu), ea, res);
-
- (mc68kcpu)->n_flag = NFLAG_8(res);
- (mc68kcpu)->not_z_flag = res;
- (mc68kcpu)->v_flag = VFLAG_CLEAR;
- (mc68kcpu)->c_flag = CFLAG_CLEAR;
-}
-
-
-void m68000_base_device_ops::m68k_op_move_8_ai_al(m68000_base_device* mc68kcpu)
-{
- UINT32 res = OPER_AL_8(mc68kcpu);
- UINT32 ea = EA_AX_AI_8(mc68kcpu);
-
- m68ki_write_8((mc68kcpu), ea, res);
-
- (mc68kcpu)->n_flag = NFLAG_8(res);
- (mc68kcpu)->not_z_flag = res;
- (mc68kcpu)->v_flag = VFLAG_CLEAR;
- (mc68kcpu)->c_flag = CFLAG_CLEAR;
-}
-
-
-void m68000_base_device_ops::m68k_op_move_8_ai_pcdi(m68000_base_device* mc68kcpu)
-{
- UINT32 res = OPER_PCDI_8(mc68kcpu);
- UINT32 ea = EA_AX_AI_8(mc68kcpu);
-
- m68ki_write_8((mc68kcpu), ea, res);
-
- (mc68kcpu)->n_flag = NFLAG_8(res);
- (mc68kcpu)->not_z_flag = res;
- (mc68kcpu)->v_flag = VFLAG_CLEAR;
- (mc68kcpu)->c_flag = CFLAG_CLEAR;
-}
-
-
-void m68000_base_device_ops::m68k_op_move_8_ai_pcix(m68000_base_device* mc68kcpu)
-{
- UINT32 res = OPER_PCIX_8(mc68kcpu);
- UINT32 ea = EA_AX_AI_8(mc68kcpu);
-
- m68ki_write_8((mc68kcpu), ea, res);
-
- (mc68kcpu)->n_flag = NFLAG_8(res);
- (mc68kcpu)->not_z_flag = res;
- (mc68kcpu)->v_flag = VFLAG_CLEAR;
- (mc68kcpu)->c_flag = CFLAG_CLEAR;
-}
-
-
-void m68000_base_device_ops::m68k_op_move_8_ai_i(m68000_base_device* mc68kcpu)
-{
- UINT32 res = OPER_I_8(mc68kcpu);
- UINT32 ea = EA_AX_AI_8(mc68kcpu);
-
- m68ki_write_8((mc68kcpu), ea, res);
-
- (mc68kcpu)->n_flag = NFLAG_8(res);
- (mc68kcpu)->not_z_flag = res;
- (mc68kcpu)->v_flag = VFLAG_CLEAR;
- (mc68kcpu)->c_flag = CFLAG_CLEAR;
-}
-
-
-void m68000_base_device_ops::m68k_op_move_8_pi7_d(m68000_base_device* mc68kcpu)
-{
- UINT32 res = MASK_OUT_ABOVE_8(DY(mc68kcpu));
- UINT32 ea = EA_A7_PI_8(mc68kcpu);
-
- m68ki_write_8((mc68kcpu), ea, res);
-
- (mc68kcpu)->n_flag = NFLAG_8(res);
- (mc68kcpu)->not_z_flag = res;
- (mc68kcpu)->v_flag = VFLAG_CLEAR;
- (mc68kcpu)->c_flag = CFLAG_CLEAR;
-}
-
-
-void m68000_base_device_ops::m68k_op_move_8_pi_d(m68000_base_device* mc68kcpu)
-{
- UINT32 res = MASK_OUT_ABOVE_8(DY(mc68kcpu));
- UINT32 ea = EA_AX_PI_8(mc68kcpu);
-
- m68ki_write_8((mc68kcpu), ea, res);
-
- (mc68kcpu)->n_flag = NFLAG_8(res);
- (mc68kcpu)->not_z_flag = res;
- (mc68kcpu)->v_flag = VFLAG_CLEAR;
- (mc68kcpu)->c_flag = CFLAG_CLEAR;
-}
-
-
-void m68000_base_device_ops::m68k_op_move_8_pi7_ai(m68000_base_device* mc68kcpu)
-{
- UINT32 res = OPER_AY_AI_8(mc68kcpu);
- UINT32 ea = EA_A7_PI_8(mc68kcpu);
-
- m68ki_write_8((mc68kcpu), ea, res);
-
- (mc68kcpu)->n_flag = NFLAG_8(res);
- (mc68kcpu)->not_z_flag = res;
- (mc68kcpu)->v_flag = VFLAG_CLEAR;
- (mc68kcpu)->c_flag = CFLAG_CLEAR;
-}
-
-
-void m68000_base_device_ops::m68k_op_move_8_pi7_pi(m68000_base_device* mc68kcpu)
-{
- UINT32 res = OPER_AY_PI_8(mc68kcpu);
- UINT32 ea = EA_A7_PI_8(mc68kcpu);
-
- m68ki_write_8((mc68kcpu), ea, res);
-
- (mc68kcpu)->n_flag = NFLAG_8(res);
- (mc68kcpu)->not_z_flag = res;
- (mc68kcpu)->v_flag = VFLAG_CLEAR;
- (mc68kcpu)->c_flag = CFLAG_CLEAR;
-}
-
-
-void m68000_base_device_ops::m68k_op_move_8_pi7_pi7(m68000_base_device* mc68kcpu)
-{
- UINT32 res = OPER_A7_PI_8(mc68kcpu);
- UINT32 ea = EA_A7_PI_8(mc68kcpu);
-
- m68ki_write_8((mc68kcpu), ea, res);
-
- (mc68kcpu)->n_flag = NFLAG_8(res);
- (mc68kcpu)->not_z_flag = res;
- (mc68kcpu)->v_flag = VFLAG_CLEAR;
- (mc68kcpu)->c_flag = CFLAG_CLEAR;
-}
-
-
-void m68000_base_device_ops::m68k_op_move_8_pi7_pd(m68000_base_device* mc68kcpu)
-{
- UINT32 res = OPER_AY_PD_8(mc68kcpu);
- UINT32 ea = EA_A7_PI_8(mc68kcpu);
-
- m68ki_write_8((mc68kcpu), ea, res);
-
- (mc68kcpu)->n_flag = NFLAG_8(res);
- (mc68kcpu)->not_z_flag = res;
- (mc68kcpu)->v_flag = VFLAG_CLEAR;
- (mc68kcpu)->c_flag = CFLAG_CLEAR;
-}
-
-
-void m68000_base_device_ops::m68k_op_move_8_pi7_pd7(m68000_base_device* mc68kcpu)
-{
- UINT32 res = OPER_A7_PD_8(mc68kcpu);
- UINT32 ea = EA_A7_PI_8(mc68kcpu);
-
- m68ki_write_8((mc68kcpu), ea, res);
-
- (mc68kcpu)->n_flag = NFLAG_8(res);
- (mc68kcpu)->not_z_flag = res;
- (mc68kcpu)->v_flag = VFLAG_CLEAR;
- (mc68kcpu)->c_flag = CFLAG_CLEAR;
-}
-
-
-void m68000_base_device_ops::m68k_op_move_8_pi7_di(m68000_base_device* mc68kcpu)
-{
- UINT32 res = OPER_AY_DI_8(mc68kcpu);
- UINT32 ea = EA_A7_PI_8(mc68kcpu);
-
- m68ki_write_8((mc68kcpu), ea, res);
-
- (mc68kcpu)->n_flag = NFLAG_8(res);
- (mc68kcpu)->not_z_flag = res;
- (mc68kcpu)->v_flag = VFLAG_CLEAR;
- (mc68kcpu)->c_flag = CFLAG_CLEAR;
-}
-
-
-void m68000_base_device_ops::m68k_op_move_8_pi7_ix(m68000_base_device* mc68kcpu)
-{
- UINT32 res = OPER_AY_IX_8(mc68kcpu);
- UINT32 ea = EA_A7_PI_8(mc68kcpu);
-
- m68ki_write_8((mc68kcpu), ea, res);
-
- (mc68kcpu)->n_flag = NFLAG_8(res);
- (mc68kcpu)->not_z_flag = res;
- (mc68kcpu)->v_flag = VFLAG_CLEAR;
- (mc68kcpu)->c_flag = CFLAG_CLEAR;
-}
-
-
-void m68000_base_device_ops::m68k_op_move_8_pi7_aw(m68000_base_device* mc68kcpu)
-{
- UINT32 res = OPER_AW_8(mc68kcpu);
- UINT32 ea = EA_A7_PI_8(mc68kcpu);
-
- m68ki_write_8((mc68kcpu), ea, res);
-
- (mc68kcpu)->n_flag = NFLAG_8(res);
- (mc68kcpu)->not_z_flag = res;
- (mc68kcpu)->v_flag = VFLAG_CLEAR;
- (mc68kcpu)->c_flag = CFLAG_CLEAR;
-}
-
-
-void m68000_base_device_ops::m68k_op_move_8_pi7_al(m68000_base_device* mc68kcpu)
-{
- UINT32 res = OPER_AL_8(mc68kcpu);
- UINT32 ea = EA_A7_PI_8(mc68kcpu);
-
- m68ki_write_8((mc68kcpu), ea, res);
-
- (mc68kcpu)->n_flag = NFLAG_8(res);
- (mc68kcpu)->not_z_flag = res;
- (mc68kcpu)->v_flag = VFLAG_CLEAR;
- (mc68kcpu)->c_flag = CFLAG_CLEAR;
-}
-
-
-void m68000_base_device_ops::m68k_op_move_8_pi7_pcdi(m68000_base_device* mc68kcpu)
-{
- UINT32 res = OPER_PCDI_8(mc68kcpu);
- UINT32 ea = EA_A7_PI_8(mc68kcpu);
-
- m68ki_write_8((mc68kcpu), ea, res);
-
- (mc68kcpu)->n_flag = NFLAG_8(res);
- (mc68kcpu)->not_z_flag = res;
- (mc68kcpu)->v_flag = VFLAG_CLEAR;
- (mc68kcpu)->c_flag = CFLAG_CLEAR;
-}
-
-
-void m68000_base_device_ops::m68k_op_move_8_pi7_pcix(m68000_base_device* mc68kcpu)
-{
- UINT32 res = OPER_PCIX_8(mc68kcpu);
- UINT32 ea = EA_A7_PI_8(mc68kcpu);
-
- m68ki_write_8((mc68kcpu), ea, res);
-
- (mc68kcpu)->n_flag = NFLAG_8(res);
- (mc68kcpu)->not_z_flag = res;
- (mc68kcpu)->v_flag = VFLAG_CLEAR;
- (mc68kcpu)->c_flag = CFLAG_CLEAR;
-}
-
-
-void m68000_base_device_ops::m68k_op_move_8_pi7_i(m68000_base_device* mc68kcpu)
-{
- UINT32 res = OPER_I_8(mc68kcpu);
- UINT32 ea = EA_A7_PI_8(mc68kcpu);
-
- m68ki_write_8((mc68kcpu), ea, res);
-
- (mc68kcpu)->n_flag = NFLAG_8(res);
- (mc68kcpu)->not_z_flag = res;
- (mc68kcpu)->v_flag = VFLAG_CLEAR;
- (mc68kcpu)->c_flag = CFLAG_CLEAR;
-}
-
-
-void m68000_base_device_ops::m68k_op_move_8_pi_ai(m68000_base_device* mc68kcpu)
-{
- UINT32 res = OPER_AY_AI_8(mc68kcpu);
- UINT32 ea = EA_AX_PI_8(mc68kcpu);
-
- m68ki_write_8((mc68kcpu), ea, res);
-
- (mc68kcpu)->n_flag = NFLAG_8(res);
- (mc68kcpu)->not_z_flag = res;
- (mc68kcpu)->v_flag = VFLAG_CLEAR;
- (mc68kcpu)->c_flag = CFLAG_CLEAR;
-}
-
-
-void m68000_base_device_ops::m68k_op_move_8_pi_pi(m68000_base_device* mc68kcpu)
-{
- UINT32 res = OPER_AY_PI_8(mc68kcpu);
- UINT32 ea = EA_AX_PI_8(mc68kcpu);
-
- m68ki_write_8((mc68kcpu), ea, res);
-
- (mc68kcpu)->n_flag = NFLAG_8(res);
- (mc68kcpu)->not_z_flag = res;
- (mc68kcpu)->v_flag = VFLAG_CLEAR;
- (mc68kcpu)->c_flag = CFLAG_CLEAR;
-}
-
-
-void m68000_base_device_ops::m68k_op_move_8_pi_pi7(m68000_base_device* mc68kcpu)
-{
- UINT32 res = OPER_A7_PI_8(mc68kcpu);
- UINT32 ea = EA_AX_PI_8(mc68kcpu);
-
- m68ki_write_8((mc68kcpu), ea, res);
-
- (mc68kcpu)->n_flag = NFLAG_8(res);
- (mc68kcpu)->not_z_flag = res;
- (mc68kcpu)->v_flag = VFLAG_CLEAR;
- (mc68kcpu)->c_flag = CFLAG_CLEAR;
-}
-
-
-void m68000_base_device_ops::m68k_op_move_8_pi_pd(m68000_base_device* mc68kcpu)
-{
- UINT32 res = OPER_AY_PD_8(mc68kcpu);
- UINT32 ea = EA_AX_PI_8(mc68kcpu);
-
- m68ki_write_8((mc68kcpu), ea, res);
-
- (mc68kcpu)->n_flag = NFLAG_8(res);
- (mc68kcpu)->not_z_flag = res;
- (mc68kcpu)->v_flag = VFLAG_CLEAR;
- (mc68kcpu)->c_flag = CFLAG_CLEAR;
-}
-
-
-void m68000_base_device_ops::m68k_op_move_8_pi_pd7(m68000_base_device* mc68kcpu)
-{
- UINT32 res = OPER_A7_PD_8(mc68kcpu);
- UINT32 ea = EA_AX_PI_8(mc68kcpu);
-
- m68ki_write_8((mc68kcpu), ea, res);
-
- (mc68kcpu)->n_flag = NFLAG_8(res);
- (mc68kcpu)->not_z_flag = res;
- (mc68kcpu)->v_flag = VFLAG_CLEAR;
- (mc68kcpu)->c_flag = CFLAG_CLEAR;
-}
-
-
-void m68000_base_device_ops::m68k_op_move_8_pi_di(m68000_base_device* mc68kcpu)
-{
- UINT32 res = OPER_AY_DI_8(mc68kcpu);
- UINT32 ea = EA_AX_PI_8(mc68kcpu);
-
- m68ki_write_8((mc68kcpu), ea, res);
-
- (mc68kcpu)->n_flag = NFLAG_8(res);
- (mc68kcpu)->not_z_flag = res;
- (mc68kcpu)->v_flag = VFLAG_CLEAR;
- (mc68kcpu)->c_flag = CFLAG_CLEAR;
-}
-
-
-void m68000_base_device_ops::m68k_op_move_8_pi_ix(m68000_base_device* mc68kcpu)
-{
- UINT32 res = OPER_AY_IX_8(mc68kcpu);
- UINT32 ea = EA_AX_PI_8(mc68kcpu);
-
- m68ki_write_8((mc68kcpu), ea, res);
-
- (mc68kcpu)->n_flag = NFLAG_8(res);
- (mc68kcpu)->not_z_flag = res;
- (mc68kcpu)->v_flag = VFLAG_CLEAR;
- (mc68kcpu)->c_flag = CFLAG_CLEAR;
-}
-
-
-void m68000_base_device_ops::m68k_op_move_8_pi_aw(m68000_base_device* mc68kcpu)
-{
- UINT32 res = OPER_AW_8(mc68kcpu);
- UINT32 ea = EA_AX_PI_8(mc68kcpu);
-
- m68ki_write_8((mc68kcpu), ea, res);
-
- (mc68kcpu)->n_flag = NFLAG_8(res);
- (mc68kcpu)->not_z_flag = res;
- (mc68kcpu)->v_flag = VFLAG_CLEAR;
- (mc68kcpu)->c_flag = CFLAG_CLEAR;
-}
-
-
-void m68000_base_device_ops::m68k_op_move_8_pi_al(m68000_base_device* mc68kcpu)
-{
- UINT32 res = OPER_AL_8(mc68kcpu);
- UINT32 ea = EA_AX_PI_8(mc68kcpu);
-
- m68ki_write_8((mc68kcpu), ea, res);
-
- (mc68kcpu)->n_flag = NFLAG_8(res);
- (mc68kcpu)->not_z_flag = res;
- (mc68kcpu)->v_flag = VFLAG_CLEAR;
- (mc68kcpu)->c_flag = CFLAG_CLEAR;
-}
-
-
-void m68000_base_device_ops::m68k_op_move_8_pi_pcdi(m68000_base_device* mc68kcpu)
-{
- UINT32 res = OPER_PCDI_8(mc68kcpu);
- UINT32 ea = EA_AX_PI_8(mc68kcpu);
-
- m68ki_write_8((mc68kcpu), ea, res);
-
- (mc68kcpu)->n_flag = NFLAG_8(res);
- (mc68kcpu)->not_z_flag = res;
- (mc68kcpu)->v_flag = VFLAG_CLEAR;
- (mc68kcpu)->c_flag = CFLAG_CLEAR;
-}
-
-
-void m68000_base_device_ops::m68k_op_move_8_pi_pcix(m68000_base_device* mc68kcpu)
-{
- UINT32 res = OPER_PCIX_8(mc68kcpu);
- UINT32 ea = EA_AX_PI_8(mc68kcpu);
-
- m68ki_write_8((mc68kcpu), ea, res);
-
- (mc68kcpu)->n_flag = NFLAG_8(res);
- (mc68kcpu)->not_z_flag = res;
- (mc68kcpu)->v_flag = VFLAG_CLEAR;
- (mc68kcpu)->c_flag = CFLAG_CLEAR;
-}
-
-
-void m68000_base_device_ops::m68k_op_move_8_pi_i(m68000_base_device* mc68kcpu)
-{
- UINT32 res = OPER_I_8(mc68kcpu);
- UINT32 ea = EA_AX_PI_8(mc68kcpu);
-
- m68ki_write_8((mc68kcpu), ea, res);
-
- (mc68kcpu)->n_flag = NFLAG_8(res);
- (mc68kcpu)->not_z_flag = res;
- (mc68kcpu)->v_flag = VFLAG_CLEAR;
- (mc68kcpu)->c_flag = CFLAG_CLEAR;
-}
-
-
-void m68000_base_device_ops::m68k_op_move_8_pd7_d(m68000_base_device* mc68kcpu)
-{
- UINT32 res = MASK_OUT_ABOVE_8(DY(mc68kcpu));
- UINT32 ea = EA_A7_PD_8(mc68kcpu);
-
- m68ki_write_8((mc68kcpu), ea, res);
-
- (mc68kcpu)->n_flag = NFLAG_8(res);
- (mc68kcpu)->not_z_flag = res;
- (mc68kcpu)->v_flag = VFLAG_CLEAR;
- (mc68kcpu)->c_flag = CFLAG_CLEAR;
-}
-
-
-void m68000_base_device_ops::m68k_op_move_8_pd_d(m68000_base_device* mc68kcpu)
-{
- UINT32 res = MASK_OUT_ABOVE_8(DY(mc68kcpu));
- UINT32 ea = EA_AX_PD_8(mc68kcpu);
-
- m68ki_write_8((mc68kcpu), ea, res);
-
- (mc68kcpu)->n_flag = NFLAG_8(res);
- (mc68kcpu)->not_z_flag = res;
- (mc68kcpu)->v_flag = VFLAG_CLEAR;
- (mc68kcpu)->c_flag = CFLAG_CLEAR;
-}
-
-
-void m68000_base_device_ops::m68k_op_move_8_pd7_ai(m68000_base_device* mc68kcpu)
-{
- UINT32 res = OPER_AY_AI_8(mc68kcpu);
- UINT32 ea = EA_A7_PD_8(mc68kcpu);
-
- m68ki_write_8((mc68kcpu), ea, res);
-
- (mc68kcpu)->n_flag = NFLAG_8(res);
- (mc68kcpu)->not_z_flag = res;
- (mc68kcpu)->v_flag = VFLAG_CLEAR;
- (mc68kcpu)->c_flag = CFLAG_CLEAR;
-}
-
-
-void m68000_base_device_ops::m68k_op_move_8_pd7_pi(m68000_base_device* mc68kcpu)
-{
- UINT32 res = OPER_AY_PI_8(mc68kcpu);
- UINT32 ea = EA_A7_PD_8(mc68kcpu);
-
- m68ki_write_8((mc68kcpu), ea, res);
-
- (mc68kcpu)->n_flag = NFLAG_8(res);
- (mc68kcpu)->not_z_flag = res;
- (mc68kcpu)->v_flag = VFLAG_CLEAR;
- (mc68kcpu)->c_flag = CFLAG_CLEAR;
-}
-
-
-void m68000_base_device_ops::m68k_op_move_8_pd7_pi7(m68000_base_device* mc68kcpu)
-{
- UINT32 res = OPER_A7_PI_8(mc68kcpu);
- UINT32 ea = EA_A7_PD_8(mc68kcpu);
-
- m68ki_write_8((mc68kcpu), ea, res);
-
- (mc68kcpu)->n_flag = NFLAG_8(res);
- (mc68kcpu)->not_z_flag = res;
- (mc68kcpu)->v_flag = VFLAG_CLEAR;
- (mc68kcpu)->c_flag = CFLAG_CLEAR;
-}
-
-
-void m68000_base_device_ops::m68k_op_move_8_pd7_pd(m68000_base_device* mc68kcpu)
-{
- UINT32 res = OPER_AY_PD_8(mc68kcpu);
- UINT32 ea = EA_A7_PD_8(mc68kcpu);
-
- m68ki_write_8((mc68kcpu), ea, res);
-
- (mc68kcpu)->n_flag = NFLAG_8(res);
- (mc68kcpu)->not_z_flag = res;
- (mc68kcpu)->v_flag = VFLAG_CLEAR;
- (mc68kcpu)->c_flag = CFLAG_CLEAR;
-}
-
-
-void m68000_base_device_ops::m68k_op_move_8_pd7_pd7(m68000_base_device* mc68kcpu)
-{
- UINT32 res = OPER_A7_PD_8(mc68kcpu);
- UINT32 ea = EA_A7_PD_8(mc68kcpu);
-
- m68ki_write_8((mc68kcpu), ea, res);
-
- (mc68kcpu)->n_flag = NFLAG_8(res);
- (mc68kcpu)->not_z_flag = res;
- (mc68kcpu)->v_flag = VFLAG_CLEAR;
- (mc68kcpu)->c_flag = CFLAG_CLEAR;
-}
-
-
-void m68000_base_device_ops::m68k_op_move_8_pd7_di(m68000_base_device* mc68kcpu)
-{
- UINT32 res = OPER_AY_DI_8(mc68kcpu);
- UINT32 ea = EA_A7_PD_8(mc68kcpu);
-
- m68ki_write_8((mc68kcpu), ea, res);
-
- (mc68kcpu)->n_flag = NFLAG_8(res);
- (mc68kcpu)->not_z_flag = res;
- (mc68kcpu)->v_flag = VFLAG_CLEAR;
- (mc68kcpu)->c_flag = CFLAG_CLEAR;
-}
-
-
-void m68000_base_device_ops::m68k_op_move_8_pd7_ix(m68000_base_device* mc68kcpu)
-{
- UINT32 res = OPER_AY_IX_8(mc68kcpu);
- UINT32 ea = EA_A7_PD_8(mc68kcpu);
-
- m68ki_write_8((mc68kcpu), ea, res);
-
- (mc68kcpu)->n_flag = NFLAG_8(res);
- (mc68kcpu)->not_z_flag = res;
- (mc68kcpu)->v_flag = VFLAG_CLEAR;
- (mc68kcpu)->c_flag = CFLAG_CLEAR;
-}
-
-
-void m68000_base_device_ops::m68k_op_move_8_pd7_aw(m68000_base_device* mc68kcpu)
-{
- UINT32 res = OPER_AW_8(mc68kcpu);
- UINT32 ea = EA_A7_PD_8(mc68kcpu);
-
- m68ki_write_8((mc68kcpu), ea, res);
-
- (mc68kcpu)->n_flag = NFLAG_8(res);
- (mc68kcpu)->not_z_flag = res;
- (mc68kcpu)->v_flag = VFLAG_CLEAR;
- (mc68kcpu)->c_flag = CFLAG_CLEAR;
-}
-
-
-void m68000_base_device_ops::m68k_op_move_8_pd7_al(m68000_base_device* mc68kcpu)
-{
- UINT32 res = OPER_AL_8(mc68kcpu);
- UINT32 ea = EA_A7_PD_8(mc68kcpu);
-
- m68ki_write_8((mc68kcpu), ea, res);
-
- (mc68kcpu)->n_flag = NFLAG_8(res);
- (mc68kcpu)->not_z_flag = res;
- (mc68kcpu)->v_flag = VFLAG_CLEAR;
- (mc68kcpu)->c_flag = CFLAG_CLEAR;
-}
-
-
-void m68000_base_device_ops::m68k_op_move_8_pd7_pcdi(m68000_base_device* mc68kcpu)
-{
- UINT32 res = OPER_PCDI_8(mc68kcpu);
- UINT32 ea = EA_A7_PD_8(mc68kcpu);
-
- m68ki_write_8((mc68kcpu), ea, res);
-
- (mc68kcpu)->n_flag = NFLAG_8(res);
- (mc68kcpu)->not_z_flag = res;
- (mc68kcpu)->v_flag = VFLAG_CLEAR;
- (mc68kcpu)->c_flag = CFLAG_CLEAR;
-}
-
-
-void m68000_base_device_ops::m68k_op_move_8_pd7_pcix(m68000_base_device* mc68kcpu)
-{
- UINT32 res = OPER_PCIX_8(mc68kcpu);
- UINT32 ea = EA_A7_PD_8(mc68kcpu);
-
- m68ki_write_8((mc68kcpu), ea, res);
-
- (mc68kcpu)->n_flag = NFLAG_8(res);
- (mc68kcpu)->not_z_flag = res;
- (mc68kcpu)->v_flag = VFLAG_CLEAR;
- (mc68kcpu)->c_flag = CFLAG_CLEAR;
-}
-
-
-void m68000_base_device_ops::m68k_op_move_8_pd7_i(m68000_base_device* mc68kcpu)
-{
- UINT32 res = OPER_I_8(mc68kcpu);
- UINT32 ea = EA_A7_PD_8(mc68kcpu);
-
- m68ki_write_8((mc68kcpu), ea, res);
-
- (mc68kcpu)->n_flag = NFLAG_8(res);
- (mc68kcpu)->not_z_flag = res;
- (mc68kcpu)->v_flag = VFLAG_CLEAR;
- (mc68kcpu)->c_flag = CFLAG_CLEAR;
-}
-
-
-void m68000_base_device_ops::m68k_op_move_8_pd_ai(m68000_base_device* mc68kcpu)
-{
- UINT32 res = OPER_AY_AI_8(mc68kcpu);
- UINT32 ea = EA_AX_PD_8(mc68kcpu);
-
- m68ki_write_8((mc68kcpu), ea, res);
-
- (mc68kcpu)->n_flag = NFLAG_8(res);
- (mc68kcpu)->not_z_flag = res;
- (mc68kcpu)->v_flag = VFLAG_CLEAR;
- (mc68kcpu)->c_flag = CFLAG_CLEAR;
-}
-
-
-void m68000_base_device_ops::m68k_op_move_8_pd_pi(m68000_base_device* mc68kcpu)
-{
- UINT32 res = OPER_AY_PI_8(mc68kcpu);
- UINT32 ea = EA_AX_PD_8(mc68kcpu);
-
- m68ki_write_8((mc68kcpu), ea, res);
-
- (mc68kcpu)->n_flag = NFLAG_8(res);
- (mc68kcpu)->not_z_flag = res;
- (mc68kcpu)->v_flag = VFLAG_CLEAR;
- (mc68kcpu)->c_flag = CFLAG_CLEAR;
-}
-
-
-void m68000_base_device_ops::m68k_op_move_8_pd_pi7(m68000_base_device* mc68kcpu)
-{
- UINT32 res = OPER_A7_PI_8(mc68kcpu);
- UINT32 ea = EA_AX_PD_8(mc68kcpu);
-
- m68ki_write_8((mc68kcpu), ea, res);
-
- (mc68kcpu)->n_flag = NFLAG_8(res);
- (mc68kcpu)->not_z_flag = res;
- (mc68kcpu)->v_flag = VFLAG_CLEAR;
- (mc68kcpu)->c_flag = CFLAG_CLEAR;
-}
-
-
-void m68000_base_device_ops::m68k_op_move_8_pd_pd(m68000_base_device* mc68kcpu)
-{
- UINT32 res = OPER_AY_PD_8(mc68kcpu);
- UINT32 ea = EA_AX_PD_8(mc68kcpu);
-
- m68ki_write_8((mc68kcpu), ea, res);
-
- (mc68kcpu)->n_flag = NFLAG_8(res);
- (mc68kcpu)->not_z_flag = res;
- (mc68kcpu)->v_flag = VFLAG_CLEAR;
- (mc68kcpu)->c_flag = CFLAG_CLEAR;
-}
-
-
-void m68000_base_device_ops::m68k_op_move_8_pd_pd7(m68000_base_device* mc68kcpu)
-{
- UINT32 res = OPER_A7_PD_8(mc68kcpu);
- UINT32 ea = EA_AX_PD_8(mc68kcpu);
-
- m68ki_write_8((mc68kcpu), ea, res);
-
- (mc68kcpu)->n_flag = NFLAG_8(res);
- (mc68kcpu)->not_z_flag = res;
- (mc68kcpu)->v_flag = VFLAG_CLEAR;
- (mc68kcpu)->c_flag = CFLAG_CLEAR;
-}
-
-
-void m68000_base_device_ops::m68k_op_move_8_pd_di(m68000_base_device* mc68kcpu)
-{
- UINT32 res = OPER_AY_DI_8(mc68kcpu);
- UINT32 ea = EA_AX_PD_8(mc68kcpu);
-
- m68ki_write_8((mc68kcpu), ea, res);
-
- (mc68kcpu)->n_flag = NFLAG_8(res);
- (mc68kcpu)->not_z_flag = res;
- (mc68kcpu)->v_flag = VFLAG_CLEAR;
- (mc68kcpu)->c_flag = CFLAG_CLEAR;
-}
-
-
-void m68000_base_device_ops::m68k_op_move_8_pd_ix(m68000_base_device* mc68kcpu)
-{
- UINT32 res = OPER_AY_IX_8(mc68kcpu);
- UINT32 ea = EA_AX_PD_8(mc68kcpu);
-
- m68ki_write_8((mc68kcpu), ea, res);
-
- (mc68kcpu)->n_flag = NFLAG_8(res);
- (mc68kcpu)->not_z_flag = res;
- (mc68kcpu)->v_flag = VFLAG_CLEAR;
- (mc68kcpu)->c_flag = CFLAG_CLEAR;
-}
-
-
-void m68000_base_device_ops::m68k_op_move_8_pd_aw(m68000_base_device* mc68kcpu)
-{
- UINT32 res = OPER_AW_8(mc68kcpu);
- UINT32 ea = EA_AX_PD_8(mc68kcpu);
-
- m68ki_write_8((mc68kcpu), ea, res);
-
- (mc68kcpu)->n_flag = NFLAG_8(res);
- (mc68kcpu)->not_z_flag = res;
- (mc68kcpu)->v_flag = VFLAG_CLEAR;
- (mc68kcpu)->c_flag = CFLAG_CLEAR;
-}
-
-
-void m68000_base_device_ops::m68k_op_move_8_pd_al(m68000_base_device* mc68kcpu)
-{
- UINT32 res = OPER_AL_8(mc68kcpu);
- UINT32 ea = EA_AX_PD_8(mc68kcpu);
-
- m68ki_write_8((mc68kcpu), ea, res);
-
- (mc68kcpu)->n_flag = NFLAG_8(res);
- (mc68kcpu)->not_z_flag = res;
- (mc68kcpu)->v_flag = VFLAG_CLEAR;
- (mc68kcpu)->c_flag = CFLAG_CLEAR;
-}
-
-
-void m68000_base_device_ops::m68k_op_move_8_pd_pcdi(m68000_base_device* mc68kcpu)
-{
- UINT32 res = OPER_PCDI_8(mc68kcpu);
- UINT32 ea = EA_AX_PD_8(mc68kcpu);
-
- m68ki_write_8((mc68kcpu), ea, res);
-
- (mc68kcpu)->n_flag = NFLAG_8(res);
- (mc68kcpu)->not_z_flag = res;
- (mc68kcpu)->v_flag = VFLAG_CLEAR;
- (mc68kcpu)->c_flag = CFLAG_CLEAR;
-}
-
-
-void m68000_base_device_ops::m68k_op_move_8_pd_pcix(m68000_base_device* mc68kcpu)
-{
- UINT32 res = OPER_PCIX_8(mc68kcpu);
- UINT32 ea = EA_AX_PD_8(mc68kcpu);
-
- m68ki_write_8((mc68kcpu), ea, res);
-
- (mc68kcpu)->n_flag = NFLAG_8(res);
- (mc68kcpu)->not_z_flag = res;
- (mc68kcpu)->v_flag = VFLAG_CLEAR;
- (mc68kcpu)->c_flag = CFLAG_CLEAR;
-}
-
-
-void m68000_base_device_ops::m68k_op_move_8_pd_i(m68000_base_device* mc68kcpu)
-{
- UINT32 res = OPER_I_8(mc68kcpu);
- UINT32 ea = EA_AX_PD_8(mc68kcpu);
-
- m68ki_write_8((mc68kcpu), ea, res);
-
- (mc68kcpu)->n_flag = NFLAG_8(res);
- (mc68kcpu)->not_z_flag = res;
- (mc68kcpu)->v_flag = VFLAG_CLEAR;
- (mc68kcpu)->c_flag = CFLAG_CLEAR;
-}
-
-
-void m68000_base_device_ops::m68k_op_move_8_di_d(m68000_base_device* mc68kcpu)
-{
- UINT32 res = MASK_OUT_ABOVE_8(DY(mc68kcpu));
- UINT32 ea = EA_AX_DI_8(mc68kcpu);
-
- m68ki_write_8((mc68kcpu), ea, res);
-
- (mc68kcpu)->n_flag = NFLAG_8(res);
- (mc68kcpu)->not_z_flag = res;
- (mc68kcpu)->v_flag = VFLAG_CLEAR;
- (mc68kcpu)->c_flag = CFLAG_CLEAR;
-}
-
-
-void m68000_base_device_ops::m68k_op_move_8_di_ai(m68000_base_device* mc68kcpu)
-{
- UINT32 res = OPER_AY_AI_8(mc68kcpu);
- UINT32 ea = EA_AX_DI_8(mc68kcpu);
-
- m68ki_write_8((mc68kcpu), ea, res);
-
- (mc68kcpu)->n_flag = NFLAG_8(res);
- (mc68kcpu)->not_z_flag = res;
- (mc68kcpu)->v_flag = VFLAG_CLEAR;
- (mc68kcpu)->c_flag = CFLAG_CLEAR;
-}
-
-
-void m68000_base_device_ops::m68k_op_move_8_di_pi(m68000_base_device* mc68kcpu)
-{
- UINT32 res = OPER_AY_PI_8(mc68kcpu);
- UINT32 ea = EA_AX_DI_8(mc68kcpu);
-
- m68ki_write_8((mc68kcpu), ea, res);
-
- (mc68kcpu)->n_flag = NFLAG_8(res);
- (mc68kcpu)->not_z_flag = res;
- (mc68kcpu)->v_flag = VFLAG_CLEAR;
- (mc68kcpu)->c_flag = CFLAG_CLEAR;
-}
-
-
-void m68000_base_device_ops::m68k_op_move_8_di_pi7(m68000_base_device* mc68kcpu)
-{
- UINT32 res = OPER_A7_PI_8(mc68kcpu);
- UINT32 ea = EA_AX_DI_8(mc68kcpu);
-
- m68ki_write_8((mc68kcpu), ea, res);
-
- (mc68kcpu)->n_flag = NFLAG_8(res);
- (mc68kcpu)->not_z_flag = res;
- (mc68kcpu)->v_flag = VFLAG_CLEAR;
- (mc68kcpu)->c_flag = CFLAG_CLEAR;
-}
-
-
-void m68000_base_device_ops::m68k_op_move_8_di_pd(m68000_base_device* mc68kcpu)
-{
- UINT32 res = OPER_AY_PD_8(mc68kcpu);
- UINT32 ea = EA_AX_DI_8(mc68kcpu);
-
- m68ki_write_8((mc68kcpu), ea, res);
-
- (mc68kcpu)->n_flag = NFLAG_8(res);
- (mc68kcpu)->not_z_flag = res;
- (mc68kcpu)->v_flag = VFLAG_CLEAR;
- (mc68kcpu)->c_flag = CFLAG_CLEAR;
-}
-
-
-void m68000_base_device_ops::m68k_op_move_8_di_pd7(m68000_base_device* mc68kcpu)
-{
- UINT32 res = OPER_A7_PD_8(mc68kcpu);
- UINT32 ea = EA_AX_DI_8(mc68kcpu);
-
- m68ki_write_8((mc68kcpu), ea, res);
-
- (mc68kcpu)->n_flag = NFLAG_8(res);
- (mc68kcpu)->not_z_flag = res;
- (mc68kcpu)->v_flag = VFLAG_CLEAR;
- (mc68kcpu)->c_flag = CFLAG_CLEAR;
-}
-
-
-void m68000_base_device_ops::m68k_op_move_8_di_di(m68000_base_device* mc68kcpu)
-{
- UINT32 res = OPER_AY_DI_8(mc68kcpu);
- UINT32 ea = EA_AX_DI_8(mc68kcpu);
-
- m68ki_write_8((mc68kcpu), ea, res);
-
- (mc68kcpu)->n_flag = NFLAG_8(res);
- (mc68kcpu)->not_z_flag = res;
- (mc68kcpu)->v_flag = VFLAG_CLEAR;
- (mc68kcpu)->c_flag = CFLAG_CLEAR;
-}
-
-
-void m68000_base_device_ops::m68k_op_move_8_di_ix(m68000_base_device* mc68kcpu)
-{
- UINT32 res = OPER_AY_IX_8(mc68kcpu);
- UINT32 ea = EA_AX_DI_8(mc68kcpu);
-
- m68ki_write_8((mc68kcpu), ea, res);
-
- (mc68kcpu)->n_flag = NFLAG_8(res);
- (mc68kcpu)->not_z_flag = res;
- (mc68kcpu)->v_flag = VFLAG_CLEAR;
- (mc68kcpu)->c_flag = CFLAG_CLEAR;
-}
-
-
-void m68000_base_device_ops::m68k_op_move_8_di_aw(m68000_base_device* mc68kcpu)
-{
- UINT32 res = OPER_AW_8(mc68kcpu);
- UINT32 ea = EA_AX_DI_8(mc68kcpu);
-
- m68ki_write_8((mc68kcpu), ea, res);
-
- (mc68kcpu)->n_flag = NFLAG_8(res);
- (mc68kcpu)->not_z_flag = res;
- (mc68kcpu)->v_flag = VFLAG_CLEAR;
- (mc68kcpu)->c_flag = CFLAG_CLEAR;
-}
-
-
-void m68000_base_device_ops::m68k_op_move_8_di_al(m68000_base_device* mc68kcpu)
-{
- UINT32 res = OPER_AL_8(mc68kcpu);
- UINT32 ea = EA_AX_DI_8(mc68kcpu);
-
- m68ki_write_8((mc68kcpu), ea, res);
-
- (mc68kcpu)->n_flag = NFLAG_8(res);
- (mc68kcpu)->not_z_flag = res;
- (mc68kcpu)->v_flag = VFLAG_CLEAR;
- (mc68kcpu)->c_flag = CFLAG_CLEAR;
-}
-
-
-void m68000_base_device_ops::m68k_op_move_8_di_pcdi(m68000_base_device* mc68kcpu)
-{
- UINT32 res = OPER_PCDI_8(mc68kcpu);
- UINT32 ea = EA_AX_DI_8(mc68kcpu);
-
- m68ki_write_8((mc68kcpu), ea, res);
-
- (mc68kcpu)->n_flag = NFLAG_8(res);
- (mc68kcpu)->not_z_flag = res;
- (mc68kcpu)->v_flag = VFLAG_CLEAR;
- (mc68kcpu)->c_flag = CFLAG_CLEAR;
-}
-
-
-void m68000_base_device_ops::m68k_op_move_8_di_pcix(m68000_base_device* mc68kcpu)
-{
- UINT32 res = OPER_PCIX_8(mc68kcpu);
- UINT32 ea = EA_AX_DI_8(mc68kcpu);
-
- m68ki_write_8((mc68kcpu), ea, res);
-
- (mc68kcpu)->n_flag = NFLAG_8(res);
- (mc68kcpu)->not_z_flag = res;
- (mc68kcpu)->v_flag = VFLAG_CLEAR;
- (mc68kcpu)->c_flag = CFLAG_CLEAR;
-}
-
-
-void m68000_base_device_ops::m68k_op_move_8_di_i(m68000_base_device* mc68kcpu)
-{
- UINT32 res = OPER_I_8(mc68kcpu);
- UINT32 ea = EA_AX_DI_8(mc68kcpu);
-
- m68ki_write_8((mc68kcpu), ea, res);
-
- (mc68kcpu)->n_flag = NFLAG_8(res);
- (mc68kcpu)->not_z_flag = res;
- (mc68kcpu)->v_flag = VFLAG_CLEAR;
- (mc68kcpu)->c_flag = CFLAG_CLEAR;
-}
-
-
-void m68000_base_device_ops::m68k_op_move_8_ix_d(m68000_base_device* mc68kcpu)
-{
- UINT32 res = MASK_OUT_ABOVE_8(DY(mc68kcpu));
- UINT32 ea = EA_AX_IX_8(mc68kcpu);
-
- m68ki_write_8((mc68kcpu), ea, res);
-
- (mc68kcpu)->n_flag = NFLAG_8(res);
- (mc68kcpu)->not_z_flag = res;
- (mc68kcpu)->v_flag = VFLAG_CLEAR;
- (mc68kcpu)->c_flag = CFLAG_CLEAR;
-}
-
-
-void m68000_base_device_ops::m68k_op_move_8_ix_ai(m68000_base_device* mc68kcpu)
-{
- UINT32 res = OPER_AY_AI_8(mc68kcpu);
- UINT32 ea = EA_AX_IX_8(mc68kcpu);
-
- m68ki_write_8((mc68kcpu), ea, res);
-
- (mc68kcpu)->n_flag = NFLAG_8(res);
- (mc68kcpu)->not_z_flag = res;
- (mc68kcpu)->v_flag = VFLAG_CLEAR;
- (mc68kcpu)->c_flag = CFLAG_CLEAR;
-}
-
-
-void m68000_base_device_ops::m68k_op_move_8_ix_pi(m68000_base_device* mc68kcpu)
-{
- UINT32 res = OPER_AY_PI_8(mc68kcpu);
- UINT32 ea = EA_AX_IX_8(mc68kcpu);
-
- m68ki_write_8((mc68kcpu), ea, res);
-
- (mc68kcpu)->n_flag = NFLAG_8(res);
- (mc68kcpu)->not_z_flag = res;
- (mc68kcpu)->v_flag = VFLAG_CLEAR;
- (mc68kcpu)->c_flag = CFLAG_CLEAR;
-}
-
-
-void m68000_base_device_ops::m68k_op_move_8_ix_pi7(m68000_base_device* mc68kcpu)
-{
- UINT32 res = OPER_A7_PI_8(mc68kcpu);
- UINT32 ea = EA_AX_IX_8(mc68kcpu);
-
- m68ki_write_8((mc68kcpu), ea, res);
-
- (mc68kcpu)->n_flag = NFLAG_8(res);
- (mc68kcpu)->not_z_flag = res;
- (mc68kcpu)->v_flag = VFLAG_CLEAR;
- (mc68kcpu)->c_flag = CFLAG_CLEAR;
-}
-
-
-void m68000_base_device_ops::m68k_op_move_8_ix_pd(m68000_base_device* mc68kcpu)
-{
- UINT32 res = OPER_AY_PD_8(mc68kcpu);
- UINT32 ea = EA_AX_IX_8(mc68kcpu);
-
- m68ki_write_8((mc68kcpu), ea, res);
-
- (mc68kcpu)->n_flag = NFLAG_8(res);
- (mc68kcpu)->not_z_flag = res;
- (mc68kcpu)->v_flag = VFLAG_CLEAR;
- (mc68kcpu)->c_flag = CFLAG_CLEAR;
-}
-
-
-void m68000_base_device_ops::m68k_op_move_8_ix_pd7(m68000_base_device* mc68kcpu)
-{
- UINT32 res = OPER_A7_PD_8(mc68kcpu);
- UINT32 ea = EA_AX_IX_8(mc68kcpu);
-
- m68ki_write_8((mc68kcpu), ea, res);
-
- (mc68kcpu)->n_flag = NFLAG_8(res);
- (mc68kcpu)->not_z_flag = res;
- (mc68kcpu)->v_flag = VFLAG_CLEAR;
- (mc68kcpu)->c_flag = CFLAG_CLEAR;
-}
-
-
-void m68000_base_device_ops::m68k_op_move_8_ix_di(m68000_base_device* mc68kcpu)
-{
- UINT32 res = OPER_AY_DI_8(mc68kcpu);
- UINT32 ea = EA_AX_IX_8(mc68kcpu);
-
- m68ki_write_8((mc68kcpu), ea, res);
-
- (mc68kcpu)->n_flag = NFLAG_8(res);
- (mc68kcpu)->not_z_flag = res;
- (mc68kcpu)->v_flag = VFLAG_CLEAR;
- (mc68kcpu)->c_flag = CFLAG_CLEAR;
-}
-
-
-void m68000_base_device_ops::m68k_op_move_8_ix_ix(m68000_base_device* mc68kcpu)
-{
- UINT32 res = OPER_AY_IX_8(mc68kcpu);
- UINT32 ea = EA_AX_IX_8(mc68kcpu);
-
- m68ki_write_8((mc68kcpu), ea, res);
-
- (mc68kcpu)->n_flag = NFLAG_8(res);
- (mc68kcpu)->not_z_flag = res;
- (mc68kcpu)->v_flag = VFLAG_CLEAR;
- (mc68kcpu)->c_flag = CFLAG_CLEAR;
-}
-
-
-void m68000_base_device_ops::m68k_op_move_8_ix_aw(m68000_base_device* mc68kcpu)
-{
- UINT32 res = OPER_AW_8(mc68kcpu);
- UINT32 ea = EA_AX_IX_8(mc68kcpu);
-
- m68ki_write_8((mc68kcpu), ea, res);
-
- (mc68kcpu)->n_flag = NFLAG_8(res);
- (mc68kcpu)->not_z_flag = res;
- (mc68kcpu)->v_flag = VFLAG_CLEAR;
- (mc68kcpu)->c_flag = CFLAG_CLEAR;
-}
-
-
-void m68000_base_device_ops::m68k_op_move_8_ix_al(m68000_base_device* mc68kcpu)
-{
- UINT32 res = OPER_AL_8(mc68kcpu);
- UINT32 ea = EA_AX_IX_8(mc68kcpu);
-
- m68ki_write_8((mc68kcpu), ea, res);
-
- (mc68kcpu)->n_flag = NFLAG_8(res);
- (mc68kcpu)->not_z_flag = res;
- (mc68kcpu)->v_flag = VFLAG_CLEAR;
- (mc68kcpu)->c_flag = CFLAG_CLEAR;
-}
-
-
-void m68000_base_device_ops::m68k_op_move_8_ix_pcdi(m68000_base_device* mc68kcpu)
-{
- UINT32 res = OPER_PCDI_8(mc68kcpu);
- UINT32 ea = EA_AX_IX_8(mc68kcpu);
-
- m68ki_write_8((mc68kcpu), ea, res);
-
- (mc68kcpu)->n_flag = NFLAG_8(res);
- (mc68kcpu)->not_z_flag = res;
- (mc68kcpu)->v_flag = VFLAG_CLEAR;
- (mc68kcpu)->c_flag = CFLAG_CLEAR;
-}
-
-
-void m68000_base_device_ops::m68k_op_move_8_ix_pcix(m68000_base_device* mc68kcpu)
-{
- UINT32 res = OPER_PCIX_8(mc68kcpu);
- UINT32 ea = EA_AX_IX_8(mc68kcpu);
-
- m68ki_write_8((mc68kcpu), ea, res);
-
- (mc68kcpu)->n_flag = NFLAG_8(res);
- (mc68kcpu)->not_z_flag = res;
- (mc68kcpu)->v_flag = VFLAG_CLEAR;
- (mc68kcpu)->c_flag = CFLAG_CLEAR;
-}
-
-
-void m68000_base_device_ops::m68k_op_move_8_ix_i(m68000_base_device* mc68kcpu)
-{
- UINT32 res = OPER_I_8(mc68kcpu);
- UINT32 ea = EA_AX_IX_8(mc68kcpu);
-
- m68ki_write_8((mc68kcpu), ea, res);
-
- (mc68kcpu)->n_flag = NFLAG_8(res);
- (mc68kcpu)->not_z_flag = res;
- (mc68kcpu)->v_flag = VFLAG_CLEAR;
- (mc68kcpu)->c_flag = CFLAG_CLEAR;
-}
-
-
-void m68000_base_device_ops::m68k_op_move_8_aw_d(m68000_base_device* mc68kcpu)
-{
- UINT32 res = MASK_OUT_ABOVE_8(DY(mc68kcpu));
- UINT32 ea = EA_AW_8(mc68kcpu);
-
- m68ki_write_8((mc68kcpu), ea, res);
-
- (mc68kcpu)->n_flag = NFLAG_8(res);
- (mc68kcpu)->not_z_flag = res;
- (mc68kcpu)->v_flag = VFLAG_CLEAR;
- (mc68kcpu)->c_flag = CFLAG_CLEAR;
-}
-
-
-void m68000_base_device_ops::m68k_op_move_8_aw_ai(m68000_base_device* mc68kcpu)
-{
- UINT32 res = OPER_AY_AI_8(mc68kcpu);
- UINT32 ea = EA_AW_8(mc68kcpu);
-
- m68ki_write_8((mc68kcpu), ea, res);
-
- (mc68kcpu)->n_flag = NFLAG_8(res);
- (mc68kcpu)->not_z_flag = res;
- (mc68kcpu)->v_flag = VFLAG_CLEAR;
- (mc68kcpu)->c_flag = CFLAG_CLEAR;
-}
-
-
-void m68000_base_device_ops::m68k_op_move_8_aw_pi(m68000_base_device* mc68kcpu)
-{
- UINT32 res = OPER_AY_PI_8(mc68kcpu);
- UINT32 ea = EA_AW_8(mc68kcpu);
-
- m68ki_write_8((mc68kcpu), ea, res);
-
- (mc68kcpu)->n_flag = NFLAG_8(res);
- (mc68kcpu)->not_z_flag = res;
- (mc68kcpu)->v_flag = VFLAG_CLEAR;
- (mc68kcpu)->c_flag = CFLAG_CLEAR;
-}
-
-
-void m68000_base_device_ops::m68k_op_move_8_aw_pi7(m68000_base_device* mc68kcpu)
-{
- UINT32 res = OPER_A7_PI_8(mc68kcpu);
- UINT32 ea = EA_AW_8(mc68kcpu);
-
- m68ki_write_8((mc68kcpu), ea, res);
-
- (mc68kcpu)->n_flag = NFLAG_8(res);
- (mc68kcpu)->not_z_flag = res;
- (mc68kcpu)->v_flag = VFLAG_CLEAR;
- (mc68kcpu)->c_flag = CFLAG_CLEAR;
-}
-
-
-void m68000_base_device_ops::m68k_op_move_8_aw_pd(m68000_base_device* mc68kcpu)
-{
- UINT32 res = OPER_AY_PD_8(mc68kcpu);
- UINT32 ea = EA_AW_8(mc68kcpu);
-
- m68ki_write_8((mc68kcpu), ea, res);
-
- (mc68kcpu)->n_flag = NFLAG_8(res);
- (mc68kcpu)->not_z_flag = res;
- (mc68kcpu)->v_flag = VFLAG_CLEAR;
- (mc68kcpu)->c_flag = CFLAG_CLEAR;
-}
-
-
-void m68000_base_device_ops::m68k_op_move_8_aw_pd7(m68000_base_device* mc68kcpu)
-{
- UINT32 res = OPER_A7_PD_8(mc68kcpu);
- UINT32 ea = EA_AW_8(mc68kcpu);
-
- m68ki_write_8((mc68kcpu), ea, res);
-
- (mc68kcpu)->n_flag = NFLAG_8(res);
- (mc68kcpu)->not_z_flag = res;
- (mc68kcpu)->v_flag = VFLAG_CLEAR;
- (mc68kcpu)->c_flag = CFLAG_CLEAR;
-}
-
-
-void m68000_base_device_ops::m68k_op_move_8_aw_di(m68000_base_device* mc68kcpu)
-{
- UINT32 res = OPER_AY_DI_8(mc68kcpu);
- UINT32 ea = EA_AW_8(mc68kcpu);
-
- m68ki_write_8((mc68kcpu), ea, res);
-
- (mc68kcpu)->n_flag = NFLAG_8(res);
- (mc68kcpu)->not_z_flag = res;
- (mc68kcpu)->v_flag = VFLAG_CLEAR;
- (mc68kcpu)->c_flag = CFLAG_CLEAR;
-}
-
-
-void m68000_base_device_ops::m68k_op_move_8_aw_ix(m68000_base_device* mc68kcpu)
-{
- UINT32 res = OPER_AY_IX_8(mc68kcpu);
- UINT32 ea = EA_AW_8(mc68kcpu);
-
- m68ki_write_8((mc68kcpu), ea, res);
-
- (mc68kcpu)->n_flag = NFLAG_8(res);
- (mc68kcpu)->not_z_flag = res;
- (mc68kcpu)->v_flag = VFLAG_CLEAR;
- (mc68kcpu)->c_flag = CFLAG_CLEAR;
-}
-
-
-void m68000_base_device_ops::m68k_op_move_8_aw_aw(m68000_base_device* mc68kcpu)
-{
- UINT32 res = OPER_AW_8(mc68kcpu);
- UINT32 ea = EA_AW_8(mc68kcpu);
-
- m68ki_write_8((mc68kcpu), ea, res);
-
- (mc68kcpu)->n_flag = NFLAG_8(res);
- (mc68kcpu)->not_z_flag = res;
- (mc68kcpu)->v_flag = VFLAG_CLEAR;
- (mc68kcpu)->c_flag = CFLAG_CLEAR;
-}
-
-
-void m68000_base_device_ops::m68k_op_move_8_aw_al(m68000_base_device* mc68kcpu)
-{
- UINT32 res = OPER_AL_8(mc68kcpu);
- UINT32 ea = EA_AW_8(mc68kcpu);
-
- m68ki_write_8((mc68kcpu), ea, res);
-
- (mc68kcpu)->n_flag = NFLAG_8(res);
- (mc68kcpu)->not_z_flag = res;
- (mc68kcpu)->v_flag = VFLAG_CLEAR;
- (mc68kcpu)->c_flag = CFLAG_CLEAR;
-}
-
-
-void m68000_base_device_ops::m68k_op_move_8_aw_pcdi(m68000_base_device* mc68kcpu)
-{
- UINT32 res = OPER_PCDI_8(mc68kcpu);
- UINT32 ea = EA_AW_8(mc68kcpu);
-
- m68ki_write_8((mc68kcpu), ea, res);
-
- (mc68kcpu)->n_flag = NFLAG_8(res);
- (mc68kcpu)->not_z_flag = res;
- (mc68kcpu)->v_flag = VFLAG_CLEAR;
- (mc68kcpu)->c_flag = CFLAG_CLEAR;
-}
-
-
-void m68000_base_device_ops::m68k_op_move_8_aw_pcix(m68000_base_device* mc68kcpu)
-{
- UINT32 res = OPER_PCIX_8(mc68kcpu);
- UINT32 ea = EA_AW_8(mc68kcpu);
-
- m68ki_write_8((mc68kcpu), ea, res);
-
- (mc68kcpu)->n_flag = NFLAG_8(res);
- (mc68kcpu)->not_z_flag = res;
- (mc68kcpu)->v_flag = VFLAG_CLEAR;
- (mc68kcpu)->c_flag = CFLAG_CLEAR;
-}
-
-
-void m68000_base_device_ops::m68k_op_move_8_aw_i(m68000_base_device* mc68kcpu)
-{
- UINT32 res = OPER_I_8(mc68kcpu);
- UINT32 ea = EA_AW_8(mc68kcpu);
-
- m68ki_write_8((mc68kcpu), ea, res);
-
- (mc68kcpu)->n_flag = NFLAG_8(res);
- (mc68kcpu)->not_z_flag = res;
- (mc68kcpu)->v_flag = VFLAG_CLEAR;
- (mc68kcpu)->c_flag = CFLAG_CLEAR;
-}
-
-
-void m68000_base_device_ops::m68k_op_move_8_al_d(m68000_base_device* mc68kcpu)
-{
- UINT32 res = MASK_OUT_ABOVE_8(DY(mc68kcpu));
- UINT32 ea = EA_AL_8(mc68kcpu);
-
- m68ki_write_8((mc68kcpu), ea, res);
-
- (mc68kcpu)->n_flag = NFLAG_8(res);
- (mc68kcpu)->not_z_flag = res;
- (mc68kcpu)->v_flag = VFLAG_CLEAR;
- (mc68kcpu)->c_flag = CFLAG_CLEAR;
-}
-
-
-void m68000_base_device_ops::m68k_op_move_8_al_ai(m68000_base_device* mc68kcpu)
-{
- UINT32 res = OPER_AY_AI_8(mc68kcpu);
- UINT32 ea = EA_AL_8(mc68kcpu);
-
- m68ki_write_8((mc68kcpu), ea, res);
-
- (mc68kcpu)->n_flag = NFLAG_8(res);
- (mc68kcpu)->not_z_flag = res;
- (mc68kcpu)->v_flag = VFLAG_CLEAR;
- (mc68kcpu)->c_flag = CFLAG_CLEAR;
-}
-
-
-void m68000_base_device_ops::m68k_op_move_8_al_pi(m68000_base_device* mc68kcpu)
-{
- UINT32 res = OPER_AY_PI_8(mc68kcpu);
- UINT32 ea = EA_AL_8(mc68kcpu);
-
- m68ki_write_8((mc68kcpu), ea, res);
-
- (mc68kcpu)->n_flag = NFLAG_8(res);
- (mc68kcpu)->not_z_flag = res;
- (mc68kcpu)->v_flag = VFLAG_CLEAR;
- (mc68kcpu)->c_flag = CFLAG_CLEAR;
-}
-
-
-void m68000_base_device_ops::m68k_op_move_8_al_pi7(m68000_base_device* mc68kcpu)
-{
- UINT32 res = OPER_A7_PI_8(mc68kcpu);
- UINT32 ea = EA_AL_8(mc68kcpu);
-
- m68ki_write_8((mc68kcpu), ea, res);
-
- (mc68kcpu)->n_flag = NFLAG_8(res);
- (mc68kcpu)->not_z_flag = res;
- (mc68kcpu)->v_flag = VFLAG_CLEAR;
- (mc68kcpu)->c_flag = CFLAG_CLEAR;
-}
-
-
-void m68000_base_device_ops::m68k_op_move_8_al_pd(m68000_base_device* mc68kcpu)
-{
- UINT32 res = OPER_AY_PD_8(mc68kcpu);
- UINT32 ea = EA_AL_8(mc68kcpu);
-
- m68ki_write_8((mc68kcpu), ea, res);
-
- (mc68kcpu)->n_flag = NFLAG_8(res);
- (mc68kcpu)->not_z_flag = res;
- (mc68kcpu)->v_flag = VFLAG_CLEAR;
- (mc68kcpu)->c_flag = CFLAG_CLEAR;
-}
-
-
-void m68000_base_device_ops::m68k_op_move_8_al_pd7(m68000_base_device* mc68kcpu)
-{
- UINT32 res = OPER_A7_PD_8(mc68kcpu);
- UINT32 ea = EA_AL_8(mc68kcpu);
-
- m68ki_write_8((mc68kcpu), ea, res);
-
- (mc68kcpu)->n_flag = NFLAG_8(res);
- (mc68kcpu)->not_z_flag = res;
- (mc68kcpu)->v_flag = VFLAG_CLEAR;
- (mc68kcpu)->c_flag = CFLAG_CLEAR;
-}
-
-
-void m68000_base_device_ops::m68k_op_move_8_al_di(m68000_base_device* mc68kcpu)
-{
- UINT32 res = OPER_AY_DI_8(mc68kcpu);
- UINT32 ea = EA_AL_8(mc68kcpu);
-
- m68ki_write_8((mc68kcpu), ea, res);
-
- (mc68kcpu)->n_flag = NFLAG_8(res);
- (mc68kcpu)->not_z_flag = res;
- (mc68kcpu)->v_flag = VFLAG_CLEAR;
- (mc68kcpu)->c_flag = CFLAG_CLEAR;
-}
-
-
-void m68000_base_device_ops::m68k_op_move_8_al_ix(m68000_base_device* mc68kcpu)
-{
- UINT32 res = OPER_AY_IX_8(mc68kcpu);
- UINT32 ea = EA_AL_8(mc68kcpu);
-
- m68ki_write_8((mc68kcpu), ea, res);
-
- (mc68kcpu)->n_flag = NFLAG_8(res);
- (mc68kcpu)->not_z_flag = res;
- (mc68kcpu)->v_flag = VFLAG_CLEAR;
- (mc68kcpu)->c_flag = CFLAG_CLEAR;
-}
-
-
-void m68000_base_device_ops::m68k_op_move_8_al_aw(m68000_base_device* mc68kcpu)
-{
- UINT32 res = OPER_AW_8(mc68kcpu);
- UINT32 ea = EA_AL_8(mc68kcpu);
-
- m68ki_write_8((mc68kcpu), ea, res);
-
- (mc68kcpu)->n_flag = NFLAG_8(res);
- (mc68kcpu)->not_z_flag = res;
- (mc68kcpu)->v_flag = VFLAG_CLEAR;
- (mc68kcpu)->c_flag = CFLAG_CLEAR;
-}
-
-
-void m68000_base_device_ops::m68k_op_move_8_al_al(m68000_base_device* mc68kcpu)
-{
- UINT32 res = OPER_AL_8(mc68kcpu);
- UINT32 ea = EA_AL_8(mc68kcpu);
-
- m68ki_write_8((mc68kcpu), ea, res);
-
- (mc68kcpu)->n_flag = NFLAG_8(res);
- (mc68kcpu)->not_z_flag = res;
- (mc68kcpu)->v_flag = VFLAG_CLEAR;
- (mc68kcpu)->c_flag = CFLAG_CLEAR;
-}
-
-
-void m68000_base_device_ops::m68k_op_move_8_al_pcdi(m68000_base_device* mc68kcpu)
-{
- UINT32 res = OPER_PCDI_8(mc68kcpu);
- UINT32 ea = EA_AL_8(mc68kcpu);
-
- m68ki_write_8((mc68kcpu), ea, res);
-
- (mc68kcpu)->n_flag = NFLAG_8(res);
- (mc68kcpu)->not_z_flag = res;
- (mc68kcpu)->v_flag = VFLAG_CLEAR;
- (mc68kcpu)->c_flag = CFLAG_CLEAR;
-}
-
-
-void m68000_base_device_ops::m68k_op_move_8_al_pcix(m68000_base_device* mc68kcpu)
-{
- UINT32 res = OPER_PCIX_8(mc68kcpu);
- UINT32 ea = EA_AL_8(mc68kcpu);
-
- m68ki_write_8((mc68kcpu), ea, res);
-
- (mc68kcpu)->n_flag = NFLAG_8(res);
- (mc68kcpu)->not_z_flag = res;
- (mc68kcpu)->v_flag = VFLAG_CLEAR;
- (mc68kcpu)->c_flag = CFLAG_CLEAR;
-}
-
-
-void m68000_base_device_ops::m68k_op_move_8_al_i(m68000_base_device* mc68kcpu)
-{
- UINT32 res = OPER_I_8(mc68kcpu);
- UINT32 ea = EA_AL_8(mc68kcpu);
-
- m68ki_write_8((mc68kcpu), ea, res);
-
- (mc68kcpu)->n_flag = NFLAG_8(res);
- (mc68kcpu)->not_z_flag = res;
- (mc68kcpu)->v_flag = VFLAG_CLEAR;
- (mc68kcpu)->c_flag = CFLAG_CLEAR;
-}
-
-
-void m68000_base_device_ops::m68k_op_move_16_d_d(m68000_base_device* mc68kcpu)
-{
- UINT32 res = MASK_OUT_ABOVE_16(DY(mc68kcpu));
- UINT32* r_dst = &DX(mc68kcpu);
-
- *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;
-}
-
-
-void m68000_base_device_ops::m68k_op_move_16_d_a(m68000_base_device* mc68kcpu)
-{
- UINT32 res = MASK_OUT_ABOVE_16(AY(mc68kcpu));
- UINT32* r_dst = &DX(mc68kcpu);
-
- *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;
-}
-
-
-void m68000_base_device_ops::m68k_op_move_16_d_ai(m68000_base_device* mc68kcpu)
-{
- UINT32 res = OPER_AY_AI_16(mc68kcpu);
- UINT32* r_dst = &DX(mc68kcpu);
-
- *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;
-}
-
-
-void m68000_base_device_ops::m68k_op_move_16_d_pi(m68000_base_device* mc68kcpu)
-{
- UINT32 res = OPER_AY_PI_16(mc68kcpu);
- UINT32* r_dst = &DX(mc68kcpu);
-
- *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;
-}
-
-
-void m68000_base_device_ops::m68k_op_move_16_d_pd(m68000_base_device* mc68kcpu)
-{
- UINT32 res = OPER_AY_PD_16(mc68kcpu);
- UINT32* r_dst = &DX(mc68kcpu);
-
- *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;
-}
-
-
-void m68000_base_device_ops::m68k_op_move_16_d_di(m68000_base_device* mc68kcpu)
-{
- UINT32 res = OPER_AY_DI_16(mc68kcpu);
- UINT32* r_dst = &DX(mc68kcpu);
-
- *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;
-}
-
-
-void m68000_base_device_ops::m68k_op_move_16_d_ix(m68000_base_device* mc68kcpu)
-{
- UINT32 res = OPER_AY_IX_16(mc68kcpu);
- UINT32* r_dst = &DX(mc68kcpu);
-
- *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;
-}
-
-
-void m68000_base_device_ops::m68k_op_move_16_d_aw(m68000_base_device* mc68kcpu)
-{
- UINT32 res = OPER_AW_16(mc68kcpu);
- UINT32* r_dst = &DX(mc68kcpu);
-
- *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;
-}
-
-
-void m68000_base_device_ops::m68k_op_move_16_d_al(m68000_base_device* mc68kcpu)
-{
- UINT32 res = OPER_AL_16(mc68kcpu);
- UINT32* r_dst = &DX(mc68kcpu);
-
- *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;
-}
-
-
-void m68000_base_device_ops::m68k_op_move_16_d_pcdi(m68000_base_device* mc68kcpu)
-{
- UINT32 res = OPER_PCDI_16(mc68kcpu);
- UINT32* r_dst = &DX(mc68kcpu);
-
- *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;
-}
-
-
-void m68000_base_device_ops::m68k_op_move_16_d_pcix(m68000_base_device* mc68kcpu)
-{
- UINT32 res = OPER_PCIX_16(mc68kcpu);
- UINT32* r_dst = &DX(mc68kcpu);
-
- *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;
-}
-
-
-void m68000_base_device_ops::m68k_op_move_16_d_i(m68000_base_device* mc68kcpu)
-{
- UINT32 res = OPER_I_16(mc68kcpu);
- UINT32* r_dst = &DX(mc68kcpu);
-
- *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;
-}
-
-
-void m68000_base_device_ops::m68k_op_move_16_ai_d(m68000_base_device* mc68kcpu)
-{
- UINT32 res = MASK_OUT_ABOVE_16(DY(mc68kcpu));
- UINT32 ea = EA_AX_AI_16(mc68kcpu);
-
- m68ki_write_16((mc68kcpu), ea, res);
-
- (mc68kcpu)->n_flag = NFLAG_16(res);
- (mc68kcpu)->not_z_flag = res;
- (mc68kcpu)->v_flag = VFLAG_CLEAR;
- (mc68kcpu)->c_flag = CFLAG_CLEAR;
-}
-
-
-void m68000_base_device_ops::m68k_op_move_16_ai_a(m68000_base_device* mc68kcpu)
-{
- UINT32 res = MASK_OUT_ABOVE_16(AY(mc68kcpu));
- UINT32 ea = EA_AX_AI_16(mc68kcpu);
-
- m68ki_write_16((mc68kcpu), ea, res);
-
- (mc68kcpu)->n_flag = NFLAG_16(res);
- (mc68kcpu)->not_z_flag = res;
- (mc68kcpu)->v_flag = VFLAG_CLEAR;
- (mc68kcpu)->c_flag = CFLAG_CLEAR;
-}
-
-
-void m68000_base_device_ops::m68k_op_move_16_ai_ai(m68000_base_device* mc68kcpu)
-{
- UINT32 res = OPER_AY_AI_16(mc68kcpu);
- UINT32 ea = EA_AX_AI_16(mc68kcpu);
-
- m68ki_write_16((mc68kcpu), ea, res);
-
- (mc68kcpu)->n_flag = NFLAG_16(res);
- (mc68kcpu)->not_z_flag = res;
- (mc68kcpu)->v_flag = VFLAG_CLEAR;
- (mc68kcpu)->c_flag = CFLAG_CLEAR;
-}
-
-
-void m68000_base_device_ops::m68k_op_move_16_ai_pi(m68000_base_device* mc68kcpu)
-{
- UINT32 res = OPER_AY_PI_16(mc68kcpu);
- UINT32 ea = EA_AX_AI_16(mc68kcpu);
-
- m68ki_write_16((mc68kcpu), ea, res);
-
- (mc68kcpu)->n_flag = NFLAG_16(res);
- (mc68kcpu)->not_z_flag = res;
- (mc68kcpu)->v_flag = VFLAG_CLEAR;
- (mc68kcpu)->c_flag = CFLAG_CLEAR;
-}
-
-
-void m68000_base_device_ops::m68k_op_move_16_ai_pd(m68000_base_device* mc68kcpu)
-{
- UINT32 res = OPER_AY_PD_16(mc68kcpu);
- UINT32 ea = EA_AX_AI_16(mc68kcpu);
-
- m68ki_write_16((mc68kcpu), ea, res);
-
- (mc68kcpu)->n_flag = NFLAG_16(res);
- (mc68kcpu)->not_z_flag = res;
- (mc68kcpu)->v_flag = VFLAG_CLEAR;
- (mc68kcpu)->c_flag = CFLAG_CLEAR;
-}
-
-
-void m68000_base_device_ops::m68k_op_move_16_ai_di(m68000_base_device* mc68kcpu)
-{
- UINT32 res = OPER_AY_DI_16(mc68kcpu);
- UINT32 ea = EA_AX_AI_16(mc68kcpu);
-
- m68ki_write_16((mc68kcpu), ea, res);
-
- (mc68kcpu)->n_flag = NFLAG_16(res);
- (mc68kcpu)->not_z_flag = res;
- (mc68kcpu)->v_flag = VFLAG_CLEAR;
- (mc68kcpu)->c_flag = CFLAG_CLEAR;
-}
-
-
-void m68000_base_device_ops::m68k_op_move_16_ai_ix(m68000_base_device* mc68kcpu)
-{
- UINT32 res = OPER_AY_IX_16(mc68kcpu);
- UINT32 ea = EA_AX_AI_16(mc68kcpu);
-
- m68ki_write_16((mc68kcpu), ea, res);
-
- (mc68kcpu)->n_flag = NFLAG_16(res);
- (mc68kcpu)->not_z_flag = res;
- (mc68kcpu)->v_flag = VFLAG_CLEAR;
- (mc68kcpu)->c_flag = CFLAG_CLEAR;
-}
-
-
-void m68000_base_device_ops::m68k_op_move_16_ai_aw(m68000_base_device* mc68kcpu)
-{
- UINT32 res = OPER_AW_16(mc68kcpu);
- UINT32 ea = EA_AX_AI_16(mc68kcpu);
-
- m68ki_write_16((mc68kcpu), ea, res);
-
- (mc68kcpu)->n_flag = NFLAG_16(res);
- (mc68kcpu)->not_z_flag = res;
- (mc68kcpu)->v_flag = VFLAG_CLEAR;
- (mc68kcpu)->c_flag = CFLAG_CLEAR;
-}
-
-
-void m68000_base_device_ops::m68k_op_move_16_ai_al(m68000_base_device* mc68kcpu)
-{
- UINT32 res = OPER_AL_16(mc68kcpu);
- UINT32 ea = EA_AX_AI_16(mc68kcpu);
-
- m68ki_write_16((mc68kcpu), ea, res);
-
- (mc68kcpu)->n_flag = NFLAG_16(res);
- (mc68kcpu)->not_z_flag = res;
- (mc68kcpu)->v_flag = VFLAG_CLEAR;
- (mc68kcpu)->c_flag = CFLAG_CLEAR;
-}
-
-
-void m68000_base_device_ops::m68k_op_move_16_ai_pcdi(m68000_base_device* mc68kcpu)
-{
- UINT32 res = OPER_PCDI_16(mc68kcpu);
- UINT32 ea = EA_AX_AI_16(mc68kcpu);
-
- m68ki_write_16((mc68kcpu), ea, res);
-
- (mc68kcpu)->n_flag = NFLAG_16(res);
- (mc68kcpu)->not_z_flag = res;
- (mc68kcpu)->v_flag = VFLAG_CLEAR;
- (mc68kcpu)->c_flag = CFLAG_CLEAR;
-}
-
-
-void m68000_base_device_ops::m68k_op_move_16_ai_pcix(m68000_base_device* mc68kcpu)
-{
- UINT32 res = OPER_PCIX_16(mc68kcpu);
- UINT32 ea = EA_AX_AI_16(mc68kcpu);
-
- m68ki_write_16((mc68kcpu), ea, res);
-
- (mc68kcpu)->n_flag = NFLAG_16(res);
- (mc68kcpu)->not_z_flag = res;
- (mc68kcpu)->v_flag = VFLAG_CLEAR;
- (mc68kcpu)->c_flag = CFLAG_CLEAR;
-}
-
-
-void m68000_base_device_ops::m68k_op_move_16_ai_i(m68000_base_device* mc68kcpu)
-{
- UINT32 res = OPER_I_16(mc68kcpu);
- UINT32 ea = EA_AX_AI_16(mc68kcpu);
-
- m68ki_write_16((mc68kcpu), ea, res);
-
- (mc68kcpu)->n_flag = NFLAG_16(res);
- (mc68kcpu)->not_z_flag = res;
- (mc68kcpu)->v_flag = VFLAG_CLEAR;
- (mc68kcpu)->c_flag = CFLAG_CLEAR;
-}
-
-
-void m68000_base_device_ops::m68k_op_move_16_pi_d(m68000_base_device* mc68kcpu)
-{
- UINT32 res = MASK_OUT_ABOVE_16(DY(mc68kcpu));
- UINT32 ea = EA_AX_PI_16(mc68kcpu);
-
- m68ki_write_16((mc68kcpu), ea, res);
-
- (mc68kcpu)->n_flag = NFLAG_16(res);
- (mc68kcpu)->not_z_flag = res;
- (mc68kcpu)->v_flag = VFLAG_CLEAR;
- (mc68kcpu)->c_flag = CFLAG_CLEAR;
-}
-
-
-void m68000_base_device_ops::m68k_op_move_16_pi_a(m68000_base_device* mc68kcpu)
-{
- UINT32 res = MASK_OUT_ABOVE_16(AY(mc68kcpu));
- UINT32 ea = EA_AX_PI_16(mc68kcpu);
-
- m68ki_write_16((mc68kcpu), ea, res);
-
- (mc68kcpu)->n_flag = NFLAG_16(res);
- (mc68kcpu)->not_z_flag = res;
- (mc68kcpu)->v_flag = VFLAG_CLEAR;
- (mc68kcpu)->c_flag = CFLAG_CLEAR;
-}
-
-
-void m68000_base_device_ops::m68k_op_move_16_pi_ai(m68000_base_device* mc68kcpu)
-{
- UINT32 res = OPER_AY_AI_16(mc68kcpu);
- UINT32 ea = EA_AX_PI_16(mc68kcpu);
-
- m68ki_write_16((mc68kcpu), ea, res);
-
- (mc68kcpu)->n_flag = NFLAG_16(res);
- (mc68kcpu)->not_z_flag = res;
- (mc68kcpu)->v_flag = VFLAG_CLEAR;
- (mc68kcpu)->c_flag = CFLAG_CLEAR;
-}
-
-
-void m68000_base_device_ops::m68k_op_move_16_pi_pi(m68000_base_device* mc68kcpu)
-{
- UINT32 res = OPER_AY_PI_16(mc68kcpu);
- UINT32 ea = EA_AX_PI_16(mc68kcpu);
-
- m68ki_write_16((mc68kcpu), ea, res);
-
- (mc68kcpu)->n_flag = NFLAG_16(res);
- (mc68kcpu)->not_z_flag = res;
- (mc68kcpu)->v_flag = VFLAG_CLEAR;
- (mc68kcpu)->c_flag = CFLAG_CLEAR;
-}
-
-
-void m68000_base_device_ops::m68k_op_move_16_pi_pd(m68000_base_device* mc68kcpu)
-{
- UINT32 res = OPER_AY_PD_16(mc68kcpu);
- UINT32 ea = EA_AX_PI_16(mc68kcpu);
-
- m68ki_write_16((mc68kcpu), ea, res);
-
- (mc68kcpu)->n_flag = NFLAG_16(res);
- (mc68kcpu)->not_z_flag = res;
- (mc68kcpu)->v_flag = VFLAG_CLEAR;
- (mc68kcpu)->c_flag = CFLAG_CLEAR;
-}
-
-
-void m68000_base_device_ops::m68k_op_move_16_pi_di(m68000_base_device* mc68kcpu)
-{
- UINT32 res = OPER_AY_DI_16(mc68kcpu);
- UINT32 ea = EA_AX_PI_16(mc68kcpu);
-
- m68ki_write_16((mc68kcpu), ea, res);
-
- (mc68kcpu)->n_flag = NFLAG_16(res);
- (mc68kcpu)->not_z_flag = res;
- (mc68kcpu)->v_flag = VFLAG_CLEAR;
- (mc68kcpu)->c_flag = CFLAG_CLEAR;
-}
-
-
-void m68000_base_device_ops::m68k_op_move_16_pi_ix(m68000_base_device* mc68kcpu)
-{
- UINT32 res = OPER_AY_IX_16(mc68kcpu);
- UINT32 ea = EA_AX_PI_16(mc68kcpu);
-
- m68ki_write_16((mc68kcpu), ea, res);
-
- (mc68kcpu)->n_flag = NFLAG_16(res);
- (mc68kcpu)->not_z_flag = res;
- (mc68kcpu)->v_flag = VFLAG_CLEAR;
- (mc68kcpu)->c_flag = CFLAG_CLEAR;
-}
-
-
-void m68000_base_device_ops::m68k_op_move_16_pi_aw(m68000_base_device* mc68kcpu)
-{
- UINT32 res = OPER_AW_16(mc68kcpu);
- UINT32 ea = EA_AX_PI_16(mc68kcpu);
-
- m68ki_write_16((mc68kcpu), ea, res);
-
- (mc68kcpu)->n_flag = NFLAG_16(res);
- (mc68kcpu)->not_z_flag = res;
- (mc68kcpu)->v_flag = VFLAG_CLEAR;
- (mc68kcpu)->c_flag = CFLAG_CLEAR;
-}
-
-
-void m68000_base_device_ops::m68k_op_move_16_pi_al(m68000_base_device* mc68kcpu)
-{
- UINT32 res = OPER_AL_16(mc68kcpu);
- UINT32 ea = EA_AX_PI_16(mc68kcpu);
-
- m68ki_write_16((mc68kcpu), ea, res);
-
- (mc68kcpu)->n_flag = NFLAG_16(res);
- (mc68kcpu)->not_z_flag = res;
- (mc68kcpu)->v_flag = VFLAG_CLEAR;
- (mc68kcpu)->c_flag = CFLAG_CLEAR;
-}
-
-
-void m68000_base_device_ops::m68k_op_move_16_pi_pcdi(m68000_base_device* mc68kcpu)
-{
- UINT32 res = OPER_PCDI_16(mc68kcpu);
- UINT32 ea = EA_AX_PI_16(mc68kcpu);
-
- m68ki_write_16((mc68kcpu), ea, res);
-
- (mc68kcpu)->n_flag = NFLAG_16(res);
- (mc68kcpu)->not_z_flag = res;
- (mc68kcpu)->v_flag = VFLAG_CLEAR;
- (mc68kcpu)->c_flag = CFLAG_CLEAR;
-}
-
-
-void m68000_base_device_ops::m68k_op_move_16_pi_pcix(m68000_base_device* mc68kcpu)
-{
- UINT32 res = OPER_PCIX_16(mc68kcpu);
- UINT32 ea = EA_AX_PI_16(mc68kcpu);
-
- m68ki_write_16((mc68kcpu), ea, res);
-
- (mc68kcpu)->n_flag = NFLAG_16(res);
- (mc68kcpu)->not_z_flag = res;
- (mc68kcpu)->v_flag = VFLAG_CLEAR;
- (mc68kcpu)->c_flag = CFLAG_CLEAR;
-}
-
-
-void m68000_base_device_ops::m68k_op_move_16_pi_i(m68000_base_device* mc68kcpu)
-{
- UINT32 res = OPER_I_16(mc68kcpu);
- UINT32 ea = EA_AX_PI_16(mc68kcpu);
-
- m68ki_write_16((mc68kcpu), ea, res);
-
- (mc68kcpu)->n_flag = NFLAG_16(res);
- (mc68kcpu)->not_z_flag = res;
- (mc68kcpu)->v_flag = VFLAG_CLEAR;
- (mc68kcpu)->c_flag = CFLAG_CLEAR;
-}
-
-
-void m68000_base_device_ops::m68k_op_move_16_pd_d(m68000_base_device* mc68kcpu)
-{
- UINT32 res = MASK_OUT_ABOVE_16(DY(mc68kcpu));
- UINT32 ea = EA_AX_PD_16(mc68kcpu);
-
- m68ki_write_16((mc68kcpu), ea, res);
-
- (mc68kcpu)->n_flag = NFLAG_16(res);
- (mc68kcpu)->not_z_flag = res;
- (mc68kcpu)->v_flag = VFLAG_CLEAR;
- (mc68kcpu)->c_flag = CFLAG_CLEAR;
-}
-
-
-void m68000_base_device_ops::m68k_op_move_16_pd_a(m68000_base_device* mc68kcpu)
-{
- UINT32 res = MASK_OUT_ABOVE_16(AY(mc68kcpu));
- UINT32 ea = EA_AX_PD_16(mc68kcpu);
-
- m68ki_write_16((mc68kcpu), ea, res);
-
- (mc68kcpu)->n_flag = NFLAG_16(res);
- (mc68kcpu)->not_z_flag = res;
- (mc68kcpu)->v_flag = VFLAG_CLEAR;
- (mc68kcpu)->c_flag = CFLAG_CLEAR;
-}
-
-
-void m68000_base_device_ops::m68k_op_move_16_pd_ai(m68000_base_device* mc68kcpu)
-{
- UINT32 res = OPER_AY_AI_16(mc68kcpu);
- UINT32 ea = EA_AX_PD_16(mc68kcpu);
-
- m68ki_write_16((mc68kcpu), ea, res);
-
- (mc68kcpu)->n_flag = NFLAG_16(res);
- (mc68kcpu)->not_z_flag = res;
- (mc68kcpu)->v_flag = VFLAG_CLEAR;
- (mc68kcpu)->c_flag = CFLAG_CLEAR;
-}
-
-
-void m68000_base_device_ops::m68k_op_move_16_pd_pi(m68000_base_device* mc68kcpu)
-{
- UINT32 res = OPER_AY_PI_16(mc68kcpu);
- UINT32 ea = EA_AX_PD_16(mc68kcpu);
-
- m68ki_write_16((mc68kcpu), ea, res);
-
- (mc68kcpu)->n_flag = NFLAG_16(res);
- (mc68kcpu)->not_z_flag = res;
- (mc68kcpu)->v_flag = VFLAG_CLEAR;
- (mc68kcpu)->c_flag = CFLAG_CLEAR;
-}
-
-
-void m68000_base_device_ops::m68k_op_move_16_pd_pd(m68000_base_device* mc68kcpu)
-{
- UINT32 res = OPER_AY_PD_16(mc68kcpu);
- UINT32 ea = EA_AX_PD_16(mc68kcpu);
-
- m68ki_write_16((mc68kcpu), ea, res);
-
- (mc68kcpu)->n_flag = NFLAG_16(res);
- (mc68kcpu)->not_z_flag = res;
- (mc68kcpu)->v_flag = VFLAG_CLEAR;
- (mc68kcpu)->c_flag = CFLAG_CLEAR;
-}
-
-
-void m68000_base_device_ops::m68k_op_move_16_pd_di(m68000_base_device* mc68kcpu)
-{
- UINT32 res = OPER_AY_DI_16(mc68kcpu);
- UINT32 ea = EA_AX_PD_16(mc68kcpu);
-
- m68ki_write_16((mc68kcpu), ea, res);
-
- (mc68kcpu)->n_flag = NFLAG_16(res);
- (mc68kcpu)->not_z_flag = res;
- (mc68kcpu)->v_flag = VFLAG_CLEAR;
- (mc68kcpu)->c_flag = CFLAG_CLEAR;
-}
-
-
-void m68000_base_device_ops::m68k_op_move_16_pd_ix(m68000_base_device* mc68kcpu)
-{
- UINT32 res = OPER_AY_IX_16(mc68kcpu);
- UINT32 ea = EA_AX_PD_16(mc68kcpu);
-
- m68ki_write_16((mc68kcpu), ea, res);
-
- (mc68kcpu)->n_flag = NFLAG_16(res);
- (mc68kcpu)->not_z_flag = res;
- (mc68kcpu)->v_flag = VFLAG_CLEAR;
- (mc68kcpu)->c_flag = CFLAG_CLEAR;
-}
-
-
-void m68000_base_device_ops::m68k_op_move_16_pd_aw(m68000_base_device* mc68kcpu)
-{
- UINT32 res = OPER_AW_16(mc68kcpu);
- UINT32 ea = EA_AX_PD_16(mc68kcpu);
-
- m68ki_write_16((mc68kcpu), ea, res);
-
- (mc68kcpu)->n_flag = NFLAG_16(res);
- (mc68kcpu)->not_z_flag = res;
- (mc68kcpu)->v_flag = VFLAG_CLEAR;
- (mc68kcpu)->c_flag = CFLAG_CLEAR;
-}
-
-
-void m68000_base_device_ops::m68k_op_move_16_pd_al(m68000_base_device* mc68kcpu)
-{
- UINT32 res = OPER_AL_16(mc68kcpu);
- UINT32 ea = EA_AX_PD_16(mc68kcpu);
-
- m68ki_write_16((mc68kcpu), ea, res);
-
- (mc68kcpu)->n_flag = NFLAG_16(res);
- (mc68kcpu)->not_z_flag = res;
- (mc68kcpu)->v_flag = VFLAG_CLEAR;
- (mc68kcpu)->c_flag = CFLAG_CLEAR;
-}
-
-
-void m68000_base_device_ops::m68k_op_move_16_pd_pcdi(m68000_base_device* mc68kcpu)
-{
- UINT32 res = OPER_PCDI_16(mc68kcpu);
- UINT32 ea = EA_AX_PD_16(mc68kcpu);
-
- m68ki_write_16((mc68kcpu), ea, res);
-
- (mc68kcpu)->n_flag = NFLAG_16(res);
- (mc68kcpu)->not_z_flag = res;
- (mc68kcpu)->v_flag = VFLAG_CLEAR;
- (mc68kcpu)->c_flag = CFLAG_CLEAR;
-}
-
-
-void m68000_base_device_ops::m68k_op_move_16_pd_pcix(m68000_base_device* mc68kcpu)
-{
- UINT32 res = OPER_PCIX_16(mc68kcpu);
- UINT32 ea = EA_AX_PD_16(mc68kcpu);
-
- m68ki_write_16((mc68kcpu), ea, res);
-
- (mc68kcpu)->n_flag = NFLAG_16(res);
- (mc68kcpu)->not_z_flag = res;
- (mc68kcpu)->v_flag = VFLAG_CLEAR;
- (mc68kcpu)->c_flag = CFLAG_CLEAR;
-}
-
-
-void m68000_base_device_ops::m68k_op_move_16_pd_i(m68000_base_device* mc68kcpu)
-{
- UINT32 res = OPER_I_16(mc68kcpu);
- UINT32 ea = EA_AX_PD_16(mc68kcpu);
-
- m68ki_write_16((mc68kcpu), ea, res);
-
- (mc68kcpu)->n_flag = NFLAG_16(res);
- (mc68kcpu)->not_z_flag = res;
- (mc68kcpu)->v_flag = VFLAG_CLEAR;
- (mc68kcpu)->c_flag = CFLAG_CLEAR;
-}
-
-
-void m68000_base_device_ops::m68k_op_move_16_di_d(m68000_base_device* mc68kcpu)
-{
- UINT32 res = MASK_OUT_ABOVE_16(DY(mc68kcpu));
- UINT32 ea = EA_AX_DI_16(mc68kcpu);
-
- m68ki_write_16((mc68kcpu), ea, res);
-
- (mc68kcpu)->n_flag = NFLAG_16(res);
- (mc68kcpu)->not_z_flag = res;
- (mc68kcpu)->v_flag = VFLAG_CLEAR;
- (mc68kcpu)->c_flag = CFLAG_CLEAR;
-}
-
-
-void m68000_base_device_ops::m68k_op_move_16_di_a(m68000_base_device* mc68kcpu)
-{
- UINT32 res = MASK_OUT_ABOVE_16(AY(mc68kcpu));
- UINT32 ea = EA_AX_DI_16(mc68kcpu);
-
- m68ki_write_16((mc68kcpu), ea, res);
-
- (mc68kcpu)->n_flag = NFLAG_16(res);
- (mc68kcpu)->not_z_flag = res;
- (mc68kcpu)->v_flag = VFLAG_CLEAR;
- (mc68kcpu)->c_flag = CFLAG_CLEAR;
-}
-
-
-void m68000_base_device_ops::m68k_op_move_16_di_ai(m68000_base_device* mc68kcpu)
-{
- UINT32 res = OPER_AY_AI_16(mc68kcpu);
- UINT32 ea = EA_AX_DI_16(mc68kcpu);
-
- m68ki_write_16((mc68kcpu), ea, res);
-
- (mc68kcpu)->n_flag = NFLAG_16(res);
- (mc68kcpu)->not_z_flag = res;
- (mc68kcpu)->v_flag = VFLAG_CLEAR;
- (mc68kcpu)->c_flag = CFLAG_CLEAR;
-}
-
-
-void m68000_base_device_ops::m68k_op_move_16_di_pi(m68000_base_device* mc68kcpu)
-{
- UINT32 res = OPER_AY_PI_16(mc68kcpu);
- UINT32 ea = EA_AX_DI_16(mc68kcpu);
-
- m68ki_write_16((mc68kcpu), ea, res);
-
- (mc68kcpu)->n_flag = NFLAG_16(res);
- (mc68kcpu)->not_z_flag = res;
- (mc68kcpu)->v_flag = VFLAG_CLEAR;
- (mc68kcpu)->c_flag = CFLAG_CLEAR;
-}
-
-
-void m68000_base_device_ops::m68k_op_move_16_di_pd(m68000_base_device* mc68kcpu)
-{
- UINT32 res = OPER_AY_PD_16(mc68kcpu);
- UINT32 ea = EA_AX_DI_16(mc68kcpu);
-
- m68ki_write_16((mc68kcpu), ea, res);
-
- (mc68kcpu)->n_flag = NFLAG_16(res);
- (mc68kcpu)->not_z_flag = res;
- (mc68kcpu)->v_flag = VFLAG_CLEAR;
- (mc68kcpu)->c_flag = CFLAG_CLEAR;
-}
-
-
-void m68000_base_device_ops::m68k_op_move_16_di_di(m68000_base_device* mc68kcpu)
-{
- UINT32 res = OPER_AY_DI_16(mc68kcpu);
- UINT32 ea = EA_AX_DI_16(mc68kcpu);
-
- m68ki_write_16((mc68kcpu), ea, res);
-
- (mc68kcpu)->n_flag = NFLAG_16(res);
- (mc68kcpu)->not_z_flag = res;
- (mc68kcpu)->v_flag = VFLAG_CLEAR;
- (mc68kcpu)->c_flag = CFLAG_CLEAR;
-}
-
-
-void m68000_base_device_ops::m68k_op_move_16_di_ix(m68000_base_device* mc68kcpu)
-{
- UINT32 res = OPER_AY_IX_16(mc68kcpu);
- UINT32 ea = EA_AX_DI_16(mc68kcpu);
-
- m68ki_write_16((mc68kcpu), ea, res);
-
- (mc68kcpu)->n_flag = NFLAG_16(res);
- (mc68kcpu)->not_z_flag = res;
- (mc68kcpu)->v_flag = VFLAG_CLEAR;
- (mc68kcpu)->c_flag = CFLAG_CLEAR;
-}
-
-
-void m68000_base_device_ops::m68k_op_move_16_di_aw(m68000_base_device* mc68kcpu)
-{
- UINT32 res = OPER_AW_16(mc68kcpu);
- UINT32 ea = EA_AX_DI_16(mc68kcpu);
-
- m68ki_write_16((mc68kcpu), ea, res);
-
- (mc68kcpu)->n_flag = NFLAG_16(res);
- (mc68kcpu)->not_z_flag = res;
- (mc68kcpu)->v_flag = VFLAG_CLEAR;
- (mc68kcpu)->c_flag = CFLAG_CLEAR;
-}
-
-
-void m68000_base_device_ops::m68k_op_move_16_di_al(m68000_base_device* mc68kcpu)
-{
- UINT32 res = OPER_AL_16(mc68kcpu);
- UINT32 ea = EA_AX_DI_16(mc68kcpu);
-
- m68ki_write_16((mc68kcpu), ea, res);
-
- (mc68kcpu)->n_flag = NFLAG_16(res);
- (mc68kcpu)->not_z_flag = res;
- (mc68kcpu)->v_flag = VFLAG_CLEAR;
- (mc68kcpu)->c_flag = CFLAG_CLEAR;
-}
-
-
-void m68000_base_device_ops::m68k_op_move_16_di_pcdi(m68000_base_device* mc68kcpu)
-{
- UINT32 res = OPER_PCDI_16(mc68kcpu);
- UINT32 ea = EA_AX_DI_16(mc68kcpu);
-
- m68ki_write_16((mc68kcpu), ea, res);
-
- (mc68kcpu)->n_flag = NFLAG_16(res);
- (mc68kcpu)->not_z_flag = res;
- (mc68kcpu)->v_flag = VFLAG_CLEAR;
- (mc68kcpu)->c_flag = CFLAG_CLEAR;
-}
-
-
-void m68000_base_device_ops::m68k_op_move_16_di_pcix(m68000_base_device* mc68kcpu)
-{
- UINT32 res = OPER_PCIX_16(mc68kcpu);
- UINT32 ea = EA_AX_DI_16(mc68kcpu);
-
- m68ki_write_16((mc68kcpu), ea, res);
-
- (mc68kcpu)->n_flag = NFLAG_16(res);
- (mc68kcpu)->not_z_flag = res;
- (mc68kcpu)->v_flag = VFLAG_CLEAR;
- (mc68kcpu)->c_flag = CFLAG_CLEAR;
-}
-
-
-void m68000_base_device_ops::m68k_op_move_16_di_i(m68000_base_device* mc68kcpu)
-{
- UINT32 res = OPER_I_16(mc68kcpu);
- UINT32 ea = EA_AX_DI_16(mc68kcpu);
-
- m68ki_write_16((mc68kcpu), ea, res);
-
- (mc68kcpu)->n_flag = NFLAG_16(res);
- (mc68kcpu)->not_z_flag = res;
- (mc68kcpu)->v_flag = VFLAG_CLEAR;
- (mc68kcpu)->c_flag = CFLAG_CLEAR;
-}
-
-
-void m68000_base_device_ops::m68k_op_move_16_ix_d(m68000_base_device* mc68kcpu)
-{
- UINT32 res = MASK_OUT_ABOVE_16(DY(mc68kcpu));
- UINT32 ea = EA_AX_IX_16(mc68kcpu);
-
- m68ki_write_16((mc68kcpu), ea, res);
-
- (mc68kcpu)->n_flag = NFLAG_16(res);
- (mc68kcpu)->not_z_flag = res;
- (mc68kcpu)->v_flag = VFLAG_CLEAR;
- (mc68kcpu)->c_flag = CFLAG_CLEAR;
-}
-
-
-void m68000_base_device_ops::m68k_op_move_16_ix_a(m68000_base_device* mc68kcpu)
-{
- UINT32 res = MASK_OUT_ABOVE_16(AY(mc68kcpu));
- UINT32 ea = EA_AX_IX_16(mc68kcpu);
-
- m68ki_write_16((mc68kcpu), ea, res);
-
- (mc68kcpu)->n_flag = NFLAG_16(res);
- (mc68kcpu)->not_z_flag = res;
- (mc68kcpu)->v_flag = VFLAG_CLEAR;
- (mc68kcpu)->c_flag = CFLAG_CLEAR;
-}
-
-
-void m68000_base_device_ops::m68k_op_move_16_ix_ai(m68000_base_device* mc68kcpu)
-{
- UINT32 res = OPER_AY_AI_16(mc68kcpu);
- UINT32 ea = EA_AX_IX_16(mc68kcpu);
-
- m68ki_write_16((mc68kcpu), ea, res);
-
- (mc68kcpu)->n_flag = NFLAG_16(res);
- (mc68kcpu)->not_z_flag = res;
- (mc68kcpu)->v_flag = VFLAG_CLEAR;
- (mc68kcpu)->c_flag = CFLAG_CLEAR;
-}
-
-
-void m68000_base_device_ops::m68k_op_move_16_ix_pi(m68000_base_device* mc68kcpu)
-{
- UINT32 res = OPER_AY_PI_16(mc68kcpu);
- UINT32 ea = EA_AX_IX_16(mc68kcpu);
-
- m68ki_write_16((mc68kcpu), ea, res);
-
- (mc68kcpu)->n_flag = NFLAG_16(res);
- (mc68kcpu)->not_z_flag = res;
- (mc68kcpu)->v_flag = VFLAG_CLEAR;
- (mc68kcpu)->c_flag = CFLAG_CLEAR;
-}
-
-
-void m68000_base_device_ops::m68k_op_move_16_ix_pd(m68000_base_device* mc68kcpu)
-{
- UINT32 res = OPER_AY_PD_16(mc68kcpu);
- UINT32 ea = EA_AX_IX_16(mc68kcpu);
-
- m68ki_write_16((mc68kcpu), ea, res);
-
- (mc68kcpu)->n_flag = NFLAG_16(res);
- (mc68kcpu)->not_z_flag = res;
- (mc68kcpu)->v_flag = VFLAG_CLEAR;
- (mc68kcpu)->c_flag = CFLAG_CLEAR;
-}
-
-
-void m68000_base_device_ops::m68k_op_move_16_ix_di(m68000_base_device* mc68kcpu)
-{
- UINT32 res = OPER_AY_DI_16(mc68kcpu);
- UINT32 ea = EA_AX_IX_16(mc68kcpu);
-
- m68ki_write_16((mc68kcpu), ea, res);
-
- (mc68kcpu)->n_flag = NFLAG_16(res);
- (mc68kcpu)->not_z_flag = res;
- (mc68kcpu)->v_flag = VFLAG_CLEAR;
- (mc68kcpu)->c_flag = CFLAG_CLEAR;
-}
-
-
-void m68000_base_device_ops::m68k_op_move_16_ix_ix(m68000_base_device* mc68kcpu)
-{
- UINT32 res = OPER_AY_IX_16(mc68kcpu);
- UINT32 ea = EA_AX_IX_16(mc68kcpu);
-
- m68ki_write_16((mc68kcpu), ea, res);
-
- (mc68kcpu)->n_flag = NFLAG_16(res);
- (mc68kcpu)->not_z_flag = res;
- (mc68kcpu)->v_flag = VFLAG_CLEAR;
- (mc68kcpu)->c_flag = CFLAG_CLEAR;
-}
-
-
-void m68000_base_device_ops::m68k_op_move_16_ix_aw(m68000_base_device* mc68kcpu)
-{
- UINT32 res = OPER_AW_16(mc68kcpu);
- UINT32 ea = EA_AX_IX_16(mc68kcpu);
-
- m68ki_write_16((mc68kcpu), ea, res);
-
- (mc68kcpu)->n_flag = NFLAG_16(res);
- (mc68kcpu)->not_z_flag = res;
- (mc68kcpu)->v_flag = VFLAG_CLEAR;
- (mc68kcpu)->c_flag = CFLAG_CLEAR;
-}
-
-
-void m68000_base_device_ops::m68k_op_move_16_ix_al(m68000_base_device* mc68kcpu)
-{
- UINT32 res = OPER_AL_16(mc68kcpu);
- UINT32 ea = EA_AX_IX_16(mc68kcpu);
-
- m68ki_write_16((mc68kcpu), ea, res);
-
- (mc68kcpu)->n_flag = NFLAG_16(res);
- (mc68kcpu)->not_z_flag = res;
- (mc68kcpu)->v_flag = VFLAG_CLEAR;
- (mc68kcpu)->c_flag = CFLAG_CLEAR;
-}
-
-
-void m68000_base_device_ops::m68k_op_move_16_ix_pcdi(m68000_base_device* mc68kcpu)
-{
- UINT32 res = OPER_PCDI_16(mc68kcpu);
- UINT32 ea = EA_AX_IX_16(mc68kcpu);
-
- m68ki_write_16((mc68kcpu), ea, res);
-
- (mc68kcpu)->n_flag = NFLAG_16(res);
- (mc68kcpu)->not_z_flag = res;
- (mc68kcpu)->v_flag = VFLAG_CLEAR;
- (mc68kcpu)->c_flag = CFLAG_CLEAR;
-}
-
-
-void m68000_base_device_ops::m68k_op_move_16_ix_pcix(m68000_base_device* mc68kcpu)
-{
- UINT32 res = OPER_PCIX_16(mc68kcpu);
- UINT32 ea = EA_AX_IX_16(mc68kcpu);
-
- m68ki_write_16((mc68kcpu), ea, res);
-
- (mc68kcpu)->n_flag = NFLAG_16(res);
- (mc68kcpu)->not_z_flag = res;
- (mc68kcpu)->v_flag = VFLAG_CLEAR;
- (mc68kcpu)->c_flag = CFLAG_CLEAR;
-}
-
-
-void m68000_base_device_ops::m68k_op_move_16_ix_i(m68000_base_device* mc68kcpu)
-{
- UINT32 res = OPER_I_16(mc68kcpu);
- UINT32 ea = EA_AX_IX_16(mc68kcpu);
-
- m68ki_write_16((mc68kcpu), ea, res);
-
- (mc68kcpu)->n_flag = NFLAG_16(res);
- (mc68kcpu)->not_z_flag = res;
- (mc68kcpu)->v_flag = VFLAG_CLEAR;
- (mc68kcpu)->c_flag = CFLAG_CLEAR;
-}
-
-
-void m68000_base_device_ops::m68k_op_move_16_aw_d(m68000_base_device* mc68kcpu)
-{
- UINT32 res = MASK_OUT_ABOVE_16(DY(mc68kcpu));
- UINT32 ea = EA_AW_16(mc68kcpu);
-
- m68ki_write_16((mc68kcpu), ea, res);
-
- (mc68kcpu)->n_flag = NFLAG_16(res);
- (mc68kcpu)->not_z_flag = res;
- (mc68kcpu)->v_flag = VFLAG_CLEAR;
- (mc68kcpu)->c_flag = CFLAG_CLEAR;
-}
-
-
-void m68000_base_device_ops::m68k_op_move_16_aw_a(m68000_base_device* mc68kcpu)
-{
- UINT32 res = MASK_OUT_ABOVE_16(AY(mc68kcpu));
- UINT32 ea = EA_AW_16(mc68kcpu);
-
- m68ki_write_16((mc68kcpu), ea, res);
-
- (mc68kcpu)->n_flag = NFLAG_16(res);
- (mc68kcpu)->not_z_flag = res;
- (mc68kcpu)->v_flag = VFLAG_CLEAR;
- (mc68kcpu)->c_flag = CFLAG_CLEAR;
-}
-
-
-void m68000_base_device_ops::m68k_op_move_16_aw_ai(m68000_base_device* mc68kcpu)
-{
- UINT32 res = OPER_AY_AI_16(mc68kcpu);
- UINT32 ea = EA_AW_16(mc68kcpu);
-
- m68ki_write_16((mc68kcpu), ea, res);
-
- (mc68kcpu)->n_flag = NFLAG_16(res);
- (mc68kcpu)->not_z_flag = res;
- (mc68kcpu)->v_flag = VFLAG_CLEAR;
- (mc68kcpu)->c_flag = CFLAG_CLEAR;
-}
-
-
-void m68000_base_device_ops::m68k_op_move_16_aw_pi(m68000_base_device* mc68kcpu)
-{
- UINT32 res = OPER_AY_PI_16(mc68kcpu);
- UINT32 ea = EA_AW_16(mc68kcpu);
-
- m68ki_write_16((mc68kcpu), ea, res);
-
- (mc68kcpu)->n_flag = NFLAG_16(res);
- (mc68kcpu)->not_z_flag = res;
- (mc68kcpu)->v_flag = VFLAG_CLEAR;
- (mc68kcpu)->c_flag = CFLAG_CLEAR;
-}
-
-
-void m68000_base_device_ops::m68k_op_move_16_aw_pd(m68000_base_device* mc68kcpu)
-{
- UINT32 res = OPER_AY_PD_16(mc68kcpu);
- UINT32 ea = EA_AW_16(mc68kcpu);
-
- m68ki_write_16((mc68kcpu), ea, res);
-
- (mc68kcpu)->n_flag = NFLAG_16(res);
- (mc68kcpu)->not_z_flag = res;
- (mc68kcpu)->v_flag = VFLAG_CLEAR;
- (mc68kcpu)->c_flag = CFLAG_CLEAR;
-}
-
-
-void m68000_base_device_ops::m68k_op_move_16_aw_di(m68000_base_device* mc68kcpu)
-{
- UINT32 res = OPER_AY_DI_16(mc68kcpu);
- UINT32 ea = EA_AW_16(mc68kcpu);
-
- m68ki_write_16((mc68kcpu), ea, res);
-
- (mc68kcpu)->n_flag = NFLAG_16(res);
- (mc68kcpu)->not_z_flag = res;
- (mc68kcpu)->v_flag = VFLAG_CLEAR;
- (mc68kcpu)->c_flag = CFLAG_CLEAR;
-}
-
-
-void m68000_base_device_ops::m68k_op_move_16_aw_ix(m68000_base_device* mc68kcpu)
-{
- UINT32 res = OPER_AY_IX_16(mc68kcpu);
- UINT32 ea = EA_AW_16(mc68kcpu);
-
- m68ki_write_16((mc68kcpu), ea, res);
-
- (mc68kcpu)->n_flag = NFLAG_16(res);
- (mc68kcpu)->not_z_flag = res;
- (mc68kcpu)->v_flag = VFLAG_CLEAR;
- (mc68kcpu)->c_flag = CFLAG_CLEAR;
-}
-
-
-void m68000_base_device_ops::m68k_op_move_16_aw_aw(m68000_base_device* mc68kcpu)
-{
- UINT32 res = OPER_AW_16(mc68kcpu);
- UINT32 ea = EA_AW_16(mc68kcpu);
-
- m68ki_write_16((mc68kcpu), ea, res);
-
- (mc68kcpu)->n_flag = NFLAG_16(res);
- (mc68kcpu)->not_z_flag = res;
- (mc68kcpu)->v_flag = VFLAG_CLEAR;
- (mc68kcpu)->c_flag = CFLAG_CLEAR;
-}
-
-
-void m68000_base_device_ops::m68k_op_move_16_aw_al(m68000_base_device* mc68kcpu)
-{
- UINT32 res = OPER_AL_16(mc68kcpu);
- UINT32 ea = EA_AW_16(mc68kcpu);
-
- m68ki_write_16((mc68kcpu), ea, res);
-
- (mc68kcpu)->n_flag = NFLAG_16(res);
- (mc68kcpu)->not_z_flag = res;
- (mc68kcpu)->v_flag = VFLAG_CLEAR;
- (mc68kcpu)->c_flag = CFLAG_CLEAR;
-}
-
-
-void m68000_base_device_ops::m68k_op_move_16_aw_pcdi(m68000_base_device* mc68kcpu)
-{
- UINT32 res = OPER_PCDI_16(mc68kcpu);
- UINT32 ea = EA_AW_16(mc68kcpu);
-
- m68ki_write_16((mc68kcpu), ea, res);
-
- (mc68kcpu)->n_flag = NFLAG_16(res);
- (mc68kcpu)->not_z_flag = res;
- (mc68kcpu)->v_flag = VFLAG_CLEAR;
- (mc68kcpu)->c_flag = CFLAG_CLEAR;
-}
-
-
-void m68000_base_device_ops::m68k_op_move_16_aw_pcix(m68000_base_device* mc68kcpu)
-{
- UINT32 res = OPER_PCIX_16(mc68kcpu);
- UINT32 ea = EA_AW_16(mc68kcpu);
-
- m68ki_write_16((mc68kcpu), ea, res);
-
- (mc68kcpu)->n_flag = NFLAG_16(res);
- (mc68kcpu)->not_z_flag = res;
- (mc68kcpu)->v_flag = VFLAG_CLEAR;
- (mc68kcpu)->c_flag = CFLAG_CLEAR;
-}
-
-
-void m68000_base_device_ops::m68k_op_move_16_aw_i(m68000_base_device* mc68kcpu)
-{
- UINT32 res = OPER_I_16(mc68kcpu);
- UINT32 ea = EA_AW_16(mc68kcpu);
-
- m68ki_write_16((mc68kcpu), ea, res);
-
- (mc68kcpu)->n_flag = NFLAG_16(res);
- (mc68kcpu)->not_z_flag = res;
- (mc68kcpu)->v_flag = VFLAG_CLEAR;
- (mc68kcpu)->c_flag = CFLAG_CLEAR;
-}
-
-
-void m68000_base_device_ops::m68k_op_move_16_al_d(m68000_base_device* mc68kcpu)
-{
- UINT32 res = MASK_OUT_ABOVE_16(DY(mc68kcpu));
- UINT32 ea = EA_AL_16(mc68kcpu);
-
- m68ki_write_16((mc68kcpu), ea, res);
-
- (mc68kcpu)->n_flag = NFLAG_16(res);
- (mc68kcpu)->not_z_flag = res;
- (mc68kcpu)->v_flag = VFLAG_CLEAR;
- (mc68kcpu)->c_flag = CFLAG_CLEAR;
-}
-
-
-void m68000_base_device_ops::m68k_op_move_16_al_a(m68000_base_device* mc68kcpu)
-{
- UINT32 res = MASK_OUT_ABOVE_16(AY(mc68kcpu));
- UINT32 ea = EA_AL_16(mc68kcpu);
-
- m68ki_write_16((mc68kcpu), ea, res);
-
- (mc68kcpu)->n_flag = NFLAG_16(res);
- (mc68kcpu)->not_z_flag = res;
- (mc68kcpu)->v_flag = VFLAG_CLEAR;
- (mc68kcpu)->c_flag = CFLAG_CLEAR;
-}
-
-
-void m68000_base_device_ops::m68k_op_move_16_al_ai(m68000_base_device* mc68kcpu)
-{
- UINT32 res = OPER_AY_AI_16(mc68kcpu);
- UINT32 ea = EA_AL_16(mc68kcpu);
-
- m68ki_write_16((mc68kcpu), ea, res);
-
- (mc68kcpu)->n_flag = NFLAG_16(res);
- (mc68kcpu)->not_z_flag = res;
- (mc68kcpu)->v_flag = VFLAG_CLEAR;
- (mc68kcpu)->c_flag = CFLAG_CLEAR;
-}
-
-
-void m68000_base_device_ops::m68k_op_move_16_al_pi(m68000_base_device* mc68kcpu)
-{
- UINT32 res = OPER_AY_PI_16(mc68kcpu);
- UINT32 ea = EA_AL_16(mc68kcpu);
-
- m68ki_write_16((mc68kcpu), ea, res);
-
- (mc68kcpu)->n_flag = NFLAG_16(res);
- (mc68kcpu)->not_z_flag = res;
- (mc68kcpu)->v_flag = VFLAG_CLEAR;
- (mc68kcpu)->c_flag = CFLAG_CLEAR;
-}
-
-
-void m68000_base_device_ops::m68k_op_move_16_al_pd(m68000_base_device* mc68kcpu)
-{
- UINT32 res = OPER_AY_PD_16(mc68kcpu);
- UINT32 ea = EA_AL_16(mc68kcpu);
-
- m68ki_write_16((mc68kcpu), ea, res);
-
- (mc68kcpu)->n_flag = NFLAG_16(res);
- (mc68kcpu)->not_z_flag = res;
- (mc68kcpu)->v_flag = VFLAG_CLEAR;
- (mc68kcpu)->c_flag = CFLAG_CLEAR;
-}
-
-
-void m68000_base_device_ops::m68k_op_move_16_al_di(m68000_base_device* mc68kcpu)
-{
- UINT32 res = OPER_AY_DI_16(mc68kcpu);
- UINT32 ea = EA_AL_16(mc68kcpu);
-
- m68ki_write_16((mc68kcpu), ea, res);
-
- (mc68kcpu)->n_flag = NFLAG_16(res);
- (mc68kcpu)->not_z_flag = res;
- (mc68kcpu)->v_flag = VFLAG_CLEAR;
- (mc68kcpu)->c_flag = CFLAG_CLEAR;
-}
-
-
-void m68000_base_device_ops::m68k_op_move_16_al_ix(m68000_base_device* mc68kcpu)
-{
- UINT32 res = OPER_AY_IX_16(mc68kcpu);
- UINT32 ea = EA_AL_16(mc68kcpu);
-
- m68ki_write_16((mc68kcpu), ea, res);
-
- (mc68kcpu)->n_flag = NFLAG_16(res);
- (mc68kcpu)->not_z_flag = res;
- (mc68kcpu)->v_flag = VFLAG_CLEAR;
- (mc68kcpu)->c_flag = CFLAG_CLEAR;
-}
-
-
-void m68000_base_device_ops::m68k_op_move_16_al_aw(m68000_base_device* mc68kcpu)
-{
- UINT32 res = OPER_AW_16(mc68kcpu);
- UINT32 ea = EA_AL_16(mc68kcpu);
-
- m68ki_write_16((mc68kcpu), ea, res);
-
- (mc68kcpu)->n_flag = NFLAG_16(res);
- (mc68kcpu)->not_z_flag = res;
- (mc68kcpu)->v_flag = VFLAG_CLEAR;
- (mc68kcpu)->c_flag = CFLAG_CLEAR;
-}
-
-
-void m68000_base_device_ops::m68k_op_move_16_al_al(m68000_base_device* mc68kcpu)
-{
- UINT32 res = OPER_AL_16(mc68kcpu);
- UINT32 ea = EA_AL_16(mc68kcpu);
-
- m68ki_write_16((mc68kcpu), ea, res);
-
- (mc68kcpu)->n_flag = NFLAG_16(res);
- (mc68kcpu)->not_z_flag = res;
- (mc68kcpu)->v_flag = VFLAG_CLEAR;
- (mc68kcpu)->c_flag = CFLAG_CLEAR;
-}
-
-
-void m68000_base_device_ops::m68k_op_move_16_al_pcdi(m68000_base_device* mc68kcpu)
-{
- UINT32 res = OPER_PCDI_16(mc68kcpu);
- UINT32 ea = EA_AL_16(mc68kcpu);
-
- m68ki_write_16((mc68kcpu), ea, res);
-
- (mc68kcpu)->n_flag = NFLAG_16(res);
- (mc68kcpu)->not_z_flag = res;
- (mc68kcpu)->v_flag = VFLAG_CLEAR;
- (mc68kcpu)->c_flag = CFLAG_CLEAR;
-}
-
-
-void m68000_base_device_ops::m68k_op_move_16_al_pcix(m68000_base_device* mc68kcpu)
-{
- UINT32 res = OPER_PCIX_16(mc68kcpu);
- UINT32 ea = EA_AL_16(mc68kcpu);
-
- m68ki_write_16((mc68kcpu), ea, res);
-
- (mc68kcpu)->n_flag = NFLAG_16(res);
- (mc68kcpu)->not_z_flag = res;
- (mc68kcpu)->v_flag = VFLAG_CLEAR;
- (mc68kcpu)->c_flag = CFLAG_CLEAR;
-}
-
-
-void m68000_base_device_ops::m68k_op_move_16_al_i(m68000_base_device* mc68kcpu)
-{
- UINT32 res = OPER_I_16(mc68kcpu);
- UINT32 ea = EA_AL_16(mc68kcpu);
-
- m68ki_write_16((mc68kcpu), ea, res);
-
- (mc68kcpu)->n_flag = NFLAG_16(res);
- (mc68kcpu)->not_z_flag = res;
- (mc68kcpu)->v_flag = VFLAG_CLEAR;
- (mc68kcpu)->c_flag = CFLAG_CLEAR;
-}
-
-
-void m68000_base_device_ops::m68k_op_move_32_d_d(m68000_base_device* mc68kcpu)
-{
- UINT32 res = DY(mc68kcpu);
- UINT32* r_dst = &DX(mc68kcpu);
-
- *r_dst = res;
-
- (mc68kcpu)->n_flag = NFLAG_32(res);
- (mc68kcpu)->not_z_flag = res;
- (mc68kcpu)->v_flag = VFLAG_CLEAR;
- (mc68kcpu)->c_flag = CFLAG_CLEAR;
-}
-
-
-void m68000_base_device_ops::m68k_op_move_32_d_a(m68000_base_device* mc68kcpu)
-{
- UINT32 res = AY(mc68kcpu);
- UINT32* r_dst = &DX(mc68kcpu);
-
- *r_dst = res;
-
- (mc68kcpu)->n_flag = NFLAG_32(res);
- (mc68kcpu)->not_z_flag = res;
- (mc68kcpu)->v_flag = VFLAG_CLEAR;
- (mc68kcpu)->c_flag = CFLAG_CLEAR;
-}
-
-
-void m68000_base_device_ops::m68k_op_move_32_d_ai(m68000_base_device* mc68kcpu)
-{
- UINT32 res = OPER_AY_AI_32(mc68kcpu);
- UINT32* r_dst = &DX(mc68kcpu);
-
- *r_dst = res;
-
- (mc68kcpu)->n_flag = NFLAG_32(res);
- (mc68kcpu)->not_z_flag = res;
- (mc68kcpu)->v_flag = VFLAG_CLEAR;
- (mc68kcpu)->c_flag = CFLAG_CLEAR;
-}
-
-
-void m68000_base_device_ops::m68k_op_move_32_d_pi(m68000_base_device* mc68kcpu)
-{
- UINT32 res = OPER_AY_PI_32(mc68kcpu);
- UINT32* r_dst = &DX(mc68kcpu);
-
- *r_dst = res;
-
- (mc68kcpu)->n_flag = NFLAG_32(res);
- (mc68kcpu)->not_z_flag = res;
- (mc68kcpu)->v_flag = VFLAG_CLEAR;
- (mc68kcpu)->c_flag = CFLAG_CLEAR;
-}
-
-
-void m68000_base_device_ops::m68k_op_move_32_d_pd(m68000_base_device* mc68kcpu)
-{
- UINT32 res = OPER_AY_PD_32(mc68kcpu);
- UINT32* r_dst = &DX(mc68kcpu);
-
- *r_dst = res;
-
- (mc68kcpu)->n_flag = NFLAG_32(res);
- (mc68kcpu)->not_z_flag = res;
- (mc68kcpu)->v_flag = VFLAG_CLEAR;
- (mc68kcpu)->c_flag = CFLAG_CLEAR;
-}
-
-
-void m68000_base_device_ops::m68k_op_move_32_d_di(m68000_base_device* mc68kcpu)
-{
- UINT32 res = OPER_AY_DI_32(mc68kcpu);
- UINT32* r_dst = &DX(mc68kcpu);
-
- *r_dst = res;
-
- (mc68kcpu)->n_flag = NFLAG_32(res);
- (mc68kcpu)->not_z_flag = res;
- (mc68kcpu)->v_flag = VFLAG_CLEAR;
- (mc68kcpu)->c_flag = CFLAG_CLEAR;
-}
-
-
-void m68000_base_device_ops::m68k_op_move_32_d_ix(m68000_base_device* mc68kcpu)
-{
- UINT32 res = OPER_AY_IX_32(mc68kcpu);
- UINT32* r_dst = &DX(mc68kcpu);
-
- *r_dst = res;
-
- (mc68kcpu)->n_flag = NFLAG_32(res);
- (mc68kcpu)->not_z_flag = res;
- (mc68kcpu)->v_flag = VFLAG_CLEAR;
- (mc68kcpu)->c_flag = CFLAG_CLEAR;
-}
-
-
-void m68000_base_device_ops::m68k_op_move_32_d_aw(m68000_base_device* mc68kcpu)
-{
- UINT32 res = OPER_AW_32(mc68kcpu);
- UINT32* r_dst = &DX(mc68kcpu);
-
- *r_dst = res;
-
- (mc68kcpu)->n_flag = NFLAG_32(res);
- (mc68kcpu)->not_z_flag = res;
- (mc68kcpu)->v_flag = VFLAG_CLEAR;
- (mc68kcpu)->c_flag = CFLAG_CLEAR;
-}
-
-
-void m68000_base_device_ops::m68k_op_move_32_d_al(m68000_base_device* mc68kcpu)
-{
- UINT32 res = OPER_AL_32(mc68kcpu);
- UINT32* r_dst = &DX(mc68kcpu);
-
- *r_dst = res;
-
- (mc68kcpu)->n_flag = NFLAG_32(res);
- (mc68kcpu)->not_z_flag = res;
- (mc68kcpu)->v_flag = VFLAG_CLEAR;
- (mc68kcpu)->c_flag = CFLAG_CLEAR;
-}
-
-
-void m68000_base_device_ops::m68k_op_move_32_d_pcdi(m68000_base_device* mc68kcpu)
-{
- UINT32 res = OPER_PCDI_32(mc68kcpu);
- UINT32* r_dst = &DX(mc68kcpu);
-
- *r_dst = res;
-
- (mc68kcpu)->n_flag = NFLAG_32(res);
- (mc68kcpu)->not_z_flag = res;
- (mc68kcpu)->v_flag = VFLAG_CLEAR;
- (mc68kcpu)->c_flag = CFLAG_CLEAR;
-}
-
-
-void m68000_base_device_ops::m68k_op_move_32_d_pcix(m68000_base_device* mc68kcpu)
-{
- UINT32 res = OPER_PCIX_32(mc68kcpu);
- UINT32* r_dst = &DX(mc68kcpu);
-
- *r_dst = res;
-
- (mc68kcpu)->n_flag = NFLAG_32(res);
- (mc68kcpu)->not_z_flag = res;
- (mc68kcpu)->v_flag = VFLAG_CLEAR;
- (mc68kcpu)->c_flag = CFLAG_CLEAR;
-}
-
-
-void m68000_base_device_ops::m68k_op_move_32_d_i(m68000_base_device* mc68kcpu)
-{
- UINT32 res = OPER_I_32(mc68kcpu);
- UINT32* r_dst = &DX(mc68kcpu);
-
- *r_dst = res;
-
- (mc68kcpu)->n_flag = NFLAG_32(res);
- (mc68kcpu)->not_z_flag = res;
- (mc68kcpu)->v_flag = VFLAG_CLEAR;
- (mc68kcpu)->c_flag = CFLAG_CLEAR;
-}
-
-
-void m68000_base_device_ops::m68k_op_move_32_ai_d(m68000_base_device* mc68kcpu)
-{
- UINT32 res = DY(mc68kcpu);
- UINT32 ea = EA_AX_AI_32(mc68kcpu);
-
- m68ki_write_32((mc68kcpu), ea, res);
-
- (mc68kcpu)->n_flag = NFLAG_32(res);
- (mc68kcpu)->not_z_flag = res;
- (mc68kcpu)->v_flag = VFLAG_CLEAR;
- (mc68kcpu)->c_flag = CFLAG_CLEAR;
-}
-
-
-void m68000_base_device_ops::m68k_op_move_32_ai_a(m68000_base_device* mc68kcpu)
-{
- UINT32 res = AY(mc68kcpu);
- UINT32 ea = EA_AX_AI_32(mc68kcpu);
-
- m68ki_write_32((mc68kcpu), ea, res);
-
- (mc68kcpu)->n_flag = NFLAG_32(res);
- (mc68kcpu)->not_z_flag = res;
- (mc68kcpu)->v_flag = VFLAG_CLEAR;
- (mc68kcpu)->c_flag = CFLAG_CLEAR;
-}
-
-
-void m68000_base_device_ops::m68k_op_move_32_ai_ai(m68000_base_device* mc68kcpu)
-{
- UINT32 res = OPER_AY_AI_32(mc68kcpu);
- UINT32 ea = EA_AX_AI_32(mc68kcpu);
-
- m68ki_write_32((mc68kcpu), ea, res);
-
- (mc68kcpu)->n_flag = NFLAG_32(res);
- (mc68kcpu)->not_z_flag = res;
- (mc68kcpu)->v_flag = VFLAG_CLEAR;
- (mc68kcpu)->c_flag = CFLAG_CLEAR;
-}
-
-
-void m68000_base_device_ops::m68k_op_move_32_ai_pi(m68000_base_device* mc68kcpu)
-{
- UINT32 res = OPER_AY_PI_32(mc68kcpu);
- UINT32 ea = EA_AX_AI_32(mc68kcpu);
-
- m68ki_write_32((mc68kcpu), ea, res);
-
- (mc68kcpu)->n_flag = NFLAG_32(res);
- (mc68kcpu)->not_z_flag = res;
- (mc68kcpu)->v_flag = VFLAG_CLEAR;
- (mc68kcpu)->c_flag = CFLAG_CLEAR;
-}
-
-
-void m68000_base_device_ops::m68k_op_move_32_ai_pd(m68000_base_device* mc68kcpu)
-{
- UINT32 res = OPER_AY_PD_32(mc68kcpu);
- UINT32 ea = EA_AX_AI_32(mc68kcpu);
-
- m68ki_write_32((mc68kcpu), ea, res);
-
- (mc68kcpu)->n_flag = NFLAG_32(res);
- (mc68kcpu)->not_z_flag = res;
- (mc68kcpu)->v_flag = VFLAG_CLEAR;
- (mc68kcpu)->c_flag = CFLAG_CLEAR;
-}
-
-
-void m68000_base_device_ops::m68k_op_move_32_ai_di(m68000_base_device* mc68kcpu)
-{
- UINT32 res = OPER_AY_DI_32(mc68kcpu);
- UINT32 ea = EA_AX_AI_32(mc68kcpu);
-
- m68ki_write_32((mc68kcpu), ea, res);
-
- (mc68kcpu)->n_flag = NFLAG_32(res);
- (mc68kcpu)->not_z_flag = res;
- (mc68kcpu)->v_flag = VFLAG_CLEAR;
- (mc68kcpu)->c_flag = CFLAG_CLEAR;
-}
-
-
-void m68000_base_device_ops::m68k_op_move_32_ai_ix(m68000_base_device* mc68kcpu)
-{
- UINT32 res = OPER_AY_IX_32(mc68kcpu);
- UINT32 ea = EA_AX_AI_32(mc68kcpu);
-
- m68ki_write_32((mc68kcpu), ea, res);
-
- (mc68kcpu)->n_flag = NFLAG_32(res);
- (mc68kcpu)->not_z_flag = res;
- (mc68kcpu)->v_flag = VFLAG_CLEAR;
- (mc68kcpu)->c_flag = CFLAG_CLEAR;
-}
-
-
-void m68000_base_device_ops::m68k_op_move_32_ai_aw(m68000_base_device* mc68kcpu)
-{
- UINT32 res = OPER_AW_32(mc68kcpu);
- UINT32 ea = EA_AX_AI_32(mc68kcpu);
-
- m68ki_write_32((mc68kcpu), ea, res);
-
- (mc68kcpu)->n_flag = NFLAG_32(res);
- (mc68kcpu)->not_z_flag = res;
- (mc68kcpu)->v_flag = VFLAG_CLEAR;
- (mc68kcpu)->c_flag = CFLAG_CLEAR;
-}
-
-
-void m68000_base_device_ops::m68k_op_move_32_ai_al(m68000_base_device* mc68kcpu)
-{
- UINT32 res = OPER_AL_32(mc68kcpu);
- UINT32 ea = EA_AX_AI_32(mc68kcpu);
-
- m68ki_write_32((mc68kcpu), ea, res);
-
- (mc68kcpu)->n_flag = NFLAG_32(res);
- (mc68kcpu)->not_z_flag = res;
- (mc68kcpu)->v_flag = VFLAG_CLEAR;
- (mc68kcpu)->c_flag = CFLAG_CLEAR;
-}
-
-
-void m68000_base_device_ops::m68k_op_move_32_ai_pcdi(m68000_base_device* mc68kcpu)
-{
- UINT32 res = OPER_PCDI_32(mc68kcpu);
- UINT32 ea = EA_AX_AI_32(mc68kcpu);
-
- m68ki_write_32((mc68kcpu), ea, res);
-
- (mc68kcpu)->n_flag = NFLAG_32(res);
- (mc68kcpu)->not_z_flag = res;
- (mc68kcpu)->v_flag = VFLAG_CLEAR;
- (mc68kcpu)->c_flag = CFLAG_CLEAR;
-}
-
-
-void m68000_base_device_ops::m68k_op_move_32_ai_pcix(m68000_base_device* mc68kcpu)
-{
- UINT32 res = OPER_PCIX_32(mc68kcpu);
- UINT32 ea = EA_AX_AI_32(mc68kcpu);
-
- m68ki_write_32((mc68kcpu), ea, res);
-
- (mc68kcpu)->n_flag = NFLAG_32(res);
- (mc68kcpu)->not_z_flag = res;
- (mc68kcpu)->v_flag = VFLAG_CLEAR;
- (mc68kcpu)->c_flag = CFLAG_CLEAR;
-}
-
-
-void m68000_base_device_ops::m68k_op_move_32_ai_i(m68000_base_device* mc68kcpu)
-{
- UINT32 res = OPER_I_32(mc68kcpu);
- UINT32 ea = EA_AX_AI_32(mc68kcpu);
-
- m68ki_write_32((mc68kcpu), ea, res);
-
- (mc68kcpu)->n_flag = NFLAG_32(res);
- (mc68kcpu)->not_z_flag = res;
- (mc68kcpu)->v_flag = VFLAG_CLEAR;
- (mc68kcpu)->c_flag = CFLAG_CLEAR;
-}
-
-
-void m68000_base_device_ops::m68k_op_move_32_pi_d(m68000_base_device* mc68kcpu)
-{
- UINT32 res = DY(mc68kcpu);
- UINT32 ea = EA_AX_PI_32(mc68kcpu);
-
- m68ki_write_32((mc68kcpu), ea, res);
-
- (mc68kcpu)->n_flag = NFLAG_32(res);
- (mc68kcpu)->not_z_flag = res;
- (mc68kcpu)->v_flag = VFLAG_CLEAR;
- (mc68kcpu)->c_flag = CFLAG_CLEAR;
-}
-
-
-void m68000_base_device_ops::m68k_op_move_32_pi_a(m68000_base_device* mc68kcpu)
-{
- UINT32 res = AY(mc68kcpu);
- UINT32 ea = EA_AX_PI_32(mc68kcpu);
-
- m68ki_write_32((mc68kcpu), ea, res);
-
- (mc68kcpu)->n_flag = NFLAG_32(res);
- (mc68kcpu)->not_z_flag = res;
- (mc68kcpu)->v_flag = VFLAG_CLEAR;
- (mc68kcpu)->c_flag = CFLAG_CLEAR;
-}
-
-
-void m68000_base_device_ops::m68k_op_move_32_pi_ai(m68000_base_device* mc68kcpu)
-{
- UINT32 res = OPER_AY_AI_32(mc68kcpu);
- UINT32 ea = EA_AX_PI_32(mc68kcpu);
-
- m68ki_write_32((mc68kcpu), ea, res);
-
- (mc68kcpu)->n_flag = NFLAG_32(res);
- (mc68kcpu)->not_z_flag = res;
- (mc68kcpu)->v_flag = VFLAG_CLEAR;
- (mc68kcpu)->c_flag = CFLAG_CLEAR;
-}
-
-
-void m68000_base_device_ops::m68k_op_move_32_pi_pi(m68000_base_device* mc68kcpu)
-{
- UINT32 res = OPER_AY_PI_32(mc68kcpu);
- UINT32 ea = EA_AX_PI_32(mc68kcpu);
-
- m68ki_write_32((mc68kcpu), ea, res);
-
- (mc68kcpu)->n_flag = NFLAG_32(res);
- (mc68kcpu)->not_z_flag = res;
- (mc68kcpu)->v_flag = VFLAG_CLEAR;
- (mc68kcpu)->c_flag = CFLAG_CLEAR;
-}
-
-
-void m68000_base_device_ops::m68k_op_move_32_pi_pd(m68000_base_device* mc68kcpu)
-{
- UINT32 res = OPER_AY_PD_32(mc68kcpu);
- UINT32 ea = EA_AX_PI_32(mc68kcpu);
-
- m68ki_write_32((mc68kcpu), ea, res);
-
- (mc68kcpu)->n_flag = NFLAG_32(res);
- (mc68kcpu)->not_z_flag = res;
- (mc68kcpu)->v_flag = VFLAG_CLEAR;
- (mc68kcpu)->c_flag = CFLAG_CLEAR;
-}
-
-
-void m68000_base_device_ops::m68k_op_move_32_pi_di(m68000_base_device* mc68kcpu)
-{
- UINT32 res = OPER_AY_DI_32(mc68kcpu);
- UINT32 ea = EA_AX_PI_32(mc68kcpu);
-
- m68ki_write_32((mc68kcpu), ea, res);
-
- (mc68kcpu)->n_flag = NFLAG_32(res);
- (mc68kcpu)->not_z_flag = res;
- (mc68kcpu)->v_flag = VFLAG_CLEAR;
- (mc68kcpu)->c_flag = CFLAG_CLEAR;
-}
-
-
-void m68000_base_device_ops::m68k_op_move_32_pi_ix(m68000_base_device* mc68kcpu)
-{
- UINT32 res = OPER_AY_IX_32(mc68kcpu);
- UINT32 ea = EA_AX_PI_32(mc68kcpu);
-
- m68ki_write_32((mc68kcpu), ea, res);
-
- (mc68kcpu)->n_flag = NFLAG_32(res);
- (mc68kcpu)->not_z_flag = res;
- (mc68kcpu)->v_flag = VFLAG_CLEAR;
- (mc68kcpu)->c_flag = CFLAG_CLEAR;
-}
-
-
-void m68000_base_device_ops::m68k_op_move_32_pi_aw(m68000_base_device* mc68kcpu)
-{
- UINT32 res = OPER_AW_32(mc68kcpu);
- UINT32 ea = EA_AX_PI_32(mc68kcpu);
-
- m68ki_write_32((mc68kcpu), ea, res);
-
- (mc68kcpu)->n_flag = NFLAG_32(res);
- (mc68kcpu)->not_z_flag = res;
- (mc68kcpu)->v_flag = VFLAG_CLEAR;
- (mc68kcpu)->c_flag = CFLAG_CLEAR;
-}
-
-
-void m68000_base_device_ops::m68k_op_move_32_pi_al(m68000_base_device* mc68kcpu)
-{
- UINT32 res = OPER_AL_32(mc68kcpu);
- UINT32 ea = EA_AX_PI_32(mc68kcpu);
-
- m68ki_write_32((mc68kcpu), ea, res);
-
- (mc68kcpu)->n_flag = NFLAG_32(res);
- (mc68kcpu)->not_z_flag = res;
- (mc68kcpu)->v_flag = VFLAG_CLEAR;
- (mc68kcpu)->c_flag = CFLAG_CLEAR;
-}
-
-
-void m68000_base_device_ops::m68k_op_move_32_pi_pcdi(m68000_base_device* mc68kcpu)
-{
- UINT32 res = OPER_PCDI_32(mc68kcpu);
- UINT32 ea = EA_AX_PI_32(mc68kcpu);
-
- m68ki_write_32((mc68kcpu), ea, res);
-
- (mc68kcpu)->n_flag = NFLAG_32(res);
- (mc68kcpu)->not_z_flag = res;
- (mc68kcpu)->v_flag = VFLAG_CLEAR;
- (mc68kcpu)->c_flag = CFLAG_CLEAR;
-}
-
-
-void m68000_base_device_ops::m68k_op_move_32_pi_pcix(m68000_base_device* mc68kcpu)
-{
- UINT32 res = OPER_PCIX_32(mc68kcpu);
- UINT32 ea = EA_AX_PI_32(mc68kcpu);
-
- m68ki_write_32((mc68kcpu), ea, res);
-
- (mc68kcpu)->n_flag = NFLAG_32(res);
- (mc68kcpu)->not_z_flag = res;
- (mc68kcpu)->v_flag = VFLAG_CLEAR;
- (mc68kcpu)->c_flag = CFLAG_CLEAR;
-}
-
-
-void m68000_base_device_ops::m68k_op_move_32_pi_i(m68000_base_device* mc68kcpu)
-{
- UINT32 res = OPER_I_32(mc68kcpu);
- UINT32 ea = EA_AX_PI_32(mc68kcpu);
-
- m68ki_write_32((mc68kcpu), ea, res);
-
- (mc68kcpu)->n_flag = NFLAG_32(res);
- (mc68kcpu)->not_z_flag = res;
- (mc68kcpu)->v_flag = VFLAG_CLEAR;
- (mc68kcpu)->c_flag = CFLAG_CLEAR;
-}
-
-
-void m68000_base_device_ops::m68k_op_move_32_pd_d(m68000_base_device* mc68kcpu)
-{
- UINT32 res = DY(mc68kcpu);
- UINT32 ea = EA_AX_PD_32(mc68kcpu);
-
- m68ki_write_16((mc68kcpu), ea+2, res & 0xFFFF );
- m68ki_write_16((mc68kcpu), 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;
-}
-
-
-void m68000_base_device_ops::m68k_op_move_32_pd_a(m68000_base_device* mc68kcpu)
-{
- UINT32 res = AY(mc68kcpu);
- UINT32 ea = EA_AX_PD_32(mc68kcpu);
-
- m68ki_write_16((mc68kcpu), ea+2, res & 0xFFFF );
- m68ki_write_16((mc68kcpu), 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;
-}
-
-
-void m68000_base_device_ops::m68k_op_move_32_pd_ai(m68000_base_device* mc68kcpu)
-{
- UINT32 res = OPER_AY_AI_32(mc68kcpu);
- UINT32 ea = EA_AX_PD_32(mc68kcpu);
-
- m68ki_write_16((mc68kcpu), ea+2, res & 0xFFFF );
- m68ki_write_16((mc68kcpu), 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;
-}
-
-
-void m68000_base_device_ops::m68k_op_move_32_pd_pi(m68000_base_device* mc68kcpu)
-{
- UINT32 res = OPER_AY_PI_32(mc68kcpu);
- UINT32 ea = EA_AX_PD_32(mc68kcpu);
-
- m68ki_write_16((mc68kcpu), ea+2, res & 0xFFFF );
- m68ki_write_16((mc68kcpu), 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;
-}
-
-
-void m68000_base_device_ops::m68k_op_move_32_pd_pd(m68000_base_device* mc68kcpu)
-{
- UINT32 res = OPER_AY_PD_32(mc68kcpu);
- UINT32 ea = EA_AX_PD_32(mc68kcpu);
-
- m68ki_write_16((mc68kcpu), ea+2, res & 0xFFFF );
- m68ki_write_16((mc68kcpu), 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;
-}
-
-
-void m68000_base_device_ops::m68k_op_move_32_pd_di(m68000_base_device* mc68kcpu)
-{
- UINT32 res = OPER_AY_DI_32(mc68kcpu);
- UINT32 ea = EA_AX_PD_32(mc68kcpu);
-
- m68ki_write_16((mc68kcpu), ea+2, res & 0xFFFF );
- m68ki_write_16((mc68kcpu), 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;
-}
-
-
-void m68000_base_device_ops::m68k_op_move_32_pd_ix(m68000_base_device* mc68kcpu)
-{
- UINT32 res = OPER_AY_IX_32(mc68kcpu);
- UINT32 ea = EA_AX_PD_32(mc68kcpu);
-
- m68ki_write_16((mc68kcpu), ea+2, res & 0xFFFF );
- m68ki_write_16((mc68kcpu), 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;
-}
-
-
-void m68000_base_device_ops::m68k_op_move_32_pd_aw(m68000_base_device* mc68kcpu)
-{
- UINT32 res = OPER_AW_32(mc68kcpu);
- UINT32 ea = EA_AX_PD_32(mc68kcpu);
-
- m68ki_write_16((mc68kcpu), ea+2, res & 0xFFFF );
- m68ki_write_16((mc68kcpu), 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;
-}
-
-
-void m68000_base_device_ops::m68k_op_move_32_pd_al(m68000_base_device* mc68kcpu)
-{
- UINT32 res = OPER_AL_32(mc68kcpu);
- UINT32 ea = EA_AX_PD_32(mc68kcpu);
-
- m68ki_write_16((mc68kcpu), ea+2, res & 0xFFFF );
- m68ki_write_16((mc68kcpu), 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;
-}
-
-
-void m68000_base_device_ops::m68k_op_move_32_pd_pcdi(m68000_base_device* mc68kcpu)
-{
- UINT32 res = OPER_PCDI_32(mc68kcpu);
- UINT32 ea = EA_AX_PD_32(mc68kcpu);
-
- m68ki_write_16((mc68kcpu), ea+2, res & 0xFFFF );
- m68ki_write_16((mc68kcpu), 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;
-}
-
-
-void m68000_base_device_ops::m68k_op_move_32_pd_pcix(m68000_base_device* mc68kcpu)
-{
- UINT32 res = OPER_PCIX_32(mc68kcpu);
- UINT32 ea = EA_AX_PD_32(mc68kcpu);
-
- m68ki_write_16((mc68kcpu), ea+2, res & 0xFFFF );
- m68ki_write_16((mc68kcpu), 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;
-}
-
-
-void m68000_base_device_ops::m68k_op_move_32_pd_i(m68000_base_device* mc68kcpu)
-{
- UINT32 res = OPER_I_32(mc68kcpu);
- UINT32 ea = EA_AX_PD_32(mc68kcpu);
-
- m68ki_write_16((mc68kcpu), ea+2, res & 0xFFFF );
- m68ki_write_16((mc68kcpu), 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;
-}
-
-
-void m68000_base_device_ops::m68k_op_move_32_di_d(m68000_base_device* mc68kcpu)
-{
- UINT32 res = DY(mc68kcpu);
- UINT32 ea = EA_AX_DI_32(mc68kcpu);
-
- m68ki_write_32((mc68kcpu), ea, res);
-
- (mc68kcpu)->n_flag = NFLAG_32(res);
- (mc68kcpu)->not_z_flag = res;
- (mc68kcpu)->v_flag = VFLAG_CLEAR;
- (mc68kcpu)->c_flag = CFLAG_CLEAR;
-}
-
-
-void m68000_base_device_ops::m68k_op_move_32_di_a(m68000_base_device* mc68kcpu)
-{
- UINT32 res = AY(mc68kcpu);
- UINT32 ea = EA_AX_DI_32(mc68kcpu);
-
- m68ki_write_32((mc68kcpu), ea, res);
-
- (mc68kcpu)->n_flag = NFLAG_32(res);
- (mc68kcpu)->not_z_flag = res;
- (mc68kcpu)->v_flag = VFLAG_CLEAR;
- (mc68kcpu)->c_flag = CFLAG_CLEAR;
-}
-
-
-void m68000_base_device_ops::m68k_op_move_32_di_ai(m68000_base_device* mc68kcpu)
-{
- UINT32 res = OPER_AY_AI_32(mc68kcpu);
- UINT32 ea = EA_AX_DI_32(mc68kcpu);
-
- m68ki_write_32((mc68kcpu), ea, res);
-
- (mc68kcpu)->n_flag = NFLAG_32(res);
- (mc68kcpu)->not_z_flag = res;
- (mc68kcpu)->v_flag = VFLAG_CLEAR;
- (mc68kcpu)->c_flag = CFLAG_CLEAR;
-}
-
-
-void m68000_base_device_ops::m68k_op_move_32_di_pi(m68000_base_device* mc68kcpu)
-{
- UINT32 res = OPER_AY_PI_32(mc68kcpu);
- UINT32 ea = EA_AX_DI_32(mc68kcpu);
-
- m68ki_write_32((mc68kcpu), ea, res);
-
- (mc68kcpu)->n_flag = NFLAG_32(res);
- (mc68kcpu)->not_z_flag = res;
- (mc68kcpu)->v_flag = VFLAG_CLEAR;
- (mc68kcpu)->c_flag = CFLAG_CLEAR;
-}
-
-
-void m68000_base_device_ops::m68k_op_move_32_di_pd(m68000_base_device* mc68kcpu)
-{
- UINT32 res = OPER_AY_PD_32(mc68kcpu);
- UINT32 ea = EA_AX_DI_32(mc68kcpu);
-
- m68ki_write_32((mc68kcpu), ea, res);
-
- (mc68kcpu)->n_flag = NFLAG_32(res);
- (mc68kcpu)->not_z_flag = res;
- (mc68kcpu)->v_flag = VFLAG_CLEAR;
- (mc68kcpu)->c_flag = CFLAG_CLEAR;
-}
-
-
-void m68000_base_device_ops::m68k_op_move_32_di_di(m68000_base_device* mc68kcpu)
-{
- UINT32 res = OPER_AY_DI_32(mc68kcpu);
- UINT32 ea = EA_AX_DI_32(mc68kcpu);
-
- m68ki_write_32((mc68kcpu), ea, res);
-
- (mc68kcpu)->n_flag = NFLAG_32(res);
- (mc68kcpu)->not_z_flag = res;
- (mc68kcpu)->v_flag = VFLAG_CLEAR;
- (mc68kcpu)->c_flag = CFLAG_CLEAR;
-}
-
-
-void m68000_base_device_ops::m68k_op_move_32_di_ix(m68000_base_device* mc68kcpu)
-{
- UINT32 res = OPER_AY_IX_32(mc68kcpu);
- UINT32 ea = EA_AX_DI_32(mc68kcpu);
-
- m68ki_write_32((mc68kcpu), ea, res);
-
- (mc68kcpu)->n_flag = NFLAG_32(res);
- (mc68kcpu)->not_z_flag = res;
- (mc68kcpu)->v_flag = VFLAG_CLEAR;
- (mc68kcpu)->c_flag = CFLAG_CLEAR;
-}
-
-
-void m68000_base_device_ops::m68k_op_move_32_di_aw(m68000_base_device* mc68kcpu)
-{
- UINT32 res = OPER_AW_32(mc68kcpu);
- UINT32 ea = EA_AX_DI_32(mc68kcpu);
-
- m68ki_write_32((mc68kcpu), ea, res);
-
- (mc68kcpu)->n_flag = NFLAG_32(res);
- (mc68kcpu)->not_z_flag = res;
- (mc68kcpu)->v_flag = VFLAG_CLEAR;
- (mc68kcpu)->c_flag = CFLAG_CLEAR;
-}
-
-
-void m68000_base_device_ops::m68k_op_move_32_di_al(m68000_base_device* mc68kcpu)
-{
- UINT32 res = OPER_AL_32(mc68kcpu);
- UINT32 ea = EA_AX_DI_32(mc68kcpu);
-
- m68ki_write_32((mc68kcpu), ea, res);
-
- (mc68kcpu)->n_flag = NFLAG_32(res);
- (mc68kcpu)->not_z_flag = res;
- (mc68kcpu)->v_flag = VFLAG_CLEAR;
- (mc68kcpu)->c_flag = CFLAG_CLEAR;
-}
-
-
-void m68000_base_device_ops::m68k_op_move_32_di_pcdi(m68000_base_device* mc68kcpu)
-{
- UINT32 res = OPER_PCDI_32(mc68kcpu);
- UINT32 ea = EA_AX_DI_32(mc68kcpu);
-
- m68ki_write_32((mc68kcpu), ea, res);
-
- (mc68kcpu)->n_flag = NFLAG_32(res);
- (mc68kcpu)->not_z_flag = res;
- (mc68kcpu)->v_flag = VFLAG_CLEAR;
- (mc68kcpu)->c_flag = CFLAG_CLEAR;
-}
-
-
-void m68000_base_device_ops::m68k_op_move_32_di_pcix(m68000_base_device* mc68kcpu)
-{
- UINT32 res = OPER_PCIX_32(mc68kcpu);
- UINT32 ea = EA_AX_DI_32(mc68kcpu);
-
- m68ki_write_32((mc68kcpu), ea, res);
-
- (mc68kcpu)->n_flag = NFLAG_32(res);
- (mc68kcpu)->not_z_flag = res;
- (mc68kcpu)->v_flag = VFLAG_CLEAR;
- (mc68kcpu)->c_flag = CFLAG_CLEAR;
-}
-
-
-void m68000_base_device_ops::m68k_op_move_32_di_i(m68000_base_device* mc68kcpu)
-{
- UINT32 res = OPER_I_32(mc68kcpu);
- UINT32 ea = EA_AX_DI_32(mc68kcpu);
-
- m68ki_write_32((mc68kcpu), ea, res);
-
- (mc68kcpu)->n_flag = NFLAG_32(res);
- (mc68kcpu)->not_z_flag = res;
- (mc68kcpu)->v_flag = VFLAG_CLEAR;
- (mc68kcpu)->c_flag = CFLAG_CLEAR;
-}
-
-
-void m68000_base_device_ops::m68k_op_move_32_ix_d(m68000_base_device* mc68kcpu)
-{
- UINT32 res = DY(mc68kcpu);
- UINT32 ea = EA_AX_IX_32(mc68kcpu);
-
- m68ki_write_32((mc68kcpu), ea, res);
-
- (mc68kcpu)->n_flag = NFLAG_32(res);
- (mc68kcpu)->not_z_flag = res;
- (mc68kcpu)->v_flag = VFLAG_CLEAR;
- (mc68kcpu)->c_flag = CFLAG_CLEAR;
-}
-
-
-void m68000_base_device_ops::m68k_op_move_32_ix_a(m68000_base_device* mc68kcpu)
-{
- UINT32 res = AY(mc68kcpu);
- UINT32 ea = EA_AX_IX_32(mc68kcpu);
-
- m68ki_write_32((mc68kcpu), ea, res);
-
- (mc68kcpu)->n_flag = NFLAG_32(res);
- (mc68kcpu)->not_z_flag = res;
- (mc68kcpu)->v_flag = VFLAG_CLEAR;
- (mc68kcpu)->c_flag = CFLAG_CLEAR;
-}
-
-
-void m68000_base_device_ops::m68k_op_move_32_ix_ai(m68000_base_device* mc68kcpu)
-{
- UINT32 res = OPER_AY_AI_32(mc68kcpu);
- UINT32 ea = EA_AX_IX_32(mc68kcpu);
-
- m68ki_write_32((mc68kcpu), ea, res);
-
- (mc68kcpu)->n_flag = NFLAG_32(res);
- (mc68kcpu)->not_z_flag = res;
- (mc68kcpu)->v_flag = VFLAG_CLEAR;
- (mc68kcpu)->c_flag = CFLAG_CLEAR;
-}
-
-
-void m68000_base_device_ops::m68k_op_move_32_ix_pi(m68000_base_device* mc68kcpu)
-{
- UINT32 res = OPER_AY_PI_32(mc68kcpu);
- UINT32 ea = EA_AX_IX_32(mc68kcpu);
-
- m68ki_write_32((mc68kcpu), ea, res);
-
- (mc68kcpu)->n_flag = NFLAG_32(res);
- (mc68kcpu)->not_z_flag = res;
- (mc68kcpu)->v_flag = VFLAG_CLEAR;
- (mc68kcpu)->c_flag = CFLAG_CLEAR;
-}
-
-
-void m68000_base_device_ops::m68k_op_move_32_ix_pd(m68000_base_device* mc68kcpu)
-{
- UINT32 res = OPER_AY_PD_32(mc68kcpu);
- UINT32 ea = EA_AX_IX_32(mc68kcpu);
-
- m68ki_write_32((mc68kcpu), ea, res);
-
- (mc68kcpu)->n_flag = NFLAG_32(res);
- (mc68kcpu)->not_z_flag = res;
- (mc68kcpu)->v_flag = VFLAG_CLEAR;
- (mc68kcpu)->c_flag = CFLAG_CLEAR;
-}
-
-
-void m68000_base_device_ops::m68k_op_move_32_ix_di(m68000_base_device* mc68kcpu)
-{
- UINT32 res = OPER_AY_DI_32(mc68kcpu);
- UINT32 ea = EA_AX_IX_32(mc68kcpu);
-
- m68ki_write_32((mc68kcpu), ea, res);
-
- (mc68kcpu)->n_flag = NFLAG_32(res);
- (mc68kcpu)->not_z_flag = res;
- (mc68kcpu)->v_flag = VFLAG_CLEAR;
- (mc68kcpu)->c_flag = CFLAG_CLEAR;
-}
-
-
-void m68000_base_device_ops::m68k_op_move_32_ix_ix(m68000_base_device* mc68kcpu)
-{
- UINT32 res = OPER_AY_IX_32(mc68kcpu);
- UINT32 ea = EA_AX_IX_32(mc68kcpu);
-
- m68ki_write_32((mc68kcpu), ea, res);
-
- (mc68kcpu)->n_flag = NFLAG_32(res);
- (mc68kcpu)->not_z_flag = res;
- (mc68kcpu)->v_flag = VFLAG_CLEAR;
- (mc68kcpu)->c_flag = CFLAG_CLEAR;
-}
-
-
-void m68000_base_device_ops::m68k_op_move_32_ix_aw(m68000_base_device* mc68kcpu)
-{
- UINT32 res = OPER_AW_32(mc68kcpu);
- UINT32 ea = EA_AX_IX_32(mc68kcpu);
-
- m68ki_write_32((mc68kcpu), ea, res);
-
- (mc68kcpu)->n_flag = NFLAG_32(res);
- (mc68kcpu)->not_z_flag = res;
- (mc68kcpu)->v_flag = VFLAG_CLEAR;
- (mc68kcpu)->c_flag = CFLAG_CLEAR;
-}
-
-
-void m68000_base_device_ops::m68k_op_move_32_ix_al(m68000_base_device* mc68kcpu)
-{
- UINT32 res = OPER_AL_32(mc68kcpu);
- UINT32 ea = EA_AX_IX_32(mc68kcpu);
-
- m68ki_write_32((mc68kcpu), ea, res);
-
- (mc68kcpu)->n_flag = NFLAG_32(res);
- (mc68kcpu)->not_z_flag = res;
- (mc68kcpu)->v_flag = VFLAG_CLEAR;
- (mc68kcpu)->c_flag = CFLAG_CLEAR;
-}
-
-
-void m68000_base_device_ops::m68k_op_move_32_ix_pcdi(m68000_base_device* mc68kcpu)
-{
- UINT32 res = OPER_PCDI_32(mc68kcpu);
- UINT32 ea = EA_AX_IX_32(mc68kcpu);
-
- m68ki_write_32((mc68kcpu), ea, res);
-
- (mc68kcpu)->n_flag = NFLAG_32(res);
- (mc68kcpu)->not_z_flag = res;
- (mc68kcpu)->v_flag = VFLAG_CLEAR;
- (mc68kcpu)->c_flag = CFLAG_CLEAR;
-}
-
-
-void m68000_base_device_ops::m68k_op_move_32_ix_pcix(m68000_base_device* mc68kcpu)
-{
- UINT32 res = OPER_PCIX_32(mc68kcpu);
- UINT32 ea = EA_AX_IX_32(mc68kcpu);
-
- m68ki_write_32((mc68kcpu), ea, res);
-
- (mc68kcpu)->n_flag = NFLAG_32(res);
- (mc68kcpu)->not_z_flag = res;
- (mc68kcpu)->v_flag = VFLAG_CLEAR;
- (mc68kcpu)->c_flag = CFLAG_CLEAR;
-}
-
-
-void m68000_base_device_ops::m68k_op_move_32_ix_i(m68000_base_device* mc68kcpu)
-{
- UINT32 res = OPER_I_32(mc68kcpu);
- UINT32 ea = EA_AX_IX_32(mc68kcpu);
-
- m68ki_write_32((mc68kcpu), ea, res);
-
- (mc68kcpu)->n_flag = NFLAG_32(res);
- (mc68kcpu)->not_z_flag = res;
- (mc68kcpu)->v_flag = VFLAG_CLEAR;
- (mc68kcpu)->c_flag = CFLAG_CLEAR;
-}
-
-
-void m68000_base_device_ops::m68k_op_move_32_aw_d(m68000_base_device* mc68kcpu)
-{
- UINT32 res = DY(mc68kcpu);
- UINT32 ea = EA_AW_32(mc68kcpu);
-
- m68ki_write_32((mc68kcpu), ea, res);
-
- (mc68kcpu)->n_flag = NFLAG_32(res);
- (mc68kcpu)->not_z_flag = res;
- (mc68kcpu)->v_flag = VFLAG_CLEAR;
- (mc68kcpu)->c_flag = CFLAG_CLEAR;
-}
-
-
-void m68000_base_device_ops::m68k_op_move_32_aw_a(m68000_base_device* mc68kcpu)
-{
- UINT32 res = AY(mc68kcpu);
- UINT32 ea = EA_AW_32(mc68kcpu);
-
- m68ki_write_32((mc68kcpu), ea, res);
-
- (mc68kcpu)->n_flag = NFLAG_32(res);
- (mc68kcpu)->not_z_flag = res;
- (mc68kcpu)->v_flag = VFLAG_CLEAR;
- (mc68kcpu)->c_flag = CFLAG_CLEAR;
-}
-
-
-void m68000_base_device_ops::m68k_op_move_32_aw_ai(m68000_base_device* mc68kcpu)
-{
- UINT32 res = OPER_AY_AI_32(mc68kcpu);
- UINT32 ea = EA_AW_32(mc68kcpu);
-
- m68ki_write_32((mc68kcpu), ea, res);
-
- (mc68kcpu)->n_flag = NFLAG_32(res);
- (mc68kcpu)->not_z_flag = res;
- (mc68kcpu)->v_flag = VFLAG_CLEAR;
- (mc68kcpu)->c_flag = CFLAG_CLEAR;
-}
-
-
-void m68000_base_device_ops::m68k_op_move_32_aw_pi(m68000_base_device* mc68kcpu)
-{
- UINT32 res = OPER_AY_PI_32(mc68kcpu);
- UINT32 ea = EA_AW_32(mc68kcpu);
-
- m68ki_write_32((mc68kcpu), ea, res);
-
- (mc68kcpu)->n_flag = NFLAG_32(res);
- (mc68kcpu)->not_z_flag = res;
- (mc68kcpu)->v_flag = VFLAG_CLEAR;
- (mc68kcpu)->c_flag = CFLAG_CLEAR;
-}
-
-
-void m68000_base_device_ops::m68k_op_move_32_aw_pd(m68000_base_device* mc68kcpu)
-{
- UINT32 res = OPER_AY_PD_32(mc68kcpu);
- UINT32 ea = EA_AW_32(mc68kcpu);
-
- m68ki_write_32((mc68kcpu), ea, res);
-
- (mc68kcpu)->n_flag = NFLAG_32(res);
- (mc68kcpu)->not_z_flag = res;
- (mc68kcpu)->v_flag = VFLAG_CLEAR;
- (mc68kcpu)->c_flag = CFLAG_CLEAR;
-}
-
-
-void m68000_base_device_ops::m68k_op_move_32_aw_di(m68000_base_device* mc68kcpu)
-{
- UINT32 res = OPER_AY_DI_32(mc68kcpu);
- UINT32 ea = EA_AW_32(mc68kcpu);
-
- m68ki_write_32((mc68kcpu), ea, res);
-
- (mc68kcpu)->n_flag = NFLAG_32(res);
- (mc68kcpu)->not_z_flag = res;
- (mc68kcpu)->v_flag = VFLAG_CLEAR;
- (mc68kcpu)->c_flag = CFLAG_CLEAR;
-}
-
-
-void m68000_base_device_ops::m68k_op_move_32_aw_ix(m68000_base_device* mc68kcpu)
-{
- UINT32 res = OPER_AY_IX_32(mc68kcpu);
- UINT32 ea = EA_AW_32(mc68kcpu);
-
- m68ki_write_32((mc68kcpu), ea, res);
-
- (mc68kcpu)->n_flag = NFLAG_32(res);
- (mc68kcpu)->not_z_flag = res;
- (mc68kcpu)->v_flag = VFLAG_CLEAR;
- (mc68kcpu)->c_flag = CFLAG_CLEAR;
-}
-
-
-void m68000_base_device_ops::m68k_op_move_32_aw_aw(m68000_base_device* mc68kcpu)
-{
- UINT32 res = OPER_AW_32(mc68kcpu);
- UINT32 ea = EA_AW_32(mc68kcpu);
-
- m68ki_write_32((mc68kcpu), ea, res);
-
- (mc68kcpu)->n_flag = NFLAG_32(res);
- (mc68kcpu)->not_z_flag = res;
- (mc68kcpu)->v_flag = VFLAG_CLEAR;
- (mc68kcpu)->c_flag = CFLAG_CLEAR;
-}
-
-
-void m68000_base_device_ops::m68k_op_move_32_aw_al(m68000_base_device* mc68kcpu)
-{
- UINT32 res = OPER_AL_32(mc68kcpu);
- UINT32 ea = EA_AW_32(mc68kcpu);
-
- m68ki_write_32((mc68kcpu), ea, res);
-
- (mc68kcpu)->n_flag = NFLAG_32(res);
- (mc68kcpu)->not_z_flag = res;
- (mc68kcpu)->v_flag = VFLAG_CLEAR;
- (mc68kcpu)->c_flag = CFLAG_CLEAR;
-}
-
-
-void m68000_base_device_ops::m68k_op_move_32_aw_pcdi(m68000_base_device* mc68kcpu)
-{
- UINT32 res = OPER_PCDI_32(mc68kcpu);
- UINT32 ea = EA_AW_32(mc68kcpu);
-
- m68ki_write_32((mc68kcpu), ea, res);
-
- (mc68kcpu)->n_flag = NFLAG_32(res);
- (mc68kcpu)->not_z_flag = res;
- (mc68kcpu)->v_flag = VFLAG_CLEAR;
- (mc68kcpu)->c_flag = CFLAG_CLEAR;
-}
-
-
-void m68000_base_device_ops::m68k_op_move_32_aw_pcix(m68000_base_device* mc68kcpu)
-{
- UINT32 res = OPER_PCIX_32(mc68kcpu);
- UINT32 ea = EA_AW_32(mc68kcpu);
-
- m68ki_write_32((mc68kcpu), ea, res);
-
- (mc68kcpu)->n_flag = NFLAG_32(res);
- (mc68kcpu)->not_z_flag = res;
- (mc68kcpu)->v_flag = VFLAG_CLEAR;
- (mc68kcpu)->c_flag = CFLAG_CLEAR;
-}
-
-
-void m68000_base_device_ops::m68k_op_move_32_aw_i(m68000_base_device* mc68kcpu)
-{
- UINT32 res = OPER_I_32(mc68kcpu);
- UINT32 ea = EA_AW_32(mc68kcpu);
-
- m68ki_write_32((mc68kcpu), ea, res);
-
- (mc68kcpu)->n_flag = NFLAG_32(res);
- (mc68kcpu)->not_z_flag = res;
- (mc68kcpu)->v_flag = VFLAG_CLEAR;
- (mc68kcpu)->c_flag = CFLAG_CLEAR;
-}
-
-
-void m68000_base_device_ops::m68k_op_move_32_al_d(m68000_base_device* mc68kcpu)
-{
- UINT32 res = DY(mc68kcpu);
- UINT32 ea = EA_AL_32(mc68kcpu);
-
- m68ki_write_32((mc68kcpu), ea, res);
-
- (mc68kcpu)->n_flag = NFLAG_32(res);
- (mc68kcpu)->not_z_flag = res;
- (mc68kcpu)->v_flag = VFLAG_CLEAR;
- (mc68kcpu)->c_flag = CFLAG_CLEAR;
-}
-
-
-void m68000_base_device_ops::m68k_op_move_32_al_a(m68000_base_device* mc68kcpu)
-{
- UINT32 res = AY(mc68kcpu);
- UINT32 ea = EA_AL_32(mc68kcpu);
-
- m68ki_write_32((mc68kcpu), ea, res);
-
- (mc68kcpu)->n_flag = NFLAG_32(res);
- (mc68kcpu)->not_z_flag = res;
- (mc68kcpu)->v_flag = VFLAG_CLEAR;
- (mc68kcpu)->c_flag = CFLAG_CLEAR;
-}
-
-
-void m68000_base_device_ops::m68k_op_move_32_al_ai(m68000_base_device* mc68kcpu)
-{
- UINT32 res = OPER_AY_AI_32(mc68kcpu);
- UINT32 ea = EA_AL_32(mc68kcpu);
-
- m68ki_write_32((mc68kcpu), ea, res);
-
- (mc68kcpu)->n_flag = NFLAG_32(res);
- (mc68kcpu)->not_z_flag = res;
- (mc68kcpu)->v_flag = VFLAG_CLEAR;
- (mc68kcpu)->c_flag = CFLAG_CLEAR;
-}
-
-
-void m68000_base_device_ops::m68k_op_move_32_al_pi(m68000_base_device* mc68kcpu)
-{
- UINT32 res = OPER_AY_PI_32(mc68kcpu);
- UINT32 ea = EA_AL_32(mc68kcpu);
-
- m68ki_write_32((mc68kcpu), ea, res);
-
- (mc68kcpu)->n_flag = NFLAG_32(res);
- (mc68kcpu)->not_z_flag = res;
- (mc68kcpu)->v_flag = VFLAG_CLEAR;
- (mc68kcpu)->c_flag = CFLAG_CLEAR;
-}
-
-
-void m68000_base_device_ops::m68k_op_move_32_al_pd(m68000_base_device* mc68kcpu)
-{
- UINT32 res = OPER_AY_PD_32(mc68kcpu);
- UINT32 ea = EA_AL_32(mc68kcpu);
-
- m68ki_write_32((mc68kcpu), ea, res);
-
- (mc68kcpu)->n_flag = NFLAG_32(res);
- (mc68kcpu)->not_z_flag = res;
- (mc68kcpu)->v_flag = VFLAG_CLEAR;
- (mc68kcpu)->c_flag = CFLAG_CLEAR;
-}
-
-
-void m68000_base_device_ops::m68k_op_move_32_al_di(m68000_base_device* mc68kcpu)
-{
- UINT32 res = OPER_AY_DI_32(mc68kcpu);
- UINT32 ea = EA_AL_32(mc68kcpu);
-
- m68ki_write_32((mc68kcpu), ea, res);
-
- (mc68kcpu)->n_flag = NFLAG_32(res);
- (mc68kcpu)->not_z_flag = res;
- (mc68kcpu)->v_flag = VFLAG_CLEAR;
- (mc68kcpu)->c_flag = CFLAG_CLEAR;
-}
-
-
-void m68000_base_device_ops::m68k_op_move_32_al_ix(m68000_base_device* mc68kcpu)
-{
- UINT32 res = OPER_AY_IX_32(mc68kcpu);
- UINT32 ea = EA_AL_32(mc68kcpu);
-
- m68ki_write_32((mc68kcpu), ea, res);
-
- (mc68kcpu)->n_flag = NFLAG_32(res);
- (mc68kcpu)->not_z_flag = res;
- (mc68kcpu)->v_flag = VFLAG_CLEAR;
- (mc68kcpu)->c_flag = CFLAG_CLEAR;
-}
-
-
-void m68000_base_device_ops::m68k_op_move_32_al_aw(m68000_base_device* mc68kcpu)
-{
- UINT32 res = OPER_AW_32(mc68kcpu);
- UINT32 ea = EA_AL_32(mc68kcpu);
-
- m68ki_write_32((mc68kcpu), ea, res);
-
- (mc68kcpu)->n_flag = NFLAG_32(res);
- (mc68kcpu)->not_z_flag = res;
- (mc68kcpu)->v_flag = VFLAG_CLEAR;
- (mc68kcpu)->c_flag = CFLAG_CLEAR;
-}
-
-
-void m68000_base_device_ops::m68k_op_move_32_al_al(m68000_base_device* mc68kcpu)
-{
- UINT32 res = OPER_AL_32(mc68kcpu);
- UINT32 ea = EA_AL_32(mc68kcpu);
-
- m68ki_write_32((mc68kcpu), ea, res);
-
- (mc68kcpu)->n_flag = NFLAG_32(res);
- (mc68kcpu)->not_z_flag = res;
- (mc68kcpu)->v_flag = VFLAG_CLEAR;
- (mc68kcpu)->c_flag = CFLAG_CLEAR;
-}
-
-
-void m68000_base_device_ops::m68k_op_move_32_al_pcdi(m68000_base_device* mc68kcpu)
-{
- UINT32 res = OPER_PCDI_32(mc68kcpu);
- UINT32 ea = EA_AL_32(mc68kcpu);
-
- m68ki_write_32((mc68kcpu), ea, res);
-
- (mc68kcpu)->n_flag = NFLAG_32(res);
- (mc68kcpu)->not_z_flag = res;
- (mc68kcpu)->v_flag = VFLAG_CLEAR;
- (mc68kcpu)->c_flag = CFLAG_CLEAR;
-}
-
-
-void m68000_base_device_ops::m68k_op_move_32_al_pcix(m68000_base_device* mc68kcpu)
-{
- UINT32 res = OPER_PCIX_32(mc68kcpu);
- UINT32 ea = EA_AL_32(mc68kcpu);
-
- m68ki_write_32((mc68kcpu), ea, res);
-
- (mc68kcpu)->n_flag = NFLAG_32(res);
- (mc68kcpu)->not_z_flag = res;
- (mc68kcpu)->v_flag = VFLAG_CLEAR;
- (mc68kcpu)->c_flag = CFLAG_CLEAR;
-}
-
-
-void m68000_base_device_ops::m68k_op_move_32_al_i(m68000_base_device* mc68kcpu)
-{
- UINT32 res = OPER_I_32(mc68kcpu);
- UINT32 ea = EA_AL_32(mc68kcpu);
-
- m68ki_write_32((mc68kcpu), ea, res);
-
- (mc68kcpu)->n_flag = NFLAG_32(res);
- (mc68kcpu)->not_z_flag = res;
- (mc68kcpu)->v_flag = VFLAG_CLEAR;
- (mc68kcpu)->c_flag = CFLAG_CLEAR;
-}
-
-
-void m68000_base_device_ops::m68k_op_movea_16_d(m68000_base_device* mc68kcpu)
-{
- AX(mc68kcpu) = MAKE_INT_16(DY(mc68kcpu));
-}
-
-
-void m68000_base_device_ops::m68k_op_movea_16_a(m68000_base_device* mc68kcpu)
-{
- AX(mc68kcpu) = MAKE_INT_16(AY(mc68kcpu));
-}
-
-
-void m68000_base_device_ops::m68k_op_movea_16_ai(m68000_base_device* mc68kcpu)
-{
- AX(mc68kcpu) = MAKE_INT_16(OPER_AY_AI_16(mc68kcpu));
-}
-
-
-void m68000_base_device_ops::m68k_op_movea_16_pi(m68000_base_device* mc68kcpu)
-{
- AX(mc68kcpu) = MAKE_INT_16(OPER_AY_PI_16(mc68kcpu));
-}
-
-
-void m68000_base_device_ops::m68k_op_movea_16_pd(m68000_base_device* mc68kcpu)
-{
- AX(mc68kcpu) = MAKE_INT_16(OPER_AY_PD_16(mc68kcpu));
-}
-
-
-void m68000_base_device_ops::m68k_op_movea_16_di(m68000_base_device* mc68kcpu)
-{
- AX(mc68kcpu) = MAKE_INT_16(OPER_AY_DI_16(mc68kcpu));
-}
-
-
-void m68000_base_device_ops::m68k_op_movea_16_ix(m68000_base_device* mc68kcpu)
-{
- AX(mc68kcpu) = MAKE_INT_16(OPER_AY_IX_16(mc68kcpu));
-}
-
-
-void m68000_base_device_ops::m68k_op_movea_16_aw(m68000_base_device* mc68kcpu)
-{
- AX(mc68kcpu) = MAKE_INT_16(OPER_AW_16(mc68kcpu));
-}
-
-
-void m68000_base_device_ops::m68k_op_movea_16_al(m68000_base_device* mc68kcpu)
-{
- AX(mc68kcpu) = MAKE_INT_16(OPER_AL_16(mc68kcpu));
-}
-
-
-void m68000_base_device_ops::m68k_op_movea_16_pcdi(m68000_base_device* mc68kcpu)
-{
- AX(mc68kcpu) = MAKE_INT_16(OPER_PCDI_16(mc68kcpu));
-}
-
-
-void m68000_base_device_ops::m68k_op_movea_16_pcix(m68000_base_device* mc68kcpu)
-{
- AX(mc68kcpu) = MAKE_INT_16(OPER_PCIX_16(mc68kcpu));
-}
-
-
-void m68000_base_device_ops::m68k_op_movea_16_i(m68000_base_device* mc68kcpu)
-{
- AX(mc68kcpu) = MAKE_INT_16(OPER_I_16(mc68kcpu));
-}
-
-
-void m68000_base_device_ops::m68k_op_movea_32_d(m68000_base_device* mc68kcpu)
-{
- AX(mc68kcpu) = DY(mc68kcpu);
-}
-
-
-void m68000_base_device_ops::m68k_op_movea_32_a(m68000_base_device* mc68kcpu)
-{
- AX(mc68kcpu) = AY(mc68kcpu);
-}
-
-
-void m68000_base_device_ops::m68k_op_movea_32_ai(m68000_base_device* mc68kcpu)
-{
- AX(mc68kcpu) = OPER_AY_AI_32(mc68kcpu);
-}
-
-
-void m68000_base_device_ops::m68k_op_movea_32_pi(m68000_base_device* mc68kcpu)
-{
- AX(mc68kcpu) = OPER_AY_PI_32(mc68kcpu);
-}
-
-
-void m68000_base_device_ops::m68k_op_movea_32_pd(m68000_base_device* mc68kcpu)
-{
- AX(mc68kcpu) = OPER_AY_PD_32(mc68kcpu);
-}
-
-
-void m68000_base_device_ops::m68k_op_movea_32_di(m68000_base_device* mc68kcpu)
-{
- AX(mc68kcpu) = OPER_AY_DI_32(mc68kcpu);
-}
-
-
-void m68000_base_device_ops::m68k_op_movea_32_ix(m68000_base_device* mc68kcpu)
-{
- AX(mc68kcpu) = OPER_AY_IX_32(mc68kcpu);
-}
-
-
-void m68000_base_device_ops::m68k_op_movea_32_aw(m68000_base_device* mc68kcpu)
-{
- AX(mc68kcpu) = OPER_AW_32(mc68kcpu);
-}
-
-
-void m68000_base_device_ops::m68k_op_movea_32_al(m68000_base_device* mc68kcpu)
-{
- AX(mc68kcpu) = OPER_AL_32(mc68kcpu);
-}
-
-
-void m68000_base_device_ops::m68k_op_movea_32_pcdi(m68000_base_device* mc68kcpu)
-{
- AX(mc68kcpu) = OPER_PCDI_32(mc68kcpu);
-}
-
-
-void m68000_base_device_ops::m68k_op_movea_32_pcix(m68000_base_device* mc68kcpu)
-{
- AX(mc68kcpu) = OPER_PCIX_32(mc68kcpu);
-}
-
-
-void m68000_base_device_ops::m68k_op_movea_32_i(m68000_base_device* mc68kcpu)
-{
- AX(mc68kcpu) = OPER_I_32(mc68kcpu);
-}
-
-
-void m68000_base_device_ops::m68k_op_move_16_frc_d(m68000_base_device* mc68kcpu)
-{
- if(CPU_TYPE_IS_010_PLUS((mc68kcpu)->cpu_type))
- {
- DY(mc68kcpu) = MASK_OUT_BELOW_16(DY(mc68kcpu)) | m68ki_get_ccr(mc68kcpu);
- return;
- }
- m68ki_exception_illegal(mc68kcpu);
-}
-
-
-void m68000_base_device_ops::m68k_op_move_16_frc_ai(m68000_base_device* mc68kcpu)
-{
- if(CPU_TYPE_IS_010_PLUS((mc68kcpu)->cpu_type))
- {
- m68ki_write_16((mc68kcpu), EA_AY_AI_16(mc68kcpu), m68ki_get_ccr(mc68kcpu));
- return;
- }
- m68ki_exception_illegal(mc68kcpu);
-}
-
-
-void m68000_base_device_ops::m68k_op_move_16_frc_pi(m68000_base_device* mc68kcpu)
-{
- if(CPU_TYPE_IS_010_PLUS((mc68kcpu)->cpu_type))
- {
- m68ki_write_16((mc68kcpu), EA_AY_PI_16(mc68kcpu), m68ki_get_ccr(mc68kcpu));
- return;
- }
- m68ki_exception_illegal(mc68kcpu);
-}
-
-
-void m68000_base_device_ops::m68k_op_move_16_frc_pd(m68000_base_device* mc68kcpu)
-{
- if(CPU_TYPE_IS_010_PLUS((mc68kcpu)->cpu_type))
- {
- m68ki_write_16((mc68kcpu), EA_AY_PD_16(mc68kcpu), m68ki_get_ccr(mc68kcpu));
- return;
- }
- m68ki_exception_illegal(mc68kcpu);
-}
-
-
-void m68000_base_device_ops::m68k_op_move_16_frc_di(m68000_base_device* mc68kcpu)
-{
- if(CPU_TYPE_IS_010_PLUS((mc68kcpu)->cpu_type))
- {
- m68ki_write_16((mc68kcpu), EA_AY_DI_16(mc68kcpu), m68ki_get_ccr(mc68kcpu));
- return;
- }
- m68ki_exception_illegal(mc68kcpu);
-}
-
-
-void m68000_base_device_ops::m68k_op_move_16_frc_ix(m68000_base_device* mc68kcpu)
-{
- if(CPU_TYPE_IS_010_PLUS((mc68kcpu)->cpu_type))
- {
- m68ki_write_16((mc68kcpu), EA_AY_IX_16(mc68kcpu), m68ki_get_ccr(mc68kcpu));
- return;
- }
- m68ki_exception_illegal(mc68kcpu);
-}
-
-
-void m68000_base_device_ops::m68k_op_move_16_frc_aw(m68000_base_device* mc68kcpu)
-{
- if(CPU_TYPE_IS_010_PLUS((mc68kcpu)->cpu_type))
- {
- m68ki_write_16((mc68kcpu), EA_AW_16(mc68kcpu), m68ki_get_ccr(mc68kcpu));
- return;
- }
- m68ki_exception_illegal(mc68kcpu);
-}
-
-
-void m68000_base_device_ops::m68k_op_move_16_frc_al(m68000_base_device* mc68kcpu)
-{
- if(CPU_TYPE_IS_010_PLUS((mc68kcpu)->cpu_type))
- {
- m68ki_write_16((mc68kcpu), EA_AL_16(mc68kcpu), m68ki_get_ccr(mc68kcpu));
- return;
- }
- m68ki_exception_illegal(mc68kcpu);
-}
-
-
-void m68000_base_device_ops::m68k_op_move_16_toc_d(m68000_base_device* mc68kcpu)
-{
- m68ki_set_ccr((mc68kcpu), DY(mc68kcpu));
-}
-
-
-void m68000_base_device_ops::m68k_op_move_16_toc_ai(m68000_base_device* mc68kcpu)
-{
- m68ki_set_ccr((mc68kcpu), OPER_AY_AI_16(mc68kcpu));
-}
-
-
-void m68000_base_device_ops::m68k_op_move_16_toc_pi(m68000_base_device* mc68kcpu)
-{
- m68ki_set_ccr((mc68kcpu), OPER_AY_PI_16(mc68kcpu));
-}
-
-
-void m68000_base_device_ops::m68k_op_move_16_toc_pd(m68000_base_device* mc68kcpu)
-{
- m68ki_set_ccr((mc68kcpu), OPER_AY_PD_16(mc68kcpu));
-}
-
-
-void m68000_base_device_ops::m68k_op_move_16_toc_di(m68000_base_device* mc68kcpu)
-{
- m68ki_set_ccr((mc68kcpu), OPER_AY_DI_16(mc68kcpu));
-}
-
-
-void m68000_base_device_ops::m68k_op_move_16_toc_ix(m68000_base_device* mc68kcpu)
-{
- m68ki_set_ccr((mc68kcpu), OPER_AY_IX_16(mc68kcpu));
-}
-
-
-void m68000_base_device_ops::m68k_op_move_16_toc_aw(m68000_base_device* mc68kcpu)
-{
- m68ki_set_ccr((mc68kcpu), OPER_AW_16(mc68kcpu));
-}
-
-
-void m68000_base_device_ops::m68k_op_move_16_toc_al(m68000_base_device* mc68kcpu)
-{
- m68ki_set_ccr((mc68kcpu), OPER_AL_16(mc68kcpu));
-}
-
-
-void m68000_base_device_ops::m68k_op_move_16_toc_pcdi(m68000_base_device* mc68kcpu)
-{
- m68ki_set_ccr((mc68kcpu), OPER_PCDI_16(mc68kcpu));
-}
-
-
-void m68000_base_device_ops::m68k_op_move_16_toc_pcix(m68000_base_device* mc68kcpu)
-{
- m68ki_set_ccr((mc68kcpu), OPER_PCIX_16(mc68kcpu));
-}
-
-
-void m68000_base_device_ops::m68k_op_move_16_toc_i(m68000_base_device* mc68kcpu)
-{
- m68ki_set_ccr((mc68kcpu), OPER_I_16(mc68kcpu));
-}
-
-
-void m68000_base_device_ops::m68k_op_move_16_frs_d(m68000_base_device* mc68kcpu)
-{
- if(CPU_TYPE_IS_000((mc68kcpu)->cpu_type) || (mc68kcpu)->s_flag) /* NS990408 */
- {
- DY(mc68kcpu) = MASK_OUT_BELOW_16(DY(mc68kcpu)) | m68ki_get_sr(mc68kcpu);
- return;
- }
- m68ki_exception_privilege_violation(mc68kcpu);
-}
-
-
-void m68000_base_device_ops::m68k_op_move_16_frs_ai(m68000_base_device* mc68kcpu)
-{
- if(CPU_TYPE_IS_000((mc68kcpu)->cpu_type) || (mc68kcpu)->s_flag) /* NS990408 */
- {
- UINT32 ea = EA_AY_AI_16(mc68kcpu);
- m68ki_write_16((mc68kcpu), ea, m68ki_get_sr(mc68kcpu));
- return;
- }
- m68ki_exception_privilege_violation(mc68kcpu);
-}
-
-
-void m68000_base_device_ops::m68k_op_move_16_frs_pi(m68000_base_device* mc68kcpu)
-{
- if(CPU_TYPE_IS_000((mc68kcpu)->cpu_type) || (mc68kcpu)->s_flag) /* NS990408 */
- {
- UINT32 ea = EA_AY_PI_16(mc68kcpu);
- m68ki_write_16((mc68kcpu), ea, m68ki_get_sr(mc68kcpu));
- return;
- }
- m68ki_exception_privilege_violation(mc68kcpu);
-}
-
-
-void m68000_base_device_ops::m68k_op_move_16_frs_pd(m68000_base_device* mc68kcpu)
-{
- if(CPU_TYPE_IS_000((mc68kcpu)->cpu_type) || (mc68kcpu)->s_flag) /* NS990408 */
- {
- UINT32 ea = EA_AY_PD_16(mc68kcpu);
- m68ki_write_16((mc68kcpu), ea, m68ki_get_sr(mc68kcpu));
- return;
- }
- m68ki_exception_privilege_violation(mc68kcpu);
-}
-
-
-void m68000_base_device_ops::m68k_op_move_16_frs_di(m68000_base_device* mc68kcpu)
-{
- if(CPU_TYPE_IS_000((mc68kcpu)->cpu_type) || (mc68kcpu)->s_flag) /* NS990408 */
- {
- UINT32 ea = EA_AY_DI_16(mc68kcpu);
- m68ki_write_16((mc68kcpu), ea, m68ki_get_sr(mc68kcpu));
- return;
- }
- m68ki_exception_privilege_violation(mc68kcpu);
-}
-
-
-void m68000_base_device_ops::m68k_op_move_16_frs_ix(m68000_base_device* mc68kcpu)
-{
- if(CPU_TYPE_IS_000((mc68kcpu)->cpu_type) || (mc68kcpu)->s_flag) /* NS990408 */
- {
- UINT32 ea = EA_AY_IX_16(mc68kcpu);
- m68ki_write_16((mc68kcpu), ea, m68ki_get_sr(mc68kcpu));
- return;
- }
- m68ki_exception_privilege_violation(mc68kcpu);
-}
-
-
-void m68000_base_device_ops::m68k_op_move_16_frs_aw(m68000_base_device* mc68kcpu)
-{
- if(CPU_TYPE_IS_000((mc68kcpu)->cpu_type) || (mc68kcpu)->s_flag) /* NS990408 */
- {
- UINT32 ea = EA_AW_16(mc68kcpu);
- m68ki_write_16((mc68kcpu), ea, m68ki_get_sr(mc68kcpu));
- return;
- }
- m68ki_exception_privilege_violation(mc68kcpu);
-}
-
-
-void m68000_base_device_ops::m68k_op_move_16_frs_al(m68000_base_device* mc68kcpu)
-{
- if(CPU_TYPE_IS_000((mc68kcpu)->cpu_type) || (mc68kcpu)->s_flag) /* NS990408 */
- {
- UINT32 ea = EA_AL_16(mc68kcpu);
- m68ki_write_16((mc68kcpu), ea, m68ki_get_sr(mc68kcpu));
- return;
- }
- m68ki_exception_privilege_violation(mc68kcpu);
-}
-
-
-void m68000_base_device_ops::m68k_op_move_16_tos_d(m68000_base_device* mc68kcpu)
-{
- if((mc68kcpu)->s_flag)
- {
- m68ki_set_sr((mc68kcpu), DY(mc68kcpu));
- return;
- }
- m68ki_exception_privilege_violation(mc68kcpu);
-}
-
-
-void m68000_base_device_ops::m68k_op_move_16_tos_ai(m68000_base_device* mc68kcpu)
-{
- if((mc68kcpu)->s_flag)
- {
- UINT32 new_sr = OPER_AY_AI_16(mc68kcpu);
- m68ki_trace_t0(mc68kcpu); /* auto-disable (see m68kcpu.h) */
- m68ki_set_sr((mc68kcpu), new_sr);
- return;
- }
- m68ki_exception_privilege_violation(mc68kcpu);
-}
-
-
-void m68000_base_device_ops::m68k_op_move_16_tos_pi(m68000_base_device* mc68kcpu)
-{
- if((mc68kcpu)->s_flag)
- {
- UINT32 new_sr = OPER_AY_PI_16(mc68kcpu);
- m68ki_trace_t0(mc68kcpu); /* auto-disable (see m68kcpu.h) */
- m68ki_set_sr((mc68kcpu), new_sr);
- return;
- }
- m68ki_exception_privilege_violation(mc68kcpu);
-}
-
-
-void m68000_base_device_ops::m68k_op_move_16_tos_pd(m68000_base_device* mc68kcpu)
-{
- if((mc68kcpu)->s_flag)
- {
- UINT32 new_sr = OPER_AY_PD_16(mc68kcpu);
- m68ki_trace_t0(mc68kcpu); /* auto-disable (see m68kcpu.h) */
- m68ki_set_sr((mc68kcpu), new_sr);
- return;
- }
- m68ki_exception_privilege_violation(mc68kcpu);
-}
-
-
-void m68000_base_device_ops::m68k_op_move_16_tos_di(m68000_base_device* mc68kcpu)
-{
- if((mc68kcpu)->s_flag)
- {
- UINT32 new_sr = OPER_AY_DI_16(mc68kcpu);
- m68ki_trace_t0(mc68kcpu); /* auto-disable (see m68kcpu.h) */
- m68ki_set_sr((mc68kcpu), new_sr);
- return;
- }
- m68ki_exception_privilege_violation(mc68kcpu);
-}
-
-
-void m68000_base_device_ops::m68k_op_move_16_tos_ix(m68000_base_device* mc68kcpu)
-{
- if((mc68kcpu)->s_flag)
- {
- UINT32 new_sr = OPER_AY_IX_16(mc68kcpu);
- m68ki_trace_t0(mc68kcpu); /* auto-disable (see m68kcpu.h) */
- m68ki_set_sr((mc68kcpu), new_sr);
- return;
- }
- m68ki_exception_privilege_violation(mc68kcpu);
-}
-
-
-void m68000_base_device_ops::m68k_op_move_16_tos_aw(m68000_base_device* mc68kcpu)
-{
- if((mc68kcpu)->s_flag)
- {
- UINT32 new_sr = OPER_AW_16(mc68kcpu);
- m68ki_trace_t0(mc68kcpu); /* auto-disable (see m68kcpu.h) */
- m68ki_set_sr((mc68kcpu), new_sr);
- return;
- }
- m68ki_exception_privilege_violation(mc68kcpu);
-}
-
-
-void m68000_base_device_ops::m68k_op_move_16_tos_al(m68000_base_device* mc68kcpu)
-{
- if((mc68kcpu)->s_flag)
- {
- UINT32 new_sr = OPER_AL_16(mc68kcpu);
- m68ki_trace_t0(mc68kcpu); /* auto-disable (see m68kcpu.h) */
- m68ki_set_sr((mc68kcpu), new_sr);
- return;
- }
- m68ki_exception_privilege_violation(mc68kcpu);
-}
-
-
-void m68000_base_device_ops::m68k_op_move_16_tos_pcdi(m68000_base_device* mc68kcpu)
-{
- if((mc68kcpu)->s_flag)
- {
- UINT32 new_sr = OPER_PCDI_16(mc68kcpu);
- m68ki_trace_t0(mc68kcpu); /* auto-disable (see m68kcpu.h) */
- m68ki_set_sr((mc68kcpu), new_sr);
- return;
- }
- m68ki_exception_privilege_violation(mc68kcpu);
-}
-
-
-void m68000_base_device_ops::m68k_op_move_16_tos_pcix(m68000_base_device* mc68kcpu)
-{
- if((mc68kcpu)->s_flag)
- {
- UINT32 new_sr = OPER_PCIX_16(mc68kcpu);
- m68ki_trace_t0(mc68kcpu); /* auto-disable (see m68kcpu.h) */
- m68ki_set_sr((mc68kcpu), new_sr);
- return;
- }
- m68ki_exception_privilege_violation(mc68kcpu);
-}
-
-
-void m68000_base_device_ops::m68k_op_move_16_tos_i(m68000_base_device* mc68kcpu)
-{
- if((mc68kcpu)->s_flag)
- {
- UINT32 new_sr = OPER_I_16(mc68kcpu);
- m68ki_trace_t0(mc68kcpu); /* auto-disable (see m68kcpu.h) */
- m68ki_set_sr((mc68kcpu), new_sr);
- return;
- }
- m68ki_exception_privilege_violation(mc68kcpu);
-}
-
-
-void m68000_base_device_ops::m68k_op_move_32_fru(m68000_base_device* mc68kcpu)
-{
- if((mc68kcpu)->s_flag)
- {
- AY(mc68kcpu) = REG_USP(mc68kcpu);
- return;
- }
- m68ki_exception_privilege_violation(mc68kcpu);
-}
-
-
-void m68000_base_device_ops::m68k_op_move_32_tou(m68000_base_device* mc68kcpu)
-{
- if((mc68kcpu)->s_flag)
- {
- m68ki_trace_t0(mc68kcpu); /* auto-disable (see m68kcpu.h) */
- REG_USP(mc68kcpu) = AY(mc68kcpu);
- return;
- }
- m68ki_exception_privilege_violation(mc68kcpu);
-}
-
-
-void m68000_base_device_ops::m68k_op_movec_32_cr(m68000_base_device* mc68kcpu)
-{
- if(CPU_TYPE_IS_010_PLUS((mc68kcpu)->cpu_type))
- {
- if((mc68kcpu)->s_flag)
- {
- UINT32 word2 = OPER_I_16(mc68kcpu);
-
- m68ki_trace_t0(mc68kcpu); /* auto-disable (see m68kcpu.h) */
- switch (word2 & 0xfff)
- {
- case 0x000: /* SFC */
- REG_DA(mc68kcpu)[(word2 >> 12) & 15] = (mc68kcpu)->sfc;
- return;
- case 0x001: /* DFC */
- REG_DA(mc68kcpu)[(word2 >> 12) & 15] = (mc68kcpu)->dfc;
- return;
- case 0x002: /* CACR */
- if(CPU_TYPE_IS_EC020_PLUS((mc68kcpu)->cpu_type))
- {
- REG_DA(mc68kcpu)[(word2 >> 12) & 15] = (mc68kcpu)->cacr;
- return;
- }
- return;
- case 0x800: /* USP */
- REG_DA(mc68kcpu)[(word2 >> 12) & 15] = REG_USP(mc68kcpu);
- return;
- case 0x801: /* VBR */
- REG_DA(mc68kcpu)[(word2 >> 12) & 15] = (mc68kcpu)->vbr;
- return;
- case 0x802: /* CAAR */
- if(CPU_TYPE_IS_EC020_PLUS((mc68kcpu)->cpu_type))
- {
- REG_DA(mc68kcpu)[(word2 >> 12) & 15] = (mc68kcpu)->caar;
- return;
- }
- m68ki_exception_illegal(mc68kcpu);
- break;
- case 0x803: /* MSP */
- if(CPU_TYPE_IS_EC020_PLUS((mc68kcpu)->cpu_type))
- {
- REG_DA(mc68kcpu)[(word2 >> 12) & 15] = (mc68kcpu)->m_flag ? REG_SP(mc68kcpu) : REG_MSP(mc68kcpu);
- return;
- }
- m68ki_exception_illegal(mc68kcpu);
- return;
- case 0x804: /* ISP */
- if(CPU_TYPE_IS_EC020_PLUS((mc68kcpu)->cpu_type))
- {
- REG_DA(mc68kcpu)[(word2 >> 12) & 15] = (mc68kcpu)->m_flag ? REG_ISP(mc68kcpu) : REG_SP(mc68kcpu);
- return;
- }
- m68ki_exception_illegal(mc68kcpu);
- return;
- case 0x003: /* TC */
- if(CPU_TYPE_IS_040_PLUS((mc68kcpu)->cpu_type))
- {
- REG_DA(mc68kcpu)[(word2 >> 12) & 15] = mc68kcpu->mmu_tc;
- return;
- }
- m68ki_exception_illegal(mc68kcpu);
- return;
- case 0x004: /* ITT0 (040+, ACR0 on ColdFire) */
- if(CPU_TYPE_IS_040_PLUS((mc68kcpu)->cpu_type))
- {
- REG_DA(mc68kcpu)[(word2 >> 12) & 15] = mc68kcpu->mmu_itt0;
- return;
- }
- else if(CPU_TYPE_IS_COLDFIRE((mc68kcpu)->cpu_type))
- {
- REG_DA(mc68kcpu)[(word2 >> 12) & 15] = mc68kcpu->mmu_acr0;
- return;
- }
- m68ki_exception_illegal(mc68kcpu);
- return;
- case 0x005: /* ITT1 (040+, ACR1 on ColdFire) */
- if(CPU_TYPE_IS_040_PLUS((mc68kcpu)->cpu_type))
- {
- REG_DA(mc68kcpu)[(word2 >> 12) & 15] = mc68kcpu->mmu_itt1;
- return;
- }
- else if(CPU_TYPE_IS_COLDFIRE((mc68kcpu)->cpu_type))
- {
- REG_DA(mc68kcpu)[(word2 >> 12) & 15] = mc68kcpu->mmu_acr1;
- return;
- }
- m68ki_exception_illegal(mc68kcpu);
- return;
- case 0x006: /* DTT0 */
- if(CPU_TYPE_IS_040_PLUS((mc68kcpu)->cpu_type))
- {
- REG_DA(mc68kcpu)[(word2 >> 12) & 15] = mc68kcpu->mmu_dtt0;
- return;
- }
- else if(CPU_TYPE_IS_COLDFIRE((mc68kcpu)->cpu_type))
- {
- REG_DA(mc68kcpu)[(word2 >> 12) & 15] = mc68kcpu->mmu_acr2;
- return;
- }
- m68ki_exception_illegal(mc68kcpu);
- return;
- case 0x007: /* DTT1 */
- if(CPU_TYPE_IS_040_PLUS((mc68kcpu)->cpu_type))
- {
- REG_DA(mc68kcpu)[(word2 >> 12) & 15] = mc68kcpu->mmu_dtt1;
- return;
- }
- else if(CPU_TYPE_IS_COLDFIRE((mc68kcpu)->cpu_type))
- {
- REG_DA(mc68kcpu)[(word2 >> 12) & 15] = mc68kcpu->mmu_acr3;
- return;
- }
- m68ki_exception_illegal(mc68kcpu);
- return;
- case 0x805: /* MMUSR */
- if(CPU_TYPE_IS_040_PLUS((mc68kcpu)->cpu_type))
- {
- REG_DA(mc68kcpu)[(word2 >> 12) & 15] = mc68kcpu->mmu_sr_040;
- return;
- }
- m68ki_exception_illegal(mc68kcpu);
- return;
- case 0x806: /* URP */
- if(CPU_TYPE_IS_040_PLUS((mc68kcpu)->cpu_type))
- {
- REG_DA(mc68kcpu)[(word2 >> 12) & 15] = mc68kcpu->mmu_urp_aptr;
- return;
- }
- m68ki_exception_illegal(mc68kcpu);
- return;
- case 0x807: /* SRP */
- if(CPU_TYPE_IS_040_PLUS((mc68kcpu)->cpu_type))
- {
- REG_DA(mc68kcpu)[(word2 >> 12) & 15] = mc68kcpu->mmu_srp_aptr;
- return;
- }
- m68ki_exception_illegal(mc68kcpu);
- return;
- case 0xc00: // ROMBAR0
- if(CPU_TYPE_IS_COLDFIRE((mc68kcpu)->cpu_type))
- {
- /* TODO */
- return;
- }
- m68ki_exception_illegal(mc68kcpu);
- return;
- case 0xc01: // ROMBAR1
- if(CPU_TYPE_IS_COLDFIRE((mc68kcpu)->cpu_type))
- {
- /* TODO */
- return;
- }
- m68ki_exception_illegal(mc68kcpu);
- return;
- case 0xc04: // RAMBAR0
- if(CPU_TYPE_IS_COLDFIRE((mc68kcpu)->cpu_type))
- {
- /* TODO */
- return;
- }
- m68ki_exception_illegal(mc68kcpu);
- return;
- case 0xc05: // RAMBAR1
- if(CPU_TYPE_IS_COLDFIRE((mc68kcpu)->cpu_type))
- {
- /* TODO */
- return;
- }
- m68ki_exception_illegal(mc68kcpu);
- return;
- case 0xc0c: // MPCR
- if(CPU_TYPE_IS_COLDFIRE((mc68kcpu)->cpu_type))
- {
- /* TODO */
- return;
- }
- m68ki_exception_illegal(mc68kcpu);
- return;
- case 0xc0d: // EDRAMBAR
- if(CPU_TYPE_IS_COLDFIRE((mc68kcpu)->cpu_type))
- {
- /* TODO */
- return;
- }
- m68ki_exception_illegal(mc68kcpu);
- return;
- case 0xc0e: // SECMBAR
- if(CPU_TYPE_IS_COLDFIRE((mc68kcpu)->cpu_type))
- {
- /* TODO */
- return;
- }
- m68ki_exception_illegal(mc68kcpu);
- return;
- case 0xc0f: // MBAR
- if(CPU_TYPE_IS_COLDFIRE((mc68kcpu)->cpu_type))
- {
- /* TODO */
- return;
- }
- m68ki_exception_illegal(mc68kcpu);
- return;
- default:
- m68ki_exception_illegal(mc68kcpu);
- return;
- }
- }
- m68ki_exception_privilege_violation(mc68kcpu);
- return;
- }
- m68ki_exception_illegal(mc68kcpu);
-}
-
-
-void m68000_base_device_ops::m68k_op_movec_32_rc(m68000_base_device* mc68kcpu)
-{
- if(CPU_TYPE_IS_010_PLUS((mc68kcpu)->cpu_type))
- {
- if((mc68kcpu)->s_flag)
- {
- UINT32 word2 = OPER_I_16(mc68kcpu);
-
- m68ki_trace_t0(mc68kcpu); /* auto-disable (see m68kcpu.h) */
- switch (word2 & 0xfff)
- {
- case 0x000: /* SFC */
- (mc68kcpu)->sfc = REG_DA(mc68kcpu)[(word2 >> 12) & 15] & 7;
- return;
- case 0x001: /* DFC */
- (mc68kcpu)->dfc = REG_DA(mc68kcpu)[(word2 >> 12) & 15] & 7;
- return;
- case 0x002: /* CACR */
- /* Only EC020 and later have CACR */
- if(CPU_TYPE_IS_EC020_PLUS((mc68kcpu)->cpu_type))
- {
- /* 68030 can write all bits except 5-7, 040 can write all */
- if (CPU_TYPE_IS_040_PLUS((mc68kcpu)->cpu_type))
- {
- (mc68kcpu)->cacr = REG_DA(mc68kcpu)[(word2 >> 12) & 15];
- }
- else if (CPU_TYPE_IS_030_PLUS((mc68kcpu)->cpu_type))
- {
- (mc68kcpu)->cacr = REG_DA(mc68kcpu)[(word2 >> 12) & 15] & 0xff1f;
- }
- else
- {
- (mc68kcpu)->cacr = REG_DA(mc68kcpu)[(word2 >> 12) & 15] & 0x0f;
- }
-
-// logerror("movec to cacr=%04x\n", (mc68kcpu)->cacr);
- if ((mc68kcpu)->cacr & (M68K_CACR_CI | M68K_CACR_CEI))
- {
- m68ki_ic_clear(mc68kcpu);
- }
- return;
- }
- m68ki_exception_illegal(mc68kcpu);
- return;
- case 0x800: /* USP */
- REG_USP(mc68kcpu) = REG_DA(mc68kcpu)[(word2 >> 12) & 15];
- return;
- case 0x801: /* VBR */
- (mc68kcpu)->vbr = REG_DA(mc68kcpu)[(word2 >> 12) & 15];
- return;
- case 0x802: /* CAAR */
- if(CPU_TYPE_IS_EC020_PLUS((mc68kcpu)->cpu_type))
- {
- (mc68kcpu)->caar = REG_DA(mc68kcpu)[(word2 >> 12) & 15];
- return;
- }
- m68ki_exception_illegal(mc68kcpu);
- return;
- case 0x803: /* MSP */
- if(CPU_TYPE_IS_EC020_PLUS((mc68kcpu)->cpu_type))
- {
- /* we are in supervisor mode so just check for M flag */
- if(!(mc68kcpu)->m_flag)
- {
- REG_MSP(mc68kcpu) = REG_DA(mc68kcpu)[(word2 >> 12) & 15];
- return;
- }
- REG_SP(mc68kcpu) = REG_DA(mc68kcpu)[(word2 >> 12) & 15];
- return;
- }
- m68ki_exception_illegal(mc68kcpu);
- return;
- case 0x804: /* ISP */
- if(CPU_TYPE_IS_EC020_PLUS((mc68kcpu)->cpu_type))
- {
- if(!(mc68kcpu)->m_flag)
- {
- REG_SP(mc68kcpu) = REG_DA(mc68kcpu)[(word2 >> 12) & 15];
- return;
- }
- REG_ISP(mc68kcpu) = REG_DA(mc68kcpu)[(word2 >> 12) & 15];
- return;
- }
- m68ki_exception_illegal(mc68kcpu);
- return;
- case 0x003: /* TC */
- if (CPU_TYPE_IS_040_PLUS((mc68kcpu)->cpu_type))
- {
- mc68kcpu->mmu_tc = REG_DA(mc68kcpu)[(word2 >> 12) & 15];
-
- if (mc68kcpu->mmu_tc & 0x8000)
- {
- mc68kcpu->pmmu_enabled = 1;
- }
- else
- {
- mc68kcpu->pmmu_enabled = 0;
- }
- return;
- }
- m68ki_exception_illegal(mc68kcpu);
- return;
- case 0x004: /* ITT0 */
- if (CPU_TYPE_IS_040_PLUS((mc68kcpu)->cpu_type))
- {
- mc68kcpu->mmu_itt0 = REG_DA(mc68kcpu)[(word2 >> 12) & 15];
- return;
- }
- else if(CPU_TYPE_IS_COLDFIRE((mc68kcpu)->cpu_type))
- {
- mc68kcpu->mmu_acr0 = REG_DA(mc68kcpu)[(word2 >> 12) & 15];
- return;
- }
- m68ki_exception_illegal(mc68kcpu);
- return;
- case 0x005: /* ITT1 */
- if (CPU_TYPE_IS_040_PLUS((mc68kcpu)->cpu_type))
- {
- mc68kcpu->mmu_itt1 = REG_DA(mc68kcpu)[(word2 >> 12) & 15];
- return;
- }
- else if(CPU_TYPE_IS_COLDFIRE((mc68kcpu)->cpu_type))
- {
- mc68kcpu->mmu_acr1 = REG_DA(mc68kcpu)[(word2 >> 12) & 15];
- return;
- }
- m68ki_exception_illegal(mc68kcpu);
- return;
- case 0x006: /* DTT0 */
- if (CPU_TYPE_IS_040_PLUS((mc68kcpu)->cpu_type))
- {
- mc68kcpu->mmu_dtt0 = REG_DA(mc68kcpu)[(word2 >> 12) & 15];
- return;
- }
- else if(CPU_TYPE_IS_COLDFIRE((mc68kcpu)->cpu_type))
- {
- mc68kcpu->mmu_acr2 = REG_DA(mc68kcpu)[(word2 >> 12) & 15];
- return;
- }
- m68ki_exception_illegal(mc68kcpu);
- return;
- case 0x007: /* DTT1 */
- if (CPU_TYPE_IS_040_PLUS((mc68kcpu)->cpu_type))
- {
- mc68kcpu->mmu_dtt1 = REG_DA(mc68kcpu)[(word2 >> 12) & 15];
- return;
- }
- else if(CPU_TYPE_IS_COLDFIRE((mc68kcpu)->cpu_type))
- {
- mc68kcpu->mmu_acr3 = REG_DA(mc68kcpu)[(word2 >> 12) & 15];
- return;
- }
- m68ki_exception_illegal(mc68kcpu);
- return;
- case 0x805: /* MMUSR */
- if (CPU_TYPE_IS_040_PLUS((mc68kcpu)->cpu_type))
- {
- mc68kcpu->mmu_sr_040 = REG_DA(mc68kcpu)[(word2 >> 12) & 15];
- return;
- }
- m68ki_exception_illegal(mc68kcpu);
- return;
- case 0x806: /* URP */
- if (CPU_TYPE_IS_040_PLUS((mc68kcpu)->cpu_type))
- {
- mc68kcpu->mmu_urp_aptr = REG_DA(mc68kcpu)[(word2 >> 12) & 15];
- return;
- }
- m68ki_exception_illegal(mc68kcpu);
- return;
- case 0x807: /* SRP */
- if (CPU_TYPE_IS_040_PLUS((mc68kcpu)->cpu_type))
- {
- mc68kcpu->mmu_srp_aptr = REG_DA(mc68kcpu)[(word2 >> 12) & 15];
- return;
- }
- m68ki_exception_illegal(mc68kcpu);
- return;
- case 0xc00: // ROMBAR0
- if(CPU_TYPE_IS_COLDFIRE((mc68kcpu)->cpu_type))
- {
- /* TODO */
- return;
- }
- m68ki_exception_illegal(mc68kcpu);
- return;
- case 0xc01: // ROMBAR1
- if(CPU_TYPE_IS_COLDFIRE((mc68kcpu)->cpu_type))
- {
- /* TODO */
- return;
- }
- m68ki_exception_illegal(mc68kcpu);
- return;
- case 0xc04: // RAMBAR0
- if(CPU_TYPE_IS_COLDFIRE((mc68kcpu)->cpu_type))
- {
- /* TODO */
- return;
- }
- m68ki_exception_illegal(mc68kcpu);
- return;
- case 0xc05: // RAMBAR1
- if(CPU_TYPE_IS_COLDFIRE((mc68kcpu)->cpu_type))
- {
- /* TODO */
- return;
- }
- m68ki_exception_illegal(mc68kcpu);
- return;
- case 0xc0c: // MPCR
- if(CPU_TYPE_IS_COLDFIRE((mc68kcpu)->cpu_type))
- {
- /* TODO */
- return;
- }
- m68ki_exception_illegal(mc68kcpu);
- return;
- case 0xc0d: // EDRAMBAR
- if(CPU_TYPE_IS_COLDFIRE((mc68kcpu)->cpu_type))
- {
- /* TODO */
- return;
- }
- m68ki_exception_illegal(mc68kcpu);
- return;
- case 0xc0e: // SECMBAR
- if(CPU_TYPE_IS_COLDFIRE((mc68kcpu)->cpu_type))
- {
- /* TODO */
- return;
- }
- m68ki_exception_illegal(mc68kcpu);
- return;
- case 0xc0f: // MBAR
- if(CPU_TYPE_IS_COLDFIRE((mc68kcpu)->cpu_type))
- {
- /* TODO */
- return;
- }
- m68ki_exception_illegal(mc68kcpu);
- return;
- default:
- m68ki_exception_illegal(mc68kcpu);
- return;
- }
- }
- m68ki_exception_privilege_violation(mc68kcpu);
- return;
- }
- m68ki_exception_illegal(mc68kcpu);
-}
-
-
-void m68000_base_device_ops::m68k_op_movem_16_re_pd(m68000_base_device* mc68kcpu)
-{
- UINT32 i = 0;
- UINT32 register_list = OPER_I_16(mc68kcpu);
- UINT32 ea = AY(mc68kcpu);
- UINT32 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]));
- count++;
- }
- AY(mc68kcpu) = ea;
-
- (mc68kcpu)->remaining_cycles -= count<<(mc68kcpu)->cyc_movem_w;
-}
-
-
-void m68000_base_device_ops::m68k_op_movem_16_re_ai(m68000_base_device* mc68kcpu)
-{
- UINT32 i = 0;
- UINT32 register_list = OPER_I_16(mc68kcpu);
- UINT32 ea = EA_AY_AI_16(mc68kcpu);
- UINT32 count = 0;
-
- for(; i < 16; i++)
- if(register_list & (1 << i))
- {
- m68ki_write_16((mc68kcpu), ea, MASK_OUT_ABOVE_16(REG_DA(mc68kcpu)[i]));
- ea += 2;
- count++;
- }
-
- (mc68kcpu)->remaining_cycles -= count<<(mc68kcpu)->cyc_movem_w;
-}
-
-
-void m68000_base_device_ops::m68k_op_movem_16_re_di(m68000_base_device* mc68kcpu)
-{
- UINT32 i = 0;
- UINT32 register_list = OPER_I_16(mc68kcpu);
- UINT32 ea = EA_AY_DI_16(mc68kcpu);
- UINT32 count = 0;
-
- for(; i < 16; i++)
- if(register_list & (1 << i))
- {
- m68ki_write_16((mc68kcpu), ea, MASK_OUT_ABOVE_16(REG_DA(mc68kcpu)[i]));
- ea += 2;
- count++;
- }
-
- (mc68kcpu)->remaining_cycles -= count<<(mc68kcpu)->cyc_movem_w;
-}
-
-
-void m68000_base_device_ops::m68k_op_movem_16_re_ix(m68000_base_device* mc68kcpu)
-{
- UINT32 i = 0;
- UINT32 register_list = OPER_I_16(mc68kcpu);
- UINT32 ea = EA_AY_IX_16(mc68kcpu);
- UINT32 count = 0;
-
- for(; i < 16; i++)
- if(register_list & (1 << i))
- {
- m68ki_write_16((mc68kcpu), ea, MASK_OUT_ABOVE_16(REG_DA(mc68kcpu)[i]));
- ea += 2;
- count++;
- }
-
- (mc68kcpu)->remaining_cycles -= count<<(mc68kcpu)->cyc_movem_w;
-}
-
-
-void m68000_base_device_ops::m68k_op_movem_16_re_aw(m68000_base_device* mc68kcpu)
-{
- UINT32 i = 0;
- UINT32 register_list = OPER_I_16(mc68kcpu);
- UINT32 ea = EA_AW_16(mc68kcpu);
- UINT32 count = 0;
-
- for(; i < 16; i++)
- if(register_list & (1 << i))
- {
- m68ki_write_16((mc68kcpu), ea, MASK_OUT_ABOVE_16(REG_DA(mc68kcpu)[i]));
- ea += 2;
- count++;
- }
-
- (mc68kcpu)->remaining_cycles -= count<<(mc68kcpu)->cyc_movem_w;
-}
-
-
-void m68000_base_device_ops::m68k_op_movem_16_re_al(m68000_base_device* mc68kcpu)
-{
- UINT32 i = 0;
- UINT32 register_list = OPER_I_16(mc68kcpu);
- UINT32 ea = EA_AL_16(mc68kcpu);
- UINT32 count = 0;
-
- for(; i < 16; i++)
- if(register_list & (1 << i))
- {
- m68ki_write_16((mc68kcpu), ea, MASK_OUT_ABOVE_16(REG_DA(mc68kcpu)[i]));
- ea += 2;
- count++;
- }
-
- (mc68kcpu)->remaining_cycles -= count<<(mc68kcpu)->cyc_movem_w;
-}
-
-
-void m68000_base_device_ops::m68k_op_movem_32_re_pd(m68000_base_device* mc68kcpu)
-{
- UINT32 i = 0;
- UINT32 register_list = OPER_I_16(mc68kcpu);
- UINT32 ea = AY(mc68kcpu);
- UINT32 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 );
- count++;
- }
- AY(mc68kcpu) = ea;
-
- (mc68kcpu)->remaining_cycles -= count<<(mc68kcpu)->cyc_movem_l;
-}
-
-
-void m68000_base_device_ops::m68k_op_movem_32_re_ai(m68000_base_device* mc68kcpu)
-{
- UINT32 i = 0;
- UINT32 register_list = OPER_I_16(mc68kcpu);
- UINT32 ea = EA_AY_AI_32(mc68kcpu);
- UINT32 count = 0;
-
- for(; i < 16; i++)
- if(register_list & (1 << i))
- {
- m68ki_write_32((mc68kcpu), ea, REG_DA(mc68kcpu)[i]);
- ea += 4;
- count++;
- }
-
- (mc68kcpu)->remaining_cycles -= count<<(mc68kcpu)->cyc_movem_l;
-}
-
-
-void m68000_base_device_ops::m68k_op_movem_32_re_di(m68000_base_device* mc68kcpu)
-{
- UINT32 i = 0;
- UINT32 register_list = OPER_I_16(mc68kcpu);
- UINT32 ea = EA_AY_DI_32(mc68kcpu);
- UINT32 count = 0;
-
- for(; i < 16; i++)
- if(register_list & (1 << i))
- {
- m68ki_write_32((mc68kcpu), ea, REG_DA(mc68kcpu)[i]);
- ea += 4;
- count++;
- }
-
- (mc68kcpu)->remaining_cycles -= count<<(mc68kcpu)->cyc_movem_l;
-}
-
-
-void m68000_base_device_ops::m68k_op_movem_32_re_ix(m68000_base_device* mc68kcpu)
-{
- UINT32 i = 0;
- UINT32 register_list = OPER_I_16(mc68kcpu);
- UINT32 ea = EA_AY_IX_32(mc68kcpu);
- UINT32 count = 0;
-
- for(; i < 16; i++)
- if(register_list & (1 << i))
- {
- m68ki_write_32((mc68kcpu), ea, REG_DA(mc68kcpu)[i]);
- ea += 4;
- count++;
- }
-
- (mc68kcpu)->remaining_cycles -= count<<(mc68kcpu)->cyc_movem_l;
-}
-
-
-void m68000_base_device_ops::m68k_op_movem_32_re_aw(m68000_base_device* mc68kcpu)
-{
- UINT32 i = 0;
- UINT32 register_list = OPER_I_16(mc68kcpu);
- UINT32 ea = EA_AW_32(mc68kcpu);
- UINT32 count = 0;
-
- for(; i < 16; i++)
- if(register_list & (1 << i))
- {
- m68ki_write_32((mc68kcpu), ea, REG_DA(mc68kcpu)[i]);
- ea += 4;
- count++;
- }
-
- (mc68kcpu)->remaining_cycles -= count<<(mc68kcpu)->cyc_movem_l;
-}
-
-
-void m68000_base_device_ops::m68k_op_movem_32_re_al(m68000_base_device* mc68kcpu)
-{
- UINT32 i = 0;
- UINT32 register_list = OPER_I_16(mc68kcpu);
- UINT32 ea = EA_AL_32(mc68kcpu);
- UINT32 count = 0;
-
- for(; i < 16; i++)
- if(register_list & (1 << i))
- {
- m68ki_write_32((mc68kcpu), ea, REG_DA(mc68kcpu)[i]);
- ea += 4;
- count++;
- }
-
- (mc68kcpu)->remaining_cycles -= count<<(mc68kcpu)->cyc_movem_l;
-}
-
-
-void m68000_base_device_ops::m68k_op_movem_16_er_pi(m68000_base_device* mc68kcpu)
-{
- UINT32 i = 0;
- UINT32 register_list = OPER_I_16(mc68kcpu);
- UINT32 ea = AY(mc68kcpu);
- UINT32 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)));
- ea += 2;
- count++;
- }
- AY(mc68kcpu) = ea;
-
- (mc68kcpu)->remaining_cycles -= count<<(mc68kcpu)->cyc_movem_w;
-}
-
-
-void m68000_base_device_ops::m68k_op_movem_16_er_pcdi(m68000_base_device* mc68kcpu)
-{
- UINT32 i = 0;
- UINT32 register_list = OPER_I_16(mc68kcpu);
- UINT32 ea = EA_PCDI_16(mc68kcpu);
- UINT32 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)));
- ea += 2;
- count++;
- }
-
- (mc68kcpu)->remaining_cycles -= count<<(mc68kcpu)->cyc_movem_w;
-}
-
-
-void m68000_base_device_ops::m68k_op_movem_16_er_pcix(m68000_base_device* mc68kcpu)
-{
- UINT32 i = 0;
- UINT32 register_list = OPER_I_16(mc68kcpu);
- UINT32 ea = EA_PCIX_16(mc68kcpu);
- UINT32 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)));
- ea += 2;
- count++;
- }
-
- (mc68kcpu)->remaining_cycles -= count<<(mc68kcpu)->cyc_movem_w;
-}
-
-
-void m68000_base_device_ops::m68k_op_movem_16_er_ai(m68000_base_device* mc68kcpu)
-{
- UINT32 i = 0;
- UINT32 register_list = OPER_I_16(mc68kcpu);
- UINT32 ea = EA_AY_AI_16(mc68kcpu);
- UINT32 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)));
- ea += 2;
- count++;
- }
-
- (mc68kcpu)->remaining_cycles -= count<<(mc68kcpu)->cyc_movem_w;
-}
-
-
-void m68000_base_device_ops::m68k_op_movem_16_er_di(m68000_base_device* mc68kcpu)
-{
- UINT32 i = 0;
- UINT32 register_list = OPER_I_16(mc68kcpu);
- UINT32 ea = EA_AY_DI_16(mc68kcpu);
- UINT32 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)));
- ea += 2;
- count++;
- }
-
- (mc68kcpu)->remaining_cycles -= count<<(mc68kcpu)->cyc_movem_w;
-}
-
-
-void m68000_base_device_ops::m68k_op_movem_16_er_ix(m68000_base_device* mc68kcpu)
-{
- UINT32 i = 0;
- UINT32 register_list = OPER_I_16(mc68kcpu);
- UINT32 ea = EA_AY_IX_16(mc68kcpu);
- UINT32 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)));
- ea += 2;
- count++;
- }
-
- (mc68kcpu)->remaining_cycles -= count<<(mc68kcpu)->cyc_movem_w;
-}
-
-
-void m68000_base_device_ops::m68k_op_movem_16_er_aw(m68000_base_device* mc68kcpu)
-{
- UINT32 i = 0;
- UINT32 register_list = OPER_I_16(mc68kcpu);
- UINT32 ea = EA_AW_16(mc68kcpu);
- UINT32 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)));
- ea += 2;
- count++;
- }
-
- (mc68kcpu)->remaining_cycles -= count<<(mc68kcpu)->cyc_movem_w;
-}
-
-
-void m68000_base_device_ops::m68k_op_movem_16_er_al(m68000_base_device* mc68kcpu)
-{
- UINT32 i = 0;
- UINT32 register_list = OPER_I_16(mc68kcpu);
- UINT32 ea = EA_AL_16(mc68kcpu);
- UINT32 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)));
- ea += 2;
- count++;
- }
-
- (mc68kcpu)->remaining_cycles -= count<<(mc68kcpu)->cyc_movem_w;
-}
-
-
-void m68000_base_device_ops::m68k_op_movem_32_er_pi(m68000_base_device* mc68kcpu)
-{
- UINT32 i = 0;
- UINT32 register_list = OPER_I_16(mc68kcpu);
- UINT32 ea = AY(mc68kcpu);
- UINT32 count = 0;
-
- for(; i < 16; i++)
- if(register_list & (1 << i))
- {
- REG_DA(mc68kcpu)[i] = m68ki_read_32((mc68kcpu), ea);
- ea += 4;
- count++;
- }
- AY(mc68kcpu) = ea;
-
- (mc68kcpu)->remaining_cycles -= count<<(mc68kcpu)->cyc_movem_l;
-}
-
-
-void m68000_base_device_ops::m68k_op_movem_32_er_pcdi(m68000_base_device* mc68kcpu)
-{
- UINT32 i = 0;
- UINT32 register_list = OPER_I_16(mc68kcpu);
- UINT32 ea = EA_PCDI_32(mc68kcpu);
- UINT32 count = 0;
-
- for(; i < 16; i++)
- if(register_list & (1 << i))
- {
- REG_DA(mc68kcpu)[i] = m68ki_read_pcrel_32((mc68kcpu), ea);
- ea += 4;
- count++;
- }
-
- (mc68kcpu)->remaining_cycles -= count<<(mc68kcpu)->cyc_movem_l;
-}
-
-
-void m68000_base_device_ops::m68k_op_movem_32_er_pcix(m68000_base_device* mc68kcpu)
-{
- UINT32 i = 0;
- UINT32 register_list = OPER_I_16(mc68kcpu);
- UINT32 ea = EA_PCIX_32(mc68kcpu);
- UINT32 count = 0;
-
- for(; i < 16; i++)
- if(register_list & (1 << i))
- {
- REG_DA(mc68kcpu)[i] = m68ki_read_pcrel_32((mc68kcpu), ea);
- ea += 4;
- count++;
- }
-
- (mc68kcpu)->remaining_cycles -= count<<(mc68kcpu)->cyc_movem_l;
-}
-
-
-void m68000_base_device_ops::m68k_op_movem_32_er_ai(m68000_base_device* mc68kcpu)
-{
- UINT32 i = 0;
- UINT32 register_list = OPER_I_16(mc68kcpu);
- UINT32 ea = EA_AY_AI_32(mc68kcpu);
- UINT32 count = 0;
-
- for(; i < 16; i++)
- if(register_list & (1 << i))
- {
- REG_DA(mc68kcpu)[i] = m68ki_read_32((mc68kcpu), ea);
- ea += 4;
- count++;
- }
-
- (mc68kcpu)->remaining_cycles -= count<<(mc68kcpu)->cyc_movem_l;
-}
-
-
-void m68000_base_device_ops::m68k_op_movem_32_er_di(m68000_base_device* mc68kcpu)
-{
- UINT32 i = 0;
- UINT32 register_list = OPER_I_16(mc68kcpu);
- UINT32 ea = EA_AY_DI_32(mc68kcpu);
- UINT32 count = 0;
-
- for(; i < 16; i++)
- if(register_list & (1 << i))
- {
- REG_DA(mc68kcpu)[i] = m68ki_read_32((mc68kcpu), ea);
- ea += 4;
- count++;
- }
-
- (mc68kcpu)->remaining_cycles -= count<<(mc68kcpu)->cyc_movem_l;
-}
-
-
-void m68000_base_device_ops::m68k_op_movem_32_er_ix(m68000_base_device* mc68kcpu)
-{
- UINT32 i = 0;
- UINT32 register_list = OPER_I_16(mc68kcpu);
- UINT32 ea = EA_AY_IX_32(mc68kcpu);
- UINT32 count = 0;
-
- for(; i < 16; i++)
- if(register_list & (1 << i))
- {
- REG_DA(mc68kcpu)[i] = m68ki_read_32((mc68kcpu), ea);
- ea += 4;
- count++;
- }
-
- (mc68kcpu)->remaining_cycles -= count<<(mc68kcpu)->cyc_movem_l;
-}
-
-
-void m68000_base_device_ops::m68k_op_movem_32_er_aw(m68000_base_device* mc68kcpu)
-{
- UINT32 i = 0;
- UINT32 register_list = OPER_I_16(mc68kcpu);
- UINT32 ea = EA_AW_32(mc68kcpu);
- UINT32 count = 0;
-
- for(; i < 16; i++)
- if(register_list & (1 << i))
- {
- REG_DA(mc68kcpu)[i] = m68ki_read_32((mc68kcpu), ea);
- ea += 4;
- count++;
- }
-
- (mc68kcpu)->remaining_cycles -= count<<(mc68kcpu)->cyc_movem_l;
-}
-
-
-void m68000_base_device_ops::m68k_op_movem_32_er_al(m68000_base_device* mc68kcpu)
-{
- UINT32 i = 0;
- UINT32 register_list = OPER_I_16(mc68kcpu);
- UINT32 ea = EA_AL_32(mc68kcpu);
- UINT32 count = 0;
-
- for(; i < 16; i++)
- if(register_list & (1 << i))
- {
- REG_DA(mc68kcpu)[i] = m68ki_read_32((mc68kcpu), ea);
- ea += 4;
- count++;
- }
-
- (mc68kcpu)->remaining_cycles -= count<<(mc68kcpu)->cyc_movem_l;
-}
-
-
-void m68000_base_device_ops::m68k_op_movep_16_re(m68000_base_device* mc68kcpu)
-{
- UINT32 ea = EA_AY_DI_16(mc68kcpu);
- UINT32 src = DX(mc68kcpu);
-
- m68ki_write_8((mc68kcpu), ea, MASK_OUT_ABOVE_8(src >> 8));
- m68ki_write_8((mc68kcpu), ea += 2, MASK_OUT_ABOVE_8(src));
-}
-
-
-void m68000_base_device_ops::m68k_op_movep_32_re(m68000_base_device* mc68kcpu)
-{
- UINT32 ea = EA_AY_DI_32(mc68kcpu);
- UINT32 src = DX(mc68kcpu);
-
- 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));
-}
-
-
-void m68000_base_device_ops::m68k_op_movep_16_er(m68000_base_device* mc68kcpu)
-{
- UINT32 ea = EA_AY_DI_16(mc68kcpu);
- UINT32* r_dst = &DX(mc68kcpu);
-
- *r_dst = MASK_OUT_BELOW_16(*r_dst) | ((m68ki_read_8((mc68kcpu), ea) << 8) + m68ki_read_8((mc68kcpu), ea + 2));
-}
-
-
-void m68000_base_device_ops::m68k_op_movep_32_er(m68000_base_device* mc68kcpu)
-{
- UINT32 ea = EA_AY_DI_32(mc68kcpu);
-
- 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);
-}
-
-
-void m68000_base_device_ops::m68k_op_moves_8_ai(m68000_base_device* mc68kcpu)
-{
- if(CPU_TYPE_IS_010_PLUS((mc68kcpu)->cpu_type))
- {
- if((mc68kcpu)->s_flag)
- {
- UINT32 word2 = OPER_I_16(mc68kcpu);
- UINT32 ea = EA_AY_AI_8(mc68kcpu);
-
- m68ki_trace_t0(mc68kcpu); /* 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]));
- 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;
- 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;
- return;
- }
- m68ki_exception_privilege_violation(mc68kcpu);
- return;
- }
- m68ki_exception_illegal(mc68kcpu);
-}
-
-
-void m68000_base_device_ops::m68k_op_moves_8_pi(m68000_base_device* mc68kcpu)
-{
- if(CPU_TYPE_IS_010_PLUS((mc68kcpu)->cpu_type))
- {
- if((mc68kcpu)->s_flag)
- {
- UINT32 word2 = OPER_I_16(mc68kcpu);
- UINT32 ea = EA_AY_PI_8(mc68kcpu);
-
- m68ki_trace_t0(mc68kcpu); /* 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]));
- 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;
- 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;
- return;
- }
- m68ki_exception_privilege_violation(mc68kcpu);
- return;
- }
- m68ki_exception_illegal(mc68kcpu);
-}
-
-
-void m68000_base_device_ops::m68k_op_moves_8_pi7(m68000_base_device* mc68kcpu)
-{
- if(CPU_TYPE_IS_010_PLUS((mc68kcpu)->cpu_type))
- {
- if((mc68kcpu)->s_flag)
- {
- UINT32 word2 = OPER_I_16(mc68kcpu);
- UINT32 ea = EA_A7_PI_8(mc68kcpu);
-
- m68ki_trace_t0(mc68kcpu); /* 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]));
- 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;
- 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;
- return;
- }
- m68ki_exception_privilege_violation(mc68kcpu);
- return;
- }
- m68ki_exception_illegal(mc68kcpu);
-}
-
-
-void m68000_base_device_ops::m68k_op_moves_8_pd(m68000_base_device* mc68kcpu)
-{
- if(CPU_TYPE_IS_010_PLUS((mc68kcpu)->cpu_type))
- {
- if((mc68kcpu)->s_flag)
- {
- UINT32 word2 = OPER_I_16(mc68kcpu);
- UINT32 ea = EA_AY_PD_8(mc68kcpu);
-
- m68ki_trace_t0(mc68kcpu); /* 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]));
- 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;
- 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;
- return;
- }
- m68ki_exception_privilege_violation(mc68kcpu);
- return;
- }
- m68ki_exception_illegal(mc68kcpu);
-}
-
-
-void m68000_base_device_ops::m68k_op_moves_8_pd7(m68000_base_device* mc68kcpu)
-{
- if(CPU_TYPE_IS_010_PLUS((mc68kcpu)->cpu_type))
- {
- if((mc68kcpu)->s_flag)
- {
- UINT32 word2 = OPER_I_16(mc68kcpu);
- UINT32 ea = EA_A7_PD_8(mc68kcpu);
-
- m68ki_trace_t0(mc68kcpu); /* 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]));
- 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;
- 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;
- return;
- }
- m68ki_exception_privilege_violation(mc68kcpu);
- return;
- }
- m68ki_exception_illegal(mc68kcpu);
-}
-
-
-void m68000_base_device_ops::m68k_op_moves_8_di(m68000_base_device* mc68kcpu)
-{
- if(CPU_TYPE_IS_010_PLUS((mc68kcpu)->cpu_type))
- {
- if((mc68kcpu)->s_flag)
- {
- UINT32 word2 = OPER_I_16(mc68kcpu);
- UINT32 ea = EA_AY_DI_8(mc68kcpu);
-
- m68ki_trace_t0(mc68kcpu); /* 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]));
- 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;
- 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;
- return;
- }
- m68ki_exception_privilege_violation(mc68kcpu);
- return;
- }
- m68ki_exception_illegal(mc68kcpu);
-}
-
-
-void m68000_base_device_ops::m68k_op_moves_8_ix(m68000_base_device* mc68kcpu)
-{
- if(CPU_TYPE_IS_010_PLUS((mc68kcpu)->cpu_type))
- {
- if((mc68kcpu)->s_flag)
- {
- UINT32 word2 = OPER_I_16(mc68kcpu);
- UINT32 ea = EA_AY_IX_8(mc68kcpu);
-
- m68ki_trace_t0(mc68kcpu); /* 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]));
- 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;
- 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;
- return;
- }
- m68ki_exception_privilege_violation(mc68kcpu);
- return;
- }
- m68ki_exception_illegal(mc68kcpu);
-}
-
-
-void m68000_base_device_ops::m68k_op_moves_8_aw(m68000_base_device* mc68kcpu)
-{
- if(CPU_TYPE_IS_010_PLUS((mc68kcpu)->cpu_type))
- {
- if((mc68kcpu)->s_flag)
- {
- UINT32 word2 = OPER_I_16(mc68kcpu);
- UINT32 ea = EA_AW_8(mc68kcpu);
-
- m68ki_trace_t0(mc68kcpu); /* 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]));
- 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;
- 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;
- return;
- }
- m68ki_exception_privilege_violation(mc68kcpu);
- return;
- }
- m68ki_exception_illegal(mc68kcpu);
-}
-
-
-void m68000_base_device_ops::m68k_op_moves_8_al(m68000_base_device* mc68kcpu)
-{
- if(CPU_TYPE_IS_010_PLUS((mc68kcpu)->cpu_type))
- {
- if((mc68kcpu)->s_flag)
- {
- UINT32 word2 = OPER_I_16(mc68kcpu);
- UINT32 ea = EA_AL_8(mc68kcpu);
-
- m68ki_trace_t0(mc68kcpu); /* 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]));
- 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;
- 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;
- return;
- }
- m68ki_exception_privilege_violation(mc68kcpu);
- return;
- }
- m68ki_exception_illegal(mc68kcpu);
-}
-
-
-void m68000_base_device_ops::m68k_op_moves_16_ai(m68000_base_device* mc68kcpu)
-{
- if(CPU_TYPE_IS_010_PLUS((mc68kcpu)->cpu_type))
- {
- if((mc68kcpu)->s_flag)
- {
- UINT32 word2 = OPER_I_16(mc68kcpu);
- UINT32 ea = EA_AY_AI_16(mc68kcpu);
-
- m68ki_trace_t0(mc68kcpu); /* 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]));
- 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;
- 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;
- return;
- }
- m68ki_exception_privilege_violation(mc68kcpu);
- return;
- }
- m68ki_exception_illegal(mc68kcpu);
-}
-
-
-void m68000_base_device_ops::m68k_op_moves_16_pi(m68000_base_device* mc68kcpu)
-{
- if(CPU_TYPE_IS_010_PLUS((mc68kcpu)->cpu_type))
- {
- if((mc68kcpu)->s_flag)
- {
- UINT32 word2 = OPER_I_16(mc68kcpu);
- UINT32 ea = EA_AY_PI_16(mc68kcpu);
-
- m68ki_trace_t0(mc68kcpu); /* 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]));
- 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;
- 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;
- return;
- }
- m68ki_exception_privilege_violation(mc68kcpu);
- return;
- }
- m68ki_exception_illegal(mc68kcpu);
-}
-
-
-void m68000_base_device_ops::m68k_op_moves_16_pd(m68000_base_device* mc68kcpu)
-{
- if(CPU_TYPE_IS_010_PLUS((mc68kcpu)->cpu_type))
- {
- if((mc68kcpu)->s_flag)
- {
- UINT32 word2 = OPER_I_16(mc68kcpu);
- UINT32 ea = EA_AY_PD_16(mc68kcpu);
-
- m68ki_trace_t0(mc68kcpu); /* 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]));
- 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;
- 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;
- return;
- }
- m68ki_exception_privilege_violation(mc68kcpu);
- return;
- }
- m68ki_exception_illegal(mc68kcpu);
-}
-
-
-void m68000_base_device_ops::m68k_op_moves_16_di(m68000_base_device* mc68kcpu)
-{
- if(CPU_TYPE_IS_010_PLUS((mc68kcpu)->cpu_type))
- {
- if((mc68kcpu)->s_flag)
- {
- UINT32 word2 = OPER_I_16(mc68kcpu);
- UINT32 ea = EA_AY_DI_16(mc68kcpu);
-
- m68ki_trace_t0(mc68kcpu); /* 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]));
- 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;
- 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;
- return;
- }
- m68ki_exception_privilege_violation(mc68kcpu);
- return;
- }
- m68ki_exception_illegal(mc68kcpu);
-}
-
-
-void m68000_base_device_ops::m68k_op_moves_16_ix(m68000_base_device* mc68kcpu)
-{
- if(CPU_TYPE_IS_010_PLUS((mc68kcpu)->cpu_type))
- {
- if((mc68kcpu)->s_flag)
- {
- UINT32 word2 = OPER_I_16(mc68kcpu);
- UINT32 ea = EA_AY_IX_16(mc68kcpu);
-
- m68ki_trace_t0(mc68kcpu); /* 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]));
- 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;
- 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;
- return;
- }
- m68ki_exception_privilege_violation(mc68kcpu);
- return;
- }
- m68ki_exception_illegal(mc68kcpu);
-}
-
-
-void m68000_base_device_ops::m68k_op_moves_16_aw(m68000_base_device* mc68kcpu)
-{
- if(CPU_TYPE_IS_010_PLUS((mc68kcpu)->cpu_type))
- {
- if((mc68kcpu)->s_flag)
- {
- UINT32 word2 = OPER_I_16(mc68kcpu);
- UINT32 ea = EA_AW_16(mc68kcpu);
-
- m68ki_trace_t0(mc68kcpu); /* 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]));
- 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;
- 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;
- return;
- }
- m68ki_exception_privilege_violation(mc68kcpu);
- return;
- }
- m68ki_exception_illegal(mc68kcpu);
-}
-
-
-void m68000_base_device_ops::m68k_op_moves_16_al(m68000_base_device* mc68kcpu)
-{
- if(CPU_TYPE_IS_010_PLUS((mc68kcpu)->cpu_type))
- {
- if((mc68kcpu)->s_flag)
- {
- UINT32 word2 = OPER_I_16(mc68kcpu);
- UINT32 ea = EA_AL_16(mc68kcpu);
-
- m68ki_trace_t0(mc68kcpu); /* 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]));
- 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;
- 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;
- return;
- }
- m68ki_exception_privilege_violation(mc68kcpu);
- return;
- }
- m68ki_exception_illegal(mc68kcpu);
-}
-
-
-void m68000_base_device_ops::m68k_op_moves_32_ai(m68000_base_device* mc68kcpu)
-{
- if(CPU_TYPE_IS_010_PLUS((mc68kcpu)->cpu_type))
- {
- if((mc68kcpu)->s_flag)
- {
- UINT32 word2 = OPER_I_16(mc68kcpu);
- UINT32 ea = EA_AY_AI_32(mc68kcpu);
-
- m68ki_trace_t0(mc68kcpu); /* 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;
- 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;
- return;
- }
- m68ki_exception_privilege_violation(mc68kcpu);
- return;
- }
- m68ki_exception_illegal(mc68kcpu);
-}
-
-
-void m68000_base_device_ops::m68k_op_moves_32_pi(m68000_base_device* mc68kcpu)
-{
- if(CPU_TYPE_IS_010_PLUS((mc68kcpu)->cpu_type))
- {
- if((mc68kcpu)->s_flag)
- {
- UINT32 word2 = OPER_I_16(mc68kcpu);
- UINT32 ea = EA_AY_PI_32(mc68kcpu);
-
- m68ki_trace_t0(mc68kcpu); /* 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;
- 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;
- return;
- }
- m68ki_exception_privilege_violation(mc68kcpu);
- return;
- }
- m68ki_exception_illegal(mc68kcpu);
-}
-
-
-void m68000_base_device_ops::m68k_op_moves_32_pd(m68000_base_device* mc68kcpu)
-{
- if(CPU_TYPE_IS_010_PLUS((mc68kcpu)->cpu_type))
- {
- if((mc68kcpu)->s_flag)
- {
- UINT32 word2 = OPER_I_16(mc68kcpu);
- UINT32 ea = EA_AY_PD_32(mc68kcpu);
-
- m68ki_trace_t0(mc68kcpu); /* 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;
- 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;
- return;
- }
- m68ki_exception_privilege_violation(mc68kcpu);
- return;
- }
- m68ki_exception_illegal(mc68kcpu);
-}
-
-
-void m68000_base_device_ops::m68k_op_moves_32_di(m68000_base_device* mc68kcpu)
-{
- if(CPU_TYPE_IS_010_PLUS((mc68kcpu)->cpu_type))
- {
- if((mc68kcpu)->s_flag)
- {
- UINT32 word2 = OPER_I_16(mc68kcpu);
- UINT32 ea = EA_AY_DI_32(mc68kcpu);
-
- m68ki_trace_t0(mc68kcpu); /* 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;
- 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;
- return;
- }
- m68ki_exception_privilege_violation(mc68kcpu);
- return;
- }
- m68ki_exception_illegal(mc68kcpu);
-}
-
-
-void m68000_base_device_ops::m68k_op_moves_32_ix(m68000_base_device* mc68kcpu)
-{
- if(CPU_TYPE_IS_010_PLUS((mc68kcpu)->cpu_type))
- {
- if((mc68kcpu)->s_flag)
- {
- UINT32 word2 = OPER_I_16(mc68kcpu);
- UINT32 ea = EA_AY_IX_32(mc68kcpu);
-
- m68ki_trace_t0(mc68kcpu); /* 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;
- 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;
- return;
- }
- m68ki_exception_privilege_violation(mc68kcpu);
- return;
- }
- m68ki_exception_illegal(mc68kcpu);
-}
-
-
-void m68000_base_device_ops::m68k_op_moves_32_aw(m68000_base_device* mc68kcpu)
-{
- if(CPU_TYPE_IS_010_PLUS((mc68kcpu)->cpu_type))
- {
- if((mc68kcpu)->s_flag)
- {
- UINT32 word2 = OPER_I_16(mc68kcpu);
- UINT32 ea = EA_AW_32(mc68kcpu);
-
- m68ki_trace_t0(mc68kcpu); /* 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;
- 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;
- return;
- }
- m68ki_exception_privilege_violation(mc68kcpu);
- return;
- }
- m68ki_exception_illegal(mc68kcpu);
-}
-
-
-void m68000_base_device_ops::m68k_op_moves_32_al(m68000_base_device* mc68kcpu)
-{
- if(CPU_TYPE_IS_010_PLUS((mc68kcpu)->cpu_type))
- {
- if((mc68kcpu)->s_flag)
- {
- UINT32 word2 = OPER_I_16(mc68kcpu);
- UINT32 ea = EA_AL_32(mc68kcpu);
-
- m68ki_trace_t0(mc68kcpu); /* 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;
- 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;
- return;
- }
- m68ki_exception_privilege_violation(mc68kcpu);
- return;
- }
- m68ki_exception_illegal(mc68kcpu);
-}
-
-
-void m68000_base_device_ops::m68k_op_moveq_32(m68000_base_device* mc68kcpu)
-{
- UINT32 res = DX(mc68kcpu) = MAKE_INT_8(MASK_OUT_ABOVE_8((mc68kcpu)->ir));
-
- (mc68kcpu)->n_flag = NFLAG_32(res);
- (mc68kcpu)->not_z_flag = res;
- (mc68kcpu)->v_flag = VFLAG_CLEAR;
- (mc68kcpu)->c_flag = CFLAG_CLEAR;
-}
-
-
-void m68000_base_device_ops::m68k_op_move16_32(m68000_base_device* mc68kcpu)
-{
- UINT16 w2 = OPER_I_16(mc68kcpu);
- int ax = (mc68kcpu)->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));
-
- REG_A(mc68kcpu)[ax] += 16;
- REG_A(mc68kcpu)[ay] += 16;
-}
-
-
-void m68000_base_device_ops::m68k_op_muls_16_d(m68000_base_device* mc68kcpu)
-{
- UINT32* r_dst = &DX(mc68kcpu);
- UINT32 res = MASK_OUT_ABOVE_32(MAKE_INT_16(DY(mc68kcpu)) * 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;
-}
-
-
-void m68000_base_device_ops::m68k_op_muls_16_ai(m68000_base_device* mc68kcpu)
-{
- UINT32* r_dst = &DX(mc68kcpu);
- UINT32 res = MASK_OUT_ABOVE_32(MAKE_INT_16(OPER_AY_AI_16(mc68kcpu)) * 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;
-}
-
-
-void m68000_base_device_ops::m68k_op_muls_16_pi(m68000_base_device* mc68kcpu)
-{
- UINT32* r_dst = &DX(mc68kcpu);
- UINT32 res = MASK_OUT_ABOVE_32(MAKE_INT_16(OPER_AY_PI_16(mc68kcpu)) * 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;
-}
-
-
-void m68000_base_device_ops::m68k_op_muls_16_pd(m68000_base_device* mc68kcpu)
-{
- UINT32* r_dst = &DX(mc68kcpu);
- UINT32 res = MASK_OUT_ABOVE_32(MAKE_INT_16(OPER_AY_PD_16(mc68kcpu)) * 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;
-}
-
-
-void m68000_base_device_ops::m68k_op_muls_16_di(m68000_base_device* mc68kcpu)
-{
- UINT32* r_dst = &DX(mc68kcpu);
- UINT32 res = MASK_OUT_ABOVE_32(MAKE_INT_16(OPER_AY_DI_16(mc68kcpu)) * 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;
-}
-
-
-void m68000_base_device_ops::m68k_op_muls_16_ix(m68000_base_device* mc68kcpu)
-{
- UINT32* r_dst = &DX(mc68kcpu);
- UINT32 res = MASK_OUT_ABOVE_32(MAKE_INT_16(OPER_AY_IX_16(mc68kcpu)) * 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;
-}
-
-
-void m68000_base_device_ops::m68k_op_muls_16_aw(m68000_base_device* mc68kcpu)
-{
- UINT32* r_dst = &DX(mc68kcpu);
- UINT32 res = MASK_OUT_ABOVE_32(MAKE_INT_16(OPER_AW_16(mc68kcpu)) * 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;
-}
-
-
-void m68000_base_device_ops::m68k_op_muls_16_al(m68000_base_device* mc68kcpu)
-{
- UINT32* r_dst = &DX(mc68kcpu);
- UINT32 res = MASK_OUT_ABOVE_32(MAKE_INT_16(OPER_AL_16(mc68kcpu)) * 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;
-}
-
-
-void m68000_base_device_ops::m68k_op_muls_16_pcdi(m68000_base_device* mc68kcpu)
-{
- UINT32* r_dst = &DX(mc68kcpu);
- UINT32 res = MASK_OUT_ABOVE_32(MAKE_INT_16(OPER_PCDI_16(mc68kcpu)) * 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;
-}
-
-
-void m68000_base_device_ops::m68k_op_muls_16_pcix(m68000_base_device* mc68kcpu)
-{
- UINT32* r_dst = &DX(mc68kcpu);
- UINT32 res = MASK_OUT_ABOVE_32(MAKE_INT_16(OPER_PCIX_16(mc68kcpu)) * 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;
-}
-
-
-void m68000_base_device_ops::m68k_op_muls_16_i(m68000_base_device* mc68kcpu)
-{
- UINT32* r_dst = &DX(mc68kcpu);
- UINT32 res = MASK_OUT_ABOVE_32(MAKE_INT_16(OPER_I_16(mc68kcpu)) * 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;
-}
-
-
-void m68000_base_device_ops::m68k_op_mulu_16_d(m68000_base_device* mc68kcpu)
-{
- UINT32* r_dst = &DX(mc68kcpu);
- UINT32 res = MASK_OUT_ABOVE_16(DY(mc68kcpu)) * 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;
-}
-
-
-void m68000_base_device_ops::m68k_op_mulu_16_ai(m68000_base_device* mc68kcpu)
-{
- UINT32* r_dst = &DX(mc68kcpu);
- UINT32 res = OPER_AY_AI_16(mc68kcpu) * 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;
-}
-
-
-void m68000_base_device_ops::m68k_op_mulu_16_pi(m68000_base_device* mc68kcpu)
-{
- UINT32* r_dst = &DX(mc68kcpu);
- UINT32 res = OPER_AY_PI_16(mc68kcpu) * 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;
-}
-
-
-void m68000_base_device_ops::m68k_op_mulu_16_pd(m68000_base_device* mc68kcpu)
-{
- UINT32* r_dst = &DX(mc68kcpu);
- UINT32 res = OPER_AY_PD_16(mc68kcpu) * 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;
-}
-
-
-void m68000_base_device_ops::m68k_op_mulu_16_di(m68000_base_device* mc68kcpu)
-{
- UINT32* r_dst = &DX(mc68kcpu);
- UINT32 res = OPER_AY_DI_16(mc68kcpu) * 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;
-}
-
-
-void m68000_base_device_ops::m68k_op_mulu_16_ix(m68000_base_device* mc68kcpu)
-{
- UINT32* r_dst = &DX(mc68kcpu);
- UINT32 res = OPER_AY_IX_16(mc68kcpu) * 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;
-}
-
-
-void m68000_base_device_ops::m68k_op_mulu_16_aw(m68000_base_device* mc68kcpu)
-{
- UINT32* r_dst = &DX(mc68kcpu);
- UINT32 res = OPER_AW_16(mc68kcpu) * 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;
-}
-
-
-void m68000_base_device_ops::m68k_op_mulu_16_al(m68000_base_device* mc68kcpu)
-{
- UINT32* r_dst = &DX(mc68kcpu);
- UINT32 res = OPER_AL_16(mc68kcpu) * 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;
-}
-
-
-void m68000_base_device_ops::m68k_op_mulu_16_pcdi(m68000_base_device* mc68kcpu)
-{
- UINT32* r_dst = &DX(mc68kcpu);
- UINT32 res = OPER_PCDI_16(mc68kcpu) * 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;
-}
-
-
-void m68000_base_device_ops::m68k_op_mulu_16_pcix(m68000_base_device* mc68kcpu)
-{
- UINT32* r_dst = &DX(mc68kcpu);
- UINT32 res = OPER_PCIX_16(mc68kcpu) * 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;
-}
-
-
-void m68000_base_device_ops::m68k_op_mulu_16_i(m68000_base_device* mc68kcpu)
-{
- UINT32* r_dst = &DX(mc68kcpu);
- UINT32 res = OPER_I_16(mc68kcpu) * 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;
-}
-
-
-void m68000_base_device_ops::m68k_op_mull_32_d(m68000_base_device* mc68kcpu)
-{
- if(CPU_TYPE_IS_EC020_PLUS((mc68kcpu)->cpu_type))
- {
- UINT32 word2 = OPER_I_16(mc68kcpu);
- UINT64 src = DY(mc68kcpu);
- UINT64 dst = REG_D(mc68kcpu)[(word2 >> 12) & 7];
- UINT64 res;
-
- (mc68kcpu)->c_flag = CFLAG_CLEAR;
-
- if(BIT_B(word2)) /* signed */
- {
- res = (INT64)((INT32)src) * (INT64)((INT32)dst);
- if(!BIT_A(word2))
- {
- (mc68kcpu)->not_z_flag = MASK_OUT_ABOVE_32(res);
- (mc68kcpu)->n_flag = NFLAG_32(res);
- (mc68kcpu)->v_flag = ((INT64)res != (INT32)res)<<7;
- REG_D(mc68kcpu)[(word2 >> 12) & 7] = (mc68kcpu)->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);
- 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;
- 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);
- return;
- }
- m68ki_exception_illegal(mc68kcpu);
-}
-
-
-void m68000_base_device_ops::m68k_op_mull_32_ai(m68000_base_device* mc68kcpu)
-{
- if(CPU_TYPE_IS_EC020_PLUS((mc68kcpu)->cpu_type))
- {
- UINT32 word2 = OPER_I_16(mc68kcpu);
- UINT64 src = OPER_AY_AI_32(mc68kcpu);
- UINT64 dst = REG_D(mc68kcpu)[(word2 >> 12) & 7];
- UINT64 res;
-
- (mc68kcpu)->c_flag = CFLAG_CLEAR;
-
- if(BIT_B(word2)) /* signed */
- {
- res = (INT64)((INT32)src) * (INT64)((INT32)dst);
- if(!BIT_A(word2))
- {
- (mc68kcpu)->not_z_flag = MASK_OUT_ABOVE_32(res);
- (mc68kcpu)->n_flag = NFLAG_32(res);
- (mc68kcpu)->v_flag = ((INT64)res != (INT32)res)<<7;
- REG_D(mc68kcpu)[(word2 >> 12) & 7] = (mc68kcpu)->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);
- 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;
- 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);
- return;
- }
- m68ki_exception_illegal(mc68kcpu);
-}
-
-
-void m68000_base_device_ops::m68k_op_mull_32_pi(m68000_base_device* mc68kcpu)
-{
- if(CPU_TYPE_IS_EC020_PLUS((mc68kcpu)->cpu_type))
- {
- UINT32 word2 = OPER_I_16(mc68kcpu);
- UINT64 src = OPER_AY_PI_32(mc68kcpu);
- UINT64 dst = REG_D(mc68kcpu)[(word2 >> 12) & 7];
- UINT64 res;
-
- (mc68kcpu)->c_flag = CFLAG_CLEAR;
-
- if(BIT_B(word2)) /* signed */
- {
- res = (INT64)((INT32)src) * (INT64)((INT32)dst);
- if(!BIT_A(word2))
- {
- (mc68kcpu)->not_z_flag = MASK_OUT_ABOVE_32(res);
- (mc68kcpu)->n_flag = NFLAG_32(res);
- (mc68kcpu)->v_flag = ((INT64)res != (INT32)res)<<7;
- REG_D(mc68kcpu)[(word2 >> 12) & 7] = (mc68kcpu)->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);
- 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;
- 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);
- return;
- }
- m68ki_exception_illegal(mc68kcpu);
-}
-
-
-void m68000_base_device_ops::m68k_op_mull_32_pd(m68000_base_device* mc68kcpu)
-{
- if(CPU_TYPE_IS_EC020_PLUS((mc68kcpu)->cpu_type))
- {
- UINT32 word2 = OPER_I_16(mc68kcpu);
- UINT64 src = OPER_AY_PD_32(mc68kcpu);
- UINT64 dst = REG_D(mc68kcpu)[(word2 >> 12) & 7];
- UINT64 res;
-
- (mc68kcpu)->c_flag = CFLAG_CLEAR;
-
- if(BIT_B(word2)) /* signed */
- {
- res = (INT64)((INT32)src) * (INT64)((INT32)dst);
- if(!BIT_A(word2))
- {
- (mc68kcpu)->not_z_flag = MASK_OUT_ABOVE_32(res);
- (mc68kcpu)->n_flag = NFLAG_32(res);
- (mc68kcpu)->v_flag = ((INT64)res != (INT32)res)<<7;
- REG_D(mc68kcpu)[(word2 >> 12) & 7] = (mc68kcpu)->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);
- 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;
- 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);
- return;
- }
- m68ki_exception_illegal(mc68kcpu);
-}
-
-
-void m68000_base_device_ops::m68k_op_mull_32_di(m68000_base_device* mc68kcpu)
-{
- if(CPU_TYPE_IS_EC020_PLUS((mc68kcpu)->cpu_type))
- {
- UINT32 word2 = OPER_I_16(mc68kcpu);
- UINT64 src = OPER_AY_DI_32(mc68kcpu);
- UINT64 dst = REG_D(mc68kcpu)[(word2 >> 12) & 7];
- UINT64 res;
-
- (mc68kcpu)->c_flag = CFLAG_CLEAR;
-
- if(BIT_B(word2)) /* signed */
- {
- res = (INT64)((INT32)src) * (INT64)((INT32)dst);
- if(!BIT_A(word2))
- {
- (mc68kcpu)->not_z_flag = MASK_OUT_ABOVE_32(res);
- (mc68kcpu)->n_flag = NFLAG_32(res);
- (mc68kcpu)->v_flag = ((INT64)res != (INT32)res)<<7;
- REG_D(mc68kcpu)[(word2 >> 12) & 7] = (mc68kcpu)->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);
- 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;
- 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);
- return;
- }
- m68ki_exception_illegal(mc68kcpu);
-}
-
-
-void m68000_base_device_ops::m68k_op_mull_32_ix(m68000_base_device* mc68kcpu)
-{
- if(CPU_TYPE_IS_EC020_PLUS((mc68kcpu)->cpu_type))
- {
- UINT32 word2 = OPER_I_16(mc68kcpu);
- UINT64 src = OPER_AY_IX_32(mc68kcpu);
- UINT64 dst = REG_D(mc68kcpu)[(word2 >> 12) & 7];
- UINT64 res;
-
- (mc68kcpu)->c_flag = CFLAG_CLEAR;
-
- if(BIT_B(word2)) /* signed */
- {
- res = (INT64)((INT32)src) * (INT64)((INT32)dst);
- if(!BIT_A(word2))
- {
- (mc68kcpu)->not_z_flag = MASK_OUT_ABOVE_32(res);
- (mc68kcpu)->n_flag = NFLAG_32(res);
- (mc68kcpu)->v_flag = ((INT64)res != (INT32)res)<<7;
- REG_D(mc68kcpu)[(word2 >> 12) & 7] = (mc68kcpu)->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);
- 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;
- 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);
- return;
- }
- m68ki_exception_illegal(mc68kcpu);
-}
-
-
-void m68000_base_device_ops::m68k_op_mull_32_aw(m68000_base_device* mc68kcpu)
-{
- if(CPU_TYPE_IS_EC020_PLUS((mc68kcpu)->cpu_type))
- {
- UINT32 word2 = OPER_I_16(mc68kcpu);
- UINT64 src = OPER_AW_32(mc68kcpu);
- UINT64 dst = REG_D(mc68kcpu)[(word2 >> 12) & 7];
- UINT64 res;
-
- (mc68kcpu)->c_flag = CFLAG_CLEAR;
-
- if(BIT_B(word2)) /* signed */
- {
- res = (INT64)((INT32)src) * (INT64)((INT32)dst);
- if(!BIT_A(word2))
- {
- (mc68kcpu)->not_z_flag = MASK_OUT_ABOVE_32(res);
- (mc68kcpu)->n_flag = NFLAG_32(res);
- (mc68kcpu)->v_flag = ((INT64)res != (INT32)res)<<7;
- REG_D(mc68kcpu)[(word2 >> 12) & 7] = (mc68kcpu)->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);
- 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;
- 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);
- return;
- }
- m68ki_exception_illegal(mc68kcpu);
-}
-
-
-void m68000_base_device_ops::m68k_op_mull_32_al(m68000_base_device* mc68kcpu)
-{
- if(CPU_TYPE_IS_EC020_PLUS((mc68kcpu)->cpu_type))
- {
- UINT32 word2 = OPER_I_16(mc68kcpu);
- UINT64 src = OPER_AL_32(mc68kcpu);
- UINT64 dst = REG_D(mc68kcpu)[(word2 >> 12) & 7];
- UINT64 res;
-
- (mc68kcpu)->c_flag = CFLAG_CLEAR;
-
- if(BIT_B(word2)) /* signed */
- {
- res = (INT64)((INT32)src) * (INT64)((INT32)dst);
- if(!BIT_A(word2))
- {
- (mc68kcpu)->not_z_flag = MASK_OUT_ABOVE_32(res);
- (mc68kcpu)->n_flag = NFLAG_32(res);
- (mc68kcpu)->v_flag = ((INT64)res != (INT32)res)<<7;
- REG_D(mc68kcpu)[(word2 >> 12) & 7] = (mc68kcpu)->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);
- 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;
- 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);
- return;
- }
- m68ki_exception_illegal(mc68kcpu);
-}
-
-
-void m68000_base_device_ops::m68k_op_mull_32_pcdi(m68000_base_device* mc68kcpu)
-{
- if(CPU_TYPE_IS_EC020_PLUS((mc68kcpu)->cpu_type))
- {
- UINT32 word2 = OPER_I_16(mc68kcpu);
- UINT64 src = OPER_PCDI_32(mc68kcpu);
- UINT64 dst = REG_D(mc68kcpu)[(word2 >> 12) & 7];
- UINT64 res;
-
- (mc68kcpu)->c_flag = CFLAG_CLEAR;
-
- if(BIT_B(word2)) /* signed */
- {
- res = (INT64)((INT32)src) * (INT64)((INT32)dst);
- if(!BIT_A(word2))
- {
- (mc68kcpu)->not_z_flag = MASK_OUT_ABOVE_32(res);
- (mc68kcpu)->n_flag = NFLAG_32(res);
- (mc68kcpu)->v_flag = ((INT64)res != (INT32)res)<<7;
- REG_D(mc68kcpu)[(word2 >> 12) & 7] = (mc68kcpu)->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);
- 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;
- 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);
- return;
- }
- m68ki_exception_illegal(mc68kcpu);
-}
-
-
-void m68000_base_device_ops::m68k_op_mull_32_pcix(m68000_base_device* mc68kcpu)
-{
- if(CPU_TYPE_IS_EC020_PLUS((mc68kcpu)->cpu_type))
- {
- UINT32 word2 = OPER_I_16(mc68kcpu);
- UINT64 src = OPER_PCIX_32(mc68kcpu);
- UINT64 dst = REG_D(mc68kcpu)[(word2 >> 12) & 7];
- UINT64 res;
-
- (mc68kcpu)->c_flag = CFLAG_CLEAR;
-
- if(BIT_B(word2)) /* signed */
- {
- res = (INT64)((INT32)src) * (INT64)((INT32)dst);
- if(!BIT_A(word2))
- {
- (mc68kcpu)->not_z_flag = MASK_OUT_ABOVE_32(res);
- (mc68kcpu)->n_flag = NFLAG_32(res);
- (mc68kcpu)->v_flag = ((INT64)res != (INT32)res)<<7;
- REG_D(mc68kcpu)[(word2 >> 12) & 7] = (mc68kcpu)->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);
- 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;
- 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);
- return;
- }
- m68ki_exception_illegal(mc68kcpu);
-}
-
-
-void m68000_base_device_ops::m68k_op_mull_32_i(m68000_base_device* mc68kcpu)
-{
- if(CPU_TYPE_IS_EC020_PLUS((mc68kcpu)->cpu_type))
- {
- UINT32 word2 = OPER_I_16(mc68kcpu);
- UINT64 src = OPER_I_32(mc68kcpu);
- UINT64 dst = REG_D(mc68kcpu)[(word2 >> 12) & 7];
- UINT64 res;
-
- (mc68kcpu)->c_flag = CFLAG_CLEAR;
-
- if(BIT_B(word2)) /* signed */
- {
- res = (INT64)((INT32)src) * (INT64)((INT32)dst);
- if(!BIT_A(word2))
- {
- (mc68kcpu)->not_z_flag = MASK_OUT_ABOVE_32(res);
- (mc68kcpu)->n_flag = NFLAG_32(res);
- (mc68kcpu)->v_flag = ((INT64)res != (INT32)res)<<7;
- REG_D(mc68kcpu)[(word2 >> 12) & 7] = (mc68kcpu)->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);
- 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;
- 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);
- return;
- }
- m68ki_exception_illegal(mc68kcpu);
-}
-
-
-void m68000_base_device_ops::m68k_op_nbcd_8_d(m68000_base_device* mc68kcpu)
-{
- UINT32* r_dst = &DY(mc68kcpu);
- UINT32 dst = *r_dst;
- UINT32 res = MASK_OUT_ABOVE_8(0x9a - dst - XFLAG_AS_1(mc68kcpu));
-
- if(res != 0x9a)
- {
- (mc68kcpu)->v_flag = ~res; /* Undefined V behavior */
-
- if((res & 0x0f) == 0xa)
- res = (res & 0xf0) + 0x10;
-
- res = MASK_OUT_ABOVE_8(res);
-
- (mc68kcpu)->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;
- }
- else
- {
- (mc68kcpu)->v_flag = VFLAG_CLEAR;
- (mc68kcpu)->c_flag = CFLAG_CLEAR;
- (mc68kcpu)->x_flag = XFLAG_CLEAR;
- }
- (mc68kcpu)->n_flag = NFLAG_8(res); /* Undefined N behavior */
-}
-
-
-void m68000_base_device_ops::m68k_op_nbcd_8_ai(m68000_base_device* mc68kcpu)
-{
- UINT32 ea = EA_AY_AI_8(mc68kcpu);
- UINT32 dst = m68ki_read_8((mc68kcpu), ea);
- UINT32 res = MASK_OUT_ABOVE_8(0x9a - dst - XFLAG_AS_1(mc68kcpu));
-
- if(res != 0x9a)
- {
- (mc68kcpu)->v_flag = ~res; /* Undefined V behavior */
-
- if((res & 0x0f) == 0xa)
- res = (res & 0xf0) + 0x10;
-
- res = MASK_OUT_ABOVE_8(res);
-
- (mc68kcpu)->v_flag &= res; /* Undefined V behavior part II */
-
- m68ki_write_8((mc68kcpu), ea, MASK_OUT_ABOVE_8(res));
-
- (mc68kcpu)->not_z_flag |= res;
- (mc68kcpu)->c_flag = CFLAG_SET;
- (mc68kcpu)->x_flag = XFLAG_SET;
- }
- else
- {
- (mc68kcpu)->v_flag = VFLAG_CLEAR;
- (mc68kcpu)->c_flag = CFLAG_CLEAR;
- (mc68kcpu)->x_flag = XFLAG_CLEAR;
- }
- (mc68kcpu)->n_flag = NFLAG_8(res); /* Undefined N behavior */
-}
-
-
-void m68000_base_device_ops::m68k_op_nbcd_8_pi(m68000_base_device* mc68kcpu)
-{
- UINT32 ea = EA_AY_PI_8(mc68kcpu);
- UINT32 dst = m68ki_read_8((mc68kcpu), ea);
- UINT32 res = MASK_OUT_ABOVE_8(0x9a - dst - XFLAG_AS_1(mc68kcpu));
-
- if(res != 0x9a)
- {
- (mc68kcpu)->v_flag = ~res; /* Undefined V behavior */
-
- if((res & 0x0f) == 0xa)
- res = (res & 0xf0) + 0x10;
-
- res = MASK_OUT_ABOVE_8(res);
-
- (mc68kcpu)->v_flag &= res; /* Undefined V behavior part II */
-
- m68ki_write_8((mc68kcpu), ea, MASK_OUT_ABOVE_8(res));
-
- (mc68kcpu)->not_z_flag |= res;
- (mc68kcpu)->c_flag = CFLAG_SET;
- (mc68kcpu)->x_flag = XFLAG_SET;
- }
- else
- {
- (mc68kcpu)->v_flag = VFLAG_CLEAR;
- (mc68kcpu)->c_flag = CFLAG_CLEAR;
- (mc68kcpu)->x_flag = XFLAG_CLEAR;
- }
- (mc68kcpu)->n_flag = NFLAG_8(res); /* Undefined N behavior */
-}
-
-
-void m68000_base_device_ops::m68k_op_nbcd_8_pi7(m68000_base_device* mc68kcpu)
-{
- UINT32 ea = EA_A7_PI_8(mc68kcpu);
- UINT32 dst = m68ki_read_8((mc68kcpu), ea);
- UINT32 res = MASK_OUT_ABOVE_8(0x9a - dst - XFLAG_AS_1(mc68kcpu));
-
- if(res != 0x9a)
- {
- (mc68kcpu)->v_flag = ~res; /* Undefined V behavior */
-
- if((res & 0x0f) == 0xa)
- res = (res & 0xf0) + 0x10;
-
- res = MASK_OUT_ABOVE_8(res);
-
- (mc68kcpu)->v_flag &= res; /* Undefined V behavior part II */
-
- m68ki_write_8((mc68kcpu), ea, MASK_OUT_ABOVE_8(res));
-
- (mc68kcpu)->not_z_flag |= res;
- (mc68kcpu)->c_flag = CFLAG_SET;
- (mc68kcpu)->x_flag = XFLAG_SET;
- }
- else
- {
- (mc68kcpu)->v_flag = VFLAG_CLEAR;
- (mc68kcpu)->c_flag = CFLAG_CLEAR;
- (mc68kcpu)->x_flag = XFLAG_CLEAR;
- }
- (mc68kcpu)->n_flag = NFLAG_8(res); /* Undefined N behavior */
-}
-
-
-void m68000_base_device_ops::m68k_op_nbcd_8_pd(m68000_base_device* mc68kcpu)
-{
- UINT32 ea = EA_AY_PD_8(mc68kcpu);
- UINT32 dst = m68ki_read_8((mc68kcpu), ea);
- UINT32 res = MASK_OUT_ABOVE_8(0x9a - dst - XFLAG_AS_1(mc68kcpu));
-
- if(res != 0x9a)
- {
- (mc68kcpu)->v_flag = ~res; /* Undefined V behavior */
-
- if((res & 0x0f) == 0xa)
- res = (res & 0xf0) + 0x10;
-
- res = MASK_OUT_ABOVE_8(res);
-
- (mc68kcpu)->v_flag &= res; /* Undefined V behavior part II */
-
- m68ki_write_8((mc68kcpu), ea, MASK_OUT_ABOVE_8(res));
-
- (mc68kcpu)->not_z_flag |= res;
- (mc68kcpu)->c_flag = CFLAG_SET;
- (mc68kcpu)->x_flag = XFLAG_SET;
- }
- else
- {
- (mc68kcpu)->v_flag = VFLAG_CLEAR;
- (mc68kcpu)->c_flag = CFLAG_CLEAR;
- (mc68kcpu)->x_flag = XFLAG_CLEAR;
- }
- (mc68kcpu)->n_flag = NFLAG_8(res); /* Undefined N behavior */
-}
-
-
-void m68000_base_device_ops::m68k_op_nbcd_8_pd7(m68000_base_device* mc68kcpu)
-{
- UINT32 ea = EA_A7_PD_8(mc68kcpu);
- UINT32 dst = m68ki_read_8((mc68kcpu), ea);
- UINT32 res = MASK_OUT_ABOVE_8(0x9a - dst - XFLAG_AS_1(mc68kcpu));
-
- if(res != 0x9a)
- {
- (mc68kcpu)->v_flag = ~res; /* Undefined V behavior */
-
- if((res & 0x0f) == 0xa)
- res = (res & 0xf0) + 0x10;
-
- res = MASK_OUT_ABOVE_8(res);
-
- (mc68kcpu)->v_flag &= res; /* Undefined V behavior part II */
-
- m68ki_write_8((mc68kcpu), ea, MASK_OUT_ABOVE_8(res));
-
- (mc68kcpu)->not_z_flag |= res;
- (mc68kcpu)->c_flag = CFLAG_SET;
- (mc68kcpu)->x_flag = XFLAG_SET;
- }
- else
- {
- (mc68kcpu)->v_flag = VFLAG_CLEAR;
- (mc68kcpu)->c_flag = CFLAG_CLEAR;
- (mc68kcpu)->x_flag = XFLAG_CLEAR;
- }
- (mc68kcpu)->n_flag = NFLAG_8(res); /* Undefined N behavior */
-}
-
-
-void m68000_base_device_ops::m68k_op_nbcd_8_di(m68000_base_device* mc68kcpu)
-{
- UINT32 ea = EA_AY_DI_8(mc68kcpu);
- UINT32 dst = m68ki_read_8((mc68kcpu), ea);
- UINT32 res = MASK_OUT_ABOVE_8(0x9a - dst - XFLAG_AS_1(mc68kcpu));
-
- if(res != 0x9a)
- {
- (mc68kcpu)->v_flag = ~res; /* Undefined V behavior */
-
- if((res & 0x0f) == 0xa)
- res = (res & 0xf0) + 0x10;
-
- res = MASK_OUT_ABOVE_8(res);
-
- (mc68kcpu)->v_flag &= res; /* Undefined V behavior part II */
-
- m68ki_write_8((mc68kcpu), ea, MASK_OUT_ABOVE_8(res));
-
- (mc68kcpu)->not_z_flag |= res;
- (mc68kcpu)->c_flag = CFLAG_SET;
- (mc68kcpu)->x_flag = XFLAG_SET;
- }
- else
- {
- (mc68kcpu)->v_flag = VFLAG_CLEAR;
- (mc68kcpu)->c_flag = CFLAG_CLEAR;
- (mc68kcpu)->x_flag = XFLAG_CLEAR;
- }
- (mc68kcpu)->n_flag = NFLAG_8(res); /* Undefined N behavior */
-}
-
-
-void m68000_base_device_ops::m68k_op_nbcd_8_ix(m68000_base_device* mc68kcpu)
-{
- UINT32 ea = EA_AY_IX_8(mc68kcpu);
- UINT32 dst = m68ki_read_8((mc68kcpu), ea);
- UINT32 res = MASK_OUT_ABOVE_8(0x9a - dst - XFLAG_AS_1(mc68kcpu));
-
- if(res != 0x9a)
- {
- (mc68kcpu)->v_flag = ~res; /* Undefined V behavior */
-
- if((res & 0x0f) == 0xa)
- res = (res & 0xf0) + 0x10;
-
- res = MASK_OUT_ABOVE_8(res);
-
- (mc68kcpu)->v_flag &= res; /* Undefined V behavior part II */
-
- m68ki_write_8((mc68kcpu), ea, MASK_OUT_ABOVE_8(res));
-
- (mc68kcpu)->not_z_flag |= res;
- (mc68kcpu)->c_flag = CFLAG_SET;
- (mc68kcpu)->x_flag = XFLAG_SET;
- }
- else
- {
- (mc68kcpu)->v_flag = VFLAG_CLEAR;
- (mc68kcpu)->c_flag = CFLAG_CLEAR;
- (mc68kcpu)->x_flag = XFLAG_CLEAR;
- }
- (mc68kcpu)->n_flag = NFLAG_8(res); /* Undefined N behavior */
-}
-
-
-void m68000_base_device_ops::m68k_op_nbcd_8_aw(m68000_base_device* mc68kcpu)
-{
- UINT32 ea = EA_AW_8(mc68kcpu);
- UINT32 dst = m68ki_read_8((mc68kcpu), ea);
- UINT32 res = MASK_OUT_ABOVE_8(0x9a - dst - XFLAG_AS_1(mc68kcpu));
-
- if(res != 0x9a)
- {
- (mc68kcpu)->v_flag = ~res; /* Undefined V behavior */
-
- if((res & 0x0f) == 0xa)
- res = (res & 0xf0) + 0x10;
-
- res = MASK_OUT_ABOVE_8(res);
-
- (mc68kcpu)->v_flag &= res; /* Undefined V behavior part II */
-
- m68ki_write_8((mc68kcpu), ea, MASK_OUT_ABOVE_8(res));
-
- (mc68kcpu)->not_z_flag |= res;
- (mc68kcpu)->c_flag = CFLAG_SET;
- (mc68kcpu)->x_flag = XFLAG_SET;
- }
- else
- {
- (mc68kcpu)->v_flag = VFLAG_CLEAR;
- (mc68kcpu)->c_flag = CFLAG_CLEAR;
- (mc68kcpu)->x_flag = XFLAG_CLEAR;
- }
- (mc68kcpu)->n_flag = NFLAG_8(res); /* Undefined N behavior */
-}
-
-
-void m68000_base_device_ops::m68k_op_nbcd_8_al(m68000_base_device* mc68kcpu)
-{
- UINT32 ea = EA_AL_8(mc68kcpu);
- UINT32 dst = m68ki_read_8((mc68kcpu), ea);
- UINT32 res = MASK_OUT_ABOVE_8(0x9a - dst - XFLAG_AS_1(mc68kcpu));
-
- if(res != 0x9a)
- {
- (mc68kcpu)->v_flag = ~res; /* Undefined V behavior */
-
- if((res & 0x0f) == 0xa)
- res = (res & 0xf0) + 0x10;
-
- res = MASK_OUT_ABOVE_8(res);
-
- (mc68kcpu)->v_flag &= res; /* Undefined V behavior part II */
-
- m68ki_write_8((mc68kcpu), ea, MASK_OUT_ABOVE_8(res));
-
- (mc68kcpu)->not_z_flag |= res;
- (mc68kcpu)->c_flag = CFLAG_SET;
- (mc68kcpu)->x_flag = XFLAG_SET;
- }
- else
- {
- (mc68kcpu)->v_flag = VFLAG_CLEAR;
- (mc68kcpu)->c_flag = CFLAG_CLEAR;
- (mc68kcpu)->x_flag = XFLAG_CLEAR;
- }
- (mc68kcpu)->n_flag = NFLAG_8(res); /* Undefined N behavior */
-}
-
-
-void m68000_base_device_ops::m68k_op_neg_8_d(m68000_base_device* mc68kcpu)
-{
- UINT32* r_dst = &DY(mc68kcpu);
- UINT32 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);
-
- *r_dst = MASK_OUT_BELOW_8(*r_dst) | (mc68kcpu)->not_z_flag;
-}
-
-
-void m68000_base_device_ops::m68k_op_neg_8_ai(m68000_base_device* mc68kcpu)
-{
- UINT32 ea = EA_AY_AI_8(mc68kcpu);
- UINT32 src = m68ki_read_8((mc68kcpu), ea);
- UINT32 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);
-
- m68ki_write_8((mc68kcpu), ea, (mc68kcpu)->not_z_flag);
-}
-
-
-void m68000_base_device_ops::m68k_op_neg_8_pi(m68000_base_device* mc68kcpu)
-{
- UINT32 ea = EA_AY_PI_8(mc68kcpu);
- UINT32 src = m68ki_read_8((mc68kcpu), ea);
- UINT32 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);
-
- m68ki_write_8((mc68kcpu), ea, (mc68kcpu)->not_z_flag);
-}
-
-
-void m68000_base_device_ops::m68k_op_neg_8_pi7(m68000_base_device* mc68kcpu)
-{
- UINT32 ea = EA_A7_PI_8(mc68kcpu);
- UINT32 src = m68ki_read_8((mc68kcpu), ea);
- UINT32 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);
-
- m68ki_write_8((mc68kcpu), ea, (mc68kcpu)->not_z_flag);
-}
-
-
-void m68000_base_device_ops::m68k_op_neg_8_pd(m68000_base_device* mc68kcpu)
-{
- UINT32 ea = EA_AY_PD_8(mc68kcpu);
- UINT32 src = m68ki_read_8((mc68kcpu), ea);
- UINT32 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);
-
- m68ki_write_8((mc68kcpu), ea, (mc68kcpu)->not_z_flag);
-}
-
-
-void m68000_base_device_ops::m68k_op_neg_8_pd7(m68000_base_device* mc68kcpu)
-{
- UINT32 ea = EA_A7_PD_8(mc68kcpu);
- UINT32 src = m68ki_read_8((mc68kcpu), ea);
- UINT32 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);
-
- m68ki_write_8((mc68kcpu), ea, (mc68kcpu)->not_z_flag);
-}
-
-
-void m68000_base_device_ops::m68k_op_neg_8_di(m68000_base_device* mc68kcpu)
-{
- UINT32 ea = EA_AY_DI_8(mc68kcpu);
- UINT32 src = m68ki_read_8((mc68kcpu), ea);
- UINT32 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);
-
- m68ki_write_8((mc68kcpu), ea, (mc68kcpu)->not_z_flag);
-}
-
-
-void m68000_base_device_ops::m68k_op_neg_8_ix(m68000_base_device* mc68kcpu)
-{
- UINT32 ea = EA_AY_IX_8(mc68kcpu);
- UINT32 src = m68ki_read_8((mc68kcpu), ea);
- UINT32 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);
-
- m68ki_write_8((mc68kcpu), ea, (mc68kcpu)->not_z_flag);
-}
-
-
-void m68000_base_device_ops::m68k_op_neg_8_aw(m68000_base_device* mc68kcpu)
-{
- UINT32 ea = EA_AW_8(mc68kcpu);
- UINT32 src = m68ki_read_8((mc68kcpu), ea);
- UINT32 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);
-
- m68ki_write_8((mc68kcpu), ea, (mc68kcpu)->not_z_flag);
-}
-
-
-void m68000_base_device_ops::m68k_op_neg_8_al(m68000_base_device* mc68kcpu)
-{
- UINT32 ea = EA_AL_8(mc68kcpu);
- UINT32 src = m68ki_read_8((mc68kcpu), ea);
- UINT32 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);
-
- m68ki_write_8((mc68kcpu), ea, (mc68kcpu)->not_z_flag);
-}
-
-
-void m68000_base_device_ops::m68k_op_neg_16_d(m68000_base_device* mc68kcpu)
-{
- UINT32* r_dst = &DY(mc68kcpu);
- UINT32 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);
-
- *r_dst = MASK_OUT_BELOW_16(*r_dst) | (mc68kcpu)->not_z_flag;
-}
-
-
-void m68000_base_device_ops::m68k_op_neg_16_ai(m68000_base_device* mc68kcpu)
-{
- UINT32 ea = EA_AY_AI_16(mc68kcpu);
- UINT32 src = m68ki_read_16((mc68kcpu), ea);
- UINT32 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);
-
- m68ki_write_16((mc68kcpu), ea, (mc68kcpu)->not_z_flag);
-}
-
-
-void m68000_base_device_ops::m68k_op_neg_16_pi(m68000_base_device* mc68kcpu)
-{
- UINT32 ea = EA_AY_PI_16(mc68kcpu);
- UINT32 src = m68ki_read_16((mc68kcpu), ea);
- UINT32 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);
-
- m68ki_write_16((mc68kcpu), ea, (mc68kcpu)->not_z_flag);
-}
-
-
-void m68000_base_device_ops::m68k_op_neg_16_pd(m68000_base_device* mc68kcpu)
-{
- UINT32 ea = EA_AY_PD_16(mc68kcpu);
- UINT32 src = m68ki_read_16((mc68kcpu), ea);
- UINT32 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);
-
- m68ki_write_16((mc68kcpu), ea, (mc68kcpu)->not_z_flag);
-}
-
-
-void m68000_base_device_ops::m68k_op_neg_16_di(m68000_base_device* mc68kcpu)
-{
- UINT32 ea = EA_AY_DI_16(mc68kcpu);
- UINT32 src = m68ki_read_16((mc68kcpu), ea);
- UINT32 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);
-
- m68ki_write_16((mc68kcpu), ea, (mc68kcpu)->not_z_flag);
-}
-
-
-void m68000_base_device_ops::m68k_op_neg_16_ix(m68000_base_device* mc68kcpu)
-{
- UINT32 ea = EA_AY_IX_16(mc68kcpu);
- UINT32 src = m68ki_read_16((mc68kcpu), ea);
- UINT32 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);
-
- m68ki_write_16((mc68kcpu), ea, (mc68kcpu)->not_z_flag);
-}
-
-
-void m68000_base_device_ops::m68k_op_neg_16_aw(m68000_base_device* mc68kcpu)
-{
- UINT32 ea = EA_AW_16(mc68kcpu);
- UINT32 src = m68ki_read_16((mc68kcpu), ea);
- UINT32 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);
-
- m68ki_write_16((mc68kcpu), ea, (mc68kcpu)->not_z_flag);
-}
-
-
-void m68000_base_device_ops::m68k_op_neg_16_al(m68000_base_device* mc68kcpu)
-{
- UINT32 ea = EA_AL_16(mc68kcpu);
- UINT32 src = m68ki_read_16((mc68kcpu), ea);
- UINT32 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);
-
- m68ki_write_16((mc68kcpu), ea, (mc68kcpu)->not_z_flag);
-}
-
-
-void m68000_base_device_ops::m68k_op_neg_32_d(m68000_base_device* mc68kcpu)
-{
- UINT32* r_dst = &DY(mc68kcpu);
- UINT32 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);
-
- *r_dst = (mc68kcpu)->not_z_flag;
-}
-
-
-void m68000_base_device_ops::m68k_op_neg_32_ai(m68000_base_device* mc68kcpu)
-{
- UINT32 ea = EA_AY_AI_32(mc68kcpu);
- UINT32 src = m68ki_read_32((mc68kcpu), ea);
- UINT32 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);
-
- m68ki_write_32((mc68kcpu), ea, (mc68kcpu)->not_z_flag);
-}
-
-
-void m68000_base_device_ops::m68k_op_neg_32_pi(m68000_base_device* mc68kcpu)
-{
- UINT32 ea = EA_AY_PI_32(mc68kcpu);
- UINT32 src = m68ki_read_32((mc68kcpu), ea);
- UINT32 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);
-
- m68ki_write_32((mc68kcpu), ea, (mc68kcpu)->not_z_flag);
-}
-
-
-void m68000_base_device_ops::m68k_op_neg_32_pd(m68000_base_device* mc68kcpu)
-{
- UINT32 ea = EA_AY_PD_32(mc68kcpu);
- UINT32 src = m68ki_read_32((mc68kcpu), ea);
- UINT32 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);
-
- m68ki_write_32((mc68kcpu), ea, (mc68kcpu)->not_z_flag);
-}
-
-
-void m68000_base_device_ops::m68k_op_neg_32_di(m68000_base_device* mc68kcpu)
-{
- UINT32 ea = EA_AY_DI_32(mc68kcpu);
- UINT32 src = m68ki_read_32((mc68kcpu), ea);
- UINT32 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);
-
- m68ki_write_32((mc68kcpu), ea, (mc68kcpu)->not_z_flag);
-}
-
-
-void m68000_base_device_ops::m68k_op_neg_32_ix(m68000_base_device* mc68kcpu)
-{
- UINT32 ea = EA_AY_IX_32(mc68kcpu);
- UINT32 src = m68ki_read_32((mc68kcpu), ea);
- UINT32 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);
-
- m68ki_write_32((mc68kcpu), ea, (mc68kcpu)->not_z_flag);
-}
-
-
-void m68000_base_device_ops::m68k_op_neg_32_aw(m68000_base_device* mc68kcpu)
-{
- UINT32 ea = EA_AW_32(mc68kcpu);
- UINT32 src = m68ki_read_32((mc68kcpu), ea);
- UINT32 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);
-
- m68ki_write_32((mc68kcpu), ea, (mc68kcpu)->not_z_flag);
-}
-
-
-void m68000_base_device_ops::m68k_op_neg_32_al(m68000_base_device* mc68kcpu)
-{
- UINT32 ea = EA_AL_32(mc68kcpu);
- UINT32 src = m68ki_read_32((mc68kcpu), ea);
- UINT32 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);
-
- m68ki_write_32((mc68kcpu), ea, (mc68kcpu)->not_z_flag);
-}
-
-
-void m68000_base_device_ops::m68k_op_negx_8_d(m68000_base_device* mc68kcpu)
-{
- UINT32* r_dst = &DY(mc68kcpu);
- UINT32 res = 0 - MASK_OUT_ABOVE_8(*r_dst) - XFLAG_AS_1(mc68kcpu);
-
- (mc68kcpu)->n_flag = NFLAG_8(res);
- (mc68kcpu)->x_flag = (mc68kcpu)->c_flag = CFLAG_8(res);
- (mc68kcpu)->v_flag = *r_dst & res;
-
- res = MASK_OUT_ABOVE_8(res);
- (mc68kcpu)->not_z_flag |= res;
-
- *r_dst = MASK_OUT_BELOW_8(*r_dst) | res;
-}
-
-
-void m68000_base_device_ops::m68k_op_negx_8_ai(m68000_base_device* mc68kcpu)
-{
- UINT32 ea = EA_AY_AI_8(mc68kcpu);
- UINT32 src = m68ki_read_8((mc68kcpu), ea);
- UINT32 res = 0 - src - XFLAG_AS_1(mc68kcpu);
-
- (mc68kcpu)->n_flag = NFLAG_8(res);
- (mc68kcpu)->x_flag = (mc68kcpu)->c_flag = CFLAG_8(res);
- (mc68kcpu)->v_flag = src & res;
-
- res = MASK_OUT_ABOVE_8(res);
- (mc68kcpu)->not_z_flag |= res;
-
- m68ki_write_8((mc68kcpu), ea, res);
-}
-
-
-void m68000_base_device_ops::m68k_op_negx_8_pi(m68000_base_device* mc68kcpu)
-{
- UINT32 ea = EA_AY_PI_8(mc68kcpu);
- UINT32 src = m68ki_read_8((mc68kcpu), ea);
- UINT32 res = 0 - src - XFLAG_AS_1(mc68kcpu);
-
- (mc68kcpu)->n_flag = NFLAG_8(res);
- (mc68kcpu)->x_flag = (mc68kcpu)->c_flag = CFLAG_8(res);
- (mc68kcpu)->v_flag = src & res;
-
- res = MASK_OUT_ABOVE_8(res);
- (mc68kcpu)->not_z_flag |= res;
-
- m68ki_write_8((mc68kcpu), ea, res);
-}
-
-
-void m68000_base_device_ops::m68k_op_negx_8_pi7(m68000_base_device* mc68kcpu)
-{
- UINT32 ea = EA_A7_PI_8(mc68kcpu);
- UINT32 src = m68ki_read_8((mc68kcpu), ea);
- UINT32 res = 0 - src - XFLAG_AS_1(mc68kcpu);
-
- (mc68kcpu)->n_flag = NFLAG_8(res);
- (mc68kcpu)->x_flag = (mc68kcpu)->c_flag = CFLAG_8(res);
- (mc68kcpu)->v_flag = src & res;
-
- res = MASK_OUT_ABOVE_8(res);
- (mc68kcpu)->not_z_flag |= res;
-
- m68ki_write_8((mc68kcpu), ea, res);
-}
-
-
-void m68000_base_device_ops::m68k_op_negx_8_pd(m68000_base_device* mc68kcpu)
-{
- UINT32 ea = EA_AY_PD_8(mc68kcpu);
- UINT32 src = m68ki_read_8((mc68kcpu), ea);
- UINT32 res = 0 - src - XFLAG_AS_1(mc68kcpu);
-
- (mc68kcpu)->n_flag = NFLAG_8(res);
- (mc68kcpu)->x_flag = (mc68kcpu)->c_flag = CFLAG_8(res);
- (mc68kcpu)->v_flag = src & res;
-
- res = MASK_OUT_ABOVE_8(res);
- (mc68kcpu)->not_z_flag |= res;
-
- m68ki_write_8((mc68kcpu), ea, res);
-}
-
-
-void m68000_base_device_ops::m68k_op_negx_8_pd7(m68000_base_device* mc68kcpu)
-{
- UINT32 ea = EA_A7_PD_8(mc68kcpu);
- UINT32 src = m68ki_read_8((mc68kcpu), ea);
- UINT32 res = 0 - src - XFLAG_AS_1(mc68kcpu);
-
- (mc68kcpu)->n_flag = NFLAG_8(res);
- (mc68kcpu)->x_flag = (mc68kcpu)->c_flag = CFLAG_8(res);
- (mc68kcpu)->v_flag = src & res;
-
- res = MASK_OUT_ABOVE_8(res);
- (mc68kcpu)->not_z_flag |= res;
-
- m68ki_write_8((mc68kcpu), ea, res);
-}
-
-
-void m68000_base_device_ops::m68k_op_negx_8_di(m68000_base_device* mc68kcpu)
-{
- UINT32 ea = EA_AY_DI_8(mc68kcpu);
- UINT32 src = m68ki_read_8((mc68kcpu), ea);
- UINT32 res = 0 - src - XFLAG_AS_1(mc68kcpu);
-
- (mc68kcpu)->n_flag = NFLAG_8(res);
- (mc68kcpu)->x_flag = (mc68kcpu)->c_flag = CFLAG_8(res);
- (mc68kcpu)->v_flag = src & res;
-
- res = MASK_OUT_ABOVE_8(res);
- (mc68kcpu)->not_z_flag |= res;
-
- m68ki_write_8((mc68kcpu), ea, res);
-}
-
-
-void m68000_base_device_ops::m68k_op_negx_8_ix(m68000_base_device* mc68kcpu)
-{
- UINT32 ea = EA_AY_IX_8(mc68kcpu);
- UINT32 src = m68ki_read_8((mc68kcpu), ea);
- UINT32 res = 0 - src - XFLAG_AS_1(mc68kcpu);
-
- (mc68kcpu)->n_flag = NFLAG_8(res);
- (mc68kcpu)->x_flag = (mc68kcpu)->c_flag = CFLAG_8(res);
- (mc68kcpu)->v_flag = src & res;
-
- res = MASK_OUT_ABOVE_8(res);
- (mc68kcpu)->not_z_flag |= res;
-
- m68ki_write_8((mc68kcpu), ea, res);
-}
-
-
-void m68000_base_device_ops::m68k_op_negx_8_aw(m68000_base_device* mc68kcpu)
-{
- UINT32 ea = EA_AW_8(mc68kcpu);
- UINT32 src = m68ki_read_8((mc68kcpu), ea);
- UINT32 res = 0 - src - XFLAG_AS_1(mc68kcpu);
-
- (mc68kcpu)->n_flag = NFLAG_8(res);
- (mc68kcpu)->x_flag = (mc68kcpu)->c_flag = CFLAG_8(res);
- (mc68kcpu)->v_flag = src & res;
-
- res = MASK_OUT_ABOVE_8(res);
- (mc68kcpu)->not_z_flag |= res;
-
- m68ki_write_8((mc68kcpu), ea, res);
-}
-
-
-void m68000_base_device_ops::m68k_op_negx_8_al(m68000_base_device* mc68kcpu)
-{
- UINT32 ea = EA_AL_8(mc68kcpu);
- UINT32 src = m68ki_read_8((mc68kcpu), ea);
- UINT32 res = 0 - src - XFLAG_AS_1(mc68kcpu);
-
- (mc68kcpu)->n_flag = NFLAG_8(res);
- (mc68kcpu)->x_flag = (mc68kcpu)->c_flag = CFLAG_8(res);
- (mc68kcpu)->v_flag = src & res;
-
- res = MASK_OUT_ABOVE_8(res);
- (mc68kcpu)->not_z_flag |= res;
-
- m68ki_write_8((mc68kcpu), ea, res);
-}
-
-
-void m68000_base_device_ops::m68k_op_negx_16_d(m68000_base_device* mc68kcpu)
-{
- UINT32* r_dst = &DY(mc68kcpu);
- UINT32 res = 0 - MASK_OUT_ABOVE_16(*r_dst) - XFLAG_AS_1(mc68kcpu);
-
- (mc68kcpu)->n_flag = NFLAG_16(res);
- (mc68kcpu)->x_flag = (mc68kcpu)->c_flag = CFLAG_16(res);
- (mc68kcpu)->v_flag = (*r_dst & res)>>8;
-
- res = MASK_OUT_ABOVE_16(res);
- (mc68kcpu)->not_z_flag |= res;
-
- *r_dst = MASK_OUT_BELOW_16(*r_dst) | res;
-}
-
-
-void m68000_base_device_ops::m68k_op_negx_16_ai(m68000_base_device* mc68kcpu)
-{
- UINT32 ea = EA_AY_AI_16(mc68kcpu);
- UINT32 src = m68ki_read_16((mc68kcpu), ea);
- UINT32 res = 0 - MASK_OUT_ABOVE_16(src) - XFLAG_AS_1(mc68kcpu);
-
- (mc68kcpu)->n_flag = NFLAG_16(res);
- (mc68kcpu)->x_flag = (mc68kcpu)->c_flag = CFLAG_16(res);
- (mc68kcpu)->v_flag = (src & res)>>8;
-
- res = MASK_OUT_ABOVE_16(res);
- (mc68kcpu)->not_z_flag |= res;
-
- m68ki_write_16((mc68kcpu), ea, res);
-}
-
-
-void m68000_base_device_ops::m68k_op_negx_16_pi(m68000_base_device* mc68kcpu)
-{
- UINT32 ea = EA_AY_PI_16(mc68kcpu);
- UINT32 src = m68ki_read_16((mc68kcpu), ea);
- UINT32 res = 0 - MASK_OUT_ABOVE_16(src) - XFLAG_AS_1(mc68kcpu);
-
- (mc68kcpu)->n_flag = NFLAG_16(res);
- (mc68kcpu)->x_flag = (mc68kcpu)->c_flag = CFLAG_16(res);
- (mc68kcpu)->v_flag = (src & res)>>8;
-
- res = MASK_OUT_ABOVE_16(res);
- (mc68kcpu)->not_z_flag |= res;
-
- m68ki_write_16((mc68kcpu), ea, res);
-}
-
-
-void m68000_base_device_ops::m68k_op_negx_16_pd(m68000_base_device* mc68kcpu)
-{
- UINT32 ea = EA_AY_PD_16(mc68kcpu);
- UINT32 src = m68ki_read_16((mc68kcpu), ea);
- UINT32 res = 0 - MASK_OUT_ABOVE_16(src) - XFLAG_AS_1(mc68kcpu);
-
- (mc68kcpu)->n_flag = NFLAG_16(res);
- (mc68kcpu)->x_flag = (mc68kcpu)->c_flag = CFLAG_16(res);
- (mc68kcpu)->v_flag = (src & res)>>8;
-
- res = MASK_OUT_ABOVE_16(res);
- (mc68kcpu)->not_z_flag |= res;
-
- m68ki_write_16((mc68kcpu), ea, res);
-}
-
-
-void m68000_base_device_ops::m68k_op_negx_16_di(m68000_base_device* mc68kcpu)
-{
- UINT32 ea = EA_AY_DI_16(mc68kcpu);
- UINT32 src = m68ki_read_16((mc68kcpu), ea);
- UINT32 res = 0 - MASK_OUT_ABOVE_16(src) - XFLAG_AS_1(mc68kcpu);
-
- (mc68kcpu)->n_flag = NFLAG_16(res);
- (mc68kcpu)->x_flag = (mc68kcpu)->c_flag = CFLAG_16(res);
- (mc68kcpu)->v_flag = (src & res)>>8;
-
- res = MASK_OUT_ABOVE_16(res);
- (mc68kcpu)->not_z_flag |= res;
-
- m68ki_write_16((mc68kcpu), ea, res);
-}
-
-
-void m68000_base_device_ops::m68k_op_negx_16_ix(m68000_base_device* mc68kcpu)
-{
- UINT32 ea = EA_AY_IX_16(mc68kcpu);
- UINT32 src = m68ki_read_16((mc68kcpu), ea);
- UINT32 res = 0 - MASK_OUT_ABOVE_16(src) - XFLAG_AS_1(mc68kcpu);
-
- (mc68kcpu)->n_flag = NFLAG_16(res);
- (mc68kcpu)->x_flag = (mc68kcpu)->c_flag = CFLAG_16(res);
- (mc68kcpu)->v_flag = (src & res)>>8;
-
- res = MASK_OUT_ABOVE_16(res);
- (mc68kcpu)->not_z_flag |= res;
-
- m68ki_write_16((mc68kcpu), ea, res);
-}
-
-
-void m68000_base_device_ops::m68k_op_negx_16_aw(m68000_base_device* mc68kcpu)
-{
- UINT32 ea = EA_AW_16(mc68kcpu);
- UINT32 src = m68ki_read_16((mc68kcpu), ea);
- UINT32 res = 0 - MASK_OUT_ABOVE_16(src) - XFLAG_AS_1(mc68kcpu);
-
- (mc68kcpu)->n_flag = NFLAG_16(res);
- (mc68kcpu)->x_flag = (mc68kcpu)->c_flag = CFLAG_16(res);
- (mc68kcpu)->v_flag = (src & res)>>8;
-
- res = MASK_OUT_ABOVE_16(res);
- (mc68kcpu)->not_z_flag |= res;
-
- m68ki_write_16((mc68kcpu), ea, res);
-}
-
-
-void m68000_base_device_ops::m68k_op_negx_16_al(m68000_base_device* mc68kcpu)
-{
- UINT32 ea = EA_AL_16(mc68kcpu);
- UINT32 src = m68ki_read_16((mc68kcpu), ea);
- UINT32 res = 0 - MASK_OUT_ABOVE_16(src) - XFLAG_AS_1(mc68kcpu);
-
- (mc68kcpu)->n_flag = NFLAG_16(res);
- (mc68kcpu)->x_flag = (mc68kcpu)->c_flag = CFLAG_16(res);
- (mc68kcpu)->v_flag = (src & res)>>8;
-
- res = MASK_OUT_ABOVE_16(res);
- (mc68kcpu)->not_z_flag |= res;
-
- m68ki_write_16((mc68kcpu), ea, res);
-}
-
-
-void m68000_base_device_ops::m68k_op_negx_32_d(m68000_base_device* mc68kcpu)
-{
- UINT32* r_dst = &DY(mc68kcpu);
- UINT32 res = 0 - MASK_OUT_ABOVE_32(*r_dst) - XFLAG_AS_1(mc68kcpu);
-
- (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;
-
- res = MASK_OUT_ABOVE_32(res);
- (mc68kcpu)->not_z_flag |= res;
-
- *r_dst = res;
-}
-
-
-void m68000_base_device_ops::m68k_op_negx_32_ai(m68000_base_device* mc68kcpu)
-{
- UINT32 ea = EA_AY_AI_32(mc68kcpu);
- UINT32 src = m68ki_read_32((mc68kcpu), ea);
- UINT32 res = 0 - MASK_OUT_ABOVE_32(src) - XFLAG_AS_1(mc68kcpu);
-
- (mc68kcpu)->n_flag = NFLAG_32(res);
- (mc68kcpu)->x_flag = (mc68kcpu)->c_flag = CFLAG_SUB_32(src, 0, res);
- (mc68kcpu)->v_flag = (src & res)>>24;
-
- res = MASK_OUT_ABOVE_32(res);
- (mc68kcpu)->not_z_flag |= res;
-
- m68ki_write_32((mc68kcpu), ea, res);
-}
-
-
-void m68000_base_device_ops::m68k_op_negx_32_pi(m68000_base_device* mc68kcpu)
-{
- UINT32 ea = EA_AY_PI_32(mc68kcpu);
- UINT32 src = m68ki_read_32((mc68kcpu), ea);
- UINT32 res = 0 - MASK_OUT_ABOVE_32(src) - XFLAG_AS_1(mc68kcpu);
-
- (mc68kcpu)->n_flag = NFLAG_32(res);
- (mc68kcpu)->x_flag = (mc68kcpu)->c_flag = CFLAG_SUB_32(src, 0, res);
- (mc68kcpu)->v_flag = (src & res)>>24;
-
- res = MASK_OUT_ABOVE_32(res);
- (mc68kcpu)->not_z_flag |= res;
-
- m68ki_write_32((mc68kcpu), ea, res);
-}
-
-
-void m68000_base_device_ops::m68k_op_negx_32_pd(m68000_base_device* mc68kcpu)
-{
- UINT32 ea = EA_AY_PD_32(mc68kcpu);
- UINT32 src = m68ki_read_32((mc68kcpu), ea);
- UINT32 res = 0 - MASK_OUT_ABOVE_32(src) - XFLAG_AS_1(mc68kcpu);
-
- (mc68kcpu)->n_flag = NFLAG_32(res);
- (mc68kcpu)->x_flag = (mc68kcpu)->c_flag = CFLAG_SUB_32(src, 0, res);
- (mc68kcpu)->v_flag = (src & res)>>24;
-
- res = MASK_OUT_ABOVE_32(res);
- (mc68kcpu)->not_z_flag |= res;
-
- m68ki_write_32((mc68kcpu), ea, res);
-}
-
-
-void m68000_base_device_ops::m68k_op_negx_32_di(m68000_base_device* mc68kcpu)
-{
- UINT32 ea = EA_AY_DI_32(mc68kcpu);
- UINT32 src = m68ki_read_32((mc68kcpu), ea);
- UINT32 res = 0 - MASK_OUT_ABOVE_32(src) - XFLAG_AS_1(mc68kcpu);
-
- (mc68kcpu)->n_flag = NFLAG_32(res);
- (mc68kcpu)->x_flag = (mc68kcpu)->c_flag = CFLAG_SUB_32(src, 0, res);
- (mc68kcpu)->v_flag = (src & res)>>24;
-
- res = MASK_OUT_ABOVE_32(res);
- (mc68kcpu)->not_z_flag |= res;
-
- m68ki_write_32((mc68kcpu), ea, res);
-}
-
-
-void m68000_base_device_ops::m68k_op_negx_32_ix(m68000_base_device* mc68kcpu)
-{
- UINT32 ea = EA_AY_IX_32(mc68kcpu);
- UINT32 src = m68ki_read_32((mc68kcpu), ea);
- UINT32 res = 0 - MASK_OUT_ABOVE_32(src) - XFLAG_AS_1(mc68kcpu);
-
- (mc68kcpu)->n_flag = NFLAG_32(res);
- (mc68kcpu)->x_flag = (mc68kcpu)->c_flag = CFLAG_SUB_32(src, 0, res);
- (mc68kcpu)->v_flag = (src & res)>>24;
-
- res = MASK_OUT_ABOVE_32(res);
- (mc68kcpu)->not_z_flag |= res;
-
- m68ki_write_32((mc68kcpu), ea, res);
-}
-
-
-void m68000_base_device_ops::m68k_op_negx_32_aw(m68000_base_device* mc68kcpu)
-{
- UINT32 ea = EA_AW_32(mc68kcpu);
- UINT32 src = m68ki_read_32((mc68kcpu), ea);
- UINT32 res = 0 - MASK_OUT_ABOVE_32(src) - XFLAG_AS_1(mc68kcpu);
-
- (mc68kcpu)->n_flag = NFLAG_32(res);
- (mc68kcpu)->x_flag = (mc68kcpu)->c_flag = CFLAG_SUB_32(src, 0, res);
- (mc68kcpu)->v_flag = (src & res)>>24;
-
- res = MASK_OUT_ABOVE_32(res);
- (mc68kcpu)->not_z_flag |= res;
-
- m68ki_write_32((mc68kcpu), ea, res);
-}
-
-
-void m68000_base_device_ops::m68k_op_negx_32_al(m68000_base_device* mc68kcpu)
-{
- UINT32 ea = EA_AL_32(mc68kcpu);
- UINT32 src = m68ki_read_32((mc68kcpu), ea);
- UINT32 res = 0 - MASK_OUT_ABOVE_32(src) - XFLAG_AS_1(mc68kcpu);
-
- (mc68kcpu)->n_flag = NFLAG_32(res);
- (mc68kcpu)->x_flag = (mc68kcpu)->c_flag = CFLAG_SUB_32(src, 0, res);
- (mc68kcpu)->v_flag = (src & res)>>24;
-
- res = MASK_OUT_ABOVE_32(res);
- (mc68kcpu)->not_z_flag |= res;
-
- m68ki_write_32((mc68kcpu), ea, res);
-}
-
-
-void m68000_base_device_ops::m68k_op_nop(m68000_base_device* mc68kcpu)
-{
- m68ki_trace_t0(mc68kcpu); /* auto-disable (see m68kcpu.h) */
-}
-
-
-void m68000_base_device_ops::m68k_op_not_8_d(m68000_base_device* mc68kcpu)
-{
- UINT32* r_dst = &DY(mc68kcpu);
- UINT32 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;
-}
-
-
-void m68000_base_device_ops::m68k_op_not_8_ai(m68000_base_device* mc68kcpu)
-{
- UINT32 ea = EA_AY_AI_8(mc68kcpu);
- UINT32 res = MASK_OUT_ABOVE_8(~m68ki_read_8((mc68kcpu), ea));
-
- m68ki_write_8((mc68kcpu), ea, res);
-
- (mc68kcpu)->n_flag = NFLAG_8(res);
- (mc68kcpu)->not_z_flag = res;
- (mc68kcpu)->c_flag = CFLAG_CLEAR;
- (mc68kcpu)->v_flag = VFLAG_CLEAR;
-}
-
-
-void m68000_base_device_ops::m68k_op_not_8_pi(m68000_base_device* mc68kcpu)
-{
- UINT32 ea = EA_AY_PI_8(mc68kcpu);
- UINT32 res = MASK_OUT_ABOVE_8(~m68ki_read_8((mc68kcpu), ea));
-
- m68ki_write_8((mc68kcpu), ea, res);
-
- (mc68kcpu)->n_flag = NFLAG_8(res);
- (mc68kcpu)->not_z_flag = res;
- (mc68kcpu)->c_flag = CFLAG_CLEAR;
- (mc68kcpu)->v_flag = VFLAG_CLEAR;
-}
-
-
-void m68000_base_device_ops::m68k_op_not_8_pi7(m68000_base_device* mc68kcpu)
-{
- UINT32 ea = EA_A7_PI_8(mc68kcpu);
- UINT32 res = MASK_OUT_ABOVE_8(~m68ki_read_8((mc68kcpu), ea));
-
- m68ki_write_8((mc68kcpu), ea, res);
-
- (mc68kcpu)->n_flag = NFLAG_8(res);
- (mc68kcpu)->not_z_flag = res;
- (mc68kcpu)->c_flag = CFLAG_CLEAR;
- (mc68kcpu)->v_flag = VFLAG_CLEAR;
-}
-
-
-void m68000_base_device_ops::m68k_op_not_8_pd(m68000_base_device* mc68kcpu)
-{
- UINT32 ea = EA_AY_PD_8(mc68kcpu);
- UINT32 res = MASK_OUT_ABOVE_8(~m68ki_read_8((mc68kcpu), ea));
-
- m68ki_write_8((mc68kcpu), ea, res);
-
- (mc68kcpu)->n_flag = NFLAG_8(res);
- (mc68kcpu)->not_z_flag = res;
- (mc68kcpu)->c_flag = CFLAG_CLEAR;
- (mc68kcpu)->v_flag = VFLAG_CLEAR;
-}
-
-
-void m68000_base_device_ops::m68k_op_not_8_pd7(m68000_base_device* mc68kcpu)
-{
- UINT32 ea = EA_A7_PD_8(mc68kcpu);
- UINT32 res = MASK_OUT_ABOVE_8(~m68ki_read_8((mc68kcpu), ea));
-
- m68ki_write_8((mc68kcpu), ea, res);
-
- (mc68kcpu)->n_flag = NFLAG_8(res);
- (mc68kcpu)->not_z_flag = res;
- (mc68kcpu)->c_flag = CFLAG_CLEAR;
- (mc68kcpu)->v_flag = VFLAG_CLEAR;
-}
-
-
-void m68000_base_device_ops::m68k_op_not_8_di(m68000_base_device* mc68kcpu)
-{
- UINT32 ea = EA_AY_DI_8(mc68kcpu);
- UINT32 res = MASK_OUT_ABOVE_8(~m68ki_read_8((mc68kcpu), ea));
-
- m68ki_write_8((mc68kcpu), ea, res);
-
- (mc68kcpu)->n_flag = NFLAG_8(res);
- (mc68kcpu)->not_z_flag = res;
- (mc68kcpu)->c_flag = CFLAG_CLEAR;
- (mc68kcpu)->v_flag = VFLAG_CLEAR;
-}
-
-
-void m68000_base_device_ops::m68k_op_not_8_ix(m68000_base_device* mc68kcpu)
-{
- UINT32 ea = EA_AY_IX_8(mc68kcpu);
- UINT32 res = MASK_OUT_ABOVE_8(~m68ki_read_8((mc68kcpu), ea));
-
- m68ki_write_8((mc68kcpu), ea, res);
-
- (mc68kcpu)->n_flag = NFLAG_8(res);
- (mc68kcpu)->not_z_flag = res;
- (mc68kcpu)->c_flag = CFLAG_CLEAR;
- (mc68kcpu)->v_flag = VFLAG_CLEAR;
-}
-
-
-void m68000_base_device_ops::m68k_op_not_8_aw(m68000_base_device* mc68kcpu)
-{
- UINT32 ea = EA_AW_8(mc68kcpu);
- UINT32 res = MASK_OUT_ABOVE_8(~m68ki_read_8((mc68kcpu), ea));
-
- m68ki_write_8((mc68kcpu), ea, res);
-
- (mc68kcpu)->n_flag = NFLAG_8(res);
- (mc68kcpu)->not_z_flag = res;
- (mc68kcpu)->c_flag = CFLAG_CLEAR;
- (mc68kcpu)->v_flag = VFLAG_CLEAR;
-}
-
-
-void m68000_base_device_ops::m68k_op_not_8_al(m68000_base_device* mc68kcpu)
-{
- UINT32 ea = EA_AL_8(mc68kcpu);
- UINT32 res = MASK_OUT_ABOVE_8(~m68ki_read_8((mc68kcpu), ea));
-
- m68ki_write_8((mc68kcpu), ea, res);
-
- (mc68kcpu)->n_flag = NFLAG_8(res);
- (mc68kcpu)->not_z_flag = res;
- (mc68kcpu)->c_flag = CFLAG_CLEAR;
- (mc68kcpu)->v_flag = VFLAG_CLEAR;
-}
-
-
-void m68000_base_device_ops::m68k_op_not_16_d(m68000_base_device* mc68kcpu)
-{
- UINT32* r_dst = &DY(mc68kcpu);
- UINT32 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;
-}
-
-
-void m68000_base_device_ops::m68k_op_not_16_ai(m68000_base_device* mc68kcpu)
-{
- UINT32 ea = EA_AY_AI_16(mc68kcpu);
- UINT32 res = MASK_OUT_ABOVE_16(~m68ki_read_16((mc68kcpu), ea));
-
- m68ki_write_16((mc68kcpu), ea, res);
-
- (mc68kcpu)->n_flag = NFLAG_16(res);
- (mc68kcpu)->not_z_flag = res;
- (mc68kcpu)->c_flag = CFLAG_CLEAR;
- (mc68kcpu)->v_flag = VFLAG_CLEAR;
-}
-
-
-void m68000_base_device_ops::m68k_op_not_16_pi(m68000_base_device* mc68kcpu)
-{
- UINT32 ea = EA_AY_PI_16(mc68kcpu);
- UINT32 res = MASK_OUT_ABOVE_16(~m68ki_read_16((mc68kcpu), ea));
-
- m68ki_write_16((mc68kcpu), ea, res);
-
- (mc68kcpu)->n_flag = NFLAG_16(res);
- (mc68kcpu)->not_z_flag = res;
- (mc68kcpu)->c_flag = CFLAG_CLEAR;
- (mc68kcpu)->v_flag = VFLAG_CLEAR;
-}
-
-
-void m68000_base_device_ops::m68k_op_not_16_pd(m68000_base_device* mc68kcpu)
-{
- UINT32 ea = EA_AY_PD_16(mc68kcpu);
- UINT32 res = MASK_OUT_ABOVE_16(~m68ki_read_16((mc68kcpu), ea));
-
- m68ki_write_16((mc68kcpu), ea, res);
-
- (mc68kcpu)->n_flag = NFLAG_16(res);
- (mc68kcpu)->not_z_flag = res;
- (mc68kcpu)->c_flag = CFLAG_CLEAR;
- (mc68kcpu)->v_flag = VFLAG_CLEAR;
-}
-
-
-void m68000_base_device_ops::m68k_op_not_16_di(m68000_base_device* mc68kcpu)
-{
- UINT32 ea = EA_AY_DI_16(mc68kcpu);
- UINT32 res = MASK_OUT_ABOVE_16(~m68ki_read_16((mc68kcpu), ea));
-
- m68ki_write_16((mc68kcpu), ea, res);
-
- (mc68kcpu)->n_flag = NFLAG_16(res);
- (mc68kcpu)->not_z_flag = res;
- (mc68kcpu)->c_flag = CFLAG_CLEAR;
- (mc68kcpu)->v_flag = VFLAG_CLEAR;
-}
-
-
-void m68000_base_device_ops::m68k_op_not_16_ix(m68000_base_device* mc68kcpu)
-{
- UINT32 ea = EA_AY_IX_16(mc68kcpu);
- UINT32 res = MASK_OUT_ABOVE_16(~m68ki_read_16((mc68kcpu), ea));
-
- m68ki_write_16((mc68kcpu), ea, res);
-
- (mc68kcpu)->n_flag = NFLAG_16(res);
- (mc68kcpu)->not_z_flag = res;
- (mc68kcpu)->c_flag = CFLAG_CLEAR;
- (mc68kcpu)->v_flag = VFLAG_CLEAR;
-}
-
-
-void m68000_base_device_ops::m68k_op_not_16_aw(m68000_base_device* mc68kcpu)
-{
- UINT32 ea = EA_AW_16(mc68kcpu);
- UINT32 res = MASK_OUT_ABOVE_16(~m68ki_read_16((mc68kcpu), ea));
-
- m68ki_write_16((mc68kcpu), ea, res);
-
- (mc68kcpu)->n_flag = NFLAG_16(res);
- (mc68kcpu)->not_z_flag = res;
- (mc68kcpu)->c_flag = CFLAG_CLEAR;
- (mc68kcpu)->v_flag = VFLAG_CLEAR;
-}
-
-
-void m68000_base_device_ops::m68k_op_not_16_al(m68000_base_device* mc68kcpu)
-{
- UINT32 ea = EA_AL_16(mc68kcpu);
- UINT32 res = MASK_OUT_ABOVE_16(~m68ki_read_16((mc68kcpu), ea));
-
- m68ki_write_16((mc68kcpu), ea, res);
-
- (mc68kcpu)->n_flag = NFLAG_16(res);
- (mc68kcpu)->not_z_flag = res;
- (mc68kcpu)->c_flag = CFLAG_CLEAR;
- (mc68kcpu)->v_flag = VFLAG_CLEAR;
-}
-
-
-void m68000_base_device_ops::m68k_op_not_32_d(m68000_base_device* mc68kcpu)
-{
- UINT32* r_dst = &DY(mc68kcpu);
- UINT32 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;
-}
-
-
-void m68000_base_device_ops::m68k_op_not_32_ai(m68000_base_device* mc68kcpu)
-{
- UINT32 ea = EA_AY_AI_32(mc68kcpu);
- UINT32 res = MASK_OUT_ABOVE_32(~m68ki_read_32((mc68kcpu), ea));
-
- m68ki_write_32((mc68kcpu), ea, res);
-
- (mc68kcpu)->n_flag = NFLAG_32(res);
- (mc68kcpu)->not_z_flag = res;
- (mc68kcpu)->c_flag = CFLAG_CLEAR;
- (mc68kcpu)->v_flag = VFLAG_CLEAR;
-}
-
-
-void m68000_base_device_ops::m68k_op_not_32_pi(m68000_base_device* mc68kcpu)
-{
- UINT32 ea = EA_AY_PI_32(mc68kcpu);
- UINT32 res = MASK_OUT_ABOVE_32(~m68ki_read_32((mc68kcpu), ea));
-
- m68ki_write_32((mc68kcpu), ea, res);
-
- (mc68kcpu)->n_flag = NFLAG_32(res);
- (mc68kcpu)->not_z_flag = res;
- (mc68kcpu)->c_flag = CFLAG_CLEAR;
- (mc68kcpu)->v_flag = VFLAG_CLEAR;
-}
-
-
-void m68000_base_device_ops::m68k_op_not_32_pd(m68000_base_device* mc68kcpu)
-{
- UINT32 ea = EA_AY_PD_32(mc68kcpu);
- UINT32 res = MASK_OUT_ABOVE_32(~m68ki_read_32((mc68kcpu), ea));
-
- m68ki_write_32((mc68kcpu), ea, res);
-
- (mc68kcpu)->n_flag = NFLAG_32(res);
- (mc68kcpu)->not_z_flag = res;
- (mc68kcpu)->c_flag = CFLAG_CLEAR;
- (mc68kcpu)->v_flag = VFLAG_CLEAR;
-}
-
-
-void m68000_base_device_ops::m68k_op_not_32_di(m68000_base_device* mc68kcpu)
-{
- UINT32 ea = EA_AY_DI_32(mc68kcpu);
- UINT32 res = MASK_OUT_ABOVE_32(~m68ki_read_32((mc68kcpu), ea));
-
- m68ki_write_32((mc68kcpu), ea, res);
-
- (mc68kcpu)->n_flag = NFLAG_32(res);
- (mc68kcpu)->not_z_flag = res;
- (mc68kcpu)->c_flag = CFLAG_CLEAR;
- (mc68kcpu)->v_flag = VFLAG_CLEAR;
-}
-
-
-void m68000_base_device_ops::m68k_op_not_32_ix(m68000_base_device* mc68kcpu)
-{
- UINT32 ea = EA_AY_IX_32(mc68kcpu);
- UINT32 res = MASK_OUT_ABOVE_32(~m68ki_read_32((mc68kcpu), ea));
-
- m68ki_write_32((mc68kcpu), ea, res);
-
- (mc68kcpu)->n_flag = NFLAG_32(res);
- (mc68kcpu)->not_z_flag = res;
- (mc68kcpu)->c_flag = CFLAG_CLEAR;
- (mc68kcpu)->v_flag = VFLAG_CLEAR;
-}
-
-
-void m68000_base_device_ops::m68k_op_not_32_aw(m68000_base_device* mc68kcpu)
-{
- UINT32 ea = EA_AW_32(mc68kcpu);
- UINT32 res = MASK_OUT_ABOVE_32(~m68ki_read_32((mc68kcpu), ea));
-
- m68ki_write_32((mc68kcpu), ea, res);
-
- (mc68kcpu)->n_flag = NFLAG_32(res);
- (mc68kcpu)->not_z_flag = res;
- (mc68kcpu)->c_flag = CFLAG_CLEAR;
- (mc68kcpu)->v_flag = VFLAG_CLEAR;
-}
-
-
-void m68000_base_device_ops::m68k_op_not_32_al(m68000_base_device* mc68kcpu)
-{
- UINT32 ea = EA_AL_32(mc68kcpu);
- UINT32 res = MASK_OUT_ABOVE_32(~m68ki_read_32((mc68kcpu), ea));
-
- m68ki_write_32((mc68kcpu), ea, res);
-
- (mc68kcpu)->n_flag = NFLAG_32(res);
- (mc68kcpu)->not_z_flag = res;
- (mc68kcpu)->c_flag = CFLAG_CLEAR;
- (mc68kcpu)->v_flag = VFLAG_CLEAR;
-}
-
-
-void m68000_base_device_ops::m68k_op_or_8_er_d(m68000_base_device* mc68kcpu)
-{
- UINT32 res = MASK_OUT_ABOVE_8((DX(mc68kcpu) |= MASK_OUT_ABOVE_8(DY(mc68kcpu))));
-
- (mc68kcpu)->n_flag = NFLAG_8(res);
- (mc68kcpu)->not_z_flag = res;
- (mc68kcpu)->c_flag = CFLAG_CLEAR;
- (mc68kcpu)->v_flag = VFLAG_CLEAR;
-}
-
-
-void m68000_base_device_ops::m68k_op_or_8_er_ai(m68000_base_device* mc68kcpu)
-{
- UINT32 res = MASK_OUT_ABOVE_8((DX(mc68kcpu) |= OPER_AY_AI_8(mc68kcpu)));
-
- (mc68kcpu)->n_flag = NFLAG_8(res);
- (mc68kcpu)->not_z_flag = res;
- (mc68kcpu)->c_flag = CFLAG_CLEAR;
- (mc68kcpu)->v_flag = VFLAG_CLEAR;
-}
-
-
-void m68000_base_device_ops::m68k_op_or_8_er_pi(m68000_base_device* mc68kcpu)
-{
- UINT32 res = MASK_OUT_ABOVE_8((DX(mc68kcpu) |= OPER_AY_PI_8(mc68kcpu)));
-
- (mc68kcpu)->n_flag = NFLAG_8(res);
- (mc68kcpu)->not_z_flag = res;
- (mc68kcpu)->c_flag = CFLAG_CLEAR;
- (mc68kcpu)->v_flag = VFLAG_CLEAR;
-}
-
-
-void m68000_base_device_ops::m68k_op_or_8_er_pi7(m68000_base_device* mc68kcpu)
-{
- UINT32 res = MASK_OUT_ABOVE_8((DX(mc68kcpu) |= OPER_A7_PI_8(mc68kcpu)));
-
- (mc68kcpu)->n_flag = NFLAG_8(res);
- (mc68kcpu)->not_z_flag = res;
- (mc68kcpu)->c_flag = CFLAG_CLEAR;
- (mc68kcpu)->v_flag = VFLAG_CLEAR;
-}
-
-
-void m68000_base_device_ops::m68k_op_or_8_er_pd(m68000_base_device* mc68kcpu)
-{
- UINT32 res = MASK_OUT_ABOVE_8((DX(mc68kcpu) |= OPER_AY_PD_8(mc68kcpu)));
-
- (mc68kcpu)->n_flag = NFLAG_8(res);
- (mc68kcpu)->not_z_flag = res;
- (mc68kcpu)->c_flag = CFLAG_CLEAR;
- (mc68kcpu)->v_flag = VFLAG_CLEAR;
-}
-
-
-void m68000_base_device_ops::m68k_op_or_8_er_pd7(m68000_base_device* mc68kcpu)
-{
- UINT32 res = MASK_OUT_ABOVE_8((DX(mc68kcpu) |= OPER_A7_PD_8(mc68kcpu)));
-
- (mc68kcpu)->n_flag = NFLAG_8(res);
- (mc68kcpu)->not_z_flag = res;
- (mc68kcpu)->c_flag = CFLAG_CLEAR;
- (mc68kcpu)->v_flag = VFLAG_CLEAR;
-}
-
-
-void m68000_base_device_ops::m68k_op_or_8_er_di(m68000_base_device* mc68kcpu)
-{
- UINT32 res = MASK_OUT_ABOVE_8((DX(mc68kcpu) |= OPER_AY_DI_8(mc68kcpu)));
-
- (mc68kcpu)->n_flag = NFLAG_8(res);
- (mc68kcpu)->not_z_flag = res;
- (mc68kcpu)->c_flag = CFLAG_CLEAR;
- (mc68kcpu)->v_flag = VFLAG_CLEAR;
-}
-
-
-void m68000_base_device_ops::m68k_op_or_8_er_ix(m68000_base_device* mc68kcpu)
-{
- UINT32 res = MASK_OUT_ABOVE_8((DX(mc68kcpu) |= OPER_AY_IX_8(mc68kcpu)));
-
- (mc68kcpu)->n_flag = NFLAG_8(res);
- (mc68kcpu)->not_z_flag = res;
- (mc68kcpu)->c_flag = CFLAG_CLEAR;
- (mc68kcpu)->v_flag = VFLAG_CLEAR;
-}
-
-
-void m68000_base_device_ops::m68k_op_or_8_er_aw(m68000_base_device* mc68kcpu)
-{
- UINT32 res = MASK_OUT_ABOVE_8((DX(mc68kcpu) |= OPER_AW_8(mc68kcpu)));
-
- (mc68kcpu)->n_flag = NFLAG_8(res);
- (mc68kcpu)->not_z_flag = res;
- (mc68kcpu)->c_flag = CFLAG_CLEAR;
- (mc68kcpu)->v_flag = VFLAG_CLEAR;
-}
-
-
-void m68000_base_device_ops::m68k_op_or_8_er_al(m68000_base_device* mc68kcpu)
-{
- UINT32 res = MASK_OUT_ABOVE_8((DX(mc68kcpu) |= OPER_AL_8(mc68kcpu)));
-
- (mc68kcpu)->n_flag = NFLAG_8(res);
- (mc68kcpu)->not_z_flag = res;
- (mc68kcpu)->c_flag = CFLAG_CLEAR;
- (mc68kcpu)->v_flag = VFLAG_CLEAR;
-}
-
-
-void m68000_base_device_ops::m68k_op_or_8_er_pcdi(m68000_base_device* mc68kcpu)
-{
- UINT32 res = MASK_OUT_ABOVE_8((DX(mc68kcpu) |= OPER_PCDI_8(mc68kcpu)));
-
- (mc68kcpu)->n_flag = NFLAG_8(res);
- (mc68kcpu)->not_z_flag = res;
- (mc68kcpu)->c_flag = CFLAG_CLEAR;
- (mc68kcpu)->v_flag = VFLAG_CLEAR;
-}
-
-
-void m68000_base_device_ops::m68k_op_or_8_er_pcix(m68000_base_device* mc68kcpu)
-{
- UINT32 res = MASK_OUT_ABOVE_8((DX(mc68kcpu) |= OPER_PCIX_8(mc68kcpu)));
-
- (mc68kcpu)->n_flag = NFLAG_8(res);
- (mc68kcpu)->not_z_flag = res;
- (mc68kcpu)->c_flag = CFLAG_CLEAR;
- (mc68kcpu)->v_flag = VFLAG_CLEAR;
-}
-
-
-void m68000_base_device_ops::m68k_op_or_8_er_i(m68000_base_device* mc68kcpu)
-{
- UINT32 res = MASK_OUT_ABOVE_8((DX(mc68kcpu) |= OPER_I_8(mc68kcpu)));
-
- (mc68kcpu)->n_flag = NFLAG_8(res);
- (mc68kcpu)->not_z_flag = res;
- (mc68kcpu)->c_flag = CFLAG_CLEAR;
- (mc68kcpu)->v_flag = VFLAG_CLEAR;
-}
-
-
-void m68000_base_device_ops::m68k_op_or_16_er_d(m68000_base_device* mc68kcpu)
-{
- UINT32 res = MASK_OUT_ABOVE_16((DX(mc68kcpu) |= MASK_OUT_ABOVE_16(DY(mc68kcpu))));
-
- (mc68kcpu)->n_flag = NFLAG_16(res);
- (mc68kcpu)->not_z_flag = res;
- (mc68kcpu)->c_flag = CFLAG_CLEAR;
- (mc68kcpu)->v_flag = VFLAG_CLEAR;
-}
-
-
-void m68000_base_device_ops::m68k_op_or_16_er_ai(m68000_base_device* mc68kcpu)
-{
- UINT32 res = MASK_OUT_ABOVE_16((DX(mc68kcpu) |= OPER_AY_AI_16(mc68kcpu)));
-
- (mc68kcpu)->n_flag = NFLAG_16(res);
- (mc68kcpu)->not_z_flag = res;
- (mc68kcpu)->c_flag = CFLAG_CLEAR;
- (mc68kcpu)->v_flag = VFLAG_CLEAR;
-}
-
-
-void m68000_base_device_ops::m68k_op_or_16_er_pi(m68000_base_device* mc68kcpu)
-{
- UINT32 res = MASK_OUT_ABOVE_16((DX(mc68kcpu) |= OPER_AY_PI_16(mc68kcpu)));
-
- (mc68kcpu)->n_flag = NFLAG_16(res);
- (mc68kcpu)->not_z_flag = res;
- (mc68kcpu)->c_flag = CFLAG_CLEAR;
- (mc68kcpu)->v_flag = VFLAG_CLEAR;
-}
-
-
-void m68000_base_device_ops::m68k_op_or_16_er_pd(m68000_base_device* mc68kcpu)
-{
- UINT32 res = MASK_OUT_ABOVE_16((DX(mc68kcpu) |= OPER_AY_PD_16(mc68kcpu)));
-
- (mc68kcpu)->n_flag = NFLAG_16(res);
- (mc68kcpu)->not_z_flag = res;
- (mc68kcpu)->c_flag = CFLAG_CLEAR;
- (mc68kcpu)->v_flag = VFLAG_CLEAR;
-}
-
-
-void m68000_base_device_ops::m68k_op_or_16_er_di(m68000_base_device* mc68kcpu)
-{
- UINT32 res = MASK_OUT_ABOVE_16((DX(mc68kcpu) |= OPER_AY_DI_16(mc68kcpu)));
-
- (mc68kcpu)->n_flag = NFLAG_16(res);
- (mc68kcpu)->not_z_flag = res;
- (mc68kcpu)->c_flag = CFLAG_CLEAR;
- (mc68kcpu)->v_flag = VFLAG_CLEAR;
-}
-
-
-void m68000_base_device_ops::m68k_op_or_16_er_ix(m68000_base_device* mc68kcpu)
-{
- UINT32 res = MASK_OUT_ABOVE_16((DX(mc68kcpu) |= OPER_AY_IX_16(mc68kcpu)));
-
- (mc68kcpu)->n_flag = NFLAG_16(res);
- (mc68kcpu)->not_z_flag = res;
- (mc68kcpu)->c_flag = CFLAG_CLEAR;
- (mc68kcpu)->v_flag = VFLAG_CLEAR;
-}
-
-
-void m68000_base_device_ops::m68k_op_or_16_er_aw(m68000_base_device* mc68kcpu)
-{
- UINT32 res = MASK_OUT_ABOVE_16((DX(mc68kcpu) |= OPER_AW_16(mc68kcpu)));
-
- (mc68kcpu)->n_flag = NFLAG_16(res);
- (mc68kcpu)->not_z_flag = res;
- (mc68kcpu)->c_flag = CFLAG_CLEAR;
- (mc68kcpu)->v_flag = VFLAG_CLEAR;
-}
-
-
-void m68000_base_device_ops::m68k_op_or_16_er_al(m68000_base_device* mc68kcpu)
-{
- UINT32 res = MASK_OUT_ABOVE_16((DX(mc68kcpu) |= OPER_AL_16(mc68kcpu)));
-
- (mc68kcpu)->n_flag = NFLAG_16(res);
- (mc68kcpu)->not_z_flag = res;
- (mc68kcpu)->c_flag = CFLAG_CLEAR;
- (mc68kcpu)->v_flag = VFLAG_CLEAR;
-}
-
-
-void m68000_base_device_ops::m68k_op_or_16_er_pcdi(m68000_base_device* mc68kcpu)
-{
- UINT32 res = MASK_OUT_ABOVE_16((DX(mc68kcpu) |= OPER_PCDI_16(mc68kcpu)));
-
- (mc68kcpu)->n_flag = NFLAG_16(res);
- (mc68kcpu)->not_z_flag = res;
- (mc68kcpu)->c_flag = CFLAG_CLEAR;
- (mc68kcpu)->v_flag = VFLAG_CLEAR;
-}
-
-
-void m68000_base_device_ops::m68k_op_or_16_er_pcix(m68000_base_device* mc68kcpu)
-{
- UINT32 res = MASK_OUT_ABOVE_16((DX(mc68kcpu) |= OPER_PCIX_16(mc68kcpu)));
-
- (mc68kcpu)->n_flag = NFLAG_16(res);
- (mc68kcpu)->not_z_flag = res;
- (mc68kcpu)->c_flag = CFLAG_CLEAR;
- (mc68kcpu)->v_flag = VFLAG_CLEAR;
-}
-
-
-void m68000_base_device_ops::m68k_op_or_16_er_i(m68000_base_device* mc68kcpu)
-{
- UINT32 res = MASK_OUT_ABOVE_16((DX(mc68kcpu) |= OPER_I_16(mc68kcpu)));
-
- (mc68kcpu)->n_flag = NFLAG_16(res);
- (mc68kcpu)->not_z_flag = res;
- (mc68kcpu)->c_flag = CFLAG_CLEAR;
- (mc68kcpu)->v_flag = VFLAG_CLEAR;
-}
-
-
-void m68000_base_device_ops::m68k_op_or_32_er_d(m68000_base_device* mc68kcpu)
-{
- UINT32 res = DX(mc68kcpu) |= DY(mc68kcpu);
-
- (mc68kcpu)->n_flag = NFLAG_32(res);
- (mc68kcpu)->not_z_flag = res;
- (mc68kcpu)->c_flag = CFLAG_CLEAR;
- (mc68kcpu)->v_flag = VFLAG_CLEAR;
-}
-
-
-void m68000_base_device_ops::m68k_op_or_32_er_ai(m68000_base_device* mc68kcpu)
-{
- UINT32 res = DX(mc68kcpu) |= OPER_AY_AI_32(mc68kcpu);
-
- (mc68kcpu)->n_flag = NFLAG_32(res);
- (mc68kcpu)->not_z_flag = res;
- (mc68kcpu)->c_flag = CFLAG_CLEAR;
- (mc68kcpu)->v_flag = VFLAG_CLEAR;
-}
-
-
-void m68000_base_device_ops::m68k_op_or_32_er_pi(m68000_base_device* mc68kcpu)
-{
- UINT32 res = DX(mc68kcpu) |= OPER_AY_PI_32(mc68kcpu);
-
- (mc68kcpu)->n_flag = NFLAG_32(res);
- (mc68kcpu)->not_z_flag = res;
- (mc68kcpu)->c_flag = CFLAG_CLEAR;
- (mc68kcpu)->v_flag = VFLAG_CLEAR;
-}
-
-
-void m68000_base_device_ops::m68k_op_or_32_er_pd(m68000_base_device* mc68kcpu)
-{
- UINT32 res = DX(mc68kcpu) |= OPER_AY_PD_32(mc68kcpu);
-
- (mc68kcpu)->n_flag = NFLAG_32(res);
- (mc68kcpu)->not_z_flag = res;
- (mc68kcpu)->c_flag = CFLAG_CLEAR;
- (mc68kcpu)->v_flag = VFLAG_CLEAR;
-}
-
-
-void m68000_base_device_ops::m68k_op_or_32_er_di(m68000_base_device* mc68kcpu)
-{
- UINT32 res = DX(mc68kcpu) |= OPER_AY_DI_32(mc68kcpu);
-
- (mc68kcpu)->n_flag = NFLAG_32(res);
- (mc68kcpu)->not_z_flag = res;
- (mc68kcpu)->c_flag = CFLAG_CLEAR;
- (mc68kcpu)->v_flag = VFLAG_CLEAR;
-}
-
-
-void m68000_base_device_ops::m68k_op_or_32_er_ix(m68000_base_device* mc68kcpu)
-{
- UINT32 res = DX(mc68kcpu) |= OPER_AY_IX_32(mc68kcpu);
-
- (mc68kcpu)->n_flag = NFLAG_32(res);
- (mc68kcpu)->not_z_flag = res;
- (mc68kcpu)->c_flag = CFLAG_CLEAR;
- (mc68kcpu)->v_flag = VFLAG_CLEAR;
-}
-
-
-void m68000_base_device_ops::m68k_op_or_32_er_aw(m68000_base_device* mc68kcpu)
-{
- UINT32 res = DX(mc68kcpu) |= OPER_AW_32(mc68kcpu);
-
- (mc68kcpu)->n_flag = NFLAG_32(res);
- (mc68kcpu)->not_z_flag = res;
- (mc68kcpu)->c_flag = CFLAG_CLEAR;
- (mc68kcpu)->v_flag = VFLAG_CLEAR;
-}
-
-
-void m68000_base_device_ops::m68k_op_or_32_er_al(m68000_base_device* mc68kcpu)
-{
- UINT32 res = DX(mc68kcpu) |= OPER_AL_32(mc68kcpu);
-
- (mc68kcpu)->n_flag = NFLAG_32(res);
- (mc68kcpu)->not_z_flag = res;
- (mc68kcpu)->c_flag = CFLAG_CLEAR;
- (mc68kcpu)->v_flag = VFLAG_CLEAR;
-}
-
-
-void m68000_base_device_ops::m68k_op_or_32_er_pcdi(m68000_base_device* mc68kcpu)
-{
- UINT32 res = DX(mc68kcpu) |= OPER_PCDI_32(mc68kcpu);
-
- (mc68kcpu)->n_flag = NFLAG_32(res);
- (mc68kcpu)->not_z_flag = res;
- (mc68kcpu)->c_flag = CFLAG_CLEAR;
- (mc68kcpu)->v_flag = VFLAG_CLEAR;
-}
-
-
-void m68000_base_device_ops::m68k_op_or_32_er_pcix(m68000_base_device* mc68kcpu)
-{
- UINT32 res = DX(mc68kcpu) |= OPER_PCIX_32(mc68kcpu);
-
- (mc68kcpu)->n_flag = NFLAG_32(res);
- (mc68kcpu)->not_z_flag = res;
- (mc68kcpu)->c_flag = CFLAG_CLEAR;
- (mc68kcpu)->v_flag = VFLAG_CLEAR;
-}
-
-
-void m68000_base_device_ops::m68k_op_or_32_er_i(m68000_base_device* mc68kcpu)
-{
- UINT32 res = DX(mc68kcpu) |= OPER_I_32(mc68kcpu);
-
- (mc68kcpu)->n_flag = NFLAG_32(res);
- (mc68kcpu)->not_z_flag = res;
- (mc68kcpu)->c_flag = CFLAG_CLEAR;
- (mc68kcpu)->v_flag = VFLAG_CLEAR;
-}
-
-
-void m68000_base_device_ops::m68k_op_or_8_re_ai(m68000_base_device* mc68kcpu)
-{
- UINT32 ea = EA_AY_AI_8(mc68kcpu);
- UINT32 res = MASK_OUT_ABOVE_8(DX(mc68kcpu) | m68ki_read_8((mc68kcpu), ea));
-
- m68ki_write_8((mc68kcpu), ea, res);
-
- (mc68kcpu)->n_flag = NFLAG_8(res);
- (mc68kcpu)->not_z_flag = res;
- (mc68kcpu)->c_flag = CFLAG_CLEAR;
- (mc68kcpu)->v_flag = VFLAG_CLEAR;
-}
-
-
-void m68000_base_device_ops::m68k_op_or_8_re_pi(m68000_base_device* mc68kcpu)
-{
- UINT32 ea = EA_AY_PI_8(mc68kcpu);
- UINT32 res = MASK_OUT_ABOVE_8(DX(mc68kcpu) | m68ki_read_8((mc68kcpu), ea));
-
- m68ki_write_8((mc68kcpu), ea, res);
-
- (mc68kcpu)->n_flag = NFLAG_8(res);
- (mc68kcpu)->not_z_flag = res;
- (mc68kcpu)->c_flag = CFLAG_CLEAR;
- (mc68kcpu)->v_flag = VFLAG_CLEAR;
-}
-
-
-void m68000_base_device_ops::m68k_op_or_8_re_pi7(m68000_base_device* mc68kcpu)
-{
- UINT32 ea = EA_A7_PI_8(mc68kcpu);
- UINT32 res = MASK_OUT_ABOVE_8(DX(mc68kcpu) | m68ki_read_8((mc68kcpu), ea));
-
- m68ki_write_8((mc68kcpu), ea, res);
-
- (mc68kcpu)->n_flag = NFLAG_8(res);
- (mc68kcpu)->not_z_flag = res;
- (mc68kcpu)->c_flag = CFLAG_CLEAR;
- (mc68kcpu)->v_flag = VFLAG_CLEAR;
-}
-
-
-void m68000_base_device_ops::m68k_op_or_8_re_pd(m68000_base_device* mc68kcpu)
-{
- UINT32 ea = EA_AY_PD_8(mc68kcpu);
- UINT32 res = MASK_OUT_ABOVE_8(DX(mc68kcpu) | m68ki_read_8((mc68kcpu), ea));
-
- m68ki_write_8((mc68kcpu), ea, res);
-
- (mc68kcpu)->n_flag = NFLAG_8(res);
- (mc68kcpu)->not_z_flag = res;
- (mc68kcpu)->c_flag = CFLAG_CLEAR;
- (mc68kcpu)->v_flag = VFLAG_CLEAR;
-}
-
-
-void m68000_base_device_ops::m68k_op_or_8_re_pd7(m68000_base_device* mc68kcpu)
-{
- UINT32 ea = EA_A7_PD_8(mc68kcpu);
- UINT32 res = MASK_OUT_ABOVE_8(DX(mc68kcpu) | m68ki_read_8((mc68kcpu), ea));
-
- m68ki_write_8((mc68kcpu), ea, res);
-
- (mc68kcpu)->n_flag = NFLAG_8(res);
- (mc68kcpu)->not_z_flag = res;
- (mc68kcpu)->c_flag = CFLAG_CLEAR;
- (mc68kcpu)->v_flag = VFLAG_CLEAR;
-}
-
-
-void m68000_base_device_ops::m68k_op_or_8_re_di(m68000_base_device* mc68kcpu)
-{
- UINT32 ea = EA_AY_DI_8(mc68kcpu);
- UINT32 res = MASK_OUT_ABOVE_8(DX(mc68kcpu) | m68ki_read_8((mc68kcpu), ea));
-
- m68ki_write_8((mc68kcpu), ea, res);
-
- (mc68kcpu)->n_flag = NFLAG_8(res);
- (mc68kcpu)->not_z_flag = res;
- (mc68kcpu)->c_flag = CFLAG_CLEAR;
- (mc68kcpu)->v_flag = VFLAG_CLEAR;
-}
-
-
-void m68000_base_device_ops::m68k_op_or_8_re_ix(m68000_base_device* mc68kcpu)
-{
- UINT32 ea = EA_AY_IX_8(mc68kcpu);
- UINT32 res = MASK_OUT_ABOVE_8(DX(mc68kcpu) | m68ki_read_8((mc68kcpu), ea));
-
- m68ki_write_8((mc68kcpu), ea, res);
-
- (mc68kcpu)->n_flag = NFLAG_8(res);
- (mc68kcpu)->not_z_flag = res;
- (mc68kcpu)->c_flag = CFLAG_CLEAR;
- (mc68kcpu)->v_flag = VFLAG_CLEAR;
-}
-
-
-void m68000_base_device_ops::m68k_op_or_8_re_aw(m68000_base_device* mc68kcpu)
-{
- UINT32 ea = EA_AW_8(mc68kcpu);
- UINT32 res = MASK_OUT_ABOVE_8(DX(mc68kcpu) | m68ki_read_8((mc68kcpu), ea));
-
- m68ki_write_8((mc68kcpu), ea, res);
-
- (mc68kcpu)->n_flag = NFLAG_8(res);
- (mc68kcpu)->not_z_flag = res;
- (mc68kcpu)->c_flag = CFLAG_CLEAR;
- (mc68kcpu)->v_flag = VFLAG_CLEAR;
-}
-
-
-void m68000_base_device_ops::m68k_op_or_8_re_al(m68000_base_device* mc68kcpu)
-{
- UINT32 ea = EA_AL_8(mc68kcpu);
- UINT32 res = MASK_OUT_ABOVE_8(DX(mc68kcpu) | m68ki_read_8((mc68kcpu), ea));
-
- m68ki_write_8((mc68kcpu), ea, res);
-
- (mc68kcpu)->n_flag = NFLAG_8(res);
- (mc68kcpu)->not_z_flag = res;
- (mc68kcpu)->c_flag = CFLAG_CLEAR;
- (mc68kcpu)->v_flag = VFLAG_CLEAR;
-}
-
-
-void m68000_base_device_ops::m68k_op_or_16_re_ai(m68000_base_device* mc68kcpu)
-{
- UINT32 ea = EA_AY_AI_16(mc68kcpu);
- UINT32 res = MASK_OUT_ABOVE_16(DX(mc68kcpu) | m68ki_read_16((mc68kcpu), ea));
-
- m68ki_write_16((mc68kcpu), ea, res);
-
- (mc68kcpu)->n_flag = NFLAG_16(res);
- (mc68kcpu)->not_z_flag = res;
- (mc68kcpu)->c_flag = CFLAG_CLEAR;
- (mc68kcpu)->v_flag = VFLAG_CLEAR;
-}
-
-
-void m68000_base_device_ops::m68k_op_or_16_re_pi(m68000_base_device* mc68kcpu)
-{
- UINT32 ea = EA_AY_PI_16(mc68kcpu);
- UINT32 res = MASK_OUT_ABOVE_16(DX(mc68kcpu) | m68ki_read_16((mc68kcpu), ea));
-
- m68ki_write_16((mc68kcpu), ea, res);
-
- (mc68kcpu)->n_flag = NFLAG_16(res);
- (mc68kcpu)->not_z_flag = res;
- (mc68kcpu)->c_flag = CFLAG_CLEAR;
- (mc68kcpu)->v_flag = VFLAG_CLEAR;
-}
-
-
-void m68000_base_device_ops::m68k_op_or_16_re_pd(m68000_base_device* mc68kcpu)
-{
- UINT32 ea = EA_AY_PD_16(mc68kcpu);
- UINT32 res = MASK_OUT_ABOVE_16(DX(mc68kcpu) | m68ki_read_16((mc68kcpu), ea));
-
- m68ki_write_16((mc68kcpu), ea, res);
-
- (mc68kcpu)->n_flag = NFLAG_16(res);
- (mc68kcpu)->not_z_flag = res;
- (mc68kcpu)->c_flag = CFLAG_CLEAR;
- (mc68kcpu)->v_flag = VFLAG_CLEAR;
-}
-
-
-void m68000_base_device_ops::m68k_op_or_16_re_di(m68000_base_device* mc68kcpu)
-{
- UINT32 ea = EA_AY_DI_16(mc68kcpu);
- UINT32 res = MASK_OUT_ABOVE_16(DX(mc68kcpu) | m68ki_read_16((mc68kcpu), ea));
-
- m68ki_write_16((mc68kcpu), ea, res);
-
- (mc68kcpu)->n_flag = NFLAG_16(res);
- (mc68kcpu)->not_z_flag = res;
- (mc68kcpu)->c_flag = CFLAG_CLEAR;
- (mc68kcpu)->v_flag = VFLAG_CLEAR;
-}
-
-
-void m68000_base_device_ops::m68k_op_or_16_re_ix(m68000_base_device* mc68kcpu)
-{
- UINT32 ea = EA_AY_IX_16(mc68kcpu);
- UINT32 res = MASK_OUT_ABOVE_16(DX(mc68kcpu) | m68ki_read_16((mc68kcpu), ea));
-
- m68ki_write_16((mc68kcpu), ea, res);
-
- (mc68kcpu)->n_flag = NFLAG_16(res);
- (mc68kcpu)->not_z_flag = res;
- (mc68kcpu)->c_flag = CFLAG_CLEAR;
- (mc68kcpu)->v_flag = VFLAG_CLEAR;
-}
-
-
-void m68000_base_device_ops::m68k_op_or_16_re_aw(m68000_base_device* mc68kcpu)
-{
- UINT32 ea = EA_AW_16(mc68kcpu);
- UINT32 res = MASK_OUT_ABOVE_16(DX(mc68kcpu) | m68ki_read_16((mc68kcpu), ea));
-
- m68ki_write_16((mc68kcpu), ea, res);
-
- (mc68kcpu)->n_flag = NFLAG_16(res);
- (mc68kcpu)->not_z_flag = res;
- (mc68kcpu)->c_flag = CFLAG_CLEAR;
- (mc68kcpu)->v_flag = VFLAG_CLEAR;
-}
-
-
-void m68000_base_device_ops::m68k_op_or_16_re_al(m68000_base_device* mc68kcpu)
-{
- UINT32 ea = EA_AL_16(mc68kcpu);
- UINT32 res = MASK_OUT_ABOVE_16(DX(mc68kcpu) | m68ki_read_16((mc68kcpu), ea));
-
- m68ki_write_16((mc68kcpu), ea, res);
-
- (mc68kcpu)->n_flag = NFLAG_16(res);
- (mc68kcpu)->not_z_flag = res;
- (mc68kcpu)->c_flag = CFLAG_CLEAR;
- (mc68kcpu)->v_flag = VFLAG_CLEAR;
-}
-
-
-void m68000_base_device_ops::m68k_op_or_32_re_ai(m68000_base_device* mc68kcpu)
-{
- UINT32 ea = EA_AY_AI_32(mc68kcpu);
- UINT32 res = DX(mc68kcpu) | m68ki_read_32((mc68kcpu), ea);
-
- m68ki_write_32((mc68kcpu), ea, res);
-
- (mc68kcpu)->n_flag = NFLAG_32(res);
- (mc68kcpu)->not_z_flag = res;
- (mc68kcpu)->c_flag = CFLAG_CLEAR;
- (mc68kcpu)->v_flag = VFLAG_CLEAR;
-}
-
-
-void m68000_base_device_ops::m68k_op_or_32_re_pi(m68000_base_device* mc68kcpu)
-{
- UINT32 ea = EA_AY_PI_32(mc68kcpu);
- UINT32 res = DX(mc68kcpu) | m68ki_read_32((mc68kcpu), ea);
-
- m68ki_write_32((mc68kcpu), ea, res);
-
- (mc68kcpu)->n_flag = NFLAG_32(res);
- (mc68kcpu)->not_z_flag = res;
- (mc68kcpu)->c_flag = CFLAG_CLEAR;
- (mc68kcpu)->v_flag = VFLAG_CLEAR;
-}
-
-
-void m68000_base_device_ops::m68k_op_or_32_re_pd(m68000_base_device* mc68kcpu)
-{
- UINT32 ea = EA_AY_PD_32(mc68kcpu);
- UINT32 res = DX(mc68kcpu) | m68ki_read_32((mc68kcpu), ea);
-
- m68ki_write_32((mc68kcpu), ea, res);
-
- (mc68kcpu)->n_flag = NFLAG_32(res);
- (mc68kcpu)->not_z_flag = res;
- (mc68kcpu)->c_flag = CFLAG_CLEAR;
- (mc68kcpu)->v_flag = VFLAG_CLEAR;
-}
-
-
-void m68000_base_device_ops::m68k_op_or_32_re_di(m68000_base_device* mc68kcpu)
-{
- UINT32 ea = EA_AY_DI_32(mc68kcpu);
- UINT32 res = DX(mc68kcpu) | m68ki_read_32((mc68kcpu), ea);
-
- m68ki_write_32((mc68kcpu), ea, res);
-
- (mc68kcpu)->n_flag = NFLAG_32(res);
- (mc68kcpu)->not_z_flag = res;
- (mc68kcpu)->c_flag = CFLAG_CLEAR;
- (mc68kcpu)->v_flag = VFLAG_CLEAR;
-}
-
-
-void m68000_base_device_ops::m68k_op_or_32_re_ix(m68000_base_device* mc68kcpu)
-{
- UINT32 ea = EA_AY_IX_32(mc68kcpu);
- UINT32 res = DX(mc68kcpu) | m68ki_read_32((mc68kcpu), ea);
-
- m68ki_write_32((mc68kcpu), ea, res);
-
- (mc68kcpu)->n_flag = NFLAG_32(res);
- (mc68kcpu)->not_z_flag = res;
- (mc68kcpu)->c_flag = CFLAG_CLEAR;
- (mc68kcpu)->v_flag = VFLAG_CLEAR;
-}
-
-
-void m68000_base_device_ops::m68k_op_or_32_re_aw(m68000_base_device* mc68kcpu)
-{
- UINT32 ea = EA_AW_32(mc68kcpu);
- UINT32 res = DX(mc68kcpu) | m68ki_read_32((mc68kcpu), ea);
-
- m68ki_write_32((mc68kcpu), ea, res);
-
- (mc68kcpu)->n_flag = NFLAG_32(res);
- (mc68kcpu)->not_z_flag = res;
- (mc68kcpu)->c_flag = CFLAG_CLEAR;
- (mc68kcpu)->v_flag = VFLAG_CLEAR;
-}
-
-
-void m68000_base_device_ops::m68k_op_or_32_re_al(m68000_base_device* mc68kcpu)
-{
- UINT32 ea = EA_AL_32(mc68kcpu);
- UINT32 res = DX(mc68kcpu) | m68ki_read_32((mc68kcpu), ea);
-
- m68ki_write_32((mc68kcpu), ea, res);
-
- (mc68kcpu)->n_flag = NFLAG_32(res);
- (mc68kcpu)->not_z_flag = res;
- (mc68kcpu)->c_flag = CFLAG_CLEAR;
- (mc68kcpu)->v_flag = VFLAG_CLEAR;
-}
-
-
-void m68000_base_device_ops::m68k_op_ori_8_d(m68000_base_device* mc68kcpu)
-{
- UINT32 res = MASK_OUT_ABOVE_8((DY(mc68kcpu) |= OPER_I_8(mc68kcpu)));
-
- (mc68kcpu)->n_flag = NFLAG_8(res);
- (mc68kcpu)->not_z_flag = res;
- (mc68kcpu)->c_flag = CFLAG_CLEAR;
- (mc68kcpu)->v_flag = VFLAG_CLEAR;
-}
-
-
-void m68000_base_device_ops::m68k_op_ori_8_ai(m68000_base_device* mc68kcpu)
-{
- UINT32 src = OPER_I_8(mc68kcpu);
- UINT32 ea = EA_AY_AI_8(mc68kcpu);
- UINT32 res = MASK_OUT_ABOVE_8(src | m68ki_read_8((mc68kcpu), ea));
-
- m68ki_write_8((mc68kcpu), ea, res);
-
- (mc68kcpu)->n_flag = NFLAG_8(res);
- (mc68kcpu)->not_z_flag = res;
- (mc68kcpu)->c_flag = CFLAG_CLEAR;
- (mc68kcpu)->v_flag = VFLAG_CLEAR;
-}
-
-
-void m68000_base_device_ops::m68k_op_ori_8_pi(m68000_base_device* mc68kcpu)
-{
- UINT32 src = OPER_I_8(mc68kcpu);
- UINT32 ea = EA_AY_PI_8(mc68kcpu);
- UINT32 res = MASK_OUT_ABOVE_8(src | m68ki_read_8((mc68kcpu), ea));
-
- m68ki_write_8((mc68kcpu), ea, res);
-
- (mc68kcpu)->n_flag = NFLAG_8(res);
- (mc68kcpu)->not_z_flag = res;
- (mc68kcpu)->c_flag = CFLAG_CLEAR;
- (mc68kcpu)->v_flag = VFLAG_CLEAR;
-}
-
-
-void m68000_base_device_ops::m68k_op_ori_8_pi7(m68000_base_device* mc68kcpu)
-{
- UINT32 src = OPER_I_8(mc68kcpu);
- UINT32 ea = EA_A7_PI_8(mc68kcpu);
- UINT32 res = MASK_OUT_ABOVE_8(src | m68ki_read_8((mc68kcpu), ea));
-
- m68ki_write_8((mc68kcpu), ea, res);
-
- (mc68kcpu)->n_flag = NFLAG_8(res);
- (mc68kcpu)->not_z_flag = res;
- (mc68kcpu)->c_flag = CFLAG_CLEAR;
- (mc68kcpu)->v_flag = VFLAG_CLEAR;
-}
-
-
-void m68000_base_device_ops::m68k_op_ori_8_pd(m68000_base_device* mc68kcpu)
-{
- UINT32 src = OPER_I_8(mc68kcpu);
- UINT32 ea = EA_AY_PD_8(mc68kcpu);
- UINT32 res = MASK_OUT_ABOVE_8(src | m68ki_read_8((mc68kcpu), ea));
-
- m68ki_write_8((mc68kcpu), ea, res);
-
- (mc68kcpu)->n_flag = NFLAG_8(res);
- (mc68kcpu)->not_z_flag = res;
- (mc68kcpu)->c_flag = CFLAG_CLEAR;
- (mc68kcpu)->v_flag = VFLAG_CLEAR;
-}
-
-
-void m68000_base_device_ops::m68k_op_ori_8_pd7(m68000_base_device* mc68kcpu)
-{
- UINT32 src = OPER_I_8(mc68kcpu);
- UINT32 ea = EA_A7_PD_8(mc68kcpu);
- UINT32 res = MASK_OUT_ABOVE_8(src | m68ki_read_8((mc68kcpu), ea));
-
- m68ki_write_8((mc68kcpu), ea, res);
-
- (mc68kcpu)->n_flag = NFLAG_8(res);
- (mc68kcpu)->not_z_flag = res;
- (mc68kcpu)->c_flag = CFLAG_CLEAR;
- (mc68kcpu)->v_flag = VFLAG_CLEAR;
-}
-
-
-void m68000_base_device_ops::m68k_op_ori_8_di(m68000_base_device* mc68kcpu)
-{
- UINT32 src = OPER_I_8(mc68kcpu);
- UINT32 ea = EA_AY_DI_8(mc68kcpu);
- UINT32 res = MASK_OUT_ABOVE_8(src | m68ki_read_8((mc68kcpu), ea));
-
- m68ki_write_8((mc68kcpu), ea, res);
-
- (mc68kcpu)->n_flag = NFLAG_8(res);
- (mc68kcpu)->not_z_flag = res;
- (mc68kcpu)->c_flag = CFLAG_CLEAR;
- (mc68kcpu)->v_flag = VFLAG_CLEAR;
-}
-
-
-void m68000_base_device_ops::m68k_op_ori_8_ix(m68000_base_device* mc68kcpu)
-{
- UINT32 src = OPER_I_8(mc68kcpu);
- UINT32 ea = EA_AY_IX_8(mc68kcpu);
- UINT32 res = MASK_OUT_ABOVE_8(src | m68ki_read_8((mc68kcpu), ea));
-
- m68ki_write_8((mc68kcpu), ea, res);
-
- (mc68kcpu)->n_flag = NFLAG_8(res);
- (mc68kcpu)->not_z_flag = res;
- (mc68kcpu)->c_flag = CFLAG_CLEAR;
- (mc68kcpu)->v_flag = VFLAG_CLEAR;
-}
-
-
-void m68000_base_device_ops::m68k_op_ori_8_aw(m68000_base_device* mc68kcpu)
-{
- UINT32 src = OPER_I_8(mc68kcpu);
- UINT32 ea = EA_AW_8(mc68kcpu);
- UINT32 res = MASK_OUT_ABOVE_8(src | m68ki_read_8((mc68kcpu), ea));
-
- m68ki_write_8((mc68kcpu), ea, res);
-
- (mc68kcpu)->n_flag = NFLAG_8(res);
- (mc68kcpu)->not_z_flag = res;
- (mc68kcpu)->c_flag = CFLAG_CLEAR;
- (mc68kcpu)->v_flag = VFLAG_CLEAR;
-}
-
-
-void m68000_base_device_ops::m68k_op_ori_8_al(m68000_base_device* mc68kcpu)
-{
- UINT32 src = OPER_I_8(mc68kcpu);
- UINT32 ea = EA_AL_8(mc68kcpu);
- UINT32 res = MASK_OUT_ABOVE_8(src | m68ki_read_8((mc68kcpu), ea));
-
- m68ki_write_8((mc68kcpu), ea, res);
-
- (mc68kcpu)->n_flag = NFLAG_8(res);
- (mc68kcpu)->not_z_flag = res;
- (mc68kcpu)->c_flag = CFLAG_CLEAR;
- (mc68kcpu)->v_flag = VFLAG_CLEAR;
-}
-
-
-void m68000_base_device_ops::m68k_op_ori_16_d(m68000_base_device* mc68kcpu)
-{
- UINT32 res = MASK_OUT_ABOVE_16(DY(mc68kcpu) |= OPER_I_16(mc68kcpu));
-
- (mc68kcpu)->n_flag = NFLAG_16(res);
- (mc68kcpu)->not_z_flag = res;
- (mc68kcpu)->c_flag = CFLAG_CLEAR;
- (mc68kcpu)->v_flag = VFLAG_CLEAR;
-}
-
-
-void m68000_base_device_ops::m68k_op_ori_16_ai(m68000_base_device* mc68kcpu)
-{
- UINT32 src = OPER_I_16(mc68kcpu);
- UINT32 ea = EA_AY_AI_16(mc68kcpu);
- UINT32 res = MASK_OUT_ABOVE_16(src | m68ki_read_16((mc68kcpu), ea));
-
- m68ki_write_16((mc68kcpu), ea, res);
-
- (mc68kcpu)->n_flag = NFLAG_16(res);
- (mc68kcpu)->not_z_flag = res;
- (mc68kcpu)->c_flag = CFLAG_CLEAR;
- (mc68kcpu)->v_flag = VFLAG_CLEAR;
-}
-
-
-void m68000_base_device_ops::m68k_op_ori_16_pi(m68000_base_device* mc68kcpu)
-{
- UINT32 src = OPER_I_16(mc68kcpu);
- UINT32 ea = EA_AY_PI_16(mc68kcpu);
- UINT32 res = MASK_OUT_ABOVE_16(src | m68ki_read_16((mc68kcpu), ea));
-
- m68ki_write_16((mc68kcpu), ea, res);
-
- (mc68kcpu)->n_flag = NFLAG_16(res);
- (mc68kcpu)->not_z_flag = res;
- (mc68kcpu)->c_flag = CFLAG_CLEAR;
- (mc68kcpu)->v_flag = VFLAG_CLEAR;
-}
-
-
-void m68000_base_device_ops::m68k_op_ori_16_pd(m68000_base_device* mc68kcpu)
-{
- UINT32 src = OPER_I_16(mc68kcpu);
- UINT32 ea = EA_AY_PD_16(mc68kcpu);
- UINT32 res = MASK_OUT_ABOVE_16(src | m68ki_read_16((mc68kcpu), ea));
-
- m68ki_write_16((mc68kcpu), ea, res);
-
- (mc68kcpu)->n_flag = NFLAG_16(res);
- (mc68kcpu)->not_z_flag = res;
- (mc68kcpu)->c_flag = CFLAG_CLEAR;
- (mc68kcpu)->v_flag = VFLAG_CLEAR;
-}
-
-
-void m68000_base_device_ops::m68k_op_ori_16_di(m68000_base_device* mc68kcpu)
-{
- UINT32 src = OPER_I_16(mc68kcpu);
- UINT32 ea = EA_AY_DI_16(mc68kcpu);
- UINT32 res = MASK_OUT_ABOVE_16(src | m68ki_read_16((mc68kcpu), ea));
-
- m68ki_write_16((mc68kcpu), ea, res);
-
- (mc68kcpu)->n_flag = NFLAG_16(res);
- (mc68kcpu)->not_z_flag = res;
- (mc68kcpu)->c_flag = CFLAG_CLEAR;
- (mc68kcpu)->v_flag = VFLAG_CLEAR;
-}
-
-
-void m68000_base_device_ops::m68k_op_ori_16_ix(m68000_base_device* mc68kcpu)
-{
- UINT32 src = OPER_I_16(mc68kcpu);
- UINT32 ea = EA_AY_IX_16(mc68kcpu);
- UINT32 res = MASK_OUT_ABOVE_16(src | m68ki_read_16((mc68kcpu), ea));
-
- m68ki_write_16((mc68kcpu), ea, res);
-
- (mc68kcpu)->n_flag = NFLAG_16(res);
- (mc68kcpu)->not_z_flag = res;
- (mc68kcpu)->c_flag = CFLAG_CLEAR;
- (mc68kcpu)->v_flag = VFLAG_CLEAR;
-}
-
-
-void m68000_base_device_ops::m68k_op_ori_16_aw(m68000_base_device* mc68kcpu)
-{
- UINT32 src = OPER_I_16(mc68kcpu);
- UINT32 ea = EA_AW_16(mc68kcpu);
- UINT32 res = MASK_OUT_ABOVE_16(src | m68ki_read_16((mc68kcpu), ea));
-
- m68ki_write_16((mc68kcpu), ea, res);
-
- (mc68kcpu)->n_flag = NFLAG_16(res);
- (mc68kcpu)->not_z_flag = res;
- (mc68kcpu)->c_flag = CFLAG_CLEAR;
- (mc68kcpu)->v_flag = VFLAG_CLEAR;
-}
-
-
-void m68000_base_device_ops::m68k_op_ori_16_al(m68000_base_device* mc68kcpu)
-{
- UINT32 src = OPER_I_16(mc68kcpu);
- UINT32 ea = EA_AL_16(mc68kcpu);
- UINT32 res = MASK_OUT_ABOVE_16(src | m68ki_read_16((mc68kcpu), ea));
-
- m68ki_write_16((mc68kcpu), ea, res);
-
- (mc68kcpu)->n_flag = NFLAG_16(res);
- (mc68kcpu)->not_z_flag = res;
- (mc68kcpu)->c_flag = CFLAG_CLEAR;
- (mc68kcpu)->v_flag = VFLAG_CLEAR;
-}
-
-
-void m68000_base_device_ops::m68k_op_ori_32_d(m68000_base_device* mc68kcpu)
-{
- UINT32 res = DY(mc68kcpu) |= OPER_I_32(mc68kcpu);
-
- (mc68kcpu)->n_flag = NFLAG_32(res);
- (mc68kcpu)->not_z_flag = res;
- (mc68kcpu)->c_flag = CFLAG_CLEAR;
- (mc68kcpu)->v_flag = VFLAG_CLEAR;
-}
-
-
-void m68000_base_device_ops::m68k_op_ori_32_ai(m68000_base_device* mc68kcpu)
-{
- UINT32 src = OPER_I_32(mc68kcpu);
- UINT32 ea = EA_AY_AI_32(mc68kcpu);
- UINT32 res = src | m68ki_read_32((mc68kcpu), ea);
-
- m68ki_write_32((mc68kcpu), ea, res);
-
- (mc68kcpu)->n_flag = NFLAG_32(res);
- (mc68kcpu)->not_z_flag = res;
- (mc68kcpu)->c_flag = CFLAG_CLEAR;
- (mc68kcpu)->v_flag = VFLAG_CLEAR;
-}
-
-
-void m68000_base_device_ops::m68k_op_ori_32_pi(m68000_base_device* mc68kcpu)
-{
- UINT32 src = OPER_I_32(mc68kcpu);
- UINT32 ea = EA_AY_PI_32(mc68kcpu);
- UINT32 res = src | m68ki_read_32((mc68kcpu), ea);
-
- m68ki_write_32((mc68kcpu), ea, res);
-
- (mc68kcpu)->n_flag = NFLAG_32(res);
- (mc68kcpu)->not_z_flag = res;
- (mc68kcpu)->c_flag = CFLAG_CLEAR;
- (mc68kcpu)->v_flag = VFLAG_CLEAR;
-}
-
-
-void m68000_base_device_ops::m68k_op_ori_32_pd(m68000_base_device* mc68kcpu)
-{
- UINT32 src = OPER_I_32(mc68kcpu);
- UINT32 ea = EA_AY_PD_32(mc68kcpu);
- UINT32 res = src | m68ki_read_32((mc68kcpu), ea);
-
- m68ki_write_32((mc68kcpu), ea, res);
-
- (mc68kcpu)->n_flag = NFLAG_32(res);
- (mc68kcpu)->not_z_flag = res;
- (mc68kcpu)->c_flag = CFLAG_CLEAR;
- (mc68kcpu)->v_flag = VFLAG_CLEAR;
-}
-
-
-void m68000_base_device_ops::m68k_op_ori_32_di(m68000_base_device* mc68kcpu)
-{
- UINT32 src = OPER_I_32(mc68kcpu);
- UINT32 ea = EA_AY_DI_32(mc68kcpu);
- UINT32 res = src | m68ki_read_32((mc68kcpu), ea);
-
- m68ki_write_32((mc68kcpu), ea, res);
-
- (mc68kcpu)->n_flag = NFLAG_32(res);
- (mc68kcpu)->not_z_flag = res;
- (mc68kcpu)->c_flag = CFLAG_CLEAR;
- (mc68kcpu)->v_flag = VFLAG_CLEAR;
-}
-
-
-void m68000_base_device_ops::m68k_op_ori_32_ix(m68000_base_device* mc68kcpu)
-{
- UINT32 src = OPER_I_32(mc68kcpu);
- UINT32 ea = EA_AY_IX_32(mc68kcpu);
- UINT32 res = src | m68ki_read_32((mc68kcpu), ea);
-
- m68ki_write_32((mc68kcpu), ea, res);
-
- (mc68kcpu)->n_flag = NFLAG_32(res);
- (mc68kcpu)->not_z_flag = res;
- (mc68kcpu)->c_flag = CFLAG_CLEAR;
- (mc68kcpu)->v_flag = VFLAG_CLEAR;
-}
-
-
-void m68000_base_device_ops::m68k_op_ori_32_aw(m68000_base_device* mc68kcpu)
-{
- UINT32 src = OPER_I_32(mc68kcpu);
- UINT32 ea = EA_AW_32(mc68kcpu);
- UINT32 res = src | m68ki_read_32((mc68kcpu), ea);
-
- m68ki_write_32((mc68kcpu), ea, res);
-
- (mc68kcpu)->n_flag = NFLAG_32(res);
- (mc68kcpu)->not_z_flag = res;
- (mc68kcpu)->c_flag = CFLAG_CLEAR;
- (mc68kcpu)->v_flag = VFLAG_CLEAR;
-}
-
-
-void m68000_base_device_ops::m68k_op_ori_32_al(m68000_base_device* mc68kcpu)
-{
- UINT32 src = OPER_I_32(mc68kcpu);
- UINT32 ea = EA_AL_32(mc68kcpu);
- UINT32 res = src | m68ki_read_32((mc68kcpu), ea);
-
- m68ki_write_32((mc68kcpu), ea, res);
-
- (mc68kcpu)->n_flag = NFLAG_32(res);
- (mc68kcpu)->not_z_flag = res;
- (mc68kcpu)->c_flag = CFLAG_CLEAR;
- (mc68kcpu)->v_flag = VFLAG_CLEAR;
-}
-
-
-void m68000_base_device_ops::m68k_op_ori_16_toc(m68000_base_device* mc68kcpu)
-{
- m68ki_set_ccr((mc68kcpu), m68ki_get_ccr(mc68kcpu) | OPER_I_16(mc68kcpu));
-}
-
-
-void m68000_base_device_ops::m68k_op_ori_16_tos(m68000_base_device* mc68kcpu)
-{
- if((mc68kcpu)->s_flag)
- {
- UINT32 src = OPER_I_16(mc68kcpu);
- m68ki_trace_t0(mc68kcpu); /* auto-disable (see m68kcpu.h) */
- m68ki_set_sr((mc68kcpu), m68ki_get_sr(mc68kcpu) | src);
- return;
- }
- m68ki_exception_privilege_violation(mc68kcpu);
-}
-
-
-void m68000_base_device_ops::m68k_op_pack_16_rr(m68000_base_device* mc68kcpu)
-{
- if(CPU_TYPE_IS_EC020_PLUS((mc68kcpu)->cpu_type))
- {
- /* Note: DX(mc68kcpu) and DY(mc68kcpu) are reversed in Motorola's docs */
- UINT32 src = DY(mc68kcpu) + OPER_I_16(mc68kcpu);
- UINT32* r_dst = &DX(mc68kcpu);
-
- *r_dst = MASK_OUT_BELOW_8(*r_dst) | ((src >> 4) & 0x00f0) | (src & 0x000f);
- return;
- }
- m68ki_exception_illegal(mc68kcpu);
-}
-
-
-void m68000_base_device_ops::m68k_op_pack_16_mm_ax7(m68000_base_device* mc68kcpu)
-{
- if(CPU_TYPE_IS_EC020_PLUS((mc68kcpu)->cpu_type))
- {
- /* Note: AX and AY are reversed in Motorola's docs */
- UINT32 ea_src = EA_AY_PD_8(mc68kcpu);
- UINT32 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);
-
- m68ki_write_8((mc68kcpu), EA_A7_PD_8(mc68kcpu), ((src >> 8) & 0x000f) | ((src<<4) & 0x00f0));
- return;
- }
- m68ki_exception_illegal(mc68kcpu);
-}
-
-
-void m68000_base_device_ops::m68k_op_pack_16_mm_ay7(m68000_base_device* mc68kcpu)
-{
- if(CPU_TYPE_IS_EC020_PLUS((mc68kcpu)->cpu_type))
- {
- /* Note: AX and AY are reversed in Motorola's docs */
- UINT32 ea_src = EA_A7_PD_8(mc68kcpu);
- UINT32 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);
-
- m68ki_write_8((mc68kcpu), EA_AX_PD_8(mc68kcpu), ((src >> 8) & 0x000f) | ((src<<4) & 0x00f0));
- return;
- }
- m68ki_exception_illegal(mc68kcpu);
-}
-
-
-void m68000_base_device_ops::m68k_op_pack_16_mm_axy7(m68000_base_device* mc68kcpu)
-{
- if(CPU_TYPE_IS_EC020_PLUS((mc68kcpu)->cpu_type))
- {
- UINT32 ea_src = EA_A7_PD_8(mc68kcpu);
- UINT32 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);
-
- m68ki_write_8((mc68kcpu), EA_A7_PD_8(mc68kcpu), ((src >> 8) & 0x000f) | ((src<<4) & 0x00f0));
- return;
- }
- m68ki_exception_illegal(mc68kcpu);
-}
-
-
-void m68000_base_device_ops::m68k_op_pack_16_mm(m68000_base_device* mc68kcpu)
-{
- if(CPU_TYPE_IS_EC020_PLUS((mc68kcpu)->cpu_type))
- {
- /* Note: AX and AY are reversed in Motorola's docs */
- UINT32 ea_src = EA_AY_PD_8(mc68kcpu);
- UINT32 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);
-
- m68ki_write_8((mc68kcpu), EA_AX_PD_8(mc68kcpu), ((src >> 8) & 0x000f) | ((src<<4) & 0x00f0));
- return;
- }
- m68ki_exception_illegal(mc68kcpu);
-}
-
-
-void m68000_base_device_ops::m68k_op_pea_32_ai(m68000_base_device* mc68kcpu)
-{
- UINT32 ea = EA_AY_AI_32(mc68kcpu);
-
- m68ki_push_32((mc68kcpu), ea);
-}
-
-
-void m68000_base_device_ops::m68k_op_pea_32_di(m68000_base_device* mc68kcpu)
-{
- UINT32 ea = EA_AY_DI_32(mc68kcpu);
-
- m68ki_push_32((mc68kcpu), ea);
-}
-
-
-void m68000_base_device_ops::m68k_op_pea_32_ix(m68000_base_device* mc68kcpu)
-{
- UINT32 ea = EA_AY_IX_32(mc68kcpu);
-
- m68ki_push_32((mc68kcpu), ea);
-}
-
-
-void m68000_base_device_ops::m68k_op_pea_32_aw(m68000_base_device* mc68kcpu)
-{
- UINT32 ea = EA_AW_32(mc68kcpu);
-
- m68ki_push_32((mc68kcpu), ea);
-}
-
-
-void m68000_base_device_ops::m68k_op_pea_32_al(m68000_base_device* mc68kcpu)
-{
- UINT32 ea = EA_AL_32(mc68kcpu);
-
- m68ki_push_32((mc68kcpu), ea);
-}
-
-
-void m68000_base_device_ops::m68k_op_pea_32_pcdi(m68000_base_device* mc68kcpu)
-{
- UINT32 ea = EA_PCDI_32(mc68kcpu);
-
- m68ki_push_32((mc68kcpu), ea);
-}
-
-
-void m68000_base_device_ops::m68k_op_pea_32_pcix(m68000_base_device* mc68kcpu)
-{
- UINT32 ea = EA_PCIX_32(mc68kcpu);
-
- m68ki_push_32((mc68kcpu), ea);
-}
-
-
-void m68000_base_device_ops::m68k_op_pflusha_32(m68000_base_device* mc68kcpu)
-{
- if ((CPU_TYPE_IS_EC020_PLUS((mc68kcpu)->cpu_type)) && ((mc68kcpu)->has_pmmu))
- {
- mc68kcpu->logerror("68040: unhandled PFLUSHA (ir=%04x)\n", mc68kcpu->ir);
- return;
- }
- m68ki_exception_1111(mc68kcpu);
-}
-
-
-void m68000_base_device_ops::m68k_op_pflushan_32(m68000_base_device* mc68kcpu)
-{
- if ((CPU_TYPE_IS_EC020_PLUS((mc68kcpu)->cpu_type)) && ((mc68kcpu)->has_pmmu))
- {
- mc68kcpu->logerror("68040: unhandled PFLUSHAN (ir=%04x)\n", mc68kcpu->ir);
- return;
- }
- m68ki_exception_1111(mc68kcpu);
-}
-
-
-void m68000_base_device_ops::m68k_op_pmmu_32(m68000_base_device* mc68kcpu)
-{
- if ((CPU_TYPE_IS_EC020_PLUS((mc68kcpu)->cpu_type)) && ((mc68kcpu)->has_pmmu))
- {
- m68881_mmu_ops(mc68kcpu);
- }
- else
- {
- m68ki_exception_1111(mc68kcpu);
- }
-}
-
-
-void m68000_base_device_ops::m68k_op_ptest_32(m68000_base_device* mc68kcpu)
-{
- if ((CPU_TYPE_IS_040_PLUS((mc68kcpu)->cpu_type)) && ((mc68kcpu)->has_pmmu))
- {
- mc68kcpu->logerror("68040: unhandled PTEST\n");
- return;
- }
- else
- {
- m68ki_exception_1111(mc68kcpu);
- }
-}
-
-
-void m68000_base_device_ops::m68k_op_reset(m68000_base_device* mc68kcpu)
-{
- if((mc68kcpu)->s_flag)
- {
- if (!(mc68kcpu)->reset_instr_callback.isnull())
- ((mc68kcpu)->reset_instr_callback)(1);
- (mc68kcpu)->remaining_cycles -= (mc68kcpu)->cyc_reset;
- return;
- }
- m68ki_exception_privilege_violation(mc68kcpu);
-}
-
-
-void m68000_base_device_ops::m68k_op_ror_8_s(m68000_base_device* mc68kcpu)
-{
- UINT32* r_dst = &DY(mc68kcpu);
- UINT32 orig_shift = ((((mc68kcpu)->ir >> 9) - 1) & 7) + 1;
- UINT32 shift = orig_shift & 7;
- UINT32 src = MASK_OUT_ABOVE_8(*r_dst);
- UINT32 res = ROR_8(src, shift);
-
- if(orig_shift != 0)
- (mc68kcpu)->remaining_cycles -= orig_shift<<(mc68kcpu)->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;
-}
-
-
-void m68000_base_device_ops::m68k_op_ror_16_s(m68000_base_device* mc68kcpu)
-{
- UINT32* r_dst = &DY(mc68kcpu);
- UINT32 shift = ((((mc68kcpu)->ir >> 9) - 1) & 7) + 1;
- UINT32 src = MASK_OUT_ABOVE_16(*r_dst);
- UINT32 res = ROR_16(src, shift);
-
- if(shift != 0)
- (mc68kcpu)->remaining_cycles -= shift<<(mc68kcpu)->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;
-}
-
-
-void m68000_base_device_ops::m68k_op_ror_32_s(m68000_base_device* mc68kcpu)
-{
- UINT32* r_dst = &DY(mc68kcpu);
- UINT32 shift = ((((mc68kcpu)->ir >> 9) - 1) & 7) + 1;
- UINT64 src = *r_dst;
- UINT32 res = ROR_32(src, shift);
-
- if(shift != 0)
- (mc68kcpu)->remaining_cycles -= shift<<(mc68kcpu)->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;
-}
-
-
-void m68000_base_device_ops::m68k_op_ror_8_r(m68000_base_device* mc68kcpu)
-{
- UINT32* r_dst = &DY(mc68kcpu);
- UINT32 orig_shift = DX(mc68kcpu) & 0x3f;
- UINT32 shift = orig_shift & 7;
- UINT32 src = MASK_OUT_ABOVE_8(*r_dst);
- UINT32 res = ROR_8(src, shift);
-
- if(orig_shift != 0)
- {
- (mc68kcpu)->remaining_cycles -= orig_shift<<(mc68kcpu)->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;
- return;
- }
-
- (mc68kcpu)->c_flag = CFLAG_CLEAR;
- (mc68kcpu)->n_flag = NFLAG_8(src);
- (mc68kcpu)->not_z_flag = src;
- (mc68kcpu)->v_flag = VFLAG_CLEAR;
-}
-
-
-void m68000_base_device_ops::m68k_op_ror_16_r(m68000_base_device* mc68kcpu)
-{
- UINT32* r_dst = &DY(mc68kcpu);
- UINT32 orig_shift = DX(mc68kcpu) & 0x3f;
- UINT32 shift = orig_shift & 15;
- UINT32 src = MASK_OUT_ABOVE_16(*r_dst);
- UINT32 res = ROR_16(src, shift);
-
- if(orig_shift != 0)
- {
- (mc68kcpu)->remaining_cycles -= orig_shift<<(mc68kcpu)->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;
- return;
- }
-
- (mc68kcpu)->c_flag = CFLAG_CLEAR;
- (mc68kcpu)->n_flag = NFLAG_16(src);
- (mc68kcpu)->not_z_flag = src;
- (mc68kcpu)->v_flag = VFLAG_CLEAR;
-}
-
-
-void m68000_base_device_ops::m68k_op_ror_32_r(m68000_base_device* mc68kcpu)
-{
- UINT32* r_dst = &DY(mc68kcpu);
- UINT32 orig_shift = DX(mc68kcpu) & 0x3f;
- UINT32 shift = orig_shift & 31;
- UINT64 src = *r_dst;
- UINT32 res = ROR_32(src, shift);
-
- if(orig_shift != 0)
- {
- (mc68kcpu)->remaining_cycles -= orig_shift<<(mc68kcpu)->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;
- return;
- }
-
- (mc68kcpu)->c_flag = CFLAG_CLEAR;
- (mc68kcpu)->n_flag = NFLAG_32(src);
- (mc68kcpu)->not_z_flag = src;
- (mc68kcpu)->v_flag = VFLAG_CLEAR;
-}
-
-
-void m68000_base_device_ops::m68k_op_ror_16_ai(m68000_base_device* mc68kcpu)
-{
- UINT32 ea = EA_AY_AI_16(mc68kcpu);
- UINT32 src = m68ki_read_16((mc68kcpu), ea);
- UINT32 res = ROR_16(src, 1);
-
- m68ki_write_16((mc68kcpu), ea, res);
-
- (mc68kcpu)->n_flag = NFLAG_16(res);
- (mc68kcpu)->not_z_flag = res;
- (mc68kcpu)->c_flag = src << 8;
- (mc68kcpu)->v_flag = VFLAG_CLEAR;
-}
-
-
-void m68000_base_device_ops::m68k_op_ror_16_pi(m68000_base_device* mc68kcpu)
-{
- UINT32 ea = EA_AY_PI_16(mc68kcpu);
- UINT32 src = m68ki_read_16((mc68kcpu), ea);
- UINT32 res = ROR_16(src, 1);
-
- m68ki_write_16((mc68kcpu), ea, res);
-
- (mc68kcpu)->n_flag = NFLAG_16(res);
- (mc68kcpu)->not_z_flag = res;
- (mc68kcpu)->c_flag = src << 8;
- (mc68kcpu)->v_flag = VFLAG_CLEAR;
-}
-
-
-void m68000_base_device_ops::m68k_op_ror_16_pd(m68000_base_device* mc68kcpu)
-{
- UINT32 ea = EA_AY_PD_16(mc68kcpu);
- UINT32 src = m68ki_read_16((mc68kcpu), ea);
- UINT32 res = ROR_16(src, 1);
-
- m68ki_write_16((mc68kcpu), ea, res);
-
- (mc68kcpu)->n_flag = NFLAG_16(res);
- (mc68kcpu)->not_z_flag = res;
- (mc68kcpu)->c_flag = src << 8;
- (mc68kcpu)->v_flag = VFLAG_CLEAR;
-}
-
-
-void m68000_base_device_ops::m68k_op_ror_16_di(m68000_base_device* mc68kcpu)
-{
- UINT32 ea = EA_AY_DI_16(mc68kcpu);
- UINT32 src = m68ki_read_16((mc68kcpu), ea);
- UINT32 res = ROR_16(src, 1);
-
- m68ki_write_16((mc68kcpu), ea, res);
-
- (mc68kcpu)->n_flag = NFLAG_16(res);
- (mc68kcpu)->not_z_flag = res;
- (mc68kcpu)->c_flag = src << 8;
- (mc68kcpu)->v_flag = VFLAG_CLEAR;
-}
-
-
-void m68000_base_device_ops::m68k_op_ror_16_ix(m68000_base_device* mc68kcpu)
-{
- UINT32 ea = EA_AY_IX_16(mc68kcpu);
- UINT32 src = m68ki_read_16((mc68kcpu), ea);
- UINT32 res = ROR_16(src, 1);
-
- m68ki_write_16((mc68kcpu), ea, res);
-
- (mc68kcpu)->n_flag = NFLAG_16(res);
- (mc68kcpu)->not_z_flag = res;
- (mc68kcpu)->c_flag = src << 8;
- (mc68kcpu)->v_flag = VFLAG_CLEAR;
-}
-
-
-void m68000_base_device_ops::m68k_op_ror_16_aw(m68000_base_device* mc68kcpu)
-{
- UINT32 ea = EA_AW_16(mc68kcpu);
- UINT32 src = m68ki_read_16((mc68kcpu), ea);
- UINT32 res = ROR_16(src, 1);
-
- m68ki_write_16((mc68kcpu), ea, res);
-
- (mc68kcpu)->n_flag = NFLAG_16(res);
- (mc68kcpu)->not_z_flag = res;
- (mc68kcpu)->c_flag = src << 8;
- (mc68kcpu)->v_flag = VFLAG_CLEAR;
-}
-
-
-void m68000_base_device_ops::m68k_op_ror_16_al(m68000_base_device* mc68kcpu)
-{
- UINT32 ea = EA_AL_16(mc68kcpu);
- UINT32 src = m68ki_read_16((mc68kcpu), ea);
- UINT32 res = ROR_16(src, 1);
-
- m68ki_write_16((mc68kcpu), ea, res);
-
- (mc68kcpu)->n_flag = NFLAG_16(res);
- (mc68kcpu)->not_z_flag = res;
- (mc68kcpu)->c_flag = src << 8;
- (mc68kcpu)->v_flag = VFLAG_CLEAR;
-}
-
-
-void m68000_base_device_ops::m68k_op_rol_8_s(m68000_base_device* mc68kcpu)
-{
- UINT32* r_dst = &DY(mc68kcpu);
- UINT32 orig_shift = ((((mc68kcpu)->ir >> 9) - 1) & 7) + 1;
- UINT32 shift = orig_shift & 7;
- UINT32 src = MASK_OUT_ABOVE_8(*r_dst);
- UINT32 res = ROL_8(src, shift);
-
- if(orig_shift != 0)
- (mc68kcpu)->remaining_cycles -= orig_shift<<(mc68kcpu)->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;
-}
-
-
-void m68000_base_device_ops::m68k_op_rol_16_s(m68000_base_device* mc68kcpu)
-{
- UINT32* r_dst = &DY(mc68kcpu);
- UINT32 shift = ((((mc68kcpu)->ir >> 9) - 1) & 7) + 1;
- UINT32 src = MASK_OUT_ABOVE_16(*r_dst);
- UINT32 res = ROL_16(src, shift);
-
- if(shift != 0)
- (mc68kcpu)->remaining_cycles -= shift<<(mc68kcpu)->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;
-}
-
-
-void m68000_base_device_ops::m68k_op_rol_32_s(m68000_base_device* mc68kcpu)
-{
- UINT32* r_dst = &DY(mc68kcpu);
- UINT32 shift = ((((mc68kcpu)->ir >> 9) - 1) & 7) + 1;
- UINT64 src = *r_dst;
- UINT32 res = ROL_32(src, shift);
-
- if(shift != 0)
- (mc68kcpu)->remaining_cycles -= shift<<(mc68kcpu)->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;
-}
-
-
-void m68000_base_device_ops::m68k_op_rol_8_r(m68000_base_device* mc68kcpu)
-{
- UINT32* r_dst = &DY(mc68kcpu);
- UINT32 orig_shift = DX(mc68kcpu) & 0x3f;
- UINT32 shift = orig_shift & 7;
- UINT32 src = MASK_OUT_ABOVE_8(*r_dst);
- UINT32 res = ROL_8(src, shift);
-
- if(orig_shift != 0)
- {
- (mc68kcpu)->remaining_cycles -= orig_shift<<(mc68kcpu)->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;
- return;
- }
- (mc68kcpu)->c_flag = (src & 1)<<8;
- (mc68kcpu)->n_flag = NFLAG_8(src);
- (mc68kcpu)->not_z_flag = src;
- (mc68kcpu)->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;
-}
-
-
-void m68000_base_device_ops::m68k_op_rol_16_r(m68000_base_device* mc68kcpu)
-{
- UINT32* r_dst = &DY(mc68kcpu);
- UINT32 orig_shift = DX(mc68kcpu) & 0x3f;
- UINT32 shift = orig_shift & 15;
- UINT32 src = MASK_OUT_ABOVE_16(*r_dst);
- UINT32 res = MASK_OUT_ABOVE_16(ROL_16(src, shift));
-
- if(orig_shift != 0)
- {
- (mc68kcpu)->remaining_cycles -= orig_shift<<(mc68kcpu)->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;
- return;
- }
- (mc68kcpu)->c_flag = (src & 1)<<8;
- (mc68kcpu)->n_flag = NFLAG_16(src);
- (mc68kcpu)->not_z_flag = src;
- (mc68kcpu)->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;
-}
-
-
-void m68000_base_device_ops::m68k_op_rol_32_r(m68000_base_device* mc68kcpu)
-{
- UINT32* r_dst = &DY(mc68kcpu);
- UINT32 orig_shift = DX(mc68kcpu) & 0x3f;
- UINT32 shift = orig_shift & 31;
- UINT64 src = *r_dst;
- UINT32 res = ROL_32(src, shift);
-
- if(orig_shift != 0)
- {
- (mc68kcpu)->remaining_cycles -= orig_shift<<(mc68kcpu)->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;
- return;
- }
-
- (mc68kcpu)->c_flag = CFLAG_CLEAR;
- (mc68kcpu)->n_flag = NFLAG_32(src);
- (mc68kcpu)->not_z_flag = src;
- (mc68kcpu)->v_flag = VFLAG_CLEAR;
-}
-
-
-void m68000_base_device_ops::m68k_op_rol_16_ai(m68000_base_device* mc68kcpu)
-{
- UINT32 ea = EA_AY_AI_16(mc68kcpu);
- UINT32 src = m68ki_read_16((mc68kcpu), ea);
- UINT32 res = MASK_OUT_ABOVE_16(ROL_16(src, 1));
-
- m68ki_write_16((mc68kcpu), ea, res);
-
- (mc68kcpu)->n_flag = NFLAG_16(res);
- (mc68kcpu)->not_z_flag = res;
- (mc68kcpu)->c_flag = src >> 7;
- (mc68kcpu)->v_flag = VFLAG_CLEAR;
-}
-
-
-void m68000_base_device_ops::m68k_op_rol_16_pi(m68000_base_device* mc68kcpu)
-{
- UINT32 ea = EA_AY_PI_16(mc68kcpu);
- UINT32 src = m68ki_read_16((mc68kcpu), ea);
- UINT32 res = MASK_OUT_ABOVE_16(ROL_16(src, 1));
-
- m68ki_write_16((mc68kcpu), ea, res);
-
- (mc68kcpu)->n_flag = NFLAG_16(res);
- (mc68kcpu)->not_z_flag = res;
- (mc68kcpu)->c_flag = src >> 7;
- (mc68kcpu)->v_flag = VFLAG_CLEAR;
-}
-
-
-void m68000_base_device_ops::m68k_op_rol_16_pd(m68000_base_device* mc68kcpu)
-{
- UINT32 ea = EA_AY_PD_16(mc68kcpu);
- UINT32 src = m68ki_read_16((mc68kcpu), ea);
- UINT32 res = MASK_OUT_ABOVE_16(ROL_16(src, 1));
-
- m68ki_write_16((mc68kcpu), ea, res);
-
- (mc68kcpu)->n_flag = NFLAG_16(res);
- (mc68kcpu)->not_z_flag = res;
- (mc68kcpu)->c_flag = src >> 7;
- (mc68kcpu)->v_flag = VFLAG_CLEAR;
-}
-
-
-void m68000_base_device_ops::m68k_op_rol_16_di(m68000_base_device* mc68kcpu)
-{
- UINT32 ea = EA_AY_DI_16(mc68kcpu);
- UINT32 src = m68ki_read_16((mc68kcpu), ea);
- UINT32 res = MASK_OUT_ABOVE_16(ROL_16(src, 1));
-
- m68ki_write_16((mc68kcpu), ea, res);
-
- (mc68kcpu)->n_flag = NFLAG_16(res);
- (mc68kcpu)->not_z_flag = res;
- (mc68kcpu)->c_flag = src >> 7;
- (mc68kcpu)->v_flag = VFLAG_CLEAR;
-}
-
-
-void m68000_base_device_ops::m68k_op_rol_16_ix(m68000_base_device* mc68kcpu)
-{
- UINT32 ea = EA_AY_IX_16(mc68kcpu);
- UINT32 src = m68ki_read_16((mc68kcpu), ea);
- UINT32 res = MASK_OUT_ABOVE_16(ROL_16(src, 1));
-
- m68ki_write_16((mc68kcpu), ea, res);
-
- (mc68kcpu)->n_flag = NFLAG_16(res);
- (mc68kcpu)->not_z_flag = res;
- (mc68kcpu)->c_flag = src >> 7;
- (mc68kcpu)->v_flag = VFLAG_CLEAR;
-}
-
-
-void m68000_base_device_ops::m68k_op_rol_16_aw(m68000_base_device* mc68kcpu)
-{
- UINT32 ea = EA_AW_16(mc68kcpu);
- UINT32 src = m68ki_read_16((mc68kcpu), ea);
- UINT32 res = MASK_OUT_ABOVE_16(ROL_16(src, 1));
-
- m68ki_write_16((mc68kcpu), ea, res);
-
- (mc68kcpu)->n_flag = NFLAG_16(res);
- (mc68kcpu)->not_z_flag = res;
- (mc68kcpu)->c_flag = src >> 7;
- (mc68kcpu)->v_flag = VFLAG_CLEAR;
-}
-
-
-void m68000_base_device_ops::m68k_op_rol_16_al(m68000_base_device* mc68kcpu)
-{
- UINT32 ea = EA_AL_16(mc68kcpu);
- UINT32 src = m68ki_read_16((mc68kcpu), ea);
- UINT32 res = MASK_OUT_ABOVE_16(ROL_16(src, 1));
-
- m68ki_write_16((mc68kcpu), ea, res);
-
- (mc68kcpu)->n_flag = NFLAG_16(res);
- (mc68kcpu)->not_z_flag = res;
- (mc68kcpu)->c_flag = src >> 7;
- (mc68kcpu)->v_flag = VFLAG_CLEAR;
-}
-
-
-void m68000_base_device_ops::m68k_op_roxr_8_s(m68000_base_device* mc68kcpu)
-{
- UINT32* r_dst = &DY(mc68kcpu);
- UINT32 shift = ((((mc68kcpu)->ir >> 9) - 1) & 7) + 1;
- UINT32 src = MASK_OUT_ABOVE_8(*r_dst);
- UINT32 res = ROR_9(src | (XFLAG_AS_1(mc68kcpu) << 8), shift);
-
- if(shift != 0)
- (mc68kcpu)->remaining_cycles -= shift<<(mc68kcpu)->cyc_shift;
-
- (mc68kcpu)->c_flag = (mc68kcpu)->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;
-}
-
-
-void m68000_base_device_ops::m68k_op_roxr_16_s(m68000_base_device* mc68kcpu)
-{
- UINT32* r_dst = &DY(mc68kcpu);
- UINT32 shift = ((((mc68kcpu)->ir >> 9) - 1) & 7) + 1;
- UINT32 src = MASK_OUT_ABOVE_16(*r_dst);
- UINT32 res = ROR_17(src | (XFLAG_AS_1(mc68kcpu) << 16), shift);
-
- if(shift != 0)
- (mc68kcpu)->remaining_cycles -= shift<<(mc68kcpu)->cyc_shift;
-
- (mc68kcpu)->c_flag = (mc68kcpu)->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;
-}
-
-
-void m68000_base_device_ops::m68k_op_roxr_32_s(m68000_base_device* mc68kcpu)
-{
- UINT32* r_dst = &DY(mc68kcpu);
- UINT32 shift = ((((mc68kcpu)->ir >> 9) - 1) & 7) + 1;
- UINT64 src = *r_dst;
- UINT64 res = src | (((UINT64)XFLAG_AS_1(mc68kcpu)) << 32);
-
- if(shift != 0)
- (mc68kcpu)->remaining_cycles -= shift<<(mc68kcpu)->cyc_shift;
-
- res = ROR_33_64(res, shift);
-
- (mc68kcpu)->c_flag = (mc68kcpu)->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;
-}
-
-
-void m68000_base_device_ops::m68k_op_roxr_8_r(m68000_base_device* mc68kcpu)
-{
- UINT32* r_dst = &DY(mc68kcpu);
- UINT32 orig_shift = DX(mc68kcpu) & 0x3f;
-
- if(orig_shift != 0)
- {
- UINT32 shift = orig_shift % 9;
- UINT32 src = MASK_OUT_ABOVE_8(*r_dst);
- UINT32 res = ROR_9(src | (XFLAG_AS_1(mc68kcpu) << 8), shift);
-
- (mc68kcpu)->remaining_cycles -= orig_shift<<(mc68kcpu)->cyc_shift;
-
- (mc68kcpu)->c_flag = (mc68kcpu)->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;
- 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;
-}
-
-
-void m68000_base_device_ops::m68k_op_roxr_16_r(m68000_base_device* mc68kcpu)
-{
- UINT32* r_dst = &DY(mc68kcpu);
- UINT32 orig_shift = DX(mc68kcpu) & 0x3f;
-
- if(orig_shift != 0)
- {
- UINT32 shift = orig_shift % 17;
- UINT32 src = MASK_OUT_ABOVE_16(*r_dst);
- UINT32 res = ROR_17(src | (XFLAG_AS_1(mc68kcpu) << 16), shift);
-
- (mc68kcpu)->remaining_cycles -= orig_shift<<(mc68kcpu)->cyc_shift;
-
- (mc68kcpu)->c_flag = (mc68kcpu)->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;
- 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;
-}
-
-
-void m68000_base_device_ops::m68k_op_roxr_32_r(m68000_base_device* mc68kcpu)
-{
- UINT32* r_dst = &DY(mc68kcpu);
- UINT32 orig_shift = DX(mc68kcpu) & 0x3f;
-
- if(orig_shift != 0)
- {
- UINT32 shift = orig_shift % 33;
- UINT64 src = *r_dst;
- UINT64 res = src | (((UINT64)XFLAG_AS_1(mc68kcpu)) << 32);
-
- res = ROR_33_64(res, shift);
-
- (mc68kcpu)->remaining_cycles -= orig_shift<<(mc68kcpu)->cyc_shift;
-
- (mc68kcpu)->c_flag = (mc68kcpu)->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;
- 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;
-}
-
-
-void m68000_base_device_ops::m68k_op_roxr_16_ai(m68000_base_device* mc68kcpu)
-{
- UINT32 ea = EA_AY_AI_16(mc68kcpu);
- UINT32 src = m68ki_read_16((mc68kcpu), ea);
- UINT32 res = ROR_17(src | (XFLAG_AS_1(mc68kcpu) << 16), 1);
-
- (mc68kcpu)->c_flag = (mc68kcpu)->x_flag = res >> 8;
- res = MASK_OUT_ABOVE_16(res);
-
- m68ki_write_16((mc68kcpu), ea, res);
-
- (mc68kcpu)->n_flag = NFLAG_16(res);
- (mc68kcpu)->not_z_flag = res;
- (mc68kcpu)->v_flag = VFLAG_CLEAR;
-}
-
-
-void m68000_base_device_ops::m68k_op_roxr_16_pi(m68000_base_device* mc68kcpu)
-{
- UINT32 ea = EA_AY_PI_16(mc68kcpu);
- UINT32 src = m68ki_read_16((mc68kcpu), ea);
- UINT32 res = ROR_17(src | (XFLAG_AS_1(mc68kcpu) << 16), 1);
-
- (mc68kcpu)->c_flag = (mc68kcpu)->x_flag = res >> 8;
- res = MASK_OUT_ABOVE_16(res);
-
- m68ki_write_16((mc68kcpu), ea, res);
-
- (mc68kcpu)->n_flag = NFLAG_16(res);
- (mc68kcpu)->not_z_flag = res;
- (mc68kcpu)->v_flag = VFLAG_CLEAR;
-}
-
-
-void m68000_base_device_ops::m68k_op_roxr_16_pd(m68000_base_device* mc68kcpu)
-{
- UINT32 ea = EA_AY_PD_16(mc68kcpu);
- UINT32 src = m68ki_read_16((mc68kcpu), ea);
- UINT32 res = ROR_17(src | (XFLAG_AS_1(mc68kcpu) << 16), 1);
-
- (mc68kcpu)->c_flag = (mc68kcpu)->x_flag = res >> 8;
- res = MASK_OUT_ABOVE_16(res);
-
- m68ki_write_16((mc68kcpu), ea, res);
-
- (mc68kcpu)->n_flag = NFLAG_16(res);
- (mc68kcpu)->not_z_flag = res;
- (mc68kcpu)->v_flag = VFLAG_CLEAR;
-}
-
-
-void m68000_base_device_ops::m68k_op_roxr_16_di(m68000_base_device* mc68kcpu)
-{
- UINT32 ea = EA_AY_DI_16(mc68kcpu);
- UINT32 src = m68ki_read_16((mc68kcpu), ea);
- UINT32 res = ROR_17(src | (XFLAG_AS_1(mc68kcpu) << 16), 1);
-
- (mc68kcpu)->c_flag = (mc68kcpu)->x_flag = res >> 8;
- res = MASK_OUT_ABOVE_16(res);
-
- m68ki_write_16((mc68kcpu), ea, res);
-
- (mc68kcpu)->n_flag = NFLAG_16(res);
- (mc68kcpu)->not_z_flag = res;
- (mc68kcpu)->v_flag = VFLAG_CLEAR;
-}
-
-
-void m68000_base_device_ops::m68k_op_roxr_16_ix(m68000_base_device* mc68kcpu)
-{
- UINT32 ea = EA_AY_IX_16(mc68kcpu);
- UINT32 src = m68ki_read_16((mc68kcpu), ea);
- UINT32 res = ROR_17(src | (XFLAG_AS_1(mc68kcpu) << 16), 1);
-
- (mc68kcpu)->c_flag = (mc68kcpu)->x_flag = res >> 8;
- res = MASK_OUT_ABOVE_16(res);
-
- m68ki_write_16((mc68kcpu), ea, res);
-
- (mc68kcpu)->n_flag = NFLAG_16(res);
- (mc68kcpu)->not_z_flag = res;
- (mc68kcpu)->v_flag = VFLAG_CLEAR;
-}
-
-
-void m68000_base_device_ops::m68k_op_roxr_16_aw(m68000_base_device* mc68kcpu)
-{
- UINT32 ea = EA_AW_16(mc68kcpu);
- UINT32 src = m68ki_read_16((mc68kcpu), ea);
- UINT32 res = ROR_17(src | (XFLAG_AS_1(mc68kcpu) << 16), 1);
-
- (mc68kcpu)->c_flag = (mc68kcpu)->x_flag = res >> 8;
- res = MASK_OUT_ABOVE_16(res);
-
- m68ki_write_16((mc68kcpu), ea, res);
-
- (mc68kcpu)->n_flag = NFLAG_16(res);
- (mc68kcpu)->not_z_flag = res;
- (mc68kcpu)->v_flag = VFLAG_CLEAR;
-}
-
-
-void m68000_base_device_ops::m68k_op_roxr_16_al(m68000_base_device* mc68kcpu)
-{
- UINT32 ea = EA_AL_16(mc68kcpu);
- UINT32 src = m68ki_read_16((mc68kcpu), ea);
- UINT32 res = ROR_17(src | (XFLAG_AS_1(mc68kcpu) << 16), 1);
-
- (mc68kcpu)->c_flag = (mc68kcpu)->x_flag = res >> 8;
- res = MASK_OUT_ABOVE_16(res);
-
- m68ki_write_16((mc68kcpu), ea, res);
-
- (mc68kcpu)->n_flag = NFLAG_16(res);
- (mc68kcpu)->not_z_flag = res;
- (mc68kcpu)->v_flag = VFLAG_CLEAR;
-}
-
-
-void m68000_base_device_ops::m68k_op_roxl_8_s(m68000_base_device* mc68kcpu)
-{
- UINT32* r_dst = &DY(mc68kcpu);
- UINT32 shift = ((((mc68kcpu)->ir >> 9) - 1) & 7) + 1;
- UINT32 src = MASK_OUT_ABOVE_8(*r_dst);
- UINT32 res = ROL_9(src | (XFLAG_AS_1(mc68kcpu) << 8), shift);
-
- if(shift != 0)
- (mc68kcpu)->remaining_cycles -= shift<<(mc68kcpu)->cyc_shift;
-
- (mc68kcpu)->c_flag = (mc68kcpu)->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;
-}
-
-
-void m68000_base_device_ops::m68k_op_roxl_16_s(m68000_base_device* mc68kcpu)
-{
- UINT32* r_dst = &DY(mc68kcpu);
- UINT32 shift = ((((mc68kcpu)->ir >> 9) - 1) & 7) + 1;
- UINT32 src = MASK_OUT_ABOVE_16(*r_dst);
- UINT32 res = ROL_17(src | (XFLAG_AS_1(mc68kcpu) << 16), shift);
-
- if(shift != 0)
- (mc68kcpu)->remaining_cycles -= shift<<(mc68kcpu)->cyc_shift;
-
- (mc68kcpu)->c_flag = (mc68kcpu)->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;
-}
-
-
-void m68000_base_device_ops::m68k_op_roxl_32_s(m68000_base_device* mc68kcpu)
-{
- UINT32* r_dst = &DY(mc68kcpu);
- UINT32 shift = ((((mc68kcpu)->ir >> 9) - 1) & 7) + 1;
- UINT64 src = *r_dst;
- UINT64 res = src | (((UINT64)XFLAG_AS_1(mc68kcpu)) << 32);
-
- if(shift != 0)
- (mc68kcpu)->remaining_cycles -= shift<<(mc68kcpu)->cyc_shift;
-
- res = ROL_33_64(res, shift);
-
- (mc68kcpu)->c_flag = (mc68kcpu)->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;
-}
-
-
-void m68000_base_device_ops::m68k_op_roxl_8_r(m68000_base_device* mc68kcpu)
-{
- UINT32* r_dst = &DY(mc68kcpu);
- UINT32 orig_shift = DX(mc68kcpu) & 0x3f;
-
-
- if(orig_shift != 0)
- {
- UINT32 shift = orig_shift % 9;
- UINT32 src = MASK_OUT_ABOVE_8(*r_dst);
- UINT32 res = ROL_9(src | (XFLAG_AS_1(mc68kcpu) << 8), shift);
-
- (mc68kcpu)->remaining_cycles -= orig_shift<<(mc68kcpu)->cyc_shift;
-
- (mc68kcpu)->c_flag = (mc68kcpu)->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;
- 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;
-}
-
-
-void m68000_base_device_ops::m68k_op_roxl_16_r(m68000_base_device* mc68kcpu)
-{
- UINT32* r_dst = &DY(mc68kcpu);
- UINT32 orig_shift = DX(mc68kcpu) & 0x3f;
-
- if(orig_shift != 0)
- {
- UINT32 shift = orig_shift % 17;
- UINT32 src = MASK_OUT_ABOVE_16(*r_dst);
- UINT32 res = ROL_17(src | (XFLAG_AS_1(mc68kcpu) << 16), shift);
-
- (mc68kcpu)->remaining_cycles -= orig_shift<<(mc68kcpu)->cyc_shift;
-
- (mc68kcpu)->c_flag = (mc68kcpu)->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;
- 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;
-}
-
-
-void m68000_base_device_ops::m68k_op_roxl_32_r(m68000_base_device* mc68kcpu)
-{
- UINT32* r_dst = &DY(mc68kcpu);
- UINT32 orig_shift = DX(mc68kcpu) & 0x3f;
-
- if(orig_shift != 0)
- {
- UINT32 shift = orig_shift % 33;
- UINT64 src = *r_dst;
- UINT64 res = src | (((UINT64)XFLAG_AS_1(mc68kcpu)) << 32);
-
- res = ROL_33_64(res, shift);
-
- (mc68kcpu)->remaining_cycles -= orig_shift<<(mc68kcpu)->cyc_shift;
-
- (mc68kcpu)->c_flag = (mc68kcpu)->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;
- 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;
-}
-
-
-void m68000_base_device_ops::m68k_op_roxl_16_ai(m68000_base_device* mc68kcpu)
-{
- UINT32 ea = EA_AY_AI_16(mc68kcpu);
- UINT32 src = m68ki_read_16((mc68kcpu), ea);
- UINT32 res = ROL_17(src | (XFLAG_AS_1(mc68kcpu) << 16), 1);
-
- (mc68kcpu)->c_flag = (mc68kcpu)->x_flag = res >> 8;
- res = MASK_OUT_ABOVE_16(res);
-
- m68ki_write_16((mc68kcpu), ea, res);
-
- (mc68kcpu)->n_flag = NFLAG_16(res);
- (mc68kcpu)->not_z_flag = res;
- (mc68kcpu)->v_flag = VFLAG_CLEAR;
-}
-
-
-void m68000_base_device_ops::m68k_op_roxl_16_pi(m68000_base_device* mc68kcpu)
-{
- UINT32 ea = EA_AY_PI_16(mc68kcpu);
- UINT32 src = m68ki_read_16((mc68kcpu), ea);
- UINT32 res = ROL_17(src | (XFLAG_AS_1(mc68kcpu) << 16), 1);
-
- (mc68kcpu)->c_flag = (mc68kcpu)->x_flag = res >> 8;
- res = MASK_OUT_ABOVE_16(res);
-
- m68ki_write_16((mc68kcpu), ea, res);
-
- (mc68kcpu)->n_flag = NFLAG_16(res);
- (mc68kcpu)->not_z_flag = res;
- (mc68kcpu)->v_flag = VFLAG_CLEAR;
-}
-
-
-void m68000_base_device_ops::m68k_op_roxl_16_pd(m68000_base_device* mc68kcpu)
-{
- UINT32 ea = EA_AY_PD_16(mc68kcpu);
- UINT32 src = m68ki_read_16((mc68kcpu), ea);
- UINT32 res = ROL_17(src | (XFLAG_AS_1(mc68kcpu) << 16), 1);
-
- (mc68kcpu)->c_flag = (mc68kcpu)->x_flag = res >> 8;
- res = MASK_OUT_ABOVE_16(res);
-
- m68ki_write_16((mc68kcpu), ea, res);
-
- (mc68kcpu)->n_flag = NFLAG_16(res);
- (mc68kcpu)->not_z_flag = res;
- (mc68kcpu)->v_flag = VFLAG_CLEAR;
-}
-
-
-void m68000_base_device_ops::m68k_op_roxl_16_di(m68000_base_device* mc68kcpu)
-{
- UINT32 ea = EA_AY_DI_16(mc68kcpu);
- UINT32 src = m68ki_read_16((mc68kcpu), ea);
- UINT32 res = ROL_17(src | (XFLAG_AS_1(mc68kcpu) << 16), 1);
-
- (mc68kcpu)->c_flag = (mc68kcpu)->x_flag = res >> 8;
- res = MASK_OUT_ABOVE_16(res);
-
- m68ki_write_16((mc68kcpu), ea, res);
-
- (mc68kcpu)->n_flag = NFLAG_16(res);
- (mc68kcpu)->not_z_flag = res;
- (mc68kcpu)->v_flag = VFLAG_CLEAR;
-}
-
-
-void m68000_base_device_ops::m68k_op_roxl_16_ix(m68000_base_device* mc68kcpu)
-{
- UINT32 ea = EA_AY_IX_16(mc68kcpu);
- UINT32 src = m68ki_read_16((mc68kcpu), ea);
- UINT32 res = ROL_17(src | (XFLAG_AS_1(mc68kcpu) << 16), 1);
-
- (mc68kcpu)->c_flag = (mc68kcpu)->x_flag = res >> 8;
- res = MASK_OUT_ABOVE_16(res);
-
- m68ki_write_16((mc68kcpu), ea, res);
-
- (mc68kcpu)->n_flag = NFLAG_16(res);
- (mc68kcpu)->not_z_flag = res;
- (mc68kcpu)->v_flag = VFLAG_CLEAR;
-}
-
-
-void m68000_base_device_ops::m68k_op_roxl_16_aw(m68000_base_device* mc68kcpu)
-{
- UINT32 ea = EA_AW_16(mc68kcpu);
- UINT32 src = m68ki_read_16((mc68kcpu), ea);
- UINT32 res = ROL_17(src | (XFLAG_AS_1(mc68kcpu) << 16), 1);
-
- (mc68kcpu)->c_flag = (mc68kcpu)->x_flag = res >> 8;
- res = MASK_OUT_ABOVE_16(res);
-
- m68ki_write_16((mc68kcpu), ea, res);
-
- (mc68kcpu)->n_flag = NFLAG_16(res);
- (mc68kcpu)->not_z_flag = res;
- (mc68kcpu)->v_flag = VFLAG_CLEAR;
-}
-
-
-void m68000_base_device_ops::m68k_op_roxl_16_al(m68000_base_device* mc68kcpu)
-{
- UINT32 ea = EA_AL_16(mc68kcpu);
- UINT32 src = m68ki_read_16((mc68kcpu), ea);
- UINT32 res = ROL_17(src | (XFLAG_AS_1(mc68kcpu) << 16), 1);
-
- (mc68kcpu)->c_flag = (mc68kcpu)->x_flag = res >> 8;
- res = MASK_OUT_ABOVE_16(res);
-
- m68ki_write_16((mc68kcpu), ea, res);
-
- (mc68kcpu)->n_flag = NFLAG_16(res);
- (mc68kcpu)->not_z_flag = res;
- (mc68kcpu)->v_flag = VFLAG_CLEAR;
-}
-
-
-void m68000_base_device_ops::m68k_op_rtd_32(m68000_base_device* mc68kcpu)
-{
- if(CPU_TYPE_IS_010_PLUS((mc68kcpu)->cpu_type))
- {
- UINT32 new_pc = m68ki_pull_32(mc68kcpu);
-
- 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);
- return;
- }
- m68ki_exception_illegal(mc68kcpu);
-}
-
-
-void m68000_base_device_ops::m68k_op_rte_32(m68000_base_device* mc68kcpu)
-{
- if((mc68kcpu)->s_flag)
- {
- UINT32 new_sr;
- UINT32 new_pc;
- UINT32 format_word;
-
- if (!(mc68kcpu)->rte_instr_callback.isnull())
- ((mc68kcpu)->rte_instr_callback)(1);
- m68ki_trace_t0(mc68kcpu); /* auto-disable (see m68kcpu.h) */
-
- if(CPU_TYPE_IS_000((mc68kcpu)->cpu_type))
- {
- new_sr = m68ki_pull_16(mc68kcpu);
- new_pc = m68ki_pull_32(mc68kcpu);
- m68ki_jump((mc68kcpu), new_pc);
- m68ki_set_sr((mc68kcpu), new_sr);
-
- (mc68kcpu)->instr_mode = INSTRUCTION_YES;
- (mc68kcpu)->run_mode = RUN_MODE_NORMAL;
-
- return;
- }
-
- if(CPU_TYPE_IS_010((mc68kcpu)->cpu_type))
- {
- format_word = m68ki_read_16((mc68kcpu), REG_A(mc68kcpu)[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;
- return;
- }
- (mc68kcpu)->instr_mode = INSTRUCTION_YES;
- (mc68kcpu)->run_mode = RUN_MODE_NORMAL;
- /* Not handling bus fault (9) */
- m68ki_exception_format_error(mc68kcpu);
- return;
- }
-
- /* Otherwise it's 020 */
-rte_loop:
- format_word = m68ki_read_16((mc68kcpu), REG_A(mc68kcpu)[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;
- 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);
- 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;
- 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;
- 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;
- 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;
- return;
- }
- /* Not handling long or short bus fault */
- (mc68kcpu)->instr_mode = INSTRUCTION_YES;
- (mc68kcpu)->run_mode = RUN_MODE_NORMAL;
- m68ki_exception_format_error(mc68kcpu);
- return;
- }
- m68ki_exception_privilege_violation(mc68kcpu);
-}
-
-
-void m68000_base_device_ops::m68k_op_rtm_32(m68000_base_device* mc68kcpu)
-{
- if(CPU_TYPE_IS_020_VARIANT((mc68kcpu)->cpu_type))
- {
- 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);
- return;
- }
- m68ki_exception_illegal(mc68kcpu);
-}
-
-
-void m68000_base_device_ops::m68k_op_rtr_32(m68000_base_device* mc68kcpu)
-{
- m68ki_trace_t0(mc68kcpu); /* auto-disable (see m68kcpu.h) */
- m68ki_set_ccr((mc68kcpu), m68ki_pull_16(mc68kcpu));
- m68ki_jump((mc68kcpu), m68ki_pull_32(mc68kcpu));
-}
-
-
-void m68000_base_device_ops::m68k_op_rts_32(m68000_base_device* mc68kcpu)
-{
- m68ki_trace_t0(mc68kcpu); /* auto-disable (see m68kcpu.h) */
- m68ki_jump((mc68kcpu), m68ki_pull_32(mc68kcpu));
-}
-
-
-void m68000_base_device_ops::m68k_op_sbcd_8_rr(m68000_base_device* mc68kcpu)
-{
- UINT32* r_dst = &DX(mc68kcpu);
- UINT32 src = DY(mc68kcpu);
- UINT32 dst = *r_dst;
- UINT32 res = LOW_NIBBLE(dst) - LOW_NIBBLE(src) - XFLAG_AS_1(mc68kcpu);
-
-// (mc68kcpu)->v_flag = ~res; /* Undefined V behavior */
- (mc68kcpu)->v_flag = VFLAG_CLEAR; /* Undefined in Motorola's M68000PM/AD rev.1 and safer to assume cleared. */
-
- if(res > 9)
- res -= 6;
- res += HIGH_NIBBLE(dst) - HIGH_NIBBLE(src);
- if(res > 0x99)
- {
- res += 0xa0;
- (mc68kcpu)->x_flag = (mc68kcpu)->c_flag = CFLAG_SET;
- (mc68kcpu)->n_flag = NFLAG_SET; /* Undefined in Motorola's M68000PM/AD rev.1 and safer to follow carry. */
- }
- else
- (mc68kcpu)->n_flag = (mc68kcpu)->x_flag = (mc68kcpu)->c_flag = 0;
-
- res = MASK_OUT_ABOVE_8(res);
-
-// (mc68kcpu)->v_flag &= res; /* Undefined V behavior part II */
-// (mc68kcpu)->n_flag = NFLAG_8(res); /* Undefined N behavior */
- (mc68kcpu)->not_z_flag |= res;
-
- *r_dst = MASK_OUT_BELOW_8(*r_dst) | res;
-}
-
-
-void m68000_base_device_ops::m68k_op_sbcd_8_mm_ax7(m68000_base_device* mc68kcpu)
-{
- UINT32 src = OPER_AY_PD_8(mc68kcpu);
- UINT32 ea = EA_A7_PD_8(mc68kcpu);
- UINT32 dst = m68ki_read_8((mc68kcpu), ea);
- UINT32 res = LOW_NIBBLE(dst) - LOW_NIBBLE(src) - XFLAG_AS_1(mc68kcpu);
-
-// (mc68kcpu)->v_flag = ~res; /* Undefined V behavior */
- (mc68kcpu)->v_flag = VFLAG_CLEAR; /* Undefined in Motorola's M68000PM/AD rev.1 and safer to return zero. */
-
- if(res > 9)
- res -= 6;
- res += HIGH_NIBBLE(dst) - HIGH_NIBBLE(src);
- if(res > 0x99)
- {
- res += 0xa0;
- (mc68kcpu)->x_flag = (mc68kcpu)->c_flag = CFLAG_SET;
- (mc68kcpu)->n_flag = NFLAG_SET; /* Undefined in Motorola's M68000PM/AD rev.1 and safer to follow carry. */
- }
- else
- (mc68kcpu)->n_flag = (mc68kcpu)->x_flag = (mc68kcpu)->c_flag = 0;
-
- res = MASK_OUT_ABOVE_8(res);
-
-// (mc68kcpu)->v_flag &= res; /* Undefined V behavior part II */
-// (mc68kcpu)->n_flag = NFLAG_8(res); /* Undefined N behavior */
- (mc68kcpu)->not_z_flag |= res;
-
- m68ki_write_8((mc68kcpu), ea, res);
-}
-
-
-void m68000_base_device_ops::m68k_op_sbcd_8_mm_ay7(m68000_base_device* mc68kcpu)
-{
- UINT32 src = OPER_A7_PD_8(mc68kcpu);
- UINT32 ea = EA_AX_PD_8(mc68kcpu);
- UINT32 dst = m68ki_read_8((mc68kcpu), ea);
- UINT32 res = LOW_NIBBLE(dst) - LOW_NIBBLE(src) - XFLAG_AS_1(mc68kcpu);
-
-// (mc68kcpu)->v_flag = ~res; /* Undefined V behavior */
- (mc68kcpu)->v_flag = VFLAG_CLEAR; /* Undefined in Motorola's M68000PM/AD rev.1 and safer to return zero. */
-
- if(res > 9)
- res -= 6;
- res += HIGH_NIBBLE(dst) - HIGH_NIBBLE(src);
- if(res > 0x99)
- {
- res += 0xa0;
- (mc68kcpu)->x_flag = (mc68kcpu)->c_flag = CFLAG_SET;
- (mc68kcpu)->n_flag = NFLAG_SET; /* Undefined in Motorola's M68000PM/AD rev.1 and safer to follow carry. */
- }
- else
- (mc68kcpu)->n_flag = (mc68kcpu)->x_flag = (mc68kcpu)->c_flag = 0;
-
- res = MASK_OUT_ABOVE_8(res);
-
-// (mc68kcpu)->v_flag &= res; /* Undefined V behavior part II */
-// (mc68kcpu)->n_flag = NFLAG_8(res); /* Undefined N behavior */
- (mc68kcpu)->not_z_flag |= res;
-
- m68ki_write_8((mc68kcpu), ea, res);
-}
-
-
-void m68000_base_device_ops::m68k_op_sbcd_8_mm_axy7(m68000_base_device* mc68kcpu)
-{
- UINT32 src = OPER_A7_PD_8(mc68kcpu);
- UINT32 ea = EA_A7_PD_8(mc68kcpu);
- UINT32 dst = m68ki_read_8((mc68kcpu), ea);
- UINT32 res = LOW_NIBBLE(dst) - LOW_NIBBLE(src) - XFLAG_AS_1(mc68kcpu);
-
-// (mc68kcpu)->v_flag = ~res; /* Undefined V behavior */
- (mc68kcpu)->v_flag = VFLAG_CLEAR; /* Undefined in Motorola's M68000PM/AD rev.1 and safer to return zero. */
-
- if(res > 9)
- res -= 6;
- res += HIGH_NIBBLE(dst) - HIGH_NIBBLE(src);
- if(res > 0x99)
- {
- res += 0xa0;
- (mc68kcpu)->x_flag = (mc68kcpu)->c_flag = CFLAG_SET;
- (mc68kcpu)->n_flag = NFLAG_SET; /* Undefined in Motorola's M68000PM/AD rev.1 and safer to follow carry. */
- }
- else
- (mc68kcpu)->n_flag = (mc68kcpu)->x_flag = (mc68kcpu)->c_flag = 0;
-
- res = MASK_OUT_ABOVE_8(res);
-
-// (mc68kcpu)->v_flag &= res; /* Undefined V behavior part II */
-// (mc68kcpu)->n_flag = NFLAG_8(res); /* Undefined N behavior */
- (mc68kcpu)->not_z_flag |= res;
-
- m68ki_write_8((mc68kcpu), ea, res);
-}
-
-
-void m68000_base_device_ops::m68k_op_sbcd_8_mm(m68000_base_device* mc68kcpu)
-{
- UINT32 src = OPER_AY_PD_8(mc68kcpu);
- UINT32 ea = EA_AX_PD_8(mc68kcpu);
- UINT32 dst = m68ki_read_8((mc68kcpu), ea);
- UINT32 res = LOW_NIBBLE(dst) - LOW_NIBBLE(src) - XFLAG_AS_1(mc68kcpu);
-
-// (mc68kcpu)->v_flag = ~res; /* Undefined V behavior */
- (mc68kcpu)->v_flag = VFLAG_CLEAR; /* Undefined in Motorola's M68000PM/AD rev.1 and safer to return zero. */
-
- if(res > 9)
- res -= 6;
- res += HIGH_NIBBLE(dst) - HIGH_NIBBLE(src);
- if(res > 0x99)
- {
- res += 0xa0;
- (mc68kcpu)->x_flag = (mc68kcpu)->c_flag = CFLAG_SET;
- (mc68kcpu)->n_flag = NFLAG_SET; /* Undefined in Motorola's M68000PM/AD rev.1 and safer to follow carry. */
- }
- else
- (mc68kcpu)->n_flag = (mc68kcpu)->x_flag = (mc68kcpu)->c_flag = 0;
-
- res = MASK_OUT_ABOVE_8(res);
-
-// (mc68kcpu)->v_flag &= res; /* Undefined V behavior part II */
-// (mc68kcpu)->n_flag = NFLAG_8(res); /* Undefined N behavior */
- (mc68kcpu)->not_z_flag |= res;
-
- m68ki_write_8((mc68kcpu), ea, res);
-}
-
-
-void m68000_base_device_ops::m68k_op_st_8_d(m68000_base_device* mc68kcpu)
-{
- DY(mc68kcpu) |= 0xff;
-}
-
-
-void m68000_base_device_ops::m68k_op_st_8_ai(m68000_base_device* mc68kcpu)
-{
- m68ki_write_8((mc68kcpu), EA_AY_AI_8(mc68kcpu), 0xff);
-}
-
-
-void m68000_base_device_ops::m68k_op_st_8_pi(m68000_base_device* mc68kcpu)
-{
- m68ki_write_8((mc68kcpu), EA_AY_PI_8(mc68kcpu), 0xff);
-}
-
-
-void m68000_base_device_ops::m68k_op_st_8_pi7(m68000_base_device* mc68kcpu)
-{
- m68ki_write_8((mc68kcpu), EA_A7_PI_8(mc68kcpu), 0xff);
-}
-
-
-void m68000_base_device_ops::m68k_op_st_8_pd(m68000_base_device* mc68kcpu)
-{
- m68ki_write_8((mc68kcpu), EA_AY_PD_8(mc68kcpu), 0xff);
-}
-
-
-void m68000_base_device_ops::m68k_op_st_8_pd7(m68000_base_device* mc68kcpu)
-{
- m68ki_write_8((mc68kcpu), EA_A7_PD_8(mc68kcpu), 0xff);
-}
-
-
-void m68000_base_device_ops::m68k_op_st_8_di(m68000_base_device* mc68kcpu)
-{
- m68ki_write_8((mc68kcpu), EA_AY_DI_8(mc68kcpu), 0xff);
-}
-
-
-void m68000_base_device_ops::m68k_op_st_8_ix(m68000_base_device* mc68kcpu)
-{
- m68ki_write_8((mc68kcpu), EA_AY_IX_8(mc68kcpu), 0xff);
-}
-
-
-void m68000_base_device_ops::m68k_op_st_8_aw(m68000_base_device* mc68kcpu)
-{
- m68ki_write_8((mc68kcpu), EA_AW_8(mc68kcpu), 0xff);
-}
-
-
-void m68000_base_device_ops::m68k_op_st_8_al(m68000_base_device* mc68kcpu)
-{
- m68ki_write_8((mc68kcpu), EA_AL_8(mc68kcpu), 0xff);
-}
-
-
-void m68000_base_device_ops::m68k_op_sf_8_d(m68000_base_device* mc68kcpu)
-{
- DY(mc68kcpu) &= 0xffffff00;
-}
-
-
-void m68000_base_device_ops::m68k_op_sf_8_ai(m68000_base_device* mc68kcpu)
-{
- m68ki_write_8((mc68kcpu), EA_AY_AI_8(mc68kcpu), 0);
-}
-
-
-void m68000_base_device_ops::m68k_op_sf_8_pi(m68000_base_device* mc68kcpu)
-{
- m68ki_write_8((mc68kcpu), EA_AY_PI_8(mc68kcpu), 0);
-}
-
-
-void m68000_base_device_ops::m68k_op_sf_8_pi7(m68000_base_device* mc68kcpu)
-{
- m68ki_write_8((mc68kcpu), EA_A7_PI_8(mc68kcpu), 0);
-}
-
-
-void m68000_base_device_ops::m68k_op_sf_8_pd(m68000_base_device* mc68kcpu)
-{
- m68ki_write_8((mc68kcpu), EA_AY_PD_8(mc68kcpu), 0);
-}
-
-
-void m68000_base_device_ops::m68k_op_sf_8_pd7(m68000_base_device* mc68kcpu)
-{
- m68ki_write_8((mc68kcpu), EA_A7_PD_8(mc68kcpu), 0);
-}
-
-
-void m68000_base_device_ops::m68k_op_sf_8_di(m68000_base_device* mc68kcpu)
-{
- m68ki_write_8((mc68kcpu), EA_AY_DI_8(mc68kcpu), 0);
-}
-
-
-void m68000_base_device_ops::m68k_op_sf_8_ix(m68000_base_device* mc68kcpu)
-{
- m68ki_write_8((mc68kcpu), EA_AY_IX_8(mc68kcpu), 0);
-}
-
-
-void m68000_base_device_ops::m68k_op_sf_8_aw(m68000_base_device* mc68kcpu)
-{
- m68ki_write_8((mc68kcpu), EA_AW_8(mc68kcpu), 0);
-}
-
-
-void m68000_base_device_ops::m68k_op_sf_8_al(m68000_base_device* mc68kcpu)
-{
- m68ki_write_8((mc68kcpu), EA_AL_8(mc68kcpu), 0);
-}
-
-
-void m68000_base_device_ops::m68k_op_shi_8_d(m68000_base_device* mc68kcpu)
-{
- if(COND_HI(mc68kcpu))
- {
- DY(mc68kcpu) |= 0xff;
- (mc68kcpu)->remaining_cycles -= (mc68kcpu)->cyc_scc_r_true;
- return;
- }
- DY(mc68kcpu) &= 0xffffff00;
-}
-
-
-void m68000_base_device_ops::m68k_op_sls_8_d(m68000_base_device* mc68kcpu)
-{
- if(COND_LS(mc68kcpu))
- {
- DY(mc68kcpu) |= 0xff;
- (mc68kcpu)->remaining_cycles -= (mc68kcpu)->cyc_scc_r_true;
- return;
- }
- DY(mc68kcpu) &= 0xffffff00;
-}
-
-
-void m68000_base_device_ops::m68k_op_scc_8_d(m68000_base_device* mc68kcpu)
-{
- if(COND_CC(mc68kcpu))
- {
- DY(mc68kcpu) |= 0xff;
- (mc68kcpu)->remaining_cycles -= (mc68kcpu)->cyc_scc_r_true;
- return;
- }
- DY(mc68kcpu) &= 0xffffff00;
-}
-
-
-void m68000_base_device_ops::m68k_op_scs_8_d(m68000_base_device* mc68kcpu)
-{
- if(COND_CS(mc68kcpu))
- {
- DY(mc68kcpu) |= 0xff;
- (mc68kcpu)->remaining_cycles -= (mc68kcpu)->cyc_scc_r_true;
- return;
- }
- DY(mc68kcpu) &= 0xffffff00;
-}
-
-
-void m68000_base_device_ops::m68k_op_sne_8_d(m68000_base_device* mc68kcpu)
-{
- if(COND_NE(mc68kcpu))
- {
- DY(mc68kcpu) |= 0xff;
- (mc68kcpu)->remaining_cycles -= (mc68kcpu)->cyc_scc_r_true;
- return;
- }
- DY(mc68kcpu) &= 0xffffff00;
-}
-
-
-void m68000_base_device_ops::m68k_op_seq_8_d(m68000_base_device* mc68kcpu)
-{
- if(COND_EQ(mc68kcpu))
- {
- DY(mc68kcpu) |= 0xff;
- (mc68kcpu)->remaining_cycles -= (mc68kcpu)->cyc_scc_r_true;
- return;
- }
- DY(mc68kcpu) &= 0xffffff00;
-}
-
-
-void m68000_base_device_ops::m68k_op_svc_8_d(m68000_base_device* mc68kcpu)
-{
- if(COND_VC(mc68kcpu))
- {
- DY(mc68kcpu) |= 0xff;
- (mc68kcpu)->remaining_cycles -= (mc68kcpu)->cyc_scc_r_true;
- return;
- }
- DY(mc68kcpu) &= 0xffffff00;
-}
-
-
-void m68000_base_device_ops::m68k_op_svs_8_d(m68000_base_device* mc68kcpu)
-{
- if(COND_VS(mc68kcpu))
- {
- DY(mc68kcpu) |= 0xff;
- (mc68kcpu)->remaining_cycles -= (mc68kcpu)->cyc_scc_r_true;
- return;
- }
- DY(mc68kcpu) &= 0xffffff00;
-}
-
-
-void m68000_base_device_ops::m68k_op_spl_8_d(m68000_base_device* mc68kcpu)
-{
- if(COND_PL(mc68kcpu))
- {
- DY(mc68kcpu) |= 0xff;
- (mc68kcpu)->remaining_cycles -= (mc68kcpu)->cyc_scc_r_true;
- return;
- }
- DY(mc68kcpu) &= 0xffffff00;
-}
-
-
-void m68000_base_device_ops::m68k_op_smi_8_d(m68000_base_device* mc68kcpu)
-{
- if(COND_MI(mc68kcpu))
- {
- DY(mc68kcpu) |= 0xff;
- (mc68kcpu)->remaining_cycles -= (mc68kcpu)->cyc_scc_r_true;
- return;
- }
- DY(mc68kcpu) &= 0xffffff00;
-}
-
-
-void m68000_base_device_ops::m68k_op_sge_8_d(m68000_base_device* mc68kcpu)
-{
- if(COND_GE(mc68kcpu))
- {
- DY(mc68kcpu) |= 0xff;
- (mc68kcpu)->remaining_cycles -= (mc68kcpu)->cyc_scc_r_true;
- return;
- }
- DY(mc68kcpu) &= 0xffffff00;
-}
-
-
-void m68000_base_device_ops::m68k_op_slt_8_d(m68000_base_device* mc68kcpu)
-{
- if(COND_LT(mc68kcpu))
- {
- DY(mc68kcpu) |= 0xff;
- (mc68kcpu)->remaining_cycles -= (mc68kcpu)->cyc_scc_r_true;
- return;
- }
- DY(mc68kcpu) &= 0xffffff00;
-}
-
-
-void m68000_base_device_ops::m68k_op_sgt_8_d(m68000_base_device* mc68kcpu)
-{
- if(COND_GT(mc68kcpu))
- {
- DY(mc68kcpu) |= 0xff;
- (mc68kcpu)->remaining_cycles -= (mc68kcpu)->cyc_scc_r_true;
- return;
- }
- DY(mc68kcpu) &= 0xffffff00;
-}
-
-
-void m68000_base_device_ops::m68k_op_sle_8_d(m68000_base_device* mc68kcpu)
-{
- if(COND_LE(mc68kcpu))
- {
- DY(mc68kcpu) |= 0xff;
- (mc68kcpu)->remaining_cycles -= (mc68kcpu)->cyc_scc_r_true;
- return;
- }
- DY(mc68kcpu) &= 0xffffff00;
-}
-
-
-void m68000_base_device_ops::m68k_op_shi_8_ai(m68000_base_device* mc68kcpu)
-{
- m68ki_write_8((mc68kcpu), EA_AY_AI_8(mc68kcpu), COND_HI(mc68kcpu) ? 0xff : 0);
-}
-
-
-void m68000_base_device_ops::m68k_op_shi_8_pi(m68000_base_device* mc68kcpu)
-{
- m68ki_write_8((mc68kcpu), EA_AY_PI_8(mc68kcpu), COND_HI(mc68kcpu) ? 0xff : 0);
-}
-
-
-void m68000_base_device_ops::m68k_op_shi_8_pi7(m68000_base_device* mc68kcpu)
-{
- m68ki_write_8((mc68kcpu), EA_A7_PI_8(mc68kcpu), COND_HI(mc68kcpu) ? 0xff : 0);
-}
-
-
-void m68000_base_device_ops::m68k_op_shi_8_pd(m68000_base_device* mc68kcpu)
-{
- m68ki_write_8((mc68kcpu), EA_AY_PD_8(mc68kcpu), COND_HI(mc68kcpu) ? 0xff : 0);
-}
-
-
-void m68000_base_device_ops::m68k_op_shi_8_pd7(m68000_base_device* mc68kcpu)
-{
- m68ki_write_8((mc68kcpu), EA_A7_PD_8(mc68kcpu), COND_HI(mc68kcpu) ? 0xff : 0);
-}
-
-
-void m68000_base_device_ops::m68k_op_shi_8_di(m68000_base_device* mc68kcpu)
-{
- m68ki_write_8((mc68kcpu), EA_AY_DI_8(mc68kcpu), COND_HI(mc68kcpu) ? 0xff : 0);
-}
-
-
-void m68000_base_device_ops::m68k_op_shi_8_ix(m68000_base_device* mc68kcpu)
-{
- m68ki_write_8((mc68kcpu), EA_AY_IX_8(mc68kcpu), COND_HI(mc68kcpu) ? 0xff : 0);
-}
-
-
-void m68000_base_device_ops::m68k_op_shi_8_aw(m68000_base_device* mc68kcpu)
-{
- m68ki_write_8((mc68kcpu), EA_AW_8(mc68kcpu), COND_HI(mc68kcpu) ? 0xff : 0);
-}
-
-
-void m68000_base_device_ops::m68k_op_shi_8_al(m68000_base_device* mc68kcpu)
-{
- m68ki_write_8((mc68kcpu), EA_AL_8(mc68kcpu), COND_HI(mc68kcpu) ? 0xff : 0);
-}
-
-
-void m68000_base_device_ops::m68k_op_sls_8_ai(m68000_base_device* mc68kcpu)
-{
- m68ki_write_8((mc68kcpu), EA_AY_AI_8(mc68kcpu), COND_LS(mc68kcpu) ? 0xff : 0);
-}
-
-
-void m68000_base_device_ops::m68k_op_sls_8_pi(m68000_base_device* mc68kcpu)
-{
- m68ki_write_8((mc68kcpu), EA_AY_PI_8(mc68kcpu), COND_LS(mc68kcpu) ? 0xff : 0);
-}
-
-
-void m68000_base_device_ops::m68k_op_sls_8_pi7(m68000_base_device* mc68kcpu)
-{
- m68ki_write_8((mc68kcpu), EA_A7_PI_8(mc68kcpu), COND_LS(mc68kcpu) ? 0xff : 0);
-}
-
-
-void m68000_base_device_ops::m68k_op_sls_8_pd(m68000_base_device* mc68kcpu)
-{
- m68ki_write_8((mc68kcpu), EA_AY_PD_8(mc68kcpu), COND_LS(mc68kcpu) ? 0xff : 0);
-}
-
-
-void m68000_base_device_ops::m68k_op_sls_8_pd7(m68000_base_device* mc68kcpu)
-{
- m68ki_write_8((mc68kcpu), EA_A7_PD_8(mc68kcpu), COND_LS(mc68kcpu) ? 0xff : 0);
-}
-
-
-void m68000_base_device_ops::m68k_op_sls_8_di(m68000_base_device* mc68kcpu)
-{
- m68ki_write_8((mc68kcpu), EA_AY_DI_8(mc68kcpu), COND_LS(mc68kcpu) ? 0xff : 0);
-}
-
-
-void m68000_base_device_ops::m68k_op_sls_8_ix(m68000_base_device* mc68kcpu)
-{
- m68ki_write_8((mc68kcpu), EA_AY_IX_8(mc68kcpu), COND_LS(mc68kcpu) ? 0xff : 0);
-}
-
-
-void m68000_base_device_ops::m68k_op_sls_8_aw(m68000_base_device* mc68kcpu)
-{
- m68ki_write_8((mc68kcpu), EA_AW_8(mc68kcpu), COND_LS(mc68kcpu) ? 0xff : 0);
-}
-
-
-void m68000_base_device_ops::m68k_op_sls_8_al(m68000_base_device* mc68kcpu)
-{
- m68ki_write_8((mc68kcpu), EA_AL_8(mc68kcpu), COND_LS(mc68kcpu) ? 0xff : 0);
-}
-
-
-void m68000_base_device_ops::m68k_op_scc_8_ai(m68000_base_device* mc68kcpu)
-{
- m68ki_write_8((mc68kcpu), EA_AY_AI_8(mc68kcpu), COND_CC(mc68kcpu) ? 0xff : 0);
-}
-
-
-void m68000_base_device_ops::m68k_op_scc_8_pi(m68000_base_device* mc68kcpu)
-{
- m68ki_write_8((mc68kcpu), EA_AY_PI_8(mc68kcpu), COND_CC(mc68kcpu) ? 0xff : 0);
-}
-
-
-void m68000_base_device_ops::m68k_op_scc_8_pi7(m68000_base_device* mc68kcpu)
-{
- m68ki_write_8((mc68kcpu), EA_A7_PI_8(mc68kcpu), COND_CC(mc68kcpu) ? 0xff : 0);
-}
-
-
-void m68000_base_device_ops::m68k_op_scc_8_pd(m68000_base_device* mc68kcpu)
-{
- m68ki_write_8((mc68kcpu), EA_AY_PD_8(mc68kcpu), COND_CC(mc68kcpu) ? 0xff : 0);
-}
-
-
-void m68000_base_device_ops::m68k_op_scc_8_pd7(m68000_base_device* mc68kcpu)
-{
- m68ki_write_8((mc68kcpu), EA_A7_PD_8(mc68kcpu), COND_CC(mc68kcpu) ? 0xff : 0);
-}
-
-
-void m68000_base_device_ops::m68k_op_scc_8_di(m68000_base_device* mc68kcpu)
-{
- m68ki_write_8((mc68kcpu), EA_AY_DI_8(mc68kcpu), COND_CC(mc68kcpu) ? 0xff : 0);
-}
-
-
-void m68000_base_device_ops::m68k_op_scc_8_ix(m68000_base_device* mc68kcpu)
-{
- m68ki_write_8((mc68kcpu), EA_AY_IX_8(mc68kcpu), COND_CC(mc68kcpu) ? 0xff : 0);
-}
-
-
-void m68000_base_device_ops::m68k_op_scc_8_aw(m68000_base_device* mc68kcpu)
-{
- m68ki_write_8((mc68kcpu), EA_AW_8(mc68kcpu), COND_CC(mc68kcpu) ? 0xff : 0);
-}
-
-
-void m68000_base_device_ops::m68k_op_scc_8_al(m68000_base_device* mc68kcpu)
-{
- m68ki_write_8((mc68kcpu), EA_AL_8(mc68kcpu), COND_CC(mc68kcpu) ? 0xff : 0);
-}
-
-
-void m68000_base_device_ops::m68k_op_scs_8_ai(m68000_base_device* mc68kcpu)
-{
- m68ki_write_8((mc68kcpu), EA_AY_AI_8(mc68kcpu), COND_CS(mc68kcpu) ? 0xff : 0);
-}
-
-
-void m68000_base_device_ops::m68k_op_scs_8_pi(m68000_base_device* mc68kcpu)
-{
- m68ki_write_8((mc68kcpu), EA_AY_PI_8(mc68kcpu), COND_CS(mc68kcpu) ? 0xff : 0);
-}
-
-
-void m68000_base_device_ops::m68k_op_scs_8_pi7(m68000_base_device* mc68kcpu)
-{
- m68ki_write_8((mc68kcpu), EA_A7_PI_8(mc68kcpu), COND_CS(mc68kcpu) ? 0xff : 0);
-}
-
-
-void m68000_base_device_ops::m68k_op_scs_8_pd(m68000_base_device* mc68kcpu)
-{
- m68ki_write_8((mc68kcpu), EA_AY_PD_8(mc68kcpu), COND_CS(mc68kcpu) ? 0xff : 0);
-}
-
-
-void m68000_base_device_ops::m68k_op_scs_8_pd7(m68000_base_device* mc68kcpu)
-{
- m68ki_write_8((mc68kcpu), EA_A7_PD_8(mc68kcpu), COND_CS(mc68kcpu) ? 0xff : 0);
-}
-
-
-void m68000_base_device_ops::m68k_op_scs_8_di(m68000_base_device* mc68kcpu)
-{
- m68ki_write_8((mc68kcpu), EA_AY_DI_8(mc68kcpu), COND_CS(mc68kcpu) ? 0xff : 0);
-}
-
-
-void m68000_base_device_ops::m68k_op_scs_8_ix(m68000_base_device* mc68kcpu)
-{
- m68ki_write_8((mc68kcpu), EA_AY_IX_8(mc68kcpu), COND_CS(mc68kcpu) ? 0xff : 0);
-}
-
-
-void m68000_base_device_ops::m68k_op_scs_8_aw(m68000_base_device* mc68kcpu)
-{
- m68ki_write_8((mc68kcpu), EA_AW_8(mc68kcpu), COND_CS(mc68kcpu) ? 0xff : 0);
-}
-
-
-void m68000_base_device_ops::m68k_op_scs_8_al(m68000_base_device* mc68kcpu)
-{
- m68ki_write_8((mc68kcpu), EA_AL_8(mc68kcpu), COND_CS(mc68kcpu) ? 0xff : 0);
-}
-
-
-void m68000_base_device_ops::m68k_op_sne_8_ai(m68000_base_device* mc68kcpu)
-{
- m68ki_write_8((mc68kcpu), EA_AY_AI_8(mc68kcpu), COND_NE(mc68kcpu) ? 0xff : 0);
-}
-
-
-void m68000_base_device_ops::m68k_op_sne_8_pi(m68000_base_device* mc68kcpu)
-{
- m68ki_write_8((mc68kcpu), EA_AY_PI_8(mc68kcpu), COND_NE(mc68kcpu) ? 0xff : 0);
-}
-
-
-void m68000_base_device_ops::m68k_op_sne_8_pi7(m68000_base_device* mc68kcpu)
-{
- m68ki_write_8((mc68kcpu), EA_A7_PI_8(mc68kcpu), COND_NE(mc68kcpu) ? 0xff : 0);
-}
-
-
-void m68000_base_device_ops::m68k_op_sne_8_pd(m68000_base_device* mc68kcpu)
-{
- m68ki_write_8((mc68kcpu), EA_AY_PD_8(mc68kcpu), COND_NE(mc68kcpu) ? 0xff : 0);
-}
-
-
-void m68000_base_device_ops::m68k_op_sne_8_pd7(m68000_base_device* mc68kcpu)
-{
- m68ki_write_8((mc68kcpu), EA_A7_PD_8(mc68kcpu), COND_NE(mc68kcpu) ? 0xff : 0);
-}
-
-
-void m68000_base_device_ops::m68k_op_sne_8_di(m68000_base_device* mc68kcpu)
-{
- m68ki_write_8((mc68kcpu), EA_AY_DI_8(mc68kcpu), COND_NE(mc68kcpu) ? 0xff : 0);
-}
-
-
-void m68000_base_device_ops::m68k_op_sne_8_ix(m68000_base_device* mc68kcpu)
-{
- m68ki_write_8((mc68kcpu), EA_AY_IX_8(mc68kcpu), COND_NE(mc68kcpu) ? 0xff : 0);
-}
-
-
-void m68000_base_device_ops::m68k_op_sne_8_aw(m68000_base_device* mc68kcpu)
-{
- m68ki_write_8((mc68kcpu), EA_AW_8(mc68kcpu), COND_NE(mc68kcpu) ? 0xff : 0);
-}
-
-
-void m68000_base_device_ops::m68k_op_sne_8_al(m68000_base_device* mc68kcpu)
-{
- m68ki_write_8((mc68kcpu), EA_AL_8(mc68kcpu), COND_NE(mc68kcpu) ? 0xff : 0);
-}
-
-
-void m68000_base_device_ops::m68k_op_seq_8_ai(m68000_base_device* mc68kcpu)
-{
- m68ki_write_8((mc68kcpu), EA_AY_AI_8(mc68kcpu), COND_EQ(mc68kcpu) ? 0xff : 0);
-}
-
-
-void m68000_base_device_ops::m68k_op_seq_8_pi(m68000_base_device* mc68kcpu)
-{
- m68ki_write_8((mc68kcpu), EA_AY_PI_8(mc68kcpu), COND_EQ(mc68kcpu) ? 0xff : 0);
-}
-
-
-void m68000_base_device_ops::m68k_op_seq_8_pi7(m68000_base_device* mc68kcpu)
-{
- m68ki_write_8((mc68kcpu), EA_A7_PI_8(mc68kcpu), COND_EQ(mc68kcpu) ? 0xff : 0);
-}
-
-
-void m68000_base_device_ops::m68k_op_seq_8_pd(m68000_base_device* mc68kcpu)
-{
- m68ki_write_8((mc68kcpu), EA_AY_PD_8(mc68kcpu), COND_EQ(mc68kcpu) ? 0xff : 0);
-}
-
-
-void m68000_base_device_ops::m68k_op_seq_8_pd7(m68000_base_device* mc68kcpu)
-{
- m68ki_write_8((mc68kcpu), EA_A7_PD_8(mc68kcpu), COND_EQ(mc68kcpu) ? 0xff : 0);
-}
-
-
-void m68000_base_device_ops::m68k_op_seq_8_di(m68000_base_device* mc68kcpu)
-{
- m68ki_write_8((mc68kcpu), EA_AY_DI_8(mc68kcpu), COND_EQ(mc68kcpu) ? 0xff : 0);
-}
-
-
-void m68000_base_device_ops::m68k_op_seq_8_ix(m68000_base_device* mc68kcpu)
-{
- m68ki_write_8((mc68kcpu), EA_AY_IX_8(mc68kcpu), COND_EQ(mc68kcpu) ? 0xff : 0);
-}
-
-
-void m68000_base_device_ops::m68k_op_seq_8_aw(m68000_base_device* mc68kcpu)
-{
- m68ki_write_8((mc68kcpu), EA_AW_8(mc68kcpu), COND_EQ(mc68kcpu) ? 0xff : 0);
-}
-
-
-void m68000_base_device_ops::m68k_op_seq_8_al(m68000_base_device* mc68kcpu)
-{
- m68ki_write_8((mc68kcpu), EA_AL_8(mc68kcpu), COND_EQ(mc68kcpu) ? 0xff : 0);
-}
-
-
-void m68000_base_device_ops::m68k_op_svc_8_ai(m68000_base_device* mc68kcpu)
-{
- m68ki_write_8((mc68kcpu), EA_AY_AI_8(mc68kcpu), COND_VC(mc68kcpu) ? 0xff : 0);
-}
-
-
-void m68000_base_device_ops::m68k_op_svc_8_pi(m68000_base_device* mc68kcpu)
-{
- m68ki_write_8((mc68kcpu), EA_AY_PI_8(mc68kcpu), COND_VC(mc68kcpu) ? 0xff : 0);
-}
-
-
-void m68000_base_device_ops::m68k_op_svc_8_pi7(m68000_base_device* mc68kcpu)
-{
- m68ki_write_8((mc68kcpu), EA_A7_PI_8(mc68kcpu), COND_VC(mc68kcpu) ? 0xff : 0);
-}
-
-
-void m68000_base_device_ops::m68k_op_svc_8_pd(m68000_base_device* mc68kcpu)
-{
- m68ki_write_8((mc68kcpu), EA_AY_PD_8(mc68kcpu), COND_VC(mc68kcpu) ? 0xff : 0);
-}
-
-
-void m68000_base_device_ops::m68k_op_svc_8_pd7(m68000_base_device* mc68kcpu)
-{
- m68ki_write_8((mc68kcpu), EA_A7_PD_8(mc68kcpu), COND_VC(mc68kcpu) ? 0xff : 0);
-}
-
-
-void m68000_base_device_ops::m68k_op_svc_8_di(m68000_base_device* mc68kcpu)
-{
- m68ki_write_8((mc68kcpu), EA_AY_DI_8(mc68kcpu), COND_VC(mc68kcpu) ? 0xff : 0);
-}
-
-
-void m68000_base_device_ops::m68k_op_svc_8_ix(m68000_base_device* mc68kcpu)
-{
- m68ki_write_8((mc68kcpu), EA_AY_IX_8(mc68kcpu), COND_VC(mc68kcpu) ? 0xff : 0);
-}
-
-
-void m68000_base_device_ops::m68k_op_svc_8_aw(m68000_base_device* mc68kcpu)
-{
- m68ki_write_8((mc68kcpu), EA_AW_8(mc68kcpu), COND_VC(mc68kcpu) ? 0xff : 0);
-}
-
-
-void m68000_base_device_ops::m68k_op_svc_8_al(m68000_base_device* mc68kcpu)
-{
- m68ki_write_8((mc68kcpu), EA_AL_8(mc68kcpu), COND_VC(mc68kcpu) ? 0xff : 0);
-}
-
-
-void m68000_base_device_ops::m68k_op_svs_8_ai(m68000_base_device* mc68kcpu)
-{
- m68ki_write_8((mc68kcpu), EA_AY_AI_8(mc68kcpu), COND_VS(mc68kcpu) ? 0xff : 0);
-}
-
-
-void m68000_base_device_ops::m68k_op_svs_8_pi(m68000_base_device* mc68kcpu)
-{
- m68ki_write_8((mc68kcpu), EA_AY_PI_8(mc68kcpu), COND_VS(mc68kcpu) ? 0xff : 0);
-}
-
-
-void m68000_base_device_ops::m68k_op_svs_8_pi7(m68000_base_device* mc68kcpu)
-{
- m68ki_write_8((mc68kcpu), EA_A7_PI_8(mc68kcpu), COND_VS(mc68kcpu) ? 0xff : 0);
-}
-
-
-void m68000_base_device_ops::m68k_op_svs_8_pd(m68000_base_device* mc68kcpu)
-{
- m68ki_write_8((mc68kcpu), EA_AY_PD_8(mc68kcpu), COND_VS(mc68kcpu) ? 0xff : 0);
-}
-
-
-void m68000_base_device_ops::m68k_op_svs_8_pd7(m68000_base_device* mc68kcpu)
-{
- m68ki_write_8((mc68kcpu), EA_A7_PD_8(mc68kcpu), COND_VS(mc68kcpu) ? 0xff : 0);
-}
-
-
-void m68000_base_device_ops::m68k_op_svs_8_di(m68000_base_device* mc68kcpu)
-{
- m68ki_write_8((mc68kcpu), EA_AY_DI_8(mc68kcpu), COND_VS(mc68kcpu) ? 0xff : 0);
-}
-
-
-void m68000_base_device_ops::m68k_op_svs_8_ix(m68000_base_device* mc68kcpu)
-{
- m68ki_write_8((mc68kcpu), EA_AY_IX_8(mc68kcpu), COND_VS(mc68kcpu) ? 0xff : 0);
-}
-
-
-void m68000_base_device_ops::m68k_op_svs_8_aw(m68000_base_device* mc68kcpu)
-{
- m68ki_write_8((mc68kcpu), EA_AW_8(mc68kcpu), COND_VS(mc68kcpu) ? 0xff : 0);
-}
-
-
-void m68000_base_device_ops::m68k_op_svs_8_al(m68000_base_device* mc68kcpu)
-{
- m68ki_write_8((mc68kcpu), EA_AL_8(mc68kcpu), COND_VS(mc68kcpu) ? 0xff : 0);
-}
-
-
-void m68000_base_device_ops::m68k_op_spl_8_ai(m68000_base_device* mc68kcpu)
-{
- m68ki_write_8((mc68kcpu), EA_AY_AI_8(mc68kcpu), COND_PL(mc68kcpu) ? 0xff : 0);
-}
-
-
-void m68000_base_device_ops::m68k_op_spl_8_pi(m68000_base_device* mc68kcpu)
-{
- m68ki_write_8((mc68kcpu), EA_AY_PI_8(mc68kcpu), COND_PL(mc68kcpu) ? 0xff : 0);
-}
-
-
-void m68000_base_device_ops::m68k_op_spl_8_pi7(m68000_base_device* mc68kcpu)
-{
- m68ki_write_8((mc68kcpu), EA_A7_PI_8(mc68kcpu), COND_PL(mc68kcpu) ? 0xff : 0);
-}
-
-
-void m68000_base_device_ops::m68k_op_spl_8_pd(m68000_base_device* mc68kcpu)
-{
- m68ki_write_8((mc68kcpu), EA_AY_PD_8(mc68kcpu), COND_PL(mc68kcpu) ? 0xff : 0);
-}
-
-
-void m68000_base_device_ops::m68k_op_spl_8_pd7(m68000_base_device* mc68kcpu)
-{
- m68ki_write_8((mc68kcpu), EA_A7_PD_8(mc68kcpu), COND_PL(mc68kcpu) ? 0xff : 0);
-}
-
-
-void m68000_base_device_ops::m68k_op_spl_8_di(m68000_base_device* mc68kcpu)
-{
- m68ki_write_8((mc68kcpu), EA_AY_DI_8(mc68kcpu), COND_PL(mc68kcpu) ? 0xff : 0);
-}
-
-
-void m68000_base_device_ops::m68k_op_spl_8_ix(m68000_base_device* mc68kcpu)
-{
- m68ki_write_8((mc68kcpu), EA_AY_IX_8(mc68kcpu), COND_PL(mc68kcpu) ? 0xff : 0);
-}
-
-
-void m68000_base_device_ops::m68k_op_spl_8_aw(m68000_base_device* mc68kcpu)
-{
- m68ki_write_8((mc68kcpu), EA_AW_8(mc68kcpu), COND_PL(mc68kcpu) ? 0xff : 0);
-}
-
-
-void m68000_base_device_ops::m68k_op_spl_8_al(m68000_base_device* mc68kcpu)
-{
- m68ki_write_8((mc68kcpu), EA_AL_8(mc68kcpu), COND_PL(mc68kcpu) ? 0xff : 0);
-}
-
-
-void m68000_base_device_ops::m68k_op_smi_8_ai(m68000_base_device* mc68kcpu)
-{
- m68ki_write_8((mc68kcpu), EA_AY_AI_8(mc68kcpu), COND_MI(mc68kcpu) ? 0xff : 0);
-}
-
-
-void m68000_base_device_ops::m68k_op_smi_8_pi(m68000_base_device* mc68kcpu)
-{
- m68ki_write_8((mc68kcpu), EA_AY_PI_8(mc68kcpu), COND_MI(mc68kcpu) ? 0xff : 0);
-}
-
-
-void m68000_base_device_ops::m68k_op_smi_8_pi7(m68000_base_device* mc68kcpu)
-{
- m68ki_write_8((mc68kcpu), EA_A7_PI_8(mc68kcpu), COND_MI(mc68kcpu) ? 0xff : 0);
-}
-
-
-void m68000_base_device_ops::m68k_op_smi_8_pd(m68000_base_device* mc68kcpu)
-{
- m68ki_write_8((mc68kcpu), EA_AY_PD_8(mc68kcpu), COND_MI(mc68kcpu) ? 0xff : 0);
-}
-
-
-void m68000_base_device_ops::m68k_op_smi_8_pd7(m68000_base_device* mc68kcpu)
-{
- m68ki_write_8((mc68kcpu), EA_A7_PD_8(mc68kcpu), COND_MI(mc68kcpu) ? 0xff : 0);
-}
-
-
-void m68000_base_device_ops::m68k_op_smi_8_di(m68000_base_device* mc68kcpu)
-{
- m68ki_write_8((mc68kcpu), EA_AY_DI_8(mc68kcpu), COND_MI(mc68kcpu) ? 0xff : 0);
-}
-
-
-void m68000_base_device_ops::m68k_op_smi_8_ix(m68000_base_device* mc68kcpu)
-{
- m68ki_write_8((mc68kcpu), EA_AY_IX_8(mc68kcpu), COND_MI(mc68kcpu) ? 0xff : 0);
-}
-
-
-void m68000_base_device_ops::m68k_op_smi_8_aw(m68000_base_device* mc68kcpu)
-{
- m68ki_write_8((mc68kcpu), EA_AW_8(mc68kcpu), COND_MI(mc68kcpu) ? 0xff : 0);
-}
-
-
-void m68000_base_device_ops::m68k_op_smi_8_al(m68000_base_device* mc68kcpu)
-{
- m68ki_write_8((mc68kcpu), EA_AL_8(mc68kcpu), COND_MI(mc68kcpu) ? 0xff : 0);
-}
-
-
-void m68000_base_device_ops::m68k_op_sge_8_ai(m68000_base_device* mc68kcpu)
-{
- m68ki_write_8((mc68kcpu), EA_AY_AI_8(mc68kcpu), COND_GE(mc68kcpu) ? 0xff : 0);
-}
-
-
-void m68000_base_device_ops::m68k_op_sge_8_pi(m68000_base_device* mc68kcpu)
-{
- m68ki_write_8((mc68kcpu), EA_AY_PI_8(mc68kcpu), COND_GE(mc68kcpu) ? 0xff : 0);
-}
-
-
-void m68000_base_device_ops::m68k_op_sge_8_pi7(m68000_base_device* mc68kcpu)
-{
- m68ki_write_8((mc68kcpu), EA_A7_PI_8(mc68kcpu), COND_GE(mc68kcpu) ? 0xff : 0);
-}
-
-
-void m68000_base_device_ops::m68k_op_sge_8_pd(m68000_base_device* mc68kcpu)
-{
- m68ki_write_8((mc68kcpu), EA_AY_PD_8(mc68kcpu), COND_GE(mc68kcpu) ? 0xff : 0);
-}
-
-
-void m68000_base_device_ops::m68k_op_sge_8_pd7(m68000_base_device* mc68kcpu)
-{
- m68ki_write_8((mc68kcpu), EA_A7_PD_8(mc68kcpu), COND_GE(mc68kcpu) ? 0xff : 0);
-}
-
-
-void m68000_base_device_ops::m68k_op_sge_8_di(m68000_base_device* mc68kcpu)
-{
- m68ki_write_8((mc68kcpu), EA_AY_DI_8(mc68kcpu), COND_GE(mc68kcpu) ? 0xff : 0);
-}
-
-
-void m68000_base_device_ops::m68k_op_sge_8_ix(m68000_base_device* mc68kcpu)
-{
- m68ki_write_8((mc68kcpu), EA_AY_IX_8(mc68kcpu), COND_GE(mc68kcpu) ? 0xff : 0);
-}
-
-
-void m68000_base_device_ops::m68k_op_sge_8_aw(m68000_base_device* mc68kcpu)
-{
- m68ki_write_8((mc68kcpu), EA_AW_8(mc68kcpu), COND_GE(mc68kcpu) ? 0xff : 0);
-}
-
-
-void m68000_base_device_ops::m68k_op_sge_8_al(m68000_base_device* mc68kcpu)
-{
- m68ki_write_8((mc68kcpu), EA_AL_8(mc68kcpu), COND_GE(mc68kcpu) ? 0xff : 0);
-}
-
-
-void m68000_base_device_ops::m68k_op_slt_8_ai(m68000_base_device* mc68kcpu)
-{
- m68ki_write_8((mc68kcpu), EA_AY_AI_8(mc68kcpu), COND_LT(mc68kcpu) ? 0xff : 0);
-}
-
-
-void m68000_base_device_ops::m68k_op_slt_8_pi(m68000_base_device* mc68kcpu)
-{
- m68ki_write_8((mc68kcpu), EA_AY_PI_8(mc68kcpu), COND_LT(mc68kcpu) ? 0xff : 0);
-}
-
-
-void m68000_base_device_ops::m68k_op_slt_8_pi7(m68000_base_device* mc68kcpu)
-{
- m68ki_write_8((mc68kcpu), EA_A7_PI_8(mc68kcpu), COND_LT(mc68kcpu) ? 0xff : 0);
-}
-
-
-void m68000_base_device_ops::m68k_op_slt_8_pd(m68000_base_device* mc68kcpu)
-{
- m68ki_write_8((mc68kcpu), EA_AY_PD_8(mc68kcpu), COND_LT(mc68kcpu) ? 0xff : 0);
-}
-
-
-void m68000_base_device_ops::m68k_op_slt_8_pd7(m68000_base_device* mc68kcpu)
-{
- m68ki_write_8((mc68kcpu), EA_A7_PD_8(mc68kcpu), COND_LT(mc68kcpu) ? 0xff : 0);
-}
-
-
-void m68000_base_device_ops::m68k_op_slt_8_di(m68000_base_device* mc68kcpu)
-{
- m68ki_write_8((mc68kcpu), EA_AY_DI_8(mc68kcpu), COND_LT(mc68kcpu) ? 0xff : 0);
-}
-
-
-void m68000_base_device_ops::m68k_op_slt_8_ix(m68000_base_device* mc68kcpu)
-{
- m68ki_write_8((mc68kcpu), EA_AY_IX_8(mc68kcpu), COND_LT(mc68kcpu) ? 0xff : 0);
-}
-
-
-void m68000_base_device_ops::m68k_op_slt_8_aw(m68000_base_device* mc68kcpu)
-{
- m68ki_write_8((mc68kcpu), EA_AW_8(mc68kcpu), COND_LT(mc68kcpu) ? 0xff : 0);
-}
-
-
-void m68000_base_device_ops::m68k_op_slt_8_al(m68000_base_device* mc68kcpu)
-{
- m68ki_write_8((mc68kcpu), EA_AL_8(mc68kcpu), COND_LT(mc68kcpu) ? 0xff : 0);
-}
-
-
-void m68000_base_device_ops::m68k_op_sgt_8_ai(m68000_base_device* mc68kcpu)
-{
- m68ki_write_8((mc68kcpu), EA_AY_AI_8(mc68kcpu), COND_GT(mc68kcpu) ? 0xff : 0);
-}
-
-
-void m68000_base_device_ops::m68k_op_sgt_8_pi(m68000_base_device* mc68kcpu)
-{
- m68ki_write_8((mc68kcpu), EA_AY_PI_8(mc68kcpu), COND_GT(mc68kcpu) ? 0xff : 0);
-}
-
-
-void m68000_base_device_ops::m68k_op_sgt_8_pi7(m68000_base_device* mc68kcpu)
-{
- m68ki_write_8((mc68kcpu), EA_A7_PI_8(mc68kcpu), COND_GT(mc68kcpu) ? 0xff : 0);
-}
-
-
-void m68000_base_device_ops::m68k_op_sgt_8_pd(m68000_base_device* mc68kcpu)
-{
- m68ki_write_8((mc68kcpu), EA_AY_PD_8(mc68kcpu), COND_GT(mc68kcpu) ? 0xff : 0);
-}
-
-
-void m68000_base_device_ops::m68k_op_sgt_8_pd7(m68000_base_device* mc68kcpu)
-{
- m68ki_write_8((mc68kcpu), EA_A7_PD_8(mc68kcpu), COND_GT(mc68kcpu) ? 0xff : 0);
-}
-
-
-void m68000_base_device_ops::m68k_op_sgt_8_di(m68000_base_device* mc68kcpu)
-{
- m68ki_write_8((mc68kcpu), EA_AY_DI_8(mc68kcpu), COND_GT(mc68kcpu) ? 0xff : 0);
-}
-
-
-void m68000_base_device_ops::m68k_op_sgt_8_ix(m68000_base_device* mc68kcpu)
-{
- m68ki_write_8((mc68kcpu), EA_AY_IX_8(mc68kcpu), COND_GT(mc68kcpu) ? 0xff : 0);
-}
-
-
-void m68000_base_device_ops::m68k_op_sgt_8_aw(m68000_base_device* mc68kcpu)
-{
- m68ki_write_8((mc68kcpu), EA_AW_8(mc68kcpu), COND_GT(mc68kcpu) ? 0xff : 0);
-}
-
-
-void m68000_base_device_ops::m68k_op_sgt_8_al(m68000_base_device* mc68kcpu)
-{
- m68ki_write_8((mc68kcpu), EA_AL_8(mc68kcpu), COND_GT(mc68kcpu) ? 0xff : 0);
-}
-
-
-void m68000_base_device_ops::m68k_op_sle_8_ai(m68000_base_device* mc68kcpu)
-{
- m68ki_write_8((mc68kcpu), EA_AY_AI_8(mc68kcpu), COND_LE(mc68kcpu) ? 0xff : 0);
-}
-
-
-void m68000_base_device_ops::m68k_op_sle_8_pi(m68000_base_device* mc68kcpu)
-{
- m68ki_write_8((mc68kcpu), EA_AY_PI_8(mc68kcpu), COND_LE(mc68kcpu) ? 0xff : 0);
-}
-
-
-void m68000_base_device_ops::m68k_op_sle_8_pi7(m68000_base_device* mc68kcpu)
-{
- m68ki_write_8((mc68kcpu), EA_A7_PI_8(mc68kcpu), COND_LE(mc68kcpu) ? 0xff : 0);
-}
-
-
-void m68000_base_device_ops::m68k_op_sle_8_pd(m68000_base_device* mc68kcpu)
-{
- m68ki_write_8((mc68kcpu), EA_AY_PD_8(mc68kcpu), COND_LE(mc68kcpu) ? 0xff : 0);
-}
-
-
-void m68000_base_device_ops::m68k_op_sle_8_pd7(m68000_base_device* mc68kcpu)
-{
- m68ki_write_8((mc68kcpu), EA_A7_PD_8(mc68kcpu), COND_LE(mc68kcpu) ? 0xff : 0);
-}
-
-
-void m68000_base_device_ops::m68k_op_sle_8_di(m68000_base_device* mc68kcpu)
-{
- m68ki_write_8((mc68kcpu), EA_AY_DI_8(mc68kcpu), COND_LE(mc68kcpu) ? 0xff : 0);
-}
-
-
-void m68000_base_device_ops::m68k_op_sle_8_ix(m68000_base_device* mc68kcpu)
-{
- m68ki_write_8((mc68kcpu), EA_AY_IX_8(mc68kcpu), COND_LE(mc68kcpu) ? 0xff : 0);
-}
-
-
-void m68000_base_device_ops::m68k_op_sle_8_aw(m68000_base_device* mc68kcpu)
-{
- m68ki_write_8((mc68kcpu), EA_AW_8(mc68kcpu), COND_LE(mc68kcpu) ? 0xff : 0);
-}
-
-
-void m68000_base_device_ops::m68k_op_sle_8_al(m68000_base_device* mc68kcpu)
-{
- m68ki_write_8((mc68kcpu), EA_AL_8(mc68kcpu), COND_LE(mc68kcpu) ? 0xff : 0);
-}
-
-
-void m68000_base_device_ops::m68k_op_stop(m68000_base_device* mc68kcpu)
-{
- if((mc68kcpu)->s_flag)
- {
- UINT32 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;
- return;
- }
- m68ki_exception_privilege_violation(mc68kcpu);
-}
-
-
-void m68000_base_device_ops::m68k_op_sub_8_er_d(m68000_base_device* mc68kcpu)
-{
- UINT32* r_dst = &DX(mc68kcpu);
- UINT32 src = MASK_OUT_ABOVE_8(DY(mc68kcpu));
- UINT32 dst = MASK_OUT_ABOVE_8(*r_dst);
- UINT32 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);
-
- *r_dst = MASK_OUT_BELOW_8(*r_dst) | (mc68kcpu)->not_z_flag;
-}
-
-
-void m68000_base_device_ops::m68k_op_sub_8_er_ai(m68000_base_device* mc68kcpu)
-{
- UINT32* r_dst = &DX(mc68kcpu);
- UINT32 src = OPER_AY_AI_8(mc68kcpu);
- UINT32 dst = MASK_OUT_ABOVE_8(*r_dst);
- UINT32 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);
-
- *r_dst = MASK_OUT_BELOW_8(*r_dst) | (mc68kcpu)->not_z_flag;
-}
-
-
-void m68000_base_device_ops::m68k_op_sub_8_er_pi(m68000_base_device* mc68kcpu)
-{
- UINT32* r_dst = &DX(mc68kcpu);
- UINT32 src = OPER_AY_PI_8(mc68kcpu);
- UINT32 dst = MASK_OUT_ABOVE_8(*r_dst);
- UINT32 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);
-
- *r_dst = MASK_OUT_BELOW_8(*r_dst) | (mc68kcpu)->not_z_flag;
-}
-
-
-void m68000_base_device_ops::m68k_op_sub_8_er_pi7(m68000_base_device* mc68kcpu)
-{
- UINT32* r_dst = &DX(mc68kcpu);
- UINT32 src = OPER_A7_PI_8(mc68kcpu);
- UINT32 dst = MASK_OUT_ABOVE_8(*r_dst);
- UINT32 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);
-
- *r_dst = MASK_OUT_BELOW_8(*r_dst) | (mc68kcpu)->not_z_flag;
-}
-
-
-void m68000_base_device_ops::m68k_op_sub_8_er_pd(m68000_base_device* mc68kcpu)
-{
- UINT32* r_dst = &DX(mc68kcpu);
- UINT32 src = OPER_AY_PD_8(mc68kcpu);
- UINT32 dst = MASK_OUT_ABOVE_8(*r_dst);
- UINT32 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);
-
- *r_dst = MASK_OUT_BELOW_8(*r_dst) | (mc68kcpu)->not_z_flag;
-}
-
-
-void m68000_base_device_ops::m68k_op_sub_8_er_pd7(m68000_base_device* mc68kcpu)
-{
- UINT32* r_dst = &DX(mc68kcpu);
- UINT32 src = OPER_A7_PD_8(mc68kcpu);
- UINT32 dst = MASK_OUT_ABOVE_8(*r_dst);
- UINT32 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);
-
- *r_dst = MASK_OUT_BELOW_8(*r_dst) | (mc68kcpu)->not_z_flag;
-}
-
-
-void m68000_base_device_ops::m68k_op_sub_8_er_di(m68000_base_device* mc68kcpu)
-{
- UINT32* r_dst = &DX(mc68kcpu);
- UINT32 src = OPER_AY_DI_8(mc68kcpu);
- UINT32 dst = MASK_OUT_ABOVE_8(*r_dst);
- UINT32 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);
-
- *r_dst = MASK_OUT_BELOW_8(*r_dst) | (mc68kcpu)->not_z_flag;
-}
-
-
-void m68000_base_device_ops::m68k_op_sub_8_er_ix(m68000_base_device* mc68kcpu)
-{
- UINT32* r_dst = &DX(mc68kcpu);
- UINT32 src = OPER_AY_IX_8(mc68kcpu);
- UINT32 dst = MASK_OUT_ABOVE_8(*r_dst);
- UINT32 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);
-
- *r_dst = MASK_OUT_BELOW_8(*r_dst) | (mc68kcpu)->not_z_flag;
-}
-
-
-void m68000_base_device_ops::m68k_op_sub_8_er_aw(m68000_base_device* mc68kcpu)
-{
- UINT32* r_dst = &DX(mc68kcpu);
- UINT32 src = OPER_AW_8(mc68kcpu);
- UINT32 dst = MASK_OUT_ABOVE_8(*r_dst);
- UINT32 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);
-
- *r_dst = MASK_OUT_BELOW_8(*r_dst) | (mc68kcpu)->not_z_flag;
-}
-
-
-void m68000_base_device_ops::m68k_op_sub_8_er_al(m68000_base_device* mc68kcpu)
-{
- UINT32* r_dst = &DX(mc68kcpu);
- UINT32 src = OPER_AL_8(mc68kcpu);
- UINT32 dst = MASK_OUT_ABOVE_8(*r_dst);
- UINT32 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);
-
- *r_dst = MASK_OUT_BELOW_8(*r_dst) | (mc68kcpu)->not_z_flag;
-}
-
-
-void m68000_base_device_ops::m68k_op_sub_8_er_pcdi(m68000_base_device* mc68kcpu)
-{
- UINT32* r_dst = &DX(mc68kcpu);
- UINT32 src = OPER_PCDI_8(mc68kcpu);
- UINT32 dst = MASK_OUT_ABOVE_8(*r_dst);
- UINT32 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);
-
- *r_dst = MASK_OUT_BELOW_8(*r_dst) | (mc68kcpu)->not_z_flag;
-}
-
-
-void m68000_base_device_ops::m68k_op_sub_8_er_pcix(m68000_base_device* mc68kcpu)
-{
- UINT32* r_dst = &DX(mc68kcpu);
- UINT32 src = OPER_PCIX_8(mc68kcpu);
- UINT32 dst = MASK_OUT_ABOVE_8(*r_dst);
- UINT32 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);
-
- *r_dst = MASK_OUT_BELOW_8(*r_dst) | (mc68kcpu)->not_z_flag;
-}
-
-
-void m68000_base_device_ops::m68k_op_sub_8_er_i(m68000_base_device* mc68kcpu)
-{
- UINT32* r_dst = &DX(mc68kcpu);
- UINT32 src = OPER_I_8(mc68kcpu);
- UINT32 dst = MASK_OUT_ABOVE_8(*r_dst);
- UINT32 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);
-
- *r_dst = MASK_OUT_BELOW_8(*r_dst) | (mc68kcpu)->not_z_flag;
-}
-
-
-void m68000_base_device_ops::m68k_op_sub_16_er_d(m68000_base_device* mc68kcpu)
-{
- UINT32* r_dst = &DX(mc68kcpu);
- UINT32 src = MASK_OUT_ABOVE_16(DY(mc68kcpu));
- UINT32 dst = MASK_OUT_ABOVE_16(*r_dst);
- UINT32 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);
-
- *r_dst = MASK_OUT_BELOW_16(*r_dst) | (mc68kcpu)->not_z_flag;
-}
-
-
-void m68000_base_device_ops::m68k_op_sub_16_er_a(m68000_base_device* mc68kcpu)
-{
- UINT32* r_dst = &DX(mc68kcpu);
- UINT32 src = MASK_OUT_ABOVE_16(AY(mc68kcpu));
- UINT32 dst = MASK_OUT_ABOVE_16(*r_dst);
- UINT32 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);
-
- *r_dst = MASK_OUT_BELOW_16(*r_dst) | (mc68kcpu)->not_z_flag;
-}
-
-
-void m68000_base_device_ops::m68k_op_sub_16_er_ai(m68000_base_device* mc68kcpu)
-{
- UINT32* r_dst = &DX(mc68kcpu);
- UINT32 src = OPER_AY_AI_16(mc68kcpu);
- UINT32 dst = MASK_OUT_ABOVE_16(*r_dst);
- UINT32 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);
-
- *r_dst = MASK_OUT_BELOW_16(*r_dst) | (mc68kcpu)->not_z_flag;
-}
-
-
-void m68000_base_device_ops::m68k_op_sub_16_er_pi(m68000_base_device* mc68kcpu)
-{
- UINT32* r_dst = &DX(mc68kcpu);
- UINT32 src = OPER_AY_PI_16(mc68kcpu);
- UINT32 dst = MASK_OUT_ABOVE_16(*r_dst);
- UINT32 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);
-
- *r_dst = MASK_OUT_BELOW_16(*r_dst) | (mc68kcpu)->not_z_flag;
-}
-
-
-void m68000_base_device_ops::m68k_op_sub_16_er_pd(m68000_base_device* mc68kcpu)
-{
- UINT32* r_dst = &DX(mc68kcpu);
- UINT32 src = OPER_AY_PD_16(mc68kcpu);
- UINT32 dst = MASK_OUT_ABOVE_16(*r_dst);
- UINT32 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);
-
- *r_dst = MASK_OUT_BELOW_16(*r_dst) | (mc68kcpu)->not_z_flag;
-}
-
-
-void m68000_base_device_ops::m68k_op_sub_16_er_di(m68000_base_device* mc68kcpu)
-{
- UINT32* r_dst = &DX(mc68kcpu);
- UINT32 src = OPER_AY_DI_16(mc68kcpu);
- UINT32 dst = MASK_OUT_ABOVE_16(*r_dst);
- UINT32 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);
-
- *r_dst = MASK_OUT_BELOW_16(*r_dst) | (mc68kcpu)->not_z_flag;
-}
-
-
-void m68000_base_device_ops::m68k_op_sub_16_er_ix(m68000_base_device* mc68kcpu)
-{
- UINT32* r_dst = &DX(mc68kcpu);
- UINT32 src = OPER_AY_IX_16(mc68kcpu);
- UINT32 dst = MASK_OUT_ABOVE_16(*r_dst);
- UINT32 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);
-
- *r_dst = MASK_OUT_BELOW_16(*r_dst) | (mc68kcpu)->not_z_flag;
-}
-
-
-void m68000_base_device_ops::m68k_op_sub_16_er_aw(m68000_base_device* mc68kcpu)
-{
- UINT32* r_dst = &DX(mc68kcpu);
- UINT32 src = OPER_AW_16(mc68kcpu);
- UINT32 dst = MASK_OUT_ABOVE_16(*r_dst);
- UINT32 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);
-
- *r_dst = MASK_OUT_BELOW_16(*r_dst) | (mc68kcpu)->not_z_flag;
-}
-
-
-void m68000_base_device_ops::m68k_op_sub_16_er_al(m68000_base_device* mc68kcpu)
-{
- UINT32* r_dst = &DX(mc68kcpu);
- UINT32 src = OPER_AL_16(mc68kcpu);
- UINT32 dst = MASK_OUT_ABOVE_16(*r_dst);
- UINT32 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);
-
- *r_dst = MASK_OUT_BELOW_16(*r_dst) | (mc68kcpu)->not_z_flag;
-}
-
-
-void m68000_base_device_ops::m68k_op_sub_16_er_pcdi(m68000_base_device* mc68kcpu)
-{
- UINT32* r_dst = &DX(mc68kcpu);
- UINT32 src = OPER_PCDI_16(mc68kcpu);
- UINT32 dst = MASK_OUT_ABOVE_16(*r_dst);
- UINT32 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);
-
- *r_dst = MASK_OUT_BELOW_16(*r_dst) | (mc68kcpu)->not_z_flag;
-}
-
-
-void m68000_base_device_ops::m68k_op_sub_16_er_pcix(m68000_base_device* mc68kcpu)
-{
- UINT32* r_dst = &DX(mc68kcpu);
- UINT32 src = OPER_PCIX_16(mc68kcpu);
- UINT32 dst = MASK_OUT_ABOVE_16(*r_dst);
- UINT32 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);
-
- *r_dst = MASK_OUT_BELOW_16(*r_dst) | (mc68kcpu)->not_z_flag;
-}
-
-
-void m68000_base_device_ops::m68k_op_sub_16_er_i(m68000_base_device* mc68kcpu)
-{
- UINT32* r_dst = &DX(mc68kcpu);
- UINT32 src = OPER_I_16(mc68kcpu);
- UINT32 dst = MASK_OUT_ABOVE_16(*r_dst);
- UINT32 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);
-
- *r_dst = MASK_OUT_BELOW_16(*r_dst) | (mc68kcpu)->not_z_flag;
-}
-
-
-void m68000_base_device_ops::m68k_op_sub_32_er_d(m68000_base_device* mc68kcpu)
-{
- UINT32* r_dst = &DX(mc68kcpu);
- UINT32 src = DY(mc68kcpu);
- UINT32 dst = *r_dst;
- UINT32 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);
-
- *r_dst = (mc68kcpu)->not_z_flag;
-}
-
-
-void m68000_base_device_ops::m68k_op_sub_32_er_a(m68000_base_device* mc68kcpu)
-{
- UINT32* r_dst = &DX(mc68kcpu);
- UINT32 src = AY(mc68kcpu);
- UINT32 dst = *r_dst;
- UINT32 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);
-
- *r_dst = (mc68kcpu)->not_z_flag;
-}
-
-
-void m68000_base_device_ops::m68k_op_sub_32_er_ai(m68000_base_device* mc68kcpu)
-{
- UINT32* r_dst = &DX(mc68kcpu);
- UINT32 src = OPER_AY_AI_32(mc68kcpu);
- UINT32 dst = *r_dst;
- UINT32 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);
-
- *r_dst = (mc68kcpu)->not_z_flag;
-}
-
-
-void m68000_base_device_ops::m68k_op_sub_32_er_pi(m68000_base_device* mc68kcpu)
-{
- UINT32* r_dst = &DX(mc68kcpu);
- UINT32 src = OPER_AY_PI_32(mc68kcpu);
- UINT32 dst = *r_dst;
- UINT32 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);
-
- *r_dst = (mc68kcpu)->not_z_flag;
-}
-
-
-void m68000_base_device_ops::m68k_op_sub_32_er_pd(m68000_base_device* mc68kcpu)
-{
- UINT32* r_dst = &DX(mc68kcpu);
- UINT32 src = OPER_AY_PD_32(mc68kcpu);
- UINT32 dst = *r_dst;
- UINT32 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);
-
- *r_dst = (mc68kcpu)->not_z_flag;
-}
-
-
-void m68000_base_device_ops::m68k_op_sub_32_er_di(m68000_base_device* mc68kcpu)
-{
- UINT32* r_dst = &DX(mc68kcpu);
- UINT32 src = OPER_AY_DI_32(mc68kcpu);
- UINT32 dst = *r_dst;
- UINT32 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);
-
- *r_dst = (mc68kcpu)->not_z_flag;
-}
-
-
-void m68000_base_device_ops::m68k_op_sub_32_er_ix(m68000_base_device* mc68kcpu)
-{
- UINT32* r_dst = &DX(mc68kcpu);
- UINT32 src = OPER_AY_IX_32(mc68kcpu);
- UINT32 dst = *r_dst;
- UINT32 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);
-
- *r_dst = (mc68kcpu)->not_z_flag;
-}
-
-
-void m68000_base_device_ops::m68k_op_sub_32_er_aw(m68000_base_device* mc68kcpu)
-{
- UINT32* r_dst = &DX(mc68kcpu);
- UINT32 src = OPER_AW_32(mc68kcpu);
- UINT32 dst = *r_dst;
- UINT32 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);
-
- *r_dst = (mc68kcpu)->not_z_flag;
-}
-
-
-void m68000_base_device_ops::m68k_op_sub_32_er_al(m68000_base_device* mc68kcpu)
-{
- UINT32* r_dst = &DX(mc68kcpu);
- UINT32 src = OPER_AL_32(mc68kcpu);
- UINT32 dst = *r_dst;
- UINT32 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);
-
- *r_dst = (mc68kcpu)->not_z_flag;
-}
-
-
-void m68000_base_device_ops::m68k_op_sub_32_er_pcdi(m68000_base_device* mc68kcpu)
-{
- UINT32* r_dst = &DX(mc68kcpu);
- UINT32 src = OPER_PCDI_32(mc68kcpu);
- UINT32 dst = *r_dst;
- UINT32 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);
-
- *r_dst = (mc68kcpu)->not_z_flag;
-}
-
-
-void m68000_base_device_ops::m68k_op_sub_32_er_pcix(m68000_base_device* mc68kcpu)
-{
- UINT32* r_dst = &DX(mc68kcpu);
- UINT32 src = OPER_PCIX_32(mc68kcpu);
- UINT32 dst = *r_dst;
- UINT32 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);
-
- *r_dst = (mc68kcpu)->not_z_flag;
-}
-
-
-void m68000_base_device_ops::m68k_op_sub_32_er_i(m68000_base_device* mc68kcpu)
-{
- UINT32* r_dst = &DX(mc68kcpu);
- UINT32 src = OPER_I_32(mc68kcpu);
- UINT32 dst = *r_dst;
- UINT32 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);
-
- *r_dst = (mc68kcpu)->not_z_flag;
-}
-
-
-void m68000_base_device_ops::m68k_op_sub_8_re_ai(m68000_base_device* mc68kcpu)
-{
- UINT32 ea = EA_AY_AI_8(mc68kcpu);
- UINT32 src = MASK_OUT_ABOVE_8(DX(mc68kcpu));
- UINT32 dst = m68ki_read_8((mc68kcpu), ea);
- UINT32 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);
-
- m68ki_write_8((mc68kcpu), ea, (mc68kcpu)->not_z_flag);
-}
-
-
-void m68000_base_device_ops::m68k_op_sub_8_re_pi(m68000_base_device* mc68kcpu)
-{
- UINT32 ea = EA_AY_PI_8(mc68kcpu);
- UINT32 src = MASK_OUT_ABOVE_8(DX(mc68kcpu));
- UINT32 dst = m68ki_read_8((mc68kcpu), ea);
- UINT32 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);
-
- m68ki_write_8((mc68kcpu), ea, (mc68kcpu)->not_z_flag);
-}
-
-
-void m68000_base_device_ops::m68k_op_sub_8_re_pi7(m68000_base_device* mc68kcpu)
-{
- UINT32 ea = EA_A7_PI_8(mc68kcpu);
- UINT32 src = MASK_OUT_ABOVE_8(DX(mc68kcpu));
- UINT32 dst = m68ki_read_8((mc68kcpu), ea);
- UINT32 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);
-
- m68ki_write_8((mc68kcpu), ea, (mc68kcpu)->not_z_flag);
-}
-
-
-void m68000_base_device_ops::m68k_op_sub_8_re_pd(m68000_base_device* mc68kcpu)
-{
- UINT32 ea = EA_AY_PD_8(mc68kcpu);
- UINT32 src = MASK_OUT_ABOVE_8(DX(mc68kcpu));
- UINT32 dst = m68ki_read_8((mc68kcpu), ea);
- UINT32 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);
-
- m68ki_write_8((mc68kcpu), ea, (mc68kcpu)->not_z_flag);
-}
-
-
-void m68000_base_device_ops::m68k_op_sub_8_re_pd7(m68000_base_device* mc68kcpu)
-{
- UINT32 ea = EA_A7_PD_8(mc68kcpu);
- UINT32 src = MASK_OUT_ABOVE_8(DX(mc68kcpu));
- UINT32 dst = m68ki_read_8((mc68kcpu), ea);
- UINT32 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);
-
- m68ki_write_8((mc68kcpu), ea, (mc68kcpu)->not_z_flag);
-}
-
-
-void m68000_base_device_ops::m68k_op_sub_8_re_di(m68000_base_device* mc68kcpu)
-{
- UINT32 ea = EA_AY_DI_8(mc68kcpu);
- UINT32 src = MASK_OUT_ABOVE_8(DX(mc68kcpu));
- UINT32 dst = m68ki_read_8((mc68kcpu), ea);
- UINT32 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);
-
- m68ki_write_8((mc68kcpu), ea, (mc68kcpu)->not_z_flag);
-}
-
-
-void m68000_base_device_ops::m68k_op_sub_8_re_ix(m68000_base_device* mc68kcpu)
-{
- UINT32 ea = EA_AY_IX_8(mc68kcpu);
- UINT32 src = MASK_OUT_ABOVE_8(DX(mc68kcpu));
- UINT32 dst = m68ki_read_8((mc68kcpu), ea);
- UINT32 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);
-
- m68ki_write_8((mc68kcpu), ea, (mc68kcpu)->not_z_flag);
-}
-
-
-void m68000_base_device_ops::m68k_op_sub_8_re_aw(m68000_base_device* mc68kcpu)
-{
- UINT32 ea = EA_AW_8(mc68kcpu);
- UINT32 src = MASK_OUT_ABOVE_8(DX(mc68kcpu));
- UINT32 dst = m68ki_read_8((mc68kcpu), ea);
- UINT32 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);
-
- m68ki_write_8((mc68kcpu), ea, (mc68kcpu)->not_z_flag);
-}
-
-
-void m68000_base_device_ops::m68k_op_sub_8_re_al(m68000_base_device* mc68kcpu)
-{
- UINT32 ea = EA_AL_8(mc68kcpu);
- UINT32 src = MASK_OUT_ABOVE_8(DX(mc68kcpu));
- UINT32 dst = m68ki_read_8((mc68kcpu), ea);
- UINT32 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);
-
- m68ki_write_8((mc68kcpu), ea, (mc68kcpu)->not_z_flag);
-}
-
-
-void m68000_base_device_ops::m68k_op_sub_16_re_ai(m68000_base_device* mc68kcpu)
-{
- UINT32 ea = EA_AY_AI_16(mc68kcpu);
- UINT32 src = MASK_OUT_ABOVE_16(DX(mc68kcpu));
- UINT32 dst = m68ki_read_16((mc68kcpu), ea);
- UINT32 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);
-
- m68ki_write_16((mc68kcpu), ea, (mc68kcpu)->not_z_flag);
-}
-
-
-void m68000_base_device_ops::m68k_op_sub_16_re_pi(m68000_base_device* mc68kcpu)
-{
- UINT32 ea = EA_AY_PI_16(mc68kcpu);
- UINT32 src = MASK_OUT_ABOVE_16(DX(mc68kcpu));
- UINT32 dst = m68ki_read_16((mc68kcpu), ea);
- UINT32 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);
-
- m68ki_write_16((mc68kcpu), ea, (mc68kcpu)->not_z_flag);
-}
-
-
-void m68000_base_device_ops::m68k_op_sub_16_re_pd(m68000_base_device* mc68kcpu)
-{
- UINT32 ea = EA_AY_PD_16(mc68kcpu);
- UINT32 src = MASK_OUT_ABOVE_16(DX(mc68kcpu));
- UINT32 dst = m68ki_read_16((mc68kcpu), ea);
- UINT32 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);
-
- m68ki_write_16((mc68kcpu), ea, (mc68kcpu)->not_z_flag);
-}
-
-
-void m68000_base_device_ops::m68k_op_sub_16_re_di(m68000_base_device* mc68kcpu)
-{
- UINT32 ea = EA_AY_DI_16(mc68kcpu);
- UINT32 src = MASK_OUT_ABOVE_16(DX(mc68kcpu));
- UINT32 dst = m68ki_read_16((mc68kcpu), ea);
- UINT32 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);
-
- m68ki_write_16((mc68kcpu), ea, (mc68kcpu)->not_z_flag);
-}
-
-
-void m68000_base_device_ops::m68k_op_sub_16_re_ix(m68000_base_device* mc68kcpu)
-{
- UINT32 ea = EA_AY_IX_16(mc68kcpu);
- UINT32 src = MASK_OUT_ABOVE_16(DX(mc68kcpu));
- UINT32 dst = m68ki_read_16((mc68kcpu), ea);
- UINT32 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);
-
- m68ki_write_16((mc68kcpu), ea, (mc68kcpu)->not_z_flag);
-}
-
-
-void m68000_base_device_ops::m68k_op_sub_16_re_aw(m68000_base_device* mc68kcpu)
-{
- UINT32 ea = EA_AW_16(mc68kcpu);
- UINT32 src = MASK_OUT_ABOVE_16(DX(mc68kcpu));
- UINT32 dst = m68ki_read_16((mc68kcpu), ea);
- UINT32 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);
-
- m68ki_write_16((mc68kcpu), ea, (mc68kcpu)->not_z_flag);
-}
-
-
-void m68000_base_device_ops::m68k_op_sub_16_re_al(m68000_base_device* mc68kcpu)
-{
- UINT32 ea = EA_AL_16(mc68kcpu);
- UINT32 src = MASK_OUT_ABOVE_16(DX(mc68kcpu));
- UINT32 dst = m68ki_read_16((mc68kcpu), ea);
- UINT32 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);
-
- m68ki_write_16((mc68kcpu), ea, (mc68kcpu)->not_z_flag);
-}
-
-
-void m68000_base_device_ops::m68k_op_sub_32_re_ai(m68000_base_device* mc68kcpu)
-{
- UINT32 ea = EA_AY_AI_32(mc68kcpu);
- UINT32 src = DX(mc68kcpu);
- UINT32 dst = m68ki_read_32((mc68kcpu), ea);
- UINT32 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);
-
- m68ki_write_32((mc68kcpu), ea, (mc68kcpu)->not_z_flag);
-}
-
-
-void m68000_base_device_ops::m68k_op_sub_32_re_pi(m68000_base_device* mc68kcpu)
-{
- UINT32 ea = EA_AY_PI_32(mc68kcpu);
- UINT32 src = DX(mc68kcpu);
- UINT32 dst = m68ki_read_32((mc68kcpu), ea);
- UINT32 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);
-
- m68ki_write_32((mc68kcpu), ea, (mc68kcpu)->not_z_flag);
-}
-
-
-void m68000_base_device_ops::m68k_op_sub_32_re_pd(m68000_base_device* mc68kcpu)
-{
- UINT32 ea = EA_AY_PD_32(mc68kcpu);
- UINT32 src = DX(mc68kcpu);
- UINT32 dst = m68ki_read_32((mc68kcpu), ea);
- UINT32 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);
-
- m68ki_write_32((mc68kcpu), ea, (mc68kcpu)->not_z_flag);
-}
-
-
-void m68000_base_device_ops::m68k_op_sub_32_re_di(m68000_base_device* mc68kcpu)
-{
- UINT32 ea = EA_AY_DI_32(mc68kcpu);
- UINT32 src = DX(mc68kcpu);
- UINT32 dst = m68ki_read_32((mc68kcpu), ea);
- UINT32 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);
-
- m68ki_write_32((mc68kcpu), ea, (mc68kcpu)->not_z_flag);
-}
-
-
-void m68000_base_device_ops::m68k_op_sub_32_re_ix(m68000_base_device* mc68kcpu)
-{
- UINT32 ea = EA_AY_IX_32(mc68kcpu);
- UINT32 src = DX(mc68kcpu);
- UINT32 dst = m68ki_read_32((mc68kcpu), ea);
- UINT32 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);
-
- m68ki_write_32((mc68kcpu), ea, (mc68kcpu)->not_z_flag);
-}
-
-
-void m68000_base_device_ops::m68k_op_sub_32_re_aw(m68000_base_device* mc68kcpu)
-{
- UINT32 ea = EA_AW_32(mc68kcpu);
- UINT32 src = DX(mc68kcpu);
- UINT32 dst = m68ki_read_32((mc68kcpu), ea);
- UINT32 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);
-
- m68ki_write_32((mc68kcpu), ea, (mc68kcpu)->not_z_flag);
-}
-
-
-void m68000_base_device_ops::m68k_op_sub_32_re_al(m68000_base_device* mc68kcpu)
-{
- UINT32 ea = EA_AL_32(mc68kcpu);
- UINT32 src = DX(mc68kcpu);
- UINT32 dst = m68ki_read_32((mc68kcpu), ea);
- UINT32 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);
-
- m68ki_write_32((mc68kcpu), ea, (mc68kcpu)->not_z_flag);
-}
-
-
-void m68000_base_device_ops::m68k_op_suba_16_d(m68000_base_device* mc68kcpu)
-{
- UINT32* r_dst = &AX(mc68kcpu);
-
- *r_dst = MASK_OUT_ABOVE_32(*r_dst - MAKE_INT_16(DY(mc68kcpu)));
-}
-
-
-void m68000_base_device_ops::m68k_op_suba_16_a(m68000_base_device* mc68kcpu)
-{
- UINT32* r_dst = &AX(mc68kcpu);
-
- *r_dst = MASK_OUT_ABOVE_32(*r_dst - MAKE_INT_16(AY(mc68kcpu)));
-}
-
-
-void m68000_base_device_ops::m68k_op_suba_16_ai(m68000_base_device* mc68kcpu)
-{
- UINT32* r_dst = &AX(mc68kcpu);
- UINT32 src = MAKE_INT_16(OPER_AY_AI_16(mc68kcpu));
-
- *r_dst = MASK_OUT_ABOVE_32(*r_dst - src);
-}
-
-
-void m68000_base_device_ops::m68k_op_suba_16_pi(m68000_base_device* mc68kcpu)
-{
- UINT32* r_dst = &AX(mc68kcpu);
- UINT32 src = MAKE_INT_16(OPER_AY_PI_16(mc68kcpu));
-
- *r_dst = MASK_OUT_ABOVE_32(*r_dst - src);
-}
-
-
-void m68000_base_device_ops::m68k_op_suba_16_pd(m68000_base_device* mc68kcpu)
-{
- UINT32* r_dst = &AX(mc68kcpu);
- UINT32 src = MAKE_INT_16(OPER_AY_PD_16(mc68kcpu));
-
- *r_dst = MASK_OUT_ABOVE_32(*r_dst - src);
-}
-
-
-void m68000_base_device_ops::m68k_op_suba_16_di(m68000_base_device* mc68kcpu)
-{
- UINT32* r_dst = &AX(mc68kcpu);
- UINT32 src = MAKE_INT_16(OPER_AY_DI_16(mc68kcpu));
-
- *r_dst = MASK_OUT_ABOVE_32(*r_dst - src);
-}
-
-
-void m68000_base_device_ops::m68k_op_suba_16_ix(m68000_base_device* mc68kcpu)
-{
- UINT32* r_dst = &AX(mc68kcpu);
- UINT32 src = MAKE_INT_16(OPER_AY_IX_16(mc68kcpu));
-
- *r_dst = MASK_OUT_ABOVE_32(*r_dst - src);
-}
-
-
-void m68000_base_device_ops::m68k_op_suba_16_aw(m68000_base_device* mc68kcpu)
-{
- UINT32* r_dst = &AX(mc68kcpu);
- UINT32 src = MAKE_INT_16(OPER_AW_16(mc68kcpu));
-
- *r_dst = MASK_OUT_ABOVE_32(*r_dst - src);
-}
-
-
-void m68000_base_device_ops::m68k_op_suba_16_al(m68000_base_device* mc68kcpu)
-{
- UINT32* r_dst = &AX(mc68kcpu);
- UINT32 src = MAKE_INT_16(OPER_AL_16(mc68kcpu));
-
- *r_dst = MASK_OUT_ABOVE_32(*r_dst - src);
-}
-
-
-void m68000_base_device_ops::m68k_op_suba_16_pcdi(m68000_base_device* mc68kcpu)
-{
- UINT32* r_dst = &AX(mc68kcpu);
- UINT32 src = MAKE_INT_16(OPER_PCDI_16(mc68kcpu));
-
- *r_dst = MASK_OUT_ABOVE_32(*r_dst - src);
-}
-
-
-void m68000_base_device_ops::m68k_op_suba_16_pcix(m68000_base_device* mc68kcpu)
-{
- UINT32* r_dst = &AX(mc68kcpu);
- UINT32 src = MAKE_INT_16(OPER_PCIX_16(mc68kcpu));
-
- *r_dst = MASK_OUT_ABOVE_32(*r_dst - src);
-}
-
-
-void m68000_base_device_ops::m68k_op_suba_16_i(m68000_base_device* mc68kcpu)
-{
- UINT32* r_dst = &AX(mc68kcpu);
- UINT32 src = MAKE_INT_16(OPER_I_16(mc68kcpu));
-
- *r_dst = MASK_OUT_ABOVE_32(*r_dst - src);
-}
-
-
-void m68000_base_device_ops::m68k_op_suba_32_d(m68000_base_device* mc68kcpu)
-{
- UINT32* r_dst = &AX(mc68kcpu);
-
- *r_dst = MASK_OUT_ABOVE_32(*r_dst - DY(mc68kcpu));
-}
-
-
-void m68000_base_device_ops::m68k_op_suba_32_a(m68000_base_device* mc68kcpu)
-{
- UINT32* r_dst = &AX(mc68kcpu);
-
- *r_dst = MASK_OUT_ABOVE_32(*r_dst - AY(mc68kcpu));
-}
-
-
-void m68000_base_device_ops::m68k_op_suba_32_ai(m68000_base_device* mc68kcpu)
-{
- UINT32* r_dst = &AX(mc68kcpu);
- UINT32 src = OPER_AY_AI_32(mc68kcpu);
-
- *r_dst = MASK_OUT_ABOVE_32(*r_dst - src);
-}
-
-
-void m68000_base_device_ops::m68k_op_suba_32_pi(m68000_base_device* mc68kcpu)
-{
- UINT32* r_dst = &AX(mc68kcpu);
- UINT32 src = OPER_AY_PI_32(mc68kcpu);
-
- *r_dst = MASK_OUT_ABOVE_32(*r_dst - src);
-}
-
-
-void m68000_base_device_ops::m68k_op_suba_32_pd(m68000_base_device* mc68kcpu)
-{
- UINT32* r_dst = &AX(mc68kcpu);
- UINT32 src = OPER_AY_PD_32(mc68kcpu);
-
- *r_dst = MASK_OUT_ABOVE_32(*r_dst - src);
-}
-
-
-void m68000_base_device_ops::m68k_op_suba_32_di(m68000_base_device* mc68kcpu)
-{
- UINT32* r_dst = &AX(mc68kcpu);
- UINT32 src = OPER_AY_DI_32(mc68kcpu);
-
- *r_dst = MASK_OUT_ABOVE_32(*r_dst - src);
-}
-
-
-void m68000_base_device_ops::m68k_op_suba_32_ix(m68000_base_device* mc68kcpu)
-{
- UINT32* r_dst = &AX(mc68kcpu);
- UINT32 src = OPER_AY_IX_32(mc68kcpu);
-
- *r_dst = MASK_OUT_ABOVE_32(*r_dst - src);
-}
-
-
-void m68000_base_device_ops::m68k_op_suba_32_aw(m68000_base_device* mc68kcpu)
-{
- UINT32* r_dst = &AX(mc68kcpu);
- UINT32 src = OPER_AW_32(mc68kcpu);
-
- *r_dst = MASK_OUT_ABOVE_32(*r_dst - src);
-}
-
-
-void m68000_base_device_ops::m68k_op_suba_32_al(m68000_base_device* mc68kcpu)
-{
- UINT32* r_dst = &AX(mc68kcpu);
- UINT32 src = OPER_AL_32(mc68kcpu);
-
- *r_dst = MASK_OUT_ABOVE_32(*r_dst - src);
-}
-
-
-void m68000_base_device_ops::m68k_op_suba_32_pcdi(m68000_base_device* mc68kcpu)
-{
- UINT32* r_dst = &AX(mc68kcpu);
- UINT32 src = OPER_PCDI_32(mc68kcpu);
-
- *r_dst = MASK_OUT_ABOVE_32(*r_dst - src);
-}
-
-
-void m68000_base_device_ops::m68k_op_suba_32_pcix(m68000_base_device* mc68kcpu)
-{
- UINT32* r_dst = &AX(mc68kcpu);
- UINT32 src = OPER_PCIX_32(mc68kcpu);
-
- *r_dst = MASK_OUT_ABOVE_32(*r_dst - src);
-}
-
-
-void m68000_base_device_ops::m68k_op_suba_32_i(m68000_base_device* mc68kcpu)
-{
- UINT32* r_dst = &AX(mc68kcpu);
- UINT32 src = OPER_I_32(mc68kcpu);
-
- *r_dst = MASK_OUT_ABOVE_32(*r_dst - src);
-}
-
-
-void m68000_base_device_ops::m68k_op_subi_8_d(m68000_base_device* mc68kcpu)
-{
- UINT32* r_dst = &DY(mc68kcpu);
- UINT32 src = OPER_I_8(mc68kcpu);
- UINT32 dst = MASK_OUT_ABOVE_8(*r_dst);
- UINT32 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);
-
- *r_dst = MASK_OUT_BELOW_8(*r_dst) | (mc68kcpu)->not_z_flag;
-}
-
-
-void m68000_base_device_ops::m68k_op_subi_8_ai(m68000_base_device* mc68kcpu)
-{
- UINT32 src = OPER_I_8(mc68kcpu);
- UINT32 ea = EA_AY_AI_8(mc68kcpu);
- UINT32 dst = m68ki_read_8((mc68kcpu), ea);
- UINT32 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);
-
- m68ki_write_8((mc68kcpu), ea, (mc68kcpu)->not_z_flag);
-}
-
-
-void m68000_base_device_ops::m68k_op_subi_8_pi(m68000_base_device* mc68kcpu)
-{
- UINT32 src = OPER_I_8(mc68kcpu);
- UINT32 ea = EA_AY_PI_8(mc68kcpu);
- UINT32 dst = m68ki_read_8((mc68kcpu), ea);
- UINT32 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);
-
- m68ki_write_8((mc68kcpu), ea, (mc68kcpu)->not_z_flag);
-}
-
-
-void m68000_base_device_ops::m68k_op_subi_8_pi7(m68000_base_device* mc68kcpu)
-{
- UINT32 src = OPER_I_8(mc68kcpu);
- UINT32 ea = EA_A7_PI_8(mc68kcpu);
- UINT32 dst = m68ki_read_8((mc68kcpu), ea);
- UINT32 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);
-
- m68ki_write_8((mc68kcpu), ea, (mc68kcpu)->not_z_flag);
-}
-
-
-void m68000_base_device_ops::m68k_op_subi_8_pd(m68000_base_device* mc68kcpu)
-{
- UINT32 src = OPER_I_8(mc68kcpu);
- UINT32 ea = EA_AY_PD_8(mc68kcpu);
- UINT32 dst = m68ki_read_8((mc68kcpu), ea);
- UINT32 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);
-
- m68ki_write_8((mc68kcpu), ea, (mc68kcpu)->not_z_flag);
-}
-
-
-void m68000_base_device_ops::m68k_op_subi_8_pd7(m68000_base_device* mc68kcpu)
-{
- UINT32 src = OPER_I_8(mc68kcpu);
- UINT32 ea = EA_A7_PD_8(mc68kcpu);
- UINT32 dst = m68ki_read_8((mc68kcpu), ea);
- UINT32 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);
-
- m68ki_write_8((mc68kcpu), ea, (mc68kcpu)->not_z_flag);
-}
-
-
-void m68000_base_device_ops::m68k_op_subi_8_di(m68000_base_device* mc68kcpu)
-{
- UINT32 src = OPER_I_8(mc68kcpu);
- UINT32 ea = EA_AY_DI_8(mc68kcpu);
- UINT32 dst = m68ki_read_8((mc68kcpu), ea);
- UINT32 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);
-
- m68ki_write_8((mc68kcpu), ea, (mc68kcpu)->not_z_flag);
-}
-
-
-void m68000_base_device_ops::m68k_op_subi_8_ix(m68000_base_device* mc68kcpu)
-{
- UINT32 src = OPER_I_8(mc68kcpu);
- UINT32 ea = EA_AY_IX_8(mc68kcpu);
- UINT32 dst = m68ki_read_8((mc68kcpu), ea);
- UINT32 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);
-
- m68ki_write_8((mc68kcpu), ea, (mc68kcpu)->not_z_flag);
-}
-
-
-void m68000_base_device_ops::m68k_op_subi_8_aw(m68000_base_device* mc68kcpu)
-{
- UINT32 src = OPER_I_8(mc68kcpu);
- UINT32 ea = EA_AW_8(mc68kcpu);
- UINT32 dst = m68ki_read_8((mc68kcpu), ea);
- UINT32 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);
-
- m68ki_write_8((mc68kcpu), ea, (mc68kcpu)->not_z_flag);
-}
-
-
-void m68000_base_device_ops::m68k_op_subi_8_al(m68000_base_device* mc68kcpu)
-{
- UINT32 src = OPER_I_8(mc68kcpu);
- UINT32 ea = EA_AL_8(mc68kcpu);
- UINT32 dst = m68ki_read_8((mc68kcpu), ea);
- UINT32 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);
-
- m68ki_write_8((mc68kcpu), ea, (mc68kcpu)->not_z_flag);
-}
-
-
-void m68000_base_device_ops::m68k_op_subi_16_d(m68000_base_device* mc68kcpu)
-{
- UINT32* r_dst = &DY(mc68kcpu);
- UINT32 src = OPER_I_16(mc68kcpu);
- UINT32 dst = MASK_OUT_ABOVE_16(*r_dst);
- UINT32 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);
-
- *r_dst = MASK_OUT_BELOW_16(*r_dst) | (mc68kcpu)->not_z_flag;
-}
-
-
-void m68000_base_device_ops::m68k_op_subi_16_ai(m68000_base_device* mc68kcpu)
-{
- UINT32 src = OPER_I_16(mc68kcpu);
- UINT32 ea = EA_AY_AI_16(mc68kcpu);
- UINT32 dst = m68ki_read_16((mc68kcpu), ea);
- UINT32 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);
-
- m68ki_write_16((mc68kcpu), ea, (mc68kcpu)->not_z_flag);
-}
-
-
-void m68000_base_device_ops::m68k_op_subi_16_pi(m68000_base_device* mc68kcpu)
-{
- UINT32 src = OPER_I_16(mc68kcpu);
- UINT32 ea = EA_AY_PI_16(mc68kcpu);
- UINT32 dst = m68ki_read_16((mc68kcpu), ea);
- UINT32 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);
-
- m68ki_write_16((mc68kcpu), ea, (mc68kcpu)->not_z_flag);
-}
-
-
-void m68000_base_device_ops::m68k_op_subi_16_pd(m68000_base_device* mc68kcpu)
-{
- UINT32 src = OPER_I_16(mc68kcpu);
- UINT32 ea = EA_AY_PD_16(mc68kcpu);
- UINT32 dst = m68ki_read_16((mc68kcpu), ea);
- UINT32 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);
-
- m68ki_write_16((mc68kcpu), ea, (mc68kcpu)->not_z_flag);
-}
-
-
-void m68000_base_device_ops::m68k_op_subi_16_di(m68000_base_device* mc68kcpu)
-{
- UINT32 src = OPER_I_16(mc68kcpu);
- UINT32 ea = EA_AY_DI_16(mc68kcpu);
- UINT32 dst = m68ki_read_16((mc68kcpu), ea);
- UINT32 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);
-
- m68ki_write_16((mc68kcpu), ea, (mc68kcpu)->not_z_flag);
-}
-
-
-void m68000_base_device_ops::m68k_op_subi_16_ix(m68000_base_device* mc68kcpu)
-{
- UINT32 src = OPER_I_16(mc68kcpu);
- UINT32 ea = EA_AY_IX_16(mc68kcpu);
- UINT32 dst = m68ki_read_16((mc68kcpu), ea);
- UINT32 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);
-
- m68ki_write_16((mc68kcpu), ea, (mc68kcpu)->not_z_flag);
-}
-
-
-void m68000_base_device_ops::m68k_op_subi_16_aw(m68000_base_device* mc68kcpu)
-{
- UINT32 src = OPER_I_16(mc68kcpu);
- UINT32 ea = EA_AW_16(mc68kcpu);
- UINT32 dst = m68ki_read_16((mc68kcpu), ea);
- UINT32 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);
-
- m68ki_write_16((mc68kcpu), ea, (mc68kcpu)->not_z_flag);
-}
-
-
-void m68000_base_device_ops::m68k_op_subi_16_al(m68000_base_device* mc68kcpu)
-{
- UINT32 src = OPER_I_16(mc68kcpu);
- UINT32 ea = EA_AL_16(mc68kcpu);
- UINT32 dst = m68ki_read_16((mc68kcpu), ea);
- UINT32 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);
-
- m68ki_write_16((mc68kcpu), ea, (mc68kcpu)->not_z_flag);
-}
-
-
-void m68000_base_device_ops::m68k_op_subi_32_d(m68000_base_device* mc68kcpu)
-{
- UINT32* r_dst = &DY(mc68kcpu);
- UINT32 src = OPER_I_32(mc68kcpu);
- UINT32 dst = *r_dst;
- UINT32 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);
-
- *r_dst = (mc68kcpu)->not_z_flag;
-}
-
-
-void m68000_base_device_ops::m68k_op_subi_32_ai(m68000_base_device* mc68kcpu)
-{
- UINT32 src = OPER_I_32(mc68kcpu);
- UINT32 ea = EA_AY_AI_32(mc68kcpu);
- UINT32 dst = m68ki_read_32((mc68kcpu), ea);
- UINT32 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);
-
- m68ki_write_32((mc68kcpu), ea, (mc68kcpu)->not_z_flag);
-}
-
-
-void m68000_base_device_ops::m68k_op_subi_32_pi(m68000_base_device* mc68kcpu)
-{
- UINT32 src = OPER_I_32(mc68kcpu);
- UINT32 ea = EA_AY_PI_32(mc68kcpu);
- UINT32 dst = m68ki_read_32((mc68kcpu), ea);
- UINT32 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);
-
- m68ki_write_32((mc68kcpu), ea, (mc68kcpu)->not_z_flag);
-}
-
-
-void m68000_base_device_ops::m68k_op_subi_32_pd(m68000_base_device* mc68kcpu)
-{
- UINT32 src = OPER_I_32(mc68kcpu);
- UINT32 ea = EA_AY_PD_32(mc68kcpu);
- UINT32 dst = m68ki_read_32((mc68kcpu), ea);
- UINT32 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);
-
- m68ki_write_32((mc68kcpu), ea, (mc68kcpu)->not_z_flag);
-}
-
-
-void m68000_base_device_ops::m68k_op_subi_32_di(m68000_base_device* mc68kcpu)
-{
- UINT32 src = OPER_I_32(mc68kcpu);
- UINT32 ea = EA_AY_DI_32(mc68kcpu);
- UINT32 dst = m68ki_read_32((mc68kcpu), ea);
- UINT32 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);
-
- m68ki_write_32((mc68kcpu), ea, (mc68kcpu)->not_z_flag);
-}
-
-
-void m68000_base_device_ops::m68k_op_subi_32_ix(m68000_base_device* mc68kcpu)
-{
- UINT32 src = OPER_I_32(mc68kcpu);
- UINT32 ea = EA_AY_IX_32(mc68kcpu);
- UINT32 dst = m68ki_read_32((mc68kcpu), ea);
- UINT32 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);
-
- m68ki_write_32((mc68kcpu), ea, (mc68kcpu)->not_z_flag);
-}
-
-
-void m68000_base_device_ops::m68k_op_subi_32_aw(m68000_base_device* mc68kcpu)
-{
- UINT32 src = OPER_I_32(mc68kcpu);
- UINT32 ea = EA_AW_32(mc68kcpu);
- UINT32 dst = m68ki_read_32((mc68kcpu), ea);
- UINT32 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);
-
- m68ki_write_32((mc68kcpu), ea, (mc68kcpu)->not_z_flag);
-}
-
-
-void m68000_base_device_ops::m68k_op_subi_32_al(m68000_base_device* mc68kcpu)
-{
- UINT32 src = OPER_I_32(mc68kcpu);
- UINT32 ea = EA_AL_32(mc68kcpu);
- UINT32 dst = m68ki_read_32((mc68kcpu), ea);
- UINT32 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);
-
- m68ki_write_32((mc68kcpu), ea, (mc68kcpu)->not_z_flag);
-}
-
-
-void m68000_base_device_ops::m68k_op_subq_8_d(m68000_base_device* mc68kcpu)
-{
- UINT32* r_dst = &DY(mc68kcpu);
- UINT32 src = ((((mc68kcpu)->ir >> 9) - 1) & 7) + 1;
- UINT32 dst = MASK_OUT_ABOVE_8(*r_dst);
- UINT32 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);
-
- *r_dst = MASK_OUT_BELOW_8(*r_dst) | (mc68kcpu)->not_z_flag;
-}
-
-
-void m68000_base_device_ops::m68k_op_subq_8_ai(m68000_base_device* mc68kcpu)
-{
- UINT32 src = ((((mc68kcpu)->ir >> 9) - 1) & 7) + 1;
- UINT32 ea = EA_AY_AI_8(mc68kcpu);
- UINT32 dst = m68ki_read_8((mc68kcpu), ea);
- UINT32 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);
-
- m68ki_write_8((mc68kcpu), ea, (mc68kcpu)->not_z_flag);
-}
-
-
-void m68000_base_device_ops::m68k_op_subq_8_pi(m68000_base_device* mc68kcpu)
-{
- UINT32 src = ((((mc68kcpu)->ir >> 9) - 1) & 7) + 1;
- UINT32 ea = EA_AY_PI_8(mc68kcpu);
- UINT32 dst = m68ki_read_8((mc68kcpu), ea);
- UINT32 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);
-
- m68ki_write_8((mc68kcpu), ea, (mc68kcpu)->not_z_flag);
-}
-
-
-void m68000_base_device_ops::m68k_op_subq_8_pi7(m68000_base_device* mc68kcpu)
-{
- UINT32 src = ((((mc68kcpu)->ir >> 9) - 1) & 7) + 1;
- UINT32 ea = EA_A7_PI_8(mc68kcpu);
- UINT32 dst = m68ki_read_8((mc68kcpu), ea);
- UINT32 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);
-
- m68ki_write_8((mc68kcpu), ea, (mc68kcpu)->not_z_flag);
-}
-
-
-void m68000_base_device_ops::m68k_op_subq_8_pd(m68000_base_device* mc68kcpu)
-{
- UINT32 src = ((((mc68kcpu)->ir >> 9) - 1) & 7) + 1;
- UINT32 ea = EA_AY_PD_8(mc68kcpu);
- UINT32 dst = m68ki_read_8((mc68kcpu), ea);
- UINT32 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);
-
- m68ki_write_8((mc68kcpu), ea, (mc68kcpu)->not_z_flag);
-}
-
-
-void m68000_base_device_ops::m68k_op_subq_8_pd7(m68000_base_device* mc68kcpu)
-{
- UINT32 src = ((((mc68kcpu)->ir >> 9) - 1) & 7) + 1;
- UINT32 ea = EA_A7_PD_8(mc68kcpu);
- UINT32 dst = m68ki_read_8((mc68kcpu), ea);
- UINT32 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);
-
- m68ki_write_8((mc68kcpu), ea, (mc68kcpu)->not_z_flag);
-}
-
-
-void m68000_base_device_ops::m68k_op_subq_8_di(m68000_base_device* mc68kcpu)
-{
- UINT32 src = ((((mc68kcpu)->ir >> 9) - 1) & 7) + 1;
- UINT32 ea = EA_AY_DI_8(mc68kcpu);
- UINT32 dst = m68ki_read_8((mc68kcpu), ea);
- UINT32 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);
-
- m68ki_write_8((mc68kcpu), ea, (mc68kcpu)->not_z_flag);
-}
-
-
-void m68000_base_device_ops::m68k_op_subq_8_ix(m68000_base_device* mc68kcpu)
-{
- UINT32 src = ((((mc68kcpu)->ir >> 9) - 1) & 7) + 1;
- UINT32 ea = EA_AY_IX_8(mc68kcpu);
- UINT32 dst = m68ki_read_8((mc68kcpu), ea);
- UINT32 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);
-
- m68ki_write_8((mc68kcpu), ea, (mc68kcpu)->not_z_flag);
-}
-
-
-void m68000_base_device_ops::m68k_op_subq_8_aw(m68000_base_device* mc68kcpu)
-{
- UINT32 src = ((((mc68kcpu)->ir >> 9) - 1) & 7) + 1;
- UINT32 ea = EA_AW_8(mc68kcpu);
- UINT32 dst = m68ki_read_8((mc68kcpu), ea);
- UINT32 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);
-
- m68ki_write_8((mc68kcpu), ea, (mc68kcpu)->not_z_flag);
-}
-
-
-void m68000_base_device_ops::m68k_op_subq_8_al(m68000_base_device* mc68kcpu)
-{
- UINT32 src = ((((mc68kcpu)->ir >> 9) - 1) & 7) + 1;
- UINT32 ea = EA_AL_8(mc68kcpu);
- UINT32 dst = m68ki_read_8((mc68kcpu), ea);
- UINT32 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);
-
- m68ki_write_8((mc68kcpu), ea, (mc68kcpu)->not_z_flag);
-}
-
-
-void m68000_base_device_ops::m68k_op_subq_16_d(m68000_base_device* mc68kcpu)
-{
- UINT32* r_dst = &DY(mc68kcpu);
- UINT32 src = ((((mc68kcpu)->ir >> 9) - 1) & 7) + 1;
- UINT32 dst = MASK_OUT_ABOVE_16(*r_dst);
- UINT32 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);
-
- *r_dst = MASK_OUT_BELOW_16(*r_dst) | (mc68kcpu)->not_z_flag;
-}
-
-
-void m68000_base_device_ops::m68k_op_subq_16_a(m68000_base_device* mc68kcpu)
-{
- UINT32* r_dst = &AY(mc68kcpu);
-
- *r_dst = MASK_OUT_ABOVE_32(*r_dst - (((((mc68kcpu)->ir >> 9) - 1) & 7) + 1));
-}
-
-
-void m68000_base_device_ops::m68k_op_subq_16_ai(m68000_base_device* mc68kcpu)
-{
- UINT32 src = ((((mc68kcpu)->ir >> 9) - 1) & 7) + 1;
- UINT32 ea = EA_AY_AI_16(mc68kcpu);
- UINT32 dst = m68ki_read_16((mc68kcpu), ea);
- UINT32 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);
-
- m68ki_write_16((mc68kcpu), ea, (mc68kcpu)->not_z_flag);
-}
-
-
-void m68000_base_device_ops::m68k_op_subq_16_pi(m68000_base_device* mc68kcpu)
-{
- UINT32 src = ((((mc68kcpu)->ir >> 9) - 1) & 7) + 1;
- UINT32 ea = EA_AY_PI_16(mc68kcpu);
- UINT32 dst = m68ki_read_16((mc68kcpu), ea);
- UINT32 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);
-
- m68ki_write_16((mc68kcpu), ea, (mc68kcpu)->not_z_flag);
-}
-
-
-void m68000_base_device_ops::m68k_op_subq_16_pd(m68000_base_device* mc68kcpu)
-{
- UINT32 src = ((((mc68kcpu)->ir >> 9) - 1) & 7) + 1;
- UINT32 ea = EA_AY_PD_16(mc68kcpu);
- UINT32 dst = m68ki_read_16((mc68kcpu), ea);
- UINT32 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);
-
- m68ki_write_16((mc68kcpu), ea, (mc68kcpu)->not_z_flag);
-}
-
-
-void m68000_base_device_ops::m68k_op_subq_16_di(m68000_base_device* mc68kcpu)
-{
- UINT32 src = ((((mc68kcpu)->ir >> 9) - 1) & 7) + 1;
- UINT32 ea = EA_AY_DI_16(mc68kcpu);
- UINT32 dst = m68ki_read_16((mc68kcpu), ea);
- UINT32 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);
-
- m68ki_write_16((mc68kcpu), ea, (mc68kcpu)->not_z_flag);
-}
-
-
-void m68000_base_device_ops::m68k_op_subq_16_ix(m68000_base_device* mc68kcpu)
-{
- UINT32 src = ((((mc68kcpu)->ir >> 9) - 1) & 7) + 1;
- UINT32 ea = EA_AY_IX_16(mc68kcpu);
- UINT32 dst = m68ki_read_16((mc68kcpu), ea);
- UINT32 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);
-
- m68ki_write_16((mc68kcpu), ea, (mc68kcpu)->not_z_flag);
-}
-
-
-void m68000_base_device_ops::m68k_op_subq_16_aw(m68000_base_device* mc68kcpu)
-{
- UINT32 src = ((((mc68kcpu)->ir >> 9) - 1) & 7) + 1;
- UINT32 ea = EA_AW_16(mc68kcpu);
- UINT32 dst = m68ki_read_16((mc68kcpu), ea);
- UINT32 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);
-
- m68ki_write_16((mc68kcpu), ea, (mc68kcpu)->not_z_flag);
-}
-
-
-void m68000_base_device_ops::m68k_op_subq_16_al(m68000_base_device* mc68kcpu)
-{
- UINT32 src = ((((mc68kcpu)->ir >> 9) - 1) & 7) + 1;
- UINT32 ea = EA_AL_16(mc68kcpu);
- UINT32 dst = m68ki_read_16((mc68kcpu), ea);
- UINT32 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);
-
- m68ki_write_16((mc68kcpu), ea, (mc68kcpu)->not_z_flag);
-}
-
-
-void m68000_base_device_ops::m68k_op_subq_32_d(m68000_base_device* mc68kcpu)
-{
- UINT32* r_dst = &DY(mc68kcpu);
- UINT32 src = ((((mc68kcpu)->ir >> 9) - 1) & 7) + 1;
- UINT32 dst = *r_dst;
- UINT32 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);
-
- *r_dst = (mc68kcpu)->not_z_flag;
-}
-
-
-void m68000_base_device_ops::m68k_op_subq_32_a(m68000_base_device* mc68kcpu)
-{
- UINT32* r_dst = &AY(mc68kcpu);
-
- *r_dst = MASK_OUT_ABOVE_32(*r_dst - (((((mc68kcpu)->ir >> 9) - 1) & 7) + 1));
-}
-
-
-void m68000_base_device_ops::m68k_op_subq_32_ai(m68000_base_device* mc68kcpu)
-{
- UINT32 src = ((((mc68kcpu)->ir >> 9) - 1) & 7) + 1;
- UINT32 ea = EA_AY_AI_32(mc68kcpu);
- UINT32 dst = m68ki_read_32((mc68kcpu), ea);
- UINT32 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);
-
- m68ki_write_32((mc68kcpu), ea, (mc68kcpu)->not_z_flag);
-}
-
-
-void m68000_base_device_ops::m68k_op_subq_32_pi(m68000_base_device* mc68kcpu)
-{
- UINT32 src = ((((mc68kcpu)->ir >> 9) - 1) & 7) + 1;
- UINT32 ea = EA_AY_PI_32(mc68kcpu);
- UINT32 dst = m68ki_read_32((mc68kcpu), ea);
- UINT32 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);
-
- m68ki_write_32((mc68kcpu), ea, (mc68kcpu)->not_z_flag);
-}
-
-
-void m68000_base_device_ops::m68k_op_subq_32_pd(m68000_base_device* mc68kcpu)
-{
- UINT32 src = ((((mc68kcpu)->ir >> 9) - 1) & 7) + 1;
- UINT32 ea = EA_AY_PD_32(mc68kcpu);
- UINT32 dst = m68ki_read_32((mc68kcpu), ea);
- UINT32 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);
-
- m68ki_write_32((mc68kcpu), ea, (mc68kcpu)->not_z_flag);
-}
-
-
-void m68000_base_device_ops::m68k_op_subq_32_di(m68000_base_device* mc68kcpu)
-{
- UINT32 src = ((((mc68kcpu)->ir >> 9) - 1) & 7) + 1;
- UINT32 ea = EA_AY_DI_32(mc68kcpu);
- UINT32 dst = m68ki_read_32((mc68kcpu), ea);
- UINT32 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);
-
- m68ki_write_32((mc68kcpu), ea, (mc68kcpu)->not_z_flag);
-}
-
-
-void m68000_base_device_ops::m68k_op_subq_32_ix(m68000_base_device* mc68kcpu)
-{
- UINT32 src = ((((mc68kcpu)->ir >> 9) - 1) & 7) + 1;
- UINT32 ea = EA_AY_IX_32(mc68kcpu);
- UINT32 dst = m68ki_read_32((mc68kcpu), ea);
- UINT32 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);
-
- m68ki_write_32((mc68kcpu), ea, (mc68kcpu)->not_z_flag);
-}
-
-
-void m68000_base_device_ops::m68k_op_subq_32_aw(m68000_base_device* mc68kcpu)
-{
- UINT32 src = ((((mc68kcpu)->ir >> 9) - 1) & 7) + 1;
- UINT32 ea = EA_AW_32(mc68kcpu);
- UINT32 dst = m68ki_read_32((mc68kcpu), ea);
- UINT32 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);
-
- m68ki_write_32((mc68kcpu), ea, (mc68kcpu)->not_z_flag);
-}
-
-
-void m68000_base_device_ops::m68k_op_subq_32_al(m68000_base_device* mc68kcpu)
-{
- UINT32 src = ((((mc68kcpu)->ir >> 9) - 1) & 7) + 1;
- UINT32 ea = EA_AL_32(mc68kcpu);
- UINT32 dst = m68ki_read_32((mc68kcpu), ea);
- UINT32 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);
-
- m68ki_write_32((mc68kcpu), ea, (mc68kcpu)->not_z_flag);
-}
-
-
-void m68000_base_device_ops::m68k_op_subx_8_rr(m68000_base_device* mc68kcpu)
-{
- UINT32* r_dst = &DX(mc68kcpu);
- UINT32 src = MASK_OUT_ABOVE_8(DY(mc68kcpu));
- UINT32 dst = MASK_OUT_ABOVE_8(*r_dst);
- UINT32 res = dst - src - XFLAG_AS_1(mc68kcpu);
-
- (mc68kcpu)->n_flag = NFLAG_8(res);
- (mc68kcpu)->x_flag = (mc68kcpu)->c_flag = CFLAG_8(res);
- (mc68kcpu)->v_flag = VFLAG_SUB_8(src, dst, res);
-
- res = MASK_OUT_ABOVE_8(res);
- (mc68kcpu)->not_z_flag |= res;
-
- *r_dst = MASK_OUT_BELOW_8(*r_dst) | res;
-}
-
-
-void m68000_base_device_ops::m68k_op_subx_16_rr(m68000_base_device* mc68kcpu)
-{
- UINT32* r_dst = &DX(mc68kcpu);
- UINT32 src = MASK_OUT_ABOVE_16(DY(mc68kcpu));
- UINT32 dst = MASK_OUT_ABOVE_16(*r_dst);
- UINT32 res = dst - src - XFLAG_AS_1(mc68kcpu);
-
- (mc68kcpu)->n_flag = NFLAG_16(res);
- (mc68kcpu)->x_flag = (mc68kcpu)->c_flag = CFLAG_16(res);
- (mc68kcpu)->v_flag = VFLAG_SUB_16(src, dst, res);
-
- res = MASK_OUT_ABOVE_16(res);
- (mc68kcpu)->not_z_flag |= res;
-
- *r_dst = MASK_OUT_BELOW_16(*r_dst) | res;
-}
-
-
-void m68000_base_device_ops::m68k_op_subx_32_rr(m68000_base_device* mc68kcpu)
-{
- UINT32* r_dst = &DX(mc68kcpu);
- UINT32 src = DY(mc68kcpu);
- UINT32 dst = *r_dst;
- UINT32 res = dst - src - XFLAG_AS_1(mc68kcpu);
-
- (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);
-
- res = MASK_OUT_ABOVE_32(res);
- (mc68kcpu)->not_z_flag |= res;
-
- *r_dst = res;
-}
-
-
-void m68000_base_device_ops::m68k_op_subx_8_mm_ax7(m68000_base_device* mc68kcpu)
-{
- UINT32 src = OPER_AY_PD_8(mc68kcpu);
- UINT32 ea = EA_A7_PD_8(mc68kcpu);
- UINT32 dst = m68ki_read_8((mc68kcpu), ea);
- UINT32 res = dst - src - XFLAG_AS_1(mc68kcpu);
-
- (mc68kcpu)->n_flag = NFLAG_8(res);
- (mc68kcpu)->x_flag = (mc68kcpu)->c_flag = CFLAG_8(res);
- (mc68kcpu)->v_flag = VFLAG_SUB_8(src, dst, res);
-
- res = MASK_OUT_ABOVE_8(res);
- (mc68kcpu)->not_z_flag |= res;
-
- m68ki_write_8((mc68kcpu), ea, res);
-}
-
-
-void m68000_base_device_ops::m68k_op_subx_8_mm_ay7(m68000_base_device* mc68kcpu)
-{
- UINT32 src = OPER_A7_PD_8(mc68kcpu);
- UINT32 ea = EA_AX_PD_8(mc68kcpu);
- UINT32 dst = m68ki_read_8((mc68kcpu), ea);
- UINT32 res = dst - src - XFLAG_AS_1(mc68kcpu);
-
- (mc68kcpu)->n_flag = NFLAG_8(res);
- (mc68kcpu)->x_flag = (mc68kcpu)->c_flag = CFLAG_8(res);
- (mc68kcpu)->v_flag = VFLAG_SUB_8(src, dst, res);
-
- res = MASK_OUT_ABOVE_8(res);
- (mc68kcpu)->not_z_flag |= res;
-
- m68ki_write_8((mc68kcpu), ea, res);
-}
-
-
-void m68000_base_device_ops::m68k_op_subx_8_mm_axy7(m68000_base_device* mc68kcpu)
-{
- UINT32 src = OPER_A7_PD_8(mc68kcpu);
- UINT32 ea = EA_A7_PD_8(mc68kcpu);
- UINT32 dst = m68ki_read_8((mc68kcpu), ea);
- UINT32 res = dst - src - XFLAG_AS_1(mc68kcpu);
-
- (mc68kcpu)->n_flag = NFLAG_8(res);
- (mc68kcpu)->x_flag = (mc68kcpu)->c_flag = CFLAG_8(res);
- (mc68kcpu)->v_flag = VFLAG_SUB_8(src, dst, res);
-
- res = MASK_OUT_ABOVE_8(res);
- (mc68kcpu)->not_z_flag |= res;
-
- m68ki_write_8((mc68kcpu), ea, res);
-}
-
-
-void m68000_base_device_ops::m68k_op_subx_8_mm(m68000_base_device* mc68kcpu)
-{
- UINT32 src = OPER_AY_PD_8(mc68kcpu);
- UINT32 ea = EA_AX_PD_8(mc68kcpu);
- UINT32 dst = m68ki_read_8((mc68kcpu), ea);
- UINT32 res = dst - src - XFLAG_AS_1(mc68kcpu);
-
- (mc68kcpu)->n_flag = NFLAG_8(res);
- (mc68kcpu)->x_flag = (mc68kcpu)->c_flag = CFLAG_8(res);
- (mc68kcpu)->v_flag = VFLAG_SUB_8(src, dst, res);
-
- res = MASK_OUT_ABOVE_8(res);
- (mc68kcpu)->not_z_flag |= res;
-
- m68ki_write_8((mc68kcpu), ea, res);
-}
-
-
-void m68000_base_device_ops::m68k_op_subx_16_mm(m68000_base_device* mc68kcpu)
-{
- UINT32 src = OPER_AY_PD_16(mc68kcpu);
- UINT32 ea = EA_AX_PD_16(mc68kcpu);
- UINT32 dst = m68ki_read_16((mc68kcpu), ea);
- UINT32 res = dst - src - XFLAG_AS_1(mc68kcpu);
-
- (mc68kcpu)->n_flag = NFLAG_16(res);
- (mc68kcpu)->x_flag = (mc68kcpu)->c_flag = CFLAG_16(res);
- (mc68kcpu)->v_flag = VFLAG_SUB_16(src, dst, res);
-
- res = MASK_OUT_ABOVE_16(res);
- (mc68kcpu)->not_z_flag |= res;
-
- m68ki_write_16((mc68kcpu), ea, res);
-}
-
-
-void m68000_base_device_ops::m68k_op_subx_32_mm(m68000_base_device* mc68kcpu)
-{
- UINT32 src = OPER_AY_PD_32(mc68kcpu);
- UINT32 ea = EA_AX_PD_32(mc68kcpu);
- UINT32 dst = m68ki_read_32((mc68kcpu), ea);
- UINT32 res = dst - src - XFLAG_AS_1(mc68kcpu);
-
- (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);
-
- res = MASK_OUT_ABOVE_32(res);
- (mc68kcpu)->not_z_flag |= res;
-
- m68ki_write_32((mc68kcpu), ea, res);
-}
-
-
-void m68000_base_device_ops::m68k_op_swap_32(m68000_base_device* mc68kcpu)
-{
- UINT32* r_dst = &DY(mc68kcpu);
-
- (mc68kcpu)->not_z_flag = MASK_OUT_ABOVE_32(*r_dst<<16);
- *r_dst = (*r_dst>>16) | (mc68kcpu)->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;
-}
-
-
-void m68000_base_device_ops::m68k_op_tas_8_d(m68000_base_device* mc68kcpu)
-{
- UINT32* r_dst = &DY(mc68kcpu);
-
- (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;
- *r_dst |= 0x80;
-}
-
-
-void m68000_base_device_ops::m68k_op_tas_8_ai(m68000_base_device* mc68kcpu)
-{
- UINT32 ea = EA_AY_AI_8(mc68kcpu);
- UINT32 dst = m68ki_read_8((mc68kcpu), ea);
-
- (mc68kcpu)->not_z_flag = dst;
- (mc68kcpu)->n_flag = NFLAG_8(dst);
- (mc68kcpu)->v_flag = VFLAG_CLEAR;
- (mc68kcpu)->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);
- else
- m68ki_write_8((mc68kcpu), ea, dst | 0x80);
-}
-
-
-void m68000_base_device_ops::m68k_op_tas_8_pi(m68000_base_device* mc68kcpu)
-{
- UINT32 ea = EA_AY_PI_8(mc68kcpu);
- UINT32 dst = m68ki_read_8((mc68kcpu), ea);
-
- (mc68kcpu)->not_z_flag = dst;
- (mc68kcpu)->n_flag = NFLAG_8(dst);
- (mc68kcpu)->v_flag = VFLAG_CLEAR;
- (mc68kcpu)->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);
- else
- m68ki_write_8((mc68kcpu), ea, dst | 0x80);
-}
-
-
-void m68000_base_device_ops::m68k_op_tas_8_pi7(m68000_base_device* mc68kcpu)
-{
- UINT32 ea = EA_A7_PI_8(mc68kcpu);
- UINT32 dst = m68ki_read_8((mc68kcpu), ea);
-
- (mc68kcpu)->not_z_flag = dst;
- (mc68kcpu)->n_flag = NFLAG_8(dst);
- (mc68kcpu)->v_flag = VFLAG_CLEAR;
- (mc68kcpu)->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);
- else
- m68ki_write_8((mc68kcpu), ea, dst | 0x80);
-}
-
-
-void m68000_base_device_ops::m68k_op_tas_8_pd(m68000_base_device* mc68kcpu)
-{
- UINT32 ea = EA_AY_PD_8(mc68kcpu);
- UINT32 dst = m68ki_read_8((mc68kcpu), ea);
-
- (mc68kcpu)->not_z_flag = dst;
- (mc68kcpu)->n_flag = NFLAG_8(dst);
- (mc68kcpu)->v_flag = VFLAG_CLEAR;
- (mc68kcpu)->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);
- else
- m68ki_write_8((mc68kcpu), ea, dst | 0x80);
-}
-
-
-void m68000_base_device_ops::m68k_op_tas_8_pd7(m68000_base_device* mc68kcpu)
-{
- UINT32 ea = EA_A7_PD_8(mc68kcpu);
- UINT32 dst = m68ki_read_8((mc68kcpu), ea);
-
- (mc68kcpu)->not_z_flag = dst;
- (mc68kcpu)->n_flag = NFLAG_8(dst);
- (mc68kcpu)->v_flag = VFLAG_CLEAR;
- (mc68kcpu)->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);
- else
- m68ki_write_8((mc68kcpu), ea, dst | 0x80);
-}
-
-
-void m68000_base_device_ops::m68k_op_tas_8_di(m68000_base_device* mc68kcpu)
-{
- UINT32 ea = EA_AY_DI_8(mc68kcpu);
- UINT32 dst = m68ki_read_8((mc68kcpu), ea);
-
- (mc68kcpu)->not_z_flag = dst;
- (mc68kcpu)->n_flag = NFLAG_8(dst);
- (mc68kcpu)->v_flag = VFLAG_CLEAR;
- (mc68kcpu)->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);
- else
- m68ki_write_8((mc68kcpu), ea, dst | 0x80);
-}
-
-
-void m68000_base_device_ops::m68k_op_tas_8_ix(m68000_base_device* mc68kcpu)
-{
- UINT32 ea = EA_AY_IX_8(mc68kcpu);
- UINT32 dst = m68ki_read_8((mc68kcpu), ea);
-
- (mc68kcpu)->not_z_flag = dst;
- (mc68kcpu)->n_flag = NFLAG_8(dst);
- (mc68kcpu)->v_flag = VFLAG_CLEAR;
- (mc68kcpu)->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);
- else
- m68ki_write_8((mc68kcpu), ea, dst | 0x80);
-}
-
-
-void m68000_base_device_ops::m68k_op_tas_8_aw(m68000_base_device* mc68kcpu)
-{
- UINT32 ea = EA_AW_8(mc68kcpu);
- UINT32 dst = m68ki_read_8((mc68kcpu), ea);
-
- (mc68kcpu)->not_z_flag = dst;
- (mc68kcpu)->n_flag = NFLAG_8(dst);
- (mc68kcpu)->v_flag = VFLAG_CLEAR;
- (mc68kcpu)->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);
- else
- m68ki_write_8((mc68kcpu), ea, dst | 0x80);
-}
-
-
-void m68000_base_device_ops::m68k_op_tas_8_al(m68000_base_device* mc68kcpu)
-{
- UINT32 ea = EA_AL_8(mc68kcpu);
- UINT32 dst = m68ki_read_8((mc68kcpu), ea);
-
- (mc68kcpu)->not_z_flag = dst;
- (mc68kcpu)->n_flag = NFLAG_8(dst);
- (mc68kcpu)->v_flag = VFLAG_CLEAR;
- (mc68kcpu)->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);
- else
- m68ki_write_8((mc68kcpu), ea, dst | 0x80);
-}
-
-
-void m68000_base_device_ops::m68k_op_trap(m68000_base_device* mc68kcpu)
-{
- /* Trap#n stacks exception frame type 0 */
- m68ki_exception_trapN((mc68kcpu), EXCEPTION_TRAP_BASE + ((mc68kcpu)->ir & 0xf)); /* HJB 990403 */
-}
-
-
-void m68000_base_device_ops::m68k_op_trapt(m68000_base_device* mc68kcpu)
-{
- if(CPU_TYPE_IS_EC020_PLUS((mc68kcpu)->cpu_type))
- {
- m68ki_exception_trap((mc68kcpu), EXCEPTION_TRAPV); /* HJB 990403 */
- return;
- }
- m68ki_exception_illegal(mc68kcpu);
-}
-
-
-void m68000_base_device_ops::m68k_op_trapt_16(m68000_base_device* mc68kcpu)
-{
- if(CPU_TYPE_IS_EC020_PLUS((mc68kcpu)->cpu_type))
- {
- m68ki_exception_trap((mc68kcpu), EXCEPTION_TRAPV); /* HJB 990403 */
- return;
- }
- m68ki_exception_illegal(mc68kcpu);
-}
-
-
-void m68000_base_device_ops::m68k_op_trapt_32(m68000_base_device* mc68kcpu)
-{
- if(CPU_TYPE_IS_EC020_PLUS((mc68kcpu)->cpu_type))
- {
- m68ki_exception_trap((mc68kcpu), EXCEPTION_TRAPV); /* HJB 990403 */
- return;
- }
- m68ki_exception_illegal(mc68kcpu);
-}
-
-
-void m68000_base_device_ops::m68k_op_trapf(m68000_base_device* mc68kcpu)
-{
- if(CPU_TYPE_IS_EC020_PLUS((mc68kcpu)->cpu_type))
- {
- return;
- }
- m68ki_exception_illegal(mc68kcpu);
-}
-
-
-void m68000_base_device_ops::m68k_op_trapf_16(m68000_base_device* mc68kcpu)
-{
- if(CPU_TYPE_IS_EC020_PLUS((mc68kcpu)->cpu_type))
- {
- REG_PC(mc68kcpu) += 2;
- return;
- }
- m68ki_exception_illegal(mc68kcpu);
-}
-
-
-void m68000_base_device_ops::m68k_op_trapf_32(m68000_base_device* mc68kcpu)
-{
- if(CPU_TYPE_IS_EC020_PLUS((mc68kcpu)->cpu_type))
- {
- REG_PC(mc68kcpu) += 4;
- return;
- }
- m68ki_exception_illegal(mc68kcpu);
-}
-
-
-void m68000_base_device_ops::m68k_op_traphi(m68000_base_device* mc68kcpu)
-{
- if(CPU_TYPE_IS_EC020_PLUS((mc68kcpu)->cpu_type))
- {
- if(COND_HI(mc68kcpu))
- m68ki_exception_trap((mc68kcpu), EXCEPTION_TRAPV); /* HJB 990403 */
- return;
- }
- m68ki_exception_illegal(mc68kcpu);
-}
-
-
-void m68000_base_device_ops::m68k_op_trapls(m68000_base_device* mc68kcpu)
-{
- if(CPU_TYPE_IS_EC020_PLUS((mc68kcpu)->cpu_type))
- {
- if(COND_LS(mc68kcpu))
- m68ki_exception_trap((mc68kcpu), EXCEPTION_TRAPV); /* HJB 990403 */
- return;
- }
- m68ki_exception_illegal(mc68kcpu);
-}
-
-
-void m68000_base_device_ops::m68k_op_trapcc(m68000_base_device* mc68kcpu)
-{
- if(CPU_TYPE_IS_EC020_PLUS((mc68kcpu)->cpu_type))
- {
- if(COND_CC(mc68kcpu))
- m68ki_exception_trap((mc68kcpu), EXCEPTION_TRAPV); /* HJB 990403 */
- return;
- }
- m68ki_exception_illegal(mc68kcpu);
-}
-
-
-void m68000_base_device_ops::m68k_op_trapcs(m68000_base_device* mc68kcpu)
-{
- if(CPU_TYPE_IS_EC020_PLUS((mc68kcpu)->cpu_type))
- {
- if(COND_CS(mc68kcpu))
- m68ki_exception_trap((mc68kcpu), EXCEPTION_TRAPV); /* HJB 990403 */
- return;
- }
- m68ki_exception_illegal(mc68kcpu);
-}
-
-
-void m68000_base_device_ops::m68k_op_trapne(m68000_base_device* mc68kcpu)
-{
- if(CPU_TYPE_IS_EC020_PLUS((mc68kcpu)->cpu_type))
- {
- if(COND_NE(mc68kcpu))
- m68ki_exception_trap((mc68kcpu), EXCEPTION_TRAPV); /* HJB 990403 */
- return;
- }
- m68ki_exception_illegal(mc68kcpu);
-}
-
-
-void m68000_base_device_ops::m68k_op_trapeq(m68000_base_device* mc68kcpu)
-{
- if(CPU_TYPE_IS_EC020_PLUS((mc68kcpu)->cpu_type))
- {
- if(COND_EQ(mc68kcpu))
- m68ki_exception_trap((mc68kcpu), EXCEPTION_TRAPV); /* HJB 990403 */
- return;
- }
- m68ki_exception_illegal(mc68kcpu);
-}
-
-
-void m68000_base_device_ops::m68k_op_trapvc(m68000_base_device* mc68kcpu)
-{
- if(CPU_TYPE_IS_EC020_PLUS((mc68kcpu)->cpu_type))
- {
- if(COND_VC(mc68kcpu))
- m68ki_exception_trap((mc68kcpu), EXCEPTION_TRAPV); /* HJB 990403 */
- return;
- }
- m68ki_exception_illegal(mc68kcpu);
-}
-
-
-void m68000_base_device_ops::m68k_op_trapvs(m68000_base_device* mc68kcpu)
-{
- if(CPU_TYPE_IS_EC020_PLUS((mc68kcpu)->cpu_type))
- {
- if(COND_VS(mc68kcpu))
- m68ki_exception_trap((mc68kcpu), EXCEPTION_TRAPV); /* HJB 990403 */
- return;
- }
- m68ki_exception_illegal(mc68kcpu);
-}
-
-
-void m68000_base_device_ops::m68k_op_trappl(m68000_base_device* mc68kcpu)
-{
- if(CPU_TYPE_IS_EC020_PLUS((mc68kcpu)->cpu_type))
- {
- if(COND_PL(mc68kcpu))
- m68ki_exception_trap((mc68kcpu), EXCEPTION_TRAPV); /* HJB 990403 */
- return;
- }
- m68ki_exception_illegal(mc68kcpu);
-}
-
-
-void m68000_base_device_ops::m68k_op_trapmi(m68000_base_device* mc68kcpu)
-{
- if(CPU_TYPE_IS_EC020_PLUS((mc68kcpu)->cpu_type))
- {
- if(COND_MI(mc68kcpu))
- m68ki_exception_trap((mc68kcpu), EXCEPTION_TRAPV); /* HJB 990403 */
- return;
- }
- m68ki_exception_illegal(mc68kcpu);
-}
-
-
-void m68000_base_device_ops::m68k_op_trapge(m68000_base_device* mc68kcpu)
-{
- if(CPU_TYPE_IS_EC020_PLUS((mc68kcpu)->cpu_type))
- {
- if(COND_GE(mc68kcpu))
- m68ki_exception_trap((mc68kcpu), EXCEPTION_TRAPV); /* HJB 990403 */
- return;
- }
- m68ki_exception_illegal(mc68kcpu);
-}
-
-
-void m68000_base_device_ops::m68k_op_traplt(m68000_base_device* mc68kcpu)
-{
- if(CPU_TYPE_IS_EC020_PLUS((mc68kcpu)->cpu_type))
- {
- if(COND_LT(mc68kcpu))
- m68ki_exception_trap((mc68kcpu), EXCEPTION_TRAPV); /* HJB 990403 */
- return;
- }
- m68ki_exception_illegal(mc68kcpu);
-}
-
-
-void m68000_base_device_ops::m68k_op_trapgt(m68000_base_device* mc68kcpu)
-{
- if(CPU_TYPE_IS_EC020_PLUS((mc68kcpu)->cpu_type))
- {
- if(COND_GT(mc68kcpu))
- m68ki_exception_trap((mc68kcpu), EXCEPTION_TRAPV); /* HJB 990403 */
- return;
- }
- m68ki_exception_illegal(mc68kcpu);
-}
-
-
-void m68000_base_device_ops::m68k_op_traple(m68000_base_device* mc68kcpu)
-{
- if(CPU_TYPE_IS_EC020_PLUS((mc68kcpu)->cpu_type))
- {
- if(COND_LE(mc68kcpu))
- m68ki_exception_trap((mc68kcpu), EXCEPTION_TRAPV); /* HJB 990403 */
- return;
- }
- m68ki_exception_illegal(mc68kcpu);
-}
-
-
-void m68000_base_device_ops::m68k_op_traphi_16(m68000_base_device* mc68kcpu)
-{
- if(CPU_TYPE_IS_EC020_PLUS((mc68kcpu)->cpu_type))
- {
- if(COND_HI(mc68kcpu))
- {
- m68ki_exception_trap((mc68kcpu), EXCEPTION_TRAPV); /* HJB 990403 */
- return;
- }
- REG_PC(mc68kcpu) += 2;
- return;
- }
- m68ki_exception_illegal(mc68kcpu);
-}
-
-
-void m68000_base_device_ops::m68k_op_trapls_16(m68000_base_device* mc68kcpu)
-{
- if(CPU_TYPE_IS_EC020_PLUS((mc68kcpu)->cpu_type))
- {
- if(COND_LS(mc68kcpu))
- {
- m68ki_exception_trap((mc68kcpu), EXCEPTION_TRAPV); /* HJB 990403 */
- return;
- }
- REG_PC(mc68kcpu) += 2;
- return;
- }
- m68ki_exception_illegal(mc68kcpu);
-}
-
-
-void m68000_base_device_ops::m68k_op_trapcc_16(m68000_base_device* mc68kcpu)
-{
- if(CPU_TYPE_IS_EC020_PLUS((mc68kcpu)->cpu_type))
- {
- if(COND_CC(mc68kcpu))
- {
- m68ki_exception_trap((mc68kcpu), EXCEPTION_TRAPV); /* HJB 990403 */
- return;
- }
- REG_PC(mc68kcpu) += 2;
- return;
- }
- m68ki_exception_illegal(mc68kcpu);
-}
-
-
-void m68000_base_device_ops::m68k_op_trapcs_16(m68000_base_device* mc68kcpu)
-{
- if(CPU_TYPE_IS_EC020_PLUS((mc68kcpu)->cpu_type))
- {
- if(COND_CS(mc68kcpu))
- {
- m68ki_exception_trap((mc68kcpu), EXCEPTION_TRAPV); /* HJB 990403 */
- return;
- }
- REG_PC(mc68kcpu) += 2;
- return;
- }
- m68ki_exception_illegal(mc68kcpu);
-}
-
-
-void m68000_base_device_ops::m68k_op_trapne_16(m68000_base_device* mc68kcpu)
-{
- if(CPU_TYPE_IS_EC020_PLUS((mc68kcpu)->cpu_type))
- {
- if(COND_NE(mc68kcpu))
- {
- m68ki_exception_trap((mc68kcpu), EXCEPTION_TRAPV); /* HJB 990403 */
- return;
- }
- REG_PC(mc68kcpu) += 2;
- return;
- }
- m68ki_exception_illegal(mc68kcpu);
-}
-
-
-void m68000_base_device_ops::m68k_op_trapeq_16(m68000_base_device* mc68kcpu)
-{
- if(CPU_TYPE_IS_EC020_PLUS((mc68kcpu)->cpu_type))
- {
- if(COND_EQ(mc68kcpu))
- {
- m68ki_exception_trap((mc68kcpu), EXCEPTION_TRAPV); /* HJB 990403 */
- return;
- }
- REG_PC(mc68kcpu) += 2;
- return;
- }
- m68ki_exception_illegal(mc68kcpu);
-}
-
-
-void m68000_base_device_ops::m68k_op_trapvc_16(m68000_base_device* mc68kcpu)
-{
- if(CPU_TYPE_IS_EC020_PLUS((mc68kcpu)->cpu_type))
- {
- if(COND_VC(mc68kcpu))
- {
- m68ki_exception_trap((mc68kcpu), EXCEPTION_TRAPV); /* HJB 990403 */
- return;
- }
- REG_PC(mc68kcpu) += 2;
- return;
- }
- m68ki_exception_illegal(mc68kcpu);
-}
-
-
-void m68000_base_device_ops::m68k_op_trapvs_16(m68000_base_device* mc68kcpu)
-{
- if(CPU_TYPE_IS_EC020_PLUS((mc68kcpu)->cpu_type))
- {
- if(COND_VS(mc68kcpu))
- {
- m68ki_exception_trap((mc68kcpu), EXCEPTION_TRAPV); /* HJB 990403 */
- return;
- }
- REG_PC(mc68kcpu) += 2;
- return;
- }
- m68ki_exception_illegal(mc68kcpu);
-}
-
-
-void m68000_base_device_ops::m68k_op_trappl_16(m68000_base_device* mc68kcpu)
-{
- if(CPU_TYPE_IS_EC020_PLUS((mc68kcpu)->cpu_type))
- {
- if(COND_PL(mc68kcpu))
- {
- m68ki_exception_trap((mc68kcpu), EXCEPTION_TRAPV); /* HJB 990403 */
- return;
- }
- REG_PC(mc68kcpu) += 2;
- return;
- }
- m68ki_exception_illegal(mc68kcpu);
-}
-
-
-void m68000_base_device_ops::m68k_op_trapmi_16(m68000_base_device* mc68kcpu)
-{
- if(CPU_TYPE_IS_EC020_PLUS((mc68kcpu)->cpu_type))
- {
- if(COND_MI(mc68kcpu))
- {
- m68ki_exception_trap((mc68kcpu), EXCEPTION_TRAPV); /* HJB 990403 */
- return;
- }
- REG_PC(mc68kcpu) += 2;
- return;
- }
- m68ki_exception_illegal(mc68kcpu);
-}
-
-
-void m68000_base_device_ops::m68k_op_trapge_16(m68000_base_device* mc68kcpu)
-{
- if(CPU_TYPE_IS_EC020_PLUS((mc68kcpu)->cpu_type))
- {
- if(COND_GE(mc68kcpu))
- {
- m68ki_exception_trap((mc68kcpu), EXCEPTION_TRAPV); /* HJB 990403 */
- return;
- }
- REG_PC(mc68kcpu) += 2;
- return;
- }
- m68ki_exception_illegal(mc68kcpu);
-}
-
-
-void m68000_base_device_ops::m68k_op_traplt_16(m68000_base_device* mc68kcpu)
-{
- if(CPU_TYPE_IS_EC020_PLUS((mc68kcpu)->cpu_type))
- {
- if(COND_LT(mc68kcpu))
- {
- m68ki_exception_trap((mc68kcpu), EXCEPTION_TRAPV); /* HJB 990403 */
- return;
- }
- REG_PC(mc68kcpu) += 2;
- return;
- }
- m68ki_exception_illegal(mc68kcpu);
-}
-
-
-void m68000_base_device_ops::m68k_op_trapgt_16(m68000_base_device* mc68kcpu)
-{
- if(CPU_TYPE_IS_EC020_PLUS((mc68kcpu)->cpu_type))
- {
- if(COND_GT(mc68kcpu))
- {
- m68ki_exception_trap((mc68kcpu), EXCEPTION_TRAPV); /* HJB 990403 */
- return;
- }
- REG_PC(mc68kcpu) += 2;
- return;
- }
- m68ki_exception_illegal(mc68kcpu);
-}
-
-
-void m68000_base_device_ops::m68k_op_traple_16(m68000_base_device* mc68kcpu)
-{
- if(CPU_TYPE_IS_EC020_PLUS((mc68kcpu)->cpu_type))
- {
- if(COND_LE(mc68kcpu))
- {
- m68ki_exception_trap((mc68kcpu), EXCEPTION_TRAPV); /* HJB 990403 */
- return;
- }
- REG_PC(mc68kcpu) += 2;
- return;
- }
- m68ki_exception_illegal(mc68kcpu);
-}
-
-
-void m68000_base_device_ops::m68k_op_traphi_32(m68000_base_device* mc68kcpu)
-{
- if(CPU_TYPE_IS_EC020_PLUS((mc68kcpu)->cpu_type))
- {
- if(COND_HI(mc68kcpu))
- {
- m68ki_exception_trap((mc68kcpu), EXCEPTION_TRAPV); /* HJB 990403 */
- return;
- }
- REG_PC(mc68kcpu) += 4;
- return;
- }
- m68ki_exception_illegal(mc68kcpu);
-}
-
-
-void m68000_base_device_ops::m68k_op_trapls_32(m68000_base_device* mc68kcpu)
-{
- if(CPU_TYPE_IS_EC020_PLUS((mc68kcpu)->cpu_type))
- {
- if(COND_LS(mc68kcpu))
- {
- m68ki_exception_trap((mc68kcpu), EXCEPTION_TRAPV); /* HJB 990403 */
- return;
- }
- REG_PC(mc68kcpu) += 4;
- return;
- }
- m68ki_exception_illegal(mc68kcpu);
-}
-
-
-void m68000_base_device_ops::m68k_op_trapcc_32(m68000_base_device* mc68kcpu)
-{
- if(CPU_TYPE_IS_EC020_PLUS((mc68kcpu)->cpu_type))
- {
- if(COND_CC(mc68kcpu))
- {
- m68ki_exception_trap((mc68kcpu), EXCEPTION_TRAPV); /* HJB 990403 */
- return;
- }
- REG_PC(mc68kcpu) += 4;
- return;
- }
- m68ki_exception_illegal(mc68kcpu);
-}
-
-
-void m68000_base_device_ops::m68k_op_trapcs_32(m68000_base_device* mc68kcpu)
-{
- if(CPU_TYPE_IS_EC020_PLUS((mc68kcpu)->cpu_type))
- {
- if(COND_CS(mc68kcpu))
- {
- m68ki_exception_trap((mc68kcpu), EXCEPTION_TRAPV); /* HJB 990403 */
- return;
- }
- REG_PC(mc68kcpu) += 4;
- return;
- }
- m68ki_exception_illegal(mc68kcpu);
-}
-
-
-void m68000_base_device_ops::m68k_op_trapne_32(m68000_base_device* mc68kcpu)
-{
- if(CPU_TYPE_IS_EC020_PLUS((mc68kcpu)->cpu_type))
- {
- if(COND_NE(mc68kcpu))
- {
- m68ki_exception_trap((mc68kcpu), EXCEPTION_TRAPV); /* HJB 990403 */
- return;
- }
- REG_PC(mc68kcpu) += 4;
- return;
- }
- m68ki_exception_illegal(mc68kcpu);
-}
-
-
-void m68000_base_device_ops::m68k_op_trapeq_32(m68000_base_device* mc68kcpu)
-{
- if(CPU_TYPE_IS_EC020_PLUS((mc68kcpu)->cpu_type))
- {
- if(COND_EQ(mc68kcpu))
- {
- m68ki_exception_trap((mc68kcpu), EXCEPTION_TRAPV); /* HJB 990403 */
- return;
- }
- REG_PC(mc68kcpu) += 4;
- return;
- }
- m68ki_exception_illegal(mc68kcpu);
-}
-
-
-void m68000_base_device_ops::m68k_op_trapvc_32(m68000_base_device* mc68kcpu)
-{
- if(CPU_TYPE_IS_EC020_PLUS((mc68kcpu)->cpu_type))
- {
- if(COND_VC(mc68kcpu))
- {
- m68ki_exception_trap((mc68kcpu), EXCEPTION_TRAPV); /* HJB 990403 */
- return;
- }
- REG_PC(mc68kcpu) += 4;
- return;
- }
- m68ki_exception_illegal(mc68kcpu);
-}
-
-
-void m68000_base_device_ops::m68k_op_trapvs_32(m68000_base_device* mc68kcpu)
-{
- if(CPU_TYPE_IS_EC020_PLUS((mc68kcpu)->cpu_type))
- {
- if(COND_VS(mc68kcpu))
- {
- m68ki_exception_trap((mc68kcpu), EXCEPTION_TRAPV); /* HJB 990403 */
- return;
- }
- REG_PC(mc68kcpu) += 4;
- return;
- }
- m68ki_exception_illegal(mc68kcpu);
-}
-
-
-void m68000_base_device_ops::m68k_op_trappl_32(m68000_base_device* mc68kcpu)
-{
- if(CPU_TYPE_IS_EC020_PLUS((mc68kcpu)->cpu_type))
- {
- if(COND_PL(mc68kcpu))
- {
- m68ki_exception_trap((mc68kcpu), EXCEPTION_TRAPV); /* HJB 990403 */
- return;
- }
- REG_PC(mc68kcpu) += 4;
- return;
- }
- m68ki_exception_illegal(mc68kcpu);
-}
-
-
-void m68000_base_device_ops::m68k_op_trapmi_32(m68000_base_device* mc68kcpu)
-{
- if(CPU_TYPE_IS_EC020_PLUS((mc68kcpu)->cpu_type))
- {
- if(COND_MI(mc68kcpu))
- {
- m68ki_exception_trap((mc68kcpu), EXCEPTION_TRAPV); /* HJB 990403 */
- return;
- }
- REG_PC(mc68kcpu) += 4;
- return;
- }
- m68ki_exception_illegal(mc68kcpu);
-}
-
-
-void m68000_base_device_ops::m68k_op_trapge_32(m68000_base_device* mc68kcpu)
-{
- if(CPU_TYPE_IS_EC020_PLUS((mc68kcpu)->cpu_type))
- {
- if(COND_GE(mc68kcpu))
- {
- m68ki_exception_trap((mc68kcpu), EXCEPTION_TRAPV); /* HJB 990403 */
- return;
- }
- REG_PC(mc68kcpu) += 4;
- return;
- }
- m68ki_exception_illegal(mc68kcpu);
-}
-
-
-void m68000_base_device_ops::m68k_op_traplt_32(m68000_base_device* mc68kcpu)
-{
- if(CPU_TYPE_IS_EC020_PLUS((mc68kcpu)->cpu_type))
- {
- if(COND_LT(mc68kcpu))
- {
- m68ki_exception_trap((mc68kcpu), EXCEPTION_TRAPV); /* HJB 990403 */
- return;
- }
- REG_PC(mc68kcpu) += 4;
- return;
- }
- m68ki_exception_illegal(mc68kcpu);
-}
-
-
-void m68000_base_device_ops::m68k_op_trapgt_32(m68000_base_device* mc68kcpu)
-{
- if(CPU_TYPE_IS_EC020_PLUS((mc68kcpu)->cpu_type))
- {
- if(COND_GT(mc68kcpu))
- {
- m68ki_exception_trap((mc68kcpu), EXCEPTION_TRAPV); /* HJB 990403 */
- return;
- }
- REG_PC(mc68kcpu) += 4;
- return;
- }
- m68ki_exception_illegal(mc68kcpu);
-}
-
-
-void m68000_base_device_ops::m68k_op_traple_32(m68000_base_device* mc68kcpu)
-{
- if(CPU_TYPE_IS_EC020_PLUS((mc68kcpu)->cpu_type))
- {
- if(COND_LE(mc68kcpu))
- {
- m68ki_exception_trap((mc68kcpu), EXCEPTION_TRAPV); /* HJB 990403 */
- return;
- }
- REG_PC(mc68kcpu) += 4;
- return;
- }
- m68ki_exception_illegal(mc68kcpu);
-}
-
-
-void m68000_base_device_ops::m68k_op_trapv(m68000_base_device* mc68kcpu)
-{
- if(COND_VC(mc68kcpu))
- {
- return;
- }
- m68ki_exception_trap((mc68kcpu), EXCEPTION_TRAPV); /* HJB 990403 */
-}
-
-
-void m68000_base_device_ops::m68k_op_tst_8_d(m68000_base_device* mc68kcpu)
-{
- UINT32 res = MASK_OUT_ABOVE_8(DY(mc68kcpu));
-
- (mc68kcpu)->n_flag = NFLAG_8(res);
- (mc68kcpu)->not_z_flag = res;
- (mc68kcpu)->v_flag = VFLAG_CLEAR;
- (mc68kcpu)->c_flag = CFLAG_CLEAR;
-}
-
-
-void m68000_base_device_ops::m68k_op_tst_8_ai(m68000_base_device* mc68kcpu)
-{
- UINT32 res = OPER_AY_AI_8(mc68kcpu);
-
- (mc68kcpu)->n_flag = NFLAG_8(res);
- (mc68kcpu)->not_z_flag = res;
- (mc68kcpu)->v_flag = VFLAG_CLEAR;
- (mc68kcpu)->c_flag = CFLAG_CLEAR;
-}
-
-
-void m68000_base_device_ops::m68k_op_tst_8_pi(m68000_base_device* mc68kcpu)
-{
- UINT32 res = OPER_AY_PI_8(mc68kcpu);
-
- (mc68kcpu)->n_flag = NFLAG_8(res);
- (mc68kcpu)->not_z_flag = res;
- (mc68kcpu)->v_flag = VFLAG_CLEAR;
- (mc68kcpu)->c_flag = CFLAG_CLEAR;
-}
-
-
-void m68000_base_device_ops::m68k_op_tst_8_pi7(m68000_base_device* mc68kcpu)
-{
- UINT32 res = OPER_A7_PI_8(mc68kcpu);
-
- (mc68kcpu)->n_flag = NFLAG_8(res);
- (mc68kcpu)->not_z_flag = res;
- (mc68kcpu)->v_flag = VFLAG_CLEAR;
- (mc68kcpu)->c_flag = CFLAG_CLEAR;
-}
-
-
-void m68000_base_device_ops::m68k_op_tst_8_pd(m68000_base_device* mc68kcpu)
-{
- UINT32 res = OPER_AY_PD_8(mc68kcpu);
-
- (mc68kcpu)->n_flag = NFLAG_8(res);
- (mc68kcpu)->not_z_flag = res;
- (mc68kcpu)->v_flag = VFLAG_CLEAR;
- (mc68kcpu)->c_flag = CFLAG_CLEAR;
-}
-
-
-void m68000_base_device_ops::m68k_op_tst_8_pd7(m68000_base_device* mc68kcpu)
-{
- UINT32 res = OPER_A7_PD_8(mc68kcpu);
-
- (mc68kcpu)->n_flag = NFLAG_8(res);
- (mc68kcpu)->not_z_flag = res;
- (mc68kcpu)->v_flag = VFLAG_CLEAR;
- (mc68kcpu)->c_flag = CFLAG_CLEAR;
-}
-
-
-void m68000_base_device_ops::m68k_op_tst_8_di(m68000_base_device* mc68kcpu)
-{
- UINT32 res = OPER_AY_DI_8(mc68kcpu);
-
- (mc68kcpu)->n_flag = NFLAG_8(res);
- (mc68kcpu)->not_z_flag = res;
- (mc68kcpu)->v_flag = VFLAG_CLEAR;
- (mc68kcpu)->c_flag = CFLAG_CLEAR;
-}
-
-
-void m68000_base_device_ops::m68k_op_tst_8_ix(m68000_base_device* mc68kcpu)
-{
- UINT32 res = OPER_AY_IX_8(mc68kcpu);
-
- (mc68kcpu)->n_flag = NFLAG_8(res);
- (mc68kcpu)->not_z_flag = res;
- (mc68kcpu)->v_flag = VFLAG_CLEAR;
- (mc68kcpu)->c_flag = CFLAG_CLEAR;
-}
-
-
-void m68000_base_device_ops::m68k_op_tst_8_aw(m68000_base_device* mc68kcpu)
-{
- UINT32 res = OPER_AW_8(mc68kcpu);
-
- (mc68kcpu)->n_flag = NFLAG_8(res);
- (mc68kcpu)->not_z_flag = res;
- (mc68kcpu)->v_flag = VFLAG_CLEAR;
- (mc68kcpu)->c_flag = CFLAG_CLEAR;
-}
-
-
-void m68000_base_device_ops::m68k_op_tst_8_al(m68000_base_device* mc68kcpu)
-{
- UINT32 res = OPER_AL_8(mc68kcpu);
-
- (mc68kcpu)->n_flag = NFLAG_8(res);
- (mc68kcpu)->not_z_flag = res;
- (mc68kcpu)->v_flag = VFLAG_CLEAR;
- (mc68kcpu)->c_flag = CFLAG_CLEAR;
-}
-
-
-void m68000_base_device_ops::m68k_op_tst_8_pcdi(m68000_base_device* mc68kcpu)
-{
- if(CPU_TYPE_IS_EC020_PLUS((mc68kcpu)->cpu_type))
- {
- UINT32 res = OPER_PCDI_8(mc68kcpu);
-
- (mc68kcpu)->n_flag = NFLAG_8(res);
- (mc68kcpu)->not_z_flag = res;
- (mc68kcpu)->v_flag = VFLAG_CLEAR;
- (mc68kcpu)->c_flag = CFLAG_CLEAR;
- return;
- }
- m68ki_exception_illegal(mc68kcpu);
-}
-
-
-void m68000_base_device_ops::m68k_op_tst_8_pcix(m68000_base_device* mc68kcpu)
-{
- if(CPU_TYPE_IS_EC020_PLUS((mc68kcpu)->cpu_type))
- {
- UINT32 res = OPER_PCIX_8(mc68kcpu);
-
- (mc68kcpu)->n_flag = NFLAG_8(res);
- (mc68kcpu)->not_z_flag = res;
- (mc68kcpu)->v_flag = VFLAG_CLEAR;
- (mc68kcpu)->c_flag = CFLAG_CLEAR;
- return;
- }
- m68ki_exception_illegal(mc68kcpu);
-}
-
-
-void m68000_base_device_ops::m68k_op_tst_8_i(m68000_base_device* mc68kcpu)
-{
- if(CPU_TYPE_IS_EC020_PLUS((mc68kcpu)->cpu_type))
- {
- UINT32 res = OPER_I_8(mc68kcpu);
-
- (mc68kcpu)->n_flag = NFLAG_8(res);
- (mc68kcpu)->not_z_flag = res;
- (mc68kcpu)->v_flag = VFLAG_CLEAR;
- (mc68kcpu)->c_flag = CFLAG_CLEAR;
- return;
- }
- m68ki_exception_illegal(mc68kcpu);
-}
-
-
-void m68000_base_device_ops::m68k_op_tst_16_d(m68000_base_device* mc68kcpu)
-{
- UINT32 res = MASK_OUT_ABOVE_16(DY(mc68kcpu));
-
- (mc68kcpu)->n_flag = NFLAG_16(res);
- (mc68kcpu)->not_z_flag = res;
- (mc68kcpu)->v_flag = VFLAG_CLEAR;
- (mc68kcpu)->c_flag = CFLAG_CLEAR;
-}
-
-
-void m68000_base_device_ops::m68k_op_tst_16_a(m68000_base_device* mc68kcpu)
-{
- if(CPU_TYPE_IS_EC020_PLUS((mc68kcpu)->cpu_type))
- {
- UINT32 res = MAKE_INT_16(AY(mc68kcpu));
-
- (mc68kcpu)->n_flag = NFLAG_16(res);
- (mc68kcpu)->not_z_flag = res;
- (mc68kcpu)->v_flag = VFLAG_CLEAR;
- (mc68kcpu)->c_flag = CFLAG_CLEAR;
- return;
- }
- m68ki_exception_illegal(mc68kcpu);
-}
-
-
-void m68000_base_device_ops::m68k_op_tst_16_ai(m68000_base_device* mc68kcpu)
-{
- UINT32 res = OPER_AY_AI_16(mc68kcpu);
-
- (mc68kcpu)->n_flag = NFLAG_16(res);
- (mc68kcpu)->not_z_flag = res;
- (mc68kcpu)->v_flag = VFLAG_CLEAR;
- (mc68kcpu)->c_flag = CFLAG_CLEAR;
-}
-
-
-void m68000_base_device_ops::m68k_op_tst_16_pi(m68000_base_device* mc68kcpu)
-{
- UINT32 res = OPER_AY_PI_16(mc68kcpu);
-
- (mc68kcpu)->n_flag = NFLAG_16(res);
- (mc68kcpu)->not_z_flag = res;
- (mc68kcpu)->v_flag = VFLAG_CLEAR;
- (mc68kcpu)->c_flag = CFLAG_CLEAR;
-}
-
-
-void m68000_base_device_ops::m68k_op_tst_16_pd(m68000_base_device* mc68kcpu)
-{
- UINT32 res = OPER_AY_PD_16(mc68kcpu);
-
- (mc68kcpu)->n_flag = NFLAG_16(res);
- (mc68kcpu)->not_z_flag = res;
- (mc68kcpu)->v_flag = VFLAG_CLEAR;
- (mc68kcpu)->c_flag = CFLAG_CLEAR;
-}
-
-
-void m68000_base_device_ops::m68k_op_tst_16_di(m68000_base_device* mc68kcpu)
-{
- UINT32 res = OPER_AY_DI_16(mc68kcpu);
-
- (mc68kcpu)->n_flag = NFLAG_16(res);
- (mc68kcpu)->not_z_flag = res;
- (mc68kcpu)->v_flag = VFLAG_CLEAR;
- (mc68kcpu)->c_flag = CFLAG_CLEAR;
-}
-
-
-void m68000_base_device_ops::m68k_op_tst_16_ix(m68000_base_device* mc68kcpu)
-{
- UINT32 res = OPER_AY_IX_16(mc68kcpu);
-
- (mc68kcpu)->n_flag = NFLAG_16(res);
- (mc68kcpu)->not_z_flag = res;
- (mc68kcpu)->v_flag = VFLAG_CLEAR;
- (mc68kcpu)->c_flag = CFLAG_CLEAR;
-}
-
-
-void m68000_base_device_ops::m68k_op_tst_16_aw(m68000_base_device* mc68kcpu)
-{
- UINT32 res = OPER_AW_16(mc68kcpu);
-
- (mc68kcpu)->n_flag = NFLAG_16(res);
- (mc68kcpu)->not_z_flag = res;
- (mc68kcpu)->v_flag = VFLAG_CLEAR;
- (mc68kcpu)->c_flag = CFLAG_CLEAR;
-}
-
-
-void m68000_base_device_ops::m68k_op_tst_16_al(m68000_base_device* mc68kcpu)
-{
- UINT32 res = OPER_AL_16(mc68kcpu);
-
- (mc68kcpu)->n_flag = NFLAG_16(res);
- (mc68kcpu)->not_z_flag = res;
- (mc68kcpu)->v_flag = VFLAG_CLEAR;
- (mc68kcpu)->c_flag = CFLAG_CLEAR;
-}
-
-
-void m68000_base_device_ops::m68k_op_tst_16_pcdi(m68000_base_device* mc68kcpu)
-{
- if(CPU_TYPE_IS_EC020_PLUS((mc68kcpu)->cpu_type))
- {
- UINT32 res = OPER_PCDI_16(mc68kcpu);
-
- (mc68kcpu)->n_flag = NFLAG_16(res);
- (mc68kcpu)->not_z_flag = res;
- (mc68kcpu)->v_flag = VFLAG_CLEAR;
- (mc68kcpu)->c_flag = CFLAG_CLEAR;
- return;
- }
- m68ki_exception_illegal(mc68kcpu);
-}
-
-
-void m68000_base_device_ops::m68k_op_tst_16_pcix(m68000_base_device* mc68kcpu)
-{
- if(CPU_TYPE_IS_EC020_PLUS((mc68kcpu)->cpu_type))
- {
- UINT32 res = OPER_PCIX_16(mc68kcpu);
-
- (mc68kcpu)->n_flag = NFLAG_16(res);
- (mc68kcpu)->not_z_flag = res;
- (mc68kcpu)->v_flag = VFLAG_CLEAR;
- (mc68kcpu)->c_flag = CFLAG_CLEAR;
- return;
- }
- m68ki_exception_illegal(mc68kcpu);
-}
-
-
-void m68000_base_device_ops::m68k_op_tst_16_i(m68000_base_device* mc68kcpu)
-{
- if(CPU_TYPE_IS_EC020_PLUS((mc68kcpu)->cpu_type))
- {
- UINT32 res = OPER_I_16(mc68kcpu);
-
- (mc68kcpu)->n_flag = NFLAG_16(res);
- (mc68kcpu)->not_z_flag = res;
- (mc68kcpu)->v_flag = VFLAG_CLEAR;
- (mc68kcpu)->c_flag = CFLAG_CLEAR;
- return;
- }
- m68ki_exception_illegal(mc68kcpu);
-}
-
-
-void m68000_base_device_ops::m68k_op_tst_32_d(m68000_base_device* mc68kcpu)
-{
- UINT32 res = DY(mc68kcpu);
-
- (mc68kcpu)->n_flag = NFLAG_32(res);
- (mc68kcpu)->not_z_flag = res;
- (mc68kcpu)->v_flag = VFLAG_CLEAR;
- (mc68kcpu)->c_flag = CFLAG_CLEAR;
-}
-
-
-void m68000_base_device_ops::m68k_op_tst_32_a(m68000_base_device* mc68kcpu)
-{
- if(CPU_TYPE_IS_EC020_PLUS((mc68kcpu)->cpu_type))
- {
- UINT32 res = AY(mc68kcpu);
-
- (mc68kcpu)->n_flag = NFLAG_32(res);
- (mc68kcpu)->not_z_flag = res;
- (mc68kcpu)->v_flag = VFLAG_CLEAR;
- (mc68kcpu)->c_flag = CFLAG_CLEAR;
- return;
- }
- m68ki_exception_illegal(mc68kcpu);
-}
-
-
-void m68000_base_device_ops::m68k_op_tst_32_ai(m68000_base_device* mc68kcpu)
-{
- UINT32 res = OPER_AY_AI_32(mc68kcpu);
-
- (mc68kcpu)->n_flag = NFLAG_32(res);
- (mc68kcpu)->not_z_flag = res;
- (mc68kcpu)->v_flag = VFLAG_CLEAR;
- (mc68kcpu)->c_flag = CFLAG_CLEAR;
-}
-
-
-void m68000_base_device_ops::m68k_op_tst_32_pi(m68000_base_device* mc68kcpu)
-{
- UINT32 res = OPER_AY_PI_32(mc68kcpu);
-
- (mc68kcpu)->n_flag = NFLAG_32(res);
- (mc68kcpu)->not_z_flag = res;
- (mc68kcpu)->v_flag = VFLAG_CLEAR;
- (mc68kcpu)->c_flag = CFLAG_CLEAR;
-}
-
-
-void m68000_base_device_ops::m68k_op_tst_32_pd(m68000_base_device* mc68kcpu)
-{
- UINT32 res = OPER_AY_PD_32(mc68kcpu);
-
- (mc68kcpu)->n_flag = NFLAG_32(res);
- (mc68kcpu)->not_z_flag = res;
- (mc68kcpu)->v_flag = VFLAG_CLEAR;
- (mc68kcpu)->c_flag = CFLAG_CLEAR;
-}
-
-
-void m68000_base_device_ops::m68k_op_tst_32_di(m68000_base_device* mc68kcpu)
-{
- UINT32 res = OPER_AY_DI_32(mc68kcpu);
-
- (mc68kcpu)->n_flag = NFLAG_32(res);
- (mc68kcpu)->not_z_flag = res;
- (mc68kcpu)->v_flag = VFLAG_CLEAR;
- (mc68kcpu)->c_flag = CFLAG_CLEAR;
-}
-
-
-void m68000_base_device_ops::m68k_op_tst_32_ix(m68000_base_device* mc68kcpu)
-{
- UINT32 res = OPER_AY_IX_32(mc68kcpu);
-
- (mc68kcpu)->n_flag = NFLAG_32(res);
- (mc68kcpu)->not_z_flag = res;
- (mc68kcpu)->v_flag = VFLAG_CLEAR;
- (mc68kcpu)->c_flag = CFLAG_CLEAR;
-}
-
-
-void m68000_base_device_ops::m68k_op_tst_32_aw(m68000_base_device* mc68kcpu)
-{
- UINT32 res = OPER_AW_32(mc68kcpu);
-
- (mc68kcpu)->n_flag = NFLAG_32(res);
- (mc68kcpu)->not_z_flag = res;
- (mc68kcpu)->v_flag = VFLAG_CLEAR;
- (mc68kcpu)->c_flag = CFLAG_CLEAR;
-}
-
-
-void m68000_base_device_ops::m68k_op_tst_32_al(m68000_base_device* mc68kcpu)
-{
- UINT32 res = OPER_AL_32(mc68kcpu);
-
- (mc68kcpu)->n_flag = NFLAG_32(res);
- (mc68kcpu)->not_z_flag = res;
- (mc68kcpu)->v_flag = VFLAG_CLEAR;
- (mc68kcpu)->c_flag = CFLAG_CLEAR;
-}
-
-
-void m68000_base_device_ops::m68k_op_tst_32_pcdi(m68000_base_device* mc68kcpu)
-{
- if(CPU_TYPE_IS_EC020_PLUS((mc68kcpu)->cpu_type))
- {
- UINT32 res = OPER_PCDI_32(mc68kcpu);
-
- (mc68kcpu)->n_flag = NFLAG_32(res);
- (mc68kcpu)->not_z_flag = res;
- (mc68kcpu)->v_flag = VFLAG_CLEAR;
- (mc68kcpu)->c_flag = CFLAG_CLEAR;
- return;
- }
- m68ki_exception_illegal(mc68kcpu);
-}
-
-
-void m68000_base_device_ops::m68k_op_tst_32_pcix(m68000_base_device* mc68kcpu)
-{
- if(CPU_TYPE_IS_EC020_PLUS((mc68kcpu)->cpu_type))
- {
- UINT32 res = OPER_PCIX_32(mc68kcpu);
-
- (mc68kcpu)->n_flag = NFLAG_32(res);
- (mc68kcpu)->not_z_flag = res;
- (mc68kcpu)->v_flag = VFLAG_CLEAR;
- (mc68kcpu)->c_flag = CFLAG_CLEAR;
- return;
- }
- m68ki_exception_illegal(mc68kcpu);
-}
-
-
-void m68000_base_device_ops::m68k_op_tst_32_i(m68000_base_device* mc68kcpu)
-{
- if(CPU_TYPE_IS_EC020_PLUS((mc68kcpu)->cpu_type))
- {
- UINT32 res = OPER_I_32(mc68kcpu);
-
- (mc68kcpu)->n_flag = NFLAG_32(res);
- (mc68kcpu)->not_z_flag = res;
- (mc68kcpu)->v_flag = VFLAG_CLEAR;
- (mc68kcpu)->c_flag = CFLAG_CLEAR;
- return;
- }
- m68ki_exception_illegal(mc68kcpu);
-}
-
-
-void m68000_base_device_ops::m68k_op_unlk_32_a7(m68000_base_device* mc68kcpu)
-{
- REG_A(mc68kcpu)[7] = m68ki_read_32((mc68kcpu), REG_A(mc68kcpu)[7]);
-}
-
-
-void m68000_base_device_ops::m68k_op_unlk_32(m68000_base_device* mc68kcpu)
-{
- UINT32* r_dst = &AY(mc68kcpu);
-
- REG_A(mc68kcpu)[7] = *r_dst;
- *r_dst = m68ki_pull_32(mc68kcpu);
-}
-
-
-void m68000_base_device_ops::m68k_op_unpk_16_rr(m68000_base_device* mc68kcpu)
-{
- if(CPU_TYPE_IS_EC020_PLUS((mc68kcpu)->cpu_type))
- {
- /* Note: DX(mc68kcpu) and DY(mc68kcpu) are reversed in Motorola's docs */
- UINT32 src = DY(mc68kcpu);
- UINT32* r_dst = &DX(mc68kcpu);
-
- *r_dst = MASK_OUT_BELOW_16(*r_dst) | (((((src << 4) & 0x0f00) | (src & 0x000f)) + OPER_I_16(mc68kcpu)) & 0xffff);
- return;
- }
- m68ki_exception_illegal(mc68kcpu);
-}
-
-
-void m68000_base_device_ops::m68k_op_unpk_16_mm_ax7(m68000_base_device* mc68kcpu)
-{
- if(CPU_TYPE_IS_EC020_PLUS((mc68kcpu)->cpu_type))
- {
- /* Note: AX and AY are reversed in Motorola's docs */
- UINT32 src = OPER_AY_PD_8(mc68kcpu);
- UINT32 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);
- return;
- }
- m68ki_exception_illegal(mc68kcpu);
-}
-
-
-void m68000_base_device_ops::m68k_op_unpk_16_mm_ay7(m68000_base_device* mc68kcpu)
-{
- if(CPU_TYPE_IS_EC020_PLUS((mc68kcpu)->cpu_type))
- {
- /* Note: AX and AY are reversed in Motorola's docs */
- UINT32 src = OPER_A7_PD_8(mc68kcpu);
- UINT32 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);
- return;
- }
- m68ki_exception_illegal(mc68kcpu);
-}
-
-
-void m68000_base_device_ops::m68k_op_unpk_16_mm_axy7(m68000_base_device* mc68kcpu)
-{
- if(CPU_TYPE_IS_EC020_PLUS((mc68kcpu)->cpu_type))
- {
- UINT32 src = OPER_A7_PD_8(mc68kcpu);
- UINT32 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);
- return;
- }
- m68ki_exception_illegal(mc68kcpu);
-}
-
-
-void m68000_base_device_ops::m68k_op_unpk_16_mm(m68000_base_device* mc68kcpu)
-{
- if(CPU_TYPE_IS_EC020_PLUS((mc68kcpu)->cpu_type))
- {
- /* Note: AX and AY are reversed in Motorola's docs */
- UINT32 src = OPER_AY_PD_8(mc68kcpu);
- UINT32 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);
- return;
- }
- m68ki_exception_illegal(mc68kcpu);
-}
-
-
-void m68000_base_device_ops::m68k_op_cinv_32(m68000_base_device* mc68kcpu)
-{
- if(CPU_TYPE_IS_040_PLUS((mc68kcpu)->cpu_type))
- {
- UINT16 ir = mc68kcpu->ir;
- UINT8 cache = (ir >> 6) & 3;
-// UINT8 scope = (ir >> 3) & 3;
-// 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);
- switch (cache)
- {
- case 2:
- case 3:
- // we invalidate/push the whole instruction cache
- m68ki_ic_clear(mc68kcpu);
- }
- return;
- }
- m68ki_exception_1111(mc68kcpu);
-}
-
-
-void m68000_base_device_ops::m68k_op_cpush_32(m68000_base_device* mc68kcpu)
-{
- if(CPU_TYPE_IS_040_PLUS((mc68kcpu)->cpu_type))
- {
- mc68kcpu->logerror("%s at %08x: called unimplemented instruction %04x (cpush)\n",
- (mc68kcpu)->tag(), REG_PC(mc68kcpu) - 2, (mc68kcpu)->ir);
- return;
- }
- m68ki_exception_1111(mc68kcpu);
-}
-
-
-/* ======================================================================== */
-/* ============================== END OF FILE ============================= */
-/* ======================================================================== */
-
-
-/* ======================================================================== */
-/* ========================= OPCODE TABLE BUILDER ========================= */
-/* ======================================================================== */
-
-#include "m68kops.h"
-
-#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 */
-
-/* This is used to generate the opcode handler jump table */
-struct opcode_handler_struct
-{
- 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 */
-};
-
-
-/* Opcode handler table */
-static const opcode_handler_struct m68k_opcode_handler_table[] =
-{
-/* function mask match 000 010 020 040 */
-
-
- {m68000_base_device_ops::m68k_op_1010, 0xf000, 0xa000, { 4, 4, 4, 4, 4, 4, 4}},
- {m68000_base_device_ops::m68k_op_1111, 0xf000, 0xf000, { 4, 4, 4, 4, 4, 4, 4}},
- {m68000_base_device_ops::m68k_op_moveq_32, 0xf100, 0x7000, { 4, 4, 2, 2, 2, 2, 2}},
- {m68000_base_device_ops::m68k_op_cpbcc_32, 0xf180, 0xf080, {255, 255, 4, 4, 255, 255, 255}},
- {m68000_base_device_ops::m68k_op_cpgen_32, 0xf1c0, 0xf000, {255, 255, 4, 4, 255, 255, 255}},
- {m68000_base_device_ops::m68k_op_cpscc_32, 0xf1c0, 0xf040, {255, 255, 4, 4, 255, 255, 255}},
- {m68000_base_device_ops::m68k_op_pmmu_32, 0xfe00, 0xf000, {255, 255, 8, 8, 8, 8, 8}},
- {m68000_base_device_ops::m68k_op_bra_8, 0xff00, 0x6000, { 10, 10, 10, 10, 10, 10, 10}},
- {m68000_base_device_ops::m68k_op_bsr_8, 0xff00, 0x6100, { 18, 18, 7, 7, 7, 7, 7}},
- {m68000_base_device_ops::m68k_op_bhi_8, 0xff00, 0x6200, { 10, 10, 6, 6, 6, 6, 6}},
- {m68000_base_device_ops::m68k_op_bls_8, 0xff00, 0x6300, { 10, 10, 6, 6, 6, 6, 6}},
- {m68000_base_device_ops::m68k_op_bcc_8, 0xff00, 0x6400, { 10, 10, 6, 6, 6, 6, 6}},
- {m68000_base_device_ops::m68k_op_bcs_8, 0xff00, 0x6500, { 10, 10, 6, 6, 6, 6, 6}},
- {m68000_base_device_ops::m68k_op_bne_8, 0xff00, 0x6600, { 10, 10, 6, 6, 6, 6, 6}},
- {m68000_base_device_ops::m68k_op_beq_8, 0xff00, 0x6700, { 10, 10, 6, 6, 6, 6, 6}},
- {m68000_base_device_ops::m68k_op_bvc_8, 0xff00, 0x6800, { 10, 10, 6, 6, 6, 6, 6}},
- {m68000_base_device_ops::m68k_op_bvs_8, 0xff00, 0x6900, { 10, 10, 6, 6, 6, 6, 6}},
- {m68000_base_device_ops::m68k_op_bpl_8, 0xff00, 0x6a00, { 10, 10, 6, 6, 6, 6, 6}},
- {m68000_base_device_ops::m68k_op_bmi_8, 0xff00, 0x6b00, { 10, 10, 6, 6, 6, 6, 6}},
- {m68000_base_device_ops::m68k_op_bge_8, 0xff00, 0x6c00, { 10, 10, 6, 6, 6, 6, 6}},
- {m68000_base_device_ops::m68k_op_blt_8, 0xff00, 0x6d00, { 10, 10, 6, 6, 6, 6, 6}},
- {m68000_base_device_ops::m68k_op_bgt_8, 0xff00, 0x6e00, { 10, 10, 6, 6, 6, 6, 6}},
- {m68000_base_device_ops::m68k_op_ble_8, 0xff00, 0x6f00, { 10, 10, 6, 6, 6, 6, 6}},
- {m68000_base_device_ops::m68k_op_040fpu0_32, 0xff00, 0xf200, {255, 255, 0, 0, 0, 0, 255}},
- {m68000_base_device_ops::m68k_op_040fpu1_32, 0xff00, 0xf300, {255, 255, 0, 0, 0, 0, 255}},
- {m68000_base_device_ops::m68k_op_cinv_32, 0xff20, 0xf400, {255, 255, 255, 255, 16, 255, 255}},
- {m68000_base_device_ops::m68k_op_cpush_32, 0xff20, 0xf420, {255, 255, 255, 255, 16, 255, 255}},
- {m68000_base_device_ops::m68k_op_btst_32_r_d, 0xf1f8, 0x0100, { 6, 6, 4, 4, 4, 4, 4}},
- {m68000_base_device_ops::m68k_op_movep_16_er, 0xf1f8, 0x0108, { 16, 16, 12, 12, 12, 12, 12}},
- {m68000_base_device_ops::m68k_op_btst_8_r_ai, 0xf1f8, 0x0110, { 8, 8, 8, 8, 8, 8, 4}},
- {m68000_base_device_ops::m68k_op_btst_8_r_pi, 0xf1f8, 0x0118, { 8, 8, 8, 8, 8, 8, 4}},
- {m68000_base_device_ops::m68k_op_btst_8_r_pd, 0xf1f8, 0x0120, { 10, 10, 9, 9, 9, 9, 4}},
- {m68000_base_device_ops::m68k_op_btst_8_r_di, 0xf1f8, 0x0128, { 12, 12, 9, 9, 9, 9, 4}},
- {m68000_base_device_ops::m68k_op_btst_8_r_ix, 0xf1f8, 0x0130, { 14, 14, 11, 11, 11, 11, 4}},
- {m68000_base_device_ops::m68k_op_bchg_32_r_d, 0xf1f8, 0x0140, { 8, 8, 4, 4, 4, 4, 4}},
- {m68000_base_device_ops::m68k_op_movep_32_er, 0xf1f8, 0x0148, { 24, 24, 18, 18, 18, 18, 18}},
- {m68000_base_device_ops::m68k_op_bchg_8_r_ai, 0xf1f8, 0x0150, { 12, 12, 8, 8, 8, 8, 4}},
- {m68000_base_device_ops::m68k_op_bchg_8_r_pi, 0xf1f8, 0x0158, { 12, 12, 8, 8, 8, 8, 4}},
- {m68000_base_device_ops::m68k_op_bchg_8_r_pd, 0xf1f8, 0x0160, { 14, 14, 9, 9, 9, 9, 4}},
- {m68000_base_device_ops::m68k_op_bchg_8_r_di, 0xf1f8, 0x0168, { 16, 16, 9, 9, 9, 9, 4}},
- {m68000_base_device_ops::m68k_op_bchg_8_r_ix, 0xf1f8, 0x0170, { 18, 18, 11, 11, 11, 11, 4}},
- {m68000_base_device_ops::m68k_op_bclr_32_r_d, 0xf1f8, 0x0180, { 10, 10, 4, 4, 4, 4, 4}},
- {m68000_base_device_ops::m68k_op_movep_16_re, 0xf1f8, 0x0188, { 16, 16, 11, 11, 11, 11, 11}},
- {m68000_base_device_ops::m68k_op_bclr_8_r_ai, 0xf1f8, 0x0190, { 12, 14, 8, 8, 8, 8, 4}},
- {m68000_base_device_ops::m68k_op_bclr_8_r_pi, 0xf1f8, 0x0198, { 12, 14, 8, 8, 8, 8, 4}},
- {m68000_base_device_ops::m68k_op_bclr_8_r_pd, 0xf1f8, 0x01a0, { 14, 16, 9, 9, 9, 9, 4}},
- {m68000_base_device_ops::m68k_op_bclr_8_r_di, 0xf1f8, 0x01a8, { 16, 18, 9, 9, 9, 9, 4}},
- {m68000_base_device_ops::m68k_op_bclr_8_r_ix, 0xf1f8, 0x01b0, { 18, 20, 11, 11, 11, 11, 4}},
- {m68000_base_device_ops::m68k_op_bset_32_r_d, 0xf1f8, 0x01c0, { 8, 8, 4, 4, 4, 4, 4}},
- {m68000_base_device_ops::m68k_op_movep_32_re, 0xf1f8, 0x01c8, { 24, 24, 17, 17, 17, 17, 17}},
- {m68000_base_device_ops::m68k_op_bset_8_r_ai, 0xf1f8, 0x01d0, { 12, 12, 8, 8, 8, 8, 4}},
- {m68000_base_device_ops::m68k_op_bset_8_r_pi, 0xf1f8, 0x01d8, { 12, 12, 8, 8, 8, 8, 4}},
- {m68000_base_device_ops::m68k_op_bset_8_r_pd, 0xf1f8, 0x01e0, { 14, 14, 9, 9, 9, 9, 4}},
- {m68000_base_device_ops::m68k_op_bset_8_r_di, 0xf1f8, 0x01e8, { 16, 16, 9, 9, 9, 9, 4}},
- {m68000_base_device_ops::m68k_op_bset_8_r_ix, 0xf1f8, 0x01f0, { 18, 18, 11, 11, 11, 11, 4}},
- {m68000_base_device_ops::m68k_op_move_8_d_d, 0xf1f8, 0x1000, { 4, 4, 2, 2, 2, 2, 2}},
- {m68000_base_device_ops::m68k_op_move_8_d_ai, 0xf1f8, 0x1010, { 8, 8, 6, 6, 6, 6, 2}},
- {m68000_base_device_ops::m68k_op_move_8_d_pi, 0xf1f8, 0x1018, { 8, 8, 6, 6, 6, 6, 2}},
- {m68000_base_device_ops::m68k_op_move_8_d_pd, 0xf1f8, 0x1020, { 10, 10, 7, 7, 7, 7, 2}},
- {m68000_base_device_ops::m68k_op_move_8_d_di, 0xf1f8, 0x1028, { 12, 12, 7, 7, 7, 7, 2}},
- {m68000_base_device_ops::m68k_op_move_8_d_ix, 0xf1f8, 0x1030, { 14, 14, 9, 9, 9, 9, 2}},
- {m68000_base_device_ops::m68k_op_move_8_ai_d, 0xf1f8, 0x1080, { 8, 8, 4, 4, 4, 4, 4}},
- {m68000_base_device_ops::m68k_op_move_8_ai_ai, 0xf1f8, 0x1090, { 12, 12, 8, 8, 8, 8, 4}},
- {m68000_base_device_ops::m68k_op_move_8_ai_pi, 0xf1f8, 0x1098, { 12, 12, 8, 8, 8, 8, 4}},
- {m68000_base_device_ops::m68k_op_move_8_ai_pd, 0xf1f8, 0x10a0, { 14, 14, 9, 9, 9, 9, 4}},
- {m68000_base_device_ops::m68k_op_move_8_ai_di, 0xf1f8, 0x10a8, { 16, 16, 9, 9, 9, 9, 4}},
- {m68000_base_device_ops::m68k_op_move_8_ai_ix, 0xf1f8, 0x10b0, { 18, 18, 11, 11, 11, 11, 4}},
- {m68000_base_device_ops::m68k_op_move_8_pi_d, 0xf1f8, 0x10c0, { 8, 8, 4, 4, 4, 4, 4}},
- {m68000_base_device_ops::m68k_op_move_8_pi_ai, 0xf1f8, 0x10d0, { 12, 12, 8, 8, 8, 8, 4}},
- {m68000_base_device_ops::m68k_op_move_8_pi_pi, 0xf1f8, 0x10d8, { 12, 12, 8, 8, 8, 8, 4}},
- {m68000_base_device_ops::m68k_op_move_8_pi_pd, 0xf1f8, 0x10e0, { 14, 14, 9, 9, 9, 9, 4}},
- {m68000_base_device_ops::m68k_op_move_8_pi_di, 0xf1f8, 0x10e8, { 16, 16, 9, 9, 9, 9, 4}},
- {m68000_base_device_ops::m68k_op_move_8_pi_ix, 0xf1f8, 0x10f0, { 18, 18, 11, 11, 11, 11, 4}},
- {m68000_base_device_ops::m68k_op_move_8_pd_d, 0xf1f8, 0x1100, { 8, 8, 5, 5, 5, 5, 5}},
- {m68000_base_device_ops::m68k_op_move_8_pd_ai, 0xf1f8, 0x1110, { 12, 12, 9, 9, 9, 9, 5}},
- {m68000_base_device_ops::m68k_op_move_8_pd_pi, 0xf1f8, 0x1118, { 12, 12, 9, 9, 9, 9, 5}},
- {m68000_base_device_ops::m68k_op_move_8_pd_pd, 0xf1f8, 0x1120, { 14, 14, 10, 10, 10, 10, 5}},
- {m68000_base_device_ops::m68k_op_move_8_pd_di, 0xf1f8, 0x1128, { 16, 16, 10, 10, 10, 10, 5}},
- {m68000_base_device_ops::m68k_op_move_8_pd_ix, 0xf1f8, 0x1130, { 18, 18, 12, 12, 12, 12, 5}},
- {m68000_base_device_ops::m68k_op_move_8_di_d, 0xf1f8, 0x1140, { 12, 12, 5, 5, 5, 5, 5}},
- {m68000_base_device_ops::m68k_op_move_8_di_ai, 0xf1f8, 0x1150, { 16, 16, 9, 9, 9, 9, 5}},
- {m68000_base_device_ops::m68k_op_move_8_di_pi, 0xf1f8, 0x1158, { 16, 16, 9, 9, 9, 9, 5}},
- {m68000_base_device_ops::m68k_op_move_8_di_pd, 0xf1f8, 0x1160, { 18, 18, 10, 10, 10, 10, 5}},
- {m68000_base_device_ops::m68k_op_move_8_di_di, 0xf1f8, 0x1168, { 20, 20, 10, 10, 10, 10, 5}},
- {m68000_base_device_ops::m68k_op_move_8_di_ix, 0xf1f8, 0x1170, { 22, 22, 12, 12, 12, 12, 5}},
- {m68000_base_device_ops::m68k_op_move_8_ix_d, 0xf1f8, 0x1180, { 14, 14, 7, 7, 7, 7, 7}},
- {m68000_base_device_ops::m68k_op_move_8_ix_ai, 0xf1f8, 0x1190, { 18, 18, 11, 11, 11, 11, 7}},
- {m68000_base_device_ops::m68k_op_move_8_ix_pi, 0xf1f8, 0x1198, { 18, 18, 11, 11, 11, 11, 7}},
- {m68000_base_device_ops::m68k_op_move_8_ix_pd, 0xf1f8, 0x11a0, { 20, 20, 12, 12, 12, 12, 7}},
- {m68000_base_device_ops::m68k_op_move_8_ix_di, 0xf1f8, 0x11a8, { 22, 22, 12, 12, 12, 12, 7}},
- {m68000_base_device_ops::m68k_op_move_8_ix_ix, 0xf1f8, 0x11b0, { 24, 24, 14, 14, 14, 14, 7}},
- {m68000_base_device_ops::m68k_op_move_32_d_d, 0xf1f8, 0x2000, { 4, 4, 2, 2, 2, 2, 2}},
- {m68000_base_device_ops::m68k_op_move_32_d_a, 0xf1f8, 0x2008, { 4, 4, 2, 2, 2, 2, 2}},
- {m68000_base_device_ops::m68k_op_move_32_d_ai, 0xf1f8, 0x2010, { 12, 12, 6, 6, 6, 6, 2}},
- {m68000_base_device_ops::m68k_op_move_32_d_pi, 0xf1f8, 0x2018, { 12, 12, 6, 6, 6, 6, 2}},
- {m68000_base_device_ops::m68k_op_move_32_d_pd, 0xf1f8, 0x2020, { 14, 14, 7, 7, 7, 7, 2}},
- {m68000_base_device_ops::m68k_op_move_32_d_di, 0xf1f8, 0x2028, { 16, 16, 7, 7, 7, 7, 2}},
- {m68000_base_device_ops::m68k_op_move_32_d_ix, 0xf1f8, 0x2030, { 18, 18, 9, 9, 9, 9, 2}},
- {m68000_base_device_ops::m68k_op_movea_32_d, 0xf1f8, 0x2040, { 4, 4, 2, 2, 2, 2, 2}},
- {m68000_base_device_ops::m68k_op_movea_32_a, 0xf1f8, 0x2048, { 4, 4, 2, 2, 2, 2, 2}},
- {m68000_base_device_ops::m68k_op_movea_32_ai, 0xf1f8, 0x2050, { 12, 12, 6, 6, 6, 6, 2}},
- {m68000_base_device_ops::m68k_op_movea_32_pi, 0xf1f8, 0x2058, { 12, 12, 6, 6, 6, 6, 2}},
- {m68000_base_device_ops::m68k_op_movea_32_pd, 0xf1f8, 0x2060, { 14, 14, 7, 7, 7, 7, 2}},
- {m68000_base_device_ops::m68k_op_movea_32_di, 0xf1f8, 0x2068, { 16, 16, 7, 7, 7, 7, 2}},
- {m68000_base_device_ops::m68k_op_movea_32_ix, 0xf1f8, 0x2070, { 18, 18, 9, 9, 9, 9, 2}},
- {m68000_base_device_ops::m68k_op_move_32_ai_d, 0xf1f8, 0x2080, { 12, 12, 4, 4, 4, 4, 4}},
- {m68000_base_device_ops::m68k_op_move_32_ai_a, 0xf1f8, 0x2088, { 12, 12, 4, 4, 4, 4, 4}},
- {m68000_base_device_ops::m68k_op_move_32_ai_ai, 0xf1f8, 0x2090, { 20, 20, 8, 8, 8, 8, 4}},
- {m68000_base_device_ops::m68k_op_move_32_ai_pi, 0xf1f8, 0x2098, { 20, 20, 8, 8, 8, 8, 4}},
- {m68000_base_device_ops::m68k_op_move_32_ai_pd, 0xf1f8, 0x20a0, { 22, 22, 9, 9, 9, 9, 4}},
- {m68000_base_device_ops::m68k_op_move_32_ai_di, 0xf1f8, 0x20a8, { 24, 24, 9, 9, 9, 9, 4}},
- {m68000_base_device_ops::m68k_op_move_32_ai_ix, 0xf1f8, 0x20b0, { 26, 26, 11, 11, 11, 11, 4}},
- {m68000_base_device_ops::m68k_op_move_32_pi_d, 0xf1f8, 0x20c0, { 12, 12, 4, 4, 4, 4, 4}},
- {m68000_base_device_ops::m68k_op_move_32_pi_a, 0xf1f8, 0x20c8, { 12, 12, 4, 4, 4, 4, 4}},
- {m68000_base_device_ops::m68k_op_move_32_pi_ai, 0xf1f8, 0x20d0, { 20, 20, 8, 8, 8, 8, 4}},
- {m68000_base_device_ops::m68k_op_move_32_pi_pi, 0xf1f8, 0x20d8, { 20, 20, 8, 8, 8, 8, 4}},
- {m68000_base_device_ops::m68k_op_move_32_pi_pd, 0xf1f8, 0x20e0, { 22, 22, 9, 9, 9, 9, 4}},
- {m68000_base_device_ops::m68k_op_move_32_pi_di, 0xf1f8, 0x20e8, { 24, 24, 9, 9, 9, 9, 4}},
- {m68000_base_device_ops::m68k_op_move_32_pi_ix, 0xf1f8, 0x20f0, { 26, 26, 11, 11, 11, 11, 4}},
- {m68000_base_device_ops::m68k_op_move_32_pd_d, 0xf1f8, 0x2100, { 12, 14, 5, 5, 5, 5, 5}},
- {m68000_base_device_ops::m68k_op_move_32_pd_a, 0xf1f8, 0x2108, { 12, 14, 5, 5, 5, 5, 5}},
- {m68000_base_device_ops::m68k_op_move_32_pd_ai, 0xf1f8, 0x2110, { 20, 22, 9, 9, 9, 9, 5}},
- {m68000_base_device_ops::m68k_op_move_32_pd_pi, 0xf1f8, 0x2118, { 20, 22, 9, 9, 9, 9, 5}},
- {m68000_base_device_ops::m68k_op_move_32_pd_pd, 0xf1f8, 0x2120, { 22, 24, 10, 10, 10, 10, 5}},
- {m68000_base_device_ops::m68k_op_move_32_pd_di, 0xf1f8, 0x2128, { 24, 26, 10, 10, 10, 10, 5}},
- {m68000_base_device_ops::m68k_op_move_32_pd_ix, 0xf1f8, 0x2130, { 26, 28, 12, 12, 12, 12, 5}},
- {m68000_base_device_ops::m68k_op_move_32_di_d, 0xf1f8, 0x2140, { 16, 16, 5, 5, 5, 5, 5}},
- {m68000_base_device_ops::m68k_op_move_32_di_a, 0xf1f8, 0x2148, { 16, 16, 5, 5, 5, 5, 5}},
- {m68000_base_device_ops::m68k_op_move_32_di_ai, 0xf1f8, 0x2150, { 24, 24, 9, 9, 9, 9, 5}},
- {m68000_base_device_ops::m68k_op_move_32_di_pi, 0xf1f8, 0x2158, { 24, 24, 9, 9, 9, 9, 5}},
- {m68000_base_device_ops::m68k_op_move_32_di_pd, 0xf1f8, 0x2160, { 26, 26, 10, 10, 10, 10, 5}},
- {m68000_base_device_ops::m68k_op_move_32_di_di, 0xf1f8, 0x2168, { 28, 28, 10, 10, 10, 10, 5}},
- {m68000_base_device_ops::m68k_op_move_32_di_ix, 0xf1f8, 0x2170, { 30, 30, 12, 12, 12, 12, 5}},
- {m68000_base_device_ops::m68k_op_move_32_ix_d, 0xf1f8, 0x2180, { 18, 18, 7, 7, 7, 7, 7}},
- {m68000_base_device_ops::m68k_op_move_32_ix_a, 0xf1f8, 0x2188, { 18, 18, 7, 7, 7, 7, 7}},
- {m68000_base_device_ops::m68k_op_move_32_ix_ai, 0xf1f8, 0x2190, { 26, 26, 11, 11, 11, 11, 7}},
- {m68000_base_device_ops::m68k_op_move_32_ix_pi, 0xf1f8, 0x2198, { 26, 26, 11, 11, 11, 11, 7}},
- {m68000_base_device_ops::m68k_op_move_32_ix_pd, 0xf1f8, 0x21a0, { 28, 28, 12, 12, 12, 12, 7}},
- {m68000_base_device_ops::m68k_op_move_32_ix_di, 0xf1f8, 0x21a8, { 30, 30, 12, 12, 12, 12, 7}},
- {m68000_base_device_ops::m68k_op_move_32_ix_ix, 0xf1f8, 0x21b0, { 32, 32, 14, 14, 14, 14, 7}},
- {m68000_base_device_ops::m68k_op_move_16_d_d, 0xf1f8, 0x3000, { 4, 4, 2, 2, 2, 2, 2}},
- {m68000_base_device_ops::m68k_op_move_16_d_a, 0xf1f8, 0x3008, { 4, 4, 2, 2, 2, 2, 2}},
- {m68000_base_device_ops::m68k_op_move_16_d_ai, 0xf1f8, 0x3010, { 8, 8, 6, 6, 6, 6, 2}},
- {m68000_base_device_ops::m68k_op_move_16_d_pi, 0xf1f8, 0x3018, { 8, 8, 6, 6, 6, 6, 2}},
- {m68000_base_device_ops::m68k_op_move_16_d_pd, 0xf1f8, 0x3020, { 10, 10, 7, 7, 7, 7, 2}},
- {m68000_base_device_ops::m68k_op_move_16_d_di, 0xf1f8, 0x3028, { 12, 12, 7, 7, 7, 7, 2}},
- {m68000_base_device_ops::m68k_op_move_16_d_ix, 0xf1f8, 0x3030, { 14, 14, 9, 9, 9, 9, 2}},
- {m68000_base_device_ops::m68k_op_movea_16_d, 0xf1f8, 0x3040, { 4, 4, 2, 2, 2, 2, 2}},
- {m68000_base_device_ops::m68k_op_movea_16_a, 0xf1f8, 0x3048, { 4, 4, 2, 2, 2, 2, 2}},
- {m68000_base_device_ops::m68k_op_movea_16_ai, 0xf1f8, 0x3050, { 8, 8, 6, 6, 6, 6, 2}},
- {m68000_base_device_ops::m68k_op_movea_16_pi, 0xf1f8, 0x3058, { 8, 8, 6, 6, 6, 6, 2}},
- {m68000_base_device_ops::m68k_op_movea_16_pd, 0xf1f8, 0x3060, { 10, 10, 7, 7, 7, 7, 2}},
- {m68000_base_device_ops::m68k_op_movea_16_di, 0xf1f8, 0x3068, { 12, 12, 7, 7, 7, 7, 2}},
- {m68000_base_device_ops::m68k_op_movea_16_ix, 0xf1f8, 0x3070, { 14, 14, 9, 9, 9, 9, 2}},
- {m68000_base_device_ops::m68k_op_move_16_ai_d, 0xf1f8, 0x3080, { 8, 8, 4, 4, 4, 4, 4}},
- {m68000_base_device_ops::m68k_op_move_16_ai_a, 0xf1f8, 0x3088, { 8, 8, 4, 4, 4, 4, 4}},
- {m68000_base_device_ops::m68k_op_move_16_ai_ai, 0xf1f8, 0x3090, { 12, 12, 8, 8, 8, 8, 4}},
- {m68000_base_device_ops::m68k_op_move_16_ai_pi, 0xf1f8, 0x3098, { 12, 12, 8, 8, 8, 8, 4}},
- {m68000_base_device_ops::m68k_op_move_16_ai_pd, 0xf1f8, 0x30a0, { 14, 14, 9, 9, 9, 9, 4}},
- {m68000_base_device_ops::m68k_op_move_16_ai_di, 0xf1f8, 0x30a8, { 16, 16, 9, 9, 9, 9, 4}},
- {m68000_base_device_ops::m68k_op_move_16_ai_ix, 0xf1f8, 0x30b0, { 18, 18, 11, 11, 11, 11, 4}},
- {m68000_base_device_ops::m68k_op_move_16_pi_d, 0xf1f8, 0x30c0, { 8, 8, 4, 4, 4, 4, 4}},
- {m68000_base_device_ops::m68k_op_move_16_pi_a, 0xf1f8, 0x30c8, { 8, 8, 4, 4, 4, 4, 4}},
- {m68000_base_device_ops::m68k_op_move_16_pi_ai, 0xf1f8, 0x30d0, { 12, 12, 8, 8, 8, 8, 4}},
- {m68000_base_device_ops::m68k_op_move_16_pi_pi, 0xf1f8, 0x30d8, { 12, 12, 8, 8, 8, 8, 4}},
- {m68000_base_device_ops::m68k_op_move_16_pi_pd, 0xf1f8, 0x30e0, { 14, 14, 9, 9, 9, 9, 4}},
- {m68000_base_device_ops::m68k_op_move_16_pi_di, 0xf1f8, 0x30e8, { 16, 16, 9, 9, 9, 9, 4}},
- {m68000_base_device_ops::m68k_op_move_16_pi_ix, 0xf1f8, 0x30f0, { 18, 18, 11, 11, 11, 11, 4}},
- {m68000_base_device_ops::m68k_op_move_16_pd_d, 0xf1f8, 0x3100, { 8, 8, 5, 5, 5, 5, 5}},
- {m68000_base_device_ops::m68k_op_move_16_pd_a, 0xf1f8, 0x3108, { 8, 8, 5, 5, 5, 5, 5}},
- {m68000_base_device_ops::m68k_op_move_16_pd_ai, 0xf1f8, 0x3110, { 12, 12, 9, 9, 9, 9, 5}},
- {m68000_base_device_ops::m68k_op_move_16_pd_pi, 0xf1f8, 0x3118, { 12, 12, 9, 9, 9, 9, 5}},
- {m68000_base_device_ops::m68k_op_move_16_pd_pd, 0xf1f8, 0x3120, { 14, 14, 10, 10, 10, 10, 5}},
- {m68000_base_device_ops::m68k_op_move_16_pd_di, 0xf1f8, 0x3128, { 16, 16, 10, 10, 10, 10, 5}},
- {m68000_base_device_ops::m68k_op_move_16_pd_ix, 0xf1f8, 0x3130, { 18, 18, 12, 12, 12, 12, 5}},
- {m68000_base_device_ops::m68k_op_move_16_di_d, 0xf1f8, 0x3140, { 12, 12, 5, 5, 5, 5, 5}},
- {m68000_base_device_ops::m68k_op_move_16_di_a, 0xf1f8, 0x3148, { 12, 12, 5, 5, 5, 5, 5}},
- {m68000_base_device_ops::m68k_op_move_16_di_ai, 0xf1f8, 0x3150, { 16, 16, 9, 9, 9, 9, 5}},
- {m68000_base_device_ops::m68k_op_move_16_di_pi, 0xf1f8, 0x3158, { 16, 16, 9, 9, 9, 9, 5}},
- {m68000_base_device_ops::m68k_op_move_16_di_pd, 0xf1f8, 0x3160, { 18, 18, 10, 10, 10, 10, 5}},
- {m68000_base_device_ops::m68k_op_move_16_di_di, 0xf1f8, 0x3168, { 20, 20, 10, 10, 10, 10, 5}},
- {m68000_base_device_ops::m68k_op_move_16_di_ix, 0xf1f8, 0x3170, { 22, 22, 12, 12, 12, 12, 5}},
- {m68000_base_device_ops::m68k_op_move_16_ix_d, 0xf1f8, 0x3180, { 14, 14, 7, 7, 7, 7, 7}},
- {m68000_base_device_ops::m68k_op_move_16_ix_a, 0xf1f8, 0x3188, { 14, 14, 7, 7, 7, 7, 7}},
- {m68000_base_device_ops::m68k_op_move_16_ix_ai, 0xf1f8, 0x3190, { 18, 18, 11, 11, 11, 11, 7}},
- {m68000_base_device_ops::m68k_op_move_16_ix_pi, 0xf1f8, 0x3198, { 18, 18, 11, 11, 11, 11, 7}},
- {m68000_base_device_ops::m68k_op_move_16_ix_pd, 0xf1f8, 0x31a0, { 20, 20, 12, 12, 12, 12, 7}},
- {m68000_base_device_ops::m68k_op_move_16_ix_di, 0xf1f8, 0x31a8, { 22, 22, 12, 12, 12, 12, 7}},
- {m68000_base_device_ops::m68k_op_move_16_ix_ix, 0xf1f8, 0x31b0, { 24, 24, 14, 14, 14, 14, 7}},
- {m68000_base_device_ops::m68k_op_chk_32_d, 0xf1f8, 0x4100, {255, 255, 8, 8, 8, 8, 8}},
- {m68000_base_device_ops::m68k_op_chk_32_ai, 0xf1f8, 0x4110, {255, 255, 12, 12, 12, 12, 8}},
- {m68000_base_device_ops::m68k_op_chk_32_pi, 0xf1f8, 0x4118, {255, 255, 12, 12, 12, 12, 8}},
- {m68000_base_device_ops::m68k_op_chk_32_pd, 0xf1f8, 0x4120, {255, 255, 13, 13, 13, 13, 8}},
- {m68000_base_device_ops::m68k_op_chk_32_di, 0xf1f8, 0x4128, {255, 255, 13, 13, 13, 13, 8}},
- {m68000_base_device_ops::m68k_op_chk_32_ix, 0xf1f8, 0x4130, {255, 255, 15, 15, 15, 15, 8}},
- {m68000_base_device_ops::m68k_op_chk_16_d, 0xf1f8, 0x4180, { 10, 8, 8, 8, 8, 8, 8}},
- {m68000_base_device_ops::m68k_op_chk_16_ai, 0xf1f8, 0x4190, { 14, 12, 12, 12, 12, 12, 8}},
- {m68000_base_device_ops::m68k_op_chk_16_pi, 0xf1f8, 0x4198, { 14, 12, 12, 12, 12, 12, 8}},
- {m68000_base_device_ops::m68k_op_chk_16_pd, 0xf1f8, 0x41a0, { 16, 14, 13, 13, 13, 13, 8}},
- {m68000_base_device_ops::m68k_op_chk_16_di, 0xf1f8, 0x41a8, { 18, 16, 13, 13, 13, 13, 8}},
- {m68000_base_device_ops::m68k_op_chk_16_ix, 0xf1f8, 0x41b0, { 20, 18, 15, 15, 15, 15, 8}},
- {m68000_base_device_ops::m68k_op_lea_32_ai, 0xf1f8, 0x41d0, { 4, 4, 6, 6, 6, 6, 2}},
- {m68000_base_device_ops::m68k_op_lea_32_di, 0xf1f8, 0x41e8, { 8, 8, 7, 7, 7, 7, 2}},
- {m68000_base_device_ops::m68k_op_lea_32_ix, 0xf1f8, 0x41f0, { 12, 12, 9, 9, 9, 9, 2}},
- {m68000_base_device_ops::m68k_op_addq_8_d, 0xf1f8, 0x5000, { 4, 4, 2, 2, 2, 2, 2}},
- {m68000_base_device_ops::m68k_op_addq_8_ai, 0xf1f8, 0x5010, { 12, 12, 8, 8, 8, 8, 4}},
- {m68000_base_device_ops::m68k_op_addq_8_pi, 0xf1f8, 0x5018, { 12, 12, 8, 8, 8, 8, 4}},
- {m68000_base_device_ops::m68k_op_addq_8_pd, 0xf1f8, 0x5020, { 14, 14, 9, 9, 9, 9, 4}},
- {m68000_base_device_ops::m68k_op_addq_8_di, 0xf1f8, 0x5028, { 16, 16, 9, 9, 9, 9, 4}},
- {m68000_base_device_ops::m68k_op_addq_8_ix, 0xf1f8, 0x5030, { 18, 18, 11, 11, 11, 11, 4}},
- {m68000_base_device_ops::m68k_op_addq_16_d, 0xf1f8, 0x5040, { 4, 4, 2, 2, 2, 2, 2}},
- {m68000_base_device_ops::m68k_op_addq_16_a, 0xf1f8, 0x5048, { 4, 4, 2, 2, 2, 2, 2}},
- {m68000_base_device_ops::m68k_op_addq_16_ai, 0xf1f8, 0x5050, { 12, 12, 8, 8, 8, 8, 4}},
- {m68000_base_device_ops::m68k_op_addq_16_pi, 0xf1f8, 0x5058, { 12, 12, 8, 8, 8, 8, 4}},
- {m68000_base_device_ops::m68k_op_addq_16_pd, 0xf1f8, 0x5060, { 14, 14, 9, 9, 9, 9, 4}},
- {m68000_base_device_ops::m68k_op_addq_16_di, 0xf1f8, 0x5068, { 16, 16, 9, 9, 9, 9, 4}},
- {m68000_base_device_ops::m68k_op_addq_16_ix, 0xf1f8, 0x5070, { 18, 18, 11, 11, 11, 11, 4}},
- {m68000_base_device_ops::m68k_op_addq_32_d, 0xf1f8, 0x5080, { 8, 8, 2, 2, 2, 2, 2}},
- {m68000_base_device_ops::m68k_op_addq_32_a, 0xf1f8, 0x5088, { 8, 8, 2, 2, 2, 2, 2}},
- {m68000_base_device_ops::m68k_op_addq_32_ai, 0xf1f8, 0x5090, { 20, 20, 8, 8, 8, 8, 4}},
- {m68000_base_device_ops::m68k_op_addq_32_pi, 0xf1f8, 0x5098, { 20, 20, 8, 8, 8, 8, 4}},
- {m68000_base_device_ops::m68k_op_addq_32_pd, 0xf1f8, 0x50a0, { 22, 22, 9, 9, 9, 9, 4}},
- {m68000_base_device_ops::m68k_op_addq_32_di, 0xf1f8, 0x50a8, { 24, 24, 9, 9, 9, 9, 4}},
- {m68000_base_device_ops::m68k_op_addq_32_ix, 0xf1f8, 0x50b0, { 26, 26, 11, 11, 11, 11, 4}},
- {m68000_base_device_ops::m68k_op_subq_8_d, 0xf1f8, 0x5100, { 4, 4, 2, 2, 2, 2, 2}},
- {m68000_base_device_ops::m68k_op_subq_8_ai, 0xf1f8, 0x5110, { 12, 12, 8, 8, 8, 8, 4}},
- {m68000_base_device_ops::m68k_op_subq_8_pi, 0xf1f8, 0x5118, { 12, 12, 8, 8, 8, 8, 4}},
- {m68000_base_device_ops::m68k_op_subq_8_pd, 0xf1f8, 0x5120, { 14, 14, 9, 9, 9, 9, 4}},
- {m68000_base_device_ops::m68k_op_subq_8_di, 0xf1f8, 0x5128, { 16, 16, 9, 9, 9, 9, 4}},
- {m68000_base_device_ops::m68k_op_subq_8_ix, 0xf1f8, 0x5130, { 18, 18, 11, 11, 11, 11, 4}},
- {m68000_base_device_ops::m68k_op_subq_16_d, 0xf1f8, 0x5140, { 4, 4, 2, 2, 2, 2, 2}},
- {m68000_base_device_ops::m68k_op_subq_16_a, 0xf1f8, 0x5148, { 8, 4, 2, 2, 2, 2, 2}},
- {m68000_base_device_ops::m68k_op_subq_16_ai, 0xf1f8, 0x5150, { 12, 12, 8, 8, 8, 8, 4}},
- {m68000_base_device_ops::m68k_op_subq_16_pi, 0xf1f8, 0x5158, { 12, 12, 8, 8, 8, 8, 4}},
- {m68000_base_device_ops::m68k_op_subq_16_pd, 0xf1f8, 0x5160, { 14, 14, 9, 9, 9, 9, 4}},
- {m68000_base_device_ops::m68k_op_subq_16_di, 0xf1f8, 0x5168, { 16, 16, 9, 9, 9, 9, 4}},
- {m68000_base_device_ops::m68k_op_subq_16_ix, 0xf1f8, 0x5170, { 18, 18, 11, 11, 11, 11, 4}},
- {m68000_base_device_ops::m68k_op_subq_32_d, 0xf1f8, 0x5180, { 8, 8, 2, 2, 2, 2, 2}},
- {m68000_base_device_ops::m68k_op_subq_32_a, 0xf1f8, 0x5188, { 8, 8, 2, 2, 2, 2, 2}},
- {m68000_base_device_ops::m68k_op_subq_32_ai, 0xf1f8, 0x5190, { 20, 20, 8, 8, 8, 8, 4}},
- {m68000_base_device_ops::m68k_op_subq_32_pi, 0xf1f8, 0x5198, { 20, 20, 8, 8, 8, 8, 4}},
- {m68000_base_device_ops::m68k_op_subq_32_pd, 0xf1f8, 0x51a0, { 22, 22, 9, 9, 9, 9, 4}},
- {m68000_base_device_ops::m68k_op_subq_32_di, 0xf1f8, 0x51a8, { 24, 24, 9, 9, 9, 9, 4}},
- {m68000_base_device_ops::m68k_op_subq_32_ix, 0xf1f8, 0x51b0, { 26, 26, 11, 11, 11, 11, 4}},
- {m68000_base_device_ops::m68k_op_or_8_er_d, 0xf1f8, 0x8000, { 4, 4, 2, 2, 2, 2, 2}},
- {m68000_base_device_ops::m68k_op_or_8_er_ai, 0xf1f8, 0x8010, { 8, 8, 6, 6, 6, 6, 2}},
- {m68000_base_device_ops::m68k_op_or_8_er_pi, 0xf1f8, 0x8018, { 8, 8, 6, 6, 6, 6, 2}},
- {m68000_base_device_ops::m68k_op_or_8_er_pd, 0xf1f8, 0x8020, { 10, 10, 7, 7, 7, 7, 2}},
- {m68000_base_device_ops::m68k_op_or_8_er_di, 0xf1f8, 0x8028, { 12, 12, 7, 7, 7, 7, 2}},
- {m68000_base_device_ops::m68k_op_or_8_er_ix, 0xf1f8, 0x8030, { 14, 14, 9, 9, 9, 9, 2}},
- {m68000_base_device_ops::m68k_op_or_16_er_d, 0xf1f8, 0x8040, { 4, 4, 2, 2, 2, 2, 2}},
- {m68000_base_device_ops::m68k_op_or_16_er_ai, 0xf1f8, 0x8050, { 8, 8, 6, 6, 6, 6, 2}},
- {m68000_base_device_ops::m68k_op_or_16_er_pi, 0xf1f8, 0x8058, { 8, 8, 6, 6, 6, 6, 2}},
- {m68000_base_device_ops::m68k_op_or_16_er_pd, 0xf1f8, 0x8060, { 10, 10, 7, 7, 7, 7, 2}},
- {m68000_base_device_ops::m68k_op_or_16_er_di, 0xf1f8, 0x8068, { 12, 12, 7, 7, 7, 7, 2}},
- {m68000_base_device_ops::m68k_op_or_16_er_ix, 0xf1f8, 0x8070, { 14, 14, 9, 9, 9, 9, 2}},
- {m68000_base_device_ops::m68k_op_or_32_er_d, 0xf1f8, 0x8080, { 8, 6, 2, 2, 2, 2, 2}},
- {m68000_base_device_ops::m68k_op_or_32_er_ai, 0xf1f8, 0x8090, { 14, 14, 6, 6, 6, 6, 2}},
- {m68000_base_device_ops::m68k_op_or_32_er_pi, 0xf1f8, 0x8098, { 14, 14, 6, 6, 6, 6, 2}},
- {m68000_base_device_ops::m68k_op_or_32_er_pd, 0xf1f8, 0x80a0, { 16, 16, 7, 7, 7, 7, 2}},
- {m68000_base_device_ops::m68k_op_or_32_er_di, 0xf1f8, 0x80a8, { 18, 18, 7, 7, 7, 7, 2}},
- {m68000_base_device_ops::m68k_op_or_32_er_ix, 0xf1f8, 0x80b0, { 20, 20, 9, 9, 9, 9, 2}},
- {m68000_base_device_ops::m68k_op_divu_16_d, 0xf1f8, 0x80c0, {140, 108, 44, 44, 44, 44, 44}},
- {m68000_base_device_ops::m68k_op_divu_16_ai, 0xf1f8, 0x80d0, {144, 112, 48, 48, 48, 48, 44}},
- {m68000_base_device_ops::m68k_op_divu_16_pi, 0xf1f8, 0x80d8, {144, 112, 48, 48, 48, 48, 44}},
- {m68000_base_device_ops::m68k_op_divu_16_pd, 0xf1f8, 0x80e0, {146, 114, 49, 49, 49, 49, 44}},
- {m68000_base_device_ops::m68k_op_divu_16_di, 0xf1f8, 0x80e8, {148, 116, 49, 49, 49, 49, 44}},
- {m68000_base_device_ops::m68k_op_divu_16_ix, 0xf1f8, 0x80f0, {150, 118, 51, 51, 51, 51, 44}},
- {m68000_base_device_ops::m68k_op_sbcd_8_rr, 0xf1f8, 0x8100, { 6, 6, 4, 4, 4, 4, 4}},
- {m68000_base_device_ops::m68k_op_sbcd_8_mm, 0xf1f8, 0x8108, { 18, 18, 16, 16, 16, 16, 16}},
- {m68000_base_device_ops::m68k_op_or_8_re_ai, 0xf1f8, 0x8110, { 12, 12, 8, 8, 8, 8, 4}},
- {m68000_base_device_ops::m68k_op_or_8_re_pi, 0xf1f8, 0x8118, { 12, 12, 8, 8, 8, 8, 4}},
- {m68000_base_device_ops::m68k_op_or_8_re_pd, 0xf1f8, 0x8120, { 14, 14, 9, 9, 9, 9, 4}},
- {m68000_base_device_ops::m68k_op_or_8_re_di, 0xf1f8, 0x8128, { 16, 16, 9, 9, 9, 9, 4}},
- {m68000_base_device_ops::m68k_op_or_8_re_ix, 0xf1f8, 0x8130, { 18, 18, 11, 11, 11, 11, 4}},
- {m68000_base_device_ops::m68k_op_pack_16_rr, 0xf1f8, 0x8140, {255, 255, 6, 6, 6, 6, 6}},
- {m68000_base_device_ops::m68k_op_pack_16_mm, 0xf1f8, 0x8148, {255, 255, 13, 13, 13, 13, 13}},
- {m68000_base_device_ops::m68k_op_or_16_re_ai, 0xf1f8, 0x8150, { 12, 12, 8, 8, 8, 8, 4}},
- {m68000_base_device_ops::m68k_op_or_16_re_pi, 0xf1f8, 0x8158, { 12, 12, 8, 8, 8, 8, 4}},
- {m68000_base_device_ops::m68k_op_or_16_re_pd, 0xf1f8, 0x8160, { 14, 14, 9, 9, 9, 9, 4}},
- {m68000_base_device_ops::m68k_op_or_16_re_di, 0xf1f8, 0x8168, { 16, 16, 9, 9, 9, 9, 4}},
- {m68000_base_device_ops::m68k_op_or_16_re_ix, 0xf1f8, 0x8170, { 18, 18, 11, 11, 11, 11, 4}},
- {m68000_base_device_ops::m68k_op_unpk_16_rr, 0xf1f8, 0x8180, {255, 255, 8, 8, 8, 8, 8}},
- {m68000_base_device_ops::m68k_op_unpk_16_mm, 0xf1f8, 0x8188, {255, 255, 13, 13, 13, 13, 13}},
- {m68000_base_device_ops::m68k_op_or_32_re_ai, 0xf1f8, 0x8190, { 20, 20, 8, 8, 8, 8, 4}},
- {m68000_base_device_ops::m68k_op_or_32_re_pi, 0xf1f8, 0x8198, { 20, 20, 8, 8, 8, 8, 4}},
- {m68000_base_device_ops::m68k_op_or_32_re_pd, 0xf1f8, 0x81a0, { 22, 22, 9, 9, 9, 9, 4}},
- {m68000_base_device_ops::m68k_op_or_32_re_di, 0xf1f8, 0x81a8, { 24, 24, 9, 9, 9, 9, 4}},
- {m68000_base_device_ops::m68k_op_or_32_re_ix, 0xf1f8, 0x81b0, { 26, 26, 11, 11, 11, 11, 4}},
- {m68000_base_device_ops::m68k_op_divs_16_d, 0xf1f8, 0x81c0, {158, 122, 56, 56, 56, 56, 56}},
- {m68000_base_device_ops::m68k_op_divs_16_ai, 0xf1f8, 0x81d0, {162, 126, 60, 60, 60, 60, 56}},
- {m68000_base_device_ops::m68k_op_divs_16_pi, 0xf1f8, 0x81d8, {162, 126, 60, 60, 60, 60, 56}},
- {m68000_base_device_ops::m68k_op_divs_16_pd, 0xf1f8, 0x81e0, {164, 128, 61, 61, 61, 61, 56}},
- {m68000_base_device_ops::m68k_op_divs_16_di, 0xf1f8, 0x81e8, {166, 130, 61, 61, 61, 61, 56}},
- {m68000_base_device_ops::m68k_op_divs_16_ix, 0xf1f8, 0x81f0, {168, 132, 63, 63, 63, 63, 56}},
- {m68000_base_device_ops::m68k_op_sub_8_er_d, 0xf1f8, 0x9000, { 4, 4, 2, 2, 2, 2, 2}},
- {m68000_base_device_ops::m68k_op_sub_8_er_ai, 0xf1f8, 0x9010, { 8, 8, 6, 6, 6, 6, 2}},
- {m68000_base_device_ops::m68k_op_sub_8_er_pi, 0xf1f8, 0x9018, { 8, 8, 6, 6, 6, 6, 2}},
- {m68000_base_device_ops::m68k_op_sub_8_er_pd, 0xf1f8, 0x9020, { 10, 10, 7, 7, 7, 7, 2}},
- {m68000_base_device_ops::m68k_op_sub_8_er_di, 0xf1f8, 0x9028, { 12, 12, 7, 7, 7, 7, 2}},
- {m68000_base_device_ops::m68k_op_sub_8_er_ix, 0xf1f8, 0x9030, { 14, 14, 9, 9, 9, 9, 2}},
- {m68000_base_device_ops::m68k_op_sub_16_er_d, 0xf1f8, 0x9040, { 4, 4, 2, 2, 2, 2, 2}},
- {m68000_base_device_ops::m68k_op_sub_16_er_a, 0xf1f8, 0x9048, { 4, 4, 2, 2, 2, 2, 2}},
- {m68000_base_device_ops::m68k_op_sub_16_er_ai, 0xf1f8, 0x9050, { 8, 8, 6, 6, 6, 6, 2}},
- {m68000_base_device_ops::m68k_op_sub_16_er_pi, 0xf1f8, 0x9058, { 8, 8, 6, 6, 6, 6, 2}},
- {m68000_base_device_ops::m68k_op_sub_16_er_pd, 0xf1f8, 0x9060, { 10, 10, 7, 7, 7, 7, 2}},
- {m68000_base_device_ops::m68k_op_sub_16_er_di, 0xf1f8, 0x9068, { 12, 12, 7, 7, 7, 7, 2}},
- {m68000_base_device_ops::m68k_op_sub_16_er_ix, 0xf1f8, 0x9070, { 14, 14, 9, 9, 9, 9, 2}},
- {m68000_base_device_ops::m68k_op_sub_32_er_d, 0xf1f8, 0x9080, { 8, 6, 2, 2, 2, 2, 2}},
- {m68000_base_device_ops::m68k_op_sub_32_er_a, 0xf1f8, 0x9088, { 8, 6, 2, 2, 2, 2, 2}},
- {m68000_base_device_ops::m68k_op_sub_32_er_ai, 0xf1f8, 0x9090, { 14, 14, 6, 6, 6, 6, 2}},
- {m68000_base_device_ops::m68k_op_sub_32_er_pi, 0xf1f8, 0x9098, { 14, 14, 6, 6, 6, 6, 2}},
- {m68000_base_device_ops::m68k_op_sub_32_er_pd, 0xf1f8, 0x90a0, { 16, 16, 7, 7, 7, 7, 2}},
- {m68000_base_device_ops::m68k_op_sub_32_er_di, 0xf1f8, 0x90a8, { 18, 18, 7, 7, 7, 7, 2}},
- {m68000_base_device_ops::m68k_op_sub_32_er_ix, 0xf1f8, 0x90b0, { 20, 20, 9, 9, 9, 9, 2}},
- {m68000_base_device_ops::m68k_op_suba_16_d, 0xf1f8, 0x90c0, { 8, 8, 2, 2, 2, 2, 2}},
- {m68000_base_device_ops::m68k_op_suba_16_a, 0xf1f8, 0x90c8, { 8, 8, 2, 2, 2, 2, 2}},
- {m68000_base_device_ops::m68k_op_suba_16_ai, 0xf1f8, 0x90d0, { 12, 12, 6, 6, 6, 6, 2}},
- {m68000_base_device_ops::m68k_op_suba_16_pi, 0xf1f8, 0x90d8, { 12, 12, 6, 6, 6, 6, 2}},
- {m68000_base_device_ops::m68k_op_suba_16_pd, 0xf1f8, 0x90e0, { 14, 14, 7, 7, 7, 7, 2}},
- {m68000_base_device_ops::m68k_op_suba_16_di, 0xf1f8, 0x90e8, { 16, 16, 7, 7, 7, 7, 2}},
- {m68000_base_device_ops::m68k_op_suba_16_ix, 0xf1f8, 0x90f0, { 18, 18, 9, 9, 9, 9, 2}},
- {m68000_base_device_ops::m68k_op_subx_8_rr, 0xf1f8, 0x9100, { 4, 4, 2, 2, 2, 2, 2}},
- {m68000_base_device_ops::m68k_op_subx_8_mm, 0xf1f8, 0x9108, { 18, 18, 12, 12, 12, 12, 12}},
- {m68000_base_device_ops::m68k_op_sub_8_re_ai, 0xf1f8, 0x9110, { 12, 12, 8, 8, 8, 8, 4}},
- {m68000_base_device_ops::m68k_op_sub_8_re_pi, 0xf1f8, 0x9118, { 12, 12, 8, 8, 8, 8, 4}},
- {m68000_base_device_ops::m68k_op_sub_8_re_pd, 0xf1f8, 0x9120, { 14, 14, 9, 9, 9, 9, 4}},
- {m68000_base_device_ops::m68k_op_sub_8_re_di, 0xf1f8, 0x9128, { 16, 16, 9, 9, 9, 9, 4}},
- {m68000_base_device_ops::m68k_op_sub_8_re_ix, 0xf1f8, 0x9130, { 18, 18, 11, 11, 11, 11, 4}},
- {m68000_base_device_ops::m68k_op_subx_16_rr, 0xf1f8, 0x9140, { 4, 4, 2, 2, 2, 2, 2}},
- {m68000_base_device_ops::m68k_op_subx_16_mm, 0xf1f8, 0x9148, { 18, 18, 12, 12, 12, 12, 12}},
- {m68000_base_device_ops::m68k_op_sub_16_re_ai, 0xf1f8, 0x9150, { 12, 12, 8, 8, 8, 8, 4}},
- {m68000_base_device_ops::m68k_op_sub_16_re_pi, 0xf1f8, 0x9158, { 12, 12, 8, 8, 8, 8, 4}},
- {m68000_base_device_ops::m68k_op_sub_16_re_pd, 0xf1f8, 0x9160, { 14, 14, 9, 9, 9, 9, 4}},
- {m68000_base_device_ops::m68k_op_sub_16_re_di, 0xf1f8, 0x9168, { 16, 16, 9, 9, 9, 9, 4}},
- {m68000_base_device_ops::m68k_op_sub_16_re_ix, 0xf1f8, 0x9170, { 18, 18, 11, 11, 11, 11, 4}},
- {m68000_base_device_ops::m68k_op_subx_32_rr, 0xf1f8, 0x9180, { 8, 6, 2, 2, 2, 2, 2}},
- {m68000_base_device_ops::m68k_op_subx_32_mm, 0xf1f8, 0x9188, { 30, 30, 12, 12, 12, 12, 12}},
- {m68000_base_device_ops::m68k_op_sub_32_re_ai, 0xf1f8, 0x9190, { 20, 20, 8, 8, 8, 8, 4}},
- {m68000_base_device_ops::m68k_op_sub_32_re_pi, 0xf1f8, 0x9198, { 20, 20, 8, 8, 8, 8, 4}},
- {m68000_base_device_ops::m68k_op_sub_32_re_pd, 0xf1f8, 0x91a0, { 22, 22, 9, 9, 9, 9, 4}},
- {m68000_base_device_ops::m68k_op_sub_32_re_di, 0xf1f8, 0x91a8, { 24, 24, 9, 9, 9, 9, 4}},
- {m68000_base_device_ops::m68k_op_sub_32_re_ix, 0xf1f8, 0x91b0, { 26, 26, 11, 11, 11, 11, 4}},
- {m68000_base_device_ops::m68k_op_suba_32_d, 0xf1f8, 0x91c0, { 8, 6, 2, 2, 2, 2, 2}},
- {m68000_base_device_ops::m68k_op_suba_32_a, 0xf1f8, 0x91c8, { 8, 6, 2, 2, 2, 2, 2}},
- {m68000_base_device_ops::m68k_op_suba_32_ai, 0xf1f8, 0x91d0, { 14, 14, 6, 6, 6, 6, 2}},
- {m68000_base_device_ops::m68k_op_suba_32_pi, 0xf1f8, 0x91d8, { 14, 14, 6, 6, 6, 6, 2}},
- {m68000_base_device_ops::m68k_op_suba_32_pd, 0xf1f8, 0x91e0, { 16, 16, 7, 7, 7, 7, 2}},
- {m68000_base_device_ops::m68k_op_suba_32_di, 0xf1f8, 0x91e8, { 18, 18, 7, 7, 7, 7, 2}},
- {m68000_base_device_ops::m68k_op_suba_32_ix, 0xf1f8, 0x91f0, { 20, 20, 9, 9, 9, 9, 2}},
- {m68000_base_device_ops::m68k_op_cmp_8_d, 0xf1f8, 0xb000, { 4, 4, 2, 2, 2, 2, 2}},
- {m68000_base_device_ops::m68k_op_cmp_8_ai, 0xf1f8, 0xb010, { 8, 8, 6, 6, 6, 6, 2}},
- {m68000_base_device_ops::m68k_op_cmp_8_pi, 0xf1f8, 0xb018, { 8, 8, 6, 6, 6, 6, 2}},
- {m68000_base_device_ops::m68k_op_cmp_8_pd, 0xf1f8, 0xb020, { 10, 10, 7, 7, 7, 7, 2}},
- {m68000_base_device_ops::m68k_op_cmp_8_di, 0xf1f8, 0xb028, { 12, 12, 7, 7, 7, 7, 2}},
- {m68000_base_device_ops::m68k_op_cmp_8_ix, 0xf1f8, 0xb030, { 14, 14, 9, 9, 9, 9, 2}},
- {m68000_base_device_ops::m68k_op_cmp_16_d, 0xf1f8, 0xb040, { 4, 4, 2, 2, 2, 2, 2}},
- {m68000_base_device_ops::m68k_op_cmp_16_a, 0xf1f8, 0xb048, { 4, 4, 2, 2, 2, 2, 2}},
- {m68000_base_device_ops::m68k_op_cmp_16_ai, 0xf1f8, 0xb050, { 8, 8, 6, 6, 6, 6, 2}},
- {m68000_base_device_ops::m68k_op_cmp_16_pi, 0xf1f8, 0xb058, { 8, 8, 6, 6, 6, 6, 2}},
- {m68000_base_device_ops::m68k_op_cmp_16_pd, 0xf1f8, 0xb060, { 10, 10, 7, 7, 7, 7, 2}},
- {m68000_base_device_ops::m68k_op_cmp_16_di, 0xf1f8, 0xb068, { 12, 12, 7, 7, 7, 7, 2}},
- {m68000_base_device_ops::m68k_op_cmp_16_ix, 0xf1f8, 0xb070, { 14, 14, 9, 9, 9, 9, 2}},
- {m68000_base_device_ops::m68k_op_cmp_32_d, 0xf1f8, 0xb080, { 6, 6, 2, 2, 2, 2, 2}},
- {m68000_base_device_ops::m68k_op_cmp_32_a, 0xf1f8, 0xb088, { 6, 6, 2, 2, 2, 2, 2}},
- {m68000_base_device_ops::m68k_op_cmp_32_ai, 0xf1f8, 0xb090, { 14, 14, 6, 6, 6, 6, 2}},
- {m68000_base_device_ops::m68k_op_cmp_32_pi, 0xf1f8, 0xb098, { 14, 14, 6, 6, 6, 6, 2}},
- {m68000_base_device_ops::m68k_op_cmp_32_pd, 0xf1f8, 0xb0a0, { 16, 16, 7, 7, 7, 7, 2}},
- {m68000_base_device_ops::m68k_op_cmp_32_di, 0xf1f8, 0xb0a8, { 18, 18, 7, 7, 7, 7, 2}},
- {m68000_base_device_ops::m68k_op_cmp_32_ix, 0xf1f8, 0xb0b0, { 20, 20, 9, 9, 9, 9, 2}},
- {m68000_base_device_ops::m68k_op_cmpa_16_d, 0xf1f8, 0xb0c0, { 6, 6, 4, 4, 4, 4, 4}},
- {m68000_base_device_ops::m68k_op_cmpa_16_a, 0xf1f8, 0xb0c8, { 6, 6, 4, 4, 4, 4, 4}},
- {m68000_base_device_ops::m68k_op_cmpa_16_ai, 0xf1f8, 0xb0d0, { 10, 10, 8, 8, 8, 8, 4}},
- {m68000_base_device_ops::m68k_op_cmpa_16_pi, 0xf1f8, 0xb0d8, { 10, 10, 8, 8, 8, 8, 4}},
- {m68000_base_device_ops::m68k_op_cmpa_16_pd, 0xf1f8, 0xb0e0, { 12, 12, 9, 9, 9, 9, 4}},
- {m68000_base_device_ops::m68k_op_cmpa_16_di, 0xf1f8, 0xb0e8, { 14, 14, 9, 9, 9, 9, 4}},
- {m68000_base_device_ops::m68k_op_cmpa_16_ix, 0xf1f8, 0xb0f0, { 16, 16, 11, 11, 11, 11, 4}},
- {m68000_base_device_ops::m68k_op_eor_8_d, 0xf1f8, 0xb100, { 4, 4, 2, 2, 2, 2, 2}},
- {m68000_base_device_ops::m68k_op_cmpm_8, 0xf1f8, 0xb108, { 12, 12, 9, 9, 9, 9, 9}},
- {m68000_base_device_ops::m68k_op_eor_8_ai, 0xf1f8, 0xb110, { 12, 12, 8, 8, 8, 8, 4}},
- {m68000_base_device_ops::m68k_op_eor_8_pi, 0xf1f8, 0xb118, { 12, 12, 8, 8, 8, 8, 4}},
- {m68000_base_device_ops::m68k_op_eor_8_pd, 0xf1f8, 0xb120, { 14, 14, 9, 9, 9, 9, 4}},
- {m68000_base_device_ops::m68k_op_eor_8_di, 0xf1f8, 0xb128, { 16, 16, 9, 9, 9, 9, 4}},
- {m68000_base_device_ops::m68k_op_eor_8_ix, 0xf1f8, 0xb130, { 18, 18, 11, 11, 11, 11, 4}},
- {m68000_base_device_ops::m68k_op_eor_16_d, 0xf1f8, 0xb140, { 4, 4, 2, 2, 2, 2, 2}},
- {m68000_base_device_ops::m68k_op_cmpm_16, 0xf1f8, 0xb148, { 12, 12, 9, 9, 9, 9, 9}},
- {m68000_base_device_ops::m68k_op_eor_16_ai, 0xf1f8, 0xb150, { 12, 12, 8, 8, 8, 8, 4}},
- {m68000_base_device_ops::m68k_op_eor_16_pi, 0xf1f8, 0xb158, { 12, 12, 8, 8, 8, 8, 4}},
- {m68000_base_device_ops::m68k_op_eor_16_pd, 0xf1f8, 0xb160, { 14, 14, 9, 9, 9, 9, 4}},
- {m68000_base_device_ops::m68k_op_eor_16_di, 0xf1f8, 0xb168, { 16, 16, 9, 9, 9, 9, 4}},
- {m68000_base_device_ops::m68k_op_eor_16_ix, 0xf1f8, 0xb170, { 18, 18, 11, 11, 11, 11, 4}},
- {m68000_base_device_ops::m68k_op_eor_32_d, 0xf1f8, 0xb180, { 8, 6, 2, 2, 2, 2, 2}},
- {m68000_base_device_ops::m68k_op_cmpm_32, 0xf1f8, 0xb188, { 20, 20, 9, 9, 9, 9, 9}},
- {m68000_base_device_ops::m68k_op_eor_32_ai, 0xf1f8, 0xb190, { 20, 20, 8, 8, 8, 8, 4}},
- {m68000_base_device_ops::m68k_op_eor_32_pi, 0xf1f8, 0xb198, { 20, 20, 8, 8, 8, 8, 4}},
- {m68000_base_device_ops::m68k_op_eor_32_pd, 0xf1f8, 0xb1a0, { 22, 22, 9, 9, 9, 9, 4}},
- {m68000_base_device_ops::m68k_op_eor_32_di, 0xf1f8, 0xb1a8, { 24, 24, 9, 9, 9, 9, 4}},
- {m68000_base_device_ops::m68k_op_eor_32_ix, 0xf1f8, 0xb1b0, { 26, 26, 11, 11, 11, 11, 4}},
- {m68000_base_device_ops::m68k_op_cmpa_32_d, 0xf1f8, 0xb1c0, { 6, 6, 4, 4, 4, 4, 4}},
- {m68000_base_device_ops::m68k_op_cmpa_32_a, 0xf1f8, 0xb1c8, { 6, 6, 4, 4, 4, 4, 4}},
- {m68000_base_device_ops::m68k_op_cmpa_32_ai, 0xf1f8, 0xb1d0, { 14, 14, 8, 8, 8, 8, 4}},
- {m68000_base_device_ops::m68k_op_cmpa_32_pi, 0xf1f8, 0xb1d8, { 14, 14, 8, 8, 8, 8, 4}},
- {m68000_base_device_ops::m68k_op_cmpa_32_pd, 0xf1f8, 0xb1e0, { 16, 16, 9, 9, 9, 9, 4}},
- {m68000_base_device_ops::m68k_op_cmpa_32_di, 0xf1f8, 0xb1e8, { 18, 18, 9, 9, 9, 9, 4}},
- {m68000_base_device_ops::m68k_op_cmpa_32_ix, 0xf1f8, 0xb1f0, { 20, 20, 11, 11, 11, 11, 4}},
- {m68000_base_device_ops::m68k_op_and_8_er_d, 0xf1f8, 0xc000, { 4, 4, 2, 2, 2, 2, 2}},
- {m68000_base_device_ops::m68k_op_and_8_er_ai, 0xf1f8, 0xc010, { 8, 8, 6, 6, 6, 6, 2}},
- {m68000_base_device_ops::m68k_op_and_8_er_pi, 0xf1f8, 0xc018, { 8, 8, 6, 6, 6, 6, 2}},
- {m68000_base_device_ops::m68k_op_and_8_er_pd, 0xf1f8, 0xc020, { 10, 10, 7, 7, 7, 7, 2}},
- {m68000_base_device_ops::m68k_op_and_8_er_di, 0xf1f8, 0xc028, { 12, 12, 7, 7, 7, 7, 2}},
- {m68000_base_device_ops::m68k_op_and_8_er_ix, 0xf1f8, 0xc030, { 14, 14, 9, 9, 9, 9, 2}},
- {m68000_base_device_ops::m68k_op_and_16_er_d, 0xf1f8, 0xc040, { 4, 4, 2, 2, 2, 2, 2}},
- {m68000_base_device_ops::m68k_op_and_16_er_ai, 0xf1f8, 0xc050, { 8, 8, 6, 6, 6, 6, 2}},
- {m68000_base_device_ops::m68k_op_and_16_er_pi, 0xf1f8, 0xc058, { 8, 8, 6, 6, 6, 6, 2}},
- {m68000_base_device_ops::m68k_op_and_16_er_pd, 0xf1f8, 0xc060, { 10, 10, 7, 7, 7, 7, 2}},
- {m68000_base_device_ops::m68k_op_and_16_er_di, 0xf1f8, 0xc068, { 12, 12, 7, 7, 7, 7, 2}},
- {m68000_base_device_ops::m68k_op_and_16_er_ix, 0xf1f8, 0xc070, { 14, 14, 9, 9, 9, 9, 2}},
- {m68000_base_device_ops::m68k_op_and_32_er_d, 0xf1f8, 0xc080, { 8, 6, 2, 2, 2, 2, 2}},
- {m68000_base_device_ops::m68k_op_and_32_er_ai, 0xf1f8, 0xc090, { 14, 14, 6, 6, 6, 6, 2}},
- {m68000_base_device_ops::m68k_op_and_32_er_pi, 0xf1f8, 0xc098, { 14, 14, 6, 6, 6, 6, 2}},
- {m68000_base_device_ops::m68k_op_and_32_er_pd, 0xf1f8, 0xc0a0, { 16, 16, 7, 7, 7, 7, 2}},
- {m68000_base_device_ops::m68k_op_and_32_er_di, 0xf1f8, 0xc0a8, { 18, 18, 7, 7, 7, 7, 2}},
- {m68000_base_device_ops::m68k_op_and_32_er_ix, 0xf1f8, 0xc0b0, { 20, 20, 9, 9, 9, 9, 2}},
- {m68000_base_device_ops::m68k_op_mulu_16_d, 0xf1f8, 0xc0c0, { 54, 30, 27, 27, 27, 27, 27}},
- {m68000_base_device_ops::m68k_op_mulu_16_ai, 0xf1f8, 0xc0d0, { 58, 34, 31, 31, 31, 31, 27}},
- {m68000_base_device_ops::m68k_op_mulu_16_pi, 0xf1f8, 0xc0d8, { 58, 34, 31, 31, 31, 31, 27}},
- {m68000_base_device_ops::m68k_op_mulu_16_pd, 0xf1f8, 0xc0e0, { 60, 36, 32, 32, 32, 32, 27}},
- {m68000_base_device_ops::m68k_op_mulu_16_di, 0xf1f8, 0xc0e8, { 62, 38, 32, 32, 32, 32, 27}},
- {m68000_base_device_ops::m68k_op_mulu_16_ix, 0xf1f8, 0xc0f0, { 64, 40, 34, 34, 34, 34, 27}},
- {m68000_base_device_ops::m68k_op_abcd_8_rr, 0xf1f8, 0xc100, { 6, 6, 4, 4, 4, 4, 4}},
- {m68000_base_device_ops::m68k_op_abcd_8_mm, 0xf1f8, 0xc108, { 18, 18, 16, 16, 16, 16, 16}},
- {m68000_base_device_ops::m68k_op_and_8_re_ai, 0xf1f8, 0xc110, { 12, 12, 8, 8, 8, 8, 4}},
- {m68000_base_device_ops::m68k_op_and_8_re_pi, 0xf1f8, 0xc118, { 12, 12, 8, 8, 8, 8, 4}},
- {m68000_base_device_ops::m68k_op_and_8_re_pd, 0xf1f8, 0xc120, { 14, 14, 9, 9, 9, 9, 4}},
- {m68000_base_device_ops::m68k_op_and_8_re_di, 0xf1f8, 0xc128, { 16, 16, 9, 9, 9, 9, 4}},
- {m68000_base_device_ops::m68k_op_and_8_re_ix, 0xf1f8, 0xc130, { 18, 18, 11, 11, 11, 11, 4}},
- {m68000_base_device_ops::m68k_op_exg_32_dd, 0xf1f8, 0xc140, { 6, 6, 2, 2, 2, 2, 2}},
- {m68000_base_device_ops::m68k_op_exg_32_aa, 0xf1f8, 0xc148, { 6, 6, 2, 2, 2, 2, 2}},
- {m68000_base_device_ops::m68k_op_and_16_re_ai, 0xf1f8, 0xc150, { 12, 12, 8, 8, 8, 8, 4}},
- {m68000_base_device_ops::m68k_op_and_16_re_pi, 0xf1f8, 0xc158, { 12, 12, 8, 8, 8, 8, 4}},
- {m68000_base_device_ops::m68k_op_and_16_re_pd, 0xf1f8, 0xc160, { 14, 14, 9, 9, 9, 9, 4}},
- {m68000_base_device_ops::m68k_op_and_16_re_di, 0xf1f8, 0xc168, { 16, 16, 9, 9, 9, 9, 4}},
- {m68000_base_device_ops::m68k_op_and_16_re_ix, 0xf1f8, 0xc170, { 18, 18, 11, 11, 11, 11, 4}},
- {m68000_base_device_ops::m68k_op_exg_32_da, 0xf1f8, 0xc188, { 6, 6, 2, 2, 2, 2, 2}},
- {m68000_base_device_ops::m68k_op_and_32_re_ai, 0xf1f8, 0xc190, { 20, 20, 8, 8, 8, 8, 4}},
- {m68000_base_device_ops::m68k_op_and_32_re_pi, 0xf1f8, 0xc198, { 20, 20, 8, 8, 8, 8, 4}},
- {m68000_base_device_ops::m68k_op_and_32_re_pd, 0xf1f8, 0xc1a0, { 22, 22, 9, 9, 9, 9, 4}},
- {m68000_base_device_ops::m68k_op_and_32_re_di, 0xf1f8, 0xc1a8, { 24, 24, 9, 9, 9, 9, 4}},
- {m68000_base_device_ops::m68k_op_and_32_re_ix, 0xf1f8, 0xc1b0, { 26, 26, 11, 11, 11, 11, 4}},
- {m68000_base_device_ops::m68k_op_muls_16_d, 0xf1f8, 0xc1c0, { 54, 32, 27, 27, 27, 27, 27}},
- {m68000_base_device_ops::m68k_op_muls_16_ai, 0xf1f8, 0xc1d0, { 58, 36, 31, 31, 31, 31, 27}},
- {m68000_base_device_ops::m68k_op_muls_16_pi, 0xf1f8, 0xc1d8, { 58, 36, 31, 31, 31, 31, 27}},
- {m68000_base_device_ops::m68k_op_muls_16_pd, 0xf1f8, 0xc1e0, { 60, 38, 32, 32, 32, 32, 27}},
- {m68000_base_device_ops::m68k_op_muls_16_di, 0xf1f8, 0xc1e8, { 62, 40, 32, 32, 32, 32, 27}},
- {m68000_base_device_ops::m68k_op_muls_16_ix, 0xf1f8, 0xc1f0, { 64, 42, 34, 34, 34, 34, 27}},
- {m68000_base_device_ops::m68k_op_add_8_er_d, 0xf1f8, 0xd000, { 4, 4, 2, 2, 2, 2, 2}},
- {m68000_base_device_ops::m68k_op_add_8_er_ai, 0xf1f8, 0xd010, { 8, 8, 6, 6, 6, 6, 2}},
- {m68000_base_device_ops::m68k_op_add_8_er_pi, 0xf1f8, 0xd018, { 8, 8, 6, 6, 6, 6, 2}},
- {m68000_base_device_ops::m68k_op_add_8_er_pd, 0xf1f8, 0xd020, { 10, 10, 7, 7, 7, 7, 2}},
- {m68000_base_device_ops::m68k_op_add_8_er_di, 0xf1f8, 0xd028, { 12, 12, 7, 7, 7, 7, 2}},
- {m68000_base_device_ops::m68k_op_add_8_er_ix, 0xf1f8, 0xd030, { 14, 14, 9, 9, 9, 9, 2}},
- {m68000_base_device_ops::m68k_op_add_16_er_d, 0xf1f8, 0xd040, { 4, 4, 2, 2, 2, 2, 2}},
- {m68000_base_device_ops::m68k_op_add_16_er_a, 0xf1f8, 0xd048, { 4, 4, 2, 2, 2, 2, 2}},
- {m68000_base_device_ops::m68k_op_add_16_er_ai, 0xf1f8, 0xd050, { 8, 8, 6, 6, 6, 6, 2}},
- {m68000_base_device_ops::m68k_op_add_16_er_pi, 0xf1f8, 0xd058, { 8, 8, 6, 6, 6, 6, 2}},
- {m68000_base_device_ops::m68k_op_add_16_er_pd, 0xf1f8, 0xd060, { 10, 10, 7, 7, 7, 7, 2}},
- {m68000_base_device_ops::m68k_op_add_16_er_di, 0xf1f8, 0xd068, { 12, 12, 7, 7, 7, 7, 2}},
- {m68000_base_device_ops::m68k_op_add_16_er_ix, 0xf1f8, 0xd070, { 14, 14, 9, 9, 9, 9, 2}},
- {m68000_base_device_ops::m68k_op_add_32_er_d, 0xf1f8, 0xd080, { 8, 6, 2, 2, 2, 2, 2}},
- {m68000_base_device_ops::m68k_op_add_32_er_a, 0xf1f8, 0xd088, { 8, 6, 2, 2, 2, 2, 2}},
- {m68000_base_device_ops::m68k_op_add_32_er_ai, 0xf1f8, 0xd090, { 14, 14, 6, 6, 6, 6, 2}},
- {m68000_base_device_ops::m68k_op_add_32_er_pi, 0xf1f8, 0xd098, { 14, 14, 6, 6, 6, 6, 2}},
- {m68000_base_device_ops::m68k_op_add_32_er_pd, 0xf1f8, 0xd0a0, { 16, 16, 7, 7, 7, 7, 2}},
- {m68000_base_device_ops::m68k_op_add_32_er_di, 0xf1f8, 0xd0a8, { 18, 18, 7, 7, 7, 7, 2}},
- {m68000_base_device_ops::m68k_op_add_32_er_ix, 0xf1f8, 0xd0b0, { 20, 20, 9, 9, 9, 9, 2}},
- {m68000_base_device_ops::m68k_op_adda_16_d, 0xf1f8, 0xd0c0, { 8, 8, 2, 2, 2, 2, 2}},
- {m68000_base_device_ops::m68k_op_adda_16_a, 0xf1f8, 0xd0c8, { 8, 8, 2, 2, 2, 2, 2}},
- {m68000_base_device_ops::m68k_op_adda_16_ai, 0xf1f8, 0xd0d0, { 12, 12, 6, 6, 6, 6, 2}},
- {m68000_base_device_ops::m68k_op_adda_16_pi, 0xf1f8, 0xd0d8, { 12, 12, 6, 6, 6, 6, 2}},
- {m68000_base_device_ops::m68k_op_adda_16_pd, 0xf1f8, 0xd0e0, { 14, 14, 7, 7, 7, 7, 2}},
- {m68000_base_device_ops::m68k_op_adda_16_di, 0xf1f8, 0xd0e8, { 16, 16, 7, 7, 7, 7, 2}},
- {m68000_base_device_ops::m68k_op_adda_16_ix, 0xf1f8, 0xd0f0, { 18, 18, 9, 9, 9, 9, 2}},
- {m68000_base_device_ops::m68k_op_addx_8_rr, 0xf1f8, 0xd100, { 4, 4, 2, 2, 2, 2, 2}},
- {m68000_base_device_ops::m68k_op_addx_8_mm, 0xf1f8, 0xd108, { 18, 18, 12, 12, 12, 12, 12}},
- {m68000_base_device_ops::m68k_op_add_8_re_ai, 0xf1f8, 0xd110, { 12, 12, 8, 8, 8, 8, 4}},
- {m68000_base_device_ops::m68k_op_add_8_re_pi, 0xf1f8, 0xd118, { 12, 12, 8, 8, 8, 8, 4}},
- {m68000_base_device_ops::m68k_op_add_8_re_pd, 0xf1f8, 0xd120, { 14, 14, 9, 9, 9, 9, 4}},
- {m68000_base_device_ops::m68k_op_add_8_re_di, 0xf1f8, 0xd128, { 16, 16, 9, 9, 9, 9, 4}},
- {m68000_base_device_ops::m68k_op_add_8_re_ix, 0xf1f8, 0xd130, { 18, 18, 11, 11, 11, 11, 4}},
- {m68000_base_device_ops::m68k_op_addx_16_rr, 0xf1f8, 0xd140, { 4, 4, 2, 2, 2, 2, 2}},
- {m68000_base_device_ops::m68k_op_addx_16_mm, 0xf1f8, 0xd148, { 18, 18, 12, 12, 12, 12, 12}},
- {m68000_base_device_ops::m68k_op_add_16_re_ai, 0xf1f8, 0xd150, { 12, 12, 8, 8, 8, 8, 4}},
- {m68000_base_device_ops::m68k_op_add_16_re_pi, 0xf1f8, 0xd158, { 12, 12, 8, 8, 8, 8, 4}},
- {m68000_base_device_ops::m68k_op_add_16_re_pd, 0xf1f8, 0xd160, { 14, 14, 9, 9, 9, 9, 4}},
- {m68000_base_device_ops::m68k_op_add_16_re_di, 0xf1f8, 0xd168, { 16, 16, 9, 9, 9, 9, 4}},
- {m68000_base_device_ops::m68k_op_add_16_re_ix, 0xf1f8, 0xd170, { 18, 18, 11, 11, 11, 11, 4}},
- {m68000_base_device_ops::m68k_op_addx_32_rr, 0xf1f8, 0xd180, { 8, 6, 2, 2, 2, 2, 2}},
- {m68000_base_device_ops::m68k_op_addx_32_mm, 0xf1f8, 0xd188, { 30, 30, 12, 12, 12, 12, 12}},
- {m68000_base_device_ops::m68k_op_add_32_re_ai, 0xf1f8, 0xd190, { 20, 20, 8, 8, 8, 8, 4}},
- {m68000_base_device_ops::m68k_op_add_32_re_pi, 0xf1f8, 0xd198, { 20, 20, 8, 8, 8, 8, 4}},
- {m68000_base_device_ops::m68k_op_add_32_re_pd, 0xf1f8, 0xd1a0, { 22, 22, 9, 9, 9, 9, 4}},
- {m68000_base_device_ops::m68k_op_add_32_re_di, 0xf1f8, 0xd1a8, { 24, 24, 9, 9, 9, 9, 4}},
- {m68000_base_device_ops::m68k_op_add_32_re_ix, 0xf1f8, 0xd1b0, { 26, 26, 11, 11, 11, 11, 4}},
- {m68000_base_device_ops::m68k_op_adda_32_d, 0xf1f8, 0xd1c0, { 8, 6, 2, 2, 2, 2, 2}},
- {m68000_base_device_ops::m68k_op_adda_32_a, 0xf1f8, 0xd1c8, { 8, 6, 2, 2, 2, 2, 2}},
- {m68000_base_device_ops::m68k_op_adda_32_ai, 0xf1f8, 0xd1d0, { 14, 14, 6, 6, 6, 6, 2}},
- {m68000_base_device_ops::m68k_op_adda_32_pi, 0xf1f8, 0xd1d8, { 14, 14, 6, 6, 6, 6, 2}},
- {m68000_base_device_ops::m68k_op_adda_32_pd, 0xf1f8, 0xd1e0, { 16, 16, 7, 7, 7, 7, 2}},
- {m68000_base_device_ops::m68k_op_adda_32_di, 0xf1f8, 0xd1e8, { 18, 18, 7, 7, 7, 7, 2}},
- {m68000_base_device_ops::m68k_op_adda_32_ix, 0xf1f8, 0xd1f0, { 20, 20, 9, 9, 9, 9, 2}},
- {m68000_base_device_ops::m68k_op_asr_8_s, 0xf1f8, 0xe000, { 6, 6, 6, 6, 6, 6, 6}},
- {m68000_base_device_ops::m68k_op_lsr_8_s, 0xf1f8, 0xe008, { 6, 6, 4, 4, 4, 4, 4}},
- {m68000_base_device_ops::m68k_op_roxr_8_s, 0xf1f8, 0xe010, { 6, 6, 12, 12, 12, 12, 12}},
- {m68000_base_device_ops::m68k_op_ror_8_s, 0xf1f8, 0xe018, { 6, 6, 8, 8, 8, 8, 8}},
- {m68000_base_device_ops::m68k_op_asr_8_r, 0xf1f8, 0xe020, { 6, 6, 6, 6, 6, 6, 6}},
- {m68000_base_device_ops::m68k_op_lsr_8_r, 0xf1f8, 0xe028, { 6, 6, 6, 6, 6, 6, 6}},
- {m68000_base_device_ops::m68k_op_roxr_8_r, 0xf1f8, 0xe030, { 6, 6, 12, 12, 12, 12, 12}},
- {m68000_base_device_ops::m68k_op_ror_8_r, 0xf1f8, 0xe038, { 6, 6, 8, 8, 8, 8, 8}},
- {m68000_base_device_ops::m68k_op_asr_16_s, 0xf1f8, 0xe040, { 6, 6, 6, 6, 6, 6, 6}},
- {m68000_base_device_ops::m68k_op_lsr_16_s, 0xf1f8, 0xe048, { 6, 6, 4, 4, 4, 4, 4}},
- {m68000_base_device_ops::m68k_op_roxr_16_s, 0xf1f8, 0xe050, { 6, 6, 12, 12, 12, 12, 12}},
- {m68000_base_device_ops::m68k_op_ror_16_s, 0xf1f8, 0xe058, { 6, 6, 8, 8, 8, 8, 8}},
- {m68000_base_device_ops::m68k_op_asr_16_r, 0xf1f8, 0xe060, { 6, 6, 6, 6, 6, 6, 6}},
- {m68000_base_device_ops::m68k_op_lsr_16_r, 0xf1f8, 0xe068, { 6, 6, 6, 6, 6, 6, 6}},
- {m68000_base_device_ops::m68k_op_roxr_16_r, 0xf1f8, 0xe070, { 6, 6, 12, 12, 12, 12, 12}},
- {m68000_base_device_ops::m68k_op_ror_16_r, 0xf1f8, 0xe078, { 6, 6, 8, 8, 8, 8, 8}},
- {m68000_base_device_ops::m68k_op_asr_32_s, 0xf1f8, 0xe080, { 8, 8, 6, 6, 6, 6, 6}},
- {m68000_base_device_ops::m68k_op_lsr_32_s, 0xf1f8, 0xe088, { 8, 8, 4, 4, 4, 4, 4}},
- {m68000_base_device_ops::m68k_op_roxr_32_s, 0xf1f8, 0xe090, { 8, 8, 12, 12, 12, 12, 12}},
- {m68000_base_device_ops::m68k_op_ror_32_s, 0xf1f8, 0xe098, { 8, 8, 8, 8, 8, 8, 8}},
- {m68000_base_device_ops::m68k_op_asr_32_r, 0xf1f8, 0xe0a0, { 8, 8, 6, 6, 6, 6, 6}},
- {m68000_base_device_ops::m68k_op_lsr_32_r, 0xf1f8, 0xe0a8, { 8, 8, 6, 6, 6, 6, 6}},
- {m68000_base_device_ops::m68k_op_roxr_32_r, 0xf1f8, 0xe0b0, { 8, 8, 12, 12, 12, 12, 12}},
- {m68000_base_device_ops::m68k_op_ror_32_r, 0xf1f8, 0xe0b8, { 8, 8, 8, 8, 8, 8, 8}},
- {m68000_base_device_ops::m68k_op_asl_8_s, 0xf1f8, 0xe100, { 6, 6, 8, 8, 8, 8, 8}},
- {m68000_base_device_ops::m68k_op_lsl_8_s, 0xf1f8, 0xe108, { 6, 6, 4, 4, 4, 4, 4}},
- {m68000_base_device_ops::m68k_op_roxl_8_s, 0xf1f8, 0xe110, { 6, 6, 12, 12, 12, 12, 12}},
- {m68000_base_device_ops::m68k_op_rol_8_s, 0xf1f8, 0xe118, { 6, 6, 8, 8, 8, 8, 8}},
- {m68000_base_device_ops::m68k_op_asl_8_r, 0xf1f8, 0xe120, { 6, 6, 8, 8, 8, 8, 8}},
- {m68000_base_device_ops::m68k_op_lsl_8_r, 0xf1f8, 0xe128, { 6, 6, 6, 6, 6, 6, 6}},
- {m68000_base_device_ops::m68k_op_roxl_8_r, 0xf1f8, 0xe130, { 6, 6, 12, 12, 12, 12, 12}},
- {m68000_base_device_ops::m68k_op_rol_8_r, 0xf1f8, 0xe138, { 6, 6, 8, 8, 8, 8, 8}},
- {m68000_base_device_ops::m68k_op_asl_16_s, 0xf1f8, 0xe140, { 6, 6, 8, 8, 8, 8, 8}},
- {m68000_base_device_ops::m68k_op_lsl_16_s, 0xf1f8, 0xe148, { 6, 6, 4, 4, 4, 4, 4}},
- {m68000_base_device_ops::m68k_op_roxl_16_s, 0xf1f8, 0xe150, { 6, 6, 12, 12, 12, 12, 12}},
- {m68000_base_device_ops::m68k_op_rol_16_s, 0xf1f8, 0xe158, { 6, 6, 8, 8, 8, 8, 8}},
- {m68000_base_device_ops::m68k_op_asl_16_r, 0xf1f8, 0xe160, { 6, 6, 8, 8, 8, 8, 8}},
- {m68000_base_device_ops::m68k_op_lsl_16_r, 0xf1f8, 0xe168, { 6, 6, 6, 6, 6, 6, 6}},
- {m68000_base_device_ops::m68k_op_roxl_16_r, 0xf1f8, 0xe170, { 6, 6, 12, 12, 12, 12, 12}},
- {m68000_base_device_ops::m68k_op_rol_16_r, 0xf1f8, 0xe178, { 6, 6, 8, 8, 8, 8, 8}},
- {m68000_base_device_ops::m68k_op_asl_32_s, 0xf1f8, 0xe180, { 8, 8, 8, 8, 8, 8, 8}},
- {m68000_base_device_ops::m68k_op_lsl_32_s, 0xf1f8, 0xe188, { 8, 8, 4, 4, 4, 4, 4}},
- {m68000_base_device_ops::m68k_op_roxl_32_s, 0xf1f8, 0xe190, { 8, 8, 12, 12, 12, 12, 12}},
- {m68000_base_device_ops::m68k_op_rol_32_s, 0xf1f8, 0xe198, { 8, 8, 8, 8, 8, 8, 8}},
- {m68000_base_device_ops::m68k_op_asl_32_r, 0xf1f8, 0xe1a0, { 8, 8, 8, 8, 8, 8, 8}},
- {m68000_base_device_ops::m68k_op_lsl_32_r, 0xf1f8, 0xe1a8, { 8, 8, 6, 6, 6, 6, 6}},
- {m68000_base_device_ops::m68k_op_roxl_32_r, 0xf1f8, 0xe1b0, { 8, 8, 12, 12, 12, 12, 12}},
- {m68000_base_device_ops::m68k_op_rol_32_r, 0xf1f8, 0xe1b8, { 8, 8, 8, 8, 8, 8, 8}},
- {m68000_base_device_ops::m68k_op_cpdbcc_32, 0xf1f8, 0xf048, {255, 255, 4, 4, 255, 255, 255}},
- {m68000_base_device_ops::m68k_op_cptrapcc_32, 0xf1f8, 0xf078, {255, 255, 4, 4, 255, 255, 255}},
- {m68000_base_device_ops::m68k_op_ptest_32, 0xffd8, 0xf548, {255, 255, 255, 255, 8, 255, 255}},
- {m68000_base_device_ops::m68k_op_rtm_32, 0xfff0, 0x06c0, {255, 255, 19, 19, 19, 19, 19}},
- {m68000_base_device_ops::m68k_op_trap, 0xfff0, 0x4e40, { 4, 4, 4, 4, 4, 4, 4}},
- {m68000_base_device_ops::m68k_op_btst_8_r_pi7, 0xf1ff, 0x011f, { 8, 8, 8, 8, 8, 8, 4}},
- {m68000_base_device_ops::m68k_op_btst_8_r_pd7, 0xf1ff, 0x0127, { 10, 10, 9, 9, 9, 9, 4}},
- {m68000_base_device_ops::m68k_op_btst_8_r_aw, 0xf1ff, 0x0138, { 12, 12, 8, 8, 8, 8, 4}},
- {m68000_base_device_ops::m68k_op_btst_8_r_al, 0xf1ff, 0x0139, { 16, 16, 8, 8, 8, 8, 4}},
- {m68000_base_device_ops::m68k_op_btst_8_r_pcdi, 0xf1ff, 0x013a, { 12, 12, 9, 9, 9, 9, 4}},
- {m68000_base_device_ops::m68k_op_btst_8_r_pcix, 0xf1ff, 0x013b, { 14, 14, 11, 11, 11, 11, 4}},
- {m68000_base_device_ops::m68k_op_btst_8_r_i, 0xf1ff, 0x013c, { 8, 8, 6, 6, 6, 6, 4}},
- {m68000_base_device_ops::m68k_op_bchg_8_r_pi7, 0xf1ff, 0x015f, { 12, 12, 8, 8, 8, 8, 4}},
- {m68000_base_device_ops::m68k_op_bchg_8_r_pd7, 0xf1ff, 0x0167, { 14, 14, 9, 9, 9, 9, 4}},
- {m68000_base_device_ops::m68k_op_bchg_8_r_aw, 0xf1ff, 0x0178, { 16, 16, 8, 8, 8, 8, 4}},
- {m68000_base_device_ops::m68k_op_bchg_8_r_al, 0xf1ff, 0x0179, { 20, 20, 8, 8, 8, 8, 4}},
- {m68000_base_device_ops::m68k_op_bclr_8_r_pi7, 0xf1ff, 0x019f, { 12, 14, 8, 8, 8, 8, 4}},
- {m68000_base_device_ops::m68k_op_bclr_8_r_pd7, 0xf1ff, 0x01a7, { 14, 16, 9, 9, 9, 9, 4}},
- {m68000_base_device_ops::m68k_op_bclr_8_r_aw, 0xf1ff, 0x01b8, { 16, 18, 8, 8, 8, 8, 4}},
- {m68000_base_device_ops::m68k_op_bclr_8_r_al, 0xf1ff, 0x01b9, { 20, 22, 8, 8, 8, 8, 4}},
- {m68000_base_device_ops::m68k_op_bset_8_r_pi7, 0xf1ff, 0x01df, { 12, 12, 8, 8, 8, 8, 4}},
- {m68000_base_device_ops::m68k_op_bset_8_r_pd7, 0xf1ff, 0x01e7, { 14, 14, 9, 9, 9, 9, 4}},
- {m68000_base_device_ops::m68k_op_bset_8_r_aw, 0xf1ff, 0x01f8, { 16, 16, 8, 8, 8, 8, 4}},
- {m68000_base_device_ops::m68k_op_bset_8_r_al, 0xf1ff, 0x01f9, { 20, 20, 8, 8, 8, 8, 4}},
- {m68000_base_device_ops::m68k_op_move_8_d_pi7, 0xf1ff, 0x101f, { 8, 8, 6, 6, 6, 6, 2}},
- {m68000_base_device_ops::m68k_op_move_8_d_pd7, 0xf1ff, 0x1027, { 10, 10, 7, 7, 7, 7, 2}},
- {m68000_base_device_ops::m68k_op_move_8_d_aw, 0xf1ff, 0x1038, { 12, 12, 6, 6, 6, 6, 2}},
- {m68000_base_device_ops::m68k_op_move_8_d_al, 0xf1ff, 0x1039, { 16, 16, 6, 6, 6, 6, 2}},
- {m68000_base_device_ops::m68k_op_move_8_d_pcdi, 0xf1ff, 0x103a, { 12, 12, 7, 7, 7, 7, 2}},
- {m68000_base_device_ops::m68k_op_move_8_d_pcix, 0xf1ff, 0x103b, { 14, 14, 9, 9, 9, 9, 2}},
- {m68000_base_device_ops::m68k_op_move_8_d_i, 0xf1ff, 0x103c, { 8, 8, 4, 4, 4, 4, 2}},
- {m68000_base_device_ops::m68k_op_move_8_ai_pi7, 0xf1ff, 0x109f, { 12, 12, 8, 8, 8, 8, 4}},
- {m68000_base_device_ops::m68k_op_move_8_ai_pd7, 0xf1ff, 0x10a7, { 14, 14, 9, 9, 9, 9, 4}},
- {m68000_base_device_ops::m68k_op_move_8_ai_aw, 0xf1ff, 0x10b8, { 16, 16, 8, 8, 8, 8, 4}},
- {m68000_base_device_ops::m68k_op_move_8_ai_al, 0xf1ff, 0x10b9, { 20, 20, 8, 8, 8, 8, 4}},
- {m68000_base_device_ops::m68k_op_move_8_ai_pcdi, 0xf1ff, 0x10ba, { 16, 16, 9, 9, 9, 9, 4}},
- {m68000_base_device_ops::m68k_op_move_8_ai_pcix, 0xf1ff, 0x10bb, { 18, 18, 11, 11, 11, 11, 4}},
- {m68000_base_device_ops::m68k_op_move_8_ai_i, 0xf1ff, 0x10bc, { 12, 12, 6, 6, 6, 6, 4}},
- {m68000_base_device_ops::m68k_op_move_8_pi_pi7, 0xf1ff, 0x10df, { 12, 12, 8, 8, 8, 8, 4}},
- {m68000_base_device_ops::m68k_op_move_8_pi_pd7, 0xf1ff, 0x10e7, { 14, 14, 9, 9, 9, 9, 4}},
- {m68000_base_device_ops::m68k_op_move_8_pi_aw, 0xf1ff, 0x10f8, { 16, 16, 8, 8, 8, 8, 4}},
- {m68000_base_device_ops::m68k_op_move_8_pi_al, 0xf1ff, 0x10f9, { 20, 20, 8, 8, 8, 8, 4}},
- {m68000_base_device_ops::m68k_op_move_8_pi_pcdi, 0xf1ff, 0x10fa, { 16, 16, 9, 9, 9, 9, 4}},
- {m68000_base_device_ops::m68k_op_move_8_pi_pcix, 0xf1ff, 0x10fb, { 18, 18, 11, 11, 11, 11, 4}},
- {m68000_base_device_ops::m68k_op_move_8_pi_i, 0xf1ff, 0x10fc, { 12, 12, 6, 6, 6, 6, 4}},
- {m68000_base_device_ops::m68k_op_move_8_pd_pi7, 0xf1ff, 0x111f, { 12, 12, 9, 9, 9, 9, 5}},
- {m68000_base_device_ops::m68k_op_move_8_pd_pd7, 0xf1ff, 0x1127, { 14, 14, 10, 10, 10, 10, 5}},
- {m68000_base_device_ops::m68k_op_move_8_pd_aw, 0xf1ff, 0x1138, { 16, 16, 9, 9, 9, 9, 5}},
- {m68000_base_device_ops::m68k_op_move_8_pd_al, 0xf1ff, 0x1139, { 20, 20, 9, 9, 9, 9, 5}},
- {m68000_base_device_ops::m68k_op_move_8_pd_pcdi, 0xf1ff, 0x113a, { 16, 16, 10, 10, 10, 10, 5}},
- {m68000_base_device_ops::m68k_op_move_8_pd_pcix, 0xf1ff, 0x113b, { 18, 18, 12, 12, 12, 12, 5}},
- {m68000_base_device_ops::m68k_op_move_8_pd_i, 0xf1ff, 0x113c, { 12, 12, 7, 7, 7, 7, 5}},
- {m68000_base_device_ops::m68k_op_move_8_di_pi7, 0xf1ff, 0x115f, { 16, 16, 9, 9, 9, 9, 5}},
- {m68000_base_device_ops::m68k_op_move_8_di_pd7, 0xf1ff, 0x1167, { 18, 18, 10, 10, 10, 10, 5}},
- {m68000_base_device_ops::m68k_op_move_8_di_aw, 0xf1ff, 0x1178, { 20, 20, 9, 9, 9, 9, 5}},
- {m68000_base_device_ops::m68k_op_move_8_di_al, 0xf1ff, 0x1179, { 24, 24, 9, 9, 9, 9, 5}},
- {m68000_base_device_ops::m68k_op_move_8_di_pcdi, 0xf1ff, 0x117a, { 20, 20, 10, 10, 10, 10, 5}},
- {m68000_base_device_ops::m68k_op_move_8_di_pcix, 0xf1ff, 0x117b, { 22, 22, 12, 12, 12, 12, 5}},
- {m68000_base_device_ops::m68k_op_move_8_di_i, 0xf1ff, 0x117c, { 16, 16, 7, 7, 7, 7, 5}},
- {m68000_base_device_ops::m68k_op_move_8_ix_pi7, 0xf1ff, 0x119f, { 18, 18, 11, 11, 11, 11, 7}},
- {m68000_base_device_ops::m68k_op_move_8_ix_pd7, 0xf1ff, 0x11a7, { 20, 20, 12, 12, 12, 12, 7}},
- {m68000_base_device_ops::m68k_op_move_8_ix_aw, 0xf1ff, 0x11b8, { 22, 22, 11, 11, 11, 11, 7}},
- {m68000_base_device_ops::m68k_op_move_8_ix_al, 0xf1ff, 0x11b9, { 26, 26, 11, 11, 11, 11, 7}},
- {m68000_base_device_ops::m68k_op_move_8_ix_pcdi, 0xf1ff, 0x11ba, { 22, 22, 12, 12, 12, 12, 7}},
- {m68000_base_device_ops::m68k_op_move_8_ix_pcix, 0xf1ff, 0x11bb, { 24, 24, 14, 14, 14, 14, 7}},
- {m68000_base_device_ops::m68k_op_move_8_ix_i, 0xf1ff, 0x11bc, { 18, 18, 9, 9, 9, 9, 7}},
- {m68000_base_device_ops::m68k_op_move_32_d_aw, 0xf1ff, 0x2038, { 16, 16, 6, 6, 6, 6, 2}},
- {m68000_base_device_ops::m68k_op_move_32_d_al, 0xf1ff, 0x2039, { 20, 20, 6, 6, 6, 6, 2}},
- {m68000_base_device_ops::m68k_op_move_32_d_pcdi, 0xf1ff, 0x203a, { 16, 16, 7, 7, 7, 7, 2}},
- {m68000_base_device_ops::m68k_op_move_32_d_pcix, 0xf1ff, 0x203b, { 18, 18, 9, 9, 9, 9, 2}},
- {m68000_base_device_ops::m68k_op_move_32_d_i, 0xf1ff, 0x203c, { 12, 12, 6, 6, 6, 6, 2}},
- {m68000_base_device_ops::m68k_op_movea_32_aw, 0xf1ff, 0x2078, { 16, 16, 6, 6, 6, 6, 2}},
- {m68000_base_device_ops::m68k_op_movea_32_al, 0xf1ff, 0x2079, { 20, 20, 6, 6, 6, 6, 2}},
- {m68000_base_device_ops::m68k_op_movea_32_pcdi, 0xf1ff, 0x207a, { 16, 16, 7, 7, 7, 7, 2}},
- {m68000_base_device_ops::m68k_op_movea_32_pcix, 0xf1ff, 0x207b, { 18, 18, 9, 9, 9, 9, 2}},
- {m68000_base_device_ops::m68k_op_movea_32_i, 0xf1ff, 0x207c, { 12, 12, 6, 6, 6, 6, 2}},
- {m68000_base_device_ops::m68k_op_move_32_ai_aw, 0xf1ff, 0x20b8, { 24, 24, 8, 8, 8, 8, 4}},
- {m68000_base_device_ops::m68k_op_move_32_ai_al, 0xf1ff, 0x20b9, { 28, 28, 8, 8, 8, 8, 4}},
- {m68000_base_device_ops::m68k_op_move_32_ai_pcdi, 0xf1ff, 0x20ba, { 24, 24, 9, 9, 9, 9, 4}},
- {m68000_base_device_ops::m68k_op_move_32_ai_pcix, 0xf1ff, 0x20bb, { 26, 26, 11, 11, 11, 11, 4}},
- {m68000_base_device_ops::m68k_op_move_32_ai_i, 0xf1ff, 0x20bc, { 20, 20, 8, 8, 8, 8, 4}},
- {m68000_base_device_ops::m68k_op_move_32_pi_aw, 0xf1ff, 0x20f8, { 24, 24, 8, 8, 8, 8, 4}},
- {m68000_base_device_ops::m68k_op_move_32_pi_al, 0xf1ff, 0x20f9, { 28, 28, 8, 8, 8, 8, 4}},
- {m68000_base_device_ops::m68k_op_move_32_pi_pcdi, 0xf1ff, 0x20fa, { 24, 24, 9, 9, 9, 9, 4}},
- {m68000_base_device_ops::m68k_op_move_32_pi_pcix, 0xf1ff, 0x20fb, { 26, 26, 11, 11, 11, 11, 4}},
- {m68000_base_device_ops::m68k_op_move_32_pi_i, 0xf1ff, 0x20fc, { 20, 20, 8, 8, 8, 8, 4}},
- {m68000_base_device_ops::m68k_op_move_32_pd_aw, 0xf1ff, 0x2138, { 24, 26, 9, 9, 9, 9, 5}},
- {m68000_base_device_ops::m68k_op_move_32_pd_al, 0xf1ff, 0x2139, { 28, 30, 9, 9, 9, 9, 5}},
- {m68000_base_device_ops::m68k_op_move_32_pd_pcdi, 0xf1ff, 0x213a, { 24, 26, 10, 10, 10, 10, 5}},
- {m68000_base_device_ops::m68k_op_move_32_pd_pcix, 0xf1ff, 0x213b, { 26, 28, 12, 12, 12, 12, 5}},
- {m68000_base_device_ops::m68k_op_move_32_pd_i, 0xf1ff, 0x213c, { 20, 22, 9, 9, 9, 9, 5}},
- {m68000_base_device_ops::m68k_op_move_32_di_aw, 0xf1ff, 0x2178, { 28, 28, 9, 9, 9, 9, 5}},
- {m68000_base_device_ops::m68k_op_move_32_di_al, 0xf1ff, 0x2179, { 32, 32, 9, 9, 9, 9, 5}},
- {m68000_base_device_ops::m68k_op_move_32_di_pcdi, 0xf1ff, 0x217a, { 28, 28, 10, 10, 10, 10, 5}},
- {m68000_base_device_ops::m68k_op_move_32_di_pcix, 0xf1ff, 0x217b, { 30, 30, 12, 12, 12, 12, 5}},
- {m68000_base_device_ops::m68k_op_move_32_di_i, 0xf1ff, 0x217c, { 24, 24, 9, 9, 9, 9, 5}},
- {m68000_base_device_ops::m68k_op_move_32_ix_aw, 0xf1ff, 0x21b8, { 30, 30, 11, 11, 11, 11, 7}},
- {m68000_base_device_ops::m68k_op_move_32_ix_al, 0xf1ff, 0x21b9, { 34, 34, 11, 11, 11, 11, 7}},
- {m68000_base_device_ops::m68k_op_move_32_ix_pcdi, 0xf1ff, 0x21ba, { 30, 30, 12, 12, 12, 12, 7}},
- {m68000_base_device_ops::m68k_op_move_32_ix_pcix, 0xf1ff, 0x21bb, { 32, 32, 14, 14, 14, 14, 7}},
- {m68000_base_device_ops::m68k_op_move_32_ix_i, 0xf1ff, 0x21bc, { 26, 26, 11, 11, 11, 11, 7}},
- {m68000_base_device_ops::m68k_op_move_16_d_aw, 0xf1ff, 0x3038, { 12, 12, 6, 6, 6, 6, 2}},
- {m68000_base_device_ops::m68k_op_move_16_d_al, 0xf1ff, 0x3039, { 16, 16, 6, 6, 6, 6, 2}},
- {m68000_base_device_ops::m68k_op_move_16_d_pcdi, 0xf1ff, 0x303a, { 12, 12, 7, 7, 7, 7, 2}},
- {m68000_base_device_ops::m68k_op_move_16_d_pcix, 0xf1ff, 0x303b, { 14, 14, 9, 9, 9, 9, 2}},
- {m68000_base_device_ops::m68k_op_move_16_d_i, 0xf1ff, 0x303c, { 8, 8, 4, 4, 4, 4, 2}},
- {m68000_base_device_ops::m68k_op_movea_16_aw, 0xf1ff, 0x3078, { 12, 12, 6, 6, 6, 6, 2}},
- {m68000_base_device_ops::m68k_op_movea_16_al, 0xf1ff, 0x3079, { 16, 16, 6, 6, 6, 6, 2}},
- {m68000_base_device_ops::m68k_op_movea_16_pcdi, 0xf1ff, 0x307a, { 12, 12, 7, 7, 7, 7, 2}},
- {m68000_base_device_ops::m68k_op_movea_16_pcix, 0xf1ff, 0x307b, { 14, 14, 9, 9, 9, 9, 2}},
- {m68000_base_device_ops::m68k_op_movea_16_i, 0xf1ff, 0x307c, { 8, 8, 4, 4, 4, 4, 2}},
- {m68000_base_device_ops::m68k_op_move_16_ai_aw, 0xf1ff, 0x30b8, { 16, 16, 8, 8, 8, 8, 4}},
- {m68000_base_device_ops::m68k_op_move_16_ai_al, 0xf1ff, 0x30b9, { 20, 20, 8, 8, 8, 8, 4}},
- {m68000_base_device_ops::m68k_op_move_16_ai_pcdi, 0xf1ff, 0x30ba, { 16, 16, 9, 9, 9, 9, 4}},
- {m68000_base_device_ops::m68k_op_move_16_ai_pcix, 0xf1ff, 0x30bb, { 18, 18, 11, 11, 11, 11, 4}},
- {m68000_base_device_ops::m68k_op_move_16_ai_i, 0xf1ff, 0x30bc, { 12, 12, 6, 6, 6, 6, 4}},
- {m68000_base_device_ops::m68k_op_move_16_pi_aw, 0xf1ff, 0x30f8, { 16, 16, 8, 8, 8, 8, 4}},
- {m68000_base_device_ops::m68k_op_move_16_pi_al, 0xf1ff, 0x30f9, { 20, 20, 8, 8, 8, 8, 4}},
- {m68000_base_device_ops::m68k_op_move_16_pi_pcdi, 0xf1ff, 0x30fa, { 16, 16, 9, 9, 9, 9, 4}},
- {m68000_base_device_ops::m68k_op_move_16_pi_pcix, 0xf1ff, 0x30fb, { 18, 18, 11, 11, 11, 11, 4}},
- {m68000_base_device_ops::m68k_op_move_16_pi_i, 0xf1ff, 0x30fc, { 12, 12, 6, 6, 6, 6, 4}},
- {m68000_base_device_ops::m68k_op_move_16_pd_aw, 0xf1ff, 0x3138, { 16, 16, 9, 9, 9, 9, 5}},
- {m68000_base_device_ops::m68k_op_move_16_pd_al, 0xf1ff, 0x3139, { 20, 20, 9, 9, 9, 9, 5}},
- {m68000_base_device_ops::m68k_op_move_16_pd_pcdi, 0xf1ff, 0x313a, { 16, 16, 10, 10, 10, 10, 5}},
- {m68000_base_device_ops::m68k_op_move_16_pd_pcix, 0xf1ff, 0x313b, { 18, 18, 12, 12, 12, 12, 5}},
- {m68000_base_device_ops::m68k_op_move_16_pd_i, 0xf1ff, 0x313c, { 12, 12, 7, 7, 7, 7, 5}},
- {m68000_base_device_ops::m68k_op_move_16_di_aw, 0xf1ff, 0x3178, { 20, 20, 9, 9, 9, 9, 5}},
- {m68000_base_device_ops::m68k_op_move_16_di_al, 0xf1ff, 0x3179, { 24, 24, 9, 9, 9, 9, 5}},
- {m68000_base_device_ops::m68k_op_move_16_di_pcdi, 0xf1ff, 0x317a, { 20, 20, 10, 10, 10, 10, 5}},
- {m68000_base_device_ops::m68k_op_move_16_di_pcix, 0xf1ff, 0x317b, { 22, 22, 12, 12, 12, 12, 5}},
- {m68000_base_device_ops::m68k_op_move_16_di_i, 0xf1ff, 0x317c, { 16, 16, 7, 7, 7, 7, 5}},
- {m68000_base_device_ops::m68k_op_move_16_ix_aw, 0xf1ff, 0x31b8, { 22, 22, 11, 11, 11, 11, 7}},
- {m68000_base_device_ops::m68k_op_move_16_ix_al, 0xf1ff, 0x31b9, { 26, 26, 11, 11, 11, 11, 7}},
- {m68000_base_device_ops::m68k_op_move_16_ix_pcdi, 0xf1ff, 0x31ba, { 22, 22, 12, 12, 12, 12, 7}},
- {m68000_base_device_ops::m68k_op_move_16_ix_pcix, 0xf1ff, 0x31bb, { 24, 24, 14, 14, 14, 14, 7}},
- {m68000_base_device_ops::m68k_op_move_16_ix_i, 0xf1ff, 0x31bc, { 18, 18, 9, 9, 9, 9, 7}},
- {m68000_base_device_ops::m68k_op_chk_32_aw, 0xf1ff, 0x4138, {255, 255, 12, 12, 12, 12, 8}},
- {m68000_base_device_ops::m68k_op_chk_32_al, 0xf1ff, 0x4139, {255, 255, 12, 12, 12, 12, 8}},
- {m68000_base_device_ops::m68k_op_chk_32_pcdi, 0xf1ff, 0x413a, {255, 255, 13, 13, 13, 13, 8}},
- {m68000_base_device_ops::m68k_op_chk_32_pcix, 0xf1ff, 0x413b, {255, 255, 15, 15, 15, 15, 8}},
- {m68000_base_device_ops::m68k_op_chk_32_i, 0xf1ff, 0x413c, {255, 255, 12, 12, 12, 12, 8}},
- {m68000_base_device_ops::m68k_op_chk_16_aw, 0xf1ff, 0x41b8, { 18, 16, 12, 12, 12, 12, 8}},
- {m68000_base_device_ops::m68k_op_chk_16_al, 0xf1ff, 0x41b9, { 22, 20, 12, 12, 12, 12, 8}},
- {m68000_base_device_ops::m68k_op_chk_16_pcdi, 0xf1ff, 0x41ba, { 18, 16, 13, 13, 13, 13, 8}},
- {m68000_base_device_ops::m68k_op_chk_16_pcix, 0xf1ff, 0x41bb, { 20, 18, 15, 15, 15, 15, 8}},
- {m68000_base_device_ops::m68k_op_chk_16_i, 0xf1ff, 0x41bc, { 14, 12, 10, 10, 10, 10, 8}},
- {m68000_base_device_ops::m68k_op_lea_32_aw, 0xf1ff, 0x41f8, { 8, 8, 6, 6, 6, 6, 2}},
- {m68000_base_device_ops::m68k_op_lea_32_al, 0xf1ff, 0x41f9, { 12, 12, 6, 6, 6, 6, 2}},
- {m68000_base_device_ops::m68k_op_lea_32_pcdi, 0xf1ff, 0x41fa, { 8, 8, 7, 7, 7, 7, 2}},
- {m68000_base_device_ops::m68k_op_lea_32_pcix, 0xf1ff, 0x41fb, { 12, 12, 9, 9, 9, 9, 2}},
- {m68000_base_device_ops::m68k_op_addq_8_pi7, 0xf1ff, 0x501f, { 12, 12, 8, 8, 8, 8, 4}},
- {m68000_base_device_ops::m68k_op_addq_8_pd7, 0xf1ff, 0x5027, { 14, 14, 9, 9, 9, 9, 4}},
- {m68000_base_device_ops::m68k_op_addq_8_aw, 0xf1ff, 0x5038, { 16, 16, 8, 8, 8, 8, 4}},
- {m68000_base_device_ops::m68k_op_addq_8_al, 0xf1ff, 0x5039, { 20, 20, 8, 8, 8, 8, 4}},
- {m68000_base_device_ops::m68k_op_addq_16_aw, 0xf1ff, 0x5078, { 16, 16, 8, 8, 8, 8, 4}},
- {m68000_base_device_ops::m68k_op_addq_16_al, 0xf1ff, 0x5079, { 20, 20, 8, 8, 8, 8, 4}},
- {m68000_base_device_ops::m68k_op_addq_32_aw, 0xf1ff, 0x50b8, { 24, 24, 8, 8, 8, 8, 4}},
- {m68000_base_device_ops::m68k_op_addq_32_al, 0xf1ff, 0x50b9, { 28, 28, 8, 8, 8, 8, 4}},
- {m68000_base_device_ops::m68k_op_subq_8_pi7, 0xf1ff, 0x511f, { 12, 12, 8, 8, 8, 8, 4}},
- {m68000_base_device_ops::m68k_op_subq_8_pd7, 0xf1ff, 0x5127, { 14, 14, 9, 9, 9, 9, 4}},
- {m68000_base_device_ops::m68k_op_subq_8_aw, 0xf1ff, 0x5138, { 16, 16, 8, 8, 8, 8, 4}},
- {m68000_base_device_ops::m68k_op_subq_8_al, 0xf1ff, 0x5139, { 20, 20, 8, 8, 8, 8, 4}},
- {m68000_base_device_ops::m68k_op_subq_16_aw, 0xf1ff, 0x5178, { 16, 16, 8, 8, 8, 8, 4}},
- {m68000_base_device_ops::m68k_op_subq_16_al, 0xf1ff, 0x5179, { 20, 20, 8, 8, 8, 8, 4}},
- {m68000_base_device_ops::m68k_op_subq_32_aw, 0xf1ff, 0x51b8, { 24, 24, 8, 8, 8, 8, 4}},
- {m68000_base_device_ops::m68k_op_subq_32_al, 0xf1ff, 0x51b9, { 28, 28, 8, 8, 8, 8, 4}},
- {m68000_base_device_ops::m68k_op_or_8_er_pi7, 0xf1ff, 0x801f, { 8, 8, 6, 6, 6, 6, 2}},
- {m68000_base_device_ops::m68k_op_or_8_er_pd7, 0xf1ff, 0x8027, { 10, 10, 7, 7, 7, 7, 2}},
- {m68000_base_device_ops::m68k_op_or_8_er_aw, 0xf1ff, 0x8038, { 12, 12, 6, 6, 6, 6, 2}},
- {m68000_base_device_ops::m68k_op_or_8_er_al, 0xf1ff, 0x8039, { 16, 16, 6, 6, 6, 6, 2}},
- {m68000_base_device_ops::m68k_op_or_8_er_pcdi, 0xf1ff, 0x803a, { 12, 12, 7, 7, 7, 7, 2}},
- {m68000_base_device_ops::m68k_op_or_8_er_pcix, 0xf1ff, 0x803b, { 14, 14, 9, 9, 9, 9, 2}},
- {m68000_base_device_ops::m68k_op_or_8_er_i, 0xf1ff, 0x803c, { 8, 8, 4, 4, 4, 4, 2}},
- {m68000_base_device_ops::m68k_op_or_16_er_aw, 0xf1ff, 0x8078, { 12, 12, 6, 6, 6, 6, 2}},
- {m68000_base_device_ops::m68k_op_or_16_er_al, 0xf1ff, 0x8079, { 16, 16, 6, 6, 6, 6, 2}},
- {m68000_base_device_ops::m68k_op_or_16_er_pcdi, 0xf1ff, 0x807a, { 12, 12, 7, 7, 7, 7, 2}},
- {m68000_base_device_ops::m68k_op_or_16_er_pcix, 0xf1ff, 0x807b, { 14, 14, 9, 9, 9, 9, 2}},
- {m68000_base_device_ops::m68k_op_or_16_er_i, 0xf1ff, 0x807c, { 8, 8, 4, 4, 4, 4, 2}},
- {m68000_base_device_ops::m68k_op_or_32_er_aw, 0xf1ff, 0x80b8, { 18, 18, 6, 6, 6, 6, 2}},
- {m68000_base_device_ops::m68k_op_or_32_er_al, 0xf1ff, 0x80b9, { 22, 22, 6, 6, 6, 6, 2}},
- {m68000_base_device_ops::m68k_op_or_32_er_pcdi, 0xf1ff, 0x80ba, { 18, 18, 7, 7, 7, 7, 2}},
- {m68000_base_device_ops::m68k_op_or_32_er_pcix, 0xf1ff, 0x80bb, { 20, 20, 9, 9, 9, 9, 2}},
- {m68000_base_device_ops::m68k_op_or_32_er_i, 0xf1ff, 0x80bc, { 16, 14, 6, 6, 6, 6, 2}},
- {m68000_base_device_ops::m68k_op_divu_16_aw, 0xf1ff, 0x80f8, {148, 116, 48, 48, 48, 48, 44}},
- {m68000_base_device_ops::m68k_op_divu_16_al, 0xf1ff, 0x80f9, {152, 120, 48, 48, 48, 48, 44}},
- {m68000_base_device_ops::m68k_op_divu_16_pcdi, 0xf1ff, 0x80fa, {148, 116, 49, 49, 49, 49, 44}},
- {m68000_base_device_ops::m68k_op_divu_16_pcix, 0xf1ff, 0x80fb, {150, 118, 51, 51, 51, 51, 44}},
- {m68000_base_device_ops::m68k_op_divu_16_i, 0xf1ff, 0x80fc, {144, 112, 46, 46, 46, 46, 44}},
- {m68000_base_device_ops::m68k_op_sbcd_8_mm_ay7, 0xf1ff, 0x810f, { 18, 18, 16, 16, 16, 16, 16}},
- {m68000_base_device_ops::m68k_op_or_8_re_pi7, 0xf1ff, 0x811f, { 12, 12, 8, 8, 8, 8, 4}},
- {m68000_base_device_ops::m68k_op_or_8_re_pd7, 0xf1ff, 0x8127, { 14, 14, 9, 9, 9, 9, 4}},
- {m68000_base_device_ops::m68k_op_or_8_re_aw, 0xf1ff, 0x8138, { 16, 16, 8, 8, 8, 8, 4}},
- {m68000_base_device_ops::m68k_op_or_8_re_al, 0xf1ff, 0x8139, { 20, 20, 8, 8, 8, 8, 4}},
- {m68000_base_device_ops::m68k_op_pack_16_mm_ay7, 0xf1ff, 0x814f, {255, 255, 13, 13, 13, 13, 13}},
- {m68000_base_device_ops::m68k_op_or_16_re_aw, 0xf1ff, 0x8178, { 16, 16, 8, 8, 8, 8, 4}},
- {m68000_base_device_ops::m68k_op_or_16_re_al, 0xf1ff, 0x8179, { 20, 20, 8, 8, 8, 8, 4}},
- {m68000_base_device_ops::m68k_op_unpk_16_mm_ay7, 0xf1ff, 0x818f, {255, 255, 13, 13, 13, 13, 13}},
- {m68000_base_device_ops::m68k_op_or_32_re_aw, 0xf1ff, 0x81b8, { 24, 24, 8, 8, 8, 8, 4}},
- {m68000_base_device_ops::m68k_op_or_32_re_al, 0xf1ff, 0x81b9, { 28, 28, 8, 8, 8, 8, 4}},
- {m68000_base_device_ops::m68k_op_divs_16_aw, 0xf1ff, 0x81f8, {166, 130, 60, 60, 60, 60, 56}},
- {m68000_base_device_ops::m68k_op_divs_16_al, 0xf1ff, 0x81f9, {170, 134, 60, 60, 60, 60, 56}},
- {m68000_base_device_ops::m68k_op_divs_16_pcdi, 0xf1ff, 0x81fa, {166, 130, 61, 61, 61, 61, 56}},
- {m68000_base_device_ops::m68k_op_divs_16_pcix, 0xf1ff, 0x81fb, {168, 132, 63, 63, 63, 63, 56}},
- {m68000_base_device_ops::m68k_op_divs_16_i, 0xf1ff, 0x81fc, {162, 126, 58, 58, 58, 58, 56}},
- {m68000_base_device_ops::m68k_op_sub_8_er_pi7, 0xf1ff, 0x901f, { 8, 8, 6, 6, 6, 6, 2}},
- {m68000_base_device_ops::m68k_op_sub_8_er_pd7, 0xf1ff, 0x9027, { 10, 10, 7, 7, 7, 7, 2}},
- {m68000_base_device_ops::m68k_op_sub_8_er_aw, 0xf1ff, 0x9038, { 12, 12, 6, 6, 6, 6, 2}},
- {m68000_base_device_ops::m68k_op_sub_8_er_al, 0xf1ff, 0x9039, { 16, 16, 6, 6, 6, 6, 2}},
- {m68000_base_device_ops::m68k_op_sub_8_er_pcdi, 0xf1ff, 0x903a, { 12, 12, 7, 7, 7, 7, 2}},
- {m68000_base_device_ops::m68k_op_sub_8_er_pcix, 0xf1ff, 0x903b, { 14, 14, 9, 9, 9, 9, 2}},
- {m68000_base_device_ops::m68k_op_sub_8_er_i, 0xf1ff, 0x903c, { 8, 8, 4, 4, 4, 4, 2}},
- {m68000_base_device_ops::m68k_op_sub_16_er_aw, 0xf1ff, 0x9078, { 12, 12, 6, 6, 6, 6, 2}},
- {m68000_base_device_ops::m68k_op_sub_16_er_al, 0xf1ff, 0x9079, { 16, 16, 6, 6, 6, 6, 2}},
- {m68000_base_device_ops::m68k_op_sub_16_er_pcdi, 0xf1ff, 0x907a, { 12, 12, 7, 7, 7, 7, 2}},
- {m68000_base_device_ops::m68k_op_sub_16_er_pcix, 0xf1ff, 0x907b, { 14, 14, 9, 9, 9, 9, 2}},
- {m68000_base_device_ops::m68k_op_sub_16_er_i, 0xf1ff, 0x907c, { 8, 8, 4, 4, 4, 4, 2}},
- {m68000_base_device_ops::m68k_op_sub_32_er_aw, 0xf1ff, 0x90b8, { 18, 18, 6, 6, 6, 6, 2}},
- {m68000_base_device_ops::m68k_op_sub_32_er_al, 0xf1ff, 0x90b9, { 22, 22, 6, 6, 6, 6, 2}},
- {m68000_base_device_ops::m68k_op_sub_32_er_pcdi, 0xf1ff, 0x90ba, { 18, 18, 7, 7, 7, 7, 2}},
- {m68000_base_device_ops::m68k_op_sub_32_er_pcix, 0xf1ff, 0x90bb, { 20, 20, 9, 9, 9, 9, 2}},
- {m68000_base_device_ops::m68k_op_sub_32_er_i, 0xf1ff, 0x90bc, { 16, 14, 6, 6, 6, 6, 2}},
- {m68000_base_device_ops::m68k_op_suba_16_aw, 0xf1ff, 0x90f8, { 16, 16, 6, 6, 6, 6, 2}},
- {m68000_base_device_ops::m68k_op_suba_16_al, 0xf1ff, 0x90f9, { 20, 20, 6, 6, 6, 6, 2}},
- {m68000_base_device_ops::m68k_op_suba_16_pcdi, 0xf1ff, 0x90fa, { 16, 16, 7, 7, 7, 7, 2}},
- {m68000_base_device_ops::m68k_op_suba_16_pcix, 0xf1ff, 0x90fb, { 18, 18, 9, 9, 9, 9, 2}},
- {m68000_base_device_ops::m68k_op_suba_16_i, 0xf1ff, 0x90fc, { 12, 12, 4, 4, 4, 4, 2}},
- {m68000_base_device_ops::m68k_op_subx_8_mm_ay7, 0xf1ff, 0x910f, { 18, 18, 12, 12, 12, 12, 12}},
- {m68000_base_device_ops::m68k_op_sub_8_re_pi7, 0xf1ff, 0x911f, { 12, 12, 8, 8, 8, 8, 4}},
- {m68000_base_device_ops::m68k_op_sub_8_re_pd7, 0xf1ff, 0x9127, { 14, 14, 9, 9, 9, 9, 4}},
- {m68000_base_device_ops::m68k_op_sub_8_re_aw, 0xf1ff, 0x9138, { 16, 16, 8, 8, 8, 8, 4}},
- {m68000_base_device_ops::m68k_op_sub_8_re_al, 0xf1ff, 0x9139, { 20, 20, 8, 8, 8, 8, 4}},
- {m68000_base_device_ops::m68k_op_sub_16_re_aw, 0xf1ff, 0x9178, { 16, 16, 8, 8, 8, 8, 4}},
- {m68000_base_device_ops::m68k_op_sub_16_re_al, 0xf1ff, 0x9179, { 20, 20, 8, 8, 8, 8, 4}},
- {m68000_base_device_ops::m68k_op_sub_32_re_aw, 0xf1ff, 0x91b8, { 24, 24, 8, 8, 8, 8, 4}},
- {m68000_base_device_ops::m68k_op_sub_32_re_al, 0xf1ff, 0x91b9, { 28, 28, 8, 8, 8, 8, 4}},
- {m68000_base_device_ops::m68k_op_suba_32_aw, 0xf1ff, 0x91f8, { 18, 18, 6, 6, 6, 6, 2}},
- {m68000_base_device_ops::m68k_op_suba_32_al, 0xf1ff, 0x91f9, { 22, 22, 6, 6, 6, 6, 2}},
- {m68000_base_device_ops::m68k_op_suba_32_pcdi, 0xf1ff, 0x91fa, { 18, 18, 7, 7, 7, 7, 2}},
- {m68000_base_device_ops::m68k_op_suba_32_pcix, 0xf1ff, 0x91fb, { 20, 20, 9, 9, 9, 9, 2}},
- {m68000_base_device_ops::m68k_op_suba_32_i, 0xf1ff, 0x91fc, { 16, 14, 6, 6, 6, 6, 2}},
- {m68000_base_device_ops::m68k_op_cmp_8_pi7, 0xf1ff, 0xb01f, { 8, 8, 6, 6, 6, 6, 2}},
- {m68000_base_device_ops::m68k_op_cmp_8_pd7, 0xf1ff, 0xb027, { 10, 10, 7, 7, 7, 7, 2}},
- {m68000_base_device_ops::m68k_op_cmp_8_aw, 0xf1ff, 0xb038, { 12, 12, 6, 6, 6, 6, 2}},
- {m68000_base_device_ops::m68k_op_cmp_8_al, 0xf1ff, 0xb039, { 16, 16, 6, 6, 6, 6, 2}},
- {m68000_base_device_ops::m68k_op_cmp_8_pcdi, 0xf1ff, 0xb03a, { 12, 12, 7, 7, 7, 7, 2}},
- {m68000_base_device_ops::m68k_op_cmp_8_pcix, 0xf1ff, 0xb03b, { 14, 14, 9, 9, 9, 9, 2}},
- {m68000_base_device_ops::m68k_op_cmp_8_i, 0xf1ff, 0xb03c, { 8, 8, 4, 4, 4, 4, 2}},
- {m68000_base_device_ops::m68k_op_cmp_16_aw, 0xf1ff, 0xb078, { 12, 12, 6, 6, 6, 6, 2}},
- {m68000_base_device_ops::m68k_op_cmp_16_al, 0xf1ff, 0xb079, { 16, 16, 6, 6, 6, 6, 2}},
- {m68000_base_device_ops::m68k_op_cmp_16_pcdi, 0xf1ff, 0xb07a, { 12, 12, 7, 7, 7, 7, 2}},
- {m68000_base_device_ops::m68k_op_cmp_16_pcix, 0xf1ff, 0xb07b, { 14, 14, 9, 9, 9, 9, 2}},
- {m68000_base_device_ops::m68k_op_cmp_16_i, 0xf1ff, 0xb07c, { 8, 8, 4, 4, 4, 4, 2}},
- {m68000_base_device_ops::m68k_op_cmp_32_aw, 0xf1ff, 0xb0b8, { 18, 18, 6, 6, 6, 6, 2}},
- {m68000_base_device_ops::m68k_op_cmp_32_al, 0xf1ff, 0xb0b9, { 22, 22, 6, 6, 6, 6, 2}},
- {m68000_base_device_ops::m68k_op_cmp_32_pcdi, 0xf1ff, 0xb0ba, { 18, 18, 7, 7, 7, 7, 2}},
- {m68000_base_device_ops::m68k_op_cmp_32_pcix, 0xf1ff, 0xb0bb, { 20, 20, 9, 9, 9, 9, 2}},
- {m68000_base_device_ops::m68k_op_cmp_32_i, 0xf1ff, 0xb0bc, { 14, 14, 6, 6, 6, 6, 2}},
- {m68000_base_device_ops::m68k_op_cmpa_16_aw, 0xf1ff, 0xb0f8, { 14, 14, 8, 8, 8, 8, 4}},
- {m68000_base_device_ops::m68k_op_cmpa_16_al, 0xf1ff, 0xb0f9, { 18, 18, 8, 8, 8, 8, 4}},
- {m68000_base_device_ops::m68k_op_cmpa_16_pcdi, 0xf1ff, 0xb0fa, { 14, 14, 9, 9, 9, 9, 4}},
- {m68000_base_device_ops::m68k_op_cmpa_16_pcix, 0xf1ff, 0xb0fb, { 16, 16, 11, 11, 11, 11, 4}},
- {m68000_base_device_ops::m68k_op_cmpa_16_i, 0xf1ff, 0xb0fc, { 10, 10, 6, 6, 6, 6, 4}},
- {m68000_base_device_ops::m68k_op_cmpm_8_ay7, 0xf1ff, 0xb10f, { 12, 12, 9, 9, 9, 9, 9}},
- {m68000_base_device_ops::m68k_op_eor_8_pi7, 0xf1ff, 0xb11f, { 12, 12, 8, 8, 8, 8, 4}},
- {m68000_base_device_ops::m68k_op_eor_8_pd7, 0xf1ff, 0xb127, { 14, 14, 9, 9, 9, 9, 4}},
- {m68000_base_device_ops::m68k_op_eor_8_aw, 0xf1ff, 0xb138, { 16, 16, 8, 8, 8, 8, 4}},
- {m68000_base_device_ops::m68k_op_eor_8_al, 0xf1ff, 0xb139, { 20, 20, 8, 8, 8, 8, 4}},
- {m68000_base_device_ops::m68k_op_eor_16_aw, 0xf1ff, 0xb178, { 16, 16, 8, 8, 8, 8, 4}},
- {m68000_base_device_ops::m68k_op_eor_16_al, 0xf1ff, 0xb179, { 20, 20, 8, 8, 8, 8, 4}},
- {m68000_base_device_ops::m68k_op_eor_32_aw, 0xf1ff, 0xb1b8, { 24, 24, 8, 8, 8, 8, 4}},
- {m68000_base_device_ops::m68k_op_eor_32_al, 0xf1ff, 0xb1b9, { 28, 28, 8, 8, 8, 8, 4}},
- {m68000_base_device_ops::m68k_op_cmpa_32_aw, 0xf1ff, 0xb1f8, { 18, 18, 8, 8, 8, 8, 4}},
- {m68000_base_device_ops::m68k_op_cmpa_32_al, 0xf1ff, 0xb1f9, { 22, 22, 8, 8, 8, 8, 4}},
- {m68000_base_device_ops::m68k_op_cmpa_32_pcdi, 0xf1ff, 0xb1fa, { 18, 18, 9, 9, 9, 9, 4}},
- {m68000_base_device_ops::m68k_op_cmpa_32_pcix, 0xf1ff, 0xb1fb, { 20, 20, 11, 11, 11, 11, 4}},
- {m68000_base_device_ops::m68k_op_cmpa_32_i, 0xf1ff, 0xb1fc, { 14, 14, 8, 8, 8, 8, 4}},
- {m68000_base_device_ops::m68k_op_and_8_er_pi7, 0xf1ff, 0xc01f, { 8, 8, 6, 6, 6, 6, 2}},
- {m68000_base_device_ops::m68k_op_and_8_er_pd7, 0xf1ff, 0xc027, { 10, 10, 7, 7, 7, 7, 2}},
- {m68000_base_device_ops::m68k_op_and_8_er_aw, 0xf1ff, 0xc038, { 12, 12, 6, 6, 6, 6, 2}},
- {m68000_base_device_ops::m68k_op_and_8_er_al, 0xf1ff, 0xc039, { 16, 16, 6, 6, 6, 6, 2}},
- {m68000_base_device_ops::m68k_op_and_8_er_pcdi, 0xf1ff, 0xc03a, { 12, 12, 7, 7, 7, 7, 2}},
- {m68000_base_device_ops::m68k_op_and_8_er_pcix, 0xf1ff, 0xc03b, { 14, 14, 9, 9, 9, 9, 2}},
- {m68000_base_device_ops::m68k_op_and_8_er_i, 0xf1ff, 0xc03c, { 8, 8, 4, 4, 4, 4, 2}},
- {m68000_base_device_ops::m68k_op_and_16_er_aw, 0xf1ff, 0xc078, { 12, 12, 6, 6, 6, 6, 2}},
- {m68000_base_device_ops::m68k_op_and_16_er_al, 0xf1ff, 0xc079, { 16, 16, 6, 6, 6, 6, 2}},
- {m68000_base_device_ops::m68k_op_and_16_er_pcdi, 0xf1ff, 0xc07a, { 12, 12, 7, 7, 7, 7, 2}},
- {m68000_base_device_ops::m68k_op_and_16_er_pcix, 0xf1ff, 0xc07b, { 14, 14, 9, 9, 9, 9, 2}},
- {m68000_base_device_ops::m68k_op_and_16_er_i, 0xf1ff, 0xc07c, { 8, 8, 4, 4, 4, 4, 2}},
- {m68000_base_device_ops::m68k_op_and_32_er_aw, 0xf1ff, 0xc0b8, { 18, 18, 6, 6, 6, 6, 2}},
- {m68000_base_device_ops::m68k_op_and_32_er_al, 0xf1ff, 0xc0b9, { 22, 22, 6, 6, 6, 6, 2}},
- {m68000_base_device_ops::m68k_op_and_32_er_pcdi, 0xf1ff, 0xc0ba, { 18, 18, 7, 7, 7, 7, 2}},
- {m68000_base_device_ops::m68k_op_and_32_er_pcix, 0xf1ff, 0xc0bb, { 20, 20, 9, 9, 9, 9, 2}},
- {m68000_base_device_ops::m68k_op_and_32_er_i, 0xf1ff, 0xc0bc, { 16, 14, 6, 6, 6, 6, 2}},
- {m68000_base_device_ops::m68k_op_mulu_16_aw, 0xf1ff, 0xc0f8, { 62, 38, 31, 31, 31, 31, 27}},
- {m68000_base_device_ops::m68k_op_mulu_16_al, 0xf1ff, 0xc0f9, { 66, 42, 31, 31, 31, 31, 27}},
- {m68000_base_device_ops::m68k_op_mulu_16_pcdi, 0xf1ff, 0xc0fa, { 62, 38, 32, 32, 32, 32, 27}},
- {m68000_base_device_ops::m68k_op_mulu_16_pcix, 0xf1ff, 0xc0fb, { 64, 40, 34, 34, 34, 34, 27}},
- {m68000_base_device_ops::m68k_op_mulu_16_i, 0xf1ff, 0xc0fc, { 58, 34, 29, 29, 29, 29, 27}},
- {m68000_base_device_ops::m68k_op_abcd_8_mm_ay7, 0xf1ff, 0xc10f, { 18, 18, 16, 16, 16, 16, 16}},
- {m68000_base_device_ops::m68k_op_and_8_re_pi7, 0xf1ff, 0xc11f, { 12, 12, 8, 8, 8, 8, 4}},
- {m68000_base_device_ops::m68k_op_and_8_re_pd7, 0xf1ff, 0xc127, { 14, 14, 9, 9, 9, 9, 4}},
- {m68000_base_device_ops::m68k_op_and_8_re_aw, 0xf1ff, 0xc138, { 16, 16, 8, 8, 8, 8, 4}},
- {m68000_base_device_ops::m68k_op_and_8_re_al, 0xf1ff, 0xc139, { 20, 20, 8, 8, 8, 8, 4}},
- {m68000_base_device_ops::m68k_op_and_16_re_aw, 0xf1ff, 0xc178, { 16, 16, 8, 8, 8, 8, 4}},
- {m68000_base_device_ops::m68k_op_and_16_re_al, 0xf1ff, 0xc179, { 20, 20, 8, 8, 8, 8, 4}},
- {m68000_base_device_ops::m68k_op_and_32_re_aw, 0xf1ff, 0xc1b8, { 24, 24, 8, 8, 8, 8, 4}},
- {m68000_base_device_ops::m68k_op_and_32_re_al, 0xf1ff, 0xc1b9, { 28, 28, 8, 8, 8, 8, 4}},
- {m68000_base_device_ops::m68k_op_muls_16_aw, 0xf1ff, 0xc1f8, { 62, 40, 31, 31, 31, 31, 27}},
- {m68000_base_device_ops::m68k_op_muls_16_al, 0xf1ff, 0xc1f9, { 66, 44, 31, 31, 31, 31, 27}},
- {m68000_base_device_ops::m68k_op_muls_16_pcdi, 0xf1ff, 0xc1fa, { 62, 40, 32, 32, 32, 32, 27}},
- {m68000_base_device_ops::m68k_op_muls_16_pcix, 0xf1ff, 0xc1fb, { 64, 42, 34, 34, 34, 34, 27}},
- {m68000_base_device_ops::m68k_op_muls_16_i, 0xf1ff, 0xc1fc, { 58, 36, 29, 29, 29, 29, 27}},
- {m68000_base_device_ops::m68k_op_add_8_er_pi7, 0xf1ff, 0xd01f, { 8, 8, 6, 6, 6, 6, 2}},
- {m68000_base_device_ops::m68k_op_add_8_er_pd7, 0xf1ff, 0xd027, { 10, 10, 7, 7, 7, 7, 2}},
- {m68000_base_device_ops::m68k_op_add_8_er_aw, 0xf1ff, 0xd038, { 12, 12, 6, 6, 6, 6, 2}},
- {m68000_base_device_ops::m68k_op_add_8_er_al, 0xf1ff, 0xd039, { 16, 16, 6, 6, 6, 6, 2}},
- {m68000_base_device_ops::m68k_op_add_8_er_pcdi, 0xf1ff, 0xd03a, { 12, 12, 7, 7, 7, 7, 2}},
- {m68000_base_device_ops::m68k_op_add_8_er_pcix, 0xf1ff, 0xd03b, { 14, 14, 9, 9, 9, 9, 2}},
- {m68000_base_device_ops::m68k_op_add_8_er_i, 0xf1ff, 0xd03c, { 8, 8, 4, 4, 4, 4, 2}},
- {m68000_base_device_ops::m68k_op_add_16_er_aw, 0xf1ff, 0xd078, { 12, 12, 6, 6, 6, 6, 2}},
- {m68000_base_device_ops::m68k_op_add_16_er_al, 0xf1ff, 0xd079, { 16, 16, 6, 6, 6, 6, 2}},
- {m68000_base_device_ops::m68k_op_add_16_er_pcdi, 0xf1ff, 0xd07a, { 12, 12, 7, 7, 7, 7, 2}},
- {m68000_base_device_ops::m68k_op_add_16_er_pcix, 0xf1ff, 0xd07b, { 14, 14, 9, 9, 9, 9, 2}},
- {m68000_base_device_ops::m68k_op_add_16_er_i, 0xf1ff, 0xd07c, { 8, 8, 4, 4, 4, 4, 2}},
- {m68000_base_device_ops::m68k_op_add_32_er_aw, 0xf1ff, 0xd0b8, { 18, 18, 6, 6, 6, 6, 2}},
- {m68000_base_device_ops::m68k_op_add_32_er_al, 0xf1ff, 0xd0b9, { 22, 22, 6, 6, 6, 6, 2}},
- {m68000_base_device_ops::m68k_op_add_32_er_pcdi, 0xf1ff, 0xd0ba, { 18, 18, 7, 7, 7, 7, 2}},
- {m68000_base_device_ops::m68k_op_add_32_er_pcix, 0xf1ff, 0xd0bb, { 20, 20, 9, 9, 9, 9, 2}},
- {m68000_base_device_ops::m68k_op_add_32_er_i, 0xf1ff, 0xd0bc, { 16, 14, 6, 6, 6, 6, 2}},
- {m68000_base_device_ops::m68k_op_adda_16_aw, 0xf1ff, 0xd0f8, { 16, 16, 6, 6, 6, 6, 2}},
- {m68000_base_device_ops::m68k_op_adda_16_al, 0xf1ff, 0xd0f9, { 20, 20, 6, 6, 6, 6, 2}},
- {m68000_base_device_ops::m68k_op_adda_16_pcdi, 0xf1ff, 0xd0fa, { 16, 16, 7, 7, 7, 7, 2}},
- {m68000_base_device_ops::m68k_op_adda_16_pcix, 0xf1ff, 0xd0fb, { 18, 18, 9, 9, 9, 9, 2}},
- {m68000_base_device_ops::m68k_op_adda_16_i, 0xf1ff, 0xd0fc, { 12, 12, 4, 4, 4, 4, 2}},
- {m68000_base_device_ops::m68k_op_addx_8_mm_ay7, 0xf1ff, 0xd10f, { 18, 18, 12, 12, 12, 12, 12}},
- {m68000_base_device_ops::m68k_op_add_8_re_pi7, 0xf1ff, 0xd11f, { 12, 12, 8, 8, 8, 8, 4}},
- {m68000_base_device_ops::m68k_op_add_8_re_pd7, 0xf1ff, 0xd127, { 14, 14, 9, 9, 9, 9, 4}},
- {m68000_base_device_ops::m68k_op_add_8_re_aw, 0xf1ff, 0xd138, { 16, 16, 8, 8, 8, 8, 4}},
- {m68000_base_device_ops::m68k_op_add_8_re_al, 0xf1ff, 0xd139, { 20, 20, 8, 8, 8, 8, 4}},
- {m68000_base_device_ops::m68k_op_add_16_re_aw, 0xf1ff, 0xd178, { 16, 16, 8, 8, 8, 8, 4}},
- {m68000_base_device_ops::m68k_op_add_16_re_al, 0xf1ff, 0xd179, { 20, 20, 8, 8, 8, 8, 4}},
- {m68000_base_device_ops::m68k_op_add_32_re_aw, 0xf1ff, 0xd1b8, { 24, 24, 8, 8, 8, 8, 4}},
- {m68000_base_device_ops::m68k_op_add_32_re_al, 0xf1ff, 0xd1b9, { 28, 28, 8, 8, 8, 8, 4}},
- {m68000_base_device_ops::m68k_op_adda_32_aw, 0xf1ff, 0xd1f8, { 18, 18, 6, 6, 6, 6, 2}},
- {m68000_base_device_ops::m68k_op_adda_32_al, 0xf1ff, 0xd1f9, { 22, 22, 6, 6, 6, 6, 2}},
- {m68000_base_device_ops::m68k_op_adda_32_pcdi, 0xf1ff, 0xd1fa, { 18, 18, 7, 7, 7, 7, 2}},
- {m68000_base_device_ops::m68k_op_adda_32_pcix, 0xf1ff, 0xd1fb, { 20, 20, 9, 9, 9, 9, 2}},
- {m68000_base_device_ops::m68k_op_adda_32_i, 0xf1ff, 0xd1fc, { 16, 14, 6, 6, 6, 6, 2}},
- {m68000_base_device_ops::m68k_op_ori_8_d, 0xfff8, 0x0000, { 8, 8, 2, 2, 2, 2, 2}},
- {m68000_base_device_ops::m68k_op_ori_8_ai, 0xfff8, 0x0010, { 16, 16, 8, 8, 8, 8, 4}},
- {m68000_base_device_ops::m68k_op_ori_8_pi, 0xfff8, 0x0018, { 16, 16, 8, 8, 8, 8, 4}},
- {m68000_base_device_ops::m68k_op_ori_8_pd, 0xfff8, 0x0020, { 18, 18, 9, 9, 9, 9, 4}},
- {m68000_base_device_ops::m68k_op_ori_8_di, 0xfff8, 0x0028, { 20, 20, 9, 9, 9, 9, 4}},
- {m68000_base_device_ops::m68k_op_ori_8_ix, 0xfff8, 0x0030, { 22, 22, 11, 11, 11, 11, 4}},
- {m68000_base_device_ops::m68k_op_ori_16_d, 0xfff8, 0x0040, { 8, 8, 2, 2, 2, 2, 2}},
- {m68000_base_device_ops::m68k_op_ori_16_ai, 0xfff8, 0x0050, { 16, 16, 8, 8, 8, 8, 4}},
- {m68000_base_device_ops::m68k_op_ori_16_pi, 0xfff8, 0x0058, { 16, 16, 8, 8, 8, 8, 4}},
- {m68000_base_device_ops::m68k_op_ori_16_pd, 0xfff8, 0x0060, { 18, 18, 9, 9, 9, 9, 4}},
- {m68000_base_device_ops::m68k_op_ori_16_di, 0xfff8, 0x0068, { 20, 20, 9, 9, 9, 9, 4}},
- {m68000_base_device_ops::m68k_op_ori_16_ix, 0xfff8, 0x0070, { 22, 22, 11, 11, 11, 11, 4}},
- {m68000_base_device_ops::m68k_op_ori_32_d, 0xfff8, 0x0080, { 16, 14, 2, 2, 2, 2, 2}},
- {m68000_base_device_ops::m68k_op_ori_32_ai, 0xfff8, 0x0090, { 28, 28, 8, 8, 8, 8, 4}},
- {m68000_base_device_ops::m68k_op_ori_32_pi, 0xfff8, 0x0098, { 28, 28, 8, 8, 8, 8, 4}},
- {m68000_base_device_ops::m68k_op_ori_32_pd, 0xfff8, 0x00a0, { 30, 30, 9, 9, 9, 9, 4}},
- {m68000_base_device_ops::m68k_op_ori_32_di, 0xfff8, 0x00a8, { 32, 32, 9, 9, 9, 9, 4}},
- {m68000_base_device_ops::m68k_op_ori_32_ix, 0xfff8, 0x00b0, { 34, 34, 11, 11, 11, 11, 4}},
- {m68000_base_device_ops::m68k_op_chk2cmp2_8_ai, 0xfff8, 0x00d0, {255, 255, 22, 22, 22, 22, 18}},
- {m68000_base_device_ops::m68k_op_chk2cmp2_8_di, 0xfff8, 0x00e8, {255, 255, 23, 23, 23, 23, 18}},
- {m68000_base_device_ops::m68k_op_chk2cmp2_8_ix, 0xfff8, 0x00f0, {255, 255, 25, 25, 25, 25, 18}},
- {m68000_base_device_ops::m68k_op_andi_8_d, 0xfff8, 0x0200, { 8, 8, 2, 2, 2, 2, 2}},
- {m68000_base_device_ops::m68k_op_andi_8_ai, 0xfff8, 0x0210, { 16, 16, 8, 8, 8, 8, 4}},
- {m68000_base_device_ops::m68k_op_andi_8_pi, 0xfff8, 0x0218, { 16, 16, 8, 8, 8, 8, 4}},
- {m68000_base_device_ops::m68k_op_andi_8_pd, 0xfff8, 0x0220, { 18, 18, 9, 9, 9, 9, 4}},
- {m68000_base_device_ops::m68k_op_andi_8_di, 0xfff8, 0x0228, { 20, 20, 9, 9, 9, 9, 4}},
- {m68000_base_device_ops::m68k_op_andi_8_ix, 0xfff8, 0x0230, { 22, 22, 11, 11, 11, 11, 4}},
- {m68000_base_device_ops::m68k_op_andi_16_d, 0xfff8, 0x0240, { 8, 8, 2, 2, 2, 2, 2}},
- {m68000_base_device_ops::m68k_op_andi_16_ai, 0xfff8, 0x0250, { 16, 16, 8, 8, 8, 8, 4}},
- {m68000_base_device_ops::m68k_op_andi_16_pi, 0xfff8, 0x0258, { 16, 16, 8, 8, 8, 8, 4}},
- {m68000_base_device_ops::m68k_op_andi_16_pd, 0xfff8, 0x0260, { 18, 18, 9, 9, 9, 9, 4}},
- {m68000_base_device_ops::m68k_op_andi_16_di, 0xfff8, 0x0268, { 20, 20, 9, 9, 9, 9, 4}},
- {m68000_base_device_ops::m68k_op_andi_16_ix, 0xfff8, 0x0270, { 22, 22, 11, 11, 11, 11, 4}},
- {m68000_base_device_ops::m68k_op_andi_32_d, 0xfff8, 0x0280, { 14, 14, 2, 2, 2, 2, 2}},
- {m68000_base_device_ops::m68k_op_andi_32_ai, 0xfff8, 0x0290, { 28, 28, 8, 8, 8, 8, 4}},
- {m68000_base_device_ops::m68k_op_andi_32_pi, 0xfff8, 0x0298, { 28, 28, 8, 8, 8, 8, 4}},
- {m68000_base_device_ops::m68k_op_andi_32_pd, 0xfff8, 0x02a0, { 30, 30, 9, 9, 9, 9, 4}},
- {m68000_base_device_ops::m68k_op_andi_32_di, 0xfff8, 0x02a8, { 32, 32, 9, 9, 9, 9, 4}},
- {m68000_base_device_ops::m68k_op_andi_32_ix, 0xfff8, 0x02b0, { 34, 34, 11, 11, 11, 11, 4}},
- {m68000_base_device_ops::m68k_op_chk2cmp2_16_ai, 0xfff8, 0x02d0, {255, 255, 22, 22, 22, 22, 18}},
- {m68000_base_device_ops::m68k_op_chk2cmp2_16_di, 0xfff8, 0x02e8, {255, 255, 23, 23, 23, 23, 18}},
- {m68000_base_device_ops::m68k_op_chk2cmp2_16_ix, 0xfff8, 0x02f0, {255, 255, 25, 25, 25, 25, 18}},
- {m68000_base_device_ops::m68k_op_subi_8_d, 0xfff8, 0x0400, { 8, 8, 2, 2, 2, 2, 2}},
- {m68000_base_device_ops::m68k_op_subi_8_ai, 0xfff8, 0x0410, { 16, 16, 8, 8, 8, 8, 4}},
- {m68000_base_device_ops::m68k_op_subi_8_pi, 0xfff8, 0x0418, { 16, 16, 8, 8, 8, 8, 4}},
- {m68000_base_device_ops::m68k_op_subi_8_pd, 0xfff8, 0x0420, { 18, 18, 9, 9, 9, 9, 4}},
- {m68000_base_device_ops::m68k_op_subi_8_di, 0xfff8, 0x0428, { 20, 20, 9, 9, 9, 9, 4}},
- {m68000_base_device_ops::m68k_op_subi_8_ix, 0xfff8, 0x0430, { 22, 22, 11, 11, 11, 11, 4}},
- {m68000_base_device_ops::m68k_op_subi_16_d, 0xfff8, 0x0440, { 8, 8, 2, 2, 2, 2, 2}},
- {m68000_base_device_ops::m68k_op_subi_16_ai, 0xfff8, 0x0450, { 16, 16, 8, 8, 8, 8, 4}},
- {m68000_base_device_ops::m68k_op_subi_16_pi, 0xfff8, 0x0458, { 16, 16, 8, 8, 8, 8, 4}},
- {m68000_base_device_ops::m68k_op_subi_16_pd, 0xfff8, 0x0460, { 18, 18, 9, 9, 9, 9, 4}},
- {m68000_base_device_ops::m68k_op_subi_16_di, 0xfff8, 0x0468, { 20, 20, 9, 9, 9, 9, 4}},
- {m68000_base_device_ops::m68k_op_subi_16_ix, 0xfff8, 0x0470, { 22, 22, 11, 11, 11, 11, 4}},
- {m68000_base_device_ops::m68k_op_subi_32_d, 0xfff8, 0x0480, { 16, 14, 2, 2, 2, 2, 2}},
- {m68000_base_device_ops::m68k_op_subi_32_ai, 0xfff8, 0x0490, { 28, 28, 8, 8, 8, 8, 4}},
- {m68000_base_device_ops::m68k_op_subi_32_pi, 0xfff8, 0x0498, { 28, 28, 8, 8, 8, 8, 4}},
- {m68000_base_device_ops::m68k_op_subi_32_pd, 0xfff8, 0x04a0, { 30, 30, 9, 9, 9, 9, 4}},
- {m68000_base_device_ops::m68k_op_subi_32_di, 0xfff8, 0x04a8, { 32, 32, 9, 9, 9, 9, 4}},
- {m68000_base_device_ops::m68k_op_subi_32_ix, 0xfff8, 0x04b0, { 34, 34, 11, 11, 11, 11, 4}},
- {m68000_base_device_ops::m68k_op_chk2cmp2_32_ai, 0xfff8, 0x04d0, {255, 255, 22, 22, 22, 22, 18}},
- {m68000_base_device_ops::m68k_op_chk2cmp2_32_di, 0xfff8, 0x04e8, {255, 255, 23, 23, 23, 23, 18}},
- {m68000_base_device_ops::m68k_op_chk2cmp2_32_ix, 0xfff8, 0x04f0, {255, 255, 25, 25, 25, 25, 18}},
- {m68000_base_device_ops::m68k_op_addi_8_d, 0xfff8, 0x0600, { 8, 8, 2, 2, 2, 2, 2}},
- {m68000_base_device_ops::m68k_op_addi_8_ai, 0xfff8, 0x0610, { 16, 16, 8, 8, 8, 8, 4}},
- {m68000_base_device_ops::m68k_op_addi_8_pi, 0xfff8, 0x0618, { 16, 16, 8, 8, 8, 8, 4}},
- {m68000_base_device_ops::m68k_op_addi_8_pd, 0xfff8, 0x0620, { 18, 18, 9, 9, 9, 9, 4}},
- {m68000_base_device_ops::m68k_op_addi_8_di, 0xfff8, 0x0628, { 20, 20, 9, 9, 9, 9, 4}},
- {m68000_base_device_ops::m68k_op_addi_8_ix, 0xfff8, 0x0630, { 22, 22, 11, 11, 11, 11, 4}},
- {m68000_base_device_ops::m68k_op_addi_16_d, 0xfff8, 0x0640, { 8, 8, 2, 2, 2, 2, 2}},
- {m68000_base_device_ops::m68k_op_addi_16_ai, 0xfff8, 0x0650, { 16, 16, 8, 8, 8, 8, 4}},
- {m68000_base_device_ops::m68k_op_addi_16_pi, 0xfff8, 0x0658, { 16, 16, 8, 8, 8, 8, 4}},
- {m68000_base_device_ops::m68k_op_addi_16_pd, 0xfff8, 0x0660, { 18, 18, 9, 9, 9, 9, 4}},
- {m68000_base_device_ops::m68k_op_addi_16_di, 0xfff8, 0x0668, { 20, 20, 9, 9, 9, 9, 4}},
- {m68000_base_device_ops::m68k_op_addi_16_ix, 0xfff8, 0x0670, { 22, 22, 11, 11, 11, 11, 4}},
- {m68000_base_device_ops::m68k_op_addi_32_d, 0xfff8, 0x0680, { 16, 14, 2, 2, 2, 2, 2}},
- {m68000_base_device_ops::m68k_op_addi_32_ai, 0xfff8, 0x0690, { 28, 28, 8, 8, 8, 8, 4}},
- {m68000_base_device_ops::m68k_op_addi_32_pi, 0xfff8, 0x0698, { 28, 28, 8, 8, 8, 8, 4}},
- {m68000_base_device_ops::m68k_op_addi_32_pd, 0xfff8, 0x06a0, { 30, 30, 9, 9, 9, 9, 4}},
- {m68000_base_device_ops::m68k_op_addi_32_di, 0xfff8, 0x06a8, { 32, 32, 9, 9, 9, 9, 4}},
- {m68000_base_device_ops::m68k_op_addi_32_ix, 0xfff8, 0x06b0, { 34, 34, 11, 11, 11, 11, 4}},
- {m68000_base_device_ops::m68k_op_callm_32_ai, 0xfff8, 0x06d0, {255, 255, 64, 64, 64, 64, 60}},
- {m68000_base_device_ops::m68k_op_callm_32_di, 0xfff8, 0x06e8, {255, 255, 65, 65, 65, 65, 60}},
- {m68000_base_device_ops::m68k_op_callm_32_ix, 0xfff8, 0x06f0, {255, 255, 67, 67, 67, 67, 60}},
- {m68000_base_device_ops::m68k_op_btst_32_s_d, 0xfff8, 0x0800, { 10, 10, 4, 4, 4, 4, 4}},
- {m68000_base_device_ops::m68k_op_btst_8_s_ai, 0xfff8, 0x0810, { 12, 12, 8, 8, 8, 8, 4}},
- {m68000_base_device_ops::m68k_op_btst_8_s_pi, 0xfff8, 0x0818, { 12, 12, 8, 8, 8, 8, 4}},
- {m68000_base_device_ops::m68k_op_btst_8_s_pd, 0xfff8, 0x0820, { 14, 14, 9, 9, 9, 9, 4}},
- {m68000_base_device_ops::m68k_op_btst_8_s_di, 0xfff8, 0x0828, { 16, 16, 9, 9, 9, 9, 4}},
- {m68000_base_device_ops::m68k_op_btst_8_s_ix, 0xfff8, 0x0830, { 18, 18, 11, 11, 11, 11, 4}},
- {m68000_base_device_ops::m68k_op_bchg_32_s_d, 0xfff8, 0x0840, { 12, 12, 4, 4, 4, 4, 4}},
- {m68000_base_device_ops::m68k_op_bchg_8_s_ai, 0xfff8, 0x0850, { 16, 16, 8, 8, 8, 8, 4}},
- {m68000_base_device_ops::m68k_op_bchg_8_s_pi, 0xfff8, 0x0858, { 16, 16, 8, 8, 8, 8, 4}},
- {m68000_base_device_ops::m68k_op_bchg_8_s_pd, 0xfff8, 0x0860, { 18, 18, 9, 9, 9, 9, 4}},
- {m68000_base_device_ops::m68k_op_bchg_8_s_di, 0xfff8, 0x0868, { 20, 20, 9, 9, 9, 9, 4}},
- {m68000_base_device_ops::m68k_op_bchg_8_s_ix, 0xfff8, 0x0870, { 22, 22, 11, 11, 11, 11, 4}},
- {m68000_base_device_ops::m68k_op_bclr_32_s_d, 0xfff8, 0x0880, { 14, 14, 4, 4, 4, 4, 4}},
- {m68000_base_device_ops::m68k_op_bclr_8_s_ai, 0xfff8, 0x0890, { 16, 16, 8, 8, 8, 8, 4}},
- {m68000_base_device_ops::m68k_op_bclr_8_s_pi, 0xfff8, 0x0898, { 16, 16, 8, 8, 8, 8, 4}},
- {m68000_base_device_ops::m68k_op_bclr_8_s_pd, 0xfff8, 0x08a0, { 18, 18, 9, 9, 9, 9, 4}},
- {m68000_base_device_ops::m68k_op_bclr_8_s_di, 0xfff8, 0x08a8, { 20, 20, 9, 9, 9, 9, 4}},
- {m68000_base_device_ops::m68k_op_bclr_8_s_ix, 0xfff8, 0x08b0, { 22, 22, 11, 11, 11, 11, 4}},
- {m68000_base_device_ops::m68k_op_bset_32_s_d, 0xfff8, 0x08c0, { 12, 12, 4, 4, 4, 4, 4}},
- {m68000_base_device_ops::m68k_op_bset_8_s_ai, 0xfff8, 0x08d0, { 16, 16, 8, 8, 8, 8, 4}},
- {m68000_base_device_ops::m68k_op_bset_8_s_pi, 0xfff8, 0x08d8, { 16, 16, 8, 8, 8, 8, 4}},
- {m68000_base_device_ops::m68k_op_bset_8_s_pd, 0xfff8, 0x08e0, { 18, 18, 9, 9, 9, 9, 4}},
- {m68000_base_device_ops::m68k_op_bset_8_s_di, 0xfff8, 0x08e8, { 20, 20, 9, 9, 9, 9, 4}},
- {m68000_base_device_ops::m68k_op_bset_8_s_ix, 0xfff8, 0x08f0, { 22, 22, 11, 11, 11, 11, 4}},
- {m68000_base_device_ops::m68k_op_eori_8_d, 0xfff8, 0x0a00, { 8, 8, 2, 2, 2, 2, 2}},
- {m68000_base_device_ops::m68k_op_eori_8_ai, 0xfff8, 0x0a10, { 16, 16, 8, 8, 8, 8, 4}},
- {m68000_base_device_ops::m68k_op_eori_8_pi, 0xfff8, 0x0a18, { 16, 16, 8, 8, 8, 8, 4}},
- {m68000_base_device_ops::m68k_op_eori_8_pd, 0xfff8, 0x0a20, { 18, 18, 9, 9, 9, 9, 4}},
- {m68000_base_device_ops::m68k_op_eori_8_di, 0xfff8, 0x0a28, { 20, 20, 9, 9, 9, 9, 4}},
- {m68000_base_device_ops::m68k_op_eori_8_ix, 0xfff8, 0x0a30, { 22, 22, 11, 11, 11, 11, 4}},
- {m68000_base_device_ops::m68k_op_eori_16_d, 0xfff8, 0x0a40, { 8, 8, 2, 2, 2, 2, 2}},
- {m68000_base_device_ops::m68k_op_eori_16_ai, 0xfff8, 0x0a50, { 16, 16, 8, 8, 8, 8, 4}},
- {m68000_base_device_ops::m68k_op_eori_16_pi, 0xfff8, 0x0a58, { 16, 16, 8, 8, 8, 8, 4}},
- {m68000_base_device_ops::m68k_op_eori_16_pd, 0xfff8, 0x0a60, { 18, 18, 9, 9, 9, 9, 4}},
- {m68000_base_device_ops::m68k_op_eori_16_di, 0xfff8, 0x0a68, { 20, 20, 9, 9, 9, 9, 4}},
- {m68000_base_device_ops::m68k_op_eori_16_ix, 0xfff8, 0x0a70, { 22, 22, 11, 11, 11, 11, 4}},
- {m68000_base_device_ops::m68k_op_eori_32_d, 0xfff8, 0x0a80, { 16, 14, 2, 2, 2, 2, 2}},
- {m68000_base_device_ops::m68k_op_eori_32_ai, 0xfff8, 0x0a90, { 28, 28, 8, 8, 8, 8, 4}},
- {m68000_base_device_ops::m68k_op_eori_32_pi, 0xfff8, 0x0a98, { 28, 28, 8, 8, 8, 8, 4}},
- {m68000_base_device_ops::m68k_op_eori_32_pd, 0xfff8, 0x0aa0, { 30, 30, 9, 9, 9, 9, 4}},
- {m68000_base_device_ops::m68k_op_eori_32_di, 0xfff8, 0x0aa8, { 32, 32, 9, 9, 9, 9, 4}},
- {m68000_base_device_ops::m68k_op_eori_32_ix, 0xfff8, 0x0ab0, { 34, 34, 11, 11, 11, 11, 4}},
- {m68000_base_device_ops::m68k_op_cas_8_ai, 0xfff8, 0x0ad0, {255, 255, 16, 16, 16, 16, 12}},
- {m68000_base_device_ops::m68k_op_cas_8_pi, 0xfff8, 0x0ad8, {255, 255, 16, 16, 16, 16, 12}},
- {m68000_base_device_ops::m68k_op_cas_8_pd, 0xfff8, 0x0ae0, {255, 255, 17, 17, 17, 17, 12}},
- {m68000_base_device_ops::m68k_op_cas_8_di, 0xfff8, 0x0ae8, {255, 255, 17, 17, 17, 17, 12}},
- {m68000_base_device_ops::m68k_op_cas_8_ix, 0xfff8, 0x0af0, {255, 255, 19, 19, 19, 19, 12}},
- {m68000_base_device_ops::m68k_op_cmpi_8_d, 0xfff8, 0x0c00, { 8, 8, 2, 2, 2, 2, 2}},
- {m68000_base_device_ops::m68k_op_cmpi_8_ai, 0xfff8, 0x0c10, { 12, 12, 6, 6, 6, 6, 2}},
- {m68000_base_device_ops::m68k_op_cmpi_8_pi, 0xfff8, 0x0c18, { 12, 12, 6, 6, 6, 6, 2}},
- {m68000_base_device_ops::m68k_op_cmpi_8_pd, 0xfff8, 0x0c20, { 14, 14, 7, 7, 7, 7, 2}},
- {m68000_base_device_ops::m68k_op_cmpi_8_di, 0xfff8, 0x0c28, { 16, 16, 7, 7, 7, 7, 2}},
- {m68000_base_device_ops::m68k_op_cmpi_8_ix, 0xfff8, 0x0c30, { 18, 18, 9, 9, 9, 9, 2}},
- {m68000_base_device_ops::m68k_op_cmpi_16_d, 0xfff8, 0x0c40, { 8, 8, 2, 2, 2, 2, 2}},
- {m68000_base_device_ops::m68k_op_cmpi_16_ai, 0xfff8, 0x0c50, { 12, 12, 6, 6, 6, 6, 2}},
- {m68000_base_device_ops::m68k_op_cmpi_16_pi, 0xfff8, 0x0c58, { 12, 12, 6, 6, 6, 6, 2}},
- {m68000_base_device_ops::m68k_op_cmpi_16_pd, 0xfff8, 0x0c60, { 14, 14, 7, 7, 7, 7, 2}},
- {m68000_base_device_ops::m68k_op_cmpi_16_di, 0xfff8, 0x0c68, { 16, 16, 7, 7, 7, 7, 2}},
- {m68000_base_device_ops::m68k_op_cmpi_16_ix, 0xfff8, 0x0c70, { 18, 18, 9, 9, 9, 9, 2}},
- {m68000_base_device_ops::m68k_op_cmpi_32_d, 0xfff8, 0x0c80, { 14, 12, 2, 2, 2, 2, 2}},
- {m68000_base_device_ops::m68k_op_cmpi_32_ai, 0xfff8, 0x0c90, { 20, 20, 6, 6, 6, 6, 2}},
- {m68000_base_device_ops::m68k_op_cmpi_32_pi, 0xfff8, 0x0c98, { 20, 20, 6, 6, 6, 6, 2}},
- {m68000_base_device_ops::m68k_op_cmpi_32_pd, 0xfff8, 0x0ca0, { 22, 22, 7, 7, 7, 7, 2}},
- {m68000_base_device_ops::m68k_op_cmpi_32_di, 0xfff8, 0x0ca8, { 24, 24, 7, 7, 7, 7, 2}},
- {m68000_base_device_ops::m68k_op_cmpi_32_ix, 0xfff8, 0x0cb0, { 26, 26, 9, 9, 9, 9, 2}},
- {m68000_base_device_ops::m68k_op_cas_16_ai, 0xfff8, 0x0cd0, {255, 255, 16, 16, 16, 16, 12}},
- {m68000_base_device_ops::m68k_op_cas_16_pi, 0xfff8, 0x0cd8, {255, 255, 16, 16, 16, 16, 12}},
- {m68000_base_device_ops::m68k_op_cas_16_pd, 0xfff8, 0x0ce0, {255, 255, 17, 17, 17, 17, 12}},
- {m68000_base_device_ops::m68k_op_cas_16_di, 0xfff8, 0x0ce8, {255, 255, 17, 17, 17, 17, 12}},
- {m68000_base_device_ops::m68k_op_cas_16_ix, 0xfff8, 0x0cf0, {255, 255, 19, 19, 19, 19, 12}},
- {m68000_base_device_ops::m68k_op_moves_8_ai, 0xfff8, 0x0e10, {255, 18, 9, 9, 9, 9, 5}},
- {m68000_base_device_ops::m68k_op_moves_8_pi, 0xfff8, 0x0e18, {255, 18, 9, 9, 9, 9, 5}},
- {m68000_base_device_ops::m68k_op_moves_8_pd, 0xfff8, 0x0e20, {255, 20, 10, 10, 10, 10, 5}},
- {m68000_base_device_ops::m68k_op_moves_8_di, 0xfff8, 0x0e28, {255, 26, 10, 10, 10, 10, 5}},
- {m68000_base_device_ops::m68k_op_moves_8_ix, 0xfff8, 0x0e30, {255, 30, 12, 12, 12, 12, 5}},
- {m68000_base_device_ops::m68k_op_moves_16_ai, 0xfff8, 0x0e50, {255, 18, 9, 9, 9, 9, 5}},
- {m68000_base_device_ops::m68k_op_moves_16_pi, 0xfff8, 0x0e58, {255, 18, 9, 9, 9, 9, 5}},
- {m68000_base_device_ops::m68k_op_moves_16_pd, 0xfff8, 0x0e60, {255, 20, 10, 10, 10, 10, 5}},
- {m68000_base_device_ops::m68k_op_moves_16_di, 0xfff8, 0x0e68, {255, 26, 10, 10, 10, 10, 5}},
- {m68000_base_device_ops::m68k_op_moves_16_ix, 0xfff8, 0x0e70, {255, 30, 12, 12, 12, 12, 5}},
- {m68000_base_device_ops::m68k_op_moves_32_ai, 0xfff8, 0x0e90, {255, 22, 9, 9, 9, 9, 5}},
- {m68000_base_device_ops::m68k_op_moves_32_pi, 0xfff8, 0x0e98, {255, 22, 9, 9, 9, 9, 5}},
- {m68000_base_device_ops::m68k_op_moves_32_pd, 0xfff8, 0x0ea0, {255, 28, 10, 10, 10, 10, 5}},
- {m68000_base_device_ops::m68k_op_moves_32_di, 0xfff8, 0x0ea8, {255, 32, 10, 10, 10, 10, 5}},
- {m68000_base_device_ops::m68k_op_moves_32_ix, 0xfff8, 0x0eb0, {255, 36, 12, 12, 12, 12, 5}},
- {m68000_base_device_ops::m68k_op_cas_32_ai, 0xfff8, 0x0ed0, {255, 255, 16, 16, 16, 16, 12}},
- {m68000_base_device_ops::m68k_op_cas_32_pi, 0xfff8, 0x0ed8, {255, 255, 16, 16, 16, 16, 12}},
- {m68000_base_device_ops::m68k_op_cas_32_pd, 0xfff8, 0x0ee0, {255, 255, 17, 17, 17, 17, 12}},
- {m68000_base_device_ops::m68k_op_cas_32_di, 0xfff8, 0x0ee8, {255, 255, 17, 17, 17, 17, 12}},
- {m68000_base_device_ops::m68k_op_cas_32_ix, 0xfff8, 0x0ef0, {255, 255, 19, 19, 19, 19, 12}},
- {m68000_base_device_ops::m68k_op_move_8_aw_d, 0xfff8, 0x11c0, { 12, 12, 4, 4, 4, 4, 4}},
- {m68000_base_device_ops::m68k_op_move_8_aw_ai, 0xfff8, 0x11d0, { 16, 16, 8, 8, 8, 8, 4}},
- {m68000_base_device_ops::m68k_op_move_8_aw_pi, 0xfff8, 0x11d8, { 16, 16, 8, 8, 8, 8, 4}},
- {m68000_base_device_ops::m68k_op_move_8_aw_pd, 0xfff8, 0x11e0, { 18, 18, 9, 9, 9, 9, 4}},
- {m68000_base_device_ops::m68k_op_move_8_aw_di, 0xfff8, 0x11e8, { 20, 20, 9, 9, 9, 9, 4}},
- {m68000_base_device_ops::m68k_op_move_8_aw_ix, 0xfff8, 0x11f0, { 22, 22, 11, 11, 11, 11, 4}},
- {m68000_base_device_ops::m68k_op_move_8_al_d, 0xfff8, 0x13c0, { 16, 16, 6, 6, 6, 6, 6}},
- {m68000_base_device_ops::m68k_op_move_8_al_ai, 0xfff8, 0x13d0, { 20, 20, 10, 10, 10, 10, 6}},
- {m68000_base_device_ops::m68k_op_move_8_al_pi, 0xfff8, 0x13d8, { 20, 20, 10, 10, 10, 10, 6}},
- {m68000_base_device_ops::m68k_op_move_8_al_pd, 0xfff8, 0x13e0, { 22, 22, 11, 11, 11, 11, 6}},
- {m68000_base_device_ops::m68k_op_move_8_al_di, 0xfff8, 0x13e8, { 24, 24, 11, 11, 11, 11, 6}},
- {m68000_base_device_ops::m68k_op_move_8_al_ix, 0xfff8, 0x13f0, { 26, 26, 13, 13, 13, 13, 6}},
- {m68000_base_device_ops::m68k_op_move_8_pi7_d, 0xfff8, 0x1ec0, { 8, 8, 4, 4, 4, 4, 4}},
- {m68000_base_device_ops::m68k_op_move_8_pi7_ai, 0xfff8, 0x1ed0, { 12, 12, 8, 8, 8, 8, 4}},
- {m68000_base_device_ops::m68k_op_move_8_pi7_pi, 0xfff8, 0x1ed8, { 12, 12, 8, 8, 8, 8, 4}},
- {m68000_base_device_ops::m68k_op_move_8_pi7_pd, 0xfff8, 0x1ee0, { 14, 14, 9, 9, 9, 9, 4}},
- {m68000_base_device_ops::m68k_op_move_8_pi7_di, 0xfff8, 0x1ee8, { 16, 16, 9, 9, 9, 9, 4}},
- {m68000_base_device_ops::m68k_op_move_8_pi7_ix, 0xfff8, 0x1ef0, { 18, 18, 11, 11, 11, 11, 4}},
- {m68000_base_device_ops::m68k_op_move_8_pd7_d, 0xfff8, 0x1f00, { 8, 8, 5, 5, 5, 5, 5}},
- {m68000_base_device_ops::m68k_op_move_8_pd7_ai, 0xfff8, 0x1f10, { 12, 12, 9, 9, 9, 9, 5}},
- {m68000_base_device_ops::m68k_op_move_8_pd7_pi, 0xfff8, 0x1f18, { 12, 12, 9, 9, 9, 9, 5}},
- {m68000_base_device_ops::m68k_op_move_8_pd7_pd, 0xfff8, 0x1f20, { 14, 14, 10, 10, 10, 10, 5}},
- {m68000_base_device_ops::m68k_op_move_8_pd7_di, 0xfff8, 0x1f28, { 16, 16, 10, 10, 10, 10, 5}},
- {m68000_base_device_ops::m68k_op_move_8_pd7_ix, 0xfff8, 0x1f30, { 18, 18, 12, 12, 12, 12, 5}},
- {m68000_base_device_ops::m68k_op_move_32_aw_d, 0xfff8, 0x21c0, { 16, 16, 4, 4, 4, 4, 4}},
- {m68000_base_device_ops::m68k_op_move_32_aw_a, 0xfff8, 0x21c8, { 16, 16, 4, 4, 4, 4, 4}},
- {m68000_base_device_ops::m68k_op_move_32_aw_ai, 0xfff8, 0x21d0, { 24, 24, 8, 8, 8, 8, 4}},
- {m68000_base_device_ops::m68k_op_move_32_aw_pi, 0xfff8, 0x21d8, { 24, 24, 8, 8, 8, 8, 4}},
- {m68000_base_device_ops::m68k_op_move_32_aw_pd, 0xfff8, 0x21e0, { 26, 26, 9, 9, 9, 9, 4}},
- {m68000_base_device_ops::m68k_op_move_32_aw_di, 0xfff8, 0x21e8, { 28, 28, 9, 9, 9, 9, 4}},
- {m68000_base_device_ops::m68k_op_move_32_aw_ix, 0xfff8, 0x21f0, { 30, 30, 11, 11, 11, 11, 4}},
- {m68000_base_device_ops::m68k_op_move_32_al_d, 0xfff8, 0x23c0, { 20, 20, 6, 6, 6, 6, 6}},
- {m68000_base_device_ops::m68k_op_move_32_al_a, 0xfff8, 0x23c8, { 20, 20, 6, 6, 6, 6, 6}},
- {m68000_base_device_ops::m68k_op_move_32_al_ai, 0xfff8, 0x23d0, { 28, 28, 10, 10, 10, 10, 6}},
- {m68000_base_device_ops::m68k_op_move_32_al_pi, 0xfff8, 0x23d8, { 28, 28, 10, 10, 10, 10, 6}},
- {m68000_base_device_ops::m68k_op_move_32_al_pd, 0xfff8, 0x23e0, { 30, 30, 11, 11, 11, 11, 6}},
- {m68000_base_device_ops::m68k_op_move_32_al_di, 0xfff8, 0x23e8, { 32, 32, 11, 11, 11, 11, 6}},
- {m68000_base_device_ops::m68k_op_move_32_al_ix, 0xfff8, 0x23f0, { 34, 34, 13, 13, 13, 13, 6}},
- {m68000_base_device_ops::m68k_op_move_16_aw_d, 0xfff8, 0x31c0, { 12, 12, 4, 4, 4, 4, 4}},
- {m68000_base_device_ops::m68k_op_move_16_aw_a, 0xfff8, 0x31c8, { 12, 12, 4, 4, 4, 4, 4}},
- {m68000_base_device_ops::m68k_op_move_16_aw_ai, 0xfff8, 0x31d0, { 16, 16, 8, 8, 8, 8, 4}},
- {m68000_base_device_ops::m68k_op_move_16_aw_pi, 0xfff8, 0x31d8, { 16, 16, 8, 8, 8, 8, 4}},
- {m68000_base_device_ops::m68k_op_move_16_aw_pd, 0xfff8, 0x31e0, { 18, 18, 9, 9, 9, 9, 4}},
- {m68000_base_device_ops::m68k_op_move_16_aw_di, 0xfff8, 0x31e8, { 20, 20, 9, 9, 9, 9, 4}},
- {m68000_base_device_ops::m68k_op_move_16_aw_ix, 0xfff8, 0x31f0, { 22, 22, 11, 11, 11, 11, 4}},
- {m68000_base_device_ops::m68k_op_move_16_al_d, 0xfff8, 0x33c0, { 16, 16, 6, 6, 6, 6, 6}},
- {m68000_base_device_ops::m68k_op_move_16_al_a, 0xfff8, 0x33c8, { 16, 16, 6, 6, 6, 6, 6}},
- {m68000_base_device_ops::m68k_op_move_16_al_ai, 0xfff8, 0x33d0, { 20, 20, 10, 10, 10, 10, 6}},
- {m68000_base_device_ops::m68k_op_move_16_al_pi, 0xfff8, 0x33d8, { 20, 20, 10, 10, 10, 10, 6}},
- {m68000_base_device_ops::m68k_op_move_16_al_pd, 0xfff8, 0x33e0, { 22, 22, 11, 11, 11, 11, 6}},
- {m68000_base_device_ops::m68k_op_move_16_al_di, 0xfff8, 0x33e8, { 24, 24, 11, 11, 11, 11, 6}},
- {m68000_base_device_ops::m68k_op_move_16_al_ix, 0xfff8, 0x33f0, { 26, 26, 13, 13, 13, 13, 6}},
- {m68000_base_device_ops::m68k_op_negx_8_d, 0xfff8, 0x4000, { 4, 4, 2, 2, 2, 2, 2}},
- {m68000_base_device_ops::m68k_op_negx_8_ai, 0xfff8, 0x4010, { 12, 12, 8, 8, 8, 8, 4}},
- {m68000_base_device_ops::m68k_op_negx_8_pi, 0xfff8, 0x4018, { 12, 12, 8, 8, 8, 8, 4}},
- {m68000_base_device_ops::m68k_op_negx_8_pd, 0xfff8, 0x4020, { 14, 14, 9, 9, 9, 9, 4}},
- {m68000_base_device_ops::m68k_op_negx_8_di, 0xfff8, 0x4028, { 16, 16, 9, 9, 9, 9, 4}},
- {m68000_base_device_ops::m68k_op_negx_8_ix, 0xfff8, 0x4030, { 18, 18, 11, 11, 11, 11, 4}},
- {m68000_base_device_ops::m68k_op_negx_16_d, 0xfff8, 0x4040, { 4, 4, 2, 2, 2, 2, 2}},
- {m68000_base_device_ops::m68k_op_negx_16_ai, 0xfff8, 0x4050, { 12, 12, 8, 8, 8, 8, 4}},
- {m68000_base_device_ops::m68k_op_negx_16_pi, 0xfff8, 0x4058, { 12, 12, 8, 8, 8, 8, 4}},
- {m68000_base_device_ops::m68k_op_negx_16_pd, 0xfff8, 0x4060, { 14, 14, 9, 9, 9, 9, 4}},
- {m68000_base_device_ops::m68k_op_negx_16_di, 0xfff8, 0x4068, { 16, 16, 9, 9, 9, 9, 4}},
- {m68000_base_device_ops::m68k_op_negx_16_ix, 0xfff8, 0x4070, { 18, 18, 11, 11, 11, 11, 4}},
- {m68000_base_device_ops::m68k_op_negx_32_d, 0xfff8, 0x4080, { 6, 6, 2, 2, 2, 2, 2}},
- {m68000_base_device_ops::m68k_op_negx_32_ai, 0xfff8, 0x4090, { 20, 20, 8, 8, 8, 8, 4}},
- {m68000_base_device_ops::m68k_op_negx_32_pi, 0xfff8, 0x4098, { 20, 20, 8, 8, 8, 8, 4}},
- {m68000_base_device_ops::m68k_op_negx_32_pd, 0xfff8, 0x40a0, { 22, 22, 9, 9, 9, 9, 4}},
- {m68000_base_device_ops::m68k_op_negx_32_di, 0xfff8, 0x40a8, { 24, 24, 9, 9, 9, 9, 4}},
- {m68000_base_device_ops::m68k_op_negx_32_ix, 0xfff8, 0x40b0, { 26, 26, 11, 11, 11, 11, 4}},
- {m68000_base_device_ops::m68k_op_move_16_frs_d, 0xfff8, 0x40c0, { 6, 4, 8, 8, 8, 8, 8}},
- {m68000_base_device_ops::m68k_op_move_16_frs_ai, 0xfff8, 0x40d0, { 12, 12, 12, 12, 12, 12, 8}},
- {m68000_base_device_ops::m68k_op_move_16_frs_pi, 0xfff8, 0x40d8, { 12, 12, 12, 12, 12, 12, 8}},
- {m68000_base_device_ops::m68k_op_move_16_frs_pd, 0xfff8, 0x40e0, { 14, 14, 13, 13, 13, 13, 8}},
- {m68000_base_device_ops::m68k_op_move_16_frs_di, 0xfff8, 0x40e8, { 16, 16, 13, 13, 13, 13, 8}},
- {m68000_base_device_ops::m68k_op_move_16_frs_ix, 0xfff8, 0x40f0, { 18, 18, 15, 15, 15, 15, 8}},
- {m68000_base_device_ops::m68k_op_clr_8_d, 0xfff8, 0x4200, { 4, 4, 2, 2, 2, 2, 2}},
- {m68000_base_device_ops::m68k_op_clr_8_ai, 0xfff8, 0x4210, { 12, 8, 8, 8, 8, 8, 4}},
- {m68000_base_device_ops::m68k_op_clr_8_pi, 0xfff8, 0x4218, { 12, 8, 8, 8, 8, 8, 4}},
- {m68000_base_device_ops::m68k_op_clr_8_pd, 0xfff8, 0x4220, { 14, 10, 9, 9, 9, 9, 4}},
- {m68000_base_device_ops::m68k_op_clr_8_di, 0xfff8, 0x4228, { 16, 12, 9, 9, 9, 9, 4}},
- {m68000_base_device_ops::m68k_op_clr_8_ix, 0xfff8, 0x4230, { 18, 14, 11, 11, 11, 11, 4}},
- {m68000_base_device_ops::m68k_op_clr_16_d, 0xfff8, 0x4240, { 4, 4, 2, 2, 2, 2, 2}},
- {m68000_base_device_ops::m68k_op_clr_16_ai, 0xfff8, 0x4250, { 12, 8, 8, 8, 8, 8, 4}},
- {m68000_base_device_ops::m68k_op_clr_16_pi, 0xfff8, 0x4258, { 12, 8, 8, 8, 8, 8, 4}},
- {m68000_base_device_ops::m68k_op_clr_16_pd, 0xfff8, 0x4260, { 14, 10, 9, 9, 9, 9, 4}},
- {m68000_base_device_ops::m68k_op_clr_16_di, 0xfff8, 0x4268, { 16, 12, 9, 9, 9, 9, 4}},
- {m68000_base_device_ops::m68k_op_clr_16_ix, 0xfff8, 0x4270, { 18, 14, 11, 11, 11, 11, 4}},
- {m68000_base_device_ops::m68k_op_clr_32_d, 0xfff8, 0x4280, { 6, 6, 2, 2, 2, 2, 2}},
- {m68000_base_device_ops::m68k_op_clr_32_ai, 0xfff8, 0x4290, { 20, 12, 8, 8, 8, 8, 4}},
- {m68000_base_device_ops::m68k_op_clr_32_pi, 0xfff8, 0x4298, { 20, 12, 8, 8, 8, 8, 4}},
- {m68000_base_device_ops::m68k_op_clr_32_pd, 0xfff8, 0x42a0, { 22, 14, 9, 9, 9, 9, 4}},
- {m68000_base_device_ops::m68k_op_clr_32_di, 0xfff8, 0x42a8, { 24, 16, 9, 9, 9, 9, 4}},
- {m68000_base_device_ops::m68k_op_clr_32_ix, 0xfff8, 0x42b0, { 26, 20, 11, 11, 11, 11, 4}},
- {m68000_base_device_ops::m68k_op_move_16_frc_d, 0xfff8, 0x42c0, {255, 4, 4, 4, 4, 4, 4}},
- {m68000_base_device_ops::m68k_op_move_16_frc_ai, 0xfff8, 0x42d0, {255, 12, 8, 8, 8, 8, 4}},
- {m68000_base_device_ops::m68k_op_move_16_frc_pi, 0xfff8, 0x42d8, {255, 12, 8, 8, 8, 8, 4}},
- {m68000_base_device_ops::m68k_op_move_16_frc_pd, 0xfff8, 0x42e0, {255, 14, 9, 9, 9, 9, 4}},
- {m68000_base_device_ops::m68k_op_move_16_frc_di, 0xfff8, 0x42e8, {255, 16, 9, 9, 9, 9, 4}},
- {m68000_base_device_ops::m68k_op_move_16_frc_ix, 0xfff8, 0x42f0, {255, 18, 11, 11, 11, 11, 4}},
- {m68000_base_device_ops::m68k_op_neg_8_d, 0xfff8, 0x4400, { 4, 4, 2, 2, 2, 2, 2}},
- {m68000_base_device_ops::m68k_op_neg_8_ai, 0xfff8, 0x4410, { 12, 12, 8, 8, 8, 8, 4}},
- {m68000_base_device_ops::m68k_op_neg_8_pi, 0xfff8, 0x4418, { 12, 12, 8, 8, 8, 8, 4}},
- {m68000_base_device_ops::m68k_op_neg_8_pd, 0xfff8, 0x4420, { 14, 14, 9, 9, 9, 9, 4}},
- {m68000_base_device_ops::m68k_op_neg_8_di, 0xfff8, 0x4428, { 16, 16, 9, 9, 9, 9, 4}},
- {m68000_base_device_ops::m68k_op_neg_8_ix, 0xfff8, 0x4430, { 18, 18, 11, 11, 11, 11, 4}},
- {m68000_base_device_ops::m68k_op_neg_16_d, 0xfff8, 0x4440, { 4, 4, 2, 2, 2, 2, 2}},
- {m68000_base_device_ops::m68k_op_neg_16_ai, 0xfff8, 0x4450, { 12, 12, 8, 8, 8, 8, 4}},
- {m68000_base_device_ops::m68k_op_neg_16_pi, 0xfff8, 0x4458, { 12, 12, 8, 8, 8, 8, 4}},
- {m68000_base_device_ops::m68k_op_neg_16_pd, 0xfff8, 0x4460, { 14, 14, 9, 9, 9, 9, 4}},
- {m68000_base_device_ops::m68k_op_neg_16_di, 0xfff8, 0x4468, { 16, 16, 9, 9, 9, 9, 4}},
- {m68000_base_device_ops::m68k_op_neg_16_ix, 0xfff8, 0x4470, { 18, 18, 11, 11, 11, 11, 4}},
- {m68000_base_device_ops::m68k_op_neg_32_d, 0xfff8, 0x4480, { 6, 6, 2, 2, 2, 2, 2}},
- {m68000_base_device_ops::m68k_op_neg_32_ai, 0xfff8, 0x4490, { 20, 20, 8, 8, 8, 8, 4}},
- {m68000_base_device_ops::m68k_op_neg_32_pi, 0xfff8, 0x4498, { 20, 20, 8, 8, 8, 8, 4}},
- {m68000_base_device_ops::m68k_op_neg_32_pd, 0xfff8, 0x44a0, { 22, 22, 9, 9, 9, 9, 4}},
- {m68000_base_device_ops::m68k_op_neg_32_di, 0xfff8, 0x44a8, { 24, 24, 9, 9, 9, 9, 4}},
- {m68000_base_device_ops::m68k_op_neg_32_ix, 0xfff8, 0x44b0, { 26, 26, 11, 11, 11, 11, 4}},
- {m68000_base_device_ops::m68k_op_move_16_toc_d, 0xfff8, 0x44c0, { 12, 12, 4, 4, 4, 4, 4}},
- {m68000_base_device_ops::m68k_op_move_16_toc_ai, 0xfff8, 0x44d0, { 16, 16, 8, 8, 8, 8, 4}},
- {m68000_base_device_ops::m68k_op_move_16_toc_pi, 0xfff8, 0x44d8, { 16, 16, 8, 8, 8, 8, 4}},
- {m68000_base_device_ops::m68k_op_move_16_toc_pd, 0xfff8, 0x44e0, { 18, 18, 9, 9, 9, 9, 4}},
- {m68000_base_device_ops::m68k_op_move_16_toc_di, 0xfff8, 0x44e8, { 20, 20, 9, 9, 9, 9, 4}},
- {m68000_base_device_ops::m68k_op_move_16_toc_ix, 0xfff8, 0x44f0, { 22, 22, 11, 11, 11, 11, 4}},
- {m68000_base_device_ops::m68k_op_not_8_d, 0xfff8, 0x4600, { 4, 4, 2, 2, 2, 2, 2}},
- {m68000_base_device_ops::m68k_op_not_8_ai, 0xfff8, 0x4610, { 12, 12, 8, 8, 8, 8, 4}},
- {m68000_base_device_ops::m68k_op_not_8_pi, 0xfff8, 0x4618, { 12, 12, 8, 8, 8, 8, 4}},
- {m68000_base_device_ops::m68k_op_not_8_pd, 0xfff8, 0x4620, { 14, 14, 9, 9, 9, 9, 4}},
- {m68000_base_device_ops::m68k_op_not_8_di, 0xfff8, 0x4628, { 16, 16, 9, 9, 9, 9, 4}},
- {m68000_base_device_ops::m68k_op_not_8_ix, 0xfff8, 0x4630, { 18, 18, 11, 11, 11, 11, 4}},
- {m68000_base_device_ops::m68k_op_not_16_d, 0xfff8, 0x4640, { 4, 4, 2, 2, 2, 2, 2}},
- {m68000_base_device_ops::m68k_op_not_16_ai, 0xfff8, 0x4650, { 12, 12, 8, 8, 8, 8, 4}},
- {m68000_base_device_ops::m68k_op_not_16_pi, 0xfff8, 0x4658, { 12, 12, 8, 8, 8, 8, 4}},
- {m68000_base_device_ops::m68k_op_not_16_pd, 0xfff8, 0x4660, { 14, 14, 9, 9, 9, 9, 4}},
- {m68000_base_device_ops::m68k_op_not_16_di, 0xfff8, 0x4668, { 16, 16, 9, 9, 9, 9, 4}},
- {m68000_base_device_ops::m68k_op_not_16_ix, 0xfff8, 0x4670, { 18, 18, 11, 11, 11, 11, 4}},
- {m68000_base_device_ops::m68k_op_not_32_d, 0xfff8, 0x4680, { 6, 6, 2, 2, 2, 2, 2}},
- {m68000_base_device_ops::m68k_op_not_32_ai, 0xfff8, 0x4690, { 20, 20, 8, 8, 8, 8, 4}},
- {m68000_base_device_ops::m68k_op_not_32_pi, 0xfff8, 0x4698, { 20, 20, 8, 8, 8, 8, 4}},
- {m68000_base_device_ops::m68k_op_not_32_pd, 0xfff8, 0x46a0, { 22, 22, 9, 9, 9, 9, 4}},
- {m68000_base_device_ops::m68k_op_not_32_di, 0xfff8, 0x46a8, { 24, 24, 9, 9, 9, 9, 4}},
- {m68000_base_device_ops::m68k_op_not_32_ix, 0xfff8, 0x46b0, { 26, 26, 11, 11, 11, 11, 4}},
- {m68000_base_device_ops::m68k_op_move_16_tos_d, 0xfff8, 0x46c0, { 12, 12, 8, 8, 8, 8, 8}},
- {m68000_base_device_ops::m68k_op_move_16_tos_ai, 0xfff8, 0x46d0, { 16, 16, 12, 12, 12, 12, 8}},
- {m68000_base_device_ops::m68k_op_move_16_tos_pi, 0xfff8, 0x46d8, { 16, 16, 12, 12, 12, 12, 8}},
- {m68000_base_device_ops::m68k_op_move_16_tos_pd, 0xfff8, 0x46e0, { 18, 18, 13, 13, 13, 13, 8}},
- {m68000_base_device_ops::m68k_op_move_16_tos_di, 0xfff8, 0x46e8, { 20, 20, 13, 13, 13, 13, 8}},
- {m68000_base_device_ops::m68k_op_move_16_tos_ix, 0xfff8, 0x46f0, { 22, 22, 15, 15, 15, 15, 8}},
- {m68000_base_device_ops::m68k_op_nbcd_8_d, 0xfff8, 0x4800, { 6, 6, 6, 6, 6, 6, 6}},
- {m68000_base_device_ops::m68k_op_link_32, 0xfff8, 0x4808, {255, 255, 6, 6, 6, 6, 6}},
- {m68000_base_device_ops::m68k_op_nbcd_8_ai, 0xfff8, 0x4810, { 12, 12, 10, 10, 10, 10, 6}},
- {m68000_base_device_ops::m68k_op_nbcd_8_pi, 0xfff8, 0x4818, { 12, 12, 10, 10, 10, 10, 6}},
- {m68000_base_device_ops::m68k_op_nbcd_8_pd, 0xfff8, 0x4820, { 14, 14, 11, 11, 11, 11, 6}},
- {m68000_base_device_ops::m68k_op_nbcd_8_di, 0xfff8, 0x4828, { 16, 16, 11, 11, 11, 11, 6}},
- {m68000_base_device_ops::m68k_op_nbcd_8_ix, 0xfff8, 0x4830, { 18, 18, 13, 13, 13, 13, 6}},
- {m68000_base_device_ops::m68k_op_swap_32, 0xfff8, 0x4840, { 4, 4, 4, 4, 4, 4, 4}},
- {m68000_base_device_ops::m68k_op_bkpt, 0xfff8, 0x4848, {255, 10, 10, 10, 10, 10, 10}},
- {m68000_base_device_ops::m68k_op_pea_32_ai, 0xfff8, 0x4850, { 12, 12, 9, 9, 9, 9, 5}},
- {m68000_base_device_ops::m68k_op_pea_32_di, 0xfff8, 0x4868, { 16, 16, 10, 10, 10, 10, 5}},
- {m68000_base_device_ops::m68k_op_pea_32_ix, 0xfff8, 0x4870, { 20, 20, 12, 12, 12, 12, 5}},
- {m68000_base_device_ops::m68k_op_ext_16, 0xfff8, 0x4880, { 4, 4, 4, 4, 4, 4, 4}},
- {m68000_base_device_ops::m68k_op_movem_16_re_ai, 0xfff8, 0x4890, { 8, 8, 8, 8, 8, 8, 4}},
- {m68000_base_device_ops::m68k_op_movem_16_re_pd, 0xfff8, 0x48a0, { 8, 8, 4, 4, 4, 4, 4}},
- {m68000_base_device_ops::m68k_op_movem_16_re_di, 0xfff8, 0x48a8, { 12, 12, 9, 9, 9, 9, 4}},
- {m68000_base_device_ops::m68k_op_movem_16_re_ix, 0xfff8, 0x48b0, { 14, 14, 11, 11, 11, 11, 4}},
- {m68000_base_device_ops::m68k_op_ext_32, 0xfff8, 0x48c0, { 4, 4, 4, 4, 4, 4, 4}},
- {m68000_base_device_ops::m68k_op_movem_32_re_ai, 0xfff8, 0x48d0, { 8, 8, 8, 8, 8, 8, 4}},
- {m68000_base_device_ops::m68k_op_movem_32_re_pd, 0xfff8, 0x48e0, { 8, 8, 4, 4, 4, 4, 4}},
- {m68000_base_device_ops::m68k_op_movem_32_re_di, 0xfff8, 0x48e8, { 12, 12, 9, 9, 9, 9, 4}},
- {m68000_base_device_ops::m68k_op_movem_32_re_ix, 0xfff8, 0x48f0, { 14, 14, 11, 11, 11, 11, 4}},
- {m68000_base_device_ops::m68k_op_extb_32, 0xfff8, 0x49c0, {255, 255, 4, 4, 4, 4, 4}},
- {m68000_base_device_ops::m68k_op_tst_8_d, 0xfff8, 0x4a00, { 4, 4, 2, 2, 2, 2, 2}},
- {m68000_base_device_ops::m68k_op_tst_8_ai, 0xfff8, 0x4a10, { 8, 8, 6, 6, 6, 6, 2}},
- {m68000_base_device_ops::m68k_op_tst_8_pi, 0xfff8, 0x4a18, { 8, 8, 6, 6, 6, 6, 2}},
- {m68000_base_device_ops::m68k_op_tst_8_pd, 0xfff8, 0x4a20, { 10, 10, 7, 7, 7, 7, 2}},
- {m68000_base_device_ops::m68k_op_tst_8_di, 0xfff8, 0x4a28, { 12, 12, 7, 7, 7, 7, 2}},
- {m68000_base_device_ops::m68k_op_tst_8_ix, 0xfff8, 0x4a30, { 14, 14, 9, 9, 9, 9, 2}},
- {m68000_base_device_ops::m68k_op_tst_16_d, 0xfff8, 0x4a40, { 4, 4, 2, 2, 2, 2, 2}},
- {m68000_base_device_ops::m68k_op_tst_16_a, 0xfff8, 0x4a48, {255, 255, 2, 2, 2, 2, 2}},
- {m68000_base_device_ops::m68k_op_tst_16_ai, 0xfff8, 0x4a50, { 8, 8, 6, 6, 6, 6, 2}},
- {m68000_base_device_ops::m68k_op_tst_16_pi, 0xfff8, 0x4a58, { 8, 8, 6, 6, 6, 6, 2}},
- {m68000_base_device_ops::m68k_op_tst_16_pd, 0xfff8, 0x4a60, { 10, 10, 7, 7, 7, 7, 2}},
- {m68000_base_device_ops::m68k_op_tst_16_di, 0xfff8, 0x4a68, { 12, 12, 7, 7, 7, 7, 2}},
- {m68000_base_device_ops::m68k_op_tst_16_ix, 0xfff8, 0x4a70, { 14, 14, 9, 9, 9, 9, 2}},
- {m68000_base_device_ops::m68k_op_tst_32_d, 0xfff8, 0x4a80, { 4, 4, 2, 2, 2, 2, 2}},
- {m68000_base_device_ops::m68k_op_tst_32_a, 0xfff8, 0x4a88, {255, 255, 2, 2, 2, 2, 2}},
- {m68000_base_device_ops::m68k_op_tst_32_ai, 0xfff8, 0x4a90, { 12, 12, 6, 6, 6, 6, 2}},
- {m68000_base_device_ops::m68k_op_tst_32_pi, 0xfff8, 0x4a98, { 12, 12, 6, 6, 6, 6, 2}},
- {m68000_base_device_ops::m68k_op_tst_32_pd, 0xfff8, 0x4aa0, { 14, 14, 7, 7, 7, 7, 2}},
- {m68000_base_device_ops::m68k_op_tst_32_di, 0xfff8, 0x4aa8, { 16, 16, 7, 7, 7, 7, 2}},
- {m68000_base_device_ops::m68k_op_tst_32_ix, 0xfff8, 0x4ab0, { 18, 18, 9, 9, 9, 9, 2}},
- {m68000_base_device_ops::m68k_op_tas_8_d, 0xfff8, 0x4ac0, { 4, 4, 4, 4, 4, 4, 4}},
- {m68000_base_device_ops::m68k_op_tas_8_ai, 0xfff8, 0x4ad0, { 18, 18, 16, 16, 16, 16, 12}},
- {m68000_base_device_ops::m68k_op_tas_8_pi, 0xfff8, 0x4ad8, { 18, 18, 16, 16, 16, 16, 12}},
- {m68000_base_device_ops::m68k_op_tas_8_pd, 0xfff8, 0x4ae0, { 20, 20, 17, 17, 17, 17, 12}},
- {m68000_base_device_ops::m68k_op_tas_8_di, 0xfff8, 0x4ae8, { 22, 22, 17, 17, 17, 17, 12}},
- {m68000_base_device_ops::m68k_op_tas_8_ix, 0xfff8, 0x4af0, { 24, 24, 19, 19, 19, 19, 12}},
- {m68000_base_device_ops::m68k_op_mull_32_d, 0xfff8, 0x4c00, {255, 255, 43, 43, 43, 43, 43}},
- {m68000_base_device_ops::m68k_op_mull_32_ai, 0xfff8, 0x4c10, {255, 255, 47, 47, 47, 47, 43}},
- {m68000_base_device_ops::m68k_op_mull_32_pi, 0xfff8, 0x4c18, {255, 255, 47, 47, 47, 47, 43}},
- {m68000_base_device_ops::m68k_op_mull_32_pd, 0xfff8, 0x4c20, {255, 255, 48, 48, 48, 48, 43}},
- {m68000_base_device_ops::m68k_op_mull_32_di, 0xfff8, 0x4c28, {255, 255, 48, 48, 48, 48, 43}},
- {m68000_base_device_ops::m68k_op_mull_32_ix, 0xfff8, 0x4c30, {255, 255, 50, 50, 50, 50, 43}},
- {m68000_base_device_ops::m68k_op_divl_32_d, 0xfff8, 0x4c40, {255, 255, 84, 84, 84, 84, 84}},
- {m68000_base_device_ops::m68k_op_divl_32_ai, 0xfff8, 0x4c50, {255, 255, 88, 88, 88, 88, 84}},
- {m68000_base_device_ops::m68k_op_divl_32_pi, 0xfff8, 0x4c58, {255, 255, 88, 88, 88, 88, 84}},
- {m68000_base_device_ops::m68k_op_divl_32_pd, 0xfff8, 0x4c60, {255, 255, 89, 89, 89, 89, 84}},
- {m68000_base_device_ops::m68k_op_divl_32_di, 0xfff8, 0x4c68, {255, 255, 89, 89, 89, 89, 84}},
- {m68000_base_device_ops::m68k_op_divl_32_ix, 0xfff8, 0x4c70, {255, 255, 91, 91, 91, 91, 84}},
- {m68000_base_device_ops::m68k_op_movem_16_er_ai, 0xfff8, 0x4c90, { 12, 12, 12, 12, 12, 12, 8}},
- {m68000_base_device_ops::m68k_op_movem_16_er_pi, 0xfff8, 0x4c98, { 12, 12, 8, 8, 8, 8, 8}},
- {m68000_base_device_ops::m68k_op_movem_16_er_di, 0xfff8, 0x4ca8, { 16, 16, 13, 13, 13, 13, 8}},
- {m68000_base_device_ops::m68k_op_movem_16_er_ix, 0xfff8, 0x4cb0, { 18, 18, 15, 15, 15, 15, 8}},
- {m68000_base_device_ops::m68k_op_movem_32_er_ai, 0xfff8, 0x4cd0, { 12, 12, 12, 12, 12, 12, 8}},
- {m68000_base_device_ops::m68k_op_movem_32_er_pi, 0xfff8, 0x4cd8, { 12, 12, 8, 8, 8, 8, 8}},
- {m68000_base_device_ops::m68k_op_movem_32_er_di, 0xfff8, 0x4ce8, { 16, 16, 13, 13, 13, 13, 8}},
- {m68000_base_device_ops::m68k_op_movem_32_er_ix, 0xfff8, 0x4cf0, { 18, 18, 15, 15, 15, 15, 8}},
- {m68000_base_device_ops::m68k_op_link_16, 0xfff8, 0x4e50, { 16, 16, 5, 5, 5, 5, 5}},
- {m68000_base_device_ops::m68k_op_unlk_32, 0xfff8, 0x4e58, { 12, 12, 6, 6, 6, 6, 6}},
- {m68000_base_device_ops::m68k_op_move_32_tou, 0xfff8, 0x4e60, { 4, 6, 2, 2, 2, 2, 2}},
- {m68000_base_device_ops::m68k_op_move_32_fru, 0xfff8, 0x4e68, { 4, 6, 2, 2, 2, 2, 2}},
- {m68000_base_device_ops::m68k_op_jsr_32_ai, 0xfff8, 0x4e90, { 16, 16, 4, 4, 4, 4, 0}},
- {m68000_base_device_ops::m68k_op_jsr_32_di, 0xfff8, 0x4ea8, { 18, 18, 5, 5, 5, 5, 0}},
- {m68000_base_device_ops::m68k_op_jsr_32_ix, 0xfff8, 0x4eb0, { 22, 22, 7, 7, 7, 7, 0}},
- {m68000_base_device_ops::m68k_op_jmp_32_ai, 0xfff8, 0x4ed0, { 8, 8, 4, 4, 4, 4, 0}},
- {m68000_base_device_ops::m68k_op_jmp_32_di, 0xfff8, 0x4ee8, { 10, 10, 5, 5, 5, 5, 0}},
- {m68000_base_device_ops::m68k_op_jmp_32_ix, 0xfff8, 0x4ef0, { 14, 14, 7, 7, 7, 7, 0}},
- {m68000_base_device_ops::m68k_op_st_8_d, 0xfff8, 0x50c0, { 6, 4, 4, 4, 4, 4, 4}},
- {m68000_base_device_ops::m68k_op_dbt_16, 0xfff8, 0x50c8, { 12, 12, 6, 6, 6, 6, 6}},
- {m68000_base_device_ops::m68k_op_st_8_ai, 0xfff8, 0x50d0, { 12, 12, 10, 10, 10, 10, 6}},
- {m68000_base_device_ops::m68k_op_st_8_pi, 0xfff8, 0x50d8, { 12, 12, 10, 10, 10, 10, 6}},
- {m68000_base_device_ops::m68k_op_st_8_pd, 0xfff8, 0x50e0, { 14, 14, 11, 11, 11, 11, 6}},
- {m68000_base_device_ops::m68k_op_st_8_di, 0xfff8, 0x50e8, { 16, 16, 11, 11, 11, 11, 6}},
- {m68000_base_device_ops::m68k_op_st_8_ix, 0xfff8, 0x50f0, { 18, 18, 13, 13, 13, 13, 6}},
- {m68000_base_device_ops::m68k_op_sf_8_d, 0xfff8, 0x51c0, { 4, 4, 4, 4, 4, 4, 4}},
- {m68000_base_device_ops::m68k_op_dbf_16, 0xfff8, 0x51c8, { 12, 12, 6, 4, 4, 4, 4}},
- {m68000_base_device_ops::m68k_op_sf_8_ai, 0xfff8, 0x51d0, { 12, 12, 10, 10, 10, 10, 6}},
- {m68000_base_device_ops::m68k_op_sf_8_pi, 0xfff8, 0x51d8, { 12, 12, 10, 10, 10, 10, 6}},
- {m68000_base_device_ops::m68k_op_sf_8_pd, 0xfff8, 0x51e0, { 14, 14, 11, 11, 11, 11, 6}},
- {m68000_base_device_ops::m68k_op_sf_8_di, 0xfff8, 0x51e8, { 16, 16, 11, 11, 11, 11, 6}},
- {m68000_base_device_ops::m68k_op_sf_8_ix, 0xfff8, 0x51f0, { 18, 18, 13, 13, 13, 13, 6}},
- {m68000_base_device_ops::m68k_op_shi_8_d, 0xfff8, 0x52c0, { 4, 4, 4, 4, 4, 4, 4}},
- {m68000_base_device_ops::m68k_op_dbhi_16, 0xfff8, 0x52c8, { 12, 12, 6, 6, 6, 6, 6}},
- {m68000_base_device_ops::m68k_op_shi_8_ai, 0xfff8, 0x52d0, { 12, 12, 10, 10, 10, 10, 6}},
- {m68000_base_device_ops::m68k_op_shi_8_pi, 0xfff8, 0x52d8, { 12, 12, 10, 10, 10, 10, 6}},
- {m68000_base_device_ops::m68k_op_shi_8_pd, 0xfff8, 0x52e0, { 14, 14, 11, 11, 11, 11, 6}},
- {m68000_base_device_ops::m68k_op_shi_8_di, 0xfff8, 0x52e8, { 16, 16, 11, 11, 11, 11, 6}},
- {m68000_base_device_ops::m68k_op_shi_8_ix, 0xfff8, 0x52f0, { 18, 18, 13, 13, 13, 13, 6}},
- {m68000_base_device_ops::m68k_op_sls_8_d, 0xfff8, 0x53c0, { 4, 4, 4, 4, 4, 4, 4}},
- {m68000_base_device_ops::m68k_op_dbls_16, 0xfff8, 0x53c8, { 12, 12, 6, 6, 6, 6, 6}},
- {m68000_base_device_ops::m68k_op_sls_8_ai, 0xfff8, 0x53d0, { 12, 12, 10, 10, 10, 10, 6}},
- {m68000_base_device_ops::m68k_op_sls_8_pi, 0xfff8, 0x53d8, { 12, 12, 10, 10, 10, 10, 6}},
- {m68000_base_device_ops::m68k_op_sls_8_pd, 0xfff8, 0x53e0, { 14, 14, 11, 11, 11, 11, 6}},
- {m68000_base_device_ops::m68k_op_sls_8_di, 0xfff8, 0x53e8, { 16, 16, 11, 11, 11, 11, 6}},
- {m68000_base_device_ops::m68k_op_sls_8_ix, 0xfff8, 0x53f0, { 18, 18, 13, 13, 13, 13, 6}},
- {m68000_base_device_ops::m68k_op_scc_8_d, 0xfff8, 0x54c0, { 4, 4, 4, 4, 4, 4, 4}},
- {m68000_base_device_ops::m68k_op_dbcc_16, 0xfff8, 0x54c8, { 12, 12, 6, 6, 6, 6, 6}},
- {m68000_base_device_ops::m68k_op_scc_8_ai, 0xfff8, 0x54d0, { 12, 12, 10, 10, 10, 10, 6}},
- {m68000_base_device_ops::m68k_op_scc_8_pi, 0xfff8, 0x54d8, { 12, 12, 10, 10, 10, 10, 6}},
- {m68000_base_device_ops::m68k_op_scc_8_pd, 0xfff8, 0x54e0, { 14, 14, 11, 11, 11, 11, 6}},
- {m68000_base_device_ops::m68k_op_scc_8_di, 0xfff8, 0x54e8, { 16, 16, 11, 11, 11, 11, 6}},
- {m68000_base_device_ops::m68k_op_scc_8_ix, 0xfff8, 0x54f0, { 18, 18, 13, 13, 13, 13, 6}},
- {m68000_base_device_ops::m68k_op_scs_8_d, 0xfff8, 0x55c0, { 4, 4, 4, 4, 4, 4, 4}},
- {m68000_base_device_ops::m68k_op_dbcs_16, 0xfff8, 0x55c8, { 12, 12, 6, 6, 6, 6, 6}},
- {m68000_base_device_ops::m68k_op_scs_8_ai, 0xfff8, 0x55d0, { 12, 12, 10, 10, 10, 10, 6}},
- {m68000_base_device_ops::m68k_op_scs_8_pi, 0xfff8, 0x55d8, { 12, 12, 10, 10, 10, 10, 6}},
- {m68000_base_device_ops::m68k_op_scs_8_pd, 0xfff8, 0x55e0, { 14, 14, 11, 11, 11, 11, 6}},
- {m68000_base_device_ops::m68k_op_scs_8_di, 0xfff8, 0x55e8, { 16, 16, 11, 11, 11, 11, 6}},
- {m68000_base_device_ops::m68k_op_scs_8_ix, 0xfff8, 0x55f0, { 18, 18, 13, 13, 13, 13, 6}},
- {m68000_base_device_ops::m68k_op_sne_8_d, 0xfff8, 0x56c0, { 4, 4, 4, 4, 4, 4, 4}},
- {m68000_base_device_ops::m68k_op_dbne_16, 0xfff8, 0x56c8, { 12, 12, 6, 6, 6, 6, 6}},
- {m68000_base_device_ops::m68k_op_sne_8_ai, 0xfff8, 0x56d0, { 12, 12, 10, 10, 10, 10, 6}},
- {m68000_base_device_ops::m68k_op_sne_8_pi, 0xfff8, 0x56d8, { 12, 12, 10, 10, 10, 10, 6}},
- {m68000_base_device_ops::m68k_op_sne_8_pd, 0xfff8, 0x56e0, { 14, 14, 11, 11, 11, 11, 6}},
- {m68000_base_device_ops::m68k_op_sne_8_di, 0xfff8, 0x56e8, { 16, 16, 11, 11, 11, 11, 6}},
- {m68000_base_device_ops::m68k_op_sne_8_ix, 0xfff8, 0x56f0, { 18, 18, 13, 13, 13, 13, 6}},
- {m68000_base_device_ops::m68k_op_seq_8_d, 0xfff8, 0x57c0, { 4, 4, 4, 4, 4, 4, 4}},
- {m68000_base_device_ops::m68k_op_dbeq_16, 0xfff8, 0x57c8, { 12, 12, 6, 6, 6, 6, 6}},
- {m68000_base_device_ops::m68k_op_seq_8_ai, 0xfff8, 0x57d0, { 12, 12, 10, 10, 10, 10, 6}},
- {m68000_base_device_ops::m68k_op_seq_8_pi, 0xfff8, 0x57d8, { 12, 12, 10, 10, 10, 10, 6}},
- {m68000_base_device_ops::m68k_op_seq_8_pd, 0xfff8, 0x57e0, { 14, 14, 11, 11, 11, 11, 6}},
- {m68000_base_device_ops::m68k_op_seq_8_di, 0xfff8, 0x57e8, { 16, 16, 11, 11, 11, 11, 6}},
- {m68000_base_device_ops::m68k_op_seq_8_ix, 0xfff8, 0x57f0, { 18, 18, 13, 13, 13, 13, 6}},
- {m68000_base_device_ops::m68k_op_svc_8_d, 0xfff8, 0x58c0, { 4, 4, 4, 4, 4, 4, 4}},
- {m68000_base_device_ops::m68k_op_dbvc_16, 0xfff8, 0x58c8, { 12, 12, 6, 6, 6, 6, 6}},
- {m68000_base_device_ops::m68k_op_svc_8_ai, 0xfff8, 0x58d0, { 12, 12, 10, 10, 10, 10, 6}},
- {m68000_base_device_ops::m68k_op_svc_8_pi, 0xfff8, 0x58d8, { 12, 12, 10, 10, 10, 10, 6}},
- {m68000_base_device_ops::m68k_op_svc_8_pd, 0xfff8, 0x58e0, { 14, 14, 11, 11, 11, 11, 6}},
- {m68000_base_device_ops::m68k_op_svc_8_di, 0xfff8, 0x58e8, { 16, 16, 11, 11, 11, 11, 6}},
- {m68000_base_device_ops::m68k_op_svc_8_ix, 0xfff8, 0x58f0, { 18, 18, 13, 13, 13, 13, 6}},
- {m68000_base_device_ops::m68k_op_svs_8_d, 0xfff8, 0x59c0, { 4, 4, 4, 4, 4, 4, 4}},
- {m68000_base_device_ops::m68k_op_dbvs_16, 0xfff8, 0x59c8, { 12, 12, 6, 6, 6, 6, 6}},
- {m68000_base_device_ops::m68k_op_svs_8_ai, 0xfff8, 0x59d0, { 12, 12, 10, 10, 10, 10, 6}},
- {m68000_base_device_ops::m68k_op_svs_8_pi, 0xfff8, 0x59d8, { 12, 12, 10, 10, 10, 10, 6}},
- {m68000_base_device_ops::m68k_op_svs_8_pd, 0xfff8, 0x59e0, { 14, 14, 11, 11, 11, 11, 6}},
- {m68000_base_device_ops::m68k_op_svs_8_di, 0xfff8, 0x59e8, { 16, 16, 11, 11, 11, 11, 6}},
- {m68000_base_device_ops::m68k_op_svs_8_ix, 0xfff8, 0x59f0, { 18, 18, 13, 13, 13, 13, 6}},
- {m68000_base_device_ops::m68k_op_spl_8_d, 0xfff8, 0x5ac0, { 4, 4, 4, 4, 4, 4, 4}},
- {m68000_base_device_ops::m68k_op_dbpl_16, 0xfff8, 0x5ac8, { 12, 12, 6, 6, 6, 6, 6}},
- {m68000_base_device_ops::m68k_op_spl_8_ai, 0xfff8, 0x5ad0, { 12, 12, 10, 10, 10, 10, 6}},
- {m68000_base_device_ops::m68k_op_spl_8_pi, 0xfff8, 0x5ad8, { 12, 12, 10, 10, 10, 10, 6}},
- {m68000_base_device_ops::m68k_op_spl_8_pd, 0xfff8, 0x5ae0, { 14, 14, 11, 11, 11, 11, 6}},
- {m68000_base_device_ops::m68k_op_spl_8_di, 0xfff8, 0x5ae8, { 16, 16, 11, 11, 11, 11, 6}},
- {m68000_base_device_ops::m68k_op_spl_8_ix, 0xfff8, 0x5af0, { 18, 18, 13, 13, 13, 13, 6}},
- {m68000_base_device_ops::m68k_op_smi_8_d, 0xfff8, 0x5bc0, { 4, 4, 4, 4, 4, 4, 4}},
- {m68000_base_device_ops::m68k_op_dbmi_16, 0xfff8, 0x5bc8, { 12, 12, 6, 6, 6, 6, 6}},
- {m68000_base_device_ops::m68k_op_smi_8_ai, 0xfff8, 0x5bd0, { 12, 12, 10, 10, 10, 10, 6}},
- {m68000_base_device_ops::m68k_op_smi_8_pi, 0xfff8, 0x5bd8, { 12, 12, 10, 10, 10, 10, 6}},
- {m68000_base_device_ops::m68k_op_smi_8_pd, 0xfff8, 0x5be0, { 14, 14, 11, 11, 11, 11, 6}},
- {m68000_base_device_ops::m68k_op_smi_8_di, 0xfff8, 0x5be8, { 16, 16, 11, 11, 11, 11, 6}},
- {m68000_base_device_ops::m68k_op_smi_8_ix, 0xfff8, 0x5bf0, { 18, 18, 13, 13, 13, 13, 6}},
- {m68000_base_device_ops::m68k_op_sge_8_d, 0xfff8, 0x5cc0, { 4, 4, 4, 4, 4, 4, 4}},
- {m68000_base_device_ops::m68k_op_dbge_16, 0xfff8, 0x5cc8, { 12, 12, 6, 6, 6, 6, 6}},
- {m68000_base_device_ops::m68k_op_sge_8_ai, 0xfff8, 0x5cd0, { 12, 12, 10, 10, 10, 10, 6}},
- {m68000_base_device_ops::m68k_op_sge_8_pi, 0xfff8, 0x5cd8, { 12, 12, 10, 10, 10, 10, 6}},
- {m68000_base_device_ops::m68k_op_sge_8_pd, 0xfff8, 0x5ce0, { 14, 14, 11, 11, 11, 11, 6}},
- {m68000_base_device_ops::m68k_op_sge_8_di, 0xfff8, 0x5ce8, { 16, 16, 11, 11, 11, 11, 6}},
- {m68000_base_device_ops::m68k_op_sge_8_ix, 0xfff8, 0x5cf0, { 18, 18, 13, 13, 13, 13, 6}},
- {m68000_base_device_ops::m68k_op_slt_8_d, 0xfff8, 0x5dc0, { 4, 4, 4, 4, 4, 4, 4}},
- {m68000_base_device_ops::m68k_op_dblt_16, 0xfff8, 0x5dc8, { 12, 12, 6, 6, 6, 6, 6}},
- {m68000_base_device_ops::m68k_op_slt_8_ai, 0xfff8, 0x5dd0, { 12, 12, 10, 10, 10, 10, 6}},
- {m68000_base_device_ops::m68k_op_slt_8_pi, 0xfff8, 0x5dd8, { 12, 12, 10, 10, 10, 10, 6}},
- {m68000_base_device_ops::m68k_op_slt_8_pd, 0xfff8, 0x5de0, { 14, 14, 11, 11, 11, 11, 6}},
- {m68000_base_device_ops::m68k_op_slt_8_di, 0xfff8, 0x5de8, { 16, 16, 11, 11, 11, 11, 6}},
- {m68000_base_device_ops::m68k_op_slt_8_ix, 0xfff8, 0x5df0, { 18, 18, 13, 13, 13, 13, 6}},
- {m68000_base_device_ops::m68k_op_sgt_8_d, 0xfff8, 0x5ec0, { 4, 4, 4, 4, 4, 4, 4}},
- {m68000_base_device_ops::m68k_op_dbgt_16, 0xfff8, 0x5ec8, { 12, 12, 6, 6, 6, 6, 6}},
- {m68000_base_device_ops::m68k_op_sgt_8_ai, 0xfff8, 0x5ed0, { 12, 12, 10, 10, 10, 10, 6}},
- {m68000_base_device_ops::m68k_op_sgt_8_pi, 0xfff8, 0x5ed8, { 12, 12, 10, 10, 10, 10, 6}},
- {m68000_base_device_ops::m68k_op_sgt_8_pd, 0xfff8, 0x5ee0, { 14, 14, 11, 11, 11, 11, 6}},
- {m68000_base_device_ops::m68k_op_sgt_8_di, 0xfff8, 0x5ee8, { 16, 16, 11, 11, 11, 11, 6}},
- {m68000_base_device_ops::m68k_op_sgt_8_ix, 0xfff8, 0x5ef0, { 18, 18, 13, 13, 13, 13, 6}},
- {m68000_base_device_ops::m68k_op_sle_8_d, 0xfff8, 0x5fc0, { 4, 4, 4, 4, 4, 4, 4}},
- {m68000_base_device_ops::m68k_op_dble_16, 0xfff8, 0x5fc8, { 12, 12, 6, 6, 6, 6, 6}},
- {m68000_base_device_ops::m68k_op_sle_8_ai, 0xfff8, 0x5fd0, { 12, 12, 10, 10, 10, 10, 6}},
- {m68000_base_device_ops::m68k_op_sle_8_pi, 0xfff8, 0x5fd8, { 12, 12, 10, 10, 10, 10, 6}},
- {m68000_base_device_ops::m68k_op_sle_8_pd, 0xfff8, 0x5fe0, { 14, 14, 11, 11, 11, 11, 6}},
- {m68000_base_device_ops::m68k_op_sle_8_di, 0xfff8, 0x5fe8, { 16, 16, 11, 11, 11, 11, 6}},
- {m68000_base_device_ops::m68k_op_sle_8_ix, 0xfff8, 0x5ff0, { 18, 18, 13, 13, 13, 13, 6}},
- {m68000_base_device_ops::m68k_op_sbcd_8_mm_ax7, 0xfff8, 0x8f08, { 18, 18, 16, 16, 16, 16, 16}},
- {m68000_base_device_ops::m68k_op_pack_16_mm_ax7, 0xfff8, 0x8f48, {255, 255, 13, 13, 13, 13, 13}},
- {m68000_base_device_ops::m68k_op_unpk_16_mm_ax7, 0xfff8, 0x8f88, {255, 255, 13, 13, 13, 13, 13}},
- {m68000_base_device_ops::m68k_op_subx_8_mm_ax7, 0xfff8, 0x9f08, { 18, 18, 12, 12, 12, 12, 12}},
- {m68000_base_device_ops::m68k_op_cmpm_8_ax7, 0xfff8, 0xbf08, { 12, 12, 9, 9, 9, 9, 9}},
- {m68000_base_device_ops::m68k_op_abcd_8_mm_ax7, 0xfff8, 0xcf08, { 18, 18, 16, 16, 16, 16, 16}},
- {m68000_base_device_ops::m68k_op_addx_8_mm_ax7, 0xfff8, 0xdf08, { 18, 18, 12, 12, 12, 12, 12}},
- {m68000_base_device_ops::m68k_op_asr_16_ai, 0xfff8, 0xe0d0, { 12, 12, 9, 9, 9, 9, 5}},
- {m68000_base_device_ops::m68k_op_asr_16_pi, 0xfff8, 0xe0d8, { 12, 12, 9, 9, 9, 9, 5}},
- {m68000_base_device_ops::m68k_op_asr_16_pd, 0xfff8, 0xe0e0, { 14, 14, 10, 10, 10, 10, 5}},
- {m68000_base_device_ops::m68k_op_asr_16_di, 0xfff8, 0xe0e8, { 16, 16, 10, 10, 10, 10, 5}},
- {m68000_base_device_ops::m68k_op_asr_16_ix, 0xfff8, 0xe0f0, { 18, 18, 12, 12, 12, 12, 5}},
- {m68000_base_device_ops::m68k_op_asl_16_ai, 0xfff8, 0xe1d0, { 12, 12, 10, 10, 10, 10, 6}},
- {m68000_base_device_ops::m68k_op_asl_16_pi, 0xfff8, 0xe1d8, { 12, 12, 10, 10, 10, 10, 6}},
- {m68000_base_device_ops::m68k_op_asl_16_pd, 0xfff8, 0xe1e0, { 14, 14, 11, 11, 11, 11, 6}},
- {m68000_base_device_ops::m68k_op_asl_16_di, 0xfff8, 0xe1e8, { 16, 16, 11, 11, 11, 11, 6}},
- {m68000_base_device_ops::m68k_op_asl_16_ix, 0xfff8, 0xe1f0, { 18, 18, 13, 13, 13, 13, 6}},
- {m68000_base_device_ops::m68k_op_lsr_16_ai, 0xfff8, 0xe2d0, { 12, 12, 9, 9, 9, 9, 5}},
- {m68000_base_device_ops::m68k_op_lsr_16_pi, 0xfff8, 0xe2d8, { 12, 12, 9, 9, 9, 9, 5}},
- {m68000_base_device_ops::m68k_op_lsr_16_pd, 0xfff8, 0xe2e0, { 14, 14, 10, 10, 10, 10, 5}},
- {m68000_base_device_ops::m68k_op_lsr_16_di, 0xfff8, 0xe2e8, { 16, 16, 10, 10, 10, 10, 5}},
- {m68000_base_device_ops::m68k_op_lsr_16_ix, 0xfff8, 0xe2f0, { 18, 18, 12, 12, 12, 12, 5}},
- {m68000_base_device_ops::m68k_op_lsl_16_ai, 0xfff8, 0xe3d0, { 12, 12, 9, 9, 9, 9, 5}},
- {m68000_base_device_ops::m68k_op_lsl_16_pi, 0xfff8, 0xe3d8, { 12, 12, 9, 9, 9, 9, 5}},
- {m68000_base_device_ops::m68k_op_lsl_16_pd, 0xfff8, 0xe3e0, { 14, 14, 10, 10, 10, 10, 5}},
- {m68000_base_device_ops::m68k_op_lsl_16_di, 0xfff8, 0xe3e8, { 16, 16, 10, 10, 10, 10, 5}},
- {m68000_base_device_ops::m68k_op_lsl_16_ix, 0xfff8, 0xe3f0, { 18, 18, 12, 12, 12, 12, 5}},
- {m68000_base_device_ops::m68k_op_roxr_16_ai, 0xfff8, 0xe4d0, { 12, 12, 9, 9, 9, 9, 5}},
- {m68000_base_device_ops::m68k_op_roxr_16_pi, 0xfff8, 0xe4d8, { 12, 12, 9, 9, 9, 9, 5}},
- {m68000_base_device_ops::m68k_op_roxr_16_pd, 0xfff8, 0xe4e0, { 14, 14, 10, 10, 10, 10, 5}},
- {m68000_base_device_ops::m68k_op_roxr_16_di, 0xfff8, 0xe4e8, { 16, 16, 10, 10, 10, 10, 5}},
- {m68000_base_device_ops::m68k_op_roxr_16_ix, 0xfff8, 0xe4f0, { 18, 18, 12, 12, 12, 12, 5}},
- {m68000_base_device_ops::m68k_op_roxl_16_ai, 0xfff8, 0xe5d0, { 12, 12, 9, 9, 9, 9, 5}},
- {m68000_base_device_ops::m68k_op_roxl_16_pi, 0xfff8, 0xe5d8, { 12, 12, 9, 9, 9, 9, 5}},
- {m68000_base_device_ops::m68k_op_roxl_16_pd, 0xfff8, 0xe5e0, { 14, 14, 10, 10, 10, 10, 5}},
- {m68000_base_device_ops::m68k_op_roxl_16_di, 0xfff8, 0xe5e8, { 16, 16, 10, 10, 10, 10, 5}},
- {m68000_base_device_ops::m68k_op_roxl_16_ix, 0xfff8, 0xe5f0, { 18, 18, 12, 12, 12, 12, 5}},
- {m68000_base_device_ops::m68k_op_ror_16_ai, 0xfff8, 0xe6d0, { 12, 12, 11, 11, 11, 11, 7}},
- {m68000_base_device_ops::m68k_op_ror_16_pi, 0xfff8, 0xe6d8, { 12, 12, 11, 11, 11, 11, 7}},
- {m68000_base_device_ops::m68k_op_ror_16_pd, 0xfff8, 0xe6e0, { 14, 14, 12, 12, 12, 12, 7}},
- {m68000_base_device_ops::m68k_op_ror_16_di, 0xfff8, 0xe6e8, { 16, 16, 12, 12, 12, 12, 7}},
- {m68000_base_device_ops::m68k_op_ror_16_ix, 0xfff8, 0xe6f0, { 18, 18, 14, 14, 14, 14, 7}},
- {m68000_base_device_ops::m68k_op_rol_16_ai, 0xfff8, 0xe7d0, { 12, 12, 11, 11, 11, 11, 7}},
- {m68000_base_device_ops::m68k_op_rol_16_pi, 0xfff8, 0xe7d8, { 12, 12, 11, 11, 11, 11, 7}},
- {m68000_base_device_ops::m68k_op_rol_16_pd, 0xfff8, 0xe7e0, { 14, 14, 12, 12, 12, 12, 7}},
- {m68000_base_device_ops::m68k_op_rol_16_di, 0xfff8, 0xe7e8, { 16, 16, 12, 12, 12, 12, 7}},
- {m68000_base_device_ops::m68k_op_rol_16_ix, 0xfff8, 0xe7f0, { 18, 18, 14, 14, 14, 14, 7}},
- {m68000_base_device_ops::m68k_op_bftst_32_d, 0xfff8, 0xe8c0, {255, 255, 6, 6, 6, 6, 6}},
- {m68000_base_device_ops::m68k_op_bftst_32_ai, 0xfff8, 0xe8d0, {255, 255, 17, 17, 17, 17, 13}},
- {m68000_base_device_ops::m68k_op_bftst_32_di, 0xfff8, 0xe8e8, {255, 255, 18, 18, 18, 18, 13}},
- {m68000_base_device_ops::m68k_op_bftst_32_ix, 0xfff8, 0xe8f0, {255, 255, 20, 20, 20, 20, 13}},
- {m68000_base_device_ops::m68k_op_bfextu_32_d, 0xfff8, 0xe9c0, {255, 255, 8, 8, 8, 8, 8}},
- {m68000_base_device_ops::m68k_op_bfextu_32_ai, 0xfff8, 0xe9d0, {255, 255, 19, 19, 19, 19, 15}},
- {m68000_base_device_ops::m68k_op_bfextu_32_di, 0xfff8, 0xe9e8, {255, 255, 20, 20, 20, 20, 15}},
- {m68000_base_device_ops::m68k_op_bfextu_32_ix, 0xfff8, 0xe9f0, {255, 255, 22, 22, 22, 22, 15}},
- {m68000_base_device_ops::m68k_op_bfchg_32_d, 0xfff8, 0xeac0, {255, 255, 12, 12, 12, 12, 12}},
- {m68000_base_device_ops::m68k_op_bfchg_32_ai, 0xfff8, 0xead0, {255, 255, 24, 24, 24, 24, 20}},
- {m68000_base_device_ops::m68k_op_bfchg_32_di, 0xfff8, 0xeae8, {255, 255, 25, 25, 25, 25, 20}},
- {m68000_base_device_ops::m68k_op_bfchg_32_ix, 0xfff8, 0xeaf0, {255, 255, 27, 27, 27, 27, 20}},
- {m68000_base_device_ops::m68k_op_bfexts_32_d, 0xfff8, 0xebc0, {255, 255, 8, 8, 8, 8, 8}},
- {m68000_base_device_ops::m68k_op_bfexts_32_ai, 0xfff8, 0xebd0, {255, 255, 19, 19, 19, 19, 15}},
- {m68000_base_device_ops::m68k_op_bfexts_32_di, 0xfff8, 0xebe8, {255, 255, 20, 20, 20, 20, 15}},
- {m68000_base_device_ops::m68k_op_bfexts_32_ix, 0xfff8, 0xebf0, {255, 255, 22, 22, 22, 22, 15}},
- {m68000_base_device_ops::m68k_op_bfclr_32_d, 0xfff8, 0xecc0, {255, 255, 12, 12, 12, 12, 12}},
- {m68000_base_device_ops::m68k_op_bfclr_32_ai, 0xfff8, 0xecd0, {255, 255, 24, 24, 24, 24, 20}},
- {m68000_base_device_ops::m68k_op_bfclr_32_di, 0xfff8, 0xece8, {255, 255, 25, 25, 25, 25, 20}},
- {m68000_base_device_ops::m68k_op_bfclr_32_ix, 0xfff8, 0xecf0, {255, 255, 27, 27, 27, 27, 20}},
- {m68000_base_device_ops::m68k_op_bfffo_32_d, 0xfff8, 0xedc0, {255, 255, 18, 18, 18, 18, 18}},
- {m68000_base_device_ops::m68k_op_bfffo_32_ai, 0xfff8, 0xedd0, {255, 255, 32, 32, 32, 32, 28}},
- {m68000_base_device_ops::m68k_op_bfffo_32_di, 0xfff8, 0xede8, {255, 255, 33, 33, 33, 33, 28}},
- {m68000_base_device_ops::m68k_op_bfffo_32_ix, 0xfff8, 0xedf0, {255, 255, 35, 35, 35, 35, 28}},
- {m68000_base_device_ops::m68k_op_bfset_32_d, 0xfff8, 0xeec0, {255, 255, 12, 12, 12, 12, 12}},
- {m68000_base_device_ops::m68k_op_bfset_32_ai, 0xfff8, 0xeed0, {255, 255, 24, 24, 24, 24, 20}},
- {m68000_base_device_ops::m68k_op_bfset_32_di, 0xfff8, 0xeee8, {255, 255, 25, 25, 25, 25, 20}},
- {m68000_base_device_ops::m68k_op_bfset_32_ix, 0xfff8, 0xeef0, {255, 255, 27, 27, 27, 27, 20}},
- {m68000_base_device_ops::m68k_op_bfins_32_d, 0xfff8, 0xefc0, {255, 255, 10, 10, 10, 10, 10}},
- {m68000_base_device_ops::m68k_op_bfins_32_ai, 0xfff8, 0xefd0, {255, 255, 21, 21, 21, 21, 17}},
- {m68000_base_device_ops::m68k_op_bfins_32_di, 0xfff8, 0xefe8, {255, 255, 22, 22, 22, 22, 17}},
- {m68000_base_device_ops::m68k_op_bfins_32_ix, 0xfff8, 0xeff0, {255, 255, 24, 24, 24, 24, 17}},
- {m68000_base_device_ops::m68k_op_ftrapcc_32, 0xfff8, 0xf278, {255, 255, 4, 4, 255, 255, 255}},
- {m68000_base_device_ops::m68k_op_pflushan_32, 0xfff8, 0xf510, {255, 255, 255, 255, 4, 4, 4}},
- {m68000_base_device_ops::m68k_op_pflusha_32, 0xfff8, 0xf518, {255, 255, 255, 255, 4, 4, 4}},
- {m68000_base_device_ops::m68k_op_move16_32, 0xfff8, 0xf620, {255, 255, 255, 255, 4, 4, 4}},
- {m68000_base_device_ops::m68k_op_ori_8_pi7, 0xffff, 0x001f, { 16, 16, 8, 8, 8, 8, 4}},
- {m68000_base_device_ops::m68k_op_ori_8_pd7, 0xffff, 0x0027, { 18, 18, 9, 9, 9, 9, 4}},
- {m68000_base_device_ops::m68k_op_ori_8_aw, 0xffff, 0x0038, { 20, 20, 8, 8, 8, 8, 4}},
- {m68000_base_device_ops::m68k_op_ori_8_al, 0xffff, 0x0039, { 24, 24, 8, 8, 8, 8, 4}},
- {m68000_base_device_ops::m68k_op_ori_16_toc, 0xffff, 0x003c, { 20, 16, 12, 12, 12, 12, 12}},
- {m68000_base_device_ops::m68k_op_ori_16_aw, 0xffff, 0x0078, { 20, 20, 8, 8, 8, 8, 4}},
- {m68000_base_device_ops::m68k_op_ori_16_al, 0xffff, 0x0079, { 24, 24, 8, 8, 8, 8, 4}},
- {m68000_base_device_ops::m68k_op_ori_16_tos, 0xffff, 0x007c, { 20, 16, 12, 12, 12, 12, 12}},
- {m68000_base_device_ops::m68k_op_ori_32_aw, 0xffff, 0x00b8, { 32, 32, 8, 8, 8, 8, 4}},
- {m68000_base_device_ops::m68k_op_ori_32_al, 0xffff, 0x00b9, { 36, 36, 8, 8, 8, 8, 4}},
- {m68000_base_device_ops::m68k_op_chk2cmp2_8_aw, 0xffff, 0x00f8, {255, 255, 22, 22, 22, 22, 18}},
- {m68000_base_device_ops::m68k_op_chk2cmp2_8_al, 0xffff, 0x00f9, {255, 255, 22, 22, 22, 22, 18}},
- {m68000_base_device_ops::m68k_op_chk2cmp2_8_pcdi, 0xffff, 0x00fa, {255, 255, 23, 23, 23, 23, 23}},
- {m68000_base_device_ops::m68k_op_chk2cmp2_8_pcix, 0xffff, 0x00fb, {255, 255, 23, 23, 23, 23, 23}},
- {m68000_base_device_ops::m68k_op_andi_8_pi7, 0xffff, 0x021f, { 16, 16, 8, 8, 8, 8, 4}},
- {m68000_base_device_ops::m68k_op_andi_8_pd7, 0xffff, 0x0227, { 18, 18, 9, 9, 9, 9, 4}},
- {m68000_base_device_ops::m68k_op_andi_8_aw, 0xffff, 0x0238, { 20, 20, 8, 8, 8, 8, 4}},
- {m68000_base_device_ops::m68k_op_andi_8_al, 0xffff, 0x0239, { 24, 24, 8, 8, 8, 8, 4}},
- {m68000_base_device_ops::m68k_op_andi_16_toc, 0xffff, 0x023c, { 20, 16, 12, 12, 12, 12, 12}},
- {m68000_base_device_ops::m68k_op_andi_16_aw, 0xffff, 0x0278, { 20, 20, 8, 8, 8, 8, 4}},
- {m68000_base_device_ops::m68k_op_andi_16_al, 0xffff, 0x0279, { 24, 24, 8, 8, 8, 8, 4}},
- {m68000_base_device_ops::m68k_op_andi_16_tos, 0xffff, 0x027c, { 20, 16, 12, 12, 12, 12, 12}},
- {m68000_base_device_ops::m68k_op_andi_32_aw, 0xffff, 0x02b8, { 32, 32, 8, 8, 8, 8, 4}},
- {m68000_base_device_ops::m68k_op_andi_32_al, 0xffff, 0x02b9, { 36, 36, 8, 8, 8, 8, 4}},
- {m68000_base_device_ops::m68k_op_chk2cmp2_16_aw, 0xffff, 0x02f8, {255, 255, 22, 22, 22, 22, 18}},
- {m68000_base_device_ops::m68k_op_chk2cmp2_16_al, 0xffff, 0x02f9, {255, 255, 22, 22, 22, 22, 18}},
- {m68000_base_device_ops::m68k_op_chk2cmp2_16_pcdi, 0xffff, 0x02fa, {255, 255, 23, 23, 23, 23, 23}},
- {m68000_base_device_ops::m68k_op_chk2cmp2_16_pcix, 0xffff, 0x02fb, {255, 255, 23, 23, 23, 23, 23}},
- {m68000_base_device_ops::m68k_op_subi_8_pi7, 0xffff, 0x041f, { 16, 16, 8, 8, 8, 8, 4}},
- {m68000_base_device_ops::m68k_op_subi_8_pd7, 0xffff, 0x0427, { 18, 18, 9, 9, 9, 9, 4}},
- {m68000_base_device_ops::m68k_op_subi_8_aw, 0xffff, 0x0438, { 20, 20, 8, 8, 8, 8, 4}},
- {m68000_base_device_ops::m68k_op_subi_8_al, 0xffff, 0x0439, { 24, 24, 8, 8, 8, 8, 4}},
- {m68000_base_device_ops::m68k_op_subi_16_aw, 0xffff, 0x0478, { 20, 20, 8, 8, 8, 8, 4}},
- {m68000_base_device_ops::m68k_op_subi_16_al, 0xffff, 0x0479, { 24, 24, 8, 8, 8, 8, 4}},
- {m68000_base_device_ops::m68k_op_subi_32_aw, 0xffff, 0x04b8, { 32, 32, 8, 8, 8, 8, 4}},
- {m68000_base_device_ops::m68k_op_subi_32_al, 0xffff, 0x04b9, { 36, 36, 8, 8, 8, 8, 4}},
- {m68000_base_device_ops::m68k_op_chk2cmp2_32_aw, 0xffff, 0x04f8, {255, 255, 22, 22, 22, 22, 18}},
- {m68000_base_device_ops::m68k_op_chk2cmp2_32_al, 0xffff, 0x04f9, {255, 255, 22, 22, 22, 22, 18}},
- {m68000_base_device_ops::m68k_op_chk2cmp2_32_pcdi, 0xffff, 0x04fa, {255, 255, 23, 23, 23, 23, 23}},
- {m68000_base_device_ops::m68k_op_chk2cmp2_32_pcix, 0xffff, 0x04fb, {255, 255, 23, 23, 23, 23, 23}},
- {m68000_base_device_ops::m68k_op_addi_8_pi7, 0xffff, 0x061f, { 16, 16, 8, 8, 8, 8, 4}},
- {m68000_base_device_ops::m68k_op_addi_8_pd7, 0xffff, 0x0627, { 18, 18, 9, 9, 9, 9, 4}},
- {m68000_base_device_ops::m68k_op_addi_8_aw, 0xffff, 0x0638, { 20, 20, 8, 8, 8, 8, 4}},
- {m68000_base_device_ops::m68k_op_addi_8_al, 0xffff, 0x0639, { 24, 24, 8, 8, 8, 8, 4}},
- {m68000_base_device_ops::m68k_op_addi_16_aw, 0xffff, 0x0678, { 20, 20, 8, 8, 8, 8, 4}},
- {m68000_base_device_ops::m68k_op_addi_16_al, 0xffff, 0x0679, { 24, 24, 8, 8, 8, 8, 4}},
- {m68000_base_device_ops::m68k_op_addi_32_aw, 0xffff, 0x06b8, { 32, 32, 8, 8, 8, 8, 4}},
- {m68000_base_device_ops::m68k_op_addi_32_al, 0xffff, 0x06b9, { 36, 36, 8, 8, 8, 8, 4}},
- {m68000_base_device_ops::m68k_op_callm_32_aw, 0xffff, 0x06f8, {255, 255, 64, 64, 64, 64, 60}},
- {m68000_base_device_ops::m68k_op_callm_32_al, 0xffff, 0x06f9, {255, 255, 64, 64, 64, 64, 60}},
- {m68000_base_device_ops::m68k_op_callm_32_pcdi, 0xffff, 0x06fa, {255, 255, 65, 65, 65, 65, 60}},
- {m68000_base_device_ops::m68k_op_callm_32_pcix, 0xffff, 0x06fb, {255, 255, 67, 67, 67, 67, 60}},
- {m68000_base_device_ops::m68k_op_btst_8_s_pi7, 0xffff, 0x081f, { 12, 12, 8, 8, 8, 8, 4}},
- {m68000_base_device_ops::m68k_op_btst_8_s_pd7, 0xffff, 0x0827, { 14, 14, 9, 9, 9, 9, 4}},
- {m68000_base_device_ops::m68k_op_btst_8_s_aw, 0xffff, 0x0838, { 16, 16, 8, 8, 8, 8, 4}},
- {m68000_base_device_ops::m68k_op_btst_8_s_al, 0xffff, 0x0839, { 20, 20, 8, 8, 8, 8, 4}},
- {m68000_base_device_ops::m68k_op_btst_8_s_pcdi, 0xffff, 0x083a, { 16, 16, 9, 9, 9, 9, 4}},
- {m68000_base_device_ops::m68k_op_btst_8_s_pcix, 0xffff, 0x083b, { 18, 18, 11, 11, 11, 11, 4}},
- {m68000_base_device_ops::m68k_op_bchg_8_s_pi7, 0xffff, 0x085f, { 16, 16, 8, 8, 8, 8, 4}},
- {m68000_base_device_ops::m68k_op_bchg_8_s_pd7, 0xffff, 0x0867, { 18, 18, 9, 9, 9, 9, 4}},
- {m68000_base_device_ops::m68k_op_bchg_8_s_aw, 0xffff, 0x0878, { 20, 20, 8, 8, 8, 8, 4}},
- {m68000_base_device_ops::m68k_op_bchg_8_s_al, 0xffff, 0x0879, { 24, 24, 8, 8, 8, 8, 4}},
- {m68000_base_device_ops::m68k_op_bclr_8_s_pi7, 0xffff, 0x089f, { 16, 16, 8, 8, 8, 8, 4}},
- {m68000_base_device_ops::m68k_op_bclr_8_s_pd7, 0xffff, 0x08a7, { 18, 18, 9, 9, 9, 9, 4}},
- {m68000_base_device_ops::m68k_op_bclr_8_s_aw, 0xffff, 0x08b8, { 20, 20, 8, 8, 8, 8, 4}},
- {m68000_base_device_ops::m68k_op_bclr_8_s_al, 0xffff, 0x08b9, { 24, 24, 8, 8, 8, 8, 4}},
- {m68000_base_device_ops::m68k_op_bset_8_s_pi7, 0xffff, 0x08df, { 16, 16, 8, 8, 8, 8, 4}},
- {m68000_base_device_ops::m68k_op_bset_8_s_pd7, 0xffff, 0x08e7, { 18, 18, 9, 9, 9, 9, 4}},
- {m68000_base_device_ops::m68k_op_bset_8_s_aw, 0xffff, 0x08f8, { 20, 20, 8, 8, 8, 8, 4}},
- {m68000_base_device_ops::m68k_op_bset_8_s_al, 0xffff, 0x08f9, { 24, 24, 8, 8, 8, 8, 4}},
- {m68000_base_device_ops::m68k_op_eori_8_pi7, 0xffff, 0x0a1f, { 16, 16, 8, 8, 8, 8, 4}},
- {m68000_base_device_ops::m68k_op_eori_8_pd7, 0xffff, 0x0a27, { 18, 18, 9, 9, 9, 9, 4}},
- {m68000_base_device_ops::m68k_op_eori_8_aw, 0xffff, 0x0a38, { 20, 20, 8, 8, 8, 8, 4}},
- {m68000_base_device_ops::m68k_op_eori_8_al, 0xffff, 0x0a39, { 24, 24, 8, 8, 8, 8, 4}},
- {m68000_base_device_ops::m68k_op_eori_16_toc, 0xffff, 0x0a3c, { 20, 16, 12, 12, 12, 12, 12}},
- {m68000_base_device_ops::m68k_op_eori_16_aw, 0xffff, 0x0a78, { 20, 20, 8, 8, 8, 8, 4}},
- {m68000_base_device_ops::m68k_op_eori_16_al, 0xffff, 0x0a79, { 24, 24, 8, 8, 8, 8, 4}},
- {m68000_base_device_ops::m68k_op_eori_16_tos, 0xffff, 0x0a7c, { 20, 16, 12, 12, 12, 12, 12}},
- {m68000_base_device_ops::m68k_op_eori_32_aw, 0xffff, 0x0ab8, { 32, 32, 8, 8, 8, 8, 4}},
- {m68000_base_device_ops::m68k_op_eori_32_al, 0xffff, 0x0ab9, { 36, 36, 8, 8, 8, 8, 4}},
- {m68000_base_device_ops::m68k_op_cas_8_pi7, 0xffff, 0x0adf, {255, 255, 16, 16, 16, 16, 12}},
- {m68000_base_device_ops::m68k_op_cas_8_pd7, 0xffff, 0x0ae7, {255, 255, 17, 17, 17, 17, 12}},
- {m68000_base_device_ops::m68k_op_cas_8_aw, 0xffff, 0x0af8, {255, 255, 16, 16, 16, 16, 12}},
- {m68000_base_device_ops::m68k_op_cas_8_al, 0xffff, 0x0af9, {255, 255, 16, 16, 16, 16, 12}},
- {m68000_base_device_ops::m68k_op_cmpi_8_pi7, 0xffff, 0x0c1f, { 12, 12, 6, 6, 6, 6, 2}},
- {m68000_base_device_ops::m68k_op_cmpi_8_pd7, 0xffff, 0x0c27, { 14, 14, 7, 7, 7, 7, 2}},
- {m68000_base_device_ops::m68k_op_cmpi_8_aw, 0xffff, 0x0c38, { 16, 16, 6, 6, 6, 6, 2}},
- {m68000_base_device_ops::m68k_op_cmpi_8_al, 0xffff, 0x0c39, { 20, 20, 6, 6, 6, 6, 2}},
- {m68000_base_device_ops::m68k_op_cmpi_8_pcdi, 0xffff, 0x0c3a, {255, 255, 7, 7, 7, 7, 7}},
- {m68000_base_device_ops::m68k_op_cmpi_8_pcix, 0xffff, 0x0c3b, {255, 255, 9, 9, 9, 9, 9}},
- {m68000_base_device_ops::m68k_op_cmpi_16_aw, 0xffff, 0x0c78, { 16, 16, 6, 6, 6, 6, 2}},
- {m68000_base_device_ops::m68k_op_cmpi_16_al, 0xffff, 0x0c79, { 20, 20, 6, 6, 6, 6, 2}},
- {m68000_base_device_ops::m68k_op_cmpi_16_pcdi, 0xffff, 0x0c7a, {255, 255, 7, 7, 7, 7, 7}},
- {m68000_base_device_ops::m68k_op_cmpi_16_pcix, 0xffff, 0x0c7b, {255, 255, 9, 9, 9, 9, 9}},
- {m68000_base_device_ops::m68k_op_cmpi_32_aw, 0xffff, 0x0cb8, { 24, 24, 6, 6, 6, 6, 2}},
- {m68000_base_device_ops::m68k_op_cmpi_32_al, 0xffff, 0x0cb9, { 28, 28, 6, 6, 6, 6, 2}},
- {m68000_base_device_ops::m68k_op_cmpi_32_pcdi, 0xffff, 0x0cba, {255, 255, 7, 7, 7, 7, 7}},
- {m68000_base_device_ops::m68k_op_cmpi_32_pcix, 0xffff, 0x0cbb, {255, 255, 9, 9, 9, 9, 9}},
- {m68000_base_device_ops::m68k_op_cas_16_aw, 0xffff, 0x0cf8, {255, 255, 16, 16, 16, 16, 12}},
- {m68000_base_device_ops::m68k_op_cas_16_al, 0xffff, 0x0cf9, {255, 255, 16, 16, 16, 16, 12}},
- {m68000_base_device_ops::m68k_op_cas2_16, 0xffff, 0x0cfc, {255, 255, 12, 12, 12, 12, 12}},
- {m68000_base_device_ops::m68k_op_moves_8_pi7, 0xffff, 0x0e1f, {255, 18, 9, 9, 9, 9, 5}},
- {m68000_base_device_ops::m68k_op_moves_8_pd7, 0xffff, 0x0e27, {255, 20, 10, 10, 10, 10, 5}},
- {m68000_base_device_ops::m68k_op_moves_8_aw, 0xffff, 0x0e38, {255, 26, 9, 9, 9, 9, 5}},
- {m68000_base_device_ops::m68k_op_moves_8_al, 0xffff, 0x0e39, {255, 30, 9, 9, 9, 9, 5}},
- {m68000_base_device_ops::m68k_op_moves_16_aw, 0xffff, 0x0e78, {255, 26, 9, 9, 9, 9, 5}},
- {m68000_base_device_ops::m68k_op_moves_16_al, 0xffff, 0x0e79, {255, 30, 9, 9, 9, 9, 5}},
- {m68000_base_device_ops::m68k_op_moves_32_aw, 0xffff, 0x0eb8, {255, 32, 9, 9, 9, 9, 5}},
- {m68000_base_device_ops::m68k_op_moves_32_al, 0xffff, 0x0eb9, {255, 36, 9, 9, 9, 9, 5}},
- {m68000_base_device_ops::m68k_op_cas_32_aw, 0xffff, 0x0ef8, {255, 255, 16, 16, 16, 16, 12}},
- {m68000_base_device_ops::m68k_op_cas_32_al, 0xffff, 0x0ef9, {255, 255, 16, 16, 16, 16, 12}},
- {m68000_base_device_ops::m68k_op_cas2_32, 0xffff, 0x0efc, {255, 255, 12, 12, 12, 12, 12}},
- {m68000_base_device_ops::m68k_op_move_8_aw_pi7, 0xffff, 0x11df, { 16, 16, 8, 8, 8, 8, 4}},
- {m68000_base_device_ops::m68k_op_move_8_aw_pd7, 0xffff, 0x11e7, { 18, 18, 9, 9, 9, 9, 4}},
- {m68000_base_device_ops::m68k_op_move_8_aw_aw, 0xffff, 0x11f8, { 20, 20, 8, 8, 8, 8, 4}},
- {m68000_base_device_ops::m68k_op_move_8_aw_al, 0xffff, 0x11f9, { 24, 24, 8, 8, 8, 8, 4}},
- {m68000_base_device_ops::m68k_op_move_8_aw_pcdi, 0xffff, 0x11fa, { 20, 20, 9, 9, 9, 9, 4}},
- {m68000_base_device_ops::m68k_op_move_8_aw_pcix, 0xffff, 0x11fb, { 22, 22, 11, 11, 11, 11, 4}},
- {m68000_base_device_ops::m68k_op_move_8_aw_i, 0xffff, 0x11fc, { 16, 16, 6, 6, 6, 6, 4}},
- {m68000_base_device_ops::m68k_op_move_8_al_pi7, 0xffff, 0x13df, { 20, 20, 10, 10, 10, 10, 6}},
- {m68000_base_device_ops::m68k_op_move_8_al_pd7, 0xffff, 0x13e7, { 22, 22, 11, 11, 11, 11, 6}},
- {m68000_base_device_ops::m68k_op_move_8_al_aw, 0xffff, 0x13f8, { 24, 24, 10, 10, 10, 10, 6}},
- {m68000_base_device_ops::m68k_op_move_8_al_al, 0xffff, 0x13f9, { 28, 28, 10, 10, 10, 10, 6}},
- {m68000_base_device_ops::m68k_op_move_8_al_pcdi, 0xffff, 0x13fa, { 24, 24, 11, 11, 11, 11, 6}},
- {m68000_base_device_ops::m68k_op_move_8_al_pcix, 0xffff, 0x13fb, { 26, 26, 13, 13, 13, 13, 6}},
- {m68000_base_device_ops::m68k_op_move_8_al_i, 0xffff, 0x13fc, { 20, 20, 8, 8, 8, 8, 6}},
- {m68000_base_device_ops::m68k_op_move_8_pi7_pi7, 0xffff, 0x1edf, { 12, 12, 8, 8, 8, 8, 4}},
- {m68000_base_device_ops::m68k_op_move_8_pi7_pd7, 0xffff, 0x1ee7, { 14, 14, 9, 9, 9, 9, 4}},
- {m68000_base_device_ops::m68k_op_move_8_pi7_aw, 0xffff, 0x1ef8, { 16, 16, 8, 8, 8, 8, 4}},
- {m68000_base_device_ops::m68k_op_move_8_pi7_al, 0xffff, 0x1ef9, { 20, 20, 8, 8, 8, 8, 4}},
- {m68000_base_device_ops::m68k_op_move_8_pi7_pcdi, 0xffff, 0x1efa, { 16, 16, 9, 9, 9, 9, 4}},
- {m68000_base_device_ops::m68k_op_move_8_pi7_pcix, 0xffff, 0x1efb, { 18, 18, 11, 11, 11, 11, 4}},
- {m68000_base_device_ops::m68k_op_move_8_pi7_i, 0xffff, 0x1efc, { 12, 12, 6, 6, 6, 6, 4}},
- {m68000_base_device_ops::m68k_op_move_8_pd7_pi7, 0xffff, 0x1f1f, { 12, 12, 9, 9, 9, 9, 5}},
- {m68000_base_device_ops::m68k_op_move_8_pd7_pd7, 0xffff, 0x1f27, { 14, 14, 10, 10, 10, 10, 5}},
- {m68000_base_device_ops::m68k_op_move_8_pd7_aw, 0xffff, 0x1f38, { 16, 16, 9, 9, 9, 9, 5}},
- {m68000_base_device_ops::m68k_op_move_8_pd7_al, 0xffff, 0x1f39, { 20, 20, 9, 9, 9, 9, 5}},
- {m68000_base_device_ops::m68k_op_move_8_pd7_pcdi, 0xffff, 0x1f3a, { 16, 16, 10, 10, 10, 10, 5}},
- {m68000_base_device_ops::m68k_op_move_8_pd7_pcix, 0xffff, 0x1f3b, { 18, 18, 12, 12, 12, 12, 5}},
- {m68000_base_device_ops::m68k_op_move_8_pd7_i, 0xffff, 0x1f3c, { 12, 12, 7, 7, 7, 7, 5}},
- {m68000_base_device_ops::m68k_op_move_32_aw_aw, 0xffff, 0x21f8, { 28, 28, 8, 8, 8, 8, 4}},
- {m68000_base_device_ops::m68k_op_move_32_aw_al, 0xffff, 0x21f9, { 32, 32, 8, 8, 8, 8, 4}},
- {m68000_base_device_ops::m68k_op_move_32_aw_pcdi, 0xffff, 0x21fa, { 28, 28, 9, 9, 9, 9, 4}},
- {m68000_base_device_ops::m68k_op_move_32_aw_pcix, 0xffff, 0x21fb, { 30, 30, 11, 11, 11, 11, 4}},
- {m68000_base_device_ops::m68k_op_move_32_aw_i, 0xffff, 0x21fc, { 24, 24, 8, 8, 8, 8, 4}},
- {m68000_base_device_ops::m68k_op_move_32_al_aw, 0xffff, 0x23f8, { 32, 32, 10, 10, 10, 10, 6}},
- {m68000_base_device_ops::m68k_op_move_32_al_al, 0xffff, 0x23f9, { 36, 36, 10, 10, 10, 10, 6}},
- {m68000_base_device_ops::m68k_op_move_32_al_pcdi, 0xffff, 0x23fa, { 32, 32, 11, 11, 11, 11, 6}},
- {m68000_base_device_ops::m68k_op_move_32_al_pcix, 0xffff, 0x23fb, { 34, 34, 13, 13, 13, 13, 6}},
- {m68000_base_device_ops::m68k_op_move_32_al_i, 0xffff, 0x23fc, { 28, 28, 10, 10, 10, 10, 6}},
- {m68000_base_device_ops::m68k_op_move_16_aw_aw, 0xffff, 0x31f8, { 20, 20, 8, 8, 8, 8, 4}},
- {m68000_base_device_ops::m68k_op_move_16_aw_al, 0xffff, 0x31f9, { 24, 24, 8, 8, 8, 8, 4}},
- {m68000_base_device_ops::m68k_op_move_16_aw_pcdi, 0xffff, 0x31fa, { 20, 20, 9, 9, 9, 9, 4}},
- {m68000_base_device_ops::m68k_op_move_16_aw_pcix, 0xffff, 0x31fb, { 22, 22, 11, 11, 11, 11, 4}},
- {m68000_base_device_ops::m68k_op_move_16_aw_i, 0xffff, 0x31fc, { 16, 16, 6, 6, 6, 6, 4}},
- {m68000_base_device_ops::m68k_op_move_16_al_aw, 0xffff, 0x33f8, { 24, 24, 10, 10, 10, 10, 6}},
- {m68000_base_device_ops::m68k_op_move_16_al_al, 0xffff, 0x33f9, { 28, 28, 10, 10, 10, 10, 6}},
- {m68000_base_device_ops::m68k_op_move_16_al_pcdi, 0xffff, 0x33fa, { 24, 24, 11, 11, 11, 11, 6}},
- {m68000_base_device_ops::m68k_op_move_16_al_pcix, 0xffff, 0x33fb, { 26, 26, 13, 13, 13, 13, 6}},
- {m68000_base_device_ops::m68k_op_move_16_al_i, 0xffff, 0x33fc, { 20, 20, 8, 8, 8, 8, 6}},
- {m68000_base_device_ops::m68k_op_negx_8_pi7, 0xffff, 0x401f, { 12, 12, 8, 8, 8, 8, 4}},
- {m68000_base_device_ops::m68k_op_negx_8_pd7, 0xffff, 0x4027, { 14, 14, 9, 9, 9, 9, 4}},
- {m68000_base_device_ops::m68k_op_negx_8_aw, 0xffff, 0x4038, { 16, 16, 8, 8, 8, 8, 4}},
- {m68000_base_device_ops::m68k_op_negx_8_al, 0xffff, 0x4039, { 20, 20, 8, 8, 8, 8, 4}},
- {m68000_base_device_ops::m68k_op_negx_16_aw, 0xffff, 0x4078, { 16, 16, 8, 8, 8, 8, 4}},
- {m68000_base_device_ops::m68k_op_negx_16_al, 0xffff, 0x4079, { 20, 20, 8, 8, 8, 8, 4}},
- {m68000_base_device_ops::m68k_op_negx_32_aw, 0xffff, 0x40b8, { 24, 24, 8, 8, 8, 8, 4}},
- {m68000_base_device_ops::m68k_op_negx_32_al, 0xffff, 0x40b9, { 28, 28, 8, 8, 8, 8, 4}},
- {m68000_base_device_ops::m68k_op_move_16_frs_aw, 0xffff, 0x40f8, { 16, 16, 12, 12, 12, 12, 8}},
- {m68000_base_device_ops::m68k_op_move_16_frs_al, 0xffff, 0x40f9, { 20, 20, 12, 12, 12, 12, 8}},
- {m68000_base_device_ops::m68k_op_clr_8_pi7, 0xffff, 0x421f, { 12, 8, 8, 8, 8, 8, 4}},
- {m68000_base_device_ops::m68k_op_clr_8_pd7, 0xffff, 0x4227, { 14, 10, 9, 9, 9, 9, 4}},
- {m68000_base_device_ops::m68k_op_clr_8_aw, 0xffff, 0x4238, { 16, 12, 8, 8, 8, 8, 4}},
- {m68000_base_device_ops::m68k_op_clr_8_al, 0xffff, 0x4239, { 20, 14, 8, 8, 8, 8, 4}},
- {m68000_base_device_ops::m68k_op_clr_16_aw, 0xffff, 0x4278, { 16, 12, 8, 8, 8, 8, 4}},
- {m68000_base_device_ops::m68k_op_clr_16_al, 0xffff, 0x4279, { 20, 14, 8, 8, 8, 8, 4}},
- {m68000_base_device_ops::m68k_op_clr_32_aw, 0xffff, 0x42b8, { 24, 16, 8, 8, 8, 8, 4}},
- {m68000_base_device_ops::m68k_op_clr_32_al, 0xffff, 0x42b9, { 28, 20, 8, 8, 8, 8, 4}},
- {m68000_base_device_ops::m68k_op_move_16_frc_aw, 0xffff, 0x42f8, {255, 16, 8, 8, 8, 8, 4}},
- {m68000_base_device_ops::m68k_op_move_16_frc_al, 0xffff, 0x42f9, {255, 20, 8, 8, 8, 8, 4}},
- {m68000_base_device_ops::m68k_op_neg_8_pi7, 0xffff, 0x441f, { 12, 12, 8, 8, 8, 8, 4}},
- {m68000_base_device_ops::m68k_op_neg_8_pd7, 0xffff, 0x4427, { 14, 14, 9, 9, 9, 9, 4}},
- {m68000_base_device_ops::m68k_op_neg_8_aw, 0xffff, 0x4438, { 16, 16, 8, 8, 8, 8, 4}},
- {m68000_base_device_ops::m68k_op_neg_8_al, 0xffff, 0x4439, { 20, 20, 8, 8, 8, 8, 4}},
- {m68000_base_device_ops::m68k_op_neg_16_aw, 0xffff, 0x4478, { 16, 16, 8, 8, 8, 8, 4}},
- {m68000_base_device_ops::m68k_op_neg_16_al, 0xffff, 0x4479, { 20, 20, 8, 8, 8, 8, 4}},
- {m68000_base_device_ops::m68k_op_neg_32_aw, 0xffff, 0x44b8, { 24, 24, 8, 8, 8, 8, 4}},
- {m68000_base_device_ops::m68k_op_neg_32_al, 0xffff, 0x44b9, { 28, 28, 8, 8, 8, 8, 4}},
- {m68000_base_device_ops::m68k_op_move_16_toc_aw, 0xffff, 0x44f8, { 20, 20, 8, 8, 8, 8, 4}},
- {m68000_base_device_ops::m68k_op_move_16_toc_al, 0xffff, 0x44f9, { 24, 24, 8, 8, 8, 8, 4}},
- {m68000_base_device_ops::m68k_op_move_16_toc_pcdi, 0xffff, 0x44fa, { 20, 20, 9, 9, 9, 9, 4}},
- {m68000_base_device_ops::m68k_op_move_16_toc_pcix, 0xffff, 0x44fb, { 22, 22, 11, 11, 11, 11, 4}},
- {m68000_base_device_ops::m68k_op_move_16_toc_i, 0xffff, 0x44fc, { 16, 16, 6, 6, 6, 6, 4}},
- {m68000_base_device_ops::m68k_op_not_8_pi7, 0xffff, 0x461f, { 12, 12, 8, 8, 8, 8, 4}},
- {m68000_base_device_ops::m68k_op_not_8_pd7, 0xffff, 0x4627, { 14, 14, 9, 9, 9, 9, 4}},
- {m68000_base_device_ops::m68k_op_not_8_aw, 0xffff, 0x4638, { 16, 16, 8, 8, 8, 8, 4}},
- {m68000_base_device_ops::m68k_op_not_8_al, 0xffff, 0x4639, { 20, 20, 8, 8, 8, 8, 4}},
- {m68000_base_device_ops::m68k_op_not_16_aw, 0xffff, 0x4678, { 16, 16, 8, 8, 8, 8, 4}},
- {m68000_base_device_ops::m68k_op_not_16_al, 0xffff, 0x4679, { 20, 20, 8, 8, 8, 8, 4}},
- {m68000_base_device_ops::m68k_op_not_32_aw, 0xffff, 0x46b8, { 24, 24, 8, 8, 8, 8, 4}},
- {m68000_base_device_ops::m68k_op_not_32_al, 0xffff, 0x46b9, { 28, 28, 8, 8, 8, 8, 4}},
- {m68000_base_device_ops::m68k_op_move_16_tos_aw, 0xffff, 0x46f8, { 20, 20, 12, 12, 12, 12, 8}},
- {m68000_base_device_ops::m68k_op_move_16_tos_al, 0xffff, 0x46f9, { 24, 24, 12, 12, 12, 12, 8}},
- {m68000_base_device_ops::m68k_op_move_16_tos_pcdi, 0xffff, 0x46fa, { 20, 20, 13, 13, 13, 13, 8}},
- {m68000_base_device_ops::m68k_op_move_16_tos_pcix, 0xffff, 0x46fb, { 22, 22, 15, 15, 15, 15, 8}},
- {m68000_base_device_ops::m68k_op_move_16_tos_i, 0xffff, 0x46fc, { 16, 16, 10, 10, 10, 10, 8}},
- {m68000_base_device_ops::m68k_op_link_32_a7, 0xffff, 0x480f, {255, 255, 6, 6, 6, 6, 6}},
- {m68000_base_device_ops::m68k_op_nbcd_8_pi7, 0xffff, 0x481f, { 12, 12, 10, 10, 10, 10, 6}},
- {m68000_base_device_ops::m68k_op_nbcd_8_pd7, 0xffff, 0x4827, { 14, 14, 11, 11, 11, 11, 6}},
- {m68000_base_device_ops::m68k_op_nbcd_8_aw, 0xffff, 0x4838, { 16, 16, 10, 10, 10, 10, 6}},
- {m68000_base_device_ops::m68k_op_nbcd_8_al, 0xffff, 0x4839, { 20, 20, 10, 10, 10, 10, 6}},
- {m68000_base_device_ops::m68k_op_pea_32_aw, 0xffff, 0x4878, { 16, 16, 9, 9, 9, 9, 5}},
- {m68000_base_device_ops::m68k_op_pea_32_al, 0xffff, 0x4879, { 20, 20, 9, 9, 9, 9, 5}},
- {m68000_base_device_ops::m68k_op_pea_32_pcdi, 0xffff, 0x487a, { 16, 16, 10, 10, 10, 10, 5}},
- {m68000_base_device_ops::m68k_op_pea_32_pcix, 0xffff, 0x487b, { 20, 20, 12, 12, 12, 12, 5}},
- {m68000_base_device_ops::m68k_op_movem_16_re_aw, 0xffff, 0x48b8, { 12, 12, 8, 8, 8, 8, 4}},
- {m68000_base_device_ops::m68k_op_movem_16_re_al, 0xffff, 0x48b9, { 16, 16, 8, 8, 8, 8, 4}},
- {m68000_base_device_ops::m68k_op_movem_32_re_aw, 0xffff, 0x48f8, { 12, 12, 8, 8, 8, 8, 4}},
- {m68000_base_device_ops::m68k_op_movem_32_re_al, 0xffff, 0x48f9, { 16, 16, 8, 8, 8, 8, 4}},
- {m68000_base_device_ops::m68k_op_tst_8_pi7, 0xffff, 0x4a1f, { 8, 8, 6, 6, 6, 6, 2}},
- {m68000_base_device_ops::m68k_op_tst_8_pd7, 0xffff, 0x4a27, { 10, 10, 7, 7, 7, 7, 2}},
- {m68000_base_device_ops::m68k_op_tst_8_aw, 0xffff, 0x4a38, { 12, 12, 6, 6, 6, 6, 2}},
- {m68000_base_device_ops::m68k_op_tst_8_al, 0xffff, 0x4a39, { 16, 16, 6, 6, 6, 6, 2}},
- {m68000_base_device_ops::m68k_op_tst_8_pcdi, 0xffff, 0x4a3a, {255, 255, 7, 7, 7, 7, 7}},
- {m68000_base_device_ops::m68k_op_tst_8_pcix, 0xffff, 0x4a3b, {255, 255, 9, 9, 9, 9, 9}},
- {m68000_base_device_ops::m68k_op_tst_8_i, 0xffff, 0x4a3c, {255, 255, 6, 6, 6, 6, 6}},
- {m68000_base_device_ops::m68k_op_tst_16_aw, 0xffff, 0x4a78, { 12, 12, 6, 6, 6, 6, 2}},
- {m68000_base_device_ops::m68k_op_tst_16_al, 0xffff, 0x4a79, { 16, 16, 6, 6, 6, 6, 2}},
- {m68000_base_device_ops::m68k_op_tst_16_pcdi, 0xffff, 0x4a7a, {255, 255, 7, 7, 7, 7, 7}},
- {m68000_base_device_ops::m68k_op_tst_16_pcix, 0xffff, 0x4a7b, {255, 255, 9, 9, 9, 9, 9}},
- {m68000_base_device_ops::m68k_op_tst_16_i, 0xffff, 0x4a7c, {255, 255, 6, 6, 6, 6, 6}},
- {m68000_base_device_ops::m68k_op_tst_32_aw, 0xffff, 0x4ab8, { 16, 16, 6, 6, 6, 6, 2}},
- {m68000_base_device_ops::m68k_op_tst_32_al, 0xffff, 0x4ab9, { 20, 20, 6, 6, 6, 6, 2}},
- {m68000_base_device_ops::m68k_op_tst_32_pcdi, 0xffff, 0x4aba, {255, 255, 7, 7, 7, 7, 7}},
- {m68000_base_device_ops::m68k_op_tst_32_pcix, 0xffff, 0x4abb, {255, 255, 9, 9, 9, 9, 9}},
- {m68000_base_device_ops::m68k_op_tst_32_i, 0xffff, 0x4abc, {255, 255, 6, 6, 6, 6, 6}},
- {m68000_base_device_ops::m68k_op_tas_8_pi7, 0xffff, 0x4adf, { 18, 18, 16, 16, 16, 16, 12}},
- {m68000_base_device_ops::m68k_op_tas_8_pd7, 0xffff, 0x4ae7, { 20, 20, 17, 17, 17, 17, 12}},
- {m68000_base_device_ops::m68k_op_tas_8_aw, 0xffff, 0x4af8, { 22, 22, 16, 16, 16, 16, 12}},
- {m68000_base_device_ops::m68k_op_tas_8_al, 0xffff, 0x4af9, { 26, 26, 16, 16, 16, 16, 12}},
- {m68000_base_device_ops::m68k_op_illegal, 0xffff, 0x4afc, { 4, 4, 4, 4, 4, 4, 4}},
- {m68000_base_device_ops::m68k_op_mull_32_aw, 0xffff, 0x4c38, {255, 255, 47, 47, 47, 47, 43}},
- {m68000_base_device_ops::m68k_op_mull_32_al, 0xffff, 0x4c39, {255, 255, 47, 47, 47, 47, 43}},
- {m68000_base_device_ops::m68k_op_mull_32_pcdi, 0xffff, 0x4c3a, {255, 255, 48, 48, 48, 48, 43}},
- {m68000_base_device_ops::m68k_op_mull_32_pcix, 0xffff, 0x4c3b, {255, 255, 50, 50, 50, 50, 43}},
- {m68000_base_device_ops::m68k_op_mull_32_i, 0xffff, 0x4c3c, {255, 255, 47, 47, 47, 47, 43}},
- {m68000_base_device_ops::m68k_op_divl_32_aw, 0xffff, 0x4c78, {255, 255, 88, 88, 88, 88, 84}},
- {m68000_base_device_ops::m68k_op_divl_32_al, 0xffff, 0x4c79, {255, 255, 88, 88, 88, 88, 84}},
- {m68000_base_device_ops::m68k_op_divl_32_pcdi, 0xffff, 0x4c7a, {255, 255, 89, 89, 89, 89, 84}},
- {m68000_base_device_ops::m68k_op_divl_32_pcix, 0xffff, 0x4c7b, {255, 255, 91, 91, 91, 91, 84}},
- {m68000_base_device_ops::m68k_op_divl_32_i, 0xffff, 0x4c7c, {255, 255, 88, 88, 88, 88, 84}},
- {m68000_base_device_ops::m68k_op_movem_16_er_aw, 0xffff, 0x4cb8, { 16, 16, 12, 12, 12, 12, 8}},
- {m68000_base_device_ops::m68k_op_movem_16_er_al, 0xffff, 0x4cb9, { 20, 20, 12, 12, 12, 12, 8}},
- {m68000_base_device_ops::m68k_op_movem_16_er_pcdi, 0xffff, 0x4cba, { 16, 16, 9, 9, 9, 9, 9}},
- {m68000_base_device_ops::m68k_op_movem_16_er_pcix, 0xffff, 0x4cbb, { 18, 18, 11, 11, 11, 11, 11}},
- {m68000_base_device_ops::m68k_op_movem_32_er_aw, 0xffff, 0x4cf8, { 16, 16, 12, 12, 12, 12, 8}},
- {m68000_base_device_ops::m68k_op_movem_32_er_al, 0xffff, 0x4cf9, { 20, 20, 12, 12, 12, 12, 8}},
- {m68000_base_device_ops::m68k_op_movem_32_er_pcdi, 0xffff, 0x4cfa, { 16, 16, 9, 9, 9, 9, 9}},
- {m68000_base_device_ops::m68k_op_movem_32_er_pcix, 0xffff, 0x4cfb, { 18, 18, 11, 11, 11, 11, 11}},
- {m68000_base_device_ops::m68k_op_link_16_a7, 0xffff, 0x4e57, { 16, 16, 5, 5, 5, 5, 5}},
- {m68000_base_device_ops::m68k_op_unlk_32_a7, 0xffff, 0x4e5f, { 12, 12, 6, 6, 6, 6, 6}},
- {m68000_base_device_ops::m68k_op_reset, 0xffff, 0x4e70, { 0, 0, 0, 0, 0, 0, 0}},
- {m68000_base_device_ops::m68k_op_nop, 0xffff, 0x4e71, { 4, 4, 2, 2, 2, 2, 2}},
- {m68000_base_device_ops::m68k_op_stop, 0xffff, 0x4e72, { 4, 4, 8, 8, 8, 8, 8}},
- {m68000_base_device_ops::m68k_op_rte_32, 0xffff, 0x4e73, { 20, 24, 20, 20, 20, 20, 20}},
- {m68000_base_device_ops::m68k_op_rtd_32, 0xffff, 0x4e74, {255, 16, 10, 10, 10, 10, 10}},
- {m68000_base_device_ops::m68k_op_rts_32, 0xffff, 0x4e75, { 16, 16, 10, 10, 10, 10, 10}},
- {m68000_base_device_ops::m68k_op_trapv, 0xffff, 0x4e76, { 4, 4, 4, 4, 4, 4, 4}},
- {m68000_base_device_ops::m68k_op_rtr_32, 0xffff, 0x4e77, { 20, 20, 14, 14, 14, 14, 14}},
- {m68000_base_device_ops::m68k_op_movec_32_cr, 0xffff, 0x4e7a, {255, 12, 6, 6, 6, 6, 6}},
- {m68000_base_device_ops::m68k_op_movec_32_rc, 0xffff, 0x4e7b, {255, 10, 12, 12, 12, 12, 12}},
- {m68000_base_device_ops::m68k_op_jsr_32_aw, 0xffff, 0x4eb8, { 18, 18, 4, 4, 4, 4, 0}},
- {m68000_base_device_ops::m68k_op_jsr_32_al, 0xffff, 0x4eb9, { 20, 20, 4, 4, 4, 4, 0}},
- {m68000_base_device_ops::m68k_op_jsr_32_pcdi, 0xffff, 0x4eba, { 18, 18, 5, 5, 5, 5, 0}},
- {m68000_base_device_ops::m68k_op_jsr_32_pcix, 0xffff, 0x4ebb, { 22, 22, 7, 7, 7, 7, 0}},
- {m68000_base_device_ops::m68k_op_jmp_32_aw, 0xffff, 0x4ef8, { 10, 10, 4, 4, 4, 4, 0}},
- {m68000_base_device_ops::m68k_op_jmp_32_al, 0xffff, 0x4ef9, { 12, 12, 4, 4, 4, 4, 0}},
- {m68000_base_device_ops::m68k_op_jmp_32_pcdi, 0xffff, 0x4efa, { 10, 10, 5, 5, 5, 5, 0}},
- {m68000_base_device_ops::m68k_op_jmp_32_pcix, 0xffff, 0x4efb, { 14, 14, 7, 7, 7, 7, 0}},
- {m68000_base_device_ops::m68k_op_st_8_pi7, 0xffff, 0x50df, { 12, 12, 10, 10, 10, 10, 6}},
- {m68000_base_device_ops::m68k_op_st_8_pd7, 0xffff, 0x50e7, { 14, 14, 11, 11, 11, 11, 6}},
- {m68000_base_device_ops::m68k_op_st_8_aw, 0xffff, 0x50f8, { 16, 16, 10, 10, 10, 10, 6}},
- {m68000_base_device_ops::m68k_op_st_8_al, 0xffff, 0x50f9, { 20, 20, 10, 10, 10, 10, 6}},
- {m68000_base_device_ops::m68k_op_trapt_16, 0xffff, 0x50fa, {255, 255, 6, 6, 6, 6, 6}},
- {m68000_base_device_ops::m68k_op_trapt_32, 0xffff, 0x50fb, {255, 255, 8, 8, 8, 8, 8}},
- {m68000_base_device_ops::m68k_op_trapt, 0xffff, 0x50fc, {255, 255, 4, 4, 4, 4, 4}},
- {m68000_base_device_ops::m68k_op_sf_8_pi7, 0xffff, 0x51df, { 12, 12, 10, 10, 10, 10, 6}},
- {m68000_base_device_ops::m68k_op_sf_8_pd7, 0xffff, 0x51e7, { 14, 14, 11, 11, 11, 11, 6}},
- {m68000_base_device_ops::m68k_op_sf_8_aw, 0xffff, 0x51f8, { 16, 16, 10, 10, 10, 10, 6}},
- {m68000_base_device_ops::m68k_op_sf_8_al, 0xffff, 0x51f9, { 20, 20, 10, 10, 10, 10, 6}},
- {m68000_base_device_ops::m68k_op_trapf_16, 0xffff, 0x51fa, {255, 255, 6, 6, 6, 6, 6}},
- {m68000_base_device_ops::m68k_op_trapf_32, 0xffff, 0x51fb, {255, 255, 8, 8, 8, 8, 8}},
- {m68000_base_device_ops::m68k_op_trapf, 0xffff, 0x51fc, {255, 255, 4, 4, 4, 4, 4}},
- {m68000_base_device_ops::m68k_op_shi_8_pi7, 0xffff, 0x52df, { 12, 12, 10, 10, 10, 10, 6}},
- {m68000_base_device_ops::m68k_op_shi_8_pd7, 0xffff, 0x52e7, { 14, 14, 11, 11, 11, 11, 6}},
- {m68000_base_device_ops::m68k_op_shi_8_aw, 0xffff, 0x52f8, { 16, 16, 10, 10, 10, 10, 6}},
- {m68000_base_device_ops::m68k_op_shi_8_al, 0xffff, 0x52f9, { 20, 20, 10, 10, 10, 10, 6}},
- {m68000_base_device_ops::m68k_op_traphi_16, 0xffff, 0x52fa, {255, 255, 6, 6, 6, 6, 6}},
- {m68000_base_device_ops::m68k_op_traphi_32, 0xffff, 0x52fb, {255, 255, 8, 8, 8, 8, 8}},
- {m68000_base_device_ops::m68k_op_traphi, 0xffff, 0x52fc, {255, 255, 4, 4, 4, 4, 4}},
- {m68000_base_device_ops::m68k_op_sls_8_pi7, 0xffff, 0x53df, { 12, 12, 10, 10, 10, 10, 6}},
- {m68000_base_device_ops::m68k_op_sls_8_pd7, 0xffff, 0x53e7, { 14, 14, 11, 11, 11, 11, 6}},
- {m68000_base_device_ops::m68k_op_sls_8_aw, 0xffff, 0x53f8, { 16, 16, 10, 10, 10, 10, 6}},
- {m68000_base_device_ops::m68k_op_sls_8_al, 0xffff, 0x53f9, { 20, 20, 10, 10, 10, 10, 6}},
- {m68000_base_device_ops::m68k_op_trapls_16, 0xffff, 0x53fa, {255, 255, 6, 6, 6, 6, 6}},
- {m68000_base_device_ops::m68k_op_trapls_32, 0xffff, 0x53fb, {255, 255, 8, 8, 8, 8, 8}},
- {m68000_base_device_ops::m68k_op_trapls, 0xffff, 0x53fc, {255, 255, 4, 4, 4, 4, 4}},
- {m68000_base_device_ops::m68k_op_scc_8_pi7, 0xffff, 0x54df, { 12, 12, 10, 10, 10, 10, 6}},
- {m68000_base_device_ops::m68k_op_scc_8_pd7, 0xffff, 0x54e7, { 14, 14, 11, 11, 11, 11, 6}},
- {m68000_base_device_ops::m68k_op_scc_8_aw, 0xffff, 0x54f8, { 16, 16, 10, 10, 10, 10, 6}},
- {m68000_base_device_ops::m68k_op_scc_8_al, 0xffff, 0x54f9, { 20, 20, 10, 10, 10, 10, 6}},
- {m68000_base_device_ops::m68k_op_trapcc_16, 0xffff, 0x54fa, {255, 255, 6, 6, 6, 6, 6}},
- {m68000_base_device_ops::m68k_op_trapcc_32, 0xffff, 0x54fb, {255, 255, 8, 8, 8, 8, 8}},
- {m68000_base_device_ops::m68k_op_trapcc, 0xffff, 0x54fc, {255, 255, 4, 4, 4, 4, 4}},
- {m68000_base_device_ops::m68k_op_scs_8_pi7, 0xffff, 0x55df, { 12, 12, 10, 10, 10, 10, 6}},
- {m68000_base_device_ops::m68k_op_scs_8_pd7, 0xffff, 0x55e7, { 14, 14, 11, 11, 11, 11, 6}},
- {m68000_base_device_ops::m68k_op_scs_8_aw, 0xffff, 0x55f8, { 16, 16, 10, 10, 10, 10, 6}},
- {m68000_base_device_ops::m68k_op_scs_8_al, 0xffff, 0x55f9, { 20, 20, 10, 10, 10, 10, 6}},
- {m68000_base_device_ops::m68k_op_trapcs_16, 0xffff, 0x55fa, {255, 255, 6, 6, 6, 6, 6}},
- {m68000_base_device_ops::m68k_op_trapcs_32, 0xffff, 0x55fb, {255, 255, 8, 8, 8, 8, 8}},
- {m68000_base_device_ops::m68k_op_trapcs, 0xffff, 0x55fc, {255, 255, 4, 4, 4, 4, 4}},
- {m68000_base_device_ops::m68k_op_sne_8_pi7, 0xffff, 0x56df, { 12, 12, 10, 10, 10, 10, 6}},
- {m68000_base_device_ops::m68k_op_sne_8_pd7, 0xffff, 0x56e7, { 14, 14, 11, 11, 11, 11, 6}},
- {m68000_base_device_ops::m68k_op_sne_8_aw, 0xffff, 0x56f8, { 16, 16, 10, 10, 10, 10, 6}},
- {m68000_base_device_ops::m68k_op_sne_8_al, 0xffff, 0x56f9, { 20, 20, 10, 10, 10, 10, 6}},
- {m68000_base_device_ops::m68k_op_trapne_16, 0xffff, 0x56fa, {255, 255, 6, 6, 6, 6, 6}},
- {m68000_base_device_ops::m68k_op_trapne_32, 0xffff, 0x56fb, {255, 255, 8, 8, 8, 8, 8}},
- {m68000_base_device_ops::m68k_op_trapne, 0xffff, 0x56fc, {255, 255, 4, 4, 4, 4, 4}},
- {m68000_base_device_ops::m68k_op_seq_8_pi7, 0xffff, 0x57df, { 12, 12, 10, 10, 10, 10, 6}},
- {m68000_base_device_ops::m68k_op_seq_8_pd7, 0xffff, 0x57e7, { 14, 14, 11, 11, 11, 11, 6}},
- {m68000_base_device_ops::m68k_op_seq_8_aw, 0xffff, 0x57f8, { 16, 16, 10, 10, 10, 10, 6}},
- {m68000_base_device_ops::m68k_op_seq_8_al, 0xffff, 0x57f9, { 20, 20, 10, 10, 10, 10, 6}},
- {m68000_base_device_ops::m68k_op_trapeq_16, 0xffff, 0x57fa, {255, 255, 6, 6, 6, 6, 6}},
- {m68000_base_device_ops::m68k_op_trapeq_32, 0xffff, 0x57fb, {255, 255, 8, 8, 8, 8, 8}},
- {m68000_base_device_ops::m68k_op_trapeq, 0xffff, 0x57fc, {255, 255, 4, 4, 4, 4, 4}},
- {m68000_base_device_ops::m68k_op_svc_8_pi7, 0xffff, 0x58df, { 12, 12, 10, 10, 10, 10, 6}},
- {m68000_base_device_ops::m68k_op_svc_8_pd7, 0xffff, 0x58e7, { 14, 14, 11, 11, 11, 11, 6}},
- {m68000_base_device_ops::m68k_op_svc_8_aw, 0xffff, 0x58f8, { 16, 16, 10, 10, 10, 10, 6}},
- {m68000_base_device_ops::m68k_op_svc_8_al, 0xffff, 0x58f9, { 20, 20, 10, 10, 10, 10, 6}},
- {m68000_base_device_ops::m68k_op_trapvc_16, 0xffff, 0x58fa, {255, 255, 6, 6, 6, 6, 6}},
- {m68000_base_device_ops::m68k_op_trapvc_32, 0xffff, 0x58fb, {255, 255, 8, 8, 8, 8, 8}},
- {m68000_base_device_ops::m68k_op_trapvc, 0xffff, 0x58fc, {255, 255, 4, 4, 4, 4, 4}},
- {m68000_base_device_ops::m68k_op_svs_8_pi7, 0xffff, 0x59df, { 12, 12, 10, 10, 10, 10, 6}},
- {m68000_base_device_ops::m68k_op_svs_8_pd7, 0xffff, 0x59e7, { 14, 14, 11, 11, 11, 11, 6}},
- {m68000_base_device_ops::m68k_op_svs_8_aw, 0xffff, 0x59f8, { 16, 16, 10, 10, 10, 10, 6}},
- {m68000_base_device_ops::m68k_op_svs_8_al, 0xffff, 0x59f9, { 20, 20, 10, 10, 10, 10, 6}},
- {m68000_base_device_ops::m68k_op_trapvs_16, 0xffff, 0x59fa, {255, 255, 6, 6, 6, 6, 6}},
- {m68000_base_device_ops::m68k_op_trapvs_32, 0xffff, 0x59fb, {255, 255, 8, 8, 8, 8, 8}},
- {m68000_base_device_ops::m68k_op_trapvs, 0xffff, 0x59fc, {255, 255, 4, 4, 4, 4, 4}},
- {m68000_base_device_ops::m68k_op_spl_8_pi7, 0xffff, 0x5adf, { 12, 12, 10, 10, 10, 10, 6}},
- {m68000_base_device_ops::m68k_op_spl_8_pd7, 0xffff, 0x5ae7, { 14, 14, 11, 11, 11, 11, 6}},
- {m68000_base_device_ops::m68k_op_spl_8_aw, 0xffff, 0x5af8, { 16, 16, 10, 10, 10, 10, 6}},
- {m68000_base_device_ops::m68k_op_spl_8_al, 0xffff, 0x5af9, { 20, 20, 10, 10, 10, 10, 6}},
- {m68000_base_device_ops::m68k_op_trappl_16, 0xffff, 0x5afa, {255, 255, 6, 6, 6, 6, 6}},
- {m68000_base_device_ops::m68k_op_trappl_32, 0xffff, 0x5afb, {255, 255, 8, 8, 8, 8, 8}},
- {m68000_base_device_ops::m68k_op_trappl, 0xffff, 0x5afc, {255, 255, 4, 4, 4, 4, 4}},
- {m68000_base_device_ops::m68k_op_smi_8_pi7, 0xffff, 0x5bdf, { 12, 12, 10, 10, 10, 10, 6}},
- {m68000_base_device_ops::m68k_op_smi_8_pd7, 0xffff, 0x5be7, { 14, 14, 11, 11, 11, 11, 6}},
- {m68000_base_device_ops::m68k_op_smi_8_aw, 0xffff, 0x5bf8, { 16, 16, 10, 10, 10, 10, 6}},
- {m68000_base_device_ops::m68k_op_smi_8_al, 0xffff, 0x5bf9, { 20, 20, 10, 10, 10, 10, 6}},
- {m68000_base_device_ops::m68k_op_trapmi_16, 0xffff, 0x5bfa, {255, 255, 6, 6, 6, 6, 6}},
- {m68000_base_device_ops::m68k_op_trapmi_32, 0xffff, 0x5bfb, {255, 255, 8, 8, 8, 8, 8}},
- {m68000_base_device_ops::m68k_op_trapmi, 0xffff, 0x5bfc, {255, 255, 4, 4, 4, 4, 4}},
- {m68000_base_device_ops::m68k_op_sge_8_pi7, 0xffff, 0x5cdf, { 12, 12, 10, 10, 10, 10, 6}},
- {m68000_base_device_ops::m68k_op_sge_8_pd7, 0xffff, 0x5ce7, { 14, 14, 11, 11, 11, 11, 6}},
- {m68000_base_device_ops::m68k_op_sge_8_aw, 0xffff, 0x5cf8, { 16, 16, 10, 10, 10, 10, 6}},
- {m68000_base_device_ops::m68k_op_sge_8_al, 0xffff, 0x5cf9, { 20, 20, 10, 10, 10, 10, 6}},
- {m68000_base_device_ops::m68k_op_trapge_16, 0xffff, 0x5cfa, {255, 255, 6, 6, 6, 6, 6}},
- {m68000_base_device_ops::m68k_op_trapge_32, 0xffff, 0x5cfb, {255, 255, 8, 8, 8, 8, 8}},
- {m68000_base_device_ops::m68k_op_trapge, 0xffff, 0x5cfc, {255, 255, 4, 4, 4, 4, 4}},
- {m68000_base_device_ops::m68k_op_slt_8_pi7, 0xffff, 0x5ddf, { 12, 12, 10, 10, 10, 10, 6}},
- {m68000_base_device_ops::m68k_op_slt_8_pd7, 0xffff, 0x5de7, { 14, 14, 11, 11, 11, 11, 6}},
- {m68000_base_device_ops::m68k_op_slt_8_aw, 0xffff, 0x5df8, { 16, 16, 10, 10, 10, 10, 6}},
- {m68000_base_device_ops::m68k_op_slt_8_al, 0xffff, 0x5df9, { 20, 20, 10, 10, 10, 10, 6}},
- {m68000_base_device_ops::m68k_op_traplt_16, 0xffff, 0x5dfa, {255, 255, 6, 6, 6, 6, 6}},
- {m68000_base_device_ops::m68k_op_traplt_32, 0xffff, 0x5dfb, {255, 255, 8, 8, 8, 8, 8}},
- {m68000_base_device_ops::m68k_op_traplt, 0xffff, 0x5dfc, {255, 255, 4, 4, 4, 4, 4}},
- {m68000_base_device_ops::m68k_op_sgt_8_pi7, 0xffff, 0x5edf, { 12, 12, 10, 10, 10, 10, 6}},
- {m68000_base_device_ops::m68k_op_sgt_8_pd7, 0xffff, 0x5ee7, { 14, 14, 11, 11, 11, 11, 6}},
- {m68000_base_device_ops::m68k_op_sgt_8_aw, 0xffff, 0x5ef8, { 16, 16, 10, 10, 10, 10, 6}},
- {m68000_base_device_ops::m68k_op_sgt_8_al, 0xffff, 0x5ef9, { 20, 20, 10, 10, 10, 10, 6}},
- {m68000_base_device_ops::m68k_op_trapgt_16, 0xffff, 0x5efa, {255, 255, 6, 6, 6, 6, 6}},
- {m68000_base_device_ops::m68k_op_trapgt_32, 0xffff, 0x5efb, {255, 255, 8, 8, 8, 8, 8}},
- {m68000_base_device_ops::m68k_op_trapgt, 0xffff, 0x5efc, {255, 255, 4, 4, 4, 4, 4}},
- {m68000_base_device_ops::m68k_op_sle_8_pi7, 0xffff, 0x5fdf, { 12, 12, 10, 10, 10, 10, 6}},
- {m68000_base_device_ops::m68k_op_sle_8_pd7, 0xffff, 0x5fe7, { 14, 14, 11, 11, 11, 11, 6}},
- {m68000_base_device_ops::m68k_op_sle_8_aw, 0xffff, 0x5ff8, { 16, 16, 10, 10, 10, 10, 6}},
- {m68000_base_device_ops::m68k_op_sle_8_al, 0xffff, 0x5ff9, { 20, 20, 10, 10, 10, 10, 6}},
- {m68000_base_device_ops::m68k_op_traple_16, 0xffff, 0x5ffa, {255, 255, 6, 6, 6, 6, 6}},
- {m68000_base_device_ops::m68k_op_traple_32, 0xffff, 0x5ffb, {255, 255, 8, 8, 8, 8, 8}},
- {m68000_base_device_ops::m68k_op_traple, 0xffff, 0x5ffc, {255, 255, 4, 4, 4, 4, 4}},
- {m68000_base_device_ops::m68k_op_bra_16, 0xffff, 0x6000, { 10, 10, 10, 10, 10, 10, 10}},
- {m68000_base_device_ops::m68k_op_bra_32, 0xffff, 0x60ff, { 10, 10, 10, 10, 10, 10, 10}},
- {m68000_base_device_ops::m68k_op_bsr_16, 0xffff, 0x6100, { 18, 18, 7, 7, 7, 7, 7}},
- {m68000_base_device_ops::m68k_op_bsr_32, 0xffff, 0x61ff, { 18, 18, 7, 7, 7, 7, 7}},
- {m68000_base_device_ops::m68k_op_bhi_16, 0xffff, 0x6200, { 10, 10, 6, 6, 6, 6, 6}},
- {m68000_base_device_ops::m68k_op_bhi_32, 0xffff, 0x62ff, { 10, 10, 6, 6, 6, 6, 6}},
- {m68000_base_device_ops::m68k_op_bls_16, 0xffff, 0x6300, { 10, 10, 6, 6, 6, 6, 6}},
- {m68000_base_device_ops::m68k_op_bls_32, 0xffff, 0x63ff, { 10, 10, 6, 6, 6, 6, 6}},
- {m68000_base_device_ops::m68k_op_bcc_16, 0xffff, 0x6400, { 10, 10, 6, 6, 6, 6, 6}},
- {m68000_base_device_ops::m68k_op_bcc_32, 0xffff, 0x64ff, { 10, 10, 6, 6, 6, 6, 6}},
- {m68000_base_device_ops::m68k_op_bcs_16, 0xffff, 0x6500, { 10, 10, 6, 6, 6, 6, 6}},
- {m68000_base_device_ops::m68k_op_bcs_32, 0xffff, 0x65ff, { 10, 10, 6, 6, 6, 6, 6}},
- {m68000_base_device_ops::m68k_op_bne_16, 0xffff, 0x6600, { 10, 10, 6, 6, 6, 6, 6}},
- {m68000_base_device_ops::m68k_op_bne_32, 0xffff, 0x66ff, { 10, 10, 6, 6, 6, 6, 6}},
- {m68000_base_device_ops::m68k_op_beq_16, 0xffff, 0x6700, { 10, 10, 6, 6, 6, 6, 6}},
- {m68000_base_device_ops::m68k_op_beq_32, 0xffff, 0x67ff, { 10, 10, 6, 6, 6, 6, 6}},
- {m68000_base_device_ops::m68k_op_bvc_16, 0xffff, 0x6800, { 10, 10, 6, 6, 6, 6, 6}},
- {m68000_base_device_ops::m68k_op_bvc_32, 0xffff, 0x68ff, { 10, 10, 6, 6, 6, 6, 6}},
- {m68000_base_device_ops::m68k_op_bvs_16, 0xffff, 0x6900, { 10, 10, 6, 6, 6, 6, 6}},
- {m68000_base_device_ops::m68k_op_bvs_32, 0xffff, 0x69ff, { 10, 10, 6, 6, 6, 6, 6}},
- {m68000_base_device_ops::m68k_op_bpl_16, 0xffff, 0x6a00, { 10, 10, 6, 6, 6, 6, 6}},
- {m68000_base_device_ops::m68k_op_bpl_32, 0xffff, 0x6aff, { 10, 10, 6, 6, 6, 6, 6}},
- {m68000_base_device_ops::m68k_op_bmi_16, 0xffff, 0x6b00, { 10, 10, 6, 6, 6, 6, 6}},
- {m68000_base_device_ops::m68k_op_bmi_32, 0xffff, 0x6bff, { 10, 10, 6, 6, 6, 6, 6}},
- {m68000_base_device_ops::m68k_op_bge_16, 0xffff, 0x6c00, { 10, 10, 6, 6, 6, 6, 6}},
- {m68000_base_device_ops::m68k_op_bge_32, 0xffff, 0x6cff, { 10, 10, 6, 6, 6, 6, 6}},
- {m68000_base_device_ops::m68k_op_blt_16, 0xffff, 0x6d00, { 10, 10, 6, 6, 6, 6, 6}},
- {m68000_base_device_ops::m68k_op_blt_32, 0xffff, 0x6dff, { 10, 10, 6, 6, 6, 6, 6}},
- {m68000_base_device_ops::m68k_op_bgt_16, 0xffff, 0x6e00, { 10, 10, 6, 6, 6, 6, 6}},
- {m68000_base_device_ops::m68k_op_bgt_32, 0xffff, 0x6eff, { 10, 10, 6, 6, 6, 6, 6}},
- {m68000_base_device_ops::m68k_op_ble_16, 0xffff, 0x6f00, { 10, 10, 6, 6, 6, 6, 6}},
- {m68000_base_device_ops::m68k_op_ble_32, 0xffff, 0x6fff, { 10, 10, 6, 6, 6, 6, 6}},
- {m68000_base_device_ops::m68k_op_sbcd_8_mm_axy7, 0xffff, 0x8f0f, { 18, 18, 16, 16, 16, 16, 16}},
- {m68000_base_device_ops::m68k_op_pack_16_mm_axy7, 0xffff, 0x8f4f, {255, 255, 13, 13, 13, 13, 13}},
- {m68000_base_device_ops::m68k_op_unpk_16_mm_axy7, 0xffff, 0x8f8f, {255, 255, 13, 13, 13, 13, 13}},
- {m68000_base_device_ops::m68k_op_subx_8_mm_axy7, 0xffff, 0x9f0f, { 18, 18, 12, 12, 12, 12, 12}},
- {m68000_base_device_ops::m68k_op_cmpm_8_axy7, 0xffff, 0xbf0f, { 12, 12, 9, 9, 9, 9, 9}},
- {m68000_base_device_ops::m68k_op_abcd_8_mm_axy7, 0xffff, 0xcf0f, { 18, 18, 16, 16, 16, 16, 16}},
- {m68000_base_device_ops::m68k_op_addx_8_mm_axy7, 0xffff, 0xdf0f, { 18, 18, 12, 12, 12, 12, 12}},
- {m68000_base_device_ops::m68k_op_asr_16_aw, 0xffff, 0xe0f8, { 16, 16, 9, 9, 9, 9, 5}},
- {m68000_base_device_ops::m68k_op_asr_16_al, 0xffff, 0xe0f9, { 20, 20, 9, 9, 9, 9, 5}},
- {m68000_base_device_ops::m68k_op_asl_16_aw, 0xffff, 0xe1f8, { 16, 16, 10, 10, 10, 10, 6}},
- {m68000_base_device_ops::m68k_op_asl_16_al, 0xffff, 0xe1f9, { 20, 20, 10, 10, 10, 10, 6}},
- {m68000_base_device_ops::m68k_op_lsr_16_aw, 0xffff, 0xe2f8, { 16, 16, 9, 9, 9, 9, 5}},
- {m68000_base_device_ops::m68k_op_lsr_16_al, 0xffff, 0xe2f9, { 20, 20, 9, 9, 9, 9, 5}},
- {m68000_base_device_ops::m68k_op_lsl_16_aw, 0xffff, 0xe3f8, { 16, 16, 9, 9, 9, 9, 5}},
- {m68000_base_device_ops::m68k_op_lsl_16_al, 0xffff, 0xe3f9, { 20, 20, 9, 9, 9, 9, 5}},
- {m68000_base_device_ops::m68k_op_roxr_16_aw, 0xffff, 0xe4f8, { 16, 16, 9, 9, 9, 9, 5}},
- {m68000_base_device_ops::m68k_op_roxr_16_al, 0xffff, 0xe4f9, { 20, 20, 9, 9, 9, 9, 5}},
- {m68000_base_device_ops::m68k_op_roxl_16_aw, 0xffff, 0xe5f8, { 16, 16, 9, 9, 9, 9, 5}},
- {m68000_base_device_ops::m68k_op_roxl_16_al, 0xffff, 0xe5f9, { 20, 20, 9, 9, 9, 9, 5}},
- {m68000_base_device_ops::m68k_op_ror_16_aw, 0xffff, 0xe6f8, { 16, 16, 11, 11, 11, 11, 7}},
- {m68000_base_device_ops::m68k_op_ror_16_al, 0xffff, 0xe6f9, { 20, 20, 11, 11, 11, 11, 7}},
- {m68000_base_device_ops::m68k_op_rol_16_aw, 0xffff, 0xe7f8, { 16, 16, 11, 11, 11, 11, 7}},
- {m68000_base_device_ops::m68k_op_rol_16_al, 0xffff, 0xe7f9, { 20, 20, 11, 11, 11, 11, 7}},
- {m68000_base_device_ops::m68k_op_bftst_32_aw, 0xffff, 0xe8f8, {255, 255, 17, 17, 17, 17, 13}},
- {m68000_base_device_ops::m68k_op_bftst_32_al, 0xffff, 0xe8f9, {255, 255, 17, 17, 17, 17, 13}},
- {m68000_base_device_ops::m68k_op_bftst_32_pcdi, 0xffff, 0xe8fa, {255, 255, 18, 18, 18, 18, 13}},
- {m68000_base_device_ops::m68k_op_bftst_32_pcix, 0xffff, 0xe8fb, {255, 255, 20, 20, 20, 20, 13}},
- {m68000_base_device_ops::m68k_op_bfextu_32_aw, 0xffff, 0xe9f8, {255, 255, 19, 19, 19, 19, 15}},
- {m68000_base_device_ops::m68k_op_bfextu_32_al, 0xffff, 0xe9f9, {255, 255, 19, 19, 19, 19, 15}},
- {m68000_base_device_ops::m68k_op_bfextu_32_pcdi, 0xffff, 0xe9fa, {255, 255, 20, 20, 20, 20, 15}},
- {m68000_base_device_ops::m68k_op_bfextu_32_pcix, 0xffff, 0xe9fb, {255, 255, 22, 22, 22, 22, 15}},
- {m68000_base_device_ops::m68k_op_bfchg_32_aw, 0xffff, 0xeaf8, {255, 255, 24, 24, 24, 24, 20}},
- {m68000_base_device_ops::m68k_op_bfchg_32_al, 0xffff, 0xeaf9, {255, 255, 24, 24, 24, 24, 20}},
- {m68000_base_device_ops::m68k_op_bfexts_32_aw, 0xffff, 0xebf8, {255, 255, 19, 19, 19, 19, 15}},
- {m68000_base_device_ops::m68k_op_bfexts_32_al, 0xffff, 0xebf9, {255, 255, 19, 19, 19, 19, 15}},
- {m68000_base_device_ops::m68k_op_bfexts_32_pcdi, 0xffff, 0xebfa, {255, 255, 20, 20, 20, 20, 15}},
- {m68000_base_device_ops::m68k_op_bfexts_32_pcix, 0xffff, 0xebfb, {255, 255, 22, 22, 22, 22, 15}},
- {m68000_base_device_ops::m68k_op_bfclr_32_aw, 0xffff, 0xecf8, {255, 255, 24, 24, 24, 24, 20}},
- {m68000_base_device_ops::m68k_op_bfclr_32_al, 0xffff, 0xecf9, {255, 255, 24, 24, 24, 24, 20}},
- {m68000_base_device_ops::m68k_op_bfffo_32_aw, 0xffff, 0xedf8, {255, 255, 32, 32, 32, 32, 28}},
- {m68000_base_device_ops::m68k_op_bfffo_32_al, 0xffff, 0xedf9, {255, 255, 32, 32, 32, 32, 28}},
- {m68000_base_device_ops::m68k_op_bfffo_32_pcdi, 0xffff, 0xedfa, {255, 255, 33, 33, 33, 33, 28}},
- {m68000_base_device_ops::m68k_op_bfffo_32_pcix, 0xffff, 0xedfb, {255, 255, 35, 35, 35, 35, 28}},
- {m68000_base_device_ops::m68k_op_bfset_32_aw, 0xffff, 0xeef8, {255, 255, 24, 24, 24, 24, 20}},
- {m68000_base_device_ops::m68k_op_bfset_32_al, 0xffff, 0xeef9, {255, 255, 24, 24, 24, 24, 20}},
- {m68000_base_device_ops::m68k_op_bfins_32_aw, 0xffff, 0xeff8, {255, 255, 21, 21, 21, 21, 17}},
- {m68000_base_device_ops::m68k_op_bfins_32_al, 0xffff, 0xeff9, {255, 255, 21, 21, 21, 21, 17}},
- {nullptr, 0, 0, {0, 0, 0, 0, 0}}
-};
-
-
-/* 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;
- int k;
-
- for(i = 0; i < 0x10000; i++)
- {
- /* 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_cycles[k][i] = 0;
- }
- }
-
- ostruct = m68k_opcode_handler_table;
- while(ostruct->mask != 0xff00)
- {
- for(i = 0;i < 0x10000;i++)
- {
- if((i & ostruct->mask) == ostruct->match)
- m68ki_set_one(i, ostruct);
- }
- ostruct++;
- }
- while(ostruct->mask == 0xff00)
- {
- for(i = 0;i <= 0xff;i++)
- m68ki_set_one(ostruct->match | i, ostruct);
- ostruct++;
- }
- while(ostruct->mask == 0xff20)
- {
- for(i = 0;i < 4;i++)
- {
- for(j = 0;j < 32;j++)
- {
- m68ki_set_one(ostruct->match | (i << 6) | j, ostruct);
- }
- }
- ostruct++;
- }
- while(ostruct->mask == 0xf1f8)
- {
- for(i = 0;i < 8;i++)
- {
- for(j = 0;j < 8;j++)
- m68ki_set_one(ostruct->match | (i << 9) | j, ostruct);
- }
- ostruct++;
- }
- while(ostruct->mask == 0xffd8)
- {
- for(i = 0;i < 2;i++)
- {
- for(j = 0;j < 8;j++)
- {
- m68ki_set_one(ostruct->match | (i << 5) | j, ostruct);
- }
- }
- ostruct++;
- }
- while(ostruct->mask == 0xfff0)
- {
- for(i = 0;i <= 0x0f;i++)
- m68ki_set_one(ostruct->match | i, ostruct);
- ostruct++;
- }
- while(ostruct->mask == 0xf1ff)
- {
- for(i = 0;i <= 0x07;i++)
- m68ki_set_one(ostruct->match | (i << 9), ostruct);
- ostruct++;
- }
- while(ostruct->mask == 0xfff8)
- {
- for(i = 0;i <= 0x07;i++)
- m68ki_set_one(ostruct->match | i, ostruct);
- ostruct++;
- }
- while(ostruct->mask == 0xffff)
- {
- m68ki_set_one(ostruct->match, ostruct);
- ostruct++;
- }
-
- // if we fell all the way through with a non-zero mask, the opcode table wasn't built properly
- if (ostruct->mask != 0)
- {
- fatalerror("m68ki_build_opcode_table: unhandled opcode mask %x (match %x), m68k core will not function!\n", ostruct->mask, ostruct->match);
- }
-}
-
-
-/* ======================================================================== */
-/* ============================== END OF FILE ============================= */
-/* ======================================================================== */
diff --git a/src/devices/cpu/m68000/m68kops.h b/src/devices/cpu/m68000/m68kops.h
deleted file mode 100644
index 3f936f646f2..00000000000
--- a/src/devices/cpu/m68000/m68kops.h
+++ /dev/null
@@ -1,1995 +0,0 @@
-// license:BSD-3-Clause
-// copyright-holders:Karl Stenerud
-/* ======================================================================== */
-/* ============================ OPCODE HANDLERS =========================== */
-/* ======================================================================== */
-
-
-#ifdef OPCODE_PROTOTYPES
-
-static void m68k_op_1010(m68000_base_device* mc68kcpu);
-static void m68k_op_1111(m68000_base_device* mc68kcpu);
-static void m68k_op_040fpu0_32(m68000_base_device* mc68kcpu);
-static void m68k_op_040fpu1_32(m68000_base_device* mc68kcpu);
-static void m68k_op_abcd_8_rr(m68000_base_device* mc68kcpu);
-static void m68k_op_abcd_8_mm_ax7(m68000_base_device* mc68kcpu);
-static void m68k_op_abcd_8_mm_ay7(m68000_base_device* mc68kcpu);
-static void m68k_op_abcd_8_mm_axy7(m68000_base_device* mc68kcpu);
-static void m68k_op_abcd_8_mm(m68000_base_device* mc68kcpu);
-static void m68k_op_add_8_er_d(m68000_base_device* mc68kcpu);
-static void m68k_op_add_8_er_ai(m68000_base_device* mc68kcpu);
-static void m68k_op_add_8_er_pi(m68000_base_device* mc68kcpu);
-static void m68k_op_add_8_er_pi7(m68000_base_device* mc68kcpu);
-static void m68k_op_add_8_er_pd(m68000_base_device* mc68kcpu);
-static void m68k_op_add_8_er_pd7(m68000_base_device* mc68kcpu);
-static void m68k_op_add_8_er_di(m68000_base_device* mc68kcpu);
-static void m68k_op_add_8_er_ix(m68000_base_device* mc68kcpu);
-static void m68k_op_add_8_er_aw(m68000_base_device* mc68kcpu);
-static void m68k_op_add_8_er_al(m68000_base_device* mc68kcpu);
-static void m68k_op_add_8_er_pcdi(m68000_base_device* mc68kcpu);
-static void m68k_op_add_8_er_pcix(m68000_base_device* mc68kcpu);
-static void m68k_op_add_8_er_i(m68000_base_device* mc68kcpu);
-static void m68k_op_add_16_er_d(m68000_base_device* mc68kcpu);
-static void m68k_op_add_16_er_a(m68000_base_device* mc68kcpu);
-static void m68k_op_add_16_er_ai(m68000_base_device* mc68kcpu);
-static void m68k_op_add_16_er_pi(m68000_base_device* mc68kcpu);
-static void m68k_op_add_16_er_pd(m68000_base_device* mc68kcpu);
-static void m68k_op_add_16_er_di(m68000_base_device* mc68kcpu);
-static void m68k_op_add_16_er_ix(m68000_base_device* mc68kcpu);
-static void m68k_op_add_16_er_aw(m68000_base_device* mc68kcpu);
-static void m68k_op_add_16_er_al(m68000_base_device* mc68kcpu);
-static void m68k_op_add_16_er_pcdi(m68000_base_device* mc68kcpu);
-static void m68k_op_add_16_er_pcix(m68000_base_device* mc68kcpu);
-static void m68k_op_add_16_er_i(m68000_base_device* mc68kcpu);
-static void m68k_op_add_32_er_d(m68000_base_device* mc68kcpu);
-static void m68k_op_add_32_er_a(m68000_base_device* mc68kcpu);
-static void m68k_op_add_32_er_ai(m68000_base_device* mc68kcpu);
-static void m68k_op_add_32_er_pi(m68000_base_device* mc68kcpu);
-static void m68k_op_add_32_er_pd(m68000_base_device* mc68kcpu);
-static void m68k_op_add_32_er_di(m68000_base_device* mc68kcpu);
-static void m68k_op_add_32_er_ix(m68000_base_device* mc68kcpu);
-static void m68k_op_add_32_er_aw(m68000_base_device* mc68kcpu);
-static void m68k_op_add_32_er_al(m68000_base_device* mc68kcpu);
-static void m68k_op_add_32_er_pcdi(m68000_base_device* mc68kcpu);
-static void m68k_op_add_32_er_pcix(m68000_base_device* mc68kcpu);
-static void m68k_op_add_32_er_i(m68000_base_device* mc68kcpu);
-static void m68k_op_add_8_re_ai(m68000_base_device* mc68kcpu);
-static void m68k_op_add_8_re_pi(m68000_base_device* mc68kcpu);
-static void m68k_op_add_8_re_pi7(m68000_base_device* mc68kcpu);
-static void m68k_op_add_8_re_pd(m68000_base_device* mc68kcpu);
-static void m68k_op_add_8_re_pd7(m68000_base_device* mc68kcpu);
-static void m68k_op_add_8_re_di(m68000_base_device* mc68kcpu);
-static void m68k_op_add_8_re_ix(m68000_base_device* mc68kcpu);
-static void m68k_op_add_8_re_aw(m68000_base_device* mc68kcpu);
-static void m68k_op_add_8_re_al(m68000_base_device* mc68kcpu);
-static void m68k_op_add_16_re_ai(m68000_base_device* mc68kcpu);
-static void m68k_op_add_16_re_pi(m68000_base_device* mc68kcpu);
-static void m68k_op_add_16_re_pd(m68000_base_device* mc68kcpu);
-static void m68k_op_add_16_re_di(m68000_base_device* mc68kcpu);
-static void m68k_op_add_16_re_ix(m68000_base_device* mc68kcpu);
-static void m68k_op_add_16_re_aw(m68000_base_device* mc68kcpu);
-static void m68k_op_add_16_re_al(m68000_base_device* mc68kcpu);
-static void m68k_op_add_32_re_ai(m68000_base_device* mc68kcpu);
-static void m68k_op_add_32_re_pi(m68000_base_device* mc68kcpu);
-static void m68k_op_add_32_re_pd(m68000_base_device* mc68kcpu);
-static void m68k_op_add_32_re_di(m68000_base_device* mc68kcpu);
-static void m68k_op_add_32_re_ix(m68000_base_device* mc68kcpu);
-static void m68k_op_add_32_re_aw(m68000_base_device* mc68kcpu);
-static void m68k_op_add_32_re_al(m68000_base_device* mc68kcpu);
-static void m68k_op_adda_16_d(m68000_base_device* mc68kcpu);
-static void m68k_op_adda_16_a(m68000_base_device* mc68kcpu);
-static void m68k_op_adda_16_ai(m68000_base_device* mc68kcpu);
-static void m68k_op_adda_16_pi(m68000_base_device* mc68kcpu);
-static void m68k_op_adda_16_pd(m68000_base_device* mc68kcpu);
-static void m68k_op_adda_16_di(m68000_base_device* mc68kcpu);
-static void m68k_op_adda_16_ix(m68000_base_device* mc68kcpu);
-static void m68k_op_adda_16_aw(m68000_base_device* mc68kcpu);
-static void m68k_op_adda_16_al(m68000_base_device* mc68kcpu);
-static void m68k_op_adda_16_pcdi(m68000_base_device* mc68kcpu);
-static void m68k_op_adda_16_pcix(m68000_base_device* mc68kcpu);
-static void m68k_op_adda_16_i(m68000_base_device* mc68kcpu);
-static void m68k_op_adda_32_d(m68000_base_device* mc68kcpu);
-static void m68k_op_adda_32_a(m68000_base_device* mc68kcpu);
-static void m68k_op_adda_32_ai(m68000_base_device* mc68kcpu);
-static void m68k_op_adda_32_pi(m68000_base_device* mc68kcpu);
-static void m68k_op_adda_32_pd(m68000_base_device* mc68kcpu);
-static void m68k_op_adda_32_di(m68000_base_device* mc68kcpu);
-static void m68k_op_adda_32_ix(m68000_base_device* mc68kcpu);
-static void m68k_op_adda_32_aw(m68000_base_device* mc68kcpu);
-static void m68k_op_adda_32_al(m68000_base_device* mc68kcpu);
-static void m68k_op_adda_32_pcdi(m68000_base_device* mc68kcpu);
-static void m68k_op_adda_32_pcix(m68000_base_device* mc68kcpu);
-static void m68k_op_adda_32_i(m68000_base_device* mc68kcpu);
-static void m68k_op_addi_8_d(m68000_base_device* mc68kcpu);
-static void m68k_op_addi_8_ai(m68000_base_device* mc68kcpu);
-static void m68k_op_addi_8_pi(m68000_base_device* mc68kcpu);
-static void m68k_op_addi_8_pi7(m68000_base_device* mc68kcpu);
-static void m68k_op_addi_8_pd(m68000_base_device* mc68kcpu);
-static void m68k_op_addi_8_pd7(m68000_base_device* mc68kcpu);
-static void m68k_op_addi_8_di(m68000_base_device* mc68kcpu);
-static void m68k_op_addi_8_ix(m68000_base_device* mc68kcpu);
-static void m68k_op_addi_8_aw(m68000_base_device* mc68kcpu);
-static void m68k_op_addi_8_al(m68000_base_device* mc68kcpu);
-static void m68k_op_addi_16_d(m68000_base_device* mc68kcpu);
-static void m68k_op_addi_16_ai(m68000_base_device* mc68kcpu);
-static void m68k_op_addi_16_pi(m68000_base_device* mc68kcpu);
-static void m68k_op_addi_16_pd(m68000_base_device* mc68kcpu);
-static void m68k_op_addi_16_di(m68000_base_device* mc68kcpu);
-static void m68k_op_addi_16_ix(m68000_base_device* mc68kcpu);
-static void m68k_op_addi_16_aw(m68000_base_device* mc68kcpu);
-static void m68k_op_addi_16_al(m68000_base_device* mc68kcpu);
-static void m68k_op_addi_32_d(m68000_base_device* mc68kcpu);
-static void m68k_op_addi_32_ai(m68000_base_device* mc68kcpu);
-static void m68k_op_addi_32_pi(m68000_base_device* mc68kcpu);
-static void m68k_op_addi_32_pd(m68000_base_device* mc68kcpu);
-static void m68k_op_addi_32_di(m68000_base_device* mc68kcpu);
-static void m68k_op_addi_32_ix(m68000_base_device* mc68kcpu);
-static void m68k_op_addi_32_aw(m68000_base_device* mc68kcpu);
-static void m68k_op_addi_32_al(m68000_base_device* mc68kcpu);
-static void m68k_op_addq_8_d(m68000_base_device* mc68kcpu);
-static void m68k_op_addq_8_ai(m68000_base_device* mc68kcpu);
-static void m68k_op_addq_8_pi(m68000_base_device* mc68kcpu);
-static void m68k_op_addq_8_pi7(m68000_base_device* mc68kcpu);
-static void m68k_op_addq_8_pd(m68000_base_device* mc68kcpu);
-static void m68k_op_addq_8_pd7(m68000_base_device* mc68kcpu);
-static void m68k_op_addq_8_di(m68000_base_device* mc68kcpu);
-static void m68k_op_addq_8_ix(m68000_base_device* mc68kcpu);
-static void m68k_op_addq_8_aw(m68000_base_device* mc68kcpu);
-static void m68k_op_addq_8_al(m68000_base_device* mc68kcpu);
-static void m68k_op_addq_16_d(m68000_base_device* mc68kcpu);
-static void m68k_op_addq_16_a(m68000_base_device* mc68kcpu);
-static void m68k_op_addq_16_ai(m68000_base_device* mc68kcpu);
-static void m68k_op_addq_16_pi(m68000_base_device* mc68kcpu);
-static void m68k_op_addq_16_pd(m68000_base_device* mc68kcpu);
-static void m68k_op_addq_16_di(m68000_base_device* mc68kcpu);
-static void m68k_op_addq_16_ix(m68000_base_device* mc68kcpu);
-static void m68k_op_addq_16_aw(m68000_base_device* mc68kcpu);
-static void m68k_op_addq_16_al(m68000_base_device* mc68kcpu);
-static void m68k_op_addq_32_d(m68000_base_device* mc68kcpu);
-static void m68k_op_addq_32_a(m68000_base_device* mc68kcpu);
-static void m68k_op_addq_32_ai(m68000_base_device* mc68kcpu);
-static void m68k_op_addq_32_pi(m68000_base_device* mc68kcpu);
-static void m68k_op_addq_32_pd(m68000_base_device* mc68kcpu);
-static void m68k_op_addq_32_di(m68000_base_device* mc68kcpu);
-static void m68k_op_addq_32_ix(m68000_base_device* mc68kcpu);
-static void m68k_op_addq_32_aw(m68000_base_device* mc68kcpu);
-static void m68k_op_addq_32_al(m68000_base_device* mc68kcpu);
-static void m68k_op_addx_8_rr(m68000_base_device* mc68kcpu);
-static void m68k_op_addx_16_rr(m68000_base_device* mc68kcpu);
-static void m68k_op_addx_32_rr(m68000_base_device* mc68kcpu);
-static void m68k_op_addx_8_mm_ax7(m68000_base_device* mc68kcpu);
-static void m68k_op_addx_8_mm_ay7(m68000_base_device* mc68kcpu);
-static void m68k_op_addx_8_mm_axy7(m68000_base_device* mc68kcpu);
-static void m68k_op_addx_8_mm(m68000_base_device* mc68kcpu);
-static void m68k_op_addx_16_mm(m68000_base_device* mc68kcpu);
-static void m68k_op_addx_32_mm(m68000_base_device* mc68kcpu);
-static void m68k_op_and_8_er_d(m68000_base_device* mc68kcpu);
-static void m68k_op_and_8_er_ai(m68000_base_device* mc68kcpu);
-static void m68k_op_and_8_er_pi(m68000_base_device* mc68kcpu);
-static void m68k_op_and_8_er_pi7(m68000_base_device* mc68kcpu);
-static void m68k_op_and_8_er_pd(m68000_base_device* mc68kcpu);
-static void m68k_op_and_8_er_pd7(m68000_base_device* mc68kcpu);
-static void m68k_op_and_8_er_di(m68000_base_device* mc68kcpu);
-static void m68k_op_and_8_er_ix(m68000_base_device* mc68kcpu);
-static void m68k_op_and_8_er_aw(m68000_base_device* mc68kcpu);
-static void m68k_op_and_8_er_al(m68000_base_device* mc68kcpu);
-static void m68k_op_and_8_er_pcdi(m68000_base_device* mc68kcpu);
-static void m68k_op_and_8_er_pcix(m68000_base_device* mc68kcpu);
-static void m68k_op_and_8_er_i(m68000_base_device* mc68kcpu);
-static void m68k_op_and_16_er_d(m68000_base_device* mc68kcpu);
-static void m68k_op_and_16_er_ai(m68000_base_device* mc68kcpu);
-static void m68k_op_and_16_er_pi(m68000_base_device* mc68kcpu);
-static void m68k_op_and_16_er_pd(m68000_base_device* mc68kcpu);
-static void m68k_op_and_16_er_di(m68000_base_device* mc68kcpu);
-static void m68k_op_and_16_er_ix(m68000_base_device* mc68kcpu);
-static void m68k_op_and_16_er_aw(m68000_base_device* mc68kcpu);
-static void m68k_op_and_16_er_al(m68000_base_device* mc68kcpu);
-static void m68k_op_and_16_er_pcdi(m68000_base_device* mc68kcpu);
-static void m68k_op_and_16_er_pcix(m68000_base_device* mc68kcpu);
-static void m68k_op_and_16_er_i(m68000_base_device* mc68kcpu);
-static void m68k_op_and_32_er_d(m68000_base_device* mc68kcpu);
-static void m68k_op_and_32_er_ai(m68000_base_device* mc68kcpu);
-static void m68k_op_and_32_er_pi(m68000_base_device* mc68kcpu);
-static void m68k_op_and_32_er_pd(m68000_base_device* mc68kcpu);
-static void m68k_op_and_32_er_di(m68000_base_device* mc68kcpu);
-static void m68k_op_and_32_er_ix(m68000_base_device* mc68kcpu);
-static void m68k_op_and_32_er_aw(m68000_base_device* mc68kcpu);
-static void m68k_op_and_32_er_al(m68000_base_device* mc68kcpu);
-static void m68k_op_and_32_er_pcdi(m68000_base_device* mc68kcpu);
-static void m68k_op_and_32_er_pcix(m68000_base_device* mc68kcpu);
-static void m68k_op_and_32_er_i(m68000_base_device* mc68kcpu);
-static void m68k_op_and_8_re_ai(m68000_base_device* mc68kcpu);
-static void m68k_op_and_8_re_pi(m68000_base_device* mc68kcpu);
-static void m68k_op_and_8_re_pi7(m68000_base_device* mc68kcpu);
-static void m68k_op_and_8_re_pd(m68000_base_device* mc68kcpu);
-static void m68k_op_and_8_re_pd7(m68000_base_device* mc68kcpu);
-static void m68k_op_and_8_re_di(m68000_base_device* mc68kcpu);
-static void m68k_op_and_8_re_ix(m68000_base_device* mc68kcpu);
-static void m68k_op_and_8_re_aw(m68000_base_device* mc68kcpu);
-static void m68k_op_and_8_re_al(m68000_base_device* mc68kcpu);
-static void m68k_op_and_16_re_ai(m68000_base_device* mc68kcpu);
-static void m68k_op_and_16_re_pi(m68000_base_device* mc68kcpu);
-static void m68k_op_and_16_re_pd(m68000_base_device* mc68kcpu);
-static void m68k_op_and_16_re_di(m68000_base_device* mc68kcpu);
-static void m68k_op_and_16_re_ix(m68000_base_device* mc68kcpu);
-static void m68k_op_and_16_re_aw(m68000_base_device* mc68kcpu);
-static void m68k_op_and_16_re_al(m68000_base_device* mc68kcpu);
-static void m68k_op_and_32_re_ai(m68000_base_device* mc68kcpu);
-static void m68k_op_and_32_re_pi(m68000_base_device* mc68kcpu);
-static void m68k_op_and_32_re_pd(m68000_base_device* mc68kcpu);
-static void m68k_op_and_32_re_di(m68000_base_device* mc68kcpu);
-static void m68k_op_and_32_re_ix(m68000_base_device* mc68kcpu);
-static void m68k_op_and_32_re_aw(m68000_base_device* mc68kcpu);
-static void m68k_op_and_32_re_al(m68000_base_device* mc68kcpu);
-static void m68k_op_andi_8_d(m68000_base_device* mc68kcpu);
-static void m68k_op_andi_8_ai(m68000_base_device* mc68kcpu);
-static void m68k_op_andi_8_pi(m68000_base_device* mc68kcpu);
-static void m68k_op_andi_8_pi7(m68000_base_device* mc68kcpu);
-static void m68k_op_andi_8_pd(m68000_base_device* mc68kcpu);
-static void m68k_op_andi_8_pd7(m68000_base_device* mc68kcpu);
-static void m68k_op_andi_8_di(m68000_base_device* mc68kcpu);
-static void m68k_op_andi_8_ix(m68000_base_device* mc68kcpu);
-static void m68k_op_andi_8_aw(m68000_base_device* mc68kcpu);
-static void m68k_op_andi_8_al(m68000_base_device* mc68kcpu);
-static void m68k_op_andi_16_d(m68000_base_device* mc68kcpu);
-static void m68k_op_andi_16_ai(m68000_base_device* mc68kcpu);
-static void m68k_op_andi_16_pi(m68000_base_device* mc68kcpu);
-static void m68k_op_andi_16_pd(m68000_base_device* mc68kcpu);
-static void m68k_op_andi_16_di(m68000_base_device* mc68kcpu);
-static void m68k_op_andi_16_ix(m68000_base_device* mc68kcpu);
-static void m68k_op_andi_16_aw(m68000_base_device* mc68kcpu);
-static void m68k_op_andi_16_al(m68000_base_device* mc68kcpu);
-static void m68k_op_andi_32_d(m68000_base_device* mc68kcpu);
-static void m68k_op_andi_32_ai(m68000_base_device* mc68kcpu);
-static void m68k_op_andi_32_pi(m68000_base_device* mc68kcpu);
-static void m68k_op_andi_32_pd(m68000_base_device* mc68kcpu);
-static void m68k_op_andi_32_di(m68000_base_device* mc68kcpu);
-static void m68k_op_andi_32_ix(m68000_base_device* mc68kcpu);
-static void m68k_op_andi_32_aw(m68000_base_device* mc68kcpu);
-static void m68k_op_andi_32_al(m68000_base_device* mc68kcpu);
-static void m68k_op_andi_16_toc(m68000_base_device* mc68kcpu);
-static void m68k_op_andi_16_tos(m68000_base_device* mc68kcpu);
-static void m68k_op_asr_8_s(m68000_base_device* mc68kcpu);
-static void m68k_op_asr_16_s(m68000_base_device* mc68kcpu);
-static void m68k_op_asr_32_s(m68000_base_device* mc68kcpu);
-static void m68k_op_asr_8_r(m68000_base_device* mc68kcpu);
-static void m68k_op_asr_16_r(m68000_base_device* mc68kcpu);
-static void m68k_op_asr_32_r(m68000_base_device* mc68kcpu);
-static void m68k_op_asr_16_ai(m68000_base_device* mc68kcpu);
-static void m68k_op_asr_16_pi(m68000_base_device* mc68kcpu);
-static void m68k_op_asr_16_pd(m68000_base_device* mc68kcpu);
-static void m68k_op_asr_16_di(m68000_base_device* mc68kcpu);
-static void m68k_op_asr_16_ix(m68000_base_device* mc68kcpu);
-static void m68k_op_asr_16_aw(m68000_base_device* mc68kcpu);
-static void m68k_op_asr_16_al(m68000_base_device* mc68kcpu);
-static void m68k_op_asl_8_s(m68000_base_device* mc68kcpu);
-static void m68k_op_asl_16_s(m68000_base_device* mc68kcpu);
-static void m68k_op_asl_32_s(m68000_base_device* mc68kcpu);
-static void m68k_op_asl_8_r(m68000_base_device* mc68kcpu);
-static void m68k_op_asl_16_r(m68000_base_device* mc68kcpu);
-static void m68k_op_asl_32_r(m68000_base_device* mc68kcpu);
-static void m68k_op_asl_16_ai(m68000_base_device* mc68kcpu);
-static void m68k_op_asl_16_pi(m68000_base_device* mc68kcpu);
-static void m68k_op_asl_16_pd(m68000_base_device* mc68kcpu);
-static void m68k_op_asl_16_di(m68000_base_device* mc68kcpu);
-static void m68k_op_asl_16_ix(m68000_base_device* mc68kcpu);
-static void m68k_op_asl_16_aw(m68000_base_device* mc68kcpu);
-static void m68k_op_asl_16_al(m68000_base_device* mc68kcpu);
-static void m68k_op_bhi_8(m68000_base_device* mc68kcpu);
-static void m68k_op_bls_8(m68000_base_device* mc68kcpu);
-static void m68k_op_bcc_8(m68000_base_device* mc68kcpu);
-static void m68k_op_bcs_8(m68000_base_device* mc68kcpu);
-static void m68k_op_bne_8(m68000_base_device* mc68kcpu);
-static void m68k_op_beq_8(m68000_base_device* mc68kcpu);
-static void m68k_op_bvc_8(m68000_base_device* mc68kcpu);
-static void m68k_op_bvs_8(m68000_base_device* mc68kcpu);
-static void m68k_op_bpl_8(m68000_base_device* mc68kcpu);
-static void m68k_op_bmi_8(m68000_base_device* mc68kcpu);
-static void m68k_op_bge_8(m68000_base_device* mc68kcpu);
-static void m68k_op_blt_8(m68000_base_device* mc68kcpu);
-static void m68k_op_bgt_8(m68000_base_device* mc68kcpu);
-static void m68k_op_ble_8(m68000_base_device* mc68kcpu);
-static void m68k_op_bhi_16(m68000_base_device* mc68kcpu);
-static void m68k_op_bls_16(m68000_base_device* mc68kcpu);
-static void m68k_op_bcc_16(m68000_base_device* mc68kcpu);
-static void m68k_op_bcs_16(m68000_base_device* mc68kcpu);
-static void m68k_op_bne_16(m68000_base_device* mc68kcpu);
-static void m68k_op_beq_16(m68000_base_device* mc68kcpu);
-static void m68k_op_bvc_16(m68000_base_device* mc68kcpu);
-static void m68k_op_bvs_16(m68000_base_device* mc68kcpu);
-static void m68k_op_bpl_16(m68000_base_device* mc68kcpu);
-static void m68k_op_bmi_16(m68000_base_device* mc68kcpu);
-static void m68k_op_bge_16(m68000_base_device* mc68kcpu);
-static void m68k_op_blt_16(m68000_base_device* mc68kcpu);
-static void m68k_op_bgt_16(m68000_base_device* mc68kcpu);
-static void m68k_op_ble_16(m68000_base_device* mc68kcpu);
-static void m68k_op_bhi_32(m68000_base_device* mc68kcpu);
-static void m68k_op_bls_32(m68000_base_device* mc68kcpu);
-static void m68k_op_bcc_32(m68000_base_device* mc68kcpu);
-static void m68k_op_bcs_32(m68000_base_device* mc68kcpu);
-static void m68k_op_bne_32(m68000_base_device* mc68kcpu);
-static void m68k_op_beq_32(m68000_base_device* mc68kcpu);
-static void m68k_op_bvc_32(m68000_base_device* mc68kcpu);
-static void m68k_op_bvs_32(m68000_base_device* mc68kcpu);
-static void m68k_op_bpl_32(m68000_base_device* mc68kcpu);
-static void m68k_op_bmi_32(m68000_base_device* mc68kcpu);
-static void m68k_op_bge_32(m68000_base_device* mc68kcpu);
-static void m68k_op_blt_32(m68000_base_device* mc68kcpu);
-static void m68k_op_bgt_32(m68000_base_device* mc68kcpu);
-static void m68k_op_ble_32(m68000_base_device* mc68kcpu);
-static void m68k_op_bchg_32_r_d(m68000_base_device* mc68kcpu);
-static void m68k_op_bchg_8_r_ai(m68000_base_device* mc68kcpu);
-static void m68k_op_bchg_8_r_pi(m68000_base_device* mc68kcpu);
-static void m68k_op_bchg_8_r_pi7(m68000_base_device* mc68kcpu);
-static void m68k_op_bchg_8_r_pd(m68000_base_device* mc68kcpu);
-static void m68k_op_bchg_8_r_pd7(m68000_base_device* mc68kcpu);
-static void m68k_op_bchg_8_r_di(m68000_base_device* mc68kcpu);
-static void m68k_op_bchg_8_r_ix(m68000_base_device* mc68kcpu);
-static void m68k_op_bchg_8_r_aw(m68000_base_device* mc68kcpu);
-static void m68k_op_bchg_8_r_al(m68000_base_device* mc68kcpu);
-static void m68k_op_bchg_32_s_d(m68000_base_device* mc68kcpu);
-static void m68k_op_bchg_8_s_ai(m68000_base_device* mc68kcpu);
-static void m68k_op_bchg_8_s_pi(m68000_base_device* mc68kcpu);
-static void m68k_op_bchg_8_s_pi7(m68000_base_device* mc68kcpu);
-static void m68k_op_bchg_8_s_pd(m68000_base_device* mc68kcpu);
-static void m68k_op_bchg_8_s_pd7(m68000_base_device* mc68kcpu);
-static void m68k_op_bchg_8_s_di(m68000_base_device* mc68kcpu);
-static void m68k_op_bchg_8_s_ix(m68000_base_device* mc68kcpu);
-static void m68k_op_bchg_8_s_aw(m68000_base_device* mc68kcpu);
-static void m68k_op_bchg_8_s_al(m68000_base_device* mc68kcpu);
-static void m68k_op_bclr_32_r_d(m68000_base_device* mc68kcpu);
-static void m68k_op_bclr_8_r_ai(m68000_base_device* mc68kcpu);
-static void m68k_op_bclr_8_r_pi(m68000_base_device* mc68kcpu);
-static void m68k_op_bclr_8_r_pi7(m68000_base_device* mc68kcpu);
-static void m68k_op_bclr_8_r_pd(m68000_base_device* mc68kcpu);
-static void m68k_op_bclr_8_r_pd7(m68000_base_device* mc68kcpu);
-static void m68k_op_bclr_8_r_di(m68000_base_device* mc68kcpu);
-static void m68k_op_bclr_8_r_ix(m68000_base_device* mc68kcpu);
-static void m68k_op_bclr_8_r_aw(m68000_base_device* mc68kcpu);
-static void m68k_op_bclr_8_r_al(m68000_base_device* mc68kcpu);
-static void m68k_op_bclr_32_s_d(m68000_base_device* mc68kcpu);
-static void m68k_op_bclr_8_s_ai(m68000_base_device* mc68kcpu);
-static void m68k_op_bclr_8_s_pi(m68000_base_device* mc68kcpu);
-static void m68k_op_bclr_8_s_pi7(m68000_base_device* mc68kcpu);
-static void m68k_op_bclr_8_s_pd(m68000_base_device* mc68kcpu);
-static void m68k_op_bclr_8_s_pd7(m68000_base_device* mc68kcpu);
-static void m68k_op_bclr_8_s_di(m68000_base_device* mc68kcpu);
-static void m68k_op_bclr_8_s_ix(m68000_base_device* mc68kcpu);
-static void m68k_op_bclr_8_s_aw(m68000_base_device* mc68kcpu);
-static void m68k_op_bclr_8_s_al(m68000_base_device* mc68kcpu);
-static void m68k_op_bfchg_32_d(m68000_base_device* mc68kcpu);
-static void m68k_op_bfchg_32_ai(m68000_base_device* mc68kcpu);
-static void m68k_op_bfchg_32_di(m68000_base_device* mc68kcpu);
-static void m68k_op_bfchg_32_ix(m68000_base_device* mc68kcpu);
-static void m68k_op_bfchg_32_aw(m68000_base_device* mc68kcpu);
-static void m68k_op_bfchg_32_al(m68000_base_device* mc68kcpu);
-static void m68k_op_bfclr_32_d(m68000_base_device* mc68kcpu);
-static void m68k_op_bfclr_32_ai(m68000_base_device* mc68kcpu);
-static void m68k_op_bfclr_32_di(m68000_base_device* mc68kcpu);
-static void m68k_op_bfclr_32_ix(m68000_base_device* mc68kcpu);
-static void m68k_op_bfclr_32_aw(m68000_base_device* mc68kcpu);
-static void m68k_op_bfclr_32_al(m68000_base_device* mc68kcpu);
-static void m68k_op_bfexts_32_d(m68000_base_device* mc68kcpu);
-static void m68k_op_bfexts_32_ai(m68000_base_device* mc68kcpu);
-static void m68k_op_bfexts_32_di(m68000_base_device* mc68kcpu);
-static void m68k_op_bfexts_32_ix(m68000_base_device* mc68kcpu);
-static void m68k_op_bfexts_32_aw(m68000_base_device* mc68kcpu);
-static void m68k_op_bfexts_32_al(m68000_base_device* mc68kcpu);
-static void m68k_op_bfexts_32_pcdi(m68000_base_device* mc68kcpu);
-static void m68k_op_bfexts_32_pcix(m68000_base_device* mc68kcpu);
-static void m68k_op_bfextu_32_d(m68000_base_device* mc68kcpu);
-static void m68k_op_bfextu_32_ai(m68000_base_device* mc68kcpu);
-static void m68k_op_bfextu_32_di(m68000_base_device* mc68kcpu);
-static void m68k_op_bfextu_32_ix(m68000_base_device* mc68kcpu);
-static void m68k_op_bfextu_32_aw(m68000_base_device* mc68kcpu);
-static void m68k_op_bfextu_32_al(m68000_base_device* mc68kcpu);
-static void m68k_op_bfextu_32_pcdi(m68000_base_device* mc68kcpu);
-static void m68k_op_bfextu_32_pcix(m68000_base_device* mc68kcpu);
-static void m68k_op_bfffo_32_d(m68000_base_device* mc68kcpu);
-static void m68k_op_bfffo_32_ai(m68000_base_device* mc68kcpu);
-static void m68k_op_bfffo_32_di(m68000_base_device* mc68kcpu);
-static void m68k_op_bfffo_32_ix(m68000_base_device* mc68kcpu);
-static void m68k_op_bfffo_32_aw(m68000_base_device* mc68kcpu);
-static void m68k_op_bfffo_32_al(m68000_base_device* mc68kcpu);
-static void m68k_op_bfffo_32_pcdi(m68000_base_device* mc68kcpu);
-static void m68k_op_bfffo_32_pcix(m68000_base_device* mc68kcpu);
-static void m68k_op_bfins_32_d(m68000_base_device* mc68kcpu);
-static void m68k_op_bfins_32_ai(m68000_base_device* mc68kcpu);
-static void m68k_op_bfins_32_di(m68000_base_device* mc68kcpu);
-static void m68k_op_bfins_32_ix(m68000_base_device* mc68kcpu);
-static void m68k_op_bfins_32_aw(m68000_base_device* mc68kcpu);
-static void m68k_op_bfins_32_al(m68000_base_device* mc68kcpu);
-static void m68k_op_bfset_32_d(m68000_base_device* mc68kcpu);
-static void m68k_op_bfset_32_ai(m68000_base_device* mc68kcpu);
-static void m68k_op_bfset_32_di(m68000_base_device* mc68kcpu);
-static void m68k_op_bfset_32_ix(m68000_base_device* mc68kcpu);
-static void m68k_op_bfset_32_aw(m68000_base_device* mc68kcpu);
-static void m68k_op_bfset_32_al(m68000_base_device* mc68kcpu);
-static void m68k_op_bftst_32_d(m68000_base_device* mc68kcpu);
-static void m68k_op_bftst_32_ai(m68000_base_device* mc68kcpu);
-static void m68k_op_bftst_32_di(m68000_base_device* mc68kcpu);
-static void m68k_op_bftst_32_ix(m68000_base_device* mc68kcpu);
-static void m68k_op_bftst_32_aw(m68000_base_device* mc68kcpu);
-static void m68k_op_bftst_32_al(m68000_base_device* mc68kcpu);
-static void m68k_op_bftst_32_pcdi(m68000_base_device* mc68kcpu);
-static void m68k_op_bftst_32_pcix(m68000_base_device* mc68kcpu);
-static void m68k_op_bkpt(m68000_base_device* mc68kcpu);
-static void m68k_op_bra_8(m68000_base_device* mc68kcpu);
-static void m68k_op_bra_16(m68000_base_device* mc68kcpu);
-static void m68k_op_bra_32(m68000_base_device* mc68kcpu);
-static void m68k_op_bset_32_r_d(m68000_base_device* mc68kcpu);
-static void m68k_op_bset_8_r_ai(m68000_base_device* mc68kcpu);
-static void m68k_op_bset_8_r_pi(m68000_base_device* mc68kcpu);
-static void m68k_op_bset_8_r_pi7(m68000_base_device* mc68kcpu);
-static void m68k_op_bset_8_r_pd(m68000_base_device* mc68kcpu);
-static void m68k_op_bset_8_r_pd7(m68000_base_device* mc68kcpu);
-static void m68k_op_bset_8_r_di(m68000_base_device* mc68kcpu);
-static void m68k_op_bset_8_r_ix(m68000_base_device* mc68kcpu);
-static void m68k_op_bset_8_r_aw(m68000_base_device* mc68kcpu);
-static void m68k_op_bset_8_r_al(m68000_base_device* mc68kcpu);
-static void m68k_op_bset_32_s_d(m68000_base_device* mc68kcpu);
-static void m68k_op_bset_8_s_ai(m68000_base_device* mc68kcpu);
-static void m68k_op_bset_8_s_pi(m68000_base_device* mc68kcpu);
-static void m68k_op_bset_8_s_pi7(m68000_base_device* mc68kcpu);
-static void m68k_op_bset_8_s_pd(m68000_base_device* mc68kcpu);
-static void m68k_op_bset_8_s_pd7(m68000_base_device* mc68kcpu);
-static void m68k_op_bset_8_s_di(m68000_base_device* mc68kcpu);
-static void m68k_op_bset_8_s_ix(m68000_base_device* mc68kcpu);
-static void m68k_op_bset_8_s_aw(m68000_base_device* mc68kcpu);
-static void m68k_op_bset_8_s_al(m68000_base_device* mc68kcpu);
-static void m68k_op_bsr_8(m68000_base_device* mc68kcpu);
-static void m68k_op_bsr_16(m68000_base_device* mc68kcpu);
-static void m68k_op_bsr_32(m68000_base_device* mc68kcpu);
-static void m68k_op_btst_32_r_d(m68000_base_device* mc68kcpu);
-static void m68k_op_btst_8_r_ai(m68000_base_device* mc68kcpu);
-static void m68k_op_btst_8_r_pi(m68000_base_device* mc68kcpu);
-static void m68k_op_btst_8_r_pi7(m68000_base_device* mc68kcpu);
-static void m68k_op_btst_8_r_pd(m68000_base_device* mc68kcpu);
-static void m68k_op_btst_8_r_pd7(m68000_base_device* mc68kcpu);
-static void m68k_op_btst_8_r_di(m68000_base_device* mc68kcpu);
-static void m68k_op_btst_8_r_ix(m68000_base_device* mc68kcpu);
-static void m68k_op_btst_8_r_aw(m68000_base_device* mc68kcpu);
-static void m68k_op_btst_8_r_al(m68000_base_device* mc68kcpu);
-static void m68k_op_btst_8_r_pcdi(m68000_base_device* mc68kcpu);
-static void m68k_op_btst_8_r_pcix(m68000_base_device* mc68kcpu);
-static void m68k_op_btst_8_r_i(m68000_base_device* mc68kcpu);
-static void m68k_op_btst_32_s_d(m68000_base_device* mc68kcpu);
-static void m68k_op_btst_8_s_ai(m68000_base_device* mc68kcpu);
-static void m68k_op_btst_8_s_pi(m68000_base_device* mc68kcpu);
-static void m68k_op_btst_8_s_pi7(m68000_base_device* mc68kcpu);
-static void m68k_op_btst_8_s_pd(m68000_base_device* mc68kcpu);
-static void m68k_op_btst_8_s_pd7(m68000_base_device* mc68kcpu);
-static void m68k_op_btst_8_s_di(m68000_base_device* mc68kcpu);
-static void m68k_op_btst_8_s_ix(m68000_base_device* mc68kcpu);
-static void m68k_op_btst_8_s_aw(m68000_base_device* mc68kcpu);
-static void m68k_op_btst_8_s_al(m68000_base_device* mc68kcpu);
-static void m68k_op_btst_8_s_pcdi(m68000_base_device* mc68kcpu);
-static void m68k_op_btst_8_s_pcix(m68000_base_device* mc68kcpu);
-static void m68k_op_callm_32_ai(m68000_base_device* mc68kcpu);
-static void m68k_op_callm_32_di(m68000_base_device* mc68kcpu);
-static void m68k_op_callm_32_ix(m68000_base_device* mc68kcpu);
-static void m68k_op_callm_32_aw(m68000_base_device* mc68kcpu);
-static void m68k_op_callm_32_al(m68000_base_device* mc68kcpu);
-static void m68k_op_callm_32_pcdi(m68000_base_device* mc68kcpu);
-static void m68k_op_callm_32_pcix(m68000_base_device* mc68kcpu);
-static void m68k_op_cas_8_ai(m68000_base_device* mc68kcpu);
-static void m68k_op_cas_8_pi(m68000_base_device* mc68kcpu);
-static void m68k_op_cas_8_pi7(m68000_base_device* mc68kcpu);
-static void m68k_op_cas_8_pd(m68000_base_device* mc68kcpu);
-static void m68k_op_cas_8_pd7(m68000_base_device* mc68kcpu);
-static void m68k_op_cas_8_di(m68000_base_device* mc68kcpu);
-static void m68k_op_cas_8_ix(m68000_base_device* mc68kcpu);
-static void m68k_op_cas_8_aw(m68000_base_device* mc68kcpu);
-static void m68k_op_cas_8_al(m68000_base_device* mc68kcpu);
-static void m68k_op_cas_16_ai(m68000_base_device* mc68kcpu);
-static void m68k_op_cas_16_pi(m68000_base_device* mc68kcpu);
-static void m68k_op_cas_16_pd(m68000_base_device* mc68kcpu);
-static void m68k_op_cas_16_di(m68000_base_device* mc68kcpu);
-static void m68k_op_cas_16_ix(m68000_base_device* mc68kcpu);
-static void m68k_op_cas_16_aw(m68000_base_device* mc68kcpu);
-static void m68k_op_cas_16_al(m68000_base_device* mc68kcpu);
-static void m68k_op_cas_32_ai(m68000_base_device* mc68kcpu);
-static void m68k_op_cas_32_pi(m68000_base_device* mc68kcpu);
-static void m68k_op_cas_32_pd(m68000_base_device* mc68kcpu);
-static void m68k_op_cas_32_di(m68000_base_device* mc68kcpu);
-static void m68k_op_cas_32_ix(m68000_base_device* mc68kcpu);
-static void m68k_op_cas_32_aw(m68000_base_device* mc68kcpu);
-static void m68k_op_cas_32_al(m68000_base_device* mc68kcpu);
-static void m68k_op_cas2_16(m68000_base_device* mc68kcpu);
-static void m68k_op_cas2_32(m68000_base_device* mc68kcpu);
-static void m68k_op_chk_16_d(m68000_base_device* mc68kcpu);
-static void m68k_op_chk_16_ai(m68000_base_device* mc68kcpu);
-static void m68k_op_chk_16_pi(m68000_base_device* mc68kcpu);
-static void m68k_op_chk_16_pd(m68000_base_device* mc68kcpu);
-static void m68k_op_chk_16_di(m68000_base_device* mc68kcpu);
-static void m68k_op_chk_16_ix(m68000_base_device* mc68kcpu);
-static void m68k_op_chk_16_aw(m68000_base_device* mc68kcpu);
-static void m68k_op_chk_16_al(m68000_base_device* mc68kcpu);
-static void m68k_op_chk_16_pcdi(m68000_base_device* mc68kcpu);
-static void m68k_op_chk_16_pcix(m68000_base_device* mc68kcpu);
-static void m68k_op_chk_16_i(m68000_base_device* mc68kcpu);
-static void m68k_op_chk_32_d(m68000_base_device* mc68kcpu);
-static void m68k_op_chk_32_ai(m68000_base_device* mc68kcpu);
-static void m68k_op_chk_32_pi(m68000_base_device* mc68kcpu);
-static void m68k_op_chk_32_pd(m68000_base_device* mc68kcpu);
-static void m68k_op_chk_32_di(m68000_base_device* mc68kcpu);
-static void m68k_op_chk_32_ix(m68000_base_device* mc68kcpu);
-static void m68k_op_chk_32_aw(m68000_base_device* mc68kcpu);
-static void m68k_op_chk_32_al(m68000_base_device* mc68kcpu);
-static void m68k_op_chk_32_pcdi(m68000_base_device* mc68kcpu);
-static void m68k_op_chk_32_pcix(m68000_base_device* mc68kcpu);
-static void m68k_op_chk_32_i(m68000_base_device* mc68kcpu);
-static void m68k_op_chk2cmp2_8_pcdi(m68000_base_device* mc68kcpu);
-static void m68k_op_chk2cmp2_8_pcix(m68000_base_device* mc68kcpu);
-static void m68k_op_chk2cmp2_8_ai(m68000_base_device* mc68kcpu);
-static void m68k_op_chk2cmp2_8_di(m68000_base_device* mc68kcpu);
-static void m68k_op_chk2cmp2_8_ix(m68000_base_device* mc68kcpu);
-static void m68k_op_chk2cmp2_8_aw(m68000_base_device* mc68kcpu);
-static void m68k_op_chk2cmp2_8_al(m68000_base_device* mc68kcpu);
-static void m68k_op_chk2cmp2_16_pcdi(m68000_base_device* mc68kcpu);
-static void m68k_op_chk2cmp2_16_pcix(m68000_base_device* mc68kcpu);
-static void m68k_op_chk2cmp2_16_ai(m68000_base_device* mc68kcpu);
-static void m68k_op_chk2cmp2_16_di(m68000_base_device* mc68kcpu);
-static void m68k_op_chk2cmp2_16_ix(m68000_base_device* mc68kcpu);
-static void m68k_op_chk2cmp2_16_aw(m68000_base_device* mc68kcpu);
-static void m68k_op_chk2cmp2_16_al(m68000_base_device* mc68kcpu);
-static void m68k_op_chk2cmp2_32_pcdi(m68000_base_device* mc68kcpu);
-static void m68k_op_chk2cmp2_32_pcix(m68000_base_device* mc68kcpu);
-static void m68k_op_chk2cmp2_32_ai(m68000_base_device* mc68kcpu);
-static void m68k_op_chk2cmp2_32_di(m68000_base_device* mc68kcpu);
-static void m68k_op_chk2cmp2_32_ix(m68000_base_device* mc68kcpu);
-static void m68k_op_chk2cmp2_32_aw(m68000_base_device* mc68kcpu);
-static void m68k_op_chk2cmp2_32_al(m68000_base_device* mc68kcpu);
-static void m68k_op_clr_8_d(m68000_base_device* mc68kcpu);
-static void m68k_op_clr_8_ai(m68000_base_device* mc68kcpu);
-static void m68k_op_clr_8_pi(m68000_base_device* mc68kcpu);
-static void m68k_op_clr_8_pi7(m68000_base_device* mc68kcpu);
-static void m68k_op_clr_8_pd(m68000_base_device* mc68kcpu);
-static void m68k_op_clr_8_pd7(m68000_base_device* mc68kcpu);
-static void m68k_op_clr_8_di(m68000_base_device* mc68kcpu);
-static void m68k_op_clr_8_ix(m68000_base_device* mc68kcpu);
-static void m68k_op_clr_8_aw(m68000_base_device* mc68kcpu);
-static void m68k_op_clr_8_al(m68000_base_device* mc68kcpu);
-static void m68k_op_clr_16_d(m68000_base_device* mc68kcpu);
-static void m68k_op_clr_16_ai(m68000_base_device* mc68kcpu);
-static void m68k_op_clr_16_pi(m68000_base_device* mc68kcpu);
-static void m68k_op_clr_16_pd(m68000_base_device* mc68kcpu);
-static void m68k_op_clr_16_di(m68000_base_device* mc68kcpu);
-static void m68k_op_clr_16_ix(m68000_base_device* mc68kcpu);
-static void m68k_op_clr_16_aw(m68000_base_device* mc68kcpu);
-static void m68k_op_clr_16_al(m68000_base_device* mc68kcpu);
-static void m68k_op_clr_32_d(m68000_base_device* mc68kcpu);
-static void m68k_op_clr_32_ai(m68000_base_device* mc68kcpu);
-static void m68k_op_clr_32_pi(m68000_base_device* mc68kcpu);
-static void m68k_op_clr_32_pd(m68000_base_device* mc68kcpu);
-static void m68k_op_clr_32_di(m68000_base_device* mc68kcpu);
-static void m68k_op_clr_32_ix(m68000_base_device* mc68kcpu);
-static void m68k_op_clr_32_aw(m68000_base_device* mc68kcpu);
-static void m68k_op_clr_32_al(m68000_base_device* mc68kcpu);
-static void m68k_op_cmp_8_d(m68000_base_device* mc68kcpu);
-static void m68k_op_cmp_8_ai(m68000_base_device* mc68kcpu);
-static void m68k_op_cmp_8_pi(m68000_base_device* mc68kcpu);
-static void m68k_op_cmp_8_pi7(m68000_base_device* mc68kcpu);
-static void m68k_op_cmp_8_pd(m68000_base_device* mc68kcpu);
-static void m68k_op_cmp_8_pd7(m68000_base_device* mc68kcpu);
-static void m68k_op_cmp_8_di(m68000_base_device* mc68kcpu);
-static void m68k_op_cmp_8_ix(m68000_base_device* mc68kcpu);
-static void m68k_op_cmp_8_aw(m68000_base_device* mc68kcpu);
-static void m68k_op_cmp_8_al(m68000_base_device* mc68kcpu);
-static void m68k_op_cmp_8_pcdi(m68000_base_device* mc68kcpu);
-static void m68k_op_cmp_8_pcix(m68000_base_device* mc68kcpu);
-static void m68k_op_cmp_8_i(m68000_base_device* mc68kcpu);
-static void m68k_op_cmp_16_d(m68000_base_device* mc68kcpu);
-static void m68k_op_cmp_16_a(m68000_base_device* mc68kcpu);
-static void m68k_op_cmp_16_ai(m68000_base_device* mc68kcpu);
-static void m68k_op_cmp_16_pi(m68000_base_device* mc68kcpu);
-static void m68k_op_cmp_16_pd(m68000_base_device* mc68kcpu);
-static void m68k_op_cmp_16_di(m68000_base_device* mc68kcpu);
-static void m68k_op_cmp_16_ix(m68000_base_device* mc68kcpu);
-static void m68k_op_cmp_16_aw(m68000_base_device* mc68kcpu);
-static void m68k_op_cmp_16_al(m68000_base_device* mc68kcpu);
-static void m68k_op_cmp_16_pcdi(m68000_base_device* mc68kcpu);
-static void m68k_op_cmp_16_pcix(m68000_base_device* mc68kcpu);
-static void m68k_op_cmp_16_i(m68000_base_device* mc68kcpu);
-static void m68k_op_cmp_32_d(m68000_base_device* mc68kcpu);
-static void m68k_op_cmp_32_a(m68000_base_device* mc68kcpu);
-static void m68k_op_cmp_32_ai(m68000_base_device* mc68kcpu);
-static void m68k_op_cmp_32_pi(m68000_base_device* mc68kcpu);
-static void m68k_op_cmp_32_pd(m68000_base_device* mc68kcpu);
-static void m68k_op_cmp_32_di(m68000_base_device* mc68kcpu);
-static void m68k_op_cmp_32_ix(m68000_base_device* mc68kcpu);
-static void m68k_op_cmp_32_aw(m68000_base_device* mc68kcpu);
-static void m68k_op_cmp_32_al(m68000_base_device* mc68kcpu);
-static void m68k_op_cmp_32_pcdi(m68000_base_device* mc68kcpu);
-static void m68k_op_cmp_32_pcix(m68000_base_device* mc68kcpu);
-static void m68k_op_cmp_32_i(m68000_base_device* mc68kcpu);
-static void m68k_op_cmpa_16_d(m68000_base_device* mc68kcpu);
-static void m68k_op_cmpa_16_a(m68000_base_device* mc68kcpu);
-static void m68k_op_cmpa_16_ai(m68000_base_device* mc68kcpu);
-static void m68k_op_cmpa_16_pi(m68000_base_device* mc68kcpu);
-static void m68k_op_cmpa_16_pd(m68000_base_device* mc68kcpu);
-static void m68k_op_cmpa_16_di(m68000_base_device* mc68kcpu);
-static void m68k_op_cmpa_16_ix(m68000_base_device* mc68kcpu);
-static void m68k_op_cmpa_16_aw(m68000_base_device* mc68kcpu);
-static void m68k_op_cmpa_16_al(m68000_base_device* mc68kcpu);
-static void m68k_op_cmpa_16_pcdi(m68000_base_device* mc68kcpu);
-static void m68k_op_cmpa_16_pcix(m68000_base_device* mc68kcpu);
-static void m68k_op_cmpa_16_i(m68000_base_device* mc68kcpu);
-static void m68k_op_cmpa_32_d(m68000_base_device* mc68kcpu);
-static void m68k_op_cmpa_32_a(m68000_base_device* mc68kcpu);
-static void m68k_op_cmpa_32_ai(m68000_base_device* mc68kcpu);
-static void m68k_op_cmpa_32_pi(m68000_base_device* mc68kcpu);
-static void m68k_op_cmpa_32_pd(m68000_base_device* mc68kcpu);
-static void m68k_op_cmpa_32_di(m68000_base_device* mc68kcpu);
-static void m68k_op_cmpa_32_ix(m68000_base_device* mc68kcpu);
-static void m68k_op_cmpa_32_aw(m68000_base_device* mc68kcpu);
-static void m68k_op_cmpa_32_al(m68000_base_device* mc68kcpu);
-static void m68k_op_cmpa_32_pcdi(m68000_base_device* mc68kcpu);
-static void m68k_op_cmpa_32_pcix(m68000_base_device* mc68kcpu);
-static void m68k_op_cmpa_32_i(m68000_base_device* mc68kcpu);
-static void m68k_op_cmpi_8_d(m68000_base_device* mc68kcpu);
-static void m68k_op_cmpi_8_ai(m68000_base_device* mc68kcpu);
-static void m68k_op_cmpi_8_pi(m68000_base_device* mc68kcpu);
-static void m68k_op_cmpi_8_pi7(m68000_base_device* mc68kcpu);
-static void m68k_op_cmpi_8_pd(m68000_base_device* mc68kcpu);
-static void m68k_op_cmpi_8_pd7(m68000_base_device* mc68kcpu);
-static void m68k_op_cmpi_8_di(m68000_base_device* mc68kcpu);
-static void m68k_op_cmpi_8_ix(m68000_base_device* mc68kcpu);
-static void m68k_op_cmpi_8_aw(m68000_base_device* mc68kcpu);
-static void m68k_op_cmpi_8_al(m68000_base_device* mc68kcpu);
-static void m68k_op_cmpi_8_pcdi(m68000_base_device* mc68kcpu);
-static void m68k_op_cmpi_8_pcix(m68000_base_device* mc68kcpu);
-static void m68k_op_cmpi_16_d(m68000_base_device* mc68kcpu);
-static void m68k_op_cmpi_16_ai(m68000_base_device* mc68kcpu);
-static void m68k_op_cmpi_16_pi(m68000_base_device* mc68kcpu);
-static void m68k_op_cmpi_16_pd(m68000_base_device* mc68kcpu);
-static void m68k_op_cmpi_16_di(m68000_base_device* mc68kcpu);
-static void m68k_op_cmpi_16_ix(m68000_base_device* mc68kcpu);
-static void m68k_op_cmpi_16_aw(m68000_base_device* mc68kcpu);
-static void m68k_op_cmpi_16_al(m68000_base_device* mc68kcpu);
-static void m68k_op_cmpi_16_pcdi(m68000_base_device* mc68kcpu);
-static void m68k_op_cmpi_16_pcix(m68000_base_device* mc68kcpu);
-static void m68k_op_cmpi_32_d(m68000_base_device* mc68kcpu);
-static void m68k_op_cmpi_32_ai(m68000_base_device* mc68kcpu);
-static void m68k_op_cmpi_32_pi(m68000_base_device* mc68kcpu);
-static void m68k_op_cmpi_32_pd(m68000_base_device* mc68kcpu);
-static void m68k_op_cmpi_32_di(m68000_base_device* mc68kcpu);
-static void m68k_op_cmpi_32_ix(m68000_base_device* mc68kcpu);
-static void m68k_op_cmpi_32_aw(m68000_base_device* mc68kcpu);
-static void m68k_op_cmpi_32_al(m68000_base_device* mc68kcpu);
-static void m68k_op_cmpi_32_pcdi(m68000_base_device* mc68kcpu);
-static void m68k_op_cmpi_32_pcix(m68000_base_device* mc68kcpu);
-static void m68k_op_cmpm_8_ax7(m68000_base_device* mc68kcpu);
-static void m68k_op_cmpm_8_ay7(m68000_base_device* mc68kcpu);
-static void m68k_op_cmpm_8_axy7(m68000_base_device* mc68kcpu);
-static void m68k_op_cmpm_8(m68000_base_device* mc68kcpu);
-static void m68k_op_cmpm_16(m68000_base_device* mc68kcpu);
-static void m68k_op_cmpm_32(m68000_base_device* mc68kcpu);
-static void m68k_op_cpbcc_32(m68000_base_device* mc68kcpu);
-static void m68k_op_cpdbcc_32(m68000_base_device* mc68kcpu);
-static void m68k_op_cpgen_32(m68000_base_device* mc68kcpu);
-static void m68k_op_cpscc_32(m68000_base_device* mc68kcpu);
-static void m68k_op_cptrapcc_32(m68000_base_device* mc68kcpu);
-static void m68k_op_ftrapcc_32(m68000_base_device* mc68kcpu);
-static void m68k_op_dbt_16(m68000_base_device* mc68kcpu);
-static void m68k_op_dbf_16(m68000_base_device* mc68kcpu);
-static void m68k_op_dbhi_16(m68000_base_device* mc68kcpu);
-static void m68k_op_dbls_16(m68000_base_device* mc68kcpu);
-static void m68k_op_dbcc_16(m68000_base_device* mc68kcpu);
-static void m68k_op_dbcs_16(m68000_base_device* mc68kcpu);
-static void m68k_op_dbne_16(m68000_base_device* mc68kcpu);
-static void m68k_op_dbeq_16(m68000_base_device* mc68kcpu);
-static void m68k_op_dbvc_16(m68000_base_device* mc68kcpu);
-static void m68k_op_dbvs_16(m68000_base_device* mc68kcpu);
-static void m68k_op_dbpl_16(m68000_base_device* mc68kcpu);
-static void m68k_op_dbmi_16(m68000_base_device* mc68kcpu);
-static void m68k_op_dbge_16(m68000_base_device* mc68kcpu);
-static void m68k_op_dblt_16(m68000_base_device* mc68kcpu);
-static void m68k_op_dbgt_16(m68000_base_device* mc68kcpu);
-static void m68k_op_dble_16(m68000_base_device* mc68kcpu);
-static void m68k_op_divs_16_d(m68000_base_device* mc68kcpu);
-static void m68k_op_divs_16_ai(m68000_base_device* mc68kcpu);
-static void m68k_op_divs_16_pi(m68000_base_device* mc68kcpu);
-static void m68k_op_divs_16_pd(m68000_base_device* mc68kcpu);
-static void m68k_op_divs_16_di(m68000_base_device* mc68kcpu);
-static void m68k_op_divs_16_ix(m68000_base_device* mc68kcpu);
-static void m68k_op_divs_16_aw(m68000_base_device* mc68kcpu);
-static void m68k_op_divs_16_al(m68000_base_device* mc68kcpu);
-static void m68k_op_divs_16_pcdi(m68000_base_device* mc68kcpu);
-static void m68k_op_divs_16_pcix(m68000_base_device* mc68kcpu);
-static void m68k_op_divs_16_i(m68000_base_device* mc68kcpu);
-static void m68k_op_divu_16_d(m68000_base_device* mc68kcpu);
-static void m68k_op_divu_16_ai(m68000_base_device* mc68kcpu);
-static void m68k_op_divu_16_pi(m68000_base_device* mc68kcpu);
-static void m68k_op_divu_16_pd(m68000_base_device* mc68kcpu);
-static void m68k_op_divu_16_di(m68000_base_device* mc68kcpu);
-static void m68k_op_divu_16_ix(m68000_base_device* mc68kcpu);
-static void m68k_op_divu_16_aw(m68000_base_device* mc68kcpu);
-static void m68k_op_divu_16_al(m68000_base_device* mc68kcpu);
-static void m68k_op_divu_16_pcdi(m68000_base_device* mc68kcpu);
-static void m68k_op_divu_16_pcix(m68000_base_device* mc68kcpu);
-static void m68k_op_divu_16_i(m68000_base_device* mc68kcpu);
-static void m68k_op_divl_32_d(m68000_base_device* mc68kcpu);
-static void m68k_op_divl_32_ai(m68000_base_device* mc68kcpu);
-static void m68k_op_divl_32_pi(m68000_base_device* mc68kcpu);
-static void m68k_op_divl_32_pd(m68000_base_device* mc68kcpu);
-static void m68k_op_divl_32_di(m68000_base_device* mc68kcpu);
-static void m68k_op_divl_32_ix(m68000_base_device* mc68kcpu);
-static void m68k_op_divl_32_aw(m68000_base_device* mc68kcpu);
-static void m68k_op_divl_32_al(m68000_base_device* mc68kcpu);
-static void m68k_op_divl_32_pcdi(m68000_base_device* mc68kcpu);
-static void m68k_op_divl_32_pcix(m68000_base_device* mc68kcpu);
-static void m68k_op_divl_32_i(m68000_base_device* mc68kcpu);
-static void m68k_op_eor_8_d(m68000_base_device* mc68kcpu);
-static void m68k_op_eor_8_ai(m68000_base_device* mc68kcpu);
-static void m68k_op_eor_8_pi(m68000_base_device* mc68kcpu);
-static void m68k_op_eor_8_pi7(m68000_base_device* mc68kcpu);
-static void m68k_op_eor_8_pd(m68000_base_device* mc68kcpu);
-static void m68k_op_eor_8_pd7(m68000_base_device* mc68kcpu);
-static void m68k_op_eor_8_di(m68000_base_device* mc68kcpu);
-static void m68k_op_eor_8_ix(m68000_base_device* mc68kcpu);
-static void m68k_op_eor_8_aw(m68000_base_device* mc68kcpu);
-static void m68k_op_eor_8_al(m68000_base_device* mc68kcpu);
-static void m68k_op_eor_16_d(m68000_base_device* mc68kcpu);
-static void m68k_op_eor_16_ai(m68000_base_device* mc68kcpu);
-static void m68k_op_eor_16_pi(m68000_base_device* mc68kcpu);
-static void m68k_op_eor_16_pd(m68000_base_device* mc68kcpu);
-static void m68k_op_eor_16_di(m68000_base_device* mc68kcpu);
-static void m68k_op_eor_16_ix(m68000_base_device* mc68kcpu);
-static void m68k_op_eor_16_aw(m68000_base_device* mc68kcpu);
-static void m68k_op_eor_16_al(m68000_base_device* mc68kcpu);
-static void m68k_op_eor_32_d(m68000_base_device* mc68kcpu);
-static void m68k_op_eor_32_ai(m68000_base_device* mc68kcpu);
-static void m68k_op_eor_32_pi(m68000_base_device* mc68kcpu);
-static void m68k_op_eor_32_pd(m68000_base_device* mc68kcpu);
-static void m68k_op_eor_32_di(m68000_base_device* mc68kcpu);
-static void m68k_op_eor_32_ix(m68000_base_device* mc68kcpu);
-static void m68k_op_eor_32_aw(m68000_base_device* mc68kcpu);
-static void m68k_op_eor_32_al(m68000_base_device* mc68kcpu);
-static void m68k_op_eori_8_d(m68000_base_device* mc68kcpu);
-static void m68k_op_eori_8_ai(m68000_base_device* mc68kcpu);
-static void m68k_op_eori_8_pi(m68000_base_device* mc68kcpu);
-static void m68k_op_eori_8_pi7(m68000_base_device* mc68kcpu);
-static void m68k_op_eori_8_pd(m68000_base_device* mc68kcpu);
-static void m68k_op_eori_8_pd7(m68000_base_device* mc68kcpu);
-static void m68k_op_eori_8_di(m68000_base_device* mc68kcpu);
-static void m68k_op_eori_8_ix(m68000_base_device* mc68kcpu);
-static void m68k_op_eori_8_aw(m68000_base_device* mc68kcpu);
-static void m68k_op_eori_8_al(m68000_base_device* mc68kcpu);
-static void m68k_op_eori_16_d(m68000_base_device* mc68kcpu);
-static void m68k_op_eori_16_ai(m68000_base_device* mc68kcpu);
-static void m68k_op_eori_16_pi(m68000_base_device* mc68kcpu);
-static void m68k_op_eori_16_pd(m68000_base_device* mc68kcpu);
-static void m68k_op_eori_16_di(m68000_base_device* mc68kcpu);
-static void m68k_op_eori_16_ix(m68000_base_device* mc68kcpu);
-static void m68k_op_eori_16_aw(m68000_base_device* mc68kcpu);
-static void m68k_op_eori_16_al(m68000_base_device* mc68kcpu);
-static void m68k_op_eori_32_d(m68000_base_device* mc68kcpu);
-static void m68k_op_eori_32_ai(m68000_base_device* mc68kcpu);
-static void m68k_op_eori_32_pi(m68000_base_device* mc68kcpu);
-static void m68k_op_eori_32_pd(m68000_base_device* mc68kcpu);
-static void m68k_op_eori_32_di(m68000_base_device* mc68kcpu);
-static void m68k_op_eori_32_ix(m68000_base_device* mc68kcpu);
-static void m68k_op_eori_32_aw(m68000_base_device* mc68kcpu);
-static void m68k_op_eori_32_al(m68000_base_device* mc68kcpu);
-static void m68k_op_eori_16_toc(m68000_base_device* mc68kcpu);
-static void m68k_op_eori_16_tos(m68000_base_device* mc68kcpu);
-static void m68k_op_exg_32_dd(m68000_base_device* mc68kcpu);
-static void m68k_op_exg_32_aa(m68000_base_device* mc68kcpu);
-static void m68k_op_exg_32_da(m68000_base_device* mc68kcpu);
-static void m68k_op_ext_16(m68000_base_device* mc68kcpu);
-static void m68k_op_ext_32(m68000_base_device* mc68kcpu);
-static void m68k_op_extb_32(m68000_base_device* mc68kcpu);
-static void m68k_op_illegal(m68000_base_device* mc68kcpu);
-static void m68k_op_jmp_32_ai(m68000_base_device* mc68kcpu);
-static void m68k_op_jmp_32_di(m68000_base_device* mc68kcpu);
-static void m68k_op_jmp_32_ix(m68000_base_device* mc68kcpu);
-static void m68k_op_jmp_32_aw(m68000_base_device* mc68kcpu);
-static void m68k_op_jmp_32_al(m68000_base_device* mc68kcpu);
-static void m68k_op_jmp_32_pcdi(m68000_base_device* mc68kcpu);
-static void m68k_op_jmp_32_pcix(m68000_base_device* mc68kcpu);
-static void m68k_op_jsr_32_ai(m68000_base_device* mc68kcpu);
-static void m68k_op_jsr_32_di(m68000_base_device* mc68kcpu);
-static void m68k_op_jsr_32_ix(m68000_base_device* mc68kcpu);
-static void m68k_op_jsr_32_aw(m68000_base_device* mc68kcpu);
-static void m68k_op_jsr_32_al(m68000_base_device* mc68kcpu);
-static void m68k_op_jsr_32_pcdi(m68000_base_device* mc68kcpu);
-static void m68k_op_jsr_32_pcix(m68000_base_device* mc68kcpu);
-static void m68k_op_lea_32_ai(m68000_base_device* mc68kcpu);
-static void m68k_op_lea_32_di(m68000_base_device* mc68kcpu);
-static void m68k_op_lea_32_ix(m68000_base_device* mc68kcpu);
-static void m68k_op_lea_32_aw(m68000_base_device* mc68kcpu);
-static void m68k_op_lea_32_al(m68000_base_device* mc68kcpu);
-static void m68k_op_lea_32_pcdi(m68000_base_device* mc68kcpu);
-static void m68k_op_lea_32_pcix(m68000_base_device* mc68kcpu);
-static void m68k_op_link_16_a7(m68000_base_device* mc68kcpu);
-static void m68k_op_link_16(m68000_base_device* mc68kcpu);
-static void m68k_op_link_32_a7(m68000_base_device* mc68kcpu);
-static void m68k_op_link_32(m68000_base_device* mc68kcpu);
-static void m68k_op_lsr_8_s(m68000_base_device* mc68kcpu);
-static void m68k_op_lsr_16_s(m68000_base_device* mc68kcpu);
-static void m68k_op_lsr_32_s(m68000_base_device* mc68kcpu);
-static void m68k_op_lsr_8_r(m68000_base_device* mc68kcpu);
-static void m68k_op_lsr_16_r(m68000_base_device* mc68kcpu);
-static void m68k_op_lsr_32_r(m68000_base_device* mc68kcpu);
-static void m68k_op_lsr_16_ai(m68000_base_device* mc68kcpu);
-static void m68k_op_lsr_16_pi(m68000_base_device* mc68kcpu);
-static void m68k_op_lsr_16_pd(m68000_base_device* mc68kcpu);
-static void m68k_op_lsr_16_di(m68000_base_device* mc68kcpu);
-static void m68k_op_lsr_16_ix(m68000_base_device* mc68kcpu);
-static void m68k_op_lsr_16_aw(m68000_base_device* mc68kcpu);
-static void m68k_op_lsr_16_al(m68000_base_device* mc68kcpu);
-static void m68k_op_lsl_8_s(m68000_base_device* mc68kcpu);
-static void m68k_op_lsl_16_s(m68000_base_device* mc68kcpu);
-static void m68k_op_lsl_32_s(m68000_base_device* mc68kcpu);
-static void m68k_op_lsl_8_r(m68000_base_device* mc68kcpu);
-static void m68k_op_lsl_16_r(m68000_base_device* mc68kcpu);
-static void m68k_op_lsl_32_r(m68000_base_device* mc68kcpu);
-static void m68k_op_lsl_16_ai(m68000_base_device* mc68kcpu);
-static void m68k_op_lsl_16_pi(m68000_base_device* mc68kcpu);
-static void m68k_op_lsl_16_pd(m68000_base_device* mc68kcpu);
-static void m68k_op_lsl_16_di(m68000_base_device* mc68kcpu);
-static void m68k_op_lsl_16_ix(m68000_base_device* mc68kcpu);
-static void m68k_op_lsl_16_aw(m68000_base_device* mc68kcpu);
-static void m68k_op_lsl_16_al(m68000_base_device* mc68kcpu);
-static void m68k_op_move_8_d_d(m68000_base_device* mc68kcpu);
-static void m68k_op_move_8_d_ai(m68000_base_device* mc68kcpu);
-static void m68k_op_move_8_d_pi(m68000_base_device* mc68kcpu);
-static void m68k_op_move_8_d_pi7(m68000_base_device* mc68kcpu);
-static void m68k_op_move_8_d_pd(m68000_base_device* mc68kcpu);
-static void m68k_op_move_8_d_pd7(m68000_base_device* mc68kcpu);
-static void m68k_op_move_8_d_di(m68000_base_device* mc68kcpu);
-static void m68k_op_move_8_d_ix(m68000_base_device* mc68kcpu);
-static void m68k_op_move_8_d_aw(m68000_base_device* mc68kcpu);
-static void m68k_op_move_8_d_al(m68000_base_device* mc68kcpu);
-static void m68k_op_move_8_d_pcdi(m68000_base_device* mc68kcpu);
-static void m68k_op_move_8_d_pcix(m68000_base_device* mc68kcpu);
-static void m68k_op_move_8_d_i(m68000_base_device* mc68kcpu);
-static void m68k_op_move_8_ai_d(m68000_base_device* mc68kcpu);
-static void m68k_op_move_8_ai_ai(m68000_base_device* mc68kcpu);
-static void m68k_op_move_8_ai_pi(m68000_base_device* mc68kcpu);
-static void m68k_op_move_8_ai_pi7(m68000_base_device* mc68kcpu);
-static void m68k_op_move_8_ai_pd(m68000_base_device* mc68kcpu);
-static void m68k_op_move_8_ai_pd7(m68000_base_device* mc68kcpu);
-static void m68k_op_move_8_ai_di(m68000_base_device* mc68kcpu);
-static void m68k_op_move_8_ai_ix(m68000_base_device* mc68kcpu);
-static void m68k_op_move_8_ai_aw(m68000_base_device* mc68kcpu);
-static void m68k_op_move_8_ai_al(m68000_base_device* mc68kcpu);
-static void m68k_op_move_8_ai_pcdi(m68000_base_device* mc68kcpu);
-static void m68k_op_move_8_ai_pcix(m68000_base_device* mc68kcpu);
-static void m68k_op_move_8_ai_i(m68000_base_device* mc68kcpu);
-static void m68k_op_move_8_pi7_d(m68000_base_device* mc68kcpu);
-static void m68k_op_move_8_pi_d(m68000_base_device* mc68kcpu);
-static void m68k_op_move_8_pi7_ai(m68000_base_device* mc68kcpu);
-static void m68k_op_move_8_pi7_pi(m68000_base_device* mc68kcpu);
-static void m68k_op_move_8_pi7_pi7(m68000_base_device* mc68kcpu);
-static void m68k_op_move_8_pi7_pd(m68000_base_device* mc68kcpu);
-static void m68k_op_move_8_pi7_pd7(m68000_base_device* mc68kcpu);
-static void m68k_op_move_8_pi7_di(m68000_base_device* mc68kcpu);
-static void m68k_op_move_8_pi7_ix(m68000_base_device* mc68kcpu);
-static void m68k_op_move_8_pi7_aw(m68000_base_device* mc68kcpu);
-static void m68k_op_move_8_pi7_al(m68000_base_device* mc68kcpu);
-static void m68k_op_move_8_pi7_pcdi(m68000_base_device* mc68kcpu);
-static void m68k_op_move_8_pi7_pcix(m68000_base_device* mc68kcpu);
-static void m68k_op_move_8_pi7_i(m68000_base_device* mc68kcpu);
-static void m68k_op_move_8_pi_ai(m68000_base_device* mc68kcpu);
-static void m68k_op_move_8_pi_pi(m68000_base_device* mc68kcpu);
-static void m68k_op_move_8_pi_pi7(m68000_base_device* mc68kcpu);
-static void m68k_op_move_8_pi_pd(m68000_base_device* mc68kcpu);
-static void m68k_op_move_8_pi_pd7(m68000_base_device* mc68kcpu);
-static void m68k_op_move_8_pi_di(m68000_base_device* mc68kcpu);
-static void m68k_op_move_8_pi_ix(m68000_base_device* mc68kcpu);
-static void m68k_op_move_8_pi_aw(m68000_base_device* mc68kcpu);
-static void m68k_op_move_8_pi_al(m68000_base_device* mc68kcpu);
-static void m68k_op_move_8_pi_pcdi(m68000_base_device* mc68kcpu);
-static void m68k_op_move_8_pi_pcix(m68000_base_device* mc68kcpu);
-static void m68k_op_move_8_pi_i(m68000_base_device* mc68kcpu);
-static void m68k_op_move_8_pd7_d(m68000_base_device* mc68kcpu);
-static void m68k_op_move_8_pd_d(m68000_base_device* mc68kcpu);
-static void m68k_op_move_8_pd7_ai(m68000_base_device* mc68kcpu);
-static void m68k_op_move_8_pd7_pi(m68000_base_device* mc68kcpu);
-static void m68k_op_move_8_pd7_pi7(m68000_base_device* mc68kcpu);
-static void m68k_op_move_8_pd7_pd(m68000_base_device* mc68kcpu);
-static void m68k_op_move_8_pd7_pd7(m68000_base_device* mc68kcpu);
-static void m68k_op_move_8_pd7_di(m68000_base_device* mc68kcpu);
-static void m68k_op_move_8_pd7_ix(m68000_base_device* mc68kcpu);
-static void m68k_op_move_8_pd7_aw(m68000_base_device* mc68kcpu);
-static void m68k_op_move_8_pd7_al(m68000_base_device* mc68kcpu);
-static void m68k_op_move_8_pd7_pcdi(m68000_base_device* mc68kcpu);
-static void m68k_op_move_8_pd7_pcix(m68000_base_device* mc68kcpu);
-static void m68k_op_move_8_pd7_i(m68000_base_device* mc68kcpu);
-static void m68k_op_move_8_pd_ai(m68000_base_device* mc68kcpu);
-static void m68k_op_move_8_pd_pi(m68000_base_device* mc68kcpu);
-static void m68k_op_move_8_pd_pi7(m68000_base_device* mc68kcpu);
-static void m68k_op_move_8_pd_pd(m68000_base_device* mc68kcpu);
-static void m68k_op_move_8_pd_pd7(m68000_base_device* mc68kcpu);
-static void m68k_op_move_8_pd_di(m68000_base_device* mc68kcpu);
-static void m68k_op_move_8_pd_ix(m68000_base_device* mc68kcpu);
-static void m68k_op_move_8_pd_aw(m68000_base_device* mc68kcpu);
-static void m68k_op_move_8_pd_al(m68000_base_device* mc68kcpu);
-static void m68k_op_move_8_pd_pcdi(m68000_base_device* mc68kcpu);
-static void m68k_op_move_8_pd_pcix(m68000_base_device* mc68kcpu);
-static void m68k_op_move_8_pd_i(m68000_base_device* mc68kcpu);
-static void m68k_op_move_8_di_d(m68000_base_device* mc68kcpu);
-static void m68k_op_move_8_di_ai(m68000_base_device* mc68kcpu);
-static void m68k_op_move_8_di_pi(m68000_base_device* mc68kcpu);
-static void m68k_op_move_8_di_pi7(m68000_base_device* mc68kcpu);
-static void m68k_op_move_8_di_pd(m68000_base_device* mc68kcpu);
-static void m68k_op_move_8_di_pd7(m68000_base_device* mc68kcpu);
-static void m68k_op_move_8_di_di(m68000_base_device* mc68kcpu);
-static void m68k_op_move_8_di_ix(m68000_base_device* mc68kcpu);
-static void m68k_op_move_8_di_aw(m68000_base_device* mc68kcpu);
-static void m68k_op_move_8_di_al(m68000_base_device* mc68kcpu);
-static void m68k_op_move_8_di_pcdi(m68000_base_device* mc68kcpu);
-static void m68k_op_move_8_di_pcix(m68000_base_device* mc68kcpu);
-static void m68k_op_move_8_di_i(m68000_base_device* mc68kcpu);
-static void m68k_op_move_8_ix_d(m68000_base_device* mc68kcpu);
-static void m68k_op_move_8_ix_ai(m68000_base_device* mc68kcpu);
-static void m68k_op_move_8_ix_pi(m68000_base_device* mc68kcpu);
-static void m68k_op_move_8_ix_pi7(m68000_base_device* mc68kcpu);
-static void m68k_op_move_8_ix_pd(m68000_base_device* mc68kcpu);
-static void m68k_op_move_8_ix_pd7(m68000_base_device* mc68kcpu);
-static void m68k_op_move_8_ix_di(m68000_base_device* mc68kcpu);
-static void m68k_op_move_8_ix_ix(m68000_base_device* mc68kcpu);
-static void m68k_op_move_8_ix_aw(m68000_base_device* mc68kcpu);
-static void m68k_op_move_8_ix_al(m68000_base_device* mc68kcpu);
-static void m68k_op_move_8_ix_pcdi(m68000_base_device* mc68kcpu);
-static void m68k_op_move_8_ix_pcix(m68000_base_device* mc68kcpu);
-static void m68k_op_move_8_ix_i(m68000_base_device* mc68kcpu);
-static void m68k_op_move_8_aw_d(m68000_base_device* mc68kcpu);
-static void m68k_op_move_8_aw_ai(m68000_base_device* mc68kcpu);
-static void m68k_op_move_8_aw_pi(m68000_base_device* mc68kcpu);
-static void m68k_op_move_8_aw_pi7(m68000_base_device* mc68kcpu);
-static void m68k_op_move_8_aw_pd(m68000_base_device* mc68kcpu);
-static void m68k_op_move_8_aw_pd7(m68000_base_device* mc68kcpu);
-static void m68k_op_move_8_aw_di(m68000_base_device* mc68kcpu);
-static void m68k_op_move_8_aw_ix(m68000_base_device* mc68kcpu);
-static void m68k_op_move_8_aw_aw(m68000_base_device* mc68kcpu);
-static void m68k_op_move_8_aw_al(m68000_base_device* mc68kcpu);
-static void m68k_op_move_8_aw_pcdi(m68000_base_device* mc68kcpu);
-static void m68k_op_move_8_aw_pcix(m68000_base_device* mc68kcpu);
-static void m68k_op_move_8_aw_i(m68000_base_device* mc68kcpu);
-static void m68k_op_move_8_al_d(m68000_base_device* mc68kcpu);
-static void m68k_op_move_8_al_ai(m68000_base_device* mc68kcpu);
-static void m68k_op_move_8_al_pi(m68000_base_device* mc68kcpu);
-static void m68k_op_move_8_al_pi7(m68000_base_device* mc68kcpu);
-static void m68k_op_move_8_al_pd(m68000_base_device* mc68kcpu);
-static void m68k_op_move_8_al_pd7(m68000_base_device* mc68kcpu);
-static void m68k_op_move_8_al_di(m68000_base_device* mc68kcpu);
-static void m68k_op_move_8_al_ix(m68000_base_device* mc68kcpu);
-static void m68k_op_move_8_al_aw(m68000_base_device* mc68kcpu);
-static void m68k_op_move_8_al_al(m68000_base_device* mc68kcpu);
-static void m68k_op_move_8_al_pcdi(m68000_base_device* mc68kcpu);
-static void m68k_op_move_8_al_pcix(m68000_base_device* mc68kcpu);
-static void m68k_op_move_8_al_i(m68000_base_device* mc68kcpu);
-static void m68k_op_move_16_d_d(m68000_base_device* mc68kcpu);
-static void m68k_op_move_16_d_a(m68000_base_device* mc68kcpu);
-static void m68k_op_move_16_d_ai(m68000_base_device* mc68kcpu);
-static void m68k_op_move_16_d_pi(m68000_base_device* mc68kcpu);
-static void m68k_op_move_16_d_pd(m68000_base_device* mc68kcpu);
-static void m68k_op_move_16_d_di(m68000_base_device* mc68kcpu);
-static void m68k_op_move_16_d_ix(m68000_base_device* mc68kcpu);
-static void m68k_op_move_16_d_aw(m68000_base_device* mc68kcpu);
-static void m68k_op_move_16_d_al(m68000_base_device* mc68kcpu);
-static void m68k_op_move_16_d_pcdi(m68000_base_device* mc68kcpu);
-static void m68k_op_move_16_d_pcix(m68000_base_device* mc68kcpu);
-static void m68k_op_move_16_d_i(m68000_base_device* mc68kcpu);
-static void m68k_op_move_16_ai_d(m68000_base_device* mc68kcpu);
-static void m68k_op_move_16_ai_a(m68000_base_device* mc68kcpu);
-static void m68k_op_move_16_ai_ai(m68000_base_device* mc68kcpu);
-static void m68k_op_move_16_ai_pi(m68000_base_device* mc68kcpu);
-static void m68k_op_move_16_ai_pd(m68000_base_device* mc68kcpu);
-static void m68k_op_move_16_ai_di(m68000_base_device* mc68kcpu);
-static void m68k_op_move_16_ai_ix(m68000_base_device* mc68kcpu);
-static void m68k_op_move_16_ai_aw(m68000_base_device* mc68kcpu);
-static void m68k_op_move_16_ai_al(m68000_base_device* mc68kcpu);
-static void m68k_op_move_16_ai_pcdi(m68000_base_device* mc68kcpu);
-static void m68k_op_move_16_ai_pcix(m68000_base_device* mc68kcpu);
-static void m68k_op_move_16_ai_i(m68000_base_device* mc68kcpu);
-static void m68k_op_move_16_pi_d(m68000_base_device* mc68kcpu);
-static void m68k_op_move_16_pi_a(m68000_base_device* mc68kcpu);
-static void m68k_op_move_16_pi_ai(m68000_base_device* mc68kcpu);
-static void m68k_op_move_16_pi_pi(m68000_base_device* mc68kcpu);
-static void m68k_op_move_16_pi_pd(m68000_base_device* mc68kcpu);
-static void m68k_op_move_16_pi_di(m68000_base_device* mc68kcpu);
-static void m68k_op_move_16_pi_ix(m68000_base_device* mc68kcpu);
-static void m68k_op_move_16_pi_aw(m68000_base_device* mc68kcpu);
-static void m68k_op_move_16_pi_al(m68000_base_device* mc68kcpu);
-static void m68k_op_move_16_pi_pcdi(m68000_base_device* mc68kcpu);
-static void m68k_op_move_16_pi_pcix(m68000_base_device* mc68kcpu);
-static void m68k_op_move_16_pi_i(m68000_base_device* mc68kcpu);
-static void m68k_op_move_16_pd_d(m68000_base_device* mc68kcpu);
-static void m68k_op_move_16_pd_a(m68000_base_device* mc68kcpu);
-static void m68k_op_move_16_pd_ai(m68000_base_device* mc68kcpu);
-static void m68k_op_move_16_pd_pi(m68000_base_device* mc68kcpu);
-static void m68k_op_move_16_pd_pd(m68000_base_device* mc68kcpu);
-static void m68k_op_move_16_pd_di(m68000_base_device* mc68kcpu);
-static void m68k_op_move_16_pd_ix(m68000_base_device* mc68kcpu);
-static void m68k_op_move_16_pd_aw(m68000_base_device* mc68kcpu);
-static void m68k_op_move_16_pd_al(m68000_base_device* mc68kcpu);
-static void m68k_op_move_16_pd_pcdi(m68000_base_device* mc68kcpu);
-static void m68k_op_move_16_pd_pcix(m68000_base_device* mc68kcpu);
-static void m68k_op_move_16_pd_i(m68000_base_device* mc68kcpu);
-static void m68k_op_move_16_di_d(m68000_base_device* mc68kcpu);
-static void m68k_op_move_16_di_a(m68000_base_device* mc68kcpu);
-static void m68k_op_move_16_di_ai(m68000_base_device* mc68kcpu);
-static void m68k_op_move_16_di_pi(m68000_base_device* mc68kcpu);
-static void m68k_op_move_16_di_pd(m68000_base_device* mc68kcpu);
-static void m68k_op_move_16_di_di(m68000_base_device* mc68kcpu);
-static void m68k_op_move_16_di_ix(m68000_base_device* mc68kcpu);
-static void m68k_op_move_16_di_aw(m68000_base_device* mc68kcpu);
-static void m68k_op_move_16_di_al(m68000_base_device* mc68kcpu);
-static void m68k_op_move_16_di_pcdi(m68000_base_device* mc68kcpu);
-static void m68k_op_move_16_di_pcix(m68000_base_device* mc68kcpu);
-static void m68k_op_move_16_di_i(m68000_base_device* mc68kcpu);
-static void m68k_op_move_16_ix_d(m68000_base_device* mc68kcpu);
-static void m68k_op_move_16_ix_a(m68000_base_device* mc68kcpu);
-static void m68k_op_move_16_ix_ai(m68000_base_device* mc68kcpu);
-static void m68k_op_move_16_ix_pi(m68000_base_device* mc68kcpu);
-static void m68k_op_move_16_ix_pd(m68000_base_device* mc68kcpu);
-static void m68k_op_move_16_ix_di(m68000_base_device* mc68kcpu);
-static void m68k_op_move_16_ix_ix(m68000_base_device* mc68kcpu);
-static void m68k_op_move_16_ix_aw(m68000_base_device* mc68kcpu);
-static void m68k_op_move_16_ix_al(m68000_base_device* mc68kcpu);
-static void m68k_op_move_16_ix_pcdi(m68000_base_device* mc68kcpu);
-static void m68k_op_move_16_ix_pcix(m68000_base_device* mc68kcpu);
-static void m68k_op_move_16_ix_i(m68000_base_device* mc68kcpu);
-static void m68k_op_move_16_aw_d(m68000_base_device* mc68kcpu);
-static void m68k_op_move_16_aw_a(m68000_base_device* mc68kcpu);
-static void m68k_op_move_16_aw_ai(m68000_base_device* mc68kcpu);
-static void m68k_op_move_16_aw_pi(m68000_base_device* mc68kcpu);
-static void m68k_op_move_16_aw_pd(m68000_base_device* mc68kcpu);
-static void m68k_op_move_16_aw_di(m68000_base_device* mc68kcpu);
-static void m68k_op_move_16_aw_ix(m68000_base_device* mc68kcpu);
-static void m68k_op_move_16_aw_aw(m68000_base_device* mc68kcpu);
-static void m68k_op_move_16_aw_al(m68000_base_device* mc68kcpu);
-static void m68k_op_move_16_aw_pcdi(m68000_base_device* mc68kcpu);
-static void m68k_op_move_16_aw_pcix(m68000_base_device* mc68kcpu);
-static void m68k_op_move_16_aw_i(m68000_base_device* mc68kcpu);
-static void m68k_op_move_16_al_d(m68000_base_device* mc68kcpu);
-static void m68k_op_move_16_al_a(m68000_base_device* mc68kcpu);
-static void m68k_op_move_16_al_ai(m68000_base_device* mc68kcpu);
-static void m68k_op_move_16_al_pi(m68000_base_device* mc68kcpu);
-static void m68k_op_move_16_al_pd(m68000_base_device* mc68kcpu);
-static void m68k_op_move_16_al_di(m68000_base_device* mc68kcpu);
-static void m68k_op_move_16_al_ix(m68000_base_device* mc68kcpu);
-static void m68k_op_move_16_al_aw(m68000_base_device* mc68kcpu);
-static void m68k_op_move_16_al_al(m68000_base_device* mc68kcpu);
-static void m68k_op_move_16_al_pcdi(m68000_base_device* mc68kcpu);
-static void m68k_op_move_16_al_pcix(m68000_base_device* mc68kcpu);
-static void m68k_op_move_16_al_i(m68000_base_device* mc68kcpu);
-static void m68k_op_move_32_d_d(m68000_base_device* mc68kcpu);
-static void m68k_op_move_32_d_a(m68000_base_device* mc68kcpu);
-static void m68k_op_move_32_d_ai(m68000_base_device* mc68kcpu);
-static void m68k_op_move_32_d_pi(m68000_base_device* mc68kcpu);
-static void m68k_op_move_32_d_pd(m68000_base_device* mc68kcpu);
-static void m68k_op_move_32_d_di(m68000_base_device* mc68kcpu);
-static void m68k_op_move_32_d_ix(m68000_base_device* mc68kcpu);
-static void m68k_op_move_32_d_aw(m68000_base_device* mc68kcpu);
-static void m68k_op_move_32_d_al(m68000_base_device* mc68kcpu);
-static void m68k_op_move_32_d_pcdi(m68000_base_device* mc68kcpu);
-static void m68k_op_move_32_d_pcix(m68000_base_device* mc68kcpu);
-static void m68k_op_move_32_d_i(m68000_base_device* mc68kcpu);
-static void m68k_op_move_32_ai_d(m68000_base_device* mc68kcpu);
-static void m68k_op_move_32_ai_a(m68000_base_device* mc68kcpu);
-static void m68k_op_move_32_ai_ai(m68000_base_device* mc68kcpu);
-static void m68k_op_move_32_ai_pi(m68000_base_device* mc68kcpu);
-static void m68k_op_move_32_ai_pd(m68000_base_device* mc68kcpu);
-static void m68k_op_move_32_ai_di(m68000_base_device* mc68kcpu);
-static void m68k_op_move_32_ai_ix(m68000_base_device* mc68kcpu);
-static void m68k_op_move_32_ai_aw(m68000_base_device* mc68kcpu);
-static void m68k_op_move_32_ai_al(m68000_base_device* mc68kcpu);
-static void m68k_op_move_32_ai_pcdi(m68000_base_device* mc68kcpu);
-static void m68k_op_move_32_ai_pcix(m68000_base_device* mc68kcpu);
-static void m68k_op_move_32_ai_i(m68000_base_device* mc68kcpu);
-static void m68k_op_move_32_pi_d(m68000_base_device* mc68kcpu);
-static void m68k_op_move_32_pi_a(m68000_base_device* mc68kcpu);
-static void m68k_op_move_32_pi_ai(m68000_base_device* mc68kcpu);
-static void m68k_op_move_32_pi_pi(m68000_base_device* mc68kcpu);
-static void m68k_op_move_32_pi_pd(m68000_base_device* mc68kcpu);
-static void m68k_op_move_32_pi_di(m68000_base_device* mc68kcpu);
-static void m68k_op_move_32_pi_ix(m68000_base_device* mc68kcpu);
-static void m68k_op_move_32_pi_aw(m68000_base_device* mc68kcpu);
-static void m68k_op_move_32_pi_al(m68000_base_device* mc68kcpu);
-static void m68k_op_move_32_pi_pcdi(m68000_base_device* mc68kcpu);
-static void m68k_op_move_32_pi_pcix(m68000_base_device* mc68kcpu);
-static void m68k_op_move_32_pi_i(m68000_base_device* mc68kcpu);
-static void m68k_op_move_32_pd_d(m68000_base_device* mc68kcpu);
-static void m68k_op_move_32_pd_a(m68000_base_device* mc68kcpu);
-static void m68k_op_move_32_pd_ai(m68000_base_device* mc68kcpu);
-static void m68k_op_move_32_pd_pi(m68000_base_device* mc68kcpu);
-static void m68k_op_move_32_pd_pd(m68000_base_device* mc68kcpu);
-static void m68k_op_move_32_pd_di(m68000_base_device* mc68kcpu);
-static void m68k_op_move_32_pd_ix(m68000_base_device* mc68kcpu);
-static void m68k_op_move_32_pd_aw(m68000_base_device* mc68kcpu);
-static void m68k_op_move_32_pd_al(m68000_base_device* mc68kcpu);
-static void m68k_op_move_32_pd_pcdi(m68000_base_device* mc68kcpu);
-static void m68k_op_move_32_pd_pcix(m68000_base_device* mc68kcpu);
-static void m68k_op_move_32_pd_i(m68000_base_device* mc68kcpu);
-static void m68k_op_move_32_di_d(m68000_base_device* mc68kcpu);
-static void m68k_op_move_32_di_a(m68000_base_device* mc68kcpu);
-static void m68k_op_move_32_di_ai(m68000_base_device* mc68kcpu);
-static void m68k_op_move_32_di_pi(m68000_base_device* mc68kcpu);
-static void m68k_op_move_32_di_pd(m68000_base_device* mc68kcpu);
-static void m68k_op_move_32_di_di(m68000_base_device* mc68kcpu);
-static void m68k_op_move_32_di_ix(m68000_base_device* mc68kcpu);
-static void m68k_op_move_32_di_aw(m68000_base_device* mc68kcpu);
-static void m68k_op_move_32_di_al(m68000_base_device* mc68kcpu);
-static void m68k_op_move_32_di_pcdi(m68000_base_device* mc68kcpu);
-static void m68k_op_move_32_di_pcix(m68000_base_device* mc68kcpu);
-static void m68k_op_move_32_di_i(m68000_base_device* mc68kcpu);
-static void m68k_op_move_32_ix_d(m68000_base_device* mc68kcpu);
-static void m68k_op_move_32_ix_a(m68000_base_device* mc68kcpu);
-static void m68k_op_move_32_ix_ai(m68000_base_device* mc68kcpu);
-static void m68k_op_move_32_ix_pi(m68000_base_device* mc68kcpu);
-static void m68k_op_move_32_ix_pd(m68000_base_device* mc68kcpu);
-static void m68k_op_move_32_ix_di(m68000_base_device* mc68kcpu);
-static void m68k_op_move_32_ix_ix(m68000_base_device* mc68kcpu);
-static void m68k_op_move_32_ix_aw(m68000_base_device* mc68kcpu);
-static void m68k_op_move_32_ix_al(m68000_base_device* mc68kcpu);
-static void m68k_op_move_32_ix_pcdi(m68000_base_device* mc68kcpu);
-static void m68k_op_move_32_ix_pcix(m68000_base_device* mc68kcpu);
-static void m68k_op_move_32_ix_i(m68000_base_device* mc68kcpu);
-static void m68k_op_move_32_aw_d(m68000_base_device* mc68kcpu);
-static void m68k_op_move_32_aw_a(m68000_base_device* mc68kcpu);
-static void m68k_op_move_32_aw_ai(m68000_base_device* mc68kcpu);
-static void m68k_op_move_32_aw_pi(m68000_base_device* mc68kcpu);
-static void m68k_op_move_32_aw_pd(m68000_base_device* mc68kcpu);
-static void m68k_op_move_32_aw_di(m68000_base_device* mc68kcpu);
-static void m68k_op_move_32_aw_ix(m68000_base_device* mc68kcpu);
-static void m68k_op_move_32_aw_aw(m68000_base_device* mc68kcpu);
-static void m68k_op_move_32_aw_al(m68000_base_device* mc68kcpu);
-static void m68k_op_move_32_aw_pcdi(m68000_base_device* mc68kcpu);
-static void m68k_op_move_32_aw_pcix(m68000_base_device* mc68kcpu);
-static void m68k_op_move_32_aw_i(m68000_base_device* mc68kcpu);
-static void m68k_op_move_32_al_d(m68000_base_device* mc68kcpu);
-static void m68k_op_move_32_al_a(m68000_base_device* mc68kcpu);
-static void m68k_op_move_32_al_ai(m68000_base_device* mc68kcpu);
-static void m68k_op_move_32_al_pi(m68000_base_device* mc68kcpu);
-static void m68k_op_move_32_al_pd(m68000_base_device* mc68kcpu);
-static void m68k_op_move_32_al_di(m68000_base_device* mc68kcpu);
-static void m68k_op_move_32_al_ix(m68000_base_device* mc68kcpu);
-static void m68k_op_move_32_al_aw(m68000_base_device* mc68kcpu);
-static void m68k_op_move_32_al_al(m68000_base_device* mc68kcpu);
-static void m68k_op_move_32_al_pcdi(m68000_base_device* mc68kcpu);
-static void m68k_op_move_32_al_pcix(m68000_base_device* mc68kcpu);
-static void m68k_op_move_32_al_i(m68000_base_device* mc68kcpu);
-static void m68k_op_movea_16_d(m68000_base_device* mc68kcpu);
-static void m68k_op_movea_16_a(m68000_base_device* mc68kcpu);
-static void m68k_op_movea_16_ai(m68000_base_device* mc68kcpu);
-static void m68k_op_movea_16_pi(m68000_base_device* mc68kcpu);
-static void m68k_op_movea_16_pd(m68000_base_device* mc68kcpu);
-static void m68k_op_movea_16_di(m68000_base_device* mc68kcpu);
-static void m68k_op_movea_16_ix(m68000_base_device* mc68kcpu);
-static void m68k_op_movea_16_aw(m68000_base_device* mc68kcpu);
-static void m68k_op_movea_16_al(m68000_base_device* mc68kcpu);
-static void m68k_op_movea_16_pcdi(m68000_base_device* mc68kcpu);
-static void m68k_op_movea_16_pcix(m68000_base_device* mc68kcpu);
-static void m68k_op_movea_16_i(m68000_base_device* mc68kcpu);
-static void m68k_op_movea_32_d(m68000_base_device* mc68kcpu);
-static void m68k_op_movea_32_a(m68000_base_device* mc68kcpu);
-static void m68k_op_movea_32_ai(m68000_base_device* mc68kcpu);
-static void m68k_op_movea_32_pi(m68000_base_device* mc68kcpu);
-static void m68k_op_movea_32_pd(m68000_base_device* mc68kcpu);
-static void m68k_op_movea_32_di(m68000_base_device* mc68kcpu);
-static void m68k_op_movea_32_ix(m68000_base_device* mc68kcpu);
-static void m68k_op_movea_32_aw(m68000_base_device* mc68kcpu);
-static void m68k_op_movea_32_al(m68000_base_device* mc68kcpu);
-static void m68k_op_movea_32_pcdi(m68000_base_device* mc68kcpu);
-static void m68k_op_movea_32_pcix(m68000_base_device* mc68kcpu);
-static void m68k_op_movea_32_i(m68000_base_device* mc68kcpu);
-static void m68k_op_move_16_frc_d(m68000_base_device* mc68kcpu);
-static void m68k_op_move_16_frc_ai(m68000_base_device* mc68kcpu);
-static void m68k_op_move_16_frc_pi(m68000_base_device* mc68kcpu);
-static void m68k_op_move_16_frc_pd(m68000_base_device* mc68kcpu);
-static void m68k_op_move_16_frc_di(m68000_base_device* mc68kcpu);
-static void m68k_op_move_16_frc_ix(m68000_base_device* mc68kcpu);
-static void m68k_op_move_16_frc_aw(m68000_base_device* mc68kcpu);
-static void m68k_op_move_16_frc_al(m68000_base_device* mc68kcpu);
-static void m68k_op_move_16_toc_d(m68000_base_device* mc68kcpu);
-static void m68k_op_move_16_toc_ai(m68000_base_device* mc68kcpu);
-static void m68k_op_move_16_toc_pi(m68000_base_device* mc68kcpu);
-static void m68k_op_move_16_toc_pd(m68000_base_device* mc68kcpu);
-static void m68k_op_move_16_toc_di(m68000_base_device* mc68kcpu);
-static void m68k_op_move_16_toc_ix(m68000_base_device* mc68kcpu);
-static void m68k_op_move_16_toc_aw(m68000_base_device* mc68kcpu);
-static void m68k_op_move_16_toc_al(m68000_base_device* mc68kcpu);
-static void m68k_op_move_16_toc_pcdi(m68000_base_device* mc68kcpu);
-static void m68k_op_move_16_toc_pcix(m68000_base_device* mc68kcpu);
-static void m68k_op_move_16_toc_i(m68000_base_device* mc68kcpu);
-static void m68k_op_move_16_frs_d(m68000_base_device* mc68kcpu);
-static void m68k_op_move_16_frs_ai(m68000_base_device* mc68kcpu);
-static void m68k_op_move_16_frs_pi(m68000_base_device* mc68kcpu);
-static void m68k_op_move_16_frs_pd(m68000_base_device* mc68kcpu);
-static void m68k_op_move_16_frs_di(m68000_base_device* mc68kcpu);
-static void m68k_op_move_16_frs_ix(m68000_base_device* mc68kcpu);
-static void m68k_op_move_16_frs_aw(m68000_base_device* mc68kcpu);
-static void m68k_op_move_16_frs_al(m68000_base_device* mc68kcpu);
-static void m68k_op_move_16_tos_d(m68000_base_device* mc68kcpu);
-static void m68k_op_move_16_tos_ai(m68000_base_device* mc68kcpu);
-static void m68k_op_move_16_tos_pi(m68000_base_device* mc68kcpu);
-static void m68k_op_move_16_tos_pd(m68000_base_device* mc68kcpu);
-static void m68k_op_move_16_tos_di(m68000_base_device* mc68kcpu);
-static void m68k_op_move_16_tos_ix(m68000_base_device* mc68kcpu);
-static void m68k_op_move_16_tos_aw(m68000_base_device* mc68kcpu);
-static void m68k_op_move_16_tos_al(m68000_base_device* mc68kcpu);
-static void m68k_op_move_16_tos_pcdi(m68000_base_device* mc68kcpu);
-static void m68k_op_move_16_tos_pcix(m68000_base_device* mc68kcpu);
-static void m68k_op_move_16_tos_i(m68000_base_device* mc68kcpu);
-static void m68k_op_move_32_fru(m68000_base_device* mc68kcpu);
-static void m68k_op_move_32_tou(m68000_base_device* mc68kcpu);
-static void m68k_op_movec_32_cr(m68000_base_device* mc68kcpu);
-static void m68k_op_movec_32_rc(m68000_base_device* mc68kcpu);
-static void m68k_op_movem_16_re_pd(m68000_base_device* mc68kcpu);
-static void m68k_op_movem_16_re_ai(m68000_base_device* mc68kcpu);
-static void m68k_op_movem_16_re_di(m68000_base_device* mc68kcpu);
-static void m68k_op_movem_16_re_ix(m68000_base_device* mc68kcpu);
-static void m68k_op_movem_16_re_aw(m68000_base_device* mc68kcpu);
-static void m68k_op_movem_16_re_al(m68000_base_device* mc68kcpu);
-static void m68k_op_movem_32_re_pd(m68000_base_device* mc68kcpu);
-static void m68k_op_movem_32_re_ai(m68000_base_device* mc68kcpu);
-static void m68k_op_movem_32_re_di(m68000_base_device* mc68kcpu);
-static void m68k_op_movem_32_re_ix(m68000_base_device* mc68kcpu);
-static void m68k_op_movem_32_re_aw(m68000_base_device* mc68kcpu);
-static void m68k_op_movem_32_re_al(m68000_base_device* mc68kcpu);
-static void m68k_op_movem_16_er_pi(m68000_base_device* mc68kcpu);
-static void m68k_op_movem_16_er_pcdi(m68000_base_device* mc68kcpu);
-static void m68k_op_movem_16_er_pcix(m68000_base_device* mc68kcpu);
-static void m68k_op_movem_16_er_ai(m68000_base_device* mc68kcpu);
-static void m68k_op_movem_16_er_di(m68000_base_device* mc68kcpu);
-static void m68k_op_movem_16_er_ix(m68000_base_device* mc68kcpu);
-static void m68k_op_movem_16_er_aw(m68000_base_device* mc68kcpu);
-static void m68k_op_movem_16_er_al(m68000_base_device* mc68kcpu);
-static void m68k_op_movem_32_er_pi(m68000_base_device* mc68kcpu);
-static void m68k_op_movem_32_er_pcdi(m68000_base_device* mc68kcpu);
-static void m68k_op_movem_32_er_pcix(m68000_base_device* mc68kcpu);
-static void m68k_op_movem_32_er_ai(m68000_base_device* mc68kcpu);
-static void m68k_op_movem_32_er_di(m68000_base_device* mc68kcpu);
-static void m68k_op_movem_32_er_ix(m68000_base_device* mc68kcpu);
-static void m68k_op_movem_32_er_aw(m68000_base_device* mc68kcpu);
-static void m68k_op_movem_32_er_al(m68000_base_device* mc68kcpu);
-static void m68k_op_movep_16_re(m68000_base_device* mc68kcpu);
-static void m68k_op_movep_32_re(m68000_base_device* mc68kcpu);
-static void m68k_op_movep_16_er(m68000_base_device* mc68kcpu);
-static void m68k_op_movep_32_er(m68000_base_device* mc68kcpu);
-static void m68k_op_moves_8_ai(m68000_base_device* mc68kcpu);
-static void m68k_op_moves_8_pi(m68000_base_device* mc68kcpu);
-static void m68k_op_moves_8_pi7(m68000_base_device* mc68kcpu);
-static void m68k_op_moves_8_pd(m68000_base_device* mc68kcpu);
-static void m68k_op_moves_8_pd7(m68000_base_device* mc68kcpu);
-static void m68k_op_moves_8_di(m68000_base_device* mc68kcpu);
-static void m68k_op_moves_8_ix(m68000_base_device* mc68kcpu);
-static void m68k_op_moves_8_aw(m68000_base_device* mc68kcpu);
-static void m68k_op_moves_8_al(m68000_base_device* mc68kcpu);
-static void m68k_op_moves_16_ai(m68000_base_device* mc68kcpu);
-static void m68k_op_moves_16_pi(m68000_base_device* mc68kcpu);
-static void m68k_op_moves_16_pd(m68000_base_device* mc68kcpu);
-static void m68k_op_moves_16_di(m68000_base_device* mc68kcpu);
-static void m68k_op_moves_16_ix(m68000_base_device* mc68kcpu);
-static void m68k_op_moves_16_aw(m68000_base_device* mc68kcpu);
-static void m68k_op_moves_16_al(m68000_base_device* mc68kcpu);
-static void m68k_op_moves_32_ai(m68000_base_device* mc68kcpu);
-static void m68k_op_moves_32_pi(m68000_base_device* mc68kcpu);
-static void m68k_op_moves_32_pd(m68000_base_device* mc68kcpu);
-static void m68k_op_moves_32_di(m68000_base_device* mc68kcpu);
-static void m68k_op_moves_32_ix(m68000_base_device* mc68kcpu);
-static void m68k_op_moves_32_aw(m68000_base_device* mc68kcpu);
-static void m68k_op_moves_32_al(m68000_base_device* mc68kcpu);
-static void m68k_op_moveq_32(m68000_base_device* mc68kcpu);
-static void m68k_op_move16_32(m68000_base_device* mc68kcpu);
-static void m68k_op_muls_16_d(m68000_base_device* mc68kcpu);
-static void m68k_op_muls_16_ai(m68000_base_device* mc68kcpu);
-static void m68k_op_muls_16_pi(m68000_base_device* mc68kcpu);
-static void m68k_op_muls_16_pd(m68000_base_device* mc68kcpu);
-static void m68k_op_muls_16_di(m68000_base_device* mc68kcpu);
-static void m68k_op_muls_16_ix(m68000_base_device* mc68kcpu);
-static void m68k_op_muls_16_aw(m68000_base_device* mc68kcpu);
-static void m68k_op_muls_16_al(m68000_base_device* mc68kcpu);
-static void m68k_op_muls_16_pcdi(m68000_base_device* mc68kcpu);
-static void m68k_op_muls_16_pcix(m68000_base_device* mc68kcpu);
-static void m68k_op_muls_16_i(m68000_base_device* mc68kcpu);
-static void m68k_op_mulu_16_d(m68000_base_device* mc68kcpu);
-static void m68k_op_mulu_16_ai(m68000_base_device* mc68kcpu);
-static void m68k_op_mulu_16_pi(m68000_base_device* mc68kcpu);
-static void m68k_op_mulu_16_pd(m68000_base_device* mc68kcpu);
-static void m68k_op_mulu_16_di(m68000_base_device* mc68kcpu);
-static void m68k_op_mulu_16_ix(m68000_base_device* mc68kcpu);
-static void m68k_op_mulu_16_aw(m68000_base_device* mc68kcpu);
-static void m68k_op_mulu_16_al(m68000_base_device* mc68kcpu);
-static void m68k_op_mulu_16_pcdi(m68000_base_device* mc68kcpu);
-static void m68k_op_mulu_16_pcix(m68000_base_device* mc68kcpu);
-static void m68k_op_mulu_16_i(m68000_base_device* mc68kcpu);
-static void m68k_op_mull_32_d(m68000_base_device* mc68kcpu);
-static void m68k_op_mull_32_ai(m68000_base_device* mc68kcpu);
-static void m68k_op_mull_32_pi(m68000_base_device* mc68kcpu);
-static void m68k_op_mull_32_pd(m68000_base_device* mc68kcpu);
-static void m68k_op_mull_32_di(m68000_base_device* mc68kcpu);
-static void m68k_op_mull_32_ix(m68000_base_device* mc68kcpu);
-static void m68k_op_mull_32_aw(m68000_base_device* mc68kcpu);
-static void m68k_op_mull_32_al(m68000_base_device* mc68kcpu);
-static void m68k_op_mull_32_pcdi(m68000_base_device* mc68kcpu);
-static void m68k_op_mull_32_pcix(m68000_base_device* mc68kcpu);
-static void m68k_op_mull_32_i(m68000_base_device* mc68kcpu);
-static void m68k_op_nbcd_8_d(m68000_base_device* mc68kcpu);
-static void m68k_op_nbcd_8_ai(m68000_base_device* mc68kcpu);
-static void m68k_op_nbcd_8_pi(m68000_base_device* mc68kcpu);
-static void m68k_op_nbcd_8_pi7(m68000_base_device* mc68kcpu);
-static void m68k_op_nbcd_8_pd(m68000_base_device* mc68kcpu);
-static void m68k_op_nbcd_8_pd7(m68000_base_device* mc68kcpu);
-static void m68k_op_nbcd_8_di(m68000_base_device* mc68kcpu);
-static void m68k_op_nbcd_8_ix(m68000_base_device* mc68kcpu);
-static void m68k_op_nbcd_8_aw(m68000_base_device* mc68kcpu);
-static void m68k_op_nbcd_8_al(m68000_base_device* mc68kcpu);
-static void m68k_op_neg_8_d(m68000_base_device* mc68kcpu);
-static void m68k_op_neg_8_ai(m68000_base_device* mc68kcpu);
-static void m68k_op_neg_8_pi(m68000_base_device* mc68kcpu);
-static void m68k_op_neg_8_pi7(m68000_base_device* mc68kcpu);
-static void m68k_op_neg_8_pd(m68000_base_device* mc68kcpu);
-static void m68k_op_neg_8_pd7(m68000_base_device* mc68kcpu);
-static void m68k_op_neg_8_di(m68000_base_device* mc68kcpu);
-static void m68k_op_neg_8_ix(m68000_base_device* mc68kcpu);
-static void m68k_op_neg_8_aw(m68000_base_device* mc68kcpu);
-static void m68k_op_neg_8_al(m68000_base_device* mc68kcpu);
-static void m68k_op_neg_16_d(m68000_base_device* mc68kcpu);
-static void m68k_op_neg_16_ai(m68000_base_device* mc68kcpu);
-static void m68k_op_neg_16_pi(m68000_base_device* mc68kcpu);
-static void m68k_op_neg_16_pd(m68000_base_device* mc68kcpu);
-static void m68k_op_neg_16_di(m68000_base_device* mc68kcpu);
-static void m68k_op_neg_16_ix(m68000_base_device* mc68kcpu);
-static void m68k_op_neg_16_aw(m68000_base_device* mc68kcpu);
-static void m68k_op_neg_16_al(m68000_base_device* mc68kcpu);
-static void m68k_op_neg_32_d(m68000_base_device* mc68kcpu);
-static void m68k_op_neg_32_ai(m68000_base_device* mc68kcpu);
-static void m68k_op_neg_32_pi(m68000_base_device* mc68kcpu);
-static void m68k_op_neg_32_pd(m68000_base_device* mc68kcpu);
-static void m68k_op_neg_32_di(m68000_base_device* mc68kcpu);
-static void m68k_op_neg_32_ix(m68000_base_device* mc68kcpu);
-static void m68k_op_neg_32_aw(m68000_base_device* mc68kcpu);
-static void m68k_op_neg_32_al(m68000_base_device* mc68kcpu);
-static void m68k_op_negx_8_d(m68000_base_device* mc68kcpu);
-static void m68k_op_negx_8_ai(m68000_base_device* mc68kcpu);
-static void m68k_op_negx_8_pi(m68000_base_device* mc68kcpu);
-static void m68k_op_negx_8_pi7(m68000_base_device* mc68kcpu);
-static void m68k_op_negx_8_pd(m68000_base_device* mc68kcpu);
-static void m68k_op_negx_8_pd7(m68000_base_device* mc68kcpu);
-static void m68k_op_negx_8_di(m68000_base_device* mc68kcpu);
-static void m68k_op_negx_8_ix(m68000_base_device* mc68kcpu);
-static void m68k_op_negx_8_aw(m68000_base_device* mc68kcpu);
-static void m68k_op_negx_8_al(m68000_base_device* mc68kcpu);
-static void m68k_op_negx_16_d(m68000_base_device* mc68kcpu);
-static void m68k_op_negx_16_ai(m68000_base_device* mc68kcpu);
-static void m68k_op_negx_16_pi(m68000_base_device* mc68kcpu);
-static void m68k_op_negx_16_pd(m68000_base_device* mc68kcpu);
-static void m68k_op_negx_16_di(m68000_base_device* mc68kcpu);
-static void m68k_op_negx_16_ix(m68000_base_device* mc68kcpu);
-static void m68k_op_negx_16_aw(m68000_base_device* mc68kcpu);
-static void m68k_op_negx_16_al(m68000_base_device* mc68kcpu);
-static void m68k_op_negx_32_d(m68000_base_device* mc68kcpu);
-static void m68k_op_negx_32_ai(m68000_base_device* mc68kcpu);
-static void m68k_op_negx_32_pi(m68000_base_device* mc68kcpu);
-static void m68k_op_negx_32_pd(m68000_base_device* mc68kcpu);
-static void m68k_op_negx_32_di(m68000_base_device* mc68kcpu);
-static void m68k_op_negx_32_ix(m68000_base_device* mc68kcpu);
-static void m68k_op_negx_32_aw(m68000_base_device* mc68kcpu);
-static void m68k_op_negx_32_al(m68000_base_device* mc68kcpu);
-static void m68k_op_nop(m68000_base_device* mc68kcpu);
-static void m68k_op_not_8_d(m68000_base_device* mc68kcpu);
-static void m68k_op_not_8_ai(m68000_base_device* mc68kcpu);
-static void m68k_op_not_8_pi(m68000_base_device* mc68kcpu);
-static void m68k_op_not_8_pi7(m68000_base_device* mc68kcpu);
-static void m68k_op_not_8_pd(m68000_base_device* mc68kcpu);
-static void m68k_op_not_8_pd7(m68000_base_device* mc68kcpu);
-static void m68k_op_not_8_di(m68000_base_device* mc68kcpu);
-static void m68k_op_not_8_ix(m68000_base_device* mc68kcpu);
-static void m68k_op_not_8_aw(m68000_base_device* mc68kcpu);
-static void m68k_op_not_8_al(m68000_base_device* mc68kcpu);
-static void m68k_op_not_16_d(m68000_base_device* mc68kcpu);
-static void m68k_op_not_16_ai(m68000_base_device* mc68kcpu);
-static void m68k_op_not_16_pi(m68000_base_device* mc68kcpu);
-static void m68k_op_not_16_pd(m68000_base_device* mc68kcpu);
-static void m68k_op_not_16_di(m68000_base_device* mc68kcpu);
-static void m68k_op_not_16_ix(m68000_base_device* mc68kcpu);
-static void m68k_op_not_16_aw(m68000_base_device* mc68kcpu);
-static void m68k_op_not_16_al(m68000_base_device* mc68kcpu);
-static void m68k_op_not_32_d(m68000_base_device* mc68kcpu);
-static void m68k_op_not_32_ai(m68000_base_device* mc68kcpu);
-static void m68k_op_not_32_pi(m68000_base_device* mc68kcpu);
-static void m68k_op_not_32_pd(m68000_base_device* mc68kcpu);
-static void m68k_op_not_32_di(m68000_base_device* mc68kcpu);
-static void m68k_op_not_32_ix(m68000_base_device* mc68kcpu);
-static void m68k_op_not_32_aw(m68000_base_device* mc68kcpu);
-static void m68k_op_not_32_al(m68000_base_device* mc68kcpu);
-static void m68k_op_or_8_er_d(m68000_base_device* mc68kcpu);
-static void m68k_op_or_8_er_ai(m68000_base_device* mc68kcpu);
-static void m68k_op_or_8_er_pi(m68000_base_device* mc68kcpu);
-static void m68k_op_or_8_er_pi7(m68000_base_device* mc68kcpu);
-static void m68k_op_or_8_er_pd(m68000_base_device* mc68kcpu);
-static void m68k_op_or_8_er_pd7(m68000_base_device* mc68kcpu);
-static void m68k_op_or_8_er_di(m68000_base_device* mc68kcpu);
-static void m68k_op_or_8_er_ix(m68000_base_device* mc68kcpu);
-static void m68k_op_or_8_er_aw(m68000_base_device* mc68kcpu);
-static void m68k_op_or_8_er_al(m68000_base_device* mc68kcpu);
-static void m68k_op_or_8_er_pcdi(m68000_base_device* mc68kcpu);
-static void m68k_op_or_8_er_pcix(m68000_base_device* mc68kcpu);
-static void m68k_op_or_8_er_i(m68000_base_device* mc68kcpu);
-static void m68k_op_or_16_er_d(m68000_base_device* mc68kcpu);
-static void m68k_op_or_16_er_ai(m68000_base_device* mc68kcpu);
-static void m68k_op_or_16_er_pi(m68000_base_device* mc68kcpu);
-static void m68k_op_or_16_er_pd(m68000_base_device* mc68kcpu);
-static void m68k_op_or_16_er_di(m68000_base_device* mc68kcpu);
-static void m68k_op_or_16_er_ix(m68000_base_device* mc68kcpu);
-static void m68k_op_or_16_er_aw(m68000_base_device* mc68kcpu);
-static void m68k_op_or_16_er_al(m68000_base_device* mc68kcpu);
-static void m68k_op_or_16_er_pcdi(m68000_base_device* mc68kcpu);
-static void m68k_op_or_16_er_pcix(m68000_base_device* mc68kcpu);
-static void m68k_op_or_16_er_i(m68000_base_device* mc68kcpu);
-static void m68k_op_or_32_er_d(m68000_base_device* mc68kcpu);
-static void m68k_op_or_32_er_ai(m68000_base_device* mc68kcpu);
-static void m68k_op_or_32_er_pi(m68000_base_device* mc68kcpu);
-static void m68k_op_or_32_er_pd(m68000_base_device* mc68kcpu);
-static void m68k_op_or_32_er_di(m68000_base_device* mc68kcpu);
-static void m68k_op_or_32_er_ix(m68000_base_device* mc68kcpu);
-static void m68k_op_or_32_er_aw(m68000_base_device* mc68kcpu);
-static void m68k_op_or_32_er_al(m68000_base_device* mc68kcpu);
-static void m68k_op_or_32_er_pcdi(m68000_base_device* mc68kcpu);
-static void m68k_op_or_32_er_pcix(m68000_base_device* mc68kcpu);
-static void m68k_op_or_32_er_i(m68000_base_device* mc68kcpu);
-static void m68k_op_or_8_re_ai(m68000_base_device* mc68kcpu);
-static void m68k_op_or_8_re_pi(m68000_base_device* mc68kcpu);
-static void m68k_op_or_8_re_pi7(m68000_base_device* mc68kcpu);
-static void m68k_op_or_8_re_pd(m68000_base_device* mc68kcpu);
-static void m68k_op_or_8_re_pd7(m68000_base_device* mc68kcpu);
-static void m68k_op_or_8_re_di(m68000_base_device* mc68kcpu);
-static void m68k_op_or_8_re_ix(m68000_base_device* mc68kcpu);
-static void m68k_op_or_8_re_aw(m68000_base_device* mc68kcpu);
-static void m68k_op_or_8_re_al(m68000_base_device* mc68kcpu);
-static void m68k_op_or_16_re_ai(m68000_base_device* mc68kcpu);
-static void m68k_op_or_16_re_pi(m68000_base_device* mc68kcpu);
-static void m68k_op_or_16_re_pd(m68000_base_device* mc68kcpu);
-static void m68k_op_or_16_re_di(m68000_base_device* mc68kcpu);
-static void m68k_op_or_16_re_ix(m68000_base_device* mc68kcpu);
-static void m68k_op_or_16_re_aw(m68000_base_device* mc68kcpu);
-static void m68k_op_or_16_re_al(m68000_base_device* mc68kcpu);
-static void m68k_op_or_32_re_ai(m68000_base_device* mc68kcpu);
-static void m68k_op_or_32_re_pi(m68000_base_device* mc68kcpu);
-static void m68k_op_or_32_re_pd(m68000_base_device* mc68kcpu);
-static void m68k_op_or_32_re_di(m68000_base_device* mc68kcpu);
-static void m68k_op_or_32_re_ix(m68000_base_device* mc68kcpu);
-static void m68k_op_or_32_re_aw(m68000_base_device* mc68kcpu);
-static void m68k_op_or_32_re_al(m68000_base_device* mc68kcpu);
-static void m68k_op_ori_8_d(m68000_base_device* mc68kcpu);
-static void m68k_op_ori_8_ai(m68000_base_device* mc68kcpu);
-static void m68k_op_ori_8_pi(m68000_base_device* mc68kcpu);
-static void m68k_op_ori_8_pi7(m68000_base_device* mc68kcpu);
-static void m68k_op_ori_8_pd(m68000_base_device* mc68kcpu);
-static void m68k_op_ori_8_pd7(m68000_base_device* mc68kcpu);
-static void m68k_op_ori_8_di(m68000_base_device* mc68kcpu);
-static void m68k_op_ori_8_ix(m68000_base_device* mc68kcpu);
-static void m68k_op_ori_8_aw(m68000_base_device* mc68kcpu);
-static void m68k_op_ori_8_al(m68000_base_device* mc68kcpu);
-static void m68k_op_ori_16_d(m68000_base_device* mc68kcpu);
-static void m68k_op_ori_16_ai(m68000_base_device* mc68kcpu);
-static void m68k_op_ori_16_pi(m68000_base_device* mc68kcpu);
-static void m68k_op_ori_16_pd(m68000_base_device* mc68kcpu);
-static void m68k_op_ori_16_di(m68000_base_device* mc68kcpu);
-static void m68k_op_ori_16_ix(m68000_base_device* mc68kcpu);
-static void m68k_op_ori_16_aw(m68000_base_device* mc68kcpu);
-static void m68k_op_ori_16_al(m68000_base_device* mc68kcpu);
-static void m68k_op_ori_32_d(m68000_base_device* mc68kcpu);
-static void m68k_op_ori_32_ai(m68000_base_device* mc68kcpu);
-static void m68k_op_ori_32_pi(m68000_base_device* mc68kcpu);
-static void m68k_op_ori_32_pd(m68000_base_device* mc68kcpu);
-static void m68k_op_ori_32_di(m68000_base_device* mc68kcpu);
-static void m68k_op_ori_32_ix(m68000_base_device* mc68kcpu);
-static void m68k_op_ori_32_aw(m68000_base_device* mc68kcpu);
-static void m68k_op_ori_32_al(m68000_base_device* mc68kcpu);
-static void m68k_op_ori_16_toc(m68000_base_device* mc68kcpu);
-static void m68k_op_ori_16_tos(m68000_base_device* mc68kcpu);
-static void m68k_op_pack_16_rr(m68000_base_device* mc68kcpu);
-static void m68k_op_pack_16_mm_ax7(m68000_base_device* mc68kcpu);
-static void m68k_op_pack_16_mm_ay7(m68000_base_device* mc68kcpu);
-static void m68k_op_pack_16_mm_axy7(m68000_base_device* mc68kcpu);
-static void m68k_op_pack_16_mm(m68000_base_device* mc68kcpu);
-static void m68k_op_pea_32_ai(m68000_base_device* mc68kcpu);
-static void m68k_op_pea_32_di(m68000_base_device* mc68kcpu);
-static void m68k_op_pea_32_ix(m68000_base_device* mc68kcpu);
-static void m68k_op_pea_32_aw(m68000_base_device* mc68kcpu);
-static void m68k_op_pea_32_al(m68000_base_device* mc68kcpu);
-static void m68k_op_pea_32_pcdi(m68000_base_device* mc68kcpu);
-static void m68k_op_pea_32_pcix(m68000_base_device* mc68kcpu);
-static void m68k_op_pflusha_32(m68000_base_device* mc68kcpu);
-static void m68k_op_pflushan_32(m68000_base_device* mc68kcpu);
-static void m68k_op_pmmu_32(m68000_base_device* mc68kcpu);
-static void m68k_op_ptest_32(m68000_base_device* mc68kcpu);
-static void m68k_op_reset(m68000_base_device* mc68kcpu);
-static void m68k_op_ror_8_s(m68000_base_device* mc68kcpu);
-static void m68k_op_ror_16_s(m68000_base_device* mc68kcpu);
-static void m68k_op_ror_32_s(m68000_base_device* mc68kcpu);
-static void m68k_op_ror_8_r(m68000_base_device* mc68kcpu);
-static void m68k_op_ror_16_r(m68000_base_device* mc68kcpu);
-static void m68k_op_ror_32_r(m68000_base_device* mc68kcpu);
-static void m68k_op_ror_16_ai(m68000_base_device* mc68kcpu);
-static void m68k_op_ror_16_pi(m68000_base_device* mc68kcpu);
-static void m68k_op_ror_16_pd(m68000_base_device* mc68kcpu);
-static void m68k_op_ror_16_di(m68000_base_device* mc68kcpu);
-static void m68k_op_ror_16_ix(m68000_base_device* mc68kcpu);
-static void m68k_op_ror_16_aw(m68000_base_device* mc68kcpu);
-static void m68k_op_ror_16_al(m68000_base_device* mc68kcpu);
-static void m68k_op_rol_8_s(m68000_base_device* mc68kcpu);
-static void m68k_op_rol_16_s(m68000_base_device* mc68kcpu);
-static void m68k_op_rol_32_s(m68000_base_device* mc68kcpu);
-static void m68k_op_rol_8_r(m68000_base_device* mc68kcpu);
-static void m68k_op_rol_16_r(m68000_base_device* mc68kcpu);
-static void m68k_op_rol_32_r(m68000_base_device* mc68kcpu);
-static void m68k_op_rol_16_ai(m68000_base_device* mc68kcpu);
-static void m68k_op_rol_16_pi(m68000_base_device* mc68kcpu);
-static void m68k_op_rol_16_pd(m68000_base_device* mc68kcpu);
-static void m68k_op_rol_16_di(m68000_base_device* mc68kcpu);
-static void m68k_op_rol_16_ix(m68000_base_device* mc68kcpu);
-static void m68k_op_rol_16_aw(m68000_base_device* mc68kcpu);
-static void m68k_op_rol_16_al(m68000_base_device* mc68kcpu);
-static void m68k_op_roxr_8_s(m68000_base_device* mc68kcpu);
-static void m68k_op_roxr_16_s(m68000_base_device* mc68kcpu);
-static void m68k_op_roxr_32_s(m68000_base_device* mc68kcpu);
-static void m68k_op_roxr_8_r(m68000_base_device* mc68kcpu);
-static void m68k_op_roxr_16_r(m68000_base_device* mc68kcpu);
-static void m68k_op_roxr_32_r(m68000_base_device* mc68kcpu);
-static void m68k_op_roxr_16_ai(m68000_base_device* mc68kcpu);
-static void m68k_op_roxr_16_pi(m68000_base_device* mc68kcpu);
-static void m68k_op_roxr_16_pd(m68000_base_device* mc68kcpu);
-static void m68k_op_roxr_16_di(m68000_base_device* mc68kcpu);
-static void m68k_op_roxr_16_ix(m68000_base_device* mc68kcpu);
-static void m68k_op_roxr_16_aw(m68000_base_device* mc68kcpu);
-static void m68k_op_roxr_16_al(m68000_base_device* mc68kcpu);
-static void m68k_op_roxl_8_s(m68000_base_device* mc68kcpu);
-static void m68k_op_roxl_16_s(m68000_base_device* mc68kcpu);
-static void m68k_op_roxl_32_s(m68000_base_device* mc68kcpu);
-static void m68k_op_roxl_8_r(m68000_base_device* mc68kcpu);
-static void m68k_op_roxl_16_r(m68000_base_device* mc68kcpu);
-static void m68k_op_roxl_32_r(m68000_base_device* mc68kcpu);
-static void m68k_op_roxl_16_ai(m68000_base_device* mc68kcpu);
-static void m68k_op_roxl_16_pi(m68000_base_device* mc68kcpu);
-static void m68k_op_roxl_16_pd(m68000_base_device* mc68kcpu);
-static void m68k_op_roxl_16_di(m68000_base_device* mc68kcpu);
-static void m68k_op_roxl_16_ix(m68000_base_device* mc68kcpu);
-static void m68k_op_roxl_16_aw(m68000_base_device* mc68kcpu);
-static void m68k_op_roxl_16_al(m68000_base_device* mc68kcpu);
-static void m68k_op_rtd_32(m68000_base_device* mc68kcpu);
-static void m68k_op_rte_32(m68000_base_device* mc68kcpu);
-static void m68k_op_rtm_32(m68000_base_device* mc68kcpu);
-static void m68k_op_rtr_32(m68000_base_device* mc68kcpu);
-static void m68k_op_rts_32(m68000_base_device* mc68kcpu);
-static void m68k_op_sbcd_8_rr(m68000_base_device* mc68kcpu);
-static void m68k_op_sbcd_8_mm_ax7(m68000_base_device* mc68kcpu);
-static void m68k_op_sbcd_8_mm_ay7(m68000_base_device* mc68kcpu);
-static void m68k_op_sbcd_8_mm_axy7(m68000_base_device* mc68kcpu);
-static void m68k_op_sbcd_8_mm(m68000_base_device* mc68kcpu);
-static void m68k_op_st_8_d(m68000_base_device* mc68kcpu);
-static void m68k_op_st_8_ai(m68000_base_device* mc68kcpu);
-static void m68k_op_st_8_pi(m68000_base_device* mc68kcpu);
-static void m68k_op_st_8_pi7(m68000_base_device* mc68kcpu);
-static void m68k_op_st_8_pd(m68000_base_device* mc68kcpu);
-static void m68k_op_st_8_pd7(m68000_base_device* mc68kcpu);
-static void m68k_op_st_8_di(m68000_base_device* mc68kcpu);
-static void m68k_op_st_8_ix(m68000_base_device* mc68kcpu);
-static void m68k_op_st_8_aw(m68000_base_device* mc68kcpu);
-static void m68k_op_st_8_al(m68000_base_device* mc68kcpu);
-static void m68k_op_sf_8_d(m68000_base_device* mc68kcpu);
-static void m68k_op_sf_8_ai(m68000_base_device* mc68kcpu);
-static void m68k_op_sf_8_pi(m68000_base_device* mc68kcpu);
-static void m68k_op_sf_8_pi7(m68000_base_device* mc68kcpu);
-static void m68k_op_sf_8_pd(m68000_base_device* mc68kcpu);
-static void m68k_op_sf_8_pd7(m68000_base_device* mc68kcpu);
-static void m68k_op_sf_8_di(m68000_base_device* mc68kcpu);
-static void m68k_op_sf_8_ix(m68000_base_device* mc68kcpu);
-static void m68k_op_sf_8_aw(m68000_base_device* mc68kcpu);
-static void m68k_op_sf_8_al(m68000_base_device* mc68kcpu);
-static void m68k_op_shi_8_d(m68000_base_device* mc68kcpu);
-static void m68k_op_sls_8_d(m68000_base_device* mc68kcpu);
-static void m68k_op_scc_8_d(m68000_base_device* mc68kcpu);
-static void m68k_op_scs_8_d(m68000_base_device* mc68kcpu);
-static void m68k_op_sne_8_d(m68000_base_device* mc68kcpu);
-static void m68k_op_seq_8_d(m68000_base_device* mc68kcpu);
-static void m68k_op_svc_8_d(m68000_base_device* mc68kcpu);
-static void m68k_op_svs_8_d(m68000_base_device* mc68kcpu);
-static void m68k_op_spl_8_d(m68000_base_device* mc68kcpu);
-static void m68k_op_smi_8_d(m68000_base_device* mc68kcpu);
-static void m68k_op_sge_8_d(m68000_base_device* mc68kcpu);
-static void m68k_op_slt_8_d(m68000_base_device* mc68kcpu);
-static void m68k_op_sgt_8_d(m68000_base_device* mc68kcpu);
-static void m68k_op_sle_8_d(m68000_base_device* mc68kcpu);
-static void m68k_op_shi_8_ai(m68000_base_device* mc68kcpu);
-static void m68k_op_shi_8_pi(m68000_base_device* mc68kcpu);
-static void m68k_op_shi_8_pi7(m68000_base_device* mc68kcpu);
-static void m68k_op_shi_8_pd(m68000_base_device* mc68kcpu);
-static void m68k_op_shi_8_pd7(m68000_base_device* mc68kcpu);
-static void m68k_op_shi_8_di(m68000_base_device* mc68kcpu);
-static void m68k_op_shi_8_ix(m68000_base_device* mc68kcpu);
-static void m68k_op_shi_8_aw(m68000_base_device* mc68kcpu);
-static void m68k_op_shi_8_al(m68000_base_device* mc68kcpu);
-static void m68k_op_sls_8_ai(m68000_base_device* mc68kcpu);
-static void m68k_op_sls_8_pi(m68000_base_device* mc68kcpu);
-static void m68k_op_sls_8_pi7(m68000_base_device* mc68kcpu);
-static void m68k_op_sls_8_pd(m68000_base_device* mc68kcpu);
-static void m68k_op_sls_8_pd7(m68000_base_device* mc68kcpu);
-static void m68k_op_sls_8_di(m68000_base_device* mc68kcpu);
-static void m68k_op_sls_8_ix(m68000_base_device* mc68kcpu);
-static void m68k_op_sls_8_aw(m68000_base_device* mc68kcpu);
-static void m68k_op_sls_8_al(m68000_base_device* mc68kcpu);
-static void m68k_op_scc_8_ai(m68000_base_device* mc68kcpu);
-static void m68k_op_scc_8_pi(m68000_base_device* mc68kcpu);
-static void m68k_op_scc_8_pi7(m68000_base_device* mc68kcpu);
-static void m68k_op_scc_8_pd(m68000_base_device* mc68kcpu);
-static void m68k_op_scc_8_pd7(m68000_base_device* mc68kcpu);
-static void m68k_op_scc_8_di(m68000_base_device* mc68kcpu);
-static void m68k_op_scc_8_ix(m68000_base_device* mc68kcpu);
-static void m68k_op_scc_8_aw(m68000_base_device* mc68kcpu);
-static void m68k_op_scc_8_al(m68000_base_device* mc68kcpu);
-static void m68k_op_scs_8_ai(m68000_base_device* mc68kcpu);
-static void m68k_op_scs_8_pi(m68000_base_device* mc68kcpu);
-static void m68k_op_scs_8_pi7(m68000_base_device* mc68kcpu);
-static void m68k_op_scs_8_pd(m68000_base_device* mc68kcpu);
-static void m68k_op_scs_8_pd7(m68000_base_device* mc68kcpu);
-static void m68k_op_scs_8_di(m68000_base_device* mc68kcpu);
-static void m68k_op_scs_8_ix(m68000_base_device* mc68kcpu);
-static void m68k_op_scs_8_aw(m68000_base_device* mc68kcpu);
-static void m68k_op_scs_8_al(m68000_base_device* mc68kcpu);
-static void m68k_op_sne_8_ai(m68000_base_device* mc68kcpu);
-static void m68k_op_sne_8_pi(m68000_base_device* mc68kcpu);
-static void m68k_op_sne_8_pi7(m68000_base_device* mc68kcpu);
-static void m68k_op_sne_8_pd(m68000_base_device* mc68kcpu);
-static void m68k_op_sne_8_pd7(m68000_base_device* mc68kcpu);
-static void m68k_op_sne_8_di(m68000_base_device* mc68kcpu);
-static void m68k_op_sne_8_ix(m68000_base_device* mc68kcpu);
-static void m68k_op_sne_8_aw(m68000_base_device* mc68kcpu);
-static void m68k_op_sne_8_al(m68000_base_device* mc68kcpu);
-static void m68k_op_seq_8_ai(m68000_base_device* mc68kcpu);
-static void m68k_op_seq_8_pi(m68000_base_device* mc68kcpu);
-static void m68k_op_seq_8_pi7(m68000_base_device* mc68kcpu);
-static void m68k_op_seq_8_pd(m68000_base_device* mc68kcpu);
-static void m68k_op_seq_8_pd7(m68000_base_device* mc68kcpu);
-static void m68k_op_seq_8_di(m68000_base_device* mc68kcpu);
-static void m68k_op_seq_8_ix(m68000_base_device* mc68kcpu);
-static void m68k_op_seq_8_aw(m68000_base_device* mc68kcpu);
-static void m68k_op_seq_8_al(m68000_base_device* mc68kcpu);
-static void m68k_op_svc_8_ai(m68000_base_device* mc68kcpu);
-static void m68k_op_svc_8_pi(m68000_base_device* mc68kcpu);
-static void m68k_op_svc_8_pi7(m68000_base_device* mc68kcpu);
-static void m68k_op_svc_8_pd(m68000_base_device* mc68kcpu);
-static void m68k_op_svc_8_pd7(m68000_base_device* mc68kcpu);
-static void m68k_op_svc_8_di(m68000_base_device* mc68kcpu);
-static void m68k_op_svc_8_ix(m68000_base_device* mc68kcpu);
-static void m68k_op_svc_8_aw(m68000_base_device* mc68kcpu);
-static void m68k_op_svc_8_al(m68000_base_device* mc68kcpu);
-static void m68k_op_svs_8_ai(m68000_base_device* mc68kcpu);
-static void m68k_op_svs_8_pi(m68000_base_device* mc68kcpu);
-static void m68k_op_svs_8_pi7(m68000_base_device* mc68kcpu);
-static void m68k_op_svs_8_pd(m68000_base_device* mc68kcpu);
-static void m68k_op_svs_8_pd7(m68000_base_device* mc68kcpu);
-static void m68k_op_svs_8_di(m68000_base_device* mc68kcpu);
-static void m68k_op_svs_8_ix(m68000_base_device* mc68kcpu);
-static void m68k_op_svs_8_aw(m68000_base_device* mc68kcpu);
-static void m68k_op_svs_8_al(m68000_base_device* mc68kcpu);
-static void m68k_op_spl_8_ai(m68000_base_device* mc68kcpu);
-static void m68k_op_spl_8_pi(m68000_base_device* mc68kcpu);
-static void m68k_op_spl_8_pi7(m68000_base_device* mc68kcpu);
-static void m68k_op_spl_8_pd(m68000_base_device* mc68kcpu);
-static void m68k_op_spl_8_pd7(m68000_base_device* mc68kcpu);
-static void m68k_op_spl_8_di(m68000_base_device* mc68kcpu);
-static void m68k_op_spl_8_ix(m68000_base_device* mc68kcpu);
-static void m68k_op_spl_8_aw(m68000_base_device* mc68kcpu);
-static void m68k_op_spl_8_al(m68000_base_device* mc68kcpu);
-static void m68k_op_smi_8_ai(m68000_base_device* mc68kcpu);
-static void m68k_op_smi_8_pi(m68000_base_device* mc68kcpu);
-static void m68k_op_smi_8_pi7(m68000_base_device* mc68kcpu);
-static void m68k_op_smi_8_pd(m68000_base_device* mc68kcpu);
-static void m68k_op_smi_8_pd7(m68000_base_device* mc68kcpu);
-static void m68k_op_smi_8_di(m68000_base_device* mc68kcpu);
-static void m68k_op_smi_8_ix(m68000_base_device* mc68kcpu);
-static void m68k_op_smi_8_aw(m68000_base_device* mc68kcpu);
-static void m68k_op_smi_8_al(m68000_base_device* mc68kcpu);
-static void m68k_op_sge_8_ai(m68000_base_device* mc68kcpu);
-static void m68k_op_sge_8_pi(m68000_base_device* mc68kcpu);
-static void m68k_op_sge_8_pi7(m68000_base_device* mc68kcpu);
-static void m68k_op_sge_8_pd(m68000_base_device* mc68kcpu);
-static void m68k_op_sge_8_pd7(m68000_base_device* mc68kcpu);
-static void m68k_op_sge_8_di(m68000_base_device* mc68kcpu);
-static void m68k_op_sge_8_ix(m68000_base_device* mc68kcpu);
-static void m68k_op_sge_8_aw(m68000_base_device* mc68kcpu);
-static void m68k_op_sge_8_al(m68000_base_device* mc68kcpu);
-static void m68k_op_slt_8_ai(m68000_base_device* mc68kcpu);
-static void m68k_op_slt_8_pi(m68000_base_device* mc68kcpu);
-static void m68k_op_slt_8_pi7(m68000_base_device* mc68kcpu);
-static void m68k_op_slt_8_pd(m68000_base_device* mc68kcpu);
-static void m68k_op_slt_8_pd7(m68000_base_device* mc68kcpu);
-static void m68k_op_slt_8_di(m68000_base_device* mc68kcpu);
-static void m68k_op_slt_8_ix(m68000_base_device* mc68kcpu);
-static void m68k_op_slt_8_aw(m68000_base_device* mc68kcpu);
-static void m68k_op_slt_8_al(m68000_base_device* mc68kcpu);
-static void m68k_op_sgt_8_ai(m68000_base_device* mc68kcpu);
-static void m68k_op_sgt_8_pi(m68000_base_device* mc68kcpu);
-static void m68k_op_sgt_8_pi7(m68000_base_device* mc68kcpu);
-static void m68k_op_sgt_8_pd(m68000_base_device* mc68kcpu);
-static void m68k_op_sgt_8_pd7(m68000_base_device* mc68kcpu);
-static void m68k_op_sgt_8_di(m68000_base_device* mc68kcpu);
-static void m68k_op_sgt_8_ix(m68000_base_device* mc68kcpu);
-static void m68k_op_sgt_8_aw(m68000_base_device* mc68kcpu);
-static void m68k_op_sgt_8_al(m68000_base_device* mc68kcpu);
-static void m68k_op_sle_8_ai(m68000_base_device* mc68kcpu);
-static void m68k_op_sle_8_pi(m68000_base_device* mc68kcpu);
-static void m68k_op_sle_8_pi7(m68000_base_device* mc68kcpu);
-static void m68k_op_sle_8_pd(m68000_base_device* mc68kcpu);
-static void m68k_op_sle_8_pd7(m68000_base_device* mc68kcpu);
-static void m68k_op_sle_8_di(m68000_base_device* mc68kcpu);
-static void m68k_op_sle_8_ix(m68000_base_device* mc68kcpu);
-static void m68k_op_sle_8_aw(m68000_base_device* mc68kcpu);
-static void m68k_op_sle_8_al(m68000_base_device* mc68kcpu);
-static void m68k_op_stop(m68000_base_device* mc68kcpu);
-static void m68k_op_sub_8_er_d(m68000_base_device* mc68kcpu);
-static void m68k_op_sub_8_er_ai(m68000_base_device* mc68kcpu);
-static void m68k_op_sub_8_er_pi(m68000_base_device* mc68kcpu);
-static void m68k_op_sub_8_er_pi7(m68000_base_device* mc68kcpu);
-static void m68k_op_sub_8_er_pd(m68000_base_device* mc68kcpu);
-static void m68k_op_sub_8_er_pd7(m68000_base_device* mc68kcpu);
-static void m68k_op_sub_8_er_di(m68000_base_device* mc68kcpu);
-static void m68k_op_sub_8_er_ix(m68000_base_device* mc68kcpu);
-static void m68k_op_sub_8_er_aw(m68000_base_device* mc68kcpu);
-static void m68k_op_sub_8_er_al(m68000_base_device* mc68kcpu);
-static void m68k_op_sub_8_er_pcdi(m68000_base_device* mc68kcpu);
-static void m68k_op_sub_8_er_pcix(m68000_base_device* mc68kcpu);
-static void m68k_op_sub_8_er_i(m68000_base_device* mc68kcpu);
-static void m68k_op_sub_16_er_d(m68000_base_device* mc68kcpu);
-static void m68k_op_sub_16_er_a(m68000_base_device* mc68kcpu);
-static void m68k_op_sub_16_er_ai(m68000_base_device* mc68kcpu);
-static void m68k_op_sub_16_er_pi(m68000_base_device* mc68kcpu);
-static void m68k_op_sub_16_er_pd(m68000_base_device* mc68kcpu);
-static void m68k_op_sub_16_er_di(m68000_base_device* mc68kcpu);
-static void m68k_op_sub_16_er_ix(m68000_base_device* mc68kcpu);
-static void m68k_op_sub_16_er_aw(m68000_base_device* mc68kcpu);
-static void m68k_op_sub_16_er_al(m68000_base_device* mc68kcpu);
-static void m68k_op_sub_16_er_pcdi(m68000_base_device* mc68kcpu);
-static void m68k_op_sub_16_er_pcix(m68000_base_device* mc68kcpu);
-static void m68k_op_sub_16_er_i(m68000_base_device* mc68kcpu);
-static void m68k_op_sub_32_er_d(m68000_base_device* mc68kcpu);
-static void m68k_op_sub_32_er_a(m68000_base_device* mc68kcpu);
-static void m68k_op_sub_32_er_ai(m68000_base_device* mc68kcpu);
-static void m68k_op_sub_32_er_pi(m68000_base_device* mc68kcpu);
-static void m68k_op_sub_32_er_pd(m68000_base_device* mc68kcpu);
-static void m68k_op_sub_32_er_di(m68000_base_device* mc68kcpu);
-static void m68k_op_sub_32_er_ix(m68000_base_device* mc68kcpu);
-static void m68k_op_sub_32_er_aw(m68000_base_device* mc68kcpu);
-static void m68k_op_sub_32_er_al(m68000_base_device* mc68kcpu);
-static void m68k_op_sub_32_er_pcdi(m68000_base_device* mc68kcpu);
-static void m68k_op_sub_32_er_pcix(m68000_base_device* mc68kcpu);
-static void m68k_op_sub_32_er_i(m68000_base_device* mc68kcpu);
-static void m68k_op_sub_8_re_ai(m68000_base_device* mc68kcpu);
-static void m68k_op_sub_8_re_pi(m68000_base_device* mc68kcpu);
-static void m68k_op_sub_8_re_pi7(m68000_base_device* mc68kcpu);
-static void m68k_op_sub_8_re_pd(m68000_base_device* mc68kcpu);
-static void m68k_op_sub_8_re_pd7(m68000_base_device* mc68kcpu);
-static void m68k_op_sub_8_re_di(m68000_base_device* mc68kcpu);
-static void m68k_op_sub_8_re_ix(m68000_base_device* mc68kcpu);
-static void m68k_op_sub_8_re_aw(m68000_base_device* mc68kcpu);
-static void m68k_op_sub_8_re_al(m68000_base_device* mc68kcpu);
-static void m68k_op_sub_16_re_ai(m68000_base_device* mc68kcpu);
-static void m68k_op_sub_16_re_pi(m68000_base_device* mc68kcpu);
-static void m68k_op_sub_16_re_pd(m68000_base_device* mc68kcpu);
-static void m68k_op_sub_16_re_di(m68000_base_device* mc68kcpu);
-static void m68k_op_sub_16_re_ix(m68000_base_device* mc68kcpu);
-static void m68k_op_sub_16_re_aw(m68000_base_device* mc68kcpu);
-static void m68k_op_sub_16_re_al(m68000_base_device* mc68kcpu);
-static void m68k_op_sub_32_re_ai(m68000_base_device* mc68kcpu);
-static void m68k_op_sub_32_re_pi(m68000_base_device* mc68kcpu);
-static void m68k_op_sub_32_re_pd(m68000_base_device* mc68kcpu);
-static void m68k_op_sub_32_re_di(m68000_base_device* mc68kcpu);
-static void m68k_op_sub_32_re_ix(m68000_base_device* mc68kcpu);
-static void m68k_op_sub_32_re_aw(m68000_base_device* mc68kcpu);
-static void m68k_op_sub_32_re_al(m68000_base_device* mc68kcpu);
-static void m68k_op_suba_16_d(m68000_base_device* mc68kcpu);
-static void m68k_op_suba_16_a(m68000_base_device* mc68kcpu);
-static void m68k_op_suba_16_ai(m68000_base_device* mc68kcpu);
-static void m68k_op_suba_16_pi(m68000_base_device* mc68kcpu);
-static void m68k_op_suba_16_pd(m68000_base_device* mc68kcpu);
-static void m68k_op_suba_16_di(m68000_base_device* mc68kcpu);
-static void m68k_op_suba_16_ix(m68000_base_device* mc68kcpu);
-static void m68k_op_suba_16_aw(m68000_base_device* mc68kcpu);
-static void m68k_op_suba_16_al(m68000_base_device* mc68kcpu);
-static void m68k_op_suba_16_pcdi(m68000_base_device* mc68kcpu);
-static void m68k_op_suba_16_pcix(m68000_base_device* mc68kcpu);
-static void m68k_op_suba_16_i(m68000_base_device* mc68kcpu);
-static void m68k_op_suba_32_d(m68000_base_device* mc68kcpu);
-static void m68k_op_suba_32_a(m68000_base_device* mc68kcpu);
-static void m68k_op_suba_32_ai(m68000_base_device* mc68kcpu);
-static void m68k_op_suba_32_pi(m68000_base_device* mc68kcpu);
-static void m68k_op_suba_32_pd(m68000_base_device* mc68kcpu);
-static void m68k_op_suba_32_di(m68000_base_device* mc68kcpu);
-static void m68k_op_suba_32_ix(m68000_base_device* mc68kcpu);
-static void m68k_op_suba_32_aw(m68000_base_device* mc68kcpu);
-static void m68k_op_suba_32_al(m68000_base_device* mc68kcpu);
-static void m68k_op_suba_32_pcdi(m68000_base_device* mc68kcpu);
-static void m68k_op_suba_32_pcix(m68000_base_device* mc68kcpu);
-static void m68k_op_suba_32_i(m68000_base_device* mc68kcpu);
-static void m68k_op_subi_8_d(m68000_base_device* mc68kcpu);
-static void m68k_op_subi_8_ai(m68000_base_device* mc68kcpu);
-static void m68k_op_subi_8_pi(m68000_base_device* mc68kcpu);
-static void m68k_op_subi_8_pi7(m68000_base_device* mc68kcpu);
-static void m68k_op_subi_8_pd(m68000_base_device* mc68kcpu);
-static void m68k_op_subi_8_pd7(m68000_base_device* mc68kcpu);
-static void m68k_op_subi_8_di(m68000_base_device* mc68kcpu);
-static void m68k_op_subi_8_ix(m68000_base_device* mc68kcpu);
-static void m68k_op_subi_8_aw(m68000_base_device* mc68kcpu);
-static void m68k_op_subi_8_al(m68000_base_device* mc68kcpu);
-static void m68k_op_subi_16_d(m68000_base_device* mc68kcpu);
-static void m68k_op_subi_16_ai(m68000_base_device* mc68kcpu);
-static void m68k_op_subi_16_pi(m68000_base_device* mc68kcpu);
-static void m68k_op_subi_16_pd(m68000_base_device* mc68kcpu);
-static void m68k_op_subi_16_di(m68000_base_device* mc68kcpu);
-static void m68k_op_subi_16_ix(m68000_base_device* mc68kcpu);
-static void m68k_op_subi_16_aw(m68000_base_device* mc68kcpu);
-static void m68k_op_subi_16_al(m68000_base_device* mc68kcpu);
-static void m68k_op_subi_32_d(m68000_base_device* mc68kcpu);
-static void m68k_op_subi_32_ai(m68000_base_device* mc68kcpu);
-static void m68k_op_subi_32_pi(m68000_base_device* mc68kcpu);
-static void m68k_op_subi_32_pd(m68000_base_device* mc68kcpu);
-static void m68k_op_subi_32_di(m68000_base_device* mc68kcpu);
-static void m68k_op_subi_32_ix(m68000_base_device* mc68kcpu);
-static void m68k_op_subi_32_aw(m68000_base_device* mc68kcpu);
-static void m68k_op_subi_32_al(m68000_base_device* mc68kcpu);
-static void m68k_op_subq_8_d(m68000_base_device* mc68kcpu);
-static void m68k_op_subq_8_ai(m68000_base_device* mc68kcpu);
-static void m68k_op_subq_8_pi(m68000_base_device* mc68kcpu);
-static void m68k_op_subq_8_pi7(m68000_base_device* mc68kcpu);
-static void m68k_op_subq_8_pd(m68000_base_device* mc68kcpu);
-static void m68k_op_subq_8_pd7(m68000_base_device* mc68kcpu);
-static void m68k_op_subq_8_di(m68000_base_device* mc68kcpu);
-static void m68k_op_subq_8_ix(m68000_base_device* mc68kcpu);
-static void m68k_op_subq_8_aw(m68000_base_device* mc68kcpu);
-static void m68k_op_subq_8_al(m68000_base_device* mc68kcpu);
-static void m68k_op_subq_16_d(m68000_base_device* mc68kcpu);
-static void m68k_op_subq_16_a(m68000_base_device* mc68kcpu);
-static void m68k_op_subq_16_ai(m68000_base_device* mc68kcpu);
-static void m68k_op_subq_16_pi(m68000_base_device* mc68kcpu);
-static void m68k_op_subq_16_pd(m68000_base_device* mc68kcpu);
-static void m68k_op_subq_16_di(m68000_base_device* mc68kcpu);
-static void m68k_op_subq_16_ix(m68000_base_device* mc68kcpu);
-static void m68k_op_subq_16_aw(m68000_base_device* mc68kcpu);
-static void m68k_op_subq_16_al(m68000_base_device* mc68kcpu);
-static void m68k_op_subq_32_d(m68000_base_device* mc68kcpu);
-static void m68k_op_subq_32_a(m68000_base_device* mc68kcpu);
-static void m68k_op_subq_32_ai(m68000_base_device* mc68kcpu);
-static void m68k_op_subq_32_pi(m68000_base_device* mc68kcpu);
-static void m68k_op_subq_32_pd(m68000_base_device* mc68kcpu);
-static void m68k_op_subq_32_di(m68000_base_device* mc68kcpu);
-static void m68k_op_subq_32_ix(m68000_base_device* mc68kcpu);
-static void m68k_op_subq_32_aw(m68000_base_device* mc68kcpu);
-static void m68k_op_subq_32_al(m68000_base_device* mc68kcpu);
-static void m68k_op_subx_8_rr(m68000_base_device* mc68kcpu);
-static void m68k_op_subx_16_rr(m68000_base_device* mc68kcpu);
-static void m68k_op_subx_32_rr(m68000_base_device* mc68kcpu);
-static void m68k_op_subx_8_mm_ax7(m68000_base_device* mc68kcpu);
-static void m68k_op_subx_8_mm_ay7(m68000_base_device* mc68kcpu);
-static void m68k_op_subx_8_mm_axy7(m68000_base_device* mc68kcpu);
-static void m68k_op_subx_8_mm(m68000_base_device* mc68kcpu);
-static void m68k_op_subx_16_mm(m68000_base_device* mc68kcpu);
-static void m68k_op_subx_32_mm(m68000_base_device* mc68kcpu);
-static void m68k_op_swap_32(m68000_base_device* mc68kcpu);
-static void m68k_op_tas_8_d(m68000_base_device* mc68kcpu);
-static void m68k_op_tas_8_ai(m68000_base_device* mc68kcpu);
-static void m68k_op_tas_8_pi(m68000_base_device* mc68kcpu);
-static void m68k_op_tas_8_pi7(m68000_base_device* mc68kcpu);
-static void m68k_op_tas_8_pd(m68000_base_device* mc68kcpu);
-static void m68k_op_tas_8_pd7(m68000_base_device* mc68kcpu);
-static void m68k_op_tas_8_di(m68000_base_device* mc68kcpu);
-static void m68k_op_tas_8_ix(m68000_base_device* mc68kcpu);
-static void m68k_op_tas_8_aw(m68000_base_device* mc68kcpu);
-static void m68k_op_tas_8_al(m68000_base_device* mc68kcpu);
-static void m68k_op_trap(m68000_base_device* mc68kcpu);
-static void m68k_op_trapt(m68000_base_device* mc68kcpu);
-static void m68k_op_trapt_16(m68000_base_device* mc68kcpu);
-static void m68k_op_trapt_32(m68000_base_device* mc68kcpu);
-static void m68k_op_trapf(m68000_base_device* mc68kcpu);
-static void m68k_op_trapf_16(m68000_base_device* mc68kcpu);
-static void m68k_op_trapf_32(m68000_base_device* mc68kcpu);
-static void m68k_op_traphi(m68000_base_device* mc68kcpu);
-static void m68k_op_trapls(m68000_base_device* mc68kcpu);
-static void m68k_op_trapcc(m68000_base_device* mc68kcpu);
-static void m68k_op_trapcs(m68000_base_device* mc68kcpu);
-static void m68k_op_trapne(m68000_base_device* mc68kcpu);
-static void m68k_op_trapeq(m68000_base_device* mc68kcpu);
-static void m68k_op_trapvc(m68000_base_device* mc68kcpu);
-static void m68k_op_trapvs(m68000_base_device* mc68kcpu);
-static void m68k_op_trappl(m68000_base_device* mc68kcpu);
-static void m68k_op_trapmi(m68000_base_device* mc68kcpu);
-static void m68k_op_trapge(m68000_base_device* mc68kcpu);
-static void m68k_op_traplt(m68000_base_device* mc68kcpu);
-static void m68k_op_trapgt(m68000_base_device* mc68kcpu);
-static void m68k_op_traple(m68000_base_device* mc68kcpu);
-static void m68k_op_traphi_16(m68000_base_device* mc68kcpu);
-static void m68k_op_trapls_16(m68000_base_device* mc68kcpu);
-static void m68k_op_trapcc_16(m68000_base_device* mc68kcpu);
-static void m68k_op_trapcs_16(m68000_base_device* mc68kcpu);
-static void m68k_op_trapne_16(m68000_base_device* mc68kcpu);
-static void m68k_op_trapeq_16(m68000_base_device* mc68kcpu);
-static void m68k_op_trapvc_16(m68000_base_device* mc68kcpu);
-static void m68k_op_trapvs_16(m68000_base_device* mc68kcpu);
-static void m68k_op_trappl_16(m68000_base_device* mc68kcpu);
-static void m68k_op_trapmi_16(m68000_base_device* mc68kcpu);
-static void m68k_op_trapge_16(m68000_base_device* mc68kcpu);
-static void m68k_op_traplt_16(m68000_base_device* mc68kcpu);
-static void m68k_op_trapgt_16(m68000_base_device* mc68kcpu);
-static void m68k_op_traple_16(m68000_base_device* mc68kcpu);
-static void m68k_op_traphi_32(m68000_base_device* mc68kcpu);
-static void m68k_op_trapls_32(m68000_base_device* mc68kcpu);
-static void m68k_op_trapcc_32(m68000_base_device* mc68kcpu);
-static void m68k_op_trapcs_32(m68000_base_device* mc68kcpu);
-static void m68k_op_trapne_32(m68000_base_device* mc68kcpu);
-static void m68k_op_trapeq_32(m68000_base_device* mc68kcpu);
-static void m68k_op_trapvc_32(m68000_base_device* mc68kcpu);
-static void m68k_op_trapvs_32(m68000_base_device* mc68kcpu);
-static void m68k_op_trappl_32(m68000_base_device* mc68kcpu);
-static void m68k_op_trapmi_32(m68000_base_device* mc68kcpu);
-static void m68k_op_trapge_32(m68000_base_device* mc68kcpu);
-static void m68k_op_traplt_32(m68000_base_device* mc68kcpu);
-static void m68k_op_trapgt_32(m68000_base_device* mc68kcpu);
-static void m68k_op_traple_32(m68000_base_device* mc68kcpu);
-static void m68k_op_trapv(m68000_base_device* mc68kcpu);
-static void m68k_op_tst_8_d(m68000_base_device* mc68kcpu);
-static void m68k_op_tst_8_ai(m68000_base_device* mc68kcpu);
-static void m68k_op_tst_8_pi(m68000_base_device* mc68kcpu);
-static void m68k_op_tst_8_pi7(m68000_base_device* mc68kcpu);
-static void m68k_op_tst_8_pd(m68000_base_device* mc68kcpu);
-static void m68k_op_tst_8_pd7(m68000_base_device* mc68kcpu);
-static void m68k_op_tst_8_di(m68000_base_device* mc68kcpu);
-static void m68k_op_tst_8_ix(m68000_base_device* mc68kcpu);
-static void m68k_op_tst_8_aw(m68000_base_device* mc68kcpu);
-static void m68k_op_tst_8_al(m68000_base_device* mc68kcpu);
-static void m68k_op_tst_8_pcdi(m68000_base_device* mc68kcpu);
-static void m68k_op_tst_8_pcix(m68000_base_device* mc68kcpu);
-static void m68k_op_tst_8_i(m68000_base_device* mc68kcpu);
-static void m68k_op_tst_16_d(m68000_base_device* mc68kcpu);
-static void m68k_op_tst_16_a(m68000_base_device* mc68kcpu);
-static void m68k_op_tst_16_ai(m68000_base_device* mc68kcpu);
-static void m68k_op_tst_16_pi(m68000_base_device* mc68kcpu);
-static void m68k_op_tst_16_pd(m68000_base_device* mc68kcpu);
-static void m68k_op_tst_16_di(m68000_base_device* mc68kcpu);
-static void m68k_op_tst_16_ix(m68000_base_device* mc68kcpu);
-static void m68k_op_tst_16_aw(m68000_base_device* mc68kcpu);
-static void m68k_op_tst_16_al(m68000_base_device* mc68kcpu);
-static void m68k_op_tst_16_pcdi(m68000_base_device* mc68kcpu);
-static void m68k_op_tst_16_pcix(m68000_base_device* mc68kcpu);
-static void m68k_op_tst_16_i(m68000_base_device* mc68kcpu);
-static void m68k_op_tst_32_d(m68000_base_device* mc68kcpu);
-static void m68k_op_tst_32_a(m68000_base_device* mc68kcpu);
-static void m68k_op_tst_32_ai(m68000_base_device* mc68kcpu);
-static void m68k_op_tst_32_pi(m68000_base_device* mc68kcpu);
-static void m68k_op_tst_32_pd(m68000_base_device* mc68kcpu);
-static void m68k_op_tst_32_di(m68000_base_device* mc68kcpu);
-static void m68k_op_tst_32_ix(m68000_base_device* mc68kcpu);
-static void m68k_op_tst_32_aw(m68000_base_device* mc68kcpu);
-static void m68k_op_tst_32_al(m68000_base_device* mc68kcpu);
-static void m68k_op_tst_32_pcdi(m68000_base_device* mc68kcpu);
-static void m68k_op_tst_32_pcix(m68000_base_device* mc68kcpu);
-static void m68k_op_tst_32_i(m68000_base_device* mc68kcpu);
-static void m68k_op_unlk_32_a7(m68000_base_device* mc68kcpu);
-static void m68k_op_unlk_32(m68000_base_device* mc68kcpu);
-static void m68k_op_unpk_16_rr(m68000_base_device* mc68kcpu);
-static void m68k_op_unpk_16_mm_ax7(m68000_base_device* mc68kcpu);
-static void m68k_op_unpk_16_mm_ay7(m68000_base_device* mc68kcpu);
-static void m68k_op_unpk_16_mm_axy7(m68000_base_device* mc68kcpu);
-static void m68k_op_unpk_16_mm(m68000_base_device* mc68kcpu);
-static void m68k_op_cinv_32(m68000_base_device* mc68kcpu);
-static void m68k_op_cpush_32(m68000_base_device* mc68kcpu);
-#else
-/* 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 ============================= */
-/* ======================================================================== */
-
-
-#endif
diff --git a/src/devices/cpu/m68000/makefile b/src/devices/cpu/m68000/makefile
index 12b29fa267a..be25a067a78 100644
--- a/src/devices/cpu/m68000/makefile
+++ b/src/devices/cpu/m68000/makefile
@@ -8,24 +8,30 @@ ifeq ($(OS),os2)
EXE := .exe
endif
+ifndef verbose
+ SILENT = @
+endif
+CC = gcc
+CXX = g++
+
.PHONY: all clean
-all : m68kmake$(EXE) m68kops.c clean
+all : m68kmake$(EXE) m68kops.cpp
clean:
@echo Cleaning...
-@rm -f m68kmake$(EXE)
-@rm -f m68kmake.o
+ -@rm -f m68kops.*
-m68kmake.o: m68kmake.c
- @echo $(notdir $<)
- @gcc -x c++ -std=gnu++98 -o "$@" -c "$<"
+m68kmake.o: m68kmake.cpp
+ $(SILENT) $(CC) -x c++ -std=c++11 -o "$@" -c "$<"
m68kmake$(EXE) : m68kmake.o
@echo Linking $@...
- @g++ -lstdc++ $^ -o $@
+ $(SILENT) $(CXX) -lstdc++ $^ -o $@
-m68kops.c: m68kmake$(EXE) m68k_in.c
+m68kops.cpp: m68kmake$(EXE) m68k_in.cpp
@echo Generating M68K source files...
- @m68kmake$(EXE) . m68k_in.c
+ $(SILENT) ./m68kmake$(EXE) . m68k_in.cpp
diff --git a/src/devices/cpu/mips/mips3.cpp b/src/devices/cpu/mips/mips3.cpp
index f4747b7304c..711b9c3edf4 100644
--- a/src/devices/cpu/mips/mips3.cpp
+++ b/src/devices/cpu/mips/mips3.cpp
@@ -120,8 +120,10 @@ const device_type RM7000BE = &device_creator<rm7000be_device>;
const device_type RM7000LE = &device_creator<rm7000le_device>;
+// VR4300 and VR5432 have 4 fewer PFN bits, and only 32 TLB entries
mips3_device::mips3_device(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, UINT32 clock, const char *shortname, mips3_flavor flavor, endianness_t endianness)
: cpu_device(mconfig, type, name, tag, owner, clock, shortname, __FILE__)
+ , device_vtlb_interface(mconfig, *this, AS_PROGRAM)
, m_program_config("program", endianness, 32, 32, 0, 32, MIPS3_MIN_PAGE_SHIFT)
, m_flavor(flavor)
, m_core(nullptr)
@@ -134,7 +136,6 @@ mips3_device::mips3_device(const machine_config &mconfig, device_type type, cons
, m_ll_value(0)
, m_lld_value(0)
, m_badcop_value(0)
- , m_tlb_table(nullptr)
, m_lwl(endianness == ENDIANNESS_BIG ? &mips3_device::lwl_be : &mips3_device::lwl_le)
, m_lwr(endianness == ENDIANNESS_BIG ? &mips3_device::lwr_be : &mips3_device::lwr_le)
, m_swl(endianness == ENDIANNESS_BIG ? &mips3_device::swl_be : &mips3_device::swl_le)
@@ -144,14 +145,13 @@ mips3_device::mips3_device(const machine_config &mconfig, device_type type, cons
, m_sdl(endianness == ENDIANNESS_BIG ? &mips3_device::sdl_be : &mips3_device::sdl_le)
, m_sdr(endianness == ENDIANNESS_BIG ? &mips3_device::sdr_be : &mips3_device::sdr_le)
, c_system_clock(0)
- , m_pfnmask(0)
- , m_tlbentries(0)
+ , m_pfnmask(flavor == MIPS3_TYPE_VR4300 ? 0x000fffff : 0x00ffffff)
+ , m_tlbentries(flavor == MIPS3_TYPE_VR4300 ? 32 : MIPS3_MAX_TLB_ENTRIES)
, m_bigendian(endianness == ENDIANNESS_BIG)
, m_byte_xor(m_bigendian ? BYTE4_XOR_BE(0) : BYTE4_XOR_LE(0))
, m_word_xor(m_bigendian ? WORD_XOR_BE(0) : WORD_XOR_LE(0))
, c_icache_size(0)
, c_dcache_size(0)
- , m_vtlb(nullptr)
, m_fastram_select(0)
, m_debugger_temp(0)
, m_cache(CACHE_SIZE + sizeof(internal_mips3_state))
@@ -190,17 +190,14 @@ mips3_device::mips3_device(const machine_config &mconfig, device_type type, cons
}
memset(m_fastram, 0, sizeof(m_fastram));
memset(m_hotspot, 0, sizeof(m_hotspot));
+
+ // configure the virtual TLB
+ set_vtlb_fixed_entries(2 * m_tlbentries + 2);
}
void mips3_device::device_stop()
{
- if (m_vtlb != nullptr)
- {
- vtlb_free(m_vtlb);
- m_vtlb = nullptr;
- }
-
if (m_drcfe != nullptr)
{
m_drcfe = nullptr;
@@ -331,28 +328,12 @@ void mips3_device::device_start()
m_program = &space(AS_PROGRAM);
m_direct = &m_program->direct();
- /* configure flavor-specific parameters */
- m_pfnmask = 0x00ffffff;
- m_tlbentries = MIPS3_MAX_TLB_ENTRIES;
-
- /* VR4300 and VR5432 have 4 fewer PFN bits, and only 32 TLB entries */
- if (m_flavor == MIPS3_TYPE_VR4300)
- {
- m_pfnmask = 0x000fffff;
- m_tlbentries = 32;
- }
-
/* set up the endianness */
m_program->accessors(m_memory);
- /* allocate the virtual TLB */
- m_vtlb = vtlb_alloc(this, AS_PROGRAM, 2 * m_tlbentries + 2, 0);
-
/* allocate a timer for the compare interrupt */
m_compare_int_timer = machine().scheduler().timer_alloc(timer_expired_delegate(FUNC(mips3_device::compare_int_callback), this));
- m_tlb_table = vtlb_table(m_vtlb);
-
UINT32 flags = 0;
/* initialize the UML generator */
m_drcuml = std::make_unique<drcuml_state>(*this, m_cache, flags, 8, 32, 2);
@@ -950,13 +931,13 @@ void mips3_device::device_reset()
entry->entry_hi = 0xffffffff;
entry->entry_lo[0] = 0xfffffff8;
entry->entry_lo[1] = 0xfffffff8;
- vtlb_load(m_vtlb, 2 * tlbindex + 0, 0, 0, 0);
- vtlb_load(m_vtlb, 2 * tlbindex + 1, 0, 0, 0);
+ vtlb_load(2 * tlbindex + 0, 0, 0, 0);
+ vtlb_load(2 * tlbindex + 1, 0, 0, 0);
}
/* load the fixed TLB range */
- vtlb_load(m_vtlb, 2 * m_tlbentries + 0, (0xa0000000 - 0x80000000) >> MIPS3_MIN_PAGE_SHIFT, 0x80000000, 0x00000000 | VTLB_READ_ALLOWED | VTLB_WRITE_ALLOWED | VTLB_FETCH_ALLOWED | VTLB_FLAG_VALID);
- vtlb_load(m_vtlb, 2 * m_tlbentries + 1, (0xc0000000 - 0xa0000000) >> MIPS3_MIN_PAGE_SHIFT, 0xa0000000, 0x00000000 | VTLB_READ_ALLOWED | VTLB_WRITE_ALLOWED | VTLB_FETCH_ALLOWED | VTLB_FLAG_VALID);
+ vtlb_load(2 * m_tlbentries + 0, (0xa0000000 - 0x80000000) >> MIPS3_MIN_PAGE_SHIFT, 0x80000000, 0x00000000 | VTLB_READ_ALLOWED | VTLB_WRITE_ALLOWED | VTLB_FETCH_ALLOWED | VTLB_FLAG_VALID);
+ vtlb_load(2 * m_tlbentries + 1, (0xc0000000 - 0xa0000000) >> MIPS3_MIN_PAGE_SHIFT, 0xa0000000, 0x00000000 | VTLB_READ_ALLOWED | VTLB_WRITE_ALLOWED | VTLB_FETCH_ALLOWED | VTLB_FLAG_VALID);
m_core->mode = (MODE_KERNEL << 1) | 0;
m_cache_dirty = TRUE;
@@ -969,7 +950,7 @@ bool mips3_device::memory_translate(address_spacenum spacenum, int intention, of
/* only applies to the program address space */
if (spacenum == AS_PROGRAM)
{
- const vtlb_entry *table = vtlb_table(m_vtlb);
+ const vtlb_entry *table = vtlb_table();
vtlb_entry entry = table[address >> MIPS3_MIN_PAGE_SHIFT];
if ((entry & (1 << (intention & (TRANSLATE_TYPE_MASK | TRANSLATE_USER_MASK)))) == 0)
return false;
@@ -998,7 +979,7 @@ offs_t mips3_device::disasm_disassemble(char *buffer, offs_t pc, const UINT8 *op
inline bool mips3_device::RBYTE(offs_t address, UINT32 *result)
{
- const UINT32 tlbval = m_tlb_table[address >> 12];
+ const UINT32 tlbval = vtlb_table()[address >> 12];
if (tlbval & VTLB_READ_ALLOWED)
{
const UINT32 tlbaddress = (tlbval & ~0xfff) | (address & 0xfff);
@@ -1031,7 +1012,7 @@ inline bool mips3_device::RBYTE(offs_t address, UINT32 *result)
inline bool mips3_device::RHALF(offs_t address, UINT32 *result)
{
- const UINT32 tlbval = m_tlb_table[address >> 12];
+ const UINT32 tlbval = vtlb_table()[address >> 12];
if (tlbval & VTLB_READ_ALLOWED)
{
const UINT32 tlbaddress = (tlbval & ~0xfff) | (address & 0xfff);
@@ -1064,7 +1045,7 @@ inline bool mips3_device::RHALF(offs_t address, UINT32 *result)
inline bool mips3_device::RWORD(offs_t address, UINT32 *result)
{
- const UINT32 tlbval = m_tlb_table[address >> 12];
+ const UINT32 tlbval = vtlb_table()[address >> 12];
if (tlbval & VTLB_READ_ALLOWED)
{
const UINT32 tlbaddress = (tlbval & ~0xfff) | (address & 0xfff);
@@ -1097,7 +1078,7 @@ inline bool mips3_device::RWORD(offs_t address, UINT32 *result)
inline bool mips3_device::RWORD_MASKED(offs_t address, UINT32 *result, UINT32 mem_mask)
{
- const UINT32 tlbval = m_tlb_table[address >> 12];
+ const UINT32 tlbval = vtlb_table()[address >> 12];
if (tlbval & VTLB_READ_ALLOWED)
{
*result = (*m_memory.read_dword_masked)(*m_program, (tlbval & ~0xfff) | (address & 0xfff), mem_mask);
@@ -1120,7 +1101,7 @@ inline bool mips3_device::RWORD_MASKED(offs_t address, UINT32 *result, UINT32 me
inline bool mips3_device::RDOUBLE(offs_t address, UINT64 *result)
{
- const UINT32 tlbval = m_tlb_table[address >> 12];
+ const UINT32 tlbval = vtlb_table()[address >> 12];
if (tlbval & VTLB_READ_ALLOWED)
{
*result = (*m_memory.read_qword)(*m_program, (tlbval & ~0xfff) | (address & 0xfff));
@@ -1143,7 +1124,7 @@ inline bool mips3_device::RDOUBLE(offs_t address, UINT64 *result)
inline bool mips3_device::RDOUBLE_MASKED(offs_t address, UINT64 *result, UINT64 mem_mask)
{
- const UINT32 tlbval = m_tlb_table[address >> 12];
+ const UINT32 tlbval = vtlb_table()[address >> 12];
if (tlbval & VTLB_READ_ALLOWED)
{
*result = (*m_memory.read_qword_masked)(*m_program, (tlbval & ~0xfff) | (address & 0xfff), mem_mask);
@@ -1166,7 +1147,7 @@ inline bool mips3_device::RDOUBLE_MASKED(offs_t address, UINT64 *result, UINT64
inline void mips3_device::WBYTE(offs_t address, UINT8 data)
{
- const UINT32 tlbval = m_tlb_table[address >> 12];
+ const UINT32 tlbval = vtlb_table()[address >> 12];
if (tlbval & VTLB_WRITE_ALLOWED)
{
const UINT32 tlbaddress = (tlbval & ~0xfff) | (address & 0xfff);
@@ -1200,7 +1181,7 @@ inline void mips3_device::WBYTE(offs_t address, UINT8 data)
inline void mips3_device::WHALF(offs_t address, UINT16 data)
{
- const UINT32 tlbval = m_tlb_table[address >> 12];
+ const UINT32 tlbval = vtlb_table()[address >> 12];
if (tlbval & VTLB_WRITE_ALLOWED)
{
const UINT32 tlbaddress = (tlbval & ~0xfff) | (address & 0xfff);
@@ -1234,7 +1215,7 @@ inline void mips3_device::WHALF(offs_t address, UINT16 data)
inline void mips3_device::WWORD(offs_t address, UINT32 data)
{
- const UINT32 tlbval = m_tlb_table[address >> 12];
+ const UINT32 tlbval = vtlb_table()[address >> 12];
if (tlbval & VTLB_WRITE_ALLOWED)
{
const UINT32 tlbaddress = (tlbval & ~0xfff) | (address & 0xfff);
@@ -1268,7 +1249,7 @@ inline void mips3_device::WWORD(offs_t address, UINT32 data)
inline void mips3_device::WWORD_MASKED(offs_t address, UINT32 data, UINT32 mem_mask)
{
- const UINT32 tlbval = m_tlb_table[address >> 12];
+ const UINT32 tlbval = vtlb_table()[address >> 12];
if (tlbval & VTLB_WRITE_ALLOWED)
{
(*m_memory.write_dword_masked)(*m_program, (tlbval & ~0xfff) | (address & 0xfff), data, mem_mask);
@@ -1292,7 +1273,7 @@ inline void mips3_device::WWORD_MASKED(offs_t address, UINT32 data, UINT32 mem_m
inline void mips3_device::WDOUBLE(offs_t address, UINT64 data)
{
- const UINT32 tlbval = m_tlb_table[address >> 12];
+ const UINT32 tlbval = vtlb_table()[address >> 12];
if (tlbval & VTLB_WRITE_ALLOWED)
{
(*m_memory.write_qword)(*m_program, (tlbval & ~0xfff) | (address & 0xfff), data);
@@ -1316,7 +1297,7 @@ inline void mips3_device::WDOUBLE(offs_t address, UINT64 data)
inline void mips3_device::WDOUBLE_MASKED(offs_t address, UINT64 data, UINT64 mem_mask)
{
- const UINT32 tlbval = m_tlb_table[address >> 12];
+ const UINT32 tlbval = vtlb_table()[address >> 12];
if (tlbval & VTLB_WRITE_ALLOWED)
{
(*m_memory.write_qword_masked)(*m_program, (tlbval & ~0xfff) | (address & 0xfff), data, mem_mask);
diff --git a/src/devices/cpu/mips/mips3.h b/src/devices/cpu/mips/mips3.h
index 9e0de9ed419..1715861bb89 100644
--- a/src/devices/cpu/mips/mips3.h
+++ b/src/devices/cpu/mips/mips3.h
@@ -15,7 +15,7 @@
#define __MIPS3_H__
-#include "cpu/vtlb.h"
+#include "divtlb.h"
#include "cpu/drcfe.h"
#include "cpu/drcuml.h"
#include "cpu/drcumlsh.h"
@@ -245,7 +245,7 @@ struct compiler_state
class mips3_frontend;
-class mips3_device : public cpu_device
+class mips3_device : public cpu_device, public device_vtlb_interface
{
friend class mips3_frontend;
@@ -355,7 +355,6 @@ private:
UINT32 m_ll_value;
UINT64 m_lld_value;
UINT32 m_badcop_value;
- const vtlb_entry *m_tlb_table;
/* endian-dependent load/store */
typedef void (mips3_device::*loadstore_func)(UINT32 op);
@@ -389,7 +388,6 @@ private:
size_t c_dcache_size;
/* MMU */
- vtlb_state * m_vtlb;
mips3_tlb_entry m_tlb[MIPS3_MAX_TLB_ENTRIES];
/* fast RAM */
diff --git a/src/devices/cpu/mips/mips3com.cpp b/src/devices/cpu/mips/mips3com.cpp
index bcd6f6f349a..2fcf8de1844 100644
--- a/src/devices/cpu/mips/mips3com.cpp
+++ b/src/devices/cpu/mips/mips3com.cpp
@@ -325,8 +325,8 @@ void mips3_device::tlb_map_entry(int tlbindex)
/* the ASID doesn't match the current ASID, and if the page isn't global, unmap it from the TLB */
if (!tlb_entry_matches_asid(entry, current_asid) && !tlb_entry_is_global(entry))
{
- vtlb_load(m_vtlb, 2 * tlbindex + 0, 0, 0, 0);
- vtlb_load(m_vtlb, 2 * tlbindex + 1, 0, 0, 0);
+ vtlb_load(2 * tlbindex + 0, 0, 0, 0);
+ vtlb_load(2 * tlbindex + 1, 0, 0, 0);
return;
}
@@ -334,8 +334,8 @@ void mips3_device::tlb_map_entry(int tlbindex)
vpn = ((entry->entry_hi >> 13) & 0x07ffffff) << 1;
if (vpn >= (1 << (MIPS3_MAX_PADDR_SHIFT - MIPS3_MIN_PAGE_SHIFT)))
{
- vtlb_load(m_vtlb, 2 * tlbindex + 0, 0, 0, 0);
- vtlb_load(m_vtlb, 2 * tlbindex + 1, 0, 0, 0);
+ vtlb_load(2 * tlbindex + 0, 0, 0, 0);
+ vtlb_load(2 * tlbindex + 1, 0, 0, 0);
return;
}
@@ -369,9 +369,9 @@ void mips3_device::tlb_map_entry(int tlbindex)
/* load the virtual TLB with the corresponding entries */
if ((effvpn + count) <= (0x80000000 >> MIPS3_MIN_PAGE_SHIFT) || effvpn >= (0xc0000000 >> MIPS3_MIN_PAGE_SHIFT))
- vtlb_load(m_vtlb, 2 * tlbindex + which, count, effvpn << MIPS3_MIN_PAGE_SHIFT, (pfn << MIPS3_MIN_PAGE_SHIFT) | flags);
+ vtlb_load(2 * tlbindex + which, count, effvpn << MIPS3_MIN_PAGE_SHIFT, (pfn << MIPS3_MIN_PAGE_SHIFT) | flags);
else
- vtlb_load(m_vtlb, 2 * tlbindex + which, 0, 0, 0);
+ vtlb_load(2 * tlbindex + which, 0, 0, 0);
}
}
diff --git a/src/devices/cpu/mips/mips3com.h b/src/devices/cpu/mips/mips3com.h
index 86d7f0c7a05..20facae78d0 100644
--- a/src/devices/cpu/mips/mips3com.h
+++ b/src/devices/cpu/mips/mips3com.h
@@ -14,7 +14,6 @@
#define __MIPS3COM_H__
#include "mips3.h"
-#include "cpu/vtlb.h"
/***************************************************************************
diff --git a/src/devices/cpu/mips/mips3drc.cpp b/src/devices/cpu/mips/mips3drc.cpp
index 4e6e9771a38..7b6da3a1626 100644
--- a/src/devices/cpu/mips/mips3drc.cpp
+++ b/src/devices/cpu/mips/mips3drc.cpp
@@ -667,7 +667,7 @@ void mips3_device::static_generate_tlb_mismatch()
UML_RECOVER(block, I0, MAPVAR_PC); // recover i0,PC
UML_MOV(block, mem(&m_core->pc), I0); // mov <pc>,i0
UML_SHR(block, I1, I0, 12); // shr i1,i0,12
- UML_LOAD(block, I1, (void *)vtlb_table(m_vtlb), I1, SIZE_DWORD, SCALE_x4);// load i1,[vtlb_table],i1,dword
+ UML_LOAD(block, I1, (void *)vtlb_table(), I1, SIZE_DWORD, SCALE_x4);// load i1,[vtlb_table],i1,dword
if (PRINTF_MMU)
{
static const char text[] = "TLB mismatch @ %08X (ent=%08X)\n";
@@ -839,7 +839,7 @@ void mips3_device::static_generate_memory_accessor(int mode, int size, int iswri
/* general case: assume paging and perform a translation */
UML_SHR(block, I3, I0, 12); // shr i3,i0,12
- UML_LOAD(block, I3, (void *)vtlb_table(m_vtlb), I3, SIZE_DWORD, SCALE_x4);// load i3,[vtlb_table],i3,dword
+ UML_LOAD(block, I3, (void *)vtlb_table(), I3, SIZE_DWORD, SCALE_x4);// load i3,[vtlb_table],i3,dword
UML_TEST(block, I3, iswrite ? VTLB_WRITE_ALLOWED : VTLB_READ_ALLOWED);// test i3,iswrite ? VTLB_WRITE_ALLOWED : VTLB_READ_ALLOWED
UML_JMPc(block, COND_Z, tlbmiss = label++); // jmp tlbmiss,z
UML_ROLINS(block, I0, I3, 0, 0xfffff000); // rolins i0,i3,0,0xfffff000
@@ -1226,7 +1226,7 @@ void mips3_device::generate_sequence_instruction(drcuml_block *block, compiler_s
/* validate our TLB entry at this PC; if we fail, we need to handle it */
if ((desc->flags & OPFLAG_VALIDATE_TLB) && (desc->pc < 0x80000000 || desc->pc >= 0xc0000000))
{
- const vtlb_entry *tlbtable = vtlb_table(m_vtlb);
+ const vtlb_entry *tlbtable = vtlb_table();
/* if we currently have a valid TLB read entry, we just verify */
if (tlbtable[desc->pc >> 12] & VTLB_FETCH_ALLOWED)
diff --git a/src/devices/cpu/pdp1/pdp1.cpp b/src/devices/cpu/pdp1/pdp1.cpp
index cbb43535d7f..d7a9ad008fb 100644
--- a/src/devices/cpu/pdp1/pdp1.cpp
+++ b/src/devices/cpu/pdp1/pdp1.cpp
@@ -384,7 +384,7 @@ pdp1_device::pdp1_device(const machine_config &mconfig, const char *tag, device_
: cpu_device(mconfig, PDP1, "PDP1", tag, owner, clock, "pdp1_cpu", __FILE__)
, m_program_config("program", ENDIANNESS_BIG, 32, 18, 0)
{
- m_is_octal = true;
+ m_program_config.m_is_octal = true;
}
diff --git a/src/devices/cpu/pdp1/tx0.cpp b/src/devices/cpu/pdp1/tx0.cpp
index 3a4fd7f1fb1..8e5b41776a0 100644
--- a/src/devices/cpu/pdp1/tx0.cpp
+++ b/src/devices/cpu/pdp1/tx0.cpp
@@ -61,7 +61,7 @@ tx0_device::tx0_device(const machine_config &mconfig, device_type type, const ch
, m_sel_handler(*this)
, m_io_reset_callback(*this)
{
- m_is_octal = true;
+ m_program_config.m_is_octal = true;
}
tx0_8kw_device::tx0_8kw_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock)
diff --git a/src/devices/cpu/powerpc/ppc.h b/src/devices/cpu/powerpc/ppc.h
index 5e40ee88249..450b4ca2257 100644
--- a/src/devices/cpu/powerpc/ppc.h
+++ b/src/devices/cpu/powerpc/ppc.h
@@ -14,7 +14,7 @@
#ifndef __PPC_H__
#define __PPC_H__
-#include "cpu/vtlb.h"
+#include "divtlb.h"
#include "cpu/drcfe.h"
#include "cpu/drcuml.h"
#include "cpu/drcumlsh.h"
@@ -171,7 +171,7 @@ enum
class ppc_frontend;
-class ppc_device : public cpu_device
+class ppc_device : public cpu_device, public device_vtlb_interface
{
friend class ppc_frontend;
@@ -462,9 +462,6 @@ protected:
UINT32 m_sebr;
UINT32 m_ser;
- /* MMU */
- vtlb_state *m_vtlb;
-
/* architectural distinctions */
powerpc_flavor m_flavor;
UINT32 m_cap;
diff --git a/src/devices/cpu/powerpc/ppccom.cpp b/src/devices/cpu/powerpc/ppccom.cpp
index 9036ff2c794..a9a26b29a5c 100644
--- a/src/devices/cpu/powerpc/ppccom.cpp
+++ b/src/devices/cpu/powerpc/ppccom.cpp
@@ -209,11 +209,11 @@ const device_type PPC405GP = &device_creator<ppc405gp_device>;
ppc_device::ppc_device(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, UINT32 clock, const char *shortname, int address_bits, int data_bits, powerpc_flavor flavor, UINT32 cap, UINT32 tb_divisor, address_map_constructor internal_map)
: cpu_device(mconfig, type, name, tag, owner, clock, shortname, __FILE__)
+ , device_vtlb_interface(mconfig, *this, AS_PROGRAM)
, m_program_config("program", ENDIANNESS_BIG, data_bits, address_bits, 0, internal_map)
, c_bus_frequency(0)
, m_core(nullptr)
, m_bus_freq_multiplier(1)
- , m_vtlb(nullptr)
, m_flavor(flavor)
, m_cap(cap)
, m_tb_divisor(tb_divisor)
@@ -224,6 +224,11 @@ ppc_device::ppc_device(const machine_config &mconfig, device_type type, const ch
{
m_program_config.m_logaddr_width = 32;
m_program_config.m_page_shift = POWERPC_MIN_PAGE_SHIFT;
+
+ // configure the virtual TLB
+ set_vtlb_dynamic_entries(POWERPC_TLB_ENTRIES);
+ if (m_cap & PPCCAP_603_MMU)
+ set_vtlb_fixed_entries(PPC603_FIXED_TLB_ENTRIES);
}
//ppc403_device::ppc403_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock)
@@ -708,9 +713,6 @@ void ppc_device::device_start()
if (!(m_cap & PPCCAP_4XX) && space_config()->m_endianness != ENDIANNESS_NATIVE)
m_codexor = 4;
- /* allocate the virtual TLB */
- m_vtlb = vtlb_alloc(this, AS_PROGRAM, (m_cap & PPCCAP_603_MMU) ? PPC603_FIXED_TLB_ENTRIES : 0, POWERPC_TLB_ENTRIES);
-
/* allocate a timer for the compare interrupt */
if ((m_cap & PPCCAP_OEA) && (m_tb_divisor))
m_decrementer_int_timer = machine().scheduler().timer_alloc(timer_expired_delegate(FUNC(ppc_device::decrementer_int_callback), this));
@@ -1148,9 +1150,6 @@ void ppc_device::state_string_export(const device_state_entry &entry, std::strin
void ppc_device::device_stop()
{
- if (m_vtlb != nullptr)
- vtlb_free(m_vtlb);
- m_vtlb = nullptr;
}
@@ -1199,12 +1198,11 @@ void ppc_device::device_reset()
m_core->irq_pending = 0;
/* flush the TLB */
- vtlb_flush_dynamic(m_vtlb);
if (m_cap & PPCCAP_603_MMU)
{
for (int tlbindex = 0; tlbindex < PPC603_FIXED_TLB_ENTRIES; tlbindex++)
{
- vtlb_load(m_vtlb, tlbindex, 0, 0, 0);
+ vtlb_load(tlbindex, 0, 0, 0);
}
}
@@ -1385,7 +1383,7 @@ UINT32 ppc_device::ppccom_translate_address_internal(int intention, offs_t &addr
/* if we're simulating the 603 MMU, fill in the data and stop here */
if (m_cap & PPCCAP_603_MMU)
{
- UINT32 entry = vtlb_table(m_vtlb)[address >> 12];
+ UINT32 entry = vtlb_table()[address >> 12];
m_core->mmu603_cmp = 0x80000000 | ((segreg & 0xffffff) << 7) | (0 << 6) | ((address >> 22) & 0x3f);
m_core->mmu603_hash[0] = hashbase | ((hash << 6) & hashmask);
m_core->mmu603_hash[1] = hashbase | ((~hash << 6) & hashmask);
@@ -1465,7 +1463,7 @@ bool ppc_device::memory_translate(address_spacenum spacenum, int intention, offs
void ppc_device::ppccom_tlb_fill()
{
- vtlb_fill(m_vtlb, m_core->param0, m_core->param1);
+ vtlb_fill(m_core->param0, m_core->param1);
}
@@ -1476,7 +1474,7 @@ void ppc_device::ppccom_tlb_fill()
void ppc_device::ppccom_tlb_flush()
{
- vtlb_flush_dynamic(m_vtlb);
+ vtlb_flush_dynamic();
}
@@ -1492,7 +1490,7 @@ void ppc_device::ppccom_tlb_flush()
void ppc_device::ppccom_execute_tlbie()
{
- vtlb_flush_address(m_vtlb, m_core->param0);
+ vtlb_flush_address(m_core->param0);
}
@@ -1503,7 +1501,7 @@ void ppc_device::ppccom_execute_tlbie()
void ppc_device::ppccom_execute_tlbia()
{
- vtlb_flush_dynamic(m_vtlb);
+ vtlb_flush_dynamic();
}
@@ -1530,7 +1528,7 @@ void ppc_device::ppccom_execute_tlbl()
flags |= VTLB_FETCH_ALLOWED;
/* load the entry */
- vtlb_load(m_vtlb, entrynum, 1, address, (m_core->spr[SPR603_RPA] & 0xfffff000) | flags);
+ vtlb_load(entrynum, 1, address, (m_core->spr[SPR603_RPA] & 0xfffff000) | flags);
}
diff --git a/src/devices/cpu/powerpc/ppcdrc.cpp b/src/devices/cpu/powerpc/ppcdrc.cpp
index ed502d344de..35b984d240d 100644
--- a/src/devices/cpu/powerpc/ppcdrc.cpp
+++ b/src/devices/cpu/powerpc/ppcdrc.cpp
@@ -743,11 +743,11 @@ void ppc_device::static_generate_tlb_mismatch()
UML_HANDLE(block, *m_tlb_mismatch); // handle tlb_mismatch
UML_RECOVER(block, I0, MAPVAR_PC); // recover i0,PC
UML_SHR(block, I1, I0, 12); // shr i1,i0,12
- UML_LOAD(block, I2, (void *)vtlb_table(m_vtlb), I1, SIZE_DWORD, SCALE_x4); // load i2,[vtlb],i1,dword
+ UML_LOAD(block, I2, (void *)vtlb_table(), I1, SIZE_DWORD, SCALE_x4); // load i2,[vtlb],i1,dword
UML_MOV(block, mem(&m_core->param0), I0); // mov [param0],i0
UML_MOV(block, mem(&m_core->param1), TRANSLATE_FETCH); // mov [param1],TRANSLATE_FETCH
UML_CALLC(block, (c_function)cfunc_ppccom_tlb_fill, this); // callc tlbfill,ppc
- UML_LOAD(block, I1, (void *)vtlb_table(m_vtlb), I1, SIZE_DWORD, SCALE_x4); // load i1,[vtlb],i1,dword
+ UML_LOAD(block, I1, (void *)vtlb_table(), I1, SIZE_DWORD, SCALE_x4); // load i1,[vtlb],i1,dword
UML_TEST(block, I1, VTLB_FETCH_ALLOWED); // test i1,VTLB_FETCH_ALLOWED
UML_JMPc(block, COND_Z, isi = label++); // jmp isi,z
UML_CMP(block, I2, 0); // cmp i2,0
@@ -1021,7 +1021,7 @@ void ppc_device::static_generate_memory_accessor(int mode, int size, int iswrite
if (((m_cap & PPCCAP_OEA) && (mode & MODE_DATA_TRANSLATION)) || (iswrite && (m_cap & PPCCAP_4XX) && (mode & MODE_PROTECTION)))
{
UML_SHR(block, I3, I0, 12); // shr i3,i0,12
- UML_LOAD(block, I3, (void *)vtlb_table(m_vtlb), I3, SIZE_DWORD, SCALE_x4);// load i3,[vtlb],i3,dword
+ UML_LOAD(block, I3, (void *)vtlb_table(), I3, SIZE_DWORD, SCALE_x4);// load i3,[vtlb],i3,dword
UML_TEST(block, I3, (UINT64)1 << translate_type); // test i3,1 << translate_type
UML_JMPc(block, COND_Z, tlbmiss = label++); // jmp tlbmiss,z
UML_LABEL(block, tlbreturn = label++); // tlbreturn:
@@ -1338,7 +1338,7 @@ void ppc_device::static_generate_memory_accessor(int mode, int size, int iswrite
UML_MOV(block, mem(&m_core->param1), translate_type); // mov [param1],translate_type
UML_CALLC(block, (c_function)cfunc_ppccom_tlb_fill, this); // callc tlbfill,ppc
UML_SHR(block, I3, I0, 12); // shr i3,i0,12
- UML_LOAD(block, I3, (void *)vtlb_table(m_vtlb), I3, SIZE_DWORD, SCALE_x4);// load i3,[vtlb],i3,dword
+ UML_LOAD(block, I3, (void *)vtlb_table(), I3, SIZE_DWORD, SCALE_x4);// load i3,[vtlb],i3,dword
UML_TEST(block, I3, (UINT64)1 << translate_type); // test i3,1 << translate_type
UML_JMPc(block, COND_NZ, tlbreturn); // jmp tlbreturn,nz
@@ -1703,7 +1703,7 @@ void ppc_device::generate_sequence_instruction(drcuml_block *block, compiler_sta
/* validate our TLB entry at this PC; if we fail, we need to handle it */
if ((desc->flags & OPFLAG_VALIDATE_TLB) && (m_core->mode & MODE_DATA_TRANSLATION))
{
- const vtlb_entry *tlbtable = vtlb_table(m_vtlb);
+ const vtlb_entry *tlbtable = vtlb_table();
/* if we currently have a valid TLB read entry, we just verify */
if (tlbtable[desc->pc >> 12] != 0)
diff --git a/src/devices/cpu/se3208/se3208.cpp b/src/devices/cpu/se3208/se3208.cpp
index 011cc103909..45c4c38cc86 100644
--- a/src/devices/cpu/se3208/se3208.cpp
+++ b/src/devices/cpu/se3208/se3208.cpp
@@ -54,27 +54,22 @@ se3208_device::se3208_device(const machine_config &mconfig, const char *tag, dev
UINT32 se3208_device::read_dword_unaligned(address_space &space, UINT32 address)
{
- switch (address & 3)
- {
- case 0:
+ if (DWORD_ALIGNED(address))
return space.read_dword(address);
- case 1:
- case 2:
- case 3:
- printf("%08x: dword READ unaligned %08x\n", m_PC, address);
+ else
+ {
+ osd_printf_debug("%08x: dword READ unaligned %08x\n", m_PC, address);
#if ALLOW_UNALIGNED_DWORD_ACCESS
return space.read_byte(address) | space.read_byte(address + 1) << 8 | space.read_byte(address + 2) << 16 | space.read_byte(address + 3) << 24;
#else
return 0;
#endif
}
-
- return 0;
}
UINT16 se3208_device::read_word_unaligned(address_space &space, UINT32 address)
{
- if (address & 1)
+ if (!WORD_ALIGNED(address))
return space.read_byte(address) | space.read_byte(address+1)<<8;
else
return space.read_word(address);
@@ -82,31 +77,24 @@ UINT16 se3208_device::read_word_unaligned(address_space &space, UINT32 address)
void se3208_device::write_dword_unaligned(address_space &space, UINT32 address, UINT32 data)
{
- switch (address & 3)
- {
- case 0:
+ if (DWORD_ALIGNED(address))
space.write_dword(address, data);
- break;
-
- case 1:
- case 2:
- case 3:
+ else
+ {
#if ALLOW_UNALIGNED_DWORD_ACCESS
space.write_byte(address, data & 0xff);
space.write_byte(address + 1, (data >> 8) & 0xff);
space.write_byte(address + 2, (data >> 16) & 0xff);
space.write_byte(address + 3, (data >> 24) & 0xff);
#endif
- printf("%08x: dword WRITE unaligned %08x\n", m_PC, address);
-
- break;
+ osd_printf_debug("%08x: dword WRITE unaligned %08x\n", m_PC, address);
}
}
void se3208_device::write_word_unaligned(address_space &space, UINT32 address, UINT16 data)
{
- if (address & 1)
+ if (!WORD_ALIGNED(address))
{
space.write_byte(address, data & 0xff);
space.write_byte(address+1, (data>>8)&0xff);
diff --git a/src/devices/cpu/ssp1601/ssp1601.cpp b/src/devices/cpu/ssp1601/ssp1601.cpp
index e8cc1f501af..db50c5e6816 100644
--- a/src/devices/cpu/ssp1601/ssp1601.cpp
+++ b/src/devices/cpu/ssp1601/ssp1601.cpp
@@ -1,4 +1,4 @@
-// license:???
+// license:BSD-3-Clause
// copyright-holders:Pierpaolo Prazzoli,Grazvydas Ignotas
/*
* Samsung SSP1601 DSP emulator
diff --git a/src/devices/cpu/ssp1601/ssp1601d.cpp b/src/devices/cpu/ssp1601/ssp1601d.cpp
index c147cbd8534..dfc8f3ae366 100644
--- a/src/devices/cpu/ssp1601/ssp1601d.cpp
+++ b/src/devices/cpu/ssp1601/ssp1601d.cpp
@@ -1,5 +1,5 @@
// license:BSD-3-Clause
-// copyright-holders:Pierpaolo Prazzoli
+// copyright-holders:Pierpaolo Prazzoli,Grazvydas Ignotas
/*
SSP1601 disassembler
diff --git a/src/devices/cpu/t11/t11.cpp b/src/devices/cpu/t11/t11.cpp
index 72c2e80c91b..5e32e2081f5 100644
--- a/src/devices/cpu/t11/t11.cpp
+++ b/src/devices/cpu/t11/t11.cpp
@@ -49,7 +49,7 @@ t11_device::t11_device(const machine_config &mconfig, device_type type, const ch
, m_program_config("program", ENDIANNESS_LITTLE, 16, 16, 0)
, c_initial_mode(0)
{
- m_is_octal = true;
+ m_program_config.m_is_octal = true;
memset(m_reg, 0x00, sizeof(m_reg));
memset(&m_psw, 0x00, sizeof(m_psw));
}
@@ -59,7 +59,7 @@ t11_device::t11_device(const machine_config &mconfig, const char *tag, device_t
, m_program_config("program", ENDIANNESS_LITTLE, 16, 16, 0)
, c_initial_mode(0)
{
- m_is_octal = true;
+ m_program_config.m_is_octal = true;
memset(m_reg, 0x00, sizeof(m_reg));
memset(&m_psw, 0x00, sizeof(m_psw));
}
diff --git a/src/devices/cpu/tlcs900/tlcs900.cpp b/src/devices/cpu/tlcs900/tlcs900.cpp
index 4ac6f8b07a3..2b5d45d7757 100644
--- a/src/devices/cpu/tlcs900/tlcs900.cpp
+++ b/src/devices/cpu/tlcs900/tlcs900.cpp
@@ -1748,62 +1748,62 @@ void tmp95c063_device::tlcs900_handle_ad()
int ad_value;
/* Store A/D converted value */
- if ((m_reg[TMP95C063_ADMOD1] & 0x10) == 0) // conversion channel fixed
+ if ((m_reg[TMP95C063_ADMOD1] & 0x10) == 0) // conversion channel fixed
{
switch( m_reg[TMP95C063_ADMOD2] & 0x07 )
{
- case 0x00: // AN0
+ case 0x00: // AN0
ad_value = m_an0_read(0) & 0x3ff;
m_reg[TMP95C063_ADREG04L] = (ad_value & 0x3) << 6;
m_reg[TMP95C063_ADREG04H] = (ad_value >> 2) & 0xff;
break;
- case 0x01: // AN1
+ case 0x01: // AN1
ad_value = m_an1_read(0) & 0x3ff;
m_reg[TMP95C063_ADREG15L] = (ad_value & 0x3) << 6;
m_reg[TMP95C063_ADREG15H] = (ad_value >> 2) & 0xff;
break;
- case 0x02: // AN2
+ case 0x02: // AN2
ad_value = m_an2_read(0) & 0x3ff;
m_reg[TMP95C063_ADREG26L] = (ad_value & 0x3) << 6;
m_reg[TMP95C063_ADREG26H] = (ad_value >> 2) & 0xff;
break;
- case 0x03: // AN3
+ case 0x03: // AN3
ad_value = m_an3_read(0) & 0x3ff;
m_reg[TMP95C063_ADREG37L] = (ad_value & 0x3) << 6;
m_reg[TMP95C063_ADREG37H] = (ad_value >> 2) & 0xff;
break;
- case 0x04: // AN4
+ case 0x04: // AN4
ad_value = m_an4_read(0) & 0x3ff;
m_reg[TMP95C063_ADREG04L] = (ad_value & 0x3) << 6;
m_reg[TMP95C063_ADREG04H] = (ad_value >> 2) & 0xff;
break;
- case 0x05: // AN5
+ case 0x05: // AN5
ad_value = m_an5_read(0) & 0x3ff;
m_reg[TMP95C063_ADREG15L] = (ad_value & 0x3) << 6;
m_reg[TMP95C063_ADREG15H] = (ad_value >> 2) & 0xff;
break;
- case 0x06: // AN6
+ case 0x06: // AN6
ad_value = m_an6_read(0) & 0x3ff;
m_reg[TMP95C063_ADREG26L] = (ad_value & 0x3) << 6;
m_reg[TMP95C063_ADREG26H] = (ad_value >> 2) & 0xff;
break;
- case 0x07: // AN7
+ case 0x07: // AN7
ad_value = m_an7_read(0) & 0x3ff;
m_reg[TMP95C063_ADREG37L] = (ad_value & 0x3) << 6;
m_reg[TMP95C063_ADREG37H] = (ad_value >> 2) & 0xff;
break;
}
}
- else // conversion channel sweep
+ else // conversion channel sweep
{
switch( m_reg[TMP95C063_ADMOD2] & 0x07 )
{
- case 0x00: // AN0
+ case 0x00: // AN0
ad_value = m_an0_read(0) & 0x3ff;
m_reg[TMP95C063_ADREG04L] = (ad_value & 0x3) << 6;
m_reg[TMP95C063_ADREG04H] = (ad_value >> 2) & 0xff;
break;
- case 0x01: // AN0 -> AN1
+ case 0x01: // AN0 -> AN1
ad_value = m_an0_read(0) & 0x3ff;
m_reg[TMP95C063_ADREG04L] = (ad_value & 0x3) << 6;
m_reg[TMP95C063_ADREG04H] = (ad_value >> 2) & 0xff;
@@ -1811,7 +1811,7 @@ void tmp95c063_device::tlcs900_handle_ad()
m_reg[TMP95C063_ADREG15L] = (ad_value & 0x3) << 6;
m_reg[TMP95C063_ADREG15H] = (ad_value >> 2) & 0xff;
break;
- case 0x02: // AN0 -> AN1 -> AN2
+ case 0x02: // AN0 -> AN1 -> AN2
ad_value = m_an0_read(0) & 0x3ff;
m_reg[TMP95C063_ADREG04L] = (ad_value & 0x3) << 6;
m_reg[TMP95C063_ADREG04H] = (ad_value >> 2) & 0xff;
@@ -1822,7 +1822,7 @@ void tmp95c063_device::tlcs900_handle_ad()
m_reg[TMP95C063_ADREG26L] = (ad_value & 0x3) << 6;
m_reg[TMP95C063_ADREG26H] = (ad_value >> 2) & 0xff;
break;
- case 0x03: // AN0 -> AN1 -> AN2 -> AN3
+ case 0x03: // AN0 -> AN1 -> AN2 -> AN3
ad_value = m_an0_read(0) & 0x3ff;
m_reg[TMP95C063_ADREG04L] = (ad_value & 0x3) << 6;
m_reg[TMP95C063_ADREG04H] = (ad_value >> 2) & 0xff;
@@ -1836,12 +1836,12 @@ void tmp95c063_device::tlcs900_handle_ad()
m_reg[TMP95C063_ADREG37L] = (ad_value & 0x3) << 6;
m_reg[TMP95C063_ADREG37H] = (ad_value >> 2) & 0xff;
break;
- case 0x04: // AN4
+ case 0x04: // AN4
ad_value = m_an4_read(0) & 0x3ff;
m_reg[TMP95C063_ADREG04L] = (ad_value & 0x3) << 6;
m_reg[TMP95C063_ADREG04H] = (ad_value >> 2) & 0xff;
break;
- case 0x05: // AN4 -> AN5
+ case 0x05: // AN4 -> AN5
ad_value = m_an4_read(0) & 0x3ff;
m_reg[TMP95C063_ADREG04L] = (ad_value & 0x3) << 6;
m_reg[TMP95C063_ADREG04H] = (ad_value >> 2) & 0xff;
@@ -1849,7 +1849,7 @@ void tmp95c063_device::tlcs900_handle_ad()
m_reg[TMP95C063_ADREG15L] = (ad_value & 0x3) << 6;
m_reg[TMP95C063_ADREG15H] = (ad_value >> 2) & 0xff;
break;
- case 0x06: // AN4 -> AN5 -> AN6
+ case 0x06: // AN4 -> AN5 -> AN6
ad_value = m_an4_read(0) & 0x3ff;
m_reg[TMP95C063_ADREG04L] = (ad_value & 0x3) << 6;
m_reg[TMP95C063_ADREG04H] = (ad_value >> 2) & 0xff;
@@ -1860,7 +1860,7 @@ void tmp95c063_device::tlcs900_handle_ad()
m_reg[TMP95C063_ADREG26L] = (ad_value & 0x3) << 6;
m_reg[TMP95C063_ADREG26H] = (ad_value >> 2) & 0xff;
break;
- case 0x07: // AN4 -> AN5 -> AN6 -> AN7
+ case 0x07: // AN4 -> AN5 -> AN6 -> AN7
ad_value = m_an4_read(0) & 0x3ff;
m_reg[TMP95C063_ADREG04L] = (ad_value & 0x3) << 6;
m_reg[TMP95C063_ADREG04H] = (ad_value >> 2) & 0xff;
diff --git a/src/devices/cpu/tlcs900/tlcs900.h b/src/devices/cpu/tlcs900/tlcs900.h
index 0dcf3d84994..54b68a090d5 100644
--- a/src/devices/cpu/tlcs900/tlcs900.h
+++ b/src/devices/cpu/tlcs900/tlcs900.h
@@ -852,14 +852,14 @@ private:
devcb_write8 m_porte_write;
// analogue inputs, sampled at 10 bits
- devcb_read16 m_an0_read;
- devcb_read16 m_an1_read;
- devcb_read16 m_an2_read;
- devcb_read16 m_an3_read;
- devcb_read16 m_an4_read;
- devcb_read16 m_an5_read;
- devcb_read16 m_an6_read;
- devcb_read16 m_an7_read;
+ devcb_read16 m_an0_read;
+ devcb_read16 m_an1_read;
+ devcb_read16 m_an2_read;
+ devcb_read16 m_an3_read;
+ devcb_read16 m_an4_read;
+ devcb_read16 m_an5_read;
+ devcb_read16 m_an6_read;
+ devcb_read16 m_an7_read;
};
#endif
diff --git a/src/devices/cpu/tms32051/32051ops.inc b/src/devices/cpu/tms32051/32051ops.inc
index 52519c7f692..83e769416a1 100644
--- a/src/devices/cpu/tms32051/32051ops.inc
+++ b/src/devices/cpu/tms32051/32051ops.inc
@@ -198,39 +198,39 @@ UINT16 tms32051_device::GET_ADDRESS()
bool tms32051_device::GET_ZLVC_CONDITION(int zlvc, int zlvc_mask)
{
- if (zlvc_mask & 0x2) // OV-bit
+ if (zlvc_mask & 0x2) // OV-bit
{
- if ((zlvc & 0x2) && m_st0.ov == 0) // OV
+ if ((zlvc & 0x2) && m_st0.ov == 0) // OV
return false;
- if (((zlvc & 0x2) == 0) && m_st0.ov != 0) // NOV
+ if (((zlvc & 0x2) == 0) && m_st0.ov != 0) // NOV
return false;
}
- if (zlvc_mask & 0x1) // C-bit
+ if (zlvc_mask & 0x1) // C-bit
{
- if ((zlvc & 0x1) && m_st1.c == 0) // C
+ if ((zlvc & 0x1) && m_st1.c == 0) // C
return false;
- if (((zlvc & 0x1) == 0) && m_st1.c != 0) // NC
+ if (((zlvc & 0x1) == 0) && m_st1.c != 0) // NC
return false;
}
switch ((zlvc_mask & 0xc) | ((zlvc >> 2) & 0x3))
{
- case 0x00: break; // MZ=0, ML=0, Z=0, L=0
- case 0x01: break; // MZ=0, ML=0, Z=0, L=1
- case 0x02: break; // MZ=0, ML=0, Z=1, L=0
- case 0x03: break; // MZ=0, ML=0, Z=1, L=1
- case 0x04: if ((INT32)(m_acc) <= 0) return false; break; // MZ=0, ML=1, Z=0, L=0 (GT)
- case 0x05: if ((INT32)(m_acc) >= 0) return false; break; // MZ=0, ML=1, Z=0, L=1 (LT)
- case 0x06: if ((INT32)(m_acc) <= 0) return false; break; // MZ=0, ML=1, Z=1, L=0 (GT)
- case 0x07: if ((INT32)(m_acc) >= 0) return false; break; // MZ=0, ML=1, Z=1, L=1 (LT)
- case 0x08: if ((INT32)(m_acc) == 0) return false; break; // MZ=1, ML=0, Z=0, L=0 (NEQ)
- case 0x09: if ((INT32)(m_acc) == 0) return false; break; // MZ=1, ML=0, Z=0, L=1 (NEQ)
- case 0x0a: if ((INT32)(m_acc) != 0) return false; break; // MZ=1, ML=0, Z=1, L=0 (EQ)
- case 0x0b: if ((INT32)(m_acc) != 0) return false; break; // MZ=1, ML=0, Z=1, L=1 (EQ)
- case 0x0c: if ((INT32)(m_acc) <= 0) return false; break; // MZ=1, ML=1, Z=0, L=0 (GT)
- case 0x0d: if ((INT32)(m_acc) >= 0) return false; break; // MZ=1, ML=1, Z=0, L=1 (LT)
- case 0x0e: if ((INT32)(m_acc) < 0) return false; break; // MZ=1, ML=1, Z=1, L=0 (GEQ)
- case 0x0f: if ((INT32)(m_acc) > 0) return false; break; // MZ=1, ML=1, Z=1, L=1 (LEQ)
+ case 0x00: break; // MZ=0, ML=0, Z=0, L=0
+ case 0x01: break; // MZ=0, ML=0, Z=0, L=1
+ case 0x02: break; // MZ=0, ML=0, Z=1, L=0
+ case 0x03: break; // MZ=0, ML=0, Z=1, L=1
+ case 0x04: if ((INT32)(m_acc) <= 0) return false; break; // MZ=0, ML=1, Z=0, L=0 (GT)
+ case 0x05: if ((INT32)(m_acc) >= 0) return false; break; // MZ=0, ML=1, Z=0, L=1 (LT)
+ case 0x06: if ((INT32)(m_acc) <= 0) return false; break; // MZ=0, ML=1, Z=1, L=0 (GT)
+ case 0x07: if ((INT32)(m_acc) >= 0) return false; break; // MZ=0, ML=1, Z=1, L=1 (LT)
+ case 0x08: if ((INT32)(m_acc) == 0) return false; break; // MZ=1, ML=0, Z=0, L=0 (NEQ)
+ case 0x09: if ((INT32)(m_acc) == 0) return false; break; // MZ=1, ML=0, Z=0, L=1 (NEQ)
+ case 0x0a: if ((INT32)(m_acc) != 0) return false; break; // MZ=1, ML=0, Z=1, L=0 (EQ)
+ case 0x0b: if ((INT32)(m_acc) != 0) return false; break; // MZ=1, ML=0, Z=1, L=1 (EQ)
+ case 0x0c: if ((INT32)(m_acc) <= 0) return false; break; // MZ=1, ML=1, Z=0, L=0 (GT)
+ case 0x0d: if ((INT32)(m_acc) >= 0) return false; break; // MZ=1, ML=1, Z=0, L=1 (LT)
+ case 0x0e: if ((INT32)(m_acc) < 0) return false; break; // MZ=1, ML=1, Z=1, L=0 (GEQ)
+ case 0x0f: if ((INT32)(m_acc) > 0) return false; break; // MZ=1, ML=1, Z=1, L=1 (LEQ)
}
return true;
}
@@ -239,14 +239,14 @@ bool tms32051_device::GET_TP_CONDITION(int tp)
{
switch (tp)
{
- case 0: // BIO pin low
+ case 0: // BIO pin low
// TODO
return false;
-
- case 1: // TC == 1
+
+ case 1: // TC == 1
return m_st1.tc != 0;
- case 2: // TC == 0
+ case 2: // TC == 0
return m_st1.tc == 0;
case 3:
@@ -1376,7 +1376,7 @@ void tms32051_device::op_out()
{
UINT16 port = ROPCODE();
UINT16 ea = GET_ADDRESS();
-
+
UINT16 data = DM_READ16(ea);
m_io->write_word(port << 1, data);
@@ -1438,7 +1438,7 @@ void tms32051_device::op_apl_dbmr()
{
UINT16 ea = GET_ADDRESS();
UINT16 data = DM_READ16(ea);
-
+
data &= m_dbmr;
m_st1.tc = (data == 0) ? 1 : 0;
@@ -1452,7 +1452,7 @@ void tms32051_device::op_apl_imm()
UINT16 ea = GET_ADDRESS();
UINT16 imm = ROPCODE();
UINT16 data = DM_READ16(ea);
-
+
data &= imm;
m_st1.tc = (data == 0) ? 1 : 0;
diff --git a/src/devices/cpu/tms34010/tms34010.cpp b/src/devices/cpu/tms34010/tms34010.cpp
index 1ad1879c3b0..68f410d5b2b 100644
--- a/src/devices/cpu/tms34010/tms34010.cpp
+++ b/src/devices/cpu/tms34010/tms34010.cpp
@@ -1004,7 +1004,7 @@ void tms340x0_device::get_display_params(tms34010_display_params *params)
UINT32 tms340x0_device::tms340x0_ind16(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect)
{
- pen_t blackpen = screen.palette()->black_pen();
+ pen_t blackpen = screen.palette().black_pen();
tms34010_display_params params;
int x;
diff --git a/src/devices/cpu/vtlb.cpp b/src/devices/cpu/vtlb.cpp
deleted file mode 100644
index 4c9a9a2f311..00000000000
--- a/src/devices/cpu/vtlb.cpp
+++ /dev/null
@@ -1,310 +0,0 @@
-// license:BSD-3-Clause
-// copyright-holders:Aaron Giles
-/***************************************************************************
-
- vtlb.c
-
- Generic virtual TLB implementation.
-
-***************************************************************************/
-
-#include "emu.h"
-#include "vtlb.h"
-
-
-
-/***************************************************************************
- DEBUGGING
-***************************************************************************/
-
-#define PRINTF_TLB (0)
-
-
-
-/***************************************************************************
- TYPE DEFINITIONS
-***************************************************************************/
-
-/* VTLB state */
-struct vtlb_state
-{
- cpu_device * cpudevice; /* CPU device */
- address_spacenum space; /* address space */
- int dynamic; /* number of dynamic entries */
- int fixed; /* number of fixed entries */
- int dynindex; /* index of next dynamic entry */
- int pageshift; /* bits to shift to get page index */
- int addrwidth; /* logical address bus width */
- std::vector<offs_t> live; /* array of live entries by table index */
- std::vector<int> fixedpages; /* number of pages each fixed entry covers */
- std::vector<vtlb_entry> table; /* table of entries by address */
-};
-
-
-
-/***************************************************************************
- INITIALIZATION/TEARDOWN
-***************************************************************************/
-
-/*-------------------------------------------------
- vtlb_alloc - allocate a new VTLB for the
- given CPU
--------------------------------------------------*/
-
-vtlb_state *vtlb_alloc(device_t *cpu, address_spacenum space, int fixed_entries, int dynamic_entries)
-{
- vtlb_state *vtlb;
-
- /* allocate memory for the core structure */
- vtlb = auto_alloc_clear(cpu->machine(), <vtlb_state>());
-
- /* fill in CPU information */
- vtlb->cpudevice = downcast<cpu_device *>(cpu);
- vtlb->space = space;
- vtlb->dynamic = dynamic_entries;
- vtlb->fixed = fixed_entries;
- const address_space_config *spaceconfig = device_get_space_config(*cpu, space);
- assert(spaceconfig != nullptr);
- vtlb->pageshift = spaceconfig->m_page_shift;
- vtlb->addrwidth = spaceconfig->m_logaddr_width;
-
- /* validate CPU information */
- assert((1 << vtlb->pageshift) > VTLB_FLAGS_MASK);
- assert(vtlb->addrwidth > vtlb->pageshift);
-
- /* allocate the entry array */
- vtlb->live.resize(fixed_entries + dynamic_entries);
- memset(&vtlb->live[0], 0, vtlb->live.size()*sizeof(vtlb->live[0]));
- cpu->save_item(NAME(vtlb->live));
-
- /* allocate the lookup table */
- vtlb->table.resize((size_t) 1 << (vtlb->addrwidth - vtlb->pageshift));
- memset(&vtlb->table[0], 0, vtlb->table.size()*sizeof(vtlb->table[0]));
- cpu->save_item(NAME(vtlb->table));
-
- /* allocate the fixed page count array */
- if (fixed_entries > 0)
- {
- vtlb->fixedpages.resize(fixed_entries);
- memset(&vtlb->fixedpages[0], 0, fixed_entries*sizeof(vtlb->fixedpages[0]));
- cpu->save_item(NAME(vtlb->fixedpages));
- }
- return vtlb;
-}
-
-
-/*-------------------------------------------------
- vtlb_free - free an allocated VTLB
--------------------------------------------------*/
-
-void vtlb_free(vtlb_state *vtlb)
-{
- auto_free(vtlb->cpudevice->machine(), vtlb);
-}
-
-
-
-/***************************************************************************
- FILLING
-***************************************************************************/
-
-/*-------------------------------------------------
- vtlb_fill - rcalled by the CPU core in
- response to an unmapped access
--------------------------------------------------*/
-
-int vtlb_fill(vtlb_state *vtlb, offs_t address, int intention)
-{
- offs_t tableindex = address >> vtlb->pageshift;
- vtlb_entry entry = vtlb->table[tableindex];
- offs_t taddress;
-
- if (PRINTF_TLB)
- printf("vtlb_fill: %08X(%X) ... ", address, intention);
-
- /* should not be called here if the entry is in the table already */
-// assert((entry & (1 << intention)) == 0);
-
- /* if we have no dynamic entries, we always fail */
- if (vtlb->dynamic == 0)
- {
- if (PRINTF_TLB)
- printf("failed: no dynamic entries\n");
- return FALSE;
- }
-
- /* ask the CPU core to translate for us */
- taddress = address;
- if (!vtlb->cpudevice->translate(vtlb->space, intention, taddress))
- {
- if (PRINTF_TLB)
- printf("failed: no translation\n");
- return FALSE;
- }
-
- /* if this is the first successful translation for this address, allocate a new entry */
- if ((entry & VTLB_FLAGS_MASK) == 0)
- {
- int liveindex = vtlb->dynindex++ % vtlb->dynamic;
-
- /* if an entry already exists at this index, free it */
- if (vtlb->live[liveindex] != 0)
- vtlb->table[vtlb->live[liveindex] - 1] = 0;
-
- /* claim this new entry */
- vtlb->live[liveindex] = tableindex + 1;
-
- /* form a new blank entry */
- entry = (taddress >> vtlb->pageshift) << vtlb->pageshift;
- entry |= VTLB_FLAG_VALID;
-
- if (PRINTF_TLB)
- printf("success (%08X), new entry\n", taddress);
- }
-
- /* otherwise, ensure that different intentions do not produce different addresses */
- else
- {
- assert((entry >> vtlb->pageshift) == (taddress >> vtlb->pageshift));
- assert(entry & VTLB_FLAG_VALID);
-
- if (PRINTF_TLB)
- printf("success (%08X), existing entry\n", taddress);
- }
-
- /* add the intention to the list of valid intentions and store */
- entry |= 1 << (intention & (TRANSLATE_TYPE_MASK | TRANSLATE_USER_MASK));
- vtlb->table[tableindex] = entry;
- return TRUE;
-}
-
-
-/*-------------------------------------------------
- vtlb_load - load a fixed VTLB entry
--------------------------------------------------*/
-
-void vtlb_load(vtlb_state *vtlb, int entrynum, int numpages, offs_t address, vtlb_entry value)
-{
- offs_t tableindex = address >> vtlb->pageshift;
- int liveindex = vtlb->dynamic + entrynum;
- int pagenum;
-
- /* must be in range */
- assert(entrynum >= 0 && entrynum < vtlb->fixed);
-
- if (PRINTF_TLB)
- printf("vtlb_load %d for %d pages at %08X == %08X\n", entrynum, numpages, address, value);
-
- /* if an entry already exists at this index, free it */
- if (vtlb->live[liveindex] != 0)
- {
- int pagecount = vtlb->fixedpages[entrynum];
- int oldtableindex = vtlb->live[liveindex] - 1;
- for (pagenum = 0; pagenum < pagecount; pagenum++)
- vtlb->table[oldtableindex + pagenum] = 0;
- }
-
- /* claim this new entry */
- vtlb->live[liveindex] = tableindex + 1;
-
- /* store the raw value, making sure the "fixed" flag is set */
- value |= VTLB_FLAG_FIXED;
- vtlb->fixedpages[entrynum] = numpages;
- for (pagenum = 0; pagenum < numpages; pagenum++)
- vtlb->table[tableindex + pagenum] = value + (pagenum << vtlb->pageshift);
-}
-
-/*-------------------------------------------------
- vtlb_dynload - load a dynamic VTLB entry
--------------------------------------------------*/
-
-void vtlb_dynload(vtlb_state *vtlb, UINT32 index, offs_t address, vtlb_entry value)
-{
- vtlb_entry entry = vtlb->table[index];
-
- if (vtlb->dynamic == 0)
- {
- if (PRINTF_TLB)
- printf("failed: no dynamic entries\n");
- return;
- }
-
- int liveindex = vtlb->dynindex++ % vtlb->dynamic;
- /* is entry already live? */
- if (!(entry & VTLB_FLAG_VALID))
- {
- /* if an entry already exists at this index, free it */
- if (vtlb->live[liveindex] != 0)
- vtlb->table[vtlb->live[liveindex] - 1] = 0;
-
- /* claim this new entry */
- vtlb->live[liveindex] = index + 1;
- }
- /* form a new blank entry */
- entry = (address >> vtlb->pageshift) << vtlb->pageshift;
- entry |= VTLB_FLAG_VALID | value;
-
- if (PRINTF_TLB)
- printf("success (%08X), new entry\n", address);
-
- vtlb->table[index] = entry;
-}
-
-/***************************************************************************
- FLUSHING
-***************************************************************************/
-
-/*-------------------------------------------------
- vtlb_flush_dynamic - flush all knowledge
- from the dynamic part of the VTLB
--------------------------------------------------*/
-
-void vtlb_flush_dynamic(vtlb_state *vtlb)
-{
- int liveindex;
-
- if (PRINTF_TLB)
- printf("vtlb_flush_dynamic\n");
-
- /* loop over live entries and release them from the table */
- for (liveindex = 0; liveindex < vtlb->dynamic; liveindex++)
- if (vtlb->live[liveindex] != 0)
- {
- offs_t tableindex = vtlb->live[liveindex] - 1;
- vtlb->table[tableindex] = 0;
- vtlb->live[liveindex] = 0;
- }
-}
-
-
-/*-------------------------------------------------
- vtlb_flush_address - flush knowledge of a
- particular address from the VTLB
--------------------------------------------------*/
-
-void vtlb_flush_address(vtlb_state *vtlb, offs_t address)
-{
- offs_t tableindex = address >> vtlb->pageshift;
-
- if (PRINTF_TLB)
- printf("vtlb_flush_address %08X\n", address);
-
- /* free the entry in the table; for speed, we leave the entry in the live array */
- vtlb->table[tableindex] = 0;
-}
-
-
-
-/***************************************************************************
- ACCESSORS
-***************************************************************************/
-
-/*-------------------------------------------------
- vtlb_table - return a pointer to the base of
- the linear VTLB lookup table
--------------------------------------------------*/
-
-const vtlb_entry *vtlb_table(vtlb_state *vtlb)
-{
- return &vtlb->table[0];
-}
diff --git a/src/devices/cpu/vtlb.h b/src/devices/cpu/vtlb.h
deleted file mode 100644
index f63a0ac50f6..00000000000
--- a/src/devices/cpu/vtlb.h
+++ /dev/null
@@ -1,88 +0,0 @@
-// license:BSD-3-Clause
-// copyright-holders:Aaron Giles
-/***************************************************************************
-
- vtlb.h
-
- Generic virtual TLB implementation.
-
-***************************************************************************/
-
-#pragma once
-
-#ifndef __VTLB_H__
-#define __VTLB_H__
-
-
-
-/***************************************************************************
- CONSTANTS
-***************************************************************************/
-
-#define VTLB_FLAGS_MASK 0xff
-
-#define VTLB_READ_ALLOWED 0x01 /* (1 << TRANSLATE_READ) */
-#define VTLB_WRITE_ALLOWED 0x02 /* (1 << TRANSLATE_WRITE) */
-#define VTLB_FETCH_ALLOWED 0x04 /* (1 << TRANSLATE_FETCH) */
-#define VTLB_FLAG_VALID 0x08
-#define VTLB_USER_READ_ALLOWED 0x10 /* (1 << TRANSLATE_READ_USER) */
-#define VTLB_USER_WRITE_ALLOWED 0x20 /* (1 << TRANSLATE_WRITE_USER) */
-#define VTLB_USER_FETCH_ALLOWED 0x40 /* (1 << TRANSLATE_FETCH_USER) */
-#define VTLB_FLAG_FIXED 0x80
-
-
-
-/***************************************************************************
- TYPE DEFINITIONS
-***************************************************************************/
-
-/* represents an entry in the VTLB */
-typedef UINT32 vtlb_entry;
-
-
-/* opaque structure describing VTLB state */
-struct vtlb_state;
-
-
-
-/***************************************************************************
- FUNCTION PROTOTYPES
-***************************************************************************/
-
-
-/* ----- initialization/teardown ----- */
-
-/* allocate a new VTLB for the given CPU */
-vtlb_state *vtlb_alloc(device_t *cpu, address_spacenum space, int fixed_entries, int dynamic_entries);
-
-/* free an allocated VTLB */
-void vtlb_free(vtlb_state *vtlb);
-
-
-/* ----- filling ----- */
-
-/* called by the CPU core in response to an unmapped access */
-int vtlb_fill(vtlb_state *vtlb, offs_t address, int intention);
-
-/* load a fixed VTLB entry */
-void vtlb_load(vtlb_state *vtlb, int entrynum, int numpages, offs_t address, vtlb_entry value);
-
-/* load a dynamic VTLB entry */
-void vtlb_dynload(vtlb_state *vtlb, UINT32 index, offs_t address, vtlb_entry value);
-
-/* ----- flushing ----- */
-
-/* flush all knowledge from the dynamic part of the VTLB */
-void vtlb_flush_dynamic(vtlb_state *vtlb);
-
-/* flush knowledge of a particular address from the VTLB */
-void vtlb_flush_address(vtlb_state *vtlb, offs_t address);
-
-
-/* ----- accessors ----- */
-
-/* return a pointer to the base of the linear VTLB lookup table */
-const vtlb_entry *vtlb_table(vtlb_state *vtlb);
-
-
-#endif /* __VTLB_H__ */
diff --git a/src/devices/cpu/z80/z80.cpp b/src/devices/cpu/z80/z80.cpp
index 345ea4334bf..055e98ecdd7 100644
--- a/src/devices/cpu/z80/z80.cpp
+++ b/src/devices/cpu/z80/z80.cpp
@@ -113,6 +113,10 @@
#define VERBOSE 0
+/* Debug purpose: set to 1 to test /WAIT pin behaviour.
+ */
+#define STALLS_ON_WAIT_ASSERT 0
+
/* On an NMOS Z80, if LD A,I or LD A,R is interrupted, P/V flag gets reset,
even if IFF2 was set before this instruction. This issue was fixed on
the CMOS Z80, so until knowing (most) Z80 types on hardware, it's disabled */
@@ -3478,6 +3482,7 @@ void nsc800_device::device_reset()
****************************************************************************/
void z80_device::execute_run()
{
+
/* check for NMIs on the way in; they can only be set externally */
/* via timers, and can't be dynamically enabled, so it is safe */
/* to just check here */
@@ -3518,7 +3523,24 @@ void z80_device::execute_run()
PRVPC = PCD;
debugger_instruction_hook(this, PCD);
m_r++;
+#if STALLS_ON_WAIT_ASSERT
+ static int test_cycles;
+
+ if(m_wait_state == ASSERT_LINE)
+ {
+ m_icount --;
+ test_cycles ++;
+ }
+ else
+ {
+ if(test_cycles != 0)
+ printf("stalls for %d z80 cycles\n",test_cycles);
+ test_cycles = 0;
+ EXEC(op,rop());
+ }
+#else
EXEC(op,rop());
+#endif
} while (m_icount > 0);
}
diff --git a/src/devices/imagedev/floppy.cpp b/src/devices/imagedev/floppy.cpp
index 2d6eb4d5460..cb7e184f811 100644
--- a/src/devices/imagedev/floppy.cpp
+++ b/src/devices/imagedev/floppy.cpp
@@ -933,7 +933,7 @@ UINT32 floppy_image_device::get_variant() const
ui_menu *floppy_image_device::get_selection_menu(running_machine &machine, render_container *container)
{
- return auto_alloc_clear(machine, <ui_menu_control_floppy_image>(machine, container, this));
+ return global_alloc_clear<ui_menu_control_floppy_image>(machine, container, this);
}
ui_menu_control_floppy_image::ui_menu_control_floppy_image(running_machine &machine, render_container *container, device_image_interface *_image) : ui_menu_control_device_image(machine, container, _image)
@@ -1010,7 +1010,7 @@ void ui_menu_control_floppy_image::hook_load(std::string filename, bool softlist
can_in_place = false;
}
submenu_result = -1;
- ui_menu::stack_push(auto_alloc_clear(machine(), <ui_menu_select_rw>(machine(), container, can_in_place, &submenu_result)));
+ ui_menu::stack_push(global_alloc_clear<ui_menu_select_rw>(machine(), container, can_in_place, &submenu_result));
state = SELECT_RW;
}
@@ -1036,7 +1036,7 @@ void ui_menu_control_floppy_image::handle()
format_array[total_usable++] = i;
}
submenu_result = -1;
- ui_menu::stack_push(auto_alloc_clear(machine(), <ui_menu_select_format>(machine(), container, format_array, ext_match, total_usable, &submenu_result)));
+ ui_menu::stack_push(global_alloc_clear<ui_menu_select_format>(machine(), container, format_array, ext_match, total_usable, &submenu_result));
state = SELECT_FORMAT;
break;
@@ -1073,7 +1073,7 @@ void ui_menu_control_floppy_image::handle()
break;
case ui_menu_select_rw::WRITE_OTHER:
- ui_menu::stack_push(auto_alloc_clear(machine(), <ui_menu_file_create>(machine(), container, image, current_directory, current_file, &create_ok)));
+ ui_menu::stack_push(global_alloc_clear<ui_menu_file_create>(machine(), container, image, current_directory, current_file, &create_ok));
state = CHECK_CREATE;
break;
diff --git a/src/devices/imagedev/floppy.h b/src/devices/imagedev/floppy.h
index 4d50d74234d..32ec1382801 100644
--- a/src/devices/imagedev/floppy.h
+++ b/src/devices/imagedev/floppy.h
@@ -36,6 +36,9 @@
#define FLOPPY_FORMATS_MEMBER(_member) \
const floppy_format_type _member [] = {
+#define FLOPPY_FORMATS_END0 \
+ , \
+ NULL };
#define FLOPPY_FORMATS_END \
, \
FLOPPY_D88_FORMAT, \
@@ -46,8 +49,8 @@
FLOPPY_MFM_FORMAT, \
FLOPPY_TD0_FORMAT, \
FLOPPY_CQM_FORMAT, \
- FLOPPY_DSK_FORMAT, \
- NULL };
+ FLOPPY_DSK_FORMAT \
+ FLOPPY_FORMATS_END0
class floppy_sound_device;
diff --git a/src/devices/machine/atahle.h b/src/devices/machine/atahle.h
index 8c83625c1d4..e26ad86b92c 100644
--- a/src/devices/machine/atahle.h
+++ b/src/devices/machine/atahle.h
@@ -126,6 +126,7 @@ protected:
IDE_COMMAND_IDENTIFY_DEVICE = 0xec,
IDE_COMMAND_SET_FEATURES = 0xef,
IDE_COMMAND_SECURITY_UNLOCK = 0xf2,
+ IDE_COMMAND_SECURITY_DISABLE_PASSWORD = 0xf6,
IDE_COMMAND_READ_NATIVE_MAX_ADDRESS = 0xf8,
IDE_COMMAND_SET_MAX = 0xf9
};
diff --git a/src/devices/machine/atapihle.cpp b/src/devices/machine/atapihle.cpp
index dcbc00fb26c..1216e7a91ad 100644
--- a/src/devices/machine/atapihle.cpp
+++ b/src/devices/machine/atapihle.cpp
@@ -97,9 +97,13 @@ void atapi_hle_device::fill_buffer()
{
m_buffer_size = m_data_size;
}
- else if (m_buffer_size & 1)
+ else
{
- m_buffer_size--;
+ if (m_buffer_size & 1)
+ m_buffer_size--;
+ // if it is transferring less than the remaining data, make sure the size is a multiple of the sector size, otherwise data will be lost
+ if (m_buffer_size % m_sector_bytes)
+ m_buffer_size = m_buffer_size - (m_buffer_size % m_sector_bytes);
}
m_cylinder_low = m_buffer_size & 0xff;
diff --git a/src/devices/machine/i8271.cpp b/src/devices/machine/i8271.cpp
index cd8c0faf5bf..dfd098a5f82 100644
--- a/src/devices/machine/i8271.cpp
+++ b/src/devices/machine/i8271.cpp
@@ -88,6 +88,7 @@ void i8271_device::soft_reset()
flopi[i].live = false;
flopi[i].ready = get_ready(i);
}
+ hdl_cb(false);
set_irq(false);
set_drq(false);
command_pos = 0;
@@ -887,6 +888,7 @@ void i8271_device::command_end(floppy_info &fi, bool data_completion)
{
logerror("%s: command done (%s) - %02x\n", tag(), data_completion ? "data" : "seek", rr);
fi.main_state = fi.sub_state = IDLE;
+ idle_icnt = 0;
main_phase = PHASE_RESULT;
set_irq(true);
}
@@ -981,6 +983,7 @@ void i8271_device::seek_continue(floppy_info &fi)
void i8271_device::read_data_start(floppy_info &fi)
{
fi.main_state = READ_DATA;
+ hdl_cb(true);
fi.sub_state = HEAD_LOAD_DONE;
logerror("%s: command read%s data%s cmd=%02x crn=(%d, %d, %d) len=%02x rate=%d\n",
@@ -1010,6 +1013,7 @@ void i8271_device::read_data_start(floppy_info &fi)
void i8271_device::scan_start(floppy_info &fi)
{
fi.main_state = SCAN_DATA;
+ hdl_cb(true);
fi.sub_state = HEAD_LOAD_DONE;
logerror("%s: command scan%s data%s cmd=%02x crn=(%d, %d, %d) len=%02x rate=%d\n",
@@ -1041,6 +1045,7 @@ void i8271_device::scan_start(floppy_info &fi)
void i8271_device::verify_data_start(floppy_info &fi)
{
fi.main_state = VERIFY_DATA;
+ hdl_cb(true);
fi.sub_state = HEAD_LOAD_DONE;
logerror("%s: command verify%s data%s cmd=%02x crn=(%d, %d, %d) len=%02x rate=%d\n",
@@ -1098,6 +1103,7 @@ void i8271_device::read_data_continue(floppy_info &fi)
return;
case SEEK_WAIT_STEP_TIME_DONE:
+ hdl_cb(true);
do {
if(fi.pcn > command[1])
fi.pcn--;
@@ -1181,7 +1187,9 @@ void i8271_device::read_data_continue(floppy_info &fi)
void i8271_device::write_data_start(floppy_info &fi)
{
fi.main_state = WRITE_DATA;
+ hdl_cb(true);
fi.sub_state = HEAD_LOAD_DONE;
+
logerror("%s: command write%s data%s cmd=%02x crn=(%d, %d, %d) len=%02x rate=%d\n",
tag(),
command[0] & 0x04 ? " deleted" : "",
@@ -1238,6 +1246,7 @@ void i8271_device::write_data_continue(floppy_info &fi)
return;
case SEEK_WAIT_STEP_TIME_DONE:
+ hdl_cb(true);
do {
if(fi.pcn > command[1])
fi.pcn--;
@@ -1311,6 +1320,7 @@ int i8271_device::calc_sector_size(UINT8 size)
void i8271_device::format_track_start(floppy_info &fi)
{
fi.main_state = FORMAT_TRACK;
+ hdl_cb(true);
fi.sub_state = HEAD_LOAD_DONE;
logerror("%s: command format track c=%02x n=%02x sc=%02x gap3=%02x gap5=%02x gap1=%02x\n",
@@ -1364,6 +1374,7 @@ void i8271_device::format_track_continue(floppy_info &fi)
return;
case SEEK_WAIT_STEP_TIME_DONE:
+ hdl_cb(true);
do {
if(fi.pcn > command[1])
fi.pcn--;
@@ -1402,6 +1413,7 @@ void i8271_device::format_track_continue(floppy_info &fi)
void i8271_device::read_id_start(floppy_info &fi)
{
fi.main_state = READ_ID;
+ hdl_cb(true);
fi.sub_state = HEAD_LOAD_DONE;
logerror("%s: command read id, rate=%d\n",
@@ -1457,6 +1469,7 @@ void i8271_device::read_id_continue(floppy_info &fi)
return;
case SEEK_WAIT_STEP_TIME_DONE:
+ hdl_cb(true);
do {
if(fi.pcn > command[1])
fi.pcn--;
@@ -1553,6 +1566,13 @@ void i8271_device::index_callback(floppy_image_device *floppy, int state)
continue;
}
+ if (fi.main_state == IDLE) {
+ idle_icnt++;
+ if (icnt != 0x0f && idle_icnt >= icnt) {
+ hdl_cb(false);
+ }
+ }
+
switch(fi.sub_state) {
case IDLE:
case SEEK_MOVE:
diff --git a/src/devices/machine/i8271.h b/src/devices/machine/i8271.h
index e4409bed389..5c63393a43f 100644
--- a/src/devices/machine/i8271.h
+++ b/src/devices/machine/i8271.h
@@ -215,6 +215,7 @@ private:
UINT8 srate, hset, icnt, hload;
int sector_size;
int cur_rate;
+ int idle_icnt;
static std::string tts(attotime t);
std::string ttsn();
diff --git a/src/devices/machine/idehd.cpp b/src/devices/machine/idehd.cpp
index c563ff3c6e6..c17e4258fbc 100644
--- a/src/devices/machine/idehd.cpp
+++ b/src/devices/machine/idehd.cpp
@@ -506,6 +506,10 @@ void ata_mass_storage_device::process_buffer()
if (m_master_password_enable || m_user_password_enable)
security_error();
}
+ else if (m_command == IDE_COMMAND_SECURITY_DISABLE_PASSWORD)
+ {
+ LOGPRINT(("IDE Done unimplemented SECURITY_DISABLE_PASSWORD command\n"));
+ }
else
{
set_dasp(ASSERT_LINE);
@@ -685,6 +689,15 @@ void ata_mass_storage_device::process_command()
set_irq(ASSERT_LINE);
break;
+ case IDE_COMMAND_SECURITY_DISABLE_PASSWORD:
+ LOGPRINT(("IDE Unimplemented SECURITY DISABLE PASSWORD command\n"));
+
+ /* mark the buffer ready */
+ m_status |= IDE_STATUS_DRQ;
+
+ set_irq(ASSERT_LINE);
+ break;
+
case IDE_COMMAND_IDENTIFY_DEVICE:
LOGPRINT(("IDE Identify device\n"));
diff --git a/src/devices/machine/intelfsh.cpp b/src/devices/machine/intelfsh.cpp
index 9fdc04609c1..54f9d4f722f 100644
--- a/src/devices/machine/intelfsh.cpp
+++ b/src/devices/machine/intelfsh.cpp
@@ -103,6 +103,7 @@ const device_type SST_39VF020 = &device_creator<sst_39vf020_device>;
const device_type SHARP_LH28F400 = &device_creator<sharp_lh28f400_device>;
const device_type INTEL_E28F008SA = &device_creator<intel_e28f008sa_device>;
const device_type INTEL_TE28F160 = &device_creator<intel_te28f160_device>;
+const device_type INTEL_TE28F320 = &device_creator<intel_te28f320_device>;
const device_type SHARP_UNK128MBIT = &device_creator<sharp_unk128mbit_device>;
const device_type INTEL_28F320J3D = &device_creator<intel_28f320j3d_device>;
const device_type INTEL_28F320J5 = &device_creator<intel_28f320j5_device>;
@@ -327,6 +328,13 @@ intelfsh_device::intelfsh_device(const machine_config &mconfig, device_type type
m_device_id = 0xd0;
map = ADDRESS_MAP_NAME( memory_map16_16Mb );
break;
+ case FLASH_INTEL_TE28F320:
+ m_bits = 16;
+ m_size = 0x400000;
+ m_maker_id = MFG_INTEL;
+ m_device_id = 0x8896;
+ map = ADDRESS_MAP_NAME( memory_map16_32Mb );
+ break;
case FLASH_SHARP_UNK128MBIT:
m_bits = 16;
m_size = 0x800000;
@@ -460,6 +468,9 @@ sharp_lh28f400_device::sharp_lh28f400_device(const machine_config &mconfig, cons
intel_te28f160_device::intel_te28f160_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock)
: intelfsh16_device(mconfig, INTEL_TE28F160, "Intel TE28F160 Flash", tag, owner, clock, FLASH_INTEL_TE28F160, "intel_te28f160", __FILE__) { }
+intel_te28f320_device::intel_te28f320_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock)
+ : intelfsh16_device(mconfig, INTEL_TE28F320, "Intel TE28F320 Flash", tag, owner, clock, FLASH_INTEL_TE28F320, "intel_te28f320", __FILE__) { }
+
intel_e28f400b_device::intel_e28f400b_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock)
: intelfsh16_device(mconfig, INTEL_E28F400B, "Intel E28F400B Flash", tag, owner, clock, FLASH_INTEL_E28F400B, "intel_e28f400b", __FILE__) { }
diff --git a/src/devices/machine/intelfsh.h b/src/devices/machine/intelfsh.h
index c52856e0cef..437d8c946c2 100644
--- a/src/devices/machine/intelfsh.h
+++ b/src/devices/machine/intelfsh.h
@@ -78,6 +78,9 @@
#define MCFG_INTEL_TE28F160_ADD(_tag) \
MCFG_DEVICE_ADD(_tag, INTEL_TE28F160, 0)
+#define MCFG_INTEL_TE28F320_ADD(_tag) \
+ MCFG_DEVICE_ADD(_tag, INTEL_TE28F320, 0)
+
#define MCFG_SHARP_UNK128MBIT_ADD(_tag) \
MCFG_DEVICE_ADD(_tag, SHARP_UNK128MBIT, 0)
@@ -135,6 +138,7 @@ public:
FLASH_SHARP_LH28F400 = 0x1000,
FLASH_INTEL_E28F400B,
FLASH_INTEL_TE28F160,
+ FLASH_INTEL_TE28F320,
FLASH_SHARP_UNK128MBIT,
FLASH_INTEL_28F320J3D,
FLASH_INTEL_28F320J5,
@@ -362,6 +366,12 @@ public:
intel_te28f160_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock);
};
+class intel_te28f320_device : public intelfsh16_device
+{
+public:
+ intel_te28f320_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock);
+};
+
class intel_e28f400b_device : public intelfsh16_device
{
public:
@@ -419,6 +429,7 @@ extern const device_type SST_39VF020;
extern const device_type SHARP_LH28F400;
extern const device_type INTEL_E28F008SA;
extern const device_type INTEL_TE28F160;
+extern const device_type INTEL_TE28F320;
extern const device_type SHARP_UNK128MBIT;
extern const device_type INTEL_28F320J3D;
extern const device_type INTEL_28F320J5;
diff --git a/src/devices/machine/k033906.cpp b/src/devices/machine/k033906.cpp
index bd32fef29f1..d9953d2864f 100644
--- a/src/devices/machine/k033906.cpp
+++ b/src/devices/machine/k033906.cpp
@@ -33,7 +33,7 @@ k033906_device::k033906_device(const machine_config &mconfig, const char *tag, d
void k033906_device::device_start()
{
- m_voodoo = machine().device(m_voodoo_tag);
+ m_voodoo = (voodoo_device*)machine().device(m_voodoo_tag);
m_reg_set = 0;
@@ -95,7 +95,7 @@ void k033906_device::reg_w(int reg, UINT32 data)
case 0x10: // initEnable
{
- voodoo_set_init_enable(m_voodoo, data);
+ m_voodoo->voodoo_set_init_enable(data);
break;
}
diff --git a/src/devices/machine/k033906.h b/src/devices/machine/k033906.h
index aa2c685df99..438cc5796ab 100644
--- a/src/devices/machine/k033906.h
+++ b/src/devices/machine/k033906.h
@@ -12,7 +12,7 @@
#define __K033906_H__
#include "emu.h"
-
+#include "video/voodoo.h"
/***************************************************************************
@@ -58,7 +58,7 @@ private:
int m_reg_set; // 1 = access reg / 0 = access ram
const char *m_voodoo_tag;
- device_t *m_voodoo;
+ voodoo_device *m_voodoo;
UINT32 m_reg[256];
UINT32 m_ram[32768];
diff --git a/src/devices/machine/rp5h01.cpp b/src/devices/machine/rp5h01.cpp
index 40964570129..4a3138225a7 100644
--- a/src/devices/machine/rp5h01.cpp
+++ b/src/devices/machine/rp5h01.cpp
@@ -34,6 +34,7 @@ const device_type RP5H01 = &device_creator<rp5h01_device>;
rp5h01_device::rp5h01_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock)
: device_t(mconfig, RP5H01, "RP5H01 6/7-bit Counter", tag, owner, clock, "rp5h01", __FILE__)
+ , m_rom_ptr(*this, DEVICE_SELF)
{
}
@@ -53,11 +54,15 @@ void rp5h01_device::device_config_complete()
void rp5h01_device::device_start()
{
- m_data = region()->base();
- if (m_data == nullptr)
+ if (m_rom_ptr == nullptr)
+ {
m_data = initial_data;
+ }
else
+ {
+ m_data = m_rom_ptr;
assert(region()->bytes() == 0x10);
+ }
/* register for state saving */
save_item(NAME(m_counter));
diff --git a/src/devices/machine/rp5h01.h b/src/devices/machine/rp5h01.h
index 9a72c6384de..0585b5ddf55 100644
--- a/src/devices/machine/rp5h01.h
+++ b/src/devices/machine/rp5h01.h
@@ -52,6 +52,7 @@ protected:
virtual void device_config_complete() override;
virtual void device_start() override;
virtual void device_reset() override;
+
private:
// internal state
int m_counter;
@@ -60,6 +61,7 @@ private:
int m_old_reset; /* reset pin state (level-triggered) */
int m_old_clock; /* clock pin state (level-triggered) */
const UINT8 *m_data;
+ optional_region_ptr<UINT8> m_rom_ptr;
};
extern const device_type RP5H01;
diff --git a/src/devices/machine/timekpr.cpp b/src/devices/machine/timekpr.cpp
index ccd849ef21d..7b602c896c6 100644
--- a/src/devices/machine/timekpr.cpp
+++ b/src/devices/machine/timekpr.cpp
@@ -120,8 +120,9 @@ static int counter_from_ram( UINT8 *data, int offset )
//-------------------------------------------------
timekeeper_device::timekeeper_device(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, UINT32 clock, const char *shortname, const char *source)
- : device_t(mconfig, type, name, tag, owner, clock, shortname, source),
- device_nvram_interface(mconfig, *this)
+ : device_t(mconfig, type, name, tag, owner, clock, shortname, source)
+ , device_nvram_interface(mconfig, *this)
+ , m_default_data(*this, DEVICE_SELF)
{
}
@@ -230,10 +231,9 @@ void timekeeper_device::device_start()
m_century = make_bcd( systime.local_time.year / 100 );
m_data.resize( m_size );
- m_default_data = region()->base();
if (m_default_data)
{
- assert( region()->bytes() == m_size );
+ assert(m_default_data.bytes() == m_size);
}
save_item( NAME(m_control) );
diff --git a/src/devices/machine/timekpr.h b/src/devices/machine/timekpr.h
index 4cb11f6ea86..84c969b076d 100644
--- a/src/devices/machine/timekpr.h
+++ b/src/devices/machine/timekpr.h
@@ -88,7 +88,7 @@ private:
UINT8 m_century;
dynamic_buffer m_data;
- UINT8 *m_default_data;
+ optional_region_ptr<UINT8> m_default_data;
protected:
int m_size;
diff --git a/src/devices/machine/tms6100.cpp b/src/devices/machine/tms6100.cpp
index 67eb9d17a14..7242ca1312d 100644
--- a/src/devices/machine/tms6100.cpp
+++ b/src/devices/machine/tms6100.cpp
@@ -3,7 +3,7 @@
/**********************************************************************************************
Texas Instruments TMS6100 Voice Synthesis Memory (VSM)
-
+
References:
- TMS 6100 Voice Synthesis Memory Data Manual
- TMS 6125 Voice Synthesis Memory Data Manual
@@ -147,11 +147,11 @@ WRITE_LINE_MEMBER(tms6100_device::clk_w)
UINT8 m = m_m1 << 1 | m_m0;
if ((m & ~m_prev_m & 1) || (m & ~m_prev_m & 2))
handle_command(m);
-
+
m_prev_m = m;
}
}
-
+
m_clk = (state) ? 1 : 0;
}
@@ -190,7 +190,7 @@ void tms6100_device::handle_command(UINT8 cmd)
// or shift(rotate) right
m_sa = (m_sa >> 1) | (m_sa << 7 & 0x80);
}
-
+
// output to DATA pin(s)
if (!m_4bit_mode)
{
@@ -205,16 +205,16 @@ void tms6100_device::handle_command(UINT8 cmd)
else
m_data = m_sa & 0xf;
}
-
+
// 8 bits in 1-bit mode, otherwise 2 nybbles
m_count = (m_count + 1) & (m_4bit_mode ? 1 : 7);
-
+
// TB8
if (m_count == 0)
m_address++; // CS bits too
}
break;
-
+
// LA: load address
case M_LA:
if (m_prev_cmd == M_TB)
@@ -232,7 +232,7 @@ void tms6100_device::handle_command(UINT8 cmd)
const UINT8 shift = 4 * (m_count+1);
m_address = (m_address & ~(0xf << shift)) | (m_add << shift);
}
-
+
m_count = (m_count + 1) & 7;
}
break;
@@ -251,10 +251,10 @@ void tms6100_device::handle_command(UINT8 cmd)
m_address = (m_address & ~0x3fff) | (rb & 0x3fff);
}
break;
-
+
default:
break;
}
-
+
m_prev_cmd = cmd;
}
diff --git a/src/devices/machine/tms6100.h b/src/devices/machine/tms6100.h
index cd802bab7d2..ae295dec4b2 100644
--- a/src/devices/machine/tms6100.h
+++ b/src/devices/machine/tms6100.h
@@ -56,7 +56,7 @@
DATA/ADD8 | 6 11 | CS NC | 6 11 | /CS
NC | 7 10 | M1 NC | 7 10 | M1
M0 | 8 9 | VSS M0 | 8 9 | VSS
- +---------+ +---------+
+ +---------+ +---------+
Mitsubishi M58819S EPROM Interface:
@@ -112,14 +112,14 @@ public:
protected:
// device-level overrides
virtual void device_start() override;
-
+
void handle_command(UINT8 cmd);
// internal state
required_region_ptr<UINT8> m_rom;
bool m_reverse_bits;
bool m_4bit_mode;
-
+
UINT32 m_rommask;
UINT32 m_address; // internal address + chipselect
UINT8 m_sa; // romdata shift register
diff --git a/src/devices/machine/wd_fdc.cpp b/src/devices/machine/wd_fdc.cpp
index 32cda7b663c..15744f5f7bc 100644
--- a/src/devices/machine/wd_fdc.cpp
+++ b/src/devices/machine/wd_fdc.cpp
@@ -360,6 +360,9 @@ void wd_fdc_t::seek_continue()
case SEEK_DONE:
if (TRACE_STATE) logerror("%s: SEEK_DONE\n", tag());
status |= S_HLD;
+ hld = true;
+ if (!hld_cb.isnull())
+ hld_cb(hld);
if(command & 0x04) {
if(!is_ready()) {
status |= S_RNF;
diff --git a/src/devices/sound/2610intf.cpp b/src/devices/sound/2610intf.cpp
index 9111b03502c..4cc7f303795 100644
--- a/src/devices/sound/2610intf.cpp
+++ b/src/devices/sound/2610intf.cpp
@@ -16,6 +16,9 @@
#include "2610intf.h"
#include "fm.h"
+const char* YM2610_TAG = "ymsnd";
+const char* YM2610_DELTAT_TAG = "ymsnd.deltat";
+
static void psg_set_clock(void *param, int clock)
{
ym2610_device *ym2610 = (ym2610_device *) param;
@@ -143,9 +146,6 @@ void ym2610_device::device_start()
ay8910_device::device_start();
int rate = clock()/72;
- void *pcmbufa,*pcmbufb;
- int pcmsizea,pcmsizeb;
- std::string name(tag());
m_irq_handler.resolve();
@@ -155,16 +155,19 @@ void ym2610_device::device_start()
/* stream system initialize */
m_stream = machine().sound().stream_alloc(*this,0,2,rate, stream_update_delegate(FUNC(ym2610_device::stream_generate),this));
+
/* setup adpcm buffers */
- pcmbufa = region()->base();
- pcmsizea = region()->bytes();
- name.append(".deltat");
- pcmbufb = (void *)(machine().root_device().memregion(name.c_str())->base());
- pcmsizeb = machine().root_device().memregion(name.c_str())->bytes();
- if (pcmbufb == nullptr || pcmsizeb == 0)
+ void *pcmbufa = region()->base();
+ int pcmsizea = region()->bytes();
+
+ std::string name = tag() + std::string(".deltat");
+ memory_region *deltat_region = machine().root_device().memregion(name.c_str());
+ void *pcmbufb = pcmbufa;
+ int pcmsizeb = pcmsizea;
+ if (deltat_region != nullptr && deltat_region->base() != nullptr && deltat_region->bytes() != 0)
{
- pcmbufb = pcmbufa;
- pcmsizeb = pcmsizea;
+ pcmbufb = deltat_region->base();
+ pcmsizeb = deltat_region->bytes();
}
/**** initialize YM2610 ****/
@@ -207,14 +210,14 @@ WRITE8_MEMBER( ym2610_device::write )
const device_type YM2610 = &device_creator<ym2610_device>;
ym2610_device::ym2610_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock)
- : ay8910_device(mconfig, YM2610, "YM2610", tag, owner, clock, PSG_TYPE_YM, 1, 0, "ym2610", __FILE__),
- m_irq_handler(*this)
+ : ay8910_device(mconfig, YM2610, "YM2610", tag, owner, clock, PSG_TYPE_YM, 1, 0, "ym2610", __FILE__)
+ , m_irq_handler(*this)
{
}
ym2610_device::ym2610_device(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, UINT32 clock, const char *shortname, const char *source)
- : ay8910_device(mconfig, type, name, tag, owner, clock, PSG_TYPE_YM, 1, 0, shortname, source),
- m_irq_handler(*this)
+ : ay8910_device(mconfig, type, name, tag, owner, clock, PSG_TYPE_YM, 1, 0, shortname, source)
+ , m_irq_handler(*this)
{
}
diff --git a/src/devices/sound/2610intf.h b/src/devices/sound/2610intf.h
index c4409e46f21..dcd0ef01787 100644
--- a/src/devices/sound/2610intf.h
+++ b/src/devices/sound/2610intf.h
@@ -29,6 +29,9 @@ public:
void _timer_handler(int c,int count,int clock);
void _ym2610_update_request();
+ static const char* YM2610_TAG;
+ static const char* YM2610_DELTAT_TAG;
+
protected:
// device-level overrides
virtual void device_start() override;
diff --git a/src/devices/sound/aica.cpp b/src/devices/sound/aica.cpp
index 524ef93d6bd..0442f5811ff 100644
--- a/src/devices/sound/aica.cpp
+++ b/src/devices/sound/aica.cpp
@@ -414,17 +414,15 @@ void aica_device::Init()
m_MidiOutR=m_MidiOutW=0;
// get AICA RAM
+ if (m_ram_region != NULL)
{
- m_AICARAM = region()->base();
- if (m_AICARAM)
- {
- m_AICARAM += m_roffset;
- m_AICARAM_LENGTH = region()->bytes();
- m_RAM_MASK = m_AICARAM_LENGTH-1;
- m_RAM_MASK16 = m_RAM_MASK & 0x7ffffe;
- m_DSP.AICARAM = (UINT16 *)m_AICARAM;
- m_DSP.AICARAM_LENGTH = m_AICARAM_LENGTH/2;
- }
+ m_AICARAM = m_ram_region->base();
+ m_AICARAM += m_roffset;
+ m_AICARAM_LENGTH = m_ram_region->bytes();
+ m_RAM_MASK = m_AICARAM_LENGTH-1;
+ m_RAM_MASK16 = m_RAM_MASK & 0x7ffffe;
+ m_DSP.AICARAM = (UINT16 *)m_AICARAM;
+ m_DSP.AICARAM_LENGTH = m_AICARAM_LENGTH/2;
}
m_timerA = machine().scheduler().timer_alloc(timer_expired_delegate(FUNC(aica_device::timerA_cb), this));
@@ -1473,6 +1471,7 @@ aica_device::aica_device(const machine_config &mconfig, const char *tag, device_
m_roffset(0),
m_irq_cb(*this),
m_main_irq_cb(*this),
+ m_ram_region(*this, this->tag()),
m_IRQL(0),
m_IRQR(0),
m_BUFPTR(0),
diff --git a/src/devices/sound/aica.h b/src/devices/sound/aica.h
index 0494ecafad6..a67143c3871 100644
--- a/src/devices/sound/aica.h
+++ b/src/devices/sound/aica.h
@@ -143,6 +143,7 @@ private:
int m_roffset; /* offset in the region */
devcb_write_line m_irq_cb;
devcb_write_line m_main_irq_cb;
+ optional_memory_region m_ram_region;
union
{
diff --git a/src/devices/sound/beep.cpp b/src/devices/sound/beep.cpp
index e5c9362dc9f..7997b590a86 100644
--- a/src/devices/sound/beep.cpp
+++ b/src/devices/sound/beep.cpp
@@ -36,9 +36,7 @@ beep_device::beep_device(const machine_config &mconfig, const char *tag, device_
device_sound_interface(mconfig, *this),
m_stream(nullptr),
m_enable(0),
- m_frequency(0),
- m_incr(0),
- m_signal(0)
+ m_frequency(clock)
{
}
@@ -51,9 +49,13 @@ void beep_device::device_start()
{
m_stream = stream_alloc(0, 1, BEEP_RATE);
m_enable = 0;
- m_frequency = 3250;
- m_incr = 0;
m_signal = 0x07fff;
+
+ // register for savestates
+ save_item(NAME(m_enable));
+ save_item(NAME(m_frequency));
+ save_item(NAME(m_incr));
+ save_item(NAME(m_signal));
}
@@ -102,9 +104,10 @@ void beep_device::sound_stream_update(sound_stream &stream, stream_sample_t **in
// changing state to on from off will restart tone
//-------------------------------------------------
-void beep_device::set_state(int on)
+WRITE_LINE_MEMBER(beep_device::set_state)
{
/* only update if new state is not the same as old state */
+ int on = (state) ? 1 : 0;
if (m_enable == on)
return;
@@ -117,12 +120,11 @@ void beep_device::set_state(int on)
}
-
//-------------------------------------------------
// setting new frequency starts from beginning
//-------------------------------------------------
-void beep_device::set_frequency(int frequency)
+void beep_device::set_clock(UINT32 frequency)
{
if (m_frequency == frequency)
return;
@@ -132,16 +134,3 @@ void beep_device::set_frequency(int frequency)
m_signal = 0x07fff;
m_incr = 0;
}
-
-
-
-//-------------------------------------------------
-// change a channel volume
-//-------------------------------------------------
-
-void beep_device::set_volume(int volume)
-{
- m_stream->update();
- volume = 100 * volume / 7;
- set_output_gain(0, volume);
-}
diff --git a/src/devices/sound/beep.h b/src/devices/sound/beep.h
index 68fddb54a29..0970e6f4a93 100644
--- a/src/devices/sound/beep.h
+++ b/src/devices/sound/beep.h
@@ -26,9 +26,8 @@ protected:
virtual void sound_stream_update(sound_stream &stream, stream_sample_t **inputs, stream_sample_t **outputs, int samples) override;
public:
- void set_state(int on);
- void set_frequency(int frequency);
- void set_volume(int volume);
+ DECLARE_WRITE_LINE_MEMBER(set_state); // enable/disable sound output
+ void set_clock(UINT32 frequency); // output frequency
private:
sound_stream *m_stream; /* stream number */
diff --git a/src/devices/sound/c140.cpp b/src/devices/sound/c140.cpp
index daaa33cd47e..350ba6f047b 100644
--- a/src/devices/sound/c140.cpp
+++ b/src/devices/sound/c140.cpp
@@ -87,15 +87,16 @@ static inline int limit(INT32 in)
//-------------------------------------------------
c140_device::c140_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock)
- : device_t(mconfig, C140, "C140", tag, owner, clock, "c140", __FILE__),
- device_sound_interface(mconfig, *this),
- m_sample_rate(0),
- m_stream(nullptr),
- m_banking_type(0),
- m_mixer_buffer_left(nullptr),
- m_mixer_buffer_right(nullptr),
- m_baserate(0),
- m_pRom(nullptr)
+ : device_t(mconfig, C140, "C140", tag, owner, clock, "c140", __FILE__)
+ , device_sound_interface(mconfig, *this)
+ , m_sample_rate(0)
+ , m_stream(nullptr)
+ , m_banking_type(0)
+ , m_mixer_buffer_left(nullptr)
+ , m_mixer_buffer_right(nullptr)
+ , m_baserate(0)
+ , m_rom_ptr(*this, DEVICE_SELF)
+ , m_pRom(nullptr)
{
memset(m_REG, 0, sizeof(UINT8)*0x200);
memset(m_pcmtbl, 0, sizeof(INT16)*8);
@@ -108,27 +109,28 @@ c140_device::c140_device(const machine_config &mconfig, const char *tag, device_
void c140_device::device_start()
{
- m_sample_rate=m_baserate=clock();
+ m_sample_rate = m_baserate = clock();
m_stream = stream_alloc(0, 2, m_sample_rate);
- m_pRom = (INT8 *)region()->base();
+ if (m_rom_ptr != NULL)
+ {
+ m_pRom = m_rom_ptr;
+ }
/* make decompress pcm table */ //2000.06.26 CAB
+ INT32 segbase = 0;
+ for(int i = 0; i < 8; i++)
{
- int i;
- INT32 segbase=0;
- for(i=0;i<8;i++)
- {
- m_pcmtbl[i]=segbase; //segment base value
- segbase += 16<<i;
- }
+ m_pcmtbl[i]=segbase; //segment base value
+ segbase += 16<<i;
}
memset(m_REG,0,sizeof(m_REG));
+
+ for(int i = 0; i < C140_MAX_VOICE; i++)
{
- int i;
- for(i=0;i<C140_MAX_VOICE;i++) init_voice( &m_voi[i] );
+ init_voice(&m_voi[i]);
}
/* allocate a pair of buffers to mix into - 1 second's worth should be more than enough */
diff --git a/src/devices/sound/c140.h b/src/devices/sound/c140.h
index d94818e9df7..a7662daae1e 100644
--- a/src/devices/sound/c140.h
+++ b/src/devices/sound/c140.h
@@ -110,6 +110,7 @@ private:
std::unique_ptr<INT16[]> m_mixer_buffer_right;
int m_baserate;
+ optional_region_ptr<INT8> m_rom_ptr;
INT8 *m_pRom;
UINT8 m_REG[0x200];
diff --git a/src/devices/sound/es5506.cpp b/src/devices/sound/es5506.cpp
index 282ee217e15..7a27d7575f7 100644
--- a/src/devices/sound/es5506.cpp
+++ b/src/devices/sound/es5506.cpp
@@ -195,10 +195,39 @@ void es5506_device::device_start()
m_stream = machine().sound().stream_alloc(*this, 0, 2 * channels, clock() / (16*32));
/* initialize the regions */
- m_region_base[0] = m_region0 ? (UINT16 *)machine().root_device().memregion(m_region0)->base() : nullptr;
- m_region_base[1] = m_region1 ? (UINT16 *)machine().root_device().memregion(m_region1)->base() : nullptr;
- m_region_base[2] = m_region2 ? (UINT16 *)machine().root_device().memregion(m_region2)->base() : nullptr;
- m_region_base[3] = m_region3 ? (UINT16 *)machine().root_device().memregion(m_region3)->base() : nullptr;
+ m_region_base[0] = m_region_base[1] = m_region_base[2] = m_region_base[3] = nullptr;
+ if (m_region0)
+ {
+ memory_region *region0 = machine().root_device().memregion(m_region0);
+ if (region0 != nullptr)
+ {
+ m_region_base[0] = (UINT16 *)region0->base();
+ }
+ }
+ if (m_region1)
+ {
+ memory_region *region1 = machine().root_device().memregion(m_region1);
+ if (region1 != nullptr)
+ {
+ m_region_base[1] = (UINT16 *)region1->base();
+ }
+ }
+ if (m_region2)
+ {
+ memory_region *region2 = machine().root_device().memregion(m_region2);
+ if (region2 != nullptr)
+ {
+ m_region_base[2] = (UINT16 *)region2->base();
+ }
+ }
+ if (m_region3)
+ {
+ memory_region *region3 = machine().root_device().memregion(m_region3);
+ if (region3 != nullptr)
+ {
+ m_region_base[3] = (UINT16 *)region3->base();
+ }
+ }
/* initialize the rest of the structure */
m_master_clock = clock();
@@ -337,8 +366,16 @@ void es5505_device::device_start()
m_stream = machine().sound().stream_alloc(*this, 0, 2 * channels, clock() / (16*32));
/* initialize the regions */
- m_region_base[0] = m_region0 ? (UINT16 *)machine().root_device().memregion(m_region0)->base() : nullptr;
- m_region_base[1] = m_region1 ? (UINT16 *)machine().root_device().memregion(m_region1)->base() : nullptr;
+ if (m_region0)
+ {
+ memory_region* region = machine().root_device().memregion(m_region0);
+ m_region_base[0] = region ? reinterpret_cast<UINT16 *>(region->base()) : nullptr;
+ }
+ if (m_region1)
+ {
+ memory_region* region = machine().root_device().memregion(m_region1);
+ m_region_base[1] = region ? reinterpret_cast<UINT16 *>(region->base()) : nullptr;
+ }
/* initialize the rest of the structure */
m_master_clock = clock();
diff --git a/src/devices/sound/fm.cpp b/src/devices/sound/fm.cpp
index 26888590c03..ee74c47fd97 100644
--- a/src/devices/sound/fm.cpp
+++ b/src/devices/sound/fm.cpp
@@ -1,4 +1,4 @@
-// license:???
+// license:GPL-2.0+
// copyright-holders:Jarek Burczynski,Tatsuyuki Satoh
#define YM2610B_WARNING
@@ -3686,14 +3686,21 @@ void ym2610_reset_chip(void *chip)
F2610->pcmbuf = (const UINT8 *)dev->machine().root_device().memregion(name.c_str())->base();
F2610->pcm_size = dev->machine().root_device().memregion(name.c_str())->bytes();
name.append(".deltat");
- F2610->deltaT.memory = (UINT8 *)dev->machine().root_device().memregion(name.c_str())->base();
+ memory_region *deltat_region = dev->machine().root_device().memregion(name.c_str());
+ F2610->deltaT.memory = nullptr;
+ if (deltat_region != nullptr)
+ {
+ F2610->deltaT.memory = (UINT8 *)dev->machine().root_device().memregion(name.c_str())->base();
+ }
if(F2610->deltaT.memory == nullptr)
{
F2610->deltaT.memory = (UINT8*)F2610->pcmbuf;
F2610->deltaT.memory_size = F2610->pcm_size;
}
else
+ {
F2610->deltaT.memory_size = dev->machine().root_device().memregion(name.c_str())->bytes();
+ }
/* Reset Prescaler */
OPNSetPres( OPN, 6*24, 6*24, 4*2); /* OPN 1/6 , SSG 1/4 */
diff --git a/src/devices/sound/fm.h b/src/devices/sound/fm.h
index 9d6042ac768..11b76eff45b 100644
--- a/src/devices/sound/fm.h
+++ b/src/devices/sound/fm.h
@@ -1,4 +1,4 @@
-// license:???
+// license:GPL-2.0+
// copyright-holders:Jarek Burczynski,Tatsuyuki Satoh
/*
File: fm.h -- header file for software emulation for FM sound generator
diff --git a/src/devices/sound/fm2612.cpp b/src/devices/sound/fm2612.cpp
index f8a35534417..af75298a59a 100644
--- a/src/devices/sound/fm2612.cpp
+++ b/src/devices/sound/fm2612.cpp
@@ -1,4 +1,4 @@
-// license:???
+// license:GPL-2.0+
// copyright-holders:Jarek Burczynski,Tatsuyuki Satoh
/*
**
diff --git a/src/devices/sound/fmopl.cpp b/src/devices/sound/fmopl.cpp
index 920d65e59ed..9f3a92a4517 100644
--- a/src/devices/sound/fmopl.cpp
+++ b/src/devices/sound/fmopl.cpp
@@ -1,4 +1,4 @@
-// license:???
+// license:GPL-2.0+
// copyright-holders:Jarek Burczynski,Tatsuyuki Satoh
/*
**
diff --git a/src/devices/sound/fmopl.h b/src/devices/sound/fmopl.h
index 7dccb50001e..1769cf57789 100644
--- a/src/devices/sound/fmopl.h
+++ b/src/devices/sound/fmopl.h
@@ -1,4 +1,4 @@
-// license:???
+// license:GPL-2.0+
// copyright-holders:Jarek Burczynski,Tatsuyuki Satoh
#pragma once
diff --git a/src/devices/sound/k056800.cpp b/src/devices/sound/k056800.cpp
index beac3a67b73..908a0b2d42c 100644
--- a/src/devices/sound/k056800.cpp
+++ b/src/devices/sound/k056800.cpp
@@ -108,11 +108,11 @@ WRITE8_MEMBER( k056800_device::host_w )
case 7:
// Sound interrupt
- m_int_pending = true;
-
if (m_int_enabled)
+ {
+ m_int_pending = true;
m_int_handler(ASSERT_LINE);
-
+ }
break;
}
}
diff --git a/src/devices/sound/msm5232.cpp b/src/devices/sound/msm5232.cpp
index 5d3f2ddf8b0..5411dc29558 100644
--- a/src/devices/sound/msm5232.cpp
+++ b/src/devices/sound/msm5232.cpp
@@ -1,4 +1,4 @@
-// license:???
+// license:GPL-2.0+
// copyright-holders:Jarek Burczynski, Hiromitsu Shioya
#include "emu.h"
diff --git a/src/devices/sound/msm5232.h b/src/devices/sound/msm5232.h
index 5edb00b6cff..e861aa2725e 100644
--- a/src/devices/sound/msm5232.h
+++ b/src/devices/sound/msm5232.h
@@ -1,4 +1,4 @@
-// license:???
+// license:GPL-2.0+
// copyright-holders:Jarek Burczynski, Hiromitsu Shioya
#pragma once
diff --git a/src/devices/sound/namco.cpp b/src/devices/sound/namco.cpp
index 070ae056597..9bddba97783 100644
--- a/src/devices/sound/namco.cpp
+++ b/src/devices/sound/namco.cpp
@@ -36,19 +36,20 @@ const device_type NAMCO_15XX = &device_creator<namco_15xx_device>;
const device_type NAMCO_CUS30 = &device_creator<namco_cus30_device>;
namco_audio_device::namco_audio_device(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, UINT32 clock, const char *shortname, const char *source)
- : device_t(mconfig, type, name, tag, owner, clock, shortname, __FILE__),
- device_sound_interface(mconfig, *this),
- m_last_channel(nullptr),
- m_soundregs(nullptr),
- m_wavedata(nullptr),
- m_wave_size(0),
- m_sound_enable(0),
- m_stream(nullptr),
- m_namco_clock(0),
- m_sample_rate(0),
- m_f_fracbits(0),
- m_voices(0),
- m_stereo(0)
+ : device_t(mconfig, type, name, tag, owner, clock, shortname, __FILE__)
+ , device_sound_interface(mconfig, *this)
+ , m_wave_ptr(*this, DEVICE_SELF)
+ , m_last_channel(nullptr)
+ , m_soundregs(nullptr)
+ , m_wavedata(nullptr)
+ , m_wave_size(0)
+ , m_sound_enable(0)
+ , m_stream(nullptr)
+ , m_namco_clock(0)
+ , m_sample_rate(0)
+ , m_f_fracbits(0)
+ , m_voices(0)
+ , m_stereo(0)
{
}
@@ -95,7 +96,7 @@ void namco_audio_device::device_start()
logerror("Namco: freq fractional bits = %d: internal freq = %d, output freq = %d\n", m_f_fracbits, m_namco_clock, m_sample_rate);
/* build the waveform table */
- build_decoded_waveform(region()->base());
+ build_decoded_waveform(m_wave_ptr);
/* get stream channels */
if (m_stereo)
@@ -109,7 +110,7 @@ void namco_audio_device::device_start()
/* register with the save state system */
save_pointer(NAME(m_soundregs), 0x400);
- if (region() == nullptr)
+ if (m_wave_ptr == nullptr)
save_pointer(NAME(m_wavedata), 0x400);
save_item(NAME(m_voices));
diff --git a/src/devices/sound/namco.h b/src/devices/sound/namco.h
index e79484e4f4a..4bd09c5d3a1 100644
--- a/src/devices/sound/namco.h
+++ b/src/devices/sound/namco.h
@@ -53,6 +53,9 @@ protected:
void update_namco_waveform(int offset, UINT8 data);
UINT32 namco_update_one(stream_sample_t *buffer, int length, const INT16 *wave, UINT32 counter, UINT32 freq);
+ /* waveform region */
+ optional_region_ptr<UINT8> m_wave_ptr;
+
/* data about the sound system */
sound_channel m_channel_list[MAX_VOICES];
sound_channel *m_last_channel;
diff --git a/src/devices/sound/rf5c400.cpp b/src/devices/sound/rf5c400.cpp
index ad381817ccf..6eaa2245ca9 100644
--- a/src/devices/sound/rf5c400.cpp
+++ b/src/devices/sound/rf5c400.cpp
@@ -354,6 +354,11 @@ READ16_MEMBER( rf5c400_device::rf5c400_r )
{
return 0;
}
+
+ case 0x13: // memory read
+ {
+ return m_rom[m_ext_mem_address];
+ }
}
return 0;
@@ -413,17 +418,32 @@ WRITE16_MEMBER( rf5c400_device::rf5c400_w )
case 0x08: // relative to env attack (channel no)
case 0x09: // relative to env attack (0x0c00/ 0x1c00)
- case 0x11: // ? counter for 0x13?
+ case 0x11: // memory r/w address, bits 15 - 0
+ {
+ m_ext_mem_address &= ~0xffff;
+ m_ext_mem_address |= data;
+ break;
+ }
+ case 0x12: // memory r/w address, bits 23 - 16
{
+ m_ext_mem_address &= 0xffff;
+ m_ext_mem_address |= (UINT32)(data) << 16;
break;
}
- case 0x13: // ? bujutsu writes sample data here
+ case 0x13: // memory write data
{
+ m_ext_mem_data = data;
break;
}
- case 0x14: // ? related to 0x11/0x13 ?
+ case 0x14: // memory write
+ {
+ if ((data & 0x3) == 3)
+ {
+ m_rom[m_ext_mem_address] = m_ext_mem_data;
+ }
break;
+ }
case 0x21: // reverb(character).w
case 0x32: // reverb(pre-lpf).w
diff --git a/src/devices/sound/rf5c400.h b/src/devices/sound/rf5c400.h
index fd04b788f93..bc30301d9cd 100644
--- a/src/devices/sound/rf5c400.h
+++ b/src/devices/sound/rf5c400.h
@@ -109,6 +109,9 @@ private:
double m_env_rr_table[0x9f];
rf5c400_channel m_channels[32];
+
+ UINT32 m_ext_mem_address;
+ UINT16 m_ext_mem_data;
};
extern const device_type RF5C400;
diff --git a/src/devices/sound/s14001a.cpp b/src/devices/sound/s14001a.cpp
index a238a23cd43..627d3214b10 100644
--- a/src/devices/sound/s14001a.cpp
+++ b/src/devices/sound/s14001a.cpp
@@ -1,36 +1,20 @@
// license:BSD-3-Clause
-// copyright-holders:Jonathan Gevaryahu,R. Belmont,Zsolt Vasvari
+// copyright-holders:Ed Bernard, Jonathan Gevaryahu, hap
+// thanks-to:Kevin Horton
/*
-
- TSI S14001A emulator v1.32
- By Jonathan Gevaryahu ("Lord Nightmare") with help from Kevin Horton ("kevtris")
- MAME conversion and integration by R. Belmont
- Clock Frequency control updated by Zsolt Vasvari
- Other fixes by AtariAce
-
- Copyright (C) 2006-2013 Jonathan Gevaryahu aka Lord Nightmare
-
- Version history:
- 0.8 initial version - LN
- 0.9 MAME conversion, glue code added - R. Belmont
- 1.0 partly fixed stream update - LN (0.111u4)
- 1.01 fixed clipping problem - LN (0.111u5)
- 1.1 add VSU-1000 features, fully fixed stream update by fixing word latching - LN (0.111u6)
- 1.11 fix signedness of output, pre-multiply, fixes clicking on VSU-1000 volume change - LN (0.111u7)
- 1.20 supports setting the clock freq directly - reset is done by external hardware,
- the chip has no reset line ZV (0.122)
- 1.30 move main dac to 4 bits only with no extension (4->16 bit range extension is now done by output).
- Added a somewhat better, but still not perfect, filtering system - LN
- 1.31 fix a minor bug with the dac range. wolfpack clips again, and I'm almost sure its an encoding error on the original speech - LN (0.125u9)
- 1.31a Add chip pinout and other notes - LN (0.128u4)
- 1.31b slight update to notes to clarify input bus stuff, mostly finish the state map in the comments - LN
- 1.31c remove usage of deprecat lib - AtariAce (0.128u5)
- 1.32 fix the squealing noise using a define; it isn't accurate to the chip exactly, but there are other issues which need to be fixed too. see TODO. - LN (0.136u2)
-
- TODO:
- * increase accuracy of internal S14001A 'filter' for both driven and undriven cycles (its not terribly inaccurate for undriven cycles, but the dc sliding of driven cycles is not emulated)
- * add option for and attach Frank P.'s emulation of the Analog external filter from the vsu-1000 using the discrete core. (with the direction of independent sound core and analog stuff, this should actually be attached in the main berzerk/frenzy driver and not here)
- * fix the local and global silence stuff to not force the dac to a specific level, but cease doing deltas (i.e. force all deltas to 0) after the last sample; this should fix the clipping in wolfpack and in the fidelity games in mess.
+ SSi TSI S14001A speech IC emulator
+ aka CRC: Custom ROM Controller, designed in 1975, first usage in 1976 on TSI Speech+ calculator
+ Originally written for MAME by Jonathan Gevaryahu(Lord Nightmare) 2006-2013,
+ replaced with near-complete rewrite by Ed Bernard in 2016
+
+ TODO:
+ - nothing at the moment?
+
+ Further reading:
+ - http://www.vintagecalculators.com/html/speech-.html
+ - http://www.vintagecalculators.com/html/development_of_the_tsi_speech-.html
+ - http://www.vintagecalculators.com/html/speech-_state_machine.html
+ - https://archive.org/stream/pdfy-QPCSwTWiFz1u9WU_/david_djvu.txt
*/
/* Chip Pinout:
@@ -99,7 +83,7 @@ and the TEST pins may do so too.
START is pulled high when a word is to be said and the word number is on the
word select/speech address input lines. The Canon 'Canola' uses a separate 'rom
strobe' signal independent of the chip to either enable or clock the speech rom.
-Its likely that they did this to be able to force the speech chip to stop talking,
+It's likely that they did this to be able to force the speech chip to stop talking,
which is normally impossible. The later 'version 3' TSI speech board as featured in
an advertisement in the John Cater book probably also has this feature, in addition
to external speech rom banking.
@@ -110,9 +94,7 @@ on 'invalid' cycles they act as a 4 bit input to drive the dac.
Because it requires -10V to operate, the chip manufacturing process must be PMOS.
-/-----------\
-> Operation <
-\-----------/
+* Operation:
Put the 6-bit address of the word to be said onto the C0-C5 word select/speech
address bus lines. Next, clock the START line low-high-low. As long as the START
line is held high, the first address byte of the first word will be read repeatedly
@@ -121,531 +103,475 @@ and off as it normally does during speech). Once START has gone low-high-low, th
/BUSY line will go low until 3 clocks after the chip is done speaking.
*/
-
-/* state map:
-
- * state machine 1: odd/even clock state
- * on even clocks, audio output is floating, /romen is low so rom data bus is driven, input is latched?
- * on odd clocks, audio output is driven, /romen is high, state machine 2 is clocked
- * *****
- * state machine 2: decoder state
- * NOTE: holding the start line high forces the state machine 2 state to go to or remain in state 1!
- * state 0(Idle): Idle (no sample rom bus activity, output at 0), next state is 0(Idle)
-
- * state 1(GetHiWord):
- * grab byte at (wordinput<<1) -> register_WH
- * reset output DAC accumulator to 0x8 <- ???
- * reset OldValHi to 1
- * reset OldValLo to 0
- * next state is 2(GetLoWord) UNLESS the PLAY line is still high, in which case the state remains at 1
-
- * state 2(GetLoWord):
- * grab byte at (wordinput<<1)+1 -> register_WL
- * next state is 3(GetHiPhon)
-
- * state 3(GetHiPhon):
- * grab byte at ((register_WH<<8) + (register_WL))>>4 -> phoneaddress
- * next state is 4(GetLoPhon)
-
- * state 4(GetLoPhon):
- * grab byte at (((register_WH<<8) + (register_WL))>>4)+1 -> playparams
- * set phonepos register to 0
- * set oddphone register to 0
- * next state is 5(PlayForward1)
- * playparams:
- * 7 6 5 4 3 2 1 0
- * G G = LastPhone
- * B B = PlayMode
- * Y Y = Silenceflag
- * S S S S = Length count load value
- * R R R = Repeat count reload value (upon carry/overflow of 3 bits)
- * load the repeat counter with the bits 'R R 0'
- * load the length counter with the bits 'S S S 0'
- * NOTE: though only three bits of the length counter load value are controllable, there is a fourth lower bit which is assumed 0 on start and controls the direction of playback, i.e. forwards or backwards within a phone.
- * NOTE: though only two bits of the repeat counter reload value are controllable, there is a third bit which is loaded to 0 on phoneme start, and this hidden low-order bit of the counter itself is what controls whether the output is forced to silence in mirrored mode. the 'carry' from the highest bit of the 3 bit counter is what increments the address pointer for pointing to the next phoneme in mirrored mode
-
-
- * shift register diagram:
- * F E D C B A 9 8 7 6 5 4 3 2 1 0
- * <new byte here>
- * C C C = Current delta sample read point
- * O O O = Old delta sample read point
- * I *OPTIMIZED OUT* the shift register by making use of the fact that the device reads each rom byte 4 times
-
- * state 5(PlayForward1):
- * grab byte at (((phoneaddress<<8)+(oddphone*8))+(phonepos>>2)) -> PlayRegister high end, bits F to 8
- * if Playmode is mirrored, set OldValHi and OldValLo to 1 and 0 respectively, otherwise leave them with whatever was in them before.
- * Put OldValHi in bit 7 of PlayRegister
- * Put OldValLo in bit 6 of PlayRegister
- * Get new OldValHi from bit 9
- * Get new OldValLo from bit 8
- * feed current delta (bits 9 and 8) and olddelta (bits 7 and 6) to delta demodulator table, delta demodulator table applies a delta to the accumulator, accumulator goes to enable/disable latch which Silenceflag enables or disables (forces output to 0x8 on disable), then to DAC to output.
- * next state: state 6(PlayForward2)
-
- * state 6(PlayForward2):
- * grab byte at (((phoneaddress<<8)+oddphone)+(phonepos>>2)) -> PlayRegister bits D to 6.
- * Put OldValHi in bit 7 of PlayRegister\____already done by above operation
- * Put OldValLo in bit 6 of PlayRegister/
- * Get new OldValHi from bit 9
- * Get new OldValLo from bit 8
- * feed current delta (bits 9 and 8) and olddelta (bits 7 and 6) to delta demodulator table, delta demodulator table applies a delta to the accumulator, accumulator goes to enable/disable latch which Silenceflag enables or disables (forces output to 0x8 on disable), then to DAC to output.
- * next state: state 7(PlayForward3)
-
- * state 7(PlayForward3):
- * grab byte at (((phoneaddress<<8)+oddphone)+(phonepos>>2)) -> PlayRegister bits B to 4.
- * Put OldValHi in bit 7 of PlayRegister\____already done by above operation
- * Put OldValLo in bit 6 of PlayRegister/
- * Get new OldValHi from bit 9
- * Get new OldValLo from bit 8
- * feed current delta (bits 9 and 8) and olddelta (bits 7 and 6) to delta demodulator table, delta demodulator table applies a delta to the accumulator, accumulator goes to enable/disable latch which Silenceflag enables or disables (forces output to 0x8 on disable), then to DAC to output.
- * next state: state 8(PlayForward4)
-
- * state 8(PlayForward4):
- * grab byte at (((phoneaddress<<8)+oddphone)+(phonepos>>2)) -> PlayRegister bits 9 to 2.
- * Put OldValHi in bit 7 of PlayRegister\____already done by above operation
- * Put OldValLo in bit 6 of PlayRegister/
- * Get new OldValHi from bit 9
- * Get new OldValLo from bit 8
- * feed current delta (bits 9 and 8) and olddelta (bits 7 and 6) to delta demodulator table, delta demodulator table applies a delta to the accumulator, accumulator goes to enable/disable latch which Silenceflag enables or disables (forces output to 0x8 on disable), then to DAC to output.
- * if offset < 8, increment offset within 8-byte phone
- * if offset = 8: (see PostPhoneme code to understand how this part works, its a bit complicated)
-
- * next state: depends on playparams:
- * if we're in mirrored mode, next will be LoadAndPlayBackward1
- * if we're in nonmirrored mode, next will be PlayForward1
-
- * state 9(LoadAndPlayBackward1)
- * grab byte at (((phoneaddress<<8)+(oddphone*8))+(phonepos>>2)) -> PlayRegister high end, bits F to 8 <- check code on this, I think its backwards here but its correct in the code
- * see code for this, its basically the same as state 8 but with the byte grab mentioned above, and the values fed to the delta demod table are switched
- * state 10(PlayBackward2)
- * see code for this, its basically the same as state 7 but the values fed to the delta demod table are switched
- * state 11(PlayBackward3)
- * see code for this, its basically the same as state 6 but the values fed to the delta demod table are switched
- * state 12(PlayBackward4)
- * see code for this, its basically the same as state 5 but with no byte grab, and the values fed to the delta demod table are switched, and a bit below similar to state 5
- * if offset > -1, decrement offset within 8-byte phone
- * if offset = -1: (see PostPhoneme code to understand how this part works, its a bit complicated)
-*/
-
-/* increment address function:
- * increment repeat counter
- if repeat counter produces a carry, do two things:
- 1. if mirrored mode is ON, increment oddphone. if oddphone carries out (i.e. if it was 1), increment phoneaddress and zero oddphone
- 2. increment lengthcounter. if lengthcounter carries out, we're done this phone.
- * increment output counter
- * if mirrored mode is on, output direction is
- * if mirrored mode is OFF, increment oddphone. if not, don't touch it here. if oddphone was 1 before the increment, increment phoneaddress and set oddphone to 0
- *
- */
-
-#undef ACCURATE_SQUEAL
-
#include "emu.h"
#include "s14001a.h"
+// device definition
+const device_type S14001A = &device_creator<s14001a_device>;
-//#define DEBUGSTATE
+s14001a_device::s14001a_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock)
+ : device_t(mconfig, S14001A, "S14001A", tag, owner, clock, "s14001a", __FILE__),
+ device_sound_interface(mconfig, *this),
+ m_SpeechRom(*this, DEVICE_SELF),
+ m_stream(nullptr),
+ m_bsy_handler(*this),
+ m_ext_read_handler(*this)
+{
+}
-#define SILENCE 0x7 // value output when silent
-#define ALTFLAG 0xFF // value to tell renderer that this frame's output is the average of the 8 prior frames and not directly used.
+//-------------------------------------------------
+// device_start - device-specific startup
+//-------------------------------------------------
-#define LASTSYLLABLE ((m_PlayParams & 0x80)>>7)
-#define MIRRORMODE ((m_PlayParams & 0x40)>>6)
-#define SILENCEFLAG ((m_PlayParams & 0x20)>>5)
-#define LENGTHCOUNT ((m_PlayParams & 0x1C)>>1) // remember: its 4 bits and the bottom bit is always zero!
-#define REPEATCOUNT ((m_PlayParams<<1)&0x6) // remember: its 3 bits and the bottom bit is always zero!
-#define LOCALSILENCESTATE ((m_OutputCounter & 0x2) && (MIRRORMODE)) // 1 when silent output, 0 when DAC output.
+ALLOW_SAVE_TYPE(s14001a_device::states); // allow save_item on a non-fundamental type
-static const INT8 DeltaTable[4][4] =
-{
- { -3, -3, -1, -1, },
- { -1, -1, 0, 0, },
- { 0, 0, 1, 1, },
- { 1, 1, 3, 3 },
-};
-
-#ifdef ACCURATE_SQUEAL
-INT16 s14001a_device::audiofilter() /* rewrite me to better match the real filter! */
+void s14001a_device::device_start()
{
- UINT8 temp1;
- INT16 temp2 = 0;
- /* mean averaging filter! 1/n exponential *would* be somewhat better, but I'm lazy... */
- for (temp1 = 0; temp1 < 8; temp1++) { temp2 += m_filtervals[temp1]; }
- temp2 >>= 3;
- return temp2;
+ m_stream = machine().sound().stream_alloc(*this, 0, 1, clock() ? clock() : machine().sample_rate());
+
+ // resolve callbacks
+ m_ext_read_handler.resolve();
+ m_bsy_handler.resolve();
+
+ // note: zerofill is done already by MAME core
+ ClearStatistics();
+ m_uOutputP1 = m_uOutputP2 = 7;
+
+ // register for savestates
+ save_item(NAME(m_bPhase1));
+ save_item(NAME(m_uStateP1));
+ save_item(NAME(m_uStateP2));
+ save_item(NAME(m_uDAR13To05P1));
+ save_item(NAME(m_uDAR13To05P2));
+ save_item(NAME(m_uDAR04To00P1));
+ save_item(NAME(m_uDAR04To00P2));
+ save_item(NAME(m_uCWARP1));
+ save_item(NAME(m_uCWARP2));
+
+ save_item(NAME(m_bStopP1));
+ save_item(NAME(m_bStopP2));
+ save_item(NAME(m_bVoicedP1));
+ save_item(NAME(m_bVoicedP2));
+ save_item(NAME(m_bSilenceP1));
+ save_item(NAME(m_bSilenceP2));
+ save_item(NAME(m_uLengthP1));
+ save_item(NAME(m_uLengthP2));
+ save_item(NAME(m_uXRepeatP1));
+ save_item(NAME(m_uXRepeatP2));
+ save_item(NAME(m_uDeltaOldP1));
+ save_item(NAME(m_uDeltaOldP2));
+ save_item(NAME(m_uOutputP1));
+
+ save_item(NAME(m_bDAR04To00CarryP2));
+ save_item(NAME(m_bPPQCarryP2));
+ save_item(NAME(m_bRepeatCarryP2));
+ save_item(NAME(m_bLengthCarryP2));
+ save_item(NAME(m_RomAddrP1));
+
+ save_item(NAME(m_uOutputP2));
+ save_item(NAME(m_uRomAddrP2));
+ save_item(NAME(m_bBusyP1));
+ save_item(NAME(m_bStart));
+ save_item(NAME(m_uWord));
+
+ save_item(NAME(m_uNPitchPeriods));
+ save_item(NAME(m_uNVoiced));
+ save_item(NAME(m_uNControlWords));
+ save_item(NAME(m_uPrintLevel));
}
-void s14001a_device::shiftIntoFilter(INT16 inputvalue)
+
+//-------------------------------------------------
+// sound_stream_update - handle a stream update
+//-------------------------------------------------
+
+void s14001a_device::sound_stream_update(sound_stream &stream, stream_sample_t **inputs, stream_sample_t **outputs, int samples)
{
- UINT8 temp1;
- for (temp1 = 7; temp1 > 0; temp1--)
+ for (int i = 0; i < samples; i++)
{
- m_filtervals[temp1] = m_filtervals[(temp1 - 1)];
+ Clock();
+ INT16 sample = m_uOutputP2 - 7; // range -7..8
+ outputs[0][i] = sample * 0xf00;
}
- m_filtervals[0] = inputvalue;
}
-#endif
-void s14001a_device::PostPhoneme() /* figure out what the heck to do after playing a phoneme */
+
+/**************************************************************************
+ External interface
+**************************************************************************/
+
+void s14001a_device::force_update()
{
-#ifdef DEBUGSTATE
- fprintf(stderr,"0: entered PostPhoneme\n");
-#endif
- m_RepeatCounter++; // increment the repeat counter
- m_OutputCounter++; // increment the output counter
- if (MIRRORMODE) // if mirroring is enabled
- {
-#ifdef DEBUGSTATE
- fprintf(stderr,"1: MIRRORMODE was on\n");
-#endif
- if (m_RepeatCounter == 0x8) // exceeded 3 bits?
- {
-#ifdef DEBUGSTATE
- fprintf(stderr,"2: RepeatCounter was == 8\n");
-#endif
- // reset repeat counter, increment length counter
- // but first check if lowest bit is set
- m_RepeatCounter = REPEATCOUNT; // reload repeat counter with reload value
- if (m_LengthCounter & 0x1) // if low bit is 1 (will carry after increment)
- {
-#ifdef DEBUGSTATE
- fprintf(stderr,"3: LengthCounter's low bit was 1\n");
-#endif
- m_PhoneAddress+=8; // go to next phone in this syllable
- }
- m_LengthCounter++;
- if (m_LengthCounter == 0x10) // if Length counter carried out of 4 bits
- {
-#ifdef DEBUGSTATE
- fprintf(stderr,"3: LengthCounter overflowed\n");
-#endif
- m_SyllableAddress += 2; // go to next syllable
- m_nextstate = LASTSYLLABLE ? 13 : 3; // if we're on the last syllable, go to end state, otherwise go and load the next syllable.
- }
- else
- {
-#ifdef DEBUGSTATE
- fprintf(stderr,"3: LengthCounter's low bit wasn't 1 and it didn't overflow\n");
-#endif
- m_PhoneOffset = (m_OutputCounter&1) ? 7 : 0;
- m_nextstate = (m_OutputCounter&1) ? 9 : 5;
- }
- }
- else // repeatcounter did NOT carry out of 3 bits so leave length counter alone
- {
-#ifdef DEBUGSTATE
- fprintf(stderr,"2: RepeatCounter is less than 8 (its actually %d)\n", m_RepeatCounter);
-#endif
- m_PhoneOffset = (m_OutputCounter&1) ? 7 : 0;
- m_nextstate = (m_OutputCounter&1) ? 9 : 5;
- }
- }
- else // if mirroring is NOT enabled
- {
-#ifdef DEBUGSTATE
- fprintf(stderr,"1: MIRRORMODE was off\n");
-#endif
- if (m_RepeatCounter == 0x8) // exceeded 3 bits?
- {
-#ifdef DEBUGSTATE
- fprintf(stderr,"2: RepeatCounter was == 8\n");
-#endif
- // reset repeat counter, increment length counter
- m_RepeatCounter = REPEATCOUNT; // reload repeat counter with reload value
- m_LengthCounter++;
- if (m_LengthCounter == 0x10) // if Length counter carried out of 4 bits
- {
-#ifdef DEBUGSTATE
- fprintf(stderr,"3: LengthCounter overflowed\n");
-#endif
- m_SyllableAddress += 2; // go to next syllable
- m_nextstate = LASTSYLLABLE ? 13 : 3; // if we're on the last syllable, go to end state, otherwise go and load the next syllable.
-#ifdef DEBUGSTATE
- fprintf(stderr,"nextstate is now %d\n", m_nextstate); // see line below, same reason.
-#endif
- return; // need a return here so we don't hit the 'nextstate = 5' line below
- }
- }
- m_PhoneAddress += 8; // regardless of counters, the phone address always increments in non-mirrored mode
- m_PhoneOffset = 0;
- m_nextstate = 5;
- }
-#ifdef DEBUGSTATE
- fprintf(stderr,"nextstate is now %d\n", m_nextstate);
-#endif
+ m_stream->update();
}
-void s14001a_device::s14001a_clock() /* called once per clock */
+READ_LINE_MEMBER(s14001a_device::romen_r)
{
- UINT8 CurDelta; // Current delta
-
- /* on even clocks, audio output is floating, /romen is low so rom data bus is driven
- * on odd clocks, audio output is driven, /romen is high, state machine 2 is clocked
- */
- m_oddeven = !(m_oddeven); // invert the clock
- if (m_oddeven == 0) // even clock
- {
-#ifdef ACCURATE_SQUEAL
- m_audioout = ALTFLAG; // flag to the renderer that this output should be the average of the last 8
-#endif
- // DIGITAL INPUT *MIGHT* occur on the test pins occurs on this cycle?
- }
- else // odd clock
- {
- // fix dac output between samples. theoretically this might be unnecessary but it would require some messy logic in state 5 on the first sample load.
- // Note: this behavior is NOT accurate, and needs to be fixed. see TODO.
- if (m_GlobalSilenceState || LOCALSILENCESTATE)
- {
- m_DACOutput = SILENCE;
- m_OldDelta = 2;
- }
- m_audioout = (m_GlobalSilenceState || LOCALSILENCESTATE) ? SILENCE : m_DACOutput; // when either silence state is 1, output silence.
- // DIGITAL OUTPUT *might* be driven onto the test pins on this cycle?
- switch(m_machineState) // HUUUUUGE switch statement
- {
- case 0: // idle state
- m_nextstate = 0;
- break;
- case 1: // read starting syllable high byte from word table
- m_SyllableAddress = 0; // clear syllable address
- m_SyllableAddress |= m_SpeechRom[(m_LatchedWord<<1)]<<4;
- m_nextstate = m_resetState ? 1 : 2;
- break;
- case 2: // read starting syllable low byte from word table
- m_SyllableAddress |= m_SpeechRom[(m_LatchedWord<<1)+1]>>4;
- m_nextstate = 3;
- break;
- case 3: // read starting phone address
- m_PhoneAddress = m_SpeechRom[m_SyllableAddress]<<4;
- m_nextstate = 4;
- break;
- case 4: // read playback parameters and prepare for play
- m_PlayParams = m_SpeechRom[m_SyllableAddress+1];
- m_GlobalSilenceState = SILENCEFLAG; // load phone silence flag
- m_LengthCounter = LENGTHCOUNT; // load length counter
- m_RepeatCounter = REPEATCOUNT; // load repeat counter
- m_OutputCounter = 0; // clear output counter and disable mirrored phoneme silence indirectly via LOCALSILENCESTATE
- m_PhoneOffset = 0; // set offset within phone to zero
- m_OldDelta = 0x2; // set old delta to 2 <- is this right?
- m_DACOutput = SILENCE ; // set DAC output to center/silence position
- m_nextstate = 5;
- break;
- case 5: // Play phone forward, shift = 0 (also load)
- CurDelta = (m_SpeechRom[(m_PhoneAddress)+m_PhoneOffset]&0xc0)>>6; // grab current delta from high 2 bits of high nybble
- m_DACOutput += DeltaTable[CurDelta][m_OldDelta]; // send data to forward delta table and add result to accumulator
- m_OldDelta = CurDelta; // Move current delta to old
- m_nextstate = 6;
- break;
- case 6: // Play phone forward, shift = 2
- CurDelta = (m_SpeechRom[(m_PhoneAddress)+m_PhoneOffset]&0x30)>>4; // grab current delta from low 2 bits of high nybble
- m_DACOutput += DeltaTable[CurDelta][m_OldDelta]; // send data to forward delta table and add result to accumulator
- m_OldDelta = CurDelta; // Move current delta to old
- m_nextstate = 7;
- break;
- case 7: // Play phone forward, shift = 4
- CurDelta = (m_SpeechRom[(m_PhoneAddress)+m_PhoneOffset]&0xc)>>2; // grab current delta from high 2 bits of low nybble
- m_DACOutput += DeltaTable[CurDelta][m_OldDelta]; // send data to forward delta table and add result to accumulator
- m_OldDelta = CurDelta; // Move current delta to old
- m_nextstate = 8;
- break;
- case 8: // Play phone forward, shift = 6 (increment address if needed)
- CurDelta = m_SpeechRom[(m_PhoneAddress)+m_PhoneOffset]&0x3; // grab current delta from low 2 bits of low nybble
- m_DACOutput += DeltaTable[CurDelta][m_OldDelta]; // send data to forward delta table and add result to accumulator
- m_OldDelta = CurDelta; // Move current delta to old
- m_PhoneOffset++; // increment phone offset
- if (m_PhoneOffset == 0x8) // if we're now done this phone
- {
- /* call the PostPhoneme Function */
- PostPhoneme();
- }
- else
- {
- m_nextstate = 5;
- }
- break;
- case 9: // Play phone backward, shift = 6 (also load)
- CurDelta = (m_SpeechRom[(m_PhoneAddress)+m_PhoneOffset]&0x3); // grab current delta from low 2 bits of low nybble
- if (m_laststate != 8) // ignore first (bogus) dac change in mirrored backwards mode. observations and the patent show this.
- {
- m_DACOutput -= DeltaTable[m_OldDelta][CurDelta]; // send data to forward delta table and subtract result from accumulator
- }
- m_OldDelta = CurDelta; // Move current delta to old
- m_nextstate = 10;
- break;
- case 10: // Play phone backward, shift = 4
- CurDelta = (m_SpeechRom[(m_PhoneAddress)+m_PhoneOffset]&0xc)>>2; // grab current delta from high 2 bits of low nybble
- m_DACOutput -= DeltaTable[m_OldDelta][CurDelta]; // send data to forward delta table and subtract result from accumulator
- m_OldDelta = CurDelta; // Move current delta to old
- m_nextstate = 11;
- break;
- case 11: // Play phone backward, shift = 2
- CurDelta = (m_SpeechRom[(m_PhoneAddress)+m_PhoneOffset]&0x30)>>4; // grab current delta from low 2 bits of high nybble
- m_DACOutput -= DeltaTable[m_OldDelta][CurDelta]; // send data to forward delta table and subtract result from accumulator
- m_OldDelta = CurDelta; // Move current delta to old
- m_nextstate = 12;
- break;
- case 12: // Play phone backward, shift = 0 (increment address if needed)
- CurDelta = (m_SpeechRom[(m_PhoneAddress)+m_PhoneOffset]&0xc0)>>6; // grab current delta from high 2 bits of high nybble
- m_DACOutput -= DeltaTable[m_OldDelta][CurDelta]; // send data to forward delta table and subtract result from accumulator
- m_OldDelta = CurDelta; // Move current delta to old
- m_PhoneOffset--; // decrement phone offset
- if (m_PhoneOffset == 0xFF) // if we're now done this phone
- {
- /* call the PostPhoneme() function */
- PostPhoneme();
- }
- else
- {
- m_nextstate = 9;
- }
- break;
- case 13: // For those pedantic among us, consume an extra two clocks like the real chip does.
- m_nextstate = 0;
- break;
- }
-#ifdef DEBUGSTATE
- fprintf(stderr, "Machine state is now %d, was %d, PhoneOffset is %d\n", m_nextstate, m_machineState, m_PhoneOffset);
-#endif
- m_laststate = m_machineState;
- m_machineState = m_nextstate;
-
- /* the dac is 4 bits wide. if a delta step forced it outside of 4 bits, mask it back over here */
- m_DACOutput &= 0xF;
- }
+ m_stream->update();
+ return (m_bPhase1) ? 1 : 0;
}
-/**************************************************************************
- MAME glue code
- **************************************************************************/
-
-int s14001a_device::bsy_r()
+READ_LINE_MEMBER(s14001a_device::busy_r)
{
m_stream->update();
-#ifdef DEBUGSTATE
- fprintf(stderr,"busy state checked: %d\n",(m_machineState != 0) );
-#endif
- return (m_machineState != 0);
+ return (m_bBusyP1) ? 1 : 0;
}
-void s14001a_device::reg_w(int data)
+WRITE8_MEMBER(s14001a_device::data_w)
{
m_stream->update();
- m_WordInput = data;
+ m_uWord = data & 0x3f; // C0-C5
}
-void s14001a_device::rst_w(int data)
+WRITE_LINE_MEMBER(s14001a_device::start_w)
{
m_stream->update();
- m_LatchedWord = m_WordInput;
- m_resetState = (data==1);
- m_machineState = m_resetState ? 1 : m_machineState;
+ m_bStart = (state != 0);
+ if (m_bStart) m_uStateP1 = WORDWAIT;
}
-void s14001a_device::set_clock(int clock)
+void s14001a_device::set_clock(UINT32 clock)
{
+ m_stream->update();
m_stream->set_sample_rate(clock);
}
-void s14001a_device::set_volume(int volume)
+
+/**************************************************************************
+ Device emulation
+**************************************************************************/
+
+UINT8 s14001a_device::readmem(UINT16 offset, bool phase)
{
- m_stream->update();
- m_VSU1000_amp = volume;
+ offset &= 0xfff; // 11-bit internal
+ return ((m_ext_read_handler.isnull()) ? m_SpeechRom[offset & (m_SpeechRom.bytes() - 1)] : m_ext_read_handler(offset));
}
-const device_type S14001A = &device_creator<s14001a_device>;
+bool s14001a_device::Clock()
+{
+ // effectively toggles external clock twice, one cycle
+ // internal clock toggles on external clock transition from 0 to 1 so internal clock will always transition here
+ // return false if some emulator problem detected
-s14001a_device::s14001a_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock)
- : device_t(mconfig, S14001A, "S14001A", tag, owner, clock, "s14001a", __FILE__),
- device_sound_interface(mconfig, *this),
- m_SpeechRom(*this, DEVICE_SELF),
- m_stream(nullptr),
- m_WordInput(0),
- m_LatchedWord(0),
- m_SyllableAddress(0),
- m_PhoneAddress(0),
- m_PlayParams(0),
- m_PhoneOffset(0),
- m_LengthCounter(0),
- m_RepeatCounter(0),
- m_OutputCounter(0),
- m_machineState(0),
- m_nextstate(0),
- m_laststate(0),
- m_resetState(0),
- m_oddeven(0),
- m_GlobalSilenceState(1),
- m_OldDelta(0x02),
- m_DACOutput(SILENCE),
- m_audioout(0),
- m_VSU1000_amp(0)
+ // On the actual chip, all register phase 1 values needed to be refreshed from phase 2 values
+ // or else risk losing their state due to charge loss.
+ // But on a computer the values are static.
+ // So to reduce code clutter, phase 1 values are only modified if they are different
+ // from the preceeding phase 2 values.
+
+ if (m_bPhase1)
+ {
+ // transition to phase2
+ m_bPhase1 = false;
+
+ // transfer phase1 variables to phase2
+ m_uStateP2 = m_uStateP1;
+ m_uDAR13To05P2 = m_uDAR13To05P1;
+ m_uDAR04To00P2 = m_uDAR04To00P1;
+ m_uCWARP2 = m_uCWARP1;
+ m_bStopP2 = m_bStopP1;
+ m_bVoicedP2 = m_bVoicedP1;
+ m_bSilenceP2 = m_bSilenceP1;
+ m_uLengthP2 = m_uLengthP1;
+ m_uXRepeatP2 = m_uXRepeatP1;
+ m_uDeltaOldP2 = m_uDeltaOldP1;
+
+ m_uOutputP2 = m_uOutputP1;
+ m_uRomAddrP2 = m_RomAddrP1;
+
+ // setup carries from phase 2 values
+ m_bDAR04To00CarryP2 = m_uDAR04To00P2 == 0x1F;
+ m_bPPQCarryP2 = m_bDAR04To00CarryP2 && ((m_uLengthP2&0x03) == 0x03); // pitch period quarter
+ m_bRepeatCarryP2 = m_bPPQCarryP2 && ((m_uLengthP2&0x0C) == 0x0C);
+ m_bLengthCarryP2 = m_bRepeatCarryP2 && ( m_uLengthP2 == 0x7F);
+
+ return true;
+ }
+ m_bPhase1 = true;
+
+ // logic done during phase 1
+ switch (m_uStateP1)
+ {
+ case IDLE:
+ m_uOutputP1 = 7;
+ if (m_bStart) m_uStateP1 = WORDWAIT;
+
+ if (m_bBusyP1 && !m_bsy_handler.isnull())
+ m_bsy_handler(0);
+ m_bBusyP1 = false;
+ break;
+
+ case WORDWAIT:
+ // the delta address register latches the word number into bits 03 to 08
+ // all other bits forced to 0. 04 to 08 makes a multiply by two.
+ m_uDAR13To05P1 = (m_uWord&0x3C)>>2;
+ m_uDAR04To00P1 = (m_uWord&0x03)<<3;
+ m_RomAddrP1 = (m_uDAR13To05P1<<3)|(m_uDAR04To00P1>>2); // remove lower two bits
+ m_uOutputP1 = 7;
+ if (m_bStart) m_uStateP1 = WORDWAIT;
+ else m_uStateP1 = CWARMSB;
+
+ if (!m_bBusyP1 && !m_bsy_handler.isnull())
+ m_bsy_handler(1);
+ m_bBusyP1 = true;
+ break;
+
+ case CWARMSB:
+ if (m_uPrintLevel >= 1)
+ printf("\n speaking word %02x",m_uWord);
+
+ // use uDAR to load uCWAR 8 msb
+ m_uCWARP1 = readmem(m_uRomAddrP2,m_bPhase1)<<4; // note use of rom address setup in previous state
+ // increment DAR by 4, 2 lsb's count deltas within a byte
+ m_uDAR04To00P1 += 4;
+ if (m_uDAR04To00P1 >= 32) m_uDAR04To00P1 = 0; // emulate 5 bit counter
+ m_RomAddrP1 = (m_uDAR13To05P1<<3)|(m_uDAR04To00P1>>2); // remove lower two bits
+
+ m_uOutputP1 = 7;
+ if (m_bStart) m_uStateP1 = WORDWAIT;
+ else m_uStateP1 = CWARLSB;
+ break;
+
+ case CWARLSB:
+ m_uCWARP1 = m_uCWARP2|(readmem(m_uRomAddrP2,m_bPhase1)>>4); // setup in previous state
+ m_RomAddrP1 = m_uCWARP1;
+
+ m_uOutputP1 = 7;
+ if (m_bStart) m_uStateP1 = WORDWAIT;
+ else m_uStateP1 = DARMSB;
+ break;
+
+ case DARMSB:
+ m_uDAR13To05P1 = readmem(m_uRomAddrP2,m_bPhase1)<<1; // 9 bit counter, 8 MSBs from ROM, lsb zeroed
+ m_uDAR04To00P1 = 0;
+ m_uCWARP1++;
+ m_RomAddrP1 = m_uCWARP1;
+ m_uNControlWords++; // statistics
+
+ m_uOutputP1 = 7;
+ if (m_bStart) m_uStateP1 = WORDWAIT;
+ else m_uStateP1 = CTRLBITS;
+ break;
+
+ case CTRLBITS:
+ m_bStopP1 = readmem(m_uRomAddrP2,m_bPhase1)&0x80? true: false;
+ m_bVoicedP1 = readmem(m_uRomAddrP2,m_bPhase1)&0x40? true: false;
+ m_bSilenceP1 = readmem(m_uRomAddrP2,m_bPhase1)&0x20? true: false;
+ m_uXRepeatP1 = readmem(m_uRomAddrP2,m_bPhase1)&0x03;
+ m_uLengthP1 =(readmem(m_uRomAddrP2,m_bPhase1)&0x1F)<<2; // includes external length and repeat
+ m_uDAR04To00P1 = 0;
+ m_uCWARP1++; // gets ready for next DARMSB
+ m_RomAddrP1 = (m_uDAR13To05P1<<3)|(m_uDAR04To00P1>>2); // remove lower two bits
+
+ m_uOutputP1 = 7;
+ if (m_bStart) m_uStateP1 = WORDWAIT;
+ else m_uStateP1 = PLAY;
+
+ if (m_uPrintLevel >= 2)
+ printf("\n cw %d %d %d %d %d",m_bStopP1,m_bVoicedP1,m_bSilenceP1,m_uLengthP1>>4,m_uXRepeatP1);
+
+ break;
+
+ case PLAY:
+ {
+ // statistics
+ if (m_bPPQCarryP2)
+ {
+ // pitch period end
+ if (m_uPrintLevel >= 3)
+ printf("\n ppe: RomAddr %03x",m_uRomAddrP2);
+
+ m_uNPitchPeriods++;
+ if (m_bVoicedP2) m_uNVoiced++;
+ }
+ // end statistics
+
+ // modify output
+ UINT8 uDeltaP2; // signal line
+ UINT8 uIncrementP2; // signal lines
+ bool bAddP2; // signal line
+ uDeltaP2 = Mux8To2(m_bVoicedP2,
+ m_uLengthP2 & 0x03, // pitch period quater counter
+ m_uDAR04To00P2 & 0x03, // two bit delta address within byte
+ readmem(m_uRomAddrP2,m_bPhase1)
+ );
+ CalculateIncrement(m_bVoicedP2,
+ m_uLengthP2 & 0x03, // pitch period quater counter
+ m_uDAR04To00P2 == 0, // pitch period quarter start
+ uDeltaP2,
+ m_uDeltaOldP2, // input
+ m_uDeltaOldP1, // output
+ uIncrementP2, // output 0, 1, or 3
+ bAddP2 // output
+ );
+ m_uOutputP1 = CalculateOutput(m_bVoicedP2,
+ m_bSilenceP2,
+ m_uLengthP2 & 0x03, // pitch period quater counter
+ m_uDAR04To00P2 == 0, // pitch period quarter start
+ m_uOutputP2, // last output
+ uIncrementP2,
+ bAddP2
+ );
+
+ // advance counters
+ m_uDAR04To00P1++;
+ if (m_bDAR04To00CarryP2) // pitch period quarter end
+ {
+ m_uDAR04To00P1 = 0; // emulate 5 bit counter
+
+ m_uLengthP1++; // lower two bits of length count quarter pitch periods
+ if (m_uLengthP1 >= 0x80)
+ {
+ m_uLengthP1 = 0; // emulate 7 bit counter
+ }
+ }
+
+ if (m_bVoicedP2 && m_bRepeatCarryP2) // repeat complete
+ {
+ m_uLengthP1 &= 0x70; // keep current "length"
+ m_uLengthP1 |= (m_uXRepeatP1<<2); // load repeat from external repeat
+ m_uDAR13To05P1++; // advances ROM address 8 bytes
+ if (m_uDAR13To05P1 >= 0x200) m_uDAR13To05P1 = 0; // emulate 9 bit counter
+ }
+ if (!m_bVoicedP2 && m_bDAR04To00CarryP2)
+ {
+ // unvoiced advances each quarter pitch period
+ // note repeat counter not reloaded for non voiced speech
+ m_uDAR13To05P1++; // advances ROM address 8 bytes
+ if (m_uDAR13To05P1 >= 0x200) m_uDAR13To05P1 = 0; // emulate 9 bit counter
+ }
+
+ // construct m_RomAddrP1
+ m_RomAddrP1 = m_uDAR04To00P1;
+ if (m_bVoicedP2 && m_uLengthP1&0x1) // mirroring
+ {
+ m_RomAddrP1 ^= 0x1f; // count backwards
+ }
+ m_RomAddrP1 = (m_uDAR13To05P1<<3) | m_RomAddrP1>>2;
+
+ // next state
+ if (m_bStart) m_uStateP1 = WORDWAIT;
+ else if (m_bStopP2 && m_bLengthCarryP2) m_uStateP1 = DELAY;
+ else if (m_bLengthCarryP2)
+ {
+ m_uStateP1 = DARMSB;
+ m_RomAddrP1 = m_uCWARP1; // output correct address
+ }
+ else m_uStateP1 = PLAY;
+ break;
+ }
+
+ case DELAY:
+ m_uOutputP1 = 7;
+ if (m_bStart) m_uStateP1 = WORDWAIT;
+ else m_uStateP1 = IDLE;
+ break;
+ }
+
+ return true;
+}
+
+UINT8 s14001a_device::Mux8To2(bool bVoicedP2, UINT8 uPPQtrP2, UINT8 uDeltaAdrP2, UINT8 uRomDataP2)
{
+ // pick two bits of rom data as delta
+
+ if (bVoicedP2 && uPPQtrP2&0x01) // mirroring
+ {
+ uDeltaAdrP2 ^= 0x03; // count backwards
+ }
+ // emulate 8 to 2 mux to obtain delta from byte (bigendian)
+ switch (uDeltaAdrP2)
+ {
+ case 0x00:
+ return (uRomDataP2&0xC0)>>6;
+ case 0x01:
+ return (uRomDataP2&0x30)>>4;
+ case 0x02:
+ return (uRomDataP2&0x0C)>>2;
+ case 0x03:
+ return (uRomDataP2&0x03)>>0;
+ }
+ return 0xFF;
}
-//-------------------------------------------------
-// device_start - device-specific startup
-//-------------------------------------------------
+void s14001a_device::CalculateIncrement(bool bVoicedP2, UINT8 uPPQtrP2, bool bPPQStartP2, UINT8 uDelta, UINT8 uDeltaOldP2, UINT8 &uDeltaOldP1, UINT8 &uIncrementP2, bool &bAddP2)
+{
+ // uPPQtr, pitch period quarter counter; 2 lsb of uLength
+ // bPPStart, start of a pitch period
+ // implemented to mimic silicon (a bit)
-void s14001a_device::device_start()
+ // beginning of a pitch period
+ if (uPPQtrP2 == 0x00 && bPPQStartP2) // note this is done for voiced and unvoiced
+ {
+ uDeltaOldP2 = 0x02;
+ }
+ static const UINT8 uIncrements[4][4] =
+ {
+ // 00 01 10 11
+ { 3, 3, 1, 1,}, // 00
+ { 1, 1, 0, 0,}, // 01
+ { 0, 0, 1, 1,}, // 10
+ { 1, 1, 3, 3 }, // 11
+ };
+
+#define MIRROR (uPPQtrP2&0x01)
+
+ // calculate increment from delta, always done even if silent to update uDeltaOld
+ // in silicon a PLA determined 0,1,3 and add/subtract and passed uDelta to uDeltaOld
+ if (!bVoicedP2 || !MIRROR)
+ {
+ uIncrementP2 = uIncrements[uDelta][uDeltaOldP2];
+ bAddP2 = uDelta >= 0x02;
+ }
+ else
+ {
+ uIncrementP2 = uIncrements[uDeltaOldP2][uDelta];
+ bAddP2 = uDeltaOldP2 < 0x02;
+ }
+ uDeltaOldP1 = uDelta;
+ if (bVoicedP2 && bPPQStartP2 && MIRROR) uIncrementP2 = 0; // no change when first starting mirroring
+}
+
+UINT8 s14001a_device::CalculateOutput(bool bVoiced, bool bXSilence, UINT8 uPPQtr, bool bPPQStart, UINT8 uLOutput, UINT8 uIncrementP2, bool bAddP2)
{
- int i;
+ // implemented to mimic silicon (a bit)
+ // limits output to 0x00 and 0x0f
+ UINT8 uTmp; // used for subtraction
+
+#define SILENCE (uPPQtr&0x02)
- m_GlobalSilenceState = 1;
- m_OldDelta = 0x02;
- m_DACOutput = SILENCE;
+ // determine output
+ if (bXSilence || (bVoiced && SILENCE)) return 7;
- for (i = 0; i < 8; i++)
+ // beginning of a pitch period
+ if (uPPQtr == 0x00 && bPPQStart) // note this is done for voiced and nonvoiced
{
- m_filtervals[i] = SILENCE;
+ uLOutput = 7;
}
- m_stream = machine().sound().stream_alloc(*this, 0, 1, clock() ? clock() : machine().sample_rate());
+ // adder
+ uTmp = uLOutput;
+ if (!bAddP2) uTmp ^= 0x0F; // turns subtraction into addition
- save_item(NAME(m_WordInput));
- save_item(NAME(m_LatchedWord));
- save_item(NAME(m_SyllableAddress));
- save_item(NAME(m_PhoneAddress));
- save_item(NAME(m_PlayParams));
- save_item(NAME(m_PhoneOffset));
- save_item(NAME(m_LengthCounter));
- save_item(NAME(m_RepeatCounter));
- save_item(NAME(m_OutputCounter));
- save_item(NAME(m_machineState));
- save_item(NAME(m_nextstate));
- save_item(NAME(m_laststate));
- save_item(NAME(m_resetState));
- save_item(NAME(m_oddeven));
- save_item(NAME(m_GlobalSilenceState));
- save_item(NAME(m_OldDelta));
- save_item(NAME(m_DACOutput));
- save_item(NAME(m_audioout));
- save_item(NAME(m_filtervals));
- save_item(NAME(m_VSU1000_amp));
-}
+ // add 0, 1, 3; limit at 15
+ uTmp += uIncrementP2;
+ if (uTmp > 15) uTmp = 15;
-//-------------------------------------------------
-// sound_stream_update - handle a stream update
-//-------------------------------------------------
+ if (!bAddP2) uTmp ^= 0x0F; // turns addition back to subtraction
+ return uTmp;
+}
-void s14001a_device::sound_stream_update(sound_stream &stream, stream_sample_t **inputs, stream_sample_t **outputs, int samples)
+void s14001a_device::ClearStatistics()
{
- int i;
+ m_uNPitchPeriods = 0;
+ m_uNVoiced = 0;
+ m_uPrintLevel = 0;
+ m_uNControlWords = 0;
+}
- for (i = 0; i < samples; i++)
- {
- s14001a_clock();
- #ifdef ACCURATE_SQUEAL
- if (m_audioout == ALTFLAG) // input from test pins -> output
- {
- shiftIntoFilter(chip, audiofilter(chip)); // shift over the previous outputs and stick in audioout.
- outputs[0][i] = audiofilter(chip)*m_VSU1000_amp;
- }
- else // normal, dac-driven output
- {
- shiftIntoFilter(chip, ((((INT16)m_audioout)-8)<<9)); // shift over the previous outputs and stick in audioout 4 times. note <<9 instead of <<10, to prevent clipping, and to simulate that the filtered output normally has a somewhat lower amplitude than the driven one.
- #endif
- outputs[0][i] = ((((INT16)m_audioout)-8)<<10)*m_VSU1000_amp;
- #ifdef ACCURATE_SQUEAL
- }
- #endif
- }
+void s14001a_device::GetStatistics(UINT32 &uNPitchPeriods, UINT32 &uNVoiced, UINT32 uNControlWords)
+{
+ uNPitchPeriods = m_uNPitchPeriods;
+ uNVoiced = m_uNVoiced;
+ uNControlWords = m_uNControlWords;
}
diff --git a/src/devices/sound/s14001a.h b/src/devices/sound/s14001a.h
index 9911bd2d758..97025b8c3c1 100644
--- a/src/devices/sound/s14001a.h
+++ b/src/devices/sound/s14001a.h
@@ -1,26 +1,38 @@
// license:BSD-3-Clause
-// copyright-holders:Jonathan Gevaryahu,R. Belmont,Zsolt Vasvari
-#pragma once
+// copyright-holders:Ed Bernard, Jonathan Gevaryahu, hap
+// thanks-to:Kevin Horton
/*
- Copyright (C) 2006-2013 Jonathan Gevaryahu AKA Lord Nightmare
-
+ SSi TSI S14001A speech IC emulator
*/
+
#ifndef __S14001A_H__
#define __S14001A_H__
+#define MCFG_S14001A_BSY_HANDLER(_devcb) \
+ devcb = &s14001a_device::set_bsy_handler(*device, DEVCB_##_devcb);
+
+#define MCFG_S14001A_EXT_READ_HANDLER(_devcb) \
+ devcb = &s14001a_device::set_ext_read_handler(*device, DEVCB_##_devcb);
+
class s14001a_device : public device_t,
- public device_sound_interface
+ public device_sound_interface
{
public:
s14001a_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock);
~s14001a_device() {}
- int bsy_r(); /* read BUSY pin */
- void reg_w(int data); /* write to input latch */
- void rst_w(int data); /* write to RESET pin */
- void set_clock(int clock); /* set VSU-1000 clock */
- void set_volume(int volume); /* set VSU-1000 volume control */
+ // static configuration helpers
+ template<class _Object> static devcb_base &set_bsy_handler(device_t &device, _Object object) { return downcast<s14001a_device &>(device).m_bsy_handler.set_callback(object); }
+ template<class _Object> static devcb_base &set_ext_read_handler(device_t &device, _Object object) { return downcast<s14001a_device &>(device).m_ext_read_handler.set_callback(object); }
+
+ DECLARE_READ_LINE_MEMBER(busy_r); // /BUSY (pin 40)
+ DECLARE_READ_LINE_MEMBER(romen_r); // ROM /EN (pin 9)
+ DECLARE_WRITE_LINE_MEMBER(start_w); // START (pin 10)
+ DECLARE_WRITE8_MEMBER(data_w); // 6-bit word
+
+ void set_clock(UINT32 clock); // set new CLK frequency
+ void force_update(); // update stream, eg. before external ROM bankswitch
protected:
// device-level overrides
@@ -30,33 +42,94 @@ protected:
virtual void sound_stream_update(sound_stream &stream, stream_sample_t **inputs, stream_sample_t **outputs, int samples) override;
private:
- // internal state
required_region_ptr<UINT8> m_SpeechRom;
sound_stream * m_stream;
- UINT8 m_WordInput; // value on word input bus
- UINT8 m_LatchedWord; // value latched from input bus
- UINT16 m_SyllableAddress; // address read from word table
- UINT16 m_PhoneAddress; // starting/current phone address from syllable table
- UINT8 m_PlayParams; // playback parameters from syllable table
- UINT8 m_PhoneOffset; // offset within phone
- UINT8 m_LengthCounter; // 4-bit counter which holds the inverted length of the word in phones, leftshifted by 1
- UINT8 m_RepeatCounter; // 3-bit counter which holds the inverted number of repeats per phone, leftshifted by 1
- UINT8 m_OutputCounter; // 2-bit counter to determine forward/backward and output/silence state.
- UINT8 m_machineState; // chip state machine state
- UINT8 m_nextstate; // chip state machine's new state
- UINT8 m_laststate; // chip state machine's previous state, needed for mirror increment masking
- UINT8 m_resetState; // reset line state
- UINT8 m_oddeven; // odd versus even cycle toggle
- UINT8 m_GlobalSilenceState; // same as above but for silent syllables instead of silent portions of mirrored syllables
- UINT8 m_OldDelta; // 2-bit old delta value
- UINT8 m_DACOutput; // 4-bit DAC Accumulator/output
- UINT8 m_audioout; // filtered audio output
- INT16 m_filtervals[8];
- UINT8 m_VSU1000_amp; // amplitude setting on VSU-1000 board
-
- void PostPhoneme();
- void s14001a_clock();
+ devcb_write_line m_bsy_handler;
+ devcb_read8 m_ext_read_handler;
+
+ UINT8 readmem(UINT16 offset, bool phase);
+ bool Clock(); // called once to toggle external clock twice
+
+ // emulator helper functions
+ UINT8 Mux8To2(bool bVoicedP2, UINT8 uPPQtrP2, UINT8 uDeltaAdrP2, UINT8 uRomDataP2);
+ void CalculateIncrement(bool bVoicedP2, UINT8 uPPQtrP2, bool bPPQStartP2, UINT8 uDeltaP2, UINT8 uDeltaOldP2, UINT8 &uDeltaOldP1, UINT8 &uIncrementP2, bool &bAddP2);
+ UINT8 CalculateOutput(bool bVoicedP2, bool bXSilenceP2, UINT8 uPPQtrP2, bool bPPQStartP2, UINT8 uLOutputP2, UINT8 uIncrementP2, bool bAddP2);
+ void ClearStatistics();
+ void GetStatistics(UINT32 &uNPitchPeriods, UINT32 &uNVoiced, UINT32 uNControlWords);
+ void SetPrintLevel(UINT32 uPrintLevel) { m_uPrintLevel = uPrintLevel; }
+
+ // internal state
+ bool m_bPhase1; // 1 bit internal clock
+
+ enum states
+ {
+ IDLE = 0,
+ WORDWAIT,
+ CWARMSB, // read 8 CWAR MSBs
+ CWARLSB, // read 4 CWAR LSBs from rom d7-d4
+ DARMSB, // read 8 DAR MSBs
+ CTRLBITS, // read Stop, Voiced, Silence, Length, XRepeat
+ PLAY,
+ DELAY
+ };
+
+ // registers
+ states m_uStateP1; // 3 bits
+ states m_uStateP2;
+
+ UINT16 m_uDAR13To05P1; // 9 MSBs of delta address register
+ UINT16 m_uDAR13To05P2; // incrementing uDAR05To13 advances ROM address by 8 bytes
+
+ UINT16 m_uDAR04To00P1; // 5 LSBs of delta address register
+ UINT16 m_uDAR04To00P2; // 3 address ROM, 2 mux 8 bits of data into 2 bit delta
+ // carry indicates end of quarter pitch period (32 cycles)
+
+ UINT16 m_uCWARP1; // 12 bits Control Word Address Register (syllable)
+ UINT16 m_uCWARP2;
+
+ bool m_bStopP1;
+ bool m_bStopP2;
+ bool m_bVoicedP1;
+ bool m_bVoicedP2;
+ bool m_bSilenceP1;
+ bool m_bSilenceP2;
+ UINT8 m_uLengthP1; // 7 bits, upper three loaded from ROM length
+ UINT8 m_uLengthP2; // middle two loaded from ROM repeat and/or uXRepeat
+ // bit 0 indicates mirror in voiced mode
+ // bit 1 indicates internal silence in voiced mode
+ // incremented each pitch period quarter
+
+ UINT8 m_uXRepeatP1; // 2 bits, loaded from ROM repeat
+ UINT8 m_uXRepeatP2;
+ UINT8 m_uDeltaOldP1; // 2 bit old delta
+ UINT8 m_uDeltaOldP2;
+ UINT8 m_uOutputP1; // 4 bits audio output, calculated during phase 1
+
+ // derived signals
+ bool m_bDAR04To00CarryP2;
+ bool m_bPPQCarryP2;
+ bool m_bRepeatCarryP2;
+ bool m_bLengthCarryP2;
+ UINT16 m_RomAddrP1; // rom address
+
+ // output pins
+ UINT8 m_uOutputP2; // output changes on phase2
+ UINT16 m_uRomAddrP2; // address pins change on phase 2
+ bool m_bBusyP1; // busy changes on phase 1
+
+ // input pins
+ bool m_bStart;
+ UINT8 m_uWord; // 6 bit word noumber to be spoken
+
+ // emulator variables
+ // statistics
+ UINT32 m_uNPitchPeriods;
+ UINT32 m_uNVoiced;
+ UINT32 m_uNControlWords;
+
+ // diagnostic output
+ UINT32 m_uPrintLevel;
};
extern const device_type S14001A;
diff --git a/src/devices/sound/scsp.cpp b/src/devices/sound/scsp.cpp
index 7a20010714d..1acf90f2c22 100644
--- a/src/devices/sound/scsp.cpp
+++ b/src/devices/sound/scsp.cpp
@@ -502,25 +502,28 @@ void scsp_device::init()
SCSPDSP_Init(&m_DSP);
m_IrqTimA = m_IrqTimBC = m_IrqMidi = 0;
- m_MidiR=m_MidiW=0;
- m_MidiOutR=m_MidiOutW=0;
+ m_MidiR=m_MidiW = 0;
+ m_MidiOutR = m_MidiOutW = 0;
// get SCSP RAM
if (strcmp(tag(), ":scsp") == 0 || strcmp(tag(), ":scsp1") == 0)
{
- m_Master=1;
+ m_Master = 1;
}
else
{
- m_Master=0;
+ m_Master = 0;
}
- m_SCSPRAM = region()->base();
- if (m_SCSPRAM)
+ memory_region* ram_region = memregion(tag());
+
+ // coolridr.c defines a region for the RAM, stv.c doesn't (uses set_ram_base instead, which seems to be more correct anyway?)
+ if (ram_region != NULL)
{
- m_SCSPRAM_LENGTH = region()->bytes();
+ m_SCSPRAM = ram_region->base();
+ m_SCSPRAM_LENGTH = ram_region->bytes();
m_DSP.SCSPRAM = (UINT16 *)m_SCSPRAM;
- m_DSP.SCSPRAM_LENGTH = m_SCSPRAM_LENGTH/2;
+ m_DSP.SCSPRAM_LENGTH = m_SCSPRAM_LENGTH / 2;
m_SCSPRAM += m_roffset;
}
diff --git a/src/devices/sound/scsp.h b/src/devices/sound/scsp.h
index 981936f37db..d96fd53a3c8 100644
--- a/src/devices/sound/scsp.h
+++ b/src/devices/sound/scsp.h
@@ -45,7 +45,7 @@ struct SCSP_EG_t
struct SCSP_LFO_t
{
- unsigned short phase;
+ UINT16 phase;
UINT32 phase_step;
int *table;
int *scale;
@@ -69,7 +69,7 @@ struct SCSP_SLOT
SCSP_LFO_t PLFO; //Phase LFO
SCSP_LFO_t ALFO; //Amplitude LFO
int slot;
- signed short Prev; //Previous sample (for interpolation)
+ INT16 Prev; //Previous sample (for interpolation)
};
@@ -112,13 +112,13 @@ private:
} m_udata;
SCSP_SLOT m_Slots[32];
- signed short m_RINGBUF[128];
- unsigned char m_BUFPTR;
+ INT16 m_RINGBUF[128];
+ UINT8 m_BUFPTR;
#if FM_DELAY
- signed short m_DELAYBUF[FM_DELAY];
- unsigned char m_DELAYPTR;
+ INT16 m_DELAYBUF[FM_DELAY];
+ UINT8 m_DELAYPTR;
#endif
- unsigned char *m_SCSPRAM;
+ UINT8 *m_SCSPRAM;
UINT32 m_SCSPRAM_LENGTH;
char m_Master;
sound_stream * m_stream;
@@ -167,7 +167,7 @@ private:
int m_length;
- signed short *m_RBUFDST; //this points to where the sample will be stored in the RingBuf
+ INT16 *m_RBUFDST; //this points to where the sample will be stored in the RingBuf
//LFO
int m_PLFO_TRI[256], m_PLFO_SQR[256], m_PLFO_SAW[256], m_PLFO_NOI[256];
@@ -176,7 +176,7 @@ private:
int m_ASCALES[8][256];
void exec_dma(address_space &space); /*state DMA transfer function*/
- unsigned char DecodeSCI(unsigned char irq);
+ UINT8 DecodeSCI(UINT8 irq);
void CheckPendingIRQ();
void MainCheckPendingIRQ(UINT16 irq_type);
void ResetInterrupts();
@@ -191,22 +191,22 @@ private:
UINT32 Step(SCSP_SLOT *slot);
void Compute_LFO(SCSP_SLOT *slot);
void StartSlot(SCSP_SLOT *slot);
- void StopSlot(SCSP_SLOT *slot,int keyoff);
+ void StopSlot(SCSP_SLOT *slot, int keyoff);
void init();
- void UpdateSlotReg(int s,int r);
+ void UpdateSlotReg(int s, int r);
void UpdateReg(address_space &space, int reg);
- void UpdateSlotRegR(int slot,int reg);
+ void UpdateSlotRegR(int slot, int reg);
void UpdateRegR(address_space &space, int reg);
- void w16(address_space &space,unsigned int addr,unsigned short val);
- unsigned short r16(address_space &space, unsigned int addr);
+ void w16(address_space &space, UINT32 addr, UINT16 val);
+ UINT16 r16(address_space &space, UINT32 addr);
inline INT32 UpdateSlot(SCSP_SLOT *slot);
void DoMasterSamples(int nsamples);
//LFO
void LFO_Init();
- signed int PLFO_Step(SCSP_LFO_t *LFO);
- signed int ALFO_Step(SCSP_LFO_t *LFO);
- void LFO_ComputeStep(SCSP_LFO_t *LFO,UINT32 LFOF,UINT32 LFOWS,UINT32 LFOS,int ALFO);
+ INT32 PLFO_Step(SCSP_LFO_t *LFO);
+ INT32 ALFO_Step(SCSP_LFO_t *LFO);
+ void LFO_ComputeStep(SCSP_LFO_t *LFO, UINT32 LFOF, UINT32 LFOWS, UINT32 LFOS, int ALFO);
};
extern const device_type SCSP;
diff --git a/src/devices/sound/sn76477.cpp b/src/devices/sound/sn76477.cpp
index ba31190b5ce..e1fe3f4d3fc 100644
--- a/src/devices/sound/sn76477.cpp
+++ b/src/devices/sound/sn76477.cpp
@@ -76,27 +76,10 @@
#define LOG(n,x) do { if (VERBOSE >= (n)) logerror x; } while (0)
-#define CHECK_CHIP_NUM assert(this != NULL)
-#define CHECK_CHIP_NUM_AND_BOOLEAN CHECK_CHIP_NUM; assert((state & 0x01) == state)
-#define CHECK_CHIP_NUM_AND_POSITIVE CHECK_CHIP_NUM; assert(data >= 0.0)
-#define CHECK_CHIP_NUM_AND_VOLTAGE CHECK_CHIP_NUM; assert((data >= 0.0) && (data <= 5.0))
-#define CHECK_CHIP_NUM_AND_CAP_VOLTAGE CHECK_CHIP_NUM; assert(((data >= 0.0) && (data <= 5.0)) || (data == SN76477_EXTERNAL_VOLTAGE_DISCONNECT))
-
-
-
-/*****************************************************************************
- *
- * Test Mode
- *
- * in test mode, calls by the driver to
- * the input setter functions are ignored.
- * Interface values can be set in device_start
- * to any desired test value.
- * Use the space bar to enable/disable the chip.
- *
- *****************************************************************************/
-
-#define TEST_MODE 0
+#define CHECK_BOOLEAN assert((state & 0x01) == state)
+#define CHECK_POSITIVE assert(data >= 0.0)
+#define CHECK_VOLTAGE assert((data >= 0.0) && (data <= 5.0))
+#define CHECK_CAP_VOLTAGE assert(((data >= 0.0) && (data <= 5.0)) || (data == SN76477_EXTERNAL_VOLTAGE_DISCONNECT))
/*****************************************************************************
*
@@ -233,11 +216,11 @@ void sn76477_device::device_start()
intialize_noise();
// set up mixer and envelope modes, based on interface values
- _SN76477_mixer_a_w(m_mixer_a);
- _SN76477_mixer_b_w(m_mixer_b);
- _SN76477_mixer_c_w(m_mixer_c);
- _SN76477_envelope_1_w(m_envelope_1);
- _SN76477_envelope_2_w(m_envelope_2);
+ mixer_a_w(m_mixer_a);
+ mixer_b_w(m_mixer_b);
+ mixer_c_w(m_mixer_c);
+ envelope_1_w(m_envelope_1);
+ envelope_2_w(m_envelope_2);
m_one_shot_cap_voltage = ONE_SHOT_CAP_VOLTAGE_MIN;
m_slf_cap_voltage = SLF_CAP_VOLTAGE_MIN;
@@ -966,45 +949,31 @@ inline UINT32 sn76477_device::generate_next_real_noise_bit()
*
*****************************************************************************/
-void sn76477_device::_SN76477_enable_w(UINT32 data)
+WRITE_LINE_MEMBER(sn76477_device::enable_w)
{
- m_enable = data;
+ CHECK_BOOLEAN;
- /* if falling edge */
- if (!m_enable)
+ if (state != m_enable)
{
- /* start the attack phase */
- m_attack_decay_cap_voltage = AD_CAP_VOLTAGE_MIN;
-
- /* one-shot runs regardless of envelope mode */
- m_one_shot_running_ff = 1;
- }
-}
+ m_channel->update();
+ m_enable = state;
-void sn76477_device::SN76477_test_enable_w(UINT32 data)
-{
- if (data != m_enable)
- {
- m_channel->update();
+ /* if falling edge */
+ if (!m_enable)
+ {
+ /* start the attack phase */
+ m_attack_decay_cap_voltage = AD_CAP_VOLTAGE_MIN;
- _SN76477_enable_w(data);
+ /* one-shot runs regardless of envelope mode */
+ m_one_shot_running_ff = 1;
+ }
log_enable_line();
}
}
-WRITE_LINE_MEMBER( sn76477_device::enable_w )
-{
-#if TEST_MODE == 0
- CHECK_CHIP_NUM_AND_BOOLEAN;
-
- SN76477_test_enable_w(state);
-#endif
-}
-
-
/*****************************************************************************
*
@@ -1012,219 +981,142 @@ WRITE_LINE_MEMBER( sn76477_device::enable_w )
*
*****************************************************************************/
-void sn76477_device::_SN76477_mixer_a_w(UINT32 data)
-{
- m_mixer_mode = (m_mixer_mode & ~0x01) | (data << 0);
-}
-
-
WRITE_LINE_MEMBER( sn76477_device::mixer_a_w )
{
-#if TEST_MODE == 0
- CHECK_CHIP_NUM_AND_BOOLEAN;
+ CHECK_BOOLEAN;
if (state != ((m_mixer_mode >> 0) & 0x01))
{
m_channel->update();
- _SN76477_mixer_a_w(state);
+ m_mixer_mode = (m_mixer_mode & ~0x01) | state;
log_mixer_mode();
}
-#endif
-}
-
-
-void sn76477_device::_SN76477_mixer_b_w(UINT32 data)
-{
- m_mixer_mode = (m_mixer_mode & ~0x02) | (data << 1);
}
-
WRITE_LINE_MEMBER( sn76477_device::mixer_b_w )
{
-#if TEST_MODE == 0
- CHECK_CHIP_NUM_AND_BOOLEAN;
+ CHECK_BOOLEAN;
if (state != ((m_mixer_mode >> 1) & 0x01))
{
m_channel->update();
- _SN76477_mixer_b_w(state);
+ m_mixer_mode = (m_mixer_mode & ~0x02) | (state << 1);
log_mixer_mode();
}
-#endif
}
-
-void sn76477_device::_SN76477_mixer_c_w(UINT32 data)
-{
- m_mixer_mode = (m_mixer_mode & ~0x04) | (data << 2);
-}
-
-
WRITE_LINE_MEMBER( sn76477_device::mixer_c_w )
{
-#if TEST_MODE == 0
- CHECK_CHIP_NUM_AND_BOOLEAN;
+ CHECK_BOOLEAN;
if (state != ((m_mixer_mode >> 2) & 0x01))
{
m_channel->update();
- _SN76477_mixer_c_w(state);
+ m_mixer_mode = (m_mixer_mode & ~0x04) | (state << 2);
log_mixer_mode();
}
-#endif
}
-
-
/*****************************************************************************
*
* Set envelope select inputs
*
*****************************************************************************/
-void sn76477_device::_SN76477_envelope_1_w(UINT32 data)
-{
- m_envelope_mode = (m_envelope_mode & ~0x01) | (data << 0);
-}
-
-
WRITE_LINE_MEMBER( sn76477_device::envelope_1_w )
{
-#if TEST_MODE == 0
- CHECK_CHIP_NUM_AND_BOOLEAN;
+ CHECK_BOOLEAN;
if (state != ((m_envelope_mode >> 0) & 0x01))
{
m_channel->update();
- _SN76477_envelope_1_w(state);
+ m_envelope_mode = (m_envelope_mode & ~0x01) | state;
log_envelope_mode();
}
-#endif
}
-
-void sn76477_device::_SN76477_envelope_2_w(UINT32 data)
-{
- m_envelope_mode = (m_envelope_mode & ~0x02) | (data << 1);
-}
-
-
WRITE_LINE_MEMBER( sn76477_device::envelope_2_w )
{
-#if TEST_MODE == 0
- CHECK_CHIP_NUM_AND_BOOLEAN;
+ CHECK_BOOLEAN;
if (state != ((m_envelope_mode >> 1) & 0x01))
{
m_channel->update();
- _SN76477_envelope_2_w(state);
+ m_envelope_mode = (m_envelope_mode & ~0x02) | (state << 1);
log_envelope_mode();
}
-#endif
}
-
-
/*****************************************************************************
*
* Set VCO select input
*
*****************************************************************************/
-void sn76477_device::_SN76477_vco_w(UINT32 data)
-{
- m_vco_mode = data;
-}
-
-
WRITE_LINE_MEMBER( sn76477_device::vco_w )
{
-#if TEST_MODE == 0
- CHECK_CHIP_NUM_AND_BOOLEAN;
+ CHECK_BOOLEAN;
if (state != m_vco_mode)
{
m_channel->update();
- _SN76477_vco_w(state);
+ m_vco_mode = state;
log_vco_mode();
}
-#endif
}
-
-
/*****************************************************************************
*
* Set one-shot resistor
*
*****************************************************************************/
-void sn76477_device::_SN76477_one_shot_res_w(double data)
-{
- m_one_shot_res = data;
-}
-
-
void sn76477_device::one_shot_res_w(double data)
{
-#if TEST_MODE == 0
- CHECK_CHIP_NUM_AND_POSITIVE;
+ CHECK_POSITIVE;
if (data != m_one_shot_res)
{
m_channel->update();
- _SN76477_one_shot_res_w(data);
+ m_one_shot_res = data;
log_one_shot_time();
}
-#endif
}
-
-
/*****************************************************************************
*
* Set one-shot capacitor
*
*****************************************************************************/
-void sn76477_device::_SN76477_one_shot_cap_w(double data)
-{
- m_one_shot_cap = data;
-}
-
-
void sn76477_device::one_shot_cap_w(double data)
{
-#if TEST_MODE == 0
- CHECK_CHIP_NUM_AND_POSITIVE;
+ CHECK_POSITIVE;
if (data != m_one_shot_cap)
{
m_channel->update();
- _SN76477_one_shot_cap_w(data);
+ m_one_shot_cap = data;
log_one_shot_time();
}
-#endif
}
-
-
/*****************************************************************************
*
* Set the voltage on the one-shot capacitor
@@ -1233,8 +1125,7 @@ void sn76477_device::one_shot_cap_w(double data)
void sn76477_device::one_shot_cap_voltage_w(double data)
{
-#if TEST_MODE == 0
- CHECK_CHIP_NUM_AND_CAP_VOLTAGE;
+ CHECK_CAP_VOLTAGE;
if (data == SN76477_EXTERNAL_VOLTAGE_DISCONNECT)
{
@@ -1261,71 +1152,48 @@ void sn76477_device::one_shot_cap_voltage_w(double data)
log_one_shot_time();
}
}
-#endif
}
-
-
/*****************************************************************************
*
* Set SLF resistor
*
*****************************************************************************/
-void sn76477_device::_SN76477_slf_res_w(double data)
-{
- m_slf_res = data;
-}
-
-
void sn76477_device::slf_res_w(double data)
{
-#if TEST_MODE == 0
- CHECK_CHIP_NUM_AND_POSITIVE;
+ CHECK_POSITIVE;
if (data != m_slf_res)
{
m_channel->update();
- _SN76477_slf_res_w(data);
+ m_slf_res = data;
log_slf_freq();
}
-#endif
}
-
-
/*****************************************************************************
*
* Set SLF capacitor
*
*****************************************************************************/
-void sn76477_device::_SN76477_slf_cap_w(double data)
-{
- m_slf_cap = data;
-}
-
-
void sn76477_device::slf_cap_w(double data)
{
-#if TEST_MODE == 0
- CHECK_CHIP_NUM_AND_POSITIVE;
+ CHECK_POSITIVE;
if (data != m_slf_cap)
{
m_channel->update();
- _SN76477_slf_cap_w(data);
+ m_slf_cap = data;
log_slf_freq();
}
-#endif
}
-
-
/*****************************************************************************
*
* Set the voltage on the SLF capacitor
@@ -1336,8 +1204,7 @@ void sn76477_device::slf_cap_w(double data)
void sn76477_device::slf_cap_voltage_w(double data)
{
-#if TEST_MODE == 0
- CHECK_CHIP_NUM_AND_CAP_VOLTAGE;
+ CHECK_CAP_VOLTAGE;
if (data == SN76477_EXTERNAL_VOLTAGE_DISCONNECT)
{
@@ -1364,71 +1231,48 @@ void sn76477_device::slf_cap_voltage_w(double data)
log_slf_freq();
}
}
-#endif
}
-
-
/*****************************************************************************
*
* Set VCO resistor
*
*****************************************************************************/
-void sn76477_device::_SN76477_vco_res_w(double data)
-{
- m_vco_res = data;
-}
-
-
void sn76477_device::vco_res_w(double data)
{
-#if TEST_MODE == 0
- CHECK_CHIP_NUM_AND_POSITIVE;
+ CHECK_POSITIVE;
if (data != m_vco_res)
{
m_channel->update();
- _SN76477_vco_res_w(data);
+ m_vco_res = data;
log_vco_freq();
}
-#endif
}
-
-
/*****************************************************************************
*
* Set VCO capacitor
*
*****************************************************************************/
-void sn76477_device::_SN76477_vco_cap_w(double data)
-{
- m_vco_cap = data;
-}
-
-
void sn76477_device::vco_cap_w(double data)
{
-#if TEST_MODE == 0
- CHECK_CHIP_NUM_AND_POSITIVE;
+ CHECK_POSITIVE;
if (data != m_vco_cap)
{
m_channel->update();
- _SN76477_vco_cap_w(data);
+ m_vco_cap = data;
log_vco_freq();
}
-#endif
}
-
-
/*****************************************************************************
*
* Set the voltage on the VCO capacitor
@@ -1437,8 +1281,7 @@ void sn76477_device::vco_cap_w(double data)
void sn76477_device::vco_cap_voltage_w(double data)
{
-#if TEST_MODE == 0
- CHECK_CHIP_NUM_AND_CAP_VOLTAGE;
+ CHECK_CAP_VOLTAGE;
if (data == SN76477_EXTERNAL_VOLTAGE_DISCONNECT)
{
@@ -1465,73 +1308,50 @@ void sn76477_device::vco_cap_voltage_w(double data)
log_vco_freq();
}
}
-#endif
}
-
-
/*****************************************************************************
*
* Set VCO voltage
*
*****************************************************************************/
-void sn76477_device::_SN76477_vco_voltage_w(double data)
-{
- m_vco_voltage = data;
-}
-
-
void sn76477_device::vco_voltage_w(double data)
{
-#if TEST_MODE == 0
- CHECK_CHIP_NUM_AND_VOLTAGE;
+ CHECK_VOLTAGE;
if (data != m_vco_voltage)
{
m_channel->update();
- _SN76477_vco_voltage_w(data);
+ m_vco_voltage = data;
log_vco_ext_voltage();
log_vco_duty_cycle();
}
-#endif
}
-
-
/*****************************************************************************
*
* Set pitch voltage
*
*****************************************************************************/
-void sn76477_device::_SN76477_pitch_voltage_w(double data)
-{
- m_pitch_voltage = data;
-}
-
-
void sn76477_device::pitch_voltage_w(double data)
{
-#if TEST_MODE == 0
- CHECK_CHIP_NUM_AND_VOLTAGE;
+ CHECK_VOLTAGE;
if (data != m_pitch_voltage)
{
m_channel->update();
- _SN76477_pitch_voltage_w(data);
+ m_pitch_voltage = data;
log_vco_pitch_voltage();
log_vco_duty_cycle();
}
-#endif
}
-
-
/*****************************************************************************
*
* Set noise external clock
@@ -1540,8 +1360,7 @@ void sn76477_device::pitch_voltage_w(double data)
WRITE_LINE_MEMBER( sn76477_device::noise_clock_w )
{
-#if TEST_MODE == 0
- CHECK_CHIP_NUM_AND_BOOLEAN;
+ CHECK_BOOLEAN;
if (state != m_noise_clock)
{
@@ -1556,111 +1375,78 @@ WRITE_LINE_MEMBER( sn76477_device::noise_clock_w )
m_real_noise_bit_ff = generate_next_real_noise_bit();
}
}
-#endif
}
-
-
/*****************************************************************************
*
* Set noise clock resistor
*
*****************************************************************************/
-void sn76477_device::_SN76477_noise_clock_res_w(double data)
-{
- if (data == 0)
- {
- m_noise_clock_ext = 1;
- }
- else
- {
- m_noise_clock_ext = 0;
-
- m_noise_clock_res = data;
- }
-}
-
-
void sn76477_device::noise_clock_res_w(double data)
{
-#if TEST_MODE == 0
- CHECK_CHIP_NUM_AND_POSITIVE;
+ CHECK_POSITIVE;
if (((data == 0) && !m_noise_clock_ext) ||
((data != 0) && (data != m_noise_clock_res)))
{
m_channel->update();
- _SN76477_noise_clock_res_w(data);
+ if (data == 0)
+ {
+ m_noise_clock_ext = 1;
+ }
+ else
+ {
+ m_noise_clock_ext = 0;
+
+ m_noise_clock_res = data;
+ }
log_noise_gen_freq();
}
-#endif
}
-
-
/*****************************************************************************
*
* Set noise filter resistor
*
*****************************************************************************/
-void sn76477_device::_SN76477_noise_filter_res_w(double data)
-{
- m_noise_filter_res = data;
-}
-
-
void sn76477_device::noise_filter_res_w(double data)
{
-#if TEST_MODE == 0
- CHECK_CHIP_NUM_AND_POSITIVE;
+ CHECK_POSITIVE;
if (data != m_noise_filter_res)
{
m_channel->update();
- _SN76477_noise_filter_res_w(data);
+ m_noise_filter_res = data;
log_noise_filter_freq();
}
-#endif
}
-
-
/*****************************************************************************
*
* Set noise filter capacitor
*
*****************************************************************************/
-void sn76477_device::_SN76477_noise_filter_cap_w(double data)
-{
- m_noise_filter_cap = data;
-}
-
-
void sn76477_device::noise_filter_cap_w(double data)
{
-#if TEST_MODE == 0
- CHECK_CHIP_NUM_AND_POSITIVE;
+ CHECK_POSITIVE;
if (data != m_noise_filter_cap)
{
m_channel->update();
- _SN76477_noise_filter_cap_w(data);
+ m_noise_filter_cap = data;
log_noise_filter_freq();
}
-#endif
}
-
-
/*****************************************************************************
*
* Set the voltage on the noise filter capacitor
@@ -1669,8 +1455,7 @@ void sn76477_device::noise_filter_cap_w(double data)
void sn76477_device::noise_filter_cap_voltage_w(double data)
{
-#if TEST_MODE == 0
- CHECK_CHIP_NUM_AND_CAP_VOLTAGE;
+ CHECK_CAP_VOLTAGE;
if (data == SN76477_EXTERNAL_VOLTAGE_DISCONNECT)
{
@@ -1697,102 +1482,69 @@ void sn76477_device::noise_filter_cap_voltage_w(double data)
log_noise_filter_freq();
}
}
-#endif
}
-
-
/*****************************************************************************
*
* Set attack resistor
*
*****************************************************************************/
-void sn76477_device::_SN76477_attack_res_w(double data)
-{
- m_attack_res = data;
-}
-
-
void sn76477_device::attack_res_w(double data)
{
-#if TEST_MODE == 0
- CHECK_CHIP_NUM_AND_POSITIVE;
+ CHECK_POSITIVE;
if (data != m_attack_res)
{
m_channel->update();
- _SN76477_attack_res_w(data);
+ m_attack_res = data;
log_attack_time();
}
-#endif
}
-
-
/*****************************************************************************
*
* Set decay resistor
*
*****************************************************************************/
-void sn76477_device::_SN76477_decay_res_w(double data)
-{
- m_decay_res = data;
-}
-
-
void sn76477_device::decay_res_w(double data)
{
-#if TEST_MODE == 0
- CHECK_CHIP_NUM_AND_POSITIVE;
+ CHECK_POSITIVE;
if (data != m_decay_res)
{
m_channel->update();
- _SN76477_decay_res_w(data);
+ m_decay_res = data;
log_decay_time();
}
-#endif
}
-
-
/*****************************************************************************
*
* Set attack/decay capacitor
*
*****************************************************************************/
-void sn76477_device::_SN76477_attack_decay_cap_w(double data)
-{
- m_attack_decay_cap = data;
-}
-
-
void sn76477_device::attack_decay_cap_w(double data)
{
-#if TEST_MODE == 0
- CHECK_CHIP_NUM_AND_POSITIVE;
+ CHECK_POSITIVE;
if (data != m_attack_decay_cap)
{
m_channel->update();
- _SN76477_attack_decay_cap_w(data);
+ m_attack_decay_cap = data;
log_attack_time();
log_decay_time();
}
-#endif
}
-
-
/*****************************************************************************
*
* Set the voltage on the attack/decay capacitor
@@ -1801,8 +1553,7 @@ void sn76477_device::attack_decay_cap_w(double data)
void sn76477_device::attack_decay_cap_voltage_w(double data)
{
-#if TEST_MODE == 0
- CHECK_CHIP_NUM_AND_CAP_VOLTAGE;
+ CHECK_CAP_VOLTAGE;
if (data == SN76477_EXTERNAL_VOLTAGE_DISCONNECT)
{
@@ -1831,70 +1582,48 @@ void sn76477_device::attack_decay_cap_voltage_w(double data)
log_decay_time();
}
}
-#endif
}
-
-
/*****************************************************************************
*
* Set amplitude resistor
*
*****************************************************************************/
-void sn76477_device::_SN76477_amplitude_res_w(double data)
-{
- m_amplitude_res = data;
-}
-
-
void sn76477_device::amplitude_res_w(double data)
{
-#if TEST_MODE == 0
- CHECK_CHIP_NUM_AND_POSITIVE;
+ CHECK_POSITIVE;
if (data != m_amplitude_res)
{
m_channel->update();
- _SN76477_amplitude_res_w(data);
+ m_amplitude_res = data;
log_voltage_out();
}
-#endif
}
-
-
/*****************************************************************************
*
* Set feedback resistor
*
*****************************************************************************/
-void sn76477_device::_SN76477_feedback_res_w(double data)
-{
- m_feedback_res = data;
-}
-
-
void sn76477_device::feedback_res_w(double data)
{
-#if TEST_MODE == 0
- CHECK_CHIP_NUM_AND_POSITIVE;
+ CHECK_POSITIVE;
if (data != m_feedback_res)
{
m_channel->update();
- _SN76477_feedback_res_w(data);
+ m_feedback_res = data;
log_voltage_out();
}
-#endif
}
-
/*****************************************************************************
*
* State saving
@@ -1982,21 +1711,6 @@ void sn76477_device::sound_stream_update(sound_stream &stream, stream_sample_t *
stream_sample_t *buffer = outputs[0];
-
-#if TEST_MODE
- static int recursing = 0; /* we need to prevent recursion since enable_w calls machine().input().code_pressed_once(KEYCODE_SPACE->update */
-
- if () && !recursing)
- {
- recursing = 1;
-
- machine().sound().system_enable();
- SN76477_test_enable_w(!m_enable);
- }
-
- recursing = 0;
-#endif
-
/* compute charging values, doing it here ensures that we always use the latest values */
one_shot_cap_charging_step = compute_one_shot_cap_charging_rate() / m_our_sample_rate;
one_shot_cap_discharging_step = compute_one_shot_cap_discharging_rate() / m_our_sample_rate;
diff --git a/src/devices/sound/sn76477.h b/src/devices/sound/sn76477.h
index 6c582c74b09..849229c22d7 100644
--- a/src/devices/sound/sn76477.h
+++ b/src/devices/sound/sn76477.h
@@ -304,31 +304,6 @@ private:
inline UINT32 generate_next_real_noise_bit();
void state_save_register();
-
- void _SN76477_enable_w(UINT32 data);
- void _SN76477_vco_w(UINT32 data);
- void _SN76477_mixer_a_w(UINT32 data);
- void _SN76477_mixer_b_w(UINT32 data);
- void _SN76477_mixer_c_w(UINT32 data);
- void _SN76477_envelope_1_w(UINT32 data);
- void _SN76477_envelope_2_w(UINT32 data);
- void _SN76477_one_shot_res_w(double data);
- void _SN76477_one_shot_cap_w(double data);
- void _SN76477_slf_res_w(double data);
- void _SN76477_slf_cap_w(double data);
- void _SN76477_vco_res_w(double data);
- void _SN76477_vco_cap_w(double data);
- void _SN76477_vco_voltage_w(double data);
- void _SN76477_noise_clock_res_w(double data);
- void _SN76477_noise_filter_res_w(double data);
- void _SN76477_noise_filter_cap_w(double data);
- void _SN76477_decay_res_w(double data);
- void _SN76477_attack_res_w(double data);
- void _SN76477_attack_decay_cap_w(double data);
- void _SN76477_amplitude_res_w(double data);
- void _SN76477_feedback_res_w(double data);
- void _SN76477_pitch_voltage_w(double data);
- void SN76477_test_enable_w(UINT32 data);
};
extern const device_type SN76477;
diff --git a/src/devices/sound/tms5110.cpp b/src/devices/sound/tms5110.cpp
index 724e2b02c98..aa98b69697a 100644
--- a/src/devices/sound/tms5110.cpp
+++ b/src/devices/sound/tms5110.cpp
@@ -1,4 +1,4 @@
-// license:???
+// license:BSD-3-Clause
// copyright-holders:Frank Palazzolo, Jarek Burczynski, Aaron Giles, Jonathan Gevaryahu, Couriersud
/**********************************************************************************************
@@ -1049,8 +1049,6 @@ static const unsigned int example_word_TEN[619]={
void tms5110_device::device_start()
{
- m_table = region()->base();
-
set_variant(TMS5110_IS_TMS5110A);
/* resolve lines */
@@ -1531,24 +1529,26 @@ WRITE_LINE_MEMBER( tmsprom_device::enable_w )
const device_type TMS5110 = &device_creator<tms5110_device>;
tms5110_device::tms5110_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock)
- : device_t(mconfig, TMS5110, "TMS5110", tag, owner, clock, "tms5110", __FILE__),
- device_sound_interface(mconfig, *this),
- m_m0_cb(*this),
- m_m1_cb(*this),
- m_addr_cb(*this),
- m_data_cb(*this),
- m_romclk_cb(*this)
+ : device_t(mconfig, TMS5110, "TMS5110", tag, owner, clock, "tms5110", __FILE__)
+ , device_sound_interface(mconfig, *this)
+ , m_table(*this, DEVICE_SELF)
+ , m_m0_cb(*this)
+ , m_m1_cb(*this)
+ , m_addr_cb(*this)
+ , m_data_cb(*this)
+ , m_romclk_cb(*this)
{
}
tms5110_device::tms5110_device(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, UINT32 clock, const char *shortname, const char *source)
- : device_t(mconfig, type, name, tag, owner, clock, shortname, source),
- device_sound_interface(mconfig, *this),
- m_m0_cb(*this),
- m_m1_cb(*this),
- m_addr_cb(*this),
- m_data_cb(*this),
- m_romclk_cb(*this)
+ : device_t(mconfig, type, name, tag, owner, clock, shortname, source)
+ , device_sound_interface(mconfig, *this)
+ , m_table(*this, DEVICE_SELF)
+ , m_m0_cb(*this)
+ , m_m1_cb(*this)
+ , m_addr_cb(*this)
+ , m_data_cb(*this)
+ , m_romclk_cb(*this)
{
}
diff --git a/src/devices/sound/tms5110.h b/src/devices/sound/tms5110.h
index 6dd6c707fff..8eb5306eaf9 100644
--- a/src/devices/sound/tms5110.h
+++ b/src/devices/sound/tms5110.h
@@ -1,4 +1,4 @@
-// license:???
+// license:BSD-3-Clause
// copyright-holders:Frank Palazzolo, Jarek Burczynski, Aaron Giles, Jonathan Gevaryahu, Couriersud
#pragma once
@@ -97,6 +97,9 @@ private:
void parse_frame();
// internal state
+ /* table */
+ optional_region_ptr<UINT8> m_table;
+
/* coefficient tables */
int m_variant; /* Variant of the 5110 - see tms5110.h */
@@ -191,7 +194,6 @@ private:
UINT8 m_romclk_hack_state;
emu_timer *m_romclk_hack_timer;
- const UINT8 *m_table;
};
extern const device_type TMS5110;
diff --git a/src/devices/sound/upd7759.cpp b/src/devices/sound/upd7759.cpp
index a7e0491687f..ed26fe6772f 100644
--- a/src/devices/sound/upd7759.cpp
+++ b/src/devices/sound/upd7759.cpp
@@ -145,52 +145,52 @@
upd775x_device::upd775x_device(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, UINT32 clock, const char *shortname, const char *source)
- : device_t(mconfig, type, name, tag, owner, clock, shortname, source),
- device_sound_interface(mconfig, *this),
- m_channel(nullptr),
- m_sample_offset_shift(0),
- m_pos(0),
- m_step(0),
- m_fifo_in(0),
- m_reset(0),
- m_start(0),
- m_drq(0),
- m_state(0),
- m_clocks_left(0),
- m_nibbles_left(0),
- m_repeat_count(0),
- m_post_drq_state(0),
- m_post_drq_clocks(0),
- m_req_sample(0),
- m_last_sample(0),
- m_block_header(0),
- m_sample_rate(0),
- m_first_valid_header(0),
- m_offset(0),
- m_repeat_offset(0),
- m_adpcm_state(0),
- m_adpcm_data(0),
- m_sample(0),
- m_rom(nullptr),
- m_rombase(nullptr),
- m_romoffset(0),
- m_rommask(0),
- m_drqcallback(*this)
-{
-}
+ : device_t(mconfig, type, name, tag, owner, clock, shortname, source)
+ , device_sound_interface(mconfig, *this)
+ , m_channel(nullptr)
+ , m_sample_offset_shift(0)
+ , m_pos(0)
+ , m_step(0)
+ , m_fifo_in(0)
+ , m_reset(0)
+ , m_start(0)
+ , m_drq(0)
+ , m_state(0)
+ , m_clocks_left(0)
+ , m_nibbles_left(0)
+ , m_repeat_count(0)
+ , m_post_drq_state(0)
+ , m_post_drq_clocks(0)
+ , m_req_sample(0)
+ , m_last_sample(0)
+ , m_block_header(0)
+ , m_sample_rate(0)
+ , m_first_valid_header(0)
+ , m_offset(0)
+ , m_repeat_offset(0)
+ , m_adpcm_state(0)
+ , m_adpcm_data(0)
+ , m_sample(0)
+ , m_rombase(*this, DEVICE_SELF)
+ , m_rom(nullptr)
+ , m_romoffset(0)
+ , m_rommask(0)
+ , m_drqcallback(*this)
+ {
+ }
const device_type UPD7759 = &device_creator<upd7759_device>;
upd7759_device::upd7759_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock)
- : upd775x_device(mconfig, UPD7759, "uPD7759", tag, owner, clock, "upd7759", __FILE__),
- m_timer(nullptr)
+ : upd775x_device(mconfig, UPD7759, "uPD7759", tag, owner, clock, "upd7759", __FILE__)
+ , m_timer(nullptr)
{
}
upd7759_device::upd7759_device(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, UINT32 clock, const char *shortname, const char *source)
- : upd775x_device(mconfig, type, name, tag, owner, clock, shortname, source),
- m_timer(nullptr)
+ : upd775x_device(mconfig, type, name, tag, owner, clock, shortname, source)
+ , m_timer(nullptr)
{
}
@@ -231,20 +231,26 @@ void upd7759_device::device_start()
/* compute the ROM base or allocate a timer */
m_romoffset = 0;
- m_rom = m_rombase = region()->base();
- if (m_rombase == nullptr)
+ m_rom = m_rombase;
+ if (m_rombase != nullptr)
{
- assert(type() == UPD7759); // other chips do not support slave mode
- m_timer = timer_alloc(TIMER_SLAVE_UPDATE);
- m_rommask = 0;
+ UINT32 romsize = m_rombase.bytes();
+ if (romsize >= 0x20000)
+ {
+ m_rommask = 0x1ffff;
+ }
+ else
+ {
+ m_rommask = romsize - 1;
+ }
+
+ m_drqcallback.set_callback(DEVCB_NULL);
}
else
{
- UINT32 romsize = region()->bytes();
- if (romsize >= 0x20000) m_rommask = 0x1ffff;
- else m_rommask = romsize - 1;
-
- m_drqcallback.set_callback(DEVCB_NULL);
+ assert(type() == UPD7759); // other chips do not support slave mode
+ m_timer = timer_alloc(TIMER_SLAVE_UPDATE);
+ m_rommask = 0;
}
/* assume /RESET and /START are both high */
@@ -306,18 +312,24 @@ void upd7756_device::device_start()
/* compute the ROM base or allocate a timer */
m_romoffset = 0;
- m_rom = m_rombase = region()->base();
- if (m_rombase == nullptr)
+ m_rom = m_rombase;
+ if (m_rombase != nullptr)
{
- m_rommask = 0;
+ UINT32 romsize = m_rombase.bytes();
+ if (romsize >= 0x20000)
+ {
+ m_rommask = 0x1ffff;
+ }
+ else
+ {
+ m_rommask = romsize - 1;
+ }
+
+ m_drqcallback.set_callback(DEVCB_NULL);
}
else
{
- UINT32 romsize = region()->bytes();
- if (romsize >= 0x20000) m_rommask = 0x1ffff;
- else m_rommask = romsize - 1;
-
- m_drqcallback.set_callback(DEVCB_NULL);
+ m_rommask = 0;
}
/* assume /RESET and /START are both high */
@@ -720,7 +732,9 @@ void upd7759_device::device_timer(emu_timer &timer, device_timer_id id, int para
void upd775x_device::postload()
{
if (m_rombase)
+ {
m_rom = m_rombase + m_romoffset;
+ }
}
/************************************************************
diff --git a/src/devices/sound/upd7759.h b/src/devices/sound/upd7759.h
index 637732b22fa..6828810e4eb 100644
--- a/src/devices/sound/upd7759.h
+++ b/src/devices/sound/upd7759.h
@@ -95,8 +95,8 @@ protected:
INT16 m_sample; /* current sample value */
/* ROM access */
+ optional_region_ptr<UINT8> m_rombase; /* pointer to ROM data or NULL for slave mode */
UINT8 * m_rom; /* pointer to ROM data or NULL for slave mode */
- UINT8 * m_rombase; /* pointer to ROM data or NULL for slave mode */
UINT32 m_romoffset; /* ROM offset to make save/restore easier */
UINT32 m_rommask; /* maximum address offset */
diff --git a/src/devices/sound/ym2151.cpp b/src/devices/sound/ym2151.cpp
index 9f5f63120ec..f41077b96aa 100644
--- a/src/devices/sound/ym2151.cpp
+++ b/src/devices/sound/ym2151.cpp
@@ -1,4 +1,4 @@
-// license:???
+// license:GPL-2.0+
// copyright-holders:Jarek Burczynski
/*****************************************************************************
*
diff --git a/src/devices/sound/ym2151.h b/src/devices/sound/ym2151.h
index 3d62ac278ac..8ad1c8ea773 100644
--- a/src/devices/sound/ym2151.h
+++ b/src/devices/sound/ym2151.h
@@ -1,4 +1,4 @@
-// license:???
+// license:GPL-2.0+
// copyright-holders:Jarek Burczynski
/*
** File: ym2151.h - header file for software implementation of YM2151
diff --git a/src/devices/sound/ym2413.cpp b/src/devices/sound/ym2413.cpp
index 5a644815f5a..2e0ab6cd38b 100644
--- a/src/devices/sound/ym2413.cpp
+++ b/src/devices/sound/ym2413.cpp
@@ -1,4 +1,4 @@
-// license:???
+// license:GPL-2.0+
// copyright-holders:Jarek Burczynski
/*
**
diff --git a/src/devices/sound/ym2413.h b/src/devices/sound/ym2413.h
index eb9441bec5a..413986d8c8f 100644
--- a/src/devices/sound/ym2413.h
+++ b/src/devices/sound/ym2413.h
@@ -1,4 +1,4 @@
-// license:???
+// license:GPL-2.0+
// copyright-holders:Jarek Burczynski
#pragma once
diff --git a/src/devices/sound/ymdeltat.cpp b/src/devices/sound/ymdeltat.cpp
index d6668c7a8a5..ad8c0f12b13 100644
--- a/src/devices/sound/ymdeltat.cpp
+++ b/src/devices/sound/ymdeltat.cpp
@@ -1,4 +1,4 @@
-// license:???
+// license:GPL-2.0+
// copyright-holders:Jarek Burczynski
/*
**
diff --git a/src/devices/sound/ymdeltat.h b/src/devices/sound/ymdeltat.h
index afff1ab447a..8ba599f42c3 100644
--- a/src/devices/sound/ymdeltat.h
+++ b/src/devices/sound/ymdeltat.h
@@ -1,4 +1,4 @@
-// license:???
+// license:GPL-2.0+
// copyright-holders:Jarek Burczynski
#pragma once
diff --git a/src/devices/sound/ymf262.cpp b/src/devices/sound/ymf262.cpp
index 333a7ecae0d..912b70e530e 100644
--- a/src/devices/sound/ymf262.cpp
+++ b/src/devices/sound/ymf262.cpp
@@ -1,4 +1,4 @@
-// license:???
+// license:GPL-2.0+
// copyright-holders:Jarek Burczynski
/*
**
diff --git a/src/devices/sound/ymf262.h b/src/devices/sound/ymf262.h
index 904b4f259c5..ef8e2fbf47a 100644
--- a/src/devices/sound/ymf262.h
+++ b/src/devices/sound/ymf262.h
@@ -1,4 +1,4 @@
-// license:???
+// license:GPL-2.0+
// copyright-holders:Jarek Burczynski
#pragma once
diff --git a/src/devices/sound/ymf271.cpp b/src/devices/sound/ymf271.cpp
index 14dd53be324..653285f18a1 100644
--- a/src/devices/sound/ymf271.cpp
+++ b/src/devices/sound/ymf271.cpp
@@ -1706,8 +1706,8 @@ void ymf271_device::device_start()
m_timA = timer_alloc(0);
m_timB = timer_alloc(1);
- m_mem_base = region()->base();
- m_mem_size = region()->bytes();
+ m_mem_size = m_mem_base.bytes();
+
m_irq_handler.resolve();
m_ext_read_handler.resolve();
@@ -1747,19 +1747,26 @@ void ymf271_device::device_reset()
const device_type YMF271 = &device_creator<ymf271_device>;
ymf271_device::ymf271_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock)
- : device_t(mconfig, YMF271, "YMF271", tag, owner, clock, "ymf271", __FILE__),
- device_sound_interface(mconfig, *this),
- m_timerA(0),
- m_timerB(0),
- m_irqstate(0),
- m_status(0),
- m_enable(0),
- m_ext_address(0),
- m_ext_rw(0),
- m_ext_readlatch(0),
- m_irq_handler(*this),
- m_ext_read_handler(*this),
- m_ext_write_handler(*this)
+ : device_t(mconfig, YMF271, "YMF271", tag, owner, clock, "ymf271", __FILE__)
+ , device_sound_interface(mconfig, *this)
+ , m_timerA(0)
+ , m_timerB(0)
+ , m_irqstate(0)
+ , m_status(0)
+ , m_enable(0)
+ , m_ext_address(0)
+ , m_ext_rw(0)
+ , m_ext_readlatch(0)
+ , m_mem_base(*this, DEVICE_SELF)
+ , m_mem_size(0)
+ , m_clock(0)
+ , m_timA(nullptr)
+ , m_timB(nullptr)
+ , m_stream(nullptr)
+ , m_mix_buffer(nullptr)
+ , m_irq_handler(*this)
+ , m_ext_read_handler(*this)
+ , m_ext_write_handler(*this)
{
memset(m_slots, 0, sizeof(m_slots));
memset(m_groups, 0, sizeof(m_groups));
diff --git a/src/devices/sound/ymf271.h b/src/devices/sound/ymf271.h
index b4fbcead1af..39d51a64d05 100644
--- a/src/devices/sound/ymf271.h
+++ b/src/devices/sound/ymf271.h
@@ -16,8 +16,7 @@
#define MCFG_YMF271_EXT_WRITE_HANDLER(_devcb) \
devcb = &ymf271_device::set_ext_write_handler(*device, DEVCB_##_devcb);
-class ymf271_device : public device_t,
- public device_sound_interface
+class ymf271_device : public device_t, public device_sound_interface
{
public:
ymf271_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock);
@@ -147,11 +146,12 @@ private:
UINT8 m_ext_rw;
UINT8 m_ext_readlatch;
- UINT8 *m_mem_base;
+ optional_region_ptr<UINT8> m_mem_base;
UINT32 m_mem_size;
UINT32 m_clock;
- emu_timer *m_timA, *m_timB;
+ emu_timer *m_timA;
+ emu_timer *m_timB;
sound_stream *m_stream;
std::unique_ptr<INT32[]> m_mix_buffer;
diff --git a/src/devices/sound/ymz280b.cpp b/src/devices/sound/ymz280b.cpp
index 02c0283b4ae..fad4f1b7558 100644
--- a/src/devices/sound/ymz280b.cpp
+++ b/src/devices/sound/ymz280b.cpp
@@ -581,10 +581,15 @@ void ymz280b_device::device_start()
/* initialize the rest of the structure */
m_master_clock = (double)clock() / 384.0;
- m_mem_base = region()->base();
- m_mem_size = region()->bytes();
m_irq_handler.resolve();
+ if (region() != NULL)
+ {
+ /* Some systems (e.g. Konami Firebeat) have a YMZ280B on-board that isn't hooked up to ROM, so be safe. */
+ m_mem_base = region()->base();
+ m_mem_size = region()->bytes();
+ }
+
for (int i = 0; i < 8; i++)
{
m_voice[i].timer = timer_alloc(i);
diff --git a/src/devices/video/ef9364.cpp b/src/devices/video/ef9364.cpp
new file mode 100644
index 00000000000..b850f05d531
--- /dev/null
+++ b/src/devices/video/ef9364.cpp
@@ -0,0 +1,359 @@
+// license:BSD-3-Clause
+// copyright-holders:Jean-Francois DEL NERO
+
+/*********************************************************************
+
+ ef9364.cpp
+
+ Thomson EF9364 / Sescosem SFF96364 video controller emulator code
+
+ This circuit is a simple black and white 8x8 character generator.
+ It display 64 columns * 16 rows text page.
+ It is able to do automatic text scrolling, page erase.
+ The characters font is stored into an external 1KB EPROM.
+
+ To see how to use this driver, have a look to the Goupil machine
+ driver (goupil.cpp).
+ If you have any question or remark, don't hesitate to contact me
+ at the email present on this website : http://hxc2001.free.fr/
+
+ 01/20/2016
+ Jean-Francois DEL NERO
+*********************************************************************/
+
+#include "emu.h"
+#include "ef9364.h"
+
+// devices
+const device_type EF9364 = &device_creator<ef9364_device>;
+
+//-------------------------------------------------
+// default address map
+//-------------------------------------------------
+static ADDRESS_MAP_START( ef9364, AS_0, 8, ef9364_device )
+ AM_RANGE(0x00000, ( ( EF9364_TXTPLANE_MAX_SIZE * EF9364_MAX_TXTPLANES ) - 1 ) ) AM_RAM
+ADDRESS_MAP_END
+
+//-------------------------------------------------
+// memory_space_config - return a description of
+// any address spaces owned by this device
+//-------------------------------------------------
+
+const address_space_config *ef9364_device::memory_space_config(address_spacenum spacenum) const
+{
+ return (spacenum == AS_0) ? &m_space_config : NULL;
+}
+
+//**************************************************************************
+// INLINE HELPERS
+//**************************************************************************
+
+//**************************************************************************
+// live device
+//**************************************************************************
+
+//-------------------------------------------------
+// ef9364_device - constructor
+//-------------------------------------------------
+
+ef9364_device::ef9364_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock) :
+ device_t(mconfig, EF9364, "EF9364", tag, owner, clock, "ef9364", __FILE__),
+ device_memory_interface(mconfig, *this),
+ device_video_interface(mconfig, *this),
+ m_space_config("textram", ENDIANNESS_LITTLE, 8, 12, 0, nullptr, *ADDRESS_MAP_NAME(ef9364)),
+ m_palette(*this)
+{
+ clock_freq = clock;
+}
+
+//-------------------------------------------------
+// static_set_palette_tag: Set the tag of the
+// palette device
+//-------------------------------------------------
+
+void ef9364_device::static_set_palette_tag(device_t &device, const char *tag)
+{
+ downcast<ef9364_device &>(device).m_palette.set_tag(tag);
+}
+
+//-------------------------------------------------
+// static_set_nb_of_pages: Set the number of hardware pages
+//-------------------------------------------------
+
+void ef9364_device::static_set_nb_of_pages(device_t &device, int nb_of_pages )
+{
+ if( nb_of_pages > 0 && nb_of_pages <= 8 )
+ {
+ downcast<ef9364_device &>(device).nb_of_pages = nb_of_pages;
+ }
+}
+
+//-------------------------------------------------
+// set_color_entry: Set the color value
+// into the palette
+//-------------------------------------------------
+
+void ef9364_device::set_color_entry( int index, UINT8 r, UINT8 g, UINT8 b )
+{
+ if( index < 2 )
+ {
+ palette[index] = rgb_t(r, g, b);
+ }
+ else
+ {
+ logerror("Invalid EF9364 Palette entry : %02x\n", index);
+ }
+}
+
+//-------------------------------------------------
+// device_start - device-specific startup
+//-------------------------------------------------
+
+void ef9364_device::device_start()
+{
+ m_textram = &space(0);
+ m_charset = region();
+
+ bitplane_xres = EF9364_NB_OF_COLUMNS*8;
+ bitplane_yres = EF9364_NB_OF_ROWS*(8+4);
+
+ vsync_scanline_pos = 250;
+
+ // Default palette : Black and white
+ palette[0] = rgb_t(0, 0, 0);
+ palette[1] = rgb_t(255, 255, 255);
+
+ m_screen_out.allocate( bitplane_xres, m_screen->height() );
+
+ cursor_cnt = 0;
+ cursor_state = 0;
+
+ save_item(NAME(m_border));
+
+ save_item(NAME(m_screen_out));
+}
+
+//-------------------------------------------------
+// device_reset - device-specific reset
+//-------------------------------------------------
+
+void ef9364_device::device_reset()
+{
+ int i;
+
+ x_curs_pos = 0;
+ y_curs_pos = 0;
+
+ char_latch = 0x00;
+
+ for(i=0;i<EF9364_NB_OF_COLUMNS * EF9364_NB_OF_ROWS * nb_of_pages;i++)
+ {
+ m_textram->write_byte ( i , 0x7F );
+ }
+
+ memset(m_border, 0, sizeof(m_border));
+
+ m_screen_out.fill(0);
+
+ set_video_mode();
+}
+
+//-------------------------------------------------
+// set_video_mode: Set output screen format
+//-------------------------------------------------
+
+void ef9364_device::set_video_mode(void)
+{
+ UINT16 new_width = bitplane_xres;
+
+ if (m_screen->width() != new_width)
+ {
+ rectangle visarea = m_screen->visible_area();
+ visarea.max_x = new_width - 1;
+
+ m_screen->configure(new_width, m_screen->height(), visarea, m_screen->frame_period().attoseconds());
+ }
+
+ //border color
+ memset(m_border, 0, sizeof(m_border));
+}
+
+//-------------------------------------------------
+// draw_border: Draw the left and right borders
+// ( No border for the moment ;) )
+//-------------------------------------------------
+
+void ef9364_device::draw_border(UINT16 line)
+{
+}
+
+//-------------------------------------------------
+// screen_update: Framebuffer video ouput
+//-------------------------------------------------
+
+UINT32 ef9364_device::screen_update(screen_device &screen, bitmap_rgb32 &bitmap, const rectangle &cliprect)
+{
+ int x,y,r;
+ unsigned char c;
+
+ for( r = 0 ; r < EF9364_NB_OF_ROWS ; r++ )
+ {
+ for( y = 0 ; y < 8 ; y++ )
+ {
+ for( x = 0 ; x < EF9364_NB_OF_COLUMNS * 8 ; x++ )
+ {
+ if( ( ( x >> 3 ) != x_curs_pos ) || ( r != y_curs_pos ) || !cursor_state)
+ {
+ c = m_textram->read_byte( ( r * EF9364_NB_OF_COLUMNS ) + ( x>>3 ) );
+
+ if( m_charset->u8(((c&0x7F)<<3) + y ) & (0x80>>(x&7)) )
+ m_screen_out.pix32((r*12)+y, x) = palette[1];
+ else
+ m_screen_out.pix32((r*12)+y, x) = palette[0];
+ }
+ else
+ {
+ if(y != 7)
+ m_screen_out.pix32((r*12)+y, x) = palette[0];
+ else
+ m_screen_out.pix32((r*12)+y, x) = palette[1];
+ }
+ }
+ }
+ }
+
+ cursor_cnt = (cursor_cnt + 1) % 13;
+ if(!cursor_cnt)
+ cursor_state ^= 1;
+
+ copybitmap(bitmap, m_screen_out, 0, 0, 0, 0, cliprect);
+ return 0;
+}
+
+//-------------------------------------------------
+// update_scanline: Scanline callback
+//-------------------------------------------------
+
+void ef9364_device::update_scanline(UINT16 scanline)
+{
+ if (scanline == vsync_scanline_pos)
+ {
+ // vsync
+ }
+
+ if (scanline == 0)
+ {
+ draw_border(0);
+ }
+}
+
+//-------------------------------------------------
+// data_w: Registers write access callback
+//-------------------------------------------------
+
+void ef9364_device::command_w(UINT8 cmd)
+{
+ int x,y,i,j;
+
+ switch( cmd&7 )
+ {
+ case 0x0: // Page Erase & Cursor home
+ for( y=0 ; y < EF9364_NB_OF_ROWS ; y++ )
+ {
+ for( x=0 ; x < EF9364_NB_OF_COLUMNS ; x++ )
+ {
+ m_textram->write_byte ( y * EF9364_NB_OF_COLUMNS + x , 0x7F );
+ }
+ }
+ x_curs_pos = 0;
+ y_curs_pos = 0;
+ break;
+
+ case 0x1: // Erase to end of the line and return cursor
+ for( ; x_curs_pos < EF9364_NB_OF_COLUMNS ; x_curs_pos++ )
+ {
+ m_textram->write_byte ( y_curs_pos * EF9364_NB_OF_COLUMNS + x_curs_pos , 0x7F );
+ }
+ x_curs_pos = 0;
+ break;
+
+ case 0x2: // Line feed
+ y_curs_pos++;
+ if( y_curs_pos >= EF9364_NB_OF_ROWS )
+ {
+ // Scroll
+ for( j = 1 ; j < EF9364_NB_OF_ROWS ; j++ )
+ {
+ for( i = 0 ; i < EF9364_NB_OF_COLUMNS ; i++ )
+ {
+ m_textram->write_byte ( (j-1) * EF9364_NB_OF_COLUMNS + i , m_textram->read_byte ( j * EF9364_NB_OF_COLUMNS + i ) );
+ }
+ }
+ // Erase last line
+ for( i = 0 ; i < EF9364_NB_OF_COLUMNS ; i++ )
+ {
+ m_textram->write_byte ( ( EF9364_NB_OF_ROWS - 1 ) * EF9364_NB_OF_COLUMNS + i , 0x7F );
+ }
+
+ y_curs_pos = EF9364_NB_OF_ROWS - 1;
+ }
+ break;
+
+ case 0x3: // Nop
+
+ break;
+
+ case 0x4: // Cursor left
+ if(x_curs_pos)
+ x_curs_pos--;
+ break;
+
+ case 0x5: // Erasure of cursor Line.
+ for( x = 0 ; x < EF9364_NB_OF_COLUMNS ; x++ )
+ {
+ m_textram->write_byte ( y_curs_pos * EF9364_NB_OF_COLUMNS + x , 0x7F );
+ }
+ break;
+
+ case 0x6: // Cursor up
+ if(y_curs_pos)
+ y_curs_pos--;
+ break;
+
+ case 0x7: // Write char
+ if(cmd&0x8)
+ m_textram->write_byte ( y_curs_pos * EF9364_NB_OF_COLUMNS + x_curs_pos , char_latch );
+
+ x_curs_pos++;
+ if( x_curs_pos >= EF9364_NB_OF_COLUMNS )
+ {
+ x_curs_pos=0;
+ y_curs_pos++;
+ if( y_curs_pos >= EF9364_NB_OF_ROWS )
+ {
+ // Scroll
+ for( j = 1 ; j < EF9364_NB_OF_ROWS ; j++ )
+ {
+ for( i = 0 ; i < EF9364_NB_OF_COLUMNS ; i++ )
+ {
+ m_textram->write_byte ( (j-1) * EF9364_NB_OF_COLUMNS + i , m_textram->read_byte ( j * EF9364_NB_OF_COLUMNS + i ) );
+ }
+ }
+ // Erase last line
+ for( i = 0 ; i < EF9364_NB_OF_COLUMNS ; i++ )
+ {
+ m_textram->write_byte ( ( EF9364_NB_OF_ROWS - 1 ) * EF9364_NB_OF_COLUMNS + i , 0x7F );
+ }
+
+ y_curs_pos = EF9364_NB_OF_ROWS - 1;
+ }
+ }
+ break;
+
+ }
+}
+
+void ef9364_device::char_latch_w(UINT8 data)
+{
+ char_latch = data;
+}
diff --git a/src/devices/video/ef9364.h b/src/devices/video/ef9364.h
new file mode 100644
index 00000000000..1519d817196
--- /dev/null
+++ b/src/devices/video/ef9364.h
@@ -0,0 +1,104 @@
+// license:BSD-3-Clause
+// copyright-holders:Jean-Francois DEL NERO
+/*********************************************************************
+
+ ef9364.h
+
+ Thomson EF9364 video controller
+
+*********************************************************************/
+
+#pragma once
+
+#ifndef __EF9364_H__
+#define __EF9364_H__
+
+#define EF9364_NB_OF_COLUMNS 64
+#define EF9364_NB_OF_ROWS 16
+
+#define EF9364_TXTPLANE_MAX_SIZE ( EF9364_NB_OF_COLUMNS * EF9364_NB_OF_ROWS )
+#define EF9364_MAX_TXTPLANES 2
+
+#define MCFG_EF9364_PALETTE(_palette_tag) \
+ ef9364_device::static_set_palette_tag(*device, "^" _palette_tag);
+
+#define MCFG_EF9364_PAGES_CNT(_pages_number) \
+ ef9364_device::static_set_nb_of_pages(*device,_pages_number);
+
+#define MCFG_EF9364_IRQ_HANDLER(_devcb) \
+ devcb = &ef9364_device::set_irq_handler(*device, DEVCB_##_devcb);
+
+//**************************************************************************
+// TYPE DEFINITIONS
+//**************************************************************************
+
+// ======================> ef9364_device
+
+class ef9364_device : public device_t,
+ public device_memory_interface,
+ public device_video_interface
+{
+public:
+ // construction/destruction
+ ef9364_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock);
+
+ // static configuration
+ static void static_set_palette_tag(device_t &device, const char *tag);
+ static void static_set_nb_of_pages(device_t &device, int nb_bitplanes );
+
+ // device interface
+
+ void update_scanline(UINT16 scanline);
+ void set_color_entry( int index, UINT8 r, UINT8 g, UINT8 b );
+
+ UINT32 screen_update(screen_device &screen, bitmap_rgb32 &bitmap, const rectangle &cliprect);
+ void char_latch_w(UINT8 data);
+ void command_w(UINT8 cmd);
+
+protected:
+ // device-level overrides
+ virtual void device_start() override;
+ virtual void device_reset() override;
+
+ // device_config_memory_interface overrides
+ virtual const address_space_config *memory_space_config(address_spacenum spacenum = AS_0) const override;
+
+ // address space configurations
+ const address_space_config m_space_config;
+
+ // inline helper
+
+private:
+ void screen_scanning( int force_clear );
+ void set_video_mode(void);
+ void draw_border(UINT16 line);
+
+ // internal state
+
+ memory_region *m_charset;
+ address_space *m_textram;
+
+ UINT8 x_curs_pos;
+ UINT8 y_curs_pos;
+ UINT8 char_latch;
+
+ UINT8 m_border[80]; //border color
+
+ rgb_t palette[2];
+ int nb_of_pages;
+ int bitplane_xres;
+ int bitplane_yres;
+ int vsync_scanline_pos;
+ int cursor_cnt;
+ int cursor_state;
+
+ UINT32 clock_freq;
+ bitmap_rgb32 m_screen_out;
+
+ required_device<palette_device> m_palette;
+};
+
+// device type definition
+extern const device_type EF9364;
+
+#endif
diff --git a/src/devices/video/ef9365.cpp b/src/devices/video/ef9365.cpp
index f923cfd0813..5f81d7f45b5 100644
--- a/src/devices/video/ef9365.cpp
+++ b/src/devices/video/ef9365.cpp
@@ -938,7 +938,7 @@ void ef9365_device::screen_scanning( int force_clear )
void ef9365_device::ef9365_exec(UINT8 cmd)
{
int tmp_delta_x,tmp_delta_y;
- int busy_cycles;
+ int busy_cycles = 0;
m_state = 0;
if( ( cmd>>4 ) == 0 )
diff --git a/src/devices/video/i82730.cpp b/src/devices/video/i82730.cpp
index d344c7006ef..8cd78863df3 100644
--- a/src/devices/video/i82730.cpp
+++ b/src/devices/video/i82730.cpp
@@ -128,7 +128,7 @@ UINT16 i82730_device::read_word(offs_t address)
{
UINT16 data;
- if (sysbus_16bit() && !(address & 1))
+ if (sysbus_16bit() && WORD_ALIGNED(address))
{
data = m_program->read_word(address);
}
@@ -148,7 +148,7 @@ void i82730_device::write_byte(offs_t address, UINT8 data)
void i82730_device::write_word(offs_t address, UINT16 data)
{
- if (sysbus_16bit() && !(address & 1))
+ if (sysbus_16bit() && WORD_ALIGNED(address))
{
m_program->write_word(address, data);
}
diff --git a/src/devices/video/mc6845.cpp b/src/devices/video/mc6845.cpp
index 827854b0824..04e7c967869 100644
--- a/src/devices/video/mc6845.cpp
+++ b/src/devices/video/mc6845.cpp
@@ -527,7 +527,7 @@ void mc6845_device::recompute_parameters(bool postload)
}
if(m_show_border_area)
- visarea.set(0, horiz_pix_total-1, 0, vert_pix_total-1);
+ visarea.set(0, horiz_pix_total-2, 0, vert_pix_total-2);
else
visarea.set(0 + m_visarea_adjust_min_x, max_visible_x + m_visarea_adjust_max_x, 0 + m_visarea_adjust_min_y, max_visible_y + m_visarea_adjust_max_y);
@@ -553,7 +553,8 @@ void mc6845_device::recompute_parameters(bool postload)
m_hsync_off_pos = hsync_off_pos;
m_vsync_on_pos = vsync_on_pos;
m_vsync_off_pos = vsync_off_pos;
- m_line_counter = 0;
+ if (!postload) // set m_line_counter to 0 on normal operation, but not on postload
+ m_line_counter = 0;
}
}
diff --git a/src/devices/video/pcd8544.cpp b/src/devices/video/pcd8544.cpp
new file mode 100644
index 00000000000..a0de1762fa9
--- /dev/null
+++ b/src/devices/video/pcd8544.cpp
@@ -0,0 +1,226 @@
+// license:BSD-3-Clause
+// copyright-holders:Sandro Ronco
+/***************************************************************************
+
+ Philips PCD8544 LCD controller
+
+***************************************************************************/
+
+#include "emu.h"
+#include "video/pcd8544.h"
+
+#define LOG 0
+
+//**************************************************************************
+// DEVICE DEFINITIONS
+//**************************************************************************
+
+const device_type PCD8544 = &device_creator<pcd8544_device>;
+
+
+//**************************************************************************
+// live device
+//**************************************************************************
+
+//-------------------------------------------------
+// pcd8544_device - constructor
+//-------------------------------------------------
+
+pcd8544_device::pcd8544_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock) :
+ device_t(mconfig, PCD8544, "PCD8544", tag, owner, clock, "pcd8544", __FILE__)
+{
+}
+
+//-------------------------------------------------
+// device_start - device-specific startup
+//-------------------------------------------------
+
+void pcd8544_device::device_start()
+{
+ m_screen_update_cb.bind_relative_to(*owner());
+
+ // state saving
+ save_item(NAME(m_sdin));
+ save_item(NAME(m_sclk));
+ save_item(NAME(m_dc));
+ save_item(NAME(m_bits));
+ save_item(NAME(m_mode));
+ save_item(NAME(m_control));
+ save_item(NAME(m_op_vol));
+ save_item(NAME(m_bias));
+ save_item(NAME(m_temp_coef));
+ save_item(NAME(m_indata));
+ save_item(NAME(m_addr_y));
+ save_item(NAME(m_addr_x));
+ save_item(NAME(m_vram));
+}
+
+//-------------------------------------------------
+// device_reset - device-specific reset
+//-------------------------------------------------
+
+void pcd8544_device::device_reset()
+{
+ m_mode = 0x04; // PD=1, V=0, H=0
+ m_control = 0x00; // E=0, D=0
+ m_addr_y = 0;
+ m_addr_x = 0;
+ m_bias = 0;
+ m_temp_coef = 0;
+ m_op_vol = 0;
+ m_bits = 0;
+ m_indata = 0;
+ m_sdin = 0;
+ m_sclk = 0;
+ m_dc = 0;
+}
+
+void pcd8544_device::exec_command(UINT8 cmd)
+{
+ if (m_mode & 0x01)
+ {
+ if(cmd & 0x80)
+ {
+ m_op_vol = cmd & 0x7f;
+ if (LOG) logerror("PCD8544: set Vop %d\n", m_op_vol);
+ }
+ else if(cmd & 0x40)
+ {
+ logerror("PCD8544: unused command H=1 0x%02x\n", cmd);
+ }
+ else if(cmd & 0x20)
+ {
+ m_mode = cmd & 0x07;
+ if (LOG) logerror("PCD8544: set PD=%d V=%d H=%d\n", BIT(m_mode, 2), BIT(m_mode, 1), BIT(m_mode, 0));
+ }
+ else if(cmd & 0x10)
+ {
+ m_bias = cmd & 0x07;
+ if (LOG) logerror("PCD8544: set bias system %d\n", m_bias);
+ }
+ else if(cmd & 0x08)
+ {
+ logerror("PCD8544: unused command H=1 0x%02x\n", cmd);
+ }
+ else if(cmd & 0x04)
+ {
+ m_temp_coef = cmd & 0x03;
+ if (LOG) logerror("PCD8544: set temperature coefficient %d\n", m_temp_coef);
+ }
+ else if (cmd)
+ {
+ logerror("PCD8544: unused command H=1 0x%02x\n", cmd);
+ }
+ }
+ else
+ {
+ if(cmd & 0x80)
+ {
+ m_addr_x = (cmd & 0x7f) % 84;
+ if (LOG) logerror("PCD8544: set X-address %d\n", cmd & 0x7f);
+ }
+ else if(cmd & 0x40)
+ {
+ m_addr_y = (cmd & 0x07) % 6;
+ if (LOG) logerror("PCD8544: set Y-address %d\n", cmd & 0x07);
+ }
+ else if(cmd & 0x20)
+ {
+ m_mode = cmd & 0x07;
+ if (LOG) logerror("PCD8544: set PD=%d V=%d H=%d\n", BIT(m_mode, 2), BIT(m_mode, 1), BIT(m_mode, 0));
+ }
+ else if(cmd & 0x10)
+ {
+ logerror("PCD8544: unused command H=0 0x%02x\n", cmd);
+ }
+ else if(cmd & 0x08)
+ {
+ m_control = ((cmd & 0x04) >> 1) | (cmd & 0x01);
+ if (LOG) logerror("PCD8544: set D=%d E=%d\n", BIT(m_control, 1), BIT(m_control, 0));
+ }
+ else if (cmd)
+ {
+ logerror("PCD8544: unused command H=0 0x%02x\n", cmd);
+ }
+ }
+}
+
+void pcd8544_device::write_data(UINT8 data)
+{
+ m_vram[m_addr_y * 84 + m_addr_x] = data;
+
+ if (m_mode & 0x02)
+ {
+ m_addr_y++;
+
+ if (m_addr_y > 5)
+ {
+ m_addr_y = 0;
+ m_addr_x = (m_addr_x + 1) % 84;
+ }
+ }
+ else
+ {
+ m_addr_x++;
+ if (m_addr_x > 83)
+ {
+ m_addr_x = 0;
+ m_addr_y = (m_addr_y + 1) % 6;
+ }
+ }
+}
+
+WRITE_LINE_MEMBER(pcd8544_device::sdin_w)
+{
+ m_sdin = state;
+}
+
+WRITE_LINE_MEMBER(pcd8544_device::sclk_w)
+{
+ if (!m_sclk && state)
+ {
+ m_indata = (m_indata << 1) | (m_sdin ? 1 : 0);
+ m_bits++;
+ if (m_bits == 8)
+ {
+ if (m_dc)
+ write_data(m_indata);
+
+ else
+ exec_command(m_indata);
+
+ m_bits = 0;
+ m_indata = 0;
+ }
+ }
+ m_sclk = state;
+}
+
+WRITE_LINE_MEMBER(pcd8544_device::dc_w)
+{
+ m_dc = state;
+}
+
+UINT32 pcd8544_device::screen_update(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect)
+{
+ if ((m_mode & 0x04) == 0)
+ {
+ switch (m_control)
+ {
+ case 0: // display blank
+ case 1: // all display segments on
+ bitmap.fill(m_control & 1, cliprect);
+ break;
+
+ case 2: // normal mode
+ case 3: // inverse video mode
+ if (!m_screen_update_cb.isnull())
+ m_screen_update_cb(screen, bitmap, cliprect, m_vram, m_control & 1);
+ break;
+ }
+ }
+ else
+ bitmap.fill(0, cliprect);
+
+ return 0;
+}
diff --git a/src/devices/video/pcd8544.h b/src/devices/video/pcd8544.h
new file mode 100644
index 00000000000..bfcd802823b
--- /dev/null
+++ b/src/devices/video/pcd8544.h
@@ -0,0 +1,72 @@
+// license:BSD-3-Clause
+// copyright-holders:Sandro Ronco
+/***************************************************************************
+
+ Philips PCD8544 LCD controller
+
+***************************************************************************/
+
+#pragma once
+
+#ifndef __PCD8544_H__
+#define __PCD8544_H__
+
+
+//**************************************************************************
+// TYPE DEFINITIONS
+//**************************************************************************
+
+typedef device_delegate<void (device_t &device, bitmap_ind16 &bitmap, const rectangle &cliprect , UINT8 *vram, int inv)> pcd8544_screen_update_delegate;
+#define PCD8544_SCREEN_UPDATE(name) void name(device_t &device, bitmap_ind16 &bitmap, const rectangle &cliprect , UINT8 *vram, int inv)
+
+#define MCFG_PCD8544_ADD( _tag ) \
+ MCFG_DEVICE_ADD( _tag, PCD8544, 0 )
+
+#define MCFG_PCD8544_SCREEN_UPDATE_CALLBACK(_class, _method) \
+ pcd8544_device::static_set_screen_update_cb(*device, pcd8544_screen_update_delegate(&_class::_method, #_class "::" #_method, downcast<_class *>(owner)));
+
+
+// ======================> pcd8544_device
+
+class pcd8544_device : public device_t
+{
+public:
+ // construction/destruction
+ pcd8544_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock);
+ static void static_set_screen_update_cb(device_t &device, pcd8544_screen_update_delegate _cb) { downcast<pcd8544_device &>(device).m_screen_update_cb = _cb; }
+
+ // device interface
+ DECLARE_WRITE_LINE_MEMBER(sdin_w);
+ DECLARE_WRITE_LINE_MEMBER(sclk_w);
+ DECLARE_WRITE_LINE_MEMBER(dc_w);
+ UINT32 screen_update(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
+
+protected:
+ // device-level overrides
+ virtual void device_start() override;
+ virtual void device_reset() override;
+
+ void exec_command(UINT8 cmd);
+ void write_data(UINT8 data);
+
+private:
+ pcd8544_screen_update_delegate m_screen_update_cb; // screen update callback
+ int m_sdin;
+ int m_sclk;
+ int m_dc;
+ int m_bits;
+ UINT8 m_mode;
+ UINT8 m_control;
+ UINT8 m_op_vol;
+ UINT8 m_bias;
+ UINT8 m_temp_coef;
+ UINT8 m_indata;
+ UINT8 m_addr_y;
+ UINT8 m_addr_x;
+ UINT8 m_vram[6*84]; // 4032 bit video ram
+};
+
+// device type definition
+extern const device_type PCD8544;
+
+#endif
diff --git a/src/devices/video/vooddefs.h b/src/devices/video/vooddefs.h
index 49e5042dbaf..5bef9d4cc8e 100644
--- a/src/devices/video/vooddefs.h
+++ b/src/devices/video/vooddefs.h
@@ -9,1350 +9,6 @@
***************************************************************************/
-/*************************************
- *
- * Misc. constants
- *
- *************************************/
-
-/* enumeration describing reasons we might be stalled */
-enum
-{
- NOT_STALLED = 0,
- STALLED_UNTIL_FIFO_LWM,
- STALLED_UNTIL_FIFO_EMPTY
-};
-
-// Use old macro style or newer SSE2 optimized functions
-#define USE_OLD_RASTER 0
-
-// Use old table lookup versus straight double divide
-#define USE_FAST_RECIP 0
-
-/* maximum number of TMUs */
-#define MAX_TMU 2
-
-/* accumulate operations less than this number of clocks */
-#define ACCUMULATE_THRESHOLD 0
-
-/* number of clocks to set up a triangle (just a guess) */
-#define TRIANGLE_SETUP_CLOCKS 100
-
-/* maximum number of rasterizers */
-#define MAX_RASTERIZERS 1024
-
-/* size of the rasterizer hash table */
-#define RASTER_HASH_SIZE 97
-
-/* flags for LFB writes */
-#define LFB_RGB_PRESENT 1
-#define LFB_ALPHA_PRESENT 2
-#define LFB_DEPTH_PRESENT 4
-#define LFB_DEPTH_PRESENT_MSW 8
-
-/* flags for the register access array */
-#define REGISTER_READ 0x01 /* reads are allowed */
-#define REGISTER_WRITE 0x02 /* writes are allowed */
-#define REGISTER_PIPELINED 0x04 /* writes are pipelined */
-#define REGISTER_FIFO 0x08 /* writes go to FIFO */
-#define REGISTER_WRITETHRU 0x10 /* writes are valid even for CMDFIFO */
-
-/* shorter combinations to make the table smaller */
-#define REG_R (REGISTER_READ)
-#define REG_W (REGISTER_WRITE)
-#define REG_WT (REGISTER_WRITE | REGISTER_WRITETHRU)
-#define REG_RW (REGISTER_READ | REGISTER_WRITE)
-#define REG_RWT (REGISTER_READ | REGISTER_WRITE | REGISTER_WRITETHRU)
-#define REG_RP (REGISTER_READ | REGISTER_PIPELINED)
-#define REG_WP (REGISTER_WRITE | REGISTER_PIPELINED)
-#define REG_RWP (REGISTER_READ | REGISTER_WRITE | REGISTER_PIPELINED)
-#define REG_RWPT (REGISTER_READ | REGISTER_WRITE | REGISTER_PIPELINED | REGISTER_WRITETHRU)
-#define REG_RF (REGISTER_READ | REGISTER_FIFO)
-#define REG_WF (REGISTER_WRITE | REGISTER_FIFO)
-#define REG_RWF (REGISTER_READ | REGISTER_WRITE | REGISTER_FIFO)
-#define REG_RPF (REGISTER_READ | REGISTER_PIPELINED | REGISTER_FIFO)
-#define REG_WPF (REGISTER_WRITE | REGISTER_PIPELINED | REGISTER_FIFO)
-#define REG_RWPF (REGISTER_READ | REGISTER_WRITE | REGISTER_PIPELINED | REGISTER_FIFO)
-
-/* lookup bits is the log2 of the size of the reciprocal/log table */
-#define RECIPLOG_LOOKUP_BITS 9
-
-/* input precision is how many fraction bits the input value has; this is a 64-bit number */
-#define RECIPLOG_INPUT_PREC 32
-
-/* lookup precision is how many fraction bits each table entry contains */
-#define RECIPLOG_LOOKUP_PREC 22
-
-/* output precision is how many fraction bits the result should have */
-#define RECIP_OUTPUT_PREC 15
-#define LOG_OUTPUT_PREC 8
-
-
-
-/*************************************
- *
- * Register constants
- *
- *************************************/
-
-/* Codes to the right:
- R = readable
- W = writeable
- P = pipelined
- F = goes to FIFO
-*/
-
-/* 0x000 */
-#define status (0x000/4) /* R P */
-#define intrCtrl (0x004/4) /* RW P -- Voodoo2/Banshee only */
-#define vertexAx (0x008/4) /* W PF */
-#define vertexAy (0x00c/4) /* W PF */
-#define vertexBx (0x010/4) /* W PF */
-#define vertexBy (0x014/4) /* W PF */
-#define vertexCx (0x018/4) /* W PF */
-#define vertexCy (0x01c/4) /* W PF */
-#define startR (0x020/4) /* W PF */
-#define startG (0x024/4) /* W PF */
-#define startB (0x028/4) /* W PF */
-#define startZ (0x02c/4) /* W PF */
-#define startA (0x030/4) /* W PF */
-#define startS (0x034/4) /* W PF */
-#define startT (0x038/4) /* W PF */
-#define startW (0x03c/4) /* W PF */
-
-/* 0x040 */
-#define dRdX (0x040/4) /* W PF */
-#define dGdX (0x044/4) /* W PF */
-#define dBdX (0x048/4) /* W PF */
-#define dZdX (0x04c/4) /* W PF */
-#define dAdX (0x050/4) /* W PF */
-#define dSdX (0x054/4) /* W PF */
-#define dTdX (0x058/4) /* W PF */
-#define dWdX (0x05c/4) /* W PF */
-#define dRdY (0x060/4) /* W PF */
-#define dGdY (0x064/4) /* W PF */
-#define dBdY (0x068/4) /* W PF */
-#define dZdY (0x06c/4) /* W PF */
-#define dAdY (0x070/4) /* W PF */
-#define dSdY (0x074/4) /* W PF */
-#define dTdY (0x078/4) /* W PF */
-#define dWdY (0x07c/4) /* W PF */
-
-/* 0x080 */
-#define triangleCMD (0x080/4) /* W PF */
-#define fvertexAx (0x088/4) /* W PF */
-#define fvertexAy (0x08c/4) /* W PF */
-#define fvertexBx (0x090/4) /* W PF */
-#define fvertexBy (0x094/4) /* W PF */
-#define fvertexCx (0x098/4) /* W PF */
-#define fvertexCy (0x09c/4) /* W PF */
-#define fstartR (0x0a0/4) /* W PF */
-#define fstartG (0x0a4/4) /* W PF */
-#define fstartB (0x0a8/4) /* W PF */
-#define fstartZ (0x0ac/4) /* W PF */
-#define fstartA (0x0b0/4) /* W PF */
-#define fstartS (0x0b4/4) /* W PF */
-#define fstartT (0x0b8/4) /* W PF */
-#define fstartW (0x0bc/4) /* W PF */
-
-/* 0x0c0 */
-#define fdRdX (0x0c0/4) /* W PF */
-#define fdGdX (0x0c4/4) /* W PF */
-#define fdBdX (0x0c8/4) /* W PF */
-#define fdZdX (0x0cc/4) /* W PF */
-#define fdAdX (0x0d0/4) /* W PF */
-#define fdSdX (0x0d4/4) /* W PF */
-#define fdTdX (0x0d8/4) /* W PF */
-#define fdWdX (0x0dc/4) /* W PF */
-#define fdRdY (0x0e0/4) /* W PF */
-#define fdGdY (0x0e4/4) /* W PF */
-#define fdBdY (0x0e8/4) /* W PF */
-#define fdZdY (0x0ec/4) /* W PF */
-#define fdAdY (0x0f0/4) /* W PF */
-#define fdSdY (0x0f4/4) /* W PF */
-#define fdTdY (0x0f8/4) /* W PF */
-#define fdWdY (0x0fc/4) /* W PF */
-
-/* 0x100 */
-#define ftriangleCMD (0x100/4) /* W PF */
-#define fbzColorPath (0x104/4) /* RW PF */
-#define fogMode (0x108/4) /* RW PF */
-#define alphaMode (0x10c/4) /* RW PF */
-#define fbzMode (0x110/4) /* RW F */
-#define lfbMode (0x114/4) /* RW F */
-#define clipLeftRight (0x118/4) /* RW F */
-#define clipLowYHighY (0x11c/4) /* RW F */
-#define nopCMD (0x120/4) /* W F */
-#define fastfillCMD (0x124/4) /* W F */
-#define swapbufferCMD (0x128/4) /* W F */
-#define fogColor (0x12c/4) /* W F */
-#define zaColor (0x130/4) /* W F */
-#define chromaKey (0x134/4) /* W F */
-#define chromaRange (0x138/4) /* W F -- Voodoo2/Banshee only */
-#define userIntrCMD (0x13c/4) /* W F -- Voodoo2/Banshee only */
-
-/* 0x140 */
-#define stipple (0x140/4) /* RW F */
-#define color0 (0x144/4) /* RW F */
-#define color1 (0x148/4) /* RW F */
-#define fbiPixelsIn (0x14c/4) /* R */
-#define fbiChromaFail (0x150/4) /* R */
-#define fbiZfuncFail (0x154/4) /* R */
-#define fbiAfuncFail (0x158/4) /* R */
-#define fbiPixelsOut (0x15c/4) /* R */
-#define fogTable (0x160/4) /* W F */
-
-/* 0x1c0 */
-#define cmdFifoBaseAddr (0x1e0/4) /* RW -- Voodoo2 only */
-#define cmdFifoBump (0x1e4/4) /* RW -- Voodoo2 only */
-#define cmdFifoRdPtr (0x1e8/4) /* RW -- Voodoo2 only */
-#define cmdFifoAMin (0x1ec/4) /* RW -- Voodoo2 only */
-#define colBufferAddr (0x1ec/4) /* RW -- Banshee only */
-#define cmdFifoAMax (0x1f0/4) /* RW -- Voodoo2 only */
-#define colBufferStride (0x1f0/4) /* RW -- Banshee only */
-#define cmdFifoDepth (0x1f4/4) /* RW -- Voodoo2 only */
-#define auxBufferAddr (0x1f4/4) /* RW -- Banshee only */
-#define cmdFifoHoles (0x1f8/4) /* RW -- Voodoo2 only */
-#define auxBufferStride (0x1f8/4) /* RW -- Banshee only */
-
-/* 0x200 */
-#define fbiInit4 (0x200/4) /* RW -- Voodoo/Voodoo2 only */
-#define clipLeftRight1 (0x200/4) /* RW -- Banshee only */
-#define vRetrace (0x204/4) /* R -- Voodoo/Voodoo2 only */
-#define clipTopBottom1 (0x204/4) /* RW -- Banshee only */
-#define backPorch (0x208/4) /* RW -- Voodoo/Voodoo2 only */
-#define videoDimensions (0x20c/4) /* RW -- Voodoo/Voodoo2 only */
-#define fbiInit0 (0x210/4) /* RW -- Voodoo/Voodoo2 only */
-#define fbiInit1 (0x214/4) /* RW -- Voodoo/Voodoo2 only */
-#define fbiInit2 (0x218/4) /* RW -- Voodoo/Voodoo2 only */
-#define fbiInit3 (0x21c/4) /* RW -- Voodoo/Voodoo2 only */
-#define hSync (0x220/4) /* W -- Voodoo/Voodoo2 only */
-#define vSync (0x224/4) /* W -- Voodoo/Voodoo2 only */
-#define clutData (0x228/4) /* W F -- Voodoo/Voodoo2 only */
-#define dacData (0x22c/4) /* W -- Voodoo/Voodoo2 only */
-#define maxRgbDelta (0x230/4) /* W -- Voodoo/Voodoo2 only */
-#define hBorder (0x234/4) /* W -- Voodoo2 only */
-#define vBorder (0x238/4) /* W -- Voodoo2 only */
-#define borderColor (0x23c/4) /* W -- Voodoo2 only */
-
-/* 0x240 */
-#define hvRetrace (0x240/4) /* R -- Voodoo2 only */
-#define fbiInit5 (0x244/4) /* RW -- Voodoo2 only */
-#define fbiInit6 (0x248/4) /* RW -- Voodoo2 only */
-#define fbiInit7 (0x24c/4) /* RW -- Voodoo2 only */
-#define swapPending (0x24c/4) /* W -- Banshee only */
-#define leftOverlayBuf (0x250/4) /* W -- Banshee only */
-#define rightOverlayBuf (0x254/4) /* W -- Banshee only */
-#define fbiSwapHistory (0x258/4) /* R -- Voodoo2/Banshee only */
-#define fbiTrianglesOut (0x25c/4) /* R -- Voodoo2/Banshee only */
-#define sSetupMode (0x260/4) /* W PF -- Voodoo2/Banshee only */
-#define sVx (0x264/4) /* W PF -- Voodoo2/Banshee only */
-#define sVy (0x268/4) /* W PF -- Voodoo2/Banshee only */
-#define sARGB (0x26c/4) /* W PF -- Voodoo2/Banshee only */
-#define sRed (0x270/4) /* W PF -- Voodoo2/Banshee only */
-#define sGreen (0x274/4) /* W PF -- Voodoo2/Banshee only */
-#define sBlue (0x278/4) /* W PF -- Voodoo2/Banshee only */
-#define sAlpha (0x27c/4) /* W PF -- Voodoo2/Banshee only */
-
-/* 0x280 */
-#define sVz (0x280/4) /* W PF -- Voodoo2/Banshee only */
-#define sWb (0x284/4) /* W PF -- Voodoo2/Banshee only */
-#define sWtmu0 (0x288/4) /* W PF -- Voodoo2/Banshee only */
-#define sS_W0 (0x28c/4) /* W PF -- Voodoo2/Banshee only */
-#define sT_W0 (0x290/4) /* W PF -- Voodoo2/Banshee only */
-#define sWtmu1 (0x294/4) /* W PF -- Voodoo2/Banshee only */
-#define sS_Wtmu1 (0x298/4) /* W PF -- Voodoo2/Banshee only */
-#define sT_Wtmu1 (0x29c/4) /* W PF -- Voodoo2/Banshee only */
-#define sDrawTriCMD (0x2a0/4) /* W PF -- Voodoo2/Banshee only */
-#define sBeginTriCMD (0x2a4/4) /* W PF -- Voodoo2/Banshee only */
-
-/* 0x2c0 */
-#define bltSrcBaseAddr (0x2c0/4) /* RW PF -- Voodoo2 only */
-#define bltDstBaseAddr (0x2c4/4) /* RW PF -- Voodoo2 only */
-#define bltXYStrides (0x2c8/4) /* RW PF -- Voodoo2 only */
-#define bltSrcChromaRange (0x2cc/4) /* RW PF -- Voodoo2 only */
-#define bltDstChromaRange (0x2d0/4) /* RW PF -- Voodoo2 only */
-#define bltClipX (0x2d4/4) /* RW PF -- Voodoo2 only */
-#define bltClipY (0x2d8/4) /* RW PF -- Voodoo2 only */
-#define bltSrcXY (0x2e0/4) /* RW PF -- Voodoo2 only */
-#define bltDstXY (0x2e4/4) /* RW PF -- Voodoo2 only */
-#define bltSize (0x2e8/4) /* RW PF -- Voodoo2 only */
-#define bltRop (0x2ec/4) /* RW PF -- Voodoo2 only */
-#define bltColor (0x2f0/4) /* RW PF -- Voodoo2 only */
-#define bltCommand (0x2f8/4) /* RW PF -- Voodoo2 only */
-#define bltData (0x2fc/4) /* W PF -- Voodoo2 only */
-
-/* 0x300 */
-#define textureMode (0x300/4) /* W PF */
-#define tLOD (0x304/4) /* W PF */
-#define tDetail (0x308/4) /* W PF */
-#define texBaseAddr (0x30c/4) /* W PF */
-#define texBaseAddr_1 (0x310/4) /* W PF */
-#define texBaseAddr_2 (0x314/4) /* W PF */
-#define texBaseAddr_3_8 (0x318/4) /* W PF */
-#define trexInit0 (0x31c/4) /* W F -- Voodoo/Voodoo2 only */
-#define trexInit1 (0x320/4) /* W F */
-#define nccTable (0x324/4) /* W F */
-
-
-
-// 2D registers
-#define banshee2D_clip0Min (0x008/4)
-#define banshee2D_clip0Max (0x00c/4)
-#define banshee2D_dstBaseAddr (0x010/4)
-#define banshee2D_dstFormat (0x014/4)
-#define banshee2D_srcColorkeyMin (0x018/4)
-#define banshee2D_srcColorkeyMax (0x01c/4)
-#define banshee2D_dstColorkeyMin (0x020/4)
-#define banshee2D_dstColorkeyMax (0x024/4)
-#define banshee2D_bresError0 (0x028/4)
-#define banshee2D_bresError1 (0x02c/4)
-#define banshee2D_rop (0x030/4)
-#define banshee2D_srcBaseAddr (0x034/4)
-#define banshee2D_commandExtra (0x038/4)
-#define banshee2D_lineStipple (0x03c/4)
-#define banshee2D_lineStyle (0x040/4)
-#define banshee2D_pattern0Alias (0x044/4)
-#define banshee2D_pattern1Alias (0x048/4)
-#define banshee2D_clip1Min (0x04c/4)
-#define banshee2D_clip1Max (0x050/4)
-#define banshee2D_srcFormat (0x054/4)
-#define banshee2D_srcSize (0x058/4)
-#define banshee2D_srcXY (0x05c/4)
-#define banshee2D_colorBack (0x060/4)
-#define banshee2D_colorFore (0x064/4)
-#define banshee2D_dstSize (0x068/4)
-#define banshee2D_dstXY (0x06c/4)
-#define banshee2D_command (0x070/4)
-
-
-/*************************************
- *
- * Alias map of the first 64
- * registers when remapped
- *
- *************************************/
-
-static const UINT8 register_alias_map[0x40] =
-{
- status, 0x004/4, vertexAx, vertexAy,
- vertexBx, vertexBy, vertexCx, vertexCy,
- startR, dRdX, dRdY, startG,
- dGdX, dGdY, startB, dBdX,
- dBdY, startZ, dZdX, dZdY,
- startA, dAdX, dAdY, startS,
- dSdX, dSdY, startT, dTdX,
- dTdY, startW, dWdX, dWdY,
-
- triangleCMD,0x084/4, fvertexAx, fvertexAy,
- fvertexBx, fvertexBy, fvertexCx, fvertexCy,
- fstartR, fdRdX, fdRdY, fstartG,
- fdGdX, fdGdY, fstartB, fdBdX,
- fdBdY, fstartZ, fdZdX, fdZdY,
- fstartA, fdAdX, fdAdY, fstartS,
- fdSdX, fdSdY, fstartT, fdTdX,
- fdTdY, fstartW, fdWdX, fdWdY
-};
-
-
-
-/*************************************
- *
- * Table of per-register access rights
- *
- *************************************/
-
-static const UINT8 voodoo_register_access[0x100] =
-{
- /* 0x000 */
- REG_RP, 0, REG_WPF, REG_WPF,
- REG_WPF, REG_WPF, REG_WPF, REG_WPF,
- REG_WPF, REG_WPF, REG_WPF, REG_WPF,
- REG_WPF, REG_WPF, REG_WPF, REG_WPF,
-
- /* 0x040 */
- REG_WPF, REG_WPF, REG_WPF, REG_WPF,
- REG_WPF, REG_WPF, REG_WPF, REG_WPF,
- REG_WPF, REG_WPF, REG_WPF, REG_WPF,
- REG_WPF, REG_WPF, REG_WPF, REG_WPF,
-
- /* 0x080 */
- REG_WPF, 0, REG_WPF, REG_WPF,
- REG_WPF, REG_WPF, REG_WPF, REG_WPF,
- REG_WPF, REG_WPF, REG_WPF, REG_WPF,
- REG_WPF, REG_WPF, REG_WPF, REG_WPF,
-
- /* 0x0c0 */
- REG_WPF, REG_WPF, REG_WPF, REG_WPF,
- REG_WPF, REG_WPF, REG_WPF, REG_WPF,
- REG_WPF, REG_WPF, REG_WPF, REG_WPF,
- REG_WPF, REG_WPF, REG_WPF, REG_WPF,
-
- /* 0x100 */
- REG_WPF, REG_RWPF, REG_RWPF, REG_RWPF,
- REG_RWF, REG_RWF, REG_RWF, REG_RWF,
- REG_WF, REG_WF, REG_WF, REG_WF,
- REG_WF, REG_WF, 0, 0,
-
- /* 0x140 */
- REG_RWF, REG_RWF, REG_RWF, REG_R,
- REG_R, REG_R, REG_R, REG_R,
- REG_WF, REG_WF, REG_WF, REG_WF,
- REG_WF, REG_WF, REG_WF, REG_WF,
-
- /* 0x180 */
- REG_WF, REG_WF, REG_WF, REG_WF,
- REG_WF, REG_WF, REG_WF, REG_WF,
- REG_WF, REG_WF, REG_WF, REG_WF,
- REG_WF, REG_WF, REG_WF, REG_WF,
-
- /* 0x1c0 */
- REG_WF, REG_WF, REG_WF, REG_WF,
- REG_WF, REG_WF, REG_WF, REG_WF,
- 0, 0, 0, 0,
- 0, 0, 0, 0,
-
- /* 0x200 */
- REG_RW, REG_R, REG_RW, REG_RW,
- REG_RW, REG_RW, REG_RW, REG_RW,
- REG_W, REG_W, REG_W, REG_W,
- REG_W, 0, 0, 0,
-
- /* 0x240 */
- 0, 0, 0, 0,
- 0, 0, 0, 0,
- 0, 0, 0, 0,
- 0, 0, 0, 0,
-
- /* 0x280 */
- 0, 0, 0, 0,
- 0, 0, 0, 0,
- 0, 0, 0, 0,
- 0, 0, 0, 0,
-
- /* 0x2c0 */
- 0, 0, 0, 0,
- 0, 0, 0, 0,
- 0, 0, 0, 0,
- 0, 0, 0, 0,
-
- /* 0x300 */
- REG_WPF, REG_WPF, REG_WPF, REG_WPF,
- REG_WPF, REG_WPF, REG_WPF, REG_WF,
- REG_WF, REG_WF, REG_WF, REG_WF,
- REG_WF, REG_WF, REG_WF, REG_WF,
-
- /* 0x340 */
- REG_WF, REG_WF, REG_WF, REG_WF,
- REG_WF, REG_WF, REG_WF, REG_WF,
- REG_WF, REG_WF, REG_WF, REG_WF,
- REG_WF, REG_WF, REG_WF, REG_WF,
-
- /* 0x380 */
- REG_WF
-};
-
-
-static const UINT8 voodoo2_register_access[0x100] =
-{
- /* 0x000 */
- REG_RP, REG_RWPT, REG_WPF, REG_WPF,
- REG_WPF, REG_WPF, REG_WPF, REG_WPF,
- REG_WPF, REG_WPF, REG_WPF, REG_WPF,
- REG_WPF, REG_WPF, REG_WPF, REG_WPF,
-
- /* 0x040 */
- REG_WPF, REG_WPF, REG_WPF, REG_WPF,
- REG_WPF, REG_WPF, REG_WPF, REG_WPF,
- REG_WPF, REG_WPF, REG_WPF, REG_WPF,
- REG_WPF, REG_WPF, REG_WPF, REG_WPF,
-
- /* 0x080 */
- REG_WPF, REG_WPF, REG_WPF, REG_WPF,
- REG_WPF, REG_WPF, REG_WPF, REG_WPF,
- REG_WPF, REG_WPF, REG_WPF, REG_WPF,
- REG_WPF, REG_WPF, REG_WPF, REG_WPF,
-
- /* 0x0c0 */
- REG_WPF, REG_WPF, REG_WPF, REG_WPF,
- REG_WPF, REG_WPF, REG_WPF, REG_WPF,
- REG_WPF, REG_WPF, REG_WPF, REG_WPF,
- REG_WPF, REG_WPF, REG_WPF, REG_WPF,
-
- /* 0x100 */
- REG_WPF, REG_RWPF, REG_RWPF, REG_RWPF,
- REG_RWF, REG_RWF, REG_RWF, REG_RWF,
- REG_WF, REG_WF, REG_WF, REG_WF,
- REG_WF, REG_WF, REG_WF, REG_WF,
-
- /* 0x140 */
- REG_RWF, REG_RWF, REG_RWF, REG_R,
- REG_R, REG_R, REG_R, REG_R,
- REG_WF, REG_WF, REG_WF, REG_WF,
- REG_WF, REG_WF, REG_WF, REG_WF,
-
- /* 0x180 */
- REG_WF, REG_WF, REG_WF, REG_WF,
- REG_WF, REG_WF, REG_WF, REG_WF,
- REG_WF, REG_WF, REG_WF, REG_WF,
- REG_WF, REG_WF, REG_WF, REG_WF,
-
- /* 0x1c0 */
- REG_WF, REG_WF, REG_WF, REG_WF,
- REG_WF, REG_WF, REG_WF, REG_WF,
- REG_RWT, REG_RWT, REG_RWT, REG_RWT,
- REG_RWT, REG_RWT, REG_RWT, REG_RW,
-
- /* 0x200 */
- REG_RWT, REG_R, REG_RWT, REG_RWT,
- REG_RWT, REG_RWT, REG_RWT, REG_RWT,
- REG_WT, REG_WT, REG_WF, REG_WT,
- REG_WT, REG_WT, REG_WT, REG_WT,
-
- /* 0x240 */
- REG_R, REG_RWT, REG_RWT, REG_RWT,
- 0, 0, REG_R, REG_R,
- REG_WPF, REG_WPF, REG_WPF, REG_WPF,
- REG_WPF, REG_WPF, REG_WPF, REG_WPF,
-
- /* 0x280 */
- REG_WPF, REG_WPF, REG_WPF, REG_WPF,
- REG_WPF, REG_WPF, REG_WPF, REG_WPF,
- REG_WPF, REG_WPF, 0, 0,
- 0, 0, 0, 0,
-
- /* 0x2c0 */
- REG_RWPF, REG_RWPF, REG_RWPF, REG_RWPF,
- REG_RWPF, REG_RWPF, REG_RWPF, REG_RWPF,
- REG_RWPF, REG_RWPF, REG_RWPF, REG_RWPF,
- REG_RWPF, REG_RWPF, REG_RWPF, REG_WPF,
-
- /* 0x300 */
- REG_WPF, REG_WPF, REG_WPF, REG_WPF,
- REG_WPF, REG_WPF, REG_WPF, REG_WF,
- REG_WF, REG_WF, REG_WF, REG_WF,
- REG_WF, REG_WF, REG_WF, REG_WF,
-
- /* 0x340 */
- REG_WF, REG_WF, REG_WF, REG_WF,
- REG_WF, REG_WF, REG_WF, REG_WF,
- REG_WF, REG_WF, REG_WF, REG_WF,
- REG_WF, REG_WF, REG_WF, REG_WF,
-
- /* 0x380 */
- REG_WF
-};
-
-
-static const UINT8 banshee_register_access[0x100] =
-{
- /* 0x000 */
- REG_RP, REG_RWPT, REG_WPF, REG_WPF,
- REG_WPF, REG_WPF, REG_WPF, REG_WPF,
- REG_WPF, REG_WPF, REG_WPF, REG_WPF,
- REG_WPF, REG_WPF, REG_WPF, REG_WPF,
-
- /* 0x040 */
- REG_WPF, REG_WPF, REG_WPF, REG_WPF,
- REG_WPF, REG_WPF, REG_WPF, REG_WPF,
- REG_WPF, REG_WPF, REG_WPF, REG_WPF,
- REG_WPF, REG_WPF, REG_WPF, REG_WPF,
-
- /* 0x080 */
- REG_WPF, REG_WPF, REG_WPF, REG_WPF,
- REG_WPF, REG_WPF, REG_WPF, REG_WPF,
- REG_WPF, REG_WPF, REG_WPF, REG_WPF,
- REG_WPF, REG_WPF, REG_WPF, REG_WPF,
-
- /* 0x0c0 */
- REG_WPF, REG_WPF, REG_WPF, REG_WPF,
- REG_WPF, REG_WPF, REG_WPF, REG_WPF,
- REG_WPF, REG_WPF, REG_WPF, REG_WPF,
- REG_WPF, REG_WPF, REG_WPF, REG_WPF,
-
- /* 0x100 */
- REG_WPF, REG_RWPF, REG_RWPF, REG_RWPF,
- REG_RWF, REG_RWF, REG_RWF, REG_RWF,
- REG_WF, REG_WF, REG_WF, REG_WF,
- REG_WF, REG_WF, REG_WF, REG_WF,
-
- /* 0x140 */
- REG_RWF, REG_RWF, REG_RWF, REG_R,
- REG_R, REG_R, REG_R, REG_R,
- REG_WF, REG_WF, REG_WF, REG_WF,
- REG_WF, REG_WF, REG_WF, REG_WF,
-
- /* 0x180 */
- REG_WF, REG_WF, REG_WF, REG_WF,
- REG_WF, REG_WF, REG_WF, REG_WF,
- REG_WF, REG_WF, REG_WF, REG_WF,
- REG_WF, REG_WF, REG_WF, REG_WF,
-
- /* 0x1c0 */
- REG_WF, REG_WF, REG_WF, REG_WF,
- REG_WF, REG_WF, REG_WF, REG_WF,
- 0, 0, 0, REG_RWF,
- REG_RWF, REG_RWF, REG_RWF, 0,
-
- /* 0x200 */
- REG_RWF, REG_RWF, 0, 0,
- 0, 0, 0, 0,
- 0, 0, 0, 0,
- 0, 0, 0, 0,
-
- /* 0x240 */
- 0, 0, 0, REG_WT,
- REG_RWF, REG_RWF, REG_WPF, REG_WPF,
- REG_WPF, REG_WPF, REG_R, REG_R,
- REG_WPF, REG_WPF, REG_WPF, REG_WPF,
-
- /* 0x280 */
- REG_WPF, REG_WPF, REG_WPF, REG_WPF,
- REG_WPF, REG_WPF, REG_WPF, REG_WPF,
- REG_WPF, REG_WPF, 0, 0,
- 0, 0, 0, 0,
-
- /* 0x2c0 */
- 0, 0, 0, 0,
- 0, 0, 0, 0,
- 0, 0, 0, 0,
- 0, 0, 0, 0,
-
- /* 0x300 */
- REG_WPF, REG_WPF, REG_WPF, REG_WPF,
- REG_WPF, REG_WPF, REG_WPF, 0,
- REG_WF, REG_WF, REG_WF, REG_WF,
- REG_WF, REG_WF, REG_WF, REG_WF,
-
- /* 0x340 */
- REG_WF, REG_WF, REG_WF, REG_WF,
- REG_WF, REG_WF, REG_WF, REG_WF,
- REG_WF, REG_WF, REG_WF, REG_WF,
- REG_WF, REG_WF, REG_WF, REG_WF,
-
- /* 0x380 */
- REG_WF
-};
-
-
-
-/*************************************
- *
- * Register string table for debug
- *
- *************************************/
-
-static const char *const voodoo_reg_name[] =
-{
- /* 0x000 */
- "status", "{intrCtrl}", "vertexAx", "vertexAy",
- "vertexBx", "vertexBy", "vertexCx", "vertexCy",
- "startR", "startG", "startB", "startZ",
- "startA", "startS", "startT", "startW",
- /* 0x040 */
- "dRdX", "dGdX", "dBdX", "dZdX",
- "dAdX", "dSdX", "dTdX", "dWdX",
- "dRdY", "dGdY", "dBdY", "dZdY",
- "dAdY", "dSdY", "dTdY", "dWdY",
- /* 0x080 */
- "triangleCMD", "reserved084", "fvertexAx", "fvertexAy",
- "fvertexBx", "fvertexBy", "fvertexCx", "fvertexCy",
- "fstartR", "fstartG", "fstartB", "fstartZ",
- "fstartA", "fstartS", "fstartT", "fstartW",
- /* 0x0c0 */
- "fdRdX", "fdGdX", "fdBdX", "fdZdX",
- "fdAdX", "fdSdX", "fdTdX", "fdWdX",
- "fdRdY", "fdGdY", "fdBdY", "fdZdY",
- "fdAdY", "fdSdY", "fdTdY", "fdWdY",
- /* 0x100 */
- "ftriangleCMD", "fbzColorPath", "fogMode", "alphaMode",
- "fbzMode", "lfbMode", "clipLeftRight","clipLowYHighY",
- "nopCMD", "fastfillCMD", "swapbufferCMD","fogColor",
- "zaColor", "chromaKey", "{chromaRange}","{userIntrCMD}",
- /* 0x140 */
- "stipple", "color0", "color1", "fbiPixelsIn",
- "fbiChromaFail","fbiZfuncFail", "fbiAfuncFail", "fbiPixelsOut",
- "fogTable160", "fogTable164", "fogTable168", "fogTable16c",
- "fogTable170", "fogTable174", "fogTable178", "fogTable17c",
- /* 0x180 */
- "fogTable180", "fogTable184", "fogTable188", "fogTable18c",
- "fogTable190", "fogTable194", "fogTable198", "fogTable19c",
- "fogTable1a0", "fogTable1a4", "fogTable1a8", "fogTable1ac",
- "fogTable1b0", "fogTable1b4", "fogTable1b8", "fogTable1bc",
- /* 0x1c0 */
- "fogTable1c0", "fogTable1c4", "fogTable1c8", "fogTable1cc",
- "fogTable1d0", "fogTable1d4", "fogTable1d8", "fogTable1dc",
- "{cmdFifoBaseAddr}","{cmdFifoBump}","{cmdFifoRdPtr}","{cmdFifoAMin}",
- "{cmdFifoAMax}","{cmdFifoDepth}","{cmdFifoHoles}","reserved1fc",
- /* 0x200 */
- "fbiInit4", "vRetrace", "backPorch", "videoDimensions",
- "fbiInit0", "fbiInit1", "fbiInit2", "fbiInit3",
- "hSync", "vSync", "clutData", "dacData",
- "maxRgbDelta", "{hBorder}", "{vBorder}", "{borderColor}",
- /* 0x240 */
- "{hvRetrace}", "{fbiInit5}", "{fbiInit6}", "{fbiInit7}",
- "reserved250", "reserved254", "{fbiSwapHistory}","{fbiTrianglesOut}",
- "{sSetupMode}", "{sVx}", "{sVy}", "{sARGB}",
- "{sRed}", "{sGreen}", "{sBlue}", "{sAlpha}",
- /* 0x280 */
- "{sVz}", "{sWb}", "{sWtmu0}", "{sS/Wtmu0}",
- "{sT/Wtmu0}", "{sWtmu1}", "{sS/Wtmu1}", "{sT/Wtmu1}",
- "{sDrawTriCMD}","{sBeginTriCMD}","reserved2a8", "reserved2ac",
- "reserved2b0", "reserved2b4", "reserved2b8", "reserved2bc",
- /* 0x2c0 */
- "{bltSrcBaseAddr}","{bltDstBaseAddr}","{bltXYStrides}","{bltSrcChromaRange}",
- "{bltDstChromaRange}","{bltClipX}","{bltClipY}","reserved2dc",
- "{bltSrcXY}", "{bltDstXY}", "{bltSize}", "{bltRop}",
- "{bltColor}", "reserved2f4", "{bltCommand}", "{bltData}",
- /* 0x300 */
- "textureMode", "tLOD", "tDetail", "texBaseAddr",
- "texBaseAddr_1","texBaseAddr_2","texBaseAddr_3_8","trexInit0",
- "trexInit1", "nccTable0.0", "nccTable0.1", "nccTable0.2",
- "nccTable0.3", "nccTable0.4", "nccTable0.5", "nccTable0.6",
- /* 0x340 */
- "nccTable0.7", "nccTable0.8", "nccTable0.9", "nccTable0.A",
- "nccTable0.B", "nccTable1.0", "nccTable1.1", "nccTable1.2",
- "nccTable1.3", "nccTable1.4", "nccTable1.5", "nccTable1.6",
- "nccTable1.7", "nccTable1.8", "nccTable1.9", "nccTable1.A",
- /* 0x380 */
- "nccTable1.B"
-};
-
-
-static const char *const banshee_reg_name[] =
-{
- /* 0x000 */
- "status", "intrCtrl", "vertexAx", "vertexAy",
- "vertexBx", "vertexBy", "vertexCx", "vertexCy",
- "startR", "startG", "startB", "startZ",
- "startA", "startS", "startT", "startW",
- /* 0x040 */
- "dRdX", "dGdX", "dBdX", "dZdX",
- "dAdX", "dSdX", "dTdX", "dWdX",
- "dRdY", "dGdY", "dBdY", "dZdY",
- "dAdY", "dSdY", "dTdY", "dWdY",
- /* 0x080 */
- "triangleCMD", "reserved084", "fvertexAx", "fvertexAy",
- "fvertexBx", "fvertexBy", "fvertexCx", "fvertexCy",
- "fstartR", "fstartG", "fstartB", "fstartZ",
- "fstartA", "fstartS", "fstartT", "fstartW",
- /* 0x0c0 */
- "fdRdX", "fdGdX", "fdBdX", "fdZdX",
- "fdAdX", "fdSdX", "fdTdX", "fdWdX",
- "fdRdY", "fdGdY", "fdBdY", "fdZdY",
- "fdAdY", "fdSdY", "fdTdY", "fdWdY",
- /* 0x100 */
- "ftriangleCMD", "fbzColorPath", "fogMode", "alphaMode",
- "fbzMode", "lfbMode", "clipLeftRight","clipLowYHighY",
- "nopCMD", "fastfillCMD", "swapbufferCMD","fogColor",
- "zaColor", "chromaKey", "chromaRange", "userIntrCMD",
- /* 0x140 */
- "stipple", "color0", "color1", "fbiPixelsIn",
- "fbiChromaFail","fbiZfuncFail", "fbiAfuncFail", "fbiPixelsOut",
- "fogTable160", "fogTable164", "fogTable168", "fogTable16c",
- "fogTable170", "fogTable174", "fogTable178", "fogTable17c",
- /* 0x180 */
- "fogTable180", "fogTable184", "fogTable188", "fogTable18c",
- "fogTable190", "fogTable194", "fogTable198", "fogTable19c",
- "fogTable1a0", "fogTable1a4", "fogTable1a8", "fogTable1ac",
- "fogTable1b0", "fogTable1b4", "fogTable1b8", "fogTable1bc",
- /* 0x1c0 */
- "fogTable1c0", "fogTable1c4", "fogTable1c8", "fogTable1cc",
- "fogTable1d0", "fogTable1d4", "fogTable1d8", "fogTable1dc",
- "reserved1e0", "reserved1e4", "reserved1e8", "colBufferAddr",
- "colBufferStride","auxBufferAddr","auxBufferStride","reserved1fc",
- /* 0x200 */
- "clipLeftRight1","clipTopBottom1","reserved208","reserved20c",
- "reserved210", "reserved214", "reserved218", "reserved21c",
- "reserved220", "reserved224", "reserved228", "reserved22c",
- "reserved230", "reserved234", "reserved238", "reserved23c",
- /* 0x240 */
- "reserved240", "reserved244", "reserved248", "swapPending",
- "leftOverlayBuf","rightOverlayBuf","fbiSwapHistory","fbiTrianglesOut",
- "sSetupMode", "sVx", "sVy", "sARGB",
- "sRed", "sGreen", "sBlue", "sAlpha",
- /* 0x280 */
- "sVz", "sWb", "sWtmu0", "sS/Wtmu0",
- "sT/Wtmu0", "sWtmu1", "sS/Wtmu1", "sT/Wtmu1",
- "sDrawTriCMD", "sBeginTriCMD", "reserved2a8", "reserved2ac",
- "reserved2b0", "reserved2b4", "reserved2b8", "reserved2bc",
- /* 0x2c0 */
- "reserved2c0", "reserved2c4", "reserved2c8", "reserved2cc",
- "reserved2d0", "reserved2d4", "reserved2d8", "reserved2dc",
- "reserved2e0", "reserved2e4", "reserved2e8", "reserved2ec",
- "reserved2f0", "reserved2f4", "reserved2f8", "reserved2fc",
- /* 0x300 */
- "textureMode", "tLOD", "tDetail", "texBaseAddr",
- "texBaseAddr_1","texBaseAddr_2","texBaseAddr_3_8","reserved31c",
- "trexInit1", "nccTable0.0", "nccTable0.1", "nccTable0.2",
- "nccTable0.3", "nccTable0.4", "nccTable0.5", "nccTable0.6",
- /* 0x340 */
- "nccTable0.7", "nccTable0.8", "nccTable0.9", "nccTable0.A",
- "nccTable0.B", "nccTable1.0", "nccTable1.1", "nccTable1.2",
- "nccTable1.3", "nccTable1.4", "nccTable1.5", "nccTable1.6",
- "nccTable1.7", "nccTable1.8", "nccTable1.9", "nccTable1.A",
- /* 0x380 */
- "nccTable1.B"
-};
-
-
-
-/*************************************
- *
- * Voodoo Banshee I/O space registers
- *
- *************************************/
-
-/* 0x000 */
-#define io_status (0x000/4) /* */
-#define io_pciInit0 (0x004/4) /* */
-#define io_sipMonitor (0x008/4) /* */
-#define io_lfbMemoryConfig (0x00c/4) /* */
-#define io_miscInit0 (0x010/4) /* */
-#define io_miscInit1 (0x014/4) /* */
-#define io_dramInit0 (0x018/4) /* */
-#define io_dramInit1 (0x01c/4) /* */
-#define io_agpInit (0x020/4) /* */
-#define io_tmuGbeInit (0x024/4) /* */
-#define io_vgaInit0 (0x028/4) /* */
-#define io_vgaInit1 (0x02c/4) /* */
-#define io_dramCommand (0x030/4) /* */
-#define io_dramData (0x034/4) /* */
-
-/* 0x040 */
-#define io_pllCtrl0 (0x040/4) /* */
-#define io_pllCtrl1 (0x044/4) /* */
-#define io_pllCtrl2 (0x048/4) /* */
-#define io_dacMode (0x04c/4) /* */
-#define io_dacAddr (0x050/4) /* */
-#define io_dacData (0x054/4) /* */
-#define io_rgbMaxDelta (0x058/4) /* */
-#define io_vidProcCfg (0x05c/4) /* */
-#define io_hwCurPatAddr (0x060/4) /* */
-#define io_hwCurLoc (0x064/4) /* */
-#define io_hwCurC0 (0x068/4) /* */
-#define io_hwCurC1 (0x06c/4) /* */
-#define io_vidInFormat (0x070/4) /* */
-#define io_vidInStatus (0x074/4) /* */
-#define io_vidSerialParallelPort (0x078/4) /* */
-#define io_vidInXDecimDeltas (0x07c/4) /* */
-
-/* 0x080 */
-#define io_vidInDecimInitErrs (0x080/4) /* */
-#define io_vidInYDecimDeltas (0x084/4) /* */
-#define io_vidPixelBufThold (0x088/4) /* */
-#define io_vidChromaMin (0x08c/4) /* */
-#define io_vidChromaMax (0x090/4) /* */
-#define io_vidCurrentLine (0x094/4) /* */
-#define io_vidScreenSize (0x098/4) /* */
-#define io_vidOverlayStartCoords (0x09c/4) /* */
-#define io_vidOverlayEndScreenCoord (0x0a0/4) /* */
-#define io_vidOverlayDudx (0x0a4/4) /* */
-#define io_vidOverlayDudxOffsetSrcWidth (0x0a8/4) /* */
-#define io_vidOverlayDvdy (0x0ac/4) /* */
-#define io_vgab0 (0x0b0/4) /* */
-#define io_vgab4 (0x0b4/4) /* */
-#define io_vgab8 (0x0b8/4) /* */
-#define io_vgabc (0x0bc/4) /* */
-
-/* 0x0c0 */
-#define io_vgac0 (0x0c0/4) /* */
-#define io_vgac4 (0x0c4/4) /* */
-#define io_vgac8 (0x0c8/4) /* */
-#define io_vgacc (0x0cc/4) /* */
-#define io_vgad0 (0x0d0/4) /* */
-#define io_vgad4 (0x0d4/4) /* */
-#define io_vgad8 (0x0d8/4) /* */
-#define io_vgadc (0x0dc/4) /* */
-#define io_vidOverlayDvdyOffset (0x0e0/4) /* */
-#define io_vidDesktopStartAddr (0x0e4/4) /* */
-#define io_vidDesktopOverlayStride (0x0e8/4) /* */
-#define io_vidInAddr0 (0x0ec/4) /* */
-#define io_vidInAddr1 (0x0f0/4) /* */
-#define io_vidInAddr2 (0x0f4/4) /* */
-#define io_vidInStride (0x0f8/4) /* */
-#define io_vidCurrOverlayStartAddr (0x0fc/4) /* */
-
-
-
-/*************************************
- *
- * Register string table for debug
- *
- *************************************/
-
-static const char *const banshee_io_reg_name[] =
-{
- /* 0x000 */
- "status", "pciInit0", "sipMonitor", "lfbMemoryConfig",
- "miscInit0", "miscInit1", "dramInit0", "dramInit1",
- "agpInit", "tmuGbeInit", "vgaInit0", "vgaInit1",
- "dramCommand", "dramData", "reserved38", "reserved3c",
-
- /* 0x040 */
- "pllCtrl0", "pllCtrl1", "pllCtrl2", "dacMode",
- "dacAddr", "dacData", "rgbMaxDelta", "vidProcCfg",
- "hwCurPatAddr", "hwCurLoc", "hwCurC0", "hwCurC1",
- "vidInFormat", "vidInStatus", "vidSerialParallelPort","vidInXDecimDeltas",
-
- /* 0x080 */
- "vidInDecimInitErrs","vidInYDecimDeltas","vidPixelBufThold","vidChromaMin",
- "vidChromaMax", "vidCurrentLine","vidScreenSize","vidOverlayStartCoords",
- "vidOverlayEndScreenCoord","vidOverlayDudx","vidOverlayDudxOffsetSrcWidth","vidOverlayDvdy",
- "vga[b0]", "vga[b4]", "vga[b8]", "vga[bc]",
-
- /* 0x0c0 */
- "vga[c0]", "vga[c4]", "vga[c8]", "vga[cc]",
- "vga[d0]", "vga[d4]", "vga[d8]", "vga[dc]",
- "vidOverlayDvdyOffset","vidDesktopStartAddr","vidDesktopOverlayStride","vidInAddr0",
- "vidInAddr1", "vidInAddr2", "vidInStride", "vidCurrOverlayStartAddr"
-};
-
-
-
-/*************************************
- *
- * Voodoo Banshee AGP space registers
- *
- *************************************/
-
-/* 0x000 */
-#define agpReqSize (0x000/4) /* */
-#define agpHostAddressLow (0x004/4) /* */
-#define agpHostAddressHigh (0x008/4) /* */
-#define agpGraphicsAddress (0x00c/4) /* */
-#define agpGraphicsStride (0x010/4) /* */
-#define agpMoveCMD (0x014/4) /* */
-#define cmdBaseAddr0 (0x020/4) /* */
-#define cmdBaseSize0 (0x024/4) /* */
-#define cmdBump0 (0x028/4) /* */
-#define cmdRdPtrL0 (0x02c/4) /* */
-#define cmdRdPtrH0 (0x030/4) /* */
-#define cmdAMin0 (0x034/4) /* */
-#define cmdAMax0 (0x03c/4) /* */
-
-/* 0x040 */
-#define cmdFifoDepth0 (0x044/4) /* */
-#define cmdHoleCnt0 (0x048/4) /* */
-#define cmdBaseAddr1 (0x050/4) /* */
-#define cmdBaseSize1 (0x054/4) /* */
-#define cmdBump1 (0x058/4) /* */
-#define cmdRdPtrL1 (0x05c/4) /* */
-#define cmdRdPtrH1 (0x060/4) /* */
-#define cmdAMin1 (0x064/4) /* */
-#define cmdAMax1 (0x06c/4) /* */
-#define cmdFifoDepth1 (0x074/4) /* */
-#define cmdHoleCnt1 (0x078/4) /* */
-
-/* 0x080 */
-#define cmdFifoThresh (0x080/4) /* */
-#define cmdHoleInt (0x084/4) /* */
-
-/* 0x100 */
-#define yuvBaseAddress (0x100/4) /* */
-#define yuvStride (0x104/4) /* */
-#define crc1 (0x120/4) /* */
-#define crc2 (0x130/4) /* */
-
-
-
-/*************************************
- *
- * Register string table for debug
- *
- *************************************/
-
-static const char *const banshee_agp_reg_name[] =
-{
- /* 0x000 */
- "agpReqSize", "agpHostAddressLow","agpHostAddressHigh","agpGraphicsAddress",
- "agpGraphicsStride","agpMoveCMD","reserved18", "reserved1c",
- "cmdBaseAddr0", "cmdBaseSize0", "cmdBump0", "cmdRdPtrL0",
- "cmdRdPtrH0", "cmdAMin0", "reserved38", "cmdAMax0",
-
- /* 0x040 */
- "reserved40", "cmdFifoDepth0","cmdHoleCnt0", "reserved4c",
- "cmdBaseAddr1", "cmdBaseSize1", "cmdBump1", "cmdRdPtrL1",
- "cmdRdPtrH1", "cmdAMin1", "reserved68", "cmdAMax1",
- "reserved70", "cmdFifoDepth1","cmdHoleCnt1", "reserved7c",
-
- /* 0x080 */
- "cmdFifoThresh","cmdHoleInt", "reserved88", "reserved8c",
- "reserved90", "reserved94", "reserved98", "reserved9c",
- "reserveda0", "reserveda4", "reserveda8", "reservedac",
- "reservedb0", "reservedb4", "reservedb8", "reservedbc",
-
- /* 0x0c0 */
- "reservedc0", "reservedc4", "reservedc8", "reservedcc",
- "reservedd0", "reservedd4", "reservedd8", "reserveddc",
- "reservede0", "reservede4", "reservede8", "reservedec",
- "reservedf0", "reservedf4", "reservedf8", "reservedfc",
-
- /* 0x100 */
- "yuvBaseAddress","yuvStride", "reserved108", "reserved10c",
- "reserved110", "reserved114", "reserved118", "reserved11c",
- "crc1", "reserved124", "reserved128", "reserved12c",
- "crc2", "reserved134", "reserved138", "reserved13c"
-};
-
-
-
-/*************************************
- *
- * Dithering tables
- *
- *************************************/
-
-static const UINT8 dither_matrix_4x4[16] =
-{
- 0, 8, 2, 10,
- 12, 4, 14, 6,
- 3, 11, 1, 9,
- 15, 7, 13, 5
-};
-
-static const UINT8 dither_matrix_2x2[16] =
-{
- 2, 10, 2, 10,
- 14, 6, 14, 6,
- 2, 10, 2, 10,
- 14, 6, 14, 6
-};
-
-
-
-/*************************************
- *
- * Macros for extracting pixels
- *
- *************************************/
-
-#define EXTRACT_565_TO_888(val, a, b, c) \
- (a) = (((val) >> 8) & 0xf8) | (((val) >> 13) & 0x07); \
- (b) = (((val) >> 3) & 0xfc) | (((val) >> 9) & 0x03); \
- (c) = (((val) << 3) & 0xf8) | (((val) >> 2) & 0x07);
-#define EXTRACT_x555_TO_888(val, a, b, c) \
- (a) = (((val) >> 7) & 0xf8) | (((val) >> 12) & 0x07); \
- (b) = (((val) >> 2) & 0xf8) | (((val) >> 7) & 0x07); \
- (c) = (((val) << 3) & 0xf8) | (((val) >> 2) & 0x07);
-#define EXTRACT_555x_TO_888(val, a, b, c) \
- (a) = (((val) >> 8) & 0xf8) | (((val) >> 13) & 0x07); \
- (b) = (((val) >> 3) & 0xf8) | (((val) >> 8) & 0x07); \
- (c) = (((val) << 2) & 0xf8) | (((val) >> 3) & 0x07);
-#define EXTRACT_1555_TO_8888(val, a, b, c, d) \
- (a) = ((INT16)(val) >> 15) & 0xff; \
- EXTRACT_x555_TO_888(val, b, c, d)
-#define EXTRACT_5551_TO_8888(val, a, b, c, d) \
- EXTRACT_555x_TO_888(val, a, b, c) \
- (d) = ((val) & 0x0001) ? 0xff : 0x00;
-#define EXTRACT_x888_TO_888(val, a, b, c) \
- (a) = ((val) >> 16) & 0xff; \
- (b) = ((val) >> 8) & 0xff; \
- (c) = ((val) >> 0) & 0xff;
-#define EXTRACT_888x_TO_888(val, a, b, c) \
- (a) = ((val) >> 24) & 0xff; \
- (b) = ((val) >> 16) & 0xff; \
- (c) = ((val) >> 8) & 0xff;
-#define EXTRACT_8888_TO_8888(val, a, b, c, d) \
- (a) = ((val) >> 24) & 0xff; \
- (b) = ((val) >> 16) & 0xff; \
- (c) = ((val) >> 8) & 0xff; \
- (d) = ((val) >> 0) & 0xff;
-#define EXTRACT_4444_TO_8888(val, a, b, c, d) \
- (a) = (((val) >> 8) & 0xf0) | (((val) >> 12) & 0x0f); \
- (b) = (((val) >> 4) & 0xf0) | (((val) >> 8) & 0x0f); \
- (c) = (((val) >> 0) & 0xf0) | (((val) >> 4) & 0x0f); \
- (d) = (((val) << 4) & 0xf0) | (((val) >> 0) & 0x0f);
-#define EXTRACT_332_TO_888(val, a, b, c) \
- (a) = (((val) >> 0) & 0xe0) | (((val) >> 3) & 0x1c) | (((val) >> 6) & 0x03); \
- (b) = (((val) << 3) & 0xe0) | (((val) >> 0) & 0x1c) | (((val) >> 3) & 0x03); \
- (c) = (((val) << 6) & 0xc0) | (((val) << 4) & 0x30) | (((val) << 2) & 0x0c) | (((val) << 0) & 0x03);
-
-
-/*************************************
- *
- * Misc. macros
- *
- *************************************/
-
-/* macro for clamping a value between minimum and maximum values */
-#define CLAMP(val,min,max) do { if ((val) < (min)) { (val) = (min); } else if ((val) > (max)) { (val) = (max); } } while (0)
-
-/* macro to compute the base 2 log for LOD calculations */
-#define LOGB2(x) (log((double)(x)) / log(2.0))
-
-
-
-/*************************************
- *
- * Macros for extracting bitfields
- *
- *************************************/
-
-#define INITEN_ENABLE_HW_INIT(val) (((val) >> 0) & 1)
-#define INITEN_ENABLE_PCI_FIFO(val) (((val) >> 1) & 1)
-#define INITEN_REMAP_INIT_TO_DAC(val) (((val) >> 2) & 1)
-#define INITEN_ENABLE_SNOOP0(val) (((val) >> 4) & 1)
-#define INITEN_SNOOP0_MEMORY_MATCH(val) (((val) >> 5) & 1)
-#define INITEN_SNOOP0_READWRITE_MATCH(val) (((val) >> 6) & 1)
-#define INITEN_ENABLE_SNOOP1(val) (((val) >> 7) & 1)
-#define INITEN_SNOOP1_MEMORY_MATCH(val) (((val) >> 8) & 1)
-#define INITEN_SNOOP1_READWRITE_MATCH(val) (((val) >> 9) & 1)
-#define INITEN_SLI_BUS_OWNER(val) (((val) >> 10) & 1)
-#define INITEN_SLI_ODD_EVEN(val) (((val) >> 11) & 1)
-#define INITEN_SECONDARY_REV_ID(val) (((val) >> 12) & 0xf) /* voodoo 2 only */
-#define INITEN_MFCTR_FAB_ID(val) (((val) >> 16) & 0xf) /* voodoo 2 only */
-#define INITEN_ENABLE_PCI_INTERRUPT(val) (((val) >> 20) & 1) /* voodoo 2 only */
-#define INITEN_PCI_INTERRUPT_TIMEOUT(val) (((val) >> 21) & 1) /* voodoo 2 only */
-#define INITEN_ENABLE_NAND_TREE_TEST(val) (((val) >> 22) & 1) /* voodoo 2 only */
-#define INITEN_ENABLE_SLI_ADDRESS_SNOOP(val) (((val) >> 23) & 1) /* voodoo 2 only */
-#define INITEN_SLI_SNOOP_ADDRESS(val) (((val) >> 24) & 0xff) /* voodoo 2 only */
-
-#define FBZCP_CC_RGBSELECT(val) (((val) >> 0) & 3)
-#define FBZCP_CC_ASELECT(val) (((val) >> 2) & 3)
-#define FBZCP_CC_LOCALSELECT(val) (((val) >> 4) & 1)
-#define FBZCP_CCA_LOCALSELECT(val) (((val) >> 5) & 3)
-#define FBZCP_CC_LOCALSELECT_OVERRIDE(val) (((val) >> 7) & 1)
-#define FBZCP_CC_ZERO_OTHER(val) (((val) >> 8) & 1)
-#define FBZCP_CC_SUB_CLOCAL(val) (((val) >> 9) & 1)
-#define FBZCP_CC_MSELECT(val) (((val) >> 10) & 7)
-#define FBZCP_CC_REVERSE_BLEND(val) (((val) >> 13) & 1)
-#define FBZCP_CC_ADD_ACLOCAL(val) (((val) >> 14) & 3)
-#define FBZCP_CC_INVERT_OUTPUT(val) (((val) >> 16) & 1)
-#define FBZCP_CCA_ZERO_OTHER(val) (((val) >> 17) & 1)
-#define FBZCP_CCA_SUB_CLOCAL(val) (((val) >> 18) & 1)
-#define FBZCP_CCA_MSELECT(val) (((val) >> 19) & 7)
-#define FBZCP_CCA_REVERSE_BLEND(val) (((val) >> 22) & 1)
-#define FBZCP_CCA_ADD_ACLOCAL(val) (((val) >> 23) & 3)
-#define FBZCP_CCA_INVERT_OUTPUT(val) (((val) >> 25) & 1)
-#define FBZCP_CCA_SUBPIXEL_ADJUST(val) (((val) >> 26) & 1)
-#define FBZCP_TEXTURE_ENABLE(val) (((val) >> 27) & 1)
-#define FBZCP_RGBZW_CLAMP(val) (((val) >> 28) & 1) /* voodoo 2 only */
-#define FBZCP_ANTI_ALIAS(val) (((val) >> 29) & 1) /* voodoo 2 only */
-
-#define ALPHAMODE_ALPHATEST(val) (((val) >> 0) & 1)
-#define ALPHAMODE_ALPHAFUNCTION(val) (((val) >> 1) & 7)
-#define ALPHAMODE_ALPHABLEND(val) (((val) >> 4) & 1)
-#define ALPHAMODE_ANTIALIAS(val) (((val) >> 5) & 1)
-#define ALPHAMODE_SRCRGBBLEND(val) (((val) >> 8) & 15)
-#define ALPHAMODE_DSTRGBBLEND(val) (((val) >> 12) & 15)
-#define ALPHAMODE_SRCALPHABLEND(val) (((val) >> 16) & 15)
-#define ALPHAMODE_DSTALPHABLEND(val) (((val) >> 20) & 15)
-#define ALPHAMODE_ALPHAREF(val) (((val) >> 24) & 0xff)
-
-#define FOGMODE_ENABLE_FOG(val) (((val) >> 0) & 1)
-#define FOGMODE_FOG_ADD(val) (((val) >> 1) & 1)
-#define FOGMODE_FOG_MULT(val) (((val) >> 2) & 1)
-#define FOGMODE_FOG_ZALPHA(val) (((val) >> 3) & 3)
-#define FOGMODE_FOG_CONSTANT(val) (((val) >> 5) & 1)
-#define FOGMODE_FOG_DITHER(val) (((val) >> 6) & 1) /* voodoo 2 only */
-#define FOGMODE_FOG_ZONES(val) (((val) >> 7) & 1) /* voodoo 2 only */
-
-#define FBZMODE_ENABLE_CLIPPING(val) (((val) >> 0) & 1)
-#define FBZMODE_ENABLE_CHROMAKEY(val) (((val) >> 1) & 1)
-#define FBZMODE_ENABLE_STIPPLE(val) (((val) >> 2) & 1)
-#define FBZMODE_WBUFFER_SELECT(val) (((val) >> 3) & 1)
-#define FBZMODE_ENABLE_DEPTHBUF(val) (((val) >> 4) & 1)
-#define FBZMODE_DEPTH_FUNCTION(val) (((val) >> 5) & 7)
-#define FBZMODE_ENABLE_DITHERING(val) (((val) >> 8) & 1)
-#define FBZMODE_RGB_BUFFER_MASK(val) (((val) >> 9) & 1)
-#define FBZMODE_AUX_BUFFER_MASK(val) (((val) >> 10) & 1)
-#define FBZMODE_DITHER_TYPE(val) (((val) >> 11) & 1)
-#define FBZMODE_STIPPLE_PATTERN(val) (((val) >> 12) & 1)
-#define FBZMODE_ENABLE_ALPHA_MASK(val) (((val) >> 13) & 1)
-#define FBZMODE_DRAW_BUFFER(val) (((val) >> 14) & 3)
-#define FBZMODE_ENABLE_DEPTH_BIAS(val) (((val) >> 16) & 1)
-#define FBZMODE_Y_ORIGIN(val) (((val) >> 17) & 1)
-#define FBZMODE_ENABLE_ALPHA_PLANES(val) (((val) >> 18) & 1)
-#define FBZMODE_ALPHA_DITHER_SUBTRACT(val) (((val) >> 19) & 1)
-#define FBZMODE_DEPTH_SOURCE_COMPARE(val) (((val) >> 20) & 1)
-#define FBZMODE_DEPTH_FLOAT_SELECT(val) (((val) >> 21) & 1) /* voodoo 2 only */
-
-#define LFBMODE_WRITE_FORMAT(val) (((val) >> 0) & 0xf)
-#define LFBMODE_WRITE_BUFFER_SELECT(val) (((val) >> 4) & 3)
-#define LFBMODE_READ_BUFFER_SELECT(val) (((val) >> 6) & 3)
-#define LFBMODE_ENABLE_PIXEL_PIPELINE(val) (((val) >> 8) & 1)
-#define LFBMODE_RGBA_LANES(val) (((val) >> 9) & 3)
-#define LFBMODE_WORD_SWAP_WRITES(val) (((val) >> 11) & 1)
-#define LFBMODE_BYTE_SWIZZLE_WRITES(val) (((val) >> 12) & 1)
-#define LFBMODE_Y_ORIGIN(val) (((val) >> 13) & 1)
-#define LFBMODE_WRITE_W_SELECT(val) (((val) >> 14) & 1)
-#define LFBMODE_WORD_SWAP_READS(val) (((val) >> 15) & 1)
-#define LFBMODE_BYTE_SWIZZLE_READS(val) (((val) >> 16) & 1)
-
-#define CHROMARANGE_BLUE_EXCLUSIVE(val) (((val) >> 24) & 1)
-#define CHROMARANGE_GREEN_EXCLUSIVE(val) (((val) >> 25) & 1)
-#define CHROMARANGE_RED_EXCLUSIVE(val) (((val) >> 26) & 1)
-#define CHROMARANGE_UNION_MODE(val) (((val) >> 27) & 1)
-#define CHROMARANGE_ENABLE(val) (((val) >> 28) & 1)
-
-#define FBIINIT0_VGA_PASSTHRU(val) (((val) >> 0) & 1)
-#define FBIINIT0_GRAPHICS_RESET(val) (((val) >> 1) & 1)
-#define FBIINIT0_FIFO_RESET(val) (((val) >> 2) & 1)
-#define FBIINIT0_SWIZZLE_REG_WRITES(val) (((val) >> 3) & 1)
-#define FBIINIT0_STALL_PCIE_FOR_HWM(val) (((val) >> 4) & 1)
-#define FBIINIT0_PCI_FIFO_LWM(val) (((val) >> 6) & 0x1f)
-#define FBIINIT0_LFB_TO_MEMORY_FIFO(val) (((val) >> 11) & 1)
-#define FBIINIT0_TEXMEM_TO_MEMORY_FIFO(val) (((val) >> 12) & 1)
-#define FBIINIT0_ENABLE_MEMORY_FIFO(val) (((val) >> 13) & 1)
-#define FBIINIT0_MEMORY_FIFO_HWM(val) (((val) >> 14) & 0x7ff)
-#define FBIINIT0_MEMORY_FIFO_BURST(val) (((val) >> 25) & 0x3f)
-
-#define FBIINIT1_PCI_DEV_FUNCTION(val) (((val) >> 0) & 1)
-#define FBIINIT1_PCI_WRITE_WAIT_STATES(val) (((val) >> 1) & 1)
-#define FBIINIT1_MULTI_SST1(val) (((val) >> 2) & 1) /* not on voodoo 2 */
-#define FBIINIT1_ENABLE_LFB(val) (((val) >> 3) & 1)
-#define FBIINIT1_X_VIDEO_TILES(val) (((val) >> 4) & 0xf)
-#define FBIINIT1_VIDEO_TIMING_RESET(val) (((val) >> 8) & 1)
-#define FBIINIT1_SOFTWARE_OVERRIDE(val) (((val) >> 9) & 1)
-#define FBIINIT1_SOFTWARE_HSYNC(val) (((val) >> 10) & 1)
-#define FBIINIT1_SOFTWARE_VSYNC(val) (((val) >> 11) & 1)
-#define FBIINIT1_SOFTWARE_BLANK(val) (((val) >> 12) & 1)
-#define FBIINIT1_DRIVE_VIDEO_TIMING(val) (((val) >> 13) & 1)
-#define FBIINIT1_DRIVE_VIDEO_BLANK(val) (((val) >> 14) & 1)
-#define FBIINIT1_DRIVE_VIDEO_SYNC(val) (((val) >> 15) & 1)
-#define FBIINIT1_DRIVE_VIDEO_DCLK(val) (((val) >> 16) & 1)
-#define FBIINIT1_VIDEO_TIMING_VCLK(val) (((val) >> 17) & 1)
-#define FBIINIT1_VIDEO_CLK_2X_DELAY(val) (((val) >> 18) & 3)
-#define FBIINIT1_VIDEO_TIMING_SOURCE(val) (((val) >> 20) & 3)
-#define FBIINIT1_ENABLE_24BPP_OUTPUT(val) (((val) >> 22) & 1)
-#define FBIINIT1_ENABLE_SLI(val) (((val) >> 23) & 1)
-#define FBIINIT1_X_VIDEO_TILES_BIT5(val) (((val) >> 24) & 1) /* voodoo 2 only */
-#define FBIINIT1_ENABLE_EDGE_FILTER(val) (((val) >> 25) & 1)
-#define FBIINIT1_INVERT_VID_CLK_2X(val) (((val) >> 26) & 1)
-#define FBIINIT1_VID_CLK_2X_SEL_DELAY(val) (((val) >> 27) & 3)
-#define FBIINIT1_VID_CLK_DELAY(val) (((val) >> 29) & 3)
-#define FBIINIT1_DISABLE_FAST_READAHEAD(val) (((val) >> 31) & 1)
-
-#define FBIINIT2_DISABLE_DITHER_SUB(val) (((val) >> 0) & 1)
-#define FBIINIT2_DRAM_BANKING(val) (((val) >> 1) & 1)
-#define FBIINIT2_ENABLE_TRIPLE_BUF(val) (((val) >> 4) & 1)
-#define FBIINIT2_ENABLE_FAST_RAS_READ(val) (((val) >> 5) & 1)
-#define FBIINIT2_ENABLE_GEN_DRAM_OE(val) (((val) >> 6) & 1)
-#define FBIINIT2_ENABLE_FAST_READWRITE(val) (((val) >> 7) & 1)
-#define FBIINIT2_ENABLE_PASSTHRU_DITHER(val) (((val) >> 8) & 1)
-#define FBIINIT2_SWAP_BUFFER_ALGORITHM(val) (((val) >> 9) & 3)
-#define FBIINIT2_VIDEO_BUFFER_OFFSET(val) (((val) >> 11) & 0x1ff)
-#define FBIINIT2_ENABLE_DRAM_BANKING(val) (((val) >> 20) & 1)
-#define FBIINIT2_ENABLE_DRAM_READ_FIFO(val) (((val) >> 21) & 1)
-#define FBIINIT2_ENABLE_DRAM_REFRESH(val) (((val) >> 22) & 1)
-#define FBIINIT2_REFRESH_LOAD_VALUE(val) (((val) >> 23) & 0x1ff)
-
-#define FBIINIT3_TRI_REGISTER_REMAP(val) (((val) >> 0) & 1)
-#define FBIINIT3_VIDEO_FIFO_THRESH(val) (((val) >> 1) & 0x1f)
-#define FBIINIT3_DISABLE_TMUS(val) (((val) >> 6) & 1)
-#define FBIINIT3_FBI_MEMORY_TYPE(val) (((val) >> 8) & 7)
-#define FBIINIT3_VGA_PASS_RESET_VAL(val) (((val) >> 11) & 1)
-#define FBIINIT3_HARDCODE_PCI_BASE(val) (((val) >> 12) & 1)
-#define FBIINIT3_FBI2TREX_DELAY(val) (((val) >> 13) & 0xf)
-#define FBIINIT3_TREX2FBI_DELAY(val) (((val) >> 17) & 0x1f)
-#define FBIINIT3_YORIGIN_SUBTRACT(val) (((val) >> 22) & 0x3ff)
-
-#define FBIINIT4_PCI_READ_WAITS(val) (((val) >> 0) & 1)
-#define FBIINIT4_ENABLE_LFB_READAHEAD(val) (((val) >> 1) & 1)
-#define FBIINIT4_MEMORY_FIFO_LWM(val) (((val) >> 2) & 0x3f)
-#define FBIINIT4_MEMORY_FIFO_START_ROW(val) (((val) >> 8) & 0x3ff)
-#define FBIINIT4_MEMORY_FIFO_STOP_ROW(val) (((val) >> 18) & 0x3ff)
-#define FBIINIT4_VIDEO_CLOCKING_DELAY(val) (((val) >> 29) & 7) /* voodoo 2 only */
-
-#define FBIINIT5_DISABLE_PCI_STOP(val) (((val) >> 0) & 1) /* voodoo 2 only */
-#define FBIINIT5_PCI_SLAVE_SPEED(val) (((val) >> 1) & 1) /* voodoo 2 only */
-#define FBIINIT5_DAC_DATA_OUTPUT_WIDTH(val) (((val) >> 2) & 1) /* voodoo 2 only */
-#define FBIINIT5_DAC_DATA_17_OUTPUT(val) (((val) >> 3) & 1) /* voodoo 2 only */
-#define FBIINIT5_DAC_DATA_18_OUTPUT(val) (((val) >> 4) & 1) /* voodoo 2 only */
-#define FBIINIT5_GENERIC_STRAPPING(val) (((val) >> 5) & 0xf) /* voodoo 2 only */
-#define FBIINIT5_BUFFER_ALLOCATION(val) (((val) >> 9) & 3) /* voodoo 2 only */
-#define FBIINIT5_DRIVE_VID_CLK_SLAVE(val) (((val) >> 11) & 1) /* voodoo 2 only */
-#define FBIINIT5_DRIVE_DAC_DATA_16(val) (((val) >> 12) & 1) /* voodoo 2 only */
-#define FBIINIT5_VCLK_INPUT_SELECT(val) (((val) >> 13) & 1) /* voodoo 2 only */
-#define FBIINIT5_MULTI_CVG_DETECT(val) (((val) >> 14) & 1) /* voodoo 2 only */
-#define FBIINIT5_SYNC_RETRACE_READS(val) (((val) >> 15) & 1) /* voodoo 2 only */
-#define FBIINIT5_ENABLE_RHBORDER_COLOR(val) (((val) >> 16) & 1) /* voodoo 2 only */
-#define FBIINIT5_ENABLE_LHBORDER_COLOR(val) (((val) >> 17) & 1) /* voodoo 2 only */
-#define FBIINIT5_ENABLE_BVBORDER_COLOR(val) (((val) >> 18) & 1) /* voodoo 2 only */
-#define FBIINIT5_ENABLE_TVBORDER_COLOR(val) (((val) >> 19) & 1) /* voodoo 2 only */
-#define FBIINIT5_DOUBLE_HORIZ(val) (((val) >> 20) & 1) /* voodoo 2 only */
-#define FBIINIT5_DOUBLE_VERT(val) (((val) >> 21) & 1) /* voodoo 2 only */
-#define FBIINIT5_ENABLE_16BIT_GAMMA(val) (((val) >> 22) & 1) /* voodoo 2 only */
-#define FBIINIT5_INVERT_DAC_HSYNC(val) (((val) >> 23) & 1) /* voodoo 2 only */
-#define FBIINIT5_INVERT_DAC_VSYNC(val) (((val) >> 24) & 1) /* voodoo 2 only */
-#define FBIINIT5_ENABLE_24BIT_DACDATA(val) (((val) >> 25) & 1) /* voodoo 2 only */
-#define FBIINIT5_ENABLE_INTERLACING(val) (((val) >> 26) & 1) /* voodoo 2 only */
-#define FBIINIT5_DAC_DATA_18_CONTROL(val) (((val) >> 27) & 1) /* voodoo 2 only */
-#define FBIINIT5_RASTERIZER_UNIT_MODE(val) (((val) >> 30) & 3) /* voodoo 2 only */
-
-#define FBIINIT6_WINDOW_ACTIVE_COUNTER(val) (((val) >> 0) & 7) /* voodoo 2 only */
-#define FBIINIT6_WINDOW_DRAG_COUNTER(val) (((val) >> 3) & 0x1f) /* voodoo 2 only */
-#define FBIINIT6_SLI_SYNC_MASTER(val) (((val) >> 8) & 1) /* voodoo 2 only */
-#define FBIINIT6_DAC_DATA_22_OUTPUT(val) (((val) >> 9) & 3) /* voodoo 2 only */
-#define FBIINIT6_DAC_DATA_23_OUTPUT(val) (((val) >> 11) & 3) /* voodoo 2 only */
-#define FBIINIT6_SLI_SYNCIN_OUTPUT(val) (((val) >> 13) & 3) /* voodoo 2 only */
-#define FBIINIT6_SLI_SYNCOUT_OUTPUT(val) (((val) >> 15) & 3) /* voodoo 2 only */
-#define FBIINIT6_DAC_RD_OUTPUT(val) (((val) >> 17) & 3) /* voodoo 2 only */
-#define FBIINIT6_DAC_WR_OUTPUT(val) (((val) >> 19) & 3) /* voodoo 2 only */
-#define FBIINIT6_PCI_FIFO_LWM_RDY(val) (((val) >> 21) & 0x7f) /* voodoo 2 only */
-#define FBIINIT6_VGA_PASS_N_OUTPUT(val) (((val) >> 28) & 3) /* voodoo 2 only */
-#define FBIINIT6_X_VIDEO_TILES_BIT0(val) (((val) >> 30) & 1) /* voodoo 2 only */
-
-#define FBIINIT7_GENERIC_STRAPPING(val) (((val) >> 0) & 0xff) /* voodoo 2 only */
-#define FBIINIT7_CMDFIFO_ENABLE(val) (((val) >> 8) & 1) /* voodoo 2 only */
-#define FBIINIT7_CMDFIFO_MEMORY_STORE(val) (((val) >> 9) & 1) /* voodoo 2 only */
-#define FBIINIT7_DISABLE_CMDFIFO_HOLES(val) (((val) >> 10) & 1) /* voodoo 2 only */
-#define FBIINIT7_CMDFIFO_READ_THRESH(val) (((val) >> 11) & 0x1f) /* voodoo 2 only */
-#define FBIINIT7_SYNC_CMDFIFO_WRITES(val) (((val) >> 16) & 1) /* voodoo 2 only */
-#define FBIINIT7_SYNC_CMDFIFO_READS(val) (((val) >> 17) & 1) /* voodoo 2 only */
-#define FBIINIT7_RESET_PCI_PACKER(val) (((val) >> 18) & 1) /* voodoo 2 only */
-#define FBIINIT7_ENABLE_CHROMA_STUFF(val) (((val) >> 19) & 1) /* voodoo 2 only */
-#define FBIINIT7_CMDFIFO_PCI_TIMEOUT(val) (((val) >> 20) & 0x7f) /* voodoo 2 only */
-#define FBIINIT7_ENABLE_TEXTURE_BURST(val) (((val) >> 27) & 1) /* voodoo 2 only */
-
-#define TEXMODE_ENABLE_PERSPECTIVE(val) (((val) >> 0) & 1)
-#define TEXMODE_MINIFICATION_FILTER(val) (((val) >> 1) & 1)
-#define TEXMODE_MAGNIFICATION_FILTER(val) (((val) >> 2) & 1)
-#define TEXMODE_CLAMP_NEG_W(val) (((val) >> 3) & 1)
-#define TEXMODE_ENABLE_LOD_DITHER(val) (((val) >> 4) & 1)
-#define TEXMODE_NCC_TABLE_SELECT(val) (((val) >> 5) & 1)
-#define TEXMODE_CLAMP_S(val) (((val) >> 6) & 1)
-#define TEXMODE_CLAMP_T(val) (((val) >> 7) & 1)
-#define TEXMODE_FORMAT(val) (((val) >> 8) & 0xf)
-#define TEXMODE_TC_ZERO_OTHER(val) (((val) >> 12) & 1)
-#define TEXMODE_TC_SUB_CLOCAL(val) (((val) >> 13) & 1)
-#define TEXMODE_TC_MSELECT(val) (((val) >> 14) & 7)
-#define TEXMODE_TC_REVERSE_BLEND(val) (((val) >> 17) & 1)
-#define TEXMODE_TC_ADD_ACLOCAL(val) (((val) >> 18) & 3)
-#define TEXMODE_TC_INVERT_OUTPUT(val) (((val) >> 20) & 1)
-#define TEXMODE_TCA_ZERO_OTHER(val) (((val) >> 21) & 1)
-#define TEXMODE_TCA_SUB_CLOCAL(val) (((val) >> 22) & 1)
-#define TEXMODE_TCA_MSELECT(val) (((val) >> 23) & 7)
-#define TEXMODE_TCA_REVERSE_BLEND(val) (((val) >> 26) & 1)
-#define TEXMODE_TCA_ADD_ACLOCAL(val) (((val) >> 27) & 3)
-#define TEXMODE_TCA_INVERT_OUTPUT(val) (((val) >> 29) & 1)
-#define TEXMODE_TRILINEAR(val) (((val) >> 30) & 1)
-#define TEXMODE_SEQ_8_DOWNLD(val) (((val) >> 31) & 1)
-
-#define TEXLOD_LODMIN(val) (((val) >> 0) & 0x3f)
-#define TEXLOD_LODMAX(val) (((val) >> 6) & 0x3f)
-#define TEXLOD_LODBIAS(val) (((val) >> 12) & 0x3f)
-#define TEXLOD_LOD_ODD(val) (((val) >> 18) & 1)
-#define TEXLOD_LOD_TSPLIT(val) (((val) >> 19) & 1)
-#define TEXLOD_LOD_S_IS_WIDER(val) (((val) >> 20) & 1)
-#define TEXLOD_LOD_ASPECT(val) (((val) >> 21) & 3)
-#define TEXLOD_LOD_ZEROFRAC(val) (((val) >> 23) & 1)
-#define TEXLOD_TMULTIBASEADDR(val) (((val) >> 24) & 1)
-#define TEXLOD_TDATA_SWIZZLE(val) (((val) >> 25) & 1)
-#define TEXLOD_TDATA_SWAP(val) (((val) >> 26) & 1)
-#define TEXLOD_TDIRECT_WRITE(val) (((val) >> 27) & 1) /* Voodoo 2 only */
-
-#define TEXDETAIL_DETAIL_MAX(val) (((val) >> 0) & 0xff)
-#define TEXDETAIL_DETAIL_BIAS(val) (((val) >> 8) & 0x3f)
-#define TEXDETAIL_DETAIL_SCALE(val) (((val) >> 14) & 7)
-#define TEXDETAIL_RGB_MIN_FILTER(val) (((val) >> 17) & 1) /* Voodoo 2 only */
-#define TEXDETAIL_RGB_MAG_FILTER(val) (((val) >> 18) & 1) /* Voodoo 2 only */
-#define TEXDETAIL_ALPHA_MIN_FILTER(val) (((val) >> 19) & 1) /* Voodoo 2 only */
-#define TEXDETAIL_ALPHA_MAG_FILTER(val) (((val) >> 20) & 1) /* Voodoo 2 only */
-#define TEXDETAIL_SEPARATE_RGBA_FILTER(val) (((val) >> 21) & 1) /* Voodoo 2 only */
-
-#define TREXINIT_SEND_TMU_CONFIG(val) (((val) >> 18) & 1)
/*************************************
@@ -1365,377 +21,6 @@ struct voodoo_state;
struct poly_extra_data;
-struct rgba
-{
-#ifdef LSB_FIRST
- UINT8 b, g, r, a;
-#else
- UINT8 a, r, g, b;
-#endif
-};
-
-
-union voodoo_reg
-{
- INT32 i;
- UINT32 u;
- float f;
- rgba rgb;
-};
-
-
-typedef voodoo_reg rgb_union;
-
-
-struct voodoo_stats
-{
- UINT8 lastkey; /* last key state */
- UINT8 display; /* display stats? */
- INT32 swaps; /* total swaps */
- INT32 stalls; /* total stalls */
- INT32 total_triangles; /* total triangles */
- INT32 total_pixels_in; /* total pixels in */
- INT32 total_pixels_out; /* total pixels out */
- INT32 total_chroma_fail; /* total chroma fail */
- INT32 total_zfunc_fail; /* total z func fail */
- INT32 total_afunc_fail; /* total a func fail */
- INT32 total_clipped; /* total clipped */
- INT32 total_stippled; /* total stippled */
- INT32 lfb_writes; /* LFB writes */
- INT32 lfb_reads; /* LFB reads */
- INT32 reg_writes; /* register writes */
- INT32 reg_reads; /* register reads */
- INT32 tex_writes; /* texture writes */
- INT32 texture_mode[16]; /* 16 different texture modes */
- UINT8 render_override; /* render override */
- char buffer[1024]; /* string */
-};
-
-
-/* note that this structure is an even 64 bytes long */
-struct stats_block
-{
- INT32 pixels_in; /* pixels in statistic */
- INT32 pixels_out; /* pixels out statistic */
- INT32 chroma_fail; /* chroma test fail statistic */
- INT32 zfunc_fail; /* z function test fail statistic */
- INT32 afunc_fail; /* alpha function test fail statistic */
- INT32 clip_fail; /* clipping fail statistic */
- INT32 stipple_count; /* stipple statistic */
- INT32 filler[64/4 - 7]; /* pad this structure to 64 bytes */
-};
-
-
-struct fifo_state
-{
- UINT32 * base; /* base of the FIFO */
- INT32 size; /* size of the FIFO */
- INT32 in; /* input pointer */
- INT32 out; /* output pointer */
-};
-
-
-struct cmdfifo_info
-{
- UINT8 enable; /* enabled? */
- UINT8 count_holes; /* count holes? */
- UINT32 base; /* base address in framebuffer RAM */
- UINT32 end; /* end address in framebuffer RAM */
- UINT32 rdptr; /* current read pointer */
- UINT32 amin; /* minimum address */
- UINT32 amax; /* maximum address */
- UINT32 depth; /* current depth */
- UINT32 holes; /* number of holes */
-};
-
-
-struct pci_state
-{
- fifo_state fifo; /* PCI FIFO */
- UINT32 init_enable; /* initEnable value */
- UINT8 stall_state; /* state of the system if we're stalled */
- UINT8 op_pending; /* true if an operation is pending */
- attotime op_end_time; /* time when the pending operation ends */
- emu_timer * continue_timer; /* timer to use to continue processing */
- UINT32 fifo_mem[64*2]; /* memory backing the PCI FIFO */
-};
-
-
-struct ncc_table
-{
- UINT8 dirty; /* is the texel lookup dirty? */
- voodoo_reg * reg; /* pointer to our registers */
- INT32 ir[4], ig[4], ib[4]; /* I values for R,G,B */
- INT32 qr[4], qg[4], qb[4]; /* Q values for R,G,B */
- INT32 y[16]; /* Y values */
- rgb_t * palette; /* pointer to associated RGB palette */
- rgb_t * palettea; /* pointer to associated ARGB palette */
- rgb_t texel[256]; /* texel lookup */
-};
-
-
-struct tmu_state
-{
- UINT8 * ram; /* pointer to our RAM */
- UINT32 mask; /* mask to apply to pointers */
- voodoo_reg * reg; /* pointer to our register base */
- UINT32 regdirty; /* true if the LOD/mode/base registers have changed */
-
- UINT32 texaddr_mask; /* mask for texture address */
- UINT8 texaddr_shift; /* shift for texture address */
-
- INT64 starts, startt; /* starting S,T (14.18) */
- INT64 startw; /* starting W (2.30) */
- INT64 dsdx, dtdx; /* delta S,T per X */
- INT64 dwdx; /* delta W per X */
- INT64 dsdy, dtdy; /* delta S,T per Y */
- INT64 dwdy; /* delta W per Y */
-
- INT32 lodmin, lodmax; /* min, max LOD values */
- INT32 lodbias; /* LOD bias */
- UINT32 lodmask; /* mask of available LODs */
- UINT32 lodoffset[9]; /* offset of texture base for each LOD */
- INT32 detailmax; /* detail clamp */
- INT32 detailbias; /* detail bias */
- UINT8 detailscale; /* detail scale */
-
- UINT32 wmask; /* mask for the current texture width */
- UINT32 hmask; /* mask for the current texture height */
-
- UINT32 bilinear_mask; /* mask for bilinear resolution (0xf0 for V1, 0xff for V2) */
-
- ncc_table ncc[2]; /* two NCC tables */
-
- rgb_t * lookup; /* currently selected lookup */
- rgb_t * texel[16]; /* texel lookups for each format */
-
- rgb_t palette[256]; /* palette lookup table */
- rgb_t palettea[256]; /* palette+alpha lookup table */
-};
-
-
-struct tmu_shared_state
-{
- rgb_t rgb332[256]; /* RGB 3-3-2 lookup table */
- rgb_t alpha8[256]; /* alpha 8-bit lookup table */
- rgb_t int8[256]; /* intensity 8-bit lookup table */
- rgb_t ai44[256]; /* alpha, intensity 4-4 lookup table */
-
- rgb_t rgb565[65536]; /* RGB 5-6-5 lookup table */
- rgb_t argb1555[65536]; /* ARGB 1-5-5-5 lookup table */
- rgb_t argb4444[65536]; /* ARGB 4-4-4-4 lookup table */
-};
-
-
-struct setup_vertex
-{
- float x, y; /* X, Y coordinates */
- float a, r, g, b; /* A, R, G, B values */
- float z, wb; /* Z and broadcast W values */
- float w0, s0, t0; /* W, S, T for TMU 0 */
- float w1, s1, t1; /* W, S, T for TMU 1 */
-};
-
-
-struct fbi_state
-{
- UINT8 * ram; /* pointer to frame buffer RAM */
- UINT32 mask; /* mask to apply to pointers */
- UINT32 rgboffs[3]; /* word offset to 3 RGB buffers */
- UINT32 auxoffs; /* word offset to 1 aux buffer */
-
- UINT8 frontbuf; /* front buffer index */
- UINT8 backbuf; /* back buffer index */
- UINT8 swaps_pending; /* number of pending swaps */
- UINT8 video_changed; /* did the frontbuffer video change? */
-
- UINT32 yorigin; /* Y origin subtract value */
- UINT32 lfb_base; /* base of LFB in memory */
- UINT8 lfb_stride; /* stride of LFB accesses in bits */
-
- UINT32 width; /* width of current frame buffer */
- UINT32 height; /* height of current frame buffer */
- UINT32 xoffs; /* horizontal offset (back porch) */
- UINT32 yoffs; /* vertical offset (back porch) */
- UINT32 vsyncscan; /* vertical sync scanline */
- UINT32 rowpixels; /* pixels per row */
- UINT32 tile_width; /* width of video tiles */
- UINT32 tile_height; /* height of video tiles */
- UINT32 x_tiles; /* number of tiles in the X direction */
-
- emu_timer * vblank_timer; /* VBLANK timer */
- UINT8 vblank; /* VBLANK state */
- UINT8 vblank_count; /* number of VBLANKs since last swap */
- UINT8 vblank_swap_pending; /* a swap is pending, waiting for a vblank */
- UINT8 vblank_swap; /* swap when we hit this count */
- UINT8 vblank_dont_swap; /* don't actually swap when we hit this point */
-
- /* triangle setup info */
- UINT8 cheating_allowed; /* allow cheating? */
- INT32 sign; /* triangle sign */
- INT16 ax, ay; /* vertex A x,y (12.4) */
- INT16 bx, by; /* vertex B x,y (12.4) */
- INT16 cx, cy; /* vertex C x,y (12.4) */
- INT32 startr, startg, startb, starta; /* starting R,G,B,A (12.12) */
- INT32 startz; /* starting Z (20.12) */
- INT64 startw; /* starting W (16.32) */
- INT32 drdx, dgdx, dbdx, dadx; /* delta R,G,B,A per X */
- INT32 dzdx; /* delta Z per X */
- INT64 dwdx; /* delta W per X */
- INT32 drdy, dgdy, dbdy, dady; /* delta R,G,B,A per Y */
- INT32 dzdy; /* delta Z per Y */
- INT64 dwdy; /* delta W per Y */
-
- stats_block lfb_stats; /* LFB-access statistics */
-
- UINT8 sverts; /* number of vertices ready */
- setup_vertex svert[3]; /* 3 setup vertices */
-
- fifo_state fifo; /* framebuffer memory fifo */
- cmdfifo_info cmdfifo[2]; /* command FIFOs */
-
- UINT8 fogblend[64]; /* 64-entry fog table */
- UINT8 fogdelta[64]; /* 64-entry fog table */
- UINT8 fogdelta_mask; /* mask for for delta (0xff for V1, 0xfc for V2) */
-
- rgb_t pen[65536]; /* mapping from pixels to pens */
- rgb_t clut[512]; /* clut gamma data */
- UINT8 clut_dirty; /* do we need to recompute? */
-};
-
-
-struct dac_state
-{
- UINT8 reg[8]; /* 8 registers */
- UINT8 read_result; /* pending read result */
-};
-
-
-struct raster_info
-{
- raster_info * next; /* pointer to next entry with the same hash */
- poly_draw_scanline_func callback; /* callback pointer */
- UINT8 is_generic; /* TRUE if this is one of the generic rasterizers */
- UINT8 display; /* display index */
- UINT32 hits; /* how many hits (pixels) we've used this for */
- UINT32 polys; /* how many polys we've used this for */
- UINT32 eff_color_path; /* effective fbzColorPath value */
- UINT32 eff_alpha_mode; /* effective alphaMode value */
- UINT32 eff_fog_mode; /* effective fogMode value */
- UINT32 eff_fbz_mode; /* effective fbzMode value */
- UINT32 eff_tex_mode_0; /* effective textureMode value for TMU #0 */
- UINT32 eff_tex_mode_1; /* effective textureMode value for TMU #1 */
- UINT32 hash;
-};
-
-
-struct poly_extra_data
-{
- voodoo_state * state; /* pointer back to the voodoo state */
- raster_info * info; /* pointer to rasterizer information */
-
- INT16 ax, ay; /* vertex A x,y (12.4) */
- INT32 startr, startg, startb, starta; /* starting R,G,B,A (12.12) */
- INT32 startz; /* starting Z (20.12) */
- INT64 startw; /* starting W (16.32) */
- INT32 drdx, dgdx, dbdx, dadx; /* delta R,G,B,A per X */
- INT32 dzdx; /* delta Z per X */
- INT64 dwdx; /* delta W per X */
- INT32 drdy, dgdy, dbdy, dady; /* delta R,G,B,A per Y */
- INT32 dzdy; /* delta Z per Y */
- INT64 dwdy; /* delta W per Y */
-
- INT64 starts0, startt0; /* starting S,T (14.18) */
- INT64 startw0; /* starting W (2.30) */
- INT64 ds0dx, dt0dx; /* delta S,T per X */
- INT64 dw0dx; /* delta W per X */
- INT64 ds0dy, dt0dy; /* delta S,T per Y */
- INT64 dw0dy; /* delta W per Y */
- INT32 lodbase0; /* used during rasterization */
-
- INT64 starts1, startt1; /* starting S,T (14.18) */
- INT64 startw1; /* starting W (2.30) */
- INT64 ds1dx, dt1dx; /* delta S,T per X */
- INT64 dw1dx; /* delta W per X */
- INT64 ds1dy, dt1dy; /* delta S,T per Y */
- INT64 dw1dy; /* delta W per Y */
- INT32 lodbase1; /* used during rasterization */
-
- UINT16 dither[16]; /* dither matrix, for fastfill */
-};
-
-
-struct banshee_info
-{
- UINT32 io[0x40]; /* I/O registers */
- UINT32 agp[0x80]; /* AGP registers */
- UINT8 vga[0x20]; /* VGA registers */
- UINT8 crtc[0x27]; /* VGA CRTC registers */
- UINT8 seq[0x05]; /* VGA sequencer registers */
- UINT8 gc[0x05]; /* VGA graphics controller registers */
- UINT8 att[0x15]; /* VGA attribute registers */
- UINT8 attff; /* VGA attribute flip-flop */
-
- UINT32 blt_regs[0x20]; /* 2D Blitter registers */
- UINT32 blt_dst_base;
- UINT32 blt_dst_x;
- UINT32 blt_dst_y;
- UINT32 blt_dst_width;
- UINT32 blt_dst_height;
- UINT32 blt_dst_stride;
- UINT32 blt_dst_bpp;
- UINT32 blt_cmd;
- UINT32 blt_src_base;
- UINT32 blt_src_x;
- UINT32 blt_src_y;
- UINT32 blt_src_width;
- UINT32 blt_src_height;
- UINT32 blt_src_stride;
- UINT32 blt_src_bpp;
-};
-
-
-struct voodoo_state
-{
- UINT8 index; /* index of board */
- voodoo_device *device; /* pointer to our containing device */
- screen_device *screen; /* the screen we are acting on */
- device_t *cpu; /* the CPU we interact with */
- UINT8 type; /* type of system */
- UINT8 chipmask; /* mask for which chips are available */
- UINT32 freq; /* operating frequency */
- attoseconds_t attoseconds_per_cycle; /* attoseconds per cycle */
- UINT32 extra_cycles; /* extra cycles not yet accounted for */
- int trigger; /* trigger used for stalling */
-
- voodoo_reg reg[0x400]; /* raw registers */
- const UINT8 * regaccess; /* register access array */
- const char *const * regnames; /* register names array */
- UINT8 alt_regmap; /* enable alternate register map? */
-
- pci_state pci; /* PCI state */
- dac_state dac; /* DAC state */
-
- fbi_state fbi; /* FBI states */
- tmu_state tmu[MAX_TMU]; /* TMU states */
- tmu_shared_state tmushare; /* TMU shared state */
- banshee_info banshee; /* Banshee state */
-
- legacy_poly_manager * poly; /* polygon manager */
- stats_block * thread_stats; /* per-thread statistics */
-
- voodoo_stats stats; /* internal statistics */
-
- offs_t last_status_pc; /* PC of last status description (for logging) */
- UINT32 last_status_value; /* value of last status read (for logging) */
-
- int next_rasterizer; /* next rasterizer index */
- raster_info rasterizer[MAX_RASTERIZERS]; /* array of rasterizers */
- raster_info * raster_hash[RASTER_HASH_SIZE]; /* hash table of rasterizers */
-
- bool send_config;
- UINT32 tmu_config;
-};
@@ -2346,16 +631,16 @@ do
} \
while (0)
-static inline bool ATTR_FORCE_INLINE chromaKeyTest(voodoo_state *v, stats_block *stats, UINT32 fbzModeReg, rgbaint_t rgbaIntColor)
+static inline bool ATTR_FORCE_INLINE chromaKeyTest(voodoo_device *vd, stats_block *stats, UINT32 fbzModeReg, rgbaint_t rgbaIntColor)
{
if (FBZMODE_ENABLE_CHROMAKEY(fbzModeReg))
{
rgb_union color;
color.u = (rgbaIntColor.get_a()<<24) | (rgbaIntColor.get_r()<<16) | (rgbaIntColor.get_g()<<8) | rgbaIntColor.get_b();
/* non-range version */
- if (!CHROMARANGE_ENABLE(v->reg[chromaRange].u))
+ if (!CHROMARANGE_ENABLE(vd->reg[chromaRange].u))
{
- if (((color.u ^ v->reg[chromaKey].u) & 0xffffff) == 0)
+ if (((color.u ^ vd->reg[chromaKey].u) & 0xffffff) == 0)
{
stats->chroma_fail++;
return false;
@@ -2369,30 +654,30 @@ static inline bool ATTR_FORCE_INLINE chromaKeyTest(voodoo_state *v, stats_block
int results;
/* check blue */
- low = v->reg[chromaKey].rgb.b;
- high = v->reg[chromaRange].rgb.b;
+ low = vd->reg[chromaKey].rgb.b;
+ high = vd->reg[chromaRange].rgb.b;
test = color.rgb.b;
results = (test >= low && test <= high);
- results ^= CHROMARANGE_BLUE_EXCLUSIVE(v->reg[chromaRange].u);
+ results ^= CHROMARANGE_BLUE_EXCLUSIVE(vd->reg[chromaRange].u);
results <<= 1;
/* check green */
- low = v->reg[chromaKey].rgb.g;
- high = v->reg[chromaRange].rgb.g;
+ low = vd->reg[chromaKey].rgb.g;
+ high = vd->reg[chromaRange].rgb.g;
test = color.rgb.g;
results |= (test >= low && test <= high);
- results ^= CHROMARANGE_GREEN_EXCLUSIVE(v->reg[chromaRange].u);
+ results ^= CHROMARANGE_GREEN_EXCLUSIVE(vd->reg[chromaRange].u);
results <<= 1;
/* check red */
- low = v->reg[chromaKey].rgb.r;
- high = v->reg[chromaRange].rgb.r;
+ low = vd->reg[chromaKey].rgb.r;
+ high = vd->reg[chromaRange].rgb.r;
test = color.rgb.r;
results |= (test >= low && test <= high);
- results ^= CHROMARANGE_RED_EXCLUSIVE(v->reg[chromaRange].u);
+ results ^= CHROMARANGE_RED_EXCLUSIVE(vd->reg[chromaRange].u);
/* final result */
- if (CHROMARANGE_UNION_MODE(v->reg[chromaRange].u))
+ if (CHROMARANGE_UNION_MODE(vd->reg[chromaRange].u))
{
if (results != 0)
{
@@ -2521,11 +806,11 @@ do
} \
while (0)
-static inline bool ATTR_FORCE_INLINE alphaTest(voodoo_state *v, stats_block *stats, UINT32 alphaModeReg, UINT8 alpha)
+static inline bool ATTR_FORCE_INLINE alphaTest(voodoo_device *vd, stats_block *stats, UINT32 alphaModeReg, UINT8 alpha)
{
if (ALPHAMODE_ALPHATEST(alphaModeReg))
{
- UINT8 alpharef = v->reg[alphaMode].rgb.a;
+ UINT8 alpharef = vd->reg[alphaMode].rgb.a;
switch (ALPHAMODE_ALPHAFUNCTION(alphaModeReg))
{
case 0: /* alphaOP = never */
@@ -3068,7 +1353,7 @@ do
} \
while (0)
-static inline void ATTR_FORCE_INLINE applyFogging(voodoo_state *v, UINT32 fogModeReg, UINT32 fbzCpReg, INT32 x, const UINT8 *dither4, INT32 fogDepth,
+static inline void ATTR_FORCE_INLINE applyFogging(voodoo_device *vd, UINT32 fogModeReg, UINT32 fbzCpReg, INT32 x, const UINT8 *dither4, INT32 fogDepth,
rgbaint_t &color, INT32 iterz, INT64 iterw, UINT8 itera)
{
if (FOGMODE_ENABLE_FOG(fogModeReg))
@@ -3076,7 +1361,7 @@ static inline void ATTR_FORCE_INLINE applyFogging(voodoo_state *v, UINT32 fogMod
UINT32 color_alpha = color.get_a();
/* constant fog bypasses everything else */
- rgbaint_t fogColorLocal(v->reg[fogColor].u);
+ rgbaint_t fogColorLocal(vd->reg[fogColor].u);
if (FOGMODE_FOG_CONSTANT(fogModeReg))
{
@@ -3120,11 +1405,11 @@ static inline void ATTR_FORCE_INLINE applyFogging(voodoo_state *v, UINT32 fogMod
{
case 0: /* fog table */
{
- INT32 delta = v->fbi.fogdelta[fogDepth >> 10];
+ INT32 delta = vd->fbi.fogdelta[fogDepth >> 10];
INT32 deltaval;
/* perform the multiply against lower 8 bits of wfloat */
- deltaval = (delta & v->fbi.fogdelta_mask) *
+ deltaval = (delta & vd->fbi.fogdelta_mask) *
((fogDepth >> 2) & 0xff);
/* fog zones allow for negating this value */
@@ -3138,7 +1423,7 @@ static inline void ATTR_FORCE_INLINE applyFogging(voodoo_state *v, UINT32 fogMod
deltaval >>= 4;
/* add to the blending factor */
- fogblend = v->fbi.fogblend[fogDepth >> 10] + deltaval;
+ fogblend = vd->fbi.fogblend[fogDepth >> 10] + deltaval;
break;
}
@@ -3543,7 +1828,7 @@ while (0)
*
*************************************/
-#define PIXEL_PIPELINE_BEGIN(VV, STATS, XX, YY, FBZCOLORPATH, FBZMODE, ITERZ, ITERW) \
+#define PIXEL_PIPELINE_BEGIN(vd, STATS, XX, YY, FBZCOLORPATH, FBZMODE, ITERZ, ITERW) \
do \
{ \
INT32 depthval, wfloat, fogdepth, biasdepth; \
@@ -3560,10 +1845,10 @@ do
/* rotate mode */ \
if (FBZMODE_STIPPLE_PATTERN(FBZMODE) == 0) \
{ \
- (VV)->reg[stipple].u = ((VV)->reg[stipple].u << 1) | ((VV)->reg[stipple].u >> 31);\
- if (((VV)->reg[stipple].u & 0x80000000) == 0) \
+ vd->reg[stipple].u = (vd->reg[stipple].u << 1) | (vd->reg[stipple].u >> 31);\
+ if ((vd->reg[stipple].u & 0x80000000) == 0) \
{ \
- (VV)->stats.total_stippled++; \
+ vd->stats.total_stippled++; \
goto skipdrawdepth; \
} \
} \
@@ -3572,9 +1857,9 @@ do
else \
{ \
int stipple_index = (((YY) & 3) << 3) | (~(XX) & 7); \
- if ((((VV)->reg[stipple].u >> stipple_index) & 1) == 0) \
+ if (((vd->reg[stipple].u >> stipple_index) & 1) == 0) \
{ \
- (VV)->stats.total_stippled++; \
+ vd->stats.total_stippled++; \
goto skipdrawdepth; \
} \
} \
@@ -3598,7 +1883,7 @@ do
/* add the bias for fog selection*/ \
if (FBZMODE_ENABLE_DEPTH_BIAS(FBZMODE)) \
{ \
- fogdepth += (INT16)(VV)->reg[zaColor].u; \
+ fogdepth += (INT16)vd->reg[zaColor].u; \
CLAMP(fogdepth, 0, 0xffff); \
} \
\
@@ -3629,12 +1914,12 @@ do
biasdepth = depthval; \
if (FBZMODE_ENABLE_DEPTH_BIAS(FBZMODE)) \
{ \
- biasdepth += (INT16)(VV)->reg[zaColor].u; \
+ biasdepth += (INT16)vd->reg[zaColor].u; \
CLAMP(biasdepth, 0, 0xffff); \
}
-#define DEPTH_TEST(VV, STATS, XX, FBZMODE) \
+#define DEPTH_TEST(vd, STATS, XX, FBZMODE) \
do \
{ \
/* handle depth buffer testing */ \
@@ -3647,7 +1932,7 @@ do
if (FBZMODE_DEPTH_SOURCE_COMPARE(FBZMODE) == 0) \
depthsource = biasdepth; \
else \
- depthsource = (UINT16)(VV)->reg[zaColor].u; \
+ depthsource = (UINT16)vd->reg[zaColor].u; \
\
/* test against the depth buffer */ \
switch (FBZMODE_DEPTH_FUNCTION(FBZMODE)) \
@@ -3787,52 +2072,11 @@ static inline bool ATTR_FORCE_INLINE depthTest(UINT16 zaColorReg, stats_block *s
return true;
}
-#if USE_OLD_RASTER == 1
-#define PIXEL_PIPELINE_END(VV, STATS, DITHER, DITHER4, DITHER_LOOKUP, XX, dest, depth, FBZMODE, FBZCOLORPATH, ALPHAMODE, FOGMODE, ITERZ, ITERW, ITERAXXX) \
- \
- /* perform fogging */ \
- INT32 prefogr, prefogg, prefogb; \
- prefogr = r; \
- prefogg = g; \
- prefogb = b; \
- APPLY_FOGGING(VV, FOGMODE, FBZCOLORPATH, XX, DITHER4, r, g, b, \
- ITERZ, ITERW, ITERAXXX); \
- \
- /* perform alpha blending */ \
- APPLY_ALPHA_BLEND(FBZMODE, ALPHAMODE, XX, DITHER, r, g, b, a); \
- /* modify the pixel for debugging purposes */ \
- MODIFY_PIXEL(VV); \
- \
- /* write to framebuffer */ \
- if (FBZMODE_RGB_BUFFER_MASK(FBZMODE)) \
- { \
- /* apply dithering */ \
- APPLY_DITHER(FBZMODE, XX, DITHER_LOOKUP, r, g, b); \
- dest[XX] = (r << 11) | (g << 5) | b; \
- } \
- \
- /* write to aux buffer */ \
- if (depth && FBZMODE_AUX_BUFFER_MASK(FBZMODE)) \
- { \
- if (FBZMODE_ENABLE_ALPHA_PLANES(FBZMODE) == 0) \
- depth[XX] = biasdepth; \
- else \
- depth[XX] = a; \
- } \
- \
- /* track pixel writes to the frame buffer regardless of mask */ \
- (STATS)->pixels_out++; \
- \
-skipdrawdepth: \
- ; \
-} \
-while (0)
-#else
-#define PIXEL_PIPELINE_END(VV, STATS, DITHER, DITHER4, DITHER_LOOKUP, XX, dest, depth, FBZMODE, FBZCOLORPATH, ALPHAMODE, FOGMODE, ITERZ, ITERW, ITERAXXX) \
+#define PIXEL_PIPELINE_END(vd, STATS, DITHER, DITHER4, DITHER_LOOKUP, XX, dest, depth, FBZMODE, FBZCOLORPATH, ALPHAMODE, FOGMODE, ITERZ, ITERW, ITERAXXX) \
\
/* perform fogging */ \
preFog.set(color); \
- applyFogging(VV, FOGMODE, FBZCOLORPATH, XX, DITHER4, fogdepth, color, ITERZ, ITERW, ITERAXXX.get_a()); \
+ applyFogging(vd, FOGMODE, FBZCOLORPATH, XX, DITHER4, fogdepth, color, ITERZ, ITERW, ITERAXXX.get_a()); \
/* perform alpha blending */ \
alphaBlend(FBZMODE, ALPHAMODE, XX, DITHER, dest[XX], depth, preFog, color); \
a = color.get_a(); r = color.get_r(); g = color.get_g(); b = color.get_b(); \
@@ -3863,7 +2107,7 @@ skipdrawdepth:
; \
} \
while (0)
-#endif
+
/*************************************
@@ -4163,7 +2407,7 @@ do
} \
while (0)
-static inline bool ATTR_FORCE_INLINE combineColor(voodoo_state *VV, stats_block *STATS, UINT32 FBZCOLORPATH, UINT32 FBZMODE, UINT32 ALPHAMODE,
+static inline bool ATTR_FORCE_INLINE combineColor(voodoo_device *vd, stats_block *STATS, UINT32 FBZCOLORPATH, UINT32 FBZMODE, UINT32 ALPHAMODE,
rgbaint_t TEXELARGB, INT32 ITERZ, INT64 ITERW, rgbaint_t &srcColor)
{
rgbaint_t c_other;
@@ -4181,7 +2425,7 @@ static inline bool ATTR_FORCE_INLINE combineColor(voodoo_state *VV, stats_block
break;
case 2: /* color1 RGB */
- c_other.set((VV)->reg[color1].u);
+ c_other.set(vd->reg[color1].u);
break;
default: /* reserved - voodoo3 framebufferRGB */
@@ -4190,9 +2434,9 @@ static inline bool ATTR_FORCE_INLINE combineColor(voodoo_state *VV, stats_block
}
/* handle chroma key */
- if (!chromaKeyTest(VV, STATS, FBZMODE, c_other))
+ if (!chromaKeyTest(vd, STATS, FBZMODE, c_other))
return false;
- //APPLY_CHROMAKEY(VV, STATS, FBZMODE, c_other);
+ //APPLY_CHROMAKEY(vd->m_vds, STATS, FBZMODE, c_other);
/* compute a_other */
switch (FBZCP_CC_ASELECT(FBZCOLORPATH))
@@ -4206,7 +2450,7 @@ static inline bool ATTR_FORCE_INLINE combineColor(voodoo_state *VV, stats_block
break;
case 2: /* color1 alpha */
- c_other.set_a((VV)->reg[color1].rgb.a);
+ c_other.set_a(vd->reg[color1].rgb.a);
break;
default: /* reserved */
@@ -4217,7 +2461,7 @@ static inline bool ATTR_FORCE_INLINE combineColor(voodoo_state *VV, stats_block
/* handle alpha mask */
if (!alphaMaskTest(STATS, FBZMODE, c_other.get_a()))
return false;
- //APPLY_ALPHAMASK(VV, STATS, FBZMODE, c_other.rgb.a);
+ //APPLY_ALPHAMASK(vd->m_vds, STATS, FBZMODE, c_other.rgb.a);
/* compute c_local */
@@ -4226,14 +2470,14 @@ static inline bool ATTR_FORCE_INLINE combineColor(voodoo_state *VV, stats_block
if (FBZCP_CC_LOCALSELECT(FBZCOLORPATH) == 0) /* iterated RGB */
c_local.set(srcColor);
else /* color0 RGB */
- c_local.set((VV)->reg[color0].u);
+ c_local.set(vd->reg[color0].u);
}
else
{
if (!(TEXELARGB.get_a() & 0x80)) /* iterated RGB */
c_local.set(srcColor);
else /* color0 RGB */
- c_local.set((VV)->reg[color0].u);
+ c_local.set(vd->reg[color0].u);
}
/* compute a_local */
@@ -4245,7 +2489,7 @@ static inline bool ATTR_FORCE_INLINE combineColor(voodoo_state *VV, stats_block
break;
case 1: /* color0 alpha */
- c_local.set_a((VV)->reg[color0].rgb.a);
+ c_local.set_a(vd->reg[color0].rgb.a);
break;
case 2: /* clamped iterated Z[27:20] */
@@ -4397,9 +2641,9 @@ static inline bool ATTR_FORCE_INLINE combineColor(voodoo_state *VV, stats_block
/* handle alpha test */
- if (!alphaTest(VV, STATS, ALPHAMODE, srcColor.get_a()))
+ if (!alphaTest(vd, STATS, ALPHAMODE, srcColor.get_a()))
return false;
- //APPLY_ALPHATEST(VV, STATS, ALPHAMODE, color.rgb.a);
+ //APPLY_ALPHATEST(vd->m_vds, STATS, ALPHAMODE, color.rgb.a);
return true;
}
@@ -4411,162 +2655,14 @@ static inline bool ATTR_FORCE_INLINE combineColor(voodoo_state *VV, stats_block
* Rasterizer generator macro
*
*************************************/
-#if USE_OLD_RASTER == 1
-#define RASTERIZER(name, TMUS, FBZCOLORPATH, FBZMODE, ALPHAMODE, FOGMODE, TEXMODE0, TEXMODE1) \
- \
-static void raster_##name(void *destbase, INT32 y, const poly_extent *extent, const void *extradata, int threadid) \
-{ \
- const poly_extra_data *extra = (const poly_extra_data *)extradata; \
- voodoo_state *v = extra->state; \
- stats_block *stats = &v->thread_stats[threadid]; \
- DECLARE_DITHER_POINTERS; \
- INT32 startx = extent->startx; \
- INT32 stopx = extent->stopx; \
- INT32 iterr, iterg, iterb, itera; \
- INT32 iterz; \
- INT64 iterw, iterw0 = 0, iterw1 = 0; \
- INT64 iters0 = 0, iters1 = 0; \
- INT64 itert0 = 0, itert1 = 0; \
- UINT16 *depth; \
- UINT16 *dest; \
- INT32 dx, dy; \
- INT32 scry; \
- INT32 x; \
- \
- /* determine the screen Y */ \
- scry = y; \
- if (FBZMODE_Y_ORIGIN(FBZMODE)) \
- scry = (v->fbi.yorigin - y) & 0x3ff; \
- \
- /* compute dithering */ \
- COMPUTE_DITHER_POINTERS(FBZMODE, y); \
- \
- /* apply clipping */ \
- if (FBZMODE_ENABLE_CLIPPING(FBZMODE)) \
- { \
- INT32 tempclip; \
- \
- /* Y clipping buys us the whole scanline */ \
- if (scry < ((v->reg[clipLowYHighY].u >> 16) & 0x3ff) || \
- scry >= (v->reg[clipLowYHighY].u & 0x3ff)) \
- { \
- stats->pixels_in += stopx - startx; \
- stats->clip_fail += stopx - startx; \
- return; \
- } \
- \
- /* X clipping */ \
- tempclip = (v->reg[clipLeftRight].u >> 16) & 0x3ff; \
- if (startx < tempclip) \
- { \
- stats->pixels_in += tempclip - startx; \
- v->stats.total_clipped += tempclip - startx; \
- startx = tempclip; \
- } \
- tempclip = v->reg[clipLeftRight].u & 0x3ff; \
- if (stopx >= tempclip) \
- { \
- stats->pixels_in += stopx - tempclip; \
- v->stats.total_clipped += stopx - tempclip; \
- stopx = tempclip - 1; \
- } \
- } \
- \
- /* get pointers to the target buffer and depth buffer */ \
- dest = (UINT16 *)destbase + scry * v->fbi.rowpixels; \
- depth = (v->fbi.auxoffs != ~0) ? ((UINT16 *)(v->fbi.ram + v->fbi.auxoffs) + scry * v->fbi.rowpixels) : NULL; \
- \
- /* compute the starting parameters */ \
- dx = startx - (extra->ax >> 4); \
- dy = y - (extra->ay >> 4); \
- iterr = extra->startr + dy * extra->drdy + dx * extra->drdx; \
- iterg = extra->startg + dy * extra->dgdy + dx * extra->dgdx; \
- iterb = extra->startb + dy * extra->dbdy + dx * extra->dbdx; \
- itera = extra->starta + dy * extra->dady + dx * extra->dadx; \
- iterz = extra->startz + dy * extra->dzdy + dx * extra->dzdx; \
- iterw = extra->startw + dy * extra->dwdy + dx * extra->dwdx; \
- if (TMUS >= 1) \
- { \
- iterw0 = extra->startw0 + dy * extra->dw0dy + dx * extra->dw0dx; \
- iters0 = extra->starts0 + dy * extra->ds0dy + dx * extra->ds0dx; \
- itert0 = extra->startt0 + dy * extra->dt0dy + dx * extra->dt0dx; \
- } \
- if (TMUS >= 2) \
- { \
- iterw1 = extra->startw1 + dy * extra->dw1dy + dx * extra->dw1dx; \
- iters1 = extra->starts1 + dy * extra->ds1dy + dx * extra->ds1dx; \
- itert1 = extra->startt1 + dy * extra->dt1dy + dx * extra->dt1dx; \
- } \
- extra->info->hits++; \
- /* loop in X */ \
- for (x = startx; x < stopx; x++) \
- { \
- rgb_union iterargb; \
- rgb_union texel = { 0 }; \
- \
- /* pixel pipeline part 1 handles depth setup and stippling */ \
- PIXEL_PIPELINE_BEGIN(v, stats, x, y, FBZCOLORPATH, FBZMODE, iterz, iterw); \
- DEPTH_TEST(v, stats, x, FBZMODE); \
- \
- /* run the texture pipeline on TMU1 to produce a value in texel */ \
- /* note that they set LOD min to 8 to "disable" a TMU */ \
- if (TMUS >= 2 && v->tmu[1].lodmin < (8 << 8)) \
- TEXTURE_PIPELINE(&v->tmu[1], x, dither4, TEXMODE1, texel, \
- v->tmu[1].lookup, extra->lodbase1, \
- iters1, itert1, iterw1, texel); \
- \
- /* run the texture pipeline on TMU0 to produce a final */ \
- /* result in texel */ \
- /* note that they set LOD min to 8 to "disable" a TMU */ \
- if (TMUS >= 1 && v->tmu[0].lodmin < (8 << 8)) \
- { \
- if (!v->send_config) \
- TEXTURE_PIPELINE(&v->tmu[0], x, dither4, TEXMODE0, texel, \
- v->tmu[0].lookup, extra->lodbase0, \
- iters0, itert0, iterw0, texel); \
- else \
- texel.u = v->tmu_config; \
- } \
- /* colorpath pipeline selects source colors and does blending */ \
- CLAMPED_ARGB(iterr, iterg, iterb, itera, FBZCOLORPATH, iterargb); \
- COLORPATH_PIPELINE(v, stats, FBZCOLORPATH, FBZMODE, ALPHAMODE, texel, \
- iterz, iterw, iterargb); \
- \
- /* pixel pipeline part 2 handles fog, alpha, and final output */ \
- PIXEL_PIPELINE_END(v, stats, dither, dither4, dither_lookup, x, dest, depth, \
- FBZMODE, FBZCOLORPATH, ALPHAMODE, FOGMODE, \
- iterz, iterw, iterargb); \
- \
- /* update the iterated parameters */ \
- iterr += extra->drdx; \
- iterg += extra->dgdx; \
- iterb += extra->dbdx; \
- itera += extra->dadx; \
- iterz += extra->dzdx; \
- iterw += extra->dwdx; \
- if (TMUS >= 1) \
- { \
- iterw0 += extra->dw0dx; \
- iters0 += extra->ds0dx; \
- itert0 += extra->dt0dx; \
- } \
- if (TMUS >= 2) \
- { \
- iterw1 += extra->dw1dx; \
- iters1 += extra->ds1dx; \
- itert1 += extra->dt1dx; \
- } \
- } \
-}
-#else
-// New rasterizer implementation
+
#define RASTERIZER(name, TMUS, FBZCOLORPATH, FBZMODE, ALPHAMODE, FOGMODE, TEXMODE0, TEXMODE1) \
\
-static void raster_##name(void *destbase, INT32 y, const poly_extent *extent, const void *extradata, int threadid) \
+void voodoo_device::raster_##name(void *destbase, INT32 y, const poly_extent *extent, const void *extradata, int threadid) \
{ \
const poly_extra_data *extra = (const poly_extra_data *)extradata; \
- voodoo_state *v = extra->state; \
- stats_block *stats = &v->thread_stats[threadid]; \
+ voodoo_device *vd = extra->device; \
+ stats_block *stats = &vd->thread_stats[threadid]; \
DECLARE_DITHER_POINTERS; \
INT32 startx = extent->startx; \
INT32 stopx = extent->stopx; \
@@ -4584,7 +2680,7 @@ static void raster_##name(void *destbase, INT32 y, const poly_extent *extent, co
/* determine the screen Y */ \
scry = y; \
if (FBZMODE_Y_ORIGIN(FBZMODE)) \
- scry = (v->fbi.yorigin - y) & 0x3ff; \
+ scry = (vd->fbi.yorigin - y) & 0x3ff; \
\
/* compute dithering */ \
COMPUTE_DITHER_POINTERS(FBZMODE, y); \
@@ -4595,8 +2691,8 @@ static void raster_##name(void *destbase, INT32 y, const poly_extent *extent, co
INT32 tempclip; \
\
/* Y clipping buys us the whole scanline */ \
- if (scry < ((v->reg[clipLowYHighY].u >> 16) & 0x3ff) || \
- scry >= (v->reg[clipLowYHighY].u & 0x3ff)) \
+ if (scry < ((vd->reg[clipLowYHighY].u >> 16) & 0x3ff) || \
+ scry >= (vd->reg[clipLowYHighY].u & 0x3ff)) \
{ \
stats->pixels_in += stopx - startx; \
stats->clip_fail += stopx - startx; \
@@ -4604,25 +2700,25 @@ static void raster_##name(void *destbase, INT32 y, const poly_extent *extent, co
} \
\
/* X clipping */ \
- tempclip = (v->reg[clipLeftRight].u >> 16) & 0x3ff; \
+ tempclip = (vd->reg[clipLeftRight].u >> 16) & 0x3ff; \
if (startx < tempclip) \
{ \
stats->pixels_in += tempclip - startx; \
- v->stats.total_clipped += tempclip - startx; \
+ vd->stats.total_clipped += tempclip - startx; \
startx = tempclip; \
} \
- tempclip = v->reg[clipLeftRight].u & 0x3ff; \
+ tempclip = vd->reg[clipLeftRight].u & 0x3ff; \
if (stopx >= tempclip) \
{ \
stats->pixels_in += stopx - tempclip; \
- v->stats.total_clipped += stopx - tempclip; \
+ vd->stats.total_clipped += stopx - tempclip; \
stopx = tempclip - 1; \
} \
} \
\
/* get pointers to the target buffer and depth buffer */ \
- dest = (UINT16 *)destbase + scry * v->fbi.rowpixels; \
- depth = (v->fbi.auxoffs != ~0) ? ((UINT16 *)(v->fbi.ram + v->fbi.auxoffs) + scry * v->fbi.rowpixels) : NULL; \
+ dest = (UINT16 *)destbase + scry * vd->fbi.rowpixels; \
+ depth = (vd->fbi.auxoffs != ~0) ? ((UINT16 *)(vd->fbi.ram + vd->fbi.auxoffs) + scry * vd->fbi.rowpixels) : NULL; \
\
/* compute the starting parameters */ \
dx = startx - (extra->ax >> 4); \
@@ -4655,46 +2751,46 @@ static void raster_##name(void *destbase, INT32 y, const poly_extent *extent, co
rgbaint_t color, preFog; \
\
/* pixel pipeline part 1 handles depth setup and stippling */ \
- PIXEL_PIPELINE_BEGIN(v, stats, x, y, FBZCOLORPATH, FBZMODE, iterz, iterw); \
+ PIXEL_PIPELINE_BEGIN(vd, stats, x, y, FBZCOLORPATH, FBZMODE, iterz, iterw); \
/* depth testing */ \
- if (!depthTest((UINT16) v->reg[zaColor].u, stats, depth[x], FBZMODE, biasdepth)) \
+ if (!depthTest((UINT16) vd->reg[zaColor].u, stats, depth[x], FBZMODE, biasdepth)) \
goto skipdrawdepth; \
\
/* run the texture pipeline on TMU1 to produce a value in texel */ \
/* note that they set LOD min to 8 to "disable" a TMU */ \
- if (TMUS >= 2 && v->tmu[1].lodmin < (8 << 8)) { \
+ if (TMUS >= 2 && vd->tmu[1].lodmin < (8 << 8)) { \
INT32 tmp; \
const rgbaint_t texelZero(0); \
- texel = genTexture(&v->tmu[1], x, dither4, TEXMODE1, v->tmu[1].lookup, extra->lodbase1, \
+ texel = genTexture(&vd->tmu[1], x, dither4, TEXMODE1, vd->tmu[1].lookup, extra->lodbase1, \
iters1, itert1, iterw1, tmp); \
- texel = combineTexture(&v->tmu[1], TEXMODE1, texel, texelZero, tmp); \
+ texel = combineTexture(&vd->tmu[1], TEXMODE1, texel, texelZero, tmp); \
} \
/* run the texture pipeline on TMU0 to produce a final */ \
/* result in texel */ \
/* note that they set LOD min to 8 to "disable" a TMU */ \
- if (TMUS >= 1 && v->tmu[0].lodmin < (8 << 8)) \
+ if (TMUS >= 1 && vd->tmu[0].lodmin < (8 << 8)) \
{ \
- if (!v->send_config) \
+ if (!vd->send_config) \
{ \
INT32 lod0; \
rgbaint_t texelT0; \
- texelT0 = genTexture(&v->tmu[0], x, dither4, TEXMODE0, v->tmu[0].lookup, extra->lodbase0, \
+ texelT0 = genTexture(&vd->tmu[0], x, dither4, TEXMODE0, vd->tmu[0].lookup, extra->lodbase0, \
iters0, itert0, iterw0, lod0); \
- texel = combineTexture(&v->tmu[0], TEXMODE0, texelT0, texel, lod0); \
+ texel = combineTexture(&vd->tmu[0], TEXMODE0, texelT0, texel, lod0); \
} \
else \
{ \
- texel.set(v->tmu_config); \
+ texel.set(vd->tmu_config); \
} \
} \
\
/* colorpath pipeline selects source colors and does blending */ \
color = clampARGB(iterargb, FBZCOLORPATH); \
- if (!combineColor(v, stats, FBZCOLORPATH, FBZMODE, ALPHAMODE, texel, iterz, iterw, color)) \
+ if (!combineColor(vd, stats, FBZCOLORPATH, FBZMODE, ALPHAMODE, texel, iterz, iterw, color)) \
goto skipdrawdepth; \
\
/* pixel pipeline part 2 handles fog, alpha, and final output */ \
- PIXEL_PIPELINE_END(v, stats, dither, dither4, dither_lookup, x, dest, depth, \
+ PIXEL_PIPELINE_END(vd, stats, dither, dither4, dither_lookup, x, dest, depth, \
FBZMODE, FBZCOLORPATH, ALPHAMODE, FOGMODE, \
iterz, iterw, iterargb); \
\
@@ -4716,7 +2812,8 @@ static void raster_##name(void *destbase, INT32 y, const poly_extent *extent, co
} \
} \
}
-#endif
+
+
// ******************************************************************************************************************************
// Computes a log2 of a 16.32 value to 2 fractional bits of precision.
// The return value is coded as a 24.8 value.
diff --git a/src/devices/video/voodoo.cpp b/src/devices/video/voodoo.cpp
index 07a3c06f815..7fe0b94a007 100644
--- a/src/devices/video/voodoo.cpp
+++ b/src/devices/video/voodoo.cpp
@@ -141,11 +141,9 @@ bits(7:4) and bit(24)), X, and Y:
**************************************************************************/
-#ifndef EXPAND_RASTERIZERS
-#define EXPAND_RASTERIZERS
#include "emu.h"
-#include "video/polylgcy.h"
+
#include "video/rgbutil.h"
#include "voodoo.h"
#include "vooddefs.h"
@@ -196,50 +194,6 @@ UINT32 voodoo_reciplog[(2 << RECIPLOG_LOOKUP_BITS) + 2];
-/*************************************
- *
- * Prototypes
- *
- *************************************/
-
-static void init_fbi(voodoo_state *v, fbi_state *f, void *memory, int fbmem);
-static void init_tmu_shared(tmu_shared_state *s);
-static void init_tmu(voodoo_state *v, tmu_state *t, voodoo_reg *reg, void *memory, int tmem);
-static void soft_reset(voodoo_state *v);
-static void recompute_video_memory(voodoo_state *v);
-static void check_stalled_cpu(voodoo_state *v, attotime current_time);
-static void flush_fifos(voodoo_state *v, attotime current_time);
-static TIMER_CALLBACK( stall_cpu_callback );
-static void stall_cpu(voodoo_state *v, int state, attotime current_time);
-static TIMER_CALLBACK( vblank_callback );
-static INT32 register_w(voodoo_state *v, offs_t offset, UINT32 data);
-static INT32 lfb_direct_w(voodoo_state *v, offs_t offset, UINT32 data, UINT32 mem_mask);
-static INT32 lfb_w(voodoo_state *v, offs_t offset, UINT32 data, UINT32 mem_mask);
-static INT32 texture_w(voodoo_state *v, offs_t offset, UINT32 data);
-static INT32 banshee_2d_w(voodoo_state *v, offs_t offset, UINT32 data);
-
-/* command handlers */
-static INT32 fastfill(voodoo_state *v);
-static INT32 swapbuffer(voodoo_state *v, UINT32 data);
-static INT32 triangle(voodoo_state *v);
-static INT32 begin_triangle(voodoo_state *v);
-static INT32 draw_triangle(voodoo_state *v);
-
-/* triangle helpers */
-static INT32 setup_and_draw_triangle(voodoo_state *v);
-static INT32 triangle_create_work_item(voodoo_state *v, UINT16 *drawbuf, int texcount);
-
-/* rasterizer management */
-static raster_info *add_rasterizer(voodoo_state *v, const raster_info *cinfo);
-static raster_info *find_rasterizer(voodoo_state *v, int texcount);
-static void dump_rasterizer_stats(voodoo_state *v);
-
-/* generic rasterizers */
-static void raster_fastfill(void *dest, INT32 scanline, const poly_extent *extent, const void *extradata, int threadid);
-static void raster_generic_0tmu(void *dest, INT32 scanline, const poly_extent *extent, const void *extradata, int threadid);
-static void raster_generic_1tmu(void *dest, INT32 scanline, const poly_extent *extent, const void *extradata, int threadid);
-static void raster_generic_2tmu(void *dest, INT32 scanline, const poly_extent *extent, const void *extradata, int threadid);
-
/*************************************
@@ -251,7 +205,7 @@ static void raster_generic_2tmu(void *dest, INT32 scanline, const poly_extent *e
#define RASTERIZER_ENTRY(fbzcp, alpha, fog, fbz, tex0, tex1) \
RASTERIZER(fbzcp##_##alpha##_##fog##_##fbz##_##tex0##_##tex1, (((tex0) == 0xffffffff) ? 0 : ((tex1) == 0xffffffff) ? 1 : 2), fbzcp, fbz, alpha, fog, tex0, tex1)
-#include "voodoo.cpp"
+#include "voodoo_rast.inc"
#undef RASTERIZER_ENTRY
@@ -264,11 +218,11 @@ static void raster_generic_2tmu(void *dest, INT32 scanline, const poly_extent *e
*************************************/
#define RASTERIZER_ENTRY(fbzcp, alpha, fog, fbz, tex0, tex1) \
- { NULL, raster_##fbzcp##_##alpha##_##fog##_##fbz##_##tex0##_##tex1, FALSE, 0, 0, 0, fbzcp, alpha, fog, fbz, tex0, tex1 },
+ { NULL, voodoo_device::raster_##fbzcp##_##alpha##_##fog##_##fbz##_##tex0##_##tex1, FALSE, 0, 0, 0, fbzcp, alpha, fog, fbz, tex0, tex1 },
static const raster_info predef_raster_table[] =
{
-#include "voodoo.cpp"
+#include "voodoo_rast.inc"
{ nullptr }
};
@@ -280,100 +234,84 @@ static const raster_info predef_raster_table[] =
INLINE FUNCTIONS
***************************************************************************/
-/*-------------------------------------------------
- get_safe_token - makes sure that the passed
- in device is, in fact, a voodoo device
--------------------------------------------------*/
-
-static inline voodoo_state *get_safe_token(device_t *device)
-{
- assert(device != nullptr);
- assert((device->type() == VOODOO_1) || (device->type() == VOODOO_2) || (device->type() == VOODOO_BANSHEE) || (device->type() == VOODOO_3));
-
- return (voodoo_state *)downcast<voodoo_device *>(device)->token();
-}
-
-
-
/*************************************
*
* Video update
*
*************************************/
-int voodoo_update(device_t *device, bitmap_rgb32 &bitmap, const rectangle &cliprect)
+int voodoo_device::voodoo_update(bitmap_rgb32 &bitmap, const rectangle &cliprect)
{
- voodoo_state *v = get_safe_token(device);
- int changed = v->fbi.video_changed;
- int drawbuf = v->fbi.frontbuf;
+ int changed = fbi.video_changed;
+ int drawbuf = fbi.frontbuf;
int statskey;
int x, y;
/* reset the video changed flag */
- v->fbi.video_changed = FALSE;
+ fbi.video_changed = FALSE;
/* if we are blank, just fill with black */
- if (v->type <= TYPE_VOODOO_2 && FBIINIT1_SOFTWARE_BLANK(v->reg[fbiInit1].u))
+ if (vd_type <= TYPE_VOODOO_2 && FBIINIT1_SOFTWARE_BLANK(reg[fbiInit1].u))
{
bitmap.fill(0, cliprect);
return changed;
}
/* if the CLUT is dirty, recompute the pens array */
- if (v->fbi.clut_dirty)
+ if (fbi.clut_dirty)
{
UINT8 rtable[32], gtable[64], btable[32];
/* Voodoo/Voodoo-2 have an internal 33-entry CLUT */
- if (v->type <= TYPE_VOODOO_2)
+ if (vd_type <= TYPE_VOODOO_2)
{
/* kludge: some of the Midway games write 0 to the last entry when they obviously mean FF */
- if ((v->fbi.clut[32] & 0xffffff) == 0 && (v->fbi.clut[31] & 0xffffff) != 0)
- v->fbi.clut[32] = 0x20ffffff;
+ if ((fbi.clut[32] & 0xffffff) == 0 && (fbi.clut[31] & 0xffffff) != 0)
+ fbi.clut[32] = 0x20ffffff;
/* compute the R/G/B pens first */
for (x = 0; x < 32; x++)
{
/* treat X as a 5-bit value, scale up to 8 bits, and linear interpolate for red/blue */
y = (x << 3) | (x >> 2);
- rtable[x] = (v->fbi.clut[y >> 3].r() * (8 - (y & 7)) + v->fbi.clut[(y >> 3) + 1].r() * (y & 7)) >> 3;
- btable[x] = (v->fbi.clut[y >> 3].b() * (8 - (y & 7)) + v->fbi.clut[(y >> 3) + 1].b() * (y & 7)) >> 3;
+ rtable[x] = (fbi.clut[y >> 3].r() * (8 - (y & 7)) + fbi.clut[(y >> 3) + 1].r() * (y & 7)) >> 3;
+ btable[x] = (fbi.clut[y >> 3].b() * (8 - (y & 7)) + fbi.clut[(y >> 3) + 1].b() * (y & 7)) >> 3;
/* treat X as a 6-bit value with LSB=0, scale up to 8 bits, and linear interpolate */
y = (x * 2) + 0;
y = (y << 2) | (y >> 4);
- gtable[x*2+0] = (v->fbi.clut[y >> 3].g() * (8 - (y & 7)) + v->fbi.clut[(y >> 3) + 1].g() * (y & 7)) >> 3;
+ gtable[x*2+0] = (fbi.clut[y >> 3].g() * (8 - (y & 7)) + fbi.clut[(y >> 3) + 1].g() * (y & 7)) >> 3;
/* treat X as a 6-bit value with LSB=1, scale up to 8 bits, and linear interpolate */
y = (x * 2) + 1;
y = (y << 2) | (y >> 4);
- gtable[x*2+1] = (v->fbi.clut[y >> 3].g() * (8 - (y & 7)) + v->fbi.clut[(y >> 3) + 1].g() * (y & 7)) >> 3;
+ gtable[x*2+1] = (fbi.clut[y >> 3].g() * (8 - (y & 7)) + fbi.clut[(y >> 3) + 1].g() * (y & 7)) >> 3;
}
}
/* Banshee and later have a 512-entry CLUT that can be bypassed */
else
{
- int which = (v->banshee.io[io_vidProcCfg] >> 13) & 1;
- int bypass = (v->banshee.io[io_vidProcCfg] >> 11) & 1;
+ int which = (banshee.io[io_vidProcCfg] >> 13) & 1;
+ int bypass = (banshee.io[io_vidProcCfg] >> 11) & 1;
/* compute R/G/B pens first */
for (x = 0; x < 32; x++)
{
/* treat X as a 5-bit value, scale up to 8 bits */
y = (x << 3) | (x >> 2);
- rtable[x] = bypass ? y : v->fbi.clut[which * 256 + y].r();
- btable[x] = bypass ? y : v->fbi.clut[which * 256 + y].b();
+ rtable[x] = bypass ? y : fbi.clut[which * 256 + y].r();
+ btable[x] = bypass ? y : fbi.clut[which * 256 + y].b();
/* treat X as a 6-bit value with LSB=0, scale up to 8 bits */
y = (x * 2) + 0;
y = (y << 2) | (y >> 4);
- gtable[x*2+0] = bypass ? y : v->fbi.clut[which * 256 + y].g();
+ gtable[x*2+0] = bypass ? y : fbi.clut[which * 256 + y].g();
/* treat X as a 6-bit value with LSB=1, scale up to 8 bits, and linear interpolate */
y = (x * 2) + 1;
y = (y << 2) | (y >> 4);
- gtable[x*2+1] = bypass ? y : v->fbi.clut[which * 256 + y].g();
+ gtable[x*2+1] = bypass ? y : fbi.clut[which * 256 + y].g();
}
}
@@ -383,45 +321,45 @@ int voodoo_update(device_t *device, bitmap_rgb32 &bitmap, const rectangle &clipr
int r = rtable[(x >> 11) & 0x1f];
int g = gtable[(x >> 5) & 0x3f];
int b = btable[x & 0x1f];
- v->fbi.pen[x] = rgb_t(r, g, b);
+ fbi.pen[x] = rgb_t(r, g, b);
}
/* no longer dirty */
- v->fbi.clut_dirty = FALSE;
+ fbi.clut_dirty = FALSE;
changed = TRUE;
}
/* debugging! */
- if (device->machine().input().code_pressed(KEYCODE_L))
- drawbuf = v->fbi.backbuf;
+ if (machine().input().code_pressed(KEYCODE_L))
+ drawbuf = fbi.backbuf;
/* copy from the current front buffer */
for (y = cliprect.min_y; y <= cliprect.max_y; y++)
- if (y >= v->fbi.yoffs)
+ if (y >= fbi.yoffs)
{
- UINT16 *src = (UINT16 *)(v->fbi.ram + v->fbi.rgboffs[drawbuf]) + (y - v->fbi.yoffs) * v->fbi.rowpixels - v->fbi.xoffs;
+ UINT16 *src = (UINT16 *)(fbi.ram + fbi.rgboffs[drawbuf]) + (y - fbi.yoffs) * fbi.rowpixels - fbi.xoffs;
UINT32 *dst = &bitmap.pix32(y);
for (x = cliprect.min_x; x <= cliprect.max_x; x++)
- dst[x] = v->fbi.pen[src[x]];
+ dst[x] = fbi.pen[src[x]];
}
/* update stats display */
- statskey = (device->machine().input().code_pressed(KEYCODE_BACKSLASH) != 0);
- if (statskey && statskey != v->stats.lastkey)
- v->stats.display = !v->stats.display;
- v->stats.lastkey = statskey;
+ statskey = (machine().input().code_pressed(KEYCODE_BACKSLASH) != 0);
+ if (statskey && statskey != stats.lastkey)
+ stats.display = !stats.display;
+ stats.lastkey = statskey;
/* display stats */
- if (v->stats.display)
- device->popmessage(v->stats.buffer, 0, 0);
+ if (stats.display)
+ popmessage(stats.buffer, 0, 0);
/* update render override */
- v->stats.render_override = device->machine().input().code_pressed(KEYCODE_ENTER);
- if (DEBUG_DEPTH && v->stats.render_override)
+ stats.render_override = machine().input().code_pressed(KEYCODE_ENTER);
+ if (DEBUG_DEPTH && stats.render_override)
{
for (y = cliprect.min_y; y <= cliprect.max_y; y++)
{
- UINT16 *src = (UINT16 *)(v->fbi.ram + v->fbi.auxoffs) + (y - v->fbi.yoffs) * v->fbi.rowpixels - v->fbi.xoffs;
+ UINT16 *src = (UINT16 *)(fbi.ram + fbi.auxoffs) + (y - fbi.yoffs) * fbi.rowpixels - fbi.xoffs;
UINT32 *dst = &bitmap.pix32(y);
for (x = cliprect.min_x; x <= cliprect.max_x; x++)
dst[x] = ((src[x] << 8) & 0xff0000) | ((src[x] >> 0) & 0xff00) | ((src[x] >> 8) & 0xff);
@@ -438,26 +376,27 @@ int voodoo_update(device_t *device, bitmap_rgb32 &bitmap, const rectangle &clipr
*
*************************************/
-int voodoo_get_type(device_t *device)
+
+int voodoo_device::voodoo_get_type()
{
- voodoo_state *v = get_safe_token(device);
- return v->type;
+ voodoo_device *vd = this;
+ return vd->vd_type;
}
-int voodoo_is_stalled(device_t *device)
+int voodoo_device::voodoo_is_stalled()
{
- voodoo_state *v = get_safe_token(device);
- return (v->pci.stall_state != NOT_STALLED);
+ voodoo_device *vd = this;
+ return (vd->pci.stall_state != NOT_STALLED);
}
-void voodoo_set_init_enable(device_t *device, UINT32 newval)
+void voodoo_device::voodoo_set_init_enable(UINT32 newval)
{
- voodoo_state *v = get_safe_token(device);
- v->pci.init_enable = newval;
+ voodoo_device *vd = this;
+ vd->pci.init_enable = newval;
if (LOG_REGISTERS)
- device->logerror("VOODOO.%d.REG:initEnable write = %08X\n", v->index, newval);
+ logerror("VOODOO.%d.REG:initEnable write = %08X\n", vd->index, newval);
}
@@ -468,7 +407,7 @@ void voodoo_set_init_enable(device_t *device, UINT32 newval)
*
*************************************/
-static void init_fbi(voodoo_state *v, fbi_state *f, void *memory, int fbmem)
+void voodoo_device::init_fbi(voodoo_device* vd,fbi_state *f, void *memory, int fbmem)
{
int pen;
@@ -486,20 +425,20 @@ static void init_fbi(voodoo_state *v, fbi_state *f, void *memory, int fbmem)
/* init the pens */
f->clut_dirty = TRUE;
- if (v->type <= TYPE_VOODOO_2)
+ if (vd->vd_type <= TYPE_VOODOO_2)
{
for (pen = 0; pen < 32; pen++)
- v->fbi.clut[pen] = rgb_t(pen, pal5bit(pen), pal5bit(pen), pal5bit(pen));
- v->fbi.clut[32] = rgb_t(32,0xff,0xff,0xff);
+ vd->fbi.clut[pen] = rgb_t(pen, pal5bit(pen), pal5bit(pen), pal5bit(pen));
+ vd->fbi.clut[32] = rgb_t(32,0xff,0xff,0xff);
}
else
{
for (pen = 0; pen < 512; pen++)
- v->fbi.clut[pen] = rgb_t(pen,pen,pen);
+ vd->fbi.clut[pen] = rgb_t(pen,pen,pen);
}
/* allocate a VBLANK timer */
- f->vblank_timer = v->device->machine().scheduler().timer_alloc(FUNC(vblank_callback), v);
+ f->vblank_timer = vd->device->machine().scheduler().timer_alloc(timer_expired_delegate(FUNC(voodoo_device::vblank_callback),vd), vd);
f->vblank = FALSE;
/* initialize the memory FIFO */
@@ -507,11 +446,11 @@ static void init_fbi(voodoo_state *v, fbi_state *f, void *memory, int fbmem)
f->fifo.size = f->fifo.in = f->fifo.out = 0;
/* set the fog delta mask */
- f->fogdelta_mask = (v->type < TYPE_VOODOO_2) ? 0xff : 0xfc;
+ f->fogdelta_mask = (vd->vd_type < TYPE_VOODOO_2) ? 0xff : 0xfc;
}
-static void init_tmu_shared(tmu_shared_state *s)
+void voodoo_device::init_tmu_shared(tmu_shared_state *s)
{
int val;
@@ -556,14 +495,14 @@ static void init_tmu_shared(tmu_shared_state *s)
}
-static void init_tmu(voodoo_state *v, tmu_state *t, voodoo_reg *reg, void *memory, int tmem)
+void voodoo_device::init_tmu(voodoo_device* vd, tmu_state *t, voodoo_reg *reg, void *memory, int tmem)
{
/* allocate texture RAM */
t->ram = (UINT8 *)memory;
t->mask = tmem - 1;
t->reg = reg;
t->regdirty = TRUE;
- t->bilinear_mask = (v->type >= TYPE_VOODOO_2) ? 0xff : 0xf0;
+ t->bilinear_mask = (vd->vd_type >= TYPE_VOODOO_2) ? 0xff : 0xf0;
/* mark the NCC tables dirty and configure their registers */
t->ncc[0].dirty = t->ncc[1].dirty = TRUE;
@@ -571,31 +510,31 @@ static void init_tmu(voodoo_state *v, tmu_state *t, voodoo_reg *reg, void *memor
t->ncc[1].reg = &t->reg[nccTable+12];
/* create pointers to all the tables */
- t->texel[0] = v->tmushare.rgb332;
+ t->texel[0] = vd->tmushare.rgb332;
t->texel[1] = t->ncc[0].texel;
- t->texel[2] = v->tmushare.alpha8;
- t->texel[3] = v->tmushare.int8;
- t->texel[4] = v->tmushare.ai44;
+ t->texel[2] = vd->tmushare.alpha8;
+ t->texel[3] = vd->tmushare.int8;
+ t->texel[4] = vd->tmushare.ai44;
t->texel[5] = t->palette;
- t->texel[6] = (v->type >= TYPE_VOODOO_2) ? t->palettea : nullptr;
+ t->texel[6] = (vd->vd_type >= TYPE_VOODOO_2) ? t->palettea : nullptr;
t->texel[7] = nullptr;
- t->texel[8] = v->tmushare.rgb332;
+ t->texel[8] = vd->tmushare.rgb332;
t->texel[9] = t->ncc[0].texel;
- t->texel[10] = v->tmushare.rgb565;
- t->texel[11] = v->tmushare.argb1555;
- t->texel[12] = v->tmushare.argb4444;
- t->texel[13] = v->tmushare.int8;
+ t->texel[10] = vd->tmushare.rgb565;
+ t->texel[11] = vd->tmushare.argb1555;
+ t->texel[12] = vd->tmushare.argb4444;
+ t->texel[13] = vd->tmushare.int8;
t->texel[14] = t->palette;
t->texel[15] = nullptr;
t->lookup = t->texel[0];
/* attach the palette to NCC table 0 */
t->ncc[0].palette = t->palette;
- if (v->type >= TYPE_VOODOO_2)
+ if (vd->vd_type >= TYPE_VOODOO_2)
t->ncc[0].palettea = t->palettea;
/* set up texture address calculations */
- if (v->type <= TYPE_VOODOO_2)
+ if (vd->vd_type <= TYPE_VOODOO_2)
{
t->texaddr_mask = 0x0fffff;
t->texaddr_shift = 3;
@@ -608,181 +547,180 @@ static void init_tmu(voodoo_state *v, tmu_state *t, voodoo_reg *reg, void *memor
}
-static void voodoo_postload(voodoo_state *v)
+void voodoo_device::voodoo_postload(voodoo_device *vd)
{
int index, subindex;
- v->fbi.clut_dirty = TRUE;
- for (index = 0; index < ARRAY_LENGTH(v->tmu); index++)
+ vd->fbi.clut_dirty = TRUE;
+ for (index = 0; index < ARRAY_LENGTH(vd->tmu); index++)
{
- v->tmu[index].regdirty = TRUE;
- for (subindex = 0; subindex < ARRAY_LENGTH(v->tmu[index].ncc); subindex++)
- v->tmu[index].ncc[subindex].dirty = TRUE;
+ vd->tmu[index].regdirty = TRUE;
+ for (subindex = 0; subindex < ARRAY_LENGTH(vd->tmu[index].ncc); subindex++)
+ vd->tmu[index].ncc[subindex].dirty = TRUE;
}
/* recompute video memory to get the FBI FIFO base recomputed */
- if (v->type <= TYPE_VOODOO_2)
- recompute_video_memory(v);
+ if (vd->vd_type <= TYPE_VOODOO_2)
+ recompute_video_memory(vd);
}
-static void init_save_state(device_t *device)
+static void init_save_state(voodoo_device *vd)
{
- voodoo_state *v = get_safe_token(device);
int index, subindex;
- device->machine().save().register_postload(save_prepost_delegate(FUNC(voodoo_postload), v));
+ vd->machine().save().register_postload(save_prepost_delegate(FUNC(voodoo_device::voodoo_postload), vd));
/* register states: core */
- device->save_item(NAME(v->extra_cycles));
- device->save_pointer(NAME(&v->reg[0].u), ARRAY_LENGTH(v->reg));
- device->save_item(NAME(v->alt_regmap));
+ vd->save_item(NAME(vd->extra_cycles));
+ vd->save_pointer(NAME(&vd->reg[0].u), ARRAY_LENGTH(vd->reg));
+ vd->save_item(NAME(vd->alt_regmap));
/* register states: pci */
- device->save_item(NAME(v->pci.fifo.in));
- device->save_item(NAME(v->pci.fifo.out));
- device->save_item(NAME(v->pci.init_enable));
- device->save_item(NAME(v->pci.stall_state));
- device->save_item(NAME(v->pci.op_pending));
- device->save_item(NAME(v->pci.op_end_time));
- device->save_item(NAME(v->pci.fifo_mem));
+ vd->save_item(NAME(vd->pci.fifo.in));
+ vd->save_item(NAME(vd->pci.fifo.out));
+ vd->save_item(NAME(vd->pci.init_enable));
+ vd->save_item(NAME(vd->pci.stall_state));
+ vd->save_item(NAME(vd->pci.op_pending));
+ vd->save_item(NAME(vd->pci.op_end_time));
+ vd->save_item(NAME(vd->pci.fifo_mem));
/* register states: dac */
- device->save_item(NAME(v->dac.reg));
- device->save_item(NAME(v->dac.read_result));
+ vd->save_item(NAME(vd->dac.reg));
+ vd->save_item(NAME(vd->dac.read_result));
/* register states: fbi */
- device->save_pointer(NAME(v->fbi.ram), v->fbi.mask + 1);
- device->save_item(NAME(v->fbi.rgboffs));
- device->save_item(NAME(v->fbi.auxoffs));
- device->save_item(NAME(v->fbi.frontbuf));
- device->save_item(NAME(v->fbi.backbuf));
- device->save_item(NAME(v->fbi.swaps_pending));
- device->save_item(NAME(v->fbi.video_changed));
- device->save_item(NAME(v->fbi.yorigin));
- device->save_item(NAME(v->fbi.lfb_base));
- device->save_item(NAME(v->fbi.lfb_stride));
- device->save_item(NAME(v->fbi.width));
- device->save_item(NAME(v->fbi.height));
- device->save_item(NAME(v->fbi.xoffs));
- device->save_item(NAME(v->fbi.yoffs));
- device->save_item(NAME(v->fbi.vsyncscan));
- device->save_item(NAME(v->fbi.rowpixels));
- device->save_item(NAME(v->fbi.vblank));
- device->save_item(NAME(v->fbi.vblank_count));
- device->save_item(NAME(v->fbi.vblank_swap_pending));
- device->save_item(NAME(v->fbi.vblank_swap));
- device->save_item(NAME(v->fbi.vblank_dont_swap));
- device->save_item(NAME(v->fbi.cheating_allowed));
- device->save_item(NAME(v->fbi.sign));
- device->save_item(NAME(v->fbi.ax));
- device->save_item(NAME(v->fbi.ay));
- device->save_item(NAME(v->fbi.bx));
- device->save_item(NAME(v->fbi.by));
- device->save_item(NAME(v->fbi.cx));
- device->save_item(NAME(v->fbi.cy));
- device->save_item(NAME(v->fbi.startr));
- device->save_item(NAME(v->fbi.startg));
- device->save_item(NAME(v->fbi.startb));
- device->save_item(NAME(v->fbi.starta));
- device->save_item(NAME(v->fbi.startz));
- device->save_item(NAME(v->fbi.startw));
- device->save_item(NAME(v->fbi.drdx));
- device->save_item(NAME(v->fbi.dgdx));
- device->save_item(NAME(v->fbi.dbdx));
- device->save_item(NAME(v->fbi.dadx));
- device->save_item(NAME(v->fbi.dzdx));
- device->save_item(NAME(v->fbi.dwdx));
- device->save_item(NAME(v->fbi.drdy));
- device->save_item(NAME(v->fbi.dgdy));
- device->save_item(NAME(v->fbi.dbdy));
- device->save_item(NAME(v->fbi.dady));
- device->save_item(NAME(v->fbi.dzdy));
- device->save_item(NAME(v->fbi.dwdy));
- device->save_item(NAME(v->fbi.lfb_stats.pixels_in));
- device->save_item(NAME(v->fbi.lfb_stats.pixels_out));
- device->save_item(NAME(v->fbi.lfb_stats.chroma_fail));
- device->save_item(NAME(v->fbi.lfb_stats.zfunc_fail));
- device->save_item(NAME(v->fbi.lfb_stats.afunc_fail));
- device->save_item(NAME(v->fbi.lfb_stats.clip_fail));
- device->save_item(NAME(v->fbi.lfb_stats.stipple_count));
- device->save_item(NAME(v->fbi.sverts));
- for (index = 0; index < ARRAY_LENGTH(v->fbi.svert); index++)
+ vd->save_pointer(NAME(vd->fbi.ram), vd->fbi.mask + 1);
+ vd->save_item(NAME(vd->fbi.rgboffs));
+ vd->save_item(NAME(vd->fbi.auxoffs));
+ vd->save_item(NAME(vd->fbi.frontbuf));
+ vd->save_item(NAME(vd->fbi.backbuf));
+ vd->save_item(NAME(vd->fbi.swaps_pending));
+ vd->save_item(NAME(vd->fbi.video_changed));
+ vd->save_item(NAME(vd->fbi.yorigin));
+ vd->save_item(NAME(vd->fbi.lfb_base));
+ vd->save_item(NAME(vd->fbi.lfb_stride));
+ vd->save_item(NAME(vd->fbi.width));
+ vd->save_item(NAME(vd->fbi.height));
+ vd->save_item(NAME(vd->fbi.xoffs));
+ vd->save_item(NAME(vd->fbi.yoffs));
+ vd->save_item(NAME(vd->fbi.vsyncscan));
+ vd->save_item(NAME(vd->fbi.rowpixels));
+ vd->save_item(NAME(vd->fbi.vblank));
+ vd->save_item(NAME(vd->fbi.vblank_count));
+ vd->save_item(NAME(vd->fbi.vblank_swap_pending));
+ vd->save_item(NAME(vd->fbi.vblank_swap));
+ vd->save_item(NAME(vd->fbi.vblank_dont_swap));
+ vd->save_item(NAME(vd->fbi.cheating_allowed));
+ vd->save_item(NAME(vd->fbi.sign));
+ vd->save_item(NAME(vd->fbi.ax));
+ vd->save_item(NAME(vd->fbi.ay));
+ vd->save_item(NAME(vd->fbi.bx));
+ vd->save_item(NAME(vd->fbi.by));
+ vd->save_item(NAME(vd->fbi.cx));
+ vd->save_item(NAME(vd->fbi.cy));
+ vd->save_item(NAME(vd->fbi.startr));
+ vd->save_item(NAME(vd->fbi.startg));
+ vd->save_item(NAME(vd->fbi.startb));
+ vd->save_item(NAME(vd->fbi.starta));
+ vd->save_item(NAME(vd->fbi.startz));
+ vd->save_item(NAME(vd->fbi.startw));
+ vd->save_item(NAME(vd->fbi.drdx));
+ vd->save_item(NAME(vd->fbi.dgdx));
+ vd->save_item(NAME(vd->fbi.dbdx));
+ vd->save_item(NAME(vd->fbi.dadx));
+ vd->save_item(NAME(vd->fbi.dzdx));
+ vd->save_item(NAME(vd->fbi.dwdx));
+ vd->save_item(NAME(vd->fbi.drdy));
+ vd->save_item(NAME(vd->fbi.dgdy));
+ vd->save_item(NAME(vd->fbi.dbdy));
+ vd->save_item(NAME(vd->fbi.dady));
+ vd->save_item(NAME(vd->fbi.dzdy));
+ vd->save_item(NAME(vd->fbi.dwdy));
+ vd->save_item(NAME(vd->fbi.lfb_stats.pixels_in));
+ vd->save_item(NAME(vd->fbi.lfb_stats.pixels_out));
+ vd->save_item(NAME(vd->fbi.lfb_stats.chroma_fail));
+ vd->save_item(NAME(vd->fbi.lfb_stats.zfunc_fail));
+ vd->save_item(NAME(vd->fbi.lfb_stats.afunc_fail));
+ vd->save_item(NAME(vd->fbi.lfb_stats.clip_fail));
+ vd->save_item(NAME(vd->fbi.lfb_stats.stipple_count));
+ vd->save_item(NAME(vd->fbi.sverts));
+ for (index = 0; index < ARRAY_LENGTH(vd->fbi.svert); index++)
{
- device->save_item(NAME(v->fbi.svert[index].x), index);
- device->save_item(NAME(v->fbi.svert[index].y), index);
- device->save_item(NAME(v->fbi.svert[index].a), index);
- device->save_item(NAME(v->fbi.svert[index].r), index);
- device->save_item(NAME(v->fbi.svert[index].g), index);
- device->save_item(NAME(v->fbi.svert[index].b), index);
- device->save_item(NAME(v->fbi.svert[index].z), index);
- device->save_item(NAME(v->fbi.svert[index].wb), index);
- device->save_item(NAME(v->fbi.svert[index].w0), index);
- device->save_item(NAME(v->fbi.svert[index].s0), index);
- device->save_item(NAME(v->fbi.svert[index].t0), index);
- device->save_item(NAME(v->fbi.svert[index].w1), index);
- device->save_item(NAME(v->fbi.svert[index].s1), index);
- device->save_item(NAME(v->fbi.svert[index].t1), index);
+ vd->save_item(NAME(vd->fbi.svert[index].x), index);
+ vd->save_item(NAME(vd->fbi.svert[index].y), index);
+ vd->save_item(NAME(vd->fbi.svert[index].a), index);
+ vd->save_item(NAME(vd->fbi.svert[index].r), index);
+ vd->save_item(NAME(vd->fbi.svert[index].g), index);
+ vd->save_item(NAME(vd->fbi.svert[index].b), index);
+ vd->save_item(NAME(vd->fbi.svert[index].z), index);
+ vd->save_item(NAME(vd->fbi.svert[index].wb), index);
+ vd->save_item(NAME(vd->fbi.svert[index].w0), index);
+ vd->save_item(NAME(vd->fbi.svert[index].s0), index);
+ vd->save_item(NAME(vd->fbi.svert[index].t0), index);
+ vd->save_item(NAME(vd->fbi.svert[index].w1), index);
+ vd->save_item(NAME(vd->fbi.svert[index].s1), index);
+ vd->save_item(NAME(vd->fbi.svert[index].t1), index);
}
- device->save_item(NAME(v->fbi.fifo.size));
- device->save_item(NAME(v->fbi.fifo.in));
- device->save_item(NAME(v->fbi.fifo.out));
- for (index = 0; index < ARRAY_LENGTH(v->fbi.cmdfifo); index++)
+ vd->save_item(NAME(vd->fbi.fifo.size));
+ vd->save_item(NAME(vd->fbi.fifo.in));
+ vd->save_item(NAME(vd->fbi.fifo.out));
+ for (index = 0; index < ARRAY_LENGTH(vd->fbi.cmdfifo); index++)
{
- device->save_item(NAME(v->fbi.cmdfifo[index].enable), index);
- device->save_item(NAME(v->fbi.cmdfifo[index].count_holes), index);
- device->save_item(NAME(v->fbi.cmdfifo[index].base), index);
- device->save_item(NAME(v->fbi.cmdfifo[index].end), index);
- device->save_item(NAME(v->fbi.cmdfifo[index].rdptr), index);
- device->save_item(NAME(v->fbi.cmdfifo[index].amin), index);
- device->save_item(NAME(v->fbi.cmdfifo[index].amax), index);
- device->save_item(NAME(v->fbi.cmdfifo[index].depth), index);
- device->save_item(NAME(v->fbi.cmdfifo[index].holes), index);
+ vd->save_item(NAME(vd->fbi.cmdfifo[index].enable), index);
+ vd->save_item(NAME(vd->fbi.cmdfifo[index].count_holes), index);
+ vd->save_item(NAME(vd->fbi.cmdfifo[index].base), index);
+ vd->save_item(NAME(vd->fbi.cmdfifo[index].end), index);
+ vd->save_item(NAME(vd->fbi.cmdfifo[index].rdptr), index);
+ vd->save_item(NAME(vd->fbi.cmdfifo[index].amin), index);
+ vd->save_item(NAME(vd->fbi.cmdfifo[index].amax), index);
+ vd->save_item(NAME(vd->fbi.cmdfifo[index].depth), index);
+ vd->save_item(NAME(vd->fbi.cmdfifo[index].holes), index);
}
- device->save_item(NAME(v->fbi.fogblend));
- device->save_item(NAME(v->fbi.fogdelta));
- device->save_item(NAME(v->fbi.clut));
+ vd->save_item(NAME(vd->fbi.fogblend));
+ vd->save_item(NAME(vd->fbi.fogdelta));
+ vd->save_item(NAME(vd->fbi.clut));
/* register states: tmu */
- for (index = 0; index < ARRAY_LENGTH(v->tmu); index++)
+ for (index = 0; index < ARRAY_LENGTH(vd->tmu); index++)
{
- tmu_state *tmu = &v->tmu[index];
+ tmu_state *tmu = &vd->tmu[index];
if (tmu->ram == nullptr)
continue;
- if (tmu->ram != v->fbi.ram)
- device->save_pointer(NAME(tmu->ram), tmu->mask + 1, index);
- device->save_item(NAME(tmu->starts), index);
- device->save_item(NAME(tmu->startt), index);
- device->save_item(NAME(tmu->startw), index);
- device->save_item(NAME(tmu->dsdx), index);
- device->save_item(NAME(tmu->dtdx), index);
- device->save_item(NAME(tmu->dwdx), index);
- device->save_item(NAME(tmu->dsdy), index);
- device->save_item(NAME(tmu->dtdy), index);
- device->save_item(NAME(tmu->dwdy), index);
+ if (tmu->ram != vd->fbi.ram)
+ vd->save_pointer(NAME(tmu->ram), tmu->mask + 1, index);
+ vd->save_item(NAME(tmu->starts), index);
+ vd->save_item(NAME(tmu->startt), index);
+ vd->save_item(NAME(tmu->startw), index);
+ vd->save_item(NAME(tmu->dsdx), index);
+ vd->save_item(NAME(tmu->dtdx), index);
+ vd->save_item(NAME(tmu->dwdx), index);
+ vd->save_item(NAME(tmu->dsdy), index);
+ vd->save_item(NAME(tmu->dtdy), index);
+ vd->save_item(NAME(tmu->dwdy), index);
for (subindex = 0; subindex < ARRAY_LENGTH(tmu->ncc); subindex++)
{
- device->save_item(NAME(tmu->ncc[subindex].ir), index * ARRAY_LENGTH(tmu->ncc) + subindex);
- device->save_item(NAME(tmu->ncc[subindex].ig), index * ARRAY_LENGTH(tmu->ncc) + subindex);
- device->save_item(NAME(tmu->ncc[subindex].ib), index * ARRAY_LENGTH(tmu->ncc) + subindex);
- device->save_item(NAME(tmu->ncc[subindex].qr), index * ARRAY_LENGTH(tmu->ncc) + subindex);
- device->save_item(NAME(tmu->ncc[subindex].qg), index * ARRAY_LENGTH(tmu->ncc) + subindex);
- device->save_item(NAME(tmu->ncc[subindex].qb), index * ARRAY_LENGTH(tmu->ncc) + subindex);
- device->save_item(NAME(tmu->ncc[subindex].y), index * ARRAY_LENGTH(tmu->ncc) + subindex);
+ vd->save_item(NAME(tmu->ncc[subindex].ir), index * ARRAY_LENGTH(tmu->ncc) + subindex);
+ vd->save_item(NAME(tmu->ncc[subindex].ig), index * ARRAY_LENGTH(tmu->ncc) + subindex);
+ vd->save_item(NAME(tmu->ncc[subindex].ib), index * ARRAY_LENGTH(tmu->ncc) + subindex);
+ vd->save_item(NAME(tmu->ncc[subindex].qr), index * ARRAY_LENGTH(tmu->ncc) + subindex);
+ vd->save_item(NAME(tmu->ncc[subindex].qg), index * ARRAY_LENGTH(tmu->ncc) + subindex);
+ vd->save_item(NAME(tmu->ncc[subindex].qb), index * ARRAY_LENGTH(tmu->ncc) + subindex);
+ vd->save_item(NAME(tmu->ncc[subindex].y), index * ARRAY_LENGTH(tmu->ncc) + subindex);
}
}
/* register states: banshee */
- if (v->type >= TYPE_VOODOO_BANSHEE)
+ if (vd->vd_type >= TYPE_VOODOO_BANSHEE)
{
- device->save_item(NAME(v->banshee.io));
- device->save_item(NAME(v->banshee.agp));
- device->save_item(NAME(v->banshee.vga));
- device->save_item(NAME(v->banshee.crtc));
- device->save_item(NAME(v->banshee.seq));
- device->save_item(NAME(v->banshee.gc));
- device->save_item(NAME(v->banshee.att));
- device->save_item(NAME(v->banshee.attff));
+ vd->save_item(NAME(vd->banshee.io));
+ vd->save_item(NAME(vd->banshee.agp));
+ vd->save_item(NAME(vd->banshee.vga));
+ vd->save_item(NAME(vd->banshee.crtc));
+ vd->save_item(NAME(vd->banshee.seq));
+ vd->save_item(NAME(vd->banshee.gc));
+ vd->save_item(NAME(vd->banshee.att));
+ vd->save_item(NAME(vd->banshee.attff));
}
}
@@ -794,27 +732,27 @@ static void init_save_state(device_t *device)
*
*************************************/
-static void accumulate_statistics(voodoo_state *v, const stats_block *stats)
+static void accumulate_statistics(voodoo_device *vd, const stats_block *stats)
{
/* apply internal voodoo statistics */
- v->reg[fbiPixelsIn].u += stats->pixels_in;
- v->reg[fbiPixelsOut].u += stats->pixels_out;
- v->reg[fbiChromaFail].u += stats->chroma_fail;
- v->reg[fbiZfuncFail].u += stats->zfunc_fail;
- v->reg[fbiAfuncFail].u += stats->afunc_fail;
+ vd->reg[fbiPixelsIn].u += stats->pixels_in;
+ vd->reg[fbiPixelsOut].u += stats->pixels_out;
+ vd->reg[fbiChromaFail].u += stats->chroma_fail;
+ vd->reg[fbiZfuncFail].u += stats->zfunc_fail;
+ vd->reg[fbiAfuncFail].u += stats->afunc_fail;
/* apply emulation statistics */
- v->stats.total_pixels_in += stats->pixels_in;
- v->stats.total_pixels_out += stats->pixels_out;
- v->stats.total_chroma_fail += stats->chroma_fail;
- v->stats.total_zfunc_fail += stats->zfunc_fail;
- v->stats.total_afunc_fail += stats->afunc_fail;
- v->stats.total_clipped += stats->clip_fail;
- v->stats.total_stippled += stats->stipple_count;
+ vd->stats.total_pixels_in += stats->pixels_in;
+ vd->stats.total_pixels_out += stats->pixels_out;
+ vd->stats.total_chroma_fail += stats->chroma_fail;
+ vd->stats.total_zfunc_fail += stats->zfunc_fail;
+ vd->stats.total_afunc_fail += stats->afunc_fail;
+ vd->stats.total_clipped += stats->clip_fail;
+ vd->stats.total_stippled += stats->stipple_count;
}
-static void update_statistics(voodoo_state *v, int accumulate)
+static void update_statistics(voodoo_device *vd, int accumulate)
{
int threadnum;
@@ -822,14 +760,14 @@ static void update_statistics(voodoo_state *v, int accumulate)
for (threadnum = 0; threadnum < WORK_MAX_THREADS; threadnum++)
{
if (accumulate)
- accumulate_statistics(v, &v->thread_stats[threadnum]);
- memset(&v->thread_stats[threadnum], 0, sizeof(v->thread_stats[threadnum]));
+ accumulate_statistics(vd, &vd->thread_stats[threadnum]);
+ memset(&vd->thread_stats[threadnum], 0, sizeof(vd->thread_stats[threadnum]));
}
/* accumulate/reset statistics from the LFB */
if (accumulate)
- accumulate_statistics(v, &v->fbi.lfb_stats);
- memset(&v->fbi.lfb_stats, 0, sizeof(v->fbi.lfb_stats));
+ accumulate_statistics(vd, &vd->fbi.lfb_stats);
+ memset(&vd->fbi.lfb_stats, 0, sizeof(vd->fbi.lfb_stats));
}
@@ -840,210 +778,208 @@ static void update_statistics(voodoo_state *v, int accumulate)
*
*************************************/
-static void swap_buffers(voodoo_state *v)
+void voodoo_device::swap_buffers(voodoo_device *vd)
{
int count;
- if (LOG_VBLANK_SWAP) v->device->logerror("--- swap_buffers @ %d\n", v->screen->vpos());
+ if (LOG_VBLANK_SWAP) vd->device->logerror("--- swap_buffers @ %d\n", vd->screen->vpos());
/* force a partial update */
- v->screen->update_partial(v->screen->vpos());
- v->fbi.video_changed = TRUE;
+ vd->screen->update_partial(vd->screen->vpos());
+ vd->fbi.video_changed = TRUE;
/* keep a history of swap intervals */
- count = v->fbi.vblank_count;
+ count = vd->fbi.vblank_count;
if (count > 15)
count = 15;
- v->reg[fbiSwapHistory].u = (v->reg[fbiSwapHistory].u << 4) | count;
+ vd->reg[fbiSwapHistory].u = (vd->reg[fbiSwapHistory].u << 4) | count;
/* rotate the buffers */
- if (v->type <= TYPE_VOODOO_2)
+ if (vd->vd_type <= TYPE_VOODOO_2)
{
- if (v->type < TYPE_VOODOO_2 || !v->fbi.vblank_dont_swap)
+ if (vd->vd_type < TYPE_VOODOO_2 || !vd->fbi.vblank_dont_swap)
{
- if (v->fbi.rgboffs[2] == ~0)
+ if (vd->fbi.rgboffs[2] == ~0)
{
- v->fbi.frontbuf = 1 - v->fbi.frontbuf;
- v->fbi.backbuf = 1 - v->fbi.frontbuf;
+ vd->fbi.frontbuf = 1 - vd->fbi.frontbuf;
+ vd->fbi.backbuf = 1 - vd->fbi.frontbuf;
}
else
{
- v->fbi.frontbuf = (v->fbi.frontbuf + 1) % 3;
- v->fbi.backbuf = (v->fbi.frontbuf + 1) % 3;
+ vd->fbi.frontbuf = (vd->fbi.frontbuf + 1) % 3;
+ vd->fbi.backbuf = (vd->fbi.frontbuf + 1) % 3;
}
}
}
else
- v->fbi.rgboffs[0] = v->reg[leftOverlayBuf].u & v->fbi.mask & ~0x0f;
+ vd->fbi.rgboffs[0] = vd->reg[leftOverlayBuf].u & vd->fbi.mask & ~0x0f;
/* decrement the pending count and reset our state */
- if (v->fbi.swaps_pending)
- v->fbi.swaps_pending--;
- v->fbi.vblank_count = 0;
- v->fbi.vblank_swap_pending = FALSE;
+ if (vd->fbi.swaps_pending)
+ vd->fbi.swaps_pending--;
+ vd->fbi.vblank_count = 0;
+ vd->fbi.vblank_swap_pending = FALSE;
/* reset the last_op_time to now and start processing the next command */
- if (v->pci.op_pending)
+ if (vd->pci.op_pending)
{
- v->pci.op_end_time = v->device->machine().time();
- flush_fifos(v, v->pci.op_end_time);
+ vd->pci.op_end_time = vd->device->machine().time();
+ flush_fifos(vd, vd->pci.op_end_time);
}
/* we may be able to unstall now */
- if (v->pci.stall_state != NOT_STALLED)
- check_stalled_cpu(v, v->device->machine().time());
+ if (vd->pci.stall_state != NOT_STALLED)
+ check_stalled_cpu(vd, vd->device->machine().time());
/* periodically log rasterizer info */
- v->stats.swaps++;
- if (LOG_RASTERIZERS && v->stats.swaps % 1000 == 0)
- dump_rasterizer_stats(v);
+ vd->stats.swaps++;
+ if (LOG_RASTERIZERS && vd->stats.swaps % 1000 == 0)
+ dump_rasterizer_stats(vd);
/* update the statistics (debug) */
- if (v->stats.display)
+ if (vd->stats.display)
{
- const rectangle &visible_area = v->screen->visible_area();
+ const rectangle &visible_area = vd->screen->visible_area();
int screen_area = visible_area.width() * visible_area.height();
- char *statsptr = v->stats.buffer;
+ char *statsptr = vd->stats.buffer;
int pixelcount;
int i;
- update_statistics(v, TRUE);
- pixelcount = v->stats.total_pixels_out;
+ update_statistics(vd, TRUE);
+ pixelcount = vd->stats.total_pixels_out;
- statsptr += sprintf(statsptr, "Swap:%6d\n", v->stats.swaps);
- statsptr += sprintf(statsptr, "Hist:%08X\n", v->reg[fbiSwapHistory].u);
- statsptr += sprintf(statsptr, "Stal:%6d\n", v->stats.stalls);
+ statsptr += sprintf(statsptr, "Swap:%6d\n", vd->stats.swaps);
+ statsptr += sprintf(statsptr, "Hist:%08X\n", vd->reg[fbiSwapHistory].u);
+ statsptr += sprintf(statsptr, "Stal:%6d\n", vd->stats.stalls);
statsptr += sprintf(statsptr, "Rend:%6d%%\n", pixelcount * 100 / screen_area);
- statsptr += sprintf(statsptr, "Poly:%6d\n", v->stats.total_triangles);
- statsptr += sprintf(statsptr, "PxIn:%6d\n", v->stats.total_pixels_in);
- statsptr += sprintf(statsptr, "POut:%6d\n", v->stats.total_pixels_out);
- statsptr += sprintf(statsptr, "Clip:%6d\n", v->stats.total_clipped);
- statsptr += sprintf(statsptr, "Stip:%6d\n", v->stats.total_stippled);
- statsptr += sprintf(statsptr, "Chro:%6d\n", v->stats.total_chroma_fail);
- statsptr += sprintf(statsptr, "ZFun:%6d\n", v->stats.total_zfunc_fail);
- statsptr += sprintf(statsptr, "AFun:%6d\n", v->stats.total_afunc_fail);
- statsptr += sprintf(statsptr, "RegW:%6d\n", v->stats.reg_writes);
- statsptr += sprintf(statsptr, "RegR:%6d\n", v->stats.reg_reads);
- statsptr += sprintf(statsptr, "LFBW:%6d\n", v->stats.lfb_writes);
- statsptr += sprintf(statsptr, "LFBR:%6d\n", v->stats.lfb_reads);
- statsptr += sprintf(statsptr, "TexW:%6d\n", v->stats.tex_writes);
+ statsptr += sprintf(statsptr, "Poly:%6d\n", vd->stats.total_triangles);
+ statsptr += sprintf(statsptr, "PxIn:%6d\n", vd->stats.total_pixels_in);
+ statsptr += sprintf(statsptr, "POut:%6d\n", vd->stats.total_pixels_out);
+ statsptr += sprintf(statsptr, "Clip:%6d\n", vd->stats.total_clipped);
+ statsptr += sprintf(statsptr, "Stip:%6d\n", vd->stats.total_stippled);
+ statsptr += sprintf(statsptr, "Chro:%6d\n", vd->stats.total_chroma_fail);
+ statsptr += sprintf(statsptr, "ZFun:%6d\n", vd->stats.total_zfunc_fail);
+ statsptr += sprintf(statsptr, "AFun:%6d\n", vd->stats.total_afunc_fail);
+ statsptr += sprintf(statsptr, "RegW:%6d\n", vd->stats.reg_writes);
+ statsptr += sprintf(statsptr, "RegR:%6d\n", vd->stats.reg_reads);
+ statsptr += sprintf(statsptr, "LFBW:%6d\n", vd->stats.lfb_writes);
+ statsptr += sprintf(statsptr, "LFBR:%6d\n", vd->stats.lfb_reads);
+ statsptr += sprintf(statsptr, "TexW:%6d\n", vd->stats.tex_writes);
statsptr += sprintf(statsptr, "TexM:");
for (i = 0; i < 16; i++)
- if (v->stats.texture_mode[i])
+ if (vd->stats.texture_mode[i])
*statsptr++ = "0123456789ABCDEF"[i];
*statsptr = 0;
}
/* update statistics */
- v->stats.stalls = 0;
- v->stats.total_triangles = 0;
- v->stats.total_pixels_in = 0;
- v->stats.total_pixels_out = 0;
- v->stats.total_chroma_fail = 0;
- v->stats.total_zfunc_fail = 0;
- v->stats.total_afunc_fail = 0;
- v->stats.total_clipped = 0;
- v->stats.total_stippled = 0;
- v->stats.reg_writes = 0;
- v->stats.reg_reads = 0;
- v->stats.lfb_writes = 0;
- v->stats.lfb_reads = 0;
- v->stats.tex_writes = 0;
- memset(v->stats.texture_mode, 0, sizeof(v->stats.texture_mode));
+ vd->stats.stalls = 0;
+ vd->stats.total_triangles = 0;
+ vd->stats.total_pixels_in = 0;
+ vd->stats.total_pixels_out = 0;
+ vd->stats.total_chroma_fail = 0;
+ vd->stats.total_zfunc_fail = 0;
+ vd->stats.total_afunc_fail = 0;
+ vd->stats.total_clipped = 0;
+ vd->stats.total_stippled = 0;
+ vd->stats.reg_writes = 0;
+ vd->stats.reg_reads = 0;
+ vd->stats.lfb_writes = 0;
+ vd->stats.lfb_reads = 0;
+ vd->stats.tex_writes = 0;
+ memset(vd->stats.texture_mode, 0, sizeof(vd->stats.texture_mode));
}
-static void adjust_vblank_timer(voodoo_state *v)
+static void adjust_vblank_timer(voodoo_device *vd)
{
- attotime vblank_period = v->screen->time_until_pos(v->fbi.vsyncscan);
+ attotime vblank_period = vd->screen->time_until_pos(vd->fbi.vsyncscan);
/* if zero, adjust to next frame, otherwise we may get stuck in an infinite loop */
if (vblank_period == attotime::zero)
- vblank_period = v->screen->frame_period();
- v->fbi.vblank_timer->adjust(vblank_period);
+ vblank_period = vd->screen->frame_period();
+ vd->fbi.vblank_timer->adjust(vblank_period);
}
-static TIMER_CALLBACK( vblank_off_callback )
+TIMER_CALLBACK_MEMBER( voodoo_device::vblank_off_callback )
{
- voodoo_state *v = (voodoo_state *)ptr;
-
- if (LOG_VBLANK_SWAP) v->device->logerror("--- vblank end\n");
+ if (LOG_VBLANK_SWAP) device->logerror("--- vblank end\n");
/* set internal state and call the client */
- v->fbi.vblank = FALSE;
+ fbi.vblank = FALSE;
// TODO: Vblank IRQ enable is VOODOO3 only?
- if (v->type >= TYPE_VOODOO_3)
+ if (vd_type >= TYPE_VOODOO_3)
{
- if (v->reg[intrCtrl].u & 0x8) // call IRQ handler if VSYNC interrupt (falling) is enabled
+ if (reg[intrCtrl].u & 0x8) // call IRQ handler if VSYNC interrupt (falling) is enabled
{
- v->reg[intrCtrl].u |= 0x200; // VSYNC int (falling) active
+ reg[intrCtrl].u |= 0x200; // VSYNC int (falling) active
- if (!v->device->m_vblank.isnull())
- v->device->m_vblank(FALSE);
+ if (!device->m_vblank.isnull())
+ device->m_vblank(FALSE);
}
}
else
{
- if (!v->device->m_vblank.isnull())
- v->device->m_vblank(FALSE);
+ if (!device->m_vblank.isnull())
+ device->m_vblank(FALSE);
}
/* go to the end of the next frame */
- adjust_vblank_timer(v);
+ adjust_vblank_timer(this);
}
-static TIMER_CALLBACK( vblank_callback )
+TIMER_CALLBACK_MEMBER( voodoo_device::vblank_callback )
{
- voodoo_state *v = (voodoo_state *)ptr;
-
- if (LOG_VBLANK_SWAP) v->device->logerror("--- vblank start\n");
+ if (LOG_VBLANK_SWAP) device->logerror("--- vblank start\n");
/* flush the pipes */
- if (v->pci.op_pending)
+ if (pci.op_pending)
{
- if (LOG_VBLANK_SWAP) v->device->logerror("---- vblank flush begin\n");
- flush_fifos(v, machine.time());
- if (LOG_VBLANK_SWAP) v->device->logerror("---- vblank flush end\n");
+ if (LOG_VBLANK_SWAP) device->logerror("---- vblank flush begin\n");
+ flush_fifos(this, machine().time());
+ if (LOG_VBLANK_SWAP) device->logerror("---- vblank flush end\n");
}
/* increment the count */
- v->fbi.vblank_count++;
- if (v->fbi.vblank_count > 250)
- v->fbi.vblank_count = 250;
- if (LOG_VBLANK_SWAP) v->device->logerror("---- vblank count = %d", v->fbi.vblank_count);
- if (v->fbi.vblank_swap_pending)
- if (LOG_VBLANK_SWAP) v->device->logerror(" (target=%d)", v->fbi.vblank_swap);
- if (LOG_VBLANK_SWAP) v->device->logerror("\n");
+ fbi.vblank_count++;
+ if (fbi.vblank_count > 250)
+ fbi.vblank_count = 250;
+ if (LOG_VBLANK_SWAP) device->logerror("---- vblank count = %d", fbi.vblank_count);
+ if (fbi.vblank_swap_pending)
+ if (LOG_VBLANK_SWAP) device->logerror(" (target=%d)", fbi.vblank_swap);
+ if (LOG_VBLANK_SWAP) device->logerror("\n");
/* if we're past the swap count, do the swap */
- if (v->fbi.vblank_swap_pending && v->fbi.vblank_count >= v->fbi.vblank_swap)
- swap_buffers(v);
+ if (fbi.vblank_swap_pending && fbi.vblank_count >= fbi.vblank_swap)
+ swap_buffers(this);
/* set a timer for the next off state */
- machine.scheduler().timer_set(v->screen->time_until_pos(0), FUNC(vblank_off_callback), 0, v);
+ machine().scheduler().timer_set(screen->time_until_pos(0), timer_expired_delegate(FUNC(voodoo_device::vblank_off_callback),this), 0, this);
+
+
/* set internal state and call the client */
- v->fbi.vblank = TRUE;
+ fbi.vblank = TRUE;
// TODO: Vblank IRQ enable is VOODOO3 only?
- if (v->type >= TYPE_VOODOO_3)
+ if (vd_type >= TYPE_VOODOO_3)
{
- if (v->reg[intrCtrl].u & 0x4) // call IRQ handler if VSYNC interrupt (rising) is enabled
+ if (reg[intrCtrl].u & 0x4) // call IRQ handler if VSYNC interrupt (rising) is enabled
{
- v->reg[intrCtrl].u |= 0x100; // VSYNC int (rising) active
+ reg[intrCtrl].u |= 0x100; // VSYNC int (rising) active
- if (!v->device->m_vblank.isnull())
- v->device->m_vblank(TRUE);
+ if (!device->m_vblank.isnull())
+ device->m_vblank(TRUE);
}
}
else
{
- if (!v->device->m_vblank.isnull())
- v->device->m_vblank(TRUE);
+ if (!device->m_vblank.isnull())
+ device->m_vblank(TRUE);
}
}
@@ -1055,23 +991,23 @@ static TIMER_CALLBACK( vblank_callback )
*
*************************************/
-static void reset_counters(voodoo_state *v)
+static void reset_counters(voodoo_device *vd)
{
- update_statistics(v, FALSE);
- v->reg[fbiPixelsIn].u = 0;
- v->reg[fbiChromaFail].u = 0;
- v->reg[fbiZfuncFail].u = 0;
- v->reg[fbiAfuncFail].u = 0;
- v->reg[fbiPixelsOut].u = 0;
+ update_statistics(vd, FALSE);
+ vd->reg[fbiPixelsIn].u = 0;
+ vd->reg[fbiChromaFail].u = 0;
+ vd->reg[fbiZfuncFail].u = 0;
+ vd->reg[fbiAfuncFail].u = 0;
+ vd->reg[fbiPixelsOut].u = 0;
}
-static void soft_reset(voodoo_state *v)
+void voodoo_device::soft_reset(voodoo_device *vd)
{
- reset_counters(v);
- v->reg[fbiTrianglesOut].u = 0;
- fifo_reset(&v->fbi.fifo);
- fifo_reset(&v->pci.fifo);
+ reset_counters(vd);
+ vd->reg[fbiTrianglesOut].u = 0;
+ fifo_reset(&vd->fbi.fifo);
+ fifo_reset(&vd->pci.fifo);
}
@@ -1082,103 +1018,103 @@ static void soft_reset(voodoo_state *v)
*
*************************************/
-static void recompute_video_memory(voodoo_state *v)
+void voodoo_device::recompute_video_memory(voodoo_device *vd)
{
- UINT32 buffer_pages = FBIINIT2_VIDEO_BUFFER_OFFSET(v->reg[fbiInit2].u);
- UINT32 fifo_start_page = FBIINIT4_MEMORY_FIFO_START_ROW(v->reg[fbiInit4].u);
- UINT32 fifo_last_page = FBIINIT4_MEMORY_FIFO_STOP_ROW(v->reg[fbiInit4].u);
+ UINT32 buffer_pages = FBIINIT2_VIDEO_BUFFER_OFFSET(vd->reg[fbiInit2].u);
+ UINT32 fifo_start_page = FBIINIT4_MEMORY_FIFO_START_ROW(vd->reg[fbiInit4].u);
+ UINT32 fifo_last_page = FBIINIT4_MEMORY_FIFO_STOP_ROW(vd->reg[fbiInit4].u);
UINT32 memory_config;
int buf;
/* memory config is determined differently between V1 and V2 */
- memory_config = FBIINIT2_ENABLE_TRIPLE_BUF(v->reg[fbiInit2].u);
- if (v->type == TYPE_VOODOO_2 && memory_config == 0)
- memory_config = FBIINIT5_BUFFER_ALLOCATION(v->reg[fbiInit5].u);
+ memory_config = FBIINIT2_ENABLE_TRIPLE_BUF(vd->reg[fbiInit2].u);
+ if (vd->vd_type == TYPE_VOODOO_2 && memory_config == 0)
+ memory_config = FBIINIT5_BUFFER_ALLOCATION(vd->reg[fbiInit5].u);
/* tiles are 64x16/32; x_tiles specifies how many half-tiles */
- v->fbi.tile_width = (v->type == TYPE_VOODOO_1) ? 64 : 32;
- v->fbi.tile_height = (v->type == TYPE_VOODOO_1) ? 16 : 32;
- v->fbi.x_tiles = FBIINIT1_X_VIDEO_TILES(v->reg[fbiInit1].u);
- if (v->type == TYPE_VOODOO_2)
+ vd->fbi.tile_width = (vd->vd_type == TYPE_VOODOO_1) ? 64 : 32;
+ vd->fbi.tile_height = (vd->vd_type == TYPE_VOODOO_1) ? 16 : 32;
+ vd->fbi.x_tiles = FBIINIT1_X_VIDEO_TILES(vd->reg[fbiInit1].u);
+ if (vd->vd_type == TYPE_VOODOO_2)
{
- v->fbi.x_tiles = (v->fbi.x_tiles << 1) |
- (FBIINIT1_X_VIDEO_TILES_BIT5(v->reg[fbiInit1].u) << 5) |
- (FBIINIT6_X_VIDEO_TILES_BIT0(v->reg[fbiInit6].u));
+ vd->fbi.x_tiles = (vd->fbi.x_tiles << 1) |
+ (FBIINIT1_X_VIDEO_TILES_BIT5(vd->reg[fbiInit1].u) << 5) |
+ (FBIINIT6_X_VIDEO_TILES_BIT0(vd->reg[fbiInit6].u));
}
- v->fbi.rowpixels = v->fbi.tile_width * v->fbi.x_tiles;
+ vd->fbi.rowpixels = vd->fbi.tile_width * vd->fbi.x_tiles;
-// logerror("VOODOO.%d.VIDMEM: buffer_pages=%X fifo=%X-%X tiles=%X rowpix=%d\n", v->index, buffer_pages, fifo_start_page, fifo_last_page, v->fbi.x_tiles, v->fbi.rowpixels);
+// logerror("VOODOO.%d.VIDMEM: buffer_pages=%X fifo=%X-%X tiles=%X rowpix=%d\n", vd->index, buffer_pages, fifo_start_page, fifo_last_page, vd->fbi.x_tiles, vd->fbi.rowpixels);
/* first RGB buffer always starts at 0 */
- v->fbi.rgboffs[0] = 0;
+ vd->fbi.rgboffs[0] = 0;
/* second RGB buffer starts immediately afterwards */
- v->fbi.rgboffs[1] = buffer_pages * 0x1000;
+ vd->fbi.rgboffs[1] = buffer_pages * 0x1000;
/* remaining buffers are based on the config */
switch (memory_config)
{
case 3: /* reserved */
- v->device->logerror("VOODOO.%d.ERROR:Unexpected memory configuration in recompute_video_memory!\n", v->index);
+ vd->device->logerror("VOODOO.%d.ERROR:Unexpected memory configuration in recompute_video_memory!\n", vd->index);
case 0: /* 2 color buffers, 1 aux buffer */
- v->fbi.rgboffs[2] = ~0;
- v->fbi.auxoffs = 2 * buffer_pages * 0x1000;
+ vd->fbi.rgboffs[2] = ~0;
+ vd->fbi.auxoffs = 2 * buffer_pages * 0x1000;
break;
case 1: /* 3 color buffers, 0 aux buffers */
- v->fbi.rgboffs[2] = 2 * buffer_pages * 0x1000;
- v->fbi.auxoffs = ~0;
+ vd->fbi.rgboffs[2] = 2 * buffer_pages * 0x1000;
+ vd->fbi.auxoffs = ~0;
break;
case 2: /* 3 color buffers, 1 aux buffers */
- v->fbi.rgboffs[2] = 2 * buffer_pages * 0x1000;
- v->fbi.auxoffs = 3 * buffer_pages * 0x1000;
+ vd->fbi.rgboffs[2] = 2 * buffer_pages * 0x1000;
+ vd->fbi.auxoffs = 3 * buffer_pages * 0x1000;
break;
}
/* clamp the RGB buffers to video memory */
for (buf = 0; buf < 3; buf++)
- if (v->fbi.rgboffs[buf] != ~0 && v->fbi.rgboffs[buf] > v->fbi.mask)
- v->fbi.rgboffs[buf] = v->fbi.mask;
+ if (vd->fbi.rgboffs[buf] != ~0 && vd->fbi.rgboffs[buf] > vd->fbi.mask)
+ vd->fbi.rgboffs[buf] = vd->fbi.mask;
/* clamp the aux buffer to video memory */
- if (v->fbi.auxoffs != ~0 && v->fbi.auxoffs > v->fbi.mask)
- v->fbi.auxoffs = v->fbi.mask;
+ if (vd->fbi.auxoffs != ~0 && vd->fbi.auxoffs > vd->fbi.mask)
+ vd->fbi.auxoffs = vd->fbi.mask;
/* osd_printf_debug("rgb[0] = %08X rgb[1] = %08X rgb[2] = %08X aux = %08X\n",
- v->fbi.rgboffs[0], v->fbi.rgboffs[1], v->fbi.rgboffs[2], v->fbi.auxoffs);*/
+ vd->fbi.rgboffs[0], vd->fbi.rgboffs[1], vd->fbi.rgboffs[2], vd->fbi.auxoffs);*/
/* compute the memory FIFO location and size */
- if (fifo_last_page > v->fbi.mask / 0x1000)
- fifo_last_page = v->fbi.mask / 0x1000;
+ if (fifo_last_page > vd->fbi.mask / 0x1000)
+ fifo_last_page = vd->fbi.mask / 0x1000;
/* is it valid and enabled? */
- if (fifo_start_page <= fifo_last_page && FBIINIT0_ENABLE_MEMORY_FIFO(v->reg[fbiInit0].u))
+ if (fifo_start_page <= fifo_last_page && FBIINIT0_ENABLE_MEMORY_FIFO(vd->reg[fbiInit0].u))
{
- v->fbi.fifo.base = (UINT32 *)(v->fbi.ram + fifo_start_page * 0x1000);
- v->fbi.fifo.size = (fifo_last_page + 1 - fifo_start_page) * 0x1000 / 4;
- if (v->fbi.fifo.size > 65536*2)
- v->fbi.fifo.size = 65536*2;
+ vd->fbi.fifo.base = (UINT32 *)(vd->fbi.ram + fifo_start_page * 0x1000);
+ vd->fbi.fifo.size = (fifo_last_page + 1 - fifo_start_page) * 0x1000 / 4;
+ if (vd->fbi.fifo.size > 65536*2)
+ vd->fbi.fifo.size = 65536*2;
}
/* if not, disable the FIFO */
else
{
- v->fbi.fifo.base = nullptr;
- v->fbi.fifo.size = 0;
+ vd->fbi.fifo.base = nullptr;
+ vd->fbi.fifo.size = 0;
}
/* reset the FIFO */
- fifo_reset(&v->fbi.fifo);
+ fifo_reset(&vd->fbi.fifo);
/* reset our front/back buffers if they are out of range */
- if (v->fbi.rgboffs[2] == ~0)
+ if (vd->fbi.rgboffs[2] == ~0)
{
- if (v->fbi.frontbuf == 2)
- v->fbi.frontbuf = 0;
- if (v->fbi.backbuf == 2)
- v->fbi.backbuf = 0;
+ if (vd->fbi.frontbuf == 2)
+ vd->fbi.frontbuf = 0;
+ if (vd->fbi.backbuf == 2)
+ vd->fbi.backbuf = 0;
}
}
@@ -1478,9 +1414,9 @@ static inline INT32 prepare_tmu(tmu_state *t)
*
*************************************/
-static int cmdfifo_compute_expected_depth(voodoo_state *v, cmdfifo_info *f)
+static int cmdfifo_compute_expected_depth(voodoo_device *vd, cmdfifo_info *f)
{
- UINT32 *fifobase = (UINT32 *)v->fbi.ram;
+ UINT32 *fifobase = (UINT32 *)vd->fbi.ram;
UINT32 readptr = f->rdptr;
UINT32 command = fifobase[readptr / 4];
int i, count = 0;
@@ -1618,9 +1554,9 @@ static int cmdfifo_compute_expected_depth(voodoo_state *v, cmdfifo_info *f)
*
*************************************/
-static UINT32 cmdfifo_execute(voodoo_state *v, cmdfifo_info *f)
+UINT32 voodoo_device::cmdfifo_execute(voodoo_device *vd, cmdfifo_info *f)
{
- UINT32 *fifobase = (UINT32 *)v->fbi.ram;
+ UINT32 *fifobase = (UINT32 *)vd->fbi.ram;
UINT32 readptr = f->rdptr;
UINT32 *src = &fifobase[readptr / 4];
UINT32 command = *src++;
@@ -1651,26 +1587,26 @@ static UINT32 cmdfifo_execute(voodoo_state *v, cmdfifo_info *f)
switch ((command >> 3) & 7)
{
case 0: /* NOP */
- if (LOG_CMDFIFO) v->device->logerror(" NOP\n");
+ if (LOG_CMDFIFO) vd->device->logerror(" NOP\n");
break;
case 1: /* JSR */
- if (LOG_CMDFIFO) v->device->logerror(" JSR $%06X\n", target);
+ if (LOG_CMDFIFO) vd->device->logerror(" JSR $%06X\n", target);
osd_printf_debug("JSR in CMDFIFO!\n");
src = &fifobase[target / 4];
break;
case 2: /* RET */
- if (LOG_CMDFIFO) v->device->logerror(" RET $%06X\n", target);
+ if (LOG_CMDFIFO) vd->device->logerror(" RET $%06X\n", target);
fatalerror("RET in CMDFIFO!\n");
case 3: /* JMP LOCAL FRAME BUFFER */
- if (LOG_CMDFIFO) v->device->logerror(" JMP LOCAL FRAMEBUF $%06X\n", target);
+ if (LOG_CMDFIFO) vd->device->logerror(" JMP LOCAL FRAMEBUF $%06X\n", target);
src = &fifobase[target / 4];
break;
case 4: /* JMP AGP */
- if (LOG_CMDFIFO) v->device->logerror(" JMP AGP $%06X\n", target);
+ if (LOG_CMDFIFO) vd->device->logerror(" JMP AGP $%06X\n", target);
fatalerror("JMP AGP in CMDFIFO!\n");
src = &fifobase[target / 4];
break;
@@ -1698,16 +1634,16 @@ static UINT32 cmdfifo_execute(voodoo_state *v, cmdfifo_info *f)
inc = (command >> 15) & 1;
target = (command >> 3) & 0xfff;
- if (LOG_CMDFIFO) v->device->logerror(" PACKET TYPE 1: count=%d inc=%d reg=%04X\n", count, inc, target);
+ if (LOG_CMDFIFO) vd->device->logerror(" PACKET TYPE 1: count=%d inc=%d reg=%04X\n", count, inc, target);
- if (v->type >= TYPE_VOODOO_BANSHEE && (target & 0x800))
+ if (vd->vd_type >= TYPE_VOODOO_BANSHEE && (target & 0x800))
{
// Banshee/Voodoo3 2D register writes
/* loop over all registers and write them one at a time */
for (i = 0; i < count; i++, target += inc)
{
- cycles += banshee_2d_w(v, target & 0xff, *src);
+ cycles += banshee_2d_w(vd, target & 0xff, *src);
//logerror(" 2d reg: %03x = %08X\n", target & 0x7ff, *src);
src++;
}
@@ -1716,7 +1652,7 @@ static UINT32 cmdfifo_execute(voodoo_state *v, cmdfifo_info *f)
{
/* loop over all registers and write them one at a time */
for (i = 0; i < count; i++, target += inc)
- cycles += register_w(v, target, *src++);
+ cycles += register_w(vd, target, *src++);
}
break;
@@ -1729,12 +1665,12 @@ static UINT32 cmdfifo_execute(voodoo_state *v, cmdfifo_info *f)
1 31:0 = Data word
*/
case 2:
- if (LOG_CMDFIFO) v->device->logerror(" PACKET TYPE 2: mask=%X\n", (command >> 3) & 0x1ffffff);
+ if (LOG_CMDFIFO) vd->device->logerror(" PACKET TYPE 2: mask=%X\n", (command >> 3) & 0x1ffffff);
/* loop over all registers and write them one at a time */
for (i = 3; i <= 31; i++)
if (command & (1 << i))
- cycles += register_w(v, banshee2D_clip0Min + (i - 3), *src++);
+ cycles += register_w(vd, banshee2D_clip0Min + (i - 3), *src++);
break;
/*
@@ -1766,10 +1702,10 @@ static UINT32 cmdfifo_execute(voodoo_state *v, cmdfifo_info *f)
count = (command >> 6) & 15;
code = (command >> 3) & 7;
- if (LOG_CMDFIFO) v->device->logerror(" PACKET TYPE 3: count=%d code=%d mask=%03X smode=%02X pc=%d\n", count, code, (command >> 10) & 0xfff, (command >> 22) & 0x3f, (command >> 28) & 1);
+ if (LOG_CMDFIFO) vd->device->logerror(" PACKET TYPE 3: count=%d code=%d mask=%03X smode=%02X pc=%d\n", count, code, (command >> 10) & 0xfff, (command >> 22) & 0x3f, (command >> 28) & 1);
/* copy relevant bits into the setup mode register */
- v->reg[sSetupMode].u = ((command >> 10) & 0xff) | ((command >> 6) & 0xf0000);
+ vd->reg[sSetupMode].u = ((command >> 10) & 0xff) | ((command >> 6) & 0xf0000);
/* loop over triangles */
for (i = 0; i < count; i++)
@@ -1836,8 +1772,8 @@ static UINT32 cmdfifo_execute(voodoo_state *v, cmdfifo_info *f)
/* for a series of individual triangles, initialize all the verts */
if ((code == 1 && i == 0) || (code == 0 && i % 3 == 0))
{
- v->fbi.sverts = 1;
- v->fbi.svert[0] = v->fbi.svert[1] = v->fbi.svert[2] = svert;
+ vd->fbi.sverts = 1;
+ vd->fbi.svert[0] = vd->fbi.svert[1] = vd->fbi.svert[2] = svert;
}
/* otherwise, add this to the list */
@@ -1845,15 +1781,15 @@ static UINT32 cmdfifo_execute(voodoo_state *v, cmdfifo_info *f)
{
/* for strip mode, shuffle vertex 1 down to 0 */
if (!(command & (1 << 22)))
- v->fbi.svert[0] = v->fbi.svert[1];
+ vd->fbi.svert[0] = vd->fbi.svert[1];
/* copy 2 down to 1 and add our new one regardless */
- v->fbi.svert[1] = v->fbi.svert[2];
- v->fbi.svert[2] = svert;
+ vd->fbi.svert[1] = vd->fbi.svert[2];
+ vd->fbi.svert[2] = svert;
/* if we have enough, draw */
- if (++v->fbi.sverts >= 3)
- cycles += setup_and_draw_triangle(v);
+ if (++vd->fbi.sverts >= 3)
+ cycles += setup_and_draw_triangle(vd);
}
}
@@ -1876,9 +1812,9 @@ static UINT32 cmdfifo_execute(voodoo_state *v, cmdfifo_info *f)
/* extract parameters */
target = (command >> 3) & 0xfff;
- if (LOG_CMDFIFO) v->device->logerror(" PACKET TYPE 4: mask=%X reg=%04X pad=%d\n", (command >> 15) & 0x3fff, target, command >> 29);
+ if (LOG_CMDFIFO) vd->device->logerror(" PACKET TYPE 4: mask=%X reg=%04X pad=%d\n", (command >> 15) & 0x3fff, target, command >> 29);
- if (v->type >= TYPE_VOODOO_BANSHEE && (target & 0x800))
+ if (vd->vd_type >= TYPE_VOODOO_BANSHEE && (target & 0x800))
{
// Banshee/Voodoo3 2D register writes
@@ -1888,7 +1824,7 @@ static UINT32 cmdfifo_execute(voodoo_state *v, cmdfifo_info *f)
{
if (command & (1 << i))
{
- cycles += banshee_2d_w(v, target + (i - 15), *src);
+ cycles += banshee_2d_w(vd, target + (i - 15), *src);
//logerror(" 2d reg: %03x = %08X\n", target & 0x7ff, *src);
src++;
}
@@ -1899,7 +1835,7 @@ static UINT32 cmdfifo_execute(voodoo_state *v, cmdfifo_info *f)
/* loop over all registers and write them one at a time */
for (i = 15; i <= 28; i++)
if (command & (1 << i))
- cycles += register_w(v, target + (i - 15), *src++);
+ cycles += register_w(vd, target + (i - 15), *src++);
}
/* account for the extra dummy words */
@@ -1930,17 +1866,17 @@ static UINT32 cmdfifo_execute(voodoo_state *v, cmdfifo_info *f)
{
case 0: // Linear FB
{
- if (LOG_CMDFIFO) v->device->logerror(" PACKET TYPE 5: FB count=%d dest=%08X bd2=%X bdN=%X\n", count, target, (command >> 26) & 15, (command >> 22) & 15);
+ if (LOG_CMDFIFO) vd->device->logerror(" PACKET TYPE 5: FB count=%d dest=%08X bd2=%X bdN=%X\n", count, target, (command >> 26) & 15, (command >> 22) & 15);
UINT32 addr = target * 4;
for (i=0; i < count; i++)
{
UINT32 data = *src++;
- v->fbi.ram[BYTE_XOR_LE(addr + 0)] = (UINT8)(data);
- v->fbi.ram[BYTE_XOR_LE(addr + 1)] = (UINT8)(data >> 8);
- v->fbi.ram[BYTE_XOR_LE(addr + 2)] = (UINT8)(data >> 16);
- v->fbi.ram[BYTE_XOR_LE(addr + 3)] = (UINT8)(data >> 24);
+ vd->fbi.ram[BYTE_XOR_LE(addr + 0)] = (UINT8)(data);
+ vd->fbi.ram[BYTE_XOR_LE(addr + 1)] = (UINT8)(data >> 8);
+ vd->fbi.ram[BYTE_XOR_LE(addr + 2)] = (UINT8)(data >> 16);
+ vd->fbi.ram[BYTE_XOR_LE(addr + 3)] = (UINT8)(data >> 24);
addr += 4;
}
@@ -1948,11 +1884,11 @@ static UINT32 cmdfifo_execute(voodoo_state *v, cmdfifo_info *f)
}
case 2: // 3D LFB
{
- if (LOG_CMDFIFO) v->device->logerror(" PACKET TYPE 5: 3D LFB count=%d dest=%08X bd2=%X bdN=%X\n", count, target, (command >> 26) & 15, (command >> 22) & 15);
+ if (LOG_CMDFIFO) vd->device->logerror(" PACKET TYPE 5: 3D LFB count=%d dest=%08X bd2=%X bdN=%X\n", count, target, (command >> 26) & 15, (command >> 22) & 15);
/* loop over words */
for (i = 0; i < count; i++)
- cycles += lfb_w(v, target++, *src++, 0xffffffff);
+ cycles += lfb_w(vd, target++, *src++, 0xffffffff);
break;
}
@@ -1973,11 +1909,11 @@ static UINT32 cmdfifo_execute(voodoo_state *v, cmdfifo_info *f)
case 3: // Texture Port
{
- if (LOG_CMDFIFO) v->device->logerror(" PACKET TYPE 5: textureRAM count=%d dest=%08X bd2=%X bdN=%X\n", count, target, (command >> 26) & 15, (command >> 22) & 15);
+ if (LOG_CMDFIFO) vd->device->logerror(" PACKET TYPE 5: textureRAM count=%d dest=%08X bd2=%X bdN=%X\n", count, target, (command >> 26) & 15, (command >> 22) & 15);
/* loop over words */
for (i = 0; i < count; i++)
- cycles += texture_w(v, target++, *src++);
+ cycles += texture_w(vd, target++, *src++);
break;
}
@@ -2003,7 +1939,7 @@ static UINT32 cmdfifo_execute(voodoo_state *v, cmdfifo_info *f)
*
*************************************/
-static INT32 cmdfifo_execute_if_ready(voodoo_state *v, cmdfifo_info *f)
+INT32 voodoo_device::cmdfifo_execute_if_ready(voodoo_device* vd, cmdfifo_info *f)
{
int needed_depth;
int cycles;
@@ -2013,12 +1949,12 @@ static INT32 cmdfifo_execute_if_ready(voodoo_state *v, cmdfifo_info *f)
return -1;
/* see if we have enough for the current command */
- needed_depth = cmdfifo_compute_expected_depth(v, f);
+ needed_depth = cmdfifo_compute_expected_depth(vd, f);
if (f->depth < needed_depth)
return -1;
/* execute */
- cycles = cmdfifo_execute(v, f);
+ cycles = cmdfifo_execute(vd, f);
f->depth -= needed_depth;
return cycles;
}
@@ -2031,12 +1967,12 @@ static INT32 cmdfifo_execute_if_ready(voodoo_state *v, cmdfifo_info *f)
*
*************************************/
-static void cmdfifo_w(voodoo_state *v, cmdfifo_info *f, offs_t offset, UINT32 data)
+void voodoo_device::cmdfifo_w(voodoo_device *vd, cmdfifo_info *f, offs_t offset, UINT32 data)
{
UINT32 addr = f->base + offset * 4;
- UINT32 *fifobase = (UINT32 *)v->fbi.ram;
+ UINT32 *fifobase = (UINT32 *)vd->fbi.ram;
- if (LOG_CMDFIFO_VERBOSE) v->device->logerror("CMDFIFO_w(%04X) = %08X\n", offset, data);
+ if (LOG_CMDFIFO_VERBOSE) vd->device->logerror("CMDFIFO_w(%04X) = %08X\n", offset, data);
/* write the data */
if (addr < f->end)
@@ -2056,7 +1992,7 @@ static void cmdfifo_w(voodoo_state *v, cmdfifo_info *f, offs_t offset, UINT32 da
else if (addr < f->amin)
{
if (f->holes != 0)
- v->device->logerror("Unexpected CMDFIFO: AMin=%08X AMax=%08X Holes=%d WroteTo:%08X\n",
+ vd->device->logerror("Unexpected CMDFIFO: AMin=%08X AMax=%08X Holes=%d WroteTo:%08X\n",
f->amin, f->amax, f->holes, addr);
//f->amin = f->amax = addr;
f->holes += (addr - f->base) / 4;
@@ -2086,17 +2022,17 @@ static void cmdfifo_w(voodoo_state *v, cmdfifo_info *f, offs_t offset, UINT32 da
}
/* execute if we can */
- if (!v->pci.op_pending)
+ if (!vd->pci.op_pending)
{
- INT32 cycles = cmdfifo_execute_if_ready(v, f);
+ INT32 cycles = cmdfifo_execute_if_ready(vd, f);
if (cycles > 0)
{
- v->pci.op_pending = TRUE;
- v->pci.op_end_time = v->device->machine().time() + attotime(0, (attoseconds_t)cycles * v->attoseconds_per_cycle);
+ vd->pci.op_pending = TRUE;
+ vd->pci.op_end_time = vd->device->machine().time() + attotime(0, (attoseconds_t)cycles * vd->attoseconds_per_cycle);
- if (LOG_FIFO_VERBOSE) v->device->logerror("VOODOO.%d.FIFO:direct write start at %d.%08X%08X end at %d.%08X%08X\n", v->index,
- v->device->machine().time().seconds(), (UINT32)(v->device->machine().time().attoseconds() >> 32), (UINT32)v->device->machine().time().attoseconds(),
- v->pci.op_end_time.seconds(), (UINT32)(v->pci.op_end_time.attoseconds() >> 32), (UINT32)v->pci.op_end_time.attoseconds());
+ if (LOG_FIFO_VERBOSE) vd->device->logerror("VOODOO.%d.FIFO:direct write start at %d.%08X%08X end at %d.%08X%08X\n", vd->index,
+ vd->device->machine().time().seconds(), (UINT32)(vd->device->machine().time().attoseconds() >> 32), (UINT32)vd->device->machine().time().attoseconds(),
+ vd->pci.op_end_time.seconds(), (UINT32)(vd->pci.op_end_time.attoseconds() >> 32), (UINT32)vd->pci.op_end_time.attoseconds());
}
}
}
@@ -2110,83 +2046,83 @@ static void cmdfifo_w(voodoo_state *v, cmdfifo_info *f, offs_t offset, UINT32 da
*
*************************************/
-static TIMER_CALLBACK( stall_cpu_callback )
+TIMER_CALLBACK_MEMBER( voodoo_device::stall_cpu_callback )
{
- check_stalled_cpu((voodoo_state *)ptr, machine.time());
+ check_stalled_cpu(this, machine().time());
}
-static void check_stalled_cpu(voodoo_state *v, attotime current_time)
+void voodoo_device::check_stalled_cpu(voodoo_device* vd, attotime current_time)
{
int resume = FALSE;
/* flush anything we can */
- if (v->pci.op_pending)
- flush_fifos(v, current_time);
+ if (vd->pci.op_pending)
+ flush_fifos(vd, current_time);
/* if we're just stalled until the LWM is passed, see if we're ok now */
- if (v->pci.stall_state == STALLED_UNTIL_FIFO_LWM)
+ if (vd->pci.stall_state == STALLED_UNTIL_FIFO_LWM)
{
/* if there's room in the memory FIFO now, we can proceed */
- if (FBIINIT0_ENABLE_MEMORY_FIFO(v->reg[fbiInit0].u))
+ if (FBIINIT0_ENABLE_MEMORY_FIFO(vd->reg[fbiInit0].u))
{
- if (fifo_items(&v->fbi.fifo) < 2 * 32 * FBIINIT0_MEMORY_FIFO_HWM(v->reg[fbiInit0].u))
+ if (fifo_items(&vd->fbi.fifo) < 2 * 32 * FBIINIT0_MEMORY_FIFO_HWM(vd->reg[fbiInit0].u))
resume = TRUE;
}
- else if (fifo_space(&v->pci.fifo) > 2 * FBIINIT0_PCI_FIFO_LWM(v->reg[fbiInit0].u))
+ else if (fifo_space(&vd->pci.fifo) > 2 * FBIINIT0_PCI_FIFO_LWM(vd->reg[fbiInit0].u))
resume = TRUE;
}
/* if we're stalled until the FIFOs are empty, check now */
- else if (v->pci.stall_state == STALLED_UNTIL_FIFO_EMPTY)
+ else if (vd->pci.stall_state == STALLED_UNTIL_FIFO_EMPTY)
{
- if (FBIINIT0_ENABLE_MEMORY_FIFO(v->reg[fbiInit0].u))
+ if (FBIINIT0_ENABLE_MEMORY_FIFO(vd->reg[fbiInit0].u))
{
- if (fifo_empty(&v->fbi.fifo) && fifo_empty(&v->pci.fifo))
+ if (fifo_empty(&vd->fbi.fifo) && fifo_empty(&vd->pci.fifo))
resume = TRUE;
}
- else if (fifo_empty(&v->pci.fifo))
+ else if (fifo_empty(&vd->pci.fifo))
resume = TRUE;
}
/* resume if necessary */
- if (resume || !v->pci.op_pending)
+ if (resume || !vd->pci.op_pending)
{
- if (LOG_FIFO) v->device->logerror("VOODOO.%d.FIFO:Stall condition cleared; resuming\n", v->index);
- v->pci.stall_state = NOT_STALLED;
+ if (LOG_FIFO) vd->device->logerror("VOODOO.%d.FIFO:Stall condition cleared; resuming\n", vd->index);
+ vd->pci.stall_state = NOT_STALLED;
/* either call the callback, or trigger the trigger */
- if (!v->device->m_stall.isnull())
- v->device->m_stall(FALSE);
+ if (!vd->device->m_stall.isnull())
+ vd->device->m_stall(FALSE);
else
- v->device->machine().scheduler().trigger(v->trigger);
+ vd->device->machine().scheduler().trigger(vd->trigger);
}
/* if not, set a timer for the next one */
else
{
- v->pci.continue_timer->adjust(v->pci.op_end_time - current_time);
+ vd->pci.continue_timer->adjust(vd->pci.op_end_time - current_time);
}
}
-static void stall_cpu(voodoo_state *v, int state, attotime current_time)
+void voodoo_device::stall_cpu(voodoo_device *vd, int state, attotime current_time)
{
/* sanity check */
- if (!v->pci.op_pending) fatalerror("FIFOs not empty, no op pending!\n");
+ if (!vd->pci.op_pending) fatalerror("FIFOs not empty, no op pending!\n");
/* set the state and update statistics */
- v->pci.stall_state = state;
- v->stats.stalls++;
+ vd->pci.stall_state = state;
+ vd->stats.stalls++;
/* either call the callback, or spin the CPU */
- if (!v->device->m_stall.isnull())
- v->device->m_stall(TRUE);
+ if (!vd->device->m_stall.isnull())
+ vd->device->m_stall(TRUE);
else
- v->cpu->execute().spin_until_trigger(v->trigger);
+ vd->cpu->execute().spin_until_trigger(vd->trigger);
/* set a timer to clear the stall */
- v->pci.continue_timer->adjust(v->pci.op_end_time - current_time);
+ vd->pci.continue_timer->adjust(vd->pci.op_end_time - current_time);
}
@@ -2197,7 +2133,7 @@ static void stall_cpu(voodoo_state *v, int state, attotime current_time)
*
*************************************/
-static INT32 register_w(voodoo_state *v, offs_t offset, UINT32 data)
+INT32 voodoo_device::register_w(voodoo_device *vd, offs_t offset, UINT32 data)
{
UINT32 origdata = data;
INT32 cycles = 0;
@@ -2206,24 +2142,24 @@ static INT32 register_w(voodoo_state *v, offs_t offset, UINT32 data)
UINT8 chips;
/* statistics */
- v->stats.reg_writes++;
+ vd->stats.reg_writes++;
/* determine which chips we are addressing */
chips = (offset >> 8) & 0xf;
if (chips == 0)
chips = 0xf;
- chips &= v->chipmask;
+ chips &= vd->chipmask;
/* the first 64 registers can be aliased differently */
- if ((offset & 0x800c0) == 0x80000 && v->alt_regmap)
+ if ((offset & 0x800c0) == 0x80000 && vd->alt_regmap)
regnum = register_alias_map[offset & 0x3f];
else
regnum = offset & 0xff;
/* first make sure this register is readable */
- if (!(v->regaccess[regnum] & REGISTER_WRITE))
+ if (!(vd->regaccess[regnum] & REGISTER_WRITE))
{
- v->device->logerror("VOODOO.%d.ERROR:Invalid attempt to write %s\n", v->index, v->regnames[regnum]);
+ vd->device->logerror("VOODOO.%d.ERROR:Invalid attempt to write %s\n", vd->index, vd->regnames[regnum]);
return 0;
}
@@ -2234,227 +2170,227 @@ static INT32 register_w(voodoo_state *v, offs_t offset, UINT32 data)
case fvertexAx:
data = float_to_int32(data, 4);
case vertexAx:
- if (chips & 1) v->fbi.ax = (INT16)data;
+ if (chips & 1) vd->fbi.ax = (INT16)data;
break;
case fvertexAy:
data = float_to_int32(data, 4);
case vertexAy:
- if (chips & 1) v->fbi.ay = (INT16)data;
+ if (chips & 1) vd->fbi.ay = (INT16)data;
break;
case fvertexBx:
data = float_to_int32(data, 4);
case vertexBx:
- if (chips & 1) v->fbi.bx = (INT16)data;
+ if (chips & 1) vd->fbi.bx = (INT16)data;
break;
case fvertexBy:
data = float_to_int32(data, 4);
case vertexBy:
- if (chips & 1) v->fbi.by = (INT16)data;
+ if (chips & 1) vd->fbi.by = (INT16)data;
break;
case fvertexCx:
data = float_to_int32(data, 4);
case vertexCx:
- if (chips & 1) v->fbi.cx = (INT16)data;
+ if (chips & 1) vd->fbi.cx = (INT16)data;
break;
case fvertexCy:
data = float_to_int32(data, 4);
case vertexCy:
- if (chips & 1) v->fbi.cy = (INT16)data;
+ if (chips & 1) vd->fbi.cy = (INT16)data;
break;
/* RGB data is 12.12 formatted fixed point */
case fstartR:
data = float_to_int32(data, 12);
case startR:
- if (chips & 1) v->fbi.startr = (INT32)(data << 8) >> 8;
+ if (chips & 1) vd->fbi.startr = (INT32)(data << 8) >> 8;
break;
case fstartG:
data = float_to_int32(data, 12);
case startG:
- if (chips & 1) v->fbi.startg = (INT32)(data << 8) >> 8;
+ if (chips & 1) vd->fbi.startg = (INT32)(data << 8) >> 8;
break;
case fstartB:
data = float_to_int32(data, 12);
case startB:
- if (chips & 1) v->fbi.startb = (INT32)(data << 8) >> 8;
+ if (chips & 1) vd->fbi.startb = (INT32)(data << 8) >> 8;
break;
case fstartA:
data = float_to_int32(data, 12);
case startA:
- if (chips & 1) v->fbi.starta = (INT32)(data << 8) >> 8;
+ if (chips & 1) vd->fbi.starta = (INT32)(data << 8) >> 8;
break;
case fdRdX:
data = float_to_int32(data, 12);
case dRdX:
- if (chips & 1) v->fbi.drdx = (INT32)(data << 8) >> 8;
+ if (chips & 1) vd->fbi.drdx = (INT32)(data << 8) >> 8;
break;
case fdGdX:
data = float_to_int32(data, 12);
case dGdX:
- if (chips & 1) v->fbi.dgdx = (INT32)(data << 8) >> 8;
+ if (chips & 1) vd->fbi.dgdx = (INT32)(data << 8) >> 8;
break;
case fdBdX:
data = float_to_int32(data, 12);
case dBdX:
- if (chips & 1) v->fbi.dbdx = (INT32)(data << 8) >> 8;
+ if (chips & 1) vd->fbi.dbdx = (INT32)(data << 8) >> 8;
break;
case fdAdX:
data = float_to_int32(data, 12);
case dAdX:
- if (chips & 1) v->fbi.dadx = (INT32)(data << 8) >> 8;
+ if (chips & 1) vd->fbi.dadx = (INT32)(data << 8) >> 8;
break;
case fdRdY:
data = float_to_int32(data, 12);
case dRdY:
- if (chips & 1) v->fbi.drdy = (INT32)(data << 8) >> 8;
+ if (chips & 1) vd->fbi.drdy = (INT32)(data << 8) >> 8;
break;
case fdGdY:
data = float_to_int32(data, 12);
case dGdY:
- if (chips & 1) v->fbi.dgdy = (INT32)(data << 8) >> 8;
+ if (chips & 1) vd->fbi.dgdy = (INT32)(data << 8) >> 8;
break;
case fdBdY:
data = float_to_int32(data, 12);
case dBdY:
- if (chips & 1) v->fbi.dbdy = (INT32)(data << 8) >> 8;
+ if (chips & 1) vd->fbi.dbdy = (INT32)(data << 8) >> 8;
break;
case fdAdY:
data = float_to_int32(data, 12);
case dAdY:
- if (chips & 1) v->fbi.dady = (INT32)(data << 8) >> 8;
+ if (chips & 1) vd->fbi.dady = (INT32)(data << 8) >> 8;
break;
/* Z data is 20.12 formatted fixed point */
case fstartZ:
data = float_to_int32(data, 12);
case startZ:
- if (chips & 1) v->fbi.startz = (INT32)data;
+ if (chips & 1) vd->fbi.startz = (INT32)data;
break;
case fdZdX:
data = float_to_int32(data, 12);
case dZdX:
- if (chips & 1) v->fbi.dzdx = (INT32)data;
+ if (chips & 1) vd->fbi.dzdx = (INT32)data;
break;
case fdZdY:
data = float_to_int32(data, 12);
case dZdY:
- if (chips & 1) v->fbi.dzdy = (INT32)data;
+ if (chips & 1) vd->fbi.dzdy = (INT32)data;
break;
/* S,T data is 14.18 formatted fixed point, converted to 16.32 internally */
case fstartS:
data64 = float_to_int64(data, 32);
- if (chips & 2) v->tmu[0].starts = data64;
- if (chips & 4) v->tmu[1].starts = data64;
+ if (chips & 2) vd->tmu[0].starts = data64;
+ if (chips & 4) vd->tmu[1].starts = data64;
break;
case startS:
- if (chips & 2) v->tmu[0].starts = (INT64)(INT32)data << 14;
- if (chips & 4) v->tmu[1].starts = (INT64)(INT32)data << 14;
+ if (chips & 2) vd->tmu[0].starts = (INT64)(INT32)data << 14;
+ if (chips & 4) vd->tmu[1].starts = (INT64)(INT32)data << 14;
break;
case fstartT:
data64 = float_to_int64(data, 32);
- if (chips & 2) v->tmu[0].startt = data64;
- if (chips & 4) v->tmu[1].startt = data64;
+ if (chips & 2) vd->tmu[0].startt = data64;
+ if (chips & 4) vd->tmu[1].startt = data64;
break;
case startT:
- if (chips & 2) v->tmu[0].startt = (INT64)(INT32)data << 14;
- if (chips & 4) v->tmu[1].startt = (INT64)(INT32)data << 14;
+ if (chips & 2) vd->tmu[0].startt = (INT64)(INT32)data << 14;
+ if (chips & 4) vd->tmu[1].startt = (INT64)(INT32)data << 14;
break;
case fdSdX:
data64 = float_to_int64(data, 32);
- if (chips & 2) v->tmu[0].dsdx = data64;
- if (chips & 4) v->tmu[1].dsdx = data64;
+ if (chips & 2) vd->tmu[0].dsdx = data64;
+ if (chips & 4) vd->tmu[1].dsdx = data64;
break;
case dSdX:
- if (chips & 2) v->tmu[0].dsdx = (INT64)(INT32)data << 14;
- if (chips & 4) v->tmu[1].dsdx = (INT64)(INT32)data << 14;
+ if (chips & 2) vd->tmu[0].dsdx = (INT64)(INT32)data << 14;
+ if (chips & 4) vd->tmu[1].dsdx = (INT64)(INT32)data << 14;
break;
case fdTdX:
data64 = float_to_int64(data, 32);
- if (chips & 2) v->tmu[0].dtdx = data64;
- if (chips & 4) v->tmu[1].dtdx = data64;
+ if (chips & 2) vd->tmu[0].dtdx = data64;
+ if (chips & 4) vd->tmu[1].dtdx = data64;
break;
case dTdX:
- if (chips & 2) v->tmu[0].dtdx = (INT64)(INT32)data << 14;
- if (chips & 4) v->tmu[1].dtdx = (INT64)(INT32)data << 14;
+ if (chips & 2) vd->tmu[0].dtdx = (INT64)(INT32)data << 14;
+ if (chips & 4) vd->tmu[1].dtdx = (INT64)(INT32)data << 14;
break;
case fdSdY:
data64 = float_to_int64(data, 32);
- if (chips & 2) v->tmu[0].dsdy = data64;
- if (chips & 4) v->tmu[1].dsdy = data64;
+ if (chips & 2) vd->tmu[0].dsdy = data64;
+ if (chips & 4) vd->tmu[1].dsdy = data64;
break;
case dSdY:
- if (chips & 2) v->tmu[0].dsdy = (INT64)(INT32)data << 14;
- if (chips & 4) v->tmu[1].dsdy = (INT64)(INT32)data << 14;
+ if (chips & 2) vd->tmu[0].dsdy = (INT64)(INT32)data << 14;
+ if (chips & 4) vd->tmu[1].dsdy = (INT64)(INT32)data << 14;
break;
case fdTdY:
data64 = float_to_int64(data, 32);
- if (chips & 2) v->tmu[0].dtdy = data64;
- if (chips & 4) v->tmu[1].dtdy = data64;
+ if (chips & 2) vd->tmu[0].dtdy = data64;
+ if (chips & 4) vd->tmu[1].dtdy = data64;
break;
case dTdY:
- if (chips & 2) v->tmu[0].dtdy = (INT64)(INT32)data << 14;
- if (chips & 4) v->tmu[1].dtdy = (INT64)(INT32)data << 14;
+ if (chips & 2) vd->tmu[0].dtdy = (INT64)(INT32)data << 14;
+ if (chips & 4) vd->tmu[1].dtdy = (INT64)(INT32)data << 14;
break;
/* W data is 2.30 formatted fixed point, converted to 16.32 internally */
case fstartW:
data64 = float_to_int64(data, 32);
- if (chips & 1) v->fbi.startw = data64;
- if (chips & 2) v->tmu[0].startw = data64;
- if (chips & 4) v->tmu[1].startw = data64;
+ if (chips & 1) vd->fbi.startw = data64;
+ if (chips & 2) vd->tmu[0].startw = data64;
+ if (chips & 4) vd->tmu[1].startw = data64;
break;
case startW:
- if (chips & 1) v->fbi.startw = (INT64)(INT32)data << 2;
- if (chips & 2) v->tmu[0].startw = (INT64)(INT32)data << 2;
- if (chips & 4) v->tmu[1].startw = (INT64)(INT32)data << 2;
+ if (chips & 1) vd->fbi.startw = (INT64)(INT32)data << 2;
+ if (chips & 2) vd->tmu[0].startw = (INT64)(INT32)data << 2;
+ if (chips & 4) vd->tmu[1].startw = (INT64)(INT32)data << 2;
break;
case fdWdX:
data64 = float_to_int64(data, 32);
- if (chips & 1) v->fbi.dwdx = data64;
- if (chips & 2) v->tmu[0].dwdx = data64;
- if (chips & 4) v->tmu[1].dwdx = data64;
+ if (chips & 1) vd->fbi.dwdx = data64;
+ if (chips & 2) vd->tmu[0].dwdx = data64;
+ if (chips & 4) vd->tmu[1].dwdx = data64;
break;
case dWdX:
- if (chips & 1) v->fbi.dwdx = (INT64)(INT32)data << 2;
- if (chips & 2) v->tmu[0].dwdx = (INT64)(INT32)data << 2;
- if (chips & 4) v->tmu[1].dwdx = (INT64)(INT32)data << 2;
+ if (chips & 1) vd->fbi.dwdx = (INT64)(INT32)data << 2;
+ if (chips & 2) vd->tmu[0].dwdx = (INT64)(INT32)data << 2;
+ if (chips & 4) vd->tmu[1].dwdx = (INT64)(INT32)data << 2;
break;
case fdWdY:
data64 = float_to_int64(data, 32);
- if (chips & 1) v->fbi.dwdy = data64;
- if (chips & 2) v->tmu[0].dwdy = data64;
- if (chips & 4) v->tmu[1].dwdy = data64;
+ if (chips & 1) vd->fbi.dwdy = data64;
+ if (chips & 2) vd->tmu[0].dwdy = data64;
+ if (chips & 4) vd->tmu[1].dwdy = data64;
break;
case dWdY:
- if (chips & 1) v->fbi.dwdy = (INT64)(INT32)data << 2;
- if (chips & 2) v->tmu[0].dwdy = (INT64)(INT32)data << 2;
- if (chips & 4) v->tmu[1].dwdy = (INT64)(INT32)data << 2;
+ if (chips & 1) vd->fbi.dwdy = (INT64)(INT32)data << 2;
+ if (chips & 2) vd->tmu[0].dwdy = (INT64)(INT32)data << 2;
+ if (chips & 4) vd->tmu[1].dwdy = (INT64)(INT32)data << 2;
break;
/* setup bits */
@@ -2462,114 +2398,114 @@ static INT32 register_w(voodoo_state *v, offs_t offset, UINT32 data)
if (chips & 1)
{
rgb_t rgbdata(data);
- v->reg[sAlpha].f = rgbdata.a();
- v->reg[sRed].f = rgbdata.r();
- v->reg[sGreen].f = rgbdata.g();
- v->reg[sBlue].f = rgbdata.b();
+ vd->reg[sAlpha].f = rgbdata.a();
+ vd->reg[sRed].f = rgbdata.r();
+ vd->reg[sGreen].f = rgbdata.g();
+ vd->reg[sBlue].f = rgbdata.b();
}
break;
/* mask off invalid bits for different cards */
case fbzColorPath:
- poly_wait(v->poly, v->regnames[regnum]);
- if (v->type < TYPE_VOODOO_2)
+ poly_wait(vd->poly, vd->regnames[regnum]);
+ if (vd->vd_type < TYPE_VOODOO_2)
data &= 0x0fffffff;
- if (chips & 1) v->reg[fbzColorPath].u = data;
+ if (chips & 1) vd->reg[fbzColorPath].u = data;
break;
case fbzMode:
- poly_wait(v->poly, v->regnames[regnum]);
- if (v->type < TYPE_VOODOO_2)
+ poly_wait(vd->poly, vd->regnames[regnum]);
+ if (vd->vd_type < TYPE_VOODOO_2)
data &= 0x001fffff;
- if (chips & 1) v->reg[fbzMode].u = data;
+ if (chips & 1) vd->reg[fbzMode].u = data;
break;
case fogMode:
- poly_wait(v->poly, v->regnames[regnum]);
- if (v->type < TYPE_VOODOO_2)
+ poly_wait(vd->poly, vd->regnames[regnum]);
+ if (vd->vd_type < TYPE_VOODOO_2)
data &= 0x0000003f;
- if (chips & 1) v->reg[fogMode].u = data;
+ if (chips & 1) vd->reg[fogMode].u = data;
break;
/* triangle drawing */
case triangleCMD:
- v->fbi.cheating_allowed = (v->fbi.ax != 0 || v->fbi.ay != 0 || v->fbi.bx > 50 || v->fbi.by != 0 || v->fbi.cx != 0 || v->fbi.cy > 50);
- v->fbi.sign = data;
- cycles = triangle(v);
+ vd->fbi.cheating_allowed = (vd->fbi.ax != 0 || vd->fbi.ay != 0 || vd->fbi.bx > 50 || vd->fbi.by != 0 || vd->fbi.cx != 0 || vd->fbi.cy > 50);
+ vd->fbi.sign = data;
+ cycles = triangle(vd);
break;
case ftriangleCMD:
- v->fbi.cheating_allowed = TRUE;
- v->fbi.sign = data;
- cycles = triangle(v);
+ vd->fbi.cheating_allowed = TRUE;
+ vd->fbi.sign = data;
+ cycles = triangle(vd);
break;
case sBeginTriCMD:
- cycles = begin_triangle(v);
+ cycles = begin_triangle(vd);
break;
case sDrawTriCMD:
- cycles = draw_triangle(v);
+ cycles = draw_triangle(vd);
break;
/* other commands */
case nopCMD:
- poly_wait(v->poly, v->regnames[regnum]);
+ poly_wait(vd->poly, vd->regnames[regnum]);
if (data & 1)
- reset_counters(v);
+ reset_counters(vd);
if (data & 2)
- v->reg[fbiTrianglesOut].u = 0;
+ vd->reg[fbiTrianglesOut].u = 0;
break;
case fastfillCMD:
- cycles = fastfill(v);
+ cycles = fastfill(vd);
break;
case swapbufferCMD:
- poly_wait(v->poly, v->regnames[regnum]);
- cycles = swapbuffer(v, data);
+ poly_wait(vd->poly, vd->regnames[regnum]);
+ cycles = swapbuffer(vd, data);
break;
case userIntrCMD:
- poly_wait(v->poly, v->regnames[regnum]);
+ poly_wait(vd->poly, vd->regnames[regnum]);
//fatalerror("userIntrCMD\n");
- v->reg[intrCtrl].u |= 0x1800;
- v->reg[intrCtrl].u &= ~0x80000000;
+ vd->reg[intrCtrl].u |= 0x1800;
+ vd->reg[intrCtrl].u &= ~0x80000000;
// TODO: rename vblank_client for less confusion?
- if (!v->device->m_vblank.isnull())
- v->device->m_vblank(TRUE);
+ if (!vd->device->m_vblank.isnull())
+ vd->device->m_vblank(TRUE);
break;
/* gamma table access -- Voodoo/Voodoo2 only */
case clutData:
- if (v->type <= TYPE_VOODOO_2 && (chips & 1))
+ if (vd->vd_type <= TYPE_VOODOO_2 && (chips & 1))
{
- poly_wait(v->poly, v->regnames[regnum]);
- if (!FBIINIT1_VIDEO_TIMING_RESET(v->reg[fbiInit1].u))
+ poly_wait(vd->poly, vd->regnames[regnum]);
+ if (!FBIINIT1_VIDEO_TIMING_RESET(vd->reg[fbiInit1].u))
{
int index = data >> 24;
if (index <= 32)
{
- v->fbi.clut[index] = data;
- v->fbi.clut_dirty = TRUE;
+ vd->fbi.clut[index] = data;
+ vd->fbi.clut_dirty = TRUE;
}
}
else
- v->device->logerror("clutData ignored because video timing reset = 1\n");
+ vd->device->logerror("clutData ignored because video timing reset = 1\n");
}
break;
/* external DAC access -- Voodoo/Voodoo2 only */
case dacData:
- if (v->type <= TYPE_VOODOO_2 && (chips & 1))
+ if (vd->vd_type <= TYPE_VOODOO_2 && (chips & 1))
{
- poly_wait(v->poly, v->regnames[regnum]);
+ poly_wait(vd->poly, vd->regnames[regnum]);
if (!(data & 0x800))
- dacdata_w(&v->dac, (data >> 8) & 7, data & 0xff);
+ dacdata_w(&vd->dac, (data >> 8) & 7, data & 0xff);
else
- dacdata_r(&v->dac, (data >> 8) & 7);
+ dacdata_r(&vd->dac, (data >> 8) & 7);
}
break;
@@ -2578,35 +2514,35 @@ static INT32 register_w(voodoo_state *v, offs_t offset, UINT32 data)
case vSync:
case backPorch:
case videoDimensions:
- if (v->type <= TYPE_VOODOO_2 && (chips & 1))
+ if (vd->vd_type <= TYPE_VOODOO_2 && (chips & 1))
{
- poly_wait(v->poly, v->regnames[regnum]);
- v->reg[regnum].u = data;
- if (v->reg[hSync].u != 0 && v->reg[vSync].u != 0 && v->reg[videoDimensions].u != 0)
+ poly_wait(vd->poly, vd->regnames[regnum]);
+ vd->reg[regnum].u = data;
+ if (vd->reg[hSync].u != 0 && vd->reg[vSync].u != 0 && vd->reg[videoDimensions].u != 0)
{
int hvis, vvis, htotal, vtotal, hbp, vbp;
- attoseconds_t refresh = v->screen->frame_period().attoseconds();
+ attoseconds_t refresh = vd->screen->frame_period().attoseconds();
attoseconds_t stdperiod, medperiod, vgaperiod;
attoseconds_t stddiff, meddiff, vgadiff;
rectangle visarea;
- if (v->type == TYPE_VOODOO_2)
+ if (vd->vd_type == TYPE_VOODOO_2)
{
- htotal = ((v->reg[hSync].u >> 16) & 0x7ff) + 1 + (v->reg[hSync].u & 0x1ff) + 1;
- vtotal = ((v->reg[vSync].u >> 16) & 0x1fff) + (v->reg[vSync].u & 0x1fff);
- hvis = v->reg[videoDimensions].u & 0x7ff;
- vvis = (v->reg[videoDimensions].u >> 16) & 0x7ff;
- hbp = (v->reg[backPorch].u & 0x1ff) + 2;
- vbp = (v->reg[backPorch].u >> 16) & 0x1ff;
+ htotal = ((vd->reg[hSync].u >> 16) & 0x7ff) + 1 + (vd->reg[hSync].u & 0x1ff) + 1;
+ vtotal = ((vd->reg[vSync].u >> 16) & 0x1fff) + (vd->reg[vSync].u & 0x1fff);
+ hvis = vd->reg[videoDimensions].u & 0x7ff;
+ vvis = (vd->reg[videoDimensions].u >> 16) & 0x7ff;
+ hbp = (vd->reg[backPorch].u & 0x1ff) + 2;
+ vbp = (vd->reg[backPorch].u >> 16) & 0x1ff;
}
else
{
- htotal = ((v->reg[hSync].u >> 16) & 0x3ff) + 1 + (v->reg[hSync].u & 0xff) + 1;
- vtotal = ((v->reg[vSync].u >> 16) & 0xfff) + (v->reg[vSync].u & 0xfff);
- hvis = v->reg[videoDimensions].u & 0x3ff;
- vvis = (v->reg[videoDimensions].u >> 16) & 0x3ff;
- hbp = (v->reg[backPorch].u & 0xff) + 2;
- vbp = (v->reg[backPorch].u >> 16) & 0xff;
+ htotal = ((vd->reg[hSync].u >> 16) & 0x3ff) + 1 + (vd->reg[hSync].u & 0xff) + 1;
+ vtotal = ((vd->reg[vSync].u >> 16) & 0xfff) + (vd->reg[vSync].u & 0xfff);
+ hvis = vd->reg[videoDimensions].u & 0x3ff;
+ vvis = (vd->reg[videoDimensions].u >> 16) & 0x3ff;
+ hbp = (vd->reg[backPorch].u & 0xff) + 2;
+ vbp = (vd->reg[backPorch].u >> 16) & 0xff;
}
/* create a new visarea */
@@ -2630,61 +2566,61 @@ static INT32 register_w(voodoo_state *v, offs_t offset, UINT32 data)
if (vgadiff < 0) vgadiff = -vgadiff;
osd_printf_debug("hSync=%08X vSync=%08X backPorch=%08X videoDimensions=%08X\n",
- v->reg[hSync].u, v->reg[vSync].u, v->reg[backPorch].u, v->reg[videoDimensions].u);
+ vd->reg[hSync].u, vd->reg[vSync].u, vd->reg[backPorch].u, vd->reg[videoDimensions].u);
osd_printf_debug("Horiz: %d-%d (%d total) Vert: %d-%d (%d total) -- ", visarea.min_x, visarea.max_x, htotal, visarea.min_y, visarea.max_y, vtotal);
/* configure the screen based on which one matches the closest */
if (stddiff < meddiff && stddiff < vgadiff)
{
- v->screen->configure(htotal, vtotal, visarea, stdperiod);
+ vd->screen->configure(htotal, vtotal, visarea, stdperiod);
osd_printf_debug("Standard resolution, %f Hz\n", ATTOSECONDS_TO_HZ(stdperiod));
}
else if (meddiff < vgadiff)
{
- v->screen->configure(htotal, vtotal, visarea, medperiod);
+ vd->screen->configure(htotal, vtotal, visarea, medperiod);
osd_printf_debug("Medium resolution, %f Hz\n", ATTOSECONDS_TO_HZ(medperiod));
}
else
{
- v->screen->configure(htotal, vtotal, visarea, vgaperiod);
+ vd->screen->configure(htotal, vtotal, visarea, vgaperiod);
osd_printf_debug("VGA resolution, %f Hz\n", ATTOSECONDS_TO_HZ(vgaperiod));
}
/* configure the new framebuffer info */
- v->fbi.width = hvis;
- v->fbi.height = vvis;
- v->fbi.xoffs = hbp;
- v->fbi.yoffs = vbp;
- v->fbi.vsyncscan = (v->reg[vSync].u >> 16) & 0xfff;
+ vd->fbi.width = hvis;
+ vd->fbi.height = vvis;
+ vd->fbi.xoffs = hbp;
+ vd->fbi.yoffs = vbp;
+ vd->fbi.vsyncscan = (vd->reg[vSync].u >> 16) & 0xfff;
/* recompute the time of VBLANK */
- adjust_vblank_timer(v);
+ adjust_vblank_timer(vd);
/* if changing dimensions, update video memory layout */
if (regnum == videoDimensions)
- recompute_video_memory(v);
+ recompute_video_memory(vd);
}
}
break;
/* fbiInit0 can only be written if initEnable says we can -- Voodoo/Voodoo2 only */
case fbiInit0:
- poly_wait(v->poly, v->regnames[regnum]);
- if (v->type <= TYPE_VOODOO_2 && (chips & 1) && INITEN_ENABLE_HW_INIT(v->pci.init_enable))
+ poly_wait(vd->poly, vd->regnames[regnum]);
+ if (vd->vd_type <= TYPE_VOODOO_2 && (chips & 1) && INITEN_ENABLE_HW_INIT(vd->pci.init_enable))
{
- v->reg[fbiInit0].u = data;
+ vd->reg[fbiInit0].u = data;
if (FBIINIT0_GRAPHICS_RESET(data))
- soft_reset(v);
+ soft_reset(vd);
if (FBIINIT0_FIFO_RESET(data))
- fifo_reset(&v->pci.fifo);
- recompute_video_memory(v);
+ fifo_reset(&vd->pci.fifo);
+ recompute_video_memory(vd);
}
break;
/* fbiInit5-7 are Voodoo 2-only; ignore them on anything else */
case fbiInit5:
case fbiInit6:
- if (v->type < TYPE_VOODOO_2)
+ if (vd->vd_type < TYPE_VOODOO_2)
break;
/* else fall through... */
@@ -2693,94 +2629,94 @@ static INT32 register_w(voodoo_state *v, offs_t offset, UINT32 data)
case fbiInit1:
case fbiInit2:
case fbiInit4:
- poly_wait(v->poly, v->regnames[regnum]);
- if (v->type <= TYPE_VOODOO_2 && (chips & 1) && INITEN_ENABLE_HW_INIT(v->pci.init_enable))
+ poly_wait(vd->poly, vd->regnames[regnum]);
+ if (vd->vd_type <= TYPE_VOODOO_2 && (chips & 1) && INITEN_ENABLE_HW_INIT(vd->pci.init_enable))
{
- v->reg[regnum].u = data;
- recompute_video_memory(v);
- v->fbi.video_changed = TRUE;
+ vd->reg[regnum].u = data;
+ recompute_video_memory(vd);
+ vd->fbi.video_changed = TRUE;
}
break;
case fbiInit3:
- poly_wait(v->poly, v->regnames[regnum]);
- if (v->type <= TYPE_VOODOO_2 && (chips & 1) && INITEN_ENABLE_HW_INIT(v->pci.init_enable))
+ poly_wait(vd->poly, vd->regnames[regnum]);
+ if (vd->vd_type <= TYPE_VOODOO_2 && (chips & 1) && INITEN_ENABLE_HW_INIT(vd->pci.init_enable))
{
- v->reg[regnum].u = data;
- v->alt_regmap = FBIINIT3_TRI_REGISTER_REMAP(data);
- v->fbi.yorigin = FBIINIT3_YORIGIN_SUBTRACT(v->reg[fbiInit3].u);
- recompute_video_memory(v);
+ vd->reg[regnum].u = data;
+ vd->alt_regmap = FBIINIT3_TRI_REGISTER_REMAP(data);
+ vd->fbi.yorigin = FBIINIT3_YORIGIN_SUBTRACT(vd->reg[fbiInit3].u);
+ recompute_video_memory(vd);
}
break;
case fbiInit7:
/* case swapPending: -- Banshee */
- if (v->type == TYPE_VOODOO_2 && (chips & 1) && INITEN_ENABLE_HW_INIT(v->pci.init_enable))
+ if (vd->vd_type == TYPE_VOODOO_2 && (chips & 1) && INITEN_ENABLE_HW_INIT(vd->pci.init_enable))
{
- poly_wait(v->poly, v->regnames[regnum]);
- v->reg[regnum].u = data;
- v->fbi.cmdfifo[0].enable = FBIINIT7_CMDFIFO_ENABLE(data);
- v->fbi.cmdfifo[0].count_holes = !FBIINIT7_DISABLE_CMDFIFO_HOLES(data);
+ poly_wait(vd->poly, vd->regnames[regnum]);
+ vd->reg[regnum].u = data;
+ vd->fbi.cmdfifo[0].enable = FBIINIT7_CMDFIFO_ENABLE(data);
+ vd->fbi.cmdfifo[0].count_holes = !FBIINIT7_DISABLE_CMDFIFO_HOLES(data);
}
- else if (v->type >= TYPE_VOODOO_BANSHEE)
- v->fbi.swaps_pending++;
+ else if (vd->vd_type >= TYPE_VOODOO_BANSHEE)
+ vd->fbi.swaps_pending++;
break;
/* cmdFifo -- Voodoo2 only */
case cmdFifoBaseAddr:
- if (v->type == TYPE_VOODOO_2 && (chips & 1))
+ if (vd->vd_type == TYPE_VOODOO_2 && (chips & 1))
{
- poly_wait(v->poly, v->regnames[regnum]);
- v->reg[regnum].u = data;
- v->fbi.cmdfifo[0].base = (data & 0x3ff) << 12;
- v->fbi.cmdfifo[0].end = (((data >> 16) & 0x3ff) + 1) << 12;
+ poly_wait(vd->poly, vd->regnames[regnum]);
+ vd->reg[regnum].u = data;
+ vd->fbi.cmdfifo[0].base = (data & 0x3ff) << 12;
+ vd->fbi.cmdfifo[0].end = (((data >> 16) & 0x3ff) + 1) << 12;
}
break;
case cmdFifoBump:
- if (v->type == TYPE_VOODOO_2 && (chips & 1))
+ if (vd->vd_type == TYPE_VOODOO_2 && (chips & 1))
fatalerror("cmdFifoBump\n");
break;
case cmdFifoRdPtr:
- if (v->type == TYPE_VOODOO_2 && (chips & 1))
- v->fbi.cmdfifo[0].rdptr = data;
+ if (vd->vd_type == TYPE_VOODOO_2 && (chips & 1))
+ vd->fbi.cmdfifo[0].rdptr = data;
break;
case cmdFifoAMin:
/* case colBufferAddr: -- Banshee */
- if (v->type == TYPE_VOODOO_2 && (chips & 1))
- v->fbi.cmdfifo[0].amin = data;
- else if (v->type >= TYPE_VOODOO_BANSHEE && (chips & 1))
- v->fbi.rgboffs[1] = data & v->fbi.mask & ~0x0f;
+ if (vd->vd_type == TYPE_VOODOO_2 && (chips & 1))
+ vd->fbi.cmdfifo[0].amin = data;
+ else if (vd->vd_type >= TYPE_VOODOO_BANSHEE && (chips & 1))
+ vd->fbi.rgboffs[1] = data & vd->fbi.mask & ~0x0f;
break;
case cmdFifoAMax:
/* case colBufferStride: -- Banshee */
- if (v->type == TYPE_VOODOO_2 && (chips & 1))
- v->fbi.cmdfifo[0].amax = data;
- else if (v->type >= TYPE_VOODOO_BANSHEE && (chips & 1))
+ if (vd->vd_type == TYPE_VOODOO_2 && (chips & 1))
+ vd->fbi.cmdfifo[0].amax = data;
+ else if (vd->vd_type >= TYPE_VOODOO_BANSHEE && (chips & 1))
{
if (data & 0x8000)
- v->fbi.rowpixels = (data & 0x7f) << 6;
+ vd->fbi.rowpixels = (data & 0x7f) << 6;
else
- v->fbi.rowpixels = (data & 0x3fff) >> 1;
+ vd->fbi.rowpixels = (data & 0x3fff) >> 1;
}
break;
case cmdFifoDepth:
/* case auxBufferAddr: -- Banshee */
- if (v->type == TYPE_VOODOO_2 && (chips & 1))
- v->fbi.cmdfifo[0].depth = data;
- else if (v->type >= TYPE_VOODOO_BANSHEE && (chips & 1))
- v->fbi.auxoffs = data & v->fbi.mask & ~0x0f;
+ if (vd->vd_type == TYPE_VOODOO_2 && (chips & 1))
+ vd->fbi.cmdfifo[0].depth = data;
+ else if (vd->vd_type >= TYPE_VOODOO_BANSHEE && (chips & 1))
+ vd->fbi.auxoffs = data & vd->fbi.mask & ~0x0f;
break;
case cmdFifoHoles:
/* case auxBufferStride: -- Banshee */
- if (v->type == TYPE_VOODOO_2 && (chips & 1))
- v->fbi.cmdfifo[0].holes = data;
- else if (v->type >= TYPE_VOODOO_BANSHEE && (chips & 1))
+ if (vd->vd_type == TYPE_VOODOO_2 && (chips & 1))
+ vd->fbi.cmdfifo[0].holes = data;
+ else if (vd->vd_type >= TYPE_VOODOO_BANSHEE && (chips & 1))
{
int rowpixels;
@@ -2788,7 +2724,7 @@ static INT32 register_w(voodoo_state *v, offs_t offset, UINT32 data)
rowpixels = (data & 0x7f) << 6;
else
rowpixels = (data & 0x3fff) >> 1;
- if (v->fbi.rowpixels != rowpixels)
+ if (vd->fbi.rowpixels != rowpixels)
fatalerror("aux buffer stride differs from color buffer stride\n");
}
break;
@@ -2806,9 +2742,9 @@ static INT32 register_w(voodoo_state *v, offs_t offset, UINT32 data)
case nccTable+9:
case nccTable+10:
case nccTable+11:
- poly_wait(v->poly, v->regnames[regnum]);
- if (chips & 2) ncc_table_write(&v->tmu[0].ncc[0], regnum - nccTable, data);
- if (chips & 4) ncc_table_write(&v->tmu[1].ncc[0], regnum - nccTable, data);
+ poly_wait(vd->poly, vd->regnames[regnum]);
+ if (chips & 2) ncc_table_write(&vd->tmu[0].ncc[0], regnum - nccTable, data);
+ if (chips & 4) ncc_table_write(&vd->tmu[1].ncc[0], regnum - nccTable, data);
break;
case nccTable+12:
@@ -2823,9 +2759,9 @@ static INT32 register_w(voodoo_state *v, offs_t offset, UINT32 data)
case nccTable+21:
case nccTable+22:
case nccTable+23:
- poly_wait(v->poly, v->regnames[regnum]);
- if (chips & 2) ncc_table_write(&v->tmu[0].ncc[1], regnum - (nccTable+12), data);
- if (chips & 4) ncc_table_write(&v->tmu[1].ncc[1], regnum - (nccTable+12), data);
+ poly_wait(vd->poly, vd->regnames[regnum]);
+ if (chips & 2) ncc_table_write(&vd->tmu[0].ncc[1], regnum - (nccTable+12), data);
+ if (chips & 4) ncc_table_write(&vd->tmu[1].ncc[1], regnum - (nccTable+12), data);
break;
/* fogTable entries are processed and expanded immediately */
@@ -2861,14 +2797,14 @@ static INT32 register_w(voodoo_state *v, offs_t offset, UINT32 data)
case fogTable+29:
case fogTable+30:
case fogTable+31:
- poly_wait(v->poly, v->regnames[regnum]);
+ poly_wait(vd->poly, vd->regnames[regnum]);
if (chips & 1)
{
int base = 2 * (regnum - fogTable);
- v->fbi.fogdelta[base + 0] = (data >> 0) & 0xff;
- v->fbi.fogblend[base + 0] = (data >> 8) & 0xff;
- v->fbi.fogdelta[base + 1] = (data >> 16) & 0xff;
- v->fbi.fogblend[base + 1] = (data >> 24) & 0xff;
+ vd->fbi.fogdelta[base + 0] = (data >> 0) & 0xff;
+ vd->fbi.fogblend[base + 0] = (data >> 8) & 0xff;
+ vd->fbi.fogdelta[base + 1] = (data >> 16) & 0xff;
+ vd->fbi.fogblend[base + 1] = (data >> 24) & 0xff;
}
break;
@@ -2880,22 +2816,22 @@ static INT32 register_w(voodoo_state *v, offs_t offset, UINT32 data)
case texBaseAddr_1:
case texBaseAddr_2:
case texBaseAddr_3_8:
- poly_wait(v->poly, v->regnames[regnum]);
+ poly_wait(vd->poly, vd->regnames[regnum]);
if (chips & 2)
{
- v->tmu[0].reg[regnum].u = data;
- v->tmu[0].regdirty = TRUE;
+ vd->tmu[0].reg[regnum].u = data;
+ vd->tmu[0].regdirty = TRUE;
}
if (chips & 4)
{
- v->tmu[1].reg[regnum].u = data;
- v->tmu[1].regdirty = TRUE;
+ vd->tmu[1].reg[regnum].u = data;
+ vd->tmu[1].regdirty = TRUE;
}
break;
case trexInit1:
/* send tmu config data to the frame buffer */
- v->send_config = (TREXINIT_SEND_TMU_CONFIG(data) > 0);
+ vd->send_config = (TREXINIT_SEND_TMU_CONFIG(data) > 0);
goto default_case;
/* these registers are referenced in the renderer; we must wait for pending work before changing */
@@ -2909,25 +2845,25 @@ static INT32 register_w(voodoo_state *v, offs_t offset, UINT32 data)
case color0:
case clipLowYHighY:
case clipLeftRight:
- poly_wait(v->poly, v->regnames[regnum]);
+ poly_wait(vd->poly, vd->regnames[regnum]);
/* fall through to default implementation */
/* by default, just feed the data to the chips */
default:
default_case:
- if (chips & 1) v->reg[0x000 + regnum].u = data;
- if (chips & 2) v->reg[0x100 + regnum].u = data;
- if (chips & 4) v->reg[0x200 + regnum].u = data;
- if (chips & 8) v->reg[0x300 + regnum].u = data;
+ if (chips & 1) vd->reg[0x000 + regnum].u = data;
+ if (chips & 2) vd->reg[0x100 + regnum].u = data;
+ if (chips & 4) vd->reg[0x200 + regnum].u = data;
+ if (chips & 8) vd->reg[0x300 + regnum].u = data;
break;
}
if (LOG_REGISTERS)
{
if (regnum < fvertexAx || regnum > fdWdY)
- v->device->logerror("VOODOO.%d.REG:%s(%d) write = %08X\n", v->index, (regnum < 0x384/4) ? v->regnames[regnum] : "oob", chips, origdata);
+ vd->device->logerror("VOODOO.%d.REG:%s(%d) write = %08X\n", vd->index, (regnum < 0x384/4) ? vd->regnames[regnum] : "oob", chips, origdata);
else
- v->device->logerror("VOODOO.%d.REG:%s(%d) write = %f\n", v->index, (regnum < 0x384/4) ? v->regnames[regnum] : "oob", chips, (double) u2f(origdata));
+ vd->device->logerror("VOODOO.%d.REG:%s(%d) write = %f\n", vd->index, (regnum < 0x384/4) ? vd->regnames[regnum] : "oob", chips, (double) u2f(origdata));
}
return cycles;
@@ -2940,25 +2876,25 @@ default_case:
* Voodoo LFB writes
*
*************************************/
-static INT32 lfb_direct_w(voodoo_state *v, offs_t offset, UINT32 data, UINT32 mem_mask)
-{
+INT32 voodoo_device::lfb_direct_w(voodoo_device *vd, offs_t offset, UINT32 data, UINT32 mem_mask)
+{
UINT16 *dest;
UINT32 destmax;
int x, y;
UINT32 bufoffs;
/* statistics */
- v->stats.lfb_writes++;
+ vd->stats.lfb_writes++;
/* byte swizzling */
- if (LFBMODE_BYTE_SWIZZLE_WRITES(v->reg[lfbMode].u))
+ if (LFBMODE_BYTE_SWIZZLE_WRITES(vd->reg[lfbMode].u))
{
data = FLIPENDIAN_INT32(data);
mem_mask = FLIPENDIAN_INT32(mem_mask);
}
/* word swapping */
- if (LFBMODE_WORD_SWAP_WRITES(v->reg[lfbMode].u))
+ if (LFBMODE_WORD_SWAP_WRITES(vd->reg[lfbMode].u))
{
data = (data << 16) | (data >> 16);
mem_mask = (mem_mask << 16) | (mem_mask >> 16);
@@ -2968,25 +2904,26 @@ static INT32 lfb_direct_w(voodoo_state *v, offs_t offset, UINT32 data, UINT32 me
// For direct lfb access just write the data
/* compute X,Y */
offset <<= 1;
- x = offset & ((1 << v->fbi.lfb_stride) - 1);
- y = (offset >> v->fbi.lfb_stride);
- dest = (UINT16 *)(v->fbi.ram + v->fbi.lfb_base*4);
- destmax = (v->fbi.mask + 1 - v->fbi.lfb_base*4) / 2;
- bufoffs = y * v->fbi.rowpixels + x;
+ x = offset & ((1 << vd->fbi.lfb_stride) - 1);
+ y = (offset >> vd->fbi.lfb_stride);
+ dest = (UINT16 *)(vd->fbi.ram + vd->fbi.lfb_base*4);
+ destmax = (vd->fbi.mask + 1 - vd->fbi.lfb_base*4) / 2;
+ bufoffs = y * vd->fbi.rowpixels + x;
if (bufoffs >= destmax) {
- v->device->logerror("lfb_direct_w: Buffer offset out of bounds x=%i y=%i offset=%08X bufoffs=%08X data=%08X\n", x, y, offset, (UINT32) bufoffs, data);
+ vd->device->logerror("lfb_direct_w: Buffer offset out of bounds x=%i y=%i offset=%08X bufoffs=%08X data=%08X\n", x, y, offset, (UINT32) bufoffs, data);
return 0;
}
if (ACCESSING_BITS_0_15)
dest[bufoffs + 0] = data&0xffff;
if (ACCESSING_BITS_16_31)
dest[bufoffs + 1] = data>>16;
- if (LOG_LFB) v->device->logerror("VOODOO.%d.LFB:write direct (%d,%d) = %08X & %08X\n", v->index, x, y, data, mem_mask);
+ if (LOG_LFB) vd->device->logerror("VOODOO.%d.LFB:write direct (%d,%d) = %08X & %08X\n", vd->index, x, y, data, mem_mask);
return 0;
}
-static INT32 lfb_w(voodoo_state *v, offs_t offset, UINT32 data, UINT32 mem_mask)
+INT32 voodoo_device::lfb_w(voodoo_device* vd, offs_t offset, UINT32 data, UINT32 mem_mask)
{
+
UINT16 *dest, *depth;
UINT32 destmax, depthmax;
int sr[2], sg[2], sb[2], sa[2], sw[2];
@@ -2994,28 +2931,28 @@ static INT32 lfb_w(voodoo_state *v, offs_t offset, UINT32 data, UINT32 mem_mask)
int pix, destbuf;
/* statistics */
- v->stats.lfb_writes++;
+ vd->stats.lfb_writes++;
/* byte swizzling */
- if (LFBMODE_BYTE_SWIZZLE_WRITES(v->reg[lfbMode].u))
+ if (LFBMODE_BYTE_SWIZZLE_WRITES(vd->reg[lfbMode].u))
{
data = FLIPENDIAN_INT32(data);
mem_mask = FLIPENDIAN_INT32(mem_mask);
}
/* word swapping */
- if (LFBMODE_WORD_SWAP_WRITES(v->reg[lfbMode].u))
+ if (LFBMODE_WORD_SWAP_WRITES(vd->reg[lfbMode].u))
{
data = (data << 16) | (data >> 16);
mem_mask = (mem_mask << 16) | (mem_mask >> 16);
}
/* extract default depth and alpha values */
- sw[0] = sw[1] = v->reg[zaColor].u & 0xffff;
- sa[0] = sa[1] = v->reg[zaColor].u >> 24;
+ sw[0] = sw[1] = vd->reg[zaColor].u & 0xffff;
+ sa[0] = sa[1] = vd->reg[zaColor].u >> 24;
/* first extract A,R,G,B from the data */
- switch (LFBMODE_WRITE_FORMAT(v->reg[lfbMode].u) + 16 * LFBMODE_RGBA_LANES(v->reg[lfbMode].u))
+ switch (LFBMODE_WRITE_FORMAT(vd->reg[lfbMode].u) + 16 * LFBMODE_RGBA_LANES(vd->reg[lfbMode].u))
{
case 16*0 + 0: /* ARGB, 16-bit RGB 5-6-5 */
case 16*2 + 0: /* RGBA, 16-bit RGB 5-6-5 */
@@ -3182,13 +3119,13 @@ static INT32 lfb_w(voodoo_state *v, offs_t offset, UINT32 data, UINT32 mem_mask)
break;
default: /* reserved */
- v->device->logerror("lfb_w: Unknown format\n");
+ vd->device->logerror("lfb_w: Unknown format\n");
return 0;
}
/* compute X,Y */
- x = offset & ((1 << v->fbi.lfb_stride) - 1);
- y = (offset >> v->fbi.lfb_stride) & 0x3ff;
+ x = offset & ((1 << vd->fbi.lfb_stride) - 1);
+ y = (offset >> vd->fbi.lfb_stride) & 0x3ff;
/* adjust the mask based on which half of the data is written */
if (!ACCESSING_BITS_0_15)
@@ -3197,47 +3134,47 @@ static INT32 lfb_w(voodoo_state *v, offs_t offset, UINT32 data, UINT32 mem_mask)
mask &= ~(0xf0 + LFB_DEPTH_PRESENT_MSW);
/* select the target buffer */
- destbuf = (v->type >= TYPE_VOODOO_BANSHEE) ? 1 : LFBMODE_WRITE_BUFFER_SELECT(v->reg[lfbMode].u);
+ destbuf = (vd->vd_type >= TYPE_VOODOO_BANSHEE) ? 1 : LFBMODE_WRITE_BUFFER_SELECT(vd->reg[lfbMode].u);
switch (destbuf)
{
case 0: /* front buffer */
- dest = (UINT16 *)(v->fbi.ram + v->fbi.rgboffs[v->fbi.frontbuf]);
- destmax = (v->fbi.mask + 1 - v->fbi.rgboffs[v->fbi.frontbuf]) / 2;
- v->fbi.video_changed = TRUE;
+ dest = (UINT16 *)(vd->fbi.ram + vd->fbi.rgboffs[vd->fbi.frontbuf]);
+ destmax = (vd->fbi.mask + 1 - vd->fbi.rgboffs[vd->fbi.frontbuf]) / 2;
+ vd->fbi.video_changed = TRUE;
break;
case 1: /* back buffer */
- dest = (UINT16 *)(v->fbi.ram + v->fbi.rgboffs[v->fbi.backbuf]);
- destmax = (v->fbi.mask + 1 - v->fbi.rgboffs[v->fbi.backbuf]) / 2;
+ dest = (UINT16 *)(vd->fbi.ram + vd->fbi.rgboffs[vd->fbi.backbuf]);
+ destmax = (vd->fbi.mask + 1 - vd->fbi.rgboffs[vd->fbi.backbuf]) / 2;
break;
default: /* reserved */
return 0;
}
- depth = (UINT16 *)(v->fbi.ram + v->fbi.auxoffs);
- depthmax = (v->fbi.mask + 1 - v->fbi.auxoffs) / 2;
+ depth = (UINT16 *)(vd->fbi.ram + vd->fbi.auxoffs);
+ depthmax = (vd->fbi.mask + 1 - vd->fbi.auxoffs) / 2;
/* simple case: no pipeline */
- if (!LFBMODE_ENABLE_PIXEL_PIPELINE(v->reg[lfbMode].u))
+ if (!LFBMODE_ENABLE_PIXEL_PIPELINE(vd->reg[lfbMode].u))
{
DECLARE_DITHER_POINTERS_NO_DITHER_VAR;
UINT32 bufoffs;
- if (LOG_LFB) v->device->logerror("VOODOO.%d.LFB:write raw mode %X (%d,%d) = %08X & %08X\n", v->index, LFBMODE_WRITE_FORMAT(v->reg[lfbMode].u), x, y, data, mem_mask);
+ if (LOG_LFB) vd->device->logerror("VOODOO.%d.LFB:write raw mode %X (%d,%d) = %08X & %08X\n", vd->index, LFBMODE_WRITE_FORMAT(vd->reg[lfbMode].u), x, y, data, mem_mask);
/* determine the screen Y */
scry = y;
- if (LFBMODE_Y_ORIGIN(v->reg[lfbMode].u))
- scry = (v->fbi.yorigin - y) & 0x3ff;
+ if (LFBMODE_Y_ORIGIN(vd->reg[lfbMode].u))
+ scry = (vd->fbi.yorigin - y) & 0x3ff;
/* advance pointers to the proper row */
- bufoffs = scry * v->fbi.rowpixels + x;
+ bufoffs = scry * vd->fbi.rowpixels + x;
/* compute dithering */
- COMPUTE_DITHER_POINTERS_NO_DITHER_VAR(v->reg[fbzMode].u, y);
+ COMPUTE_DITHER_POINTERS_NO_DITHER_VAR(vd->reg[fbzMode].u, y);
/* wait for any outstanding work to finish */
- poly_wait(v->poly, "LFB Write");
+ poly_wait(vd->poly, "LFB Write");
/* loop over up to two pixels */
for (pix = 0; mask; pix++)
@@ -3249,7 +3186,7 @@ static INT32 lfb_w(voodoo_state *v, offs_t offset, UINT32 data, UINT32 mem_mask)
if ((mask & LFB_RGB_PRESENT) && bufoffs < destmax)
{
/* apply dithering and write to the screen */
- APPLY_DITHER(v->reg[fbzMode].u, x, dither_lookup, sr[pix], sg[pix], sb[pix]);
+ APPLY_DITHER(vd->reg[fbzMode].u, x, dither_lookup, sr[pix], sg[pix], sb[pix]);
dest[bufoffs] = (sr[pix] << 11) | (sg[pix] << 5) | sb[pix];
}
@@ -3257,16 +3194,16 @@ static INT32 lfb_w(voodoo_state *v, offs_t offset, UINT32 data, UINT32 mem_mask)
if (depth && bufoffs < depthmax)
{
/* write to the alpha buffer */
- if ((mask & LFB_ALPHA_PRESENT) && FBZMODE_ENABLE_ALPHA_PLANES(v->reg[fbzMode].u))
+ if ((mask & LFB_ALPHA_PRESENT) && FBZMODE_ENABLE_ALPHA_PLANES(vd->reg[fbzMode].u))
depth[bufoffs] = sa[pix];
/* write to the depth buffer */
- if ((mask & (LFB_DEPTH_PRESENT | LFB_DEPTH_PRESENT_MSW)) && !FBZMODE_ENABLE_ALPHA_PLANES(v->reg[fbzMode].u))
+ if ((mask & (LFB_DEPTH_PRESENT | LFB_DEPTH_PRESENT_MSW)) && !FBZMODE_ENABLE_ALPHA_PLANES(vd->reg[fbzMode].u))
depth[bufoffs] = sw[pix];
}
/* track pixel writes to the frame buffer regardless of mask */
- v->reg[fbiPixelsOut].u++;
+ vd->reg[fbiPixelsOut].u++;
}
/* advance our pointers */
@@ -3281,20 +3218,20 @@ static INT32 lfb_w(voodoo_state *v, offs_t offset, UINT32 data, UINT32 mem_mask)
{
DECLARE_DITHER_POINTERS;
- if (LOG_LFB) v->device->logerror("VOODOO.%d.LFB:write pipelined mode %X (%d,%d) = %08X & %08X\n", v->index, LFBMODE_WRITE_FORMAT(v->reg[lfbMode].u), x, y, data, mem_mask);
+ if (LOG_LFB) vd->device->logerror("VOODOO.%d.LFB:write pipelined mode %X (%d,%d) = %08X & %08X\n", vd->index, LFBMODE_WRITE_FORMAT(vd->reg[lfbMode].u), x, y, data, mem_mask);
/* determine the screen Y */
scry = y;
- if (FBZMODE_Y_ORIGIN(v->reg[fbzMode].u))
- scry = (v->fbi.yorigin - y) & 0x3ff;
+ if (FBZMODE_Y_ORIGIN(vd->reg[fbzMode].u))
+ scry = (vd->fbi.yorigin - y) & 0x3ff;
/* advance pointers to the proper row */
- dest += scry * v->fbi.rowpixels;
+ dest += scry * vd->fbi.rowpixels;
if (depth)
- depth += scry * v->fbi.rowpixels;
+ depth += scry * vd->fbi.rowpixels;
/* compute dithering */
- COMPUTE_DITHER_POINTERS(v->reg[fbzMode].u, y);
+ COMPUTE_DITHER_POINTERS(vd->reg[fbzMode].u, y);
/* loop over up to two pixels */
for (pix = 0; mask; pix++)
@@ -3302,10 +3239,10 @@ static INT32 lfb_w(voodoo_state *v, offs_t offset, UINT32 data, UINT32 mem_mask)
/* make sure we care about this pixel */
if (mask & 0x0f)
{
- stats_block *stats = &v->fbi.lfb_stats;
+ stats_block *stats = &vd->fbi.lfb_stats;
INT64 iterw;
- if (LFBMODE_WRITE_W_SELECT(v->reg[lfbMode].u)) {
- iterw = (UINT32) v->reg[zaColor].u << 16;
+ if (LFBMODE_WRITE_W_SELECT(vd->reg[lfbMode].u)) {
+ iterw = (UINT32) vd->reg[zaColor].u << 16;
} else {
// The most significant fractional bits of 16.32 W are set to z
iterw = (UINT32) sw[pix] << 16;
@@ -3313,28 +3250,25 @@ static INT32 lfb_w(voodoo_state *v, offs_t offset, UINT32 data, UINT32 mem_mask)
INT32 iterz = sw[pix] << 12;
/* apply clipping */
- if (FBZMODE_ENABLE_CLIPPING(v->reg[fbzMode].u))
+ if (FBZMODE_ENABLE_CLIPPING(vd->reg[fbzMode].u))
{
- if (x < ((v->reg[clipLeftRight].u >> 16) & 0x3ff) ||
- x >= (v->reg[clipLeftRight].u & 0x3ff) ||
- scry < ((v->reg[clipLowYHighY].u >> 16) & 0x3ff) ||
- scry >= (v->reg[clipLowYHighY].u & 0x3ff))
+ if (x < ((vd->reg[clipLeftRight].u >> 16) & 0x3ff) ||
+ x >= (vd->reg[clipLeftRight].u & 0x3ff) ||
+ scry < ((vd->reg[clipLowYHighY].u >> 16) & 0x3ff) ||
+ scry >= (vd->reg[clipLowYHighY].u & 0x3ff))
{
stats->pixels_in++;
stats->clip_fail++;
goto nextpixel;
}
}
- #if USE_OLD_RASTER == 1
- rgb_union color;
- rgb_union iterargb = { 0 };
- #else
- rgbaint_t color, preFog;
- rgbaint_t iterargb(0);
- #endif
+
+ rgbaint_t color, preFog;
+ rgbaint_t iterargb(0);
+
/* pixel pipeline part 1 handles depth testing and stippling */
- //PIXEL_PIPELINE_BEGIN(v, stats, x, y, v->reg[fbzColorPath].u, v->reg[fbzMode].u, iterz, iterw);
+ //PIXEL_PIPELINE_BEGIN(v, stats, x, y, vd->reg[fbzColorPath].u, vd->reg[fbzMode].u, iterz, iterw);
// Start PIXEL_PIPE_BEGIN copy
//#define PIXEL_PIPELINE_BEGIN(VV, STATS, XX, YY, FBZCOLORPATH, FBZMODE, ITERZ, ITERW)
INT32 fogdepth, biasdepth;
@@ -3346,15 +3280,15 @@ static INT32 lfb_w(voodoo_state *v, offs_t offset, UINT32 data, UINT32 mem_mask)
/* note that for perf reasons, we assume the caller has done clipping */
/* handle stippling */
- if (FBZMODE_ENABLE_STIPPLE(v->reg[fbzMode].u))
+ if (FBZMODE_ENABLE_STIPPLE(vd->reg[fbzMode].u))
{
/* rotate mode */
- if (FBZMODE_STIPPLE_PATTERN(v->reg[fbzMode].u) == 0)
+ if (FBZMODE_STIPPLE_PATTERN(vd->reg[fbzMode].u) == 0)
{
- v->reg[stipple].u = (v->reg[stipple].u << 1) | (v->reg[stipple].u >> 31);
- if ((v->reg[stipple].u & 0x80000000) == 0)
+ vd->reg[stipple].u = (vd->reg[stipple].u << 1) | (vd->reg[stipple].u >> 31);
+ if ((vd->reg[stipple].u & 0x80000000) == 0)
{
- v->stats.total_stippled++;
+ vd->stats.total_stippled++;
goto skipdrawdepth;
}
}
@@ -3363,9 +3297,9 @@ static INT32 lfb_w(voodoo_state *v, offs_t offset, UINT32 data, UINT32 mem_mask)
else
{
int stipple_index = ((y & 3) << 3) | (~x & 7);
- if (((v->reg[stipple].u >> stipple_index) & 1) == 0)
+ if (((vd->reg[stipple].u >> stipple_index) & 1) == 0)
{
- v->stats.total_stippled++;
+ vd->stats.total_stippled++;
goto nextpixel;
}
}
@@ -3375,45 +3309,31 @@ static INT32 lfb_w(voodoo_state *v, offs_t offset, UINT32 data, UINT32 mem_mask)
// Depth testing value for lfb pipeline writes is directly from write data, no biasing is used
fogdepth = biasdepth = (UINT32) sw[pix];
- #if USE_OLD_RASTER == 1
- /* Perform depth testing */
- DEPTH_TEST(v, stats, x, v->reg[fbzMode].u);
-
- /* use the RGBA we stashed above */
- color.rgb.r = r = sr[pix];
- color.rgb.g = g = sg[pix];
- color.rgb.b = b = sb[pix];
- color.rgb.a = a = sa[pix];
-
- /* apply chroma key, alpha mask, and alpha testing */
- APPLY_CHROMAKEY(v, stats, v->reg[fbzMode].u, color);
- APPLY_ALPHAMASK(v, stats, v->reg[fbzMode].u, color.rgb.a);
- APPLY_ALPHATEST(v, stats, v->reg[alphaMode].u, color.rgb.a);
- #else
- /* Perform depth testing */
- if (!depthTest((UINT16) v->reg[zaColor].u, stats, depth[x], v->reg[fbzMode].u, biasdepth))
- goto nextpixel;
- /* use the RGBA we stashed above */
- color.set(sa[pix], sr[pix], sg[pix], sb[pix]);
+ /* Perform depth testing */
+ if (!depthTest((UINT16) vd->reg[zaColor].u, stats, depth[x], vd->reg[fbzMode].u, biasdepth))
+ goto nextpixel;
+
+ /* use the RGBA we stashed above */
+ color.set(sa[pix], sr[pix], sg[pix], sb[pix]);
+
+ /* handle chroma key */
+ if (!chromaKeyTest(vd, stats, vd->reg[fbzMode].u, color))
+ goto nextpixel;
+ /* handle alpha mask */
+ if (!alphaMaskTest(stats, vd->reg[fbzMode].u, color.get_a()))
+ goto nextpixel;
+ /* handle alpha test */
+ if (!alphaTest(vd, stats, vd->reg[alphaMode].u, color.get_a()))
+ goto nextpixel;
- /* handle chroma key */
- if (!chromaKeyTest(v, stats, v->reg[fbzMode].u, color))
- goto nextpixel;
- /* handle alpha mask */
- if (!alphaMaskTest(stats, v->reg[fbzMode].u, color.get_a()))
- goto nextpixel;
- /* handle alpha test */
- if (!alphaTest(v, stats, v->reg[alphaMode].u, color.get_a()))
- goto nextpixel;
- #endif
/* wait for any outstanding work to finish */
- poly_wait(v->poly, "LFB Write");
+ poly_wait(vd->poly, "LFB Write");
/* pixel pipeline part 2 handles color combine, fog, alpha, and final output */
- PIXEL_PIPELINE_END(v, stats, dither, dither4, dither_lookup, x, dest, depth,
- v->reg[fbzMode].u, v->reg[fbzColorPath].u, v->reg[alphaMode].u, v->reg[fogMode].u,
+ PIXEL_PIPELINE_END(vd, stats, dither, dither4, dither_lookup, x, dest, depth,
+ vd->reg[fbzMode].u, vd->reg[fbzColorPath].u, vd->reg[alphaMode].u, vd->reg[fogMode].u,
iterz, iterw, iterargb) {};
nextpixel:
/* advance our pointers */
@@ -3433,24 +3353,24 @@ nextpixel:
*
*************************************/
-static INT32 texture_w(voodoo_state *v, offs_t offset, UINT32 data)
+INT32 voodoo_device::texture_w(voodoo_device *vd, offs_t offset, UINT32 data)
{
int tmunum = (offset >> 19) & 0x03;
tmu_state *t;
/* statistics */
- v->stats.tex_writes++;
+ vd->stats.tex_writes++;
/* point to the right TMU */
- if (!(v->chipmask & (2 << tmunum)))
+ if (!(vd->chipmask & (2 << tmunum)))
return 0;
- t = &v->tmu[tmunum];
+ t = &vd->tmu[tmunum];
if (TEXLOD_TDIRECT_WRITE(t->reg[tLOD].u))
fatalerror("Texture direct write!\n");
/* wait for any outstanding work to finish */
- poly_wait(v->poly, "Texture write");
+ poly_wait(vd->poly, "Texture write");
/* update texture info if dirty */
if (t->regdirty)
@@ -3470,13 +3390,13 @@ static INT32 texture_w(voodoo_state *v, offs_t offset, UINT32 data)
UINT8 *dest;
/* extract info */
- if (v->type <= TYPE_VOODOO_2)
+ if (vd->vd_type <= TYPE_VOODOO_2)
{
lod = (offset >> 15) & 0x0f;
tt = (offset >> 7) & 0xff;
/* old code has a bit about how this is broken in gauntleg unless we always look at TMU0 */
- if (TEXMODE_SEQ_8_DOWNLD(v->tmu[0].reg/*t->reg*/[textureMode].u))
+ if (TEXMODE_SEQ_8_DOWNLD(vd->tmu[0].reg/*t->reg*/[textureMode].u))
ts = (offset << 2) & 0xfc;
else
ts = (offset << 1) & 0xfc;
@@ -3489,13 +3409,13 @@ static INT32 texture_w(voodoo_state *v, offs_t offset, UINT32 data)
tbaseaddr = t->lodoffset[lod];
tbaseaddr += tt * ((t->wmask >> lod) + 1) + ts;
- if (LOG_TEXTURE_RAM) v->device->logerror("Texture 8-bit w: lod=%d s=%d t=%d data=%08X\n", lod, ts, tt, data);
+ if (LOG_TEXTURE_RAM) vd->device->logerror("Texture 8-bit w: lod=%d s=%d t=%d data=%08X\n", lod, ts, tt, data);
}
else
{
tbaseaddr = t->lodoffset[0] + offset*4;
- if (LOG_TEXTURE_RAM) v->device->logerror("Texture 8-bit w: offset=%X data=%08X\n", offset*4, data);
+ if (LOG_TEXTURE_RAM) vd->device->logerror("Texture 8-bit w: offset=%X data=%08X\n", offset*4, data);
}
/* write the four bytes in little-endian order */
@@ -3515,7 +3435,7 @@ static INT32 texture_w(voodoo_state *v, offs_t offset, UINT32 data)
UINT16 *dest;
/* extract info */
- if (v->type <= TYPE_VOODOO_2)
+ if (vd->vd_type <= TYPE_VOODOO_2)
{
lod = (offset >> 15) & 0x0f;
tt = (offset >> 7) & 0xff;
@@ -3529,13 +3449,13 @@ static INT32 texture_w(voodoo_state *v, offs_t offset, UINT32 data)
tbaseaddr = t->lodoffset[lod];
tbaseaddr += 2 * (tt * ((t->wmask >> lod) + 1) + ts);
- if (LOG_TEXTURE_RAM) v->device->logerror("Texture 16-bit w: lod=%d s=%d t=%d data=%08X\n", lod, ts, tt, data);
+ if (LOG_TEXTURE_RAM) vd->device->logerror("Texture 16-bit w: lod=%d s=%d t=%d data=%08X\n", lod, ts, tt, data);
}
else
{
tbaseaddr = t->lodoffset[0] + offset*4;
- if (LOG_TEXTURE_RAM) v->device->logerror("Texture 16-bit w: offset=%X data=%08X\n", offset*4, data);
+ if (LOG_TEXTURE_RAM) vd->device->logerror("Texture 16-bit w: offset=%X data=%08X\n", offset*4, data);
}
/* write the two words in little-endian order */
@@ -3557,7 +3477,7 @@ static INT32 texture_w(voodoo_state *v, offs_t offset, UINT32 data)
*
*************************************/
-static void flush_fifos(voodoo_state *v, attotime current_time)
+void voodoo_device::flush_fifos(voodoo_device *vd, attotime current_time)
{
static UINT8 in_flush;
@@ -3566,14 +3486,14 @@ static void flush_fifos(voodoo_state *v, attotime current_time)
return;
in_flush = TRUE;
- if (!v->pci.op_pending) fatalerror("flush_fifos called with no pending operation\n");
+ if (!vd->pci.op_pending) fatalerror("flush_fifos called with no pending operation\n");
- if (LOG_FIFO_VERBOSE) v->device->logerror("VOODOO.%d.FIFO:flush_fifos start -- pending=%d.%08X%08X cur=%d.%08X%08X\n", v->index,
- v->pci.op_end_time.seconds(), (UINT32)(v->pci.op_end_time.attoseconds() >> 32), (UINT32)v->pci.op_end_time.attoseconds(),
+ if (LOG_FIFO_VERBOSE) vd->device->logerror("VOODOO.%d.FIFO:flush_fifos start -- pending=%d.%08X%08X cur=%d.%08X%08X\n", vd->index,
+ vd->pci.op_end_time.seconds(), (UINT32)(vd->pci.op_end_time.attoseconds() >> 32), (UINT32)vd->pci.op_end_time.attoseconds(),
current_time.seconds(), (UINT32)(current_time.attoseconds() >> 32), (UINT32)current_time.attoseconds());
/* loop while we still have cycles to burn */
- while (v->pci.op_end_time <= current_time)
+ while (vd->pci.op_end_time <= current_time)
{
INT32 extra_cycles = 0;
INT32 cycles;
@@ -3586,27 +3506,27 @@ static void flush_fifos(voodoo_state *v, attotime current_time)
UINT32 data;
/* we might be in CMDFIFO mode */
- if (v->fbi.cmdfifo[0].enable)
+ if (vd->fbi.cmdfifo[0].enable)
{
/* if we don't have anything to execute, we're done for now */
- cycles = cmdfifo_execute_if_ready(v, &v->fbi.cmdfifo[0]);
+ cycles = cmdfifo_execute_if_ready(vd, &vd->fbi.cmdfifo[0]);
if (cycles == -1)
{
- v->pci.op_pending = FALSE;
+ vd->pci.op_pending = FALSE;
in_flush = FALSE;
- if (LOG_FIFO_VERBOSE) v->device->logerror("VOODOO.%d.FIFO:flush_fifos end -- CMDFIFO empty\n", v->index);
+ if (LOG_FIFO_VERBOSE) vd->device->logerror("VOODOO.%d.FIFO:flush_fifos end -- CMDFIFO empty\n", vd->index);
return;
}
}
- else if (v->fbi.cmdfifo[1].enable)
+ else if (vd->fbi.cmdfifo[1].enable)
{
/* if we don't have anything to execute, we're done for now */
- cycles = cmdfifo_execute_if_ready(v, &v->fbi.cmdfifo[1]);
+ cycles = cmdfifo_execute_if_ready(vd, &vd->fbi.cmdfifo[1]);
if (cycles == -1)
{
- v->pci.op_pending = FALSE;
+ vd->pci.op_pending = FALSE;
in_flush = FALSE;
- if (LOG_FIFO_VERBOSE) v->device->logerror("VOODOO.%d.FIFO:flush_fifos end -- CMDFIFO empty\n", v->index);
+ if (LOG_FIFO_VERBOSE) vd->device->logerror("VOODOO.%d.FIFO:flush_fifos end -- CMDFIFO empty\n", vd->index);
return;
}
}
@@ -3615,15 +3535,15 @@ static void flush_fifos(voodoo_state *v, attotime current_time)
else
{
/* choose which FIFO to read from */
- if (!fifo_empty(&v->fbi.fifo))
- fifo = &v->fbi.fifo;
- else if (!fifo_empty(&v->pci.fifo))
- fifo = &v->pci.fifo;
+ if (!fifo_empty(&vd->fbi.fifo))
+ fifo = &vd->fbi.fifo;
+ else if (!fifo_empty(&vd->pci.fifo))
+ fifo = &vd->pci.fifo;
else
{
- v->pci.op_pending = FALSE;
+ vd->pci.op_pending = FALSE;
in_flush = FALSE;
- if (LOG_FIFO_VERBOSE) v->device->logerror("VOODOO.%d.FIFO:flush_fifos end -- FIFOs empty\n", v->index);
+ if (LOG_FIFO_VERBOSE) vd->device->logerror("VOODOO.%d.FIFO:flush_fifos end -- FIFOs empty\n", vd->index);
return;
}
@@ -3633,9 +3553,9 @@ static void flush_fifos(voodoo_state *v, attotime current_time)
/* target the appropriate location */
if ((address & (0xc00000/4)) == 0)
- cycles = register_w(v, address, data);
+ cycles = register_w(vd, address, data);
else if (address & (0x800000/4))
- cycles = texture_w(v, address, data);
+ cycles = texture_w(vd, address, data);
else
{
UINT32 mem_mask = 0xffffffff;
@@ -3647,7 +3567,7 @@ static void flush_fifos(voodoo_state *v, attotime current_time)
mem_mask &= 0xffff0000;
address &= 0xffffff;
- cycles = lfb_w(v, address, data, mem_mask);
+ cycles = lfb_w(vd, address, data, mem_mask);
}
}
@@ -3664,15 +3584,15 @@ static void flush_fifos(voodoo_state *v, attotime current_time)
cycles += extra_cycles;
/* account for those cycles */
- v->pci.op_end_time += attotime(0, (attoseconds_t)cycles * v->attoseconds_per_cycle);
+ vd->pci.op_end_time += attotime(0, (attoseconds_t)cycles * vd->attoseconds_per_cycle);
- if (LOG_FIFO_VERBOSE) v->device->logerror("VOODOO.%d.FIFO:update -- pending=%d.%08X%08X cur=%d.%08X%08X\n", v->index,
- v->pci.op_end_time.seconds(), (UINT32)(v->pci.op_end_time.attoseconds() >> 32), (UINT32)v->pci.op_end_time.attoseconds(),
+ if (LOG_FIFO_VERBOSE) vd->device->logerror("VOODOO.%d.FIFO:update -- pending=%d.%08X%08X cur=%d.%08X%08X\n", vd->index,
+ vd->pci.op_end_time.seconds(), (UINT32)(vd->pci.op_end_time.attoseconds() >> 32), (UINT32)vd->pci.op_end_time.attoseconds(),
current_time.seconds(), (UINT32)(current_time.attoseconds() >> 32), (UINT32)current_time.attoseconds());
}
- if (LOG_FIFO_VERBOSE) v->device->logerror("VOODOO.%d.FIFO:flush_fifos end -- pending command complete at %d.%08X%08X\n", v->index,
- v->pci.op_end_time.seconds(), (UINT32)(v->pci.op_end_time.attoseconds() >> 32), (UINT32)v->pci.op_end_time.attoseconds());
+ if (LOG_FIFO_VERBOSE) vd->device->logerror("VOODOO.%d.FIFO:flush_fifos end -- pending command complete at %d.%08X%08X\n", vd->index,
+ vd->pci.op_end_time.seconds(), (UINT32)(vd->pci.op_end_time.attoseconds() >> 32), (UINT32)vd->pci.op_end_time.attoseconds());
in_flush = FALSE;
}
@@ -3688,18 +3608,17 @@ static void flush_fifos(voodoo_state *v, attotime current_time)
WRITE32_MEMBER( voodoo_device::voodoo_w )
{
- voodoo_state *v = get_safe_token(this);
int stall = FALSE;
g_profiler.start(PROFILER_USER1);
/* should not be getting accesses while stalled */
- if (v->pci.stall_state != NOT_STALLED)
+ if (pci.stall_state != NOT_STALLED)
logerror("voodoo_w while stalled!\n");
/* if we have something pending, flush the FIFOs up to the current time */
- if (v->pci.op_pending)
- flush_fifos(v, machine().time());
+ if (pci.op_pending)
+ flush_fifos(this, machine().time());
/* special handling for registers */
if ((offset & 0xc00000/4) == 0)
@@ -3707,10 +3626,10 @@ WRITE32_MEMBER( voodoo_device::voodoo_w )
UINT8 access;
/* some special stuff for Voodoo 2 */
- if (v->type >= TYPE_VOODOO_2)
+ if (vd_type >= TYPE_VOODOO_2)
{
/* we might be in CMDFIFO mode */
- if (FBIINIT7_CMDFIFO_ENABLE(v->reg[fbiInit7].u))
+ if (FBIINIT7_CMDFIFO_ENABLE(reg[fbiInit7].u))
{
/* if bit 21 is set, we're writing to the FIFO */
if (offset & 0x200000/4)
@@ -3718,20 +3637,20 @@ WRITE32_MEMBER( voodoo_device::voodoo_w )
/* check for byte swizzling (bit 18) */
if (offset & 0x40000/4)
data = FLIPENDIAN_INT32(data);
- cmdfifo_w(v, &v->fbi.cmdfifo[0], offset & 0xffff, data);
+ cmdfifo_w(this, &fbi.cmdfifo[0], offset & 0xffff, data);
g_profiler.stop();
return;
}
/* we're a register access; but only certain ones are allowed */
- access = v->regaccess[offset & 0xff];
+ access = regaccess[offset & 0xff];
if (!(access & REGISTER_WRITETHRU))
{
/* track swap buffers regardless */
if ((offset & 0xff) == swapbufferCMD)
- v->fbi.swaps_pending++;
+ fbi.swaps_pending++;
- logerror("Ignoring write to %s in CMDFIFO mode\n", v->regnames[offset & 0xff]);
+ logerror("Ignoring write to %s in CMDFIFO mode\n", regnames[offset & 0xff]);
g_profiler.stop();
return;
}
@@ -3744,7 +3663,7 @@ WRITE32_MEMBER( voodoo_device::voodoo_w )
/* check the access behavior; note that the table works even if the */
/* alternate mapping is used */
- access = v->regaccess[offset & 0xff];
+ access = regaccess[offset & 0xff];
/* ignore if writes aren't allowed */
if (!(access & REGISTER_WRITE))
@@ -3759,31 +3678,31 @@ WRITE32_MEMBER( voodoo_device::voodoo_w )
/* track swap buffers */
if ((offset & 0xff) == swapbufferCMD)
- v->fbi.swaps_pending++;
+ fbi.swaps_pending++;
}
/* if we don't have anything pending, or if FIFOs are disabled, just execute */
- if (!v->pci.op_pending || !INITEN_ENABLE_PCI_FIFO(v->pci.init_enable))
+ if (!pci.op_pending || !INITEN_ENABLE_PCI_FIFO(pci.init_enable))
{
int cycles;
/* target the appropriate location */
if ((offset & (0xc00000/4)) == 0)
- cycles = register_w(v, offset, data);
+ cycles = register_w(this, offset, data);
else if (offset & (0x800000/4))
- cycles = texture_w(v, offset, data);
+ cycles = texture_w(this, offset, data);
else
- cycles = lfb_w(v, offset, data, mem_mask);
+ cycles = lfb_w(this, offset, data, mem_mask);
/* if we ended up with cycles, mark the operation pending */
if (cycles)
{
- v->pci.op_pending = TRUE;
- v->pci.op_end_time = machine().time() + attotime(0, (attoseconds_t)cycles * v->attoseconds_per_cycle);
+ pci.op_pending = TRUE;
+ pci.op_end_time = machine().time() + attotime(0, (attoseconds_t)cycles * attoseconds_per_cycle);
- if (LOG_FIFO_VERBOSE) logerror("VOODOO.%d.FIFO:direct write start at %d.%08X%08X end at %d.%08X%08X\n", v->index,
+ if (LOG_FIFO_VERBOSE) logerror("VOODOO.%d.FIFO:direct write start at %d.%08X%08X end at %d.%08X%08X\n", index,
machine().time().seconds(), (UINT32)(machine().time().attoseconds() >> 32), (UINT32)machine().time().attoseconds(),
- v->pci.op_end_time.seconds(), (UINT32)(v->pci.op_end_time.attoseconds() >> 32), (UINT32)v->pci.op_end_time.attoseconds());
+ pci.op_end_time.seconds(), (UINT32)(pci.op_end_time.attoseconds() >> 32), (UINT32)pci.op_end_time.attoseconds());
}
g_profiler.stop();
return;
@@ -3799,56 +3718,56 @@ WRITE32_MEMBER( voodoo_device::voodoo_w )
}
/* if there's room in the PCI FIFO, add there */
- if (LOG_FIFO_VERBOSE) logerror("VOODOO.%d.FIFO:voodoo_w adding to PCI FIFO @ %08X=%08X\n", v->index, offset, data);
- if (!fifo_full(&v->pci.fifo))
+ if (LOG_FIFO_VERBOSE) logerror("VOODOO.%d.FIFO:voodoo_w adding to PCI FIFO @ %08X=%08X\n", this, offset, data);
+ if (!fifo_full(&pci.fifo))
{
- fifo_add(&v->pci.fifo, offset);
- fifo_add(&v->pci.fifo, data);
+ fifo_add(&pci.fifo, offset);
+ fifo_add(&pci.fifo, data);
}
else
fatalerror("PCI FIFO full\n");
/* handle flushing to the memory FIFO */
- if (FBIINIT0_ENABLE_MEMORY_FIFO(v->reg[fbiInit0].u) &&
- fifo_space(&v->pci.fifo) <= 2 * FBIINIT4_MEMORY_FIFO_LWM(v->reg[fbiInit4].u))
+ if (FBIINIT0_ENABLE_MEMORY_FIFO(reg[fbiInit0].u) &&
+ fifo_space(&pci.fifo) <= 2 * FBIINIT4_MEMORY_FIFO_LWM(reg[fbiInit4].u))
{
UINT8 valid[4];
/* determine which types of data can go to the memory FIFO */
valid[0] = TRUE;
- valid[1] = FBIINIT0_LFB_TO_MEMORY_FIFO(v->reg[fbiInit0].u);
- valid[2] = valid[3] = FBIINIT0_TEXMEM_TO_MEMORY_FIFO(v->reg[fbiInit0].u);
+ valid[1] = FBIINIT0_LFB_TO_MEMORY_FIFO(reg[fbiInit0].u);
+ valid[2] = valid[3] = FBIINIT0_TEXMEM_TO_MEMORY_FIFO(reg[fbiInit0].u);
/* flush everything we can */
- if (LOG_FIFO_VERBOSE) logerror("VOODOO.%d.FIFO:voodoo_w moving PCI FIFO to memory FIFO\n", v->index);
- while (!fifo_empty(&v->pci.fifo) && valid[(fifo_peek(&v->pci.fifo) >> 22) & 3])
+ if (LOG_FIFO_VERBOSE) logerror("VOODOO.%d.FIFO:voodoo_w moving PCI FIFO to memory FIFO\n", index);
+ while (!fifo_empty(&pci.fifo) && valid[(fifo_peek(&pci.fifo) >> 22) & 3])
{
- fifo_add(&v->fbi.fifo, fifo_remove(&v->pci.fifo));
- fifo_add(&v->fbi.fifo, fifo_remove(&v->pci.fifo));
+ fifo_add(&fbi.fifo, fifo_remove(&pci.fifo));
+ fifo_add(&fbi.fifo, fifo_remove(&pci.fifo));
}
/* if we're above the HWM as a result, stall */
- if (FBIINIT0_STALL_PCIE_FOR_HWM(v->reg[fbiInit0].u) &&
- fifo_items(&v->fbi.fifo) >= 2 * 32 * FBIINIT0_MEMORY_FIFO_HWM(v->reg[fbiInit0].u))
+ if (FBIINIT0_STALL_PCIE_FOR_HWM(reg[fbiInit0].u) &&
+ fifo_items(&fbi.fifo) >= 2 * 32 * FBIINIT0_MEMORY_FIFO_HWM(reg[fbiInit0].u))
{
- if (LOG_FIFO) logerror("VOODOO.%d.FIFO:voodoo_w hit memory FIFO HWM -- stalling\n", v->index);
- stall_cpu(v, STALLED_UNTIL_FIFO_LWM, machine().time());
+ if (LOG_FIFO) logerror("VOODOO.%d.FIFO:voodoo_w hit memory FIFO HWM -- stalling\n", index);
+ stall_cpu(this, STALLED_UNTIL_FIFO_LWM, machine().time());
}
}
/* if we're at the LWM for the PCI FIFO, stall */
- if (FBIINIT0_STALL_PCIE_FOR_HWM(v->reg[fbiInit0].u) &&
- fifo_space(&v->pci.fifo) <= 2 * FBIINIT0_PCI_FIFO_LWM(v->reg[fbiInit0].u))
+ if (FBIINIT0_STALL_PCIE_FOR_HWM(reg[fbiInit0].u) &&
+ fifo_space(&pci.fifo) <= 2 * FBIINIT0_PCI_FIFO_LWM(reg[fbiInit0].u))
{
- if (LOG_FIFO) logerror("VOODOO.%d.FIFO:voodoo_w hit PCI FIFO free LWM -- stalling\n", v->index);
- stall_cpu(v, STALLED_UNTIL_FIFO_LWM, machine().time());
+ if (LOG_FIFO) logerror("VOODOO.%d.FIFO:voodoo_w hit PCI FIFO free LWM -- stalling\n", index);
+ stall_cpu(this, STALLED_UNTIL_FIFO_LWM, machine().time());
}
/* if we weren't ready, and this is a non-FIFO access, stall until the FIFOs are clear */
if (stall)
{
- if (LOG_FIFO_VERBOSE) logerror("VOODOO.%d.FIFO:voodoo_w wrote non-FIFO register -- stalling until clear\n", v->index);
- stall_cpu(v, STALLED_UNTIL_FIFO_EMPTY, machine().time());
+ if (LOG_FIFO_VERBOSE) logerror("VOODOO.%d.FIFO:voodoo_w wrote non-FIFO register -- stalling until clear\n", index);
+ stall_cpu(this, STALLED_UNTIL_FIFO_EMPTY, machine().time());
}
g_profiler.stop();
@@ -3862,70 +3781,71 @@ WRITE32_MEMBER( voodoo_device::voodoo_w )
*
*************************************/
-static UINT32 register_r(voodoo_state *v, offs_t offset)
+static UINT32 register_r(voodoo_device *vd, offs_t offset)
{
+
int regnum = offset & 0xff;
UINT32 result;
/* statistics */
- v->stats.reg_reads++;
+ vd->stats.reg_reads++;
/* first make sure this register is readable */
- if (!(v->regaccess[regnum] & REGISTER_READ))
+ if (!(vd->regaccess[regnum] & REGISTER_READ))
{
- v->device->logerror("VOODOO.%d.ERROR:Invalid attempt to read %s\n", v->index, regnum < 225 ? v->regnames[regnum] : "unknown register");
+ vd->device->logerror("VOODOO.%d.ERROR:Invalid attempt to read %s\n", vd->index, regnum < 225 ? vd->regnames[regnum] : "unknown register");
return 0xffffffff;
}
/* default result is the FBI register value */
- result = v->reg[regnum].u;
+ result = vd->reg[regnum].u;
/* some registers are dynamic; compute them */
switch (regnum)
{
- case status:
+ case vdstatus:
/* start with a blank slate */
result = 0;
/* bits 5:0 are the PCI FIFO free space */
- if (fifo_empty(&v->pci.fifo))
+ if (fifo_empty(&vd->pci.fifo))
result |= 0x3f << 0;
else
{
- int temp = fifo_space(&v->pci.fifo)/2;
+ int temp = fifo_space(&vd->pci.fifo)/2;
if (temp > 0x3f)
temp = 0x3f;
result |= temp << 0;
}
/* bit 6 is the vertical retrace */
- result |= v->fbi.vblank << 6;
+ result |= vd->fbi.vblank << 6;
/* bit 7 is FBI graphics engine busy */
- if (v->pci.op_pending)
+ if (vd->pci.op_pending)
result |= 1 << 7;
/* bit 8 is TREX busy */
- if (v->pci.op_pending)
+ if (vd->pci.op_pending)
result |= 1 << 8;
/* bit 9 is overall busy */
- if (v->pci.op_pending)
+ if (vd->pci.op_pending)
result |= 1 << 9;
/* Banshee is different starting here */
- if (v->type < TYPE_VOODOO_BANSHEE)
+ if (vd->vd_type < TYPE_VOODOO_BANSHEE)
{
/* bits 11:10 specifies which buffer is visible */
- result |= v->fbi.frontbuf << 10;
+ result |= vd->fbi.frontbuf << 10;
/* bits 27:12 indicate memory FIFO freespace */
- if (!FBIINIT0_ENABLE_MEMORY_FIFO(v->reg[fbiInit0].u) || fifo_empty(&v->fbi.fifo))
+ if (!FBIINIT0_ENABLE_MEMORY_FIFO(vd->reg[fbiInit0].u) || fifo_empty(&vd->fbi.fifo))
result |= 0xffff << 12;
else
{
- int temp = fifo_space(&v->fbi.fifo)/2;
+ int temp = fifo_space(&vd->fbi.fifo)/2;
if (temp > 0xffff)
temp = 0xffff;
result |= temp << 12;
@@ -3936,38 +3856,38 @@ static UINT32 register_r(voodoo_state *v, offs_t offset)
/* bit 10 is 2D busy */
/* bit 11 is cmd FIFO 0 busy */
- if (v->fbi.cmdfifo[0].enable && v->fbi.cmdfifo[0].depth > 0)
+ if (vd->fbi.cmdfifo[0].enable && vd->fbi.cmdfifo[0].depth > 0)
result |= 1 << 11;
/* bit 12 is cmd FIFO 1 busy */
- if (v->fbi.cmdfifo[1].enable && v->fbi.cmdfifo[1].depth > 0)
+ if (vd->fbi.cmdfifo[1].enable && vd->fbi.cmdfifo[1].depth > 0)
result |= 1 << 12;
}
/* bits 30:28 are the number of pending swaps */
- if (v->fbi.swaps_pending > 7)
+ if (vd->fbi.swaps_pending > 7)
result |= 7 << 28;
else
- result |= v->fbi.swaps_pending << 28;
+ result |= vd->fbi.swaps_pending << 28;
/* bit 31 is not used */
/* eat some cycles since people like polling here */
- if (EAT_CYCLES) v->cpu->execute().eat_cycles(1000);
+ if (EAT_CYCLES) vd->cpu->execute().eat_cycles(1000);
break;
/* bit 2 of the initEnable register maps this to dacRead */
case fbiInit2:
- if (INITEN_REMAP_INIT_TO_DAC(v->pci.init_enable))
- result = v->dac.read_result;
+ if (INITEN_REMAP_INIT_TO_DAC(vd->pci.init_enable))
+ result = vd->dac.read_result;
break;
/* return the current scanline for now */
case vRetrace:
/* eat some cycles since people like polling here */
- if (EAT_CYCLES) v->cpu->execute().eat_cycles(10);
- result = v->screen->vpos();
+ if (EAT_CYCLES) vd->cpu->execute().eat_cycles(10);
+ result = vd->screen->vpos();
break;
/* reserved area in the TMU read by the Vegas startup sequence */
@@ -3978,26 +3898,26 @@ static UINT32 register_r(voodoo_state *v, offs_t offset)
/* cmdFifo -- Voodoo2 only */
case cmdFifoRdPtr:
- result = v->fbi.cmdfifo[0].rdptr;
+ result = vd->fbi.cmdfifo[0].rdptr;
/* eat some cycles since people like polling here */
- if (EAT_CYCLES) v->cpu->execute().eat_cycles(1000);
+ if (EAT_CYCLES) vd->cpu->execute().eat_cycles(1000);
break;
case cmdFifoAMin:
- result = v->fbi.cmdfifo[0].amin;
+ result = vd->fbi.cmdfifo[0].amin;
break;
case cmdFifoAMax:
- result = v->fbi.cmdfifo[0].amax;
+ result = vd->fbi.cmdfifo[0].amax;
break;
case cmdFifoDepth:
- result = v->fbi.cmdfifo[0].depth;
+ result = vd->fbi.cmdfifo[0].depth;
break;
case cmdFifoHoles:
- result = v->fbi.cmdfifo[0].holes;
+ result = vd->fbi.cmdfifo[0].holes;
break;
/* all counters are 24-bit only */
@@ -4006,9 +3926,9 @@ static UINT32 register_r(voodoo_state *v, offs_t offset)
case fbiZfuncFail:
case fbiAfuncFail:
case fbiPixelsOut:
- update_statistics(v, TRUE);
+ update_statistics(vd, TRUE);
case fbiTrianglesOut:
- result = v->reg[regnum].u & 0xffffff;
+ result = vd->reg[regnum].u & 0xffffff;
break;
}
@@ -4017,19 +3937,19 @@ static UINT32 register_r(voodoo_state *v, offs_t offset)
int logit = TRUE;
/* don't log multiple identical status reads from the same address */
- if (regnum == status)
+ if (regnum == vdstatus)
{
- offs_t pc = v->cpu->safe_pc();
- if (pc == v->last_status_pc && result == v->last_status_value)
+ offs_t pc = vd->cpu->safe_pc();
+ if (pc == vd->last_status_pc && result == vd->last_status_value)
logit = FALSE;
- v->last_status_pc = pc;
- v->last_status_value = result;
+ vd->last_status_pc = pc;
+ vd->last_status_value = result;
}
if (regnum == cmdFifoRdPtr)
logit = FALSE;
if (logit)
- v->device->logerror("VOODOO.%d.REG:%s read = %08X\n", v->index, v->regnames[regnum], result);
+ vd->device->logerror("VOODOO.%d.REG:%s read = %08X\n", vd->index, vd->regnames[regnum], result);
}
return result;
@@ -4043,7 +3963,7 @@ static UINT32 register_r(voodoo_state *v, offs_t offset)
*
*************************************/
-static UINT32 lfb_r(voodoo_state *v, offs_t offset, bool lfb_3d)
+static UINT32 lfb_r(voodoo_device *vd, offs_t offset, bool lfb_3d)
{
UINT16 *buffer;
UINT32 bufmax;
@@ -4052,34 +3972,34 @@ static UINT32 lfb_r(voodoo_state *v, offs_t offset, bool lfb_3d)
int x, y, scry, destbuf;
/* statistics */
- v->stats.lfb_reads++;
+ vd->stats.lfb_reads++;
/* compute X,Y */
offset <<= 1;
- x = offset & ((1 << v->fbi.lfb_stride) - 1);
- y = (offset >> v->fbi.lfb_stride);
+ x = offset & ((1 << vd->fbi.lfb_stride) - 1);
+ y = (offset >> vd->fbi.lfb_stride);
/* select the target buffer */
if (lfb_3d) {
y &= 0x3ff;
- destbuf = (v->type >= TYPE_VOODOO_BANSHEE) ? 1 : LFBMODE_READ_BUFFER_SELECT(v->reg[lfbMode].u);
+ destbuf = (vd->vd_type >= TYPE_VOODOO_BANSHEE) ? 1 : LFBMODE_READ_BUFFER_SELECT(vd->reg[lfbMode].u);
switch (destbuf)
{
case 0: /* front buffer */
- buffer = (UINT16 *)(v->fbi.ram + v->fbi.rgboffs[v->fbi.frontbuf]);
- bufmax = (v->fbi.mask + 1 - v->fbi.rgboffs[v->fbi.frontbuf]) / 2;
+ buffer = (UINT16 *)(vd->fbi.ram + vd->fbi.rgboffs[vd->fbi.frontbuf]);
+ bufmax = (vd->fbi.mask + 1 - vd->fbi.rgboffs[vd->fbi.frontbuf]) / 2;
break;
case 1: /* back buffer */
- buffer = (UINT16 *)(v->fbi.ram + v->fbi.rgboffs[v->fbi.backbuf]);
- bufmax = (v->fbi.mask + 1 - v->fbi.rgboffs[v->fbi.backbuf]) / 2;
+ buffer = (UINT16 *)(vd->fbi.ram + vd->fbi.rgboffs[vd->fbi.backbuf]);
+ bufmax = (vd->fbi.mask + 1 - vd->fbi.rgboffs[vd->fbi.backbuf]) / 2;
break;
case 2: /* aux buffer */
- if (v->fbi.auxoffs == ~0)
+ if (vd->fbi.auxoffs == ~0)
return 0xffffffff;
- buffer = (UINT16 *)(v->fbi.ram + v->fbi.auxoffs);
- bufmax = (v->fbi.mask + 1 - v->fbi.auxoffs) / 2;
+ buffer = (UINT16 *)(vd->fbi.ram + vd->fbi.auxoffs);
+ bufmax = (vd->fbi.mask + 1 - vd->fbi.auxoffs) / 2;
break;
default: /* reserved */
@@ -4088,37 +4008,37 @@ static UINT32 lfb_r(voodoo_state *v, offs_t offset, bool lfb_3d)
/* determine the screen Y */
scry = y;
- if (LFBMODE_Y_ORIGIN(v->reg[lfbMode].u))
- scry = (v->fbi.yorigin - y) & 0x3ff;
+ if (LFBMODE_Y_ORIGIN(vd->reg[lfbMode].u))
+ scry = (vd->fbi.yorigin - y) & 0x3ff;
} else {
// Direct lfb access
- buffer = (UINT16 *)(v->fbi.ram + v->fbi.lfb_base*4);
- bufmax = (v->fbi.mask + 1 - v->fbi.lfb_base*4) / 2;
+ buffer = (UINT16 *)(vd->fbi.ram + vd->fbi.lfb_base*4);
+ bufmax = (vd->fbi.mask + 1 - vd->fbi.lfb_base*4) / 2;
scry = y;
}
/* advance pointers to the proper row */
- bufoffs = scry * v->fbi.rowpixels + x;
+ bufoffs = scry * vd->fbi.rowpixels + x;
if (bufoffs >= bufmax) {
- v->device->logerror("LFB_R: Buffer offset out of bounds x=%i y=%i lfb_3d=%i offset=%08X bufoffs=%08X\n", x, y, lfb_3d, offset, (UINT32) bufoffs);
+ vd->device->logerror("LFB_R: Buffer offset out of bounds x=%i y=%i lfb_3d=%i offset=%08X bufoffs=%08X\n", x, y, lfb_3d, offset, (UINT32) bufoffs);
return 0xffffffff;
}
/* wait for any outstanding work to finish */
- poly_wait(v->poly, "LFB read");
+ poly_wait(vd->poly, "LFB read");
/* compute the data */
data = buffer[bufoffs + 0] | (buffer[bufoffs + 1] << 16);
/* word swapping */
- if (LFBMODE_WORD_SWAP_READS(v->reg[lfbMode].u))
+ if (LFBMODE_WORD_SWAP_READS(vd->reg[lfbMode].u))
data = (data << 16) | (data >> 16);
/* byte swizzling */
- if (LFBMODE_BYTE_SWIZZLE_READS(v->reg[lfbMode].u))
+ if (LFBMODE_BYTE_SWIZZLE_READS(vd->reg[lfbMode].u))
data = FLIPENDIAN_INT32(data);
- if (LOG_LFB) v->device->logerror("VOODOO.%d.LFB:read (%d,%d) = %08X\n", v->index, x, y, data);
+ if (LOG_LFB) vd->device->logerror("VOODOO.%d.LFB:read (%d,%d) = %08X\n", vd->index, x, y, data);
return data;
}
@@ -4133,17 +4053,16 @@ static UINT32 lfb_r(voodoo_state *v, offs_t offset, bool lfb_3d)
READ32_MEMBER( voodoo_device::voodoo_r )
{
- voodoo_state *v = get_safe_token(this);
/* if we have something pending, flush the FIFOs up to the current time */
- if (v->pci.op_pending)
- flush_fifos(v, machine().time());
+ if (pci.op_pending)
+ flush_fifos(this, machine().time());
/* target the appropriate location */
if (!(offset & (0xc00000/4)))
- return register_r(v, offset);
+ return register_r(this, offset);
else if (!(offset & (0x800000/4)))
- return lfb_r(v, offset, true);
+ return lfb_r(this, offset, true);
return 0xffffffff;
}
@@ -4159,7 +4078,6 @@ READ32_MEMBER( voodoo_device::voodoo_r )
READ32_MEMBER( voodoo_banshee_device::banshee_agp_r )
{
- voodoo_state *v = get_safe_token(this);
UINT32 result;
offset &= 0x1ff/4;
@@ -4168,64 +4086,63 @@ READ32_MEMBER( voodoo_banshee_device::banshee_agp_r )
switch (offset)
{
case cmdRdPtrL0:
- result = v->fbi.cmdfifo[0].rdptr;
+ result = fbi.cmdfifo[0].rdptr;
break;
case cmdAMin0:
- result = v->fbi.cmdfifo[0].amin;
+ result = fbi.cmdfifo[0].amin;
break;
case cmdAMax0:
- result = v->fbi.cmdfifo[0].amax;
+ result = fbi.cmdfifo[0].amax;
break;
case cmdFifoDepth0:
- result = v->fbi.cmdfifo[0].depth;
+ result = fbi.cmdfifo[0].depth;
break;
case cmdHoleCnt0:
- result = v->fbi.cmdfifo[0].holes;
+ result = fbi.cmdfifo[0].holes;
break;
case cmdRdPtrL1:
- result = v->fbi.cmdfifo[1].rdptr;
+ result = fbi.cmdfifo[1].rdptr;
break;
case cmdAMin1:
- result = v->fbi.cmdfifo[1].amin;
+ result = fbi.cmdfifo[1].amin;
break;
case cmdAMax1:
- result = v->fbi.cmdfifo[1].amax;
+ result = fbi.cmdfifo[1].amax;
break;
case cmdFifoDepth1:
- result = v->fbi.cmdfifo[1].depth;
+ result = fbi.cmdfifo[1].depth;
break;
case cmdHoleCnt1:
- result = v->fbi.cmdfifo[1].holes;
+ result = fbi.cmdfifo[1].holes;
break;
default:
- result = v->banshee.agp[offset];
+ result = banshee.agp[offset];
break;
}
if (LOG_REGISTERS)
- logerror("%s:banshee_r(AGP:%s)\n", v->device->machine().describe_context(), banshee_agp_reg_name[offset]);
+ logerror("%s:banshee_r(AGP:%s)\n", device->machine().describe_context(), banshee_agp_reg_name[offset]);
return result;
}
READ32_MEMBER( voodoo_banshee_device::banshee_r )
{
- voodoo_state *v = get_safe_token(this);
UINT32 result = 0xffffffff;
/* if we have something pending, flush the FIFOs up to the current time */
- if (v->pci.op_pending)
- flush_fifos(v, machine().time());
+ if (pci.op_pending)
+ flush_fifos(this, machine().time());
if (offset < 0x80000/4)
result = banshee_io_r(space, offset, mem_mask);
@@ -4234,7 +4151,7 @@ READ32_MEMBER( voodoo_banshee_device::banshee_r )
else if (offset < 0x200000/4)
logerror("%s:banshee_r(2D:%X)\n", machine().describe_context(), (offset*4) & 0xfffff);
else if (offset < 0x600000/4)
- result = register_r(v, offset & 0x1fffff/4);
+ result = register_r(this, offset & 0x1fffff/4);
else if (offset < 0x800000/4)
logerror("%s:banshee_r(TEX0:%X)\n", machine().describe_context(), (offset*4) & 0x1fffff);
else if (offset < 0xa00000/4)
@@ -4245,7 +4162,7 @@ READ32_MEMBER( voodoo_banshee_device::banshee_r )
logerror("%s:banshee_r(YUV:%X)\n", machine().describe_context(), (offset*4) & 0x3fffff);
else if (offset < 0x2000000/4)
{
- result = lfb_r(v, offset & 0xffffff/4, true);
+ result = lfb_r(this, offset & 0xffffff/4, true);
} else {
logerror("%s:banshee_r(%X) Access out of bounds\n", machine().describe_context(), offset*4);
}
@@ -4255,27 +4172,26 @@ READ32_MEMBER( voodoo_banshee_device::banshee_r )
READ32_MEMBER( voodoo_banshee_device::banshee_fb_r )
{
- voodoo_state *v = get_safe_token(this);
UINT32 result = 0xffffffff;
/* if we have something pending, flush the FIFOs up to the current time */
- if (v->pci.op_pending)
- flush_fifos(v, machine().time());
+ if (pci.op_pending)
+ flush_fifos(this, machine().time());
- if (offset < v->fbi.lfb_base)
+ if (offset < fbi.lfb_base)
{
#if LOG_LFB
logerror("%s:banshee_fb_r(%X)\n", machine().describe_context(), offset*4);
#endif
- if (offset*4 <= v->fbi.mask)
- result = ((UINT32 *)v->fbi.ram)[offset];
+ if (offset*4 <= fbi.mask)
+ result = ((UINT32 *)fbi.ram)[offset];
else
logerror("%s:banshee_fb_r(%X) Access out of bounds\n", machine().describe_context(), offset*4);
}
else {
if (LOG_LFB)
- logerror("%s:banshee_fb_r(%X) to lfb_r: %08X lfb_base=%08X\n", machine().describe_context(), offset*4, offset - v->fbi.lfb_base, v->fbi.lfb_base);
- result = lfb_r(v, offset - v->fbi.lfb_base, false);
+ logerror("%s:banshee_fb_r(%X) to lfb_r: %08X lfb_base=%08X\n", machine().describe_context(), offset*4, offset - fbi.lfb_base, fbi.lfb_base);
+ result = lfb_r(this, offset - fbi.lfb_base, false);
}
return result;
}
@@ -4283,7 +4199,6 @@ READ32_MEMBER( voodoo_banshee_device::banshee_fb_r )
READ8_MEMBER( voodoo_banshee_device::banshee_vga_r )
{
- voodoo_state *v = get_safe_token(this);
UINT8 result = 0xff;
offset &= 0x1f;
@@ -4293,10 +4208,10 @@ READ8_MEMBER( voodoo_banshee_device::banshee_vga_r )
{
/* attribute access */
case 0x3c0:
- if (v->banshee.vga[0x3c1 & 0x1f] < ARRAY_LENGTH(v->banshee.att))
- result = v->banshee.att[v->banshee.vga[0x3c1 & 0x1f]];
+ if (banshee.vga[0x3c1 & 0x1f] < ARRAY_LENGTH(banshee.att))
+ result = banshee.att[banshee.vga[0x3c1 & 0x1f]];
if (LOG_REGISTERS)
- logerror("%s:banshee_att_r(%X)\n", machine().describe_context(), v->banshee.vga[0x3c1 & 0x1f]);
+ logerror("%s:banshee_att_r(%X)\n", machine().describe_context(), banshee.vga[0x3c1 & 0x1f]);
break;
/* Input status 0 */
@@ -4314,41 +4229,41 @@ READ8_MEMBER( voodoo_banshee_device::banshee_vga_r )
/* Sequencer access */
case 0x3c5:
- if (v->banshee.vga[0x3c4 & 0x1f] < ARRAY_LENGTH(v->banshee.seq))
- result = v->banshee.seq[v->banshee.vga[0x3c4 & 0x1f]];
+ if (banshee.vga[0x3c4 & 0x1f] < ARRAY_LENGTH(banshee.seq))
+ result = banshee.seq[banshee.vga[0x3c4 & 0x1f]];
if (LOG_REGISTERS)
- logerror("%s:banshee_seq_r(%X)\n", machine().describe_context(), v->banshee.vga[0x3c4 & 0x1f]);
+ logerror("%s:banshee_seq_r(%X)\n", machine().describe_context(), banshee.vga[0x3c4 & 0x1f]);
break;
/* Feature control */
case 0x3ca:
- result = v->banshee.vga[0x3da & 0x1f];
- v->banshee.attff = 0;
+ result = banshee.vga[0x3da & 0x1f];
+ banshee.attff = 0;
if (LOG_REGISTERS)
logerror("%s:banshee_vga_r(%X)\n", machine().describe_context(), 0x300+offset);
break;
/* Miscellaneous output */
case 0x3cc:
- result = v->banshee.vga[0x3c2 & 0x1f];
+ result = banshee.vga[0x3c2 & 0x1f];
if (LOG_REGISTERS)
logerror("%s:banshee_vga_r(%X)\n", machine().describe_context(), 0x300+offset);
break;
/* Graphics controller access */
case 0x3cf:
- if (v->banshee.vga[0x3ce & 0x1f] < ARRAY_LENGTH(v->banshee.gc))
- result = v->banshee.gc[v->banshee.vga[0x3ce & 0x1f]];
+ if (banshee.vga[0x3ce & 0x1f] < ARRAY_LENGTH(banshee.gc))
+ result = banshee.gc[banshee.vga[0x3ce & 0x1f]];
if (LOG_REGISTERS)
- logerror("%s:banshee_gc_r(%X)\n", machine().describe_context(), v->banshee.vga[0x3ce & 0x1f]);
+ logerror("%s:banshee_gc_r(%X)\n", machine().describe_context(), banshee.vga[0x3ce & 0x1f]);
break;
/* CRTC access */
case 0x3d5:
- if (v->banshee.vga[0x3d4 & 0x1f] < ARRAY_LENGTH(v->banshee.crtc))
- result = v->banshee.crtc[v->banshee.vga[0x3d4 & 0x1f]];
+ if (banshee.vga[0x3d4 & 0x1f] < ARRAY_LENGTH(banshee.crtc))
+ result = banshee.crtc[banshee.vga[0x3d4 & 0x1f]];
if (LOG_REGISTERS)
- logerror("%s:banshee_crtc_r(%X)\n", machine().describe_context(), v->banshee.vga[0x3d4 & 0x1f]);
+ logerror("%s:banshee_crtc_r(%X)\n", machine().describe_context(), banshee.vga[0x3d4 & 0x1f]);
break;
/* Input status 1 */
@@ -4368,7 +4283,7 @@ READ8_MEMBER( voodoo_banshee_device::banshee_vga_r )
break;
default:
- result = v->banshee.vga[offset];
+ result = banshee.vga[offset];
if (LOG_REGISTERS)
logerror("%s:banshee_vga_r(%X)\n", machine().describe_context(), 0x300+offset);
break;
@@ -4379,7 +4294,6 @@ READ8_MEMBER( voodoo_banshee_device::banshee_vga_r )
READ32_MEMBER( voodoo_banshee_device::banshee_io_r )
{
- voodoo_state *v = get_safe_token(this);
UINT32 result;
offset &= 0xff/4;
@@ -4388,13 +4302,13 @@ READ32_MEMBER( voodoo_banshee_device::banshee_io_r )
switch (offset)
{
case io_status:
- result = register_r(v, 0);
+ result = register_r(this, 0);
break;
case io_dacData:
- result = v->fbi.clut[v->banshee.io[io_dacAddr] & 0x1ff] = v->banshee.io[offset];
+ result = fbi.clut[banshee.io[io_dacAddr] & 0x1ff] = banshee.io[offset];
if (LOG_REGISTERS)
- logerror("%s:banshee_dac_r(%X)\n", machine().describe_context(), v->banshee.io[io_dacAddr] & 0x1ff);
+ logerror("%s:banshee_dac_r(%X)\n", machine().describe_context(), banshee.io[io_dacAddr] & 0x1ff);
break;
case io_vgab0: case io_vgab4: case io_vgab8: case io_vgabc:
@@ -4412,7 +4326,7 @@ READ32_MEMBER( voodoo_banshee_device::banshee_io_r )
break;
default:
- result = v->banshee.io[offset];
+ result = banshee.io[offset];
if (LOG_REGISTERS)
logerror("%s:banshee_io_r(%s)\n", machine().describe_context(), banshee_io_reg_name[offset]);
break;
@@ -4428,9 +4342,9 @@ READ32_MEMBER( voodoo_banshee_device::banshee_rom_r )
return 0xffffffff;
}
-static void blit_2d(voodoo_state *v, UINT32 data)
+static void blit_2d(voodoo_device *vd, UINT32 data)
{
- switch (v->banshee.blt_cmd)
+ switch (vd->banshee.blt_cmd)
{
case 0: // NOP - wait for idle
{
@@ -4453,46 +4367,46 @@ static void blit_2d(voodoo_state *v, UINT32 data)
case 3: // Host-to-screen blit
{
- UINT32 addr = v->banshee.blt_dst_base;
+ UINT32 addr = vd->banshee.blt_dst_base;
- addr += (v->banshee.blt_dst_y * v->banshee.blt_dst_stride) + (v->banshee.blt_dst_x * v->banshee.blt_dst_bpp);
+ addr += (vd->banshee.blt_dst_y * vd->banshee.blt_dst_stride) + (vd->banshee.blt_dst_x * vd->banshee.blt_dst_bpp);
#if LOG_BANSHEE_2D
- logerror(" blit_2d:host_to_screen: %08x -> %08x, %d, %d\n", data, addr, v->banshee.blt_dst_x, v->banshee.blt_dst_y);
+ logerror(" blit_2d:host_to_screen: %08x -> %08x, %d, %d\n", data, addr, vd->banshee.blt_dst_x, vd->banshee.blt_dst_y);
#endif
- switch (v->banshee.blt_dst_bpp)
+ switch (vd->banshee.blt_dst_bpp)
{
case 1:
- v->fbi.ram[addr+0] = data & 0xff;
- v->fbi.ram[addr+1] = (data >> 8) & 0xff;
- v->fbi.ram[addr+2] = (data >> 16) & 0xff;
- v->fbi.ram[addr+3] = (data >> 24) & 0xff;
- v->banshee.blt_dst_x += 4;
+ vd->fbi.ram[addr+0] = data & 0xff;
+ vd->fbi.ram[addr+1] = (data >> 8) & 0xff;
+ vd->fbi.ram[addr+2] = (data >> 16) & 0xff;
+ vd->fbi.ram[addr+3] = (data >> 24) & 0xff;
+ vd->banshee.blt_dst_x += 4;
break;
case 2:
- v->fbi.ram[addr+1] = data & 0xff;
- v->fbi.ram[addr+0] = (data >> 8) & 0xff;
- v->fbi.ram[addr+3] = (data >> 16) & 0xff;
- v->fbi.ram[addr+2] = (data >> 24) & 0xff;
- v->banshee.blt_dst_x += 2;
+ vd->fbi.ram[addr+1] = data & 0xff;
+ vd->fbi.ram[addr+0] = (data >> 8) & 0xff;
+ vd->fbi.ram[addr+3] = (data >> 16) & 0xff;
+ vd->fbi.ram[addr+2] = (data >> 24) & 0xff;
+ vd->banshee.blt_dst_x += 2;
break;
case 3:
- v->banshee.blt_dst_x += 1;
+ vd->banshee.blt_dst_x += 1;
break;
case 4:
- v->fbi.ram[addr+3] = data & 0xff;
- v->fbi.ram[addr+2] = (data >> 8) & 0xff;
- v->fbi.ram[addr+1] = (data >> 16) & 0xff;
- v->fbi.ram[addr+0] = (data >> 24) & 0xff;
- v->banshee.blt_dst_x += 1;
+ vd->fbi.ram[addr+3] = data & 0xff;
+ vd->fbi.ram[addr+2] = (data >> 8) & 0xff;
+ vd->fbi.ram[addr+1] = (data >> 16) & 0xff;
+ vd->fbi.ram[addr+0] = (data >> 24) & 0xff;
+ vd->banshee.blt_dst_x += 1;
break;
}
- if (v->banshee.blt_dst_x >= v->banshee.blt_dst_width)
+ if (vd->banshee.blt_dst_x >= vd->banshee.blt_dst_width)
{
- v->banshee.blt_dst_x = 0;
- v->banshee.blt_dst_y++;
+ vd->banshee.blt_dst_x = 0;
+ vd->banshee.blt_dst_y++;
}
break;
}
@@ -4519,12 +4433,12 @@ static void blit_2d(voodoo_state *v, UINT32 data)
default:
{
- fatalerror("blit_2d: unknown command %d\n", v->banshee.blt_cmd);
+ fatalerror("blit_2d: unknown command %d\n", vd->banshee.blt_cmd);
}
}
}
-static INT32 banshee_2d_w(voodoo_state *v, offs_t offset, UINT32 data)
+INT32 voodoo_device::banshee_2d_w(voodoo_device *vd, offs_t offset, UINT32 data)
{
switch (offset)
{
@@ -4533,152 +4447,152 @@ static INT32 banshee_2d_w(voodoo_state *v, offs_t offset, UINT32 data)
logerror(" 2D:command: cmd %d, ROP0 %02X\n", data & 0xf, data >> 24);
#endif
- v->banshee.blt_src_x = v->banshee.blt_regs[banshee2D_srcXY] & 0xfff;
- v->banshee.blt_src_y = (v->banshee.blt_regs[banshee2D_srcXY] >> 16) & 0xfff;
- v->banshee.blt_src_base = v->banshee.blt_regs[banshee2D_srcBaseAddr] & 0xffffff;
- v->banshee.blt_src_stride = v->banshee.blt_regs[banshee2D_srcFormat] & 0x3fff;
- v->banshee.blt_src_width = v->banshee.blt_regs[banshee2D_srcSize] & 0xfff;
- v->banshee.blt_src_height = (v->banshee.blt_regs[banshee2D_srcSize] >> 16) & 0xfff;
+ vd->banshee.blt_src_x = vd->banshee.blt_regs[banshee2D_srcXY] & 0xfff;
+ vd->banshee.blt_src_y = (vd->banshee.blt_regs[banshee2D_srcXY] >> 16) & 0xfff;
+ vd->banshee.blt_src_base = vd->banshee.blt_regs[banshee2D_srcBaseAddr] & 0xffffff;
+ vd->banshee.blt_src_stride = vd->banshee.blt_regs[banshee2D_srcFormat] & 0x3fff;
+ vd->banshee.blt_src_width = vd->banshee.blt_regs[banshee2D_srcSize] & 0xfff;
+ vd->banshee.blt_src_height = (vd->banshee.blt_regs[banshee2D_srcSize] >> 16) & 0xfff;
- switch ((v->banshee.blt_regs[banshee2D_srcFormat] >> 16) & 0xf)
+ switch ((vd->banshee.blt_regs[banshee2D_srcFormat] >> 16) & 0xf)
{
- case 1: v->banshee.blt_src_bpp = 1; break;
- case 3: v->banshee.blt_src_bpp = 2; break;
- case 4: v->banshee.blt_src_bpp = 3; break;
- case 5: v->banshee.blt_src_bpp = 4; break;
- case 8: v->banshee.blt_src_bpp = 2; break;
- case 9: v->banshee.blt_src_bpp = 2; break;
- default: v->banshee.blt_src_bpp = 1; break;
+ case 1: vd->banshee.blt_src_bpp = 1; break;
+ case 3: vd->banshee.blt_src_bpp = 2; break;
+ case 4: vd->banshee.blt_src_bpp = 3; break;
+ case 5: vd->banshee.blt_src_bpp = 4; break;
+ case 8: vd->banshee.blt_src_bpp = 2; break;
+ case 9: vd->banshee.blt_src_bpp = 2; break;
+ default: vd->banshee.blt_src_bpp = 1; break;
}
- v->banshee.blt_dst_x = v->banshee.blt_regs[banshee2D_dstXY] & 0xfff;
- v->banshee.blt_dst_y = (v->banshee.blt_regs[banshee2D_dstXY] >> 16) & 0xfff;
- v->banshee.blt_dst_base = v->banshee.blt_regs[banshee2D_dstBaseAddr] & 0xffffff;
- v->banshee.blt_dst_stride = v->banshee.blt_regs[banshee2D_dstFormat] & 0x3fff;
- v->banshee.blt_dst_width = v->banshee.blt_regs[banshee2D_dstSize] & 0xfff;
- v->banshee.blt_dst_height = (v->banshee.blt_regs[banshee2D_dstSize] >> 16) & 0xfff;
+ vd->banshee.blt_dst_x = vd->banshee.blt_regs[banshee2D_dstXY] & 0xfff;
+ vd->banshee.blt_dst_y = (vd->banshee.blt_regs[banshee2D_dstXY] >> 16) & 0xfff;
+ vd->banshee.blt_dst_base = vd->banshee.blt_regs[banshee2D_dstBaseAddr] & 0xffffff;
+ vd->banshee.blt_dst_stride = vd->banshee.blt_regs[banshee2D_dstFormat] & 0x3fff;
+ vd->banshee.blt_dst_width = vd->banshee.blt_regs[banshee2D_dstSize] & 0xfff;
+ vd->banshee.blt_dst_height = (vd->banshee.blt_regs[banshee2D_dstSize] >> 16) & 0xfff;
- switch ((v->banshee.blt_regs[banshee2D_dstFormat] >> 16) & 0x7)
+ switch ((vd->banshee.blt_regs[banshee2D_dstFormat] >> 16) & 0x7)
{
- case 1: v->banshee.blt_dst_bpp = 1; break;
- case 3: v->banshee.blt_dst_bpp = 2; break;
- case 4: v->banshee.blt_dst_bpp = 3; break;
- case 5: v->banshee.blt_dst_bpp = 4; break;
- default: v->banshee.blt_dst_bpp = 1; break;
+ case 1: vd->banshee.blt_dst_bpp = 1; break;
+ case 3: vd->banshee.blt_dst_bpp = 2; break;
+ case 4: vd->banshee.blt_dst_bpp = 3; break;
+ case 5: vd->banshee.blt_dst_bpp = 4; break;
+ default: vd->banshee.blt_dst_bpp = 1; break;
}
- v->banshee.blt_cmd = data & 0xf;
+ vd->banshee.blt_cmd = data & 0xf;
break;
case banshee2D_colorBack:
#if LOG_BANSHEE_2D
logerror(" 2D:colorBack: %08X\n", data);
#endif
- v->banshee.blt_regs[banshee2D_colorBack] = data;
+ vd->banshee.blt_regs[banshee2D_colorBack] = data;
break;
case banshee2D_colorFore:
#if LOG_BANSHEE_2D
logerror(" 2D:colorFore: %08X\n", data);
#endif
- v->banshee.blt_regs[banshee2D_colorFore] = data;
+ vd->banshee.blt_regs[banshee2D_colorFore] = data;
break;
case banshee2D_srcBaseAddr:
#if LOG_BANSHEE_2D
logerror(" 2D:srcBaseAddr: %08X, %s\n", data & 0xffffff, data & 0x80000000 ? "tiled" : "non-tiled");
#endif
- v->banshee.blt_regs[banshee2D_srcBaseAddr] = data;
+ vd->banshee.blt_regs[banshee2D_srcBaseAddr] = data;
break;
case banshee2D_dstBaseAddr:
#if LOG_BANSHEE_2D
logerror(" 2D:dstBaseAddr: %08X, %s\n", data & 0xffffff, data & 0x80000000 ? "tiled" : "non-tiled");
#endif
- v->banshee.blt_regs[banshee2D_dstBaseAddr] = data;
+ vd->banshee.blt_regs[banshee2D_dstBaseAddr] = data;
break;
case banshee2D_srcSize:
#if LOG_BANSHEE_2D
logerror(" 2D:srcSize: %d, %d\n", data & 0xfff, (data >> 16) & 0xfff);
#endif
- v->banshee.blt_regs[banshee2D_srcSize] = data;
+ vd->banshee.blt_regs[banshee2D_srcSize] = data;
break;
case banshee2D_dstSize:
#if LOG_BANSHEE_2D
logerror(" 2D:dstSize: %d, %d\n", data & 0xfff, (data >> 16) & 0xfff);
#endif
- v->banshee.blt_regs[banshee2D_dstSize] = data;
+ vd->banshee.blt_regs[banshee2D_dstSize] = data;
break;
case banshee2D_srcXY:
#if LOG_BANSHEE_2D
logerror(" 2D:srcXY: %d, %d\n", data & 0xfff, (data >> 16) & 0xfff);
#endif
- v->banshee.blt_regs[banshee2D_srcXY] = data;
+ vd->banshee.blt_regs[banshee2D_srcXY] = data;
break;
case banshee2D_dstXY:
#if LOG_BANSHEE_2D
logerror(" 2D:dstXY: %d, %d\n", data & 0xfff, (data >> 16) & 0xfff);
#endif
- v->banshee.blt_regs[banshee2D_dstXY] = data;
+ vd->banshee.blt_regs[banshee2D_dstXY] = data;
break;
case banshee2D_srcFormat:
#if LOG_BANSHEE_2D
logerror(" 2D:srcFormat: str %d, fmt %d, packing %d\n", data & 0x3fff, (data >> 16) & 0xf, (data >> 22) & 0x3);
#endif
- v->banshee.blt_regs[banshee2D_srcFormat] = data;
+ vd->banshee.blt_regs[banshee2D_srcFormat] = data;
break;
case banshee2D_dstFormat:
#if LOG_BANSHEE_2D
logerror(" 2D:dstFormat: str %d, fmt %d\n", data & 0x3fff, (data >> 16) & 0xf);
#endif
- v->banshee.blt_regs[banshee2D_dstFormat] = data;
+ vd->banshee.blt_regs[banshee2D_dstFormat] = data;
break;
case banshee2D_clip0Min:
#if LOG_BANSHEE_2D
logerror(" 2D:clip0Min: %d, %d\n", data & 0xfff, (data >> 16) & 0xfff);
#endif
- v->banshee.blt_regs[banshee2D_clip0Min] = data;
+ vd->banshee.blt_regs[banshee2D_clip0Min] = data;
break;
case banshee2D_clip0Max:
#if LOG_BANSHEE_2D
logerror(" 2D:clip0Max: %d, %d\n", data & 0xfff, (data >> 16) & 0xfff);
#endif
- v->banshee.blt_regs[banshee2D_clip0Max] = data;
+ vd->banshee.blt_regs[banshee2D_clip0Max] = data;
break;
case banshee2D_clip1Min:
#if LOG_BANSHEE_2D
logerror(" 2D:clip1Min: %d, %d\n", data & 0xfff, (data >> 16) & 0xfff);
#endif
- v->banshee.blt_regs[banshee2D_clip1Min] = data;
+ vd->banshee.blt_regs[banshee2D_clip1Min] = data;
break;
case banshee2D_clip1Max:
#if LOG_BANSHEE_2D
logerror(" 2D:clip1Max: %d, %d\n", data & 0xfff, (data >> 16) & 0xfff);
#endif
- v->banshee.blt_regs[banshee2D_clip1Max] = data;
+ vd->banshee.blt_regs[banshee2D_clip1Max] = data;
break;
case banshee2D_rop:
#if LOG_BANSHEE_2D
logerror(" 2D:rop: %d, %d, %d\n", data & 0xff, (data >> 8) & 0xff, (data >> 16) & 0xff);
#endif
- v->banshee.blt_regs[banshee2D_rop] = data;
+ vd->banshee.blt_regs[banshee2D_rop] = data;
break;
default:
if (offset >= 0x20 && offset < 0x40)
{
- blit_2d(v, data);
+ blit_2d(vd, data);
}
else if (offset >= 0x40 && offset < 0x80)
{
@@ -4696,86 +4610,85 @@ static INT32 banshee_2d_w(voodoo_state *v, offs_t offset, UINT32 data)
WRITE32_MEMBER( voodoo_banshee_device::banshee_agp_w )
{
- voodoo_state *v = get_safe_token(this);
offset &= 0x1ff/4;
/* switch off the offset */
switch (offset)
{
case cmdBaseAddr0:
- COMBINE_DATA(&v->banshee.agp[offset]);
- v->fbi.cmdfifo[0].base = (data & 0xffffff) << 12;
- v->fbi.cmdfifo[0].end = v->fbi.cmdfifo[0].base + (((v->banshee.agp[cmdBaseSize0] & 0xff) + 1) << 12);
+ COMBINE_DATA(&banshee.agp[offset]);
+ fbi.cmdfifo[0].base = (data & 0xffffff) << 12;
+ fbi.cmdfifo[0].end = fbi.cmdfifo[0].base + (((banshee.agp[cmdBaseSize0] & 0xff) + 1) << 12);
break;
case cmdBaseSize0:
- COMBINE_DATA(&v->banshee.agp[offset]);
- v->fbi.cmdfifo[0].end = v->fbi.cmdfifo[0].base + (((v->banshee.agp[cmdBaseSize0] & 0xff) + 1) << 12);
- v->fbi.cmdfifo[0].enable = (data >> 8) & 1;
- v->fbi.cmdfifo[0].count_holes = (~data >> 10) & 1;
+ COMBINE_DATA(&banshee.agp[offset]);
+ fbi.cmdfifo[0].end = fbi.cmdfifo[0].base + (((banshee.agp[cmdBaseSize0] & 0xff) + 1) << 12);
+ fbi.cmdfifo[0].enable = (data >> 8) & 1;
+ fbi.cmdfifo[0].count_holes = (~data >> 10) & 1;
break;
case cmdBump0:
fatalerror("cmdBump0\n");
case cmdRdPtrL0:
- v->fbi.cmdfifo[0].rdptr = data;
+ fbi.cmdfifo[0].rdptr = data;
break;
case cmdAMin0:
- v->fbi.cmdfifo[0].amin = data;
+ fbi.cmdfifo[0].amin = data;
break;
case cmdAMax0:
- v->fbi.cmdfifo[0].amax = data;
+ fbi.cmdfifo[0].amax = data;
break;
case cmdFifoDepth0:
- v->fbi.cmdfifo[0].depth = data;
+ fbi.cmdfifo[0].depth = data;
break;
case cmdHoleCnt0:
- v->fbi.cmdfifo[0].holes = data;
+ fbi.cmdfifo[0].holes = data;
break;
case cmdBaseAddr1:
- COMBINE_DATA(&v->banshee.agp[offset]);
- v->fbi.cmdfifo[1].base = (data & 0xffffff) << 12;
- v->fbi.cmdfifo[1].end = v->fbi.cmdfifo[1].base + (((v->banshee.agp[cmdBaseSize1] & 0xff) + 1) << 12);
+ COMBINE_DATA(&banshee.agp[offset]);
+ fbi.cmdfifo[1].base = (data & 0xffffff) << 12;
+ fbi.cmdfifo[1].end = fbi.cmdfifo[1].base + (((banshee.agp[cmdBaseSize1] & 0xff) + 1) << 12);
break;
case cmdBaseSize1:
- COMBINE_DATA(&v->banshee.agp[offset]);
- v->fbi.cmdfifo[1].end = v->fbi.cmdfifo[1].base + (((v->banshee.agp[cmdBaseSize1] & 0xff) + 1) << 12);
- v->fbi.cmdfifo[1].enable = (data >> 8) & 1;
- v->fbi.cmdfifo[1].count_holes = (~data >> 10) & 1;
+ COMBINE_DATA(&banshee.agp[offset]);
+ fbi.cmdfifo[1].end = fbi.cmdfifo[1].base + (((banshee.agp[cmdBaseSize1] & 0xff) + 1) << 12);
+ fbi.cmdfifo[1].enable = (data >> 8) & 1;
+ fbi.cmdfifo[1].count_holes = (~data >> 10) & 1;
break;
case cmdBump1:
fatalerror("cmdBump1\n");
case cmdRdPtrL1:
- v->fbi.cmdfifo[1].rdptr = data;
+ fbi.cmdfifo[1].rdptr = data;
break;
case cmdAMin1:
- v->fbi.cmdfifo[1].amin = data;
+ fbi.cmdfifo[1].amin = data;
break;
case cmdAMax1:
- v->fbi.cmdfifo[1].amax = data;
+ fbi.cmdfifo[1].amax = data;
break;
case cmdFifoDepth1:
- v->fbi.cmdfifo[1].depth = data;
+ fbi.cmdfifo[1].depth = data;
break;
case cmdHoleCnt1:
- v->fbi.cmdfifo[1].holes = data;
+ fbi.cmdfifo[1].holes = data;
break;
default:
- COMBINE_DATA(&v->banshee.agp[offset]);
+ COMBINE_DATA(&banshee.agp[offset]);
break;
}
@@ -4786,11 +4699,10 @@ WRITE32_MEMBER( voodoo_banshee_device::banshee_agp_w )
WRITE32_MEMBER( voodoo_banshee_device::banshee_w )
{
- voodoo_state *v = get_safe_token(this);
/* if we have something pending, flush the FIFOs up to the current time */
- if (v->pci.op_pending)
- flush_fifos(v, machine().time());
+ if (pci.op_pending)
+ flush_fifos(this, machine().time());
if (offset < 0x80000/4)
banshee_io_w(space, offset, data, mem_mask);
@@ -4799,7 +4711,7 @@ WRITE32_MEMBER( voodoo_banshee_device::banshee_w )
else if (offset < 0x200000/4)
logerror("%s:banshee_w(2D:%X) = %08X & %08X\n", machine().describe_context(), (offset*4) & 0xfffff, data, mem_mask);
else if (offset < 0x600000/4)
- register_w(v, offset & 0x1fffff/4, data);
+ register_w(this, offset & 0x1fffff/4, data);
else if (offset < 0x800000/4)
logerror("%s:banshee_w(TEX0:%X) = %08X & %08X\n", machine().describe_context(), (offset*4) & 0x1fffff, data, mem_mask);
else if (offset < 0xa00000/4)
@@ -4810,7 +4722,7 @@ WRITE32_MEMBER( voodoo_banshee_device::banshee_w )
logerror("%s:banshee_w(YUV:%X) = %08X & %08X\n", machine().describe_context(), (offset*4) & 0x3fffff, data, mem_mask);
else if (offset < 0x2000000/4)
{
- lfb_w(v, offset & 0xffffff/4, data, mem_mask);
+ lfb_w(this, offset & 0xffffff/4, data, mem_mask);
} else {
logerror("%s:banshee_w Address out of range %08X = %08X & %08X\n", machine().describe_context(), (offset*4), data, mem_mask);
}
@@ -4819,23 +4731,22 @@ WRITE32_MEMBER( voodoo_banshee_device::banshee_w )
WRITE32_MEMBER( voodoo_banshee_device::banshee_fb_w )
{
- voodoo_state *v = get_safe_token(this);
UINT32 addr = offset*4;
/* if we have something pending, flush the FIFOs up to the current time */
- if (v->pci.op_pending)
- flush_fifos(v, machine().time());
+ if (pci.op_pending)
+ flush_fifos(this, machine().time());
- if (offset < v->fbi.lfb_base)
+ if (offset < fbi.lfb_base)
{
- if (v->fbi.cmdfifo[0].enable && addr >= v->fbi.cmdfifo[0].base && addr < v->fbi.cmdfifo[0].end)
- cmdfifo_w(v, &v->fbi.cmdfifo[0], (addr - v->fbi.cmdfifo[0].base) / 4, data);
- else if (v->fbi.cmdfifo[1].enable && addr >= v->fbi.cmdfifo[1].base && addr < v->fbi.cmdfifo[1].end)
- cmdfifo_w(v, &v->fbi.cmdfifo[1], (addr - v->fbi.cmdfifo[1].base) / 4, data);
+ if (fbi.cmdfifo[0].enable && addr >= fbi.cmdfifo[0].base && addr < fbi.cmdfifo[0].end)
+ cmdfifo_w(this, &fbi.cmdfifo[0], (addr - fbi.cmdfifo[0].base) / 4, data);
+ else if (fbi.cmdfifo[1].enable && addr >= fbi.cmdfifo[1].base && addr < fbi.cmdfifo[1].end)
+ cmdfifo_w(this, &fbi.cmdfifo[1], (addr - fbi.cmdfifo[1].base) / 4, data);
else
{
- if (offset*4 <= v->fbi.mask)
- COMBINE_DATA(&((UINT32 *)v->fbi.ram)[offset]);
+ if (offset*4 <= fbi.mask)
+ COMBINE_DATA(&((UINT32 *)fbi.ram)[offset]);
else
logerror("%s:banshee_fb_w Out of bounds (%X) = %08X & %08X\n", machine().describe_context(), offset*4, data, mem_mask);
#if LOG_LFB
@@ -4844,13 +4755,12 @@ WRITE32_MEMBER( voodoo_banshee_device::banshee_fb_w )
}
}
else
- lfb_direct_w(v, offset - v->fbi.lfb_base, data, mem_mask);
+ lfb_direct_w(this, offset - fbi.lfb_base, data, mem_mask);
}
WRITE8_MEMBER( voodoo_banshee_device::banshee_vga_w )
{
- voodoo_state *v = get_safe_token(this);
offset &= 0x1f;
/* switch off the offset */
@@ -4859,48 +4769,48 @@ WRITE8_MEMBER( voodoo_banshee_device::banshee_vga_w )
/* attribute access */
case 0x3c0:
case 0x3c1:
- if (v->banshee.attff == 0)
+ if (banshee.attff == 0)
{
- v->banshee.vga[0x3c1 & 0x1f] = data;
+ banshee.vga[0x3c1 & 0x1f] = data;
if (LOG_REGISTERS)
logerror("%s:banshee_vga_w(%X) = %02X\n", machine().describe_context(), 0x3c0+offset, data);
}
else
{
- if (v->banshee.vga[0x3c1 & 0x1f] < ARRAY_LENGTH(v->banshee.att))
- v->banshee.att[v->banshee.vga[0x3c1 & 0x1f]] = data;
+ if (banshee.vga[0x3c1 & 0x1f] < ARRAY_LENGTH(banshee.att))
+ banshee.att[banshee.vga[0x3c1 & 0x1f]] = data;
if (LOG_REGISTERS)
- logerror("%s:banshee_att_w(%X) = %02X\n", machine().describe_context(), v->banshee.vga[0x3c1 & 0x1f], data);
+ logerror("%s:banshee_att_w(%X) = %02X\n", machine().describe_context(), banshee.vga[0x3c1 & 0x1f], data);
}
- v->banshee.attff ^= 1;
+ banshee.attff ^= 1;
break;
/* Sequencer access */
case 0x3c5:
- if (v->banshee.vga[0x3c4 & 0x1f] < ARRAY_LENGTH(v->banshee.seq))
- v->banshee.seq[v->banshee.vga[0x3c4 & 0x1f]] = data;
+ if (banshee.vga[0x3c4 & 0x1f] < ARRAY_LENGTH(banshee.seq))
+ banshee.seq[banshee.vga[0x3c4 & 0x1f]] = data;
if (LOG_REGISTERS)
- logerror("%s:banshee_seq_w(%X) = %02X\n", machine().describe_context(), v->banshee.vga[0x3c4 & 0x1f], data);
+ logerror("%s:banshee_seq_w(%X) = %02X\n", machine().describe_context(), banshee.vga[0x3c4 & 0x1f], data);
break;
/* Graphics controller access */
case 0x3cf:
- if (v->banshee.vga[0x3ce & 0x1f] < ARRAY_LENGTH(v->banshee.gc))
- v->banshee.gc[v->banshee.vga[0x3ce & 0x1f]] = data;
+ if (banshee.vga[0x3ce & 0x1f] < ARRAY_LENGTH(banshee.gc))
+ banshee.gc[banshee.vga[0x3ce & 0x1f]] = data;
if (LOG_REGISTERS)
- logerror("%s:banshee_gc_w(%X) = %02X\n", machine().describe_context(), v->banshee.vga[0x3ce & 0x1f], data);
+ logerror("%s:banshee_gc_w(%X) = %02X\n", machine().describe_context(), banshee.vga[0x3ce & 0x1f], data);
break;
/* CRTC access */
case 0x3d5:
- if (v->banshee.vga[0x3d4 & 0x1f] < ARRAY_LENGTH(v->banshee.crtc))
- v->banshee.crtc[v->banshee.vga[0x3d4 & 0x1f]] = data;
+ if (banshee.vga[0x3d4 & 0x1f] < ARRAY_LENGTH(banshee.crtc))
+ banshee.crtc[banshee.vga[0x3d4 & 0x1f]] = data;
if (LOG_REGISTERS)
- logerror("%s:banshee_crtc_w(%X) = %02X\n", machine().describe_context(), v->banshee.vga[0x3d4 & 0x1f], data);
+ logerror("%s:banshee_crtc_w(%X) = %02X\n", machine().describe_context(), banshee.vga[0x3d4 & 0x1f], data);
break;
default:
- v->banshee.vga[offset] = data;
+ banshee.vga[offset] = data;
if (LOG_REGISTERS)
logerror("%s:banshee_vga_w(%X) = %02X\n", machine().describe_context(), 0x3c0+offset, data);
break;
@@ -4910,73 +4820,72 @@ WRITE8_MEMBER( voodoo_banshee_device::banshee_vga_w )
WRITE32_MEMBER( voodoo_banshee_device::banshee_io_w )
{
- voodoo_state *v = get_safe_token(this);
UINT32 old;
offset &= 0xff/4;
- old = v->banshee.io[offset];
+ old = banshee.io[offset];
/* switch off the offset */
switch (offset)
{
case io_vidProcCfg:
- COMBINE_DATA(&v->banshee.io[offset]);
- if ((v->banshee.io[offset] ^ old) & 0x2800)
- v->fbi.clut_dirty = TRUE;
+ COMBINE_DATA(&banshee.io[offset]);
+ if ((banshee.io[offset] ^ old) & 0x2800)
+ fbi.clut_dirty = TRUE;
if (LOG_REGISTERS)
logerror("%s:banshee_io_w(%s) = %08X & %08X\n", machine().describe_context(), banshee_io_reg_name[offset], data, mem_mask);
break;
case io_dacData:
- COMBINE_DATA(&v->banshee.io[offset]);
- if (v->banshee.io[offset] != v->fbi.clut[v->banshee.io[io_dacAddr] & 0x1ff])
+ COMBINE_DATA(&banshee.io[offset]);
+ if (banshee.io[offset] != fbi.clut[banshee.io[io_dacAddr] & 0x1ff])
{
- v->fbi.clut[v->banshee.io[io_dacAddr] & 0x1ff] = v->banshee.io[offset];
- v->fbi.clut_dirty = TRUE;
+ fbi.clut[banshee.io[io_dacAddr] & 0x1ff] = banshee.io[offset];
+ fbi.clut_dirty = TRUE;
}
if (LOG_REGISTERS)
- logerror("%s:banshee_dac_w(%X) = %08X & %08X\n", machine().describe_context(), v->banshee.io[io_dacAddr] & 0x1ff, data, mem_mask);
+ logerror("%s:banshee_dac_w(%X) = %08X & %08X\n", machine().describe_context(), banshee.io[io_dacAddr] & 0x1ff, data, mem_mask);
break;
case io_miscInit0:
- COMBINE_DATA(&v->banshee.io[offset]);
- v->fbi.yorigin = (data >> 18) & 0xfff;
+ COMBINE_DATA(&banshee.io[offset]);
+ fbi.yorigin = (data >> 18) & 0xfff;
if (LOG_REGISTERS)
logerror("%s:banshee_io_w(%s) = %08X & %08X\n", machine().describe_context(), banshee_io_reg_name[offset], data, mem_mask);
break;
case io_vidScreenSize:
if (data & 0xfff)
- v->fbi.width = data & 0xfff;
+ fbi.width = data & 0xfff;
if (data & 0xfff000)
- v->fbi.height = (data >> 12) & 0xfff;
+ fbi.height = (data >> 12) & 0xfff;
/* fall through */
case io_vidOverlayDudx:
case io_vidOverlayDvdy:
{
/* warning: this is a hack for now! We should really compute the screen size */
/* from the CRTC registers */
- COMBINE_DATA(&v->banshee.io[offset]);
+ COMBINE_DATA(&banshee.io[offset]);
- int width = v->fbi.width;
- int height = v->fbi.height;
+ int width = fbi.width;
+ int height = fbi.height;
- if (v->banshee.io[io_vidOverlayDudx] != 0)
- width = (v->fbi.width * v->banshee.io[io_vidOverlayDudx]) / 1048576;
- if (v->banshee.io[io_vidOverlayDvdy] != 0)
- height = (v->fbi.height * v->banshee.io[io_vidOverlayDvdy]) / 1048576;
+ if (banshee.io[io_vidOverlayDudx] != 0)
+ width = (fbi.width * banshee.io[io_vidOverlayDudx]) / 1048576;
+ if (banshee.io[io_vidOverlayDvdy] != 0)
+ height = (fbi.height * banshee.io[io_vidOverlayDvdy]) / 1048576;
- v->screen->set_visible_area(0, width - 1, 0, height - 1);
+ screen->set_visible_area(0, width - 1, 0, height - 1);
- adjust_vblank_timer(v);
+ adjust_vblank_timer(this);
if (LOG_REGISTERS)
logerror("%s:banshee_io_w(%s) = %08X & %08X\n", machine().describe_context(), banshee_io_reg_name[offset], data, mem_mask);
break;
}
case io_lfbMemoryConfig:
- v->fbi.lfb_base = (data & 0x1fff) << (12-2);
- v->fbi.lfb_stride = ((data >> 13) & 7) + 9;
+ fbi.lfb_base = (data & 0x1fff) << (12-2);
+ fbi.lfb_stride = ((data >> 13) & 7) + 9;
if (LOG_REGISTERS)
logerror("%s:banshee_io_w(%s) = %08X & %08X\n", machine().describe_context(), banshee_io_reg_name[offset], data, mem_mask);
break;
@@ -4995,7 +4904,7 @@ WRITE32_MEMBER( voodoo_banshee_device::banshee_io_w )
break;
default:
- COMBINE_DATA(&v->banshee.io[offset]);
+ COMBINE_DATA(&banshee.io[offset]);
if (LOG_REGISTERS)
logerror("%s:banshee_io_w(%s) = %08X & %08X\n", machine().describe_context(), banshee_io_reg_name[offset], data, mem_mask);
break;
@@ -5014,7 +4923,6 @@ WRITE32_MEMBER( voodoo_banshee_device::banshee_io_w )
void voodoo_device::common_start_voodoo(UINT8 type)
{
- voodoo_state *v = get_safe_token(this);
const raster_info *info;
void *fbmem, *tmumem[2];
UINT32 tmumem0, tmumem1;
@@ -5026,17 +4934,17 @@ void voodoo_device::common_start_voodoo(UINT8 type)
assert(m_fbmem > 0);
/* store a pointer back to the device */
- v->device = this;
- v->type = type;
+ device = this;
+ vd_type = type;
/* copy config data */
- v->freq = clock();
- v->device->m_vblank.resolve();
- v->device->m_stall.resolve();
+ freq = clock();
+ device->m_vblank.resolve();
+ device->m_stall.resolve();
/* create a multiprocessor work queue */
- v->poly = poly_alloc(machine(), 64, sizeof(poly_extra_data), 0);
- v->thread_stats = auto_alloc_array(machine(), stats_block, WORK_MAX_THREADS);
+ poly = poly_alloc(machine(), 64, sizeof(poly_extra_data), 0);
+ thread_stats = auto_alloc_array(machine(), stats_block, WORK_MAX_THREADS);
/* create a table of precomputed 1/n and log2(n) values */
/* n ranges from 1.0000 to 2.0000 */
@@ -5067,38 +4975,38 @@ void voodoo_device::common_start_voodoo(UINT8 type)
}
}
- v->tmu_config = 0x11; // revision 1
+ tmu_config = 0x11; // revision 1
/* configure type-specific values */
- switch (v->type)
+ switch (vd_type)
{
case TYPE_VOODOO_1:
- v->regaccess = voodoo_register_access;
- v->regnames = voodoo_reg_name;
- v->alt_regmap = 0;
- v->fbi.lfb_stride = 10;
+ regaccess = voodoo_register_access;
+ regnames = voodoo_reg_name;
+ alt_regmap = 0;
+ fbi.lfb_stride = 10;
break;
case TYPE_VOODOO_2:
- v->regaccess = voodoo2_register_access;
- v->regnames = voodoo_reg_name;
- v->alt_regmap = 0;
- v->fbi.lfb_stride = 10;
- v->tmu_config |= 0x800;
+ regaccess = voodoo2_register_access;
+ regnames = voodoo_reg_name;
+ alt_regmap = 0;
+ fbi.lfb_stride = 10;
+ tmu_config |= 0x800;
break;
case TYPE_VOODOO_BANSHEE:
- v->regaccess = banshee_register_access;
- v->regnames = banshee_reg_name;
- v->alt_regmap = 1;
- v->fbi.lfb_stride = 11;
+ regaccess = banshee_register_access;
+ regnames = banshee_reg_name;
+ alt_regmap = 1;
+ fbi.lfb_stride = 11;
break;
case TYPE_VOODOO_3:
- v->regaccess = banshee_register_access;
- v->regnames = banshee_reg_name;
- v->alt_regmap = 1;
- v->fbi.lfb_stride = 11;
+ regaccess = banshee_register_access;
+ regnames = banshee_reg_name;
+ alt_regmap = 1;
+ fbi.lfb_stride = 11;
break;
default:
@@ -5107,41 +5015,41 @@ void voodoo_device::common_start_voodoo(UINT8 type)
/* set the type, and initialize the chip mask */
device_iterator iter(machine().root_device());
- v->index = 0;
+ index = 0;
for (device_t *scan = iter.first(); scan != nullptr; scan = iter.next())
if (scan->type() == this->type())
{
if (scan == this)
break;
- v->index++;
+ index++;
}
- v->screen = downcast<screen_device *>(machine().device(m_screen));
- assert_always(v->screen != nullptr, "Unable to find screen attached to voodoo");
- v->cpu = machine().device(m_cputag);
- assert_always(v->cpu != nullptr, "Unable to find CPU attached to voodoo");
+ screen = downcast<screen_device *>(machine().device(m_screen));
+ assert_always(screen != nullptr, "Unable to find screen attached to voodoo");
+ cpu = machine().device(m_cputag);
+ assert_always(cpu != nullptr, "Unable to find CPU attached to voodoo");
if (m_tmumem1 != 0)
- v->tmu_config |= 0xc0; // two TMUs
+ tmu_config |= 0xc0; // two TMUs
- v->chipmask = 0x01;
- v->attoseconds_per_cycle = ATTOSECONDS_PER_SECOND / v->freq;
- v->trigger = 51324 + v->index;
+ chipmask = 0x01;
+ attoseconds_per_cycle = ATTOSECONDS_PER_SECOND / freq;
+ trigger = 51324 + index;
/* build the rasterizer table */
for (info = predef_raster_table; info->callback; info++)
- add_rasterizer(v, info);
+ add_rasterizer(this, info);
/* set up the PCI FIFO */
- v->pci.fifo.base = v->pci.fifo_mem;
- v->pci.fifo.size = 64*2;
- v->pci.fifo.in = v->pci.fifo.out = 0;
- v->pci.stall_state = NOT_STALLED;
- v->pci.continue_timer = machine().scheduler().timer_alloc(FUNC(stall_cpu_callback), v);
-
+ pci.fifo.base = pci.fifo_mem;
+ pci.fifo.size = 64*2;
+ pci.fifo.in = pci.fifo.out = 0;
+ pci.stall_state = NOT_STALLED;
+ pci.continue_timer = machine().scheduler().timer_alloc(timer_expired_delegate(FUNC(voodoo_device::stall_cpu_callback),this), nullptr);
+
/* allocate memory */
tmumem0 = m_tmumem0;
tmumem1 = m_tmumem1;
- if (v->type <= TYPE_VOODOO_2)
+ if (vd_type <= TYPE_VOODOO_2)
{
/* separate FB/TMU memory */
fbmem = auto_alloc_array(machine(), UINT8, m_fbmem << 20);
@@ -5153,47 +5061,47 @@ void voodoo_device::common_start_voodoo(UINT8 type)
/* shared memory */
tmumem[0] = tmumem[1] = fbmem = auto_alloc_array(machine(), UINT8, m_fbmem << 20);
tmumem0 = m_fbmem;
- if (v->type == TYPE_VOODOO_3)
+ if (vd_type == TYPE_VOODOO_3)
tmumem1 = m_fbmem;
}
/* set up frame buffer */
- init_fbi(v, &v->fbi, fbmem, m_fbmem << 20);
+ init_fbi(this, &fbi, fbmem, m_fbmem << 20);
/* build shared TMU tables */
- init_tmu_shared(&v->tmushare);
+ init_tmu_shared(&tmushare);
/* set up the TMUs */
- init_tmu(v, &v->tmu[0], &v->reg[0x100], tmumem[0], tmumem0 << 20);
- v->chipmask |= 0x02;
+ init_tmu(this, &tmu[0], &reg[0x100], tmumem[0], tmumem0 << 20);
+ chipmask |= 0x02;
if (tmumem1 != 0)
{
- init_tmu(v, &v->tmu[1], &v->reg[0x200], tmumem[1], tmumem1 << 20);
- v->chipmask |= 0x04;
- v->tmu_config |= 0x40;
+ init_tmu(this, &tmu[1], &reg[0x200], tmumem[1], tmumem1 << 20);
+ chipmask |= 0x04;
+ tmu_config |= 0x40;
}
/* initialize some registers */
- memset(v->reg, 0, sizeof(v->reg));
- v->pci.init_enable = 0;
- v->reg[fbiInit0].u = (1 << 4) | (0x10 << 6);
- v->reg[fbiInit1].u = (1 << 1) | (1 << 8) | (1 << 12) | (2 << 20);
- v->reg[fbiInit2].u = (1 << 6) | (0x100 << 23);
- v->reg[fbiInit3].u = (2 << 13) | (0xf << 17);
- v->reg[fbiInit4].u = (1 << 0);
+ memset(reg, 0, sizeof(reg));
+ pci.init_enable = 0;
+ reg[fbiInit0].u = (1 << 4) | (0x10 << 6);
+ reg[fbiInit1].u = (1 << 1) | (1 << 8) | (1 << 12) | (2 << 20);
+ reg[fbiInit2].u = (1 << 6) | (0x100 << 23);
+ reg[fbiInit3].u = (2 << 13) | (0xf << 17);
+ reg[fbiInit4].u = (1 << 0);
/* initialize banshee registers */
- memset(v->banshee.io, 0, sizeof(v->banshee.io));
- v->banshee.io[io_pciInit0] = 0x01800040;
- v->banshee.io[io_sipMonitor] = 0x40000000;
- v->banshee.io[io_lfbMemoryConfig] = 0x000a2200;
- v->banshee.io[io_dramInit0] = 0x00579d29;
- v->banshee.io[io_dramInit0] |= 0x08000000; // Konami Viper expects 16MBit SGRAMs
- v->banshee.io[io_dramInit1] = 0x00f02200;
- v->banshee.io[io_tmuGbeInit] = 0x00000bfb;
+ memset(banshee.io, 0, sizeof(banshee.io));
+ banshee.io[io_pciInit0] = 0x01800040;
+ banshee.io[io_sipMonitor] = 0x40000000;
+ banshee.io[io_lfbMemoryConfig] = 0x000a2200;
+ banshee.io[io_dramInit0] = 0x00579d29;
+ banshee.io[io_dramInit0] |= 0x08000000; // Konami Viper expects 16MBit SGRAMs
+ banshee.io[io_dramInit1] = 0x00f02200;
+ banshee.io[io_tmuGbeInit] = 0x00000bfb;
/* do a soft reset to reset everything else */
- soft_reset(v);
+ soft_reset(this);
/* register for save states */
init_save_state(this);
@@ -5210,12 +5118,12 @@ void voodoo_device::common_start_voodoo(UINT8 type)
command
-------------------------------------------------*/
-static INT32 fastfill(voodoo_state *v)
+INT32 voodoo_device::fastfill(voodoo_device *vd)
{
- int sx = (v->reg[clipLeftRight].u >> 16) & 0x3ff;
- int ex = (v->reg[clipLeftRight].u >> 0) & 0x3ff;
- int sy = (v->reg[clipLowYHighY].u >> 16) & 0x3ff;
- int ey = (v->reg[clipLowYHighY].u >> 0) & 0x3ff;
+ int sx = (vd->reg[clipLeftRight].u >> 16) & 0x3ff;
+ int ex = (vd->reg[clipLeftRight].u >> 0) & 0x3ff;
+ int sy = (vd->reg[clipLowYHighY].u >> 16) & 0x3ff;
+ int ey = (vd->reg[clipLowYHighY].u >> 0) & 0x3ff;
poly_extent extents[64];
UINT16 dithermatrix[16];
UINT16 *drawbuf = nullptr;
@@ -5223,22 +5131,22 @@ static INT32 fastfill(voodoo_state *v)
int extnum, x, y;
/* if we're not clearing either, take no time */
- if (!FBZMODE_RGB_BUFFER_MASK(v->reg[fbzMode].u) && !FBZMODE_AUX_BUFFER_MASK(v->reg[fbzMode].u))
+ if (!FBZMODE_RGB_BUFFER_MASK(vd->reg[fbzMode].u) && !FBZMODE_AUX_BUFFER_MASK(vd->reg[fbzMode].u))
return 0;
/* are we clearing the RGB buffer? */
- if (FBZMODE_RGB_BUFFER_MASK(v->reg[fbzMode].u))
+ if (FBZMODE_RGB_BUFFER_MASK(vd->reg[fbzMode].u))
{
/* determine the draw buffer */
- int destbuf = (v->type >= TYPE_VOODOO_BANSHEE) ? 1 : FBZMODE_DRAW_BUFFER(v->reg[fbzMode].u);
+ int destbuf = (vd->vd_type >= TYPE_VOODOO_BANSHEE) ? 1 : FBZMODE_DRAW_BUFFER(vd->reg[fbzMode].u);
switch (destbuf)
{
case 0: /* front buffer */
- drawbuf = (UINT16 *)(v->fbi.ram + v->fbi.rgboffs[v->fbi.frontbuf]);
+ drawbuf = (UINT16 *)(vd->fbi.ram + vd->fbi.rgboffs[vd->fbi.frontbuf]);
break;
case 1: /* back buffer */
- drawbuf = (UINT16 *)(v->fbi.ram + v->fbi.rgboffs[v->fbi.backbuf]);
+ drawbuf = (UINT16 *)(vd->fbi.ram + vd->fbi.rgboffs[vd->fbi.backbuf]);
break;
default: /* reserved */
@@ -5249,14 +5157,14 @@ static INT32 fastfill(voodoo_state *v)
for (y = 0; y < 4; y++)
{
DECLARE_DITHER_POINTERS_NO_DITHER_VAR;
- COMPUTE_DITHER_POINTERS_NO_DITHER_VAR(v->reg[fbzMode].u, y);
+ COMPUTE_DITHER_POINTERS_NO_DITHER_VAR(vd->reg[fbzMode].u, y);
for (x = 0; x < 4; x++)
{
- int r = v->reg[color1].rgb.r;
- int g = v->reg[color1].rgb.g;
- int b = v->reg[color1].rgb.b;
+ int r = vd->reg[color1].rgb.r;
+ int g = vd->reg[color1].rgb.g;
+ int b = vd->reg[color1].rgb.b;
- APPLY_DITHER(v->reg[fbzMode].u, x, dither_lookup, r, g, b);
+ APPLY_DITHER(vd->reg[fbzMode].u, x, dither_lookup, r, g, b);
dithermatrix[y*4 + x] = (r << 11) | (g << 5) | b;
}
}
@@ -5271,13 +5179,13 @@ static INT32 fastfill(voodoo_state *v)
/* iterate over blocks of extents */
for (y = sy; y < ey; y += ARRAY_LENGTH(extents))
{
- poly_extra_data *extra = (poly_extra_data *)poly_get_extra_data(v->poly);
+ poly_extra_data *extra = (poly_extra_data *)poly_get_extra_data(vd->poly);
int count = MIN(ey - y, ARRAY_LENGTH(extents));
- extra->state = v;
+ extra->device= vd;
memcpy(extra->dither, dithermatrix, sizeof(extra->dither));
- pixels += poly_render_triangle_custom(v->poly, drawbuf, global_cliprect, raster_fastfill, y, count, extents);
+ pixels += poly_render_triangle_custom(vd->poly, drawbuf, global_cliprect, raster_fastfill, y, count, extents);
}
/* 2 pixels per clock */
@@ -5290,23 +5198,23 @@ static INT32 fastfill(voodoo_state *v)
command
-------------------------------------------------*/
-static INT32 swapbuffer(voodoo_state *v, UINT32 data)
+INT32 voodoo_device::swapbuffer(voodoo_device* vd, UINT32 data)
{
/* set the don't swap value for Voodoo 2 */
- v->fbi.vblank_swap_pending = TRUE;
- v->fbi.vblank_swap = (data >> 1) & 0xff;
- v->fbi.vblank_dont_swap = (data >> 9) & 1;
+ vd->fbi.vblank_swap_pending = TRUE;
+ vd->fbi.vblank_swap = (data >> 1) & 0xff;
+ vd->fbi.vblank_dont_swap = (data >> 9) & 1;
/* if we're not syncing to the retrace, process the command immediately */
if (!(data & 1))
{
- swap_buffers(v);
+ swap_buffers(vd);
return 0;
}
/* determine how many cycles to wait; we deliberately overshoot here because */
/* the final count gets updated on the VBLANK */
- return (v->fbi.vblank_swap + 1) * v->freq / 30;
+ return (vd->fbi.vblank_swap + 1) * vd->freq / 30;
}
@@ -5315,7 +5223,7 @@ static INT32 swapbuffer(voodoo_state *v, UINT32 data)
command
-------------------------------------------------*/
-static INT32 triangle(voodoo_state *v)
+INT32 voodoo_device::triangle(voodoo_device *vd)
{
int texcount;
UINT16 *drawbuf;
@@ -5326,58 +5234,58 @@ static INT32 triangle(voodoo_state *v)
/* determine the number of TMUs involved */
texcount = 0;
- if (!FBIINIT3_DISABLE_TMUS(v->reg[fbiInit3].u) && FBZCP_TEXTURE_ENABLE(v->reg[fbzColorPath].u))
+ if (!FBIINIT3_DISABLE_TMUS(vd->reg[fbiInit3].u) && FBZCP_TEXTURE_ENABLE(vd->reg[fbzColorPath].u))
{
texcount = 1;
- if (v->chipmask & 0x04)
+ if (vd->chipmask & 0x04)
texcount = 2;
}
/* perform subpixel adjustments */
- if (FBZCP_CCA_SUBPIXEL_ADJUST(v->reg[fbzColorPath].u))
+ if (FBZCP_CCA_SUBPIXEL_ADJUST(vd->reg[fbzColorPath].u))
{
- INT32 dx = 8 - (v->fbi.ax & 15);
- INT32 dy = 8 - (v->fbi.ay & 15);
+ INT32 dx = 8 - (vd->fbi.ax & 15);
+ INT32 dy = 8 - (vd->fbi.ay & 15);
/* adjust iterated R,G,B,A and W/Z */
- v->fbi.startr += (dy * v->fbi.drdy + dx * v->fbi.drdx) >> 4;
- v->fbi.startg += (dy * v->fbi.dgdy + dx * v->fbi.dgdx) >> 4;
- v->fbi.startb += (dy * v->fbi.dbdy + dx * v->fbi.dbdx) >> 4;
- v->fbi.starta += (dy * v->fbi.dady + dx * v->fbi.dadx) >> 4;
- v->fbi.startw += (dy * v->fbi.dwdy + dx * v->fbi.dwdx) >> 4;
- v->fbi.startz += mul_32x32_shift(dy, v->fbi.dzdy, 4) + mul_32x32_shift(dx, v->fbi.dzdx, 4);
+ vd->fbi.startr += (dy * vd->fbi.drdy + dx * vd->fbi.drdx) >> 4;
+ vd->fbi.startg += (dy * vd->fbi.dgdy + dx * vd->fbi.dgdx) >> 4;
+ vd->fbi.startb += (dy * vd->fbi.dbdy + dx * vd->fbi.dbdx) >> 4;
+ vd->fbi.starta += (dy * vd->fbi.dady + dx * vd->fbi.dadx) >> 4;
+ vd->fbi.startw += (dy * vd->fbi.dwdy + dx * vd->fbi.dwdx) >> 4;
+ vd->fbi.startz += mul_32x32_shift(dy, vd->fbi.dzdy, 4) + mul_32x32_shift(dx, vd->fbi.dzdx, 4);
/* adjust iterated W/S/T for TMU 0 */
if (texcount >= 1)
{
- v->tmu[0].startw += (dy * v->tmu[0].dwdy + dx * v->tmu[0].dwdx) >> 4;
- v->tmu[0].starts += (dy * v->tmu[0].dsdy + dx * v->tmu[0].dsdx) >> 4;
- v->tmu[0].startt += (dy * v->tmu[0].dtdy + dx * v->tmu[0].dtdx) >> 4;
+ vd->tmu[0].startw += (dy * vd->tmu[0].dwdy + dx * vd->tmu[0].dwdx) >> 4;
+ vd->tmu[0].starts += (dy * vd->tmu[0].dsdy + dx * vd->tmu[0].dsdx) >> 4;
+ vd->tmu[0].startt += (dy * vd->tmu[0].dtdy + dx * vd->tmu[0].dtdx) >> 4;
/* adjust iterated W/S/T for TMU 1 */
if (texcount >= 2)
{
- v->tmu[1].startw += (dy * v->tmu[1].dwdy + dx * v->tmu[1].dwdx) >> 4;
- v->tmu[1].starts += (dy * v->tmu[1].dsdy + dx * v->tmu[1].dsdx) >> 4;
- v->tmu[1].startt += (dy * v->tmu[1].dtdy + dx * v->tmu[1].dtdx) >> 4;
+ vd->tmu[1].startw += (dy * vd->tmu[1].dwdy + dx * vd->tmu[1].dwdx) >> 4;
+ vd->tmu[1].starts += (dy * vd->tmu[1].dsdy + dx * vd->tmu[1].dsdx) >> 4;
+ vd->tmu[1].startt += (dy * vd->tmu[1].dtdy + dx * vd->tmu[1].dtdx) >> 4;
}
}
}
/* wait for any outstanding work to finish */
-// poly_wait(v->poly, "triangle");
+// poly_wait(vd->poly, "triangle");
/* determine the draw buffer */
- destbuf = (v->type >= TYPE_VOODOO_BANSHEE) ? 1 : FBZMODE_DRAW_BUFFER(v->reg[fbzMode].u);
+ destbuf = (vd->vd_type >= TYPE_VOODOO_BANSHEE) ? 1 : FBZMODE_DRAW_BUFFER(vd->reg[fbzMode].u);
switch (destbuf)
{
case 0: /* front buffer */
- drawbuf = (UINT16 *)(v->fbi.ram + v->fbi.rgboffs[v->fbi.frontbuf]);
- v->fbi.video_changed = TRUE;
+ drawbuf = (UINT16 *)(vd->fbi.ram + vd->fbi.rgboffs[vd->fbi.frontbuf]);
+ vd->fbi.video_changed = TRUE;
break;
case 1: /* back buffer */
- drawbuf = (UINT16 *)(v->fbi.ram + v->fbi.rgboffs[v->fbi.backbuf]);
+ drawbuf = (UINT16 *)(vd->fbi.ram + vd->fbi.rgboffs[vd->fbi.backbuf]);
break;
default: /* reserved */
@@ -5385,18 +5293,18 @@ static INT32 triangle(voodoo_state *v)
}
/* find a rasterizer that matches our current state */
- pixels = triangle_create_work_item(v, drawbuf, texcount);
+ pixels = triangle_create_work_item(vd, drawbuf, texcount);
/* update stats */
- v->reg[fbiTrianglesOut].u++;
+ vd->reg[fbiTrianglesOut].u++;
/* update stats */
- v->stats.total_triangles++;
+ vd->stats.total_triangles++;
g_profiler.stop();
/* 1 pixel per clock, plus some setup time */
- if (LOG_REGISTERS) v->device->logerror("cycles = %d\n", TRIANGLE_SETUP_CLOCKS + pixels);
+ if (LOG_REGISTERS) vd->device->logerror("cycles = %d\n", TRIANGLE_SETUP_CLOCKS + pixels);
return TRIANGLE_SETUP_CLOCKS + pixels;
}
@@ -5406,28 +5314,28 @@ static INT32 triangle(voodoo_state *v)
command
-------------------------------------------------*/
-static INT32 begin_triangle(voodoo_state *v)
+INT32 voodoo_device::begin_triangle(voodoo_device *vd)
{
- setup_vertex *sv = &v->fbi.svert[2];
+ setup_vertex *sv = &vd->fbi.svert[2];
/* extract all the data from registers */
- sv->x = v->reg[sVx].f;
- sv->y = v->reg[sVy].f;
- sv->wb = v->reg[sWb].f;
- sv->w0 = v->reg[sWtmu0].f;
- sv->s0 = v->reg[sS_W0].f;
- sv->t0 = v->reg[sT_W0].f;
- sv->w1 = v->reg[sWtmu1].f;
- sv->s1 = v->reg[sS_Wtmu1].f;
- sv->t1 = v->reg[sT_Wtmu1].f;
- sv->a = v->reg[sAlpha].f;
- sv->r = v->reg[sRed].f;
- sv->g = v->reg[sGreen].f;
- sv->b = v->reg[sBlue].f;
+ sv->x = vd->reg[sVx].f;
+ sv->y = vd->reg[sVy].f;
+ sv->wb = vd->reg[sWb].f;
+ sv->w0 = vd->reg[sWtmu0].f;
+ sv->s0 = vd->reg[sS_W0].f;
+ sv->t0 = vd->reg[sT_W0].f;
+ sv->w1 = vd->reg[sWtmu1].f;
+ sv->s1 = vd->reg[sS_Wtmu1].f;
+ sv->t1 = vd->reg[sT_Wtmu1].f;
+ sv->a = vd->reg[sAlpha].f;
+ sv->r = vd->reg[sRed].f;
+ sv->g = vd->reg[sGreen].f;
+ sv->b = vd->reg[sBlue].f;
/* spread it across all three verts and reset the count */
- v->fbi.svert[0] = v->fbi.svert[1] = v->fbi.svert[2];
- v->fbi.sverts = 1;
+ vd->fbi.svert[0] = vd->fbi.svert[1] = vd->fbi.svert[2];
+ vd->fbi.sverts = 1;
return 0;
}
@@ -5438,36 +5346,36 @@ static INT32 begin_triangle(voodoo_state *v)
command
-------------------------------------------------*/
-static INT32 draw_triangle(voodoo_state *v)
+INT32 voodoo_device::draw_triangle(voodoo_device *vd)
{
- setup_vertex *sv = &v->fbi.svert[2];
+ setup_vertex *sv = &vd->fbi.svert[2];
int cycles = 0;
/* for strip mode, shuffle vertex 1 down to 0 */
- if (!(v->reg[sSetupMode].u & (1 << 16)))
- v->fbi.svert[0] = v->fbi.svert[1];
+ if (!(vd->reg[sSetupMode].u & (1 << 16)))
+ vd->fbi.svert[0] = vd->fbi.svert[1];
/* copy 2 down to 1 regardless */
- v->fbi.svert[1] = v->fbi.svert[2];
+ vd->fbi.svert[1] = vd->fbi.svert[2];
/* extract all the data from registers */
- sv->x = v->reg[sVx].f;
- sv->y = v->reg[sVy].f;
- sv->wb = v->reg[sWb].f;
- sv->w0 = v->reg[sWtmu0].f;
- sv->s0 = v->reg[sS_W0].f;
- sv->t0 = v->reg[sT_W0].f;
- sv->w1 = v->reg[sWtmu1].f;
- sv->s1 = v->reg[sS_Wtmu1].f;
- sv->t1 = v->reg[sT_Wtmu1].f;
- sv->a = v->reg[sAlpha].f;
- sv->r = v->reg[sRed].f;
- sv->g = v->reg[sGreen].f;
- sv->b = v->reg[sBlue].f;
+ sv->x = vd->reg[sVx].f;
+ sv->y = vd->reg[sVy].f;
+ sv->wb = vd->reg[sWb].f;
+ sv->w0 = vd->reg[sWtmu0].f;
+ sv->s0 = vd->reg[sS_W0].f;
+ sv->t0 = vd->reg[sT_W0].f;
+ sv->w1 = vd->reg[sWtmu1].f;
+ sv->s1 = vd->reg[sS_Wtmu1].f;
+ sv->t1 = vd->reg[sT_Wtmu1].f;
+ sv->a = vd->reg[sAlpha].f;
+ sv->r = vd->reg[sRed].f;
+ sv->g = vd->reg[sGreen].f;
+ sv->b = vd->reg[sBlue].f;
/* if we have enough verts, go ahead and draw */
- if (++v->fbi.sverts >= 3)
- cycles = setup_and_draw_triangle(v);
+ if (++vd->fbi.sverts >= 3)
+ cycles = setup_and_draw_triangle(vd);
return cycles;
}
@@ -5483,32 +5391,32 @@ static INT32 draw_triangle(voodoo_state *v)
parameters and render the triangle
-------------------------------------------------*/
-static INT32 setup_and_draw_triangle(voodoo_state *v)
+INT32 voodoo_device::setup_and_draw_triangle(voodoo_device *vd)
{
float dx1, dy1, dx2, dy2;
float divisor, tdiv;
/* grab the X/Ys at least */
- v->fbi.ax = (INT16)(v->fbi.svert[0].x * 16.0f);
- v->fbi.ay = (INT16)(v->fbi.svert[0].y * 16.0f);
- v->fbi.bx = (INT16)(v->fbi.svert[1].x * 16.0f);
- v->fbi.by = (INT16)(v->fbi.svert[1].y * 16.0f);
- v->fbi.cx = (INT16)(v->fbi.svert[2].x * 16.0f);
- v->fbi.cy = (INT16)(v->fbi.svert[2].y * 16.0f);
+ vd->fbi.ax = (INT16)(vd->fbi.svert[0].x * 16.0f);
+ vd->fbi.ay = (INT16)(vd->fbi.svert[0].y * 16.0f);
+ vd->fbi.bx = (INT16)(vd->fbi.svert[1].x * 16.0f);
+ vd->fbi.by = (INT16)(vd->fbi.svert[1].y * 16.0f);
+ vd->fbi.cx = (INT16)(vd->fbi.svert[2].x * 16.0f);
+ vd->fbi.cy = (INT16)(vd->fbi.svert[2].y * 16.0f);
/* compute the divisor */
- divisor = 1.0f / ((v->fbi.svert[0].x - v->fbi.svert[1].x) * (v->fbi.svert[0].y - v->fbi.svert[2].y) -
- (v->fbi.svert[0].x - v->fbi.svert[2].x) * (v->fbi.svert[0].y - v->fbi.svert[1].y));
+ divisor = 1.0f / ((vd->fbi.svert[0].x - vd->fbi.svert[1].x) * (vd->fbi.svert[0].y - vd->fbi.svert[2].y) -
+ (vd->fbi.svert[0].x - vd->fbi.svert[2].x) * (vd->fbi.svert[0].y - vd->fbi.svert[1].y));
/* backface culling */
- if (v->reg[sSetupMode].u & 0x20000)
+ if (vd->reg[sSetupMode].u & 0x20000)
{
- int culling_sign = (v->reg[sSetupMode].u >> 18) & 1;
+ int culling_sign = (vd->reg[sSetupMode].u >> 18) & 1;
int divisor_sign = (divisor < 0);
/* if doing strips and ping pong is enabled, apply the ping pong */
- if ((v->reg[sSetupMode].u & 0x90000) == 0x00000)
- culling_sign ^= (v->fbi.sverts - 3) & 1;
+ if ((vd->reg[sSetupMode].u & 0x90000) == 0x00000)
+ culling_sign ^= (vd->fbi.sverts - 3) & 1;
/* if our sign matches the culling sign, we're done for */
if (divisor_sign == culling_sign)
@@ -5516,92 +5424,92 @@ static INT32 setup_and_draw_triangle(voodoo_state *v)
}
/* compute the dx/dy values */
- dx1 = v->fbi.svert[0].y - v->fbi.svert[2].y;
- dx2 = v->fbi.svert[0].y - v->fbi.svert[1].y;
- dy1 = v->fbi.svert[0].x - v->fbi.svert[1].x;
- dy2 = v->fbi.svert[0].x - v->fbi.svert[2].x;
+ dx1 = vd->fbi.svert[0].y - vd->fbi.svert[2].y;
+ dx2 = vd->fbi.svert[0].y - vd->fbi.svert[1].y;
+ dy1 = vd->fbi.svert[0].x - vd->fbi.svert[1].x;
+ dy2 = vd->fbi.svert[0].x - vd->fbi.svert[2].x;
/* set up R,G,B */
tdiv = divisor * 4096.0f;
- if (v->reg[sSetupMode].u & (1 << 0))
+ if (vd->reg[sSetupMode].u & (1 << 0))
{
- v->fbi.startr = (INT32)(v->fbi.svert[0].r * 4096.0f);
- v->fbi.drdx = (INT32)(((v->fbi.svert[0].r - v->fbi.svert[1].r) * dx1 - (v->fbi.svert[0].r - v->fbi.svert[2].r) * dx2) * tdiv);
- v->fbi.drdy = (INT32)(((v->fbi.svert[0].r - v->fbi.svert[2].r) * dy1 - (v->fbi.svert[0].r - v->fbi.svert[1].r) * dy2) * tdiv);
- v->fbi.startg = (INT32)(v->fbi.svert[0].g * 4096.0f);
- v->fbi.dgdx = (INT32)(((v->fbi.svert[0].g - v->fbi.svert[1].g) * dx1 - (v->fbi.svert[0].g - v->fbi.svert[2].g) * dx2) * tdiv);
- v->fbi.dgdy = (INT32)(((v->fbi.svert[0].g - v->fbi.svert[2].g) * dy1 - (v->fbi.svert[0].g - v->fbi.svert[1].g) * dy2) * tdiv);
- v->fbi.startb = (INT32)(v->fbi.svert[0].b * 4096.0f);
- v->fbi.dbdx = (INT32)(((v->fbi.svert[0].b - v->fbi.svert[1].b) * dx1 - (v->fbi.svert[0].b - v->fbi.svert[2].b) * dx2) * tdiv);
- v->fbi.dbdy = (INT32)(((v->fbi.svert[0].b - v->fbi.svert[2].b) * dy1 - (v->fbi.svert[0].b - v->fbi.svert[1].b) * dy2) * tdiv);
+ vd->fbi.startr = (INT32)(vd->fbi.svert[0].r * 4096.0f);
+ vd->fbi.drdx = (INT32)(((vd->fbi.svert[0].r - vd->fbi.svert[1].r) * dx1 - (vd->fbi.svert[0].r - vd->fbi.svert[2].r) * dx2) * tdiv);
+ vd->fbi.drdy = (INT32)(((vd->fbi.svert[0].r - vd->fbi.svert[2].r) * dy1 - (vd->fbi.svert[0].r - vd->fbi.svert[1].r) * dy2) * tdiv);
+ vd->fbi.startg = (INT32)(vd->fbi.svert[0].g * 4096.0f);
+ vd->fbi.dgdx = (INT32)(((vd->fbi.svert[0].g - vd->fbi.svert[1].g) * dx1 - (vd->fbi.svert[0].g - vd->fbi.svert[2].g) * dx2) * tdiv);
+ vd->fbi.dgdy = (INT32)(((vd->fbi.svert[0].g - vd->fbi.svert[2].g) * dy1 - (vd->fbi.svert[0].g - vd->fbi.svert[1].g) * dy2) * tdiv);
+ vd->fbi.startb = (INT32)(vd->fbi.svert[0].b * 4096.0f);
+ vd->fbi.dbdx = (INT32)(((vd->fbi.svert[0].b - vd->fbi.svert[1].b) * dx1 - (vd->fbi.svert[0].b - vd->fbi.svert[2].b) * dx2) * tdiv);
+ vd->fbi.dbdy = (INT32)(((vd->fbi.svert[0].b - vd->fbi.svert[2].b) * dy1 - (vd->fbi.svert[0].b - vd->fbi.svert[1].b) * dy2) * tdiv);
}
/* set up alpha */
- if (v->reg[sSetupMode].u & (1 << 1))
+ if (vd->reg[sSetupMode].u & (1 << 1))
{
- v->fbi.starta = (INT32)(v->fbi.svert[0].a * 4096.0f);
- v->fbi.dadx = (INT32)(((v->fbi.svert[0].a - v->fbi.svert[1].a) * dx1 - (v->fbi.svert[0].a - v->fbi.svert[2].a) * dx2) * tdiv);
- v->fbi.dady = (INT32)(((v->fbi.svert[0].a - v->fbi.svert[2].a) * dy1 - (v->fbi.svert[0].a - v->fbi.svert[1].a) * dy2) * tdiv);
+ vd->fbi.starta = (INT32)(vd->fbi.svert[0].a * 4096.0f);
+ vd->fbi.dadx = (INT32)(((vd->fbi.svert[0].a - vd->fbi.svert[1].a) * dx1 - (vd->fbi.svert[0].a - vd->fbi.svert[2].a) * dx2) * tdiv);
+ vd->fbi.dady = (INT32)(((vd->fbi.svert[0].a - vd->fbi.svert[2].a) * dy1 - (vd->fbi.svert[0].a - vd->fbi.svert[1].a) * dy2) * tdiv);
}
/* set up Z */
- if (v->reg[sSetupMode].u & (1 << 2))
+ if (vd->reg[sSetupMode].u & (1 << 2))
{
- v->fbi.startz = (INT32)(v->fbi.svert[0].z * 4096.0f);
- v->fbi.dzdx = (INT32)(((v->fbi.svert[0].z - v->fbi.svert[1].z) * dx1 - (v->fbi.svert[0].z - v->fbi.svert[2].z) * dx2) * tdiv);
- v->fbi.dzdy = (INT32)(((v->fbi.svert[0].z - v->fbi.svert[2].z) * dy1 - (v->fbi.svert[0].z - v->fbi.svert[1].z) * dy2) * tdiv);
+ vd->fbi.startz = (INT32)(vd->fbi.svert[0].z * 4096.0f);
+ vd->fbi.dzdx = (INT32)(((vd->fbi.svert[0].z - vd->fbi.svert[1].z) * dx1 - (vd->fbi.svert[0].z - vd->fbi.svert[2].z) * dx2) * tdiv);
+ vd->fbi.dzdy = (INT32)(((vd->fbi.svert[0].z - vd->fbi.svert[2].z) * dy1 - (vd->fbi.svert[0].z - vd->fbi.svert[1].z) * dy2) * tdiv);
}
/* set up Wb */
tdiv = divisor * 65536.0f * 65536.0f;
- if (v->reg[sSetupMode].u & (1 << 3))
+ if (vd->reg[sSetupMode].u & (1 << 3))
{
- v->fbi.startw = v->tmu[0].startw = v->tmu[1].startw = (INT64)(v->fbi.svert[0].wb * 65536.0f * 65536.0f);
- v->fbi.dwdx = v->tmu[0].dwdx = v->tmu[1].dwdx = ((v->fbi.svert[0].wb - v->fbi.svert[1].wb) * dx1 - (v->fbi.svert[0].wb - v->fbi.svert[2].wb) * dx2) * tdiv;
- v->fbi.dwdy = v->tmu[0].dwdy = v->tmu[1].dwdy = ((v->fbi.svert[0].wb - v->fbi.svert[2].wb) * dy1 - (v->fbi.svert[0].wb - v->fbi.svert[1].wb) * dy2) * tdiv;
+ vd->fbi.startw = vd->tmu[0].startw = vd->tmu[1].startw = (INT64)(vd->fbi.svert[0].wb * 65536.0f * 65536.0f);
+ vd->fbi.dwdx = vd->tmu[0].dwdx = vd->tmu[1].dwdx = ((vd->fbi.svert[0].wb - vd->fbi.svert[1].wb) * dx1 - (vd->fbi.svert[0].wb - vd->fbi.svert[2].wb) * dx2) * tdiv;
+ vd->fbi.dwdy = vd->tmu[0].dwdy = vd->tmu[1].dwdy = ((vd->fbi.svert[0].wb - vd->fbi.svert[2].wb) * dy1 - (vd->fbi.svert[0].wb - vd->fbi.svert[1].wb) * dy2) * tdiv;
}
/* set up W0 */
- if (v->reg[sSetupMode].u & (1 << 4))
+ if (vd->reg[sSetupMode].u & (1 << 4))
{
- v->tmu[0].startw = v->tmu[1].startw = (INT64)(v->fbi.svert[0].w0 * 65536.0f * 65536.0f);
- v->tmu[0].dwdx = v->tmu[1].dwdx = ((v->fbi.svert[0].w0 - v->fbi.svert[1].w0) * dx1 - (v->fbi.svert[0].w0 - v->fbi.svert[2].w0) * dx2) * tdiv;
- v->tmu[0].dwdy = v->tmu[1].dwdy = ((v->fbi.svert[0].w0 - v->fbi.svert[2].w0) * dy1 - (v->fbi.svert[0].w0 - v->fbi.svert[1].w0) * dy2) * tdiv;
+ vd->tmu[0].startw = vd->tmu[1].startw = (INT64)(vd->fbi.svert[0].w0 * 65536.0f * 65536.0f);
+ vd->tmu[0].dwdx = vd->tmu[1].dwdx = ((vd->fbi.svert[0].w0 - vd->fbi.svert[1].w0) * dx1 - (vd->fbi.svert[0].w0 - vd->fbi.svert[2].w0) * dx2) * tdiv;
+ vd->tmu[0].dwdy = vd->tmu[1].dwdy = ((vd->fbi.svert[0].w0 - vd->fbi.svert[2].w0) * dy1 - (vd->fbi.svert[0].w0 - vd->fbi.svert[1].w0) * dy2) * tdiv;
}
/* set up S0,T0 */
- if (v->reg[sSetupMode].u & (1 << 5))
+ if (vd->reg[sSetupMode].u & (1 << 5))
{
- v->tmu[0].starts = v->tmu[1].starts = (INT64)(v->fbi.svert[0].s0 * 65536.0f * 65536.0f);
- v->tmu[0].dsdx = v->tmu[1].dsdx = ((v->fbi.svert[0].s0 - v->fbi.svert[1].s0) * dx1 - (v->fbi.svert[0].s0 - v->fbi.svert[2].s0) * dx2) * tdiv;
- v->tmu[0].dsdy = v->tmu[1].dsdy = ((v->fbi.svert[0].s0 - v->fbi.svert[2].s0) * dy1 - (v->fbi.svert[0].s0 - v->fbi.svert[1].s0) * dy2) * tdiv;
- v->tmu[0].startt = v->tmu[1].startt = (INT64)(v->fbi.svert[0].t0 * 65536.0f * 65536.0f);
- v->tmu[0].dtdx = v->tmu[1].dtdx = ((v->fbi.svert[0].t0 - v->fbi.svert[1].t0) * dx1 - (v->fbi.svert[0].t0 - v->fbi.svert[2].t0) * dx2) * tdiv;
- v->tmu[0].dtdy = v->tmu[1].dtdy = ((v->fbi.svert[0].t0 - v->fbi.svert[2].t0) * dy1 - (v->fbi.svert[0].t0 - v->fbi.svert[1].t0) * dy2) * tdiv;
+ vd->tmu[0].starts = vd->tmu[1].starts = (INT64)(vd->fbi.svert[0].s0 * 65536.0f * 65536.0f);
+ vd->tmu[0].dsdx = vd->tmu[1].dsdx = ((vd->fbi.svert[0].s0 - vd->fbi.svert[1].s0) * dx1 - (vd->fbi.svert[0].s0 - vd->fbi.svert[2].s0) * dx2) * tdiv;
+ vd->tmu[0].dsdy = vd->tmu[1].dsdy = ((vd->fbi.svert[0].s0 - vd->fbi.svert[2].s0) * dy1 - (vd->fbi.svert[0].s0 - vd->fbi.svert[1].s0) * dy2) * tdiv;
+ vd->tmu[0].startt = vd->tmu[1].startt = (INT64)(vd->fbi.svert[0].t0 * 65536.0f * 65536.0f);
+ vd->tmu[0].dtdx = vd->tmu[1].dtdx = ((vd->fbi.svert[0].t0 - vd->fbi.svert[1].t0) * dx1 - (vd->fbi.svert[0].t0 - vd->fbi.svert[2].t0) * dx2) * tdiv;
+ vd->tmu[0].dtdy = vd->tmu[1].dtdy = ((vd->fbi.svert[0].t0 - vd->fbi.svert[2].t0) * dy1 - (vd->fbi.svert[0].t0 - vd->fbi.svert[1].t0) * dy2) * tdiv;
}
/* set up W1 */
- if (v->reg[sSetupMode].u & (1 << 6))
+ if (vd->reg[sSetupMode].u & (1 << 6))
{
- v->tmu[1].startw = (INT64)(v->fbi.svert[0].w1 * 65536.0f * 65536.0f);
- v->tmu[1].dwdx = ((v->fbi.svert[0].w1 - v->fbi.svert[1].w1) * dx1 - (v->fbi.svert[0].w1 - v->fbi.svert[2].w1) * dx2) * tdiv;
- v->tmu[1].dwdy = ((v->fbi.svert[0].w1 - v->fbi.svert[2].w1) * dy1 - (v->fbi.svert[0].w1 - v->fbi.svert[1].w1) * dy2) * tdiv;
+ vd->tmu[1].startw = (INT64)(vd->fbi.svert[0].w1 * 65536.0f * 65536.0f);
+ vd->tmu[1].dwdx = ((vd->fbi.svert[0].w1 - vd->fbi.svert[1].w1) * dx1 - (vd->fbi.svert[0].w1 - vd->fbi.svert[2].w1) * dx2) * tdiv;
+ vd->tmu[1].dwdy = ((vd->fbi.svert[0].w1 - vd->fbi.svert[2].w1) * dy1 - (vd->fbi.svert[0].w1 - vd->fbi.svert[1].w1) * dy2) * tdiv;
}
/* set up S1,T1 */
- if (v->reg[sSetupMode].u & (1 << 7))
+ if (vd->reg[sSetupMode].u & (1 << 7))
{
- v->tmu[1].starts = (INT64)(v->fbi.svert[0].s1 * 65536.0f * 65536.0f);
- v->tmu[1].dsdx = ((v->fbi.svert[0].s1 - v->fbi.svert[1].s1) * dx1 - (v->fbi.svert[0].s1 - v->fbi.svert[2].s1) * dx2) * tdiv;
- v->tmu[1].dsdy = ((v->fbi.svert[0].s1 - v->fbi.svert[2].s1) * dy1 - (v->fbi.svert[0].s1 - v->fbi.svert[1].s1) * dy2) * tdiv;
- v->tmu[1].startt = (INT64)(v->fbi.svert[0].t1 * 65536.0f * 65536.0f);
- v->tmu[1].dtdx = ((v->fbi.svert[0].t1 - v->fbi.svert[1].t1) * dx1 - (v->fbi.svert[0].t1 - v->fbi.svert[2].t1) * dx2) * tdiv;
- v->tmu[1].dtdy = ((v->fbi.svert[0].t1 - v->fbi.svert[2].t1) * dy1 - (v->fbi.svert[0].t1 - v->fbi.svert[1].t1) * dy2) * tdiv;
+ vd->tmu[1].starts = (INT64)(vd->fbi.svert[0].s1 * 65536.0f * 65536.0f);
+ vd->tmu[1].dsdx = ((vd->fbi.svert[0].s1 - vd->fbi.svert[1].s1) * dx1 - (vd->fbi.svert[0].s1 - vd->fbi.svert[2].s1) * dx2) * tdiv;
+ vd->tmu[1].dsdy = ((vd->fbi.svert[0].s1 - vd->fbi.svert[2].s1) * dy1 - (vd->fbi.svert[0].s1 - vd->fbi.svert[1].s1) * dy2) * tdiv;
+ vd->tmu[1].startt = (INT64)(vd->fbi.svert[0].t1 * 65536.0f * 65536.0f);
+ vd->tmu[1].dtdx = ((vd->fbi.svert[0].t1 - vd->fbi.svert[1].t1) * dx1 - (vd->fbi.svert[0].t1 - vd->fbi.svert[2].t1) * dx2) * tdiv;
+ vd->tmu[1].dtdy = ((vd->fbi.svert[0].t1 - vd->fbi.svert[2].t1) * dy1 - (vd->fbi.svert[0].t1 - vd->fbi.svert[1].t1) * dy2) * tdiv;
}
/* draw the triangle */
- v->fbi.cheating_allowed = 1;
- return triangle(v);
+ vd->fbi.cheating_allowed = 1;
+ return triangle(vd);
}
@@ -5610,81 +5518,82 @@ static INT32 setup_and_draw_triangle(voodoo_state *v)
setup and create the work item
-------------------------------------------------*/
-static INT32 triangle_create_work_item(voodoo_state *v, UINT16 *drawbuf, int texcount)
+INT32 voodoo_device::triangle_create_work_item(voodoo_device* vd, UINT16 *drawbuf, int texcount)
{
- poly_extra_data *extra = (poly_extra_data *)poly_get_extra_data(v->poly);
- raster_info *info = find_rasterizer(v, texcount);
+ poly_extra_data *extra = (poly_extra_data *)poly_get_extra_data(vd->poly);
+
+ raster_info *info = find_rasterizer(vd, texcount);
poly_vertex vert[3];
/* fill in the vertex data */
- vert[0].x = (float)v->fbi.ax * (1.0f / 16.0f);
- vert[0].y = (float)v->fbi.ay * (1.0f / 16.0f);
- vert[1].x = (float)v->fbi.bx * (1.0f / 16.0f);
- vert[1].y = (float)v->fbi.by * (1.0f / 16.0f);
- vert[2].x = (float)v->fbi.cx * (1.0f / 16.0f);
- vert[2].y = (float)v->fbi.cy * (1.0f / 16.0f);
+ vert[0].x = (float)vd->fbi.ax * (1.0f / 16.0f);
+ vert[0].y = (float)vd->fbi.ay * (1.0f / 16.0f);
+ vert[1].x = (float)vd->fbi.bx * (1.0f / 16.0f);
+ vert[1].y = (float)vd->fbi.by * (1.0f / 16.0f);
+ vert[2].x = (float)vd->fbi.cx * (1.0f / 16.0f);
+ vert[2].y = (float)vd->fbi.cy * (1.0f / 16.0f);
/* fill in the extra data */
- extra->state = v;
+ extra->device = vd;
extra->info = info;
/* fill in triangle parameters */
- extra->ax = v->fbi.ax;
- extra->ay = v->fbi.ay;
- extra->startr = v->fbi.startr;
- extra->startg = v->fbi.startg;
- extra->startb = v->fbi.startb;
- extra->starta = v->fbi.starta;
- extra->startz = v->fbi.startz;
- extra->startw = v->fbi.startw;
- extra->drdx = v->fbi.drdx;
- extra->dgdx = v->fbi.dgdx;
- extra->dbdx = v->fbi.dbdx;
- extra->dadx = v->fbi.dadx;
- extra->dzdx = v->fbi.dzdx;
- extra->dwdx = v->fbi.dwdx;
- extra->drdy = v->fbi.drdy;
- extra->dgdy = v->fbi.dgdy;
- extra->dbdy = v->fbi.dbdy;
- extra->dady = v->fbi.dady;
- extra->dzdy = v->fbi.dzdy;
- extra->dwdy = v->fbi.dwdy;
+ extra->ax = vd->fbi.ax;
+ extra->ay = vd->fbi.ay;
+ extra->startr = vd->fbi.startr;
+ extra->startg = vd->fbi.startg;
+ extra->startb = vd->fbi.startb;
+ extra->starta = vd->fbi.starta;
+ extra->startz = vd->fbi.startz;
+ extra->startw = vd->fbi.startw;
+ extra->drdx = vd->fbi.drdx;
+ extra->dgdx = vd->fbi.dgdx;
+ extra->dbdx = vd->fbi.dbdx;
+ extra->dadx = vd->fbi.dadx;
+ extra->dzdx = vd->fbi.dzdx;
+ extra->dwdx = vd->fbi.dwdx;
+ extra->drdy = vd->fbi.drdy;
+ extra->dgdy = vd->fbi.dgdy;
+ extra->dbdy = vd->fbi.dbdy;
+ extra->dady = vd->fbi.dady;
+ extra->dzdy = vd->fbi.dzdy;
+ extra->dwdy = vd->fbi.dwdy;
/* fill in texture 0 parameters */
if (texcount > 0)
{
- extra->starts0 = v->tmu[0].starts;
- extra->startt0 = v->tmu[0].startt;
- extra->startw0 = v->tmu[0].startw;
- extra->ds0dx = v->tmu[0].dsdx;
- extra->dt0dx = v->tmu[0].dtdx;
- extra->dw0dx = v->tmu[0].dwdx;
- extra->ds0dy = v->tmu[0].dsdy;
- extra->dt0dy = v->tmu[0].dtdy;
- extra->dw0dy = v->tmu[0].dwdy;
- extra->lodbase0 = prepare_tmu(&v->tmu[0]);
- v->stats.texture_mode[TEXMODE_FORMAT(v->tmu[0].reg[textureMode].u)]++;
+ extra->starts0 = vd->tmu[0].starts;
+ extra->startt0 = vd->tmu[0].startt;
+ extra->startw0 = vd->tmu[0].startw;
+ extra->ds0dx = vd->tmu[0].dsdx;
+ extra->dt0dx = vd->tmu[0].dtdx;
+ extra->dw0dx = vd->tmu[0].dwdx;
+ extra->ds0dy = vd->tmu[0].dsdy;
+ extra->dt0dy = vd->tmu[0].dtdy;
+ extra->dw0dy = vd->tmu[0].dwdy;
+ extra->lodbase0 = prepare_tmu(&vd->tmu[0]);
+ vd->stats.texture_mode[TEXMODE_FORMAT(vd->tmu[0].reg[textureMode].u)]++;
/* fill in texture 1 parameters */
if (texcount > 1)
{
- extra->starts1 = v->tmu[1].starts;
- extra->startt1 = v->tmu[1].startt;
- extra->startw1 = v->tmu[1].startw;
- extra->ds1dx = v->tmu[1].dsdx;
- extra->dt1dx = v->tmu[1].dtdx;
- extra->dw1dx = v->tmu[1].dwdx;
- extra->ds1dy = v->tmu[1].dsdy;
- extra->dt1dy = v->tmu[1].dtdy;
- extra->dw1dy = v->tmu[1].dwdy;
- extra->lodbase1 = prepare_tmu(&v->tmu[1]);
- v->stats.texture_mode[TEXMODE_FORMAT(v->tmu[1].reg[textureMode].u)]++;
+ extra->starts1 = vd->tmu[1].starts;
+ extra->startt1 = vd->tmu[1].startt;
+ extra->startw1 = vd->tmu[1].startw;
+ extra->ds1dx = vd->tmu[1].dsdx;
+ extra->dt1dx = vd->tmu[1].dtdx;
+ extra->dw1dx = vd->tmu[1].dwdx;
+ extra->ds1dy = vd->tmu[1].dsdy;
+ extra->dt1dy = vd->tmu[1].dtdy;
+ extra->dw1dy = vd->tmu[1].dwdy;
+ extra->lodbase1 = prepare_tmu(&vd->tmu[1]);
+ vd->stats.texture_mode[TEXMODE_FORMAT(vd->tmu[1].reg[textureMode].u)]++;
}
}
/* farm the rasterization out to other threads */
info->polys++;
- return poly_render_triangle(v->poly, drawbuf, global_cliprect, info->callback, 0, &vert[0], &vert[1], &vert[2]);
+ return poly_render_triangle(vd->poly, drawbuf, global_cliprect, info->callback, 0, &vert[0], &vert[1], &vert[2]);
}
@@ -5698,12 +5607,12 @@ static INT32 triangle_create_work_item(voodoo_state *v, UINT16 *drawbuf, int tex
hash table
-------------------------------------------------*/
-static raster_info *add_rasterizer(voodoo_state *v, const raster_info *cinfo)
+raster_info *voodoo_device::add_rasterizer(voodoo_device *vd, const raster_info *cinfo)
{
- raster_info *info = &v->rasterizer[v->next_rasterizer++];
+ raster_info *info = &vd->rasterizer[vd->next_rasterizer++];
int hash = compute_raster_hash(cinfo);
- assert_always(v->next_rasterizer <= MAX_RASTERIZERS, "Out of space for new rasterizers!");
+ assert_always(vd->next_rasterizer <= MAX_RASTERIZERS, "Out of space for new rasterizers!");
/* make a copy of the info */
*info = *cinfo;
@@ -5714,8 +5623,8 @@ static raster_info *add_rasterizer(voodoo_state *v, const raster_info *cinfo)
info->hash = hash;
/* hook us into the hash table */
- info->next = v->raster_hash[hash];
- v->raster_hash[hash] = info;
+ info->next = vd->raster_hash[hash];
+ vd->raster_hash[hash] = info;
if (LOG_RASTERIZERS)
printf("Adding rasterizer @ %p : cp=%08X am=%08X %08X fbzM=%08X tm0=%08X tm1=%08X (hash=%d)\n",
@@ -5733,25 +5642,25 @@ static raster_info *add_rasterizer(voodoo_state *v, const raster_info *cinfo)
it, creating a new one if necessary
-------------------------------------------------*/
-static raster_info *find_rasterizer(voodoo_state *v, int texcount)
+raster_info *voodoo_device::find_rasterizer(voodoo_device *vd, int texcount)
{
raster_info *info, *prev = nullptr;
raster_info curinfo;
int hash;
/* build an info struct with all the parameters */
- curinfo.eff_color_path = normalize_color_path(v->reg[fbzColorPath].u);
- curinfo.eff_alpha_mode = normalize_alpha_mode(v->reg[alphaMode].u);
- curinfo.eff_fog_mode = normalize_fog_mode(v->reg[fogMode].u);
- curinfo.eff_fbz_mode = normalize_fbz_mode(v->reg[fbzMode].u);
- curinfo.eff_tex_mode_0 = (texcount >= 1) ? normalize_tex_mode(v->tmu[0].reg[textureMode].u) : 0xffffffff;
- curinfo.eff_tex_mode_1 = (texcount >= 2) ? normalize_tex_mode(v->tmu[1].reg[textureMode].u) : 0xffffffff;
+ curinfo.eff_color_path = normalize_color_path(vd->reg[fbzColorPath].u);
+ curinfo.eff_alpha_mode = normalize_alpha_mode(vd->reg[alphaMode].u);
+ curinfo.eff_fog_mode = normalize_fog_mode(vd->reg[fogMode].u);
+ curinfo.eff_fbz_mode = normalize_fbz_mode(vd->reg[fbzMode].u);
+ curinfo.eff_tex_mode_0 = (texcount >= 1) ? normalize_tex_mode(vd->tmu[0].reg[textureMode].u) : 0xffffffff;
+ curinfo.eff_tex_mode_1 = (texcount >= 2) ? normalize_tex_mode(vd->tmu[1].reg[textureMode].u) : 0xffffffff;
/* compute the hash */
hash = compute_raster_hash(&curinfo);
/* find the appropriate hash entry */
- for (info = v->raster_hash[hash]; info; prev = info, info = info->next)
+ for (info = vd->raster_hash[hash]; info; prev = info, info = info->next)
if (info->eff_color_path == curinfo.eff_color_path &&
info->eff_alpha_mode == curinfo.eff_alpha_mode &&
info->eff_fog_mode == curinfo.eff_fog_mode &&
@@ -5763,8 +5672,8 @@ static raster_info *find_rasterizer(voodoo_state *v, int texcount)
if (prev)
{
prev->next = info->next;
- info->next = v->raster_hash[hash];
- v->raster_hash[hash] = info;
+ info->next = vd->raster_hash[hash];
+ vd->raster_hash[hash] = info;
}
/* return the result */
@@ -5780,7 +5689,7 @@ static raster_info *find_rasterizer(voodoo_state *v, int texcount)
curinfo.next = nullptr;
curinfo.hash = hash;
- return add_rasterizer(v, &curinfo);
+ return add_rasterizer(vd, &curinfo);
}
@@ -5789,7 +5698,7 @@ static raster_info *find_rasterizer(voodoo_state *v, int texcount)
the current rasterizer usage patterns
-------------------------------------------------*/
-static void dump_rasterizer_stats(voodoo_state *v)
+void voodoo_device::dump_rasterizer_stats(voodoo_device *vd)
{
static UINT8 display_index;
raster_info *cur, *best;
@@ -5805,7 +5714,7 @@ static void dump_rasterizer_stats(voodoo_state *v)
/* find the highest entry */
for (hash = 0; hash < RASTER_HASH_SIZE; hash++)
- for (cur = v->raster_hash[hash]; cur; cur = cur->next)
+ for (cur = vd->raster_hash[hash]; cur; cur = cur->next)
if (cur->display != display_index && (best == nullptr || cur->hits > best->hits))
best = cur;
@@ -5841,12 +5750,10 @@ voodoo_device::voodoo_device(const machine_config &mconfig, device_type type, co
m_vblank(*this),
m_stall(*this)
{
- m_token = global_alloc_clear<voodoo_state>();
}
voodoo_device::~voodoo_device()
{
- global_free(m_token);
}
//-------------------------------------------------
@@ -5865,8 +5772,7 @@ void voodoo_device::device_config_complete()
void voodoo_device::device_reset()
{
- voodoo_state *v = get_safe_token(this);
- soft_reset(v);
+ soft_reset(this);
}
//-------------------------------------------------
@@ -5875,11 +5781,9 @@ void voodoo_device::device_reset()
void voodoo_device::device_stop()
{
- voodoo_state *v = get_safe_token(this);
-
/* release the work queue, ensuring all work is finished */
- if (v->poly != nullptr)
- poly_free(v->poly);
+ if (poly != nullptr)
+ poly_free(poly);
}
@@ -5966,26 +5870,26 @@ void voodoo_3_device::device_start()
implementation of the 'fastfill' command
-------------------------------------------------*/
-static void raster_fastfill(void *destbase, INT32 y, const poly_extent *extent, const void *extradata, int threadid)
+void voodoo_device::raster_fastfill(void *destbase, INT32 y, const poly_extent *extent, const void *extradata, int threadid)
{
const poly_extra_data *extra = (const poly_extra_data *)extradata;
- voodoo_state *v = extra->state;
- stats_block *stats = &v->thread_stats[threadid];
+ voodoo_device* vd = extra->device;
+ stats_block *stats = &vd->thread_stats[threadid];
INT32 startx = extent->startx;
INT32 stopx = extent->stopx;
int scry, x;
/* determine the screen Y */
scry = y;
- if (FBZMODE_Y_ORIGIN(v->reg[fbzMode].u))
- scry = (v->fbi.yorigin - y) & 0x3ff;
+ if (FBZMODE_Y_ORIGIN(vd->reg[fbzMode].u))
+ scry = (vd->fbi.yorigin - y) & 0x3ff;
/* fill this RGB row */
- if (FBZMODE_RGB_BUFFER_MASK(v->reg[fbzMode].u))
+ if (FBZMODE_RGB_BUFFER_MASK(vd->reg[fbzMode].u))
{
const UINT16 *ditherow = &extra->dither[(y & 3) * 4];
UINT64 expanded = *(UINT64 *)ditherow;
- UINT16 *dest = (UINT16 *)destbase + scry * v->fbi.rowpixels;
+ UINT16 *dest = (UINT16 *)destbase + scry * vd->fbi.rowpixels;
for (x = startx; x < stopx && (x & 3) != 0; x++)
dest[x] = ditherow[x & 3];
@@ -5997,11 +5901,11 @@ static void raster_fastfill(void *destbase, INT32 y, const poly_extent *extent,
}
/* fill this dest buffer row */
- if (FBZMODE_AUX_BUFFER_MASK(v->reg[fbzMode].u) && v->fbi.auxoffs != ~0)
+ if (FBZMODE_AUX_BUFFER_MASK(vd->reg[fbzMode].u) && vd->fbi.auxoffs != ~0)
{
- UINT16 color = v->reg[zaColor].u;
+ UINT16 color = vd->reg[zaColor].u;
UINT64 expanded = ((UINT64)color << 48) | ((UINT64)color << 32) | (color << 16) | color;
- UINT16 *dest = (UINT16 *)(v->fbi.ram + v->fbi.auxoffs) + scry * v->fbi.rowpixels;
+ UINT16 *dest = (UINT16 *)(vd->fbi.ram + vd->fbi.auxoffs) + scry * vd->fbi.rowpixels;
for (x = startx; x < stopx && (x & 3) != 0; x++)
dest[x] = color;
@@ -6017,521 +5921,21 @@ static void raster_fastfill(void *destbase, INT32 y, const poly_extent *extent,
generic_0tmu - generic rasterizer for 0 TMUs
-------------------------------------------------*/
-RASTERIZER(generic_0tmu, 0, v->reg[fbzColorPath].u, v->reg[fbzMode].u, v->reg[alphaMode].u,
- v->reg[fogMode].u, 0, 0)
+RASTERIZER(generic_0tmu, 0, vd->reg[fbzColorPath].u, vd->reg[fbzMode].u, vd->reg[alphaMode].u,
+ vd->reg[fogMode].u, 0, 0)
/*-------------------------------------------------
generic_1tmu - generic rasterizer for 1 TMU
-------------------------------------------------*/
-RASTERIZER(generic_1tmu, 1, v->reg[fbzColorPath].u, v->reg[fbzMode].u, v->reg[alphaMode].u,
- v->reg[fogMode].u, v->tmu[0].reg[textureMode].u, 0)
+RASTERIZER(generic_1tmu, 1, vd->reg[fbzColorPath].u, vd->reg[fbzMode].u, vd->reg[alphaMode].u,
+ vd->reg[fogMode].u, vd->tmu[0].reg[textureMode].u, 0)
/*-------------------------------------------------
generic_2tmu - generic rasterizer for 2 TMUs
-------------------------------------------------*/
-RASTERIZER(generic_2tmu, 2, v->reg[fbzColorPath].u, v->reg[fbzMode].u, v->reg[alphaMode].u,
- v->reg[fogMode].u, v->tmu[0].reg[textureMode].u, v->tmu[1].reg[textureMode].u)
-
-
-#else
-
-
-
-/***************************************************************************
- GAME-SPECIFIC RASTERIZERS
-***************************************************************************/
-
-/* blitz ------> fbzColorPath alphaMode fogMode, fbzMode, texMode0, texMode1 */
-RASTERIZER_ENTRY( 0x00000035, 0x00000000, 0x00000000, 0x000B0739, 0x0C261A0F, 0xFFFFFFFF ) /* 284269 914846168 */
-RASTERIZER_ENTRY( 0x00002C35, 0x00515110, 0x00000000, 0x000B07F9, 0x0C261A0F, 0xFFFFFFFF ) /* 485421 440309121 */
-RASTERIZER_ENTRY( 0x00582C35, 0x00515110, 0x00000000, 0x000B0739, 0x0C261ACF, 0xFFFFFFFF ) /* 31606 230753709 */
-RASTERIZER_ENTRY( 0x00582C35, 0x00515110, 0x00000000, 0x000B0739, 0x0C261A0F, 0xFFFFFFFF ) /* 76742 211701679 */
-RASTERIZER_ENTRY( 0x01420039, 0x00000000, 0x00000000, 0x000B073B, 0x0C261ACF, 0xFFFFFFFF ) /* 6188 152109056 */
-RASTERIZER_ENTRY( 0x01420039, 0x00000000, 0x00000000, 0x000B07F9, 0x0C261ACF, 0xFFFFFFFF ) /* 1100 108134400 */
-RASTERIZER_ENTRY( 0x00002C35, 0x00515119, 0x00000000, 0x000B0739, 0x0C261A0F, 0xFFFFFFFF ) /* 6229525 106197740 */
-RASTERIZER_ENTRY( 0x00002C35, 0x00515119, 0x00000000, 0x000B0799, 0x0C261A0F, 0xFFFFFFFF ) /* 905641 75886220 */
-RASTERIZER_ENTRY( 0x00002C35, 0x00515119, 0x00000000, 0x000B07F9, 0x0C261A0F, 0xFFFFFFFF ) /* 205236 53317253 */
-RASTERIZER_ENTRY( 0x01422439, 0x00000000, 0x00000000, 0x000B073B, 0x0C2610C9, 0xFFFFFFFF ) /* 817356 48881349 */
-RASTERIZER_ENTRY( 0x00000035, 0x00000000, 0x00000000, 0x000B07F9, 0x0C261A0F, 0xFFFFFFFF ) /* 37979 41687251 */
-RASTERIZER_ENTRY( 0x00002C35, 0x00515110, 0x00000000, 0x000B0739, 0x0C261A0F, 0xFFFFFFFF ) /* 26014 41183295 */
-RASTERIZER_ENTRY( 0x01420039, 0x00000000, 0x00000000, 0x000B07F9, 0x0C261A0F, 0xFFFFFFFF ) /* 2512 37911104 */
-RASTERIZER_ENTRY( 0x00006136, 0x00515119, 0x00000000, 0x000B07F9, 0x0C261A0F, 0xFFFFFFFF ) /* 28834 15527654 */
-RASTERIZER_ENTRY( 0x00582435, 0x00515110, 0x00000000, 0x000B0739, 0x0C261ACF, 0xFFFFFFFF ) /* 9878 4979429 */
-RASTERIZER_ENTRY( 0x00002C35, 0x00515119, 0x00000000, 0x000B0739, 0x0C261ACF, 0xFFFFFFFF ) /* 199952 4622064 */
-RASTERIZER_ENTRY( 0x00582C35, 0x00515110, 0x00000000, 0x000B0739, 0x0C261AC9, 0xFFFFFFFF ) /* 8672 3676949 */
-RASTERIZER_ENTRY( 0x00582C35, 0x00515010, 0x00000000, 0x000B0739, 0x0C2610CF, 0xFFFFFFFF ) /* 616 2743972 */
-RASTERIZER_ENTRY( 0x01422C39, 0x00045110, 0x00000000, 0x000B0739, 0x0C261A0F, 0xFFFFFFFF ) /* 81380 2494832 */
-//RASTERIZER_ENTRY( 0x00582435, 0x00515110, 0x00000000, 0x000B0739, 0x0C261AC9, 0xFFFFFFFF ) /* 7670 2235587 */
-//RASTERIZER_ENTRY( 0x00592136, 0x00515110, 0x00000000, 0x000B073B, 0x0C261A0F, 0xFFFFFFFF ) /* 210 1639140 */
-//RASTERIZER_ENTRY( 0x00582C35, 0x00515110, 0x00000000, 0x000B073B, 0x0C261A0F, 0xFFFFFFFF ) /* 108 1154736 */
-//RASTERIZER_ENTRY( 0x00002C35, 0x00515110, 0x00000000, 0x000B07F9, 0x0C26180F, 0xFFFFFFFF ) /* 2152 1150842 */
-//RASTERIZER_ENTRY( 0x00592136, 0x00515110, 0x00000000, 0x000B073B, 0x0C261ACF, 0xFFFFFFFF ) /* 152 880560 */
-//RASTERIZER_ENTRY( 0x00008035, 0x00515119, 0x00000000, 0x000B0739, 0x0C261A0F, 0xFFFFFFFF ) /* 90848 805730 */
-//RASTERIZER_ENTRY( 0x00002C35, 0x00515119, 0x00000000, 0x000B07F9, 0x0C261AC9, 0xFFFFFFFF ) /* 2024 571406 */
-//RASTERIZER_ENTRY( 0x00012136, 0x00515110, 0x00000000, 0x000B07F9, 0x0C261A0F, 0xFFFFFFFF ) /* 1792 494592 */
-//RASTERIZER_ENTRY( 0x00000002, 0x00000000, 0x00000000, 0x00000300, 0xFFFFFFFF, 0xFFFFFFFF ) /* 256 161280 */
-
-/* blitz99 ----> fbzColorPath alphaMode fogMode, fbzMode, texMode0, texMode1 */
-RASTERIZER_ENTRY( 0x00000035, 0x00000009, 0x00000000, 0x000B0739, 0x0C261A0F, 0xFFFFFFFF ) /* * 6297478 149465839 */
-RASTERIZER_ENTRY( 0x00000035, 0x00000009, 0x00000000, 0x000B0739, 0x0C261ACF, 0xFFFFFFFF ) /* * 210693 6285480 */
-RASTERIZER_ENTRY( 0x01422C39, 0x00045110, 0x00000000, 0x000B073B, 0x0C2610C9, 0xFFFFFFFF ) /* * 20180 2718710 */
-RASTERIZER_ENTRY( 0x00582C35, 0x00515110, 0x00000000, 0x000B073B, 0x0C261ACF, 0xFFFFFFFF ) /* * 360 2425416 */
-RASTERIZER_ENTRY( 0x00002C35, 0x00000009, 0x00000000, 0x000B0739, 0x0C261A0F, 0xFFFFFFFF ) /* * 67059 1480978 */
-RASTERIZER_ENTRY( 0x00008035, 0x00000009, 0x00000000, 0x000B0739, 0x0C261A0F, 0xFFFFFFFF ) /* * 24811 400666 */
-RASTERIZER_ENTRY( 0x01420039, 0x00000000, 0x00000000, 0x000B073B, 0x0C2610C9, 0xFFFFFFFF ) /* * 10304 324468 */
-RASTERIZER_ENTRY( 0x00002C35, 0x00515110, 0x00000000, 0x000B0739, 0x0C261ACF, 0xFFFFFFFF ) /* * 1024 112665 */
-
-/* blitz2k ----> fbzColorPath alphaMode fogMode, fbzMode, texMode0, texMode1 */
-RASTERIZER_ENTRY( 0x01420039, 0x00000000, 0x00000000, 0x000B0739, 0x0C261ACF, 0xFFFFFFFF ) /* * 3880 95344128 */
-RASTERIZER_ENTRY( 0x00582C35, 0x00514110, 0x00000000, 0x000B0739, 0x0C261ACF, 0xFFFFFFFF ) /* * 148 1785480 */
-RASTERIZER_ENTRY( 0x01420039, 0x00000000, 0x00000000, 0x000B073B, 0x0C2610CF, 0xFFFFFFFF ) /* * 9976 314244 */
-
-/* carnevil ---> fbzColorPath alphaMode fogMode, fbzMode, texMode0, texMode1 */
-RASTERIZER_ENTRY( 0x00002435, 0x00045119, 0x00000000, 0x00030279, 0x0C261A0F, 0xFFFFFFFF ) /* * 492 84128082 */
-RASTERIZER_ENTRY( 0x00002425, 0x00045119, 0x00000000, 0x00030679, 0x0C261A0F, 0xFFFFFFFF ) /* * 1988398 36166780 */
-RASTERIZER_ENTRY( 0x00486116, 0x00045119, 0x00000000, 0x00030279, 0x0C26180F, 0xFFFFFFFF ) /* * 34424 28788847 */
-RASTERIZER_ENTRY( 0x00000035, 0x00045119, 0x00000000, 0x00030679, 0x0C261A0F, 0xFFFFFFFF ) /* * 514 26316800 */
-RASTERIZER_ENTRY( 0x00480015, 0x00045119, 0x00000000, 0x000306F9, 0x0C261AC9, 0xFFFFFFFF ) /* * 7346 18805760 */
-RASTERIZER_ENTRY( 0x00002435, 0x00045119, 0x00000000, 0x000302F9, 0x0C26180F, 0xFFFFFFFF ) /* * 130764 18678972 */
-RASTERIZER_ENTRY( 0x00482415, 0x00045119, 0x00000000, 0x000306F9, 0x0C2618C9, 0xFFFFFFFF ) /* * 7244 12179040 */
-RASTERIZER_ENTRY( 0x00482415, 0x00045119, 0x00000000, 0x000306F9, 0x0C26180F, 0xFFFFFFFF ) /* * 84520 12059721 */
-RASTERIZER_ENTRY( 0x00000035, 0x00045119, 0x00000000, 0x000306F9, 0x0C261AC9, 0xFFFFFFFF ) /* * 21926 11226112 */
-RASTERIZER_ENTRY( 0x00482415, 0x00045119, 0x00000000, 0x00030679, 0x0C2618C9, 0xFFFFFFFF ) /* * 92115 8926536 */
-RASTERIZER_ENTRY( 0x00482415, 0x00045119, 0x00000000, 0x00030279, 0x0C261A0F, 0xFFFFFFFF ) /* * 1730 7629334 */
-RASTERIZER_ENTRY( 0x00002435, 0x00045119, 0x00000000, 0x000B0779, 0x0C26180F, 0xFFFFFFFF ) /* * 37408 5545956 */
-RASTERIZER_ENTRY( 0x00002435, 0x00045119, 0x00000000, 0x00030679, 0x0C26180F, 0xFFFFFFFF ) /* * 26528 4225026 */
-RASTERIZER_ENTRY( 0x00002435, 0x00045119, 0x00000000, 0x000306F9, 0x0C26180F, 0xFFFFFFFF ) /* * 35764 3230884 */
-RASTERIZER_ENTRY( 0x01422409, 0x00045119, 0x00000000, 0x00030679, 0x0C261A0F, 0xFFFFFFFF ) /* * 96020 1226438 */
-RASTERIZER_ENTRY( 0x00482415, 0x00045119, 0x00000000, 0x00030279, 0x0C2618C9, 0xFFFFFFFF ) /* * 1020 574649 */
-RASTERIZER_ENTRY( 0x00482415, 0x00045119, 0x00000000, 0x00030679, 0x0C261A0F, 0xFFFFFFFF ) /* * 360 370008 */
-RASTERIZER_ENTRY( 0x00480015, 0x00045119, 0x00000000, 0x000306F9, 0x0C261A0F, 0xFFFFFFFF ) /* * 576 334404 */
-
-/* calspeed ---> fbzColorPath alphaMode fogMode, fbzMode, texMode0, texMode1 */
-RASTERIZER_ENTRY( 0x00002815, 0x00045119, 0x00000001, 0x000B07F9, 0x0C26100F, 0xFFFFFFFF ) /* * 99120 1731923836 */
-RASTERIZER_ENTRY( 0x01022819, 0x00000009, 0x00000001, 0x000B0739, 0x0C26100F, 0xFFFFFFFF ) /* * 9955804 1526119944 */
-RASTERIZER_ENTRY( 0x00002815, 0x00045119, 0x00000001, 0x000B0739, 0x0C26180F, 0xFFFFFFFF ) /* * 1898207 1124776864 */
-RASTERIZER_ENTRY( 0x01022819, 0x00000009, 0x00000001, 0x000B073B, 0x0C26100F, 0xFFFFFFFF ) /* * 3487467 1101663125 */
-RASTERIZER_ENTRY( 0x01022C19, 0x00000009, 0x00000001, 0x000B0739, 0x0C26100F, 0xFFFFFFFF ) /* * 1079277 609256033 */
-RASTERIZER_ENTRY( 0x00002815, 0x00045119, 0x00000001, 0x000A0723, 0x0C261ACF, 0xFFFFFFFF ) /* * 11880 583925760 */
-RASTERIZER_ENTRY( 0x00602819, 0x00045119, 0x00000001, 0x000B07F9, 0x0C26180F, 0xFFFFFFFF ) /* * 63644 582469888 */
-RASTERIZER_ENTRY( 0x01022819, 0x00000009, 0x00000001, 0x000B07F9, 0x0C261A0F, 0xFFFFFFFF ) /* * 22688 556797972 */
-RASTERIZER_ENTRY( 0x00002815, 0x00045119, 0x00000001, 0x000B07F9, 0x0C26180F, 0xFFFFFFFF ) /* * 1360254 417068457 */
-RASTERIZER_ENTRY( 0x00002815, 0x00045119, 0x00000001, 0x000B0739, 0x0C26100F, 0xFFFFFFFF ) /* * 3427489 405421272 */
-RASTERIZER_ENTRY( 0x00002C15, 0x00045119, 0x00000001, 0x000B0739, 0x0C26180F, 0xFFFFFFFF ) /* * 286809 238944049 */
-RASTERIZER_ENTRY( 0x00002815, 0x00045119, 0x00000001, 0x000A0321, 0x0C26180F, 0xFFFFFFFF ) /* * 28160 231084818 */
-RASTERIZER_ENTRY( 0x01022819, 0x00000009, 0x00000001, 0x000B07FB, 0x0C26100F, 0xFFFFFFFF ) /* * 183564 201014424 */
-RASTERIZER_ENTRY( 0x00480015, 0x00045119, 0x00000001, 0x000B0339, 0x0C26100F, 0xFFFFFFFF ) /* * 15275 168207109 */
-RASTERIZER_ENTRY( 0x01022819, 0x00000009, 0x00000001, 0x000B07F9, 0x0C26100F, 0xFFFFFFFF ) /* * 2856 134400000 */
-RASTERIZER_ENTRY( 0x00002815, 0x00045119, 0x00000001, 0x000B0339, 0x0C26180F, 0xFFFFFFFF ) /* * 98551 110417974 */
-RASTERIZER_ENTRY( 0x01022819, 0x00000009, 0x00000001, 0x000B07F9, 0x0C2610CF, 0xFFFFFFFF ) /* * 47040 107360728 */
-RASTERIZER_ENTRY( 0x00480015, 0x00045119, 0x00000001, 0x000B0339, 0x0C26180F, 0xFFFFFFFF ) /* * 13128 86876789 */
-RASTERIZER_ENTRY( 0x01022C19, 0x00000009, 0x00000001, 0x000B073B, 0x0C26100F, 0xFFFFFFFF ) /* * 257515 76329054 */
-RASTERIZER_ENTRY( 0x00002815, 0x00045119, 0x00000001, 0x000B07F9, 0x0C261A0F, 0xFFFFFFFF ) /* * 3934 64958208 */
-//RASTERIZER_ENTRY( 0x00002C15, 0x00045119, 0x00000001, 0x000B07F9, 0x0C26180F, 0xFFFFFFFF ) /* * 77400 63786236 */
-//RASTERIZER_ENTRY( 0x01022C19, 0x00000009, 0x00000001, 0x000B07F9, 0x0C261A0F, 0xFFFFFFFF ) /* * 12500 63151200 */
-//RASTERIZER_ENTRY( 0x0102001A, 0x00045119, 0x00000001, 0x000A0321, 0xFFFFFFFF, 0xFFFFFFFF ) /* * 8764 57629312 */
-//RASTERIZER_ENTRY( 0x00002C15, 0x00045119, 0x00000001, 0x000A0321, 0x0C26180F, 0xFFFFFFFF ) /* * 3257 32708448 */
-//RASTERIZER_ENTRY( 0x00002815, 0x00045119, 0x00000001, 0x000A07E3, 0x0C2610CF, 0xFFFFFFFF ) /* * 28364 31195605 */
-//RASTERIZER_ENTRY( 0x00002C15, 0x00045119, 0x00000001, 0x000B0739, 0x0C26100F, 0xFFFFFFFF ) /* * 409001 30699647 */
-//RASTERIZER_ENTRY( 0x00482C35, 0x00045119, 0x00000001, 0x000A0321, 0x0C26100F, 0xFFFFFFFF ) /* * 17669 11214172 */
-//RASTERIZER_ENTRY( 0x00002C15, 0x00045119, 0x00000001, 0x000B0339, 0x0C26180F, 0xFFFFFFFF ) /* * 5844 6064373 */
-//RASTERIZER_ENTRY( 0x00002C15, 0x00045119, 0x00000001, 0x000B07FB, 0x0C26100F, 0xFFFFFFFF ) /* * 626 4651080 */
-//RASTERIZER_ENTRY( 0x00482C35, 0x00045119, 0x00000001, 0x000A0321, 0x0C26180F, 0xFFFFFFFF ) /* * 5887 2945500 */
-//RASTERIZER_ENTRY( 0x00480015, 0x00045119, 0x00000001, 0x000B0339, 0x0C261A0F, 0xFFFFFFFF ) /* * 1090 2945093 */
-//RASTERIZER_ENTRY( 0x00602C19, 0x00045119, 0x00000001, 0x000B07F9, 0x0C26180F, 0xFFFFFFFF ) /* * 228 1723908 */
-//RASTERIZER_ENTRY( 0x00002C15, 0x00045119, 0x00000001, 0x000A0321, 0x0C261A0F, 0xFFFFFFFF ) /* * 112 1433600 */
-//RASTERIZER_ENTRY( 0x00002815, 0x00045119, 0x00000001, 0x000B0739, 0x0C261A0F, 0xFFFFFFFF ) /* * 3091 1165805 */
-//RASTERIZER_ENTRY( 0x01022C19, 0x00000009, 0x00000001, 0x000B07FB, 0x0C26100F, 0xFFFFFFFF ) /* * 620 791202 */
-
-/* hyprdriv ---> fbzColorPath alphaMode fogMode, fbzMode, texMode0, texMode1 */
-RASTERIZER_ENTRY( 0x01420039, 0x00000000, 0x00000001, 0x000B0739, 0x0C261ACF, 0xFFFFFFFF ) /* * 60860 498565120 */
-RASTERIZER_ENTRY( 0x01420039, 0x00000000, 0x00000001, 0x000B07F9, 0x0C261A0F, 0xFFFFFFFF ) /* * 28688 235012096 */
-RASTERIZER_ENTRY( 0x01420039, 0x00000000, 0x00000001, 0x000B07F9, 0x0C261ACF, 0xFFFFFFFF ) /* * 11844 156499968 */
-RASTERIZER_ENTRY( 0x00580035, 0x00045119, 0x00000001, 0x00030279, 0x0C261A0F, 0xFFFFFFFF ) /* * 175990 146518715 */
-RASTERIZER_ENTRY( 0x00582C35, 0x00515110, 0x00000001, 0x000B0739, 0x0C261ACF, 0xFFFFFFFF ) /* * 2336 114819072 */
-RASTERIZER_ENTRY( 0x00580035, 0x00000000, 0x00000001, 0x000B073B, 0x0C261A1F, 0xFFFFFFFF ) /* * 363325 100404294 */
-RASTERIZER_ENTRY( 0x00582C35, 0x00045110, 0x00000001, 0x000B073B, 0x0C261A0F, 0xFFFFFFFF ) /* * 40918 96318738 */
-RASTERIZER_ENTRY( 0x01420039, 0x00000000, 0x00000001, 0x000B0739, 0x0C26101F, 0xFFFFFFFF ) /* * 54815 94990269 */
-RASTERIZER_ENTRY( 0x01420039, 0x00000000, 0x00000001, 0x000B0739, 0x0C261A1F, 0xFFFFFFFF ) /* * 123032 91652828 */
-RASTERIZER_ENTRY( 0x01422429, 0x00000000, 0x00000001, 0x000B0739, 0x0C261A1F, 0xFFFFFFFF ) /* * 82767 86431997 */
-RASTERIZER_ENTRY( 0x01422429, 0x00000000, 0x00000001, 0x000B0739, 0x0C26101F, 0xFFFFFFFF ) /* * 9874 78101834 */
-RASTERIZER_ENTRY( 0x01422429, 0x00000000, 0x00000001, 0x000B073B, 0x0C261A1F, 0xFFFFFFFF ) /* * 102146 72570879 */
-RASTERIZER_ENTRY( 0x01420039, 0x00000000, 0x00000001, 0x000B073B, 0x0C26100F, 0xFFFFFFFF ) /* * 657804 67229658 */
-RASTERIZER_ENTRY( 0x00580035, 0x00045110, 0x00000001, 0x000B03F9, 0x0C261A0F, 0xFFFFFFFF ) /* * 10428 63173865 */
-RASTERIZER_ENTRY( 0x01422429, 0x00000000, 0x00000001, 0x000B073B, 0x0C261A0F, 0xFFFFFFFF ) /* * 230145 57902926 */
-RASTERIZER_ENTRY( 0x01422C19, 0x00000000, 0x00000001, 0x000B073B, 0x0C261A0F, 0xFFFFFFFF ) /* * 769654 53992486 */
-RASTERIZER_ENTRY( 0x01422C19, 0x00000000, 0x00000001, 0x000B0739, 0x0C26101F, 0xFFFFFFFF ) /* * 85365 51865697 */
-RASTERIZER_ENTRY( 0x00582435, 0x00515110, 0x00000001, 0x000B0739, 0x0C261AC9, 0xFFFFFFFF ) /* * 454674 46165536 */
-RASTERIZER_ENTRY( 0x00580035, 0x00000000, 0x00000001, 0x000B073B, 0x0C26101F, 0xFFFFFFFF ) /* * 101889 33337987 */
-RASTERIZER_ENTRY( 0x00580035, 0x00000000, 0x00000001, 0x000B0739, 0x0C26101F, 0xFFFFFFFF ) /* * 255952 29810993 */
-//RASTERIZER_ENTRY( 0x00582425, 0x00000000, 0x00000001, 0x000B073B, 0x0C261A1F, 0xFFFFFFFF ) /* * 106190 25430383 */
-//RASTERIZER_ENTRY( 0x01420039, 0x00000000, 0x00000001, 0x000B073B, 0x0C261A1F, 0xFFFFFFFF ) /* * 595001 23268601 */
-//RASTERIZER_ENTRY( 0x0142612A, 0x00000000, 0x00000001, 0x000B0739, 0xFFFFFFFF, 0xFFFFFFFF ) /* * 946410 22589110 */
-//RASTERIZER_ENTRY( 0x01420039, 0x00000000, 0x00000001, 0x000B073B, 0x0C261A0F, 0xFFFFFFFF ) /* * 330036 21323230 */
-//RASTERIZER_ENTRY( 0x01422C19, 0x00000000, 0x00000001, 0x000B0739, 0x0C261A1F, 0xFFFFFFFF ) /* * 40089 13470498 */
-//RASTERIZER_ENTRY( 0x01422C19, 0x00000000, 0x00000000, 0x000B073B, 0x0C261A0F, 0xFFFFFFFF ) /* * 90906 12850855 */
-//RASTERIZER_ENTRY( 0x00582C35, 0x00515110, 0x00000001, 0x000B0739, 0x0C261A0F, 0xFFFFFFFF ) /* * 9492 12115280 */
-//RASTERIZER_ENTRY( 0x01420039, 0x00000000, 0x00000001, 0x000B073B, 0x0C26101F, 0xFFFFFFFF ) /* * 453515 12013961 */
-//RASTERIZER_ENTRY( 0x01422C19, 0x00000000, 0x00000001, 0x000B073B, 0x0C261A1F, 0xFFFFFFFF ) /* * 33829 8384312 */
-//RASTERIZER_ENTRY( 0x00580035, 0x00000000, 0x00000001, 0x000B073B, 0x0C26100F, 0xFFFFFFFF ) /* * 83986 7841206 */
-//RASTERIZER_ENTRY( 0x00580035, 0x00045110, 0x00000001, 0x000B0339, 0x0C261A0F, 0xFFFFFFFF ) /* * 42515 7242660 */
-//RASTERIZER_ENTRY( 0x00582425, 0x00000000, 0x00000001, 0x000B0739, 0x0C26100F, 0xFFFFFFFF ) /* * 706 6158684 */
-//RASTERIZER_ENTRY( 0x00582425, 0x00000000, 0x00000001, 0x000B0739, 0x0C26101F, 0xFFFFFFFF ) /* * 62051 5819485 */
-//RASTERIZER_ENTRY( 0x0142612A, 0x00000000, 0x00000000, 0x000B0739, 0xFFFFFFFF, 0xFFFFFFFF ) /* * 135139 5063467 */
-//RASTERIZER_ENTRY( 0x01422429, 0x00000000, 0x00000001, 0x000B073B, 0x0C26100F, 0xFFFFFFFF ) /* * 10359 5135837 */
-//RASTERIZER_ENTRY( 0x01420039, 0x00000000, 0x00000001, 0x000B0739, 0x0C26100F, 0xFFFFFFFF ) /* * 170159 4449246 */
-//RASTERIZER_ENTRY( 0x00582425, 0x00000000, 0x00000001, 0x000B073B, 0x0C26101F, 0xFFFFFFFF ) /* * 19037 4371219 */
-//RASTERIZER_ENTRY( 0x01422429, 0x00000000, 0x00000001, 0x000B073B, 0x0C26101F, 0xFFFFFFFF ) /* * 8963 4352501 */
-//RASTERIZER_ENTRY( 0x01422C39, 0x00045110, 0x00000001, 0x000B073B, 0x0C261A0F, 0xFFFFFFFF ) /* * 47712 4159994 */
-//RASTERIZER_ENTRY( 0x01422C19, 0x00000000, 0x00000000, 0x000B073B, 0x0C261ACF, 0xFFFFFFFF ) /* * 47525 4151435 */
-//RASTERIZER_ENTRY( 0x01422C19, 0x00000000, 0x00000001, 0x000B0739, 0x0C261A0F, 0xFFFFFFFF ) /* * 34980 3794066 */
-//RASTERIZER_ENTRY( 0x0142613A, 0x00045110, 0x00000000, 0x000B0739, 0xFFFFFFFF, 0xFFFFFFFF ) /* * 6540 2358068 */
-//RASTERIZER_ENTRY( 0x0142611A, 0x00045110, 0x00000000, 0x000B0739, 0xFFFFFFFF, 0xFFFFFFFF ) /* * 703308 2096781 */
-//RASTERIZER_ENTRY( 0x00580035, 0x00045110, 0x00000001, 0x000B0339, 0x0C261A1F, 0xFFFFFFFF ) /* * 3963 2079440 */
-//RASTERIZER_ENTRY( 0x01422439, 0x00000000, 0x00000001, 0x000B073B, 0x0C261AC9, 0xFFFFFFFF ) /* * 22866 2008397 */
-//RASTERIZER_ENTRY( 0x01420039, 0x00000000, 0x00000001, 0x000B0739, 0x0C261A0F, 0xFFFFFFFF ) /* * 69705 1673671 */
-//RASTERIZER_ENTRY( 0x01422C19, 0x00000000, 0x00000001, 0x000B073B, 0x0C26100F, 0xFFFFFFFF ) /* * 13366 1575120 */
-//RASTERIZER_ENTRY( 0x0142613A, 0x00000000, 0x00000000, 0x000B0739, 0xFFFFFFFF, 0xFFFFFFFF ) /* * 50625 1408211 */
-//RASTERIZER_ENTRY( 0x0142613A, 0x00045110, 0x00000001, 0x000B0739, 0xFFFFFFFF, 0xFFFFFFFF ) /* * 1244348 1244346 */
-//RASTERIZER_ENTRY( 0x00582425, 0x00000000, 0x00000001, 0x000B073B, 0x0C26100F, 0xFFFFFFFF ) /* * 13791 1222735 */
-//RASTERIZER_ENTRY( 0x00580035, 0x00000000, 0x00000001, 0x000B073B, 0x0C261A0F, 0xFFFFFFFF ) /* * 33064 943590 */
-//RASTERIZER_ENTRY( 0x0142610A, 0x00045110, 0x00000001, 0x000B0739, 0xFFFFFFFF, 0xFFFFFFFF ) /* * 2041 926507 */
-//RASTERIZER_ENTRY( 0x00480019, 0x00045110, 0x00000001, 0x000B073B, 0x0C261A0F, 0xFFFFFFFF ) /* * 2722 453924 */
-//RASTERIZER_ENTRY( 0x00580035, 0x00000000, 0x00000001, 0x000B0739, 0x0C26100F, 0xFFFFFFFF ) /* * 68232 306869 */
-//RASTERIZER_ENTRY( 0x0142611A, 0x00045110, 0x00000001, 0x000B0379, 0xFFFFFFFF, 0xFFFFFFFF ) /* * 7164 269002 */
-
-/* mace -------> fbzColorPath alphaMode fogMode, fbzMode, texMode0, texMode1 */
-RASTERIZER_ENTRY( 0x00600C09, 0x00045119, 0x00000000, 0x000B0779, 0x0824100F, 0xFFFFFFFF ) /* * 7204150 1340201579 */
-RASTERIZER_ENTRY( 0x00000035, 0x00045119, 0x00000000, 0x000B0779, 0x08241ADF, 0xFFFFFFFF ) /* * 15332 1181663232 */
-RASTERIZER_ENTRY( 0x00000035, 0x00045119, 0x00000000, 0x000B0779, 0x082418DF, 0xFFFFFFFF ) /* * 104456 652582379 */
-RASTERIZER_ENTRY( 0x00600C09, 0x00045119, 0x00000000, 0x000B0779, 0x0824180F, 0xFFFFFFFF ) /* * 488613 368880164 */
-RASTERIZER_ENTRY( 0x00600C09, 0x00045119, 0x00000000, 0x000B0779, 0x082418CF, 0xFFFFFFFF ) /* * 352924 312417405 */
-RASTERIZER_ENTRY( 0x00480035, 0x00045119, 0x00000000, 0x000B0779, 0x082418DF, 0xFFFFFFFF ) /* * 15024 291762384 */
-RASTERIZER_ENTRY( 0x00600C09, 0x00045119, 0x00000000, 0x000B0779, 0x082410CF, 0xFFFFFFFF ) /* * 711824 279246170 */
-RASTERIZER_ENTRY( 0x00600C09, 0x00045119, 0x00000001, 0x000B0779, 0x0824100F, 0xFFFFFFFF ) /* * 735574 171881981 */
-RASTERIZER_ENTRY( 0x00602401, 0x00045119, 0x00000000, 0x000B0779, 0x082418DF, 0xFFFFFFFF ) /* * 943006 154374023 */
-RASTERIZER_ENTRY( 0x00600C09, 0x00045119, 0x00000001, 0x000B0779, 0x082410CF, 0xFFFFFFFF ) /* * 103877 101077498 */
-RASTERIZER_ENTRY( 0x00600C09, 0x00045119, 0x00000000, 0x000B0779, 0x0824108F, 0xFFFFFFFF ) /* * 710125 87547221 */
-RASTERIZER_ENTRY( 0x00600C09, 0x00045119, 0x00000000, 0x000B0779, 0x08241ACF, 0xFFFFFFFF ) /* * 9834 79774966 */
-RASTERIZER_ENTRY( 0x00000035, 0x00045119, 0x00000000, 0x000B0379, 0x082418DF, 0xFFFFFFFF ) /* * 17644 70187036 */
-RASTERIZER_ENTRY( 0x00480035, 0x00045119, 0x00000000, 0x000B0379, 0x082418DF, 0xFFFFFFFF ) /* * 11324 56633925 */
-RASTERIZER_ENTRY( 0x00482435, 0x00045119, 0x00000000, 0x000B0379, 0x0824180F, 0xFFFFFFFF ) /* * 96743 40820171 */
-RASTERIZER_ENTRY( 0x00482435, 0x00045119, 0x00000000, 0x000B0739, 0x082418CF, 0xFFFFFFFF ) /* * 166053 29100794 */
-RASTERIZER_ENTRY( 0x00482435, 0x00045117, 0x00000000, 0x000B0339, 0x082418CF, 0xFFFFFFFF ) /* * 166053 29100697 */
-RASTERIZER_ENTRY( 0x00600C09, 0x00045119, 0x00000001, 0x000B0379, 0x0824188F, 0xFFFFFFFF ) /* * 6723 29076516 */
-RASTERIZER_ENTRY( 0x00600C09, 0x00045119, 0x00000000, 0x000B0779, 0x0824188F, 0xFFFFFFFF ) /* * 53297 23928976 */
-RASTERIZER_ENTRY( 0x00600C09, 0x00045119, 0x00000001, 0x000B0779, 0x0824180F, 0xFFFFFFFF ) /* * 10309 19001776 */
-//RASTERIZER_ENTRY( 0x00600C09, 0x00045119, 0x00000000, 0x000B0379, 0x0824180F, 0xFFFFFFFF ) /* * 22105 17473157 */
-//RASTERIZER_ENTRY( 0x00600C09, 0x00045119, 0x00000000, 0x000B0379, 0x0824188F, 0xFFFFFFFF ) /* * 11304 17236698 */
-//RASTERIZER_ENTRY( 0x00000035, 0x00045119, 0x00000000, 0x000B0779, 0x082410DF, 0xFFFFFFFF ) /* * 1664 17180883 */
-//RASTERIZER_ENTRY( 0x00600C09, 0x00045119, 0x00000000, 0x000B0779, 0x08241A0F, 0xFFFFFFFF ) /* * 148606 12274278 */
-//RASTERIZER_ENTRY( 0x00600C09, 0x00045119, 0x00000001, 0x000B0779, 0x082418CF, 0xFFFFFFFF ) /* * 80692 9248007 */
-//RASTERIZER_ENTRY( 0x00482435, 0x00045119, 0x00000001, 0x000B0739, 0x082418CF, 0xFFFFFFFF ) /* * 37819 8080994 */
-//RASTERIZER_ENTRY( 0x00482435, 0x00045117, 0x00000001, 0x000B0339, 0x082418CF, 0xFFFFFFFF ) /* * 37819 8080969 */
-//RASTERIZER_ENTRY( 0x00000035, 0x00045119, 0x00000001, 0x000B0379, 0x082418DF, 0xFFFFFFFF ) /* * 536 7930305 */
-//RASTERIZER_ENTRY( 0x00482435, 0x00045117, 0x00000000, 0x000B0339, 0x082418CF, 0xFFFFFFFF ) /* * 27601 7905364 */
-//RASTERIZER_ENTRY( 0x00482435, 0x00045119, 0x00000000, 0x000B0739, 0x082418CF, 0xFFFFFFFF ) /* * 27601 7905364 */
-//RASTERIZER_ENTRY( 0x00482435, 0x00045119, 0x00000000, 0x000B0739, 0x082418CF, 0xFFFFFFFF ) /* * 36314 7667917 */
-//RASTERIZER_ENTRY( 0x00482435, 0x00045117, 0x00000000, 0x000B0339, 0x082418CF, 0xFFFFFFFF ) /* * 36314 7667917 */
-//RASTERIZER_ENTRY( 0x00482435, 0x00045119, 0x00000000, 0x000B0739, 0x082418CF, 0xFFFFFFFF ) /* * 31109 6020110 */
-//RASTERIZER_ENTRY( 0x00482435, 0x00045117, 0x00000000, 0x000B0339, 0x082418CF, 0xFFFFFFFF ) /* * 31109 6020110 */
-//RASTERIZER_ENTRY( 0x00482435, 0x00045117, 0x00000000, 0x000B0339, 0x082418CF, 0xFFFFFFFF ) /* * 42689 5959231 */
-//RASTERIZER_ENTRY( 0x00482435, 0x00045119, 0x00000000, 0x000B0739, 0x082418CF, 0xFFFFFFFF ) /* * 42689 5959231 */
-//RASTERIZER_ENTRY( 0x00600C09, 0x00045119, 0x00000001, 0x000B0779, 0x0824188F, 0xFFFFFFFF ) /* * 11965 5118044 */
-//RASTERIZER_ENTRY( 0x00482435, 0x00045119, 0x00000001, 0x000B0379, 0x0824180F, 0xFFFFFFFF ) /* * 11923 4662909 */
-//RASTERIZER_ENTRY( 0x00600C09, 0x00045119, 0x00000000, 0x000B0379, 0x082410CF, 0xFFFFFFFF ) /* * 4422 4624260 */
-//RASTERIZER_ENTRY( 0x00600C09, 0x00045119, 0x00000000, 0x000B0379, 0x0824100F, 0xFFFFFFFF ) /* * 3853 3596375 */
-//RASTERIZER_ENTRY( 0x00480035, 0x00045119, 0x00000001, 0x000B0379, 0x082418DF, 0xFFFFFFFF ) /* * 400 3555759 */
-//RASTERIZER_ENTRY( 0x00600C09, 0x00045119, 0x00000001, 0x000B0379, 0x0824180F, 0xFFFFFFFF ) /* * 3755 3453084 */
-//RASTERIZER_ENTRY( 0x00000035, 0x00045119, 0x00000001, 0x000B0779, 0x082418DF, 0xFFFFFFFF ) /* * 4170 2425016 */
-//RASTERIZER_ENTRY( 0x00600C09, 0x00045119, 0x00000000, 0x000B0779, 0x0824184F, 0xFFFFFFFF ) /* * 322 2220073 */
-//RASTERIZER_ENTRY( 0x00600C09, 0x00045119, 0x00000000, 0x000B0379, 0x082418CF, 0xFFFFFFFF ) /* * 4008 1201335 */
-//RASTERIZER_ENTRY( 0x00600C09, 0x00045119, 0x00000001, 0x000B0779, 0x0824108F, 0xFFFFFFFF ) /* * 13704 883585 */
-
-/* sfrush -----> fbzColorPath alphaMode fogMode, fbzMode, texMode0, texMode1 */
-RASTERIZER_ENTRY( 0x00600C09, 0x00045119, 0x00000000, 0x000B0779, 0x00000000, 0x0824101F ) /* * 590139 246714190 */
-RASTERIZER_ENTRY( 0x00600C09, 0x00045119, 0x00000001, 0x000B0779, 0x0824101F, 0x0824101F ) /* * 397774 153418144 */
-RASTERIZER_ENTRY( 0x00600C09, 0x00045119, 0x00000000, 0x000B0779, 0x00000000, 0x082410DF ) /* * 22732 146975666 */
-RASTERIZER_ENTRY( 0x00600C09, 0x00045119, 0x00000001, 0x000B0779, 0x00000000, 0x0824101F ) /* * 306398 130393278 */
-RASTERIZER_ENTRY( 0x00600C09, 0x00045119, 0x00000000, 0x000B0779, 0x0824101F, 0x0824101F ) /* * 437743 117403881 */
-RASTERIZER_ENTRY( 0x00600C09, 0x00045119, 0x00000000, 0x000B0779, 0x0824181F, 0x0824101F ) /* * 66608 109289500 */
-RASTERIZER_ENTRY( 0x00600C09, 0x00045119, 0x00000001, 0x000B0779, 0x00000000, 0x082410DF ) /* * 19101 92573085 */
-RASTERIZER_ENTRY( 0x00600C09, 0x00045119, 0x00000000, 0x000B0779, 0x00000000, 0x0824181F ) /* * 258287 78618228 */
-RASTERIZER_ENTRY( 0x00600C09, 0x00045119, 0x00000001, 0x000B0779, 0x0824181F, 0x0824101F ) /* * 61814 68788856 */
-RASTERIZER_ENTRY( 0x00000035, 0x00045119, 0x00000001, 0x000B0779, 0x082410DF, 0x0824181F ) /* * 149792 61464124 */
-RASTERIZER_ENTRY( 0x00600C09, 0x00045119, 0x00000000, 0x000B0779, 0x0824181F, 0x0824181F ) /* * 109988 55083276 */
-RASTERIZER_ENTRY( 0x00000035, 0x00045119, 0x00000000, 0x000B0779, 0x08241ADF, 0x00000000 ) /* * 478 46989312 */
-RASTERIZER_ENTRY( 0x00000035, 0x00045119, 0x00000000, 0x000B0779, 0x08241ADF, 0x0824181F ) /* * 468 46006272 */
-RASTERIZER_ENTRY( 0x00600C09, 0x00045119, 0x00000001, 0x000B0779, 0x00000000, 0x0824181F ) /* * 125204 39023396 */
-RASTERIZER_ENTRY( 0x00000035, 0x00045119, 0x00000000, 0x000B0779, 0x08241ADF, 0x082410DB ) /* * 394 38731776 */
-RASTERIZER_ENTRY( 0x00000035, 0x00045119, 0x00000000, 0x000B0779, 0x082410DF, 0x082410DB ) /* * 12890 36333568 */
-RASTERIZER_ENTRY( 0x00482435, 0x00045119, 0x00000000, 0x000B0379, 0x0824101F, 0x0824101F ) /* * 147995 31086325 */
-RASTERIZER_ENTRY( 0x00480035, 0x00045119, 0x00000000, 0x000B077B, 0x00000000, 0x082410DB ) /* * 3576 29294592 */
-RASTERIZER_ENTRY( 0x00600C09, 0x00045119, 0x00000001, 0x000B0779, 0x0824181F, 0x0824181F ) /* * 76059 29282981 */
-RASTERIZER_ENTRY( 0x00000035, 0x00045119, 0x00000001, 0x000B0779, 0x082418DF, 0x0824101F ) /* * 12632 29173808 */
-//RASTERIZER_ENTRY( 0x00600C09, 0x00045119, 0x00000001, 0x000B0779, 0x00000000, 0x082418DF ) /* * 14040 24318118 */
-//RASTERIZER_ENTRY( 0x00482435, 0x00045119, 0x00000001, 0x000B0379, 0x0824101F, 0x0824101F ) /* * 56586 17643207 */
-//RASTERIZER_ENTRY( 0x00000035, 0x00045119, 0x00000001, 0x000B0779, 0x082418DF, 0x0824181F ) /* * 9130 17277440 */
-//RASTERIZER_ENTRY( 0x00600C09, 0x00045119, 0x00000000, 0x000B0779, 0x082418DF, 0x0824101F ) /* * 66302 17049921 */
-//RASTERIZER_ENTRY( 0x00000035, 0x00045119, 0x00000001, 0x000B0779, 0x082410DF, 0x0824101F ) /* * 64380 16463672 */
-//RASTERIZER_ENTRY( 0x00000035, 0x00045119, 0x00000000, 0x000B0779, 0x082410DF, 0x0824181F ) /* * 152 14942208 */
-//RASTERIZER_ENTRY( 0x00000035, 0x00045119, 0x00000000, 0x000B0779, 0x082418DF, 0x0824101F ) /* * 8748 13810176 */
-//RASTERIZER_ENTRY( 0x00600C09, 0x00045119, 0x00000000, 0x000B0779, 0x082708DF, 0x0824101F ) /* * 216634 10628656 */
-//RASTERIZER_ENTRY( 0x00480035, 0x00045119, 0x00000001, 0x000B077B, 0x00000000, 0x082410DB ) /* * 1282 10502144 */
-//RASTERIZER_ENTRY( 0x00600C09, 0x00045119, 0x00000001, 0x000B0779, 0x082418DF, 0x0824101F ) /* * 74636 9758030 */
-//RASTERIZER_ENTRY( 0x00000035, 0x00045119, 0x00000000, 0x000B0779, 0x082418DF, 0x082410DB ) /* * 58652 9353671 */
-//RASTERIZER_ENTRY( 0x00480035, 0x00045119, 0x00000000, 0x000B0779, 0x082418DF, 0x082410DB ) /* * 5242 8038747 */
-//RASTERIZER_ENTRY( 0x00000035, 0x00045119, 0x00000000, 0x000B077B, 0x082410DB, 0x082410DB ) /* * 11048 7538060 */
-//RASTERIZER_ENTRY( 0x00600C09, 0x00045119, 0x00000000, 0x000B0779, 0x0824101F, 0x0824181F ) /* * 121630 6906591 */
-//RASTERIZER_ENTRY( 0x00600C09, 0x00045119, 0x00000000, 0x000B0779, 0x00000000, 0x082418DF ) /* * 19553 6864245 */
-//RASTERIZER_ENTRY( 0x00600C09, 0x00045119, 0x00000001, 0x000B0779, 0x082418DF, 0x082418DF ) /* * 1287 6648834 */
-//RASTERIZER_ENTRY( 0x00600C09, 0x00045119, 0x00000001, 0x000B0779, 0x082708DF, 0x0824101F ) /* * 197766 6617876 */
-//RASTERIZER_ENTRY( 0x00600C09, 0x00045119, 0x00000000, 0x000B0779, 0x082700DF, 0x0824101F ) /* * 75470 6231739 */
-//RASTERIZER_ENTRY( 0x00000035, 0x00045119, 0x00000001, 0x000B0779, 0x08241ADF, 0x0824101F ) /* * 180 5898240 */
-//RASTERIZER_ENTRY( 0x00000035, 0x00045119, 0x00000001, 0x000B0779, 0x082410DF, 0x082410DB ) /* * 7692 5743360 */
-//RASTERIZER_ENTRY( 0x00600C09, 0x00045119, 0x00000001, 0x000B0779, 0x082418DF, 0x0824181F ) /* * 20128 4980591 */
-//RASTERIZER_ENTRY( 0x00480035, 0x00045119, 0x00000001, 0x000B0779, 0x082418DF, 0x0824181F ) /* * 1144 4685824 */
-//RASTERIZER_ENTRY( 0x00600C09, 0x00045119, 0x00000001, 0x000B0779, 0x082700DF, 0x0824101F ) /* * 72299 4466336 */
-//RASTERIZER_ENTRY( 0x00480035, 0x00045119, 0x00000000, 0x000B0779, 0x082410DF, 0x082410DB ) /* * 3750 4018176 */
-//RASTERIZER_ENTRY( 0x00600C09, 0x00045119, 0x00000001, 0x000B0779, 0x082410DF, 0x082410DF ) /* * 7533 3692141 */
-//RASTERIZER_ENTRY( 0x00000035, 0x00045119, 0x00000001, 0x000B077B, 0x082410DB, 0x0824101F ) /* * 9484 3610674 */
-//RASTERIZER_ENTRY( 0x00600C09, 0x00045119, 0x00000001, 0x000B0779, 0x0824101F, 0x0824181F ) /* * 128660 3216280 */
-//RASTERIZER_ENTRY( 0x00000035, 0x00045119, 0x00000001, 0x000B0779, 0x082418DF, 0x082410DB ) /* * 22214 3172813 */
-//RASTERIZER_ENTRY( 0x00000035, 0x00045119, 0x00000001, 0x000B077B, 0x082410DB, 0x0824181F ) /* * 5094 3099098 */
-//RASTERIZER_ENTRY( 0x00480035, 0x00045119, 0x00000001, 0x000B0779, 0x082418DF, 0x0824101F ) /* * 1954 2850924 */
-//RASTERIZER_ENTRY( 0x00000035, 0x00045119, 0x00000000, 0x000B0779, 0x082418DF, 0x0824181F ) /* * 1542 2434304 */
-//RASTERIZER_ENTRY( 0x00480035, 0x00045119, 0x00000000, 0x000B0779, 0x082418DF, 0x00000000 ) /* * 478 1957888 */
-//RASTERIZER_ENTRY( 0x00480035, 0x00045119, 0x00000000, 0x000B0779, 0x082418DF, 0x0824181F ) /* * 468 1916928 */
-//RASTERIZER_ENTRY( 0x00000035, 0x00045119, 0x00000000, 0x000B077B, 0x082410DB, 0x0824101F ) /* * 11664 1729188 */
-//RASTERIZER_ENTRY( 0x00000035, 0x00045119, 0x00000001, 0x000B077B, 0x082410DB, 0x082410DB ) /* * 1282 1640960 */
-//RASTERIZER_ENTRY( 0x00480035, 0x00045119, 0x00000001, 0x000B077B, 0x082410DB, 0x0824101F ) /* * 388 1589248 */
-//RASTERIZER_ENTRY( 0x00480035, 0x00045119, 0x00000001, 0x000B0779, 0x082410DF, 0x082410DB ) /* * 1282 1312768 */
-//RASTERIZER_ENTRY( 0x00000035, 0x00045119, 0x00000000, 0x000B077B, 0x082410DB, 0x0824181F ) /* * 3928 1046582 */
-
-/* vaportrx ---> fbzColorPath alphaMode fogMode, fbzMode, texMode0, texMode1 */
-RASTERIZER_ENTRY( 0x00482405, 0x00000000, 0x00000000, 0x000B0739, 0x0C26100F, 0xFFFFFFFF ) /* * 2226138 592165102 */
-RASTERIZER_ENTRY( 0x00482435, 0x00000000, 0x00000000, 0x000B0739, 0x0C261A0F, 0xFFFFFFFF ) /* * 53533 281405105 */
-RASTERIZER_ENTRY( 0x00482435, 0x00045119, 0x00000000, 0x000B07F9, 0x0C261ACF, 0xFFFFFFFF ) /* * 314131 219103141 */
-RASTERIZER_ENTRY( 0x00482405, 0x00045119, 0x00000000, 0x000B0339, 0x0C261A0F, 0xFFFFFFFF ) /* * 216329 95014510 */
-RASTERIZER_ENTRY( 0x00482405, 0x00000009, 0x00000000, 0x000B0739, 0x0C26100F, 0xFFFFFFFF ) /* * 317128 92010096 */
-RASTERIZER_ENTRY( 0x0142613A, 0x00045119, 0x00000000, 0x000B07F9, 0xFFFFFFFF, 0xFFFFFFFF ) /* * 13728 88595930 */
-RASTERIZER_ENTRY( 0x00482435, 0x00045119, 0x00000000, 0x000B0339, 0x0C261ACF, 0xFFFFFFFF ) /* * 649448 81449105 */
-RASTERIZER_ENTRY( 0x00482435, 0x00000000, 0x00000000, 0x000B0739, 0x0C26100F, 0xFFFFFFFF ) /* * 444231 60067944 */
-RASTERIZER_ENTRY( 0x00482405, 0x00045119, 0x00000000, 0x000B0339, 0x0C26184F, 0xFFFFFFFF ) /* * 36057 58970468 */
-RASTERIZER_ENTRY( 0x00482435, 0x00045119, 0x00000000, 0x000B0339, 0x0C26100F, 0xFFFFFFFF ) /* * 53147 48856709 */
-RASTERIZER_ENTRY( 0x00482435, 0x00045119, 0x00000000, 0x000B07F9, 0x0C2610C9, 0xFFFFFFFF ) /* * 447654 47171792 */
-RASTERIZER_ENTRY( 0x00482435, 0x00045119, 0x00000000, 0x000B0339, 0x0C261A0F, 0xFFFFFFFF ) /* * 207392 38933691 */
-RASTERIZER_ENTRY( 0x00482435, 0x00045119, 0x00000000, 0x000B0739, 0x0C2610CF, 0xFFFFFFFF ) /* * 2015632 33364173 */
-RASTERIZER_ENTRY( 0x00482405, 0x00045119, 0x00000000, 0x000B0339, 0x0C26100F, 0xFFFFFFFF ) /* * 196361 30395218 */
-RASTERIZER_ENTRY( 0x00482435, 0x00045119, 0x00000000, 0x000B0339, 0x0C2610CF, 0xFFFFFFFF ) /* * 110898 28973006 */
-RASTERIZER_ENTRY( 0x00482435, 0x00000009, 0x00000000, 0x000B0739, 0x0C26100F, 0xFFFFFFFF ) /* * 135107 16301589 */
-RASTERIZER_ENTRY( 0x00482435, 0x00045119, 0x00000000, 0x000B0339, 0x0C261A8F, 0xFFFFFFFF ) /* * 22375 15797748 */
-RASTERIZER_ENTRY( 0x00482435, 0x00045119, 0x00000000, 0x000B0339, 0x0C26184F, 0xFFFFFFFF ) /* * 141539 7513140 */
-RASTERIZER_ENTRY( 0x0142613A, 0x00045119, 0x00000000, 0x000B0739, 0xFFFFFFFF, 0xFFFFFFFF ) /* * 621403 5369705 */
-RASTERIZER_ENTRY( 0x00482435, 0x00045110, 0x00000000, 0x000B0739, 0x0C261A0F, 0xFFFFFFFF ) /* * 30443 4070277 */
-//RASTERIZER_ENTRY( 0x00482405, 0x00045110, 0x00000000, 0x000B0739, 0x0C261A0F, 0xFFFFFFFF ) /* * 22121 3129894 */
-//RASTERIZER_ENTRY( 0x00482435, 0x00045119, 0x00000000, 0x000B0739, 0x0C26100F, 0xFFFFFFFF ) /* * 9187 1864599 */
-//RASTERIZER_ENTRY( 0x00482405, 0x00044110, 0x00000000, 0x000B0739, 0x0C2610CF, 0xFFFFFFFF ) /* * 10390 1694950 */
-//RASTERIZER_ENTRY( 0x0142610A, 0x00000009, 0x00000000, 0x000B0739, 0xFFFFFFFF, 0xFFFFFFFF ) /* * 25366 1624563 */
-//RASTERIZER_ENTRY( 0x00482435, 0x00045119, 0x00000000, 0x000B0739, 0x0C261A0F, 0xFFFFFFFF ) /* * 69033 1607970 */
-//RASTERIZER_ENTRY( 0x0142610A, 0x00000000, 0x00000000, 0x000B0739, 0xFFFFFFFF, 0xFFFFFFFF ) /* * 36316 1084818 */
-//RASTERIZER_ENTRY( 0x00482405, 0x00045119, 0x00000000, 0x000B0339, 0x0C2610CF, 0xFFFFFFFF ) /* * 1813 816763 */
-//RASTERIZER_ENTRY( 0x0142613A, 0x00045119, 0x00000000, 0x000B0339, 0xFFFFFFFF, 0xFFFFFFFF ) /* * 6602 767221 */
-//RASTERIZER_ENTRY( 0x00482435, 0x00045110, 0x00000000, 0x000B0739, 0x0C26100F, 0xFFFFFFFF ) /* * 2547 646048 */
-//RASTERIZER_ENTRY( 0x00482405, 0x00045119, 0x00000000, 0x000B0339, 0x0C261A8F, 0xFFFFFFFF ) /* * 2394 501590 */
-//RASTERIZER_ENTRY( 0x0142613A, 0x00000009, 0x00000000, 0x000B0739, 0xFFFFFFFF, 0xFFFFFFFF ) /* * 14078 440086 */
-//RASTERIZER_ENTRY( 0x0142610A, 0x00045119, 0x00000000, 0x000B0339, 0xFFFFFFFF, 0xFFFFFFFF ) /* * 9877 429160 */
-//RASTERIZER_ENTRY( 0x00482405, 0x00045119, 0x00000000, 0x000B0339, 0x0C261ACF, 0xFFFFFFFF ) /* * 3222 366052 */
-//RASTERIZER_ENTRY( 0x00482435, 0x00000009, 0x00000000, 0x000B0739, 0x0C2610CF, 0xFFFFFFFF ) /* * 5942 285657 */
-//RASTERIZER_ENTRY( 0x00482405, 0x00044119, 0x00000000, 0x000B0339, 0x0C2610CF, 0xFFFFFFFF ) /* * 2328 239688 */
-//RASTERIZER_ENTRY( 0x00482405, 0x00045119, 0x00000000, 0x000B0739, 0x0C26100F, 0xFFFFFFFF ) /* * 1129 208448 */
-
-/* wg3dh ------> fbzColorPath alphaMode fogMode, fbzMode, texMode0, texMode1 */
-RASTERIZER_ENTRY( 0x00000035, 0x00045119, 0x00000000, 0x000B0779, 0x0824181F, 0xFFFFFFFF ) /* * 127676 116109477 */
-RASTERIZER_ENTRY( 0x00000035, 0x00045119, 0x00000000, 0x000B0779, 0x0824189F, 0xFFFFFFFF ) /* * 96310 112016758 */
-RASTERIZER_ENTRY( 0x00000035, 0x00045119, 0x00000000, 0x000B0779, 0x0824109F, 0xFFFFFFFF ) /* * 1412831 108682642 */
-RASTERIZER_ENTRY( 0x00000035, 0x00045119, 0x00000000, 0x000B0779, 0x0824101F, 0xFFFFFFFF ) /* * 1612798 45952714 */
-RASTERIZER_ENTRY( 0x00000035, 0x00045119, 0x00000000, 0x000B0779, 0x08241AD9, 0xFFFFFFFF ) /* * 5960 6103040 */
-RASTERIZER_ENTRY( 0x00002435, 0x00045119, 0x00000000, 0x000B0779, 0x082418DF, 0xFFFFFFFF ) /* * 56512 4856542 */
-RASTERIZER_ENTRY( 0x00480035, 0x00045119, 0x00000000, 0x000B0779, 0x0824109F, 0xFFFFFFFF ) /* * 8480 2045940 */
-RASTERIZER_ENTRY( 0x00000035, 0x00045119, 0x00000000, 0x000B0379, 0x0824181F, 0xFFFFFFFF ) /* * 2779 1994317 */
-RASTERIZER_ENTRY( 0x00000035, 0x00045119, 0x00000000, 0x000B0779, 0x0824105F, 0xFFFFFFFF ) /* * 154691 1922774 */
-RASTERIZER_ENTRY( 0x00002435, 0x00045119, 0x00000000, 0x000B0779, 0x082410DF, 0xFFFFFFFF ) /* * 18114 776139 */
-
-/* gauntleg ---> fbzColorPath alphaMode fogMode, fbzMode, texMode0, texMode1 */
-RASTERIZER_ENTRY( 0x00602C19, 0x00045119, 0x00000000, 0x000B0779, 0x00000000, 0x0C24100F ) /* * 157050 668626339 */
-RASTERIZER_ENTRY( 0x00600039, 0x00045119, 0x00000000, 0x000B0779, 0x0C22400F, 0x0C241ACF ) /* * 1079126 580272490 */
-RASTERIZER_ENTRY( 0x00482435, 0x00045119, 0x00000000, 0x000B0779, 0x0C241A4F, 0x0C24100F ) /* * 49686 232178144 */
-RASTERIZER_ENTRY( 0x00482435, 0x00045119, 0x00000000, 0x000B0779, 0x0C24104F, 0x0C24100F ) /* * 1048560 206304396 */
-RASTERIZER_ENTRY( 0x00600039, 0x00045119, 0x00000000, 0x000B0779, 0x0C2240CF, 0x0C241ACF ) /* * 59176 182444375 */
-RASTERIZER_ENTRY( 0x00482435, 0x00045119, 0x00000000, 0x000B0779, 0x00000000, 0x0C241A4F ) /* * 66342 179689728 */
-RASTERIZER_ENTRY( 0x00602C19, 0x00045119, 0x00000000, 0x000B0779, 0x0C24180F, 0x0C24180F ) /* * 72264 109413344 */
-RASTERIZER_ENTRY( 0x00602C19, 0x00045119, 0x00000000, 0x000B0779, 0x0C24100F, 0x0C24100F ) /* * 281243 75399210 */
-RASTERIZER_ENTRY( 0x00482435, 0x00045119, 0x00000000, 0x000B0779, 0x00000000, 0x0C24104F ) /* * 126384 68412120 */
-RASTERIZER_ENTRY( 0x00600C09, 0x00045119, 0x00000000, 0x000B0779, 0x0C241A0F, 0x0C24100F ) /* * 26864 43754988 */
-RASTERIZER_ENTRY( 0x00482435, 0x00045119, 0x00000000, 0x000B0779, 0x00000000, 0x0C241ACF ) /* * 30510 32759936 */
-RASTERIZER_ENTRY( 0x00602C19, 0x00045119, 0x00000000, 0x000B0779, 0x0C24180F, 0x0C24100F ) /* * 44783 31884168 */
-RASTERIZER_ENTRY( 0x00602C19, 0x00045119, 0x00000000, 0x000B0779, 0x00000000, 0x0C24180F ) /* * 34946 31359362 */
-RASTERIZER_ENTRY( 0x00600C09, 0x00045119, 0x00000000, 0x000B0779, 0x00000000, 0x0C241ACF ) /* * 8006 28367999 */
-RASTERIZER_ENTRY( 0x00602C19, 0x00045119, 0x00000000, 0x000B0379, 0x0C24180F, 0x0C24180F ) /* * 15430 27908213 */
-RASTERIZER_ENTRY( 0x00600C09, 0x00045119, 0x00000000, 0x000B0779, 0x00000000, 0x0C241A0F ) /* * 29306 25166802 */
-RASTERIZER_ENTRY( 0x00602C19, 0x00045119, 0x00000000, 0x000B0779, 0x0C24180F, 0x0C241ACF ) /* * 27737 24517949 */
-RASTERIZER_ENTRY( 0x00600C09, 0x00045119, 0x00000000, 0x000B0779, 0x0C241ACF, 0x0C24100F ) /* * 6783 21292092 */
-RASTERIZER_ENTRY( 0x00602C19, 0x00045119, 0x00000000, 0x000B0379, 0x00000000, 0x0C24180F ) /* * 9591 17815763 */
-RASTERIZER_ENTRY( 0x00602C19, 0x00045119, 0x00000000, 0x000B0779, 0x0C24100F, 0x0C24180F ) /* * 343966 13864759 */
-//RASTERIZER_ENTRY( 0x00482435, 0x00045119, 0x00000000, 0x000B0779, 0x0C241ACF, 0x0C24100F ) /* * 11842 12126208 */
-//RASTERIZER_ENTRY( 0x00600C09, 0x00045119, 0x00000000, 0x000B0779, 0x0C241A8F, 0x0C24100F ) /* * 6648 9788508 */
-//RASTERIZER_ENTRY( 0x00482435, 0x00045119, 0x00000000, 0x000B0779, 0x00000000, 0x0C2418CF ) /* * 8444 8646656 */
-//RASTERIZER_ENTRY( 0x00600C09, 0x00045119, 0x00000000, 0x000B0379, 0x0C24180F, 0x0C24100F ) /* * 9677 8365606 */
-//RASTERIZER_ENTRY( 0x00600C09, 0x00045119, 0x00000000, 0x000B0779, 0x0C24100F, 0x0C24100F ) /* * 844920 8289326 */
-//RASTERIZER_ENTRY( 0x00482435, 0x00045119, 0x00000000, 0x000B0779, 0x00000000, 0x0C24184F ) /* * 3108 8010176 */
-//RASTERIZER_ENTRY( 0x00600039, 0x00045119, 0x00000000, 0x000B03F9, 0x00000000, 0x0C24180F ) /* * 1435 6209238 */
-//RASTERIZER_ENTRY( 0x00602C19, 0x00045119, 0x00000000, 0x000B0379, 0x0C24180F, 0x0C24100F ) /* * 5754 5617499 */
-//RASTERIZER_ENTRY( 0x00600039, 0x00045119, 0x00000000, 0x000B0379, 0x0C24180F, 0x0C24180F ) /* * 1608 5557253 */
-//RASTERIZER_ENTRY( 0x00602C19, 0x00045119, 0x00000000, 0x000B0779, 0x0C24100F, 0x0C241ACF ) /* * 105127 5133321 */
-//RASTERIZER_ENTRY( 0x00602C19, 0x00045119, 0x00000000, 0x000B0379, 0x0C24180F, 0x0C241ACF ) /* * 3460 4689138 */
-//RASTERIZER_ENTRY( 0x00600C09, 0x00045119, 0x00000000, 0x000B0779, 0x0C24180F, 0x0C24100F ) /* * 7025 4629550 */
-//RASTERIZER_ENTRY( 0x00600C09, 0x00045119, 0x00000000, 0x000B0779, 0x00000000, 0x0C24180F ) /* * 7164 4407683 */
-//RASTERIZER_ENTRY( 0x00602C19, 0x00045119, 0x00000000, 0x000B0779, 0x00000000, 0x0C24188F ) /* * 1922 3924179 */
-//RASTERIZER_ENTRY( 0x00600039, 0x00045119, 0x00000000, 0x000B0779, 0x00000000, 0x0C24180F ) /* * 4116 3733777 */
-//RASTERIZER_ENTRY( 0x00600C09, 0x00045119, 0x00000000, 0x000B0779, 0x00000000, 0x0C241A8F ) /* * 2626 3732809 */
-//RASTERIZER_ENTRY( 0x00600039, 0x00045119, 0x00000000, 0x000B03F9, 0x0C24180F, 0x0C24180F ) /* * 778 3202973 */
-//RASTERIZER_ENTRY( 0x00482435, 0x00045119, 0x00000000, 0x000B0779, 0x0C24184F, 0x0C24100F ) /* * 1525 2997446 */
-//RASTERIZER_ENTRY( 0x00600039, 0x00045119, 0x00000000, 0x000B03F9, 0x0C24180F, 0x0C241A0F ) /* * 645 2975266 */
-//RASTERIZER_ENTRY( 0x00600039, 0x00044119, 0x00000000, 0x000B0379, 0x00000000, 0x0C241A0F ) /* * 5212 2491361 */
-//RASTERIZER_ENTRY( 0x00600039, 0x00045119, 0x00000000, 0x000B0379, 0x00000000, 0x0C24180F ) /* * 825 1996513 */
-//RASTERIZER_ENTRY( 0x00600039, 0x00045119, 0x00000000, 0x000B0379, 0x0C24180F, 0x0C241A0F ) /* * 466 1967163 */
-//RASTERIZER_ENTRY( 0x00602C19, 0x00045119, 0x00000000, 0x000B0779, 0x0580000F, 0x0C24180F ) /* * 77400 1883434 */
-//RASTERIZER_ENTRY( 0x00600039, 0x00045119, 0x00000000, 0x000B0379, 0x0C24180F, 0x0C24100F ) /* * 472 1698177 */
-//RASTERIZER_ENTRY( 0x00600039, 0x00045119, 0x00000000, 0x000B0779, 0x0C24180F, 0x0C24180F ) /* * 2476 1678760 */
-//RASTERIZER_ENTRY( 0x00600C09, 0x00045119, 0x00000000, 0x000B0379, 0x00000000, 0x0C24180F ) /* * 4054 1541748 */
-//RASTERIZER_ENTRY( 0x00600039, 0x00044119, 0x00000000, 0x000B0379, 0x0C241A0F, 0x0C24180F ) /* * 3132 1509438 */
-//RASTERIZER_ENTRY( 0x00602C19, 0x00045119, 0x00000000, 0x000B0779, 0x0580080F, 0x0C24180F ) /* * 8582 1324196 */
-//RASTERIZER_ENTRY( 0x00602C19, 0x00044119, 0x00000000, 0x000B0379, 0x00000000, 0x0C24100F ) /* * 1436 1239704 */
-//RASTERIZER_ENTRY( 0x00600039, 0x00045119, 0x00000000, 0x000B03F9, 0x0C24180F, 0x0C24100F ) /* * 253 1220316 */
-//RASTERIZER_ENTRY( 0x00600039, 0x00045119, 0x00000000, 0x000B0779, 0x0C22480F, 0x0C241ACF ) /* * 2433 1014668 */
-
-/* gauntdl ----> fbzColorPath alphaMode fogMode, fbzMode, texMode0, texMode1 */
-RASTERIZER_ENTRY( 0x00482435, 0x00045119, 0x000000C1, 0x000B0779, 0x00000009, 0x0C241ACF ) /* * 30860 1128173568 */
-RASTERIZER_ENTRY( 0x0060743A, 0x00045119, 0x000000C1, 0x000B0779, 0x0C22400F, 0x0C241ACF ) /* * 2631692 1117011118 */
-RASTERIZER_ENTRY( 0x0060743A, 0x00045110, 0x000000C1, 0x000B0779, 0x0C22400F, 0x0C241ACF ) /* * 2429239 826969012 */
-RASTERIZER_ENTRY( 0x0060743A, 0x00045119, 0x000000C1, 0x000B0779, 0x0C22480F, 0x0C241ACF ) /* * 454056 468285142 */
-RASTERIZER_ENTRY( 0x00482435, 0x00045119, 0x000000C1, 0x000B0779, 0x00000009, 0x0C2418CF ) /* * 257586 355634672 */
-RASTERIZER_ENTRY( 0x00602439, 0x00045119, 0x000000C1, 0x000B0379, 0x00000009, 0x0C24180F ) /* * 10898 134362122 */
-RASTERIZER_ENTRY( 0x00602439, 0x00045119, 0x000000C1, 0x000B0779, 0x00000009, 0x0C241A0F ) /* * 32195 126327049 */
-RASTERIZER_ENTRY( 0x00482435, 0x00045119, 0x000000C1, 0x000B0779, 0x0C2410CF, 0x0C24100F ) /* * 855240 123899880 */
-RASTERIZER_ENTRY( 0x00602439, 0x00045110, 0x000000C1, 0x000B0379, 0x00000009, 0x0C24180F ) /* * 1718 120629204 */
-RASTERIZER_ENTRY( 0x0060743A, 0x00045119, 0x000000C1, 0x000B0779, 0x0C22488F, 0x0C241ACF ) /* * 186839 120281357 */
-RASTERIZER_ENTRY( 0x0060743A, 0x00045119, 0x000000C1, 0x000B0379, 0x0C22480F, 0x0C241ACF ) /* * 14102 115428820 */
-RASTERIZER_ENTRY( 0x00482435, 0x00045119, 0x000000C1, 0x000B0779, 0x00000009, 0x0C2410CF ) /* * 88530 98271949 */
-RASTERIZER_ENTRY( 0x0060743A, 0x00045110, 0x000000C1, 0x000B0379, 0x0C22480F, 0x0C241ACF ) /* * 12994 68053222 */
-RASTERIZER_ENTRY( 0x00602439, 0x00044110, 0x00000000, 0x000B0379, 0x00000009, 0x0C24100F ) /* * 68273 67454880 */
-RASTERIZER_ENTRY( 0x00602439, 0x00045119, 0x000000C1, 0x000B0779, 0x00000009, 0x0C24180F ) /* * 100026 62271618 */
-RASTERIZER_ENTRY( 0x0060743A, 0x00045110, 0x000000C1, 0x000B0779, 0x0C22480F, 0x0C241ACF ) /* * 153285 44411342 */
-RASTERIZER_ENTRY( 0x00602439, 0x00045119, 0x000000C1, 0x000B0779, 0x00000009, 0x0C24100F ) /* * 157545 40702131 */
-RASTERIZER_ENTRY( 0x00482435, 0x00045119, 0x000000C1, 0x000B0779, 0x0C241ACF, 0x0C24100F ) /* * 7800 31948800 */
-RASTERIZER_ENTRY( 0x0060743A, 0x00045110, 0x000000C1, 0x000B0779, 0x0C22408F, 0x0C241ACF ) /* * 47623 20321183 */
-RASTERIZER_ENTRY( 0x00602439, 0x00044119, 0x00000000, 0x000B0379, 0x00000009, 0x0C24188F ) /* * 21570 19324892 */
-//RASTERIZER_ENTRY( 0x00482435, 0x00045110, 0x000000C1, 0x000B0779, 0x0C241ACF, 0x0C24100F ) /* * 3698 15147008 */
-//RASTERIZER_ENTRY( 0x0060743A, 0x00045119, 0x000000C1, 0x000B0779, 0x0C22408F, 0x0C241ACF ) /* * 19765 12383722 */
-//RASTERIZER_ENTRY( 0x00602C19, 0x00045119, 0x000000C1, 0x000B0779, 0x0C24100F, 0x0C241ACF ) /* * 662274 10563855 */
-//RASTERIZER_ENTRY( 0x00602439, 0x00045110, 0x000000C1, 0x000B0779, 0x0C24180F, 0x0C241ACF ) /* * 27909 10462997 */
-//RASTERIZER_ENTRY( 0x00602439, 0x00045110, 0x000000C1, 0x000B0779, 0x00000009, 0x0C24180F ) /* * 78671 10286957 */
-//RASTERIZER_ENTRY( 0x00602439, 0x00045110, 0x000000C1, 0x000B0779, 0x00000009, 0x0C24188F ) /* * 52038 9928244 */
-//RASTERIZER_ENTRY( 0x0060743A, 0x00045119, 0x000000C1, 0x000B0779, 0x0C224A0F, 0x0C241ACF ) /* * 27469 9239782 */
-//RASTERIZER_ENTRY( 0x00602C19, 0x00045119, 0x000000C1, 0x000B0779, 0x00000009, 0x0C24100F ) /* * 757116 8072783 */
-//RASTERIZER_ENTRY( 0x0060743A, 0x00045110, 0x000000C1, 0x000B0779, 0x0C22488F, 0x0C241ACF ) /* * 18018 7035833 */
-//RASTERIZER_ENTRY( 0x00602439, 0x00044119, 0x00000000, 0x000B0379, 0x00000009, 0x0C241A0F ) /* * 50339 5976564 */
-//RASTERIZER_ENTRY( 0x00603430, 0x00040219, 0x00000000, 0x000B0379, 0x00000009, 0x0C2410CE ) /* * 29385 5466384 */
-//RASTERIZER_ENTRY( 0x00602C19, 0x00045119, 0x000000C1, 0x000B0779, 0x0C24100F, 0x0C24180F ) /* * 423347 5355017 */
-//RASTERIZER_ENTRY( 0x00602C19, 0x00045119, 0x000000C1, 0x000B0779, 0x0C24180F, 0x0C241ACF ) /* * 162620 4709092 */
-//RASTERIZER_ENTRY( 0x00602C19, 0x00045110, 0x000000C1, 0x000B0779, 0x00000009, 0x0C24100F ) /* * 463705 4642480 */
-//RASTERIZER_ENTRY( 0x00602C19, 0x00045119, 0x000000C1, 0x000B0779, 0x0C24180F, 0x0C24180F ) /* * 280337 4425529 */
-//RASTERIZER_ENTRY( 0x00602C19, 0x00045110, 0x000000C1, 0x000B0779, 0x0C24180F, 0x0C24180F ) /* * 212646 3432265 */
-//RASTERIZER_ENTRY( 0x00482435, 0x00045119, 0x000000C1, 0x000B0779, 0x0C2418CF, 0x0C24100F ) /* * 5788 2963456 */
-//RASTERIZER_ENTRY( 0x00602C19, 0x00045110, 0x000000C1, 0x000B0779, 0x0C24180F, 0x0C24100F ) /* * 460800 2609198 */
-//RASTERIZER_ENTRY( 0x00602439, 0x00045119, 0x000000C1, 0x000B0779, 0x0C24100F, 0x0C24180F ) /* * 251108 2392362 */
-//RASTERIZER_ENTRY( 0x00602C19, 0x00045110, 0x000000C1, 0x000B0779, 0x0C24100F, 0x0C24100F ) /* * 297219 2352862 */
-//RASTERIZER_ENTRY( 0x00602439, 0x00045119, 0x000000C1, 0x000B0779, 0x0584180F, 0x0C2410CF ) /* * 9913 2097069 */
-//RASTERIZER_ENTRY( 0x00602C19, 0x00045110, 0x000000C1, 0x000B0779, 0x0C24180F, 0x0C241ACF ) /* * 142722 2091569 */
-//RASTERIZER_ENTRY( 0x00602C19, 0x00045119, 0x000000C1, 0x000B0379, 0x0C24180F, 0x0C241ACF ) /* * 8820 2053325 */
-//RASTERIZER_ENTRY( 0x00602439, 0x00045119, 0x000000C1, 0x000B0779, 0x00000009, 0x0C24188F ) /* * 10346 2033427 */
-//RASTERIZER_ENTRY( 0x00602439, 0x00045119, 0x000000C1, 0x000B0779, 0x0C24188F, 0x0C241ACF ) /* * 2136 2017241 */
-//RASTERIZER_ENTRY( 0x00602439, 0x00044119, 0x00000000, 0x000B0379, 0x00000009, 0x0C24100F ) /* * 1505 1928490 */
-//RASTERIZER_ENTRY( 0x00602C19, 0x00045110, 0x000000C1, 0x000B0779, 0x0C24100F, 0x0C241ACF ) /* * 176734 1842440 */
-//RASTERIZER_ENTRY( 0x00602C19, 0x00045110, 0x000000C1, 0x000B0779, 0x0C24100F, 0x0C24180F ) /* * 262577 1799080 */
-//RASTERIZER_ENTRY( 0x00602C19, 0x00045119, 0x000000C1, 0x000B0779, 0x00000009, 0x0C24180F ) /* * 83179 1534171 */
-//RASTERIZER_ENTRY( 0x00602C19, 0x00045119, 0x000000C1, 0x000B0779, 0x00000009, 0x0C24188F ) /* * 3863 1527077 */
-//RASTERIZER_ENTRY( 0x00602C19, 0x00045119, 0x000000C1, 0x000B0379, 0x0C24180F, 0x0C24180F ) /* * 8021 1472661 */
-//RASTERIZER_ENTRY( 0x00602C19, 0x00045119, 0x000000C1, 0x000B0779, 0x0C241A0F, 0x0C241ACF ) /* * 85416 1342195 */
-//RASTERIZER_ENTRY( 0x00602C19, 0x00045119, 0x000000C1, 0x000B0779, 0x0C24180F, 0x0C24100F ) /* * 261360 1335048 */
-//RASTERIZER_ENTRY( 0x00602C19, 0x00000009, 0x000000C1, 0x000B0779, 0x0C2418CF, 0x0C24100F ) /* * 74811 1320900 */
-//RASTERIZER_ENTRY( 0x00602C19, 0x00045119, 0x000000C1, 0x000B0779, 0x0C24100F, 0x0C24100F ) /* * 239331 1268661 */
-//RASTERIZER_ENTRY( 0x00602439, 0x00045119, 0x000000C1, 0x000B0779, 0x0C24100F, 0x0C241ACF ) /* * 107769 1244175 */
-//RASTERIZER_ENTRY( 0x00602C19, 0x00045110, 0x000000C1, 0x000B0379, 0x0C24180F, 0x0C241ACF ) /* * 3706 1216182 */
-//RASTERIZER_ENTRY( 0x00602C19, 0x00045119, 0x000000C1, 0x000B0779, 0x0C24100F, 0x0C24188F ) /* * 49608 1206129 */
-//RASTERIZER_ENTRY( 0x00602C19, 0x00000009, 0x000000C1, 0x000B0779, 0x0C2418CF, 0x0C241ACF ) /* * 42440 1204109 */
-//RASTERIZER_ENTRY( 0x00482435, 0x00045110, 0x000000C1, 0x000B0779, 0x0C2410CF, 0x0C24100F ) /* * 29584 1168568 */
-//RASTERIZER_ENTRY( 0x00602439, 0x00045119, 0x000000C1, 0x000B0779, 0x0C24180F, 0x0C241ACF ) /* * 17729 1152869 */
-//RASTERIZER_ENTRY( 0x00602C19, 0x00045110, 0x000000C1, 0x000B0379, 0x0C24180F, 0x0C24100F ) /* * 4052 1108726 */
-//RASTERIZER_ENTRY( 0x00602C19, 0x00045119, 0x000000C1, 0x000B0779, 0x0C2418CF, 0x0C24100F ) /* * 7082 1079348 */
-//RASTERIZER_ENTRY( 0x00602439, 0x00044119, 0x00000000, 0x000B0379, 0x00000009, 0x0C24180F ) /* * 7761 1023855 */
-
-/* gradius4 ----> fbzColorPath alphaMode fogMode, fbzMode, texMode0, texMode1 */
-//RASTERIZER_ENTRY( 0x02420002, 0x00000009, 0x00000000, 0x00030F7B, 0x08241AC7, 0xFFFFFFFF ) /* intro */
-//RASTERIZER_ENTRY( 0x01420021, 0x00005119, 0x00000000, 0x00030F7B, 0x14261AC7, 0xFFFFFFFF ) /* intro */
-//RASTERIZER_ENTRY( 0x00000005, 0x00005119, 0x00000000, 0x00030F7B, 0x14261A87, 0xFFFFFFFF ) /* in-game */
-
-/* nbapbp ------> fbzColorPath alphaMode fogMode, fbzMode, texMode0, texMode1 */
-//RASTERIZER_ENTRY( 0x00424219, 0x00000000, 0x00000001, 0x00030B7B, 0x08241AC7, 0xFFFFFFFF ) /* intro */
-//RASTERIZER_ENTRY( 0x00002809, 0x00004110, 0x00000001, 0x00030FFB, 0x08241AC7, 0xFFFFFFFF ) /* in-game */
-//RASTERIZER_ENTRY( 0x00424219, 0x00000000, 0x00000001, 0x00030F7B, 0x08241AC7, 0xFFFFFFFF ) /* in-game */
-//RASTERIZER_ENTRY( 0x0200421A, 0x00001510, 0x00000001, 0x00030F7B, 0x08241AC7, 0xFFFFFFFF ) /* in-game */
-/* gtfore06 ----> fbzColorPath alphaMode fogMode, fbzMode, texMode0, texMode1 hash */
-RASTERIZER_ENTRY( 0x00482405, 0x00045119, 0x000000C1, 0x00010F79, 0x0C261ACD, 0x0C261ACD ) /* 18 1064626 69362127 */
-RASTERIZER_ENTRY( 0x00002425, 0x00045119, 0x000000C1, 0x00010F79, 0x0C224A0D, 0x0C261ACD ) /* 47 3272483 31242799 */
-RASTERIZER_ENTRY( 0x00482405, 0x00045119, 0x000000C1, 0x00010F79, 0x00000ACD, 0x0C261ACD ) /* 9 221917 12348555 */
-RASTERIZER_ENTRY( 0x00002425, 0x00045110, 0x000000C1, 0x00010FF9, 0x00000ACD, 0x0C261ACD ) /* 26 57291 9357989 */
-RASTERIZER_ENTRY( 0x00002429, 0x00000000, 0x000000C1, 0x00010FF9, 0x00000A09, 0x0C261A0F ) /* 12 97156 8530607 */
-RASTERIZER_ENTRY( 0x00482405, 0x00045119, 0x000000C1, 0x00010F79, 0x000000C4, 0x0C261ACD ) /* 55 110144 5265532 */
-RASTERIZER_ENTRY( 0x00002425, 0x00045110, 0x000000C1, 0x00010FF9, 0x000000C4, 0x0C261ACD ) /* 61 16644 1079382 */
-RASTERIZER_ENTRY( 0x00002425, 0x00045119, 0x000000C1, 0x00010FF9, 0x000000C4, 0x0C261ACD ) /* 5 8332 1065229 */
-RASTERIZER_ENTRY( 0x00002425, 0x00045119, 0x000000C1, 0x00010F79, 0x0C224A0D, 0x0C261A0D ) /* 45 8148 505013 */
-RASTERIZER_ENTRY( 0x00002425, 0x00045119, 0x00000000, 0x00010F79, 0x0C224A0D, 0x0C261A0D ) /* 84 45233 248267 */
-RASTERIZER_ENTRY( 0x00482405, 0x00045119, 0x000000C1, 0x00010F79, 0x0C261ACD, 0x0C2610C4 ) /* 90 10235 193036 */
-RASTERIZER_ENTRY( 0x00482405, 0x00045119, 0x000000C1, 0x00010FF9, 0x0C261ACD, 0x0C261ACD ) /* * 29 3777 83777 */
-RASTERIZER_ENTRY( 0x00482405, 0x00045119, 0x00000000, 0x00010FF9, 0x0C261ACD, 0x042210C0 ) /* 2 24952 66761 */
-RASTERIZER_ENTRY( 0x00002429, 0x00000000, 0x00000000, 0x00010FF9, 0x00000A09, 0x0C261A0F ) /* 24 661 50222 */
-RASTERIZER_ENTRY( 0x00482405, 0x00045119, 0x00000000, 0x00010FF9, 0x0C261ACD, 0x04221AC9 ) /* 92 12504 43720 */
-RASTERIZER_ENTRY( 0x00482405, 0x00045119, 0x000000C1, 0x00010FF9, 0x0C261ACD, 0x0C2610C4 ) /* 79 2160 43650 */
-RASTERIZER_ENTRY( 0x00482405, 0x00045119, 0x00000000, 0x00010FF9, 0x000000C4, 0x04221AC9 ) /* 19 2796 30377 */
-RASTERIZER_ENTRY( 0x00002425, 0x00045119, 0x000000C1, 0x00010FF9, 0x00000ACD, 0x0C261ACD ) /* 67 1962 14755 */
-RASTERIZER_ENTRY( 0x00482405, 0x00045119, 0x000000C1, 0x00010FF9, 0x000000C4, 0x0C261ACD ) /* * 66 74 3951 */
-RASTERIZER_ENTRY( 0x00482405, 0x00045119, 0x00000000, 0x00010FF9, 0x00000ACD, 0x04221AC9 ) /* 70 374 3691 */
-RASTERIZER_ENTRY( 0x00482405, 0x00045119, 0x000000C1, 0x00010FF9, 0x00000ACD, 0x0C261ACD ) /* * 20 350 7928 */
-/* virtpool ----> fbzColorPath alphaMode fogMode, fbzMode, texMode0, texMode1 hash */
-RASTERIZER_ENTRY( 0x00002421, 0x00000000, 0x00000000, 0x000B0739, 0x0C261A0F, 0x042210C0 ) /* * 78 2182388 74854175 */
-RASTERIZER_ENTRY( 0x00002421, 0x00000000, 0x00000000, 0x000B07F9, 0x0C261A0F, 0x042210C0 ) /* * 46 114830 6776826 */
-RASTERIZER_ENTRY( 0x00482405, 0x00045110, 0x00000000, 0x000B0739, 0x0C261A0F, 0x042210C0 ) /* * 58 1273673 4513463 */
-RASTERIZER_ENTRY( 0x00482405, 0x00045110, 0x00000000, 0x000B0739, 0x0C261A09, 0x042210C0 ) /* * 46 634995 2275612 */
-RASTERIZER_ENTRY( 0x00002421, 0x00000000, 0x00000000, 0x000B073B, 0x0C261A0F, 0x042210C0 ) /* * 46 26651 1883507 */
-RASTERIZER_ENTRY( 0x00482405, 0x00045110, 0x00000000, 0x000B073B, 0x0C261A0F, 0x042210C0 ) /* * 26 220644 751241 */
-//RASTERIZER_ENTRY( 0x00002421, 0x00445110, 0x00000000, 0x000B073B, 0x0C261A09, 0x042210C0 ) /* * 79 14846 3499120 */
-//RASTERIZER_ENTRY( 0x00002421, 0x00000000, 0x00000000, 0x000B0739, 0x0C261A09, 0x042210C0 ) /* * 66 26665 1583363 */
-//RASTERIZER_ENTRY( 0x00002421, 0x00000000, 0x00000000, 0x000B073B, 0x0C26100F, 0x042210C0 ) /* * 78 33096 957935 */
-//RASTERIZER_ENTRY( 0x00002425, 0x00445110, 0x00000000, 0x000B07F9, 0x0C261A0F, 0x042210C0 ) /* * 38 12494 678029 */
-//RASTERIZER_ENTRY( 0x00800000, 0x00000000, 0x00000000, 0x00000200, 0x00000000, 0x00000000 ) /* * 28 25348 316181 */
-//RASTERIZER_ENTRY( 0x00002421, 0x00000000, 0x00000000, 0x000B0739, 0x0C26100F, 0x042210C0 ) /* * 13 11344 267903 */
-//RASTERIZER_ENTRY( 0x00002421, 0x00000000, 0x00000000, 0x000B073B, 0x0C261A09, 0x042210C0 ) /* * 34 1548 112168 */
-//RASTERIZER_ENTRY( 0x00002421, 0x00000000, 0x00000000, 0x000B07FB, 0x0C26100F, 0x042210C0 ) /* * 35 664 25222 */
-//RASTERIZER_ENTRY( 0x00000002, 0x00000000, 0x00000000, 0x00000300, 0xFFFFFFFF, 0xFFFFFFFF ) /* * 33 512 18393 */
-//RASTERIZER_ENTRY( 0x00002421, 0x00000000, 0x00000000, 0x000B07FB, 0x0C261A0F, 0x042210C0 ) /* * 14 216 16842 */
-//RASTERIZER_ENTRY( 0x00000001, 0x00000000, 0x00000000, 0x00000300, 0x00000800, 0x00000800 ) /* * 87 2 72 */
-//RASTERIZER_ENTRY( 0x00000001, 0x00000000, 0x00000000, 0x00000200, 0x08241A00, 0x08241A00 ) /* * 92 2 8 */
-//RASTERIZER_ENTRY( 0x00000001, 0x00000000, 0x00000000, 0x00000200, 0x00000000, 0x08241A00 ) /* * 93 2 8 */
-
-#endif
+RASTERIZER(generic_2tmu, 2, vd->reg[fbzColorPath].u, vd->reg[fbzMode].u, vd->reg[alphaMode].u,
+ vd->reg[fogMode].u, vd->tmu[0].reg[textureMode].u, vd->tmu[1].reg[textureMode].u)
diff --git a/src/devices/video/voodoo.h b/src/devices/video/voodoo.h
index 3d92f17f86a..1dc1a4a59ec 100644
--- a/src/devices/video/voodoo.h
+++ b/src/devices/video/voodoo.h
@@ -11,9 +11,1694 @@
#ifndef __VOODOO_H__
#define __VOODOO_H__
+#include "video/polylgcy.h"
+
#pragma once
+/*************************************
+ *
+ * Misc. constants
+ *
+ *************************************/
+
+/* enumeration describing reasons we might be stalled */
+enum
+{
+ NOT_STALLED = 0,
+ STALLED_UNTIL_FIFO_LWM,
+ STALLED_UNTIL_FIFO_EMPTY
+};
+
+
+
+// Use old table lookup versus straight double divide
+#define USE_FAST_RECIP 0
+
+/* maximum number of TMUs */
+#define MAX_TMU 2
+
+/* accumulate operations less than this number of clocks */
+#define ACCUMULATE_THRESHOLD 0
+
+/* number of clocks to set up a triangle (just a guess) */
+#define TRIANGLE_SETUP_CLOCKS 100
+
+/* maximum number of rasterizers */
+#define MAX_RASTERIZERS 1024
+
+/* size of the rasterizer hash table */
+#define RASTER_HASH_SIZE 97
+
+/* flags for LFB writes */
+#define LFB_RGB_PRESENT 1
+#define LFB_ALPHA_PRESENT 2
+#define LFB_DEPTH_PRESENT 4
+#define LFB_DEPTH_PRESENT_MSW 8
+
+/* flags for the register access array */
+#define REGISTER_READ 0x01 /* reads are allowed */
+#define REGISTER_WRITE 0x02 /* writes are allowed */
+#define REGISTER_PIPELINED 0x04 /* writes are pipelined */
+#define REGISTER_FIFO 0x08 /* writes go to FIFO */
+#define REGISTER_WRITETHRU 0x10 /* writes are valid even for CMDFIFO */
+
+/* shorter combinations to make the table smaller */
+#define REG_R (REGISTER_READ)
+#define REG_W (REGISTER_WRITE)
+#define REG_WT (REGISTER_WRITE | REGISTER_WRITETHRU)
+#define REG_RW (REGISTER_READ | REGISTER_WRITE)
+#define REG_RWT (REGISTER_READ | REGISTER_WRITE | REGISTER_WRITETHRU)
+#define REG_RP (REGISTER_READ | REGISTER_PIPELINED)
+#define REG_WP (REGISTER_WRITE | REGISTER_PIPELINED)
+#define REG_RWP (REGISTER_READ | REGISTER_WRITE | REGISTER_PIPELINED)
+#define REG_RWPT (REGISTER_READ | REGISTER_WRITE | REGISTER_PIPELINED | REGISTER_WRITETHRU)
+#define REG_RF (REGISTER_READ | REGISTER_FIFO)
+#define REG_WF (REGISTER_WRITE | REGISTER_FIFO)
+#define REG_RWF (REGISTER_READ | REGISTER_WRITE | REGISTER_FIFO)
+#define REG_RPF (REGISTER_READ | REGISTER_PIPELINED | REGISTER_FIFO)
+#define REG_WPF (REGISTER_WRITE | REGISTER_PIPELINED | REGISTER_FIFO)
+#define REG_RWPF (REGISTER_READ | REGISTER_WRITE | REGISTER_PIPELINED | REGISTER_FIFO)
+
+/* lookup bits is the log2 of the size of the reciprocal/log table */
+#define RECIPLOG_LOOKUP_BITS 9
+
+/* input precision is how many fraction bits the input value has; this is a 64-bit number */
+#define RECIPLOG_INPUT_PREC 32
+
+/* lookup precision is how many fraction bits each table entry contains */
+#define RECIPLOG_LOOKUP_PREC 22
+
+/* output precision is how many fraction bits the result should have */
+#define RECIP_OUTPUT_PREC 15
+#define LOG_OUTPUT_PREC 8
+
+
+
+/*************************************
+ *
+ * Register constants
+ *
+ *************************************/
+
+/* Codes to the right:
+ R = readable
+ W = writeable
+ P = pipelined
+ F = goes to FIFO
+*/
+
+/* 0x000 */
+#define vdstatus (0x000/4) /* R P */
+#define intrCtrl (0x004/4) /* RW P -- Voodoo2/Banshee only */
+#define vertexAx (0x008/4) /* W PF */
+#define vertexAy (0x00c/4) /* W PF */
+#define vertexBx (0x010/4) /* W PF */
+#define vertexBy (0x014/4) /* W PF */
+#define vertexCx (0x018/4) /* W PF */
+#define vertexCy (0x01c/4) /* W PF */
+#define startR (0x020/4) /* W PF */
+#define startG (0x024/4) /* W PF */
+#define startB (0x028/4) /* W PF */
+#define startZ (0x02c/4) /* W PF */
+#define startA (0x030/4) /* W PF */
+#define startS (0x034/4) /* W PF */
+#define startT (0x038/4) /* W PF */
+#define startW (0x03c/4) /* W PF */
+
+/* 0x040 */
+#define dRdX (0x040/4) /* W PF */
+#define dGdX (0x044/4) /* W PF */
+#define dBdX (0x048/4) /* W PF */
+#define dZdX (0x04c/4) /* W PF */
+#define dAdX (0x050/4) /* W PF */
+#define dSdX (0x054/4) /* W PF */
+#define dTdX (0x058/4) /* W PF */
+#define dWdX (0x05c/4) /* W PF */
+#define dRdY (0x060/4) /* W PF */
+#define dGdY (0x064/4) /* W PF */
+#define dBdY (0x068/4) /* W PF */
+#define dZdY (0x06c/4) /* W PF */
+#define dAdY (0x070/4) /* W PF */
+#define dSdY (0x074/4) /* W PF */
+#define dTdY (0x078/4) /* W PF */
+#define dWdY (0x07c/4) /* W PF */
+
+/* 0x080 */
+#define triangleCMD (0x080/4) /* W PF */
+#define fvertexAx (0x088/4) /* W PF */
+#define fvertexAy (0x08c/4) /* W PF */
+#define fvertexBx (0x090/4) /* W PF */
+#define fvertexBy (0x094/4) /* W PF */
+#define fvertexCx (0x098/4) /* W PF */
+#define fvertexCy (0x09c/4) /* W PF */
+#define fstartR (0x0a0/4) /* W PF */
+#define fstartG (0x0a4/4) /* W PF */
+#define fstartB (0x0a8/4) /* W PF */
+#define fstartZ (0x0ac/4) /* W PF */
+#define fstartA (0x0b0/4) /* W PF */
+#define fstartS (0x0b4/4) /* W PF */
+#define fstartT (0x0b8/4) /* W PF */
+#define fstartW (0x0bc/4) /* W PF */
+
+/* 0x0c0 */
+#define fdRdX (0x0c0/4) /* W PF */
+#define fdGdX (0x0c4/4) /* W PF */
+#define fdBdX (0x0c8/4) /* W PF */
+#define fdZdX (0x0cc/4) /* W PF */
+#define fdAdX (0x0d0/4) /* W PF */
+#define fdSdX (0x0d4/4) /* W PF */
+#define fdTdX (0x0d8/4) /* W PF */
+#define fdWdX (0x0dc/4) /* W PF */
+#define fdRdY (0x0e0/4) /* W PF */
+#define fdGdY (0x0e4/4) /* W PF */
+#define fdBdY (0x0e8/4) /* W PF */
+#define fdZdY (0x0ec/4) /* W PF */
+#define fdAdY (0x0f0/4) /* W PF */
+#define fdSdY (0x0f4/4) /* W PF */
+#define fdTdY (0x0f8/4) /* W PF */
+#define fdWdY (0x0fc/4) /* W PF */
+
+/* 0x100 */
+#define ftriangleCMD (0x100/4) /* W PF */
+#define fbzColorPath (0x104/4) /* RW PF */
+#define fogMode (0x108/4) /* RW PF */
+#define alphaMode (0x10c/4) /* RW PF */
+#define fbzMode (0x110/4) /* RW F */
+#define lfbMode (0x114/4) /* RW F */
+#define clipLeftRight (0x118/4) /* RW F */
+#define clipLowYHighY (0x11c/4) /* RW F */
+#define nopCMD (0x120/4) /* W F */
+#define fastfillCMD (0x124/4) /* W F */
+#define swapbufferCMD (0x128/4) /* W F */
+#define fogColor (0x12c/4) /* W F */
+#define zaColor (0x130/4) /* W F */
+#define chromaKey (0x134/4) /* W F */
+#define chromaRange (0x138/4) /* W F -- Voodoo2/Banshee only */
+#define userIntrCMD (0x13c/4) /* W F -- Voodoo2/Banshee only */
+
+/* 0x140 */
+#define stipple (0x140/4) /* RW F */
+#define color0 (0x144/4) /* RW F */
+#define color1 (0x148/4) /* RW F */
+#define fbiPixelsIn (0x14c/4) /* R */
+#define fbiChromaFail (0x150/4) /* R */
+#define fbiZfuncFail (0x154/4) /* R */
+#define fbiAfuncFail (0x158/4) /* R */
+#define fbiPixelsOut (0x15c/4) /* R */
+#define fogTable (0x160/4) /* W F */
+
+/* 0x1c0 */
+#define cmdFifoBaseAddr (0x1e0/4) /* RW -- Voodoo2 only */
+#define cmdFifoBump (0x1e4/4) /* RW -- Voodoo2 only */
+#define cmdFifoRdPtr (0x1e8/4) /* RW -- Voodoo2 only */
+#define cmdFifoAMin (0x1ec/4) /* RW -- Voodoo2 only */
+#define colBufferAddr (0x1ec/4) /* RW -- Banshee only */
+#define cmdFifoAMax (0x1f0/4) /* RW -- Voodoo2 only */
+#define colBufferStride (0x1f0/4) /* RW -- Banshee only */
+#define cmdFifoDepth (0x1f4/4) /* RW -- Voodoo2 only */
+#define auxBufferAddr (0x1f4/4) /* RW -- Banshee only */
+#define cmdFifoHoles (0x1f8/4) /* RW -- Voodoo2 only */
+#define auxBufferStride (0x1f8/4) /* RW -- Banshee only */
+
+/* 0x200 */
+#define fbiInit4 (0x200/4) /* RW -- Voodoo/Voodoo2 only */
+#define clipLeftRight1 (0x200/4) /* RW -- Banshee only */
+#define vRetrace (0x204/4) /* R -- Voodoo/Voodoo2 only */
+#define clipTopBottom1 (0x204/4) /* RW -- Banshee only */
+#define backPorch (0x208/4) /* RW -- Voodoo/Voodoo2 only */
+#define videoDimensions (0x20c/4) /* RW -- Voodoo/Voodoo2 only */
+#define fbiInit0 (0x210/4) /* RW -- Voodoo/Voodoo2 only */
+#define fbiInit1 (0x214/4) /* RW -- Voodoo/Voodoo2 only */
+#define fbiInit2 (0x218/4) /* RW -- Voodoo/Voodoo2 only */
+#define fbiInit3 (0x21c/4) /* RW -- Voodoo/Voodoo2 only */
+#define hSync (0x220/4) /* W -- Voodoo/Voodoo2 only */
+#define vSync (0x224/4) /* W -- Voodoo/Voodoo2 only */
+#define clutData (0x228/4) /* W F -- Voodoo/Voodoo2 only */
+#define dacData (0x22c/4) /* W -- Voodoo/Voodoo2 only */
+#define maxRgbDelta (0x230/4) /* W -- Voodoo/Voodoo2 only */
+#define hBorder (0x234/4) /* W -- Voodoo2 only */
+#define vBorder (0x238/4) /* W -- Voodoo2 only */
+#define borderColor (0x23c/4) /* W -- Voodoo2 only */
+
+/* 0x240 */
+#define hvRetrace (0x240/4) /* R -- Voodoo2 only */
+#define fbiInit5 (0x244/4) /* RW -- Voodoo2 only */
+#define fbiInit6 (0x248/4) /* RW -- Voodoo2 only */
+#define fbiInit7 (0x24c/4) /* RW -- Voodoo2 only */
+#define swapPending (0x24c/4) /* W -- Banshee only */
+#define leftOverlayBuf (0x250/4) /* W -- Banshee only */
+#define rightOverlayBuf (0x254/4) /* W -- Banshee only */
+#define fbiSwapHistory (0x258/4) /* R -- Voodoo2/Banshee only */
+#define fbiTrianglesOut (0x25c/4) /* R -- Voodoo2/Banshee only */
+#define sSetupMode (0x260/4) /* W PF -- Voodoo2/Banshee only */
+#define sVx (0x264/4) /* W PF -- Voodoo2/Banshee only */
+#define sVy (0x268/4) /* W PF -- Voodoo2/Banshee only */
+#define sARGB (0x26c/4) /* W PF -- Voodoo2/Banshee only */
+#define sRed (0x270/4) /* W PF -- Voodoo2/Banshee only */
+#define sGreen (0x274/4) /* W PF -- Voodoo2/Banshee only */
+#define sBlue (0x278/4) /* W PF -- Voodoo2/Banshee only */
+#define sAlpha (0x27c/4) /* W PF -- Voodoo2/Banshee only */
+
+/* 0x280 */
+#define sVz (0x280/4) /* W PF -- Voodoo2/Banshee only */
+#define sWb (0x284/4) /* W PF -- Voodoo2/Banshee only */
+#define sWtmu0 (0x288/4) /* W PF -- Voodoo2/Banshee only */
+#define sS_W0 (0x28c/4) /* W PF -- Voodoo2/Banshee only */
+#define sT_W0 (0x290/4) /* W PF -- Voodoo2/Banshee only */
+#define sWtmu1 (0x294/4) /* W PF -- Voodoo2/Banshee only */
+#define sS_Wtmu1 (0x298/4) /* W PF -- Voodoo2/Banshee only */
+#define sT_Wtmu1 (0x29c/4) /* W PF -- Voodoo2/Banshee only */
+#define sDrawTriCMD (0x2a0/4) /* W PF -- Voodoo2/Banshee only */
+#define sBeginTriCMD (0x2a4/4) /* W PF -- Voodoo2/Banshee only */
+
+/* 0x2c0 */
+#define bltSrcBaseAddr (0x2c0/4) /* RW PF -- Voodoo2 only */
+#define bltDstBaseAddr (0x2c4/4) /* RW PF -- Voodoo2 only */
+#define bltXYStrides (0x2c8/4) /* RW PF -- Voodoo2 only */
+#define bltSrcChromaRange (0x2cc/4) /* RW PF -- Voodoo2 only */
+#define bltDstChromaRange (0x2d0/4) /* RW PF -- Voodoo2 only */
+#define bltClipX (0x2d4/4) /* RW PF -- Voodoo2 only */
+#define bltClipY (0x2d8/4) /* RW PF -- Voodoo2 only */
+#define bltSrcXY (0x2e0/4) /* RW PF -- Voodoo2 only */
+#define bltDstXY (0x2e4/4) /* RW PF -- Voodoo2 only */
+#define bltSize (0x2e8/4) /* RW PF -- Voodoo2 only */
+#define bltRop (0x2ec/4) /* RW PF -- Voodoo2 only */
+#define bltColor (0x2f0/4) /* RW PF -- Voodoo2 only */
+#define bltCommand (0x2f8/4) /* RW PF -- Voodoo2 only */
+#define bltData (0x2fc/4) /* W PF -- Voodoo2 only */
+
+/* 0x300 */
+#define textureMode (0x300/4) /* W PF */
+#define tLOD (0x304/4) /* W PF */
+#define tDetail (0x308/4) /* W PF */
+#define texBaseAddr (0x30c/4) /* W PF */
+#define texBaseAddr_1 (0x310/4) /* W PF */
+#define texBaseAddr_2 (0x314/4) /* W PF */
+#define texBaseAddr_3_8 (0x318/4) /* W PF */
+#define trexInit0 (0x31c/4) /* W F -- Voodoo/Voodoo2 only */
+#define trexInit1 (0x320/4) /* W F */
+#define nccTable (0x324/4) /* W F */
+
+
+
+// 2D registers
+#define banshee2D_clip0Min (0x008/4)
+#define banshee2D_clip0Max (0x00c/4)
+#define banshee2D_dstBaseAddr (0x010/4)
+#define banshee2D_dstFormat (0x014/4)
+#define banshee2D_srcColorkeyMin (0x018/4)
+#define banshee2D_srcColorkeyMax (0x01c/4)
+#define banshee2D_dstColorkeyMin (0x020/4)
+#define banshee2D_dstColorkeyMax (0x024/4)
+#define banshee2D_bresError0 (0x028/4)
+#define banshee2D_bresError1 (0x02c/4)
+#define banshee2D_rop (0x030/4)
+#define banshee2D_srcBaseAddr (0x034/4)
+#define banshee2D_commandExtra (0x038/4)
+#define banshee2D_lineStipple (0x03c/4)
+#define banshee2D_lineStyle (0x040/4)
+#define banshee2D_pattern0Alias (0x044/4)
+#define banshee2D_pattern1Alias (0x048/4)
+#define banshee2D_clip1Min (0x04c/4)
+#define banshee2D_clip1Max (0x050/4)
+#define banshee2D_srcFormat (0x054/4)
+#define banshee2D_srcSize (0x058/4)
+#define banshee2D_srcXY (0x05c/4)
+#define banshee2D_colorBack (0x060/4)
+#define banshee2D_colorFore (0x064/4)
+#define banshee2D_dstSize (0x068/4)
+#define banshee2D_dstXY (0x06c/4)
+#define banshee2D_command (0x070/4)
+
+
+/*************************************
+ *
+ * Alias map of the first 64
+ * registers when remapped
+ *
+ *************************************/
+
+static const UINT8 register_alias_map[0x40] =
+{
+ vdstatus, 0x004/4, vertexAx, vertexAy,
+ vertexBx, vertexBy, vertexCx, vertexCy,
+ startR, dRdX, dRdY, startG,
+ dGdX, dGdY, startB, dBdX,
+ dBdY, startZ, dZdX, dZdY,
+ startA, dAdX, dAdY, startS,
+ dSdX, dSdY, startT, dTdX,
+ dTdY, startW, dWdX, dWdY,
+
+ triangleCMD,0x084/4, fvertexAx, fvertexAy,
+ fvertexBx, fvertexBy, fvertexCx, fvertexCy,
+ fstartR, fdRdX, fdRdY, fstartG,
+ fdGdX, fdGdY, fstartB, fdBdX,
+ fdBdY, fstartZ, fdZdX, fdZdY,
+ fstartA, fdAdX, fdAdY, fstartS,
+ fdSdX, fdSdY, fstartT, fdTdX,
+ fdTdY, fstartW, fdWdX, fdWdY
+};
+
+
+
+/*************************************
+ *
+ * Table of per-register access rights
+ *
+ *************************************/
+
+static const UINT8 voodoo_register_access[0x100] =
+{
+ /* 0x000 */
+ REG_RP, 0, REG_WPF, REG_WPF,
+ REG_WPF, REG_WPF, REG_WPF, REG_WPF,
+ REG_WPF, REG_WPF, REG_WPF, REG_WPF,
+ REG_WPF, REG_WPF, REG_WPF, REG_WPF,
+
+ /* 0x040 */
+ REG_WPF, REG_WPF, REG_WPF, REG_WPF,
+ REG_WPF, REG_WPF, REG_WPF, REG_WPF,
+ REG_WPF, REG_WPF, REG_WPF, REG_WPF,
+ REG_WPF, REG_WPF, REG_WPF, REG_WPF,
+
+ /* 0x080 */
+ REG_WPF, 0, REG_WPF, REG_WPF,
+ REG_WPF, REG_WPF, REG_WPF, REG_WPF,
+ REG_WPF, REG_WPF, REG_WPF, REG_WPF,
+ REG_WPF, REG_WPF, REG_WPF, REG_WPF,
+
+ /* 0x0c0 */
+ REG_WPF, REG_WPF, REG_WPF, REG_WPF,
+ REG_WPF, REG_WPF, REG_WPF, REG_WPF,
+ REG_WPF, REG_WPF, REG_WPF, REG_WPF,
+ REG_WPF, REG_WPF, REG_WPF, REG_WPF,
+
+ /* 0x100 */
+ REG_WPF, REG_RWPF, REG_RWPF, REG_RWPF,
+ REG_RWF, REG_RWF, REG_RWF, REG_RWF,
+ REG_WF, REG_WF, REG_WF, REG_WF,
+ REG_WF, REG_WF, 0, 0,
+
+ /* 0x140 */
+ REG_RWF, REG_RWF, REG_RWF, REG_R,
+ REG_R, REG_R, REG_R, REG_R,
+ REG_WF, REG_WF, REG_WF, REG_WF,
+ REG_WF, REG_WF, REG_WF, REG_WF,
+
+ /* 0x180 */
+ REG_WF, REG_WF, REG_WF, REG_WF,
+ REG_WF, REG_WF, REG_WF, REG_WF,
+ REG_WF, REG_WF, REG_WF, REG_WF,
+ REG_WF, REG_WF, REG_WF, REG_WF,
+
+ /* 0x1c0 */
+ REG_WF, REG_WF, REG_WF, REG_WF,
+ REG_WF, REG_WF, REG_WF, REG_WF,
+ 0, 0, 0, 0,
+ 0, 0, 0, 0,
+
+ /* 0x200 */
+ REG_RW, REG_R, REG_RW, REG_RW,
+ REG_RW, REG_RW, REG_RW, REG_RW,
+ REG_W, REG_W, REG_W, REG_W,
+ REG_W, 0, 0, 0,
+
+ /* 0x240 */
+ 0, 0, 0, 0,
+ 0, 0, 0, 0,
+ 0, 0, 0, 0,
+ 0, 0, 0, 0,
+
+ /* 0x280 */
+ 0, 0, 0, 0,
+ 0, 0, 0, 0,
+ 0, 0, 0, 0,
+ 0, 0, 0, 0,
+
+ /* 0x2c0 */
+ 0, 0, 0, 0,
+ 0, 0, 0, 0,
+ 0, 0, 0, 0,
+ 0, 0, 0, 0,
+
+ /* 0x300 */
+ REG_WPF, REG_WPF, REG_WPF, REG_WPF,
+ REG_WPF, REG_WPF, REG_WPF, REG_WF,
+ REG_WF, REG_WF, REG_WF, REG_WF,
+ REG_WF, REG_WF, REG_WF, REG_WF,
+
+ /* 0x340 */
+ REG_WF, REG_WF, REG_WF, REG_WF,
+ REG_WF, REG_WF, REG_WF, REG_WF,
+ REG_WF, REG_WF, REG_WF, REG_WF,
+ REG_WF, REG_WF, REG_WF, REG_WF,
+
+ /* 0x380 */
+ REG_WF
+};
+
+
+static const UINT8 voodoo2_register_access[0x100] =
+{
+ /* 0x000 */
+ REG_RP, REG_RWPT, REG_WPF, REG_WPF,
+ REG_WPF, REG_WPF, REG_WPF, REG_WPF,
+ REG_WPF, REG_WPF, REG_WPF, REG_WPF,
+ REG_WPF, REG_WPF, REG_WPF, REG_WPF,
+
+ /* 0x040 */
+ REG_WPF, REG_WPF, REG_WPF, REG_WPF,
+ REG_WPF, REG_WPF, REG_WPF, REG_WPF,
+ REG_WPF, REG_WPF, REG_WPF, REG_WPF,
+ REG_WPF, REG_WPF, REG_WPF, REG_WPF,
+
+ /* 0x080 */
+ REG_WPF, REG_WPF, REG_WPF, REG_WPF,
+ REG_WPF, REG_WPF, REG_WPF, REG_WPF,
+ REG_WPF, REG_WPF, REG_WPF, REG_WPF,
+ REG_WPF, REG_WPF, REG_WPF, REG_WPF,
+
+ /* 0x0c0 */
+ REG_WPF, REG_WPF, REG_WPF, REG_WPF,
+ REG_WPF, REG_WPF, REG_WPF, REG_WPF,
+ REG_WPF, REG_WPF, REG_WPF, REG_WPF,
+ REG_WPF, REG_WPF, REG_WPF, REG_WPF,
+
+ /* 0x100 */
+ REG_WPF, REG_RWPF, REG_RWPF, REG_RWPF,
+ REG_RWF, REG_RWF, REG_RWF, REG_RWF,
+ REG_WF, REG_WF, REG_WF, REG_WF,
+ REG_WF, REG_WF, REG_WF, REG_WF,
+
+ /* 0x140 */
+ REG_RWF, REG_RWF, REG_RWF, REG_R,
+ REG_R, REG_R, REG_R, REG_R,
+ REG_WF, REG_WF, REG_WF, REG_WF,
+ REG_WF, REG_WF, REG_WF, REG_WF,
+
+ /* 0x180 */
+ REG_WF, REG_WF, REG_WF, REG_WF,
+ REG_WF, REG_WF, REG_WF, REG_WF,
+ REG_WF, REG_WF, REG_WF, REG_WF,
+ REG_WF, REG_WF, REG_WF, REG_WF,
+
+ /* 0x1c0 */
+ REG_WF, REG_WF, REG_WF, REG_WF,
+ REG_WF, REG_WF, REG_WF, REG_WF,
+ REG_RWT, REG_RWT, REG_RWT, REG_RWT,
+ REG_RWT, REG_RWT, REG_RWT, REG_RW,
+
+ /* 0x200 */
+ REG_RWT, REG_R, REG_RWT, REG_RWT,
+ REG_RWT, REG_RWT, REG_RWT, REG_RWT,
+ REG_WT, REG_WT, REG_WF, REG_WT,
+ REG_WT, REG_WT, REG_WT, REG_WT,
+
+ /* 0x240 */
+ REG_R, REG_RWT, REG_RWT, REG_RWT,
+ 0, 0, REG_R, REG_R,
+ REG_WPF, REG_WPF, REG_WPF, REG_WPF,
+ REG_WPF, REG_WPF, REG_WPF, REG_WPF,
+
+ /* 0x280 */
+ REG_WPF, REG_WPF, REG_WPF, REG_WPF,
+ REG_WPF, REG_WPF, REG_WPF, REG_WPF,
+ REG_WPF, REG_WPF, 0, 0,
+ 0, 0, 0, 0,
+
+ /* 0x2c0 */
+ REG_RWPF, REG_RWPF, REG_RWPF, REG_RWPF,
+ REG_RWPF, REG_RWPF, REG_RWPF, REG_RWPF,
+ REG_RWPF, REG_RWPF, REG_RWPF, REG_RWPF,
+ REG_RWPF, REG_RWPF, REG_RWPF, REG_WPF,
+
+ /* 0x300 */
+ REG_WPF, REG_WPF, REG_WPF, REG_WPF,
+ REG_WPF, REG_WPF, REG_WPF, REG_WF,
+ REG_WF, REG_WF, REG_WF, REG_WF,
+ REG_WF, REG_WF, REG_WF, REG_WF,
+
+ /* 0x340 */
+ REG_WF, REG_WF, REG_WF, REG_WF,
+ REG_WF, REG_WF, REG_WF, REG_WF,
+ REG_WF, REG_WF, REG_WF, REG_WF,
+ REG_WF, REG_WF, REG_WF, REG_WF,
+
+ /* 0x380 */
+ REG_WF
+};
+
+
+static const UINT8 banshee_register_access[0x100] =
+{
+ /* 0x000 */
+ REG_RP, REG_RWPT, REG_WPF, REG_WPF,
+ REG_WPF, REG_WPF, REG_WPF, REG_WPF,
+ REG_WPF, REG_WPF, REG_WPF, REG_WPF,
+ REG_WPF, REG_WPF, REG_WPF, REG_WPF,
+
+ /* 0x040 */
+ REG_WPF, REG_WPF, REG_WPF, REG_WPF,
+ REG_WPF, REG_WPF, REG_WPF, REG_WPF,
+ REG_WPF, REG_WPF, REG_WPF, REG_WPF,
+ REG_WPF, REG_WPF, REG_WPF, REG_WPF,
+
+ /* 0x080 */
+ REG_WPF, REG_WPF, REG_WPF, REG_WPF,
+ REG_WPF, REG_WPF, REG_WPF, REG_WPF,
+ REG_WPF, REG_WPF, REG_WPF, REG_WPF,
+ REG_WPF, REG_WPF, REG_WPF, REG_WPF,
+
+ /* 0x0c0 */
+ REG_WPF, REG_WPF, REG_WPF, REG_WPF,
+ REG_WPF, REG_WPF, REG_WPF, REG_WPF,
+ REG_WPF, REG_WPF, REG_WPF, REG_WPF,
+ REG_WPF, REG_WPF, REG_WPF, REG_WPF,
+
+ /* 0x100 */
+ REG_WPF, REG_RWPF, REG_RWPF, REG_RWPF,
+ REG_RWF, REG_RWF, REG_RWF, REG_RWF,
+ REG_WF, REG_WF, REG_WF, REG_WF,
+ REG_WF, REG_WF, REG_WF, REG_WF,
+
+ /* 0x140 */
+ REG_RWF, REG_RWF, REG_RWF, REG_R,
+ REG_R, REG_R, REG_R, REG_R,
+ REG_WF, REG_WF, REG_WF, REG_WF,
+ REG_WF, REG_WF, REG_WF, REG_WF,
+
+ /* 0x180 */
+ REG_WF, REG_WF, REG_WF, REG_WF,
+ REG_WF, REG_WF, REG_WF, REG_WF,
+ REG_WF, REG_WF, REG_WF, REG_WF,
+ REG_WF, REG_WF, REG_WF, REG_WF,
+
+ /* 0x1c0 */
+ REG_WF, REG_WF, REG_WF, REG_WF,
+ REG_WF, REG_WF, REG_WF, REG_WF,
+ 0, 0, 0, REG_RWF,
+ REG_RWF, REG_RWF, REG_RWF, 0,
+
+ /* 0x200 */
+ REG_RWF, REG_RWF, 0, 0,
+ 0, 0, 0, 0,
+ 0, 0, 0, 0,
+ 0, 0, 0, 0,
+
+ /* 0x240 */
+ 0, 0, 0, REG_WT,
+ REG_RWF, REG_RWF, REG_WPF, REG_WPF,
+ REG_WPF, REG_WPF, REG_R, REG_R,
+ REG_WPF, REG_WPF, REG_WPF, REG_WPF,
+
+ /* 0x280 */
+ REG_WPF, REG_WPF, REG_WPF, REG_WPF,
+ REG_WPF, REG_WPF, REG_WPF, REG_WPF,
+ REG_WPF, REG_WPF, 0, 0,
+ 0, 0, 0, 0,
+
+ /* 0x2c0 */
+ 0, 0, 0, 0,
+ 0, 0, 0, 0,
+ 0, 0, 0, 0,
+ 0, 0, 0, 0,
+
+ /* 0x300 */
+ REG_WPF, REG_WPF, REG_WPF, REG_WPF,
+ REG_WPF, REG_WPF, REG_WPF, 0,
+ REG_WF, REG_WF, REG_WF, REG_WF,
+ REG_WF, REG_WF, REG_WF, REG_WF,
+
+ /* 0x340 */
+ REG_WF, REG_WF, REG_WF, REG_WF,
+ REG_WF, REG_WF, REG_WF, REG_WF,
+ REG_WF, REG_WF, REG_WF, REG_WF,
+ REG_WF, REG_WF, REG_WF, REG_WF,
+
+ /* 0x380 */
+ REG_WF
+};
+
+
+
+/*************************************
+ *
+ * Register string table for debug
+ *
+ *************************************/
+
+static const char *const voodoo_reg_name[] =
+{
+ /* 0x000 */
+ "status", "{intrCtrl}", "vertexAx", "vertexAy",
+ "vertexBx", "vertexBy", "vertexCx", "vertexCy",
+ "startR", "startG", "startB", "startZ",
+ "startA", "startS", "startT", "startW",
+ /* 0x040 */
+ "dRdX", "dGdX", "dBdX", "dZdX",
+ "dAdX", "dSdX", "dTdX", "dWdX",
+ "dRdY", "dGdY", "dBdY", "dZdY",
+ "dAdY", "dSdY", "dTdY", "dWdY",
+ /* 0x080 */
+ "triangleCMD", "reserved084", "fvertexAx", "fvertexAy",
+ "fvertexBx", "fvertexBy", "fvertexCx", "fvertexCy",
+ "fstartR", "fstartG", "fstartB", "fstartZ",
+ "fstartA", "fstartS", "fstartT", "fstartW",
+ /* 0x0c0 */
+ "fdRdX", "fdGdX", "fdBdX", "fdZdX",
+ "fdAdX", "fdSdX", "fdTdX", "fdWdX",
+ "fdRdY", "fdGdY", "fdBdY", "fdZdY",
+ "fdAdY", "fdSdY", "fdTdY", "fdWdY",
+ /* 0x100 */
+ "ftriangleCMD", "fbzColorPath", "fogMode", "alphaMode",
+ "fbzMode", "lfbMode", "clipLeftRight","clipLowYHighY",
+ "nopCMD", "fastfillCMD", "swapbufferCMD","fogColor",
+ "zaColor", "chromaKey", "{chromaRange}","{userIntrCMD}",
+ /* 0x140 */
+ "stipple", "color0", "color1", "fbiPixelsIn",
+ "fbiChromaFail","fbiZfuncFail", "fbiAfuncFail", "fbiPixelsOut",
+ "fogTable160", "fogTable164", "fogTable168", "fogTable16c",
+ "fogTable170", "fogTable174", "fogTable178", "fogTable17c",
+ /* 0x180 */
+ "fogTable180", "fogTable184", "fogTable188", "fogTable18c",
+ "fogTable190", "fogTable194", "fogTable198", "fogTable19c",
+ "fogTable1a0", "fogTable1a4", "fogTable1a8", "fogTable1ac",
+ "fogTable1b0", "fogTable1b4", "fogTable1b8", "fogTable1bc",
+ /* 0x1c0 */
+ "fogTable1c0", "fogTable1c4", "fogTable1c8", "fogTable1cc",
+ "fogTable1d0", "fogTable1d4", "fogTable1d8", "fogTable1dc",
+ "{cmdFifoBaseAddr}","{cmdFifoBump}","{cmdFifoRdPtr}","{cmdFifoAMin}",
+ "{cmdFifoAMax}","{cmdFifoDepth}","{cmdFifoHoles}","reserved1fc",
+ /* 0x200 */
+ "fbiInit4", "vRetrace", "backPorch", "videoDimensions",
+ "fbiInit0", "fbiInit1", "fbiInit2", "fbiInit3",
+ "hSync", "vSync", "clutData", "dacData",
+ "maxRgbDelta", "{hBorder}", "{vBorder}", "{borderColor}",
+ /* 0x240 */
+ "{hvRetrace}", "{fbiInit5}", "{fbiInit6}", "{fbiInit7}",
+ "reserved250", "reserved254", "{fbiSwapHistory}","{fbiTrianglesOut}",
+ "{sSetupMode}", "{sVx}", "{sVy}", "{sARGB}",
+ "{sRed}", "{sGreen}", "{sBlue}", "{sAlpha}",
+ /* 0x280 */
+ "{sVz}", "{sWb}", "{sWtmu0}", "{sS/Wtmu0}",
+ "{sT/Wtmu0}", "{sWtmu1}", "{sS/Wtmu1}", "{sT/Wtmu1}",
+ "{sDrawTriCMD}","{sBeginTriCMD}","reserved2a8", "reserved2ac",
+ "reserved2b0", "reserved2b4", "reserved2b8", "reserved2bc",
+ /* 0x2c0 */
+ "{bltSrcBaseAddr}","{bltDstBaseAddr}","{bltXYStrides}","{bltSrcChromaRange}",
+ "{bltDstChromaRange}","{bltClipX}","{bltClipY}","reserved2dc",
+ "{bltSrcXY}", "{bltDstXY}", "{bltSize}", "{bltRop}",
+ "{bltColor}", "reserved2f4", "{bltCommand}", "{bltData}",
+ /* 0x300 */
+ "textureMode", "tLOD", "tDetail", "texBaseAddr",
+ "texBaseAddr_1","texBaseAddr_2","texBaseAddr_3_8","trexInit0",
+ "trexInit1", "nccTable0.0", "nccTable0.1", "nccTable0.2",
+ "nccTable0.3", "nccTable0.4", "nccTable0.5", "nccTable0.6",
+ /* 0x340 */
+ "nccTable0.7", "nccTable0.8", "nccTable0.9", "nccTable0.A",
+ "nccTable0.B", "nccTable1.0", "nccTable1.1", "nccTable1.2",
+ "nccTable1.3", "nccTable1.4", "nccTable1.5", "nccTable1.6",
+ "nccTable1.7", "nccTable1.8", "nccTable1.9", "nccTable1.A",
+ /* 0x380 */
+ "nccTable1.B"
+};
+
+
+static const char *const banshee_reg_name[] =
+{
+ /* 0x000 */
+ "status", "intrCtrl", "vertexAx", "vertexAy",
+ "vertexBx", "vertexBy", "vertexCx", "vertexCy",
+ "startR", "startG", "startB", "startZ",
+ "startA", "startS", "startT", "startW",
+ /* 0x040 */
+ "dRdX", "dGdX", "dBdX", "dZdX",
+ "dAdX", "dSdX", "dTdX", "dWdX",
+ "dRdY", "dGdY", "dBdY", "dZdY",
+ "dAdY", "dSdY", "dTdY", "dWdY",
+ /* 0x080 */
+ "triangleCMD", "reserved084", "fvertexAx", "fvertexAy",
+ "fvertexBx", "fvertexBy", "fvertexCx", "fvertexCy",
+ "fstartR", "fstartG", "fstartB", "fstartZ",
+ "fstartA", "fstartS", "fstartT", "fstartW",
+ /* 0x0c0 */
+ "fdRdX", "fdGdX", "fdBdX", "fdZdX",
+ "fdAdX", "fdSdX", "fdTdX", "fdWdX",
+ "fdRdY", "fdGdY", "fdBdY", "fdZdY",
+ "fdAdY", "fdSdY", "fdTdY", "fdWdY",
+ /* 0x100 */
+ "ftriangleCMD", "fbzColorPath", "fogMode", "alphaMode",
+ "fbzMode", "lfbMode", "clipLeftRight","clipLowYHighY",
+ "nopCMD", "fastfillCMD", "swapbufferCMD","fogColor",
+ "zaColor", "chromaKey", "chromaRange", "userIntrCMD",
+ /* 0x140 */
+ "stipple", "color0", "color1", "fbiPixelsIn",
+ "fbiChromaFail","fbiZfuncFail", "fbiAfuncFail", "fbiPixelsOut",
+ "fogTable160", "fogTable164", "fogTable168", "fogTable16c",
+ "fogTable170", "fogTable174", "fogTable178", "fogTable17c",
+ /* 0x180 */
+ "fogTable180", "fogTable184", "fogTable188", "fogTable18c",
+ "fogTable190", "fogTable194", "fogTable198", "fogTable19c",
+ "fogTable1a0", "fogTable1a4", "fogTable1a8", "fogTable1ac",
+ "fogTable1b0", "fogTable1b4", "fogTable1b8", "fogTable1bc",
+ /* 0x1c0 */
+ "fogTable1c0", "fogTable1c4", "fogTable1c8", "fogTable1cc",
+ "fogTable1d0", "fogTable1d4", "fogTable1d8", "fogTable1dc",
+ "reserved1e0", "reserved1e4", "reserved1e8", "colBufferAddr",
+ "colBufferStride","auxBufferAddr","auxBufferStride","reserved1fc",
+ /* 0x200 */
+ "clipLeftRight1","clipTopBottom1","reserved208","reserved20c",
+ "reserved210", "reserved214", "reserved218", "reserved21c",
+ "reserved220", "reserved224", "reserved228", "reserved22c",
+ "reserved230", "reserved234", "reserved238", "reserved23c",
+ /* 0x240 */
+ "reserved240", "reserved244", "reserved248", "swapPending",
+ "leftOverlayBuf","rightOverlayBuf","fbiSwapHistory","fbiTrianglesOut",
+ "sSetupMode", "sVx", "sVy", "sARGB",
+ "sRed", "sGreen", "sBlue", "sAlpha",
+ /* 0x280 */
+ "sVz", "sWb", "sWtmu0", "sS/Wtmu0",
+ "sT/Wtmu0", "sWtmu1", "sS/Wtmu1", "sT/Wtmu1",
+ "sDrawTriCMD", "sBeginTriCMD", "reserved2a8", "reserved2ac",
+ "reserved2b0", "reserved2b4", "reserved2b8", "reserved2bc",
+ /* 0x2c0 */
+ "reserved2c0", "reserved2c4", "reserved2c8", "reserved2cc",
+ "reserved2d0", "reserved2d4", "reserved2d8", "reserved2dc",
+ "reserved2e0", "reserved2e4", "reserved2e8", "reserved2ec",
+ "reserved2f0", "reserved2f4", "reserved2f8", "reserved2fc",
+ /* 0x300 */
+ "textureMode", "tLOD", "tDetail", "texBaseAddr",
+ "texBaseAddr_1","texBaseAddr_2","texBaseAddr_3_8","reserved31c",
+ "trexInit1", "nccTable0.0", "nccTable0.1", "nccTable0.2",
+ "nccTable0.3", "nccTable0.4", "nccTable0.5", "nccTable0.6",
+ /* 0x340 */
+ "nccTable0.7", "nccTable0.8", "nccTable0.9", "nccTable0.A",
+ "nccTable0.B", "nccTable1.0", "nccTable1.1", "nccTable1.2",
+ "nccTable1.3", "nccTable1.4", "nccTable1.5", "nccTable1.6",
+ "nccTable1.7", "nccTable1.8", "nccTable1.9", "nccTable1.A",
+ /* 0x380 */
+ "nccTable1.B"
+};
+
+
+
+/*************************************
+ *
+ * Voodoo Banshee I/O space registers
+ *
+ *************************************/
+
+/* 0x000 */
+#define io_status (0x000/4) /* */
+#define io_pciInit0 (0x004/4) /* */
+#define io_sipMonitor (0x008/4) /* */
+#define io_lfbMemoryConfig (0x00c/4) /* */
+#define io_miscInit0 (0x010/4) /* */
+#define io_miscInit1 (0x014/4) /* */
+#define io_dramInit0 (0x018/4) /* */
+#define io_dramInit1 (0x01c/4) /* */
+#define io_agpInit (0x020/4) /* */
+#define io_tmuGbeInit (0x024/4) /* */
+#define io_vgaInit0 (0x028/4) /* */
+#define io_vgaInit1 (0x02c/4) /* */
+#define io_dramCommand (0x030/4) /* */
+#define io_dramData (0x034/4) /* */
+
+/* 0x040 */
+#define io_pllCtrl0 (0x040/4) /* */
+#define io_pllCtrl1 (0x044/4) /* */
+#define io_pllCtrl2 (0x048/4) /* */
+#define io_dacMode (0x04c/4) /* */
+#define io_dacAddr (0x050/4) /* */
+#define io_dacData (0x054/4) /* */
+#define io_rgbMaxDelta (0x058/4) /* */
+#define io_vidProcCfg (0x05c/4) /* */
+#define io_hwCurPatAddr (0x060/4) /* */
+#define io_hwCurLoc (0x064/4) /* */
+#define io_hwCurC0 (0x068/4) /* */
+#define io_hwCurC1 (0x06c/4) /* */
+#define io_vidInFormat (0x070/4) /* */
+#define io_vidInStatus (0x074/4) /* */
+#define io_vidSerialParallelPort (0x078/4) /* */
+#define io_vidInXDecimDeltas (0x07c/4) /* */
+
+/* 0x080 */
+#define io_vidInDecimInitErrs (0x080/4) /* */
+#define io_vidInYDecimDeltas (0x084/4) /* */
+#define io_vidPixelBufThold (0x088/4) /* */
+#define io_vidChromaMin (0x08c/4) /* */
+#define io_vidChromaMax (0x090/4) /* */
+#define io_vidCurrentLine (0x094/4) /* */
+#define io_vidScreenSize (0x098/4) /* */
+#define io_vidOverlayStartCoords (0x09c/4) /* */
+#define io_vidOverlayEndScreenCoord (0x0a0/4) /* */
+#define io_vidOverlayDudx (0x0a4/4) /* */
+#define io_vidOverlayDudxOffsetSrcWidth (0x0a8/4) /* */
+#define io_vidOverlayDvdy (0x0ac/4) /* */
+#define io_vgab0 (0x0b0/4) /* */
+#define io_vgab4 (0x0b4/4) /* */
+#define io_vgab8 (0x0b8/4) /* */
+#define io_vgabc (0x0bc/4) /* */
+
+/* 0x0c0 */
+#define io_vgac0 (0x0c0/4) /* */
+#define io_vgac4 (0x0c4/4) /* */
+#define io_vgac8 (0x0c8/4) /* */
+#define io_vgacc (0x0cc/4) /* */
+#define io_vgad0 (0x0d0/4) /* */
+#define io_vgad4 (0x0d4/4) /* */
+#define io_vgad8 (0x0d8/4) /* */
+#define io_vgadc (0x0dc/4) /* */
+#define io_vidOverlayDvdyOffset (0x0e0/4) /* */
+#define io_vidDesktopStartAddr (0x0e4/4) /* */
+#define io_vidDesktopOverlayStride (0x0e8/4) /* */
+#define io_vidInAddr0 (0x0ec/4) /* */
+#define io_vidInAddr1 (0x0f0/4) /* */
+#define io_vidInAddr2 (0x0f4/4) /* */
+#define io_vidInStride (0x0f8/4) /* */
+#define io_vidCurrOverlayStartAddr (0x0fc/4) /* */
+
+
+
+/*************************************
+ *
+ * Register string table for debug
+ *
+ *************************************/
+
+static const char *const banshee_io_reg_name[] =
+{
+ /* 0x000 */
+ "status", "pciInit0", "sipMonitor", "lfbMemoryConfig",
+ "miscInit0", "miscInit1", "dramInit0", "dramInit1",
+ "agpInit", "tmuGbeInit", "vgaInit0", "vgaInit1",
+ "dramCommand", "dramData", "reserved38", "reserved3c",
+
+ /* 0x040 */
+ "pllCtrl0", "pllCtrl1", "pllCtrl2", "dacMode",
+ "dacAddr", "dacData", "rgbMaxDelta", "vidProcCfg",
+ "hwCurPatAddr", "hwCurLoc", "hwCurC0", "hwCurC1",
+ "vidInFormat", "vidInStatus", "vidSerialParallelPort","vidInXDecimDeltas",
+
+ /* 0x080 */
+ "vidInDecimInitErrs","vidInYDecimDeltas","vidPixelBufThold","vidChromaMin",
+ "vidChromaMax", "vidCurrentLine","vidScreenSize","vidOverlayStartCoords",
+ "vidOverlayEndScreenCoord","vidOverlayDudx","vidOverlayDudxOffsetSrcWidth","vidOverlayDvdy",
+ "vga[b0]", "vga[b4]", "vga[b8]", "vga[bc]",
+
+ /* 0x0c0 */
+ "vga[c0]", "vga[c4]", "vga[c8]", "vga[cc]",
+ "vga[d0]", "vga[d4]", "vga[d8]", "vga[dc]",
+ "vidOverlayDvdyOffset","vidDesktopStartAddr","vidDesktopOverlayStride","vidInAddr0",
+ "vidInAddr1", "vidInAddr2", "vidInStride", "vidCurrOverlayStartAddr"
+};
+
+
+
+/*************************************
+ *
+ * Voodoo Banshee AGP space registers
+ *
+ *************************************/
+
+/* 0x000 */
+#define agpReqSize (0x000/4) /* */
+#define agpHostAddressLow (0x004/4) /* */
+#define agpHostAddressHigh (0x008/4) /* */
+#define agpGraphicsAddress (0x00c/4) /* */
+#define agpGraphicsStride (0x010/4) /* */
+#define agpMoveCMD (0x014/4) /* */
+#define cmdBaseAddr0 (0x020/4) /* */
+#define cmdBaseSize0 (0x024/4) /* */
+#define cmdBump0 (0x028/4) /* */
+#define cmdRdPtrL0 (0x02c/4) /* */
+#define cmdRdPtrH0 (0x030/4) /* */
+#define cmdAMin0 (0x034/4) /* */
+#define cmdAMax0 (0x03c/4) /* */
+
+/* 0x040 */
+#define cmdFifoDepth0 (0x044/4) /* */
+#define cmdHoleCnt0 (0x048/4) /* */
+#define cmdBaseAddr1 (0x050/4) /* */
+#define cmdBaseSize1 (0x054/4) /* */
+#define cmdBump1 (0x058/4) /* */
+#define cmdRdPtrL1 (0x05c/4) /* */
+#define cmdRdPtrH1 (0x060/4) /* */
+#define cmdAMin1 (0x064/4) /* */
+#define cmdAMax1 (0x06c/4) /* */
+#define cmdFifoDepth1 (0x074/4) /* */
+#define cmdHoleCnt1 (0x078/4) /* */
+
+/* 0x080 */
+#define cmdFifoThresh (0x080/4) /* */
+#define cmdHoleInt (0x084/4) /* */
+
+/* 0x100 */
+#define yuvBaseAddress (0x100/4) /* */
+#define yuvStride (0x104/4) /* */
+#define crc1 (0x120/4) /* */
+#define crc2 (0x130/4) /* */
+
+
+
+/*************************************
+ *
+ * Register string table for debug
+ *
+ *************************************/
+
+static const char *const banshee_agp_reg_name[] =
+{
+ /* 0x000 */
+ "agpReqSize", "agpHostAddressLow","agpHostAddressHigh","agpGraphicsAddress",
+ "agpGraphicsStride","agpMoveCMD","reserved18", "reserved1c",
+ "cmdBaseAddr0", "cmdBaseSize0", "cmdBump0", "cmdRdPtrL0",
+ "cmdRdPtrH0", "cmdAMin0", "reserved38", "cmdAMax0",
+
+ /* 0x040 */
+ "reserved40", "cmdFifoDepth0","cmdHoleCnt0", "reserved4c",
+ "cmdBaseAddr1", "cmdBaseSize1", "cmdBump1", "cmdRdPtrL1",
+ "cmdRdPtrH1", "cmdAMin1", "reserved68", "cmdAMax1",
+ "reserved70", "cmdFifoDepth1","cmdHoleCnt1", "reserved7c",
+
+ /* 0x080 */
+ "cmdFifoThresh","cmdHoleInt", "reserved88", "reserved8c",
+ "reserved90", "reserved94", "reserved98", "reserved9c",
+ "reserveda0", "reserveda4", "reserveda8", "reservedac",
+ "reservedb0", "reservedb4", "reservedb8", "reservedbc",
+
+ /* 0x0c0 */
+ "reservedc0", "reservedc4", "reservedc8", "reservedcc",
+ "reservedd0", "reservedd4", "reservedd8", "reserveddc",
+ "reservede0", "reservede4", "reservede8", "reservedec",
+ "reservedf0", "reservedf4", "reservedf8", "reservedfc",
+
+ /* 0x100 */
+ "yuvBaseAddress","yuvStride", "reserved108", "reserved10c",
+ "reserved110", "reserved114", "reserved118", "reserved11c",
+ "crc1", "reserved124", "reserved128", "reserved12c",
+ "crc2", "reserved134", "reserved138", "reserved13c"
+};
+
+
+
+/*************************************
+ *
+ * Dithering tables
+ *
+ *************************************/
+
+static const UINT8 dither_matrix_4x4[16] =
+{
+ 0, 8, 2, 10,
+ 12, 4, 14, 6,
+ 3, 11, 1, 9,
+ 15, 7, 13, 5
+};
+
+static const UINT8 dither_matrix_2x2[16] =
+{
+ 2, 10, 2, 10,
+ 14, 6, 14, 6,
+ 2, 10, 2, 10,
+ 14, 6, 14, 6
+};
+
+
+
+/*************************************
+ *
+ * Macros for extracting pixels
+ *
+ *************************************/
+
+#define EXTRACT_565_TO_888(val, a, b, c) \
+ (a) = (((val) >> 8) & 0xf8) | (((val) >> 13) & 0x07); \
+ (b) = (((val) >> 3) & 0xfc) | (((val) >> 9) & 0x03); \
+ (c) = (((val) << 3) & 0xf8) | (((val) >> 2) & 0x07);
+#define EXTRACT_x555_TO_888(val, a, b, c) \
+ (a) = (((val) >> 7) & 0xf8) | (((val) >> 12) & 0x07); \
+ (b) = (((val) >> 2) & 0xf8) | (((val) >> 7) & 0x07); \
+ (c) = (((val) << 3) & 0xf8) | (((val) >> 2) & 0x07);
+#define EXTRACT_555x_TO_888(val, a, b, c) \
+ (a) = (((val) >> 8) & 0xf8) | (((val) >> 13) & 0x07); \
+ (b) = (((val) >> 3) & 0xf8) | (((val) >> 8) & 0x07); \
+ (c) = (((val) << 2) & 0xf8) | (((val) >> 3) & 0x07);
+#define EXTRACT_1555_TO_8888(val, a, b, c, d) \
+ (a) = ((INT16)(val) >> 15) & 0xff; \
+ EXTRACT_x555_TO_888(val, b, c, d)
+#define EXTRACT_5551_TO_8888(val, a, b, c, d) \
+ EXTRACT_555x_TO_888(val, a, b, c) \
+ (d) = ((val) & 0x0001) ? 0xff : 0x00;
+#define EXTRACT_x888_TO_888(val, a, b, c) \
+ (a) = ((val) >> 16) & 0xff; \
+ (b) = ((val) >> 8) & 0xff; \
+ (c) = ((val) >> 0) & 0xff;
+#define EXTRACT_888x_TO_888(val, a, b, c) \
+ (a) = ((val) >> 24) & 0xff; \
+ (b) = ((val) >> 16) & 0xff; \
+ (c) = ((val) >> 8) & 0xff;
+#define EXTRACT_8888_TO_8888(val, a, b, c, d) \
+ (a) = ((val) >> 24) & 0xff; \
+ (b) = ((val) >> 16) & 0xff; \
+ (c) = ((val) >> 8) & 0xff; \
+ (d) = ((val) >> 0) & 0xff;
+#define EXTRACT_4444_TO_8888(val, a, b, c, d) \
+ (a) = (((val) >> 8) & 0xf0) | (((val) >> 12) & 0x0f); \
+ (b) = (((val) >> 4) & 0xf0) | (((val) >> 8) & 0x0f); \
+ (c) = (((val) >> 0) & 0xf0) | (((val) >> 4) & 0x0f); \
+ (d) = (((val) << 4) & 0xf0) | (((val) >> 0) & 0x0f);
+#define EXTRACT_332_TO_888(val, a, b, c) \
+ (a) = (((val) >> 0) & 0xe0) | (((val) >> 3) & 0x1c) | (((val) >> 6) & 0x03); \
+ (b) = (((val) << 3) & 0xe0) | (((val) >> 0) & 0x1c) | (((val) >> 3) & 0x03); \
+ (c) = (((val) << 6) & 0xc0) | (((val) << 4) & 0x30) | (((val) << 2) & 0x0c) | (((val) << 0) & 0x03);
+
+
+/*************************************
+ *
+ * Misc. macros
+ *
+ *************************************/
+
+/* macro for clamping a value between minimum and maximum values */
+#define CLAMP(val,min,max) do { if ((val) < (min)) { (val) = (min); } else if ((val) > (max)) { (val) = (max); } } while (0)
+
+/* macro to compute the base 2 log for LOD calculations */
+#define LOGB2(x) (log((double)(x)) / log(2.0))
+
+
+
+/*************************************
+ *
+ * Macros for extracting bitfields
+ *
+ *************************************/
+
+#define INITEN_ENABLE_HW_INIT(val) (((val) >> 0) & 1)
+#define INITEN_ENABLE_PCI_FIFO(val) (((val) >> 1) & 1)
+#define INITEN_REMAP_INIT_TO_DAC(val) (((val) >> 2) & 1)
+#define INITEN_ENABLE_SNOOP0(val) (((val) >> 4) & 1)
+#define INITEN_SNOOP0_MEMORY_MATCH(val) (((val) >> 5) & 1)
+#define INITEN_SNOOP0_READWRITE_MATCH(val) (((val) >> 6) & 1)
+#define INITEN_ENABLE_SNOOP1(val) (((val) >> 7) & 1)
+#define INITEN_SNOOP1_MEMORY_MATCH(val) (((val) >> 8) & 1)
+#define INITEN_SNOOP1_READWRITE_MATCH(val) (((val) >> 9) & 1)
+#define INITEN_SLI_BUS_OWNER(val) (((val) >> 10) & 1)
+#define INITEN_SLI_ODD_EVEN(val) (((val) >> 11) & 1)
+#define INITEN_SECONDARY_REV_ID(val) (((val) >> 12) & 0xf) /* voodoo 2 only */
+#define INITEN_MFCTR_FAB_ID(val) (((val) >> 16) & 0xf) /* voodoo 2 only */
+#define INITEN_ENABLE_PCI_INTERRUPT(val) (((val) >> 20) & 1) /* voodoo 2 only */
+#define INITEN_PCI_INTERRUPT_TIMEOUT(val) (((val) >> 21) & 1) /* voodoo 2 only */
+#define INITEN_ENABLE_NAND_TREE_TEST(val) (((val) >> 22) & 1) /* voodoo 2 only */
+#define INITEN_ENABLE_SLI_ADDRESS_SNOOP(val) (((val) >> 23) & 1) /* voodoo 2 only */
+#define INITEN_SLI_SNOOP_ADDRESS(val) (((val) >> 24) & 0xff) /* voodoo 2 only */
+
+#define FBZCP_CC_RGBSELECT(val) (((val) >> 0) & 3)
+#define FBZCP_CC_ASELECT(val) (((val) >> 2) & 3)
+#define FBZCP_CC_LOCALSELECT(val) (((val) >> 4) & 1)
+#define FBZCP_CCA_LOCALSELECT(val) (((val) >> 5) & 3)
+#define FBZCP_CC_LOCALSELECT_OVERRIDE(val) (((val) >> 7) & 1)
+#define FBZCP_CC_ZERO_OTHER(val) (((val) >> 8) & 1)
+#define FBZCP_CC_SUB_CLOCAL(val) (((val) >> 9) & 1)
+#define FBZCP_CC_MSELECT(val) (((val) >> 10) & 7)
+#define FBZCP_CC_REVERSE_BLEND(val) (((val) >> 13) & 1)
+#define FBZCP_CC_ADD_ACLOCAL(val) (((val) >> 14) & 3)
+#define FBZCP_CC_INVERT_OUTPUT(val) (((val) >> 16) & 1)
+#define FBZCP_CCA_ZERO_OTHER(val) (((val) >> 17) & 1)
+#define FBZCP_CCA_SUB_CLOCAL(val) (((val) >> 18) & 1)
+#define FBZCP_CCA_MSELECT(val) (((val) >> 19) & 7)
+#define FBZCP_CCA_REVERSE_BLEND(val) (((val) >> 22) & 1)
+#define FBZCP_CCA_ADD_ACLOCAL(val) (((val) >> 23) & 3)
+#define FBZCP_CCA_INVERT_OUTPUT(val) (((val) >> 25) & 1)
+#define FBZCP_CCA_SUBPIXEL_ADJUST(val) (((val) >> 26) & 1)
+#define FBZCP_TEXTURE_ENABLE(val) (((val) >> 27) & 1)
+#define FBZCP_RGBZW_CLAMP(val) (((val) >> 28) & 1) /* voodoo 2 only */
+#define FBZCP_ANTI_ALIAS(val) (((val) >> 29) & 1) /* voodoo 2 only */
+
+#define ALPHAMODE_ALPHATEST(val) (((val) >> 0) & 1)
+#define ALPHAMODE_ALPHAFUNCTION(val) (((val) >> 1) & 7)
+#define ALPHAMODE_ALPHABLEND(val) (((val) >> 4) & 1)
+#define ALPHAMODE_ANTIALIAS(val) (((val) >> 5) & 1)
+#define ALPHAMODE_SRCRGBBLEND(val) (((val) >> 8) & 15)
+#define ALPHAMODE_DSTRGBBLEND(val) (((val) >> 12) & 15)
+#define ALPHAMODE_SRCALPHABLEND(val) (((val) >> 16) & 15)
+#define ALPHAMODE_DSTALPHABLEND(val) (((val) >> 20) & 15)
+#define ALPHAMODE_ALPHAREF(val) (((val) >> 24) & 0xff)
+
+#define FOGMODE_ENABLE_FOG(val) (((val) >> 0) & 1)
+#define FOGMODE_FOG_ADD(val) (((val) >> 1) & 1)
+#define FOGMODE_FOG_MULT(val) (((val) >> 2) & 1)
+#define FOGMODE_FOG_ZALPHA(val) (((val) >> 3) & 3)
+#define FOGMODE_FOG_CONSTANT(val) (((val) >> 5) & 1)
+#define FOGMODE_FOG_DITHER(val) (((val) >> 6) & 1) /* voodoo 2 only */
+#define FOGMODE_FOG_ZONES(val) (((val) >> 7) & 1) /* voodoo 2 only */
+
+#define FBZMODE_ENABLE_CLIPPING(val) (((val) >> 0) & 1)
+#define FBZMODE_ENABLE_CHROMAKEY(val) (((val) >> 1) & 1)
+#define FBZMODE_ENABLE_STIPPLE(val) (((val) >> 2) & 1)
+#define FBZMODE_WBUFFER_SELECT(val) (((val) >> 3) & 1)
+#define FBZMODE_ENABLE_DEPTHBUF(val) (((val) >> 4) & 1)
+#define FBZMODE_DEPTH_FUNCTION(val) (((val) >> 5) & 7)
+#define FBZMODE_ENABLE_DITHERING(val) (((val) >> 8) & 1)
+#define FBZMODE_RGB_BUFFER_MASK(val) (((val) >> 9) & 1)
+#define FBZMODE_AUX_BUFFER_MASK(val) (((val) >> 10) & 1)
+#define FBZMODE_DITHER_TYPE(val) (((val) >> 11) & 1)
+#define FBZMODE_STIPPLE_PATTERN(val) (((val) >> 12) & 1)
+#define FBZMODE_ENABLE_ALPHA_MASK(val) (((val) >> 13) & 1)
+#define FBZMODE_DRAW_BUFFER(val) (((val) >> 14) & 3)
+#define FBZMODE_ENABLE_DEPTH_BIAS(val) (((val) >> 16) & 1)
+#define FBZMODE_Y_ORIGIN(val) (((val) >> 17) & 1)
+#define FBZMODE_ENABLE_ALPHA_PLANES(val) (((val) >> 18) & 1)
+#define FBZMODE_ALPHA_DITHER_SUBTRACT(val) (((val) >> 19) & 1)
+#define FBZMODE_DEPTH_SOURCE_COMPARE(val) (((val) >> 20) & 1)
+#define FBZMODE_DEPTH_FLOAT_SELECT(val) (((val) >> 21) & 1) /* voodoo 2 only */
+
+#define LFBMODE_WRITE_FORMAT(val) (((val) >> 0) & 0xf)
+#define LFBMODE_WRITE_BUFFER_SELECT(val) (((val) >> 4) & 3)
+#define LFBMODE_READ_BUFFER_SELECT(val) (((val) >> 6) & 3)
+#define LFBMODE_ENABLE_PIXEL_PIPELINE(val) (((val) >> 8) & 1)
+#define LFBMODE_RGBA_LANES(val) (((val) >> 9) & 3)
+#define LFBMODE_WORD_SWAP_WRITES(val) (((val) >> 11) & 1)
+#define LFBMODE_BYTE_SWIZZLE_WRITES(val) (((val) >> 12) & 1)
+#define LFBMODE_Y_ORIGIN(val) (((val) >> 13) & 1)
+#define LFBMODE_WRITE_W_SELECT(val) (((val) >> 14) & 1)
+#define LFBMODE_WORD_SWAP_READS(val) (((val) >> 15) & 1)
+#define LFBMODE_BYTE_SWIZZLE_READS(val) (((val) >> 16) & 1)
+
+#define CHROMARANGE_BLUE_EXCLUSIVE(val) (((val) >> 24) & 1)
+#define CHROMARANGE_GREEN_EXCLUSIVE(val) (((val) >> 25) & 1)
+#define CHROMARANGE_RED_EXCLUSIVE(val) (((val) >> 26) & 1)
+#define CHROMARANGE_UNION_MODE(val) (((val) >> 27) & 1)
+#define CHROMARANGE_ENABLE(val) (((val) >> 28) & 1)
+
+#define FBIINIT0_VGA_PASSTHRU(val) (((val) >> 0) & 1)
+#define FBIINIT0_GRAPHICS_RESET(val) (((val) >> 1) & 1)
+#define FBIINIT0_FIFO_RESET(val) (((val) >> 2) & 1)
+#define FBIINIT0_SWIZZLE_REG_WRITES(val) (((val) >> 3) & 1)
+#define FBIINIT0_STALL_PCIE_FOR_HWM(val) (((val) >> 4) & 1)
+#define FBIINIT0_PCI_FIFO_LWM(val) (((val) >> 6) & 0x1f)
+#define FBIINIT0_LFB_TO_MEMORY_FIFO(val) (((val) >> 11) & 1)
+#define FBIINIT0_TEXMEM_TO_MEMORY_FIFO(val) (((val) >> 12) & 1)
+#define FBIINIT0_ENABLE_MEMORY_FIFO(val) (((val) >> 13) & 1)
+#define FBIINIT0_MEMORY_FIFO_HWM(val) (((val) >> 14) & 0x7ff)
+#define FBIINIT0_MEMORY_FIFO_BURST(val) (((val) >> 25) & 0x3f)
+
+#define FBIINIT1_PCI_DEV_FUNCTION(val) (((val) >> 0) & 1)
+#define FBIINIT1_PCI_WRITE_WAIT_STATES(val) (((val) >> 1) & 1)
+#define FBIINIT1_MULTI_SST1(val) (((val) >> 2) & 1) /* not on voodoo 2 */
+#define FBIINIT1_ENABLE_LFB(val) (((val) >> 3) & 1)
+#define FBIINIT1_X_VIDEO_TILES(val) (((val) >> 4) & 0xf)
+#define FBIINIT1_VIDEO_TIMING_RESET(val) (((val) >> 8) & 1)
+#define FBIINIT1_SOFTWARE_OVERRIDE(val) (((val) >> 9) & 1)
+#define FBIINIT1_SOFTWARE_HSYNC(val) (((val) >> 10) & 1)
+#define FBIINIT1_SOFTWARE_VSYNC(val) (((val) >> 11) & 1)
+#define FBIINIT1_SOFTWARE_BLANK(val) (((val) >> 12) & 1)
+#define FBIINIT1_DRIVE_VIDEO_TIMING(val) (((val) >> 13) & 1)
+#define FBIINIT1_DRIVE_VIDEO_BLANK(val) (((val) >> 14) & 1)
+#define FBIINIT1_DRIVE_VIDEO_SYNC(val) (((val) >> 15) & 1)
+#define FBIINIT1_DRIVE_VIDEO_DCLK(val) (((val) >> 16) & 1)
+#define FBIINIT1_VIDEO_TIMING_VCLK(val) (((val) >> 17) & 1)
+#define FBIINIT1_VIDEO_CLK_2X_DELAY(val) (((val) >> 18) & 3)
+#define FBIINIT1_VIDEO_TIMING_SOURCE(val) (((val) >> 20) & 3)
+#define FBIINIT1_ENABLE_24BPP_OUTPUT(val) (((val) >> 22) & 1)
+#define FBIINIT1_ENABLE_SLI(val) (((val) >> 23) & 1)
+#define FBIINIT1_X_VIDEO_TILES_BIT5(val) (((val) >> 24) & 1) /* voodoo 2 only */
+#define FBIINIT1_ENABLE_EDGE_FILTER(val) (((val) >> 25) & 1)
+#define FBIINIT1_INVERT_VID_CLK_2X(val) (((val) >> 26) & 1)
+#define FBIINIT1_VID_CLK_2X_SEL_DELAY(val) (((val) >> 27) & 3)
+#define FBIINIT1_VID_CLK_DELAY(val) (((val) >> 29) & 3)
+#define FBIINIT1_DISABLE_FAST_READAHEAD(val) (((val) >> 31) & 1)
+
+#define FBIINIT2_DISABLE_DITHER_SUB(val) (((val) >> 0) & 1)
+#define FBIINIT2_DRAM_BANKING(val) (((val) >> 1) & 1)
+#define FBIINIT2_ENABLE_TRIPLE_BUF(val) (((val) >> 4) & 1)
+#define FBIINIT2_ENABLE_FAST_RAS_READ(val) (((val) >> 5) & 1)
+#define FBIINIT2_ENABLE_GEN_DRAM_OE(val) (((val) >> 6) & 1)
+#define FBIINIT2_ENABLE_FAST_READWRITE(val) (((val) >> 7) & 1)
+#define FBIINIT2_ENABLE_PASSTHRU_DITHER(val) (((val) >> 8) & 1)
+#define FBIINIT2_SWAP_BUFFER_ALGORITHM(val) (((val) >> 9) & 3)
+#define FBIINIT2_VIDEO_BUFFER_OFFSET(val) (((val) >> 11) & 0x1ff)
+#define FBIINIT2_ENABLE_DRAM_BANKING(val) (((val) >> 20) & 1)
+#define FBIINIT2_ENABLE_DRAM_READ_FIFO(val) (((val) >> 21) & 1)
+#define FBIINIT2_ENABLE_DRAM_REFRESH(val) (((val) >> 22) & 1)
+#define FBIINIT2_REFRESH_LOAD_VALUE(val) (((val) >> 23) & 0x1ff)
+
+#define FBIINIT3_TRI_REGISTER_REMAP(val) (((val) >> 0) & 1)
+#define FBIINIT3_VIDEO_FIFO_THRESH(val) (((val) >> 1) & 0x1f)
+#define FBIINIT3_DISABLE_TMUS(val) (((val) >> 6) & 1)
+#define FBIINIT3_FBI_MEMORY_TYPE(val) (((val) >> 8) & 7)
+#define FBIINIT3_VGA_PASS_RESET_VAL(val) (((val) >> 11) & 1)
+#define FBIINIT3_HARDCODE_PCI_BASE(val) (((val) >> 12) & 1)
+#define FBIINIT3_FBI2TREX_DELAY(val) (((val) >> 13) & 0xf)
+#define FBIINIT3_TREX2FBI_DELAY(val) (((val) >> 17) & 0x1f)
+#define FBIINIT3_YORIGIN_SUBTRACT(val) (((val) >> 22) & 0x3ff)
+
+#define FBIINIT4_PCI_READ_WAITS(val) (((val) >> 0) & 1)
+#define FBIINIT4_ENABLE_LFB_READAHEAD(val) (((val) >> 1) & 1)
+#define FBIINIT4_MEMORY_FIFO_LWM(val) (((val) >> 2) & 0x3f)
+#define FBIINIT4_MEMORY_FIFO_START_ROW(val) (((val) >> 8) & 0x3ff)
+#define FBIINIT4_MEMORY_FIFO_STOP_ROW(val) (((val) >> 18) & 0x3ff)
+#define FBIINIT4_VIDEO_CLOCKING_DELAY(val) (((val) >> 29) & 7) /* voodoo 2 only */
+
+#define FBIINIT5_DISABLE_PCI_STOP(val) (((val) >> 0) & 1) /* voodoo 2 only */
+#define FBIINIT5_PCI_SLAVE_SPEED(val) (((val) >> 1) & 1) /* voodoo 2 only */
+#define FBIINIT5_DAC_DATA_OUTPUT_WIDTH(val) (((val) >> 2) & 1) /* voodoo 2 only */
+#define FBIINIT5_DAC_DATA_17_OUTPUT(val) (((val) >> 3) & 1) /* voodoo 2 only */
+#define FBIINIT5_DAC_DATA_18_OUTPUT(val) (((val) >> 4) & 1) /* voodoo 2 only */
+#define FBIINIT5_GENERIC_STRAPPING(val) (((val) >> 5) & 0xf) /* voodoo 2 only */
+#define FBIINIT5_BUFFER_ALLOCATION(val) (((val) >> 9) & 3) /* voodoo 2 only */
+#define FBIINIT5_DRIVE_VID_CLK_SLAVE(val) (((val) >> 11) & 1) /* voodoo 2 only */
+#define FBIINIT5_DRIVE_DAC_DATA_16(val) (((val) >> 12) & 1) /* voodoo 2 only */
+#define FBIINIT5_VCLK_INPUT_SELECT(val) (((val) >> 13) & 1) /* voodoo 2 only */
+#define FBIINIT5_MULTI_CVG_DETECT(val) (((val) >> 14) & 1) /* voodoo 2 only */
+#define FBIINIT5_SYNC_RETRACE_READS(val) (((val) >> 15) & 1) /* voodoo 2 only */
+#define FBIINIT5_ENABLE_RHBORDER_COLOR(val) (((val) >> 16) & 1) /* voodoo 2 only */
+#define FBIINIT5_ENABLE_LHBORDER_COLOR(val) (((val) >> 17) & 1) /* voodoo 2 only */
+#define FBIINIT5_ENABLE_BVBORDER_COLOR(val) (((val) >> 18) & 1) /* voodoo 2 only */
+#define FBIINIT5_ENABLE_TVBORDER_COLOR(val) (((val) >> 19) & 1) /* voodoo 2 only */
+#define FBIINIT5_DOUBLE_HORIZ(val) (((val) >> 20) & 1) /* voodoo 2 only */
+#define FBIINIT5_DOUBLE_VERT(val) (((val) >> 21) & 1) /* voodoo 2 only */
+#define FBIINIT5_ENABLE_16BIT_GAMMA(val) (((val) >> 22) & 1) /* voodoo 2 only */
+#define FBIINIT5_INVERT_DAC_HSYNC(val) (((val) >> 23) & 1) /* voodoo 2 only */
+#define FBIINIT5_INVERT_DAC_VSYNC(val) (((val) >> 24) & 1) /* voodoo 2 only */
+#define FBIINIT5_ENABLE_24BIT_DACDATA(val) (((val) >> 25) & 1) /* voodoo 2 only */
+#define FBIINIT5_ENABLE_INTERLACING(val) (((val) >> 26) & 1) /* voodoo 2 only */
+#define FBIINIT5_DAC_DATA_18_CONTROL(val) (((val) >> 27) & 1) /* voodoo 2 only */
+#define FBIINIT5_RASTERIZER_UNIT_MODE(val) (((val) >> 30) & 3) /* voodoo 2 only */
+
+#define FBIINIT6_WINDOW_ACTIVE_COUNTER(val) (((val) >> 0) & 7) /* voodoo 2 only */
+#define FBIINIT6_WINDOW_DRAG_COUNTER(val) (((val) >> 3) & 0x1f) /* voodoo 2 only */
+#define FBIINIT6_SLI_SYNC_MASTER(val) (((val) >> 8) & 1) /* voodoo 2 only */
+#define FBIINIT6_DAC_DATA_22_OUTPUT(val) (((val) >> 9) & 3) /* voodoo 2 only */
+#define FBIINIT6_DAC_DATA_23_OUTPUT(val) (((val) >> 11) & 3) /* voodoo 2 only */
+#define FBIINIT6_SLI_SYNCIN_OUTPUT(val) (((val) >> 13) & 3) /* voodoo 2 only */
+#define FBIINIT6_SLI_SYNCOUT_OUTPUT(val) (((val) >> 15) & 3) /* voodoo 2 only */
+#define FBIINIT6_DAC_RD_OUTPUT(val) (((val) >> 17) & 3) /* voodoo 2 only */
+#define FBIINIT6_DAC_WR_OUTPUT(val) (((val) >> 19) & 3) /* voodoo 2 only */
+#define FBIINIT6_PCI_FIFO_LWM_RDY(val) (((val) >> 21) & 0x7f) /* voodoo 2 only */
+#define FBIINIT6_VGA_PASS_N_OUTPUT(val) (((val) >> 28) & 3) /* voodoo 2 only */
+#define FBIINIT6_X_VIDEO_TILES_BIT0(val) (((val) >> 30) & 1) /* voodoo 2 only */
+
+#define FBIINIT7_GENERIC_STRAPPING(val) (((val) >> 0) & 0xff) /* voodoo 2 only */
+#define FBIINIT7_CMDFIFO_ENABLE(val) (((val) >> 8) & 1) /* voodoo 2 only */
+#define FBIINIT7_CMDFIFO_MEMORY_STORE(val) (((val) >> 9) & 1) /* voodoo 2 only */
+#define FBIINIT7_DISABLE_CMDFIFO_HOLES(val) (((val) >> 10) & 1) /* voodoo 2 only */
+#define FBIINIT7_CMDFIFO_READ_THRESH(val) (((val) >> 11) & 0x1f) /* voodoo 2 only */
+#define FBIINIT7_SYNC_CMDFIFO_WRITES(val) (((val) >> 16) & 1) /* voodoo 2 only */
+#define FBIINIT7_SYNC_CMDFIFO_READS(val) (((val) >> 17) & 1) /* voodoo 2 only */
+#define FBIINIT7_RESET_PCI_PACKER(val) (((val) >> 18) & 1) /* voodoo 2 only */
+#define FBIINIT7_ENABLE_CHROMA_STUFF(val) (((val) >> 19) & 1) /* voodoo 2 only */
+#define FBIINIT7_CMDFIFO_PCI_TIMEOUT(val) (((val) >> 20) & 0x7f) /* voodoo 2 only */
+#define FBIINIT7_ENABLE_TEXTURE_BURST(val) (((val) >> 27) & 1) /* voodoo 2 only */
+
+#define TEXMODE_ENABLE_PERSPECTIVE(val) (((val) >> 0) & 1)
+#define TEXMODE_MINIFICATION_FILTER(val) (((val) >> 1) & 1)
+#define TEXMODE_MAGNIFICATION_FILTER(val) (((val) >> 2) & 1)
+#define TEXMODE_CLAMP_NEG_W(val) (((val) >> 3) & 1)
+#define TEXMODE_ENABLE_LOD_DITHER(val) (((val) >> 4) & 1)
+#define TEXMODE_NCC_TABLE_SELECT(val) (((val) >> 5) & 1)
+#define TEXMODE_CLAMP_S(val) (((val) >> 6) & 1)
+#define TEXMODE_CLAMP_T(val) (((val) >> 7) & 1)
+#define TEXMODE_FORMAT(val) (((val) >> 8) & 0xf)
+#define TEXMODE_TC_ZERO_OTHER(val) (((val) >> 12) & 1)
+#define TEXMODE_TC_SUB_CLOCAL(val) (((val) >> 13) & 1)
+#define TEXMODE_TC_MSELECT(val) (((val) >> 14) & 7)
+#define TEXMODE_TC_REVERSE_BLEND(val) (((val) >> 17) & 1)
+#define TEXMODE_TC_ADD_ACLOCAL(val) (((val) >> 18) & 3)
+#define TEXMODE_TC_INVERT_OUTPUT(val) (((val) >> 20) & 1)
+#define TEXMODE_TCA_ZERO_OTHER(val) (((val) >> 21) & 1)
+#define TEXMODE_TCA_SUB_CLOCAL(val) (((val) >> 22) & 1)
+#define TEXMODE_TCA_MSELECT(val) (((val) >> 23) & 7)
+#define TEXMODE_TCA_REVERSE_BLEND(val) (((val) >> 26) & 1)
+#define TEXMODE_TCA_ADD_ACLOCAL(val) (((val) >> 27) & 3)
+#define TEXMODE_TCA_INVERT_OUTPUT(val) (((val) >> 29) & 1)
+#define TEXMODE_TRILINEAR(val) (((val) >> 30) & 1)
+#define TEXMODE_SEQ_8_DOWNLD(val) (((val) >> 31) & 1)
+
+#define TEXLOD_LODMIN(val) (((val) >> 0) & 0x3f)
+#define TEXLOD_LODMAX(val) (((val) >> 6) & 0x3f)
+#define TEXLOD_LODBIAS(val) (((val) >> 12) & 0x3f)
+#define TEXLOD_LOD_ODD(val) (((val) >> 18) & 1)
+#define TEXLOD_LOD_TSPLIT(val) (((val) >> 19) & 1)
+#define TEXLOD_LOD_S_IS_WIDER(val) (((val) >> 20) & 1)
+#define TEXLOD_LOD_ASPECT(val) (((val) >> 21) & 3)
+#define TEXLOD_LOD_ZEROFRAC(val) (((val) >> 23) & 1)
+#define TEXLOD_TMULTIBASEADDR(val) (((val) >> 24) & 1)
+#define TEXLOD_TDATA_SWIZZLE(val) (((val) >> 25) & 1)
+#define TEXLOD_TDATA_SWAP(val) (((val) >> 26) & 1)
+#define TEXLOD_TDIRECT_WRITE(val) (((val) >> 27) & 1) /* Voodoo 2 only */
+
+#define TEXDETAIL_DETAIL_MAX(val) (((val) >> 0) & 0xff)
+#define TEXDETAIL_DETAIL_BIAS(val) (((val) >> 8) & 0x3f)
+#define TEXDETAIL_DETAIL_SCALE(val) (((val) >> 14) & 7)
+#define TEXDETAIL_RGB_MIN_FILTER(val) (((val) >> 17) & 1) /* Voodoo 2 only */
+#define TEXDETAIL_RGB_MAG_FILTER(val) (((val) >> 18) & 1) /* Voodoo 2 only */
+#define TEXDETAIL_ALPHA_MIN_FILTER(val) (((val) >> 19) & 1) /* Voodoo 2 only */
+#define TEXDETAIL_ALPHA_MAG_FILTER(val) (((val) >> 20) & 1) /* Voodoo 2 only */
+#define TEXDETAIL_SEPARATE_RGBA_FILTER(val) (((val) >> 21) & 1) /* Voodoo 2 only */
+
+#define TREXINIT_SEND_TMU_CONFIG(val) (((val) >> 18) & 1)
+
+
+
+struct voodoo_state;
+struct poly_extra_data;
+class voodoo_device;
+
+struct rgba
+{
+#ifdef LSB_FIRST
+ UINT8 b, g, r, a;
+#else
+ UINT8 a, r, g, b;
+#endif
+};
+
+
+union voodoo_reg
+{
+ INT32 i;
+ UINT32 u;
+ float f;
+ rgba rgb;
+};
+
+
+
+struct voodoo_stats
+{
+ UINT8 lastkey; /* last key state */
+ UINT8 display; /* display stats? */
+ INT32 swaps; /* total swaps */
+ INT32 stalls; /* total stalls */
+ INT32 total_triangles; /* total triangles */
+ INT32 total_pixels_in; /* total pixels in */
+ INT32 total_pixels_out; /* total pixels out */
+ INT32 total_chroma_fail; /* total chroma fail */
+ INT32 total_zfunc_fail; /* total z func fail */
+ INT32 total_afunc_fail; /* total a func fail */
+ INT32 total_clipped; /* total clipped */
+ INT32 total_stippled; /* total stippled */
+ INT32 lfb_writes; /* LFB writes */
+ INT32 lfb_reads; /* LFB reads */
+ INT32 reg_writes; /* register writes */
+ INT32 reg_reads; /* register reads */
+ INT32 tex_writes; /* texture writes */
+ INT32 texture_mode[16]; /* 16 different texture modes */
+ UINT8 render_override; /* render override */
+ char buffer[1024]; /* string */
+};
+
+
+/* note that this structure is an even 64 bytes long */
+struct stats_block
+{
+ INT32 pixels_in; /* pixels in statistic */
+ INT32 pixels_out; /* pixels out statistic */
+ INT32 chroma_fail; /* chroma test fail statistic */
+ INT32 zfunc_fail; /* z function test fail statistic */
+ INT32 afunc_fail; /* alpha function test fail statistic */
+ INT32 clip_fail; /* clipping fail statistic */
+ INT32 stipple_count; /* stipple statistic */
+ INT32 filler[64/4 - 7]; /* pad this structure to 64 bytes */
+};
+
+
+struct fifo_state
+{
+ UINT32 * base; /* base of the FIFO */
+ INT32 size; /* size of the FIFO */
+ INT32 in; /* input pointer */
+ INT32 out; /* output pointer */
+};
+
+
+struct cmdfifo_info
+{
+ UINT8 enable; /* enabled? */
+ UINT8 count_holes; /* count holes? */
+ UINT32 base; /* base address in framebuffer RAM */
+ UINT32 end; /* end address in framebuffer RAM */
+ UINT32 rdptr; /* current read pointer */
+ UINT32 amin; /* minimum address */
+ UINT32 amax; /* maximum address */
+ UINT32 depth; /* current depth */
+ UINT32 holes; /* number of holes */
+};
+
+
+struct pci_state
+{
+ fifo_state fifo; /* PCI FIFO */
+ UINT32 init_enable; /* initEnable value */
+ UINT8 stall_state; /* state of the system if we're stalled */
+ UINT8 op_pending; /* true if an operation is pending */
+ attotime op_end_time; /* time when the pending operation ends */
+ emu_timer * continue_timer; /* timer to use to continue processing */
+ UINT32 fifo_mem[64*2]; /* memory backing the PCI FIFO */
+};
+
+
+struct ncc_table
+{
+ UINT8 dirty; /* is the texel lookup dirty? */
+ voodoo_reg * reg; /* pointer to our registers */
+ INT32 ir[4], ig[4], ib[4]; /* I values for R,G,B */
+ INT32 qr[4], qg[4], qb[4]; /* Q values for R,G,B */
+ INT32 y[16]; /* Y values */
+ rgb_t * palette; /* pointer to associated RGB palette */
+ rgb_t * palettea; /* pointer to associated ARGB palette */
+ rgb_t texel[256]; /* texel lookup */
+};
+
+
+struct tmu_state
+{
+ UINT8 * ram; /* pointer to our RAM */
+ UINT32 mask; /* mask to apply to pointers */
+ voodoo_reg * reg; /* pointer to our register base */
+ UINT32 regdirty; /* true if the LOD/mode/base registers have changed */
+
+ UINT32 texaddr_mask; /* mask for texture address */
+ UINT8 texaddr_shift; /* shift for texture address */
+
+ INT64 starts, startt; /* starting S,T (14.18) */
+ INT64 startw; /* starting W (2.30) */
+ INT64 dsdx, dtdx; /* delta S,T per X */
+ INT64 dwdx; /* delta W per X */
+ INT64 dsdy, dtdy; /* delta S,T per Y */
+ INT64 dwdy; /* delta W per Y */
+
+ INT32 lodmin, lodmax; /* min, max LOD values */
+ INT32 lodbias; /* LOD bias */
+ UINT32 lodmask; /* mask of available LODs */
+ UINT32 lodoffset[9]; /* offset of texture base for each LOD */
+ INT32 detailmax; /* detail clamp */
+ INT32 detailbias; /* detail bias */
+ UINT8 detailscale; /* detail scale */
+
+ UINT32 wmask; /* mask for the current texture width */
+ UINT32 hmask; /* mask for the current texture height */
+
+ UINT32 bilinear_mask; /* mask for bilinear resolution (0xf0 for V1, 0xff for V2) */
+
+ ncc_table ncc[2]; /* two NCC tables */
+
+ rgb_t * lookup; /* currently selected lookup */
+ rgb_t * texel[16]; /* texel lookups for each format */
+
+ rgb_t palette[256]; /* palette lookup table */
+ rgb_t palettea[256]; /* palette+alpha lookup table */
+};
+
+
+struct tmu_shared_state
+{
+ rgb_t rgb332[256]; /* RGB 3-3-2 lookup table */
+ rgb_t alpha8[256]; /* alpha 8-bit lookup table */
+ rgb_t int8[256]; /* intensity 8-bit lookup table */
+ rgb_t ai44[256]; /* alpha, intensity 4-4 lookup table */
+
+ rgb_t rgb565[65536]; /* RGB 5-6-5 lookup table */
+ rgb_t argb1555[65536]; /* ARGB 1-5-5-5 lookup table */
+ rgb_t argb4444[65536]; /* ARGB 4-4-4-4 lookup table */
+};
+
+
+struct setup_vertex
+{
+ float x, y; /* X, Y coordinates */
+ float a, r, g, b; /* A, R, G, B values */
+ float z, wb; /* Z and broadcast W values */
+ float w0, s0, t0; /* W, S, T for TMU 0 */
+ float w1, s1, t1; /* W, S, T for TMU 1 */
+};
+
+
+struct fbi_state
+{
+ UINT8 * ram; /* pointer to frame buffer RAM */
+ UINT32 mask; /* mask to apply to pointers */
+ UINT32 rgboffs[3]; /* word offset to 3 RGB buffers */
+ UINT32 auxoffs; /* word offset to 1 aux buffer */
+
+ UINT8 frontbuf; /* front buffer index */
+ UINT8 backbuf; /* back buffer index */
+ UINT8 swaps_pending; /* number of pending swaps */
+ UINT8 video_changed; /* did the frontbuffer video change? */
+
+ UINT32 yorigin; /* Y origin subtract value */
+ UINT32 lfb_base; /* base of LFB in memory */
+ UINT8 lfb_stride; /* stride of LFB accesses in bits */
+
+ UINT32 width; /* width of current frame buffer */
+ UINT32 height; /* height of current frame buffer */
+ UINT32 xoffs; /* horizontal offset (back porch) */
+ UINT32 yoffs; /* vertical offset (back porch) */
+ UINT32 vsyncscan; /* vertical sync scanline */
+ UINT32 rowpixels; /* pixels per row */
+ UINT32 tile_width; /* width of video tiles */
+ UINT32 tile_height; /* height of video tiles */
+ UINT32 x_tiles; /* number of tiles in the X direction */
+
+ emu_timer * vblank_timer; /* VBLANK timer */
+ UINT8 vblank; /* VBLANK state */
+ UINT8 vblank_count; /* number of VBLANKs since last swap */
+ UINT8 vblank_swap_pending; /* a swap is pending, waiting for a vblank */
+ UINT8 vblank_swap; /* swap when we hit this count */
+ UINT8 vblank_dont_swap; /* don't actually swap when we hit this point */
+
+ /* triangle setup info */
+ UINT8 cheating_allowed; /* allow cheating? */
+ INT32 sign; /* triangle sign */
+ INT16 ax, ay; /* vertex A x,y (12.4) */
+ INT16 bx, by; /* vertex B x,y (12.4) */
+ INT16 cx, cy; /* vertex C x,y (12.4) */
+ INT32 startr, startg, startb, starta; /* starting R,G,B,A (12.12) */
+ INT32 startz; /* starting Z (20.12) */
+ INT64 startw; /* starting W (16.32) */
+ INT32 drdx, dgdx, dbdx, dadx; /* delta R,G,B,A per X */
+ INT32 dzdx; /* delta Z per X */
+ INT64 dwdx; /* delta W per X */
+ INT32 drdy, dgdy, dbdy, dady; /* delta R,G,B,A per Y */
+ INT32 dzdy; /* delta Z per Y */
+ INT64 dwdy; /* delta W per Y */
+
+ stats_block lfb_stats; /* LFB-access statistics */
+
+ UINT8 sverts; /* number of vertices ready */
+ setup_vertex svert[3]; /* 3 setup vertices */
+
+ fifo_state fifo; /* framebuffer memory fifo */
+ cmdfifo_info cmdfifo[2]; /* command FIFOs */
+
+ UINT8 fogblend[64]; /* 64-entry fog table */
+ UINT8 fogdelta[64]; /* 64-entry fog table */
+ UINT8 fogdelta_mask; /* mask for for delta (0xff for V1, 0xfc for V2) */
+
+ rgb_t pen[65536]; /* mapping from pixels to pens */
+ rgb_t clut[512]; /* clut gamma data */
+ UINT8 clut_dirty; /* do we need to recompute? */
+};
+
+
+struct dac_state
+{
+ UINT8 reg[8]; /* 8 registers */
+ UINT8 read_result; /* pending read result */
+};
+
+
+struct raster_info
+{
+ raster_info * next; /* pointer to next entry with the same hash */
+ poly_draw_scanline_func callback; /* callback pointer */
+ UINT8 is_generic; /* TRUE if this is one of the generic rasterizers */
+ UINT8 display; /* display index */
+ UINT32 hits; /* how many hits (pixels) we've used this for */
+ UINT32 polys; /* how many polys we've used this for */
+ UINT32 eff_color_path; /* effective fbzColorPath value */
+ UINT32 eff_alpha_mode; /* effective alphaMode value */
+ UINT32 eff_fog_mode; /* effective fogMode value */
+ UINT32 eff_fbz_mode; /* effective fbzMode value */
+ UINT32 eff_tex_mode_0; /* effective textureMode value for TMU #0 */
+ UINT32 eff_tex_mode_1; /* effective textureMode value for TMU #1 */
+ UINT32 hash;
+};
+
+
+struct poly_extra_data
+{
+ voodoo_device * device;
+ raster_info * info; /* pointer to rasterizer information */
+
+ INT16 ax, ay; /* vertex A x,y (12.4) */
+ INT32 startr, startg, startb, starta; /* starting R,G,B,A (12.12) */
+ INT32 startz; /* starting Z (20.12) */
+ INT64 startw; /* starting W (16.32) */
+ INT32 drdx, dgdx, dbdx, dadx; /* delta R,G,B,A per X */
+ INT32 dzdx; /* delta Z per X */
+ INT64 dwdx; /* delta W per X */
+ INT32 drdy, dgdy, dbdy, dady; /* delta R,G,B,A per Y */
+ INT32 dzdy; /* delta Z per Y */
+ INT64 dwdy; /* delta W per Y */
+
+ INT64 starts0, startt0; /* starting S,T (14.18) */
+ INT64 startw0; /* starting W (2.30) */
+ INT64 ds0dx, dt0dx; /* delta S,T per X */
+ INT64 dw0dx; /* delta W per X */
+ INT64 ds0dy, dt0dy; /* delta S,T per Y */
+ INT64 dw0dy; /* delta W per Y */
+ INT32 lodbase0; /* used during rasterization */
+
+ INT64 starts1, startt1; /* starting S,T (14.18) */
+ INT64 startw1; /* starting W (2.30) */
+ INT64 ds1dx, dt1dx; /* delta S,T per X */
+ INT64 dw1dx; /* delta W per X */
+ INT64 ds1dy, dt1dy; /* delta S,T per Y */
+ INT64 dw1dy; /* delta W per Y */
+ INT32 lodbase1; /* used during rasterization */
+
+ UINT16 dither[16]; /* dither matrix, for fastfill */
+};
+
+
+struct banshee_info
+{
+ UINT32 io[0x40]; /* I/O registers */
+ UINT32 agp[0x80]; /* AGP registers */
+ UINT8 vga[0x20]; /* VGA registers */
+ UINT8 crtc[0x27]; /* VGA CRTC registers */
+ UINT8 seq[0x05]; /* VGA sequencer registers */
+ UINT8 gc[0x05]; /* VGA graphics controller registers */
+ UINT8 att[0x15]; /* VGA attribute registers */
+ UINT8 attff; /* VGA attribute flip-flop */
+
+ UINT32 blt_regs[0x20]; /* 2D Blitter registers */
+ UINT32 blt_dst_base;
+ UINT32 blt_dst_x;
+ UINT32 blt_dst_y;
+ UINT32 blt_dst_width;
+ UINT32 blt_dst_height;
+ UINT32 blt_dst_stride;
+ UINT32 blt_dst_bpp;
+ UINT32 blt_cmd;
+ UINT32 blt_src_base;
+ UINT32 blt_src_x;
+ UINT32 blt_src_y;
+ UINT32 blt_src_width;
+ UINT32 blt_src_height;
+ UINT32 blt_src_stride;
+ UINT32 blt_src_bpp;
+};
+
+
+typedef voodoo_reg rgb_union;
+
+
+
+
/***************************************************************************
CONSTANTS
@@ -61,10 +1746,7 @@ enum
FUNCTION PROTOTYPES
***************************************************************************/
-int voodoo_update(device_t *device, bitmap_rgb32 &bitmap, const rectangle &cliprect);
-int voodoo_get_type(device_t *device);
-int voodoo_is_stalled(device_t *device);
-void voodoo_set_init_enable(device_t *device, UINT32 newval);
+struct stats_block;
/* ----- device interface ----- */
@@ -86,7 +1768,6 @@ public:
DECLARE_WRITE32_MEMBER( voodoo_w );
// access to legacy token
- struct voodoo_state *token() const { assert(m_token != nullptr); return m_token; }
void common_start_voodoo(UINT8 type);
UINT8 m_fbmem;
@@ -96,15 +1777,112 @@ public:
const char * m_cputag;
devcb_write_line m_vblank;
devcb_write_line m_stall;
+
+ TIMER_CALLBACK_MEMBER( vblank_off_callback );
+ TIMER_CALLBACK_MEMBER( stall_cpu_callback );
+ TIMER_CALLBACK_MEMBER( vblank_callback );
+
+ static void voodoo_postload(voodoo_device *vd);
+
+ int voodoo_update(bitmap_rgb32 &bitmap, const rectangle &cliprect);
+ int voodoo_get_type();
+ int voodoo_is_stalled();
+ void voodoo_set_init_enable(UINT32 newval);
+
+ // not all of these need to be static, review.
+
+ static void check_stalled_cpu(voodoo_device* vd, attotime current_time);
+ static void flush_fifos( voodoo_device* vd, attotime current_time);
+ static void init_fbi(voodoo_device *vd, fbi_state *f, void *memory, int fbmem);
+ static INT32 register_w(voodoo_device *vd, offs_t offset, UINT32 data);
+ static INT32 swapbuffer(voodoo_device *vd, UINT32 data);
+ static void init_tmu(voodoo_device *vd, tmu_state *t, voodoo_reg *reg, void *memory, int tmem);
+ static INT32 lfb_w(voodoo_device *vd, offs_t offset, UINT32 data, UINT32 mem_mask);
+ static INT32 texture_w(voodoo_device *vd, offs_t offset, UINT32 data);
+ static INT32 lfb_direct_w(voodoo_device *vd, offs_t offset, UINT32 data, UINT32 mem_mask);
+ static INT32 banshee_2d_w(voodoo_device *vd, offs_t offset, UINT32 data);
+ static void stall_cpu(voodoo_device *vd, int state, attotime current_time);
+ static void soft_reset(voodoo_device *vd);
+ static void recompute_video_memory(voodoo_device *vd);
+ static INT32 fastfill(voodoo_device *vd);
+ static INT32 triangle(voodoo_device *vd);
+ static INT32 begin_triangle(voodoo_device *vd);
+ static INT32 draw_triangle(voodoo_device *vd);
+ static INT32 setup_and_draw_triangle(voodoo_device *vd);
+ static INT32 triangle_create_work_item(voodoo_device* vd,UINT16 *drawbuf, int texcount);
+ static raster_info *add_rasterizer(voodoo_device *vd, const raster_info *cinfo);
+ static raster_info *find_rasterizer(voodoo_device *vd, int texcount);
+ static void dump_rasterizer_stats(voodoo_device *vd);
+ static void init_tmu_shared(tmu_shared_state *s);
+
+ static void swap_buffers(voodoo_device *vd);
+ static UINT32 cmdfifo_execute(voodoo_device *vd, cmdfifo_info *f);
+ static INT32 cmdfifo_execute_if_ready(voodoo_device* vd, cmdfifo_info *f);
+ static void cmdfifo_w(voodoo_device *vd, cmdfifo_info *f, offs_t offset, UINT32 data);
+
+ static void raster_fastfill(void *dest, INT32 scanline, const poly_extent *extent, const void *extradata, int threadid);
+ static void raster_generic_0tmu(void *dest, INT32 scanline, const poly_extent *extent, const void *extradata, int threadid);
+ static void raster_generic_1tmu(void *dest, INT32 scanline, const poly_extent *extent, const void *extradata, int threadid);
+ static void raster_generic_2tmu(void *dest, INT32 scanline, const poly_extent *extent, const void *extradata, int threadid);
+
+#define RASTERIZER_HEADER(name) \
+ static void raster_##name(void *destbase, INT32 y, const poly_extent *extent, const void *extradata, int threadid); \
+
+#define RASTERIZER_ENTRY(fbzcp, alpha, fog, fbz, tex0, tex1) \
+ RASTERIZER_HEADER(fbzcp##_##alpha##_##fog##_##fbz##_##tex0##_##tex1) \
+
+#include "voodoo_rast.inc"
+
+#undef RASTERIZER_ENTRY
+
+
protected:
// device-level overrides
virtual void device_config_complete() override;
virtual void device_stop() override;
virtual void device_reset() override;
-private:
- // internal state
- struct voodoo_state *m_token;
+public:
+ // voodoo_state
+ UINT8 index; /* index of board */
+ voodoo_device *device; /* pointer to our containing device */
+ screen_device *screen; /* the screen we are acting on */
+ device_t *cpu; /* the CPU we interact with */
+ UINT8 vd_type; /* type of system */
+ UINT8 chipmask; /* mask for which chips are available */
+ UINT32 freq; /* operating frequency */
+ attoseconds_t attoseconds_per_cycle; /* attoseconds per cycle */
+ UINT32 extra_cycles; /* extra cycles not yet accounted for */
+ int trigger; /* trigger used for stalling */
+
+ voodoo_reg reg[0x400]; /* raw registers */
+ const UINT8 * regaccess; /* register access array */
+ const char *const * regnames; /* register names array */
+ UINT8 alt_regmap; /* enable alternate register map? */
+
+ pci_state pci; /* PCI state */
+ dac_state dac; /* DAC state */
+
+ fbi_state fbi; /* FBI states */
+ tmu_state tmu[MAX_TMU]; /* TMU states */
+ tmu_shared_state tmushare; /* TMU shared state */
+ banshee_info banshee; /* Banshee state */
+
+ legacy_poly_manager * poly; /* polygon manager */
+ stats_block * thread_stats; /* per-thread statistics */
+
+ voodoo_stats stats; /* internal statistics */
+
+ offs_t last_status_pc; /* PC of last status description (for logging) */
+ UINT32 last_status_value; /* value of last status read (for logging) */
+
+ int next_rasterizer; /* next rasterizer index */
+ raster_info rasterizer[MAX_RASTERIZERS]; /* array of rasterizers */
+ raster_info * raster_hash[RASTER_HASH_SIZE]; /* hash table of rasterizers */
+
+ bool send_config;
+ UINT32 tmu_config;
+
};
class voodoo_1_device : public voodoo_device
diff --git a/src/devices/video/voodoo_pci.cpp b/src/devices/video/voodoo_pci.cpp
index 7570a007efb..9d34442f08b 100644
--- a/src/devices/video/voodoo_pci.cpp
+++ b/src/devices/video/voodoo_pci.cpp
@@ -153,7 +153,7 @@ void voodoo_pci_device::map_extra(UINT64 memory_window_start, UINT64 memory_wind
UINT32 voodoo_pci_device::screen_update(screen_device &screen, bitmap_rgb32 &bitmap, const rectangle &cliprect)
{
- return voodoo_update(m_voodoo, bitmap, cliprect) ? 0 : UPDATE_HAS_NOT_CHANGED;
+ return m_voodoo->voodoo_update(bitmap, cliprect) ? 0 : UPDATE_HAS_NOT_CHANGED;
}
// PCI bus control
@@ -170,7 +170,7 @@ WRITE32_MEMBER (voodoo_pci_device::pcictrl_w)
switch (offset) {
case 0x0/4: // The address map starts at 0x40
// HW initEnable
- voodoo_set_init_enable(m_voodoo, data);
+ m_voodoo->voodoo_set_init_enable(data);
logerror("%06X:voodoo_pci_device pcictrl_w to offset %02X = %08X & %08X\n", space.device().safe_pc(), offset*4, data, mem_mask);
break;
default:
diff --git a/src/devices/video/voodoo_rast.inc b/src/devices/video/voodoo_rast.inc
new file mode 100644
index 00000000000..e7251bf9a01
--- /dev/null
+++ b/src/devices/video/voodoo_rast.inc
@@ -0,0 +1,493 @@
+
+/***************************************************************************
+ GAME-SPECIFIC RASTERIZERS
+***************************************************************************/
+
+/* blitz ------> fbzColorPath alphaMode fogMode, fbzMode, texMode0, texMode1 */
+RASTERIZER_ENTRY( 0x00000035, 0x00000000, 0x00000000, 0x000B0739, 0x0C261A0F, 0xFFFFFFFF ) /* 284269 914846168 */
+RASTERIZER_ENTRY( 0x00002C35, 0x00515110, 0x00000000, 0x000B07F9, 0x0C261A0F, 0xFFFFFFFF ) /* 485421 440309121 */
+RASTERIZER_ENTRY( 0x00582C35, 0x00515110, 0x00000000, 0x000B0739, 0x0C261ACF, 0xFFFFFFFF ) /* 31606 230753709 */
+RASTERIZER_ENTRY( 0x00582C35, 0x00515110, 0x00000000, 0x000B0739, 0x0C261A0F, 0xFFFFFFFF ) /* 76742 211701679 */
+RASTERIZER_ENTRY( 0x01420039, 0x00000000, 0x00000000, 0x000B073B, 0x0C261ACF, 0xFFFFFFFF ) /* 6188 152109056 */
+RASTERIZER_ENTRY( 0x01420039, 0x00000000, 0x00000000, 0x000B07F9, 0x0C261ACF, 0xFFFFFFFF ) /* 1100 108134400 */
+RASTERIZER_ENTRY( 0x00002C35, 0x00515119, 0x00000000, 0x000B0739, 0x0C261A0F, 0xFFFFFFFF ) /* 6229525 106197740 */
+RASTERIZER_ENTRY( 0x00002C35, 0x00515119, 0x00000000, 0x000B0799, 0x0C261A0F, 0xFFFFFFFF ) /* 905641 75886220 */
+RASTERIZER_ENTRY( 0x00002C35, 0x00515119, 0x00000000, 0x000B07F9, 0x0C261A0F, 0xFFFFFFFF ) /* 205236 53317253 */
+RASTERIZER_ENTRY( 0x01422439, 0x00000000, 0x00000000, 0x000B073B, 0x0C2610C9, 0xFFFFFFFF ) /* 817356 48881349 */
+RASTERIZER_ENTRY( 0x00000035, 0x00000000, 0x00000000, 0x000B07F9, 0x0C261A0F, 0xFFFFFFFF ) /* 37979 41687251 */
+RASTERIZER_ENTRY( 0x00002C35, 0x00515110, 0x00000000, 0x000B0739, 0x0C261A0F, 0xFFFFFFFF ) /* 26014 41183295 */
+RASTERIZER_ENTRY( 0x01420039, 0x00000000, 0x00000000, 0x000B07F9, 0x0C261A0F, 0xFFFFFFFF ) /* 2512 37911104 */
+RASTERIZER_ENTRY( 0x00006136, 0x00515119, 0x00000000, 0x000B07F9, 0x0C261A0F, 0xFFFFFFFF ) /* 28834 15527654 */
+RASTERIZER_ENTRY( 0x00582435, 0x00515110, 0x00000000, 0x000B0739, 0x0C261ACF, 0xFFFFFFFF ) /* 9878 4979429 */
+RASTERIZER_ENTRY( 0x00002C35, 0x00515119, 0x00000000, 0x000B0739, 0x0C261ACF, 0xFFFFFFFF ) /* 199952 4622064 */
+RASTERIZER_ENTRY( 0x00582C35, 0x00515110, 0x00000000, 0x000B0739, 0x0C261AC9, 0xFFFFFFFF ) /* 8672 3676949 */
+RASTERIZER_ENTRY( 0x00582C35, 0x00515010, 0x00000000, 0x000B0739, 0x0C2610CF, 0xFFFFFFFF ) /* 616 2743972 */
+RASTERIZER_ENTRY( 0x01422C39, 0x00045110, 0x00000000, 0x000B0739, 0x0C261A0F, 0xFFFFFFFF ) /* 81380 2494832 */
+//RASTERIZER_ENTRY( 0x00582435, 0x00515110, 0x00000000, 0x000B0739, 0x0C261AC9, 0xFFFFFFFF ) /* 7670 2235587 */
+//RASTERIZER_ENTRY( 0x00592136, 0x00515110, 0x00000000, 0x000B073B, 0x0C261A0F, 0xFFFFFFFF ) /* 210 1639140 */
+//RASTERIZER_ENTRY( 0x00582C35, 0x00515110, 0x00000000, 0x000B073B, 0x0C261A0F, 0xFFFFFFFF ) /* 108 1154736 */
+//RASTERIZER_ENTRY( 0x00002C35, 0x00515110, 0x00000000, 0x000B07F9, 0x0C26180F, 0xFFFFFFFF ) /* 2152 1150842 */
+//RASTERIZER_ENTRY( 0x00592136, 0x00515110, 0x00000000, 0x000B073B, 0x0C261ACF, 0xFFFFFFFF ) /* 152 880560 */
+//RASTERIZER_ENTRY( 0x00008035, 0x00515119, 0x00000000, 0x000B0739, 0x0C261A0F, 0xFFFFFFFF ) /* 90848 805730 */
+//RASTERIZER_ENTRY( 0x00002C35, 0x00515119, 0x00000000, 0x000B07F9, 0x0C261AC9, 0xFFFFFFFF ) /* 2024 571406 */
+//RASTERIZER_ENTRY( 0x00012136, 0x00515110, 0x00000000, 0x000B07F9, 0x0C261A0F, 0xFFFFFFFF ) /* 1792 494592 */
+//RASTERIZER_ENTRY( 0x00000002, 0x00000000, 0x00000000, 0x00000300, 0xFFFFFFFF, 0xFFFFFFFF ) /* 256 161280 */
+
+/* blitz99 ----> fbzColorPath alphaMode fogMode, fbzMode, texMode0, texMode1 */
+RASTERIZER_ENTRY( 0x00000035, 0x00000009, 0x00000000, 0x000B0739, 0x0C261A0F, 0xFFFFFFFF ) /* * 6297478 149465839 */
+RASTERIZER_ENTRY( 0x00000035, 0x00000009, 0x00000000, 0x000B0739, 0x0C261ACF, 0xFFFFFFFF ) /* * 210693 6285480 */
+RASTERIZER_ENTRY( 0x01422C39, 0x00045110, 0x00000000, 0x000B073B, 0x0C2610C9, 0xFFFFFFFF ) /* * 20180 2718710 */
+RASTERIZER_ENTRY( 0x00582C35, 0x00515110, 0x00000000, 0x000B073B, 0x0C261ACF, 0xFFFFFFFF ) /* * 360 2425416 */
+RASTERIZER_ENTRY( 0x00002C35, 0x00000009, 0x00000000, 0x000B0739, 0x0C261A0F, 0xFFFFFFFF ) /* * 67059 1480978 */
+RASTERIZER_ENTRY( 0x00008035, 0x00000009, 0x00000000, 0x000B0739, 0x0C261A0F, 0xFFFFFFFF ) /* * 24811 400666 */
+RASTERIZER_ENTRY( 0x01420039, 0x00000000, 0x00000000, 0x000B073B, 0x0C2610C9, 0xFFFFFFFF ) /* * 10304 324468 */
+RASTERIZER_ENTRY( 0x00002C35, 0x00515110, 0x00000000, 0x000B0739, 0x0C261ACF, 0xFFFFFFFF ) /* * 1024 112665 */
+
+/* blitz2k ----> fbzColorPath alphaMode fogMode, fbzMode, texMode0, texMode1 */
+RASTERIZER_ENTRY( 0x01420039, 0x00000000, 0x00000000, 0x000B0739, 0x0C261ACF, 0xFFFFFFFF ) /* * 3880 95344128 */
+RASTERIZER_ENTRY( 0x00582C35, 0x00514110, 0x00000000, 0x000B0739, 0x0C261ACF, 0xFFFFFFFF ) /* * 148 1785480 */
+RASTERIZER_ENTRY( 0x01420039, 0x00000000, 0x00000000, 0x000B073B, 0x0C2610CF, 0xFFFFFFFF ) /* * 9976 314244 */
+
+/* carnevil ---> fbzColorPath alphaMode fogMode, fbzMode, texMode0, texMode1 */
+RASTERIZER_ENTRY( 0x00002435, 0x00045119, 0x00000000, 0x00030279, 0x0C261A0F, 0xFFFFFFFF ) /* * 492 84128082 */
+RASTERIZER_ENTRY( 0x00002425, 0x00045119, 0x00000000, 0x00030679, 0x0C261A0F, 0xFFFFFFFF ) /* * 1988398 36166780 */
+RASTERIZER_ENTRY( 0x00486116, 0x00045119, 0x00000000, 0x00030279, 0x0C26180F, 0xFFFFFFFF ) /* * 34424 28788847 */
+RASTERIZER_ENTRY( 0x00000035, 0x00045119, 0x00000000, 0x00030679, 0x0C261A0F, 0xFFFFFFFF ) /* * 514 26316800 */
+RASTERIZER_ENTRY( 0x00480015, 0x00045119, 0x00000000, 0x000306F9, 0x0C261AC9, 0xFFFFFFFF ) /* * 7346 18805760 */
+RASTERIZER_ENTRY( 0x00002435, 0x00045119, 0x00000000, 0x000302F9, 0x0C26180F, 0xFFFFFFFF ) /* * 130764 18678972 */
+RASTERIZER_ENTRY( 0x00482415, 0x00045119, 0x00000000, 0x000306F9, 0x0C2618C9, 0xFFFFFFFF ) /* * 7244 12179040 */
+RASTERIZER_ENTRY( 0x00482415, 0x00045119, 0x00000000, 0x000306F9, 0x0C26180F, 0xFFFFFFFF ) /* * 84520 12059721 */
+RASTERIZER_ENTRY( 0x00000035, 0x00045119, 0x00000000, 0x000306F9, 0x0C261AC9, 0xFFFFFFFF ) /* * 21926 11226112 */
+RASTERIZER_ENTRY( 0x00482415, 0x00045119, 0x00000000, 0x00030679, 0x0C2618C9, 0xFFFFFFFF ) /* * 92115 8926536 */
+RASTERIZER_ENTRY( 0x00482415, 0x00045119, 0x00000000, 0x00030279, 0x0C261A0F, 0xFFFFFFFF ) /* * 1730 7629334 */
+RASTERIZER_ENTRY( 0x00002435, 0x00045119, 0x00000000, 0x000B0779, 0x0C26180F, 0xFFFFFFFF ) /* * 37408 5545956 */
+RASTERIZER_ENTRY( 0x00002435, 0x00045119, 0x00000000, 0x00030679, 0x0C26180F, 0xFFFFFFFF ) /* * 26528 4225026 */
+RASTERIZER_ENTRY( 0x00002435, 0x00045119, 0x00000000, 0x000306F9, 0x0C26180F, 0xFFFFFFFF ) /* * 35764 3230884 */
+RASTERIZER_ENTRY( 0x01422409, 0x00045119, 0x00000000, 0x00030679, 0x0C261A0F, 0xFFFFFFFF ) /* * 96020 1226438 */
+RASTERIZER_ENTRY( 0x00482415, 0x00045119, 0x00000000, 0x00030279, 0x0C2618C9, 0xFFFFFFFF ) /* * 1020 574649 */
+RASTERIZER_ENTRY( 0x00482415, 0x00045119, 0x00000000, 0x00030679, 0x0C261A0F, 0xFFFFFFFF ) /* * 360 370008 */
+RASTERIZER_ENTRY( 0x00480015, 0x00045119, 0x00000000, 0x000306F9, 0x0C261A0F, 0xFFFFFFFF ) /* * 576 334404 */
+
+/* calspeed ---> fbzColorPath alphaMode fogMode, fbzMode, texMode0, texMode1 */
+RASTERIZER_ENTRY( 0x00002815, 0x00045119, 0x00000001, 0x000B07F9, 0x0C26100F, 0xFFFFFFFF ) /* * 99120 1731923836 */
+RASTERIZER_ENTRY( 0x01022819, 0x00000009, 0x00000001, 0x000B0739, 0x0C26100F, 0xFFFFFFFF ) /* * 9955804 1526119944 */
+RASTERIZER_ENTRY( 0x00002815, 0x00045119, 0x00000001, 0x000B0739, 0x0C26180F, 0xFFFFFFFF ) /* * 1898207 1124776864 */
+RASTERIZER_ENTRY( 0x01022819, 0x00000009, 0x00000001, 0x000B073B, 0x0C26100F, 0xFFFFFFFF ) /* * 3487467 1101663125 */
+RASTERIZER_ENTRY( 0x01022C19, 0x00000009, 0x00000001, 0x000B0739, 0x0C26100F, 0xFFFFFFFF ) /* * 1079277 609256033 */
+RASTERIZER_ENTRY( 0x00002815, 0x00045119, 0x00000001, 0x000A0723, 0x0C261ACF, 0xFFFFFFFF ) /* * 11880 583925760 */
+RASTERIZER_ENTRY( 0x00602819, 0x00045119, 0x00000001, 0x000B07F9, 0x0C26180F, 0xFFFFFFFF ) /* * 63644 582469888 */
+RASTERIZER_ENTRY( 0x01022819, 0x00000009, 0x00000001, 0x000B07F9, 0x0C261A0F, 0xFFFFFFFF ) /* * 22688 556797972 */
+RASTERIZER_ENTRY( 0x00002815, 0x00045119, 0x00000001, 0x000B07F9, 0x0C26180F, 0xFFFFFFFF ) /* * 1360254 417068457 */
+RASTERIZER_ENTRY( 0x00002815, 0x00045119, 0x00000001, 0x000B0739, 0x0C26100F, 0xFFFFFFFF ) /* * 3427489 405421272 */
+RASTERIZER_ENTRY( 0x00002C15, 0x00045119, 0x00000001, 0x000B0739, 0x0C26180F, 0xFFFFFFFF ) /* * 286809 238944049 */
+RASTERIZER_ENTRY( 0x00002815, 0x00045119, 0x00000001, 0x000A0321, 0x0C26180F, 0xFFFFFFFF ) /* * 28160 231084818 */
+RASTERIZER_ENTRY( 0x01022819, 0x00000009, 0x00000001, 0x000B07FB, 0x0C26100F, 0xFFFFFFFF ) /* * 183564 201014424 */
+RASTERIZER_ENTRY( 0x00480015, 0x00045119, 0x00000001, 0x000B0339, 0x0C26100F, 0xFFFFFFFF ) /* * 15275 168207109 */
+RASTERIZER_ENTRY( 0x01022819, 0x00000009, 0x00000001, 0x000B07F9, 0x0C26100F, 0xFFFFFFFF ) /* * 2856 134400000 */
+RASTERIZER_ENTRY( 0x00002815, 0x00045119, 0x00000001, 0x000B0339, 0x0C26180F, 0xFFFFFFFF ) /* * 98551 110417974 */
+RASTERIZER_ENTRY( 0x01022819, 0x00000009, 0x00000001, 0x000B07F9, 0x0C2610CF, 0xFFFFFFFF ) /* * 47040 107360728 */
+RASTERIZER_ENTRY( 0x00480015, 0x00045119, 0x00000001, 0x000B0339, 0x0C26180F, 0xFFFFFFFF ) /* * 13128 86876789 */
+RASTERIZER_ENTRY( 0x01022C19, 0x00000009, 0x00000001, 0x000B073B, 0x0C26100F, 0xFFFFFFFF ) /* * 257515 76329054 */
+RASTERIZER_ENTRY( 0x00002815, 0x00045119, 0x00000001, 0x000B07F9, 0x0C261A0F, 0xFFFFFFFF ) /* * 3934 64958208 */
+//RASTERIZER_ENTRY( 0x00002C15, 0x00045119, 0x00000001, 0x000B07F9, 0x0C26180F, 0xFFFFFFFF ) /* * 77400 63786236 */
+//RASTERIZER_ENTRY( 0x01022C19, 0x00000009, 0x00000001, 0x000B07F9, 0x0C261A0F, 0xFFFFFFFF ) /* * 12500 63151200 */
+//RASTERIZER_ENTRY( 0x0102001A, 0x00045119, 0x00000001, 0x000A0321, 0xFFFFFFFF, 0xFFFFFFFF ) /* * 8764 57629312 */
+//RASTERIZER_ENTRY( 0x00002C15, 0x00045119, 0x00000001, 0x000A0321, 0x0C26180F, 0xFFFFFFFF ) /* * 3257 32708448 */
+//RASTERIZER_ENTRY( 0x00002815, 0x00045119, 0x00000001, 0x000A07E3, 0x0C2610CF, 0xFFFFFFFF ) /* * 28364 31195605 */
+//RASTERIZER_ENTRY( 0x00002C15, 0x00045119, 0x00000001, 0x000B0739, 0x0C26100F, 0xFFFFFFFF ) /* * 409001 30699647 */
+//RASTERIZER_ENTRY( 0x00482C35, 0x00045119, 0x00000001, 0x000A0321, 0x0C26100F, 0xFFFFFFFF ) /* * 17669 11214172 */
+//RASTERIZER_ENTRY( 0x00002C15, 0x00045119, 0x00000001, 0x000B0339, 0x0C26180F, 0xFFFFFFFF ) /* * 5844 6064373 */
+//RASTERIZER_ENTRY( 0x00002C15, 0x00045119, 0x00000001, 0x000B07FB, 0x0C26100F, 0xFFFFFFFF ) /* * 626 4651080 */
+//RASTERIZER_ENTRY( 0x00482C35, 0x00045119, 0x00000001, 0x000A0321, 0x0C26180F, 0xFFFFFFFF ) /* * 5887 2945500 */
+//RASTERIZER_ENTRY( 0x00480015, 0x00045119, 0x00000001, 0x000B0339, 0x0C261A0F, 0xFFFFFFFF ) /* * 1090 2945093 */
+//RASTERIZER_ENTRY( 0x00602C19, 0x00045119, 0x00000001, 0x000B07F9, 0x0C26180F, 0xFFFFFFFF ) /* * 228 1723908 */
+//RASTERIZER_ENTRY( 0x00002C15, 0x00045119, 0x00000001, 0x000A0321, 0x0C261A0F, 0xFFFFFFFF ) /* * 112 1433600 */
+//RASTERIZER_ENTRY( 0x00002815, 0x00045119, 0x00000001, 0x000B0739, 0x0C261A0F, 0xFFFFFFFF ) /* * 3091 1165805 */
+//RASTERIZER_ENTRY( 0x01022C19, 0x00000009, 0x00000001, 0x000B07FB, 0x0C26100F, 0xFFFFFFFF ) /* * 620 791202 */
+
+/* hyprdriv ---> fbzColorPath alphaMode fogMode, fbzMode, texMode0, texMode1 */
+RASTERIZER_ENTRY( 0x01420039, 0x00000000, 0x00000001, 0x000B0739, 0x0C261ACF, 0xFFFFFFFF ) /* * 60860 498565120 */
+RASTERIZER_ENTRY( 0x01420039, 0x00000000, 0x00000001, 0x000B07F9, 0x0C261A0F, 0xFFFFFFFF ) /* * 28688 235012096 */
+RASTERIZER_ENTRY( 0x01420039, 0x00000000, 0x00000001, 0x000B07F9, 0x0C261ACF, 0xFFFFFFFF ) /* * 11844 156499968 */
+RASTERIZER_ENTRY( 0x00580035, 0x00045119, 0x00000001, 0x00030279, 0x0C261A0F, 0xFFFFFFFF ) /* * 175990 146518715 */
+RASTERIZER_ENTRY( 0x00582C35, 0x00515110, 0x00000001, 0x000B0739, 0x0C261ACF, 0xFFFFFFFF ) /* * 2336 114819072 */
+RASTERIZER_ENTRY( 0x00580035, 0x00000000, 0x00000001, 0x000B073B, 0x0C261A1F, 0xFFFFFFFF ) /* * 363325 100404294 */
+RASTERIZER_ENTRY( 0x00582C35, 0x00045110, 0x00000001, 0x000B073B, 0x0C261A0F, 0xFFFFFFFF ) /* * 40918 96318738 */
+RASTERIZER_ENTRY( 0x01420039, 0x00000000, 0x00000001, 0x000B0739, 0x0C26101F, 0xFFFFFFFF ) /* * 54815 94990269 */
+RASTERIZER_ENTRY( 0x01420039, 0x00000000, 0x00000001, 0x000B0739, 0x0C261A1F, 0xFFFFFFFF ) /* * 123032 91652828 */
+RASTERIZER_ENTRY( 0x01422429, 0x00000000, 0x00000001, 0x000B0739, 0x0C261A1F, 0xFFFFFFFF ) /* * 82767 86431997 */
+RASTERIZER_ENTRY( 0x01422429, 0x00000000, 0x00000001, 0x000B0739, 0x0C26101F, 0xFFFFFFFF ) /* * 9874 78101834 */
+RASTERIZER_ENTRY( 0x01422429, 0x00000000, 0x00000001, 0x000B073B, 0x0C261A1F, 0xFFFFFFFF ) /* * 102146 72570879 */
+RASTERIZER_ENTRY( 0x01420039, 0x00000000, 0x00000001, 0x000B073B, 0x0C26100F, 0xFFFFFFFF ) /* * 657804 67229658 */
+RASTERIZER_ENTRY( 0x00580035, 0x00045110, 0x00000001, 0x000B03F9, 0x0C261A0F, 0xFFFFFFFF ) /* * 10428 63173865 */
+RASTERIZER_ENTRY( 0x01422429, 0x00000000, 0x00000001, 0x000B073B, 0x0C261A0F, 0xFFFFFFFF ) /* * 230145 57902926 */
+RASTERIZER_ENTRY( 0x01422C19, 0x00000000, 0x00000001, 0x000B073B, 0x0C261A0F, 0xFFFFFFFF ) /* * 769654 53992486 */
+RASTERIZER_ENTRY( 0x01422C19, 0x00000000, 0x00000001, 0x000B0739, 0x0C26101F, 0xFFFFFFFF ) /* * 85365 51865697 */
+RASTERIZER_ENTRY( 0x00582435, 0x00515110, 0x00000001, 0x000B0739, 0x0C261AC9, 0xFFFFFFFF ) /* * 454674 46165536 */
+RASTERIZER_ENTRY( 0x00580035, 0x00000000, 0x00000001, 0x000B073B, 0x0C26101F, 0xFFFFFFFF ) /* * 101889 33337987 */
+RASTERIZER_ENTRY( 0x00580035, 0x00000000, 0x00000001, 0x000B0739, 0x0C26101F, 0xFFFFFFFF ) /* * 255952 29810993 */
+//RASTERIZER_ENTRY( 0x00582425, 0x00000000, 0x00000001, 0x000B073B, 0x0C261A1F, 0xFFFFFFFF ) /* * 106190 25430383 */
+//RASTERIZER_ENTRY( 0x01420039, 0x00000000, 0x00000001, 0x000B073B, 0x0C261A1F, 0xFFFFFFFF ) /* * 595001 23268601 */
+//RASTERIZER_ENTRY( 0x0142612A, 0x00000000, 0x00000001, 0x000B0739, 0xFFFFFFFF, 0xFFFFFFFF ) /* * 946410 22589110 */
+//RASTERIZER_ENTRY( 0x01420039, 0x00000000, 0x00000001, 0x000B073B, 0x0C261A0F, 0xFFFFFFFF ) /* * 330036 21323230 */
+//RASTERIZER_ENTRY( 0x01422C19, 0x00000000, 0x00000001, 0x000B0739, 0x0C261A1F, 0xFFFFFFFF ) /* * 40089 13470498 */
+//RASTERIZER_ENTRY( 0x01422C19, 0x00000000, 0x00000000, 0x000B073B, 0x0C261A0F, 0xFFFFFFFF ) /* * 90906 12850855 */
+//RASTERIZER_ENTRY( 0x00582C35, 0x00515110, 0x00000001, 0x000B0739, 0x0C261A0F, 0xFFFFFFFF ) /* * 9492 12115280 */
+//RASTERIZER_ENTRY( 0x01420039, 0x00000000, 0x00000001, 0x000B073B, 0x0C26101F, 0xFFFFFFFF ) /* * 453515 12013961 */
+//RASTERIZER_ENTRY( 0x01422C19, 0x00000000, 0x00000001, 0x000B073B, 0x0C261A1F, 0xFFFFFFFF ) /* * 33829 8384312 */
+//RASTERIZER_ENTRY( 0x00580035, 0x00000000, 0x00000001, 0x000B073B, 0x0C26100F, 0xFFFFFFFF ) /* * 83986 7841206 */
+//RASTERIZER_ENTRY( 0x00580035, 0x00045110, 0x00000001, 0x000B0339, 0x0C261A0F, 0xFFFFFFFF ) /* * 42515 7242660 */
+//RASTERIZER_ENTRY( 0x00582425, 0x00000000, 0x00000001, 0x000B0739, 0x0C26100F, 0xFFFFFFFF ) /* * 706 6158684 */
+//RASTERIZER_ENTRY( 0x00582425, 0x00000000, 0x00000001, 0x000B0739, 0x0C26101F, 0xFFFFFFFF ) /* * 62051 5819485 */
+//RASTERIZER_ENTRY( 0x0142612A, 0x00000000, 0x00000000, 0x000B0739, 0xFFFFFFFF, 0xFFFFFFFF ) /* * 135139 5063467 */
+//RASTERIZER_ENTRY( 0x01422429, 0x00000000, 0x00000001, 0x000B073B, 0x0C26100F, 0xFFFFFFFF ) /* * 10359 5135837 */
+//RASTERIZER_ENTRY( 0x01420039, 0x00000000, 0x00000001, 0x000B0739, 0x0C26100F, 0xFFFFFFFF ) /* * 170159 4449246 */
+//RASTERIZER_ENTRY( 0x00582425, 0x00000000, 0x00000001, 0x000B073B, 0x0C26101F, 0xFFFFFFFF ) /* * 19037 4371219 */
+//RASTERIZER_ENTRY( 0x01422429, 0x00000000, 0x00000001, 0x000B073B, 0x0C26101F, 0xFFFFFFFF ) /* * 8963 4352501 */
+//RASTERIZER_ENTRY( 0x01422C39, 0x00045110, 0x00000001, 0x000B073B, 0x0C261A0F, 0xFFFFFFFF ) /* * 47712 4159994 */
+//RASTERIZER_ENTRY( 0x01422C19, 0x00000000, 0x00000000, 0x000B073B, 0x0C261ACF, 0xFFFFFFFF ) /* * 47525 4151435 */
+//RASTERIZER_ENTRY( 0x01422C19, 0x00000000, 0x00000001, 0x000B0739, 0x0C261A0F, 0xFFFFFFFF ) /* * 34980 3794066 */
+//RASTERIZER_ENTRY( 0x0142613A, 0x00045110, 0x00000000, 0x000B0739, 0xFFFFFFFF, 0xFFFFFFFF ) /* * 6540 2358068 */
+//RASTERIZER_ENTRY( 0x0142611A, 0x00045110, 0x00000000, 0x000B0739, 0xFFFFFFFF, 0xFFFFFFFF ) /* * 703308 2096781 */
+//RASTERIZER_ENTRY( 0x00580035, 0x00045110, 0x00000001, 0x000B0339, 0x0C261A1F, 0xFFFFFFFF ) /* * 3963 2079440 */
+//RASTERIZER_ENTRY( 0x01422439, 0x00000000, 0x00000001, 0x000B073B, 0x0C261AC9, 0xFFFFFFFF ) /* * 22866 2008397 */
+//RASTERIZER_ENTRY( 0x01420039, 0x00000000, 0x00000001, 0x000B0739, 0x0C261A0F, 0xFFFFFFFF ) /* * 69705 1673671 */
+//RASTERIZER_ENTRY( 0x01422C19, 0x00000000, 0x00000001, 0x000B073B, 0x0C26100F, 0xFFFFFFFF ) /* * 13366 1575120 */
+//RASTERIZER_ENTRY( 0x0142613A, 0x00000000, 0x00000000, 0x000B0739, 0xFFFFFFFF, 0xFFFFFFFF ) /* * 50625 1408211 */
+//RASTERIZER_ENTRY( 0x0142613A, 0x00045110, 0x00000001, 0x000B0739, 0xFFFFFFFF, 0xFFFFFFFF ) /* * 1244348 1244346 */
+//RASTERIZER_ENTRY( 0x00582425, 0x00000000, 0x00000001, 0x000B073B, 0x0C26100F, 0xFFFFFFFF ) /* * 13791 1222735 */
+//RASTERIZER_ENTRY( 0x00580035, 0x00000000, 0x00000001, 0x000B073B, 0x0C261A0F, 0xFFFFFFFF ) /* * 33064 943590 */
+//RASTERIZER_ENTRY( 0x0142610A, 0x00045110, 0x00000001, 0x000B0739, 0xFFFFFFFF, 0xFFFFFFFF ) /* * 2041 926507 */
+//RASTERIZER_ENTRY( 0x00480019, 0x00045110, 0x00000001, 0x000B073B, 0x0C261A0F, 0xFFFFFFFF ) /* * 2722 453924 */
+//RASTERIZER_ENTRY( 0x00580035, 0x00000000, 0x00000001, 0x000B0739, 0x0C26100F, 0xFFFFFFFF ) /* * 68232 306869 */
+//RASTERIZER_ENTRY( 0x0142611A, 0x00045110, 0x00000001, 0x000B0379, 0xFFFFFFFF, 0xFFFFFFFF ) /* * 7164 269002 */
+
+/* mace -------> fbzColorPath alphaMode fogMode, fbzMode, texMode0, texMode1 */
+RASTERIZER_ENTRY( 0x00600C09, 0x00045119, 0x00000000, 0x000B0779, 0x0824100F, 0xFFFFFFFF ) /* * 7204150 1340201579 */
+RASTERIZER_ENTRY( 0x00000035, 0x00045119, 0x00000000, 0x000B0779, 0x08241ADF, 0xFFFFFFFF ) /* * 15332 1181663232 */
+RASTERIZER_ENTRY( 0x00000035, 0x00045119, 0x00000000, 0x000B0779, 0x082418DF, 0xFFFFFFFF ) /* * 104456 652582379 */
+RASTERIZER_ENTRY( 0x00600C09, 0x00045119, 0x00000000, 0x000B0779, 0x0824180F, 0xFFFFFFFF ) /* * 488613 368880164 */
+RASTERIZER_ENTRY( 0x00600C09, 0x00045119, 0x00000000, 0x000B0779, 0x082418CF, 0xFFFFFFFF ) /* * 352924 312417405 */
+RASTERIZER_ENTRY( 0x00480035, 0x00045119, 0x00000000, 0x000B0779, 0x082418DF, 0xFFFFFFFF ) /* * 15024 291762384 */
+RASTERIZER_ENTRY( 0x00600C09, 0x00045119, 0x00000000, 0x000B0779, 0x082410CF, 0xFFFFFFFF ) /* * 711824 279246170 */
+RASTERIZER_ENTRY( 0x00600C09, 0x00045119, 0x00000001, 0x000B0779, 0x0824100F, 0xFFFFFFFF ) /* * 735574 171881981 */
+RASTERIZER_ENTRY( 0x00602401, 0x00045119, 0x00000000, 0x000B0779, 0x082418DF, 0xFFFFFFFF ) /* * 943006 154374023 */
+RASTERIZER_ENTRY( 0x00600C09, 0x00045119, 0x00000001, 0x000B0779, 0x082410CF, 0xFFFFFFFF ) /* * 103877 101077498 */
+RASTERIZER_ENTRY( 0x00600C09, 0x00045119, 0x00000000, 0x000B0779, 0x0824108F, 0xFFFFFFFF ) /* * 710125 87547221 */
+RASTERIZER_ENTRY( 0x00600C09, 0x00045119, 0x00000000, 0x000B0779, 0x08241ACF, 0xFFFFFFFF ) /* * 9834 79774966 */
+RASTERIZER_ENTRY( 0x00000035, 0x00045119, 0x00000000, 0x000B0379, 0x082418DF, 0xFFFFFFFF ) /* * 17644 70187036 */
+RASTERIZER_ENTRY( 0x00480035, 0x00045119, 0x00000000, 0x000B0379, 0x082418DF, 0xFFFFFFFF ) /* * 11324 56633925 */
+RASTERIZER_ENTRY( 0x00482435, 0x00045119, 0x00000000, 0x000B0379, 0x0824180F, 0xFFFFFFFF ) /* * 96743 40820171 */
+RASTERIZER_ENTRY( 0x00482435, 0x00045119, 0x00000000, 0x000B0739, 0x082418CF, 0xFFFFFFFF ) /* * 166053 29100794 */
+RASTERIZER_ENTRY( 0x00482435, 0x00045117, 0x00000000, 0x000B0339, 0x082418CF, 0xFFFFFFFF ) /* * 166053 29100697 */
+RASTERIZER_ENTRY( 0x00600C09, 0x00045119, 0x00000001, 0x000B0379, 0x0824188F, 0xFFFFFFFF ) /* * 6723 29076516 */
+RASTERIZER_ENTRY( 0x00600C09, 0x00045119, 0x00000000, 0x000B0779, 0x0824188F, 0xFFFFFFFF ) /* * 53297 23928976 */
+RASTERIZER_ENTRY( 0x00600C09, 0x00045119, 0x00000001, 0x000B0779, 0x0824180F, 0xFFFFFFFF ) /* * 10309 19001776 */
+//RASTERIZER_ENTRY( 0x00600C09, 0x00045119, 0x00000000, 0x000B0379, 0x0824180F, 0xFFFFFFFF ) /* * 22105 17473157 */
+//RASTERIZER_ENTRY( 0x00600C09, 0x00045119, 0x00000000, 0x000B0379, 0x0824188F, 0xFFFFFFFF ) /* * 11304 17236698 */
+//RASTERIZER_ENTRY( 0x00000035, 0x00045119, 0x00000000, 0x000B0779, 0x082410DF, 0xFFFFFFFF ) /* * 1664 17180883 */
+//RASTERIZER_ENTRY( 0x00600C09, 0x00045119, 0x00000000, 0x000B0779, 0x08241A0F, 0xFFFFFFFF ) /* * 148606 12274278 */
+//RASTERIZER_ENTRY( 0x00600C09, 0x00045119, 0x00000001, 0x000B0779, 0x082418CF, 0xFFFFFFFF ) /* * 80692 9248007 */
+//RASTERIZER_ENTRY( 0x00482435, 0x00045119, 0x00000001, 0x000B0739, 0x082418CF, 0xFFFFFFFF ) /* * 37819 8080994 */
+//RASTERIZER_ENTRY( 0x00482435, 0x00045117, 0x00000001, 0x000B0339, 0x082418CF, 0xFFFFFFFF ) /* * 37819 8080969 */
+//RASTERIZER_ENTRY( 0x00000035, 0x00045119, 0x00000001, 0x000B0379, 0x082418DF, 0xFFFFFFFF ) /* * 536 7930305 */
+//RASTERIZER_ENTRY( 0x00482435, 0x00045117, 0x00000000, 0x000B0339, 0x082418CF, 0xFFFFFFFF ) /* * 27601 7905364 */
+//RASTERIZER_ENTRY( 0x00482435, 0x00045119, 0x00000000, 0x000B0739, 0x082418CF, 0xFFFFFFFF ) /* * 27601 7905364 */
+//RASTERIZER_ENTRY( 0x00482435, 0x00045119, 0x00000000, 0x000B0739, 0x082418CF, 0xFFFFFFFF ) /* * 36314 7667917 */
+//RASTERIZER_ENTRY( 0x00482435, 0x00045117, 0x00000000, 0x000B0339, 0x082418CF, 0xFFFFFFFF ) /* * 36314 7667917 */
+//RASTERIZER_ENTRY( 0x00482435, 0x00045119, 0x00000000, 0x000B0739, 0x082418CF, 0xFFFFFFFF ) /* * 31109 6020110 */
+//RASTERIZER_ENTRY( 0x00482435, 0x00045117, 0x00000000, 0x000B0339, 0x082418CF, 0xFFFFFFFF ) /* * 31109 6020110 */
+//RASTERIZER_ENTRY( 0x00482435, 0x00045117, 0x00000000, 0x000B0339, 0x082418CF, 0xFFFFFFFF ) /* * 42689 5959231 */
+//RASTERIZER_ENTRY( 0x00482435, 0x00045119, 0x00000000, 0x000B0739, 0x082418CF, 0xFFFFFFFF ) /* * 42689 5959231 */
+//RASTERIZER_ENTRY( 0x00600C09, 0x00045119, 0x00000001, 0x000B0779, 0x0824188F, 0xFFFFFFFF ) /* * 11965 5118044 */
+//RASTERIZER_ENTRY( 0x00482435, 0x00045119, 0x00000001, 0x000B0379, 0x0824180F, 0xFFFFFFFF ) /* * 11923 4662909 */
+//RASTERIZER_ENTRY( 0x00600C09, 0x00045119, 0x00000000, 0x000B0379, 0x082410CF, 0xFFFFFFFF ) /* * 4422 4624260 */
+//RASTERIZER_ENTRY( 0x00600C09, 0x00045119, 0x00000000, 0x000B0379, 0x0824100F, 0xFFFFFFFF ) /* * 3853 3596375 */
+//RASTERIZER_ENTRY( 0x00480035, 0x00045119, 0x00000001, 0x000B0379, 0x082418DF, 0xFFFFFFFF ) /* * 400 3555759 */
+//RASTERIZER_ENTRY( 0x00600C09, 0x00045119, 0x00000001, 0x000B0379, 0x0824180F, 0xFFFFFFFF ) /* * 3755 3453084 */
+//RASTERIZER_ENTRY( 0x00000035, 0x00045119, 0x00000001, 0x000B0779, 0x082418DF, 0xFFFFFFFF ) /* * 4170 2425016 */
+//RASTERIZER_ENTRY( 0x00600C09, 0x00045119, 0x00000000, 0x000B0779, 0x0824184F, 0xFFFFFFFF ) /* * 322 2220073 */
+//RASTERIZER_ENTRY( 0x00600C09, 0x00045119, 0x00000000, 0x000B0379, 0x082418CF, 0xFFFFFFFF ) /* * 4008 1201335 */
+//RASTERIZER_ENTRY( 0x00600C09, 0x00045119, 0x00000001, 0x000B0779, 0x0824108F, 0xFFFFFFFF ) /* * 13704 883585 */
+
+/* sfrush -----> fbzColorPath alphaMode fogMode, fbzMode, texMode0, texMode1 */
+RASTERIZER_ENTRY( 0x00600C09, 0x00045119, 0x00000000, 0x000B0779, 0x00000000, 0x0824101F ) /* * 590139 246714190 */
+RASTERIZER_ENTRY( 0x00600C09, 0x00045119, 0x00000001, 0x000B0779, 0x0824101F, 0x0824101F ) /* * 397774 153418144 */
+RASTERIZER_ENTRY( 0x00600C09, 0x00045119, 0x00000000, 0x000B0779, 0x00000000, 0x082410DF ) /* * 22732 146975666 */
+RASTERIZER_ENTRY( 0x00600C09, 0x00045119, 0x00000001, 0x000B0779, 0x00000000, 0x0824101F ) /* * 306398 130393278 */
+RASTERIZER_ENTRY( 0x00600C09, 0x00045119, 0x00000000, 0x000B0779, 0x0824101F, 0x0824101F ) /* * 437743 117403881 */
+RASTERIZER_ENTRY( 0x00600C09, 0x00045119, 0x00000000, 0x000B0779, 0x0824181F, 0x0824101F ) /* * 66608 109289500 */
+RASTERIZER_ENTRY( 0x00600C09, 0x00045119, 0x00000001, 0x000B0779, 0x00000000, 0x082410DF ) /* * 19101 92573085 */
+RASTERIZER_ENTRY( 0x00600C09, 0x00045119, 0x00000000, 0x000B0779, 0x00000000, 0x0824181F ) /* * 258287 78618228 */
+RASTERIZER_ENTRY( 0x00600C09, 0x00045119, 0x00000001, 0x000B0779, 0x0824181F, 0x0824101F ) /* * 61814 68788856 */
+RASTERIZER_ENTRY( 0x00000035, 0x00045119, 0x00000001, 0x000B0779, 0x082410DF, 0x0824181F ) /* * 149792 61464124 */
+RASTERIZER_ENTRY( 0x00600C09, 0x00045119, 0x00000000, 0x000B0779, 0x0824181F, 0x0824181F ) /* * 109988 55083276 */
+RASTERIZER_ENTRY( 0x00000035, 0x00045119, 0x00000000, 0x000B0779, 0x08241ADF, 0x00000000 ) /* * 478 46989312 */
+RASTERIZER_ENTRY( 0x00000035, 0x00045119, 0x00000000, 0x000B0779, 0x08241ADF, 0x0824181F ) /* * 468 46006272 */
+RASTERIZER_ENTRY( 0x00600C09, 0x00045119, 0x00000001, 0x000B0779, 0x00000000, 0x0824181F ) /* * 125204 39023396 */
+RASTERIZER_ENTRY( 0x00000035, 0x00045119, 0x00000000, 0x000B0779, 0x08241ADF, 0x082410DB ) /* * 394 38731776 */
+RASTERIZER_ENTRY( 0x00000035, 0x00045119, 0x00000000, 0x000B0779, 0x082410DF, 0x082410DB ) /* * 12890 36333568 */
+RASTERIZER_ENTRY( 0x00482435, 0x00045119, 0x00000000, 0x000B0379, 0x0824101F, 0x0824101F ) /* * 147995 31086325 */
+RASTERIZER_ENTRY( 0x00480035, 0x00045119, 0x00000000, 0x000B077B, 0x00000000, 0x082410DB ) /* * 3576 29294592 */
+RASTERIZER_ENTRY( 0x00600C09, 0x00045119, 0x00000001, 0x000B0779, 0x0824181F, 0x0824181F ) /* * 76059 29282981 */
+RASTERIZER_ENTRY( 0x00000035, 0x00045119, 0x00000001, 0x000B0779, 0x082418DF, 0x0824101F ) /* * 12632 29173808 */
+//RASTERIZER_ENTRY( 0x00600C09, 0x00045119, 0x00000001, 0x000B0779, 0x00000000, 0x082418DF ) /* * 14040 24318118 */
+//RASTERIZER_ENTRY( 0x00482435, 0x00045119, 0x00000001, 0x000B0379, 0x0824101F, 0x0824101F ) /* * 56586 17643207 */
+//RASTERIZER_ENTRY( 0x00000035, 0x00045119, 0x00000001, 0x000B0779, 0x082418DF, 0x0824181F ) /* * 9130 17277440 */
+//RASTERIZER_ENTRY( 0x00600C09, 0x00045119, 0x00000000, 0x000B0779, 0x082418DF, 0x0824101F ) /* * 66302 17049921 */
+//RASTERIZER_ENTRY( 0x00000035, 0x00045119, 0x00000001, 0x000B0779, 0x082410DF, 0x0824101F ) /* * 64380 16463672 */
+//RASTERIZER_ENTRY( 0x00000035, 0x00045119, 0x00000000, 0x000B0779, 0x082410DF, 0x0824181F ) /* * 152 14942208 */
+//RASTERIZER_ENTRY( 0x00000035, 0x00045119, 0x00000000, 0x000B0779, 0x082418DF, 0x0824101F ) /* * 8748 13810176 */
+//RASTERIZER_ENTRY( 0x00600C09, 0x00045119, 0x00000000, 0x000B0779, 0x082708DF, 0x0824101F ) /* * 216634 10628656 */
+//RASTERIZER_ENTRY( 0x00480035, 0x00045119, 0x00000001, 0x000B077B, 0x00000000, 0x082410DB ) /* * 1282 10502144 */
+//RASTERIZER_ENTRY( 0x00600C09, 0x00045119, 0x00000001, 0x000B0779, 0x082418DF, 0x0824101F ) /* * 74636 9758030 */
+//RASTERIZER_ENTRY( 0x00000035, 0x00045119, 0x00000000, 0x000B0779, 0x082418DF, 0x082410DB ) /* * 58652 9353671 */
+//RASTERIZER_ENTRY( 0x00480035, 0x00045119, 0x00000000, 0x000B0779, 0x082418DF, 0x082410DB ) /* * 5242 8038747 */
+//RASTERIZER_ENTRY( 0x00000035, 0x00045119, 0x00000000, 0x000B077B, 0x082410DB, 0x082410DB ) /* * 11048 7538060 */
+//RASTERIZER_ENTRY( 0x00600C09, 0x00045119, 0x00000000, 0x000B0779, 0x0824101F, 0x0824181F ) /* * 121630 6906591 */
+//RASTERIZER_ENTRY( 0x00600C09, 0x00045119, 0x00000000, 0x000B0779, 0x00000000, 0x082418DF ) /* * 19553 6864245 */
+//RASTERIZER_ENTRY( 0x00600C09, 0x00045119, 0x00000001, 0x000B0779, 0x082418DF, 0x082418DF ) /* * 1287 6648834 */
+//RASTERIZER_ENTRY( 0x00600C09, 0x00045119, 0x00000001, 0x000B0779, 0x082708DF, 0x0824101F ) /* * 197766 6617876 */
+//RASTERIZER_ENTRY( 0x00600C09, 0x00045119, 0x00000000, 0x000B0779, 0x082700DF, 0x0824101F ) /* * 75470 6231739 */
+//RASTERIZER_ENTRY( 0x00000035, 0x00045119, 0x00000001, 0x000B0779, 0x08241ADF, 0x0824101F ) /* * 180 5898240 */
+//RASTERIZER_ENTRY( 0x00000035, 0x00045119, 0x00000001, 0x000B0779, 0x082410DF, 0x082410DB ) /* * 7692 5743360 */
+//RASTERIZER_ENTRY( 0x00600C09, 0x00045119, 0x00000001, 0x000B0779, 0x082418DF, 0x0824181F ) /* * 20128 4980591 */
+//RASTERIZER_ENTRY( 0x00480035, 0x00045119, 0x00000001, 0x000B0779, 0x082418DF, 0x0824181F ) /* * 1144 4685824 */
+//RASTERIZER_ENTRY( 0x00600C09, 0x00045119, 0x00000001, 0x000B0779, 0x082700DF, 0x0824101F ) /* * 72299 4466336 */
+//RASTERIZER_ENTRY( 0x00480035, 0x00045119, 0x00000000, 0x000B0779, 0x082410DF, 0x082410DB ) /* * 3750 4018176 */
+//RASTERIZER_ENTRY( 0x00600C09, 0x00045119, 0x00000001, 0x000B0779, 0x082410DF, 0x082410DF ) /* * 7533 3692141 */
+//RASTERIZER_ENTRY( 0x00000035, 0x00045119, 0x00000001, 0x000B077B, 0x082410DB, 0x0824101F ) /* * 9484 3610674 */
+//RASTERIZER_ENTRY( 0x00600C09, 0x00045119, 0x00000001, 0x000B0779, 0x0824101F, 0x0824181F ) /* * 128660 3216280 */
+//RASTERIZER_ENTRY( 0x00000035, 0x00045119, 0x00000001, 0x000B0779, 0x082418DF, 0x082410DB ) /* * 22214 3172813 */
+//RASTERIZER_ENTRY( 0x00000035, 0x00045119, 0x00000001, 0x000B077B, 0x082410DB, 0x0824181F ) /* * 5094 3099098 */
+//RASTERIZER_ENTRY( 0x00480035, 0x00045119, 0x00000001, 0x000B0779, 0x082418DF, 0x0824101F ) /* * 1954 2850924 */
+//RASTERIZER_ENTRY( 0x00000035, 0x00045119, 0x00000000, 0x000B0779, 0x082418DF, 0x0824181F ) /* * 1542 2434304 */
+//RASTERIZER_ENTRY( 0x00480035, 0x00045119, 0x00000000, 0x000B0779, 0x082418DF, 0x00000000 ) /* * 478 1957888 */
+//RASTERIZER_ENTRY( 0x00480035, 0x00045119, 0x00000000, 0x000B0779, 0x082418DF, 0x0824181F ) /* * 468 1916928 */
+//RASTERIZER_ENTRY( 0x00000035, 0x00045119, 0x00000000, 0x000B077B, 0x082410DB, 0x0824101F ) /* * 11664 1729188 */
+//RASTERIZER_ENTRY( 0x00000035, 0x00045119, 0x00000001, 0x000B077B, 0x082410DB, 0x082410DB ) /* * 1282 1640960 */
+//RASTERIZER_ENTRY( 0x00480035, 0x00045119, 0x00000001, 0x000B077B, 0x082410DB, 0x0824101F ) /* * 388 1589248 */
+//RASTERIZER_ENTRY( 0x00480035, 0x00045119, 0x00000001, 0x000B0779, 0x082410DF, 0x082410DB ) /* * 1282 1312768 */
+//RASTERIZER_ENTRY( 0x00000035, 0x00045119, 0x00000000, 0x000B077B, 0x082410DB, 0x0824181F ) /* * 3928 1046582 */
+
+/* vaportrx ---> fbzColorPath alphaMode fogMode, fbzMode, texMode0, texMode1 */
+RASTERIZER_ENTRY( 0x00482405, 0x00000000, 0x00000000, 0x000B0739, 0x0C26100F, 0xFFFFFFFF ) /* * 2226138 592165102 */
+RASTERIZER_ENTRY( 0x00482435, 0x00000000, 0x00000000, 0x000B0739, 0x0C261A0F, 0xFFFFFFFF ) /* * 53533 281405105 */
+RASTERIZER_ENTRY( 0x00482435, 0x00045119, 0x00000000, 0x000B07F9, 0x0C261ACF, 0xFFFFFFFF ) /* * 314131 219103141 */
+RASTERIZER_ENTRY( 0x00482405, 0x00045119, 0x00000000, 0x000B0339, 0x0C261A0F, 0xFFFFFFFF ) /* * 216329 95014510 */
+RASTERIZER_ENTRY( 0x00482405, 0x00000009, 0x00000000, 0x000B0739, 0x0C26100F, 0xFFFFFFFF ) /* * 317128 92010096 */
+RASTERIZER_ENTRY( 0x0142613A, 0x00045119, 0x00000000, 0x000B07F9, 0xFFFFFFFF, 0xFFFFFFFF ) /* * 13728 88595930 */
+RASTERIZER_ENTRY( 0x00482435, 0x00045119, 0x00000000, 0x000B0339, 0x0C261ACF, 0xFFFFFFFF ) /* * 649448 81449105 */
+RASTERIZER_ENTRY( 0x00482435, 0x00000000, 0x00000000, 0x000B0739, 0x0C26100F, 0xFFFFFFFF ) /* * 444231 60067944 */
+RASTERIZER_ENTRY( 0x00482405, 0x00045119, 0x00000000, 0x000B0339, 0x0C26184F, 0xFFFFFFFF ) /* * 36057 58970468 */
+RASTERIZER_ENTRY( 0x00482435, 0x00045119, 0x00000000, 0x000B0339, 0x0C26100F, 0xFFFFFFFF ) /* * 53147 48856709 */
+RASTERIZER_ENTRY( 0x00482435, 0x00045119, 0x00000000, 0x000B07F9, 0x0C2610C9, 0xFFFFFFFF ) /* * 447654 47171792 */
+RASTERIZER_ENTRY( 0x00482435, 0x00045119, 0x00000000, 0x000B0339, 0x0C261A0F, 0xFFFFFFFF ) /* * 207392 38933691 */
+RASTERIZER_ENTRY( 0x00482435, 0x00045119, 0x00000000, 0x000B0739, 0x0C2610CF, 0xFFFFFFFF ) /* * 2015632 33364173 */
+RASTERIZER_ENTRY( 0x00482405, 0x00045119, 0x00000000, 0x000B0339, 0x0C26100F, 0xFFFFFFFF ) /* * 196361 30395218 */
+RASTERIZER_ENTRY( 0x00482435, 0x00045119, 0x00000000, 0x000B0339, 0x0C2610CF, 0xFFFFFFFF ) /* * 110898 28973006 */
+RASTERIZER_ENTRY( 0x00482435, 0x00000009, 0x00000000, 0x000B0739, 0x0C26100F, 0xFFFFFFFF ) /* * 135107 16301589 */
+RASTERIZER_ENTRY( 0x00482435, 0x00045119, 0x00000000, 0x000B0339, 0x0C261A8F, 0xFFFFFFFF ) /* * 22375 15797748 */
+RASTERIZER_ENTRY( 0x00482435, 0x00045119, 0x00000000, 0x000B0339, 0x0C26184F, 0xFFFFFFFF ) /* * 141539 7513140 */
+RASTERIZER_ENTRY( 0x0142613A, 0x00045119, 0x00000000, 0x000B0739, 0xFFFFFFFF, 0xFFFFFFFF ) /* * 621403 5369705 */
+RASTERIZER_ENTRY( 0x00482435, 0x00045110, 0x00000000, 0x000B0739, 0x0C261A0F, 0xFFFFFFFF ) /* * 30443 4070277 */
+//RASTERIZER_ENTRY( 0x00482405, 0x00045110, 0x00000000, 0x000B0739, 0x0C261A0F, 0xFFFFFFFF ) /* * 22121 3129894 */
+//RASTERIZER_ENTRY( 0x00482435, 0x00045119, 0x00000000, 0x000B0739, 0x0C26100F, 0xFFFFFFFF ) /* * 9187 1864599 */
+//RASTERIZER_ENTRY( 0x00482405, 0x00044110, 0x00000000, 0x000B0739, 0x0C2610CF, 0xFFFFFFFF ) /* * 10390 1694950 */
+//RASTERIZER_ENTRY( 0x0142610A, 0x00000009, 0x00000000, 0x000B0739, 0xFFFFFFFF, 0xFFFFFFFF ) /* * 25366 1624563 */
+//RASTERIZER_ENTRY( 0x00482435, 0x00045119, 0x00000000, 0x000B0739, 0x0C261A0F, 0xFFFFFFFF ) /* * 69033 1607970 */
+//RASTERIZER_ENTRY( 0x0142610A, 0x00000000, 0x00000000, 0x000B0739, 0xFFFFFFFF, 0xFFFFFFFF ) /* * 36316 1084818 */
+//RASTERIZER_ENTRY( 0x00482405, 0x00045119, 0x00000000, 0x000B0339, 0x0C2610CF, 0xFFFFFFFF ) /* * 1813 816763 */
+//RASTERIZER_ENTRY( 0x0142613A, 0x00045119, 0x00000000, 0x000B0339, 0xFFFFFFFF, 0xFFFFFFFF ) /* * 6602 767221 */
+//RASTERIZER_ENTRY( 0x00482435, 0x00045110, 0x00000000, 0x000B0739, 0x0C26100F, 0xFFFFFFFF ) /* * 2547 646048 */
+//RASTERIZER_ENTRY( 0x00482405, 0x00045119, 0x00000000, 0x000B0339, 0x0C261A8F, 0xFFFFFFFF ) /* * 2394 501590 */
+//RASTERIZER_ENTRY( 0x0142613A, 0x00000009, 0x00000000, 0x000B0739, 0xFFFFFFFF, 0xFFFFFFFF ) /* * 14078 440086 */
+//RASTERIZER_ENTRY( 0x0142610A, 0x00045119, 0x00000000, 0x000B0339, 0xFFFFFFFF, 0xFFFFFFFF ) /* * 9877 429160 */
+//RASTERIZER_ENTRY( 0x00482405, 0x00045119, 0x00000000, 0x000B0339, 0x0C261ACF, 0xFFFFFFFF ) /* * 3222 366052 */
+//RASTERIZER_ENTRY( 0x00482435, 0x00000009, 0x00000000, 0x000B0739, 0x0C2610CF, 0xFFFFFFFF ) /* * 5942 285657 */
+//RASTERIZER_ENTRY( 0x00482405, 0x00044119, 0x00000000, 0x000B0339, 0x0C2610CF, 0xFFFFFFFF ) /* * 2328 239688 */
+//RASTERIZER_ENTRY( 0x00482405, 0x00045119, 0x00000000, 0x000B0739, 0x0C26100F, 0xFFFFFFFF ) /* * 1129 208448 */
+
+/* wg3dh ------> fbzColorPath alphaMode fogMode, fbzMode, texMode0, texMode1 */
+RASTERIZER_ENTRY( 0x00000035, 0x00045119, 0x00000000, 0x000B0779, 0x0824181F, 0xFFFFFFFF ) /* * 127676 116109477 */
+RASTERIZER_ENTRY( 0x00000035, 0x00045119, 0x00000000, 0x000B0779, 0x0824189F, 0xFFFFFFFF ) /* * 96310 112016758 */
+RASTERIZER_ENTRY( 0x00000035, 0x00045119, 0x00000000, 0x000B0779, 0x0824109F, 0xFFFFFFFF ) /* * 1412831 108682642 */
+RASTERIZER_ENTRY( 0x00000035, 0x00045119, 0x00000000, 0x000B0779, 0x0824101F, 0xFFFFFFFF ) /* * 1612798 45952714 */
+RASTERIZER_ENTRY( 0x00000035, 0x00045119, 0x00000000, 0x000B0779, 0x08241AD9, 0xFFFFFFFF ) /* * 5960 6103040 */
+RASTERIZER_ENTRY( 0x00002435, 0x00045119, 0x00000000, 0x000B0779, 0x082418DF, 0xFFFFFFFF ) /* * 56512 4856542 */
+RASTERIZER_ENTRY( 0x00480035, 0x00045119, 0x00000000, 0x000B0779, 0x0824109F, 0xFFFFFFFF ) /* * 8480 2045940 */
+RASTERIZER_ENTRY( 0x00000035, 0x00045119, 0x00000000, 0x000B0379, 0x0824181F, 0xFFFFFFFF ) /* * 2779 1994317 */
+RASTERIZER_ENTRY( 0x00000035, 0x00045119, 0x00000000, 0x000B0779, 0x0824105F, 0xFFFFFFFF ) /* * 154691 1922774 */
+RASTERIZER_ENTRY( 0x00002435, 0x00045119, 0x00000000, 0x000B0779, 0x082410DF, 0xFFFFFFFF ) /* * 18114 776139 */
+
+/* gauntleg ---> fbzColorPath alphaMode fogMode, fbzMode, texMode0, texMode1 */
+RASTERIZER_ENTRY( 0x00602C19, 0x00045119, 0x00000000, 0x000B0779, 0x00000000, 0x0C24100F ) /* * 157050 668626339 */
+RASTERIZER_ENTRY( 0x00600039, 0x00045119, 0x00000000, 0x000B0779, 0x0C22400F, 0x0C241ACF ) /* * 1079126 580272490 */
+RASTERIZER_ENTRY( 0x00482435, 0x00045119, 0x00000000, 0x000B0779, 0x0C241A4F, 0x0C24100F ) /* * 49686 232178144 */
+RASTERIZER_ENTRY( 0x00482435, 0x00045119, 0x00000000, 0x000B0779, 0x0C24104F, 0x0C24100F ) /* * 1048560 206304396 */
+RASTERIZER_ENTRY( 0x00600039, 0x00045119, 0x00000000, 0x000B0779, 0x0C2240CF, 0x0C241ACF ) /* * 59176 182444375 */
+RASTERIZER_ENTRY( 0x00482435, 0x00045119, 0x00000000, 0x000B0779, 0x00000000, 0x0C241A4F ) /* * 66342 179689728 */
+RASTERIZER_ENTRY( 0x00602C19, 0x00045119, 0x00000000, 0x000B0779, 0x0C24180F, 0x0C24180F ) /* * 72264 109413344 */
+RASTERIZER_ENTRY( 0x00602C19, 0x00045119, 0x00000000, 0x000B0779, 0x0C24100F, 0x0C24100F ) /* * 281243 75399210 */
+RASTERIZER_ENTRY( 0x00482435, 0x00045119, 0x00000000, 0x000B0779, 0x00000000, 0x0C24104F ) /* * 126384 68412120 */
+RASTERIZER_ENTRY( 0x00600C09, 0x00045119, 0x00000000, 0x000B0779, 0x0C241A0F, 0x0C24100F ) /* * 26864 43754988 */
+RASTERIZER_ENTRY( 0x00482435, 0x00045119, 0x00000000, 0x000B0779, 0x00000000, 0x0C241ACF ) /* * 30510 32759936 */
+RASTERIZER_ENTRY( 0x00602C19, 0x00045119, 0x00000000, 0x000B0779, 0x0C24180F, 0x0C24100F ) /* * 44783 31884168 */
+RASTERIZER_ENTRY( 0x00602C19, 0x00045119, 0x00000000, 0x000B0779, 0x00000000, 0x0C24180F ) /* * 34946 31359362 */
+RASTERIZER_ENTRY( 0x00600C09, 0x00045119, 0x00000000, 0x000B0779, 0x00000000, 0x0C241ACF ) /* * 8006 28367999 */
+RASTERIZER_ENTRY( 0x00602C19, 0x00045119, 0x00000000, 0x000B0379, 0x0C24180F, 0x0C24180F ) /* * 15430 27908213 */
+RASTERIZER_ENTRY( 0x00600C09, 0x00045119, 0x00000000, 0x000B0779, 0x00000000, 0x0C241A0F ) /* * 29306 25166802 */
+RASTERIZER_ENTRY( 0x00602C19, 0x00045119, 0x00000000, 0x000B0779, 0x0C24180F, 0x0C241ACF ) /* * 27737 24517949 */
+RASTERIZER_ENTRY( 0x00600C09, 0x00045119, 0x00000000, 0x000B0779, 0x0C241ACF, 0x0C24100F ) /* * 6783 21292092 */
+RASTERIZER_ENTRY( 0x00602C19, 0x00045119, 0x00000000, 0x000B0379, 0x00000000, 0x0C24180F ) /* * 9591 17815763 */
+RASTERIZER_ENTRY( 0x00602C19, 0x00045119, 0x00000000, 0x000B0779, 0x0C24100F, 0x0C24180F ) /* * 343966 13864759 */
+//RASTERIZER_ENTRY( 0x00482435, 0x00045119, 0x00000000, 0x000B0779, 0x0C241ACF, 0x0C24100F ) /* * 11842 12126208 */
+//RASTERIZER_ENTRY( 0x00600C09, 0x00045119, 0x00000000, 0x000B0779, 0x0C241A8F, 0x0C24100F ) /* * 6648 9788508 */
+//RASTERIZER_ENTRY( 0x00482435, 0x00045119, 0x00000000, 0x000B0779, 0x00000000, 0x0C2418CF ) /* * 8444 8646656 */
+//RASTERIZER_ENTRY( 0x00600C09, 0x00045119, 0x00000000, 0x000B0379, 0x0C24180F, 0x0C24100F ) /* * 9677 8365606 */
+//RASTERIZER_ENTRY( 0x00600C09, 0x00045119, 0x00000000, 0x000B0779, 0x0C24100F, 0x0C24100F ) /* * 844920 8289326 */
+//RASTERIZER_ENTRY( 0x00482435, 0x00045119, 0x00000000, 0x000B0779, 0x00000000, 0x0C24184F ) /* * 3108 8010176 */
+//RASTERIZER_ENTRY( 0x00600039, 0x00045119, 0x00000000, 0x000B03F9, 0x00000000, 0x0C24180F ) /* * 1435 6209238 */
+//RASTERIZER_ENTRY( 0x00602C19, 0x00045119, 0x00000000, 0x000B0379, 0x0C24180F, 0x0C24100F ) /* * 5754 5617499 */
+//RASTERIZER_ENTRY( 0x00600039, 0x00045119, 0x00000000, 0x000B0379, 0x0C24180F, 0x0C24180F ) /* * 1608 5557253 */
+//RASTERIZER_ENTRY( 0x00602C19, 0x00045119, 0x00000000, 0x000B0779, 0x0C24100F, 0x0C241ACF ) /* * 105127 5133321 */
+//RASTERIZER_ENTRY( 0x00602C19, 0x00045119, 0x00000000, 0x000B0379, 0x0C24180F, 0x0C241ACF ) /* * 3460 4689138 */
+//RASTERIZER_ENTRY( 0x00600C09, 0x00045119, 0x00000000, 0x000B0779, 0x0C24180F, 0x0C24100F ) /* * 7025 4629550 */
+//RASTERIZER_ENTRY( 0x00600C09, 0x00045119, 0x00000000, 0x000B0779, 0x00000000, 0x0C24180F ) /* * 7164 4407683 */
+//RASTERIZER_ENTRY( 0x00602C19, 0x00045119, 0x00000000, 0x000B0779, 0x00000000, 0x0C24188F ) /* * 1922 3924179 */
+//RASTERIZER_ENTRY( 0x00600039, 0x00045119, 0x00000000, 0x000B0779, 0x00000000, 0x0C24180F ) /* * 4116 3733777 */
+//RASTERIZER_ENTRY( 0x00600C09, 0x00045119, 0x00000000, 0x000B0779, 0x00000000, 0x0C241A8F ) /* * 2626 3732809 */
+//RASTERIZER_ENTRY( 0x00600039, 0x00045119, 0x00000000, 0x000B03F9, 0x0C24180F, 0x0C24180F ) /* * 778 3202973 */
+//RASTERIZER_ENTRY( 0x00482435, 0x00045119, 0x00000000, 0x000B0779, 0x0C24184F, 0x0C24100F ) /* * 1525 2997446 */
+//RASTERIZER_ENTRY( 0x00600039, 0x00045119, 0x00000000, 0x000B03F9, 0x0C24180F, 0x0C241A0F ) /* * 645 2975266 */
+//RASTERIZER_ENTRY( 0x00600039, 0x00044119, 0x00000000, 0x000B0379, 0x00000000, 0x0C241A0F ) /* * 5212 2491361 */
+//RASTERIZER_ENTRY( 0x00600039, 0x00045119, 0x00000000, 0x000B0379, 0x00000000, 0x0C24180F ) /* * 825 1996513 */
+//RASTERIZER_ENTRY( 0x00600039, 0x00045119, 0x00000000, 0x000B0379, 0x0C24180F, 0x0C241A0F ) /* * 466 1967163 */
+//RASTERIZER_ENTRY( 0x00602C19, 0x00045119, 0x00000000, 0x000B0779, 0x0580000F, 0x0C24180F ) /* * 77400 1883434 */
+//RASTERIZER_ENTRY( 0x00600039, 0x00045119, 0x00000000, 0x000B0379, 0x0C24180F, 0x0C24100F ) /* * 472 1698177 */
+//RASTERIZER_ENTRY( 0x00600039, 0x00045119, 0x00000000, 0x000B0779, 0x0C24180F, 0x0C24180F ) /* * 2476 1678760 */
+//RASTERIZER_ENTRY( 0x00600C09, 0x00045119, 0x00000000, 0x000B0379, 0x00000000, 0x0C24180F ) /* * 4054 1541748 */
+//RASTERIZER_ENTRY( 0x00600039, 0x00044119, 0x00000000, 0x000B0379, 0x0C241A0F, 0x0C24180F ) /* * 3132 1509438 */
+//RASTERIZER_ENTRY( 0x00602C19, 0x00045119, 0x00000000, 0x000B0779, 0x0580080F, 0x0C24180F ) /* * 8582 1324196 */
+//RASTERIZER_ENTRY( 0x00602C19, 0x00044119, 0x00000000, 0x000B0379, 0x00000000, 0x0C24100F ) /* * 1436 1239704 */
+//RASTERIZER_ENTRY( 0x00600039, 0x00045119, 0x00000000, 0x000B03F9, 0x0C24180F, 0x0C24100F ) /* * 253 1220316 */
+//RASTERIZER_ENTRY( 0x00600039, 0x00045119, 0x00000000, 0x000B0779, 0x0C22480F, 0x0C241ACF ) /* * 2433 1014668 */
+
+/* gauntdl ----> fbzColorPath alphaMode fogMode, fbzMode, texMode0, texMode1 */
+RASTERIZER_ENTRY( 0x00482435, 0x00045119, 0x000000C1, 0x000B0779, 0x00000009, 0x0C241ACF ) /* * 30860 1128173568 */
+RASTERIZER_ENTRY( 0x0060743A, 0x00045119, 0x000000C1, 0x000B0779, 0x0C22400F, 0x0C241ACF ) /* * 2631692 1117011118 */
+RASTERIZER_ENTRY( 0x0060743A, 0x00045110, 0x000000C1, 0x000B0779, 0x0C22400F, 0x0C241ACF ) /* * 2429239 826969012 */
+RASTERIZER_ENTRY( 0x0060743A, 0x00045119, 0x000000C1, 0x000B0779, 0x0C22480F, 0x0C241ACF ) /* * 454056 468285142 */
+RASTERIZER_ENTRY( 0x00482435, 0x00045119, 0x000000C1, 0x000B0779, 0x00000009, 0x0C2418CF ) /* * 257586 355634672 */
+RASTERIZER_ENTRY( 0x00602439, 0x00045119, 0x000000C1, 0x000B0379, 0x00000009, 0x0C24180F ) /* * 10898 134362122 */
+RASTERIZER_ENTRY( 0x00602439, 0x00045119, 0x000000C1, 0x000B0779, 0x00000009, 0x0C241A0F ) /* * 32195 126327049 */
+RASTERIZER_ENTRY( 0x00482435, 0x00045119, 0x000000C1, 0x000B0779, 0x0C2410CF, 0x0C24100F ) /* * 855240 123899880 */
+RASTERIZER_ENTRY( 0x00602439, 0x00045110, 0x000000C1, 0x000B0379, 0x00000009, 0x0C24180F ) /* * 1718 120629204 */
+RASTERIZER_ENTRY( 0x0060743A, 0x00045119, 0x000000C1, 0x000B0779, 0x0C22488F, 0x0C241ACF ) /* * 186839 120281357 */
+RASTERIZER_ENTRY( 0x0060743A, 0x00045119, 0x000000C1, 0x000B0379, 0x0C22480F, 0x0C241ACF ) /* * 14102 115428820 */
+RASTERIZER_ENTRY( 0x00482435, 0x00045119, 0x000000C1, 0x000B0779, 0x00000009, 0x0C2410CF ) /* * 88530 98271949 */
+RASTERIZER_ENTRY( 0x0060743A, 0x00045110, 0x000000C1, 0x000B0379, 0x0C22480F, 0x0C241ACF ) /* * 12994 68053222 */
+RASTERIZER_ENTRY( 0x00602439, 0x00044110, 0x00000000, 0x000B0379, 0x00000009, 0x0C24100F ) /* * 68273 67454880 */
+RASTERIZER_ENTRY( 0x00602439, 0x00045119, 0x000000C1, 0x000B0779, 0x00000009, 0x0C24180F ) /* * 100026 62271618 */
+RASTERIZER_ENTRY( 0x0060743A, 0x00045110, 0x000000C1, 0x000B0779, 0x0C22480F, 0x0C241ACF ) /* * 153285 44411342 */
+RASTERIZER_ENTRY( 0x00602439, 0x00045119, 0x000000C1, 0x000B0779, 0x00000009, 0x0C24100F ) /* * 157545 40702131 */
+RASTERIZER_ENTRY( 0x00482435, 0x00045119, 0x000000C1, 0x000B0779, 0x0C241ACF, 0x0C24100F ) /* * 7800 31948800 */
+RASTERIZER_ENTRY( 0x0060743A, 0x00045110, 0x000000C1, 0x000B0779, 0x0C22408F, 0x0C241ACF ) /* * 47623 20321183 */
+RASTERIZER_ENTRY( 0x00602439, 0x00044119, 0x00000000, 0x000B0379, 0x00000009, 0x0C24188F ) /* * 21570 19324892 */
+//RASTERIZER_ENTRY( 0x00482435, 0x00045110, 0x000000C1, 0x000B0779, 0x0C241ACF, 0x0C24100F ) /* * 3698 15147008 */
+//RASTERIZER_ENTRY( 0x0060743A, 0x00045119, 0x000000C1, 0x000B0779, 0x0C22408F, 0x0C241ACF ) /* * 19765 12383722 */
+//RASTERIZER_ENTRY( 0x00602C19, 0x00045119, 0x000000C1, 0x000B0779, 0x0C24100F, 0x0C241ACF ) /* * 662274 10563855 */
+//RASTERIZER_ENTRY( 0x00602439, 0x00045110, 0x000000C1, 0x000B0779, 0x0C24180F, 0x0C241ACF ) /* * 27909 10462997 */
+//RASTERIZER_ENTRY( 0x00602439, 0x00045110, 0x000000C1, 0x000B0779, 0x00000009, 0x0C24180F ) /* * 78671 10286957 */
+//RASTERIZER_ENTRY( 0x00602439, 0x00045110, 0x000000C1, 0x000B0779, 0x00000009, 0x0C24188F ) /* * 52038 9928244 */
+//RASTERIZER_ENTRY( 0x0060743A, 0x00045119, 0x000000C1, 0x000B0779, 0x0C224A0F, 0x0C241ACF ) /* * 27469 9239782 */
+//RASTERIZER_ENTRY( 0x00602C19, 0x00045119, 0x000000C1, 0x000B0779, 0x00000009, 0x0C24100F ) /* * 757116 8072783 */
+//RASTERIZER_ENTRY( 0x0060743A, 0x00045110, 0x000000C1, 0x000B0779, 0x0C22488F, 0x0C241ACF ) /* * 18018 7035833 */
+//RASTERIZER_ENTRY( 0x00602439, 0x00044119, 0x00000000, 0x000B0379, 0x00000009, 0x0C241A0F ) /* * 50339 5976564 */
+//RASTERIZER_ENTRY( 0x00603430, 0x00040219, 0x00000000, 0x000B0379, 0x00000009, 0x0C2410CE ) /* * 29385 5466384 */
+//RASTERIZER_ENTRY( 0x00602C19, 0x00045119, 0x000000C1, 0x000B0779, 0x0C24100F, 0x0C24180F ) /* * 423347 5355017 */
+//RASTERIZER_ENTRY( 0x00602C19, 0x00045119, 0x000000C1, 0x000B0779, 0x0C24180F, 0x0C241ACF ) /* * 162620 4709092 */
+//RASTERIZER_ENTRY( 0x00602C19, 0x00045110, 0x000000C1, 0x000B0779, 0x00000009, 0x0C24100F ) /* * 463705 4642480 */
+//RASTERIZER_ENTRY( 0x00602C19, 0x00045119, 0x000000C1, 0x000B0779, 0x0C24180F, 0x0C24180F ) /* * 280337 4425529 */
+//RASTERIZER_ENTRY( 0x00602C19, 0x00045110, 0x000000C1, 0x000B0779, 0x0C24180F, 0x0C24180F ) /* * 212646 3432265 */
+//RASTERIZER_ENTRY( 0x00482435, 0x00045119, 0x000000C1, 0x000B0779, 0x0C2418CF, 0x0C24100F ) /* * 5788 2963456 */
+//RASTERIZER_ENTRY( 0x00602C19, 0x00045110, 0x000000C1, 0x000B0779, 0x0C24180F, 0x0C24100F ) /* * 460800 2609198 */
+//RASTERIZER_ENTRY( 0x00602439, 0x00045119, 0x000000C1, 0x000B0779, 0x0C24100F, 0x0C24180F ) /* * 251108 2392362 */
+//RASTERIZER_ENTRY( 0x00602C19, 0x00045110, 0x000000C1, 0x000B0779, 0x0C24100F, 0x0C24100F ) /* * 297219 2352862 */
+//RASTERIZER_ENTRY( 0x00602439, 0x00045119, 0x000000C1, 0x000B0779, 0x0584180F, 0x0C2410CF ) /* * 9913 2097069 */
+//RASTERIZER_ENTRY( 0x00602C19, 0x00045110, 0x000000C1, 0x000B0779, 0x0C24180F, 0x0C241ACF ) /* * 142722 2091569 */
+//RASTERIZER_ENTRY( 0x00602C19, 0x00045119, 0x000000C1, 0x000B0379, 0x0C24180F, 0x0C241ACF ) /* * 8820 2053325 */
+//RASTERIZER_ENTRY( 0x00602439, 0x00045119, 0x000000C1, 0x000B0779, 0x00000009, 0x0C24188F ) /* * 10346 2033427 */
+//RASTERIZER_ENTRY( 0x00602439, 0x00045119, 0x000000C1, 0x000B0779, 0x0C24188F, 0x0C241ACF ) /* * 2136 2017241 */
+//RASTERIZER_ENTRY( 0x00602439, 0x00044119, 0x00000000, 0x000B0379, 0x00000009, 0x0C24100F ) /* * 1505 1928490 */
+//RASTERIZER_ENTRY( 0x00602C19, 0x00045110, 0x000000C1, 0x000B0779, 0x0C24100F, 0x0C241ACF ) /* * 176734 1842440 */
+//RASTERIZER_ENTRY( 0x00602C19, 0x00045110, 0x000000C1, 0x000B0779, 0x0C24100F, 0x0C24180F ) /* * 262577 1799080 */
+//RASTERIZER_ENTRY( 0x00602C19, 0x00045119, 0x000000C1, 0x000B0779, 0x00000009, 0x0C24180F ) /* * 83179 1534171 */
+//RASTERIZER_ENTRY( 0x00602C19, 0x00045119, 0x000000C1, 0x000B0779, 0x00000009, 0x0C24188F ) /* * 3863 1527077 */
+//RASTERIZER_ENTRY( 0x00602C19, 0x00045119, 0x000000C1, 0x000B0379, 0x0C24180F, 0x0C24180F ) /* * 8021 1472661 */
+//RASTERIZER_ENTRY( 0x00602C19, 0x00045119, 0x000000C1, 0x000B0779, 0x0C241A0F, 0x0C241ACF ) /* * 85416 1342195 */
+//RASTERIZER_ENTRY( 0x00602C19, 0x00045119, 0x000000C1, 0x000B0779, 0x0C24180F, 0x0C24100F ) /* * 261360 1335048 */
+//RASTERIZER_ENTRY( 0x00602C19, 0x00000009, 0x000000C1, 0x000B0779, 0x0C2418CF, 0x0C24100F ) /* * 74811 1320900 */
+//RASTERIZER_ENTRY( 0x00602C19, 0x00045119, 0x000000C1, 0x000B0779, 0x0C24100F, 0x0C24100F ) /* * 239331 1268661 */
+//RASTERIZER_ENTRY( 0x00602439, 0x00045119, 0x000000C1, 0x000B0779, 0x0C24100F, 0x0C241ACF ) /* * 107769 1244175 */
+//RASTERIZER_ENTRY( 0x00602C19, 0x00045110, 0x000000C1, 0x000B0379, 0x0C24180F, 0x0C241ACF ) /* * 3706 1216182 */
+//RASTERIZER_ENTRY( 0x00602C19, 0x00045119, 0x000000C1, 0x000B0779, 0x0C24100F, 0x0C24188F ) /* * 49608 1206129 */
+//RASTERIZER_ENTRY( 0x00602C19, 0x00000009, 0x000000C1, 0x000B0779, 0x0C2418CF, 0x0C241ACF ) /* * 42440 1204109 */
+//RASTERIZER_ENTRY( 0x00482435, 0x00045110, 0x000000C1, 0x000B0779, 0x0C2410CF, 0x0C24100F ) /* * 29584 1168568 */
+//RASTERIZER_ENTRY( 0x00602439, 0x00045119, 0x000000C1, 0x000B0779, 0x0C24180F, 0x0C241ACF ) /* * 17729 1152869 */
+//RASTERIZER_ENTRY( 0x00602C19, 0x00045110, 0x000000C1, 0x000B0379, 0x0C24180F, 0x0C24100F ) /* * 4052 1108726 */
+//RASTERIZER_ENTRY( 0x00602C19, 0x00045119, 0x000000C1, 0x000B0779, 0x0C2418CF, 0x0C24100F ) /* * 7082 1079348 */
+//RASTERIZER_ENTRY( 0x00602439, 0x00044119, 0x00000000, 0x000B0379, 0x00000009, 0x0C24180F ) /* * 7761 1023855 */
+
+/* gradius4 ----> fbzColorPath alphaMode fogMode, fbzMode, texMode0, texMode1 */
+//RASTERIZER_ENTRY( 0x02420002, 0x00000009, 0x00000000, 0x00030F7B, 0x08241AC7, 0xFFFFFFFF ) /* intro */
+//RASTERIZER_ENTRY( 0x01420021, 0x00005119, 0x00000000, 0x00030F7B, 0x14261AC7, 0xFFFFFFFF ) /* intro */
+//RASTERIZER_ENTRY( 0x00000005, 0x00005119, 0x00000000, 0x00030F7B, 0x14261A87, 0xFFFFFFFF ) /* in-game */
+
+/* nbapbp ------> fbzColorPath alphaMode fogMode, fbzMode, texMode0, texMode1 */
+//RASTERIZER_ENTRY( 0x00424219, 0x00000000, 0x00000001, 0x00030B7B, 0x08241AC7, 0xFFFFFFFF ) /* intro */
+//RASTERIZER_ENTRY( 0x00002809, 0x00004110, 0x00000001, 0x00030FFB, 0x08241AC7, 0xFFFFFFFF ) /* in-game */
+//RASTERIZER_ENTRY( 0x00424219, 0x00000000, 0x00000001, 0x00030F7B, 0x08241AC7, 0xFFFFFFFF ) /* in-game */
+//RASTERIZER_ENTRY( 0x0200421A, 0x00001510, 0x00000001, 0x00030F7B, 0x08241AC7, 0xFFFFFFFF ) /* in-game */
+/* gtfore06 ----> fbzColorPath alphaMode fogMode, fbzMode, texMode0, texMode1 hash */
+RASTERIZER_ENTRY( 0x00482405, 0x00045119, 0x000000C1, 0x00010F79, 0x0C261ACD, 0x0C261ACD ) /* 18 1064626 69362127 */
+RASTERIZER_ENTRY( 0x00002425, 0x00045119, 0x000000C1, 0x00010F79, 0x0C224A0D, 0x0C261ACD ) /* 47 3272483 31242799 */
+RASTERIZER_ENTRY( 0x00482405, 0x00045119, 0x000000C1, 0x00010F79, 0x00000ACD, 0x0C261ACD ) /* 9 221917 12348555 */
+RASTERIZER_ENTRY( 0x00002425, 0x00045110, 0x000000C1, 0x00010FF9, 0x00000ACD, 0x0C261ACD ) /* 26 57291 9357989 */
+RASTERIZER_ENTRY( 0x00002429, 0x00000000, 0x000000C1, 0x00010FF9, 0x00000A09, 0x0C261A0F ) /* 12 97156 8530607 */
+RASTERIZER_ENTRY( 0x00482405, 0x00045119, 0x000000C1, 0x00010F79, 0x000000C4, 0x0C261ACD ) /* 55 110144 5265532 */
+RASTERIZER_ENTRY( 0x00002425, 0x00045110, 0x000000C1, 0x00010FF9, 0x000000C4, 0x0C261ACD ) /* 61 16644 1079382 */
+RASTERIZER_ENTRY( 0x00002425, 0x00045119, 0x000000C1, 0x00010FF9, 0x000000C4, 0x0C261ACD ) /* 5 8332 1065229 */
+RASTERIZER_ENTRY( 0x00002425, 0x00045119, 0x000000C1, 0x00010F79, 0x0C224A0D, 0x0C261A0D ) /* 45 8148 505013 */
+RASTERIZER_ENTRY( 0x00002425, 0x00045119, 0x00000000, 0x00010F79, 0x0C224A0D, 0x0C261A0D ) /* 84 45233 248267 */
+RASTERIZER_ENTRY( 0x00482405, 0x00045119, 0x000000C1, 0x00010F79, 0x0C261ACD, 0x0C2610C4 ) /* 90 10235 193036 */
+RASTERIZER_ENTRY( 0x00482405, 0x00045119, 0x000000C1, 0x00010FF9, 0x0C261ACD, 0x0C261ACD ) /* * 29 3777 83777 */
+RASTERIZER_ENTRY( 0x00482405, 0x00045119, 0x00000000, 0x00010FF9, 0x0C261ACD, 0x042210C0 ) /* 2 24952 66761 */
+RASTERIZER_ENTRY( 0x00002429, 0x00000000, 0x00000000, 0x00010FF9, 0x00000A09, 0x0C261A0F ) /* 24 661 50222 */
+RASTERIZER_ENTRY( 0x00482405, 0x00045119, 0x00000000, 0x00010FF9, 0x0C261ACD, 0x04221AC9 ) /* 92 12504 43720 */
+RASTERIZER_ENTRY( 0x00482405, 0x00045119, 0x000000C1, 0x00010FF9, 0x0C261ACD, 0x0C2610C4 ) /* 79 2160 43650 */
+RASTERIZER_ENTRY( 0x00482405, 0x00045119, 0x00000000, 0x00010FF9, 0x000000C4, 0x04221AC9 ) /* 19 2796 30377 */
+RASTERIZER_ENTRY( 0x00002425, 0x00045119, 0x000000C1, 0x00010FF9, 0x00000ACD, 0x0C261ACD ) /* 67 1962 14755 */
+RASTERIZER_ENTRY( 0x00482405, 0x00045119, 0x000000C1, 0x00010FF9, 0x000000C4, 0x0C261ACD ) /* * 66 74 3951 */
+RASTERIZER_ENTRY( 0x00482405, 0x00045119, 0x00000000, 0x00010FF9, 0x00000ACD, 0x04221AC9 ) /* 70 374 3691 */
+RASTERIZER_ENTRY( 0x00482405, 0x00045119, 0x000000C1, 0x00010FF9, 0x00000ACD, 0x0C261ACD ) /* * 20 350 7928 */
+/* virtpool ----> fbzColorPath alphaMode fogMode, fbzMode, texMode0, texMode1 hash */
+RASTERIZER_ENTRY( 0x00002421, 0x00000000, 0x00000000, 0x000B0739, 0x0C261A0F, 0x042210C0 ) /* * 78 2182388 74854175 */
+RASTERIZER_ENTRY( 0x00002421, 0x00000000, 0x00000000, 0x000B07F9, 0x0C261A0F, 0x042210C0 ) /* * 46 114830 6776826 */
+RASTERIZER_ENTRY( 0x00482405, 0x00045110, 0x00000000, 0x000B0739, 0x0C261A0F, 0x042210C0 ) /* * 58 1273673 4513463 */
+RASTERIZER_ENTRY( 0x00482405, 0x00045110, 0x00000000, 0x000B0739, 0x0C261A09, 0x042210C0 ) /* * 46 634995 2275612 */
+RASTERIZER_ENTRY( 0x00002421, 0x00000000, 0x00000000, 0x000B073B, 0x0C261A0F, 0x042210C0 ) /* * 46 26651 1883507 */
+RASTERIZER_ENTRY( 0x00482405, 0x00045110, 0x00000000, 0x000B073B, 0x0C261A0F, 0x042210C0 ) /* * 26 220644 751241 */
+//RASTERIZER_ENTRY( 0x00002421, 0x00445110, 0x00000000, 0x000B073B, 0x0C261A09, 0x042210C0 ) /* * 79 14846 3499120 */
+//RASTERIZER_ENTRY( 0x00002421, 0x00000000, 0x00000000, 0x000B0739, 0x0C261A09, 0x042210C0 ) /* * 66 26665 1583363 */
+//RASTERIZER_ENTRY( 0x00002421, 0x00000000, 0x00000000, 0x000B073B, 0x0C26100F, 0x042210C0 ) /* * 78 33096 957935 */
+//RASTERIZER_ENTRY( 0x00002425, 0x00445110, 0x00000000, 0x000B07F9, 0x0C261A0F, 0x042210C0 ) /* * 38 12494 678029 */
+//RASTERIZER_ENTRY( 0x00800000, 0x00000000, 0x00000000, 0x00000200, 0x00000000, 0x00000000 ) /* * 28 25348 316181 */
+//RASTERIZER_ENTRY( 0x00002421, 0x00000000, 0x00000000, 0x000B0739, 0x0C26100F, 0x042210C0 ) /* * 13 11344 267903 */
+//RASTERIZER_ENTRY( 0x00002421, 0x00000000, 0x00000000, 0x000B073B, 0x0C261A09, 0x042210C0 ) /* * 34 1548 112168 */
+//RASTERIZER_ENTRY( 0x00002421, 0x00000000, 0x00000000, 0x000B07FB, 0x0C26100F, 0x042210C0 ) /* * 35 664 25222 */
+//RASTERIZER_ENTRY( 0x00000002, 0x00000000, 0x00000000, 0x00000300, 0xFFFFFFFF, 0xFFFFFFFF ) /* * 33 512 18393 */
+//RASTERIZER_ENTRY( 0x00002421, 0x00000000, 0x00000000, 0x000B07FB, 0x0C261A0F, 0x042210C0 ) /* * 14 216 16842 */
+//RASTERIZER_ENTRY( 0x00000001, 0x00000000, 0x00000000, 0x00000300, 0x00000800, 0x00000800 ) /* * 87 2 72 */
+//RASTERIZER_ENTRY( 0x00000001, 0x00000000, 0x00000000, 0x00000200, 0x08241A00, 0x08241A00 ) /* * 92 2 8 */
+//RASTERIZER_ENTRY( 0x00000001, 0x00000000, 0x00000000, 0x00000200, 0x00000000, 0x08241A00 ) /* * 93 2 8 */
diff --git a/src/emu/bookkeeping.cpp b/src/emu/bookkeeping.cpp
index 753d9c8e270..b93493db9a4 100644
--- a/src/emu/bookkeeping.cpp
+++ b/src/emu/bookkeeping.cpp
@@ -22,9 +22,8 @@
bookkeeping_manager::bookkeeping_manager(running_machine &machine)
: m_machine(machine),
- m_dispensed_tickets(0)
+ m_dispensed_tickets(0)
{
-
/* reset coin counters */
for (int counternum = 0; counternum < COIN_COUNTERS; counternum++)
{
@@ -33,7 +32,7 @@ bookkeeping_manager::bookkeeping_manager(running_machine &machine)
m_coin_count[counternum] = 0;
}
- // register coin save state
+ // register coin save state
machine.save().save_item(NAME(m_coin_count));
machine.save().save_item(NAME(m_coinlockedout));
machine.save().save_item(NAME(m_lastcoin));
diff --git a/src/emu/bookkeeping.h b/src/emu/bookkeeping.h
index 26b5699c6ae..7285a40f058 100644
--- a/src/emu/bookkeeping.h
+++ b/src/emu/bookkeeping.h
@@ -44,14 +44,14 @@ public:
// increment the number of dispensed tickets
void increment_dispensed_tickets(int delta);
- // ----- coin counters -----
+ // ----- coin counters -----
// write to a particular coin counter (clocks on active high edge)
void coin_counter_w(int num, int on);
// return the coin count for a given coin
int coin_counter_get_count(int num);
- // enable/disable coin lockout for a particular coin
+ // enable/disable coin lockout for a particular coin
void coin_lockout_w(int num, int on);
// return current lockout state for a particular coin
diff --git a/src/emu/cheat.cpp b/src/emu/cheat.cpp
index 16291063985..c055ba5bdb2 100644
--- a/src/emu/cheat.cpp
+++ b/src/emu/cheat.cpp
@@ -1043,6 +1043,9 @@ cheat_manager::cheat_manager(running_machine &machine)
if (!machine.options().cheat())
return;
+ m_output.resize(UI_TARGET_FONT_ROWS*2);
+ m_justify.resize(UI_TARGET_FONT_ROWS*2);
+
// request a callback
machine.add_notifier(MACHINE_NOTIFY_FRAME, machine_notify_delegate(FUNC(cheat_manager::frame_update), this));
@@ -1209,7 +1212,7 @@ bool cheat_manager::save_all(const char *filename)
void cheat_manager::render_text(render_container &container)
{
// render any text and free it along the way
- for (int linenum = 0; linenum < ARRAY_LENGTH(m_output); linenum++)
+ for (int linenum = 0; linenum < m_output.size(); linenum++)
if (!m_output[linenum].empty())
{
// output the text
@@ -1337,7 +1340,7 @@ void cheat_manager::frame_update()
// set up for accumulating output
m_lastline = 0;
m_numlines = floor(1.0f / machine().ui().get_line_height());
- m_numlines = MIN(m_numlines, ARRAY_LENGTH(m_output));
+ m_numlines = MIN(m_numlines, m_output.size());
for (auto & elem : m_output)
elem.clear();
@@ -1358,7 +1361,14 @@ void cheat_manager::frame_update()
void cheat_manager::load_cheats(const char *filename)
{
xml_data_node *rootnode = nullptr;
- emu_file cheatfile(machine().options().cheat_path(), OPEN_FLAG_READ);
+ std::string searchstr(machine().options().cheat_path());
+ path_iterator path(searchstr.c_str());
+ std::string curpath;
+ while (path.next(curpath))
+ {
+ searchstr.append(";").append(curpath).append(PATH_SEPARATOR).append("cheat");
+ }
+ emu_file cheatfile(searchstr.c_str(), OPEN_FLAG_READ);
try
{
// open the file with the proper name
diff --git a/src/emu/cheat.h b/src/emu/cheat.h
index 8e49a8888bb..6badabd14d6 100644
--- a/src/emu/cheat.h
+++ b/src/emu/cheat.h
@@ -321,8 +321,8 @@ private:
running_machine & m_machine; // reference to our machine
simple_list<cheat_entry> m_cheatlist; // cheat list
UINT64 m_framecount; // frame count
- std::string m_output[UI_TARGET_FONT_ROWS * 2]; // array of output strings
- UINT8 m_justify[UI_TARGET_FONT_ROWS*2]; // justification for each string
+ std::vector<std::string> m_output; // array of output strings
+ std::vector<UINT8> m_justify; // justification for each string
UINT8 m_numlines; // number of lines available for output
INT8 m_lastline; // last line used for output
bool m_disabled; // true if the cheat engine is disabled
diff --git a/src/emu/clifront.cpp b/src/emu/clifront.cpp
index aa224126a60..a016d13a031 100644
--- a/src/emu/clifront.cpp
+++ b/src/emu/clifront.cpp
@@ -27,6 +27,8 @@
#include "osdepend.h"
#include "softlist.h"
+#include "ui/moptions.h"
+
#include <new>
#include <ctype.h>
@@ -148,7 +150,7 @@ int cli_frontend::execute(int argc, char **argv)
strprintf(val, "%s:%s:%s", swlistdev->list_name(), m_options.software_name(), swpart->name());
// call this in order to set slot devices according to mounting
- m_options.parse_slot_devices(argc, argv, option_errors, image->instance_name(), val.c_str());
+ m_options.parse_slot_devices(argc, argv, option_errors, image->instance_name(), val.c_str(), swpart);
break;
}
}
@@ -1595,7 +1597,8 @@ void cli_frontend::execute_commands(const char *exename)
if (strcmp(m_options.command(), CLICOMMAND_VALIDATE) == 0)
{
validity_checker valid(m_options);
- bool result = valid.check_all();
+ const char *sysname = m_options.system_name();
+ bool result = valid.check_all_matching((sysname[0] == 0) ? "*" : sysname);
if (!result)
throw emu_fatalerror(MAMERR_FAILED_VALIDITY, "Validity check failed (%d errors, %d warnings in total)\n", valid.errors(), valid.warnings());
return;
@@ -1617,6 +1620,14 @@ void cli_frontend::execute_commands(const char *exename)
// generate the updated INI
file.puts(m_options.output_ini().c_str());
+
+ ui_options ui_opts;
+ emu_file file_ui(OPEN_FLAG_WRITE | OPEN_FLAG_CREATE | OPEN_FLAG_CREATE_PATHS);
+ if (file_ui.open("ui.ini") != FILERR_NONE)
+ throw emu_fatalerror("Unable to create file ui.ini\n");
+
+ // generate the updated INI
+ file_ui.puts(ui_opts.output_ini().c_str());
return;
}
diff --git a/src/emu/config.h b/src/emu/config.h
index 6875fba899e..172f9f19daa 100644
--- a/src/emu/config.h
+++ b/src/emu/config.h
@@ -45,7 +45,7 @@ class configuration_manager
{
struct config_element
{
- std::string name; /* node name */
+ std::string name; /* node name */
config_saveload_delegate load; /* load callback */
config_saveload_delegate save; /* save callback */
};
diff --git a/src/emu/debug/debugcmd.cpp b/src/emu/debug/debugcmd.cpp
index 4558413b2c3..7ad039806ea 100644
--- a/src/emu/debug/debugcmd.cpp
+++ b/src/emu/debug/debugcmd.cpp
@@ -2381,11 +2381,12 @@ static void execute_find(running_machine &machine, int ref, int params, const ch
for (int i = 2; i < params; i++)
{
const char *pdata = param[i];
+ size_t pdatalen = strlen(pdata) - 1;
/* check for a string */
- if (pdata[0] == '"' && pdata[strlen(pdata) - 1] == '"')
+ if (pdata[0] == '"' && pdata[pdatalen] == '"')
{
- for (j = 1; j < strlen(pdata) - 1; j++)
+ for (j = 1; j < pdatalen; j++)
{
data_to_find[data_count] = pdata[j];
data_size[data_count++] = 1;
diff --git a/src/emu/debug/debugcpu.cpp b/src/emu/debug/debugcpu.cpp
index 82c175251fe..293657b1f45 100644
--- a/src/emu/debug/debugcpu.cpp
+++ b/src/emu/debug/debugcpu.cpp
@@ -486,7 +486,7 @@ UINT16 debug_read_word(address_space &space, offs_t address, int apply_translati
address &= space.logbytemask();
/* if this is misaligned read, or if there are no word readers, just read two bytes */
- if ((address & 1) != 0)
+ if (!WORD_ALIGNED(address))
{
UINT8 byte0 = debug_read_byte(space, address + 0, apply_translation);
UINT8 byte1 = debug_read_byte(space, address + 1, apply_translation);
@@ -540,7 +540,7 @@ UINT32 debug_read_dword(address_space &space, offs_t address, int apply_translat
address &= space.logbytemask();
/* if this is misaligned read, or if there are no dword readers, just read two words */
- if ((address & 3) != 0)
+ if (!DWORD_ALIGNED(address))
{
UINT16 word0 = debug_read_word(space, address + 0, apply_translation);
UINT16 word1 = debug_read_word(space, address + 2, apply_translation);
@@ -594,7 +594,7 @@ UINT64 debug_read_qword(address_space &space, offs_t address, int apply_translat
address &= space.logbytemask();
/* if this is misaligned read, or if there are no qword readers, just read two dwords */
- if ((address & 7) != 0)
+ if (!QWORD_ALIGNED(address))
{
UINT32 dword0 = debug_read_dword(space, address + 0, apply_translation);
UINT32 dword1 = debug_read_dword(space, address + 4, apply_translation);
@@ -699,7 +699,7 @@ void debug_write_word(address_space &space, offs_t address, UINT16 data, int app
address &= space.logbytemask();
/* if this is a misaligned write, or if there are no word writers, just read two bytes */
- if ((address & 1) != 0)
+ if (!WORD_ALIGNED(address))
{
if (space.endianness() == ENDIANNESS_LITTLE)
{
@@ -751,7 +751,7 @@ void debug_write_dword(address_space &space, offs_t address, UINT32 data, int ap
address &= space.logbytemask();
/* if this is a misaligned write, or if there are no dword writers, just read two words */
- if ((address & 3) != 0)
+ if (!DWORD_ALIGNED(address))
{
if (space.endianness() == ENDIANNESS_LITTLE)
{
@@ -803,7 +803,7 @@ void debug_write_qword(address_space &space, offs_t address, UINT64 data, int ap
address &= space.logbytemask();
/* if this is a misaligned write, or if there are no qword writers, just read two dwords */
- if ((address & 7) != 0)
+ if (!QWORD_ALIGNED(address))
{
if (space.endianness() == ENDIANNESS_LITTLE)
{
@@ -966,7 +966,7 @@ UINT64 debug_read_opcode(address_space &space, offs_t address, int size)
case 2:
result = space.direct().read_word(address & ~1, addrxor);
- if ((address & 1) != 0)
+ if (!WORD_ALIGNED(address))
{
result2 = space.direct().read_word((address & ~1) + 2, addrxor);
if (space.endianness() == ENDIANNESS_LITTLE)
@@ -979,7 +979,7 @@ UINT64 debug_read_opcode(address_space &space, offs_t address, int size)
case 4:
result = space.direct().read_dword(address & ~3, addrxor);
- if ((address & 3) != 0)
+ if (!DWORD_ALIGNED(address))
{
result2 = space.direct().read_dword((address & ~3) + 4, addrxor);
if (space.endianness() == ENDIANNESS_LITTLE)
@@ -992,7 +992,7 @@ UINT64 debug_read_opcode(address_space &space, offs_t address, int size)
case 8:
result = space.direct().read_qword(address & ~7, addrxor);
- if ((address & 7) != 0)
+ if (!QWORD_ALIGNED(address))
{
result2 = space.direct().read_qword((address & ~7) + 8, addrxor);
if (space.endianness() == ENDIANNESS_LITTLE)
diff --git a/src/emu/debug/debugvw.cpp b/src/emu/debug/debugvw.cpp
index eea867f3a63..641a31b41f0 100644
--- a/src/emu/debug/debugvw.cpp
+++ b/src/emu/debug/debugvw.cpp
@@ -33,13 +33,8 @@
debug_view_source::debug_view_source(const char *name, device_t *device)
: m_next(nullptr),
m_name(name),
- m_device(device),
- m_is_octal(false)
+ m_device(device)
{
- device_execute_interface *intf;
- if (device && device->interface(intf))
- m_is_octal = intf->is_octal();
-
}
@@ -331,7 +326,7 @@ debug_view_manager::~debug_view_manager()
{
debug_view *oldhead = m_viewlist;
m_viewlist = oldhead->m_next;
- auto_free(machine(), oldhead);
+ global_free(oldhead);
}
}
@@ -345,31 +340,31 @@ debug_view *debug_view_manager::alloc_view(debug_view_type type, debug_view_osd_
switch (type)
{
case DVT_CONSOLE:
- return append(auto_alloc(machine(), debug_view_console(machine(), osdupdate, osdprivate)));
+ return append(global_alloc(debug_view_console(machine(), osdupdate, osdprivate)));
case DVT_STATE:
- return append(auto_alloc(machine(), debug_view_state(machine(), osdupdate, osdprivate)));
+ return append(global_alloc(debug_view_state(machine(), osdupdate, osdprivate)));
case DVT_DISASSEMBLY:
- return append(auto_alloc(machine(), debug_view_disasm(machine(), osdupdate, osdprivate)));
+ return append(global_alloc(debug_view_disasm(machine(), osdupdate, osdprivate)));
case DVT_MEMORY:
- return append(auto_alloc(machine(), debug_view_memory(machine(), osdupdate, osdprivate)));
+ return append(global_alloc(debug_view_memory(machine(), osdupdate, osdprivate)));
case DVT_LOG:
- return append(auto_alloc(machine(), debug_view_log(machine(), osdupdate, osdprivate)));
+ return append(global_alloc(debug_view_log(machine(), osdupdate, osdprivate)));
case DVT_TIMERS:
-// return append(auto_alloc(machine(), debug_view_timers(machine(), osdupdate, osdprivate)));
+// return append(global_alloc(debug_view_timers(machine(), osdupdate, osdprivate)));
case DVT_ALLOCS:
-// return append(auto_alloc(machine(), debug_view_allocs(machine(), osdupdate, osdprivate)));
+// return append(global_alloc(debug_view_allocs(machine(), osdupdate, osdprivate)));
case DVT_BREAK_POINTS:
- return append(auto_alloc(machine(), debug_view_breakpoints(machine(), osdupdate, osdprivate)));
+ return append(global_alloc(debug_view_breakpoints(machine(), osdupdate, osdprivate)));
case DVT_WATCH_POINTS:
- return append(auto_alloc(machine(), debug_view_watchpoints(machine(), osdupdate, osdprivate)));
+ return append(global_alloc(debug_view_watchpoints(machine(), osdupdate, osdprivate)));
default:
fatalerror("Attempt to create invalid debug view type %d\n", type);
@@ -389,7 +384,7 @@ void debug_view_manager::free_view(debug_view &view)
if (*viewptr == &view)
{
*viewptr = view.m_next;
- auto_free(machine(), &view);
+ global_free(&view);
break;
}
}
diff --git a/src/emu/debug/debugvw.h b/src/emu/debug/debugvw.h
index 437e68d68f6..ab4c986172e 100644
--- a/src/emu/debug/debugvw.h
+++ b/src/emu/debug/debugvw.h
@@ -124,14 +124,12 @@ public:
const char *name() const { return m_name.c_str(); }
debug_view_source *next() const { return m_next; }
device_t *device() const { return m_device; }
- bool is_octal() const { return m_is_octal; }
private:
// internal state
debug_view_source * m_next; // link to next item
std::string m_name; // name of the source item
device_t * m_device; // associated device (if applicable)
- bool m_is_octal; // is view in octal or hex
};
diff --git a/src/emu/debug/dvdisasm.cpp b/src/emu/debug/dvdisasm.cpp
index e873b0be8bb..9b05345b6ff 100644
--- a/src/emu/debug/dvdisasm.cpp
+++ b/src/emu/debug/dvdisasm.cpp
@@ -100,7 +100,8 @@ void debug_view_disasm::enumerate_sources()
for (device_disasm_interface *dasm = iter.first(); dasm != nullptr; dasm = iter.next())
{
strprintf(name,"%s '%s'", dasm->device().name(), dasm->device().tag());
- m_source_list.append(*global_alloc(debug_view_disasm_source(name.c_str(), dasm->device())));
+ if (dasm->device().memory().space_config(AS_PROGRAM)!=nullptr)
+ m_source_list.append(*global_alloc(debug_view_disasm_source(name.c_str(), dasm->device())));
}
// reset the source to a known good entry
@@ -307,16 +308,16 @@ offs_t debug_view_disasm::find_pc_backwards(offs_t targetpc, int numinstrs)
void debug_view_disasm::generate_bytes(offs_t pcbyte, int numbytes, int minbytes, char *string, int maxchars, bool encrypted)
{
const debug_view_disasm_source &source = downcast<const debug_view_disasm_source &>(*m_source);
- int char_num = source.is_octal() ? 3 : 2;
+ int char_num = source.m_space.is_octal() ? 3 : 2;
// output the first value
int offset = 0;
if (maxchars >= char_num * minbytes)
- offset = sprintf(string, "%s", core_i64_format(debug_read_opcode(source.m_decrypted_space, pcbyte, minbytes), minbytes * char_num, source.is_octal()));
+ offset = sprintf(string, "%s", core_i64_format(debug_read_opcode(source.m_decrypted_space, pcbyte, minbytes), minbytes * char_num, source.m_space.is_octal()));
// output subsequent values
int byte;
for (byte = minbytes; byte < numbytes && offset + 1 + char_num * minbytes < maxchars; byte += minbytes)
- offset += sprintf(&string[offset], " %s", core_i64_format(debug_read_opcode(encrypted ? source.m_space : source.m_decrypted_space, pcbyte + byte, minbytes), minbytes * char_num, source.is_octal()));
+ offset += sprintf(&string[offset], " %s", core_i64_format(debug_read_opcode(encrypted ? source.m_space : source.m_decrypted_space, pcbyte + byte, minbytes), minbytes * char_num, source.m_space.is_octal()));
// if we ran out of room, indicate more
string[maxchars - 1] = 0;
@@ -334,7 +335,7 @@ bool debug_view_disasm::recompute(offs_t pc, int startline, int lines)
{
bool changed = false;
const debug_view_disasm_source &source = downcast<const debug_view_disasm_source &>(*m_source);
- int char_num = source.is_octal() ? 3 : 2;
+ int char_num = source.m_space.is_octal() ? 3 : 2;
// determine how many characters we need for an address and set the divider
m_divider1 = 1 + (source.m_space.logaddrchars()/2*char_num) + 1;
@@ -382,7 +383,7 @@ bool debug_view_disasm::recompute(offs_t pc, int startline, int lines)
// convert back and set the address of this instruction
m_byteaddress[instr] = pcbyte;
- sprintf(&destbuf[0], " %s ", core_i64_format(source.m_space.byte_to_address(pcbyte), source.m_space.logaddrchars()/2*char_num, source.is_octal()));
+ sprintf(&destbuf[0], " %s ", core_i64_format(source.m_space.byte_to_address(pcbyte), source.m_space.logaddrchars()/2*char_num, source.m_space.is_octal()));
// make sure we can translate the address, and then disassemble the result
char buffer[100];
diff --git a/src/emu/debug/dvstate.cpp b/src/emu/debug/dvstate.cpp
index 578b423725d..d0d741ed21e 100644
--- a/src/emu/debug/dvstate.cpp
+++ b/src/emu/debug/dvstate.cpp
@@ -98,7 +98,7 @@ void debug_view_state::reset()
{
state_item *oldhead = m_state_list;
m_state_list = oldhead->m_next;
- auto_free(machine(), oldhead);
+ global_free(oldhead);
}
}
@@ -117,39 +117,39 @@ void debug_view_state::recompute()
// add a cycles entry: cycles:99999999
state_item **tailptr = &m_state_list;
- *tailptr = auto_alloc(machine(), state_item(REG_CYCLES, "cycles", 8));
+ *tailptr = global_alloc(state_item(REG_CYCLES, "cycles", 8));
tailptr = &(*tailptr)->m_next;
// add a beam entry: beamx:1234
- *tailptr = auto_alloc(machine(), state_item(REG_BEAMX, "beamx", 4));
+ *tailptr = global_alloc(state_item(REG_BEAMX, "beamx", 4));
tailptr = &(*tailptr)->m_next;
// add a beam entry: beamy:5678
- *tailptr = auto_alloc(machine(), state_item(REG_BEAMY, "beamy", 4));
+ *tailptr = global_alloc(state_item(REG_BEAMY, "beamy", 4));
tailptr = &(*tailptr)->m_next;
// add a beam entry: frame:123456
- *tailptr = auto_alloc(machine(), state_item(REG_FRAME, "frame", 6));
+ *tailptr = global_alloc(state_item(REG_FRAME, "frame", 6));
tailptr = &(*tailptr)->m_next;
// add a flags entry: flags:xxxxxxxx
- *tailptr = auto_alloc(machine(), state_item(STATE_GENFLAGS, "flags", source.m_stateintf->state_string_max_length(STATE_GENFLAGS)));
+ *tailptr = global_alloc(state_item(STATE_GENFLAGS, "flags", source.m_stateintf->state_string_max_length(STATE_GENFLAGS)));
tailptr = &(*tailptr)->m_next;
// add a divider entry
- *tailptr = auto_alloc(machine(), state_item(REG_DIVIDER, "", 0));
+ *tailptr = global_alloc(state_item(REG_DIVIDER, "", 0));
tailptr = &(*tailptr)->m_next;
// add all registers into it
for (const device_state_entry *entry = source.m_stateintf->state_first(); entry != nullptr; entry = entry->next())
if (entry->divider())
{
- *tailptr = auto_alloc(machine(), state_item(REG_DIVIDER, "", 0));
+ *tailptr = global_alloc(state_item(REG_DIVIDER, "", 0));
tailptr = &(*tailptr)->m_next;
}
else if (entry->visible())
{
- *tailptr = auto_alloc(machine(), state_item(entry->index(), entry->symbol(), source.m_stateintf->state_string_max_length(entry->index())));
+ *tailptr = global_alloc(state_item(entry->index(), entry->symbol(), source.m_stateintf->state_string_max_length(entry->index())));
tailptr = &(*tailptr)->m_next;
}
diff --git a/src/emu/debug/textbuf.cpp b/src/emu/debug/textbuf.cpp
index e7daf96571a..476fe6e1efc 100644
--- a/src/emu/debug/textbuf.cpp
+++ b/src/emu/debug/textbuf.cpp
@@ -86,12 +86,12 @@ text_buffer *text_buffer_alloc(UINT32 bytes, UINT32 lines)
text_buffer *text;
/* allocate memory for the text buffer object */
- text = (text_buffer *)global_alloc(text_buffer);
+ text = global_alloc_nothrow(text_buffer);
if (!text)
return nullptr;
/* allocate memory for the buffer itself */
- text->buffer = (char *)global_alloc_array(char, bytes);
+ text->buffer = global_alloc_array_nothrow(char, bytes);
if (!text->buffer)
{
global_free(text);
@@ -99,7 +99,7 @@ text_buffer *text_buffer_alloc(UINT32 bytes, UINT32 lines)
}
/* allocate memory for the lines array */
- text->lineoffs = (INT32 *)global_alloc_array(INT32, lines);
+ text->lineoffs = global_alloc_array_nothrow(INT32, lines);
if (!text->lineoffs)
{
global_free_array(text->buffer);
diff --git a/src/emu/devfind.h b/src/emu/devfind.h
index ede407a725f..00e859437ba 100644
--- a/src/emu/devfind.h
+++ b/src/emu/devfind.h
@@ -83,8 +83,9 @@ public:
virtual _ObjectClass *operator->() const { assert(m_target != nullptr); return m_target; }
- // getter for explicit fetching
+ // getters for explicit fetching
_ObjectClass *target() const { return m_target; }
+ bool found() const { return m_target != nullptr; }
// setter for setting the object
void set_target(_ObjectClass *target) { m_target = target; }
diff --git a/src/emu/device.cpp b/src/emu/device.cpp
index 8400d87ddbd..7af78e6a3f5 100644
--- a/src/emu/device.cpp
+++ b/src/emu/device.cpp
@@ -84,10 +84,6 @@ device_t::~device_t()
memory_region *device_t::memregion(const char *_tag) const
{
- // safety first
- if (this == nullptr)
- return nullptr;
-
// build a fully-qualified name and look it up
return machine().memory().region(subtag(_tag).c_str());
}
@@ -100,10 +96,6 @@ memory_region *device_t::memregion(const char *_tag) const
memory_share *device_t::memshare(const char *_tag) const
{
- // safety first
- if (this == nullptr)
- return nullptr;
-
// build a fully-qualified name and look it up
return machine().memory().shared(subtag(_tag).c_str());
}
@@ -116,10 +108,6 @@ memory_share *device_t::memshare(const char *_tag) const
memory_bank *device_t::membank(const char *_tag) const
{
- // safety first
- if (this == nullptr)
- return nullptr;
-
// build a fully-qualified name and look it up
return machine().memory().bank(subtag(_tag).c_str());
}
@@ -132,10 +120,6 @@ memory_bank *device_t::membank(const char *_tag) const
ioport_port *device_t::ioport(const char *tag) const
{
- // safety first
- if (this == nullptr)
- return nullptr;
-
// build a fully-qualified name and look it up
return machine().ioport().port(subtag(tag).c_str());
}
@@ -148,10 +132,6 @@ ioport_port *device_t::ioport(const char *tag) const
std::string device_t::parameter(const char *tag) const
{
- // safety first
- if (this == nullptr)
- return nullptr;
-
// build a fully-qualified name and look it up
return machine().parameters().lookup(subtag(tag));
}
diff --git a/src/emu/device.h b/src/emu/device.h
index d6e0311af66..2b807d58d94 100644
--- a/src/emu/device.h
+++ b/src/emu/device.h
@@ -151,7 +151,7 @@ public:
// owned object helpers
device_t *first_subdevice() const { return m_subdevice_list.first(); }
std::string subtag(const char *tag) const;
- std::string siblingtag(const char *tag) const { return (this != nullptr && m_owner != nullptr) ? m_owner->subtag(tag) : std::string(tag); }
+ std::string siblingtag(const char *tag) const { return (m_owner != nullptr) ? m_owner->subtag(tag) : std::string(tag); }
memory_region *memregion(const char *tag) const;
memory_share *memshare(const char *tag) const;
memory_bank *membank(const char *tag) const;
@@ -589,10 +589,6 @@ private:
inline device_t *device_t::subdevice(const char *tag) const
{
- // safety first
- if (this == nullptr)
- return nullptr;
-
// empty string or NULL means this device
if (tag == nullptr || *tag == 0)
return const_cast<device_t *>(this);
@@ -610,10 +606,6 @@ inline device_t *device_t::subdevice(const char *tag) const
inline device_t *device_t::siblingdevice(const char *tag) const
{
- // safety first
- if (this == nullptr)
- return nullptr;
-
// empty string or NULL means this device
if (tag == nullptr || *tag == 0)
return const_cast<device_t *>(this);
diff --git a/src/emu/diexec.cpp b/src/emu/diexec.cpp
index 7b4b530f75b..ac72ce768d7 100644
--- a/src/emu/diexec.cpp
+++ b/src/emu/diexec.cpp
@@ -46,7 +46,6 @@ device_execute_interface::device_execute_interface(const machine_config &mconfig
m_disabled(false),
m_vblank_interrupt_screen(nullptr),
m_timed_interrupt_period(attotime::zero),
- m_is_octal(false),
m_nextexec(nullptr),
m_timedint_timer(nullptr),
m_profiler(PROFILER_IDLE),
diff --git a/src/emu/diexec.h b/src/emu/diexec.h
index 7f9eb41bfcf..3a5cc0405f9 100644
--- a/src/emu/diexec.h
+++ b/src/emu/diexec.h
@@ -146,7 +146,6 @@ public:
UINT64 attotime_to_cycles(const attotime &duration) const { return clocks_to_cycles(device().attotime_to_clocks(duration)); }
UINT32 input_lines() const { return execute_input_lines(); }
UINT32 default_irq_vector() const { return execute_default_irq_vector(); }
- bool is_octal() const { return m_is_octal; }
// static inline configuration helpers
static void static_set_disable(device_t &device);
@@ -260,7 +259,6 @@ protected:
const char * m_vblank_interrupt_screen; // the screen that causes the VBLANK interrupt
device_interrupt_delegate m_timed_interrupt; // for interrupts not tied to VBLANK
attotime m_timed_interrupt_period; // period for periodic interrupts
- bool m_is_octal; // to determine if messages/debugger will show octal or hex
// execution lists
device_execute_interface *m_nextexec; // pointer to the next device to execute, in order
diff --git a/src/emu/digfx.cpp b/src/emu/digfx.cpp
index bed430e64f0..d3763c9d82e 100644
--- a/src/emu/digfx.cpp
+++ b/src/emu/digfx.cpp
@@ -276,7 +276,7 @@ void device_gfx_interface::decode_gfx(const gfx_decode_entry *gfxdecodeinfo)
}
// allocate the graphics
- m_gfx[curgfx] = std::make_unique<gfx_element>(m_palette, glcopy, (region_base != nullptr) ? region_base + gfx.start : nullptr, xormask, gfx.total_color_codes, gfx.color_codes_start);
+ m_gfx[curgfx] = std::make_unique<gfx_element>(*m_palette, glcopy, (region_base != nullptr) ? region_base + gfx.start : nullptr, xormask, gfx.total_color_codes, gfx.color_codes_start);
}
m_decoded = true;
diff --git a/src/emu/digfx.h b/src/emu/digfx.h
index 373bff7ba71..ec13147e966 100644
--- a/src/emu/digfx.h
+++ b/src/emu/digfx.h
@@ -199,7 +199,7 @@ public:
static void static_set_palette(device_t &device, const char *tag);
// getters
- palette_device *palette() const { return m_palette; }
+ palette_device &palette() const { return *m_palette; }
gfx_element *gfx(int index) const { assert(index < MAX_GFX_ELEMENTS); return m_gfx[index].get(); }
// decoding
@@ -214,10 +214,10 @@ protected:
virtual void interface_pre_start() override;
virtual void interface_post_start() override;
+private:
palette_device * m_palette; // pointer to the palette device
std::unique_ptr<gfx_element> m_gfx[MAX_GFX_ELEMENTS]; // array of pointers to graphic sets
-private:
// configuration
const gfx_decode_entry * m_gfxdecodeinfo; // pointer to array of gfx decode information
const char * m_palette_tag; // configured tag for palette device
diff --git a/src/emu/diimage.cpp b/src/emu/diimage.cpp
index ed02e18a442..6cc9b0fb41a 100644
--- a/src/emu/diimage.cpp
+++ b/src/emu/diimage.cpp
@@ -161,29 +161,27 @@ image_error_t device_image_interface::set_image_filename(const char *filename)
zippath_parent(m_working_directory, filename);
m_basename.assign(m_image_name);
- int loc1 = m_image_name.find_last_of('\\');
- int loc2 = m_image_name.find_last_of('/');
- int loc3 = m_image_name.find_last_of(':');
- int loc = MAX(loc1,MAX(loc2,loc3));
- if (loc!=-1) {
+ size_t loc1 = m_image_name.find_last_of('\\');
+ size_t loc2 = m_image_name.find_last_of('/');
+ size_t loc3 = m_image_name.find_last_of(':');
+ size_t loc = MAX(loc1,MAX(loc2, loc3));
+ if (loc != -1) {
if (loc == loc3)
{
// temp workaround for softlists now that m_image_name contains the part name too (e.g. list:gamename:cart)
m_basename = m_basename.substr(0, loc);
- std::string tmpstr = std::string(m_basename);
- int tmploc = tmpstr.find_last_of(':');
- m_basename = m_basename.substr(tmploc + 1,loc-tmploc);
+ size_t tmploc = m_basename.find_last_of(':');
+ m_basename = m_basename.substr(tmploc + 1, loc - tmploc);
}
else
- m_basename = m_basename.substr(loc + 1, m_basename.length() - loc);
+ m_basename = m_basename.substr(loc + 1);
}
- m_basename_noext = m_basename.assign(m_basename);
+ m_basename_noext = m_basename;
m_filetype = "";
loc = m_basename_noext.find_last_of('.');
- if (loc!=-1) {
- m_basename_noext = m_basename_noext.substr(0,loc);
- m_filetype = m_basename.assign(m_basename);
- m_filetype = m_filetype.substr(loc + 1, m_filetype.length() - loc);
+ if (loc != -1) {
+ m_basename_noext = m_basename_noext.substr(0, loc);
+ m_filetype = m_basename.substr(loc + 1);
}
return IMAGE_ERROR_SUCCESS;
@@ -379,7 +377,8 @@ UINT8 *device_image_interface::get_software_region(const char *tag)
return nullptr;
sprintf( full_tag, "%s:%s", device().tag(), tag );
- return device().machine().root_device().memregion( full_tag )->base();
+ memory_region *region = device().machine().root_device().memregion(full_tag);
+ return region != NULL ? region->base() : NULL;
}
@@ -392,7 +391,9 @@ UINT32 device_image_interface::get_software_region_length(const char *tag)
char full_tag[256];
sprintf( full_tag, "%s:%s", device().tag(), tag );
- return device().machine().root_device().memregion( full_tag )->bytes();
+
+ memory_region *region = device().machine().root_device().memregion(full_tag);
+ return region != NULL ? region->bytes() : 0;
}
@@ -1378,7 +1379,7 @@ std::string device_image_interface::software_get_default_slot(const char *defaul
ui_menu *device_image_interface::get_selection_menu(running_machine &machine, render_container *container)
{
- return auto_alloc_clear(machine, <ui_menu_control_device_image>(machine, container, this));
+ return global_alloc_clear<ui_menu_control_device_image>(machine, container, this);
}
/* ----------------------------------------------------------------------- */
@@ -1417,4 +1418,3 @@ struct io_procs image_ioprocs =
image_fwrite_thunk,
image_fsize_thunk
};
-
diff --git a/src/emu/dimemory.cpp b/src/emu/dimemory.cpp
index b245d51a0b9..dbe3647ec01 100644
--- a/src/emu/dimemory.cpp
+++ b/src/emu/dimemory.cpp
@@ -36,6 +36,7 @@ address_space_config::address_space_config()
m_addrbus_shift(0),
m_logaddr_width(0),
m_page_shift(0),
+ m_is_octal(false),
m_internal_map(nullptr),
m_default_map(nullptr)
{
@@ -58,6 +59,7 @@ address_space_config::address_space_config(const char *name, endianness_t endian
m_addrbus_shift(addrshift),
m_logaddr_width(addrwidth),
m_page_shift(0),
+ m_is_octal(false),
m_internal_map(internal),
m_default_map(defmap)
{
@@ -71,6 +73,7 @@ address_space_config::address_space_config(const char *name, endianness_t endian
m_addrbus_shift(addrshift),
m_logaddr_width(logwidth),
m_page_shift(pageshift),
+ m_is_octal(false),
m_internal_map(internal),
m_default_map(defmap)
{
@@ -84,6 +87,7 @@ address_space_config::address_space_config(const char *name, endianness_t endian
m_addrbus_shift(addrshift),
m_logaddr_width(addrwidth),
m_page_shift(0),
+ m_is_octal(false),
m_internal_map(nullptr),
m_default_map(nullptr),
m_internal_map_delegate(std::move(internal)),
@@ -99,6 +103,7 @@ address_space_config::address_space_config(const char *name, endianness_t endian
m_addrbus_shift(addrshift),
m_logaddr_width(logwidth),
m_page_shift(pageshift),
+ m_is_octal(false),
m_internal_map(nullptr),
m_default_map(nullptr),
m_internal_map_delegate(std::move(internal)),
diff --git a/src/emu/dimemory.h b/src/emu/dimemory.h
index 66561b5a5cf..0998fd4ae9a 100644
--- a/src/emu/dimemory.h
+++ b/src/emu/dimemory.h
@@ -131,22 +131,4 @@ typedef device_interface_iterator<device_memory_interface> memory_interface_iter
-//**************************************************************************
-// INLINE HELPERS
-//**************************************************************************
-
-//-------------------------------------------------
-// device_get_space_config - return a pointer
-// to sthe given address space's configuration
-//-------------------------------------------------
-
-inline const address_space_config *device_get_space_config(const device_t &device, address_spacenum spacenum = AS_0)
-{
- const device_memory_interface *intf;
- if (!device.interface(intf))
- throw emu_fatalerror("Device '%s' does not have memory interface", device.tag());
- return intf->space_config(spacenum);
-}
-
-
#endif /* __DIMEMORY_H__ */
diff --git a/src/emu/disound.cpp b/src/emu/disound.cpp
index c1f4e49f4b6..7134b588963 100644
--- a/src/emu/disound.cpp
+++ b/src/emu/disound.cpp
@@ -443,7 +443,10 @@ void device_mixer_interface::interface_pre_start()
void device_mixer_interface::interface_post_load()
{
- m_mixer_stream->set_sample_rate(device().machine().sample_rate());
+ // Beware that there's not going to be a mixer stream if there was
+ // no inputs
+ if (m_mixer_stream)
+ m_mixer_stream->set_sample_rate(device().machine().sample_rate());
// call our parent
device_sound_interface::interface_post_load();
diff --git a/src/emu/divtlb.cpp b/src/emu/divtlb.cpp
new file mode 100644
index 00000000000..01be30919cb
--- /dev/null
+++ b/src/emu/divtlb.cpp
@@ -0,0 +1,341 @@
+// license:BSD-3-Clause
+// copyright-holders:Aaron Giles
+/***************************************************************************
+
+ divtlb.c
+
+ Device generic virtual TLB interface.
+
+***************************************************************************/
+
+#include "emu.h"
+#include "divtlb.h"
+#include "validity.h"
+
+
+
+//**************************************************************************
+// DEBUGGING
+//**************************************************************************
+
+#define PRINTF_TLB (0)
+
+
+
+//**************************************************************************
+// DEVICE VTLB INTERFACE
+//**************************************************************************
+
+//-------------------------------------------------
+// device_vtlb_interface - constructor
+//-------------------------------------------------
+
+device_vtlb_interface::device_vtlb_interface(const machine_config &mconfig, device_t &device, address_spacenum space)
+ : device_interface(device, "vtlb"),
+ m_space(space),
+ m_dynamic(0),
+ m_fixed(0),
+ m_dynindex(0),
+ m_pageshift(0),
+ m_addrwidth(0)
+{
+}
+
+
+//-------------------------------------------------
+// device_vtlb_interface - destructor
+//-------------------------------------------------
+
+device_vtlb_interface::~device_vtlb_interface()
+{
+}
+
+
+//-------------------------------------------------
+// interface_validity_check - validation for a
+// device after the configuration has been
+// constructed
+//-------------------------------------------------
+
+void device_vtlb_interface::interface_validity_check(validity_checker &valid) const
+{
+ const device_memory_interface *intf;
+ if (!device().interface(intf))
+ osd_printf_error("Device does not have memory interface\n");
+ else
+ {
+ // validate CPU information
+ const address_space_config *spaceconfig = intf->space_config(m_space);
+ if (spaceconfig == nullptr)
+ osd_printf_error("No memory address space configuration found for space %d\n", m_space);
+ else if ((1 << spaceconfig->m_page_shift) <= VTLB_FLAGS_MASK || spaceconfig->m_logaddr_width <= spaceconfig->m_page_shift)
+ osd_printf_error("Invalid page shift %d for VTLB\n", spaceconfig->m_page_shift);
+ }
+}
+
+
+//-------------------------------------------------
+// interface_pre_start - work to be done prior to
+// actually starting a device
+//-------------------------------------------------
+
+void device_vtlb_interface::interface_pre_start()
+{
+ // fill in CPU information
+ const address_space_config *spaceconfig = device().memory().space_config(m_space);
+ m_pageshift = spaceconfig->m_page_shift;
+ m_addrwidth = spaceconfig->m_logaddr_width;
+
+ // allocate the entry array
+ m_live.resize(m_fixed + m_dynamic);
+ memset(&m_live[0], 0, m_live.size()*sizeof(m_live[0]));
+
+ // allocate the lookup table
+ m_table.resize((size_t) 1 << (m_addrwidth - m_pageshift));
+ memset(&m_table[0], 0, m_table.size()*sizeof(m_table[0]));
+
+ // allocate the fixed page count array
+ if (m_fixed > 0)
+ {
+ m_fixedpages.resize(m_fixed);
+ memset(&m_fixedpages[0], 0, m_fixed*sizeof(m_fixedpages[0]));
+ }
+}
+
+
+//-------------------------------------------------
+// interface_post_start - work to be done after
+// actually starting a device
+//-------------------------------------------------
+
+void device_vtlb_interface::interface_post_start()
+{
+ device().save_item(NAME(m_live));
+ device().save_item(NAME(m_table));
+ if (m_fixed > 0)
+ device().save_item(NAME(m_fixedpages));
+}
+
+
+//-------------------------------------------------
+// interface_pre_reset - work to be done prior to
+// actually resetting a device
+//-------------------------------------------------
+
+void device_vtlb_interface::interface_pre_reset()
+{
+ vtlb_flush_dynamic();
+}
+
+
+//**************************************************************************
+// FILLING
+//**************************************************************************
+
+//-------------------------------------------------
+// vtlb_fill - called by the CPU core in
+// response to an unmapped access
+//-------------------------------------------------
+
+int device_vtlb_interface::vtlb_fill(offs_t address, int intention)
+{
+ offs_t tableindex = address >> m_pageshift;
+ vtlb_entry entry = m_table[tableindex];
+ offs_t taddress;
+
+#if PRINTF_TLB
+ osd_printf_debug("vtlb_fill: %08X(%X) ... ", address, intention);
+#endif
+
+ // should not be called here if the entry is in the table already
+// assert((entry & (1 << intention)) == 0);
+
+ // if we have no dynamic entries, we always fail
+ if (m_dynamic == 0)
+ {
+#if PRINTF_TLB
+ osd_printf_debug("failed: no dynamic entries\n");
+#endif
+ return FALSE;
+ }
+
+ // ask the CPU core to translate for us
+ taddress = address;
+ if (!device().memory().translate(m_space, intention, taddress))
+ {
+#if PRINTF_TLB
+ osd_printf_debug("failed: no translation\n");
+#endif
+ return FALSE;
+ }
+
+ // if this is the first successful translation for this address, allocate a new entry
+ if ((entry & VTLB_FLAGS_MASK) == 0)
+ {
+ int liveindex = m_dynindex++ % m_dynamic;
+
+ // if an entry already exists at this index, free it
+ if (m_live[liveindex] != 0)
+ m_table[m_live[liveindex] - 1] = 0;
+
+ // claim this new entry
+ m_live[liveindex] = tableindex + 1;
+
+ // form a new blank entry
+ entry = (taddress >> m_pageshift) << m_pageshift;
+ entry |= VTLB_FLAG_VALID;
+
+#if PRINTF_TLB
+ osd_printf_debug("success (%08X), new entry\n", taddress);
+#endif
+ }
+
+ // otherwise, ensure that different intentions do not produce different addresses
+ else
+ {
+ assert((entry >> m_pageshift) == (taddress >> m_pageshift));
+ assert(entry & VTLB_FLAG_VALID);
+
+#if PRINTF_TLB
+ osd_printf_debug("success (%08X), existing entry\n", taddress);
+#endif
+ }
+
+ // add the intention to the list of valid intentions and store
+ entry |= 1 << (intention & (TRANSLATE_TYPE_MASK | TRANSLATE_USER_MASK));
+ m_table[tableindex] = entry;
+ return TRUE;
+}
+
+
+//-------------------------------------------------
+// vtlb_load - load a fixed VTLB entry
+//-------------------------------------------------
+
+void device_vtlb_interface::vtlb_load(int entrynum, int numpages, offs_t address, vtlb_entry value)
+{
+ offs_t tableindex = address >> m_pageshift;
+ int liveindex = m_dynamic + entrynum;
+ int pagenum;
+
+ // must be in range
+ assert(entrynum >= 0 && entrynum < m_fixed);
+
+#if PRINTF_TLB
+ osd_printf_debug("vtlb_load %d for %d pages at %08X == %08X\n", entrynum, numpages, address, value);
+#endif
+
+ // if an entry already exists at this index, free it
+ if (m_live[liveindex] != 0)
+ {
+ int pagecount = m_fixedpages[entrynum];
+ int oldtableindex = m_live[liveindex] - 1;
+ for (pagenum = 0; pagenum < pagecount; pagenum++)
+ m_table[oldtableindex + pagenum] = 0;
+ }
+
+ // claim this new entry
+ m_live[liveindex] = tableindex + 1;
+
+ // store the raw value, making sure the "fixed" flag is set
+ value |= VTLB_FLAG_FIXED;
+ m_fixedpages[entrynum] = numpages;
+ for (pagenum = 0; pagenum < numpages; pagenum++)
+ m_table[tableindex + pagenum] = value + (pagenum << m_pageshift);
+}
+
+//-------------------------------------------------
+// vtlb_dynload - load a dynamic VTLB entry
+//-------------------------------------------------
+
+void device_vtlb_interface::vtlb_dynload(UINT32 index, offs_t address, vtlb_entry value)
+{
+ vtlb_entry entry = m_table[index];
+
+ if (m_dynamic == 0)
+ {
+#if PRINTF_TLB
+ osd_printf_debug("failed: no dynamic entries\n");
+#endif
+ return;
+ }
+
+ int liveindex = m_dynindex++ % m_dynamic;
+ // is entry already live?
+ if (!(entry & VTLB_FLAG_VALID))
+ {
+ // if an entry already exists at this index, free it
+ if (m_live[liveindex] != 0)
+ m_table[m_live[liveindex] - 1] = 0;
+
+ // claim this new entry
+ m_live[liveindex] = index + 1;
+ }
+ // form a new blank entry
+ entry = (address >> m_pageshift) << m_pageshift;
+ entry |= VTLB_FLAG_VALID | value;
+
+#if PRINTF_TLB
+ osd_printf_debug("success (%08X), new entry\n", address);
+#endif
+ m_table[index] = entry;
+}
+
+//**************************************************************************
+// FLUSHING
+//**************************************************************************
+
+//-------------------------------------------------
+// vtlb_flush_dynamic - flush all knowledge
+// from the dynamic part of the VTLB
+//-------------------------------------------------
+
+void device_vtlb_interface::vtlb_flush_dynamic()
+{
+#if PRINTF_TLB
+ osd_printf_debug("vtlb_flush_dynamic\n");
+#endif
+
+ // loop over live entries and release them from the table
+ for (int liveindex = 0; liveindex < m_dynamic; liveindex++)
+ if (m_live[liveindex] != 0)
+ {
+ offs_t tableindex = m_live[liveindex] - 1;
+ m_table[tableindex] = 0;
+ m_live[liveindex] = 0;
+ }
+}
+
+
+//-------------------------------------------------
+// vtlb_flush_address - flush knowledge of a
+// particular address from the VTLB
+//-------------------------------------------------
+
+void device_vtlb_interface::vtlb_flush_address(offs_t address)
+{
+ offs_t tableindex = address >> m_pageshift;
+
+#if PRINTF_TLB
+ osd_printf_debug("vtlb_flush_address %08X\n", address);
+#endif
+
+ // free the entry in the table; for speed, we leave the entry in the live array
+ m_table[tableindex] = 0;
+}
+
+
+
+//**************************************************************************
+// ACCESSORS
+//**************************************************************************
+
+//-------------------------------------------------
+// vtlb_table - return a pointer to the base of
+// the linear VTLB lookup table
+//-------------------------------------------------
+
+const vtlb_entry *device_vtlb_interface::vtlb_table() const
+{
+ return &m_table[0];
+}
diff --git a/src/emu/divtlb.h b/src/emu/divtlb.h
new file mode 100644
index 00000000000..eccd2947da3
--- /dev/null
+++ b/src/emu/divtlb.h
@@ -0,0 +1,89 @@
+// license:BSD-3-Clause
+// copyright-holders:Aaron Giles
+/***************************************************************************
+
+ divtlb.h
+
+ Generic virtual TLB implementation.
+
+***************************************************************************/
+
+#pragma once
+
+#ifndef __DIVTLB_H__
+#define __DIVTLB_H__
+
+
+
+/***************************************************************************
+ CONSTANTS
+***************************************************************************/
+
+#define VTLB_FLAGS_MASK 0xff
+
+#define VTLB_READ_ALLOWED 0x01 /* (1 << TRANSLATE_READ) */
+#define VTLB_WRITE_ALLOWED 0x02 /* (1 << TRANSLATE_WRITE) */
+#define VTLB_FETCH_ALLOWED 0x04 /* (1 << TRANSLATE_FETCH) */
+#define VTLB_FLAG_VALID 0x08
+#define VTLB_USER_READ_ALLOWED 0x10 /* (1 << TRANSLATE_READ_USER) */
+#define VTLB_USER_WRITE_ALLOWED 0x20 /* (1 << TRANSLATE_WRITE_USER) */
+#define VTLB_USER_FETCH_ALLOWED 0x40 /* (1 << TRANSLATE_FETCH_USER) */
+#define VTLB_FLAG_FIXED 0x80
+
+
+
+/***************************************************************************
+ TYPE DEFINITIONS
+***************************************************************************/
+
+/* represents an entry in the VTLB */
+typedef UINT32 vtlb_entry;
+
+
+// ======================> device_vtlb_interface
+
+class device_vtlb_interface : public device_interface
+{
+public:
+ // construction/destruction
+ device_vtlb_interface(const machine_config &mconfig, device_t &device, address_spacenum space);
+ virtual ~device_vtlb_interface();
+
+ // configuration helpers
+ void set_vtlb_dynamic_entries(int entries) { m_dynamic = entries; }
+ void set_vtlb_fixed_entries(int entries) { m_fixed = entries; }
+
+ // filling
+ int vtlb_fill(offs_t address, int intention);
+ void vtlb_load(int entrynum, int numpages, offs_t address, vtlb_entry value);
+ void vtlb_dynload(UINT32 index, offs_t address, vtlb_entry value);
+
+ // flushing
+ void vtlb_flush_dynamic();
+ void vtlb_flush_address(offs_t address);
+
+ // accessors
+ const vtlb_entry *vtlb_table() const;
+
+protected:
+ // interface-level overrides
+ virtual void interface_validity_check(validity_checker &valid) const override;
+ virtual void interface_pre_start() override;
+ virtual void interface_post_start() override;
+ virtual void interface_pre_reset() override;
+
+private:
+ // private state
+ address_spacenum m_space; // address space
+ int m_dynamic; // number of dynamic entries
+ int m_fixed; // number of fixed entries
+ int m_dynindex; // index of next dynamic entry
+ int m_pageshift; // bits to shift to get page index
+ int m_addrwidth; // logical address bus width
+ std::vector<offs_t> m_live; // array of live entries by table index
+ std::vector<int> m_fixedpages; // number of pages each fixed entry covers
+ std::vector<vtlb_entry> m_table; // table of entries by address
+};
+
+
+#endif /* __VTLB_H__ */
diff --git a/src/emu/drawgfx.cpp b/src/emu/drawgfx.cpp
index 21fc4b425c7..30bde314664 100644
--- a/src/emu/drawgfx.cpp
+++ b/src/emu/drawgfx.cpp
@@ -86,6 +86,7 @@ gfxdecode_device::gfxdecode_device(const machine_config &mconfig, const char *ta
// gfx_element - constructor
//-------------------------------------------------
+#ifdef UNUSED_FUNCTION
gfx_element::gfx_element()
: m_palette(nullptr),
m_width(0),
@@ -110,9 +111,10 @@ gfx_element::gfx_element()
m_layout_charincrement(0)
{
}
+#endif
-gfx_element::gfx_element(palette_device *palette, UINT8 *base, UINT32 width, UINT32 height, UINT32 rowbytes, UINT32 total_colors, UINT32 color_base, UINT32 color_granularity)
- : m_palette(palette),
+gfx_element::gfx_element(palette_device &palette, UINT8 *base, UINT32 width, UINT32 height, UINT32 rowbytes, UINT32 total_colors, UINT32 color_base, UINT32 color_granularity)
+ : m_palette(&palette),
m_width(width),
m_height(height),
m_startx(0),
@@ -136,8 +138,8 @@ gfx_element::gfx_element(palette_device *palette, UINT8 *base, UINT32 width, UIN
{
}
-gfx_element::gfx_element(palette_device *palette, const gfx_layout &gl, const UINT8 *srcdata, UINT32 xormask, UINT32 total_colors, UINT32 color_base)
- : m_palette(palette),
+gfx_element::gfx_element(palette_device &palette, const gfx_layout &gl, const UINT8 *srcdata, UINT32 xormask, UINT32 total_colors, UINT32 color_base)
+ : m_palette(&palette),
m_width(0),
m_height(0),
m_startx(0),
diff --git a/src/emu/drawgfx.h b/src/emu/drawgfx.h
index f106ce18768..cebf2cb6e4c 100644
--- a/src/emu/drawgfx.h
+++ b/src/emu/drawgfx.h
@@ -148,12 +148,14 @@ class gfx_element
{
public:
// construction/destruction
+#ifdef UNUSED_FUNCTION
gfx_element();
- gfx_element(palette_device *palette, const gfx_layout &gl, const UINT8 *srcdata, UINT32 xormask, UINT32 total_colors, UINT32 color_base);
- gfx_element(palette_device *palette, UINT8 *base, UINT32 width, UINT32 height, UINT32 rowbytes, UINT32 total_colors, UINT32 color_base, UINT32 color_granularity);
+#endif
+ gfx_element(palette_device &palette, const gfx_layout &gl, const UINT8 *srcdata, UINT32 xormask, UINT32 total_colors, UINT32 color_base);
+ gfx_element(palette_device &palette, UINT8 *base, UINT32 width, UINT32 height, UINT32 rowbytes, UINT32 total_colors, UINT32 color_base, UINT32 color_granularity);
// getters
- palette_device *palette() const { return m_palette; }
+ palette_device &palette() const { return *m_palette; }
UINT16 width() const { return m_width; }
UINT16 height() const { return m_height; }
UINT32 elements() const { return m_total_elements; }
@@ -173,7 +175,7 @@ public:
void set_source(const UINT8 *source);
void set_source_and_total(const UINT8 *source, UINT32 total);
void set_xormask(UINT32 xormask) { m_layout_xormask = xormask; }
- void set_palette(palette_device *palette) { m_palette = palette; }
+ void set_palette(palette_device &palette) { m_palette = &palette; }
void set_colors(UINT32 colors) { m_total_colors = colors; }
void set_colorbase(UINT16 colorbase) { m_color_base = colorbase; }
void set_granularity(UINT16 granularity) { m_color_granularity = granularity; }
diff --git a/src/emu/drivers/empty.cpp b/src/emu/drivers/empty.cpp
index 9c48a6c8b26..be4f53b24a7 100644
--- a/src/emu/drivers/empty.cpp
+++ b/src/emu/drivers/empty.cpp
@@ -11,6 +11,7 @@
#include "emu.h"
#include "render.h"
#include "ui/selgame.h"
+#include "ui/simpleselgame.h"
//**************************************************************************
@@ -29,7 +30,11 @@ public:
virtual void machine_start() override
{
// force the UI to show the game select screen
- ui_menu_select_game::force_game_select(machine(), &machine().render().ui_container());
+ if (strcmp(machine().options().ui(),"simple")==0) {
+ ui_simple_menu_select_game::force_game_select(machine(), &machine().render().ui_container());
+ } else {
+ ui_menu_select_game::force_game_select(machine(), &machine().render().ui_container());
+ }
}
UINT32 screen_update(screen_device &screen, bitmap_rgb32 &bitmap, const rectangle &cliprect)
diff --git a/src/emu/emualloc.cpp b/src/emu/emualloc.cpp
index a43faae522c..f424bca39cb 100644
--- a/src/emu/emualloc.cpp
+++ b/src/emu/emualloc.cpp
@@ -38,7 +38,6 @@ UINT64 resource_pool::s_id = 0;
resource_pool::resource_pool(int hash_size)
: m_hash_size(hash_size),
- m_listlock(osd_lock_alloc()),
m_hash(hash_size),
m_ordered_head(nullptr),
m_ordered_tail(nullptr)
@@ -56,8 +55,6 @@ resource_pool::resource_pool(int hash_size)
resource_pool::~resource_pool()
{
clear();
- if (m_listlock != nullptr)
- osd_lock_free(m_listlock);
}
@@ -67,7 +64,7 @@ resource_pool::~resource_pool()
void resource_pool::add(resource_pool_item &item, size_t size, const char *type)
{
- osd_lock_acquire(m_listlock);
+ std::lock_guard<std::mutex> lock(m_listlock);
// insert into hash table
int hashval = reinterpret_cast<FPTR>(item.m_ptr) % m_hash_size;
@@ -107,8 +104,6 @@ void resource_pool::add(resource_pool_item &item, size_t size, const char *type)
item.m_ordered_prev = nullptr;
m_ordered_head = &item;
}
-
- osd_lock_release(m_listlock);
}
@@ -124,7 +119,7 @@ void resource_pool::remove(void *ptr)
return;
// search for the item
- osd_lock_acquire(m_listlock);
+ std::lock_guard<std::mutex> lock(m_listlock);
int hashval = reinterpret_cast<FPTR>(ptr) % m_hash_size;
for (resource_pool_item **scanptr = &m_hash[hashval]; *scanptr != nullptr; scanptr = &(*scanptr)->m_next)
@@ -152,8 +147,6 @@ void resource_pool::remove(void *ptr)
global_free(deleteme);
break;
}
-
- osd_lock_release(m_listlock);
}
@@ -165,7 +158,7 @@ void resource_pool::remove(void *ptr)
resource_pool_item *resource_pool::find(void *ptr)
{
// search for the item
- osd_lock_acquire(m_listlock);
+ std::lock_guard<std::mutex> lock(m_listlock);
int hashval = reinterpret_cast<FPTR>(ptr) % m_hash_size;
resource_pool_item *item;
@@ -173,8 +166,6 @@ resource_pool_item *resource_pool::find(void *ptr)
if (item->m_ptr == ptr)
break;
- osd_lock_release(m_listlock);
-
return item;
}
@@ -190,7 +181,7 @@ bool resource_pool::contains(void *_ptrstart, void *_ptrend)
UINT8 *ptrend = reinterpret_cast<UINT8 *>(_ptrend);
// search for the item
- osd_lock_acquire(m_listlock);
+ std::lock_guard<std::mutex> lock(m_listlock);
resource_pool_item *item = nullptr;
for (item = m_ordered_head; item != nullptr; item = item->m_ordered_next)
@@ -198,13 +189,9 @@ bool resource_pool::contains(void *_ptrstart, void *_ptrend)
UINT8 *objstart = reinterpret_cast<UINT8 *>(item->m_ptr);
UINT8 *objend = objstart + item->m_size;
if (ptrstart >= objstart && ptrend <= objend)
- goto found;
+ return true;
}
-
-found:
- osd_lock_release(m_listlock);
-
- return (item != nullptr);
+ return false;
}
@@ -214,12 +201,8 @@ found:
void resource_pool::clear()
{
- osd_lock_acquire(m_listlock);
-
// important: delete from earliest to latest; this allows objects to clean up after
// themselves if they wish
while (m_ordered_head != nullptr)
remove(m_ordered_head->m_ptr);
-
- osd_lock_release(m_listlock);
}
diff --git a/src/emu/emualloc.h b/src/emu/emualloc.h
index 4571762054f..37b5c63d860 100644
--- a/src/emu/emualloc.h
+++ b/src/emu/emualloc.h
@@ -14,6 +14,7 @@
#define __EMUALLOC_H__
#include <new>
+#include <mutex>
#include "osdcore.h"
#include "coretmpl.h"
@@ -124,7 +125,7 @@ public:
private:
int m_hash_size;
- osd_lock * m_listlock;
+ std::mutex m_listlock;
std::vector<resource_pool_item *> m_hash;
resource_pool_item * m_ordered_head;
resource_pool_item * m_ordered_tail;
diff --git a/src/emu/emuopts.cpp b/src/emu/emuopts.cpp
index aa1b0482edc..716432b9088 100644
--- a/src/emu/emuopts.cpp
+++ b/src/emu/emuopts.cpp
@@ -11,6 +11,7 @@
#include "emu.h"
#include "emuopts.h"
#include "drivenum.h"
+#include "softlist.h"
#include <ctype.h>
@@ -49,7 +50,7 @@ const options_entry emu_options::s_option_entries[] =
{ OPTION_NVRAM_DIRECTORY, "nvram", OPTION_STRING, "directory to save nvram contents" },
{ OPTION_INPUT_DIRECTORY, "inp", OPTION_STRING, "directory to save input device logs" },
{ OPTION_STATE_DIRECTORY, "sta", OPTION_STRING, "directory to save states" },
- { OPTION_SNAPSHOT_DIRECTORY, "snap", OPTION_STRING, "directory to save screenshots" },
+ { OPTION_SNAPSHOT_DIRECTORY, "snap", OPTION_STRING, "directory to save/load screenshots" },
{ OPTION_DIFF_DIRECTORY, "diff", OPTION_STRING, "directory to save hard drive image difference files" },
{ OPTION_COMMENT_DIRECTORY, "comments", OPTION_STRING, "directory to save debugger comments" },
@@ -177,11 +178,8 @@ const options_entry emu_options::s_option_entries[] =
{ OPTION_DRC_LOG_NATIVE, "0", OPTION_BOOLEAN, "write DRC native disassembly log" },
{ OPTION_BIOS, nullptr, OPTION_STRING, "select the system BIOS to use" },
{ OPTION_CHEAT ";c", "0", OPTION_BOOLEAN, "enable cheat subsystem" },
- { OPTION_SKIP_GAMEINFO, "0", OPTION_BOOLEAN, "skip displaying the information screen at startup" },
- { OPTION_UI_FONT, "default", OPTION_STRING, "specify a font to use" },
+ { OPTION_UI, "cabinet", OPTION_STRING, "type of UI (simple|cabinet)" },
{ OPTION_RAMSIZE ";ram", nullptr, OPTION_STRING, "size of RAM (if supported by driver)" },
- { OPTION_CONFIRM_QUIT, "0", OPTION_BOOLEAN, "display confirm quit screen on exit" },
- { OPTION_UI_MOUSE, "0", OPTION_BOOLEAN, "display ui mouse cursor" },
{ OPTION_AUTOBOOT_COMMAND ";ab", nullptr, OPTION_STRING, "command to execute after machine boot" },
{ OPTION_AUTOBOOT_DELAY, "2", OPTION_INTEGER, "timer delay in sec to trigger command execution on autoboot" },
{ OPTION_AUTOBOOT_SCRIPT ";script", nullptr, OPTION_STRING, "lua script to execute after machine boot" },
@@ -205,6 +203,8 @@ emu_options::emu_options()
, m_joystick_contradictory(false)
, m_sleep(true)
, m_refresh_speed(false)
+, m_slot_options(0)
+, m_device_options(0)
{
add_entries(emu_options::s_option_entries);
}
@@ -215,18 +215,17 @@ emu_options::emu_options()
// options for the configured system
//-------------------------------------------------
-bool emu_options::add_slot_options(bool isfirstpass)
+bool emu_options::add_slot_options(const software_part *swpart)
{
// look up the system configured by name; if no match, do nothing
const game_driver *cursystem = system();
if (cursystem == nullptr)
return false;
+
+ // create the configuration
machine_config config(*cursystem, *this);
// iterate through all slot devices
- bool first = true;
-
- // create the configuration
int starting_count = options_count();
slot_interface_iterator iter(config.root_device());
for (const device_slot_interface *slot = iter.first(); slot != nullptr; slot = iter.next())
@@ -236,9 +235,8 @@ bool emu_options::add_slot_options(bool isfirstpass)
continue;
// first device? add the header as to be pretty
- if (isfirstpass && first)
+ if (m_slot_options++ == 0)
add_entry(nullptr, "SLOT DEVICES", OPTION_HEADER | OPTION_FLAG_DEVICE);
- first = false;
// retrieve info about the device instance
const char *name = slot->device().tag() + 1;
@@ -255,6 +253,15 @@ bool emu_options::add_slot_options(bool isfirstpass)
}
add_entry(name, nullptr, flags, defvalue, true);
}
+
+ // allow software lists to supply their own defaults
+ if (swpart != nullptr)
+ {
+ std::string featurename = std::string(name).append("_default");
+ const char *value = swpart->feature(featurename.c_str());
+ if (value != nullptr && (*value == '\0' || slot->option(value) != nullptr))
+ set_default_value(name, value);
+ }
}
return (options_count() != starting_count);
}
@@ -265,7 +272,7 @@ bool emu_options::add_slot_options(bool isfirstpass)
// depending of image mounted
//-------------------------------------------------
-void emu_options::update_slot_options()
+void emu_options::update_slot_options(const software_part *swpart)
{
// look up the system configured by name; if no match, do nothing
const game_driver *cursystem = system();
@@ -290,8 +297,8 @@ void emu_options::update_slot_options()
}
}
}
- while (add_slot_options(false)) { }
- add_device_options(false);
+ while (add_slot_options(swpart)) { }
+ add_device_options();
}
@@ -300,7 +307,7 @@ void emu_options::update_slot_options()
// options for the configured system
//-------------------------------------------------
-void emu_options::add_device_options(bool isfirstpass)
+void emu_options::add_device_options()
{
// look up the system configured by name; if no match, do nothing
const game_driver *cursystem = system();
@@ -309,14 +316,12 @@ void emu_options::add_device_options(bool isfirstpass)
machine_config config(*cursystem, *this);
// iterate through all image devices
- bool first = true;
image_interface_iterator iter(config.root_device());
for (const device_image_interface *image = iter.first(); image != nullptr; image = iter.next())
{
// first device? add the header as to be pretty
- if (first && isfirstpass)
+ if (m_device_options++ == 0)
add_entry(nullptr, "IMAGE DEVICES", OPTION_HEADER | OPTION_FLAG_DEVICE);
- first = false;
// retrieve info about the device instance
std::string option_name;
@@ -348,6 +353,10 @@ void emu_options::remove_device_options()
if ((curentry->flags() & OPTION_FLAG_DEVICE) != 0)
remove_entry(*curentry);
}
+
+ // reset counters
+ m_slot_options = 0;
+ m_device_options = 0;
}
@@ -356,7 +365,7 @@ void emu_options::remove_device_options()
// and update slot and image devices
//-------------------------------------------------
-bool emu_options::parse_slot_devices(int argc, char *argv[], std::string &error_string, const char *name, const char *value)
+bool emu_options::parse_slot_devices(int argc, char *argv[], std::string &error_string, const char *name, const char *value, const software_part *swpart)
{
// an initial parse to capture the initial set of values
bool result;
@@ -364,15 +373,13 @@ bool emu_options::parse_slot_devices(int argc, char *argv[], std::string &error_
core_options::parse_command_line(argc, argv, OPTION_PRIORITY_CMDLINE, error_string);
// keep adding slot options until we stop seeing new stuff
- bool isfirstpass = true;
- while (add_slot_options(isfirstpass))
- {
+ m_slot_options = 0;
+ while (add_slot_options(swpart))
core_options::parse_command_line(argc, argv, OPTION_PRIORITY_CMDLINE, error_string);
- isfirstpass = false;
- }
// add device options and reparse
- add_device_options(true);
+ m_device_options = 0;
+ add_device_options();
if (name != nullptr && exists(name))
set_value(name, value, OPTION_PRIORITY_CMDLINE, error_string);
core_options::parse_command_line(argc, argv, OPTION_PRIORITY_CMDLINE, error_string);
@@ -380,7 +387,7 @@ bool emu_options::parse_slot_devices(int argc, char *argv[], std::string &error_
int num;
do {
num = options_count();
- update_slot_options();
+ update_slot_options(swpart);
result = core_options::parse_command_line(argc, argv, OPTION_PRIORITY_CMDLINE, error_string);
} while (num != options_count());
@@ -399,7 +406,7 @@ bool emu_options::parse_command_line(int argc, char *argv[], std::string &error_
{
// parse as normal
core_options::parse_command_line(argc, argv, OPTION_PRIORITY_CMDLINE, error_string);
- bool result = parse_slot_devices(argc, argv, error_string, nullptr, nullptr);
+ bool result = parse_slot_devices(argc, argv, error_string);
update_cached_options();
return result;
}
@@ -523,11 +530,10 @@ void emu_options::set_system_name(const char *name)
// remove any existing device options and then add them afresh
remove_device_options();
- if (add_slot_options(true))
- while (add_slot_options(false)) { }
+ while (add_slot_options()) { }
// then add the options
- add_device_options(true);
+ add_device_options();
int num;
do {
num = options_count();
diff --git a/src/emu/emuopts.h b/src/emu/emuopts.h
index 14597d0e67d..d8d6e162e94 100644
--- a/src/emu/emuopts.h
+++ b/src/emu/emuopts.h
@@ -172,8 +172,7 @@ enum
#define OPTION_DRC_LOG_NATIVE "drc_log_native"
#define OPTION_BIOS "bios"
#define OPTION_CHEAT "cheat"
-#define OPTION_SKIP_GAMEINFO "skip_gameinfo"
-#define OPTION_UI_FONT "uifont"
+#define OPTION_UI "ui"
#define OPTION_RAMSIZE "ramsize"
// core comm options
@@ -182,9 +181,6 @@ enum
#define OPTION_COMM_REMOTE_HOST "comm_remotehost"
#define OPTION_COMM_REMOTE_PORT "comm_remoteport"
-#define OPTION_CONFIRM_QUIT "confirm_quit"
-#define OPTION_UI_MOUSE "ui_mouse"
-
#define OPTION_AUTOBOOT_COMMAND "autoboot_command"
#define OPTION_AUTOBOOT_DELAY "autoboot_delay"
#define OPTION_AUTOBOOT_SCRIPT "autoboot_script"
@@ -197,6 +193,7 @@ enum
// forward references
struct game_driver;
+class software_part;
class emu_options : public core_options
@@ -210,7 +207,7 @@ public:
// parsing wrappers
bool parse_command_line(int argc, char *argv[], std::string &error_string);
void parse_standard_inis(std::string &error_string);
- bool parse_slot_devices(int argc, char *argv[], std::string &error_string, const char *name, const char *value);
+ bool parse_slot_devices(int argc, char *argv[], std::string &error_string, const char *name = nullptr, const char *value = nullptr, const software_part *swpart = nullptr);
// core options
const char *system_name() const { return value(OPTION_SYSTEMNAME); }
@@ -346,8 +343,7 @@ public:
bool drc_log_native() const { return bool_value(OPTION_DRC_LOG_NATIVE); }
const char *bios() const { return value(OPTION_BIOS); }
bool cheat() const { return bool_value(OPTION_CHEAT); }
- bool skip_gameinfo() const { return bool_value(OPTION_SKIP_GAMEINFO); }
- const char *ui_font() const { return value(OPTION_UI_FONT); }
+ const char *ui() const { return value(OPTION_UI); }
const char *ram_size() const { return value(OPTION_RAMSIZE); }
// core comm options
@@ -355,10 +351,7 @@ public:
const char *comm_localport() const { return value(OPTION_COMM_LOCAL_PORT); }
const char *comm_remotehost() const { return value(OPTION_COMM_REMOTE_HOST); }
const char *comm_remoteport() const { return value(OPTION_COMM_REMOTE_PORT); }
-
- bool confirm_quit() const { return bool_value(OPTION_CONFIRM_QUIT); }
- bool ui_mouse() const { return bool_value(OPTION_UI_MOUSE); }
-
+
const char *autoboot_command() const { return value(OPTION_AUTOBOOT_COMMAND); }
int autoboot_delay() const { return int_value(OPTION_AUTOBOOT_DELAY); }
const char *autoboot_script() const { return value(OPTION_AUTOBOOT_SCRIPT); }
@@ -370,12 +363,13 @@ public:
std::string main_value(const char *option) const;
std::string sub_value(const char *name, const char *subname) const;
- bool add_slot_options(bool isfirst);
+ bool add_slot_options(const software_part *swpart = nullptr);
+
private:
// device-specific option handling
- void add_device_options(bool isfirst);
- void update_slot_options();
+ void add_device_options();
+ void update_slot_options(const software_part *swpart = nullptr);
// INI parsing helper
bool parse_one_ini(const char *basename, int priority, std::string *error_string = nullptr);
@@ -390,6 +384,8 @@ private:
bool m_joystick_contradictory;
bool m_sleep;
bool m_refresh_speed;
+ int m_slot_options;
+ int m_device_options;
};
diff --git a/src/emu/gamedrv.h b/src/emu/gamedrv.h
index db5e02f31cc..7fdcaf9e1c4 100644
--- a/src/emu/gamedrv.h
+++ b/src/emu/gamedrv.h
@@ -44,6 +44,7 @@ const UINT32 MACHINE_TYPE_COMPUTER = 0x00100000; // any kind of co
const UINT32 MACHINE_TYPE_OTHER = 0x00200000; // any other emulated system that doesn't fit above (ex. clock, satelite receiver,...)
const UINT32 MACHINE_IMPERFECT_KEYBOARD = 0x00400000; // keyboard is known to be wrong
const UINT32 MACHINE_CLICKABLE_ARTWORK = 0x00800000; // marking that artwork is clickable and require mouse cursor
+const UINT32 MACHINE_IS_INCOMPLETE = 0x01000000; // any official game/system with blantantly incomplete HW or SW should be marked with this
// useful combinations of flags
const UINT32 MACHINE_IS_SKELETON = MACHINE_NO_SOUND | MACHINE_NOT_WORKING; // mask for skelly games
diff --git a/src/emu/image.cpp b/src/emu/image.cpp
index d49c395bbdf..76de04714fb 100644
--- a/src/emu/image.cpp
+++ b/src/emu/image.cpp
@@ -231,7 +231,7 @@ void image_manager::postdevice_init()
{
/* retrieve image error message */
std::string image_err = std::string(image->error());
-
+
/* unload all images */
unload_all();
@@ -243,4 +243,3 @@ void image_manager::postdevice_init()
/* add a callback for when we shut down */
machine().add_notifier(MACHINE_NOTIFY_EXIT, machine_notify_delegate(FUNC(image_manager::unload_all), this));
}
-
diff --git a/src/emu/image.h b/src/emu/image.h
index 99fc61c3bda..32b8035d14d 100644
--- a/src/emu/image.h
+++ b/src/emu/image.h
@@ -20,7 +20,7 @@ class image_manager
public:
// construction/destruction
image_manager(running_machine &machine);
-
+
void unload_all();
void postdevice_init();
std::string &mandatory_scan(std::string &mandatory);
diff --git a/src/emu/info.cpp b/src/emu/info.cpp
index 4bae0daf37a..21c98853adc 100644
--- a/src/emu/info.cpp
+++ b/src/emu/info.cpp
@@ -188,7 +188,7 @@ info_xml_creator::info_xml_creator(driver_enumerator &drivlist)
// for all known games
//-------------------------------------------------
-void info_xml_creator::output(FILE *out)
+void info_xml_creator::output(FILE *out, bool nodevices)
{
m_output = out;
@@ -218,7 +218,8 @@ void info_xml_creator::output(FILE *out)
output_one();
// output devices (both devices with roms and slot devices)
- output_devices();
+ if (!nodevices)
+ output_devices();
// close the top level tag
fprintf(m_output, "</%s>\n",emulator_info::get_xml_root());
diff --git a/src/emu/info.h b/src/emu/info.h
index 0607acf9d7e..78082ec033b 100644
--- a/src/emu/info.h
+++ b/src/emu/info.h
@@ -28,7 +28,7 @@ public:
info_xml_creator(driver_enumerator &drivlist);
// output
- void output(FILE *out);
+ void output(FILE *out, bool nodevices = false);
private:
// internal helper
diff --git a/src/emu/inpttype.h b/src/emu/inpttype.h
index 7a07ea777b6..d927680ab4d 100644
--- a/src/emu/inpttype.h
+++ b/src/emu/inpttype.h
@@ -716,7 +716,8 @@ void construct_core_types_UI(simple_list<input_type_entry> &typelist)
INPUT_PORT_DIGITAL_TYPE( 0, UI, UI_ON_SCREEN_DISPLAY,"On Screen Display", input_seq(KEYCODE_TILDE) )
INPUT_PORT_DIGITAL_TYPE( 0, UI, UI_DEBUG_BREAK, "Break in Debugger", input_seq(KEYCODE_TILDE) )
INPUT_PORT_DIGITAL_TYPE( 0, UI, UI_CONFIGURE, "Config Menu", input_seq(KEYCODE_TAB) )
- INPUT_PORT_DIGITAL_TYPE( 0, UI, UI_PAUSE, "Pause", input_seq(KEYCODE_P) )
+ INPUT_PORT_DIGITAL_TYPE( 0, UI, UI_PAUSE, "Pause", input_seq(KEYCODE_P, input_seq::not_code, KEYCODE_LSHIFT, input_seq::not_code, KEYCODE_RSHIFT) )
+ INPUT_PORT_DIGITAL_TYPE( 0, UI, UI_PAUSE_SINGLE, "Pause - Single Step", input_seq(KEYCODE_P, KEYCODE_LSHIFT, input_seq::or_code, KEYCODE_P, KEYCODE_RSHIFT) )
INPUT_PORT_DIGITAL_TYPE( 0, UI, UI_RESET_MACHINE, "Reset Game", input_seq(KEYCODE_F3, KEYCODE_LSHIFT) )
INPUT_PORT_DIGITAL_TYPE( 0, UI, UI_SOFT_RESET, "Soft Reset", input_seq(KEYCODE_F3, input_seq::not_code, KEYCODE_LSHIFT) )
INPUT_PORT_DIGITAL_TYPE( 0, UI, UI_SHOW_GFX, "Show Gfx", input_seq(KEYCODE_F4) )
@@ -731,7 +732,7 @@ void construct_core_types_UI(simple_list<input_type_entry> &typelist)
INPUT_PORT_DIGITAL_TYPE( 0, UI, UI_UP, "UI Up", input_seq(KEYCODE_UP, input_seq::or_code, JOYCODE_Y_UP_SWITCH_INDEXED(0)) )
INPUT_PORT_DIGITAL_TYPE( 0, UI, UI_DOWN, "UI Down", input_seq(KEYCODE_DOWN, input_seq::or_code, JOYCODE_Y_DOWN_SWITCH_INDEXED(0)) )
INPUT_PORT_DIGITAL_TYPE( 0, UI, UI_LEFT, "UI Left", input_seq(KEYCODE_LEFT, input_seq::or_code, JOYCODE_X_LEFT_SWITCH_INDEXED(0)) )
- INPUT_PORT_DIGITAL_TYPE( 0, UI, UI_RIGHT, "UI Right", input_seq(KEYCODE_RIGHT, input_seq::or_code, JOYCODE_X_RIGHT_SWITCH_INDEXED(0)) )
+ INPUT_PORT_DIGITAL_TYPE( 0, UI, UI_RIGHT, "UI Right", input_seq(KEYCODE_RIGHT, input_seq::not_code, KEYCODE_LCONTROL, input_seq::or_code, JOYCODE_X_RIGHT_SWITCH_INDEXED(0), input_seq::not_code, KEYCODE_LCONTROL) )
INPUT_PORT_DIGITAL_TYPE( 0, UI, UI_HOME, "UI Home", input_seq(KEYCODE_HOME) )
INPUT_PORT_DIGITAL_TYPE( 0, UI, UI_END, "UI End", input_seq(KEYCODE_END) )
INPUT_PORT_DIGITAL_TYPE( 0, UI, UI_PAGE_UP, "UI Page Up", input_seq(KEYCODE_PGUP) )
@@ -753,6 +754,21 @@ void construct_core_types_UI(simple_list<input_type_entry> &typelist)
INPUT_PORT_DIGITAL_TYPE( 0, UI, UI_LOAD_STATE, "Load State", input_seq(KEYCODE_F7, input_seq::not_code, KEYCODE_LSHIFT) )
INPUT_PORT_DIGITAL_TYPE( 0, UI, UI_TAPE_START, "UI (First) Tape Start", input_seq(KEYCODE_F2, input_seq::not_code, KEYCODE_LSHIFT) )
INPUT_PORT_DIGITAL_TYPE( 0, UI, UI_TAPE_STOP, "UI (First) Tape Stop", input_seq(KEYCODE_F2, KEYCODE_LSHIFT) )
+ INPUT_PORT_DIGITAL_TYPE( 0, UI, UI_HISTORY, "UI Show History", input_seq(KEYCODE_LALT, KEYCODE_H) )
+ INPUT_PORT_DIGITAL_TYPE( 0, UI, UI_MAMEINFO, "UI Show Mame/Messinfo", input_seq(KEYCODE_LALT, KEYCODE_M) )
+ INPUT_PORT_DIGITAL_TYPE( 0, UI, UI_COMMAND, "UI Show Command Info", input_seq(KEYCODE_LALT, KEYCODE_C) )
+ INPUT_PORT_DIGITAL_TYPE( 0, UI, UI_SYSINFO, "UI Show Sysinfo", input_seq(KEYCODE_LALT, KEYCODE_S) )
+ INPUT_PORT_DIGITAL_TYPE( 0, UI, UI_FAVORITES, "UI Add/Remove favorites",input_seq(KEYCODE_LALT, KEYCODE_F) )
+ INPUT_PORT_DIGITAL_TYPE( 0, UI, UI_STORY, "UI Show Story.dat", input_seq(KEYCODE_LALT, KEYCODE_T) )
+ INPUT_PORT_DIGITAL_TYPE( 0, UI, UI_UP_FILTER, NULL, input_seq() )
+ INPUT_PORT_DIGITAL_TYPE( 0, UI, UI_DOWN_FILTER, NULL, input_seq() )
+ INPUT_PORT_DIGITAL_TYPE( 0, UI, UI_LEFT_PANEL, NULL, input_seq() )
+ INPUT_PORT_DIGITAL_TYPE( 0, UI, UI_RIGHT_PANEL, "UI Right switch image/info", input_seq(KEYCODE_RIGHT, KEYCODE_LCONTROL) )
+ INPUT_PORT_DIGITAL_TYPE( 0, UI, UI_UP_PANEL, NULL, input_seq() )
+ INPUT_PORT_DIGITAL_TYPE( 0, UI, UI_DOWN_PANEL, NULL, input_seq() )
+ INPUT_PORT_DIGITAL_TYPE( 0, UI, UI_EXPORT, "UI Export list to xml", input_seq(KEYCODE_LALT, KEYCODE_E) )
+ INPUT_PORT_DIGITAL_TYPE( 0, UI, UI_AUDIT_FAST, "UI Audit Unavailable", input_seq(KEYCODE_F1, input_seq::not_code, KEYCODE_LSHIFT) )
+ INPUT_PORT_DIGITAL_TYPE( 0, UI, UI_AUDIT_ALL, "UI Audit All", input_seq(KEYCODE_F1, KEYCODE_LSHIFT) )
}
void construct_core_types_OSD(simple_list<input_type_entry> &typelist)
diff --git a/src/emu/ioport.h b/src/emu/ioport.h
index 89bd9e6964e..9ba2818c5d0 100644
--- a/src/emu/ioport.h
+++ b/src/emu/ioport.h
@@ -333,6 +333,7 @@ enum ioport_type
IPT_UI_ON_SCREEN_DISPLAY,
IPT_UI_DEBUG_BREAK,
IPT_UI_PAUSE,
+ IPT_UI_PAUSE_SINGLE,
IPT_UI_RESET_MACHINE,
IPT_UI_SOFT_RESET,
IPT_UI_SHOW_GFX,
@@ -369,6 +370,21 @@ enum ioport_type
IPT_UI_LOAD_STATE,
IPT_UI_TAPE_START,
IPT_UI_TAPE_STOP,
+ IPT_UI_HISTORY,
+ IPT_UI_MAMEINFO,
+ IPT_UI_COMMAND,
+ IPT_UI_SYSINFO,
+ IPT_UI_FAVORITES,
+ IPT_UI_STORY,
+ IPT_UI_UP_FILTER,
+ IPT_UI_DOWN_FILTER,
+ IPT_UI_LEFT_PANEL,
+ IPT_UI_RIGHT_PANEL,
+ IPT_UI_UP_PANEL,
+ IPT_UI_DOWN_PANEL,
+ IPT_UI_EXPORT,
+ IPT_UI_AUDIT_FAST,
+ IPT_UI_AUDIT_ALL,
// additional OSD-specified UI port types (up to 16)
IPT_OSD_1,
diff --git a/src/emu/luaengine.cpp b/src/emu/luaengine.cpp
index ba7cecc1c95..c4136cd744a 100644
--- a/src/emu/luaengine.cpp
+++ b/src/emu/luaengine.cpp
@@ -17,6 +17,7 @@
#include "drivenum.h"
#include "ui/ui.h"
#include "luaengine.h"
+#include <mutex>
//**************************************************************************
// LUA ENGINE
@@ -505,21 +506,21 @@ int lua_engine::lua_addr_space::l_mem_read(lua_State *L)
mem_content = sp.read_byte(address);
break;
case 16:
- if ((address & 1) == 0) {
+ if (WORD_ALIGNED(address)) {
mem_content = sp.read_word(address);
} else {
mem_content = sp.read_word_unaligned(address);
}
break;
case 32:
- if ((address & 3) == 0) {
+ if (DWORD_ALIGNED(address)) {
mem_content = sp.read_dword(address);
} else {
mem_content = sp.read_dword_unaligned(address);
}
break;
case 64:
- if ((address & 7) == 0) {
+ if (QWORD_ALIGNED(address)) {
mem_content = sp.read_qword(address);
} else {
mem_content = sp.read_qword_unaligned(address);
@@ -558,21 +559,21 @@ int lua_engine::lua_addr_space::l_mem_write(lua_State *L)
sp.write_byte(address, val);
break;
case 16:
- if ((address & 1) == 0) {
+ if (WORD_ALIGNED(address)) {
sp.write_word(address, val);
} else {
sp.read_word_unaligned(address, val);
}
break;
case 32:
- if ((address & 3) == 0) {
+ if (DWORD_ALIGNED(address)) {
sp.write_dword(address, val);
} else {
sp.write_dword_unaligned(address, val);
}
break;
case 64:
- if ((address & 7) == 0) {
+ if (QWORD_ALIGNED(address)) {
sp.write_qword(address, val);
} else {
sp.write_qword_unaligned(address, val);
@@ -808,7 +809,7 @@ struct msg {
int done;
} msg;
-osd_lock *lock;
+static std::mutex g_mutex;
void lua_engine::serve_lua()
{
@@ -826,46 +827,48 @@ void lua_engine::serve_lua()
fgets(buff, LUA_MAXINPUT, stdin);
// Create message
- osd_lock_acquire(lock);
- if (msg.ready == 0) {
- msg.text = oldbuff;
- if (oldbuff.length()!=0) msg.text.append("\n");
- msg.text.append(buff);
- msg.ready = 1;
- msg.done = 0;
+ {
+ std::lock_guard<std::mutex> lock(g_mutex);
+ if (msg.ready == 0) {
+ msg.text = oldbuff;
+ if (oldbuff.length() != 0) msg.text.append("\n");
+ msg.text.append(buff);
+ msg.ready = 1;
+ msg.done = 0;
+ }
}
- osd_lock_release(lock);
// Wait for response
int done;
do {
osd_sleep(osd_ticks_per_second() / 1000);
- osd_lock_acquire(lock);
+ std::lock_guard<std::mutex> lock(g_mutex);
done = msg.done;
- osd_lock_release(lock);
} while (done==0);
// Do action on client side
- osd_lock_acquire(lock);
- if (msg.status == -1){
- b = LUA_PROMPT2;
- oldbuff = msg.response;
- }
- else {
- b = LUA_PROMPT;
- oldbuff = "";
+ {
+ std::lock_guard<std::mutex> lock(g_mutex);
+
+ if (msg.status == -1) {
+ b = LUA_PROMPT2;
+ oldbuff = msg.response;
+ }
+ else {
+ b = LUA_PROMPT;
+ oldbuff = "";
+ }
+ msg.done = 0;
}
- msg.done = 0;
- osd_lock_release(lock);
} while (1);
}
static void *serve_lua(void *param)
{
- lua_engine *engine = (lua_engine *)param;
- engine->serve_lua();
- return NULL;
+ lua_engine *engine = (lua_engine *)param;
+ engine->serve_lua();
+ return NULL;
}
//-------------------------------------------------
@@ -891,7 +894,6 @@ lua_engine::lua_engine()
msg.ready = 0;
msg.status = 0;
msg.done = 0;
- lock = osd_lock_alloc();
}
//-------------------------------------------------
@@ -1046,10 +1048,10 @@ bool lua_engine::frame_hook()
void lua_engine::periodic_check()
{
- osd_lock_acquire(lock);
+ std::lock_guard<std::mutex> lock(g_mutex);
if (msg.ready == 1) {
lua_settop(m_lua_state, 0);
- int status = luaL_loadbuffer(m_lua_state, msg.text.c_str(), strlen(msg.text.c_str()), "=stdin");
+ int status = luaL_loadbuffer(m_lua_state, msg.text.c_str(), msg.text.length(), "=stdin");
if (incomplete(status)==0) /* cannot try to add lines? */
{
if (status == LUA_OK) status = docall(0, LUA_MULTRET);
@@ -1075,7 +1077,6 @@ void lua_engine::periodic_check()
msg.ready = 0;
msg.done = 1;
}
- osd_lock_release(lock);
}
//-------------------------------------------------
diff --git a/src/emu/machine.cpp b/src/emu/machine.cpp
index a80a9c1aa74..7c59ef69a2d 100644
--- a/src/emu/machine.cpp
+++ b/src/emu/machine.cpp
@@ -2,69 +2,69 @@
// copyright-holders:Aaron Giles
/***************************************************************************
- machine.c
+ machine.c
- Controls execution of the core MAME system.
+ Controls execution of the core MAME system.
****************************************************************************
- Since there has been confusion in the past over the order of
- initialization and other such things, here it is, all spelled out
- as of January, 2008:
-
- main()
- - does platform-specific init
- - calls mame_execute() [mame.c]
-
- mame_execute() [mame.c]
- - calls mame_validitychecks() [validity.c] to perform validity checks on all compiled drivers
- - begins resource tracking (level 1)
- - calls create_machine [mame.c] to initialize the running_machine structure
- - calls init_machine() [mame.c]
-
- init_machine() [mame.c]
- - calls fileio_init() [fileio.c] to initialize file I/O info
- - calls config_init() [config.c] to initialize configuration system
- - calls input_init() [input.c] to initialize the input system
- - calls output_init() [output.c] to initialize the output system
- - calls state_init() [state.c] to initialize save state system
- - calls state_save_allow_registration() [state.c] to allow registrations
- - calls palette_init() [palette.c] to initialize palette system
- - calls render_init() [render.c] to initialize the rendering system
- - calls ui_init() [ui.c] to initialize the user interface
- - calls generic_machine_init() [machine/generic.c] to initialize generic machine structures
- - calls timer_init() [timer.c] to reset the timer system
- - calls osd_init() [osdepend.h] to do platform-specific initialization
- - calls input_port_init() [inptport.c] to set up the input ports
- - calls rom_init() [romload.c] to load the game's ROMs
- - calls memory_init() [memory.c] to process the game's memory maps
- - calls the driver's DRIVER_INIT callback
- - calls device_list_start() [devintrf.c] to start any devices
- - calls video_init() [video.c] to start the video system
- - calls tilemap_init() [tilemap.c] to start the tilemap system
- - calls crosshair_init() [crsshair.c] to configure the crosshairs
- - calls sound_init() [sound.c] to start the audio system
- - calls debugger_init() [debugger.c] to set up the debugger
- - calls the driver's MACHINE_START, SOUND_START, and VIDEO_START callbacks
- - calls cheat_init() [cheat.c] to initialize the cheat system
- - calls image_init() [image.c] to initialize the image system
-
- - calls config_load_settings() [config.c] to load the configuration file
- - calls nvram_load [machine/generic.c] to load NVRAM
- - calls ui_display_startup_screens() [ui.c] to display the startup screens
- - begins resource tracking (level 2)
- - calls soft_reset() [mame.c] to reset all systems
-
- -------------------( at this point, we're up and running )----------------------
-
- - calls scheduler->timeslice() [schedule.c] over and over until we exit
- - ends resource tracking (level 2), freeing all auto_mallocs and timers
- - calls the nvram_save() [machine/generic.c] to save NVRAM
- - calls config_save_settings() [config.c] to save the game's configuration
- - calls all registered exit routines [mame.c]
- - ends resource tracking (level 1), freeing all auto_mallocs and timers
-
- - exits the program
+ Since there has been confusion in the past over the order of
+ initialization and other such things, here it is, all spelled out
+ as of January, 2008:
+
+ main()
+ - does platform-specific init
+ - calls mame_execute() [mame.c]
+
+ mame_execute() [mame.c]
+ - calls mame_validitychecks() [validity.c] to perform validity checks on all compiled drivers
+ - begins resource tracking (level 1)
+ - calls create_machine [mame.c] to initialize the running_machine structure
+ - calls init_machine() [mame.c]
+
+ init_machine() [mame.c]
+ - calls fileio_init() [fileio.c] to initialize file I/O info
+ - calls config_init() [config.c] to initialize configuration system
+ - calls input_init() [input.c] to initialize the input system
+ - calls output_init() [output.c] to initialize the output system
+ - calls state_init() [state.c] to initialize save state system
+ - calls state_save_allow_registration() [state.c] to allow registrations
+ - calls palette_init() [palette.c] to initialize palette system
+ - calls render_init() [render.c] to initialize the rendering system
+ - calls ui_init() [ui.c] to initialize the user interface
+ - calls generic_machine_init() [machine/generic.c] to initialize generic machine structures
+ - calls timer_init() [timer.c] to reset the timer system
+ - calls osd_init() [osdepend.h] to do platform-specific initialization
+ - calls input_port_init() [inptport.c] to set up the input ports
+ - calls rom_init() [romload.c] to load the game's ROMs
+ - calls memory_init() [memory.c] to process the game's memory maps
+ - calls the driver's DRIVER_INIT callback
+ - calls device_list_start() [devintrf.c] to start any devices
+ - calls video_init() [video.c] to start the video system
+ - calls tilemap_init() [tilemap.c] to start the tilemap system
+ - calls crosshair_init() [crsshair.c] to configure the crosshairs
+ - calls sound_init() [sound.c] to start the audio system
+ - calls debugger_init() [debugger.c] to set up the debugger
+ - calls the driver's MACHINE_START, SOUND_START, and VIDEO_START callbacks
+ - calls cheat_init() [cheat.c] to initialize the cheat system
+ - calls image_init() [image.c] to initialize the image system
+
+ - calls config_load_settings() [config.c] to load the configuration file
+ - calls nvram_load [machine/generic.c] to load NVRAM
+ - calls ui_display_startup_screens() [ui.c] to display the startup screens
+ - begins resource tracking (level 2)
+ - calls soft_reset() [mame.c] to reset all systems
+
+ -------------------( at this point, we're up and running )----------------------
+
+ - calls scheduler->timeslice() [schedule.c] over and over until we exit
+ - ends resource tracking (level 2), freeing all auto_mallocs and timers
+ - calls the nvram_save() [machine/generic.c] to save NVRAM
+ - calls config_save_settings() [config.c] to save the game's configuration
+ - calls all registered exit routines [mame.c]
+ - ends resource tracking (level 1), freeing all auto_mallocs and timers
+
+ - exits the program
***************************************************************************/
@@ -78,6 +78,8 @@
#include "uiinput.h"
#include "crsshair.h"
#include "unzip.h"
+#include "ui/datfile.h"
+#include "ui/inifile.h"
#include "debug/debugvw.h"
#include "image.h"
#include "luaengine.h"
@@ -186,7 +188,10 @@ const char *running_machine::describe_context()
{
cpu_device *cpu = dynamic_cast<cpu_device *>(&executing->device());
if (cpu != nullptr)
- strprintf(m_context, "'%s' (%s)", cpu->tag(), core_i64_format(cpu->pc(), cpu->space(AS_PROGRAM).logaddrchars(), cpu->is_octal()));
+ {
+ address_space &prg = cpu->space(AS_PROGRAM);
+ strprintf(m_context, "'%s' (%s)", cpu->tag(), core_i64_format(cpu->pc(), prg.logaddrchars(), prg.is_octal()));
+ }
}
else
m_context.assign("(no context)");
@@ -232,6 +237,10 @@ void running_machine::start()
// create the video manager
m_video = std::make_unique<video_manager>(*this);
m_ui = std::make_unique<ui_manager>(*this);
+ m_ui->init();
+
+ // start the inifile manager
+ m_inifile = std::make_unique<inifile_manager>(*this);
// initialize the base time (needed for doing record/playback)
::time(&m_base_time);
@@ -305,6 +314,12 @@ void running_machine::start()
// allocate autoboot timer
m_autoboot_timer = scheduler().timer_alloc(timer_expired_delegate(FUNC(running_machine::autoboot_callback), this));
+ // start datfile manager
+ m_datfile = std::make_unique<datfile_manager>(*this);
+
+ // start favorite manager
+ m_favorite = std::make_unique<favorite_manager>(*this);
+
manager().update_machine();
}
@@ -1309,12 +1324,12 @@ void system_time::full_time::set(struct tm &t)
{
second = t.tm_sec;
minute = t.tm_min;
- hour = t.tm_hour;
- mday = t.tm_mday;
+ hour = t.tm_hour;
+ mday = t.tm_mday;
month = t.tm_mon;
- year = t.tm_year + 1900;
+ year = t.tm_year + 1900;
weekday = t.tm_wday;
- day = t.tm_yday;
+ day = t.tm_yday;
is_dst = t.tm_isdst;
}
diff --git a/src/emu/machine.h b/src/emu/machine.h
index 957ff4bbe13..613e62b505e 100644
--- a/src/emu/machine.h
+++ b/src/emu/machine.h
@@ -95,8 +95,10 @@ class image_manager;
class rom_load_manager;
class debugger_manager;
class osd_interface;
+class datfile_manager;
enum class config_type;
-
+class inifile_manager;
+class favorite_manager;
struct debugcpu_private;
@@ -165,6 +167,9 @@ public:
ioport_manager &ioport() { return m_ioport; }
parameters_manager &parameters() { return m_parameters; }
cheat_manager &cheat() const { assert(m_cheat != nullptr); return *m_cheat; }
+ datfile_manager &datfile() const { assert(m_datfile != nullptr); return *m_datfile; }
+ inifile_manager &inifile() const { assert(m_inifile != nullptr); return *m_inifile; }
+ favorite_manager &favorite() const { assert(m_favorite != nullptr); return *m_favorite; }
render_manager &render() const { assert(m_render != nullptr); return *m_render; }
input_manager &input() const { assert(m_input != nullptr); return *m_input; }
sound_manager &sound() const { assert(m_sound != nullptr); return *m_sound; }
@@ -294,11 +299,11 @@ private:
std::unique_ptr<network_manager> m_network; // internal data from network.cpp
std::unique_ptr<bookkeeping_manager> m_bookkeeping;// internal data from bookkeeping.cpp
std::unique_ptr<configuration_manager> m_configuration; // internal data from config.cpp
- std::unique_ptr<output_manager> m_output; // internal data from output.cpp
- std::unique_ptr<crosshair_manager> m_crosshair; // internal data from crsshair.cpp
- std::unique_ptr<image_manager> m_image; // internal data from image.cpp
- std::unique_ptr<rom_load_manager> m_rom_load; // internal data from romload.cpp
- std::unique_ptr<debugger_manager> m_debugger; // internal data from debugger.cpp
+ std::unique_ptr<output_manager> m_output; // internal data from output.cpp
+ std::unique_ptr<crosshair_manager> m_crosshair; // internal data from crsshair.cpp
+ std::unique_ptr<image_manager> m_image; // internal data from image.cpp
+ std::unique_ptr<rom_load_manager> m_rom_load; // internal data from romload.cpp
+ std::unique_ptr<debugger_manager> m_debugger; // internal data from debugger.cpp
// system state
machine_phase m_current_phase; // current execution phase
@@ -363,7 +368,10 @@ private:
parameters_manager m_parameters; // parameters manager
device_scheduler m_scheduler; // scheduler object
emu_timer *m_autoboot_timer; // autoboot timer
-};
+ std::unique_ptr<datfile_manager> m_datfile; // internal data from datfile.c
+ std::unique_ptr<inifile_manager> m_inifile; // internal data from inifile.c for INIs
+ std::unique_ptr<favorite_manager> m_favorite; // internal data from inifile.c for favorites
+};
#endif /* __MACHINE_H__ */
diff --git a/src/emu/mame.cpp b/src/emu/mame.cpp
index e18e41329ad..f17c04e3b68 100644
--- a/src/emu/mame.cpp
+++ b/src/emu/mame.cpp
@@ -231,6 +231,25 @@ int machine_manager::execute()
m_options.set_value(OPTION_RAMSIZE, "", OPTION_PRIORITY_CMDLINE, error_string);
}
firstrun = true;
+ if (m_options.software_name())
+ {
+ std::string sw_load(m_options.software_name());
+ std::string sw_list, sw_name, sw_part, sw_instance, option_errors, error_string;
+ int left = sw_load.find_first_of(':');
+ int middle = sw_load.find_first_of(':', left + 1);
+ int right = sw_load.find_last_of(':');
+
+ sw_list = sw_load.substr(0, left - 1);
+ sw_name = sw_load.substr(left + 1, middle - left - 1);
+ sw_part = sw_load.substr(middle + 1, right - middle - 1);
+ sw_instance = sw_load.substr(right + 1);
+ sw_load.assign(sw_load.substr(0, right));
+
+ char arg[] = "ume";
+ char *argv = &arg[0];
+ m_options.set_value(OPTION_SOFTWARENAME, sw_name.c_str(), OPTION_PRIORITY_CMDLINE, error_string);
+ m_options.parse_slot_devices(1, &argv, option_errors, sw_instance.c_str(), sw_load.c_str());
+ }
}
else
{
diff --git a/src/emu/memory.cpp b/src/emu/memory.cpp
index 598ffab9ac6..aa33faf65cf 100644
--- a/src/emu/memory.cpp
+++ b/src/emu/memory.cpp
@@ -673,15 +673,10 @@ private:
{
if (m_space.log_unmap() && !m_space.debugger_access())
{
- device_execute_interface *intf;
- bool is_octal = false;
- if (m_space.device().interface(intf))
- is_octal = intf->is_octal();
-
m_space.device().logerror("%s: unmapped %s memory read from %s & %s\n",
m_space.machine().describe_context(), m_space.name(),
- core_i64_format(m_space.byte_to_address(offset * sizeof(_UintType)), m_space.addrchars(),is_octal),
- core_i64_format(mask, 2 * sizeof(_UintType),is_octal));
+ core_i64_format(m_space.byte_to_address(offset * sizeof(_UintType)), m_space.addrchars(),m_space.is_octal()),
+ core_i64_format(mask, 2 * sizeof(_UintType),m_space.is_octal()));
}
return m_space.unmap();
}
@@ -746,16 +741,11 @@ private:
{
if (m_space.log_unmap() && !m_space.debugger_access())
{
- device_execute_interface *intf;
- bool is_octal = false;
- if (m_space.device().interface(intf))
- is_octal = intf->is_octal();
-
m_space.device().logerror("%s: unmapped %s memory write to %s = %s & %s\n",
m_space.machine().describe_context(), m_space.name(),
- core_i64_format(m_space.byte_to_address(offset * sizeof(_UintType)), m_space.addrchars(),is_octal),
- core_i64_format(data, 2 * sizeof(_UintType),is_octal),
- core_i64_format(mask, 2 * sizeof(_UintType),is_octal));
+ core_i64_format(m_space.byte_to_address(offset * sizeof(_UintType)), m_space.addrchars(),m_space.is_octal()),
+ core_i64_format(data, 2 * sizeof(_UintType),m_space.is_octal()),
+ core_i64_format(mask, 2 * sizeof(_UintType),m_space.is_octal()));
}
}
@@ -896,9 +886,9 @@ public:
printf(" read_byte = "); printf("%02X\n", result8 = read_byte(address)); assert(result8 == expected8);
// validate word accesses (if aligned)
- if (address % 2 == 0) { printf(" read_word = "); printf("%04X\n", result16 = read_word(address)); assert(result16 == expected16); }
- if (address % 2 == 0) { printf(" read_word (0xff00) = "); printf("%04X\n", result16 = read_word(address, 0xff00)); assert((result16 & 0xff00) == (expected16 & 0xff00)); }
- if (address % 2 == 0) { printf(" (0x00ff) = "); printf("%04X\n", result16 = read_word(address, 0x00ff)); assert((result16 & 0x00ff) == (expected16 & 0x00ff)); }
+ if (WORD_ALIGNED(address)) { printf(" read_word = "); printf("%04X\n", result16 = read_word(address)); assert(result16 == expected16); }
+ if (WORD_ALIGNED(address)) { printf(" read_word (0xff00) = "); printf("%04X\n", result16 = read_word(address, 0xff00)); assert((result16 & 0xff00) == (expected16 & 0xff00)); }
+ if (WORD_ALIGNED(address)) { printf(" (0x00ff) = "); printf("%04X\n", result16 = read_word(address, 0x00ff)); assert((result16 & 0x00ff) == (expected16 & 0x00ff)); }
// validate unaligned word accesses
printf(" read_word_unaligned = "); printf("%04X\n", result16 = read_word_unaligned(address)); assert(result16 == expected16);
@@ -906,15 +896,15 @@ public:
printf(" (0x00ff) = "); printf("%04X\n", result16 = read_word_unaligned(address, 0x00ff)); assert((result16 & 0x00ff) == (expected16 & 0x00ff));
// validate dword acceses (if aligned)
- if (address % 4 == 0) { printf(" read_dword = "); printf("%08X\n", result32 = read_dword(address)); assert(result32 == expected32); }
- if (address % 4 == 0) { printf(" read_dword (0xff000000) = "); printf("%08X\n", result32 = read_dword(address, 0xff000000)); assert((result32 & 0xff000000) == (expected32 & 0xff000000)); }
- if (address % 4 == 0) { printf(" (0x00ff0000) = "); printf("%08X\n", result32 = read_dword(address, 0x00ff0000)); assert((result32 & 0x00ff0000) == (expected32 & 0x00ff0000)); }
- if (address % 4 == 0) { printf(" (0x0000ff00) = "); printf("%08X\n", result32 = read_dword(address, 0x0000ff00)); assert((result32 & 0x0000ff00) == (expected32 & 0x0000ff00)); }
- if (address % 4 == 0) { printf(" (0x000000ff) = "); printf("%08X\n", result32 = read_dword(address, 0x000000ff)); assert((result32 & 0x000000ff) == (expected32 & 0x000000ff)); }
- if (address % 4 == 0) { printf(" (0xffff0000) = "); printf("%08X\n", result32 = read_dword(address, 0xffff0000)); assert((result32 & 0xffff0000) == (expected32 & 0xffff0000)); }
- if (address % 4 == 0) { printf(" (0x0000ffff) = "); printf("%08X\n", result32 = read_dword(address, 0x0000ffff)); assert((result32 & 0x0000ffff) == (expected32 & 0x0000ffff)); }
- if (address % 4 == 0) { printf(" (0xffffff00) = "); printf("%08X\n", result32 = read_dword(address, 0xffffff00)); assert((result32 & 0xffffff00) == (expected32 & 0xffffff00)); }
- if (address % 4 == 0) { printf(" (0x00ffffff) = "); printf("%08X\n", result32 = read_dword(address, 0x00ffffff)); assert((result32 & 0x00ffffff) == (expected32 & 0x00ffffff)); }
+ if (DWORD_ALIGNED(address)) { printf(" read_dword = "); printf("%08X\n", result32 = read_dword(address)); assert(result32 == expected32); }
+ if (DWORD_ALIGNED(address)) { printf(" read_dword (0xff000000) = "); printf("%08X\n", result32 = read_dword(address, 0xff000000)); assert((result32 & 0xff000000) == (expected32 & 0xff000000)); }
+ if (DWORD_ALIGNED(address)) { printf(" (0x00ff0000) = "); printf("%08X\n", result32 = read_dword(address, 0x00ff0000)); assert((result32 & 0x00ff0000) == (expected32 & 0x00ff0000)); }
+ if (DWORD_ALIGNED(address)) { printf(" (0x0000ff00) = "); printf("%08X\n", result32 = read_dword(address, 0x0000ff00)); assert((result32 & 0x0000ff00) == (expected32 & 0x0000ff00)); }
+ if (DWORD_ALIGNED(address)) { printf(" (0x000000ff) = "); printf("%08X\n", result32 = read_dword(address, 0x000000ff)); assert((result32 & 0x000000ff) == (expected32 & 0x000000ff)); }
+ if (DWORD_ALIGNED(address)) { printf(" (0xffff0000) = "); printf("%08X\n", result32 = read_dword(address, 0xffff0000)); assert((result32 & 0xffff0000) == (expected32 & 0xffff0000)); }
+ if (DWORD_ALIGNED(address)) { printf(" (0x0000ffff) = "); printf("%08X\n", result32 = read_dword(address, 0x0000ffff)); assert((result32 & 0x0000ffff) == (expected32 & 0x0000ffff)); }
+ if (DWORD_ALIGNED(address)) { printf(" (0xffffff00) = "); printf("%08X\n", result32 = read_dword(address, 0xffffff00)); assert((result32 & 0xffffff00) == (expected32 & 0xffffff00)); }
+ if (DWORD_ALIGNED(address)) { printf(" (0x00ffffff) = "); printf("%08X\n", result32 = read_dword(address, 0x00ffffff)); assert((result32 & 0x00ffffff) == (expected32 & 0x00ffffff)); }
// validate unaligned dword accesses
printf(" read_dword_unaligned = "); printf("%08X\n", result32 = read_dword_unaligned(address)); assert(result32 == expected32);
@@ -928,37 +918,37 @@ public:
printf(" (0x00ffffff) = "); printf("%08X\n", result32 = read_dword_unaligned(address, 0x00ffffff)); assert((result32 & 0x00ffffff) == (expected32 & 0x00ffffff));
// validate qword acceses (if aligned)
- if (address % 8 == 0) { printf(" read_qword = "); printf("%s\n", core_i64_hex_format(result64 = read_qword(address), 16)); assert(result64 == expected64); }
- if (address % 8 == 0) { printf(" read_qword (0xff00000000000000) = "); printf("%s\n", core_i64_hex_format(result64 = read_qword(address, U64(0xff00000000000000)), 16)); assert((result64 & U64(0xff00000000000000)) == (expected64 & U64(0xff00000000000000))); }
- if (address % 8 == 0) { printf(" (0x00ff000000000000) = "); printf("%s\n", core_i64_hex_format(result64 = read_qword(address, U64(0x00ff000000000000)), 16)); assert((result64 & U64(0x00ff000000000000)) == (expected64 & U64(0x00ff000000000000))); }
- if (address % 8 == 0) { printf(" (0x0000ff0000000000) = "); printf("%s\n", core_i64_hex_format(result64 = read_qword(address, U64(0x0000ff0000000000)), 16)); assert((result64 & U64(0x0000ff0000000000)) == (expected64 & U64(0x0000ff0000000000))); }
- if (address % 8 == 0) { printf(" (0x000000ff00000000) = "); printf("%s\n", core_i64_hex_format(result64 = read_qword(address, U64(0x000000ff00000000)), 16)); assert((result64 & U64(0x000000ff00000000)) == (expected64 & U64(0x000000ff00000000))); }
- if (address % 8 == 0) { printf(" (0x00000000ff000000) = "); printf("%s\n", core_i64_hex_format(result64 = read_qword(address, U64(0x00000000ff000000)), 16)); assert((result64 & U64(0x00000000ff000000)) == (expected64 & U64(0x00000000ff000000))); }
- if (address % 8 == 0) { printf(" (0x0000000000ff0000) = "); printf("%s\n", core_i64_hex_format(result64 = read_qword(address, U64(0x0000000000ff0000)), 16)); assert((result64 & U64(0x0000000000ff0000)) == (expected64 & U64(0x0000000000ff0000))); }
- if (address % 8 == 0) { printf(" (0x000000000000ff00) = "); printf("%s\n", core_i64_hex_format(result64 = read_qword(address, U64(0x000000000000ff00)), 16)); assert((result64 & U64(0x000000000000ff00)) == (expected64 & U64(0x000000000000ff00))); }
- if (address % 8 == 0) { printf(" (0x00000000000000ff) = "); printf("%s\n", core_i64_hex_format(result64 = read_qword(address, U64(0x00000000000000ff)), 16)); assert((result64 & U64(0x00000000000000ff)) == (expected64 & U64(0x00000000000000ff))); }
- if (address % 8 == 0) { printf(" (0xffff000000000000) = "); printf("%s\n", core_i64_hex_format(result64 = read_qword(address, U64(0xffff000000000000)), 16)); assert((result64 & U64(0xffff000000000000)) == (expected64 & U64(0xffff000000000000))); }
- if (address % 8 == 0) { printf(" (0x0000ffff00000000) = "); printf("%s\n", core_i64_hex_format(result64 = read_qword(address, U64(0x0000ffff00000000)), 16)); assert((result64 & U64(0x0000ffff00000000)) == (expected64 & U64(0x0000ffff00000000))); }
- if (address % 8 == 0) { printf(" (0x00000000ffff0000) = "); printf("%s\n", core_i64_hex_format(result64 = read_qword(address, U64(0x00000000ffff0000)), 16)); assert((result64 & U64(0x00000000ffff0000)) == (expected64 & U64(0x00000000ffff0000))); }
- if (address % 8 == 0) { printf(" (0x000000000000ffff) = "); printf("%s\n", core_i64_hex_format(result64 = read_qword(address, U64(0x000000000000ffff)), 16)); assert((result64 & U64(0x000000000000ffff)) == (expected64 & U64(0x000000000000ffff))); }
- if (address % 8 == 0) { printf(" (0xffffff0000000000) = "); printf("%s\n", core_i64_hex_format(result64 = read_qword(address, U64(0xffffff0000000000)), 16)); assert((result64 & U64(0xffffff0000000000)) == (expected64 & U64(0xffffff0000000000))); }
- if (address % 8 == 0) { printf(" (0x0000ffffff000000) = "); printf("%s\n", core_i64_hex_format(result64 = read_qword(address, U64(0x0000ffffff000000)), 16)); assert((result64 & U64(0x0000ffffff000000)) == (expected64 & U64(0x0000ffffff000000))); }
- if (address % 8 == 0) { printf(" (0x000000ffffff0000) = "); printf("%s\n", core_i64_hex_format(result64 = read_qword(address, U64(0x000000ffffff0000)), 16)); assert((result64 & U64(0x000000ffffff0000)) == (expected64 & U64(0x000000ffffff0000))); }
- if (address % 8 == 0) { printf(" (0x0000000000ffffff) = "); printf("%s\n", core_i64_hex_format(result64 = read_qword(address, U64(0x0000000000ffffff)), 16)); assert((result64 & U64(0x0000000000ffffff)) == (expected64 & U64(0x0000000000ffffff))); }
- if (address % 8 == 0) { printf(" (0xffffffff00000000) = "); printf("%s\n", core_i64_hex_format(result64 = read_qword(address, U64(0xffffffff00000000)), 16)); assert((result64 & U64(0xffffffff00000000)) == (expected64 & U64(0xffffffff00000000))); }
- if (address % 8 == 0) { printf(" (0x00ffffffff000000) = "); printf("%s\n", core_i64_hex_format(result64 = read_qword(address, U64(0x00ffffffff000000)), 16)); assert((result64 & U64(0x00ffffffff000000)) == (expected64 & U64(0x00ffffffff000000))); }
- if (address % 8 == 0) { printf(" (0x0000ffffffff0000) = "); printf("%s\n", core_i64_hex_format(result64 = read_qword(address, U64(0x0000ffffffff0000)), 16)); assert((result64 & U64(0x0000ffffffff0000)) == (expected64 & U64(0x0000ffffffff0000))); }
- if (address % 8 == 0) { printf(" (0x000000ffffffff00) = "); printf("%s\n", core_i64_hex_format(result64 = read_qword(address, U64(0x000000ffffffff00)), 16)); assert((result64 & U64(0x000000ffffffff00)) == (expected64 & U64(0x000000ffffffff00))); }
- if (address % 8 == 0) { printf(" (0x00000000ffffffff) = "); printf("%s\n", core_i64_hex_format(result64 = read_qword(address, U64(0x00000000ffffffff)), 16)); assert((result64 & U64(0x00000000ffffffff)) == (expected64 & U64(0x00000000ffffffff))); }
- if (address % 8 == 0) { printf(" (0xffffffffff000000) = "); printf("%s\n", core_i64_hex_format(result64 = read_qword(address, U64(0xffffffffff000000)), 16)); assert((result64 & U64(0xffffffffff000000)) == (expected64 & U64(0xffffffffff000000))); }
- if (address % 8 == 0) { printf(" (0x00ffffffffff0000) = "); printf("%s\n", core_i64_hex_format(result64 = read_qword(address, U64(0x00ffffffffff0000)), 16)); assert((result64 & U64(0x00ffffffffff0000)) == (expected64 & U64(0x00ffffffffff0000))); }
- if (address % 8 == 0) { printf(" (0x0000ffffffffff00) = "); printf("%s\n", core_i64_hex_format(result64 = read_qword(address, U64(0x0000ffffffffff00)), 16)); assert((result64 & U64(0x0000ffffffffff00)) == (expected64 & U64(0x0000ffffffffff00))); }
- if (address % 8 == 0) { printf(" (0x000000ffffffffff) = "); printf("%s\n", core_i64_hex_format(result64 = read_qword(address, U64(0x000000ffffffffff)), 16)); assert((result64 & U64(0x000000ffffffffff)) == (expected64 & U64(0x000000ffffffffff))); }
- if (address % 8 == 0) { printf(" (0xffffffffffff0000) = "); printf("%s\n", core_i64_hex_format(result64 = read_qword(address, U64(0xffffffffffff0000)), 16)); assert((result64 & U64(0xffffffffffff0000)) == (expected64 & U64(0xffffffffffff0000))); }
- if (address % 8 == 0) { printf(" (0x00ffffffffffff00) = "); printf("%s\n", core_i64_hex_format(result64 = read_qword(address, U64(0x00ffffffffffff00)), 16)); assert((result64 & U64(0x00ffffffffffff00)) == (expected64 & U64(0x00ffffffffffff00))); }
- if (address % 8 == 0) { printf(" (0x0000ffffffffffff) = "); printf("%s\n", core_i64_hex_format(result64 = read_qword(address, U64(0x0000ffffffffffff)), 16)); assert((result64 & U64(0x0000ffffffffffff)) == (expected64 & U64(0x0000ffffffffffff))); }
- if (address % 8 == 0) { printf(" (0xffffffffffffff00) = "); printf("%s\n", core_i64_hex_format(result64 = read_qword(address, U64(0xffffffffffffff00)), 16)); assert((result64 & U64(0xffffffffffffff00)) == (expected64 & U64(0xffffffffffffff00))); }
- if (address % 8 == 0) { printf(" (0x00ffffffffffffff) = "); printf("%s\n", core_i64_hex_format(result64 = read_qword(address, U64(0x00ffffffffffffff)), 16)); assert((result64 & U64(0x00ffffffffffffff)) == (expected64 & U64(0x00ffffffffffffff))); }
+ if (QWORD_ALIGNED(address)) { printf(" read_qword = "); printf("%s\n", core_i64_hex_format(result64 = read_qword(address), 16)); assert(result64 == expected64); }
+ if (QWORD_ALIGNED(address)) { printf(" read_qword (0xff00000000000000) = "); printf("%s\n", core_i64_hex_format(result64 = read_qword(address, U64(0xff00000000000000)), 16)); assert((result64 & U64(0xff00000000000000)) == (expected64 & U64(0xff00000000000000))); }
+ if (QWORD_ALIGNED(address)) { printf(" (0x00ff000000000000) = "); printf("%s\n", core_i64_hex_format(result64 = read_qword(address, U64(0x00ff000000000000)), 16)); assert((result64 & U64(0x00ff000000000000)) == (expected64 & U64(0x00ff000000000000))); }
+ if (QWORD_ALIGNED(address)) { printf(" (0x0000ff0000000000) = "); printf("%s\n", core_i64_hex_format(result64 = read_qword(address, U64(0x0000ff0000000000)), 16)); assert((result64 & U64(0x0000ff0000000000)) == (expected64 & U64(0x0000ff0000000000))); }
+ if (QWORD_ALIGNED(address)) { printf(" (0x000000ff00000000) = "); printf("%s\n", core_i64_hex_format(result64 = read_qword(address, U64(0x000000ff00000000)), 16)); assert((result64 & U64(0x000000ff00000000)) == (expected64 & U64(0x000000ff00000000))); }
+ if (QWORD_ALIGNED(address)) { printf(" (0x00000000ff000000) = "); printf("%s\n", core_i64_hex_format(result64 = read_qword(address, U64(0x00000000ff000000)), 16)); assert((result64 & U64(0x00000000ff000000)) == (expected64 & U64(0x00000000ff000000))); }
+ if (QWORD_ALIGNED(address)) { printf(" (0x0000000000ff0000) = "); printf("%s\n", core_i64_hex_format(result64 = read_qword(address, U64(0x0000000000ff0000)), 16)); assert((result64 & U64(0x0000000000ff0000)) == (expected64 & U64(0x0000000000ff0000))); }
+ if (QWORD_ALIGNED(address)) { printf(" (0x000000000000ff00) = "); printf("%s\n", core_i64_hex_format(result64 = read_qword(address, U64(0x000000000000ff00)), 16)); assert((result64 & U64(0x000000000000ff00)) == (expected64 & U64(0x000000000000ff00))); }
+ if (QWORD_ALIGNED(address)) { printf(" (0x00000000000000ff) = "); printf("%s\n", core_i64_hex_format(result64 = read_qword(address, U64(0x00000000000000ff)), 16)); assert((result64 & U64(0x00000000000000ff)) == (expected64 & U64(0x00000000000000ff))); }
+ if (QWORD_ALIGNED(address)) { printf(" (0xffff000000000000) = "); printf("%s\n", core_i64_hex_format(result64 = read_qword(address, U64(0xffff000000000000)), 16)); assert((result64 & U64(0xffff000000000000)) == (expected64 & U64(0xffff000000000000))); }
+ if (QWORD_ALIGNED(address)) { printf(" (0x0000ffff00000000) = "); printf("%s\n", core_i64_hex_format(result64 = read_qword(address, U64(0x0000ffff00000000)), 16)); assert((result64 & U64(0x0000ffff00000000)) == (expected64 & U64(0x0000ffff00000000))); }
+ if (QWORD_ALIGNED(address)) { printf(" (0x00000000ffff0000) = "); printf("%s\n", core_i64_hex_format(result64 = read_qword(address, U64(0x00000000ffff0000)), 16)); assert((result64 & U64(0x00000000ffff0000)) == (expected64 & U64(0x00000000ffff0000))); }
+ if (QWORD_ALIGNED(address)) { printf(" (0x000000000000ffff) = "); printf("%s\n", core_i64_hex_format(result64 = read_qword(address, U64(0x000000000000ffff)), 16)); assert((result64 & U64(0x000000000000ffff)) == (expected64 & U64(0x000000000000ffff))); }
+ if (QWORD_ALIGNED(address)) { printf(" (0xffffff0000000000) = "); printf("%s\n", core_i64_hex_format(result64 = read_qword(address, U64(0xffffff0000000000)), 16)); assert((result64 & U64(0xffffff0000000000)) == (expected64 & U64(0xffffff0000000000))); }
+ if (QWORD_ALIGNED(address)) { printf(" (0x0000ffffff000000) = "); printf("%s\n", core_i64_hex_format(result64 = read_qword(address, U64(0x0000ffffff000000)), 16)); assert((result64 & U64(0x0000ffffff000000)) == (expected64 & U64(0x0000ffffff000000))); }
+ if (QWORD_ALIGNED(address)) { printf(" (0x000000ffffff0000) = "); printf("%s\n", core_i64_hex_format(result64 = read_qword(address, U64(0x000000ffffff0000)), 16)); assert((result64 & U64(0x000000ffffff0000)) == (expected64 & U64(0x000000ffffff0000))); }
+ if (QWORD_ALIGNED(address)) { printf(" (0x0000000000ffffff) = "); printf("%s\n", core_i64_hex_format(result64 = read_qword(address, U64(0x0000000000ffffff)), 16)); assert((result64 & U64(0x0000000000ffffff)) == (expected64 & U64(0x0000000000ffffff))); }
+ if (QWORD_ALIGNED(address)) { printf(" (0xffffffff00000000) = "); printf("%s\n", core_i64_hex_format(result64 = read_qword(address, U64(0xffffffff00000000)), 16)); assert((result64 & U64(0xffffffff00000000)) == (expected64 & U64(0xffffffff00000000))); }
+ if (QWORD_ALIGNED(address)) { printf(" (0x00ffffffff000000) = "); printf("%s\n", core_i64_hex_format(result64 = read_qword(address, U64(0x00ffffffff000000)), 16)); assert((result64 & U64(0x00ffffffff000000)) == (expected64 & U64(0x00ffffffff000000))); }
+ if (QWORD_ALIGNED(address)) { printf(" (0x0000ffffffff0000) = "); printf("%s\n", core_i64_hex_format(result64 = read_qword(address, U64(0x0000ffffffff0000)), 16)); assert((result64 & U64(0x0000ffffffff0000)) == (expected64 & U64(0x0000ffffffff0000))); }
+ if (QWORD_ALIGNED(address)) { printf(" (0x000000ffffffff00) = "); printf("%s\n", core_i64_hex_format(result64 = read_qword(address, U64(0x000000ffffffff00)), 16)); assert((result64 & U64(0x000000ffffffff00)) == (expected64 & U64(0x000000ffffffff00))); }
+ if (QWORD_ALIGNED(address)) { printf(" (0x00000000ffffffff) = "); printf("%s\n", core_i64_hex_format(result64 = read_qword(address, U64(0x00000000ffffffff)), 16)); assert((result64 & U64(0x00000000ffffffff)) == (expected64 & U64(0x00000000ffffffff))); }
+ if (QWORD_ALIGNED(address)) { printf(" (0xffffffffff000000) = "); printf("%s\n", core_i64_hex_format(result64 = read_qword(address, U64(0xffffffffff000000)), 16)); assert((result64 & U64(0xffffffffff000000)) == (expected64 & U64(0xffffffffff000000))); }
+ if (QWORD_ALIGNED(address)) { printf(" (0x00ffffffffff0000) = "); printf("%s\n", core_i64_hex_format(result64 = read_qword(address, U64(0x00ffffffffff0000)), 16)); assert((result64 & U64(0x00ffffffffff0000)) == (expected64 & U64(0x00ffffffffff0000))); }
+ if (QWORD_ALIGNED(address)) { printf(" (0x0000ffffffffff00) = "); printf("%s\n", core_i64_hex_format(result64 = read_qword(address, U64(0x0000ffffffffff00)), 16)); assert((result64 & U64(0x0000ffffffffff00)) == (expected64 & U64(0x0000ffffffffff00))); }
+ if (QWORD_ALIGNED(address)) { printf(" (0x000000ffffffffff) = "); printf("%s\n", core_i64_hex_format(result64 = read_qword(address, U64(0x000000ffffffffff)), 16)); assert((result64 & U64(0x000000ffffffffff)) == (expected64 & U64(0x000000ffffffffff))); }
+ if (QWORD_ALIGNED(address)) { printf(" (0xffffffffffff0000) = "); printf("%s\n", core_i64_hex_format(result64 = read_qword(address, U64(0xffffffffffff0000)), 16)); assert((result64 & U64(0xffffffffffff0000)) == (expected64 & U64(0xffffffffffff0000))); }
+ if (QWORD_ALIGNED(address)) { printf(" (0x00ffffffffffff00) = "); printf("%s\n", core_i64_hex_format(result64 = read_qword(address, U64(0x00ffffffffffff00)), 16)); assert((result64 & U64(0x00ffffffffffff00)) == (expected64 & U64(0x00ffffffffffff00))); }
+ if (QWORD_ALIGNED(address)) { printf(" (0x0000ffffffffffff) = "); printf("%s\n", core_i64_hex_format(result64 = read_qword(address, U64(0x0000ffffffffffff)), 16)); assert((result64 & U64(0x0000ffffffffffff)) == (expected64 & U64(0x0000ffffffffffff))); }
+ if (QWORD_ALIGNED(address)) { printf(" (0xffffffffffffff00) = "); printf("%s\n", core_i64_hex_format(result64 = read_qword(address, U64(0xffffffffffffff00)), 16)); assert((result64 & U64(0xffffffffffffff00)) == (expected64 & U64(0xffffffffffffff00))); }
+ if (QWORD_ALIGNED(address)) { printf(" (0x00ffffffffffffff) = "); printf("%s\n", core_i64_hex_format(result64 = read_qword(address, U64(0x00ffffffffffffff)), 16)); assert((result64 & U64(0x00ffffffffffffff)) == (expected64 & U64(0x00ffffffffffffff))); }
// validate unaligned qword accesses
printf(" read_qword_unaligned = "); printf("%s\n", core_i64_hex_format(result64 = read_qword_unaligned(address), 16)); assert(result64 == expected64);
diff --git a/src/emu/memory.h b/src/emu/memory.h
index e04ac52f1b4..0b2b493a27d 100644
--- a/src/emu/memory.h
+++ b/src/emu/memory.h
@@ -239,10 +239,12 @@ public:
INT8 m_addrbus_shift;
UINT8 m_logaddr_width;
UINT8 m_page_shift;
+ bool m_is_octal; // to determine if messages/debugger will show octal or hex
+
address_map_constructor m_internal_map;
address_map_constructor m_default_map;
- address_map_delegate m_internal_map_delegate;
- address_map_delegate m_default_map_delegate;
+ address_map_delegate m_internal_map_delegate;
+ address_map_delegate m_default_map_delegate;
};
@@ -283,6 +285,7 @@ public:
int addr_width() const { return m_config.addr_width(); }
endianness_t endianness() const { return m_config.endianness(); }
UINT64 unmap() const { return m_unmap; }
+ bool is_octal() const { return m_config.m_is_octal; }
offs_t addrmask() const { return m_addrmask; }
offs_t bytemask() const { return m_bytemask; }
@@ -641,9 +644,7 @@ public:
// getters
memory_share *next() const { return m_next; }
- // NOTE: this being NULL in a C++ member function can lead to undefined behavior.
- // However, it is relied on throughout MAME, so will remain for now.
- void *ptr() const { if (this == nullptr) return nullptr; return m_ptr; }
+ void *ptr() const { return m_ptr; }
size_t bytes() const { return m_bytes; }
endianness_t endianness() const { return m_endianness; }
UINT8 bitwidth() const { return m_bitwidth; }
@@ -682,9 +683,9 @@ public:
// getters
running_machine &machine() const { return m_machine; }
memory_region *next() const { return m_next; }
- UINT8 *base() { return (this != nullptr) ? &m_buffer[0] : nullptr; }
- UINT8 *end() { return (this != nullptr) ? base() + m_buffer.size() : nullptr; }
- UINT32 bytes() const { return (this != nullptr) ? m_buffer.size() : 0; }
+ UINT8 *base() { return &m_buffer[0]; }
+ UINT8 *end() { return base() + m_buffer.size(); }
+ UINT32 bytes() const { return m_buffer.size(); }
const char *name() const { return m_name.c_str(); }
// flag expansion
@@ -868,6 +869,12 @@ private:
#define DWORD_XOR_LE(a) ((a) ^ NATIVE_ENDIAN_VALUE_LE_BE(0,4))
+// helpers for checking address alignment
+#define WORD_ALIGNED(a) (((a) & 1) == 0)
+#define DWORD_ALIGNED(a) (((a) & 3) == 0)
+#define QWORD_ALIGNED(a) (((a) & 7) == 0)
+
+
//**************************************************************************
// INLINE FUNCTIONS
diff --git a/src/emu/output.cpp b/src/emu/output.cpp
index a1ca5518ef9..25d37dd4c43 100644
--- a/src/emu/output.cpp
+++ b/src/emu/output.cpp
@@ -20,7 +20,7 @@
output_manager::output_manager(running_machine &machine)
: m_machine(machine),
- m_uniqueid(12345)
+ m_uniqueid(12345)
{
/* add pause callback */
machine.add_notifier(MACHINE_NOTIFY_PAUSE, machine_notify_delegate(FUNC(output_manager::pause), this));
@@ -49,7 +49,7 @@ output_manager::output_item* output_manager::find_item(const char *string)
output_manager::output_item *output_manager::create_new_item(const char *outname, INT32 value)
{
output_item item;
-
+
/* fill in the data */
item.name = outname;
item.id = m_uniqueid++;
@@ -197,7 +197,7 @@ void output_manager::set_notifier(const char *outname, output_notifier_func call
/* if no item of that name, create a new one */
if (item == nullptr)
item = create_new_item(outname, 0);
-
+
item->notifylist.push_back(notify);
}
else
diff --git a/src/emu/render.cpp b/src/emu/render.cpp
index baa5aa8db1b..e25f62a8e13 100644
--- a/src/emu/render.cpp
+++ b/src/emu/render.cpp
@@ -227,7 +227,6 @@ void render_primitive::reset()
//-------------------------------------------------
render_primitive_list::render_primitive_list()
- : m_lock(osd_lock_alloc())
{
}
@@ -239,7 +238,6 @@ render_primitive_list::render_primitive_list()
render_primitive_list::~render_primitive_list()
{
release_all();
- osd_lock_free(m_lock);
}
@@ -296,10 +294,8 @@ inline render_primitive *render_primitive_list::alloc(render_primitive::primitiv
void render_primitive_list::release_all()
{
// release all the live items while under the lock
- acquire_lock();
m_primitive_allocator.reclaim_all(m_primlist);
m_reference_allocator.reclaim_all(m_reflist);
- release_lock();
}
@@ -1055,8 +1051,9 @@ int render_target::configured_view(const char *viewname, int targetindex, int nu
if (strcmp(viewname, "auto") != 0)
{
// scan for a matching view name
+ size_t viewlen = strlen(viewname);
for (view = view_by_index(viewindex = 0); view != nullptr; view = view_by_index(++viewindex))
- if (core_strnicmp(view->name(), viewname, strlen(viewname)) == 0)
+ if (core_strnicmp(view->name(), viewname, viewlen) == 0)
break;
}
diff --git a/src/emu/render.h b/src/emu/render.h
index df8896b712b..e40c86b1c3c 100644
--- a/src/emu/render.h
+++ b/src/emu/render.h
@@ -49,6 +49,7 @@
//#include "osdepend.h"
#include <math.h>
+#include <mutex>
//**************************************************************************
@@ -358,8 +359,8 @@ public:
render_primitive *first() const { return m_primlist.first(); }
// lock management
- void acquire_lock() { osd_lock_acquire(m_lock); }
- void release_lock() { osd_lock_release(m_lock); }
+ void acquire_lock() { m_lock.lock(); }
+ void release_lock() { m_lock.unlock(); }
// reference management
void add_reference(void *refptr);
@@ -388,7 +389,7 @@ private:
fixed_allocator<render_primitive> m_primitive_allocator;// allocator for primitives
fixed_allocator<reference> m_reference_allocator; // allocator for references
- osd_lock * m_lock; // lock to protect list accesses
+ std::recursive_mutex m_lock; // lock to protect list accesses
};
diff --git a/src/emu/rendfont.cpp b/src/emu/rendfont.cpp
index 63ff7dc47de..89c174c31bf 100644
--- a/src/emu/rendfont.cpp
+++ b/src/emu/rendfont.cpp
@@ -16,6 +16,7 @@
#include "osdepend.h"
#include "uismall.fh"
+#include "ui/cmdrender.h"
//**************************************************************************
// INLINE FUNCTIONS
@@ -55,12 +56,51 @@ inline render_font::glyph &render_font::get_char(unicode_char chnum)
if (!m_glyphs[chnum / 256] && m_format == FF_OSD)
m_glyphs[chnum / 256] = new glyph[256];
if (!m_glyphs[chnum / 256])
- return dummy_glyph;
+ {
+ //mamep: make table for command glyph
+ if (chnum >= COMMAND_UNICODE && chnum < COMMAND_UNICODE + MAX_GLYPH_FONT)
+ m_glyphs[chnum / 256] = new glyph[256];
+ else
+ return dummy_glyph;
+ }
// if the character isn't generated yet, do it now
glyph &gl = m_glyphs[chnum / 256][chnum % 256];
if (!gl.bitmap.valid())
- char_expand(chnum, gl);
+ {
+ //mamep: command glyph support
+ if (m_height_cmd && chnum >= COMMAND_UNICODE && chnum < COMMAND_UNICODE + MAX_GLYPH_FONT)
+ {
+ glyph &glyph_ch = m_glyphs_cmd[chnum / 256][chnum % 256];
+ float scale = (float)m_height / (float)m_height_cmd;
+ if (m_format == FF_OSD) scale *= 0.90f;
+
+ if (!glyph_ch.bitmap.valid())
+ char_expand(chnum, glyph_ch);
+
+ //mamep: for color glyph
+ gl.color = glyph_ch.color;
+
+ gl.width = (int)(glyph_ch.width * scale + 0.5f);
+ gl.xoffs = (int)(glyph_ch.xoffs * scale + 0.5f);
+ gl.yoffs = (int)(glyph_ch.yoffs * scale + 0.5f);
+ gl.bmwidth = (int)(glyph_ch.bmwidth * scale + 0.5f);
+ gl.bmheight = (int)(glyph_ch.bmheight * scale + 0.5f);
+
+ gl.bitmap.allocate(gl.bmwidth, gl.bmheight);
+ rectangle clip;
+ clip.min_x = clip.min_y = 0;
+ clip.max_x = glyph_ch.bitmap.width() - 1;
+ clip.max_y = glyph_ch.bitmap.height() - 1;
+ render_texture::hq_scale(gl.bitmap, glyph_ch.bitmap, clip, nullptr);
+
+ /* wrap a texture around the bitmap */
+ gl.texture = m_manager.texture_alloc(render_texture::hq_scale);
+ gl.texture->set_bitmap(gl.bitmap, gl.bitmap.cliprect(), TEXFORMAT_ARGB32);
+ }
+ else
+ char_expand(chnum, gl);
+ }
// return the resulting character
return gl;
@@ -83,9 +123,12 @@ render_font::render_font(render_manager &manager, const char *filename)
m_yoffs(0),
m_scale(1.0f),
m_rawsize(0),
- m_osdfont(nullptr)
+ m_osdfont(nullptr),
+ m_height_cmd(0),
+ m_yoffs_cmd(0)
{
memset(m_glyphs, 0, sizeof(m_glyphs));
+ memset(m_glyphs_cmd, 0, sizeof(m_glyphs_cmd));
// if this is an OSD font, we're done
if (filename != nullptr)
@@ -95,10 +138,13 @@ render_font::render_font(render_manager &manager, const char *filename)
{
if (m_osdfont->open(manager.machine().options().font_path(), filename, m_height))
{
- m_scale = 1.0f / (float)m_height;
- m_format = FF_OSD;
- return;
- }
+ m_scale = 1.0f / (float)m_height;
+ m_format = FF_OSD;
+
+ //mamep: allocate command glyph font
+ render_font_command_glyph();
+ return;
+ }
global_free(m_osdfont);
m_osdfont = nullptr;
}
@@ -110,13 +156,18 @@ render_font::render_font(render_manager &manager, const char *filename)
// attempt to load the cached version of the font first
if (filename != nullptr && load_cached_bdf(filename))
- return;
+ {
+ //mamep: allocate command glyph font
+ render_font_command_glyph();
+ return;
+ }
// load the raw data instead
emu_file ramfile(OPEN_FLAG_READ);
file_error filerr = ramfile.open_ram(font_uismall, sizeof(font_uismall));
if (filerr == FILERR_NONE)
load_cached(ramfile, 0);
+ render_font_command_glyph();
}
@@ -138,6 +189,17 @@ render_font::~render_font()
delete[] elem;
}
+ for (auto & elem : m_glyphs_cmd)
+ if (elem)
+ {
+ for (unsigned int charnum = 0; charnum < 256; charnum++)
+ {
+ glyph &gl = elem[charnum];
+ m_manager.texture_free(gl.texture);
+ }
+ delete[] elem;
+ }
+
// release the OSD font
if (m_osdfont != nullptr)
{
@@ -154,8 +216,43 @@ render_font::~render_font()
void render_font::char_expand(unicode_char chnum, glyph &gl)
{
+ rgb_t color = rgb_t(0xff,0xff,0xff,0xff);
+ bool is_cmd = (chnum >= COMMAND_UNICODE && chnum < COMMAND_UNICODE + MAX_GLYPH_FONT);
+
+ if (gl.color)
+ color = gl.color;
+
+ if (is_cmd)
+ {
+ // punt if nothing there
+ if (gl.bmwidth == 0 || gl.bmheight == 0 || gl.rawdata == nullptr)
+ return;
+
+ // allocate a new bitmap of the size we need
+ gl.bitmap.allocate(gl.bmwidth, m_height_cmd);
+ gl.bitmap.fill(0);
+
+ // extract the data
+ const char *ptr = gl.rawdata;
+ UINT8 accum = 0, accumbit = 7;
+ for (int y = 0; y < gl.bmheight; y++)
+ {
+ int desty = y + m_height_cmd + m_yoffs_cmd - gl.yoffs - gl.bmheight;
+ UINT32 *dest = (desty >= 0 && desty < m_height_cmd) ? &gl.bitmap.pix32(desty, 0) : nullptr;
+ {
+ for (int x = 0; x < gl.bmwidth; x++)
+ {
+ if (accumbit == 7)
+ accum = *ptr++;
+ if (dest != nullptr)
+ *dest++ = (accum & (1 << accumbit)) ? color : rgb_t(0x00,0xff,0xff,0xff);
+ accumbit = (accumbit - 1) & 7;
+ }
+ }
+ }
+ }
// if we're an OSD font, query the info
- if (m_format == FF_OSD)
+ else if (m_format == FF_OSD)
{
// we set bmwidth to -1 if we've previously queried and failed
if (gl.bmwidth == -1)
@@ -173,7 +270,6 @@ void render_font::char_expand(unicode_char chnum, glyph &gl)
gl.bmwidth = gl.bitmap.width();
gl.bmheight = gl.bitmap.height();
}
-
// other formats need to parse their data
else
{
@@ -216,10 +312,10 @@ void render_font::char_expand(unicode_char chnum, glyph &gl)
// expand the four bits
if (dest != nullptr)
{
- *dest++ = (bits & 8) ? rgb_t(0xff,0xff,0xff,0xff) : rgb_t(0x00,0xff,0xff,0xff);
- *dest++ = (bits & 4) ? rgb_t(0xff,0xff,0xff,0xff) : rgb_t(0x00,0xff,0xff,0xff);
- *dest++ = (bits & 2) ? rgb_t(0xff,0xff,0xff,0xff) : rgb_t(0x00,0xff,0xff,0xff);
- *dest++ = (bits & 1) ? rgb_t(0xff,0xff,0xff,0xff) : rgb_t(0x00,0xff,0xff,0xff);
+ *dest++ = (bits & 8) ? color : rgb_t(0x00,0xff,0xff,0xff);
+ *dest++ = (bits & 4) ? color : rgb_t(0x00,0xff,0xff,0xff);
+ *dest++ = (bits & 2) ? color : rgb_t(0x00,0xff,0xff,0xff);
+ *dest++ = (bits & 1) ? color : rgb_t(0x00,0xff,0xff,0xff);
}
}
@@ -235,7 +331,7 @@ void render_font::char_expand(unicode_char chnum, glyph &gl)
if (accumbit == 7)
accum = *ptr++;
if (dest != nullptr)
- *dest++ = (accum & (1 << accumbit)) ? rgb_t(0xff,0xff,0xff,0xff) : rgb_t(0x00,0xff,0xff,0xff);
+ *dest++ = (accum & (1 << accumbit)) ? color : rgb_t(0x00,0xff,0xff,0xff);
accumbit = (accumbit - 1) & 7;
}
}
diff --git a/src/emu/rendfont.h b/src/emu/rendfont.h
index aced202260d..1f05babd789 100644
--- a/src/emu/rendfont.h
+++ b/src/emu/rendfont.h
@@ -65,6 +65,9 @@ private:
const char * rawdata; // pointer to the raw data for this one
render_texture * texture; // pointer to a texture for rendering and sizing
bitmap_argb32 bitmap; // pointer to the bitmap containing the raw data
+
+ rgb_t color;
+
};
// internal format
@@ -82,8 +85,11 @@ private:
bool load_cached_bdf(const char *filename);
bool load_bdf();
bool load_cached(emu_file &file, UINT32 hash);
+ bool load_cached_cmd(emu_file &file, UINT32 hash);
bool save_cached(const char *filename, UINT32 hash);
+ void render_font_command_glyph();
+
// internal state
render_manager & m_manager;
format m_format; // format of font data
@@ -93,7 +99,12 @@ private:
glyph *m_glyphs[256]; // array of glyph subtables
std::vector<char> m_rawdata; // pointer to the raw data for the font
UINT64 m_rawsize; // size of the raw font data
- osd_font *m_osdfont; // handle to the OSD font
+ osd_font *m_osdfont; // handle to the OSD font
+
+ int m_height_cmd; // height of the font, from ascent to descent
+ int m_yoffs_cmd; // y offset from baseline to descent
+ glyph *m_glyphs_cmd[256]; // array of glyph subtables
+ std::vector<char> m_rawdata_cmd; // pointer to the raw data for the font
// constants
static const int CACHED_CHAR_SIZE = 12;
@@ -101,5 +112,6 @@ private:
static const int CACHED_BDF_HASH_SIZE = 1024;
};
+void convert_command_glyph(std::string &s);
#endif /* __RENDFONT_H__ */
diff --git a/src/emu/rendutil.cpp b/src/emu/rendutil.cpp
index 1a487536455..6d0bde63adb 100644
--- a/src/emu/rendutil.cpp
+++ b/src/emu/rendutil.cpp
@@ -35,7 +35,7 @@ static bool copy_png_alpha_to_bitmap(bitmap_argb32 &bitmap, const png_info *png)
quality resampling of a texture
-------------------------------------------------*/
-void render_resample_argb_bitmap_hq(bitmap_argb32 &dest, bitmap_argb32 &source, const render_color &color)
+void render_resample_argb_bitmap_hq(bitmap_argb32 &dest, bitmap_argb32 &source, const render_color &color, bool force)
{
if (dest.width() == 0 || dest.height() == 0)
return;
@@ -52,7 +52,7 @@ void render_resample_argb_bitmap_hq(bitmap_argb32 &dest, bitmap_argb32 &source,
UINT32 dy = (sheight << 12) / dheight;
/* if the source is higher res than the target, use full averaging */
- if (dx > 0x1000 || dy > 0x1000)
+ if (dx > 0x1000 || dy > 0x1000 || force)
resample_argb_bitmap_average(&dest.pix(0), dest.rowpixels(), dwidth, dheight, sbase, source.rowpixels(), swidth, sheight, color, dx, dy);
else
resample_argb_bitmap_bilinear(&dest.pix(0), dest.rowpixels(), dwidth, dheight, sbase, source.rowpixels(), swidth, sheight, color, dx, dy);
diff --git a/src/emu/rendutil.h b/src/emu/rendutil.h
index d992d35d88c..34a9c2ef75c 100644
--- a/src/emu/rendutil.h
+++ b/src/emu/rendutil.h
@@ -21,7 +21,7 @@
/* ----- render utilities ----- */
-void render_resample_argb_bitmap_hq(bitmap_argb32 &dest, bitmap_argb32 &source, const render_color &color);
+void render_resample_argb_bitmap_hq(bitmap_argb32 &dest, bitmap_argb32 &source, const render_color &color, bool force = false);
int render_clip_line(render_bounds *bounds, const render_bounds *clip);
int render_clip_quad(render_bounds *bounds, const render_bounds *clip, render_quad_texuv *texcoords);
void render_line_to_quad(const render_bounds *bounds, float width, render_bounds *bounds0, render_bounds *bounds1);
diff --git a/src/emu/romload.cpp b/src/emu/romload.cpp
index 28cc994402c..e33df543fbb 100644
--- a/src/emu/romload.cpp
+++ b/src/emu/romload.cpp
@@ -302,8 +302,8 @@ void rom_load_manager::determine_bios_rom(device_t *device, const char *specbios
/* if we got neither an empty string nor 'default' then warn the user */
if (specbios[0] != 0 && strcmp(specbios, "default") != 0)
{
- strcatprintf(m_errorstring, "%s: invalid bios\n", specbios);
- m_errors++;
+ strcatprintf(m_errorstring, "%s: invalid bios, reverting to default\n", specbios);
+ m_warnings++;
}
/* set to default */
diff --git a/src/emu/screen.h b/src/emu/screen.h
index 31487c7d4ea..6a38b72f377 100644
--- a/src/emu/screen.h
+++ b/src/emu/screen.h
@@ -197,7 +197,8 @@ public:
// information getters
render_container &container() const { assert(m_container != nullptr); return *m_container; }
bitmap_ind8 &priority() { return m_priority; }
- palette_device *palette() { return m_palette; }
+ palette_device &palette() const { assert(m_palette.found()); return *m_palette; }
+ bool has_palette() const { return m_palette.found(); }
// dynamic configuration
void configure(int width, int height, const rectangle &visarea, attoseconds_t frame_period);
@@ -218,7 +219,7 @@ public:
attotime time_until_vblank_end() const;
attotime time_until_update() const { return (m_video_attributes & VIDEO_UPDATE_AFTER_VBLANK) ? time_until_vblank_end() : time_until_vblank_start(); }
attotime scan_period() const { return attotime(0, m_scantime); }
- attotime frame_period() const { return (this == nullptr) ? DEFAULT_FRAME_PERIOD : attotime(0, m_frame_period); };
+ attotime frame_period() const { return attotime(0, m_frame_period); }
UINT64 frame_number() const { return m_frame_number; }
// updating
diff --git a/src/emu/sound.cpp b/src/emu/sound.cpp
index 1b007a303ea..096695935d9 100644
--- a/src/emu/sound.cpp
+++ b/src/emu/sound.cpp
@@ -163,8 +163,10 @@ float sound_stream::output_gain(int outputnum) const
// on a given stream's input
//-------------------------------------------------
-const char *sound_stream::input_name(int inputnum, std::string &str) const
+std::string sound_stream::input_name(int inputnum) const
{
+ std::string str;
+
// start with our device name and tag
assert(inputnum >= 0 && inputnum < m_input.size());
strprintf(str, "%s '%s': ", m_device.name(), m_device.tag());
@@ -191,7 +193,7 @@ const char *sound_stream::input_name(int inputnum, std::string &str) const
}
}
}
- return str.c_str();
+ return str;
}
diff --git a/src/emu/sound.h b/src/emu/sound.h
index 9480388ac5b..b3584969284 100644
--- a/src/emu/sound.h
+++ b/src/emu/sound.h
@@ -106,7 +106,7 @@ public:
attotime sample_period() const { return attotime(0, m_attoseconds_per_sample); }
int input_count() const { return m_input.size(); }
int output_count() const { return m_output.size(); }
- const char *input_name(int inputnum, std::string &str) const;
+ std::string input_name(int inputnum) const;
device_t *input_source_device(int inputnum) const;
int input_source_outputnum(int inputnum) const;
float user_gain(int inputnum) const;
diff --git a/src/emu/sound/wavwrite.cpp b/src/emu/sound/wavwrite.cpp
index 210b1bcc9d5..173962ea46c 100644
--- a/src/emu/sound/wavwrite.cpp
+++ b/src/emu/sound/wavwrite.cpp
@@ -18,7 +18,7 @@ wav_file *wav_open(const char *filename, int sample_rate, int channels)
UINT16 align, temp16;
/* allocate memory for the wav struct */
- wav = (wav_file *) global_alloc(wav_file);
+ wav = global_alloc_nothrow(wav_file);
if (!wav)
return nullptr;
diff --git a/src/emu/tilemap.cpp b/src/emu/tilemap.cpp
index 2c7334bb068..58b9cb986d6 100644
--- a/src/emu/tilemap.cpp
+++ b/src/emu/tilemap.cpp
@@ -348,7 +348,7 @@ tilemap_t &tilemap_t::init(tilemap_manager &manager, device_gfx_interface &decod
// populate managers and devices
m_manager = &manager;
m_device = dynamic_cast<tilemap_device *>(this);
- m_palette = decoder.palette();
+ m_palette = &decoder.palette();
m_next = nullptr;
m_user_data = nullptr;
diff --git a/src/emu/tilemap.h b/src/emu/tilemap.h
index aaba8818d53..0f7dcf93c1b 100644
--- a/src/emu/tilemap.h
+++ b/src/emu/tilemap.h
@@ -497,7 +497,7 @@ public:
// getters
running_machine &machine() const;
tilemap_device *device() const { return m_device; }
- palette_device *palette() const { return m_palette; }
+ palette_device &palette() const { return *m_palette; }
tilemap_t *next() const { return m_next; }
void *user_data() const { return m_user_data; }
memory_array &basemem() { return m_basemem; }
@@ -518,7 +518,7 @@ public:
// setters
void enable(bool enable = true) { m_enable = enable; }
void set_user_data(void *user_data) { m_user_data = user_data; }
- void set_palette(palette_device *palette) { m_palette = palette; }
+ void set_palette(palette_device &palette) { m_palette = &palette; }
void set_palette_offset(UINT32 offset) { m_palette_offset = offset; }
void set_scrolldx(int dx, int dx_flipped) { m_dx = dx; m_dx_flipped = dx_flipped; }
void set_scrolldy(int dy, int dy_flipped) { m_dy = dy; m_dy_flipped = dy_flipped; }
diff --git a/src/emu/ui/auditmenu.cpp b/src/emu/ui/auditmenu.cpp
new file mode 100644
index 00000000000..8b98f0d70a2
--- /dev/null
+++ b/src/emu/ui/auditmenu.cpp
@@ -0,0 +1,200 @@
+// license:BSD-3-Clause
+// copyright-holders:Dankan1890
+/*********************************************************************
+
+ ui/auditmenu.cpp
+
+ Internal UI user interface.
+
+*********************************************************************/
+
+#include "emu.h"
+#include "ui/ui.h"
+#include "ui/menu.h"
+#include "audit.h"
+#include "ui/auditmenu.h"
+#include <algorithm>
+
+extern const char UI_VERSION_TAG[];
+
+//-------------------------------------------------
+// sort
+//-------------------------------------------------
+
+inline int cs_stricmp(const char *s1, const char *s2)
+{
+ for (;;)
+ {
+ int c1 = tolower((UINT8)*s1++);
+ int c2 = tolower((UINT8)*s2++);
+ if (c1 == 0 || c1 != c2)
+ return c1 - c2;
+ }
+}
+
+bool sorted_game_list(const game_driver *x, const game_driver *y)
+{
+ bool clonex = strcmp(x->parent, "0");
+ bool cloney = strcmp(y->parent, "0");
+
+ if (!clonex && !cloney)
+ return (cs_stricmp(x->description, y->description) < 0);
+
+ int cx = -1, cy = -1;
+ if (clonex)
+ {
+ cx = driver_list::find(x->parent);
+ if (cx == -1 || (driver_list::driver(cx).flags & MACHINE_IS_BIOS_ROOT) != 0)
+ clonex = false;
+ }
+
+ if (cloney)
+ {
+ cy = driver_list::find(y->parent);
+ if (cy == -1 || (driver_list::driver(cy).flags & MACHINE_IS_BIOS_ROOT) != 0)
+ cloney = false;
+ }
+
+ if (!clonex && !cloney)
+ return (cs_stricmp(x->description, y->description) < 0);
+ else if (clonex && cloney)
+ {
+ if (!cs_stricmp(x->parent, y->parent))
+ return (cs_stricmp(x->description, y->description) < 0);
+ else
+ return (cs_stricmp(driver_list::driver(cx).description, driver_list::driver(cy).description) < 0);
+ }
+ else if (!clonex && cloney)
+ {
+ if (!cs_stricmp(x->name, y->parent))
+ return true;
+ else
+ return (cs_stricmp(x->description, driver_list::driver(cy).description) < 0);
+ }
+ else
+ {
+ if (!cs_stricmp(x->parent, y->name))
+ return false;
+ else
+ return (cs_stricmp(driver_list::driver(cx).description, y->description) < 0);
+ }
+}
+
+//-------------------------------------------------
+// ctor / dtor
+//-------------------------------------------------
+
+ui_menu_audit::ui_menu_audit(running_machine &machine, render_container *container, std::vector<const game_driver *> &availablesorted, std::vector<const game_driver *> &unavailablesorted, int _audit_mode)
+ : ui_menu(machine, container), m_availablesorted(availablesorted), m_unavailablesorted(unavailablesorted), m_audit_mode(_audit_mode), m_first(true)
+{
+ if (m_audit_mode == 2)
+ {
+ m_availablesorted.clear();
+ m_unavailablesorted.clear();
+ }
+}
+
+ui_menu_audit::~ui_menu_audit()
+{
+}
+
+//-------------------------------------------------
+// handle
+//-------------------------------------------------
+
+void ui_menu_audit::handle()
+{
+ process(UI_MENU_PROCESS_CUSTOM_ONLY);
+
+ if (m_first)
+ {
+ machine().ui().draw_text_box(container, "Audit in progress...", JUSTIFY_CENTER, 0.5f, 0.5f, UI_GREEN_COLOR);
+ m_first = false;
+ return;
+ }
+
+ if (m_audit_mode == 1)
+ {
+ std::vector<const game_driver *>::iterator iter = m_unavailablesorted.begin();
+ while (iter != m_unavailablesorted.end())
+ {
+ driver_enumerator enumerator(machine().options(), (*iter)->name);
+ enumerator.next();
+ media_auditor auditor(enumerator);
+ media_auditor::summary summary = auditor.audit_media(AUDIT_VALIDATE_FAST);
+
+ // if everything looks good, include the driver
+ if (summary == media_auditor::CORRECT || summary == media_auditor::BEST_AVAILABLE || summary == media_auditor::NONE_NEEDED)
+ {
+ m_availablesorted.push_back((*iter));
+ iter = m_unavailablesorted.erase(iter);
+ }
+ else
+ ++iter;
+ }
+ }
+ else
+ {
+ driver_enumerator enumerator(machine().options());
+ media_auditor auditor(enumerator);
+ while (enumerator.next())
+ {
+ media_auditor::summary summary = auditor.audit_media(AUDIT_VALIDATE_FAST);
+
+ // if everything looks good, include the driver
+ if (summary == media_auditor::CORRECT || summary == media_auditor::BEST_AVAILABLE || summary == media_auditor::NONE_NEEDED)
+ m_availablesorted.push_back(&enumerator.driver());
+ else
+ m_unavailablesorted.push_back(&enumerator.driver());
+ }
+ }
+
+ // sort
+ std::stable_sort(m_availablesorted.begin(), m_availablesorted.end(), sorted_game_list);
+ std::stable_sort(m_unavailablesorted.begin(), m_unavailablesorted.end(), sorted_game_list);
+ save_available_machines();
+ ui_menu::menu_stack->parent->reset(UI_MENU_RESET_SELECT_FIRST);
+ ui_menu::stack_pop(machine());
+}
+
+//-------------------------------------------------
+// populate
+//-------------------------------------------------
+
+void ui_menu_audit::populate()
+{
+ item_append("Dummy", nullptr, 0, (void *)(FPTR)1);
+}
+
+//-------------------------------------------------
+// save drivers infos to file
+//-------------------------------------------------
+
+void ui_menu_audit::save_available_machines()
+{
+ // attempt to open the output file
+ emu_file file(machine().ui().options().ui_path(), OPEN_FLAG_WRITE | OPEN_FLAG_CREATE | OPEN_FLAG_CREATE_PATHS);
+ if (file.open(emulator_info::get_configname(), "_avail.ini") == FILERR_NONE)
+ {
+ // generate header
+ std::string buffer = std::string("#\n").append(UI_VERSION_TAG).append(bare_build_version).append("\n#\n\n");
+ strcatprintf(buffer, "%d\n", (int)m_availablesorted.size());
+ strcatprintf(buffer, "%d\n", (int)m_unavailablesorted.size());
+
+ // generate available list
+ for (size_t x = 0; x < m_availablesorted.size(); ++x)
+ {
+ int find = driver_list::find(m_availablesorted[x]->name);
+ strcatprintf(buffer, "%d\n", find);
+ }
+
+ // generate unavailable list
+ for (size_t x = 0; x < m_unavailablesorted.size(); ++x)
+ {
+ int find = driver_list::find(m_unavailablesorted[x]->name);
+ strcatprintf(buffer, "%d\n", find);
+ }
+ file.puts(buffer.c_str());
+ file.close();
+ }
+}
diff --git a/src/emu/ui/auditmenu.h b/src/emu/ui/auditmenu.h
new file mode 100644
index 00000000000..caad05796a6
--- /dev/null
+++ b/src/emu/ui/auditmenu.h
@@ -0,0 +1,37 @@
+// license:BSD-3-Clause
+// copyright-holders:Dankan1890
+/***************************************************************************
+
+ ui/auditmenu.h
+
+ Internal UI user interface.
+
+***************************************************************************/
+
+#pragma once
+
+#ifndef __UI_AUDIT_H__
+#define __UI_AUDIT_H__
+
+//-------------------------------------------------
+// class audit menu
+//-------------------------------------------------
+
+class ui_menu_audit : public ui_menu
+{
+public:
+ ui_menu_audit(running_machine &machine, render_container *container, std::vector<const game_driver *> &availablesorted, std::vector<const game_driver *> &unavailablesorted, int audit_mode);
+ virtual ~ui_menu_audit();
+ virtual void populate() override;
+ virtual void handle() override;
+
+private:
+ std::vector<const game_driver *> &m_availablesorted;
+ std::vector<const game_driver *> &m_unavailablesorted;
+
+ int m_audit_mode;
+ void save_available_machines();
+ bool m_first;
+};
+
+#endif /* __UI_AUDIT_H__ */
diff --git a/src/emu/ui/cmddata.h b/src/emu/ui/cmddata.h
new file mode 100644
index 00000000000..5fa2658d2cb
--- /dev/null
+++ b/src/emu/ui/cmddata.h
@@ -0,0 +1,404 @@
+// license:BSD-3-Clause
+// copyright-holders:Dankan1890
+/*********************************************************************
+
+ ui/cmddata.h
+
+*********************************************************************/
+#pragma once
+
+#ifndef __UI_CMDDATA_H__
+#define __UI_CMDDATA_H__
+
+#define BUTTON_COLOR_RED rgb_t(255,64,64)
+#define BUTTON_COLOR_YELLOW rgb_t(255,238,0)
+#define BUTTON_COLOR_GREEN rgb_t(0,255,64)
+#define BUTTON_COLOR_BLUE rgb_t(0,170,255)
+#define BUTTON_COLOR_PURPLE rgb_t(170,0,255)
+#define BUTTON_COLOR_PINK rgb_t(255,0,170)
+#define BUTTON_COLOR_AQUA rgb_t(0,255,204)
+#define BUTTON_COLOR_SILVER rgb_t(255,0,255)
+#define BUTTON_COLOR_NAVY rgb_t(255,160,0)
+#define BUTTON_COLOR_LIME rgb_t(190,190,190)
+
+enum
+{
+ B_COLOR_RED,
+ B_COLOR_YELLOW,
+ B_COLOR_GREEN,
+ B_COLOR_BLUE,
+ B_COLOR_PURPLE,
+ B_COLOR_PINK,
+ B_COLOR_AQUA,
+ B_COLOR_SILVER,
+ B_COLOR_NAVY,
+ B_COLOR_LIME,
+ MAX_COLORTABLE
+};
+
+// command.dat symbols assigned to Unicode PUA U+E000
+#define COMMAND_UNICODE (0xe000)
+#define MAX_GLYPH_FONT (150)
+
+// Define Game Command Font Converting Conditions
+#define COMMAND_DEFAULT_TEXT '_'
+
+// Define Expanded Game Command ShortCut
+#define COMMAND_EXPAND_TEXT '^'
+
+// Define Simple Game Command ShortCut
+#define COMMAND_CONVERT_TEXT '@'
+
+// Defined Game Command Font Color Array
+static rgb_t color_table[] =
+{
+ 0, // dummy
+ BUTTON_COLOR_RED, // BTN_A
+ BUTTON_COLOR_YELLOW, // BTN_B
+ BUTTON_COLOR_GREEN, // BTN_C
+ BUTTON_COLOR_BLUE, // BTN_D
+ BUTTON_COLOR_PINK, // BTN_E
+ BUTTON_COLOR_PURPLE, // BTN_F
+ BUTTON_COLOR_AQUA, // BTN_G
+ BUTTON_COLOR_SILVER, // BTN_H
+ BUTTON_COLOR_NAVY, // BTN_I
+ BUTTON_COLOR_LIME, // BTN_J
+ BUTTON_COLOR_RED, // BTN_K
+ BUTTON_COLOR_YELLOW, // BTN_L
+ BUTTON_COLOR_GREEN, // BTN_M
+ BUTTON_COLOR_BLUE, // BTN_N
+ BUTTON_COLOR_PINK, // BTN_O
+ BUTTON_COLOR_PURPLE, // BTN_P
+ BUTTON_COLOR_AQUA, // BTN_Q
+ BUTTON_COLOR_SILVER, // BTN_R
+ BUTTON_COLOR_NAVY, // BTN_S
+ BUTTON_COLOR_LIME, // BTN_T
+ BUTTON_COLOR_RED, // BTN_U
+ BUTTON_COLOR_YELLOW, // BTN_V
+ BUTTON_COLOR_GREEN, // BTN_W
+ BUTTON_COLOR_BLUE, // BTN_X
+ BUTTON_COLOR_PINK, // BTN_Y
+ BUTTON_COLOR_PURPLE, // BTN_Z
+ BUTTON_COLOR_RED, // BTN_1
+ BUTTON_COLOR_YELLOW, // BTN_2
+ BUTTON_COLOR_GREEN, // BTN_3
+ BUTTON_COLOR_BLUE, // BTN_4
+ BUTTON_COLOR_PINK, // BTN_5
+ BUTTON_COLOR_PURPLE, // BTN_6
+ BUTTON_COLOR_AQUA, // BTN_7
+ BUTTON_COLOR_SILVER, // BTN_8
+ BUTTON_COLOR_NAVY, // BTN_9
+ BUTTON_COLOR_LIME, // BTN_10
+ BUTTON_COLOR_BLUE, // BTN_DEC
+ BUTTON_COLOR_RED, // BTN_INC
+ 0, // BTN_+
+ 0, // DIR_...
+ 0, // DIR_1
+ 0, // DIR_2
+ 0, // DIR_3
+ 0, // DIR_4
+ BUTTON_COLOR_RED, // Joystick Ball
+ 0, // DIR_6
+ 0, // DIR_7
+ 0, // DIR_8
+ 0, // DIR_9
+ 0, // DIR_N
+ BUTTON_COLOR_RED, // BTN_START
+ BUTTON_COLOR_YELLOW, // BTN_SELECT
+ BUTTON_COLOR_PINK, // BTN_PUNCH
+ BUTTON_COLOR_PURPLE, // BTN_KICK
+ BUTTON_COLOR_BLUE, // BTN_GUARD
+ 0,
+ BUTTON_COLOR_YELLOW, // Light Punch
+ BUTTON_COLOR_NAVY, // Middle Punch
+ BUTTON_COLOR_RED, // Strong Punch
+ BUTTON_COLOR_LIME, // Light Kick
+ BUTTON_COLOR_AQUA, // Middle Kick
+ BUTTON_COLOR_BLUE, // Strong Kick
+ BUTTON_COLOR_PURPLE, // 3 Kick
+ BUTTON_COLOR_PINK, // 3 Punch
+ BUTTON_COLOR_PURPLE, // 2 Kick
+ BUTTON_COLOR_PINK, // 2 Punch
+ BUTTON_COLOR_RED, // CUSTOM_1
+ BUTTON_COLOR_YELLOW, // CUSTOM_2
+ BUTTON_COLOR_GREEN, // CUSTOM_3
+ BUTTON_COLOR_BLUE, // CUSTOM_4
+ BUTTON_COLOR_PINK, // CUSTOM_5
+ BUTTON_COLOR_PURPLE, // CUSTOM_6
+ BUTTON_COLOR_AQUA, // CUSTOM_7
+ BUTTON_COLOR_SILVER, // CUSTOM_8
+ BUTTON_COLOR_RED, // (Cursor Up)
+ BUTTON_COLOR_YELLOW, // (Cursor Down)
+ BUTTON_COLOR_GREEN, // (Cursor Left)
+ BUTTON_COLOR_BLUE, // (Cursor Right)
+ 0, // Non Player Lever
+ BUTTON_COLOR_LIME, // Gray Color Lever
+ BUTTON_COLOR_RED, // 1 Player Lever
+ BUTTON_COLOR_YELLOW, // 2 Player Lever
+ BUTTON_COLOR_GREEN, // 3 Player Lever
+ BUTTON_COLOR_BLUE, // 4 Player Lever
+ BUTTON_COLOR_PINK, // 5 Player Lever
+ BUTTON_COLOR_PURPLE, // 6 Player Lever
+ BUTTON_COLOR_AQUA, // 7 Player Lever
+ BUTTON_COLOR_SILVER // 8 Player Lever
+};
+
+// for color glyph
+#define COLOR_BUTTONS ARRAY_LENGTH(color_table)
+
+// Follow Varialbe Defined Arraies for Game Command Tag
+struct fix_command_t
+{
+ unsigned char glyph_char;
+ const int glyph_code;
+};
+
+
+struct fix_strings_t
+{
+ const char *glyph_str;
+ const int glyph_code;
+ int glyph_str_len;
+};
+
+static fix_command_t default_text[] =
+{
+ // Alphabetic Buttons (NeoGeo): A~D,H,Z
+ { 'A', 1 }, // BTN_A
+ { 'B', 2 }, // BTN_B
+ { 'C', 3 }, // BTN_C
+ { 'D', 4 }, // BTN_D
+ { 'H', 8 }, // BTN_H
+ { 'Z', 26 }, // BTN_Z
+ // Numerical Buttons (Capcom): 1~10
+ { 'a', 27 }, // BTN_1
+ { 'b', 28 }, // BTN_2
+ { 'c', 29 }, // BTN_3
+ { 'd', 30 }, // BTN_4
+ { 'e', 31 }, // BTN_5
+ { 'f', 32 }, // BTN_6
+ { 'g', 33 }, // BTN_7
+ { 'h', 34 }, // BTN_8
+ { 'i', 35 }, // BTN_9
+ { 'j', 36 }, // BTN_10
+ // Directions of Arrow, Joystick Ball
+ { '+', 39 }, // BTN_+
+ { '.', 40 }, // DIR_...
+ { '1', 41 }, // DIR_1
+ { '2', 42 }, // DIR_2
+ { '3', 43 }, // DIR_3
+ { '4', 44 }, // DIR_4
+ { '5', 45 }, // Joystick Ball
+ { '6', 46 }, // DIR_6
+ { '7', 47 }, // DIR_7
+ { '8', 48 }, // DIR_8
+ { '9', 49 }, // DIR_9
+ { 'N', 50 }, // DIR_N
+ // Special Buttons
+ { 'S', 51 }, // BTN_START
+ { 'P', 53 }, // BTN_PUNCH
+ { 'K', 54 }, // BTN_KICK
+ { 'G', 55 }, // BTN_GUARD
+ // Composition of Arrow Directions
+ { '!', 90 }, // Arrow
+ { 'k', 100 }, // Half Circle Back
+ { 'l', 101 }, // Half Circle Front Up
+ { 'm', 102 }, // Half Circle Front
+ { 'n', 103 }, // Half Circle Back Up
+ { 'o', 104 }, // 1/4 Cir For 2 Down
+ { 'p', 105 }, // 1/4 Cir Down 2 Back
+ { 'q', 106 }, // 1/4 Cir Back 2 Up
+ { 'r', 107 }, // 1/4 Cir Up 2 For
+ { 's', 108 }, // 1/4 Cir Back 2 Down
+ { 't', 109 }, // 1/4 Cir Down 2 For
+ { 'u', 110 }, // 1/4 Cir For 2 Up
+ { 'v', 111 }, // 1/4 Cir Up 2 Back
+ { 'w', 112 }, // Full Clock Forward
+ { 'x', 113 }, // Full Clock Back
+ { 'y', 114 }, // Full Count Forward
+ { 'z', 115 }, // Full Count Back
+ { 'L', 116 }, // 2x Forward
+ { 'M', 117 }, // 2x Back
+ { 'Q', 118 }, // Dragon Screw Forward
+ { 'R', 119 }, // Dragon Screw Back
+ // Big letter Text
+ { '^', 121 }, // AIR
+ { '?', 122 }, // DIR
+ { 'X', 124 }, // TAP
+ // Condition of Positions
+ { '|', 125 }, // Jump
+ { 'O', 126 }, // Hold
+ { '-', 127 }, // Air
+ { '=', 128 }, // Squatting
+ { '~', 131 }, // Charge
+ // Special Character Text
+ { '`', 135 }, // Small Dot
+ { '@', 136 }, // Double Ball
+ { ')', 137 }, // Single Ball
+ { '(', 138 }, // Solid Ball
+ { '*', 139 }, // Star
+ { '&', 140 }, // Solid star
+ { '%', 141 }, // Triangle
+ { '$', 142 }, // Solid Triangle
+ { '#', 143 }, // Double Square
+ { ']', 144 }, // Single Square
+ { '[', 145 }, // Solid Square
+ { '{', 146 }, // Down Triangle
+ { '}', 147 }, // Solid Down Triangle
+ { '<', 148 }, // Diamond
+ { '>', 149 }, // Solid Diamond
+ { 0, 0 } // end of array
+};
+
+static fix_command_t expand_text[] =
+{
+ // Alphabetic Buttons (NeoGeo): S (Slash Button)
+ { 's', 19 }, // BTN_S
+ // Special Buttons
+ { 'S', 52 }, // BTN_SELECT
+ // Multiple Punches & Kicks
+ { 'E', 57 }, // Light Punch
+ { 'F', 58 }, // Middle Punch
+ { 'G', 59 }, // Strong Punch
+ { 'H', 60 }, // Light Kick
+ { 'I', 61 }, // Middle Kick
+ { 'J', 62 }, // Strong Kick
+ { 'T', 63 }, // 3 Kick
+ { 'U', 64 }, // 3 Punch
+ { 'V', 65 }, // 2 Kick
+ { 'W', 66 }, // 2 Pick
+ // Composition of Arrow Directions
+ { '!', 91 }, // Continue Arrow
+ // Charge of Arrow Directions
+ { '1', 92 }, // Charge DIR_1
+ { '2', 93 }, // Charge DIR_2
+ { '3', 94 }, // Charge DIR_3
+ { '4', 95 }, // Charge DIR_4
+ { '6', 96 }, // Charge DIR_6
+ { '7', 97 }, // Charge DIR_7
+ { '8', 98 }, // Charge DIR_8
+ { '9', 99 }, // Charge DIR_9
+ // Big letter Text
+ { 'M', 123 }, // MAX
+ // Condition of Positions
+ { '-', 129 }, // Close
+ { '=', 130 }, // Away
+ { '*', 132 }, // Serious Tap
+ { '?', 133 }, // Any Button
+ { 0, 0 } // end of array
+};
+
+static fix_strings_t convert_text[] =
+{
+ // Alphabetic Buttons: A~Z
+ { "A-button", 1 }, // BTN_A
+ { "B-button", 2 }, // BTN_B
+ { "C-button", 3 }, // BTN_C
+ { "D-button", 4 }, // BTN_D
+ { "E-button", 5 }, // BTN_E
+ { "F-button", 6 }, // BTN_F
+ { "G-button", 7 }, // BTN_G
+ { "H-button", 8 }, // BTN_H
+ { "I-button", 9 }, // BTN_I
+ { "J-button", 10 }, // BTN_J
+ { "K-button", 11 }, // BTN_K
+ { "L-button", 12 }, // BTN_L
+ { "M-button", 13 }, // BTN_M
+ { "N-button", 14 }, // BTN_N
+ { "O-button", 15 }, // BTN_O
+ { "P-button", 16 }, // BTN_P
+ { "Q-button", 17 }, // BTN_Q
+ { "R-button", 18 }, // BTN_R
+ { "S-button", 19 }, // BTN_S
+ { "T-button", 20 }, // BTN_T
+ { "U-button", 21 }, // BTN_U
+ { "V-button", 22 }, // BTN_V
+ { "W-button", 23 }, // BTN_W
+ { "X-button", 24 }, // BTN_X
+ { "Y-button", 25 }, // BTN_Y
+ { "Z-button", 26 }, // BTN_Z
+ // Special Moves and Buttons
+ { "decrease", 37 }, // BTN_DEC
+ { "increase", 38 }, // BTN_INC
+ { "BALL", 45 }, // Joystick Ball
+ { "start", 51 }, // BTN_START
+ { "select", 52 }, // BTN_SELECT
+ { "punch", 53 }, // BTN_PUNCH
+ { "kick", 54 }, // BTN_KICK
+ { "guard", 55 }, // BTN_GUARD
+ { "L-punch", 57 }, // Light Punch
+ { "M-punch", 58 }, // Middle Punch
+ { "S-punch", 59 }, // Strong Punch
+ { "L-kick", 60 }, // Light Kick
+ { "M-kick", 61 }, // Middle Kick
+ { "S-kick", 62 }, // Strong Kick
+ { "3-kick", 63 }, // 3 Kick
+ { "3-punch", 64 }, // 3 Punch
+ { "2-kick", 65 }, // 2 Kick
+ { "2-punch", 66 }, // 2 Pick
+ // Custom Buttons and Cursor Buttons
+ { "custom1", 67 }, // CUSTOM_1
+ { "custom2", 68 }, // CUSTOM_2
+ { "custom3", 69 }, // CUSTOM_3
+ { "custom4", 70 }, // CUSTOM_4
+ { "custom5", 71 }, // CUSTOM_5
+ { "custom6", 72 }, // CUSTOM_6
+ { "custom7", 73 }, // CUSTOM_7
+ { "custom8", 74 }, // CUSTOM_8
+ { "up", 75 }, // (Cursor Up)
+ { "down", 76 }, // (Cursor Down)
+ { "left", 77 }, // (Cursor Left)
+ { "right", 78 }, // (Cursor Right)
+ // Player Lever
+ { "lever", 79 }, // Non Player Lever
+ { "nplayer", 80 }, // Gray Color Lever
+ { "1player", 81 }, // 1 Player Lever
+ { "2player", 82 }, // 2 Player Lever
+ { "3player", 83 }, // 3 Player Lever
+ { "4player", 84 }, // 4 Player Lever
+ { "5player", 85 }, // 5 Player Lever
+ { "6player", 86 }, // 6 Player Lever
+ { "7player", 87 }, // 7 Player Lever
+ { "8player", 88 }, // 8 Player Lever
+ // Composition of Arrow Directions
+ { "-->", 90 }, // Arrow
+ { "==>", 91 }, // Continue Arrow
+ { "hcb", 100 }, // Half Circle Back
+ { "huf", 101 }, // Half Circle Front Up
+ { "hcf", 102 }, // Half Circle Front
+ { "hub", 103 }, // Half Circle Back Up
+ { "qfd", 104 }, // 1/4 Cir For 2 Down
+ { "qdb", 105 }, // 1/4 Cir Down 2 Back
+ { "qbu", 106 }, // 1/4 Cir Back 2 Up
+ { "quf", 107 }, // 1/4 Cir Up 2 For
+ { "qbd", 108 }, // 1/4 Cir Back 2 Down
+ { "qdf", 109 }, // 1/4 Cir Down 2 For
+ { "qfu", 110 }, // 1/4 Cir For 2 Up
+ { "qub", 111 }, // 1/4 Cir Up 2 Back
+ { "fdf", 112 }, // Full Clock Forward
+ { "fub", 113 }, // Full Clock Back
+ { "fuf", 114 }, // Full Count Forward
+ { "fdb", 115 }, // Full Count Back
+ { "xff", 116 }, // 2x Forward
+ { "xbb", 117 }, // 2x Back
+ { "dsf", 118 }, // Dragon Screw Forward
+ { "dsb", 119 }, // Dragon Screw Back
+ // Big letter Text
+ { "AIR", 121 }, // AIR
+ { "DIR", 122 }, // DIR
+ { "MAX", 123 }, // MAX
+ { "TAP", 124 }, // TAP
+ // Condition of Positions
+ { "jump", 125 }, // Jump
+ { "hold", 126 }, // Hold
+ { "air", 127 }, // Air
+ { "sit", 128 }, // Squatting
+ { "close", 129 }, // Close
+ { "away", 130 }, // Away
+ { "charge", 131 }, // Charge
+ { "tap", 132 }, // Serious Tap
+ { "button", 133 }, // Any Button
+ { 0, 0 } // end of array
+};
+
+#endif /* __UI_CMDDATA_H__ */
diff --git a/src/emu/ui/cmdrender.h b/src/emu/ui/cmdrender.h
new file mode 100644
index 00000000000..d9bf466f1e9
--- /dev/null
+++ b/src/emu/ui/cmdrender.h
@@ -0,0 +1,151 @@
+// license:BSD-3-Clause
+// copyright-holders:Dankan1890
+/***************************************************************************
+
+ ui/cmdrender.h
+
+ UI rendfont.
+
+***************************************************************************/
+
+#include "ui/uicmd14.fh"
+#include "ui/cmddata.h"
+
+void convert_command_glyph(std::string &str)
+{
+ int j;
+ const char *s = str.c_str();
+ int len = str.length();
+ int buflen = (len + 2) * 2;
+ char *d = global_alloc_array(char, buflen);
+
+ for (int i = j = 0; i < len;)
+ {
+ fix_command_t *fixcmd = nullptr;
+ unicode_char uchar;
+ int ucharcount = uchar_from_utf8(&uchar, s + i, len - i);
+ if (ucharcount == -1)
+ break;
+ else if (ucharcount != 1)
+ goto process_next;
+ else if (s[i] == '\n')
+ uchar = '\n';
+ else if (s[i] == COMMAND_CONVERT_TEXT)
+ {
+ if (s[i] == s[i + 1])
+ ++i;
+ else
+ {
+ fix_strings_t *fixtext = convert_text;
+ for (; fixtext->glyph_code; ++fixtext)
+ {
+ if (!fixtext->glyph_str_len)
+ fixtext->glyph_str_len = strlen(fixtext->glyph_str);
+
+ if (strncmp(fixtext->glyph_str, s + i + 1, fixtext->glyph_str_len) == 0)
+ {
+ uchar = fixtext->glyph_code + COMMAND_UNICODE;
+ i += strlen(fixtext->glyph_str);
+ break;
+ }
+ }
+ }
+ }
+ else if (s[i] == COMMAND_DEFAULT_TEXT)
+ fixcmd = default_text;
+ else if (s[i] == COMMAND_EXPAND_TEXT)
+ fixcmd = expand_text;
+
+ if (fixcmd)
+ {
+ if (s[i] == s[i + 1])
+ i++;
+ else
+ {
+ for (; fixcmd->glyph_code; ++fixcmd)
+ if (s[i + 1] == fixcmd->glyph_char)
+ {
+ uchar = fixcmd->glyph_code + COMMAND_UNICODE;
+ ++i;
+ break;
+ }
+ }
+ }
+process_next:
+ i += ucharcount;
+ ucharcount = utf8_from_uchar(d + j, buflen - j - 1, uchar);
+ if (ucharcount == -1)
+ break;
+ j += ucharcount;
+ }
+ d[j] = '\0';
+ str = d;
+ global_free_array(d);
+}
+
+void render_font::render_font_command_glyph()
+{
+ emu_file ramfile(OPEN_FLAG_READ);
+
+ if (ramfile.open_ram(font_uicmd14, sizeof(font_uicmd14)) == FILERR_NONE)
+ load_cached_cmd(ramfile, 0);
+}
+
+bool render_font::load_cached_cmd(emu_file &file, UINT32 hash)
+{
+ UINT64 filesize = file.size();
+ UINT8 header[CACHED_HEADER_SIZE];
+ UINT32 bytes_read = file.read(header, CACHED_HEADER_SIZE);
+
+ if (bytes_read != CACHED_HEADER_SIZE)
+ return false;
+
+ if (header[0] != 'f' || header[1] != 'o' || header[2] != 'n' || header[3] != 't')
+ return false;
+ if (header[4] != (UINT8)(hash >> 24) || header[5] != (UINT8)(hash >> 16) || header[6] != (UINT8)(hash >> 8) || header[7] != (UINT8)hash)
+ return false;
+ m_height_cmd = (header[8] << 8) | header[9];
+ m_yoffs_cmd = (INT16)((header[10] << 8) | header[11]);
+ UINT32 numchars = (header[12] << 24) | (header[13] << 16) | (header[14] << 8) | header[15];
+ if (filesize - CACHED_HEADER_SIZE < numchars * CACHED_CHAR_SIZE)
+ return false;
+
+ m_rawdata_cmd.resize(filesize - CACHED_HEADER_SIZE);
+ bytes_read = file.read(&m_rawdata_cmd[0], filesize - CACHED_HEADER_SIZE);
+ if (bytes_read != filesize - CACHED_HEADER_SIZE)
+ {
+ m_rawdata_cmd.clear();
+ return false;
+ }
+
+ UINT64 offset = numchars * CACHED_CHAR_SIZE;
+ for (int chindex = 0; chindex < numchars; chindex++)
+ {
+ const UINT8 *info = reinterpret_cast<UINT8 *>(&m_rawdata_cmd[chindex * CACHED_CHAR_SIZE]);
+ int chnum = (info[0] << 8) | info[1];
+
+ if (!m_glyphs_cmd[chnum / 256])
+ m_glyphs_cmd[chnum / 256] = new glyph[256];
+
+ glyph &gl = m_glyphs_cmd[chnum / 256][chnum % 256];
+
+ if (chnum >= COMMAND_UNICODE && chnum < COMMAND_UNICODE + COLOR_BUTTONS)
+ gl.color = color_table[chnum - COMMAND_UNICODE];
+
+ gl.width = (info[2] << 8) | info[3];
+ gl.xoffs = (INT16)((info[4] << 8) | info[5]);
+ gl.yoffs = (INT16)((info[6] << 8) | info[7]);
+ gl.bmwidth = (info[8] << 8) | info[9];
+ gl.bmheight = (info[10] << 8) | info[11];
+ gl.rawdata = &m_rawdata_cmd[offset];
+
+ offset += (gl.bmwidth * gl.bmheight + 7) / 8;
+ if (offset > filesize - CACHED_HEADER_SIZE)
+ {
+ m_rawdata_cmd.clear();
+ return false;
+ }
+ }
+
+ return true;
+}
diff --git a/src/emu/ui/ctrlmenu.cpp b/src/emu/ui/ctrlmenu.cpp
new file mode 100644
index 00000000000..5d006693faf
--- /dev/null
+++ b/src/emu/ui/ctrlmenu.cpp
@@ -0,0 +1,149 @@
+// license:BSD-3-Clause
+// copyright-holders:Dankan1890
+/*********************************************************************
+
+ ui/ctrlmenu.cpp
+
+ Internal UI user interface.
+
+*********************************************************************/
+
+#include "emu.h"
+#include "ui/ui.h"
+#include "ui/menu.h"
+#include "ui/ctrlmenu.h"
+
+const char *ui_menu_controller_mapping::m_device_status[] = { "none", "keyboard", "mouse", "lightgun", "joystick" };
+
+ui_menu_controller_mapping::ctrl_option ui_menu_controller_mapping::m_options[] = {
+ { 0, nullptr, nullptr },
+ { 0, "Lightgun Device Assignment", OPTION_LIGHTGUN_DEVICE },
+ { 0, "Trackball Device Assignment", OPTION_TRACKBALL_DEVICE },
+ { 0, "Pedal Device Assignment", OPTION_PEDAL_DEVICE },
+ { 0, "Adstick Device Assignment", OPTION_ADSTICK_DEVICE },
+ { 0, "Paddle Device Assignment", OPTION_PADDLE_DEVICE },
+ { 0, "Dial Device Assignment", OPTION_DIAL_DEVICE },
+ { 0, "Positional Device Assignment", OPTION_POSITIONAL_DEVICE },
+ { 0, "Mouse Device Assignment", OPTION_MOUSE_DEVICE }
+};
+
+//-------------------------------------------------
+// ctor
+//-------------------------------------------------
+
+ui_menu_controller_mapping::ui_menu_controller_mapping(running_machine &machine, render_container *container) : ui_menu(machine, container)
+{
+ for (int d = 1; d < ARRAY_LENGTH(m_options); ++d)
+ m_options[d].status = check_status(machine.options().value(m_options[d].option), m_options[d].option);
+}
+
+//-------------------------------------------------
+// dtor
+//-------------------------------------------------
+
+ui_menu_controller_mapping::~ui_menu_controller_mapping()
+{
+ std::string error_string;
+ for (int d = 1; d < ARRAY_LENGTH(m_options); ++d)
+ {
+ if (strcmp(machine().options().value(m_options[d].option),m_device_status[m_options[d].status])!=0)
+ {
+ machine().options().set_value(m_options[d].option, m_device_status[m_options[d].status], OPTION_PRIORITY_CMDLINE, error_string);
+ machine().options().mark_changed(m_options[d].option);
+ }
+ }
+}
+
+//-------------------------------------------------
+// handle
+//-------------------------------------------------
+
+void ui_menu_controller_mapping::handle()
+{
+ bool changed = false;
+
+ // process the menu
+ const ui_menu_event *m_event = process(0);
+ if (m_event != nullptr && m_event->itemref != nullptr)
+ {
+ if (m_event->iptkey == IPT_UI_LEFT || m_event->iptkey == IPT_UI_RIGHT)
+ {
+ changed = true;
+ FPTR value = (FPTR)m_event->itemref;
+ (m_event->iptkey == IPT_UI_RIGHT) ? m_options[value].status++ : m_options[value].status--;
+ }
+ }
+
+ if (changed)
+ reset(UI_MENU_RESET_REMEMBER_REF);
+}
+
+//-------------------------------------------------
+// populate
+//-------------------------------------------------
+
+void ui_menu_controller_mapping::populate()
+{
+ // add options
+ for (int d = 1; d < ARRAY_LENGTH(m_options); ++d)
+ {
+ UINT32 arrow_flags = get_arrow_flags(0, ARRAY_LENGTH(m_device_status) - 1, m_options[d].status);
+ item_append(m_options[d].description, m_device_status[m_options[d].status], arrow_flags, (void *)(FPTR)d);
+ }
+ item_append(MENU_SEPARATOR_ITEM, nullptr, 0, nullptr);
+ customtop = machine().ui().get_line_height() + (3.0f * UI_BOX_TB_BORDER);
+}
+
+//-------------------------------------------------
+// perform our special rendering
+//-------------------------------------------------
+
+void ui_menu_controller_mapping::custom_render(void *selectedref, float top, float bottom, float origx1, float origy1, float origx2, float origy2)
+{
+ float width, maxwidth = origx2 - origx1;
+ ui_manager &mui = machine().ui();
+
+ mui.draw_text_full(container, "Device Mapping", 0.0f, 0.0f, 1.0f, JUSTIFY_CENTER, WRAP_TRUNCATE,
+ DRAW_NONE, ARGB_WHITE, ARGB_BLACK, &width, nullptr);
+ width += 2 * UI_BOX_LR_BORDER;
+ maxwidth = MAX(maxwidth, width);
+
+ // compute our bounds
+ float x1 = 0.5f - 0.5f * maxwidth;
+ float x2 = x1 + maxwidth;
+ float y1 = origy1 - top;
+ float y2 = origy1 - UI_BOX_TB_BORDER;
+
+ // draw a box
+ mui.draw_outlined_box(container, x1, y1, x2, y2, UI_GREEN_COLOR);
+
+ // take off the borders
+ x1 += UI_BOX_LR_BORDER;
+ x2 -= UI_BOX_LR_BORDER;
+ y1 += UI_BOX_TB_BORDER;
+
+ // draw the text within it
+ mui.draw_text_full(container, "Device Mapping", x1, y1, x2 - x1, JUSTIFY_CENTER, WRAP_TRUNCATE,
+ DRAW_NORMAL, UI_TEXT_COLOR, UI_TEXT_BG_COLOR, nullptr, nullptr);
+
+}
+
+//-------------------------------------------------
+// return current value
+//-------------------------------------------------
+
+int ui_menu_controller_mapping::check_status(const char *status, const char *option)
+{
+ for (int d = 0; *m_device_status[d]; d++)
+ if (!strcmp(m_device_status[d], status))
+ return d;
+
+ emu_options def_opt;
+ const char *def_val = def_opt.value(option);
+
+ for (int d = 0; *m_device_status[d]; d++)
+ if (!strcmp(m_device_status[d], def_val))
+ return d;
+
+ return 1;
+}
diff --git a/src/emu/ui/ctrlmenu.h b/src/emu/ui/ctrlmenu.h
new file mode 100644
index 00000000000..4c1325071d6
--- /dev/null
+++ b/src/emu/ui/ctrlmenu.h
@@ -0,0 +1,41 @@
+// license:BSD-3-Clause
+// copyright-holders:Dankan1890
+/***************************************************************************
+
+ ui/ctrlmenu.h
+
+ Internal UI user interface.
+
+***************************************************************************/
+#pragma once
+
+#ifndef __UI_CTRLMENU_H__
+#define __UI_CTRLMENU_H__
+
+//-------------------------------------------------
+// class controller mapping menu
+//-------------------------------------------------
+
+class ui_menu_controller_mapping : public ui_menu
+{
+public:
+ ui_menu_controller_mapping(running_machine &machine, render_container *container);
+ virtual ~ui_menu_controller_mapping();
+ virtual void populate() override;
+ virtual void handle() override;
+ virtual void custom_render(void *selectedref, float top, float bottom, float x, float y, float x2, float y2) override;
+
+private:
+ struct ctrl_option
+ {
+ int status;
+ const char *description;
+ const char *option;
+ };
+
+ static const char *m_device_status[];
+ static ctrl_option m_options[];
+ int check_status(const char *status, const char *option);
+};
+
+#endif /* __UI_CTRLMENU_H__ */
diff --git a/src/emu/ui/custmenu.cpp b/src/emu/ui/custmenu.cpp
new file mode 100644
index 00000000000..45ca407a84b
--- /dev/null
+++ b/src/emu/ui/custmenu.cpp
@@ -0,0 +1,616 @@
+// license:BSD-3-Clause
+// copyright-holders:Dankan1890
+/*********************************************************************
+
+ ui/custmenu.cpp
+
+ Internal UI user interface.
+
+*********************************************************************/
+
+#include "emu.h"
+#include "ui/ui.h"
+#include "ui/menu.h"
+#include "ui/custmenu.h"
+#include "ui/selector.h"
+#include "ui/inifile.h"
+#include "rendfont.h"
+
+/**************************************************
+ MENU CUSTOM FILTER
+**************************************************/
+//-------------------------------------------------
+// ctor / dtor
+//-------------------------------------------------
+ui_menu_custom_filter::ui_menu_custom_filter(running_machine &machine, render_container *container, bool _single_menu) : ui_menu(machine, container)
+{
+ m_single_menu = _single_menu;
+ m_added = false;
+}
+
+ui_menu_custom_filter::~ui_menu_custom_filter()
+{
+ if (m_single_menu)
+ ui_menu::menu_stack->reset(UI_MENU_RESET_SELECT_FIRST);
+ save_custom_filters();
+}
+
+//-------------------------------------------------
+// handle
+//-------------------------------------------------
+void ui_menu_custom_filter::handle()
+{
+ bool changed = false;
+ m_added = false;
+
+ // process the menu
+ const ui_menu_event *m_event = process(UI_MENU_PROCESS_LR_REPEAT);
+ if (m_event != nullptr && m_event->itemref != nullptr)
+ {
+ switch ((FPTR)m_event->itemref)
+ {
+ case MAIN_FILTER:
+ if (m_event->iptkey == IPT_UI_LEFT || m_event->iptkey == IPT_UI_RIGHT)
+ {
+ (m_event->iptkey == IPT_UI_RIGHT) ? custfltr::main++ : custfltr::main--;
+ changed = true;
+ }
+ break;
+
+ case ADD_FILTER:
+ if (m_event->iptkey == IPT_UI_SELECT)
+ {
+ custfltr::numother++;
+ custfltr::other[custfltr::numother] = FILTER_UNAVAILABLE + 1;
+ m_added = true;
+ }
+ break;
+
+ case REMOVE_FILTER:
+ if (m_event->iptkey == IPT_UI_SELECT)
+ {
+ custfltr::other[custfltr::numother] = FILTER_UNAVAILABLE + 1;
+ custfltr::numother--;
+ changed = true;
+ }
+ break;
+ }
+
+ if ((FPTR)m_event->itemref >= OTHER_FILTER && (FPTR)m_event->itemref < OTHER_FILTER + MAX_CUST_FILTER)
+ {
+ int pos = (int)((FPTR)m_event->itemref - OTHER_FILTER);
+ if (m_event->iptkey == IPT_UI_LEFT && custfltr::other[pos] > FILTER_UNAVAILABLE + 1)
+ {
+ custfltr::other[pos]--;
+ for ( ; custfltr::other[pos] > FILTER_UNAVAILABLE && (custfltr::other[pos] == FILTER_CATEGORY
+ || custfltr::other[pos] == FILTER_FAVORITE_GAME); custfltr::other[pos]--) ;
+ changed = true;
+ }
+ else if (m_event->iptkey == IPT_UI_RIGHT && custfltr::other[pos] < FILTER_LAST - 1)
+ {
+ custfltr::other[pos]++;
+ for ( ; custfltr::other[pos] < FILTER_LAST && (custfltr::other[pos] == FILTER_CATEGORY
+ || custfltr::other[pos] == FILTER_FAVORITE_GAME); custfltr::other[pos]++) ;
+ changed = true;
+ }
+ else if (m_event->iptkey == IPT_UI_SELECT)
+ {
+ size_t total = main_filters::length;
+ std::vector<std::string> s_sel(total);
+ for (size_t index = 0; index < total; ++index)
+ if (index <= FILTER_UNAVAILABLE || index == FILTER_CATEGORY || index == FILTER_FAVORITE_GAME || index == FILTER_CUSTOM)
+ s_sel[index] = "_skip_";
+ else
+ s_sel[index] = main_filters::text[index];
+
+ ui_menu::stack_push(global_alloc_clear<ui_menu_selector>(machine(), container, s_sel, custfltr::other[pos]));
+ }
+ }
+ else if ((FPTR)m_event->itemref >= SCREEN_FILTER && (FPTR)m_event->itemref < SCREEN_FILTER + MAX_CUST_FILTER)
+ {
+ int pos = (int)((FPTR)m_event->itemref - SCREEN_FILTER);
+ if (m_event->iptkey == IPT_UI_LEFT && custfltr::screen[pos] > 0)
+ {
+ custfltr::screen[pos]--;
+ changed = true;
+ }
+ else if (m_event->iptkey == IPT_UI_RIGHT && custfltr::screen[pos] < screen_filters::length - 1)
+ {
+ custfltr::screen[pos]++;
+ changed = true;
+ }
+ else if (m_event->iptkey == IPT_UI_SELECT)
+ {
+ size_t total = screen_filters::length;
+ std::vector<std::string> s_sel(total);
+ for (size_t index = 0; index < total; ++index)
+ s_sel[index] = screen_filters::text[index];
+
+ ui_menu::stack_push(global_alloc_clear<ui_menu_selector>(machine(), container, s_sel, custfltr::screen[pos]));
+ }
+ }
+ else if ((FPTR)m_event->itemref >= YEAR_FILTER && (FPTR)m_event->itemref < YEAR_FILTER + MAX_CUST_FILTER)
+ {
+ int pos = (int)((FPTR)m_event->itemref - YEAR_FILTER);
+ if (m_event->iptkey == IPT_UI_LEFT && custfltr::year[pos] > 0)
+ {
+ custfltr::year[pos]--;
+ changed = true;
+ }
+ else if (m_event->iptkey == IPT_UI_RIGHT && custfltr::year[pos] < c_year::ui.size() - 1)
+ {
+ custfltr::year[pos]++;
+ changed = true;
+ }
+ else if (m_event->iptkey == IPT_UI_SELECT)
+ ui_menu::stack_push(global_alloc_clear<ui_menu_selector>(machine(), container, c_year::ui, custfltr::year[pos]));
+ }
+ else if ((FPTR)m_event->itemref >= MNFCT_FILTER && (FPTR)m_event->itemref < MNFCT_FILTER + MAX_CUST_FILTER)
+ {
+ int pos = (int)((FPTR)m_event->itemref - MNFCT_FILTER);
+ if (m_event->iptkey == IPT_UI_LEFT && custfltr::mnfct[pos] > 0)
+ {
+ custfltr::mnfct[pos]--;
+ changed = true;
+ }
+ else if (m_event->iptkey == IPT_UI_RIGHT && custfltr::mnfct[pos] < c_mnfct::ui.size() - 1)
+ {
+ custfltr::mnfct[pos]++;
+ changed = true;
+ }
+ else if (m_event->iptkey == IPT_UI_SELECT)
+ ui_menu::stack_push(global_alloc_clear<ui_menu_selector>(machine(), container, c_mnfct::ui, custfltr::mnfct[pos]));
+ }
+ }
+
+ if (changed)
+ reset(UI_MENU_RESET_REMEMBER_REF);
+ else if (m_added)
+ reset(UI_MENU_RESET_SELECT_FIRST);
+}
+
+//-------------------------------------------------
+// populate
+//-------------------------------------------------
+void ui_menu_custom_filter::populate()
+{
+ // add main filter
+ UINT32 arrow_flags = get_arrow_flags((int)FILTER_ALL, (int)FILTER_UNAVAILABLE, custfltr::main);
+ item_append("Main filter", main_filters::text[custfltr::main], arrow_flags, (void *)(FPTR)MAIN_FILTER);
+
+ // add other filters
+ for (int x = 1; x <= custfltr::numother; x++)
+ {
+ item_append(MENU_SEPARATOR_ITEM, nullptr, 0, nullptr);
+
+ // add filter items
+ arrow_flags = get_arrow_flags((int)FILTER_UNAVAILABLE + 1, (int)FILTER_LAST - 1, custfltr::other[x]);
+ item_append("Other filter", main_filters::text[custfltr::other[x]], arrow_flags, (void *)(FPTR)(OTHER_FILTER + x));
+
+ if (m_added)
+ selected = item.size() - 2;
+
+ // add manufacturer subitem
+ if (custfltr::other[x] == FILTER_MANUFACTURER && c_mnfct::ui.size() > 0)
+ {
+ arrow_flags = get_arrow_flags(0, c_mnfct::ui.size() - 1, custfltr::mnfct[x]);
+ std::string fbuff("^!Manufacturer");
+ convert_command_glyph(fbuff);
+ item_append(fbuff.c_str(), c_mnfct::ui[custfltr::mnfct[x]].c_str(), arrow_flags, (void *)(FPTR)(MNFCT_FILTER + x));
+ }
+
+ // add year subitem
+ else if (custfltr::other[x] == FILTER_YEAR && c_year::ui.size() > 0)
+ {
+ arrow_flags = get_arrow_flags(0, c_year::ui.size() - 1, custfltr::year[x]);
+ std::string fbuff("^!Year");
+ convert_command_glyph(fbuff);
+ item_append(fbuff.c_str(), c_year::ui[custfltr::year[x]].c_str(), arrow_flags, (void *)(FPTR)(YEAR_FILTER + x));
+ }
+
+ // add screen subitem
+ else if (custfltr::other[x] == FILTER_SCREEN)
+ {
+ arrow_flags = get_arrow_flags(0, screen_filters::length - 1, custfltr::screen[x]);
+ std::string fbuff("^!Screen type");
+ convert_command_glyph(fbuff);
+ item_append(fbuff.c_str(), screen_filters::text[custfltr::screen[x]], arrow_flags, (void *)(FPTR)(SCREEN_FILTER + x));
+ }
+
+ }
+
+ item_append(MENU_SEPARATOR_ITEM, nullptr, 0, nullptr);
+
+ if (custfltr::numother > 0)
+ item_append("Remove last filter", nullptr, 0, (void *)(FPTR)REMOVE_FILTER);
+
+ if (custfltr::numother < MAX_CUST_FILTER - 2)
+ item_append("Add filter", nullptr, 0, (void *)(FPTR)ADD_FILTER);
+
+ item_append(MENU_SEPARATOR_ITEM, nullptr, 0, nullptr);
+
+ customtop = machine().ui().get_line_height() + 3.0f * UI_BOX_TB_BORDER;
+}
+
+//-------------------------------------------------
+// perform our special rendering
+//-------------------------------------------------
+void ui_menu_custom_filter::custom_render(void *selectedref, float top, float bottom, float origx1, float origy1, float origx2, float origy2)
+{
+ float width;
+ ui_manager &mui = machine().ui();
+
+ // get the size of the text
+ mui.draw_text_full(container, "Select custom filters:", 0.0f, 0.0f, 1.0f, JUSTIFY_CENTER, WRAP_NEVER,
+ DRAW_NONE, ARGB_WHITE, ARGB_BLACK, &width, nullptr);
+ width += (2.0f * UI_BOX_LR_BORDER) + 0.01f;
+ float maxwidth = MAX(width, origx2 - origx1);
+
+ // compute our bounds
+ float x1 = 0.5f - 0.5f * maxwidth;
+ float x2 = x1 + maxwidth;
+ float y1 = origy1 - top;
+ float y2 = origy1 - UI_BOX_TB_BORDER;
+
+ // draw a box
+ mui.draw_outlined_box(container, x1, y1, x2, y2, UI_GREEN_COLOR);
+
+ // take off the borders
+ x1 += UI_BOX_LR_BORDER;
+ x2 -= UI_BOX_LR_BORDER;
+ y1 += UI_BOX_TB_BORDER;
+
+ // draw the text within it
+ mui.draw_text_full(container, "Select custom filters:", x1, y1, x2 - x1, JUSTIFY_CENTER, WRAP_NEVER,
+ DRAW_NORMAL, UI_TEXT_COLOR, UI_TEXT_BG_COLOR, nullptr, nullptr);
+}
+
+//-------------------------------------------------
+// save custom filters info to file
+//-------------------------------------------------
+
+void ui_menu_custom_filter::save_custom_filters()
+{
+ // attempt to open the output file
+ emu_file file(machine().ui().options().ui_path(), OPEN_FLAG_WRITE | OPEN_FLAG_CREATE | OPEN_FLAG_CREATE_PATHS);
+ if (file.open("custom_", emulator_info::get_configname(), "_filter.ini") == FILERR_NONE)
+ {
+ // generate custom filters info
+ std::string cinfo;
+ strprintf(cinfo, "Total filters = %d\n", (custfltr::numother + 1));
+ cinfo.append("Main filter = ").append(main_filters::text[custfltr::main]).append("\n");
+
+ for (int x = 1; x <= custfltr::numother; x++)
+ {
+ cinfo.append("Other filter = ").append(main_filters::text[custfltr::other[x]]).append("\n");
+ if (custfltr::other[x] == FILTER_MANUFACTURER)
+ cinfo.append(" Manufacturer filter = ").append(c_mnfct::ui[custfltr::mnfct[x]]).append("\n");
+ else if (custfltr::other[x] == FILTER_YEAR)
+ cinfo.append(" Year filter = ").append(c_year::ui[custfltr::year[x]]).append("\n");
+ else if (custfltr::other[x] == FILTER_SCREEN)
+ cinfo.append(" Screen filter = ").append(screen_filters::text[custfltr::screen[x]]).append("\n");
+ }
+ file.puts(cinfo.c_str());
+ file.close();
+ }
+}
+
+/**************************************************
+ MENU CUSTOM SOFTWARE FILTER
+**************************************************/
+//-------------------------------------------------
+// ctor / dtor
+//-------------------------------------------------
+ui_menu_swcustom_filter::ui_menu_swcustom_filter(running_machine &machine, render_container *container, const game_driver *_driver, s_filter &_filter) :
+ ui_menu(machine, container), m_added(false), m_filter(_filter), m_driver(_driver)
+{
+}
+
+ui_menu_swcustom_filter::~ui_menu_swcustom_filter()
+{
+ ui_menu::menu_stack->reset(UI_MENU_RESET_SELECT_FIRST);
+ save_sw_custom_filters();
+}
+
+//-------------------------------------------------
+// handle
+//-------------------------------------------------
+void ui_menu_swcustom_filter::handle()
+{
+ bool changed = false;
+ m_added = false;
+
+ // process the menu
+ const ui_menu_event *m_event = process(UI_MENU_PROCESS_LR_REPEAT);
+ if (m_event != nullptr && m_event->itemref != nullptr)
+ {
+ switch ((FPTR)m_event->itemref)
+ {
+ case MAIN_FILTER:
+ if (m_event->iptkey == IPT_UI_LEFT || m_event->iptkey == IPT_UI_RIGHT)
+ {
+ (m_event->iptkey == IPT_UI_RIGHT) ? sw_custfltr::main++ : sw_custfltr::main--;
+ changed = true;
+ }
+ break;
+
+ case ADD_FILTER:
+ if (m_event->iptkey == IPT_UI_SELECT)
+ {
+ sw_custfltr::numother++;
+ sw_custfltr::other[sw_custfltr::numother] = UI_SW_UNAVAILABLE + 1;
+ m_added = true;
+ }
+ break;
+
+ case REMOVE_FILTER:
+ if (m_event->iptkey == IPT_UI_SELECT)
+ {
+ sw_custfltr::other[sw_custfltr::numother] = UI_SW_UNAVAILABLE + 1;
+ sw_custfltr::numother--;
+ changed = true;
+ }
+ break;
+ }
+
+ if ((FPTR)m_event->itemref >= OTHER_FILTER && (FPTR)m_event->itemref < OTHER_FILTER + MAX_CUST_FILTER)
+ {
+ int pos = (int)((FPTR)m_event->itemref - OTHER_FILTER);
+ if (m_event->iptkey == IPT_UI_LEFT && sw_custfltr::other[pos] > UI_SW_UNAVAILABLE + 1)
+ {
+ sw_custfltr::other[pos]--;
+ changed = true;
+ }
+ else if (m_event->iptkey == IPT_UI_RIGHT && sw_custfltr::other[pos] < UI_SW_LAST - 1)
+ {
+ sw_custfltr::other[pos]++;
+ changed = true;
+ }
+ else if (m_event->iptkey == IPT_UI_SELECT)
+ {
+ size_t total = sw_filters::length;
+ std::vector<std::string> s_sel(total);
+ for (size_t index = 0; index < total; ++index)
+ if (index <= UI_SW_UNAVAILABLE|| index == UI_SW_CUSTOM)
+ s_sel[index] = "_skip_";
+ else
+ s_sel[index] = sw_filters::text[index];
+
+ ui_menu::stack_push(global_alloc_clear<ui_menu_selector>(machine(), container, s_sel, sw_custfltr::other[pos]));
+ }
+ }
+ else if ((FPTR)m_event->itemref >= YEAR_FILTER && (FPTR)m_event->itemref < YEAR_FILTER + MAX_CUST_FILTER)
+ {
+ int pos = (int)((FPTR)m_event->itemref - YEAR_FILTER);
+ if (m_event->iptkey == IPT_UI_LEFT && sw_custfltr::year[pos] > 0)
+ {
+ sw_custfltr::year[pos]--;
+ changed = true;
+ }
+ else if (m_event->iptkey == IPT_UI_RIGHT && sw_custfltr::year[pos] < m_filter.year.ui.size() - 1)
+ {
+ sw_custfltr::year[pos]++;
+ changed = true;
+ }
+ else if (m_event->iptkey == IPT_UI_SELECT)
+ ui_menu::stack_push(global_alloc_clear<ui_menu_selector>(machine(), container, m_filter.year.ui, sw_custfltr::year[pos]));
+ }
+ else if ((FPTR)m_event->itemref >= TYPE_FILTER && (FPTR)m_event->itemref < TYPE_FILTER + MAX_CUST_FILTER)
+ {
+ int pos = (int)((FPTR)m_event->itemref - TYPE_FILTER);
+ if (m_event->iptkey == IPT_UI_LEFT && sw_custfltr::type[pos] > 0)
+ {
+ sw_custfltr::type[pos]--;
+ changed = true;
+ }
+ else if (m_event->iptkey == IPT_UI_RIGHT && sw_custfltr::type[pos] < m_filter.type.ui.size() - 1)
+ {
+ sw_custfltr::type[pos]++;
+ changed = true;
+ }
+ else if (m_event->iptkey == IPT_UI_SELECT)
+ ui_menu::stack_push(global_alloc_clear<ui_menu_selector>(machine(), container, m_filter.type.ui, sw_custfltr::type[pos]));
+ }
+ else if ((FPTR)m_event->itemref >= MNFCT_FILTER && (FPTR)m_event->itemref < MNFCT_FILTER + MAX_CUST_FILTER)
+ {
+ int pos = (int)((FPTR)m_event->itemref - MNFCT_FILTER);
+ if (m_event->iptkey == IPT_UI_LEFT && sw_custfltr::mnfct[pos] > 0)
+ {
+ sw_custfltr::mnfct[pos]--;
+ changed = true;
+ }
+ else if (m_event->iptkey == IPT_UI_RIGHT && sw_custfltr::mnfct[pos] < m_filter.publisher.ui.size() - 1)
+ {
+ sw_custfltr::mnfct[pos]++;
+ changed = true;
+ }
+ else if (m_event->iptkey == IPT_UI_SELECT)
+ ui_menu::stack_push(global_alloc_clear<ui_menu_selector>(machine(), container, m_filter.publisher.ui, sw_custfltr::mnfct[pos]));
+ }
+ else if ((FPTR)m_event->itemref >= REGION_FILTER && (FPTR)m_event->itemref < REGION_FILTER + MAX_CUST_FILTER)
+ {
+ int pos = (int)((FPTR)m_event->itemref - REGION_FILTER);
+ if (m_event->iptkey == IPT_UI_LEFT && sw_custfltr::region[pos] > 0)
+ {
+ sw_custfltr::region[pos]--;
+ changed = true;
+ }
+ else if (m_event->iptkey == IPT_UI_RIGHT && sw_custfltr::region[pos] < m_filter.region.ui.size() - 1)
+ {
+ sw_custfltr::region[pos]++;
+ changed = true;
+ }
+ else if (m_event->iptkey == IPT_UI_SELECT)
+ ui_menu::stack_push(global_alloc_clear<ui_menu_selector>(machine(), container, m_filter.region.ui, sw_custfltr::region[pos]));
+ }
+ else if ((FPTR)m_event->itemref >= LIST_FILTER && (FPTR)m_event->itemref < LIST_FILTER + MAX_CUST_FILTER)
+ {
+ int pos = (int)((FPTR)m_event->itemref - LIST_FILTER);
+ if (m_event->iptkey == IPT_UI_LEFT && sw_custfltr::list[pos] > 0)
+ {
+ sw_custfltr::list[pos]--;
+ changed = true;
+ }
+ else if (m_event->iptkey == IPT_UI_RIGHT && sw_custfltr::list[pos] < m_filter.swlist.name.size() - 1)
+ {
+ sw_custfltr::list[pos]++;
+ changed = true;
+ }
+ else if (m_event->iptkey == IPT_UI_SELECT)
+ ui_menu::stack_push(global_alloc_clear<ui_menu_selector>(machine(), container, m_filter.swlist.description, sw_custfltr::list[pos]));
+ }
+ }
+
+ if (changed)
+ reset(UI_MENU_RESET_REMEMBER_REF);
+ else if (m_added)
+ reset(UI_MENU_RESET_SELECT_FIRST);
+}
+
+//-------------------------------------------------
+// populate
+//-------------------------------------------------
+void ui_menu_swcustom_filter::populate()
+{
+ // add main filter
+ UINT32 arrow_flags = get_arrow_flags((int)UI_SW_ALL, (int)UI_SW_UNAVAILABLE, sw_custfltr::main);
+ item_append("Main filter", sw_filters::text[sw_custfltr::main], arrow_flags, (void *)(FPTR)MAIN_FILTER);
+
+ // add other filters
+ for (int x = 1; x <= sw_custfltr::numother; x++)
+ {
+ item_append(MENU_SEPARATOR_ITEM, nullptr, 0, nullptr);
+
+ // add filter items
+ arrow_flags = get_arrow_flags((int)UI_SW_UNAVAILABLE + 1, (int)UI_SW_LAST - 1, sw_custfltr::other[x]);
+ item_append("Other filter", sw_filters::text[sw_custfltr::other[x]], arrow_flags, (void *)(FPTR)(OTHER_FILTER + x));
+
+ if (m_added)
+ selected = item.size() - 2;
+
+ // add publisher subitem
+ if (sw_custfltr::other[x] == UI_SW_PUBLISHERS && m_filter.publisher.ui.size() > 0)
+ {
+ arrow_flags = get_arrow_flags(0, m_filter.publisher.ui.size() - 1, sw_custfltr::mnfct[x]);
+ std::string fbuff("^!Publisher");
+ convert_command_glyph(fbuff);
+ item_append(fbuff.c_str(), m_filter.publisher.ui[sw_custfltr::mnfct[x]].c_str(), arrow_flags, (void *)(FPTR)(MNFCT_FILTER + x));
+ }
+
+ // add year subitem
+ else if (sw_custfltr::other[x] == UI_SW_YEARS && m_filter.year.ui.size() > 0)
+ {
+ arrow_flags = get_arrow_flags(0, m_filter.year.ui.size() - 1, sw_custfltr::year[x]);
+ std::string fbuff("^!Year");
+ convert_command_glyph(fbuff);
+ item_append(fbuff.c_str(), m_filter.year.ui[sw_custfltr::year[x]].c_str(), arrow_flags, (void *)(FPTR)(YEAR_FILTER + x));
+ }
+
+ // add year subitem
+ else if (sw_custfltr::other[x] == UI_SW_LIST && m_filter.swlist.name.size() > 0)
+ {
+ arrow_flags = get_arrow_flags(0, m_filter.swlist.name.size() - 1, sw_custfltr::list[x]);
+ std::string fbuff("^!Software List");
+ convert_command_glyph(fbuff);
+ item_append(fbuff.c_str(), m_filter.swlist.description[sw_custfltr::list[x]].c_str(), arrow_flags, (void *)(FPTR)(LIST_FILTER + x));
+ }
+
+ // add device type subitem
+ else if (sw_custfltr::other[x] == UI_SW_TYPE && m_filter.type.ui.size() > 0)
+ {
+ arrow_flags = get_arrow_flags(0, m_filter.type.ui.size() - 1, sw_custfltr::type[x]);
+ std::string fbuff("^!Device type");
+ convert_command_glyph(fbuff);
+ item_append(fbuff.c_str(), m_filter.type.ui[sw_custfltr::type[x]].c_str(), arrow_flags, (void *)(FPTR)(TYPE_FILTER + x));
+ }
+
+ // add region subitem
+ else if (sw_custfltr::other[x] == UI_SW_REGION && m_filter.region.ui.size() > 0)
+ {
+ arrow_flags = get_arrow_flags(0, m_filter.region.ui.size() - 1, sw_custfltr::region[x]);
+ std::string fbuff("^!Region");
+ convert_command_glyph(fbuff);
+ item_append(fbuff.c_str(), m_filter.region.ui[sw_custfltr::region[x]].c_str(), arrow_flags, (void *)(FPTR)(REGION_FILTER + x));
+ }
+ }
+
+ item_append(MENU_SEPARATOR_ITEM, nullptr, 0, nullptr);
+
+ if (sw_custfltr::numother > 0)
+ item_append("Remove last filter", nullptr, 0, (void *)(FPTR)REMOVE_FILTER);
+
+ if (sw_custfltr::numother < MAX_CUST_FILTER - 2)
+ item_append("Add filter", nullptr, 0, (void *)(FPTR)ADD_FILTER);
+
+ item_append(MENU_SEPARATOR_ITEM, nullptr, 0, nullptr);
+
+ customtop = machine().ui().get_line_height() + 3.0f * UI_BOX_TB_BORDER;
+}
+
+//-------------------------------------------------
+// perform our special rendering
+//-------------------------------------------------
+void ui_menu_swcustom_filter::custom_render(void *selectedref, float top, float bottom, float origx1, float origy1, float origx2, float origy2)
+{
+ float width;
+ ui_manager &mui = machine().ui();
+
+ // get the size of the text
+ mui.draw_text_full(container, "Select custom filters:", 0.0f, 0.0f, 1.0f, JUSTIFY_CENTER, WRAP_NEVER,
+ DRAW_NONE, ARGB_WHITE, ARGB_BLACK, &width, nullptr);
+ width += (2.0f * UI_BOX_LR_BORDER) + 0.01f;
+ float maxwidth = MAX(width, origx2 - origx1);
+
+ // compute our bounds
+ float x1 = 0.5f - 0.5f * maxwidth;
+ float x2 = x1 + maxwidth;
+ float y1 = origy1 - top;
+ float y2 = origy1 - UI_BOX_TB_BORDER;
+
+ // draw a box
+ mui.draw_outlined_box(container, x1, y1, x2, y2, UI_GREEN_COLOR);
+
+ // take off the borders
+ x1 += UI_BOX_LR_BORDER;
+ x2 -= UI_BOX_LR_BORDER;
+ y1 += UI_BOX_TB_BORDER;
+
+ // draw the text within it
+ mui.draw_text_full(container, "Select custom filters:", x1, y1, x2 - x1, JUSTIFY_CENTER, WRAP_NEVER,
+ DRAW_NORMAL, UI_TEXT_COLOR, UI_TEXT_BG_COLOR, nullptr, nullptr);
+}
+
+//-------------------------------------------------
+// save custom filters info to file
+//-------------------------------------------------
+
+void ui_menu_swcustom_filter::save_sw_custom_filters()
+{
+ // attempt to open the output file
+ emu_file file(machine().ui().options().ui_path(), OPEN_FLAG_WRITE | OPEN_FLAG_CREATE | OPEN_FLAG_CREATE_PATHS);
+ if (file.open("custom_", m_driver->name, "_filter.ini") == FILERR_NONE)
+ {
+ // generate custom filters info
+ std::string cinfo;
+ strprintf(cinfo, "Total filters = %d\n", (sw_custfltr::numother + 1));
+ cinfo.append("Main filter = ").append(sw_filters::text[sw_custfltr::main]).append("\n");
+
+ for (int x = 1; x <= sw_custfltr::numother; x++)
+ {
+ cinfo.append("Other filter = ").append(sw_filters::text[sw_custfltr::other[x]]).append("\n");
+ if (sw_custfltr::other[x] == UI_SW_PUBLISHERS)
+ cinfo.append(" Manufacturer filter = ").append(m_filter.publisher.ui[sw_custfltr::mnfct[x]]).append("\n");
+ else if (sw_custfltr::other[x] == UI_SW_LIST)
+ cinfo.append(" Software List filter = ").append(m_filter.swlist.name[sw_custfltr::list[x]]).append("\n");
+ else if (sw_custfltr::other[x] == UI_SW_YEARS)
+ cinfo.append(" Year filter = ").append(m_filter.year.ui[sw_custfltr::year[x]]).append("\n");
+ else if (sw_custfltr::other[x] == UI_SW_TYPE)
+ cinfo.append(" Type filter = ").append(m_filter.type.ui[sw_custfltr::type[x]]).append("\n");
+ else if (sw_custfltr::other[x] == UI_SW_REGION)
+ cinfo.append(" Region filter = ").append(m_filter.region.ui[sw_custfltr::region[x]]).append("\n");
+ }
+ file.puts(cinfo.c_str());
+ file.close();
+ }
+}
+
diff --git a/src/emu/ui/custmenu.h b/src/emu/ui/custmenu.h
new file mode 100644
index 00000000000..d136e911164
--- /dev/null
+++ b/src/emu/ui/custmenu.h
@@ -0,0 +1,131 @@
+// license:BSD-3-Clause
+// copyright-holders:Dankan1890
+/***************************************************************************
+
+ ui/custmenu.h
+
+ Internal UI user interface.
+
+
+***************************************************************************/
+
+#pragma once
+
+#ifndef __UI_CUSTMENU_H__
+#define __UI_CUSTMENU_H__
+
+#include "ui/utils.h"
+
+// Software region
+struct c_sw_region
+{
+ std::vector<std::string> ui;
+ UINT16 actual;
+ void set(std::string &str);
+ std::string getname(std::string &str);
+};
+
+// Software publishers
+struct c_sw_publisher
+{
+ std::vector<std::string> ui;
+ UINT16 actual;
+ void set(std::string &str);
+ std::string getname(std::string &str);
+};
+
+// Software device type
+struct c_sw_type
+{
+ std::vector<std::string> ui;
+ UINT16 actual;
+ void set(std::string &str);
+};
+
+// Software list
+struct c_sw_list
+{
+ std::vector<std::string> name;
+ std::vector<std::string> description;
+ UINT16 actual;
+};
+
+// Software years
+struct c_sw_year
+{
+ std::vector<std::string> ui;
+ UINT16 actual;
+ void set(std::string &str);
+};
+
+struct s_filter
+{
+ c_sw_region region;
+ c_sw_publisher publisher;
+ c_sw_year year;
+ c_sw_type type;
+ c_sw_list swlist;
+};
+
+//-------------------------------------------------
+// custom software filter menu class
+//-------------------------------------------------
+class ui_menu_swcustom_filter : public ui_menu
+{
+public:
+ ui_menu_swcustom_filter(running_machine &machine, render_container *container, const game_driver *_driver, s_filter &_filter);
+ virtual ~ui_menu_swcustom_filter();
+ virtual void populate() override;
+ virtual void handle() override;
+ virtual void custom_render(void *selectedref, float top, float bottom, float x, float y, float x2, float y2) override;
+
+private:
+ enum
+ {
+ MAIN_FILTER = 1,
+ ADD_FILTER,
+ REMOVE_FILTER,
+ MNFCT_FILTER,
+ YEAR_FILTER = MNFCT_FILTER + MAX_CUST_FILTER + 1,
+ REGION_FILTER = YEAR_FILTER + MAX_CUST_FILTER + 1,
+ TYPE_FILTER = REGION_FILTER + MAX_CUST_FILTER + 1,
+ LIST_FILTER = TYPE_FILTER + MAX_CUST_FILTER + 1,
+ OTHER_FILTER = LIST_FILTER + MAX_CUST_FILTER + 1
+ };
+
+ bool m_added;
+ s_filter &m_filter;
+ const game_driver *m_driver;
+
+ void save_sw_custom_filters();
+};
+
+//-------------------------------------------------
+// custom filter menu class
+//-------------------------------------------------
+class ui_menu_custom_filter : public ui_menu
+{
+public:
+ ui_menu_custom_filter(running_machine &machine, render_container *container, bool _single_menu = false);
+ virtual ~ui_menu_custom_filter();
+ virtual void populate() override;
+ virtual void handle() override;
+ virtual void custom_render(void *selectedref, float top, float bottom, float x, float y, float x2, float y2) override;
+
+private:
+ enum
+ {
+ MAIN_FILTER = 1,
+ ADD_FILTER,
+ REMOVE_FILTER,
+ MNFCT_FILTER,
+ YEAR_FILTER = MNFCT_FILTER + MAX_CUST_FILTER + 1,
+ SCREEN_FILTER = YEAR_FILTER + MAX_CUST_FILTER + 1,
+ OTHER_FILTER = SCREEN_FILTER + MAX_CUST_FILTER + 1
+ };
+
+ bool m_single_menu, m_added;
+ void save_custom_filters();
+};
+
+#endif /* __UI_CUSTMENU_H__ */
diff --git a/src/emu/ui/custui.cpp b/src/emu/ui/custui.cpp
new file mode 100644
index 00000000000..fb1459837ab
--- /dev/null
+++ b/src/emu/ui/custui.cpp
@@ -0,0 +1,1049 @@
+// license:BSD-3-Clause
+// copyright-holders:Dankan1890
+/*********************************************************************
+
+ ui/custui.cpp
+
+ Internal UI user interface.
+
+*********************************************************************/
+
+#include "emu.h"
+#include "ui/ui.h"
+#include "ui/menu.h"
+#include "ui/selector.h"
+#include "ui/custui.h"
+#include "ui/utils.h"
+#include <algorithm>
+
+const char *ui_menu_custom_ui::hide_status[] = { "Show All", "Hide Filters", "Hide Info/Image", "Hide Both" };
+
+//-------------------------------------------------
+// ctor
+//-------------------------------------------------
+
+ui_menu_custom_ui::ui_menu_custom_ui(running_machine &machine, render_container *container) : ui_menu(machine, container)
+{
+}
+
+//-------------------------------------------------
+// dtor
+//-------------------------------------------------
+
+ui_menu_custom_ui::~ui_menu_custom_ui()
+{
+ std::string error_string;
+ machine().ui().options().set_value(OPTION_HIDE_PANELS, ui_globals::panels_status, OPTION_PRIORITY_CMDLINE, error_string);
+ ui_globals::reset = true;
+}
+
+//-------------------------------------------------
+// handle
+//-------------------------------------------------
+
+void ui_menu_custom_ui::handle()
+{
+ bool changed = false;
+
+ // process the menu
+ const ui_menu_event *m_event = process(0);
+
+ if (m_event != nullptr && m_event->itemref != nullptr)
+ {
+ if (m_event->iptkey == IPT_UI_LEFT || m_event->iptkey == IPT_UI_RIGHT)
+ {
+ changed = true;
+ (m_event->iptkey == IPT_UI_RIGHT) ? ui_globals::panels_status++ : ui_globals::panels_status--;
+ }
+
+
+ else if (m_event->iptkey == IPT_UI_SELECT)
+ {
+ switch ((FPTR)m_event->itemref)
+ {
+ case FONT_MENU:
+ ui_menu::stack_push(global_alloc_clear<ui_menu_font_ui>(machine(), container));
+ break;
+
+ case COLORS_MENU:
+ ui_menu::stack_push(global_alloc_clear<ui_menu_colors_ui>(machine(), container));
+ break;
+ case HIDE_MENU:
+ {
+ int total = ARRAY_LENGTH(hide_status);
+ std::vector<std::string> s_sel(total);
+ for (int index = 0; index < total; ++index)
+ s_sel[index] = hide_status[index];
+
+ ui_menu::stack_push(global_alloc_clear<ui_menu_selector>(machine(), container, s_sel, ui_globals::panels_status));
+ }
+ }
+ }
+ }
+
+ if (changed)
+ reset(UI_MENU_RESET_REMEMBER_REF);
+}
+
+//-------------------------------------------------
+// populate
+//-------------------------------------------------
+
+void ui_menu_custom_ui::populate()
+{
+ item_append("Fonts", nullptr, 0, (void *)(FPTR)FONT_MENU);
+ item_append("Colors", nullptr, 0, (void *)(FPTR)COLORS_MENU);
+
+ UINT32 arrow_flags = get_arrow_flags(0, (int)HIDE_BOTH, ui_globals::panels_status);
+ item_append("Filters and Info/Image", hide_status[ui_globals::panels_status], arrow_flags, (void *)(FPTR)HIDE_MENU);
+
+ item_append(MENU_SEPARATOR_ITEM, nullptr, 0, nullptr);
+ customtop = machine().ui().get_line_height() + 3.0f * UI_BOX_TB_BORDER;
+}
+
+//-------------------------------------------------
+// perform our special rendering
+//-------------------------------------------------
+
+void ui_menu_custom_ui::custom_render(void *selectedref, float top, float bottom, float origx1, float origy1, float origx2, float origy2)
+{
+ float width;
+ ui_manager &mui = machine().ui();
+
+ mui.draw_text_full(container, "Custom UI Settings", 0.0f, 0.0f, 1.0f, JUSTIFY_CENTER, WRAP_TRUNCATE,
+ DRAW_NONE, ARGB_WHITE, ARGB_BLACK, &width, nullptr);
+ width += 2 * UI_BOX_LR_BORDER;
+ float maxwidth = MAX(origx2 - origx1, width);
+
+ // compute our bounds
+ float x1 = 0.5f - 0.5f * maxwidth;
+ float x2 = x1 + maxwidth;
+ float y1 = origy1 - top;
+ float y2 = origy1 - UI_BOX_TB_BORDER;
+
+ // draw a box
+ mui.draw_outlined_box(container, x1, y1, x2, y2, UI_GREEN_COLOR);
+
+ // take off the borders
+ x1 += UI_BOX_LR_BORDER;
+ x2 -= UI_BOX_LR_BORDER;
+ y1 += UI_BOX_TB_BORDER;
+
+ // draw the text within it
+ mui.draw_text_full(container, "Custom UI Settings", x1, y1, x2 - x1, JUSTIFY_CENTER, WRAP_TRUNCATE,
+ DRAW_NORMAL, UI_TEXT_COLOR, UI_TEXT_BG_COLOR, nullptr, nullptr);
+}
+
+//-------------------------------------------------
+// ctor
+//-------------------------------------------------
+
+ui_menu_font_ui::ui_menu_font_ui(running_machine &machine, render_container *container) : ui_menu(machine, container)
+{
+ ui_options &moptions = machine.ui().options();
+#ifdef UI_WINDOWS
+
+ std::string name(machine.ui().options().ui_font());
+ list();
+
+ m_bold = (strreplace(name, "[B]", "") + strreplace(name, "[b]", "") > 0);
+ m_italic = (strreplace(name, "[I]", "") + strreplace(name, "[i]", "") > 0);
+ m_actual = 0;
+
+ for (size_t index = 0; index < m_fonts.size(); index++)
+ {
+ if (m_fonts[index] == name)
+ {
+ m_actual = index;
+ break;
+ }
+ }
+#endif
+
+ m_info_size = moptions.infos_size();
+ m_font_size = moptions.font_rows();
+
+ for (ui_options::entry *f_entry = moptions.first(); f_entry != nullptr; f_entry = f_entry->next())
+ {
+ const char *name = f_entry->name();
+ if (name && strlen(name) && !strcmp(OPTION_INFOS_SIZE, f_entry->name()))
+ {
+ m_info_max = atof(f_entry->maximum());
+ m_info_min = atof(f_entry->minimum());
+ }
+ else if (name && strlen(name) && !strcmp(OPTION_FONT_ROWS, f_entry->name()))
+ {
+ m_font_max = atof(f_entry->maximum());
+ m_font_min = atof(f_entry->minimum());
+ }
+ }
+
+}
+
+#ifdef UI_WINDOWS
+//-------------------------------------------------
+// fonts enumerator CALLBACK
+//-------------------------------------------------
+
+int CALLBACK ui_menu_font_ui::EnumFontFamiliesExProc(const LOGFONT *lpelfe, const TEXTMETRIC *lpntme, DWORD FontType, LPARAM lParam)
+{
+ std::vector<std::string> *lpc = (std::vector<std::string>*)lParam;
+ std::string utf((char *)lpelfe->lfFaceName);
+ if (utf[0] != '@')
+ lpc->push_back(utf);
+
+ return 1;
+}
+
+//-------------------------------------------------
+// create fonts list
+//-------------------------------------------------
+
+void ui_menu_font_ui::list()
+{
+ // create LOGFONT structure
+ LOGFONT lf;
+ lf.lfCharSet = ANSI_CHARSET;
+ lf.lfFaceName[0] = '\0';
+
+ HDC hDC = GetDC( nullptr );
+ EnumFontFamiliesEx( hDC, &lf, (FONTENUMPROC)EnumFontFamiliesExProc, (LPARAM)&m_fonts, 0 );
+ ReleaseDC( nullptr, hDC );
+
+ // sort
+ std::stable_sort(m_fonts.begin(), m_fonts.end());
+
+ // add default string to the top of array
+ m_fonts.insert(m_fonts.begin(), std::string("default"));
+}
+#endif
+
+//-------------------------------------------------
+// dtor
+//-------------------------------------------------
+
+ui_menu_font_ui::~ui_menu_font_ui()
+{
+ std::string error_string;
+ ui_options &moptions = machine().ui().options();
+
+#ifdef UI_WINDOWS
+ std::string name(m_fonts[m_actual]);
+ if (m_fonts[m_actual] != "default")
+ {
+ if (m_italic)
+ name.insert(0, "[I]");
+ if (m_bold)
+ name.insert(0, "[B]");
+ }
+ moptions.set_value(OPTION_UI_FONT, name.c_str(), OPTION_PRIORITY_CMDLINE, error_string);
+#endif
+
+ moptions.set_value(OPTION_INFOS_SIZE, m_info_size, OPTION_PRIORITY_CMDLINE, error_string);
+ moptions.set_value(OPTION_FONT_ROWS, m_font_size, OPTION_PRIORITY_CMDLINE, error_string);
+}
+
+//-------------------------------------------------
+// handle
+//-------------------------------------------------
+
+void ui_menu_font_ui::handle()
+{
+ bool changed = false;
+
+ // process the menu
+ const ui_menu_event *m_event = process(UI_MENU_PROCESS_LR_REPEAT);
+
+ if (m_event != nullptr && m_event->itemref != nullptr)
+ switch ((FPTR)m_event->itemref)
+ {
+ case INFOS_SIZE:
+ if (m_event->iptkey == IPT_UI_LEFT || m_event->iptkey == IPT_UI_RIGHT)
+ {
+ (m_event->iptkey == IPT_UI_RIGHT) ? m_info_size += 0.05f : m_info_size -= 0.05f;
+ changed = true;
+ }
+ break;
+
+ case FONT_SIZE:
+ if (m_event->iptkey == IPT_UI_LEFT || m_event->iptkey == IPT_UI_RIGHT)
+ {
+ (m_event->iptkey == IPT_UI_RIGHT) ? m_font_size++ : m_font_size--;
+ changed = true;
+ }
+ break;
+
+#ifdef UI_WINDOWS
+
+ case MUI_FNT:
+ if (m_event->iptkey == IPT_UI_LEFT || m_event->iptkey == IPT_UI_RIGHT)
+ {
+ (m_event->iptkey == IPT_UI_RIGHT) ? m_actual++ : m_actual--;
+ changed = true;
+ }
+ else if (m_event->iptkey == IPT_UI_SELECT)
+ {
+ ui_menu::stack_push(global_alloc_clear<ui_menu_selector>(machine(), container, m_fonts, m_actual));
+ changed = true;
+ }
+ break;
+
+ case MUI_BOLD:
+ case MUI_ITALIC:
+ if (m_event->iptkey == IPT_UI_LEFT || m_event->iptkey == IPT_UI_RIGHT || m_event->iptkey == IPT_UI_SELECT)
+ {
+ ((FPTR)m_event->itemref == MUI_BOLD) ? m_bold = !m_bold : m_italic = !m_italic;
+ changed = true;
+ }
+ break;
+#endif
+ }
+
+ if (changed)
+ reset(UI_MENU_RESET_REMEMBER_REF);
+}
+
+//-------------------------------------------------
+// populate
+//-------------------------------------------------
+
+void ui_menu_font_ui::populate()
+{
+ // set filter arrow
+ UINT32 arrow_flags;
+ std::string tmptxt;
+
+#ifdef UI_WINDOWS
+ // add fonts option
+ arrow_flags = get_arrow_flags(0, m_fonts.size() - 1, m_actual);
+ std::string name(m_fonts[m_actual]);
+ item_append("UI Font", name.c_str(), arrow_flags, (void *)(FPTR)MUI_FNT);
+
+ if (name != "default")
+ {
+ item_append("Bold", m_bold ? "On" : "Off", m_bold ? MENU_FLAG_RIGHT_ARROW : MENU_FLAG_LEFT_ARROW, (void *)(FPTR)MUI_BOLD);
+ item_append("Italic", m_italic ? "On" : "Off", m_italic ? MENU_FLAG_RIGHT_ARROW : MENU_FLAG_LEFT_ARROW, (void *)(FPTR)MUI_ITALIC);
+ }
+#endif
+
+ arrow_flags = get_arrow_flags(m_font_min, m_font_max, m_font_size);
+ strprintf(tmptxt, "%2d", m_font_size);
+ item_append("Lines", tmptxt.c_str(), arrow_flags, (void *)(FPTR)FONT_SIZE);
+
+ item_append(MENU_SEPARATOR_ITEM, nullptr, 0, nullptr);
+
+ // add item
+ tmptxt.clear();
+ strprintf(tmptxt, "%3.2f", m_info_size);
+ arrow_flags = get_arrow_flags(m_info_min, m_info_max, m_info_size);
+ item_append("Infos text size", tmptxt.c_str(), arrow_flags, (void *)(FPTR)INFOS_SIZE);
+
+ item_append(MENU_SEPARATOR_ITEM, nullptr, 0, nullptr);
+
+ custombottom = customtop = machine().ui().get_line_height() + 3.0f * UI_BOX_TB_BORDER;
+}
+
+//-------------------------------------------------
+// perform our special rendering
+//-------------------------------------------------
+
+void ui_menu_font_ui::custom_render(void *selectedref, float top, float bottom, float origx1, float origy1, float origx2, float origy2)
+{
+ float width;
+ ui_manager &mui = machine().ui();
+
+ // top text
+ std::string topbuf("UI Fonts Settings");
+
+ mui.draw_text_full(container, topbuf.c_str(), 0.0f, 0.0f, 1.0f, JUSTIFY_CENTER, WRAP_TRUNCATE,
+ DRAW_NONE, ARGB_WHITE, ARGB_BLACK, &width, nullptr);
+ width += 2 * UI_BOX_LR_BORDER;
+ float maxwidth = MAX(origx2 - origx1, width);
+
+ // compute our bounds
+ float x1 = 0.5f - 0.5f * maxwidth;
+ float x2 = x1 + maxwidth;
+ float y1 = origy1 - top;
+ float y2 = origy1 - UI_BOX_TB_BORDER;
+
+ // draw a box
+ mui.draw_outlined_box(container, x1, y1, x2, y2, UI_GREEN_COLOR);
+
+ // take off the borders
+ x1 += UI_BOX_LR_BORDER;
+ x2 -= UI_BOX_LR_BORDER;
+ y1 += UI_BOX_TB_BORDER;
+
+ // draw the text within it
+ mui.draw_text_full(container, topbuf.c_str(), x1, y1, x2 - x1, JUSTIFY_CENTER, WRAP_TRUNCATE,
+ DRAW_NORMAL, UI_TEXT_COLOR, UI_TEXT_BG_COLOR, nullptr, nullptr);
+
+ if ((FPTR)selectedref == INFOS_SIZE)
+ {
+ topbuf = "Sample text - Lorem ipsum dolor sit amet, consectetur adipiscing elit.";
+
+ mui.draw_text_full(container, topbuf.c_str(), 0.0f, 0.0f, 1.0f, JUSTIFY_LEFT, WRAP_NEVER,
+ DRAW_NONE, ARGB_WHITE, ARGB_BLACK, &width, nullptr, m_info_size);
+ width += 2 * UI_BOX_LR_BORDER;
+ maxwidth = MAX(origx2 - origx1, width);
+
+ // compute our bounds
+ x1 = 0.5f - 0.5f * maxwidth;
+ x2 = x1 + maxwidth;
+ y1 = origy2 + UI_BOX_TB_BORDER;
+ y2 = origy2 + bottom;
+
+ // draw a box
+ mui.draw_outlined_box(container, x1, y1, x2, y2, UI_GREEN_COLOR);
+
+ // take off the borders
+ x1 += UI_BOX_LR_BORDER;
+ x2 -= UI_BOX_LR_BORDER;
+ y1 += UI_BOX_TB_BORDER;
+
+ // draw the text within it
+ mui.draw_text_full(container, topbuf.c_str(), x1, y1, x2 - x1, JUSTIFY_LEFT, WRAP_NEVER,
+ DRAW_NORMAL, UI_TEXT_COLOR, UI_TEXT_BG_COLOR, nullptr, nullptr, m_info_size);
+ }
+}
+
+//-------------------------------------------------
+// ctor
+//-------------------------------------------------
+#define SET_COLOR_UI(var, opt) var[M##opt].color = opt; var[M##opt].option = OPTION_##opt
+
+ui_menu_colors_ui::ui_menu_colors_ui(running_machine &machine, render_container *container) : ui_menu(machine, container)
+{
+ SET_COLOR_UI(m_color_table, UI_BACKGROUND_COLOR);
+ SET_COLOR_UI(m_color_table, UI_BORDER_COLOR);
+ SET_COLOR_UI(m_color_table, UI_CLONE_COLOR);
+ SET_COLOR_UI(m_color_table, UI_DIPSW_COLOR);
+ SET_COLOR_UI(m_color_table, UI_GFXVIEWER_BG_COLOR);
+ SET_COLOR_UI(m_color_table, UI_MOUSEDOWN_BG_COLOR);
+ SET_COLOR_UI(m_color_table, UI_MOUSEDOWN_COLOR);
+ SET_COLOR_UI(m_color_table, UI_MOUSEOVER_BG_COLOR);
+ SET_COLOR_UI(m_color_table, UI_MOUSEOVER_COLOR);
+ SET_COLOR_UI(m_color_table, UI_SELECTED_BG_COLOR);
+ SET_COLOR_UI(m_color_table, UI_SELECTED_COLOR);
+ SET_COLOR_UI(m_color_table, UI_SLIDER_COLOR);
+ SET_COLOR_UI(m_color_table, UI_SUBITEM_COLOR);
+ SET_COLOR_UI(m_color_table, UI_TEXT_BG_COLOR);
+ SET_COLOR_UI(m_color_table, UI_TEXT_COLOR);
+ SET_COLOR_UI(m_color_table, UI_UNAVAILABLE_COLOR);
+}
+
+//-------------------------------------------------
+// dtor
+//-------------------------------------------------
+
+ui_menu_colors_ui::~ui_menu_colors_ui()
+{
+ std::string error_string, dec_color;
+ for (int index = 1; index < MUI_RESTORE; index++)
+ {
+ strprintf(dec_color, "%x", (UINT32)m_color_table[index].color);
+ machine().ui().options().set_value(m_color_table[index].option, dec_color.c_str(), OPTION_PRIORITY_CMDLINE, error_string);
+ }
+}
+
+//-------------------------------------------------
+// handle
+//-------------------------------------------------
+
+void ui_menu_colors_ui::handle()
+{
+ bool changed = false;
+
+ // process the menu
+ const ui_menu_event *m_event = process(0);
+
+ if (m_event != nullptr && m_event->itemref != nullptr && m_event->iptkey == IPT_UI_SELECT)
+ {
+ if ((FPTR)m_event->itemref != MUI_RESTORE)
+ ui_menu::stack_push(global_alloc_clear<ui_menu_rgb_ui>(machine(), container, &m_color_table[(FPTR)m_event->itemref].color, item[selected].text));
+ else
+ {
+ changed = true;
+ restore_colors();
+ }
+ }
+
+ if (changed)
+ reset(UI_MENU_RESET_REMEMBER_REF);
+}
+
+//-------------------------------------------------
+// populate
+//-------------------------------------------------
+
+void ui_menu_colors_ui::populate()
+{
+ item_append("Normal text", nullptr, 0, (void *)(FPTR)MUI_TEXT_COLOR);
+ item_append("Selected m_color", nullptr, 0, (void *)(FPTR)MUI_SELECTED_COLOR);
+ item_append("Normal text background", nullptr, 0, (void *)(FPTR)MUI_TEXT_BG_COLOR);
+ item_append("Selected background m_color", nullptr, 0, (void *)(FPTR)MUI_SELECTED_BG_COLOR);
+ item_append("Subitem m_color", nullptr, 0, (void *)(FPTR)MUI_SUBITEM_COLOR);
+ item_append("Clone", nullptr, 0, (void *)(FPTR)MUI_CLONE_COLOR);
+ item_append("Border", nullptr, 0, (void *)(FPTR)MUI_BORDER_COLOR);
+ item_append("Background", nullptr, 0, (void *)(FPTR)MUI_BACKGROUND_COLOR);
+ item_append("Dipswitch", nullptr, 0, (void *)(FPTR)MUI_DIPSW_COLOR);
+ item_append("Unavailable m_color", nullptr, 0, (void *)(FPTR)MUI_UNAVAILABLE_COLOR);
+ item_append("Slider m_color", nullptr, 0, (void *)(FPTR)MUI_SLIDER_COLOR);
+ item_append("Gfx viewer background", nullptr, 0, (void *)(FPTR)MUI_GFXVIEWER_BG_COLOR);
+ item_append("Mouse over m_color", nullptr, 0, (void *)(FPTR)MUI_MOUSEOVER_COLOR);
+ item_append("Mouse over background m_color", nullptr, 0, (void *)(FPTR)MUI_MOUSEOVER_BG_COLOR);
+ item_append("Mouse down m_color", nullptr, 0, (void *)(FPTR)MUI_MOUSEDOWN_COLOR);
+ item_append("Mouse down background m_color", nullptr, 0, (void *)(FPTR)MUI_MOUSEDOWN_BG_COLOR);
+
+ item_append(MENU_SEPARATOR_ITEM, nullptr, 0, nullptr);
+ item_append("Restore originals colors", nullptr, 0, (void *)(FPTR)MUI_RESTORE);
+
+ custombottom = customtop = machine().ui().get_line_height() + 3.0f * UI_BOX_TB_BORDER;
+}
+
+//-------------------------------------------------
+// perform our special rendering
+//-------------------------------------------------
+
+void ui_menu_colors_ui::custom_render(void *selectedref, float top, float bottom, float origx1, float origy1, float origx2, float origy2)
+{
+ float width, maxwidth = origx2 - origx1;
+ ui_manager &mui = machine().ui();
+ float line_height = mui.get_line_height();
+
+ // top text
+ std::string topbuf("UI Colors Settings");
+
+ mui.draw_text_full(container, topbuf.c_str(), 0.0f, 0.0f, 1.0f, JUSTIFY_CENTER, WRAP_NEVER,
+ DRAW_NONE, ARGB_WHITE, ARGB_BLACK, &width, nullptr);
+ width += 2 * UI_BOX_LR_BORDER;
+ maxwidth = MAX(maxwidth, width);
+
+ // compute our bounds
+ float x1 = 0.5f - 0.5f * maxwidth;
+ float x2 = x1 + maxwidth;
+ float y1 = origy1 - top;
+ float y2 = origy1 - UI_BOX_TB_BORDER;
+
+ // draw a box
+ mui.draw_outlined_box(container, x1, y1, x2, y2, UI_GREEN_COLOR);
+
+ // take off the borders
+ x1 += UI_BOX_LR_BORDER;
+ x2 -= UI_BOX_LR_BORDER;
+ y1 += UI_BOX_TB_BORDER;
+
+ // draw the text within it
+ mui.draw_text_full(container, topbuf.c_str(), x1, y1, x2 - x1, JUSTIFY_CENTER, WRAP_NEVER,
+ DRAW_NORMAL, UI_TEXT_COLOR, UI_TEXT_BG_COLOR, nullptr, nullptr);
+
+ // bottom text
+ // get the text for 'UI Select'
+ std::string ui_select_text = machine().input().seq_name(machine().ioport().type_seq(IPT_UI_SELECT, 0, SEQ_TYPE_STANDARD));
+ topbuf.assign("Double click or press ").append(ui_select_text.c_str()).append(" to change the m_color value");
+
+ mui.draw_text_full(container, topbuf.c_str(), 0.0f, 0.0f, 1.0f, JUSTIFY_CENTER, WRAP_NEVER,
+ DRAW_NONE, ARGB_WHITE, ARGB_BLACK, &width, nullptr);
+ width += 2 * UI_BOX_LR_BORDER;
+ maxwidth = MAX(maxwidth, width);
+
+ // compute our bounds
+ x1 = 0.5f - 0.5f * maxwidth;
+ x2 = x1 + maxwidth;
+ y1 = origy2 + UI_BOX_TB_BORDER;
+ y2 = origy2 + bottom;
+
+ // draw a box
+ mui.draw_outlined_box(container, x1, y1, x2, y2, UI_RED_COLOR);
+
+ // take off the borders
+ x1 += UI_BOX_LR_BORDER;
+ x2 -= UI_BOX_LR_BORDER;
+ y1 += UI_BOX_TB_BORDER;
+
+ // draw the text within it
+ mui.draw_text_full(container, topbuf.c_str(), x1, y1, x2 - x1, JUSTIFY_CENTER, WRAP_NEVER,
+ DRAW_NORMAL, UI_TEXT_COLOR, UI_TEXT_BG_COLOR, nullptr, nullptr);
+
+ // compute maxwidth
+ topbuf = "Menu Preview";
+
+ mui.draw_text_full(container, topbuf.c_str(), 0.0f, 0.0f, 1.0f, JUSTIFY_CENTER, WRAP_NEVER,
+ DRAW_NONE, ARGB_WHITE, ARGB_BLACK, &width, nullptr);
+ maxwidth = width + 2.0f * UI_BOX_LR_BORDER;
+
+ std::string sampletxt[5];
+
+ sampletxt[0] = "Normal";
+ sampletxt[1] = "Subitem";
+ sampletxt[2] = "Selected";
+ sampletxt[3] = "Mouse Over";
+ sampletxt[4] = "Clone";
+
+ for (auto & elem: sampletxt)
+ {
+ mui.draw_text_full(container, elem.c_str(), 0.0f, 0.0f, 1.0f, JUSTIFY_CENTER, WRAP_NEVER,
+ DRAW_NONE, ARGB_WHITE, ARGB_BLACK, &width, nullptr);
+ width += 2 * UI_BOX_LR_BORDER;
+ maxwidth = MAX(maxwidth, width);
+ }
+
+ // compute our bounds for header
+ x1 = origx2 + 2.0f * UI_BOX_LR_BORDER;
+ x2 = x1 + maxwidth;
+ y1 = origy1;
+ y2 = y1 + bottom - UI_BOX_TB_BORDER;
+
+ // draw a box
+ mui.draw_outlined_box(container, x1, y1, x2, y2, UI_GREEN_COLOR);
+
+ // take off the borders
+ x1 += UI_BOX_LR_BORDER;
+ x2 -= UI_BOX_LR_BORDER;
+ y1 += UI_BOX_TB_BORDER;
+ y2 -= UI_BOX_TB_BORDER;
+
+ // draw the text within it
+ mui.draw_text_full(container, topbuf.c_str(), x1, y1, x2 - x1, JUSTIFY_CENTER, WRAP_NEVER,
+ DRAW_NORMAL, UI_TEXT_COLOR, UI_TEXT_BG_COLOR, nullptr, nullptr);
+
+ // compute our bounds for menu preview
+ x1 -= UI_BOX_LR_BORDER;
+ x2 += UI_BOX_LR_BORDER;
+ y1 = y2 + 2.0f * UI_BOX_TB_BORDER;
+ y2 = y1 + 5.0f * line_height + 2.0f * UI_BOX_TB_BORDER;
+
+ // draw a box
+ mui.draw_outlined_box(container, x1, y1, x2, y2, m_color_table[MUI_BACKGROUND_COLOR].color);
+
+ // take off the borders
+ x1 += UI_BOX_LR_BORDER;
+ x2 -= UI_BOX_LR_BORDER;
+ y1 += UI_BOX_TB_BORDER;
+
+ // draw normal text
+ mui.draw_text_full(container, sampletxt[0].c_str(), x1, y1, x2 - x1, JUSTIFY_CENTER, WRAP_NEVER,
+ DRAW_NORMAL, m_color_table[MUI_TEXT_COLOR].color, m_color_table[MUI_TEXT_BG_COLOR].color, nullptr, nullptr);
+ y1 += line_height;
+
+ // draw subitem text
+ mui.draw_text_full(container, sampletxt[1].c_str(), x1, y1, x2 - x1, JUSTIFY_CENTER, WRAP_NEVER,
+ DRAW_NORMAL, m_color_table[MUI_SUBITEM_COLOR].color, m_color_table[MUI_TEXT_BG_COLOR].color, nullptr, nullptr);
+ y1 += line_height;
+
+ // draw selected text
+ highlight(container, x1, y1, x2, y1 + line_height, m_color_table[MUI_SELECTED_BG_COLOR].color);
+ mui.draw_text_full(container, sampletxt[2].c_str(), x1, y1, x2 - x1, JUSTIFY_CENTER, WRAP_NEVER,
+ DRAW_NORMAL, m_color_table[MUI_SELECTED_COLOR].color, m_color_table[MUI_SELECTED_BG_COLOR].color, nullptr, nullptr);
+ y1 += line_height;
+
+ // draw mouse over text
+ highlight(container, x1, y1, x2, y1 + line_height, m_color_table[MUI_MOUSEOVER_BG_COLOR].color);
+ mui.draw_text_full(container, sampletxt[3].c_str(), x1, y1, x2 - x1, JUSTIFY_CENTER, WRAP_NEVER,
+ DRAW_NORMAL, m_color_table[MUI_MOUSEOVER_COLOR].color, m_color_table[MUI_MOUSEOVER_BG_COLOR].color, nullptr, nullptr);
+ y1 += line_height;
+
+ // draw clone text
+ mui.draw_text_full(container, sampletxt[4].c_str(), x1, y1, x2 - x1, JUSTIFY_CENTER, WRAP_NEVER,
+ DRAW_NORMAL, m_color_table[MUI_CLONE_COLOR].color, m_color_table[MUI_TEXT_BG_COLOR].color, nullptr, nullptr);
+
+}
+
+//-------------------------------------------------
+// restore original colors
+//-------------------------------------------------
+
+void ui_menu_colors_ui::restore_colors()
+{
+ ui_options options;
+ for (int index = 1; index < MUI_RESTORE; index++)
+ m_color_table[index].color = rgb_t((UINT32)strtoul(options.value(m_color_table[index].option), nullptr, 16));
+}
+
+//-------------------------------------------------
+// ctor
+//-------------------------------------------------
+
+ui_menu_rgb_ui::ui_menu_rgb_ui(running_machine &machine, render_container *container, rgb_t *_color, std::string _title) : ui_menu(machine, container)
+{
+ m_color = _color;
+ m_key_active = false;
+ m_lock_ref = 0;
+ m_title = _title;
+ m_search[0] = '\0';
+}
+
+//-------------------------------------------------
+// dtor
+//-------------------------------------------------
+
+ui_menu_rgb_ui::~ui_menu_rgb_ui()
+{
+}
+
+//-------------------------------------------------
+// handle
+//-------------------------------------------------
+
+void ui_menu_rgb_ui::handle()
+{
+ bool changed = false;
+
+ // process the menu
+ const ui_menu_event *m_event;
+
+ if (!m_key_active)
+ m_event = process(UI_MENU_PROCESS_LR_REPEAT);
+ else
+ m_event = process(UI_MENU_PROCESS_ONLYCHAR);
+
+ if (m_event != nullptr && m_event->itemref != nullptr)
+ {
+ switch ((FPTR)m_event->itemref)
+ {
+ case RGB_ALPHA:
+ if (m_event->iptkey == IPT_UI_LEFT && m_color->a() > 1)
+ {
+ m_color->set_a(m_color->a() - 1);
+ changed = true;
+ }
+
+ else if (m_event->iptkey == IPT_UI_RIGHT && m_color->a() < 255)
+ {
+ m_color->set_a(m_color->a() + 1);
+ changed = true;
+ }
+
+ else if (m_event->iptkey == IPT_UI_SELECT || m_event->iptkey == IPT_SPECIAL)
+ {
+ inkey_special(m_event);
+ changed = true;
+ }
+
+ break;
+
+ case RGB_RED:
+ if (m_event->iptkey == IPT_UI_LEFT && m_color->r() > 1)
+ {
+ m_color->set_r(m_color->r() - 1);
+ changed = true;
+ }
+
+ else if (m_event->iptkey == IPT_UI_RIGHT && m_color->r() < 255)
+ {
+ m_color->set_r(m_color->r() + 1);
+ changed = true;
+ }
+
+ else if (m_event->iptkey == IPT_UI_SELECT || m_event->iptkey == IPT_SPECIAL)
+ {
+ inkey_special(m_event);
+ changed = true;
+ }
+
+ break;
+
+ case RGB_GREEN:
+ if (m_event->iptkey == IPT_UI_LEFT && m_color->g() > 1)
+ {
+ m_color->set_g(m_color->g() - 1);
+ changed = true;
+ }
+
+ else if (m_event->iptkey == IPT_UI_RIGHT && m_color->g() < 255)
+ {
+ m_color->set_g(m_color->g() + 1);
+ changed = true;
+ }
+
+ else if (m_event->iptkey == IPT_UI_SELECT || m_event->iptkey == IPT_SPECIAL)
+ {
+ inkey_special(m_event);
+ changed = true;
+ }
+
+ break;
+
+ case RGB_BLUE:
+ if (m_event->iptkey == IPT_UI_LEFT && m_color->b() > 1)
+ {
+ m_color->set_b(m_color->b() - 1);
+ changed = true;
+ }
+
+ else if (m_event->iptkey == IPT_UI_RIGHT && m_color->b() < 255)
+ {
+ m_color->set_b(m_color->b() + 1);
+ changed = true;
+ }
+
+ else if (m_event->iptkey == IPT_UI_SELECT || m_event->iptkey == IPT_SPECIAL)
+ {
+ inkey_special(m_event);
+ changed = true;
+ }
+
+ break;
+
+ case PALETTE_CHOOSE:
+ if (m_event->iptkey == IPT_UI_SELECT)
+ ui_menu::stack_push(global_alloc_clear<ui_menu_palette_sel>(machine(), container, *m_color));
+ break;
+ }
+ }
+
+ if (changed)
+ reset(UI_MENU_RESET_REMEMBER_REF);
+}
+
+//-------------------------------------------------
+// populate
+//-------------------------------------------------
+
+void ui_menu_rgb_ui::populate()
+{
+ // set filter arrow
+ UINT32 arrow_flags = MENU_FLAG_LEFT_ARROW | MENU_FLAG_RIGHT_ARROW;
+ std::string text;
+ std::string s_text = std::string(m_search).append("_");
+
+ if (m_lock_ref != RGB_ALPHA)
+ {
+ arrow_flags = get_arrow_flags(0, 255, m_color->a());
+ strprintf(text, "%3d", m_color->a());
+ item_append("Alpha", text.c_str(), arrow_flags, (void *)(FPTR)RGB_ALPHA);
+ }
+ else
+ item_append("Alpha", s_text.c_str(), 0, (void *)(FPTR)RGB_ALPHA);
+
+ if (m_lock_ref != RGB_RED)
+ {
+ arrow_flags = get_arrow_flags(0, 255, m_color->r());
+ strprintf(text, "%3d", m_color->r());
+ item_append("Red", text.c_str(), arrow_flags, (void *)(FPTR)RGB_RED);
+ }
+ else
+ item_append("Red", s_text.c_str(), 0, (void *)(FPTR)RGB_RED);
+
+ if (m_lock_ref != RGB_GREEN)
+ {
+ arrow_flags = get_arrow_flags(0, 255, m_color->g());
+ strprintf(text, "%3d", m_color->g());
+ item_append("Green", text.c_str(), arrow_flags, (void *)(FPTR)RGB_GREEN);
+ }
+ else
+ item_append("Green", s_text.c_str(), 0, (void *)(FPTR)RGB_GREEN);
+
+ if (m_lock_ref != RGB_BLUE)
+ {
+ arrow_flags = get_arrow_flags(0, 255, m_color->b());
+ strprintf(text, "%3d", m_color->b());
+ item_append("Blue", text.c_str(), arrow_flags, (void *)(FPTR)RGB_BLUE);
+ }
+ else
+ item_append("Blue", s_text.c_str(), 0, (void *)(FPTR)RGB_BLUE);
+
+ item_append(MENU_SEPARATOR_ITEM, nullptr, 0, nullptr);
+ item_append("Choose from palette", nullptr, 0, (void *)(FPTR)PALETTE_CHOOSE);
+ item_append(MENU_SEPARATOR_ITEM, nullptr, 0, nullptr);
+
+ custombottom = customtop = machine().ui().get_line_height() + 3.0f * UI_BOX_TB_BORDER;
+}
+
+//-------------------------------------------------
+// perform our special rendering
+//-------------------------------------------------
+
+void ui_menu_rgb_ui::custom_render(void *selectedref, float top, float bottom, float origx1, float origy1, float origx2, float origy2)
+{
+ float width, maxwidth = origx2 - origx1;
+ ui_manager &mui = machine().ui();
+
+ // top text
+ std::string topbuf = std::string(m_title).append(" - ARGB Settings");
+ mui.draw_text_full(container, topbuf.c_str(), 0.0f, 0.0f, 1.0f, JUSTIFY_CENTER, WRAP_NEVER,
+ DRAW_NONE, ARGB_WHITE, ARGB_BLACK, &width, nullptr);
+ width += 2 * UI_BOX_LR_BORDER;
+ maxwidth = MAX(maxwidth, width);
+
+ // compute our bounds
+ float x1 = 0.5f - 0.5f * maxwidth;
+ float x2 = x1 + maxwidth;
+ float y1 = origy1 - top;
+ float y2 = origy1 - UI_BOX_TB_BORDER;
+
+ // draw a box
+ mui.draw_outlined_box(container, x1, y1, x2, y2, UI_GREEN_COLOR);
+
+ // take off the borders
+ x1 += UI_BOX_LR_BORDER;
+ x2 -= UI_BOX_LR_BORDER;
+ y1 += UI_BOX_TB_BORDER;
+
+ // draw the text within it
+ mui.draw_text_full(container, topbuf.c_str(), x1, y1, x2 - x1, JUSTIFY_CENTER, WRAP_NEVER,
+ DRAW_NORMAL, UI_TEXT_COLOR, UI_TEXT_BG_COLOR, nullptr, nullptr);
+
+ std::string sampletxt("Color preview =");
+ maxwidth = origx2 - origx1;
+ mui.draw_text_full(container, sampletxt.c_str(), 0.0f, 0.0f, 1.0f, JUSTIFY_CENTER, WRAP_NEVER,
+ DRAW_NONE, ARGB_WHITE, ARGB_BLACK, &width, nullptr);
+ width += 2 * UI_BOX_LR_BORDER;
+ maxwidth = MAX(maxwidth, width);
+
+ // compute our bounds
+ x1 -= UI_BOX_LR_BORDER;
+ x2 = x1 + width;
+ y1 = origy2 + UI_BOX_TB_BORDER;
+ y2 = origy2 + bottom;
+
+ // draw a box
+ mui.draw_outlined_box(container, x1, y1, x2, y2, UI_RED_COLOR);
+
+ // take off the borders
+ x1 += UI_BOX_LR_BORDER;
+ x2 -= UI_BOX_LR_BORDER;
+ y1 += UI_BOX_TB_BORDER;
+
+ // draw the normal text
+ mui.draw_text_full(container, sampletxt.c_str(), x1, y1, x2 - x1, JUSTIFY_CENTER, WRAP_NEVER,
+ DRAW_NORMAL, ARGB_WHITE, ARGB_BLACK, nullptr, nullptr);
+
+ float t_x2 = x1 - UI_BOX_LR_BORDER + maxwidth;
+ x1 = x2 + 2.0f * UI_BOX_LR_BORDER;
+ x2 = t_x2;
+ y1 -= UI_BOX_TB_BORDER;
+
+ mui.draw_outlined_box(container, x1, y1, x2, y2, *m_color);
+
+}
+
+//-------------------------------------------------
+// handle special key event
+//-------------------------------------------------
+
+void ui_menu_rgb_ui::inkey_special(const ui_menu_event *m_event)
+{
+ if (m_event->iptkey == IPT_UI_SELECT)
+ {
+ m_key_active = !m_key_active;
+ m_lock_ref = (FPTR)m_event->itemref;
+
+ if (!m_key_active)
+ {
+ int val = atoi(m_search);
+ val = m_color->clamp(val);
+
+ switch ((FPTR)m_event->itemref)
+ {
+ case RGB_ALPHA:
+ m_color->set_a(val);
+ break;
+
+ case RGB_RED:
+ m_color->set_r(val);
+ break;
+
+ case RGB_GREEN:
+ m_color->set_g(val);
+ break;
+
+ case RGB_BLUE:
+ m_color->set_b(val);
+ break;
+ }
+
+ m_search[0] = 0;
+ m_lock_ref = 0;
+ return;
+ }
+ }
+
+ if (!m_key_active)
+ {
+ m_search[0] = 0;
+ return;
+ }
+
+ int buflen = strlen(m_search);
+
+ // if it's a backspace and we can handle it, do so
+ if (((m_event->unichar == 8 || m_event->unichar == 0x7f) && buflen > 0))
+ *(char *)utf8_previous_char(&m_search[buflen]) = 0;
+ else if (buflen >= 3)
+ return;
+ // if it's any other key and we're not maxed out, update
+ else if ((m_event->unichar >= '0' && m_event->unichar <= '9'))
+ buflen += utf8_from_uchar(&m_search[buflen], ARRAY_LENGTH(m_search) - buflen, m_event->unichar);
+
+ m_search[buflen] = 0;
+}
+
+ui_menu_palette_sel::palcolor ui_menu_palette_sel::m_palette[] = {
+ { "White", "FFFFFFFF" },
+ { "Silver", "FFC0C0C0" },
+ { "Gray", "FF808080" },
+ { "Black", "FF000000" },
+ { "Red", "FFFF0000" },
+ { "Orange", "FFFFA500" },
+ { "Yellow", "FFFFFF00" },
+ { "Green", "FF00FF00" },
+ { "Blue", "FF0000FF" },
+ { "Violet", "FF8F00FF" }
+};
+
+//-------------------------------------------------
+// ctor
+//-------------------------------------------------
+
+ui_menu_palette_sel::ui_menu_palette_sel(running_machine &machine, render_container *container, rgb_t &_color)
+ : ui_menu(machine, container), m_original(_color)
+{
+}
+
+//-------------------------------------------------
+// dtor
+//-------------------------------------------------
+
+ui_menu_palette_sel::~ui_menu_palette_sel()
+{
+}
+
+//-------------------------------------------------
+// handle
+//-------------------------------------------------
+
+void ui_menu_palette_sel::handle()
+{
+ // process the menu
+ const ui_menu_event *m_event = process(MENU_FLAG_UI_PALETTE);
+ if (m_event != nullptr && m_event->itemref != nullptr)
+ {
+ if (m_event->iptkey == IPT_UI_SELECT)
+ {
+ m_original = rgb_t((UINT32)strtoul(item[selected].subtext, nullptr, 16));
+ ui_menu::menu_stack->parent->reset(UI_MENU_RESET_SELECT_FIRST);
+ ui_menu::stack_pop(machine());
+ }
+ }
+}
+
+//-------------------------------------------------
+// populate
+//-------------------------------------------------
+
+void ui_menu_palette_sel::populate()
+{
+ for (int x = 0; x < ARRAY_LENGTH(m_palette); ++x)
+ item_append(m_palette[x].name, m_palette[x].argb, MENU_FLAG_UI_PALETTE, (void *)(FPTR)(x + 1));
+
+ item_append(MENU_SEPARATOR_ITEM, nullptr, 0, nullptr);
+}
+
+//-------------------------------------------------
+// perform our special rendering
+//-------------------------------------------------
+
+void ui_menu_palette_sel::custom_render(void *selectedref, float top, float bottom, float origx1, float origy1, float origx2, float origy2)
+{
+}
diff --git a/src/emu/ui/custui.h b/src/emu/ui/custui.h
new file mode 100644
index 00000000000..79f45cc3a6e
--- /dev/null
+++ b/src/emu/ui/custui.h
@@ -0,0 +1,182 @@
+// license:BSD-3-Clause
+// copyright-holders:Dankan1890
+/***************************************************************************
+
+ ui/custui.h
+
+ Internal UI user interface.
+
+***************************************************************************/
+
+#pragma once
+
+#ifndef __UI_CUSTUI_H__
+#define __UI_CUSTUI_H__
+
+#ifdef UI_WINDOWS
+#define WIN32_LEAN_AND_MEAN
+#include <windows.h>
+#endif
+
+//-------------------------------------------------
+// Custom UI menu
+//-------------------------------------------------
+
+class ui_menu_custom_ui : public ui_menu
+{
+public:
+ ui_menu_custom_ui(running_machine &machine, render_container *container);
+ virtual ~ui_menu_custom_ui();
+ virtual void populate() override;
+ virtual void handle() override;
+ virtual void custom_render(void *selectedref, float top, float bottom, float x, float y, float x2, float y2) override;
+
+private:
+ enum
+ {
+ FONT_MENU = 1,
+ COLORS_MENU,
+ HIDE_MENU
+ };
+ static const char *hide_status[];
+};
+
+//-------------------------------------------------
+// Font UI menu
+//-------------------------------------------------
+
+class ui_menu_font_ui : public ui_menu
+{
+public:
+ ui_menu_font_ui(running_machine &machine, render_container *container);
+ virtual ~ui_menu_font_ui();
+ virtual void populate() override;
+ virtual void handle() override;
+ virtual void custom_render(void *selectedref, float top, float bottom, float x, float y, float x2, float y2) override;
+
+private:
+ enum
+ {
+ INFOS_SIZE = 1,
+ FONT_SIZE,
+ MUI_FNT,
+ MUI_BOLD,
+ MUI_ITALIC
+ };
+
+#ifdef UI_WINDOWS
+ UINT16 m_actual;
+ std::vector<std::string> m_fonts;
+ bool m_bold, m_italic;
+
+ void list();
+ static int CALLBACK EnumFontFamiliesExProc(const LOGFONT *lpelfe, const TEXTMETRIC *lpntme, DWORD FontType, LPARAM lParam);
+
+#endif
+
+ float m_info_min, m_info_max, m_info_size;
+ int m_font_min, m_font_max, m_font_size;
+};
+
+//-------------------------------------------------
+// Colors UI menu
+//-------------------------------------------------
+
+class ui_menu_colors_ui : public ui_menu
+{
+public:
+ ui_menu_colors_ui(running_machine &machine, render_container *container);
+ virtual ~ui_menu_colors_ui();
+ virtual void populate() override;
+ virtual void handle() override;
+ virtual void custom_render(void *selectedref, float top, float bottom, float x, float y, float x2, float y2) override;
+
+private:
+ enum
+ {
+ MUI_BACKGROUND_COLOR = 1,
+ MUI_BORDER_COLOR,
+ MUI_CLONE_COLOR,
+ MUI_DIPSW_COLOR,
+ MUI_GFXVIEWER_BG_COLOR,
+ MUI_MOUSEDOWN_BG_COLOR,
+ MUI_MOUSEDOWN_COLOR,
+ MUI_MOUSEOVER_BG_COLOR,
+ MUI_MOUSEOVER_COLOR,
+ MUI_SELECTED_BG_COLOR,
+ MUI_SELECTED_COLOR,
+ MUI_SLIDER_COLOR,
+ MUI_SUBITEM_COLOR,
+ MUI_TEXT_BG_COLOR,
+ MUI_TEXT_COLOR,
+ MUI_UNAVAILABLE_COLOR,
+ MUI_RESTORE
+ };
+
+ struct s_color_table
+ {
+ rgb_t color;
+ const char *option;
+ };
+
+ s_color_table m_color_table[MUI_RESTORE];
+ void restore_colors();
+};
+
+//-------------------------------------------------
+// ARGB UI menu
+//-------------------------------------------------
+
+class ui_menu_rgb_ui : public ui_menu
+{
+public:
+ ui_menu_rgb_ui(running_machine &machine, render_container *container, rgb_t *_color, std::string _title);
+ virtual ~ui_menu_rgb_ui();
+ virtual void populate() override;
+ virtual void handle() override;
+ virtual void custom_render(void *selectedref, float top, float bottom, float x, float y, float x2, float y2) override;
+
+private:
+ rgb_t *m_color;
+ char m_search[4];
+ bool m_key_active;
+ int m_lock_ref;
+ std::string m_title;
+
+ enum
+ {
+ RGB_ALPHA = 1,
+ RGB_RED,
+ RGB_GREEN,
+ RGB_BLUE,
+ PALETTE_CHOOSE
+ };
+
+ void inkey_special(const ui_menu_event *menu_event);
+};
+
+//-------------------------------------------------
+// Palette UI menu
+//-------------------------------------------------
+
+class ui_menu_palette_sel : public ui_menu
+{
+public:
+ ui_menu_palette_sel(running_machine &machine, render_container *container, rgb_t &_color);
+ virtual ~ui_menu_palette_sel();
+ virtual void populate() override;
+ virtual void handle() override;
+ virtual void custom_render(void *selectedref, float top, float bottom, float x, float y, float x2, float y2) override;
+
+private:
+ struct palcolor
+ {
+ const char *name;
+ const char *argb;
+ };
+
+ static palcolor m_palette[];
+ rgb_t &m_original;
+};
+
+#endif /* __UI_CUSTUI_H__ */
diff --git a/src/emu/ui/datfile.cpp b/src/emu/ui/datfile.cpp
new file mode 100644
index 00000000000..5e8af15b335
--- /dev/null
+++ b/src/emu/ui/datfile.cpp
@@ -0,0 +1,643 @@
+// license:BSD-3-Clause
+// copyright-holders:Dankan1890
+/***************************************************************************
+
+ ui/datfile.cpp
+
+ UI DATs manager.
+
+***************************************************************************/
+
+#include "emu.h"
+#include "drivenum.h"
+#include "ui/ui.h"
+#include "ui/datfile.h"
+#include "ui/utils.h"
+
+//-------------------------------------------------
+// TAGS
+//-------------------------------------------------
+static std::string DATAFILE_TAG("$");
+static std::string TAG_BIO("$bio");
+static std::string TAG_INFO("$info");
+static std::string TAG_MAME("$mame");
+static std::string TAG_COMMAND("$cmd");
+static std::string TAG_END("$end");
+static std::string TAG_DRIVER("$drv");
+static std::string TAG_STORY("$story");
+static std::string TAG_HISTORY_R("## REVISION:");
+static std::string TAG_MAMEINFO_R("# MAMEINFO.DAT");
+static std::string TAG_MESSINFO_R("# MESSINFO.DAT");
+static std::string TAG_SYSINFO_R("# This file was generated on");
+static std::string TAG_STORY_R("# version");
+static std::string TAG_COMMAND_SEPARATOR("-----------------------------------------------");
+
+//-------------------------------------------------
+// Statics
+//-------------------------------------------------
+datfile_manager::dataindex datfile_manager::m_histidx;
+datfile_manager::dataindex datfile_manager::m_mameidx;
+datfile_manager::dataindex datfile_manager::m_messidx;
+datfile_manager::dataindex datfile_manager::m_cmdidx;
+datfile_manager::dataindex datfile_manager::m_sysidx;
+datfile_manager::dataindex datfile_manager::m_storyidx;
+datfile_manager::drvindex datfile_manager::m_drvidx;
+datfile_manager::drvindex datfile_manager::m_messdrvidx;
+datfile_manager::drvindex datfile_manager::m_menuidx;
+datfile_manager::swindex datfile_manager::m_swindex;
+std::string datfile_manager::m_history_rev;
+std::string datfile_manager::m_mame_rev;
+std::string datfile_manager::m_mess_rev;
+std::string datfile_manager::m_sysinfo_rev;
+std::string datfile_manager::m_story_rev;
+bool datfile_manager::first_run = true;
+
+//-------------------------------------------------
+// ctor
+//-------------------------------------------------
+datfile_manager::datfile_manager(running_machine &machine) : m_machine(machine)
+{
+ if (machine.ui().options().enabled_dats() && first_run)
+ {
+ first_run = false;
+ if (parseopen("mameinfo.dat"))
+ {
+ init_mameinfo();
+ parseclose();
+ }
+
+ if (parseopen("command.dat"))
+ {
+ init_command();
+ parseclose();
+ }
+
+ if (parseopen("story.dat"))
+ {
+ init_storyinfo();
+ parseclose();
+ }
+
+ if (parseopen("messinfo.dat"))
+ {
+ init_messinfo();
+ parseclose();
+ }
+
+ if (parseopen("sysinfo.dat"))
+ {
+ init_sysinfo();
+ parseclose();
+ }
+
+ if (parseopen("history.dat"))
+ {
+ init_history();
+ parseclose();
+ }
+ }
+}
+
+//-------------------------------------------------
+// initialize sysinfo.dat index
+//-------------------------------------------------
+void datfile_manager::init_sysinfo()
+{
+ int swcount = 0;
+ int count = index_datafile(m_sysidx, swcount);
+ osd_printf_verbose("Sysinfo.dat games found = %i\n", count);
+ osd_printf_verbose("Rev = %s\n", m_sysinfo_rev.c_str());
+}
+
+//-------------------------------------------------
+// initialize story.dat index
+//-------------------------------------------------
+void datfile_manager::init_storyinfo()
+{
+ int swcount = 0;
+ int count = index_datafile(m_storyidx, swcount);
+ osd_printf_verbose("Story.dat games found = %i\n", count);
+}
+
+//-------------------------------------------------
+// initialize history.dat index
+//-------------------------------------------------
+void datfile_manager::init_history()
+{
+ int swcount = 0;
+ int count = index_datafile(m_histidx, swcount);
+ osd_printf_verbose("History.dat games found = %i\n", count);
+ osd_printf_verbose("History.dat softwares found = %i\n", swcount);
+ osd_printf_verbose("Rev = %s\n", m_history_rev.c_str());
+}
+
+//-------------------------------------------------
+// initialize mameinfo.dat index
+//-------------------------------------------------
+void datfile_manager::init_mameinfo()
+{
+ int drvcount = 0;
+ int count = index_mame_mess_info(m_mameidx, m_drvidx, drvcount);
+ osd_printf_verbose("Mameinfo.dat games found = %i\n", count);
+ osd_printf_verbose("Mameinfo.dat drivers found = %d\n", drvcount);
+ osd_printf_verbose("Rev = %s\n", m_mame_rev.c_str());
+}
+
+//-------------------------------------------------
+// initialize messinfo.dat index
+//-------------------------------------------------
+void datfile_manager::init_messinfo()
+{
+ int drvcount = 0;
+ int count = index_mame_mess_info(m_messidx, m_messdrvidx, drvcount);
+ osd_printf_verbose("Messinfo.dat games found = %i\n", count);
+ osd_printf_verbose("Messinfo.dat drivers found = %d\n", drvcount);
+ osd_printf_verbose("Rev = %s\n", m_mess_rev.c_str());
+}
+
+//-------------------------------------------------
+// initialize command.dat index
+//-------------------------------------------------
+void datfile_manager::init_command()
+{
+ int swcount = 0;
+ int count = index_datafile(m_cmdidx, swcount);
+ osd_printf_verbose("Command.dat games found = %i\n", count);
+}
+
+//-------------------------------------------------
+// load software info
+//-------------------------------------------------
+void datfile_manager::load_software_info(std::string &softlist, std::string &buffer, std::string &softname, std::string &parentname)
+{
+ // Load history text
+ if (!m_swindex.empty() && parseopen("history.dat"))
+ {
+ // Find software in software list index
+ if (m_swindex.find(softlist) == m_swindex.end())
+ return;
+
+ drvindex::iterator itemsiter;
+ itemsiter = m_swindex[softlist].find(softname);
+ if (itemsiter == m_swindex[softlist].end() && !parentname.empty())
+ itemsiter = m_swindex[softlist].find(parentname);
+
+ if (itemsiter == m_swindex[softlist].end())
+ return;
+
+ long s_offset = (*itemsiter).second;
+ char rbuf[64 * 1024];
+ fseek(fp, s_offset, SEEK_SET);
+ std::string readbuf;
+ while (fgets(rbuf, 64 * 1024, fp) != nullptr)
+ {
+ readbuf = chartrimcarriage(rbuf);
+
+ // end entry when a end tag is encountered
+ if (readbuf == TAG_END)
+ break;
+
+ // add this string to the buffer
+ buffer.append(readbuf).append("\n");
+ }
+ parseclose();
+ }
+}
+
+//-------------------------------------------------
+// load_data_info
+//-------------------------------------------------
+void datfile_manager::load_data_info(const game_driver *drv, std::string &buffer, int type)
+{
+ dataindex index_idx;
+ drvindex driver_idx;
+ std::string tag;
+ std::string filename;
+
+ switch (type)
+ {
+ case UI_HISTORY_LOAD:
+ filename = "history.dat";
+ tag = TAG_BIO;
+ index_idx = m_histidx;
+ break;
+ case UI_MAMEINFO_LOAD:
+ filename = "mameinfo.dat";
+ tag = TAG_MAME;
+ index_idx = m_mameidx;
+ driver_idx = m_drvidx;
+ break;
+ case UI_SYSINFO_LOAD:
+ filename = "sysinfo.dat";
+ tag = TAG_BIO;
+ index_idx = m_sysidx;
+ break;
+ case UI_MESSINFO_LOAD:
+ filename = "messinfo.dat";
+ tag = TAG_MAME;
+ index_idx = m_messidx;
+ driver_idx = m_messdrvidx;
+ break;
+ case UI_STORY_LOAD:
+ filename = "story.dat";
+ tag = TAG_STORY;
+ index_idx = m_storyidx;
+ break;
+ }
+
+ if (parseopen(filename.c_str()))
+ {
+ load_data_text(drv, buffer, index_idx, tag);
+
+ // load driver info
+ if (!driver_idx.empty())
+ load_driver_text(drv, buffer, driver_idx, TAG_DRIVER);
+
+ // cleanup mameinfo and sysinfo double line spacing
+ if (tag == TAG_MAME || type == UI_SYSINFO_LOAD)
+ strreplace(buffer, "\n\n", "\n");
+
+ parseclose();
+ }
+}
+
+//-------------------------------------------------
+// load a game text into the buffer
+//-------------------------------------------------
+void datfile_manager::load_data_text(const game_driver *drv, std::string &buffer, dataindex &idx, std::string &tag)
+{
+ dataindex::iterator itemsiter = idx.find(drv);
+ if (itemsiter == idx.end())
+ {
+ int cloneof = driver_list::non_bios_clone(*drv);
+ if (cloneof == -1)
+ return;
+ else
+ {
+ const game_driver *c_drv = &driver_list::driver(cloneof);
+ itemsiter = idx.find(c_drv);
+ if (itemsiter == idx.end())
+ return;
+ }
+ }
+
+ long s_offset = (*itemsiter).second;
+ fseek(fp, s_offset, SEEK_SET);
+ char rbuf[64 * 1024];
+ std::string readbuf;
+ while (fgets(rbuf, 64 * 1024, fp) != nullptr)
+ {
+ readbuf = chartrimcarriage(rbuf);
+
+ // end entry when a end tag is encountered
+ if (readbuf == TAG_END)
+ break;
+
+ // continue if a specific tag is encountered
+ if (readbuf == tag)
+ continue;
+
+ // add this string to the buffer
+ buffer.append(readbuf).append("\n");
+ }
+}
+
+//-------------------------------------------------
+// load a driver name and offset into an
+// indexed array
+//-------------------------------------------------
+void datfile_manager::load_driver_text(const game_driver *drv, std::string &buffer, drvindex &idx, std::string &tag)
+{
+ std::string s(core_filename_extract_base(drv->source_file));
+ drvindex::const_iterator index = idx.find(s);
+
+ // if driver not found, return
+ if (index == idx.end())
+ return;
+
+ buffer.append("\n--- DRIVER INFO ---\n").append("Driver: ").append(s).append("\n\n");
+ long s_offset = (*index).second;
+ fseek(fp, s_offset, SEEK_SET);
+ char rbuf[64 * 1024];
+ std::string readbuf;
+ while (fgets(rbuf, 64 * 1024, fp) != nullptr)
+ {
+ readbuf = chartrimcarriage(rbuf);
+
+ // end entry when a end tag is encountered
+ if (readbuf == TAG_END)
+ break;
+
+ // continue if a specific tag is encountered
+ if (readbuf == tag)
+ continue;
+
+ // add this string to the buffer
+ buffer.append(readbuf).append("\n");
+ }
+}
+
+//-------------------------------------------------
+// load a game name and offset into an
+// indexed array (mameinfo)
+//-------------------------------------------------
+int datfile_manager::index_mame_mess_info(dataindex &index, drvindex &index_drv, int &drvcount)
+{
+ std::string name;
+ size_t foundtag;
+ size_t t_mame = TAG_MAMEINFO_R.size();
+ size_t t_mess = TAG_MESSINFO_R.size();
+ size_t t_info = TAG_INFO.size();
+
+ char rbuf[64 * 1024];
+ std::string readbuf, xid;
+ while (fgets(rbuf, 64 * 1024, fp) != nullptr)
+ {
+ readbuf = chartrimcarriage(rbuf);
+ if (m_mame_rev.empty() && readbuf.compare(0, t_mame, TAG_MAMEINFO_R) == 0)
+ {
+ size_t found = readbuf.find(" ", t_mame + 1);
+ m_mame_rev = readbuf.substr(t_mame + 1, found - t_mame);
+ }
+ else if (m_mess_rev.empty() && (foundtag = readbuf.find(TAG_MESSINFO_R)) != std::string::npos)
+ {
+ size_t found = readbuf.find(" ", foundtag + t_mess + 1);
+ m_mess_rev = readbuf.substr(foundtag + t_mess + 1, found - t_mess - foundtag);
+ }
+ else if (readbuf.compare(0, t_info, TAG_INFO) == 0)
+ {
+ // TAG_INFO
+ fgets(rbuf, 64 * 1024, fp);
+ xid = chartrimcarriage(rbuf);
+ name = readbuf.substr(t_info + 1);
+ if (xid == TAG_MAME)
+ {
+ // validate driver
+ int game_index = driver_list::find(name.c_str());
+ if (game_index != -1)
+ index.emplace(&driver_list::driver(game_index), ftell(fp));
+ }
+ else if (xid == TAG_DRIVER)
+ {
+ index_drv.emplace(name, ftell(fp));
+ drvcount++;
+ }
+ }
+ }
+ return index.size();
+}
+
+//-------------------------------------------------
+// load a game name and offset into an
+// indexed array
+//-------------------------------------------------
+int datfile_manager::index_datafile(dataindex &index, int &swcount)
+{
+ std::string readbuf, name;
+ size_t t_hist = TAG_HISTORY_R.size();
+ size_t t_story = TAG_STORY_R.size();
+ size_t t_sysinfo = TAG_SYSINFO_R.size();
+ size_t t_info = TAG_INFO.size();
+ size_t t_bio = TAG_BIO.size();
+ char rbuf[64 * 1024];
+ while (fgets(rbuf, 64 * 1024, fp) != nullptr)
+ {
+ readbuf = chartrimcarriage(rbuf);
+
+ if (m_history_rev.empty() && readbuf.compare(0, t_hist, TAG_HISTORY_R) == 0)
+ {
+ size_t found = readbuf.find(" ", t_hist + 1);
+ m_history_rev = readbuf.substr(t_hist + 1, found - t_hist);
+ }
+ else if (m_sysinfo_rev.empty() && readbuf.compare(0, t_sysinfo, TAG_SYSINFO_R) == 0)
+ {
+ size_t found = readbuf.find(".", t_sysinfo + 1);
+ m_sysinfo_rev = readbuf.substr(t_sysinfo + 1, found - t_sysinfo);
+ }
+ else if (m_story_rev.empty() && readbuf.compare(0, t_story, TAG_STORY_R) == 0)
+ m_story_rev = readbuf.substr(t_story + 1);
+
+ // TAG_INFO identifies the driver
+ else if (readbuf.compare(0, t_info, TAG_INFO) == 0)
+ {
+ int curpoint = t_info + 1;
+ int ends = readbuf.size();
+ while (curpoint < ends)
+ {
+ // search for comma
+ size_t found = readbuf.find(",", curpoint);
+
+ // found it
+ if (found != std::string::npos)
+ {
+ // copy data and validate driver
+ name = readbuf.substr(curpoint, found - curpoint);
+
+ // validate driver
+ int game_index = driver_list::find(name.c_str());
+ if (game_index != -1)
+ index.emplace(&driver_list::driver(game_index), ftell(fp));
+
+ // update current point
+ curpoint = ++found;
+ }
+ // if comma not found, copy data while until reach the end of string
+ else if (curpoint < ends)
+ {
+ name = readbuf.substr(curpoint);
+ int game_index = driver_list::find(name.c_str());
+ if (game_index != -1)
+ index.emplace(&driver_list::driver(game_index), ftell(fp));
+
+ // update current point
+ curpoint = ends;
+ }
+ }
+ }
+ // search for software info
+ else if (!readbuf.empty() && readbuf[0] == DATAFILE_TAG[0])
+ {
+ fgets(rbuf, 64 * 1024, fp);
+ std::string readbuf_2(chartrimcarriage(rbuf));
+
+ // TAG_BIO identifies software list
+ if (readbuf_2.compare(0, t_bio, TAG_BIO) == 0)
+ {
+ size_t eq_sign = readbuf.find("=");
+ std::string s_list(readbuf.substr(1, eq_sign - 1));
+ std::string s_roms(readbuf.substr(eq_sign + 1));
+ int ends = s_list.size();
+ int curpoint = 0;
+
+ while (curpoint < ends)
+ {
+ size_t found = s_list.find(",", curpoint);
+
+ // found it
+ if (found != std::string::npos)
+ {
+ name = s_list.substr(curpoint, found - curpoint);
+ curpoint = ++found;
+ }
+ else
+ {
+ name = s_list;
+ curpoint = ends;
+ }
+
+ // search for a software list in the index, if not found then allocates
+ std::string lname(name);
+ int cpoint = 0;
+ int cends = s_roms.size();
+
+ while (cpoint < cends)
+ {
+ // search for comma
+ size_t found = s_roms.find(",", cpoint);
+
+ // found it
+ if (found != std::string::npos)
+ {
+ // copy data
+ name = s_roms.substr(cpoint, found - cpoint);
+
+ // add a SoftwareItem
+ m_swindex[lname].emplace(name, ftell(fp));
+
+ // update current point
+ cpoint = ++found;
+ swcount++;
+ }
+ else
+ {
+ // if reach the end, bail out
+ if (s_roms[cpoint] == '\r' || s_roms[cpoint] == '\n')
+ break;
+
+ // copy data
+ name = s_roms.substr(cpoint);
+
+ // add a SoftwareItem
+ m_swindex[lname].emplace(name, ftell(fp));
+
+ // update current point
+ cpoint = cends;
+ swcount++;
+ }
+ }
+ }
+ }
+ }
+ }
+ return index.size();
+}
+
+//---------------------------------------------------------
+// parseopen - Open up file for reading
+//---------------------------------------------------------
+bool datfile_manager::parseopen(const char *filename)
+{
+ // MAME core file parsing functions fail in recognizing UNICODE chars in UTF-8 without BOM,
+ // so it's better and faster use standard C fileio functions.
+
+ emu_file file(machine().ui().options().history_path(), OPEN_FLAG_READ);
+ if (file.open(filename) != FILERR_NONE)
+ return false;
+
+ m_fullpath = file.fullpath();
+ file.close();
+ fp = fopen(m_fullpath.c_str(), "rb");
+
+ fgetc(fp);
+ fseek(fp, 0, SEEK_SET);
+ return true;
+}
+
+//-------------------------------------------------
+// create the menu index
+//-------------------------------------------------
+void datfile_manager::index_menuidx(const game_driver *drv, dataindex &idx, drvindex &index)
+{
+ dataindex::iterator itemsiter = idx.find(drv);
+ if (itemsiter == idx.end())
+ {
+ int cloneof = driver_list::non_bios_clone(*drv);
+ if (cloneof == -1)
+ return;
+ else
+ {
+ const game_driver *c_drv = &driver_list::driver(cloneof);
+ itemsiter = idx.find(c_drv);
+ if (itemsiter == idx.end())
+ return;
+ }
+ }
+
+ // seek to correct point in datafile
+ long s_offset = (*itemsiter).second;
+ fseek(fp, s_offset, SEEK_SET);
+ size_t tinfo = TAG_INFO.size();
+ char rbuf[64 * 1024];
+ std::string readbuf;
+ while (fgets(rbuf, 64 * 1024, fp) != nullptr)
+ {
+ readbuf = chartrimcarriage(rbuf);
+
+ if (!core_strnicmp(TAG_INFO.c_str(), readbuf.c_str(), tinfo))
+ break;
+
+ // TAG_COMMAND identifies the driver
+ if (readbuf == TAG_COMMAND)
+ {
+ fgets(rbuf, 64 * 1024, fp);
+ chartrimcarriage(rbuf);
+ index.emplace(rbuf, ftell(fp));
+ }
+ }
+}
+
+//-------------------------------------------------
+// load command text into the buffer
+//-------------------------------------------------
+void datfile_manager::load_command_info(std::string &buffer, std::string &sel)
+{
+ if (parseopen("command.dat"))
+ {
+ // open and seek to correct point in datafile
+ long offset = m_menuidx.at(sel);
+ fseek(fp, offset, SEEK_SET);
+ char rbuf[64 * 1024];
+ std::string readbuf;
+ while (fgets(rbuf, 64 * 1024, fp) != nullptr)
+ {
+ readbuf = chartrimcarriage(rbuf);
+
+ // skip separator lines
+ if (readbuf == TAG_COMMAND_SEPARATOR)
+ continue;
+
+ // end entry when a tag is encountered
+ if (readbuf == TAG_END)
+ break;
+
+ // add this string to the buffer
+ buffer.append(readbuf).append("\n");;
+ }
+ parseclose();
+ }
+}
+
+//-------------------------------------------------
+// load submenu item for command.dat
+//-------------------------------------------------
+void datfile_manager::command_sub_menu(const game_driver *drv, std::vector<std::string> &menuitems)
+{
+ if (parseopen("command.dat"))
+ {
+ m_menuidx.clear();
+ index_menuidx(drv, m_cmdidx, m_menuidx);
+ for (auto & elem : m_menuidx)
+ menuitems.push_back(elem.first);
+ parseclose();
+ }
+} \ No newline at end of file
diff --git a/src/emu/ui/datfile.h b/src/emu/ui/datfile.h
new file mode 100644
index 00000000000..959419eb0f7
--- /dev/null
+++ b/src/emu/ui/datfile.h
@@ -0,0 +1,79 @@
+// license:BSD-3-Clause
+// copyright-holders:Dankan1890
+/***************************************************************************
+
+ ui/datfile.h
+
+ UI DATs manager.
+
+***************************************************************************/
+
+#pragma once
+
+#ifndef __UI_DATFILE_H__
+#define __UI_DATFILE_H__
+
+//-------------------------------------------------
+// Datafile Manager
+//-------------------------------------------------
+class datfile_manager
+{
+public:
+ // construction/destruction
+ datfile_manager(running_machine &machine);
+
+ // getters
+ running_machine &machine() const { return m_machine; }
+
+ // actions
+ void load_data_info(const game_driver *drv, std::string &buffer, int type);
+ void load_command_info(std::string &buffer, std::string &sel);
+ void load_software_info(std::string &softlist, std::string &buffer, std::string &softname, std::string &parentname);
+ void command_sub_menu(const game_driver *drv, std::vector<std::string> &menuitems);
+ void reset_run() { first_run = true; }
+
+ std::string rev_history() const { return m_history_rev; }
+ std::string rev_mameinfo() const { return m_mame_rev; }
+ std::string rev_messinfo() const { return m_mess_rev; }
+ std::string rev_sysinfo() const { return m_sysinfo_rev; }
+ std::string rev_storyinfo() const { return m_story_rev; }
+
+private:
+ using drvindex = std::unordered_map<std::string, long>;
+ using dataindex = std::unordered_map<const game_driver *, long>;
+ using swindex = std::unordered_map<std::string, drvindex>;
+
+ // global index
+ static dataindex m_histidx, m_mameidx, m_messidx, m_cmdidx, m_sysidx, m_storyidx;
+ static drvindex m_drvidx, m_messdrvidx, m_menuidx;
+ static swindex m_swindex;
+
+ // internal helpers
+ void init_history();
+ void init_mameinfo();
+ void init_messinfo();
+ void init_command();
+ void init_sysinfo();
+ void init_storyinfo();
+
+ // file open/close/seek
+ bool parseopen(const char *filename);
+ void parseclose() { if (fp != nullptr) fclose(fp); }
+
+ int index_mame_mess_info(dataindex &index, drvindex &index_drv, int &drvcount);
+ int index_datafile(dataindex &index, int &swcount);
+ void index_menuidx(const game_driver *drv, dataindex &idx, drvindex &index);
+
+ void load_data_text(const game_driver *drv, std::string &buffer, dataindex &idx, std::string &tag);
+ void load_driver_text(const game_driver *drv, std::string &buffer, drvindex &idx, std::string &tag);
+
+ // internal state
+ running_machine &m_machine; // reference to our machine
+ std::string m_fullpath;
+ static std::string m_history_rev, m_mame_rev, m_mess_rev, m_sysinfo_rev, m_story_rev;
+ FILE *fp = nullptr;
+ static bool first_run;
+};
+
+
+#endif /* __UI_DATFILE_H__ */
diff --git a/src/emu/ui/datmenu.cpp b/src/emu/ui/datmenu.cpp
new file mode 100644
index 00000000000..2f8a8490a9b
--- /dev/null
+++ b/src/emu/ui/datmenu.cpp
@@ -0,0 +1,569 @@
+// license:BSD-3-Clause
+// copyright-holders:Dankan1890
+/*********************************************************************
+
+ ui/datmenu.cpp
+
+ Internal UI user interface.
+
+*********************************************************************/
+
+#include "emu.h"
+#include "ui/ui.h"
+#include "ui/menu.h"
+#include "drivenum.h"
+#include "rendfont.h"
+#include "ui/datfile.h"
+#include "ui/datmenu.h"
+#include "ui/utils.h"
+#include "softlist.h"
+
+/**************************************************
+ MENU COMMAND
+**************************************************/
+//-------------------------------------------------
+// ctor / dtor
+//-------------------------------------------------
+
+ui_menu_command::ui_menu_command(running_machine &machine, render_container *container, const game_driver *driver) : ui_menu(machine, container)
+{
+ m_driver = (driver == nullptr) ? &machine.system() : driver;
+}
+
+ui_menu_command::~ui_menu_command()
+{
+}
+
+//-------------------------------------------------
+// populate
+//-------------------------------------------------
+
+void ui_menu_command::populate()
+{
+ std::vector<std::string> text;
+ machine().datfile().command_sub_menu(m_driver, text);
+
+ if (!text.empty())
+ {
+ for (size_t menu_items = 0; menu_items < text.size(); menu_items++)
+ item_append(text[menu_items].c_str(), nullptr, 0, (void *)(FPTR)menu_items);
+ }
+ else
+ item_append("No available Command for this machine.", nullptr, MENU_FLAG_DISABLE, nullptr);
+
+ item_append(MENU_SEPARATOR_ITEM, nullptr, 0, nullptr);
+ customtop = machine().ui().get_line_height() + 3.0f * UI_BOX_TB_BORDER;
+
+}
+
+//-------------------------------------------------
+// handle
+//-------------------------------------------------
+
+void ui_menu_command::handle()
+{
+ // process the menu
+ const ui_menu_event *m_event = process(0);
+
+ if (m_event != nullptr && m_event->iptkey == IPT_UI_SELECT)
+ {
+ std::string m_title(item[selected].text);
+ ui_menu::stack_push(global_alloc_clear<ui_menu_command_content>(machine(), container, m_title, m_driver));
+ }
+}
+
+//-------------------------------------------------
+// perform our special rendering
+//-------------------------------------------------
+
+void ui_menu_command::custom_render(void *selectedref, float top, float bottom, float origx1, float origy1, float origx2, float origy2)
+{
+ float width;
+ ui_manager &mui = machine().ui();
+ std::string tempbuf = std::string("Command Info - Game: ").append(m_driver->description);
+
+ // get the size of the text
+ mui.draw_text_full(container, tempbuf.c_str(), 0.0f, 0.0f, 1.0f, JUSTIFY_CENTER, WRAP_NEVER,
+ DRAW_NONE, ARGB_WHITE, ARGB_BLACK, &width, nullptr);
+ width += (2.0f * UI_BOX_LR_BORDER) + 0.01f;
+ float maxwidth = MAX(width, origx2 - origx1);
+
+ // compute our bounds
+ float x1 = 0.5f - 0.5f * maxwidth;
+ float x2 = x1 + maxwidth;
+ float y1 = origy1 - top;
+ float y2 = origy1 - UI_BOX_TB_BORDER;
+
+ // draw a box
+ mui.draw_outlined_box(container, x1, y1, x2, y2, UI_GREEN_COLOR);
+
+ // take off the borders
+ x1 += UI_BOX_LR_BORDER;
+ x2 -= UI_BOX_LR_BORDER;
+ y1 += UI_BOX_TB_BORDER;
+
+ // draw the text within it
+ mui.draw_text_full(container, tempbuf.c_str(), x1, y1, x2 - x1, JUSTIFY_CENTER, WRAP_NEVER,
+ DRAW_NORMAL, UI_TEXT_COLOR, UI_TEXT_BG_COLOR, nullptr, nullptr);
+
+}
+
+//-------------------------------------------------
+// ctor / dtor
+//-------------------------------------------------
+
+ui_menu_command_content::ui_menu_command_content(running_machine &machine, render_container *container, std::string p_title, const game_driver *driver) : ui_menu(machine, container)
+{
+ m_driver = (driver == nullptr) ? &machine.system() : driver;
+ m_title = p_title;
+}
+
+ui_menu_command_content::~ui_menu_command_content()
+{
+}
+
+//-------------------------------------------------
+// handle
+//-------------------------------------------------
+
+void ui_menu_command_content::handle()
+{
+ // process the menu
+ process(0);
+}
+
+//-------------------------------------------------
+// populate
+//-------------------------------------------------
+
+void ui_menu_command_content::populate()
+{
+ machine().pause();
+ std::string buffer;
+ machine().datfile().load_command_info(buffer, m_title);
+ float line_height = machine().ui().get_line_height();
+
+ if (!buffer.empty())
+ {
+ float gutter_width = 0.52f * line_height * machine().render().ui_aspect();
+ std::vector<int> xstart;
+ std::vector<int> xend;
+ int total_lines;
+ convert_command_glyph(buffer);
+ machine().ui().wrap_text(container, buffer.c_str(), 0.0f, 0.0f, 1.0f - (2.0f * UI_BOX_LR_BORDER) - 0.02f - (2.0f * gutter_width),
+ total_lines, xstart, xend);
+ for (int r = 0; r < total_lines; r++)
+ {
+ std::string tempbuf(buffer.substr(xstart[r], xend[r] - xstart[r]));
+ int first_dspace = tempbuf.find(" ");
+ if (first_dspace > 0 )
+ {
+ std::string first_part(tempbuf.substr(0, first_dspace));
+ std::string last_part(tempbuf.substr(first_dspace));
+ strtrimspace(last_part);
+ item_append(first_part.c_str(), last_part.c_str(), MENU_FLAG_UI_HISTORY, nullptr);
+ }
+ else
+ item_append(tempbuf.c_str(), nullptr, MENU_FLAG_UI_HISTORY, nullptr);
+ }
+ item_append(MENU_SEPARATOR_ITEM, nullptr, 0, nullptr);
+ }
+
+ machine().resume();
+ customtop = custombottom = line_height + 3.0f * UI_BOX_TB_BORDER;
+}
+
+//-------------------------------------------------
+// perform our special rendering
+//-------------------------------------------------
+
+void ui_menu_command_content::custom_render(void *selectedref, float top, float bottom, float origx1, float origy1, float origx2, float origy2)
+{
+ float width;
+ ui_manager &mui = machine().ui();
+
+ // get the size of the text
+ mui.draw_text_full(container, m_title.c_str(), 0.0f, 0.0f, 1.0f, JUSTIFY_CENTER, WRAP_NEVER,
+ DRAW_NONE, ARGB_WHITE, ARGB_BLACK, &width, nullptr);
+ width += (2.0f * UI_BOX_LR_BORDER) + 0.01f;
+ float maxwidth = MAX(width, origx2 - origx1);
+
+ // compute our bounds
+ float x1 = 0.5f - 0.5f * maxwidth;
+ float x2 = x1 + maxwidth;
+ float y1 = origy1 - top;
+ float y2 = origy1 - UI_BOX_TB_BORDER;
+
+ // draw a box
+ mui.draw_outlined_box(container, x1, y1, x2, y2, UI_GREEN_COLOR);
+
+ // take off the borders
+ x1 += UI_BOX_LR_BORDER;
+ x2 -= UI_BOX_LR_BORDER;
+ y1 += UI_BOX_TB_BORDER;
+
+ // draw the text within it
+ mui.draw_text_full(container, m_title.c_str(), x1, y1, x2 - x1, JUSTIFY_CENTER, WRAP_NEVER,
+ DRAW_NORMAL, UI_TEXT_COLOR, UI_TEXT_BG_COLOR, nullptr, nullptr);
+
+ std::string tempbuf = std::string("Command Info - Game: ").append(m_driver->description);
+
+ mui.draw_text_full(container, tempbuf.c_str(), 0.0f, 0.0f, 1.0f, JUSTIFY_CENTER, WRAP_NEVER,
+ DRAW_NONE, ARGB_WHITE, ARGB_BLACK, &width, nullptr);
+ width += 2 * UI_BOX_LR_BORDER;
+ maxwidth = MAX(origx2 - origx1, width);
+
+ // compute our bounds
+ x1 = 0.5f - 0.5f * maxwidth;
+ x2 = x1 + maxwidth;
+ y1 = origy2 + UI_BOX_TB_BORDER;
+ y2 = origy2 + bottom;
+
+ // draw a box
+ mui.draw_outlined_box(container, x1, y1, x2, y2, UI_GREEN_COLOR);
+
+ // take off the borders
+ x1 += UI_BOX_LR_BORDER;
+ x2 -= UI_BOX_LR_BORDER;
+ y1 += UI_BOX_TB_BORDER;
+
+ // draw the text within it
+ mui.draw_text_full(container, tempbuf.c_str(), x1, y1, x2 - x1, JUSTIFY_CENTER, WRAP_NEVER,
+ DRAW_NORMAL, UI_TEXT_COLOR, UI_TEXT_BG_COLOR, nullptr, nullptr);
+}
+
+/**************************************************
+ MENU SOFTWARE HISTORY
+**************************************************/
+//-------------------------------------------------
+// ctor / dtor
+//-------------------------------------------------
+
+ui_menu_history_sw::ui_menu_history_sw(running_machine &machine, render_container *container, ui_software_info *swinfo, const game_driver *driver) : ui_menu(machine, container)
+{
+ m_list = swinfo->listname;
+ m_short = swinfo->shortname;
+ m_long = swinfo->longname;
+ m_parent = swinfo->parentname;
+ m_driver = (driver == nullptr) ? &machine.system() : driver;
+}
+
+ui_menu_history_sw::ui_menu_history_sw(running_machine &machine, render_container *container, const game_driver *driver) : ui_menu(machine, container)
+{
+ image_interface_iterator iter(machine.root_device());
+ for (device_image_interface *image = iter.first(); image != nullptr; image = iter.next())
+ {
+ if (image->filename())
+ {
+ m_list = strensure(image->software_list_name());
+ m_short = strensure(image->software_entry()->shortname());
+ m_long = strensure(image->software_entry()->longname());
+ m_parent = strensure(image->software_entry()->parentname());
+ }
+ }
+ m_driver = (driver == nullptr) ? &machine.system() : driver;
+}
+
+ui_menu_history_sw::~ui_menu_history_sw()
+{
+}
+
+//-------------------------------------------------
+// handle
+//-------------------------------------------------
+
+void ui_menu_history_sw::handle()
+{
+ // process the menu
+ process(0);
+}
+
+//-------------------------------------------------
+// populate
+//-------------------------------------------------
+
+void ui_menu_history_sw::populate()
+{
+ machine().pause();
+ std::string buffer;
+ machine().datfile().load_software_info(m_list, buffer, m_short, m_parent);
+ float line_height = machine().ui().get_line_height();
+
+ if (!buffer.empty())
+ {
+ float gutter_width = 0.52f * line_height * machine().render().ui_aspect();
+ std::vector<int> xstart;
+ std::vector<int> xend;
+ int total_lines;
+
+ machine().ui().wrap_text(container, buffer.c_str(), 0.0f, 0.0f, 1.0f - (2.0f * UI_BOX_LR_BORDER) - 0.02f - (2.0f * gutter_width),
+ total_lines, xstart, xend);
+
+ for (int r = 0; r < total_lines; r++)
+ {
+ std::string tempbuf(buffer.substr(xstart[r], xend[r] - xstart[r]));
+ item_append(tempbuf.c_str(), nullptr, MENU_FLAG_UI_HISTORY, nullptr);
+ }
+ }
+ else
+ item_append("No available History for this software.", nullptr, MENU_FLAG_DISABLE, nullptr);
+
+ machine().resume();
+
+ item_append(MENU_SEPARATOR_ITEM, nullptr, 0, nullptr);
+ customtop = custombottom = machine().ui().get_line_height() + 3.0f * UI_BOX_TB_BORDER;
+}
+
+//-------------------------------------------------
+// perform our special rendering
+//-------------------------------------------------
+
+void ui_menu_history_sw::custom_render(void *selectedref, float top, float bottom, float origx1, float origy1, float origx2, float origy2)
+{
+ float width;
+ std::string tempbuf = std::string("Software info - ").append(m_long);
+ ui_manager &mui = machine().ui();
+
+ // get the size of the text
+ mui.draw_text_full(container, tempbuf.c_str(), 0.0f, 0.0f, 1.0f, JUSTIFY_CENTER, WRAP_NEVER,
+ DRAW_NONE, ARGB_WHITE, ARGB_BLACK, &width, nullptr);
+ width += (2.0f * UI_BOX_LR_BORDER) + 0.01f;
+ float maxwidth = MAX(width, origx2 - origx1);
+
+ // compute our bounds
+ float x1 = 0.5f - 0.5f * maxwidth;
+ float x2 = x1 + maxwidth;
+ float y1 = origy1 - top;
+ float y2 = origy1 - UI_BOX_TB_BORDER;
+
+ // draw a box
+ mui.draw_outlined_box(container, x1, y1, x2, y2, UI_GREEN_COLOR);
+
+ // take off the borders
+ x1 += UI_BOX_LR_BORDER;
+ x2 -= UI_BOX_LR_BORDER;
+ y1 += UI_BOX_TB_BORDER;
+
+ // draw the text within it
+ mui.draw_text_full(container, tempbuf.c_str(), x1, y1, x2 - x1, JUSTIFY_CENTER, WRAP_NEVER,
+ DRAW_NORMAL, UI_TEXT_COLOR, UI_TEXT_BG_COLOR, nullptr, nullptr);
+
+ tempbuf.assign("System driver: ").append(m_driver->description);
+
+ mui.draw_text_full(container, tempbuf.c_str(), 0.0f, 0.0f, 1.0f, JUSTIFY_CENTER, WRAP_TRUNCATE,
+ DRAW_NONE, ARGB_WHITE, ARGB_BLACK, &width, nullptr);
+ width += 2 * UI_BOX_LR_BORDER;
+ maxwidth = MAX(origx2 - origx1, width);
+
+ // compute our bounds
+ x1 = 0.5f - 0.5f * maxwidth;
+ x2 = x1 + maxwidth;
+ y1 = origy2 + UI_BOX_TB_BORDER;
+ y2 = origy2 + bottom;
+
+ // draw a box
+ mui.draw_outlined_box(container, x1, y1, x2, y2, UI_GREEN_COLOR);
+
+ // take off the borders
+ x1 += UI_BOX_LR_BORDER;
+ x2 -= UI_BOX_LR_BORDER;
+ y1 += UI_BOX_TB_BORDER;
+
+ // draw the text within it
+ mui.draw_text_full(container, tempbuf.c_str(), x1, y1, x2 - x1, JUSTIFY_CENTER, WRAP_TRUNCATE,
+ DRAW_NORMAL, UI_TEXT_COLOR, UI_TEXT_BG_COLOR, nullptr, nullptr);
+}
+
+/**************************************************
+ MENU DATS
+**************************************************/
+//-------------------------------------------------
+// ctor / dtor
+//-------------------------------------------------
+
+ui_menu_dats::ui_menu_dats(running_machine &machine, render_container *container, int _flags, const game_driver *driver) : ui_menu(machine, container)
+{
+ m_driver = (driver == nullptr) ? &machine.system() : driver;
+ m_flags = _flags;
+}
+
+ui_menu_dats::~ui_menu_dats()
+{
+}
+
+//-------------------------------------------------
+// handle
+//-------------------------------------------------
+
+void ui_menu_dats::handle()
+{
+ // process the menu
+ process(0);
+}
+
+//-------------------------------------------------
+// populate
+//-------------------------------------------------
+
+void ui_menu_dats::populate()
+{
+ machine().pause();
+ switch (m_flags)
+ {
+ case UI_HISTORY_LOAD:
+ if (!get_data(m_driver, m_flags))
+ item_append("No available History for this machine.", nullptr, MENU_FLAG_DISABLE, nullptr);
+ break;
+
+ case UI_MAMEINFO_LOAD:
+ if (!get_data(m_driver, m_flags))
+ item_append("No available MameInfo for this machine.", nullptr, MENU_FLAG_DISABLE, nullptr);
+ break;
+
+ case UI_MESSINFO_LOAD:
+ if (!get_data(m_driver, m_flags))
+ item_append("No available MessInfo for this machine.", nullptr, MENU_FLAG_DISABLE, nullptr);
+ break;
+
+ case UI_STORY_LOAD:
+ if (!get_data(m_driver, UI_STORY_LOAD))
+ item_append("No available Mamescore for this machine.", nullptr, MENU_FLAG_DISABLE, nullptr);
+ break;
+
+ case UI_SYSINFO_LOAD:
+ if (!get_data(m_driver, UI_SYSINFO_LOAD))
+ item_append("No available Sysinfo for this machine.", nullptr, MENU_FLAG_DISABLE, nullptr);
+ break;
+ }
+
+ machine().resume();
+ item_append(MENU_SEPARATOR_ITEM, nullptr, 0, nullptr);
+ customtop = custombottom = machine().ui().get_line_height() + 3.0f * UI_BOX_TB_BORDER;
+}
+
+//-------------------------------------------------
+// perform our special rendering
+//-------------------------------------------------
+
+void ui_menu_dats::custom_render(void *selectedref, float top, float bottom, float origx1, float origy1, float origx2, float origy2)
+{
+ float width;
+ std::string tempbuf, revision;
+ datfile_manager &datfile = machine().datfile();
+ ui_manager &mui = machine().ui();
+
+ switch (m_flags)
+ {
+ case UI_HISTORY_LOAD:
+ tempbuf.assign("History - Game / System: ").append(m_driver->description);
+ revision.assign("History.dat Revision: ").append(datfile.rev_history());
+ break;
+
+ case UI_MESSINFO_LOAD:
+ tempbuf.assign("MessInfo - System: ").append(m_driver->description);
+ revision.assign("Messinfo.dat Revision: ").append(datfile.rev_messinfo());
+ break;
+
+ case UI_MAMEINFO_LOAD:
+ tempbuf.assign("MameInfo - Game: ").append(m_driver->description);
+ revision.assign("Mameinfo.dat Revision: ").append(datfile.rev_mameinfo());
+ break;
+
+ case UI_SYSINFO_LOAD:
+ tempbuf.assign("Sysinfo - System: ").append(m_driver->description);
+ revision.assign("Sysinfo.dat Revision: ").append(datfile.rev_sysinfo());
+ break;
+
+ case UI_STORY_LOAD:
+ tempbuf.assign("MAMESCORE - Game: ").append(m_driver->description);
+ revision.assign("Story.dat Revision: ").append(machine().datfile().rev_storyinfo());
+ break;
+ }
+
+ // get the size of the text
+ mui.draw_text_full(container, tempbuf.c_str(), 0.0f, 0.0f, 1.0f, JUSTIFY_CENTER, WRAP_NEVER,
+ DRAW_NONE, ARGB_WHITE, ARGB_BLACK, &width, nullptr);
+ width += (2.0f * UI_BOX_LR_BORDER) + 0.01f;
+ float maxwidth = MAX(width, origx2 - origx1);
+
+ // compute our bounds
+ float x1 = 0.5f - 0.5f * maxwidth;
+ float x2 = x1 + maxwidth;
+ float y1 = origy1 - top;
+ float y2 = origy1 - UI_BOX_TB_BORDER;
+
+ // draw a box
+ mui.draw_outlined_box(container, x1, y1, x2, y2, UI_GREEN_COLOR);
+
+ // take off the borders
+ x1 += UI_BOX_LR_BORDER;
+ x2 -= UI_BOX_LR_BORDER;
+ y1 += UI_BOX_TB_BORDER;
+
+ // draw the text within it
+ mui.draw_text_full(container, tempbuf.c_str(), x1, y1, x2 - x1, JUSTIFY_CENTER, WRAP_NEVER,
+ DRAW_NORMAL, UI_TEXT_COLOR, UI_TEXT_BG_COLOR, nullptr, nullptr);
+
+ mui.draw_text_full(container, revision.c_str(), 0.0f, 0.0f, 1.0f, JUSTIFY_CENTER, WRAP_TRUNCATE,
+ DRAW_NONE, ARGB_WHITE, ARGB_BLACK, &width, nullptr);
+ width += 2 * UI_BOX_LR_BORDER;
+ maxwidth = MAX(origx2 - origx1, width);
+
+ // compute our bounds
+ x1 = 0.5f - 0.5f * maxwidth;
+ x2 = x1 + maxwidth;
+ y1 = origy2 + UI_BOX_TB_BORDER;
+ y2 = origy2 + bottom;
+
+ // draw a box
+ mui.draw_outlined_box(container, x1, y1, x2, y2, UI_GREEN_COLOR);
+
+ // take off the borders
+ x1 += UI_BOX_LR_BORDER;
+ x2 -= UI_BOX_LR_BORDER;
+ y1 += UI_BOX_TB_BORDER;
+
+ // draw the text within it
+ mui.draw_text_full(container, revision.c_str(), x1, y1, x2 - x1, JUSTIFY_CENTER, WRAP_TRUNCATE,
+ DRAW_NORMAL, UI_TEXT_COLOR, UI_TEXT_BG_COLOR, nullptr, nullptr);
+}
+
+//-------------------------------------------------
+// load data from DATs
+//-------------------------------------------------
+
+bool ui_menu_dats::get_data(const game_driver *driver, int flags)
+{
+ std::string buffer;
+ machine().datfile().load_data_info(driver, buffer, flags);
+
+ if (buffer.empty())
+ return false;
+
+ float line_height = machine().ui().get_line_height();
+ float gutter_width = 0.52f * line_height * machine().render().ui_aspect();
+ std::vector<int> xstart;
+ std::vector<int> xend;
+ int tlines;
+
+ machine().ui().wrap_text(container, buffer.c_str(), 0.0f, 0.0f, 1.0f - (2.0f * UI_BOX_LR_BORDER) - 0.02f - (2.0f * gutter_width), tlines, xstart, xend);
+ for (int r = 0; r < tlines; r++)
+ {
+ std::string tempbuf(buffer.substr(xstart[r], xend[r] - xstart[r]));
+ // special case for mamescore
+ if (flags == UI_STORY_LOAD)
+ {
+ size_t last_underscore = tempbuf.find_last_of('_');
+ if (last_underscore != std::string::npos)
+ {
+ std::string last_part(tempbuf.substr(last_underscore + 1));
+ int primary = tempbuf.find("___");
+ std::string first_part(tempbuf.substr(0, primary));
+ item_append(first_part.c_str(), last_part.c_str(), MENU_FLAG_UI_HISTORY, nullptr);
+ }
+ }
+ else
+ item_append(tempbuf.c_str(), nullptr, MENU_FLAG_UI_HISTORY, nullptr);
+ }
+ return true;
+}
diff --git a/src/emu/ui/datmenu.h b/src/emu/ui/datmenu.h
new file mode 100644
index 00000000000..652c6492c43
--- /dev/null
+++ b/src/emu/ui/datmenu.h
@@ -0,0 +1,93 @@
+// license:BSD-3-Clause
+// copyright-holders:Dankan1890
+/***************************************************************************
+
+ ui/datmenu.h
+
+ Internal UI user interface.
+
+
+***************************************************************************/
+
+#pragma once
+
+#ifndef __UI_DATMENU_H__
+#define __UI_DATMENU_H__
+
+struct ui_software_info;
+
+//-------------------------------------------------
+// class dats menu
+//-------------------------------------------------
+
+class ui_menu_dats : public ui_menu
+{
+public:
+ ui_menu_dats(running_machine &machine, render_container *container, int _flags, const game_driver *driver = nullptr);
+ virtual ~ui_menu_dats();
+ virtual void populate() override;
+ virtual void handle() override;
+ virtual void custom_render(void *selectedref, float top, float bottom, float x, float y, float x2, float y2) override;
+
+private:
+ const game_driver *m_driver;
+ int m_flags;
+
+ bool get_data(const game_driver *driver, int flags);
+};
+
+//-------------------------------------------------
+// class command data menu
+//-------------------------------------------------
+
+class ui_menu_command : public ui_menu
+{
+public:
+ ui_menu_command(running_machine &machine, render_container *container, const game_driver *driver = nullptr);
+ virtual ~ui_menu_command();
+ virtual void populate() override;
+ virtual void handle() override;
+ virtual void custom_render(void *selectedref, float top, float bottom, float x, float y, float x2, float y2) override;
+
+private:
+ const game_driver *m_driver;
+};
+
+//-------------------------------------------------
+// class command content data menu
+//-------------------------------------------------
+
+class ui_menu_command_content : public ui_menu
+{
+public:
+ ui_menu_command_content(running_machine &machine, render_container *container, std::string title, const game_driver *driver = nullptr);
+ virtual ~ui_menu_command_content();
+ virtual void populate() override;
+ virtual void handle() override;
+ virtual void custom_render(void *selectedref, float top, float bottom, float x, float y, float x2, float y2) override;
+
+private:
+ const game_driver *m_driver;
+ std::string m_title;
+};
+
+//-------------------------------------------------
+// class software history menu
+//-------------------------------------------------
+
+class ui_menu_history_sw : public ui_menu
+{
+public:
+ ui_menu_history_sw(running_machine &machine, render_container *container, ui_software_info *swinfo, const game_driver *driver = nullptr);
+ ui_menu_history_sw(running_machine &machine, render_container *container, const game_driver *driver = nullptr);
+ virtual ~ui_menu_history_sw();
+ virtual void populate() override;
+ virtual void handle() override;
+ virtual void custom_render(void *selectedref, float top, float bottom, float x, float y, float x2, float y2) override;
+
+private:
+ std::string m_list, m_short, m_long, m_parent;
+ const game_driver *m_driver;
+};
+
+#endif /* __UI_DATMENU_H__ */
diff --git a/src/emu/ui/defimg.h b/src/emu/ui/defimg.h
new file mode 100644
index 00000000000..43b334b8f93
--- /dev/null
+++ b/src/emu/ui/defimg.h
@@ -0,0 +1,261 @@
+// license:BSD-3-Clause
+// copyright-holders:Dankan1890
+static const UINT32 no_avail_bmp[] =
+{
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00231f20, 0x00000000, 0x00000000, 0x00000000, 0x01231f20, 0x04231f20, 0x11231f20, 0x2e231f20, 0x62231f20, 0x8e231f20, 0xb4231f20, 0xd4231f20, 0xe5231f20, 0xf2231f20, 0xfd231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xfd231f20, 0xf2231f20, 0xe5231f20, 0xd4231f20, 0xb4231f20, 0x8e231f20, 0x62231f20, 0x2e231f20, 0x11231f20, 0x04231f20, 0x01231f20, 0x00000000, 0x00000000, 0x00000000, 0x00231f20, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00231f20, 0x00231f20, 0x00000000, 0x00000000, 0x06231f20, 0x1c231f20, 0x49231f20, 0x8c231f20, 0xc4231f20, 0xf0231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xf0231f20, 0xc4231f20, 0x8c231f20, 0x49231f20, 0x1c231f20, 0x06231f20, 0x00000000, 0x00000000, 0x00231f20, 0x00231f20, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00231f20, 0x00000000, 0x00000000, 0x04231f20, 0x32231f20, 0x7b231f20, 0xc2231f20, 0xf3231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xf3231f20, 0xc2231f20, 0x7b231f20, 0x32231f20, 0x04231f20, 0x00000000, 0x00000000, 0x00231f20, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x30231f20, 0x8e231f20, 0xd6231f20, 0xfd231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xfd231f20, 0xd6231f20, 0x8e231f20, 0x30231f20, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00231f20, 0x00000000, 0x0e231f20, 0x73231f20, 0xd8231f20, 0xfb231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xfb231f20, 0xd8231f20, 0x73231f20, 0x0e231f20, 0x00000000, 0x00231f20, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00231f20, 0x00231f20, 0x00000000, 0x29231f20, 0xb6231f20, 0xfb231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xfb231f20, 0xb6231f20, 0x29231f20, 0x00000000, 0x00231f20, 0x00231f20, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00231f20, 0x00000000, 0x00000000, 0x03231f20, 0x4f231f20, 0xdd231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xdd231f20, 0x4f231f20, 0x03231f20, 0x00000000, 0x00000000, 0x00231f20, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00231f20, 0x00000000, 0x00000000, 0x0a231f20, 0x72231f20, 0xf4231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xf4231f20, 0x72231f20, 0x0a231f20, 0x00000000, 0x00000000, 0x00231f20, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x10231f20, 0x84231f20, 0xf5231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff221e1f, 0xff1e1a1b, 0xff1e191a, 0xff1e1a1b, 0xff211c1e, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xf5231f20, 0x84231f20, 0x10231f20, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00231f20, 0x00000000, 0x0a231f20, 0x84231f20, 0xf5231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff201c1d, 0xff1c1718, 0xff1b1718, 0xff1b1718, 0xff1b1718, 0xff1d191a, 0xff221e1f, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff1e1a1b, 0xff1b1718, 0xff1b1718, 0xff1c1819, 0xff211d1e, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff201c1d, 0xff393637, 0xff7c7a7a, 0xff827f80, 0xff7d7b7c, 0xff494647, 0xff221e1f, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xf5231f20, 0x84231f20, 0x0a231f20, 0x00000000, 0x00231f20, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00231f20, 0x03231f20, 0x74231f20, 0xf5231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff221e1f, 0xff3b3839, 0xff585656, 0xff5a5757, 0xff5a5757, 0xff5b5858, 0xff4b4949, 0xff272325, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff464243, 0xff5a5858, 0xff5a5758, 0xff565253, 0xff312d2e, 0xff211d1e, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff1c1819, 0xff575355, 0xffececec, 0xfff7f7f7, 0xffededed, 0xff7a7878, 0xff211d1e, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xf5231f20, 0x74231f20, 0x03231f20, 0x00231f20, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00231f20, 0x00000000, 0x51231f20, 0xf4231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff1f1b1c, 0xff807d7e, 0xfff1f1f1, 0xfff6f6f6, 0xfff6f6f6, 0xfff9f9f9, 0xffe1e0e0, 0xff565354, 0xff221e1f, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff221e1f, 0xff221e1f, 0xffa9a7a7, 0xfff6f6f6, 0xfff6f6f6, 0xffe6e6e6, 0xff575455, 0xff1c1819, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff1b1718, 0xff585556, 0xfff5f5f5, 0xffffffff, 0xfff5f5f5, 0xff7d7b7c, 0xff201d1e, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xf4231f20, 0x51231f20, 0x00000000, 0x00231f20, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x2a231f20, 0xde231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff221e1f, 0xff1f1b1c, 0xff848283, 0xfff7f7f7, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffa6a4a5, 0xff2c2729, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff221e1f, 0xff221e1f, 0xffafadad, 0xfffdfdfd, 0xffffffff, 0xffedecec, 0xff5a5758, 0xff1c1819, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff1b1718, 0xff595556, 0xfff6f6f6, 0xffffffff, 0xfff6f6f6, 0xff7e7c7c, 0xff201d1e, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xde231f20, 0x2a231f20, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00231f20, 0x00000000, 0x0e231f20, 0xb5231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231e1f, 0xff1e1b1c, 0xff848282, 0xfff6f6f6, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xfff0f0f0, 0xff585556, 0xff211d1e, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff221e1f, 0xff221e1f, 0xffafadad, 0xfffdfdfd, 0xffffffff, 0xffececec, 0xff595658, 0xff1c1819, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff1c1819, 0xff524f50, 0xffdbdbdb, 0xffe5e4e5, 0xffdcdbdb, 0xff737071, 0xff211d1e, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xb5231f20, 0x0e231f20, 0x00000000, 0x00231f20, 0x00000000, 0x00000000,
+ 0x00000000, 0x00231f20, 0x00000000, 0x00000000, 0x73231f20, 0xfb231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff221e1f, 0xff1e1b1c, 0xff848282, 0xfff6f6f6, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffb4b3b4, 0xff282425, 0xff221e1f, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff221e1f, 0xff221e1f, 0xffafadad, 0xfffdfdfd, 0xffffffff, 0xffececec, 0xff595658, 0xff1c1819, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff211d1e, 0xff2e2b2c, 0xff4f4c4d, 0xff524f50, 0xff504d4e, 0xff363334, 0xff221e1f, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xfb231f20, 0x73231f20, 0x00000000, 0x00000000, 0x00231f20, 0x00000000,
+ 0x00000000, 0x00231f20, 0x00000000, 0x30231f20, 0xd8231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff221e1f, 0xff1e1b1c, 0xff848282, 0xfff6f6f6, 0xffffffff, 0xfffdfdfd, 0xffededed, 0xfffdfdfd, 0xffffffff, 0xfff9fafa, 0xff646162, 0xff1c1819, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff221e1f, 0xff221e1f, 0xffafadad, 0xfffdfdfd, 0xffffffff, 0xffececec, 0xff595658, 0xff1c1819, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff221e1f, 0xff1e1a1b, 0xff1e1a1b, 0xff1e1a1b, 0xff211d1e, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xd8231f20, 0x30231f20, 0x00000000, 0x00231f20, 0x00000000,
+ 0x00231f20, 0x00000000, 0x05231f20, 0x8e231f20, 0xfa231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff221e1f, 0xff1e1b1c, 0xff848282, 0xfff6f6f6, 0xffffffff, 0xfff8f8f8, 0xffadacac, 0xffdbdbdb, 0xffffffff, 0xffffffff, 0xffc8c7c7, 0xff2b2628, 0xff201c1d, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff221e1f, 0xff221e1f, 0xffafadad, 0xfffdfdfd, 0xffffffff, 0xffececec, 0xff595658, 0xff1c1819, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff201c1d, 0xff1c1718, 0xff1a1617, 0xff1b1718, 0xff1b1718, 0xff1a1617, 0xff1d191a, 0xff211d1e, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff221e1f, 0xff201c1d, 0xff201c1d, 0xff201c1d, 0xff221e1f, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff221e1f, 0xff201c1d, 0xff201c1d, 0xff201c1d, 0xff221e1f, 0xff231f20, 0xff231f20, 0xff211d1e, 0xff1d191a, 0xff1a1617, 0xff1b1718, 0xff1a1617, 0xff1b1718, 0xff1f1b1c, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff211d1e, 0xff1c1819, 0xff1a1517, 0xff1b1718, 0xff1a1517, 0xff1c1719, 0xff201c1d, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff221e1f, 0xff1f1b1c, 0xff1c1819, 0xff191516, 0xff1a1617, 0xff1a1617, 0xff191516, 0xff1b1718, 0xff1f1b1c, 0xff221e1f, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff211d1e, 0xff1c1819, 0xff1a1617, 0xff1b1718, 0xff1a1617, 0xff1a1617, 0xff1f1b1c, 0xff221e1f, 0xff231f20, 0xff231f20, 0xff221e1f, 0xff201c1d, 0xff201c1d, 0xff201c1d, 0xff221e1f, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff201c1d, 0xff1d191a, 0xff1a1516, 0xff1a1617, 0xff1b1718, 0xff191516, 0xff1b1718, 0xff201c1d, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xfa231f20, 0x8e231f20, 0x05231f20, 0x00000000, 0x00231f20,
+ 0x00000000, 0x00000000, 0x32231f20, 0xd8231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff221e1f, 0xff1e1b1c, 0xff848282, 0xfff6f6f6, 0xffffffff, 0xfff7f7f7, 0xff858384, 0xff949393, 0xfffdfefd, 0xffffffff, 0xfffdfdfd, 0xff767475, 0xff1c1718, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff221e1f, 0xff221e1f, 0xffafadad, 0xfffdfdfd, 0xffffffff, 0xffececec, 0xff595658, 0xff1c1819, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff221e1f, 0xff252122, 0xff413e3f, 0xff6e6c6c, 0xff8f8d8d, 0xff9c9b9b, 0xff9b9999, 0xff898787, 0xff646061, 0xff383435, 0xff221e1f, 0xff221e1f, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff221e1f, 0xff292526, 0xff393637, 0xff3b3839, 0xff3a3738, 0xff2c292a, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231e1f, 0xff2f2b2c, 0xff3a3738, 0xff3b3839, 0xff393536, 0xff282425, 0xff221e1f, 0xff201c1d, 0xff302d2e, 0xff5f5c5d, 0xff8a8788, 0xff9b9a9a, 0xff989797, 0xff7c7a7a, 0xff454243, 0xff231f20, 0xff221e1f, 0xff231f20, 0xff231f20, 0xff231f20, 0xff221e1f, 0xff221e1f, 0xff373334, 0xff666465, 0xff8e8c8c, 0xff9b999a, 0xff918f8f, 0xff716f6f, 0xff3b3839, 0xff221e1f, 0xff221e1f, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff211d1e, 0xff231f20, 0xff302c2d, 0xff4e4a4b, 0xff706e6f, 0xff8b898a, 0xff999797, 0xff999797, 0xff8e8c8d, 0xff767374, 0xff494646, 0xff2b2728, 0xff211d1e, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff221e1f, 0xff201c1d, 0xff332f30, 0xff636061, 0xff8d8b8b, 0xff9c9a9b, 0xff989697, 0xff807f7f, 0xff524f4f, 0xff2a2627, 0xff211d1e, 0xff221e1f, 0xff2e2a2b, 0xff3b3738, 0xff3b3839, 0xff383536, 0xff292526, 0xff221e1f, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff221e1f, 0xff231f20, 0xff393636, 0xff646162, 0xff878485, 0xff989697, 0xff9d9b9b, 0xff908e8e, 0xff716e6e, 0xff423f3f, 0xff252122, 0xff211d1e, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xd8231f20, 0x32231f20, 0x00000000, 0x00000000,
+ 0x00000000, 0x06231f20, 0x7c231f20, 0xfc231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff221e1f, 0xff1e1b1c, 0xff848282, 0xfff6f6f6, 0xffffffff, 0xfff8f8f8, 0xff7b797a, 0xff4a4647, 0xffdedede, 0xffffffff, 0xffffffff, 0xffd1d0d1, 0xff363233, 0xff1f1b1c, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff221e1f, 0xff221e1f, 0xffafadad, 0xfffdfdfd, 0xffffffff, 0xffececec, 0xff595658, 0xff1c1819, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff221e1f, 0xff252122, 0xff504e4f, 0xffaaa9a9, 0xffececed, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffe1e0e1, 0xff949293, 0xff403c3d, 0xff221e1f, 0xff221e1f, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff1c1718, 0xff555253, 0xffe9e9e9, 0xfff4f4f4, 0xffebebeb, 0xff787676, 0xff211d1e, 0xff231f20, 0xff231f20, 0xff231f20, 0xff221e1f, 0xff1f1b1c, 0xff8b898a, 0xffeff0f0, 0xfff3f3f3, 0xffdddddd, 0xff4c4a4a, 0xff242021, 0xff716f6f, 0xffd4d2d3, 0xfffefefe, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xfff0f0f0, 0xff9c9b9c, 0xff393536, 0xff201c1d, 0xff231f20, 0xff211d1e, 0xff322f30, 0xff848282, 0xffe0dede, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffe3e3e3, 0xff838182, 0xff2f2b2c, 0xff221e1f, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff2b2728, 0xff605d5e, 0xffa2a1a1, 0xffd8d7d7, 0xfff7f7f7, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xfff6f5f5, 0xffc4c3c3, 0xff6c696a, 0xff2d292a, 0xff221e1f, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff211d1e, 0xff2f2b2c, 0xff7c797a, 0xffd9d8d8, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xfff8f7f7, 0xffbdbcbc, 0xff5a5757, 0xff1f1a1b, 0xff817e7f, 0xfff2f1f1, 0xfff3f2f2, 0xffdedede, 0xff524e4f, 0xff1d191a, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff221e1f, 0xff242021, 0xff474344, 0xff9a9899, 0xffe3e2e2, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffeeedee, 0xffaaa9a9, 0xff4e4b4b, 0xff231f20, 0xff221e1f, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xfc231f20, 0x7c231f20, 0x06231f20, 0x00000000,
+ 0x00000000, 0x1c231f20, 0xc3231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff221e1f, 0xff1e1b1c, 0xff848282, 0xfff6f6f6, 0xffffffff, 0xfff8f8f8, 0xff7e7c7d, 0xff1d181a, 0xff9a9898, 0xfffbfbfb, 0xffffffff, 0xfff9f9f9, 0xff848182, 0xff1f1b1c, 0xff221e1f, 0xff231f20, 0xff231f20, 0xff231f20, 0xff221e1f, 0xff221e1f, 0xffafadad, 0xfffdfdfd, 0xffffffff, 0xffececec, 0xff595658, 0xff1c1819, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff211d1e, 0xff272324, 0xff7d7a7b, 0xffe9e9e9, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xfffcfcfc, 0xfffdfcfc, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffd4d3d4, 0xff605d5e, 0xff211d1e, 0xff221e1f, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff1b1718, 0xff595656, 0xfff7f7f7, 0xffffffff, 0xfff7f7f7, 0xff7e7c7d, 0xff211d1e, 0xff231f20, 0xff231f20, 0xff231f20, 0xff221e1f, 0xff1f1b1c, 0xff939191, 0xfffbfbfb, 0xffffffff, 0xffeae9e9, 0xff5d5a5b, 0xff8c8a8a, 0xfff8f7f7, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffbab9b9, 0xff3b3738, 0xff1b1718, 0xff3c3939, 0xffb3b2b2, 0xffffffff, 0xffffffff, 0xffffffff, 0xfffffefe, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xfffdfdfd, 0xff959293, 0xff2b2728, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff221e1f, 0xff484445, 0xffe6e6e6, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xfffdfefe, 0xfffafafa, 0xfffcfbfb, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xfff8f8f8, 0xff9d9b9b, 0xff343031, 0xff221e1f, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff201c1d, 0xff383435, 0xffa7a6a6, 0xfffefdfd, 0xffffffff, 0xffffffff, 0xffffffff, 0xfffdfdfd, 0xfff8f8f8, 0xfffcfcfc, 0xffffffff, 0xffffffff, 0xffe7e7e7, 0xff696767, 0xff8b8989, 0xfffcfcfc, 0xffffffff, 0xffeaeaea, 0xff555253, 0xff1c1819, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff211d1e, 0xff262222, 0xff727071, 0xffdedede, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xfffcfcfc, 0xfffbfbfb, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffe5e4e4, 0xff757273, 0xff252122, 0xff211d1e, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xc3231f20, 0x1c231f20, 0x00000000,
+ 0x01231f20, 0x49231f20, 0xf4231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff221e1f, 0xff1e1b1c, 0xff848282, 0xfff6f6f6, 0xffffffff, 0xfff8f8f8, 0xff807d7e, 0xff161213, 0xff474444, 0xffdfdedf, 0xffffffff, 0xffffffff, 0xffd1d0d0, 0xff413d3e, 0xff201c1d, 0xff231f20, 0xff231f20, 0xff231f20, 0xff221e1f, 0xff221e1f, 0xffafadad, 0xfffdfdfd, 0xffffffff, 0xffececec, 0xff595658, 0xff1c1819, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff221e1f, 0xff211d1e, 0xff828080, 0xfff4f3f3, 0xffffffff, 0xffffffff, 0xfffcfcfc, 0xffcecdcd, 0xff9c9a9a, 0xff868585, 0xff8a8787, 0xffa6a4a4, 0xffdddcdc, 0xffffffff, 0xffffffff, 0xffffffff, 0xffe0dfe0, 0xff5f5c5d, 0xff1f1b1b, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff1b1718, 0xff585556, 0xfff5f5f5, 0xffffffff, 0xfff5f5f5, 0xff7d7b7c, 0xff201d1e, 0xff231f20, 0xff231f20, 0xff231f20, 0xff221e1f, 0xff1f1b1c, 0xff929090, 0xfffafafa, 0xffffffff, 0xffececec, 0xffadabac, 0xfff2f2f2, 0xffffffff, 0xffd3d2d2, 0xffa6a4a5, 0xff908e8f, 0xff929191, 0xffb4b3b3, 0xffeeeeee, 0xffffffff, 0xffffffff, 0xfffdfdfd, 0xff959394, 0xff363333, 0xffb0afb0, 0xffffffff, 0xfffafafa, 0xffc9c8c9, 0xffa09e9f, 0xff8f8c8d, 0xff969494, 0xffbdbcbc, 0xfff6f5f6, 0xffffffff, 0xffffffff, 0xfff7f7f7, 0xff686667, 0xff201c1d, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff221e1f, 0xff4b4949, 0xffefeeef, 0xffffffff, 0xffdddddd, 0xffbab9ba, 0xff9e9c9d, 0xff8b898a, 0xff848182, 0xff868484, 0xff999797, 0xffbebdbe, 0xfff0f0ef, 0xffffffff, 0xffffffff, 0xffffffff, 0xff949293, 0xff262223, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff221e1f, 0xff2e2a2b, 0xff9f9d9e, 0xfffdfdfd, 0xffffffff, 0xffffffff, 0xfff1f1f1, 0xffb7b5b6, 0xff8d8b8c, 0xff7f7c7d, 0xff878586, 0xffaaa8a9, 0xffe2e1e2, 0xffffffff, 0xffdbdbdb, 0xffbcbbbb, 0xfffcfcfc, 0xffffffff, 0xffe9e8e8, 0xff555252, 0xff1c1819, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff211d1e, 0xff221e1f, 0xff807e7e, 0xfff0f0f0, 0xffffffff, 0xffffffff, 0xfff7f7f7, 0xffcac9c9, 0xff9e9c9c, 0xff888686, 0xff858282, 0xff959393, 0xffc0bfbf, 0xfff5f5f5, 0xffffffff, 0xffffffff, 0xffecebeb, 0xff726f70, 0xff211d1e, 0xff221e1f, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xf4231f20, 0x49231f20, 0x01231f20,
+ 0x04231f20, 0x8c231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff221e1f, 0xff1e1b1c, 0xff848282, 0xfff6f6f6, 0xffffffff, 0xfff8f8f8, 0xff807d7e, 0xff1b1718, 0xff1e191a, 0xff8f8d8e, 0xffffffff, 0xffffffff, 0xfff9f9f9, 0xff888687, 0xff242021, 0xff231f20, 0xff231f20, 0xff231f20, 0xff221e1f, 0xff221e1f, 0xffafadad, 0xfffdfdfd, 0xffffffff, 0xffececec, 0xff595658, 0xff1c1819, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff1d1a1b, 0xff5c5959, 0xffe6e5e5, 0xffffffff, 0xffffffff, 0xfff6f5f6, 0xff979495, 0xff3f3c3c, 0xff272424, 0xff221f20, 0xff221e1f, 0xff2b2728, 0xff4d494a, 0xffb6b5b5, 0xffffffff, 0xffffffff, 0xffffffff, 0xffc9c8c8, 0xff3f3b3c, 0xff201c1d, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff1b1718, 0xff585556, 0xfff5f5f5, 0xffffffff, 0xfff5f5f5, 0xff7d7b7c, 0xff201d1e, 0xff231f20, 0xff231f20, 0xff231f20, 0xff221e1f, 0xff1f1b1c, 0xff929090, 0xfffafafa, 0xffffffff, 0xfffcfcfc, 0xfff9f9f9, 0xfff4f4f4, 0xff918e8f, 0xff413e3f, 0xff2b2728, 0xff242021, 0xff242021, 0xff2d2a2a, 0xff6c6a6a, 0xffeae9e9, 0xffffffff, 0xffffffff, 0xffdcdcdc, 0xffb1afb0, 0xfff7f7f7, 0xffececec, 0xff7b797a, 0xff393536, 0xff292526, 0xff231f20, 0xff262223, 0xff343031, 0xff7f7d7d, 0xfff4f4f4, 0xffffffff, 0xffffffff, 0xffc1c0c0, 0xff292526, 0xff221e1f, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff221e1f, 0xff454243, 0xffb1afb0, 0xff7e7b7c, 0xff494647, 0xff332f30, 0xff292526, 0xff221e1f, 0xff221e1f, 0xff221e1f, 0xff272224, 0xff343031, 0xff656263, 0xffd1d0d0, 0xffffffff, 0xffffffff, 0xfff2f2f2, 0xff545152, 0xff1e1a1b, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff6c6a6b, 0xfff1f1f1, 0xffffffff, 0xffffffff, 0xffe4e3e4, 0xff6b6869, 0xff302c2d, 0xff241f20, 0xff221e1f, 0xff221e1f, 0xff2c2829, 0xff565253, 0xffc2c2c2, 0xffffffff, 0xfff8f8f8, 0xffffffff, 0xffffffff, 0xffe9e8e8, 0xff555252, 0xff1c1819, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff1d191b, 0xff666264, 0xffe9e8e9, 0xffffffff, 0xffffffff, 0xffe3e3e3, 0xff7b7879, 0xff3b3738, 0xff282425, 0xff221e1f, 0xff221e1f, 0xff252122, 0xff353132, 0xff777575, 0xffe9e9e9, 0xffffffff, 0xffffffff, 0xffd5d4d4, 0xff4a4647, 0xff201c1d, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0x8c231f20, 0x04231f20,
+ 0x11231f20, 0xc4231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff221e1f, 0xff1e1b1c, 0xff848282, 0xfff6f6f6, 0xffffffff, 0xfff8f8f8, 0xff7f7d7e, 0xff1c1819, 0xff1f1b1c, 0xff383535, 0xffdcdbdb, 0xffffffff, 0xffffffff, 0xffd3d3d3, 0xff434041, 0xff211d1e, 0xff231f20, 0xff231f20, 0xff221e1f, 0xff221e1f, 0xffafadad, 0xfffdfdfd, 0xffffffff, 0xffececec, 0xff595658, 0xff1c1819, 0xff231f20, 0xff231f20, 0xff231f20, 0xff211d1e, 0xff2c2829, 0xffb0afaf, 0xfffefefe, 0xffffffff, 0xfffcfcfc, 0xff9e9d9d, 0xff282525, 0xff211d1e, 0xff221e1f, 0xff231f20, 0xff231f20, 0xff221e1f, 0xff1f1b1c, 0xff383435, 0xffc7c7c7, 0xffffffff, 0xffffffff, 0xfff8f8f8, 0xff848383, 0xff242021, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff1b1718, 0xff585556, 0xfff5f5f5, 0xffffffff, 0xfff5f5f5, 0xff7d7b7c, 0xff201d1e, 0xff231f20, 0xff231f20, 0xff231f20, 0xff221e1f, 0xff1f1b1c, 0xff929090, 0xfffafafa, 0xffffffff, 0xffffffff, 0xfffaf9f9, 0xff918f8f, 0xff2a2627, 0xff221e1f, 0xff221e1f, 0xff231f20, 0xff231f20, 0xff221e1f, 0xff1e1a1b, 0xff8a8889, 0xffffffff, 0xffffffff, 0xfffdfdfd, 0xfffdfdfd, 0xfff6f7f7, 0xff6b6969, 0xff211d1e, 0xff221d1e, 0xff221e1f, 0xff231f20, 0xff231f20, 0xff221e1f, 0xff2a2727, 0xffa3a1a1, 0xffffffff, 0xffffffff, 0xfff6f6f6, 0xff4d4a4b, 0xff1f1b1c, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff282425, 0xff302c2d, 0xff242021, 0xff221e1f, 0xff221e1f, 0xff221e1f, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231e1f, 0xff221e1f, 0xff221e1f, 0xff524f4f, 0xffdddddd, 0xffffffff, 0xffffffff, 0xffa5a4a4, 0xff201c1d, 0xff221e1f, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff312d2e, 0xffbfbebe, 0xffffffff, 0xffffffff, 0xfff5f4f5, 0xff625f60, 0xff1f1b1c, 0xff221e1f, 0xff231f20, 0xff231f20, 0xff231f20, 0xff221e1f, 0xff211d1e, 0xff4b4849, 0xffd5d4d4, 0xffffffff, 0xffffffff, 0xffffffff, 0xffe9e8e8, 0xff555252, 0xff1c1819, 0xff231f20, 0xff231f20, 0xff231f20, 0xff201c1d, 0xff363333, 0xffc1c1c1, 0xffffffff, 0xffffffff, 0xffededed, 0xff666464, 0xff211d1e, 0xff221e1f, 0xff221e1f, 0xff231f20, 0xff231f20, 0xff231f20, 0xff211d1e, 0xff1f1b1c, 0xff706e6e, 0xfff9f9f9, 0xffffffff, 0xfffdfdfd, 0xff908e8f, 0xff272223, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xc4231f20, 0x11231f20,
+ 0x2e231f20, 0xf0231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff221e1f, 0xff1e1b1c, 0xff848282, 0xfff6f6f6, 0xffffffff, 0xfff8f8f8, 0xff7f7d7e, 0xff1c1819, 0xff231f20, 0xff1c1819, 0xff7d7b7b, 0xffffffff, 0xffffffff, 0xffffffff, 0xff8a8788, 0xff252122, 0xff231f20, 0xff231f20, 0xff221e1f, 0xff221e1f, 0xffafadad, 0xfffdfdfd, 0xffffffff, 0xffececec, 0xff595658, 0xff1c1819, 0xff231f20, 0xff231f20, 0xff231f20, 0xff201c1d, 0xff535051, 0xffe2e1e1, 0xffffffff, 0xffffffff, 0xffd9d9d9, 0xff393636, 0xff1e1a1b, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff1b1718, 0xff5b5859, 0xfff5f5f5, 0xffffffff, 0xffffffff, 0xffc4c3c3, 0xff383435, 0xff221e1f, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff1b1718, 0xff585556, 0xfff5f5f5, 0xffffffff, 0xfff5f5f5, 0xff7d7b7c, 0xff201d1e, 0xff231f20, 0xff231f20, 0xff231f20, 0xff221e1f, 0xff1f1b1c, 0xff929090, 0xfffafafa, 0xffffffff, 0xffffffff, 0xffcbcacb, 0xff3b3839, 0xff201c1d, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff1f1b1c, 0xff3f3b3c, 0xffeeedee, 0xffffffff, 0xffffffff, 0xffffffff, 0xffa6a5a5, 0xff242021, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff221f1f, 0xff615e5e, 0xfff2f2f2, 0xffffffff, 0xffffffff, 0xff797677, 0xff1b1617, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff221e1f, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff262223, 0xff939191, 0xffffffff, 0xffffffff, 0xffdedede, 0xff2f2b2c, 0xff211d1e, 0xff231f20, 0xff231f20, 0xff231f20, 0xff211d1e, 0xff575354, 0xfff5f5f5, 0xffffffff, 0xffffffff, 0xffa1a09f, 0xff221e1f, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff201d1e, 0xff817f81, 0xfff5f5f5, 0xffffffff, 0xffffffff, 0xffe9e8e8, 0xff555252, 0xff1c1819, 0xff231f20, 0xff231f20, 0xff231f20, 0xff211c1e, 0xff6c696a, 0xffefefef, 0xffffffff, 0xffffffff, 0xff989797, 0xff1d191a, 0xff221e1f, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff221e1f, 0xff211d1e, 0xffb1b0b0, 0xffffffff, 0xffffffff, 0xffcccbcb, 0xff3b3738, 0xff221e1f, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xf0231f20, 0x2e231f20,
+ 0x62231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff221e1f, 0xff1e1b1c, 0xff848282, 0xfff6f6f6, 0xffffffff, 0xfff8f8f8, 0xff7f7d7e, 0xff1c1819, 0xff231f20, 0xff211d1e, 0xff2f2c2d, 0xffcdcdcd, 0xffffffff, 0xffffffff, 0xffdddddd, 0xff423f40, 0xff211d1e, 0xff231f20, 0xff221e1f, 0xff221e1f, 0xffafadad, 0xfffdfdfd, 0xffffffff, 0xffececec, 0xff595658, 0xff1c1819, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff7d7b7b, 0xfff9f9f9, 0xffffffff, 0xffffffff, 0xff8f8e8e, 0xff1a1617, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff221e1f, 0xff221e1f, 0xffbdbcbd, 0xffffffff, 0xffffffff, 0xffeaeaea, 0xff565353, 0xff221e1f, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff1b1718, 0xff585556, 0xfff5f5f5, 0xffffffff, 0xfff5f5f5, 0xff7d7b7c, 0xff201d1e, 0xff231f20, 0xff231f20, 0xff231f20, 0xff221e1f, 0xff1f1b1c, 0xff929090, 0xfffafafa, 0xffffffff, 0xfff9f9f9, 0xff918f90, 0xff201c1d, 0xff221e1f, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff211d1e, 0xff282425, 0xffcdcccc, 0xffffffff, 0xffffffff, 0xfff7f7f7, 0xff5d5b5b, 0xff221e1f, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff211d1e, 0xff474444, 0xffdad9d9, 0xffffffff, 0xffffffff, 0xff999898, 0xff1b1618, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff221e1f, 0xff211d1e, 0xff211d1e, 0xff211d1e, 0xff211d1e, 0xff211d1e, 0xff211d1e, 0xff211d1e, 0xff1f1b1c, 0xff696768, 0xfff0f0ef, 0xffffffff, 0xfff5f5f5, 0xff4c494a, 0xff1d191a, 0xff231f20, 0xff231f20, 0xff231f20, 0xff201c1d, 0xff8a8989, 0xffffffff, 0xffffffff, 0xfff7f7f7, 0xff565354, 0xff211d1e, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff1e1a1b, 0xff454242, 0xffdedede, 0xffffffff, 0xffffffff, 0xffe9e8e8, 0xff555252, 0xff1c1819, 0xff231f20, 0xff231f20, 0xff221e1f, 0xff2a2627, 0xffa19fa0, 0xffffffff, 0xffffffff, 0xffeeeded, 0xff444040, 0xff1d191a, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff1c1819, 0xff626060, 0xffffffff, 0xffffffff, 0xffeeeeee, 0xff575354, 0xff221e1f, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0x62231f20,
+ 0x8e231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff221e1f, 0xff1e1b1c, 0xff848282, 0xfff6f6f6, 0xffffffff, 0xfff8f8f8, 0xff7f7d7e, 0xff1c1819, 0xff231f20, 0xff231f20, 0xff1f1b1c, 0xff6e6b6b, 0xfffbfbfb, 0xffffffff, 0xffffffff, 0xff959394, 0xff211d1e, 0xff231f20, 0xff221e1f, 0xff221e1f, 0xffafadad, 0xfffdfdfd, 0xffffffff, 0xffececec, 0xff595658, 0xff1c1819, 0xff231f20, 0xff231f20, 0xff231f20, 0xff2a2627, 0xffa09f9f, 0xffffffff, 0xffffffff, 0xfff8f8f8, 0xff535051, 0xff1c1819, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff1a1617, 0xff7e7b7c, 0xffffffff, 0xffffffff, 0xfffefefe, 0xff737172, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff1b1718, 0xff585556, 0xfff5f5f5, 0xffffffff, 0xfff5f5f5, 0xff7d7b7c, 0xff201d1e, 0xff231f20, 0xff231f20, 0xff231f20, 0xff221e1f, 0xff1f1b1c, 0xff929090, 0xfffafafa, 0xffffffff, 0xfff2f2f1, 0xff686666, 0xff1c1719, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff221e1f, 0xff231f20, 0xffb7b5b5, 0xffffffff, 0xffffffff, 0xffdbdbdb, 0xff423f3f, 0xff221e1f, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff221e1f, 0xff3b3738, 0xffcecdcd, 0xffffffff, 0xffffffff, 0xffa7a6a6, 0xff1e1a1b, 0xff221e1f, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff201c1d, 0xff1f1b1c, 0xff2c2729, 0xff3b3839, 0xff4c4849, 0xff575455, 0xff5c595a, 0xff5f5c5d, 0xff5f5c5d, 0xff5f5c5d, 0xff5d5a5b, 0xff8b898a, 0xffefefef, 0xffffffff, 0xfffbfbfb, 0xff646162, 0xff1b1617, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xffb2b1b2, 0xffffffff, 0xffffffff, 0xffd5d4d4, 0xff373435, 0xff221e1f, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff211d1e, 0xff272324, 0xffbebdbd, 0xfffefefe, 0xffffffff, 0xffe9e8e8, 0xff555252, 0xff1c1819, 0xff231f20, 0xff231f20, 0xff221e1f, 0xff383435, 0xffc7c7c7, 0xffffffff, 0xffffffff, 0xffc3c2c2, 0xff201c1d, 0xff1d191a, 0xff1f1b1c, 0xff1e1b1c, 0xff1f1b1c, 0xff1f1b1c, 0xff1f1b1c, 0xff1f1b1c, 0xff1f1b1c, 0xff1f1b1c, 0xff1c1819, 0xff3a3738, 0xffeeeeee, 0xffffffff, 0xffffffff, 0xff706e6e, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0x8e231f20,
+ 0xb4231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff221e1f, 0xff1e1b1c, 0xff848282, 0xfff6f6f6, 0xffffffff, 0xfff8f8f8, 0xff7f7d7e, 0xff1c1819, 0xff231f20, 0xff231f20, 0xff231f20, 0xff312e2e, 0xffbcbbbb, 0xffffffff, 0xffffffff, 0xffebebeb, 0xff4a4748, 0xff1e1a1b, 0xff221e1f, 0xff221e1f, 0xffafadad, 0xfffdfdfd, 0xffffffff, 0xffececec, 0xff595658, 0xff1c1819, 0xff231f20, 0xff231f20, 0xff221e1f, 0xff302d2e, 0xffb9b8b9, 0xffffffff, 0xffffffff, 0xffe6e6e6, 0xff343031, 0xff201c1d, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff1e1a1b, 0xff565254, 0xfffbfbfb, 0xffffffff, 0xffffffff, 0xff8f8c8d, 0xff252122, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff1b1718, 0xff585556, 0xfff5f5f5, 0xffffffff, 0xfff5f5f5, 0xff7d7b7c, 0xff201d1e, 0xff231f20, 0xff231f20, 0xff231f20, 0xff221e1f, 0xff1f1b1c, 0xff929090, 0xfffafafa, 0xffffffff, 0xffededed, 0xff575454, 0xff1b1718, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff201d1e, 0xffafadae, 0xffffffff, 0xffffffff, 0xffcac9ca, 0xff373334, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff221e1f, 0xff383535, 0xffc9c8c8, 0xffffffff, 0xffffffff, 0xffafadae, 0xff201c1d, 0xff221e1f, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff221e1f, 0xff1e1a1b, 0xff393536, 0xff777475, 0xffacaaaa, 0xffcccacb, 0xffdddddc, 0xffe5e5e5, 0xffe9e9e9, 0xffebebeb, 0xffebebeb, 0xffebebeb, 0xffebeaeb, 0xfff0f0f0, 0xfffdfdfd, 0xffffffff, 0xffffffff, 0xff706d6e, 0xff191516, 0xff231f20, 0xff231f20, 0xff211d1e, 0xff2c292a, 0xffcccbcc, 0xffffffff, 0xffffffff, 0xffbab9b9, 0xff2b2829, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff221e1f, 0xff1f1b1c, 0xffa2a0a0, 0xfffcfcfc, 0xffffffff, 0xffe9e8e8, 0xff555252, 0xff1c1819, 0xff231f20, 0xff231f20, 0xff221e1f, 0xff484445, 0xffdcdcdc, 0xffffffff, 0xffffffff, 0xffc8c7c8, 0xff716f6f, 0xff747172, 0xff747273, 0xff747273, 0xff757273, 0xff757273, 0xff757273, 0xff767373, 0xff757374, 0xff767374, 0xff757273, 0xff828081, 0xffeeedee, 0xffffffff, 0xffffffff, 0xff858283, 0xff242021, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xb4231f20,
+ 0xd4231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff221e1f, 0xff1e1b1c, 0xff848282, 0xfff6f6f6, 0xffffffff, 0xfff8f8f8, 0xff7f7d7e, 0xff1c1819, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff686566, 0xfff1f1f1, 0xffffffff, 0xffffffff, 0xffabaaaa, 0xff211c1d, 0xff211d1e, 0xff221e1f, 0xffafadad, 0xfffdfdfd, 0xffffffff, 0xffececec, 0xff595658, 0xff1c1819, 0xff231f20, 0xff231f20, 0xff221e1f, 0xff343031, 0xffc6c5c5, 0xffffffff, 0xffffffff, 0xffd4d4d4, 0xff2a2627, 0xff211d1e, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff1f1b1c, 0xff413e3f, 0xfff6f6f5, 0xffffffff, 0xffffffff, 0xff9f9e9e, 0xff272223, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff1b1718, 0xff585556, 0xfff5f5f5, 0xffffffff, 0xfff5f5f5, 0xff7d7b7c, 0xff201d1e, 0xff231f20, 0xff231f20, 0xff231f20, 0xff221e1f, 0xff1f1b1c, 0xff929090, 0xfffafafa, 0xffffffff, 0xffe9e9e9, 0xff524e4f, 0xff1c1819, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff201c1d, 0xffadabac, 0xffffffff, 0xffffffff, 0xffc4c3c4, 0xff322f30, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff221e1f, 0xff373435, 0xffc8c7c7, 0xffffffff, 0xffffffff, 0xffb0aeaf, 0xff201c1d, 0xff221e1f, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff211d1e, 0xff5d5a5b, 0xffc8c7c8, 0xfff3f3f3, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xff777475, 0xff181415, 0xff231f20, 0xff231f20, 0xff211d1e, 0xff322e2f, 0xffdbdada, 0xffffffff, 0xffffffff, 0xffaeacac, 0xff282425, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff221e1f, 0xff1d191a, 0xff908e8f, 0xfffbfbfb, 0xffffffff, 0xffe9e8e8, 0xff555252, 0xff1c1819, 0xff231f20, 0xff231f20, 0xff221e1f, 0xff545151, 0xffe9e9e9, 0xffffffff, 0xffffffff, 0xfff9f9f9, 0xfff1f1f1, 0xfff2f1f2, 0xfff2f1f2, 0xfff2f1f2, 0xfff2f2f2, 0xfff2f2f2, 0xfff2f2f2, 0xfff2f2f2, 0xfff2f2f2, 0xfff2f2f2, 0xfff2f2f2, 0xfff3f3f3, 0xfffdfdfd, 0xffffffff, 0xffffffff, 0xff8d8c8c, 0xff242021, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xd4231f20,
+ 0xe5231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff221e1f, 0xff1e1b1c, 0xff848282, 0xfff6f6f6, 0xffffffff, 0xfff8f8f8, 0xff7f7d7e, 0xff1c1819, 0xff231f20, 0xff231f20, 0xff231f20, 0xff221e1f, 0xff322e2f, 0xffb6b5b5, 0xffffffff, 0xffffffff, 0xfff3f3f3, 0xff5a5858, 0xff1a1617, 0xff221f1f, 0xffafadad, 0xfffdfdfd, 0xffffffff, 0xffececec, 0xff595658, 0xff1c1819, 0xff231f20, 0xff231f20, 0xff221e1f, 0xff373434, 0xffcac9c9, 0xffffffff, 0xffffffff, 0xffcbcacb, 0xff282425, 0xff211d1e, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff201c1d, 0xff3b3738, 0xfff2f1f2, 0xffffffff, 0xffffffff, 0xffa5a4a4, 0xff262223, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff1b1718, 0xff585556, 0xfff5f5f5, 0xffffffff, 0xfff5f5f5, 0xff7d7b7c, 0xff201d1e, 0xff231f20, 0xff231f20, 0xff231f20, 0xff221e1f, 0xff1f1b1c, 0xff929090, 0xfffafafa, 0xffffffff, 0xffe9e9e9, 0xff514d4f, 0xff1d1819, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff201c1d, 0xffadacad, 0xffffffff, 0xffffffff, 0xffc4c3c3, 0xff322e30, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff221e1f, 0xff373435, 0xffc8c7c7, 0xffffffff, 0xffffffff, 0xffb0aeaf, 0xff201c1d, 0xff221e1f, 0xff231f20, 0xff231f20, 0xff231f20, 0xff211d1e, 0xff565454, 0xffe2e1e1, 0xffffffff, 0xffffffff, 0xffffffff, 0xfff3f3f3, 0xffd1d0d0, 0xffb3b1b1, 0xffa19f9f, 0xff989696, 0xff939191, 0xff929091, 0xff918f90, 0xffafaeaf, 0xfff4f4f4, 0xffffffff, 0xffffffff, 0xff777475, 0xff181415, 0xff231f20, 0xff231f20, 0xff211d1e, 0xff322f30, 0xffdfdede, 0xffffffff, 0xffffffff, 0xffa9a7a8, 0xff282425, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff221e1f, 0xff1c1819, 0xff8b8989, 0xfffbfbfb, 0xffffffff, 0xffe9e8e8, 0xff555252, 0xff1c1819, 0xff231f20, 0xff231f20, 0xff221e1f, 0xff595758, 0xfff0efef, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xff929091, 0xff242021, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xe5231f20,
+ 0xf2231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff221e1f, 0xff1e1b1c, 0xff848282, 0xfff6f6f6, 0xffffffff, 0xfff8f8f8, 0xff7f7d7e, 0xff1c1819, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff1f1b1c, 0xff676566, 0xffececec, 0xffffffff, 0xffffffff, 0xffb9b8b8, 0xff262223, 0xff201c1c, 0xffafadad, 0xfffdfdfd, 0xffffffff, 0xffececec, 0xff595658, 0xff1c1819, 0xff231f20, 0xff231f20, 0xff221e1f, 0xff353233, 0xffc7c6c7, 0xffffffff, 0xffffffff, 0xffd2d1d1, 0xff2a2627, 0xff211d1e, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff201c1d, 0xff3f3b3c, 0xfff5f5f5, 0xffffffff, 0xffffffff, 0xffa2a0a1, 0xff262223, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff1b1718, 0xff585556, 0xfff5f5f5, 0xffffffff, 0xfff5f5f5, 0xff7d7b7c, 0xff201d1e, 0xff231f20, 0xff231f20, 0xff231f20, 0xff221e1f, 0xff1f1b1c, 0xff929090, 0xfffafafa, 0xffffffff, 0xffe9e9e9, 0xff514d4f, 0xff1d1819, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff201c1d, 0xffadacad, 0xffffffff, 0xffffffff, 0xffc4c3c3, 0xff322e30, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff221e1f, 0xff373435, 0xffc8c7c7, 0xffffffff, 0xffffffff, 0xffb0aeaf, 0xff201c1d, 0xff221e1f, 0xff231f20, 0xff231f20, 0xff221e1f, 0xff2e2a2b, 0xffc2c1c1, 0xffffffff, 0xffffffff, 0xfff5f4f4, 0xff9b9a9a, 0xff464344, 0xff2a2627, 0xff221e1f, 0xff1d191a, 0xff1c1819, 0xff1c1819, 0xff1c1819, 0xff1a1516, 0xff5c595a, 0xffe9e8e9, 0xffffffff, 0xffffffff, 0xff777475, 0xff181415, 0xff231f20, 0xff231f20, 0xff211d1e, 0xff302c2d, 0xffd7d7d7, 0xffffffff, 0xffffffff, 0xffb1b0b0, 0xff292526, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff221e1f, 0xff1e191a, 0xff959393, 0xfffcfcfc, 0xffffffff, 0xffe9e8e8, 0xff555252, 0xff1c1819, 0xff231f20, 0xff231f20, 0xff221e1f, 0xff585556, 0xffeeedee, 0xffffffff, 0xffffffff, 0xffc1c0c0, 0xff848282, 0xff898788, 0xff898788, 0xff898788, 0xff898788, 0xff898788, 0xff898788, 0xff898788, 0xff898788, 0xff898788, 0xff898788, 0xff898788, 0xff898788, 0xff898788, 0xff8b898a, 0xff565253, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xf2231f20,
+ 0xfd231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff221e1f, 0xff1e1b1c, 0xff848282, 0xfff6f6f6, 0xffffffff, 0xfff8f8f8, 0xff7f7d7e, 0xff1c1819, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff201c1d, 0xff2c2829, 0xffb6b5b5, 0xfffefefe, 0xffffffff, 0xfff1f1f1, 0xff666364, 0xff1c1819, 0xffafadad, 0xfffdfdfd, 0xffffffff, 0xffececec, 0xff595658, 0xff1c1819, 0xff231f20, 0xff231f20, 0xff221e1f, 0xff312e2f, 0xffbdbcbd, 0xffffffff, 0xffffffff, 0xffe1e0e1, 0xff302c2d, 0xff201c1d, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff1e1a1b, 0xff4f4b4c, 0xfffaf9f9, 0xffffffff, 0xffffffff, 0xff949292, 0xff262223, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff1b1718, 0xff585556, 0xfff5f5f5, 0xffffffff, 0xfff5f5f5, 0xff7d7b7c, 0xff201d1e, 0xff231f20, 0xff231f20, 0xff231f20, 0xff221e1f, 0xff1f1b1c, 0xff929090, 0xfffafafa, 0xffffffff, 0xffe9e9e9, 0xff514d4f, 0xff1d1819, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff201c1d, 0xffadacad, 0xffffffff, 0xffffffff, 0xffc4c3c3, 0xff322e30, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff221e1f, 0xff373435, 0xffc8c7c7, 0xffffffff, 0xffffffff, 0xffb0aeaf, 0xff201c1d, 0xff221e1f, 0xff231f20, 0xff231f20, 0xff1e1a1b, 0xff5d5a5b, 0xfffffefe, 0xffffffff, 0xfffefefe, 0xff8c898a, 0xff201c1d, 0xff1d191a, 0xff211d1e, 0xff221e1f, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff211d1e, 0xff6a6768, 0xffefefef, 0xffffffff, 0xffffffff, 0xff777475, 0xff181415, 0xff231f20, 0xff231f20, 0xff221e1f, 0xff2a2627, 0xffc6c5c5, 0xffffffff, 0xffffffff, 0xffc1c0c0, 0xff2e2a2b, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff221e1f, 0xff201c1d, 0xffa9a8a8, 0xfffdfdfd, 0xffffffff, 0xffe9e8e8, 0xff555252, 0xff1c1819, 0xff231f20, 0xff231f20, 0xff221e1f, 0xff4f4c4d, 0xffe4e4e4, 0xffffffff, 0xffffffff, 0xff999797, 0xff100c0d, 0xff181415, 0xff181415, 0xff181415, 0xff181415, 0xff181415, 0xff181415, 0xff181415, 0xff181415, 0xff181415, 0xff181415, 0xff181415, 0xff181415, 0xff181415, 0xff171314, 0xff1e1a1b, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xfd231f20,
+ 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff221e1f, 0xff1e1b1c, 0xff848282, 0xfff6f6f6, 0xffffffff, 0xfff8f8f8, 0xff7f7d7e, 0xff1c1819, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff1c1819, 0xff5f5d5d, 0xffeeeeee, 0xffffffff, 0xfffefefe, 0xffb9b7b8, 0xff302d2e, 0xffacabab, 0xfffdfdfd, 0xffffffff, 0xffececec, 0xff595658, 0xff1c1819, 0xff231f20, 0xff231f20, 0xff231f20, 0xff2c2829, 0xffa8a6a6, 0xffffffff, 0xffffffff, 0xfff4f4f4, 0xff494647, 0xff1d191a, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff1b1718, 0xff726f70, 0xffffffff, 0xffffffff, 0xffffffff, 0xff7a7878, 0xff241f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff1b1718, 0xff585556, 0xfff5f5f5, 0xffffffff, 0xfff5f5f5, 0xff7d7b7c, 0xff201d1e, 0xff231f20, 0xff231f20, 0xff231f20, 0xff221e1f, 0xff1f1b1c, 0xff929090, 0xfffafafa, 0xffffffff, 0xffe9e9e9, 0xff514d4f, 0xff1d1819, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff201c1d, 0xffadacad, 0xffffffff, 0xffffffff, 0xffc4c3c3, 0xff322e30, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff221e1f, 0xff373435, 0xffc8c7c7, 0xffffffff, 0xffffffff, 0xffb0aeaf, 0xff201c1d, 0xff221e1f, 0xff231f20, 0xff231f20, 0xff1b1718, 0xff908e8e, 0xffffffff, 0xffffffff, 0xffdcdbdb, 0xff434041, 0xff211d1e, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff7f7c7d, 0xfff9f9f9, 0xffffffff, 0xffffffff, 0xff777475, 0xff181415, 0xff231f20, 0xff231f20, 0xff231f20, 0xff211d1e, 0xffa8a6a7, 0xffffffff, 0xffffffff, 0xffe0dfdf, 0xff3f3b3c, 0xff211d1e, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff201c1d, 0xff2d2a2b, 0xffc8c8c8, 0xfffefefe, 0xffffffff, 0xffe9e8e8, 0xff555252, 0xff1c1819, 0xff231f20, 0xff231f20, 0xff221e1f, 0xff3f3c3d, 0xffd3d2d2, 0xffffffff, 0xffffffff, 0xffc7c5c6, 0xff262223, 0xff211d1e, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20,
+ 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff221e1f, 0xff1e1b1c, 0xff848282, 0xfff6f6f6, 0xffffffff, 0xfff8f8f8, 0xff7f7d7e, 0xff1c1819, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff211d1e, 0xff242021, 0xffaeacad, 0xffffffff, 0xffffffff, 0xffeeeeee, 0xff6c6a6a, 0xffadabab, 0xfffdfdfd, 0xffffffff, 0xffececec, 0xff595658, 0xff1c1819, 0xff231f20, 0xff231f20, 0xff231f20, 0xff242121, 0xff868484, 0xfffcfcfc, 0xffffffff, 0xffffffff, 0xff7e7b7c, 0xff191516, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff221e1f, 0xff1e1a1b, 0xffacaaab, 0xffffffff, 0xffffffff, 0xfff0f0f0, 0xff5d595a, 0xff221e1f, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff1b1718, 0xff585556, 0xfff5f5f5, 0xffffffff, 0xfff5f5f5, 0xff7d7b7c, 0xff201d1e, 0xff231f20, 0xff231f20, 0xff231f20, 0xff221e1f, 0xff1f1b1c, 0xff929090, 0xfffafafa, 0xffffffff, 0xffe9e9e9, 0xff514d4f, 0xff1d1819, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff201c1d, 0xffadacad, 0xffffffff, 0xffffffff, 0xffc4c3c3, 0xff322e30, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff221e1f, 0xff373435, 0xffc8c7c7, 0xffffffff, 0xffffffff, 0xffb0aeaf, 0xff201c1d, 0xff221e1f, 0xff231f20, 0xff231f20, 0xff1e1a1b, 0xffa7a5a6, 0xffffffff, 0xffffffff, 0xffc6c5c5, 0xff343132, 0xff221e1f, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff2b2829, 0xffa9a8a8, 0xffffffff, 0xffffffff, 0xffffffff, 0xff777475, 0xff181415, 0xff231f20, 0xff231f20, 0xff231f20, 0xff201c1d, 0xff7b7878, 0xffffffff, 0xffffffff, 0xfffefefe, 0xff696667, 0xff1e1a1b, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff1d191a, 0xff555153, 0xffe6e5e5, 0xffffffff, 0xffffffff, 0xffe9e8e8, 0xff555252, 0xff1c1819, 0xff231f20, 0xff231f20, 0xff221e1f, 0xff2f2b2c, 0xffb2b1b1, 0xffffffff, 0xffffffff, 0xfff1f1f1, 0xff4a4748, 0xff1c1819, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20,
+ 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff221e1f, 0xff1e1b1c, 0xff848282, 0xfff6f6f6, 0xffffffff, 0xfff8f8f8, 0xff7f7d7e, 0xff1c1819, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff1d191a, 0xff4e4a4b, 0xffefeeee, 0xffffffff, 0xffffffff, 0xffbcbbbb, 0xffc1c0c1, 0xfffcfcfc, 0xffffffff, 0xffececec, 0xff595658, 0xff1c1819, 0xff231f20, 0xff231f20, 0xff231f20, 0xff211d1e, 0xff5d5a5b, 0xffe9e8e9, 0xffffffff, 0xffffffff, 0xffc7c6c6, 0xff2b2627, 0xff1f1b1c, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff1c1819, 0xff464243, 0xffebebeb, 0xffffffff, 0xffffffff, 0xffcfcece, 0xff3e3a3b, 0xff221e1f, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff1b1718, 0xff585556, 0xfff5f5f5, 0xffffffff, 0xfff5f5f5, 0xff7d7b7c, 0xff201d1e, 0xff231f20, 0xff231f20, 0xff231f20, 0xff221e1f, 0xff1f1b1c, 0xff929090, 0xfffafafa, 0xffffffff, 0xffe9e9e9, 0xff514d4f, 0xff1d1819, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff201c1d, 0xffadacad, 0xffffffff, 0xffffffff, 0xffc4c3c3, 0xff322e30, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff221e1f, 0xff373435, 0xffc8c7c7, 0xffffffff, 0xffffffff, 0xffb0aeaf, 0xff201c1d, 0xff221e1f, 0xff231f20, 0xff231f20, 0xff1e1a1b, 0xffa8a6a6, 0xffffffff, 0xffffffff, 0xffcbcaca, 0xff383435, 0xff221e1f, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff211d1e, 0xff4e4b4b, 0xffe3e2e2, 0xffffffff, 0xffffffff, 0xffffffff, 0xff777475, 0xff181415, 0xff231f20, 0xff231f20, 0xff231f20, 0xff221e1f, 0xff484546, 0xffe8e8e8, 0xffffffff, 0xffffffff, 0xffc3c2c2, 0xff292627, 0xff201c1d, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff221e1f, 0xff262223, 0xff9e9c9c, 0xfffbfbfb, 0xffffffff, 0xffffffff, 0xffe9e8e8, 0xff555252, 0xff1c1819, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff7f7c7d, 0xfff8f7f8, 0xffffffff, 0xffffffff, 0xffa3a1a1, 0xff1e1a1c, 0xff211d1e, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff221e1f, 0xff211d1e, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20,
+ 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff221e1f, 0xff1e1b1c, 0xff848282, 0xfff6f6f6, 0xffffffff, 0xfff8f8f8, 0xff7f7d7e, 0xff1c1819, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff1f1b1c, 0xff9c9a9a, 0xffffffff, 0xffffffff, 0xfff5f5f5, 0xfff0f0f0, 0xfffefefe, 0xffffffff, 0xffececec, 0xff595658, 0xff1c1819, 0xff231f20, 0xff231f20, 0xff231f20, 0xff211d1e, 0xff343031, 0xffbfbebe, 0xffffffff, 0xffffffff, 0xfff8f8f8, 0xff807e7f, 0xff1d191a, 0xff221e1f, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff201c1d, 0xff262223, 0xffafadae, 0xffffffff, 0xffffffff, 0xfffdfdfd, 0xff949293, 0xff272324, 0xff221e1f, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff1b1718, 0xff585556, 0xfff5f5f5, 0xffffffff, 0xfff5f5f5, 0xff7d7b7c, 0xff201d1e, 0xff231f20, 0xff231f20, 0xff231f20, 0xff221e1f, 0xff1f1b1c, 0xff929090, 0xfffafafa, 0xffffffff, 0xffe9e9e9, 0xff514d4f, 0xff1d1819, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff201c1d, 0xffadacad, 0xffffffff, 0xffffffff, 0xffc4c3c3, 0xff322e30, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff221e1f, 0xff373435, 0xffc8c7c7, 0xffffffff, 0xffffffff, 0xffb0aeaf, 0xff201c1d, 0xff221e1f, 0xff231f20, 0xff231f20, 0xff1b1718, 0xff949192, 0xffffffff, 0xffffffff, 0xffecebec, 0xff565354, 0xff211d1e, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff211d1e, 0xff2c2829, 0xffb1afaf, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xff777475, 0xff181415, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff2a2627, 0xffa6a4a5, 0xffffffff, 0xffffffff, 0xffffffff, 0xff939192, 0xff201c1d, 0xff1f1b1c, 0xff231f20, 0xff231f20, 0xff231f20, 0xff211d1e, 0xff211d1e, 0xff6c6a6a, 0xffebebeb, 0xffffffff, 0xffffffff, 0xffffffff, 0xffe9e8e8, 0xff555252, 0xff1c1819, 0xff231f20, 0xff231f20, 0xff231f20, 0xff201c1d, 0xff444041, 0xffd5d4d4, 0xffffffff, 0xffffffff, 0xfff0f0f0, 0xff716e6f, 0xff1d191a, 0xff221e1f, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff201c1d, 0xff221e1f, 0xff2d292a, 0xff252122, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20,
+ 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff221e1f, 0xff1e1b1c, 0xff848282, 0xfff6f6f6, 0xffffffff, 0xfff8f8f8, 0xff7f7d7e, 0xff1c1819, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff201c1d, 0xff403d3e, 0xffe4e4e4, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffececec, 0xff595658, 0xff1c1819, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff1e1a1b, 0xff706d6e, 0xfff0eff0, 0xffffffff, 0xffffffff, 0xffe9e9e9, 0xff706e6f, 0xff282425, 0xff221e1f, 0xff221e1f, 0xff221e1f, 0xff221e1f, 0xff302c2d, 0xff969494, 0xfffafaf9, 0xffffffff, 0xffffffff, 0xffdad9d9, 0xff4d494a, 0xff201c1d, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff1b1718, 0xff585556, 0xfff5f5f5, 0xffffffff, 0xfff5f5f5, 0xff7d7b7c, 0xff201d1e, 0xff231f20, 0xff231f20, 0xff231f20, 0xff221e1f, 0xff1f1b1c, 0xff929090, 0xfffafafa, 0xffffffff, 0xffe9e9e9, 0xff514d4f, 0xff1d1819, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff201c1d, 0xffadacad, 0xffffffff, 0xffffffff, 0xffc4c3c3, 0xff322e30, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff221e1f, 0xff373435, 0xffc8c7c7, 0xffffffff, 0xffffffff, 0xffb0aeaf, 0xff201c1d, 0xff221e1f, 0xff231f20, 0xff231f20, 0xff1d191a, 0xff615f5f, 0xfffdfcfc, 0xffffffff, 0xffffffff, 0xffbbb9b9, 0xff3a3738, 0xff221e1f, 0xff221e1f, 0xff221e1f, 0xff221e1f, 0xff221e1f, 0xff373334, 0xffa5a3a3, 0xffffffff, 0xfffefefe, 0xfffefefe, 0xffffffff, 0xffffffff, 0xff777475, 0xff181415, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff221e1f, 0xff534f50, 0xffe0dfe0, 0xffffffff, 0xffffffff, 0xfffbfbfb, 0xffa2a0a1, 0xff433f40, 0xff2a2627, 0xff252122, 0xff282425, 0xff3a3738, 0xff807d7e, 0xffeaeaea, 0xfffefefe, 0xffeeeded, 0xfffefefe, 0xffffffff, 0xffe9e8e8, 0xff555252, 0xff1c1819, 0xff231f20, 0xff231f20, 0xff231f20, 0xff221e1f, 0xff201b1c, 0xff7e7b7c, 0xfff3f3f3, 0xffffffff, 0xffffffff, 0xffe9e9e9, 0xff7c7a7a, 0xff302c2d, 0xff231f20, 0xff221e1f, 0xff221e1f, 0xff221e1f, 0xff221e1f, 0xff231f20, 0xff242021, 0xff2e2a2b, 0xff4f4c4d, 0xff9f9e9f, 0xff9c9a9b, 0xff2f2b2c, 0xff221e1f, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20,
+ 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231e1f, 0xff1e1b1c, 0xff848282, 0xfff6f6f6, 0xffffffff, 0xfff8f8f8, 0xff7f7d7e, 0xff1c1819, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff211d1e, 0xff8b898a, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffececec, 0xff595658, 0xff1c1819, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff211d1e, 0xff272425, 0xffa3a1a1, 0xfffafafa, 0xffffffff, 0xffffffff, 0xfff3f2f3, 0xffaaa9a9, 0xff6c6a6a, 0xff585556, 0xff5b5859, 0xff797677, 0xffc2c1c1, 0xfffdfdfd, 0xffffffff, 0xffffffff, 0xffefeeee, 0xff7b7979, 0xff201c1d, 0xff221e1f, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff1b1718, 0xff585556, 0xfff5f5f5, 0xffffffff, 0xfff5f5f5, 0xff7d7b7c, 0xff201d1e, 0xff231f20, 0xff231f20, 0xff231f20, 0xff221e1f, 0xff1f1b1c, 0xff929090, 0xfffafafa, 0xffffffff, 0xffe9e9e9, 0xff514d4f, 0xff1d1819, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff201c1d, 0xffadacad, 0xffffffff, 0xffffffff, 0xffc4c3c3, 0xff322e30, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff221e1f, 0xff373435, 0xffc8c7c7, 0xffffffff, 0xffffffff, 0xffb0aeaf, 0xff201c1d, 0xff221e1f, 0xff231f20, 0xff231f20, 0xff221e1f, 0xff2e2a2b, 0xffc4c3c3, 0xffffffff, 0xffffffff, 0xffffffff, 0xffcccccc, 0xff7b7878, 0xff575354, 0xff524e4f, 0xff5c595a, 0xff848282, 0xffd2d1d1, 0xffffffff, 0xfff5f5f5, 0xffcbcbcb, 0xffeeeeee, 0xffffffff, 0xffffffff, 0xff777475, 0xff181415, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff221e1f, 0xff242021, 0xff7c797a, 0xffedeced, 0xffffffff, 0xffffffff, 0xffffffff, 0xffe9e8e8, 0xffbebdbe, 0xffaeadae, 0xffb8b7b7, 0xffdddcdc, 0xffffffff, 0xffffffff, 0xffbfbebf, 0xffa5a3a4, 0xfffbfbfb, 0xffffffff, 0xffe9e8e8, 0xff545252, 0xff1c1819, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff201c1d, 0xff282325, 0xff9e9d9d, 0xfff7f7f7, 0xffffffff, 0xffffffff, 0xfffcfcfc, 0xffc6c5c5, 0xff888687, 0xff636161, 0xff585556, 0xff575455, 0xff5e5b5c, 0xff726f70, 0xff959293, 0xffc3c2c2, 0xfff4f3f3, 0xffffffff, 0xffb5b4b4, 0xff2f2b2c, 0xff221e1f, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20,
+ 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff221e1f, 0xff1f1b1c, 0xff858383, 0xfff8f7f7, 0xffffffff, 0xfff9f9f9, 0xff807d7e, 0xff1c1819, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff221e1f, 0xff3f3c3c, 0xffd5d4d4, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffededed, 0xff5a5758, 0xff1c1819, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff1f1b1c, 0xff332f30, 0xffa4a3a3, 0xfff6f6f6, 0xffffffff, 0xffffffff, 0xffffffff, 0xfffdfdfd, 0xfff0f1f1, 0xfff3f3f3, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffeae9e9, 0xff858383, 0xff252222, 0xff211d1e, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff1b1718, 0xff585656, 0xfff6f6f6, 0xffffffff, 0xfff6f6f6, 0xff7e7c7c, 0xff201d1e, 0xff231f20, 0xff231f20, 0xff231f20, 0xff221e1f, 0xff1f1b1c, 0xff939191, 0xfffbfbfb, 0xffffffff, 0xffeaeaea, 0xff524e4f, 0xff1d1819, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff201c1d, 0xffaeacad, 0xffffffff, 0xffffffff, 0xffc5c4c4, 0xff322e30, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff221e1f, 0xff383435, 0xffc9c8c9, 0xffffffff, 0xffffffff, 0xffb1afb0, 0xff201c1d, 0xff221e1f, 0xff231f20, 0xff231f20, 0xff231f20, 0xff211d1e, 0xff585556, 0xffdedddd, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xfff0f0f0, 0xffe9e9e9, 0xfff4f4f4, 0xffffffff, 0xffffffff, 0xfffafafa, 0xffa4a3a3, 0xff706d6e, 0xffe6e6e6, 0xffffffff, 0xffffffff, 0xff787576, 0xff181415, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff211d1e, 0xff272324, 0xff7e7b7d, 0xffdfdede, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xfffdfdfd, 0xffc2c1c1, 0xff494747, 0xff8a8788, 0xfffbfbfb, 0xffffffff, 0xffe7e6e6, 0xff514e4f, 0xff1d191a, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff1f1b1c, 0xff2c2829, 0xff918f8f, 0xffe9e9e9, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xfffafafa, 0xfff0f0f0, 0xffefefef, 0xfff7f7f7, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffadabac, 0xff2e2a2b, 0xff221e1f, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20,
+ 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff221e1f, 0xff1f1b1c, 0xff828181, 0xfff5f5f5, 0xfffcfcfc, 0xfff7f7f7, 0xff7e7b7c, 0xff1c1819, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff252122, 0xff817f7f, 0xfff8f8f8, 0xfffdfefe, 0xfffcfcfc, 0xfffcfdfc, 0xffebeaeb, 0xff595656, 0xff1c1819, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff201b1d, 0xff2e2a2b, 0xff787575, 0xffcccbcc, 0xfffbfafb, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xfff4f4f3, 0xffbab9b9, 0xff625e5f, 0xff252122, 0xff201c1d, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff1b1718, 0xff585555, 0xfff2f2f2, 0xfffefdfd, 0xfff3f4f4, 0xff7c7a7a, 0xff211c1d, 0xff231f20, 0xff231f20, 0xff231f20, 0xff221e1f, 0xff1f1b1c, 0xff908e8f, 0xfff9f8f8, 0xfffcfcfc, 0xffe7e6e6, 0xff504d4e, 0xff1d1819, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff211c1d, 0xffacaaaa, 0xffffffff, 0xffffffff, 0xffc3c2c2, 0xff322e2f, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff221e1f, 0xff383435, 0xffc7c5c6, 0xffffffff, 0xffffffff, 0xffafadad, 0xff201c1d, 0xff221e1f, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff232020, 0xff5b5959, 0xffc0bfbf, 0xfffafafa, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffdddcdd, 0xff888686, 0xff302c2d, 0xff5a5657, 0xffe7e7e7, 0xfffefefe, 0xfffffffe, 0xff767475, 0xff191415, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff211d1e, 0xff242021, 0xff535051, 0xff9d9b9b, 0xffd2d1d2, 0xffeeeeee, 0xfff9fafa, 0xfff7f7f7, 0xffe7e7e7, 0xffc4c3c4, 0xff858384, 0xff3d3a3b, 0xff1b1819, 0xff989797, 0xfffcfcfc, 0xffffffff, 0xffe1e0e1, 0xff4a4647, 0xff1e1a1b, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff201c1d, 0xff272324, 0xff5e5b5c, 0xffafadae, 0xffeaeaea, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xfff5f5f5, 0xffd1d1d1, 0xff9f9d9e, 0xff565454, 0xff262223, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20,
+ 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff221e1f, 0xff3b3738, 0xff575455, 0xff585556, 0xff575556, 0xff393637, 0xff211d1e, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff312d2e, 0xff545152, 0xff595657, 0xff585556, 0xff585556, 0xff545152, 0xff302c2d, 0xff211d1e, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff221e1f, 0xff242021, 0xff3a3637, 0xff656263, 0xff949292, 0xffb1b0b0, 0xffbdbcbc, 0xffbcbaba, 0xffacabab, 0xff898787, 0xff595656, 0xff322e2f, 0xff221e1f, 0xff221e1f, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff211d1e, 0xff302c2d, 0xff565353, 0xff595556, 0xff565454, 0xff393536, 0xff221f1f, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff221e1f, 0xff3e3a3b, 0xff585556, 0xff585556, 0xff535051, 0xff2e2b2b, 0xff221e1f, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff221e1f, 0xff454142, 0xff5a5859, 0xff5a5758, 0xff4a4748, 0xff272324, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff282425, 0xff4b4748, 0xff595657, 0xff5a5758, 0xff454243, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff221e1f, 0xff231f20, 0xff363233, 0xff666464, 0xff9a9798, 0xffb4b3b4, 0xffbdbcbc, 0xffb7b6b6, 0xffa09e9e, 0xff737172, 0xff434041, 0xff262223, 0xff211d1e, 0xff312d2e, 0xff535051, 0xff595656, 0xff595556, 0xff383435, 0xff211d1e, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff221e1f, 0xff211d1e, 0xff292526, 0xff3b3738, 0xff4e4b4c, 0xff565454, 0xff555253, 0xff4a4647, 0xff353132, 0xff252122, 0xff1f1b1c, 0xff231e1f, 0xffb5b4b4, 0xfffefefe, 0xffffffff, 0xffd5d4d4, 0xff3a3738, 0xff1f1b1c, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff221e1f, 0xff221e1f, 0xff2e2a2b, 0xff4d4a4a, 0xff787676, 0xff9e9c9d, 0xffb5b4b4, 0xffbdbcbd, 0xffbababa, 0xffb1b0b1, 0xff9c9a9b, 0xff7d7b7b, 0xff575455, 0xff3b3838, 0xff292526, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20,
+ 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff221e1f, 0xff211d1e, 0xff211d1e, 0xff221f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff221e1f, 0xff211d1e, 0xff211d1e, 0xff211d1e, 0xff221e1f, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff221e1f, 0xff211d1e, 0xff252122, 0xff292526, 0xff272425, 0xff231f20, 0xff211d1e, 0xff221e1f, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff221e1f, 0xff211d1e, 0xff211d1e, 0xff221e1f, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff211e1f, 0xff211d1e, 0xff221e1f, 0xff221f1f, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff221e1f, 0xff211d1e, 0xff211d1e, 0xff221e1f, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff221e1f, 0xff211d1e, 0xff211d1e, 0xff221e1f, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff221f1f, 0xff221d1f, 0xff221e1f, 0xff252122, 0xff282425, 0xff262223, 0xff221e1f, 0xff221e1f, 0xff221e1f, 0xff231f20, 0xff231f20, 0xff231f20, 0xff221e1f, 0xff211d1e, 0xff211d1e, 0xff221e1f, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff221e1f, 0xff221e1f, 0xff221e1f, 0xff221e1f, 0xff231f20, 0xff231f20, 0xff1f1b1c, 0xff3c393a, 0xffd5d5d5, 0xffffffff, 0xfffefefe, 0xffbebdbe, 0xff272324, 0xff211d1e, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff221e1f, 0xff211d1e, 0xff211d1e, 0xff262223, 0xff292526, 0xff272425, 0xff242021, 0xff211d1e, 0xff211d1e, 0xff211d1e, 0xff221e1f, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20,
+ 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff221e1f, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff221e1f, 0xff201c1d, 0xff7b7879, 0xfff4f3f3, 0xffffffff, 0xfffbfbfb, 0xff8e8b8c, 0xff1d191a, 0xff221e1f, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20,
+ 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff322e2f, 0xff312d2e, 0xff211d1e, 0xff1f1b1c, 0xff201c1d, 0xff221e1f, 0xff221e1f, 0xff221e1f, 0xff211d1e, 0xff1f1b1c, 0xff221e1f, 0xff555253, 0xffd6d5d5, 0xffffffff, 0xffffffff, 0xffeaeaea, 0xff4c484a, 0xff1c1819, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20,
+ 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff221e1f, 0xff727070, 0xffafadae, 0xff777475, 0xff494647, 0xff302c2d, 0xff231f20, 0xff221e1f, 0xff211e1f, 0xff2a2627, 0xff434040, 0xff7b7879, 0xffd5d4d4, 0xffffffff, 0xffffffff, 0xffffffff, 0xff9b9999, 0xff201d1e, 0xff221e1f, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20,
+ 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff211d1e, 0xff838181, 0xfffafafa, 0xfff4f3f4, 0xffdbd9da, 0xffc0bfbf, 0xffacabab, 0xffa3a2a2, 0xffa8a6a6, 0xffb8b6b7, 0xffd5d4d4, 0xfff4f4f4, 0xffffffff, 0xffffffff, 0xffffffff, 0xffbcbbbc, 0xff353133, 0xff201b1c, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20,
+ 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff211d1e, 0xff828080, 0xfffcfcfc, 0xffffffff, 0xffffffff, 0xffffffff, 0xfffefefe, 0xfffcfcfc, 0xfffdfdfd, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xfffdfefe, 0xffacaaab, 0xff3c3839, 0xff211d1e, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20,
+ 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff221e1f, 0xff434041, 0xff939191, 0xffcdcccd, 0xffedecec, 0xfff7f7f7, 0xfffefefe, 0xffffffff, 0xffffffff, 0xffffffff, 0xfff9f9f9, 0xffebebeb, 0xffbcbbbc, 0xff696666, 0xff2a2627, 0xff221e1f, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20,
+ 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff1f1b1c, 0xff1d191a, 0xff272324, 0xff3d3a3b, 0xff5a5758, 0xff6e6c6c, 0xff797677, 0xff7b797a, 0xff737172, 0xff605d5e, 0xff3f3b3b, 0xff231f20, 0xff1d191a, 0xff221e1f, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20,
+ 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff211d1e, 0xff1e1a1b, 0xff1b1718, 0xff191516, 0xff181415, 0xff181415, 0xff181415, 0xff1b1718, 0xff1f1a1c, 0xff221e1f, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20,
+ 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20,
+ 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20,
+ 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20,
+ 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20,
+ 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff221e1f, 0xff221e1f, 0xff221e1f, 0xff221e1f, 0xff221e1f, 0xff221e1f, 0xff221e1f, 0xff221e1f, 0xff221e1f, 0xff221e1f, 0xff221e1f, 0xff221e1f, 0xff221e1f, 0xff221e1f, 0xff221e1f, 0xff221e1f, 0xff221e1f, 0xff221e1f, 0xff221e1f, 0xff221e1f, 0xff221e1f, 0xff221e1f, 0xff221e1f, 0xff221e1f, 0xff221e1f, 0xff221e1f, 0xff221e1f, 0xff221e1f, 0xff221e1f, 0xff221e1f, 0xff221e1f, 0xff221e1f, 0xff221e1f, 0xff221e1f, 0xff221e1f, 0xff221e1f, 0xff221e1f, 0xff221e1f, 0xff221e1f, 0xff221e1f, 0xff221e1f, 0xff221e1f, 0xff221e1f, 0xff221e1f, 0xff221e1f, 0xff221e1f, 0xff221e1f, 0xff221e1f, 0xff221e1f, 0xff221e1f, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20,
+ 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff211d1e, 0xff2d292a, 0xff5e5c5d, 0xff696566, 0xff696666, 0xff696666, 0xff696666, 0xff696666, 0xff696666, 0xff696666, 0xff696666, 0xff696666, 0xff696666, 0xff696666, 0xff696666, 0xff696666, 0xff696666, 0xff696666, 0xff696666, 0xff696666, 0xff696666, 0xff696666, 0xff696666, 0xff696666, 0xff696666, 0xff696666, 0xff696666, 0xff696666, 0xff696666, 0xff696666, 0xff696666, 0xff696666, 0xff696666, 0xff696666, 0xff696666, 0xff696666, 0xff696666, 0xff696666, 0xff696666, 0xff696666, 0xff696666, 0xff696666, 0xff696666, 0xff696666, 0xff696666, 0xff696666, 0xff696666, 0xff696666, 0xff696666, 0xff696566, 0xff696666, 0xff514e4f, 0xff221e1f, 0xff221e1f, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20,
+ 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff221e1f, 0xff201c1d, 0xff787576, 0xffe8e7e7, 0xfff4f3f3, 0xfff4f3f3, 0xfff4f3f3, 0xfff4f3f3, 0xfff4f3f3, 0xfff4f3f3, 0xfff4f3f3, 0xfff4f3f3, 0xfff4f3f3, 0xfff4f3f3, 0xfff4f3f3, 0xfff4f3f3, 0xfff4f3f3, 0xfff4f3f3, 0xfff4f3f3, 0xfff4f3f3, 0xfff4f3f3, 0xfff4f3f3, 0xfff4f3f3, 0xfff4f3f3, 0xfff4f3f3, 0xfff4f3f3, 0xfff4f3f3, 0xfff4f3f3, 0xfff4f3f3, 0xfff4f3f3, 0xfff4f3f3, 0xfff4f3f3, 0xfff4f3f3, 0xfff4f3f3, 0xfff4f3f3, 0xfff4f3f3, 0xfff4f3f3, 0xfff4f3f3, 0xfff4f3f3, 0xfff4f3f3, 0xfff4f3f3, 0xfff4f3f3, 0xfff4f3f3, 0xfff4f3f3, 0xfff4f3f3, 0xfff4f3f3, 0xfff4f3f3, 0xfff4f3f3, 0xfff4f3f3, 0xfff4f3f3, 0xfff4f3f3, 0xfff4f4f4, 0xffd1d1d1, 0xff464344, 0xff1e1a1b, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20,
+ 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff201c1d, 0xff4b4849, 0xffd6d6d6, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xfffcfcfc, 0xffa2a1a1, 0xff292526, 0xff211d1e, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20,
+ 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff2e2a2b, 0xffaaa8a9, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xfffefdfd, 0xfff7f6f7, 0xfff5f5f5, 0xfff5f5f5, 0xfff5f5f5, 0xfff5f5f5, 0xfff5f5f5, 0xfff5f5f5, 0xfff5f5f5, 0xfff5f5f5, 0xfff5f5f5, 0xfff5f5f5, 0xfff5f5f5, 0xfff5f5f5, 0xfff5f5f5, 0xfff5f5f5, 0xfff5f5f5, 0xfff5f5f5, 0xfffafafa, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffeaeaea, 0xff656263, 0xff211d1e, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20,
+ 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff242021, 0xff737071, 0xfff7f7f7, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffe4e3e4, 0xff686566, 0xff423e3f, 0xff464243, 0xff464243, 0xff464243, 0xff464243, 0xff464243, 0xff464243, 0xff464243, 0xff464243, 0xff464243, 0xff464243, 0xff464243, 0xff464243, 0xff464243, 0xff454142, 0xff464344, 0xffa19f9f, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffc0bfbf, 0xff383435, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20,
+ 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff201c1d, 0xff464344, 0xffdedddd, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffdedede, 0xff484546, 0xff1a1617, 0xff1f1b1c, 0xff1f1b1c, 0xff1f1b1c, 0xff1f1b1c, 0xff1f1b1c, 0xff1f1b1c, 0xff1f1b1c, 0xff1f1b1c, 0xff1f1b1c, 0xff1f1b1c, 0xff1f1b1c, 0xff1f1b1c, 0xff1f1b1c, 0xff1e1a1b, 0xff201c1d, 0xff8d8a8b, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xfffdfdfd, 0xff828080, 0xff252122, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff221e1f, 0xff201c1d, 0xff201c1d, 0xff201c1d, 0xff201c1d, 0xff201c1d, 0xff201c1d, 0xff201c1d, 0xff201c1d, 0xff201c1d, 0xff201c1d, 0xff201c1d, 0xff201c1d, 0xff201c1d, 0xff201c1d, 0xff201c1d, 0xff201c1d, 0xff201c1d, 0xff201c1d, 0xff201c1d, 0xff201c1d, 0xff221e1f, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20,
+ 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff211d1e, 0xff2b2829, 0xffb4b2b3, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffdfdedf, 0xff4c494a, 0xff1f1b1c, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff242021, 0xff908d8d, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffe3e3e3, 0xff4b4748, 0xff1f1b1c, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff211d1e, 0xff2e2a2b, 0xff464243, 0xff464243, 0xff464243, 0xff464243, 0xff464243, 0xff464243, 0xff464243, 0xff464243, 0xff464243, 0xff464243, 0xff464243, 0xff464243, 0xff464243, 0xff464243, 0xff464243, 0xff464243, 0xff464243, 0xff464243, 0xff464244, 0xff423f40, 0xff2b2728, 0xff221e1f, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20,
+ 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff221e1f, 0xff1d191a, 0xff868485, 0xfffdfdfd, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffdfdedf, 0xff4c494a, 0xff1f1b1c, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff242021, 0xff8f8d8d, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffb4b3b3, 0xff272425, 0xff211d1e, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff1c1819, 0xff838181, 0xffdadada, 0xffd9d8d8, 0xffd9d8d8, 0xffd9d8d8, 0xffd9d8d8, 0xffd9d8d8, 0xffd9d8d8, 0xffd9d8d8, 0xffd9d8d8, 0xffd9d8d8, 0xffd9d8d8, 0xffd9d8d8, 0xffd9d8d8, 0xffd9d8d8, 0xffd9d8d8, 0xffd9d8d8, 0xffd9d8d8, 0xffd9d8d8, 0xffd9d8d9, 0xffcfcecf, 0xff676464, 0xff201c1d, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20,
+ 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff211d1e, 0xff1f1a1b, 0xff1f1b1c, 0xff1f1b1c, 0xff1f1b1c, 0xff1f1b1c, 0xff1f1b1c, 0xff1f1b1c, 0xff1f1b1c, 0xff1f1b1c, 0xff1f1b1c, 0xff1f1b1c, 0xff1f1b1c, 0xff1f1b1c, 0xff1e1a1b, 0xff201c1d, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff1b1718, 0xff585556, 0xffeaeaea, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffdfdedf, 0xff4c494a, 0xff1f1b1c, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff242021, 0xff8f8d8d, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xfffcfcfc, 0xff787677, 0xff1b1718, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff1f1b1c, 0xff332f30, 0xffd7d5d6, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffa9a7a8, 0xff2b2728, 0xff221e1f, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20,
+ 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff221e1f, 0xff2e2b2b, 0xff413d3e, 0xff403d3e, 0xff403d3e, 0xff403d3e, 0xff403d3e, 0xff403d3e, 0xff403d3e, 0xff403d3e, 0xff403d3e, 0xff403d3e, 0xff403d3e, 0xff403d3e, 0xff403d3e, 0xff423e3f, 0xff383535, 0xff242021, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff1f1b1c, 0xff343132, 0xffc5c3c3, 0xfffefefe, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffdfdedf, 0xff4c494a, 0xff1f1b1c, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff242021, 0xff8f8d8d, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffdfdfdf, 0xff423e3f, 0xff1e1a1b, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff1c1819, 0xff737072, 0xfff7f7f7, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffdcdbdb, 0xff4a4748, 0xff211d1e, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20,
+ 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff211e1f, 0xff969394, 0xfffaf9f9, 0xfff2f2f2, 0xfff2f2f2, 0xfff2f2f2, 0xfff2f2f2, 0xfff2f2f2, 0xfff2f2f2, 0xfff2f2f2, 0xfff2f2f2, 0xfff2f2f2, 0xfff2f2f2, 0xfff2f2f2, 0xfff2f2f2, 0xfff8f8f8, 0xffcdcccc, 0xff332f30, 0xff211d1e, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff221e1f, 0xff252021, 0xff908e8e, 0xfff9f8f8, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffdfdedf, 0xff4c484a, 0xff1e1a1b, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff221e1f, 0xff242021, 0xff8f8d8d, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xfffefefe, 0xffa8a7a7, 0xff262122, 0xff211d1e, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff211d1e, 0xff2b2728, 0xffbbb9b9, 0xfffefefe, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xfffdfdfd, 0xff7d7b7b, 0xff242021, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20,
+ 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff211d1e, 0xff312d2e, 0xffd6d5d5, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xfff8f7f7, 0xff4c494a, 0xff1f1b1c, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff221e1f, 0xff5d5a5b, 0xffe5e5e5, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffdfdedf, 0xff4c4849, 0xff1e1a1b, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff221e1f, 0xff242021, 0xff8f8d8e, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffefeeef, 0xff696667, 0xff1f1b1c, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff1e1a1b, 0xff5a5758, 0xffe8e7e8, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffbfbdbe, 0xff302c2d, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20,
+ 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff1d191a, 0xff5b5858, 0xfffcfcfc, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xff787676, 0xff1c1819, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff221e1f, 0xff393536, 0xffc0bebf, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffededed, 0xff9b999a, 0xff828080, 0xff848283, 0xff848283, 0xff848283, 0xff848283, 0xff848283, 0xff848283, 0xff848283, 0xff848283, 0xff848283, 0xff848283, 0xff848283, 0xff848283, 0xff848283, 0xff848282, 0xff868383, 0xffc1c0c0, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffc5c3c4, 0xff3c3839, 0xff211d1e, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff221e1f, 0xff262323, 0xff9a9999, 0xfffcfcfc, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xfff3f3f3, 0xff565354, 0xff211d1e, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20,
+ 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff221e1f, 0xff1d191a, 0xff9c9b9a, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffa8a6a6, 0xff1f1b1c, 0xff221e1f, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff221f1f, 0xff231f20, 0xff908e8e, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xfffeffff, 0xfffefefe, 0xfffffefe, 0xfffffefe, 0xfffffefe, 0xfffffefe, 0xfffffefe, 0xfffffefe, 0xfffffefe, 0xfffffefe, 0xfffffefe, 0xfffffefe, 0xfffffefe, 0xfffffefe, 0xfffffefe, 0xfffffefe, 0xfffffefe, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xfffafafa, 0xff8a8889, 0xff252122, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff211d1e, 0xff444142, 0xffd4d3d4, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xff9b999a, 0xff211d1e, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20,
+ 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff201c1d, 0xff312d2e, 0xffdfdede, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffdad9da, 0xff2c2829, 0xff211d1e, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff1f1b1c, 0xff676565, 0xfffafafa, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffebeaea, 0xff585555, 0xff221e1f, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff252122, 0xff807e7e, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffeae9e9, 0xff3d393a, 0xff201c1d, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20,
+ 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff211d1e, 0xff332f30, 0xff777575, 0xff7d7b7c, 0xff7c7a7a, 0xff7c7a7a, 0xff7c7a7a, 0xff7c7a7a, 0xff7c7a7a, 0xff7c7a7a, 0xff7c7a7a, 0xff7c7a7a, 0xff7c7a7a, 0xff7c7a7a, 0xff7c7a7a, 0xff7c7a7a, 0xff7c7a7a, 0xff7c7a7a, 0xff7e7b7c, 0xff757273, 0xff2b2728, 0xff211d1e, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff242021, 0xff767374, 0xffa19f9f, 0xff9c9a9b, 0xff9c9a9b, 0xff9c9a9b, 0xff9c9a9b, 0xff9c9a9b, 0xff9c9a9b, 0xff9c9a9b, 0xff9c9a9b, 0xff9c9a9b, 0xff9c9a9b, 0xff9c9a9b, 0xff9c9a9b, 0xff9c9a9b, 0xff9c9a9b, 0xff9c9a9b, 0xff9c9a9b, 0xff9c9a9b, 0xff9c9a9b, 0xff9c9a9b, 0xff9c9a9b, 0xff9c9a9b, 0xff9c9a9b, 0xff9c9a9b, 0xff9c9a9b, 0xff9c9a9b, 0xff9c9a9b, 0xff9c9a9b, 0xff9c9a9b, 0xff9c9a9b, 0xff9c9a9b, 0xff9c9a9b, 0xff9c9a9b, 0xff9c9a9b, 0xff9c9a9b, 0xff9c9a9b, 0xff9c9a9b, 0xff9c9a9b, 0xff9c9a9b, 0xff9c9a9b, 0xff9c9a9b, 0xff9c9a9b, 0xff9c9a9b, 0xff9c9a9b, 0xff9c9a9b, 0xff9c9a9b, 0xff9c9a9b, 0xff9c9a9b, 0xff9c9a9b, 0xff9c9a9b, 0xff9c9a9b, 0xff9c9a9b, 0xff9c9a9b, 0xff9c9a9b, 0xff9c9a9b, 0xff9c9a9b, 0xff9c9a9b, 0xff9c9a9b, 0xff9c9a9b, 0xff9c9a9b, 0xff9c9a9b, 0xff9c9a9b, 0xff9c9a9b, 0xff9c9a9b, 0xff9c9a9b, 0xff9c9a9b, 0xffa09e9f, 0xff615f60, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff272223, 0xff605d5e, 0xff8a8888, 0xff878686, 0xff878585, 0xff878585, 0xff878585, 0xff878585, 0xff878585, 0xff878585, 0xff878585, 0xff878585, 0xff878585, 0xff878585, 0xff878585, 0xff878585, 0xff878585, 0xff878585, 0xff878585, 0xff878585, 0xff878585, 0xff878585, 0xff878585, 0xff878585, 0xff878585, 0xff878585, 0xff888686, 0xff878485, 0xff3e3a3b, 0xff201c1d, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20,
+ 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff221e1f, 0xff221e1f, 0xff221e1f, 0xff221e1f, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff211d1e, 0xff1b1718, 0xff1b1718, 0xff1b1718, 0xff1b1718, 0xff1b1718, 0xff1b1718, 0xff1b1718, 0xff1b1718, 0xff1b1718, 0xff1b1718, 0xff1b1718, 0xff1b1718, 0xff1b1718, 0xff1b1718, 0xff1b1718, 0xff1b1718, 0xff1b1718, 0xff1c1819, 0xff211d1e, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff1e191a, 0xff1a1617, 0xff1a1617, 0xff1a1617, 0xff1a1617, 0xff1a1617, 0xff1a1617, 0xff1a1617, 0xff1a1617, 0xff1a1617, 0xff1a1617, 0xff1a1617, 0xff1a1617, 0xff1a1617, 0xff1a1617, 0xff1a1617, 0xff1a1617, 0xff1a1617, 0xff1a1617, 0xff1a1617, 0xff1a1617, 0xff1a1617, 0xff1a1617, 0xff1a1617, 0xff1a1617, 0xff1a1617, 0xff1a1617, 0xff1a1617, 0xff1a1617, 0xff1a1617, 0xff1a1617, 0xff1a1617, 0xff1a1617, 0xff1a1617, 0xff1a1617, 0xff1a1617, 0xff1a1617, 0xff1a1617, 0xff1a1617, 0xff1a1617, 0xff1a1617, 0xff1a1617, 0xff1a1617, 0xff1a1617, 0xff1a1617, 0xff1a1617, 0xff1a1617, 0xff1a1617, 0xff1a1617, 0xff1a1617, 0xff1a1617, 0xff1a1617, 0xff1a1617, 0xff1a1617, 0xff1a1617, 0xff1a1617, 0xff1a1617, 0xff1a1617, 0xff1a1617, 0xff1a1617, 0xff1a1617, 0xff1a1617, 0xff1a1617, 0xff1a1617, 0xff1a1617, 0xff1a1617, 0xff1a1617, 0xff1a1617, 0xff1e1a1b, 0xff221f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff221e1f, 0xff1d191a, 0xff1a1617, 0xff1a1617, 0xff1a1617, 0xff1a1617, 0xff1a1617, 0xff1a1617, 0xff1a1617, 0xff1a1617, 0xff1a1617, 0xff1a1617, 0xff1a1617, 0xff1a1617, 0xff1a1617, 0xff1a1617, 0xff1a1617, 0xff1a1617, 0xff1a1617, 0xff1a1617, 0xff1a1617, 0xff1a1617, 0xff1a1617, 0xff1a1617, 0xff1a1617, 0xff1a1617, 0xff1a1617, 0xff1a1617, 0xff201c1d, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff221e1f, 0xff221e1f, 0xff221e1f, 0xff221e1f, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20,
+ 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff211d1e, 0xff201b1c, 0xff242021, 0xff302c2d, 0xff3e3b3c, 0xff4a4747, 0xff555253, 0xff5e5b5b, 0xff5f5c5d, 0xff5e5c5d, 0xff5e5c5d, 0xff5e5c5d, 0xff5e5c5d, 0xff5e5c5d, 0xff5e5c5d, 0xff5e5c5d, 0xff5e5c5d, 0xff5f5c5d, 0xff5f5c5d, 0xff5f5c5d, 0xff5f5c5d, 0xff5f5c5d, 0xff5f5c5d, 0xff5f5c5d, 0xff5f5c5d, 0xff5f5c5d, 0xff5f5c5d, 0xff5f5c5d, 0xff5f5c5d, 0xff5f5c5d, 0xff5f5c5d, 0xff5f5c5d, 0xff5f5c5d, 0xff5f5c5d, 0xff5f5c5d, 0xff5e5c5d, 0xff5e5c5d, 0xff5e5c5d, 0xff5e5c5d, 0xff5e5c5d, 0xff5e5c5d, 0xff5e5c5d, 0xff5e5c5d, 0xff5e5c5d, 0xff5e5c5d, 0xff5e5c5d, 0xff5e5c5d, 0xff5e5c5d, 0xff5e5c5d, 0xff5e5c5d, 0xff5e5c5d, 0xff5e5c5d, 0xff5e5c5d, 0xff5e5c5d, 0xff5e5c5d, 0xff5e5c5d, 0xff5e5c5d, 0xff5e5c5d, 0xff5e5c5d, 0xff5f5c5d, 0xff5f5c5d, 0xff5f5c5d, 0xff5f5c5d, 0xff5f5c5d, 0xff5f5c5d, 0xff5f5c5d, 0xff5f5c5d, 0xff5f5c5d, 0xff5f5c5d, 0xff5f5c5d, 0xff5f5c5d, 0xff5f5c5d, 0xff5f5c5d, 0xff5f5c5d, 0xff5f5c5d, 0xff5f5c5d, 0xff5f5c5d, 0xff5f5c5d, 0xff5f5c5d, 0xff5f5c5d, 0xff5f5c5d, 0xff5f5c5d, 0xff5f5c5d, 0xff5f5c5d, 0xff5f5c5d, 0xff5f5c5d, 0xff5f5c5d, 0xff5f5c5d, 0xff5f5c5d, 0xff5f5c5d, 0xff5f5c5d, 0xff5f5c5d, 0xff5f5c5d, 0xff5f5c5d, 0xff5f5c5d, 0xff5f5c5d, 0xff5f5c5d, 0xff5f5c5d, 0xff5f5c5d, 0xff5f5c5d, 0xff5f5c5d, 0xff5f5c5d, 0xff5f5c5d, 0xff5f5c5d, 0xff5f5c5d, 0xff5f5c5d, 0xff5f5c5d, 0xff5f5c5d, 0xff5f5c5d, 0xff5f5c5d, 0xff5f5c5d, 0xff5f5c5d, 0xff5f5c5d, 0xff5f5c5d, 0xff5f5c5d, 0xff5f5c5d, 0xff5f5c5d, 0xff5f5c5d, 0xff5f5c5d, 0xff5f5c5d, 0xff5f5c5d, 0xff5f5c5d, 0xff5f5c5d, 0xff5f5c5d, 0xff5f5c5d, 0xff5f5c5d, 0xff5e5c5d, 0xff5e5c5d, 0xff5e5c5d, 0xff5e5c5d, 0xff5e5c5d, 0xff5e5c5d, 0xff5e5c5d, 0xff5e5c5d, 0xff5e5c5d, 0xff5e5c5d, 0xff5e5c5d, 0xff5e5c5d, 0xff5e5c5d, 0xff5e5c5d, 0xff5e5c5d, 0xff5e5c5d, 0xff5e5c5d, 0xff5e5c5d, 0xff5e5c5d, 0xff5e5c5d, 0xff5e5c5d, 0xff5f5c5d, 0xff5f5c5d, 0xff5f5c5d, 0xff5f5c5d, 0xff5f5c5d, 0xff5f5c5d, 0xff5f5c5d, 0xff5f5c5d, 0xff5f5c5d, 0xff5f5c5d, 0xff5f5c5d, 0xff5f5c5d, 0xff5f5c5d, 0xff5f5c5d, 0xff5f5c5d, 0xff5f5c5d, 0xff5f5c5d, 0xff5f5c5d, 0xff5f5c5d, 0xff5f5c5d, 0xff5f5c5d, 0xff5f5c5d, 0xff5f5c5d, 0xff5f5c5d, 0xff5f5c5d, 0xff5f5c5d, 0xff5f5c5d, 0xff5e5c5d, 0xff5e5c5d, 0xff5e5c5d, 0xff5f5c5d, 0xff5e5a5b, 0xff555252, 0xff4a4647, 0xff3e3a3b, 0xff2f2b2c, 0xff231f20, 0xff201c1d, 0xff211d1e, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20,
+ 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff211d1e, 0xff1d191a, 0xff2d2a2b, 0xff575455, 0xff848283, 0xffb4b3b4, 0xffd2d1d2, 0xffdfdede, 0xffeaeaea, 0xfff4f4f4, 0xfff6f5f5, 0xfff5f5f5, 0xfff5f5f5, 0xfff5f5f5, 0xfff5f5f5, 0xfff5f5f5, 0xfff5f5f5, 0xfff5f5f5, 0xfff5f5f5, 0xfff5f5f5, 0xfff5f5f5, 0xfff5f5f5, 0xfff5f5f5, 0xfff5f5f5, 0xfff5f5f5, 0xfff5f5f5, 0xfff5f5f5, 0xfff5f5f5, 0xfff5f5f5, 0xfff5f5f5, 0xfff5f5f5, 0xfff5f5f5, 0xfff5f5f5, 0xfff5f5f5, 0xfff5f5f5, 0xfff5f5f5, 0xfff5f5f5, 0xfff5f5f5, 0xfff5f5f5, 0xfff5f5f5, 0xfff5f5f5, 0xfff5f5f5, 0xfff5f5f5, 0xfff5f5f5, 0xfff5f5f5, 0xfff5f5f5, 0xfff5f5f5, 0xfff5f5f5, 0xfff5f5f5, 0xfff5f5f5, 0xfff5f5f5, 0xfff5f5f5, 0xfff5f5f5, 0xfff5f5f5, 0xfff5f5f5, 0xfff5f5f5, 0xfff5f5f5, 0xfff5f5f5, 0xfff5f5f5, 0xfff5f5f5, 0xfff5f5f5, 0xfff5f5f5, 0xfff5f5f5, 0xfff5f5f5, 0xfff5f5f5, 0xfff5f5f5, 0xfff5f5f5, 0xfff5f5f5, 0xfff5f5f5, 0xfff5f5f5, 0xfff5f5f5, 0xfff5f5f5, 0xfff5f5f5, 0xfff5f5f5, 0xfff5f5f5, 0xfff5f5f5, 0xfff5f5f5, 0xfff5f5f5, 0xfff5f5f5, 0xfff5f5f5, 0xfff5f5f5, 0xfff5f5f5, 0xfff5f5f5, 0xfff5f5f5, 0xfff5f5f5, 0xfff5f5f5, 0xfff5f5f5, 0xfff5f5f5, 0xfff5f5f5, 0xfff5f5f5, 0xfff5f5f5, 0xfff5f5f5, 0xfff5f5f5, 0xfff5f5f5, 0xfff5f5f5, 0xfff5f5f5, 0xfff5f5f5, 0xfff5f5f5, 0xfff5f5f5, 0xfff5f5f5, 0xfff5f5f5, 0xfff5f5f5, 0xfff5f5f5, 0xfff5f5f5, 0xfff5f5f5, 0xfff5f5f5, 0xfff5f5f5, 0xfff5f5f5, 0xfff5f5f5, 0xfff5f5f5, 0xfff5f5f5, 0xfff5f5f5, 0xfff5f5f5, 0xfff5f5f5, 0xfff5f5f5, 0xfff5f5f5, 0xfff5f5f5, 0xfff5f5f5, 0xfff5f5f5, 0xfff5f5f5, 0xfff5f5f5, 0xfff5f5f5, 0xfff5f5f5, 0xfff5f5f5, 0xfff5f5f5, 0xfff5f5f5, 0xfff5f5f5, 0xfff5f5f5, 0xfff5f5f5, 0xfff5f5f5, 0xfff5f5f5, 0xfff5f5f5, 0xfff5f5f5, 0xfff5f5f5, 0xfff5f5f5, 0xfff5f5f5, 0xfff5f5f5, 0xfff5f5f5, 0xfff5f5f5, 0xfff5f5f5, 0xfff5f5f5, 0xfff5f5f5, 0xfff5f5f5, 0xfff5f5f5, 0xfff5f5f5, 0xfff5f5f5, 0xfff5f5f5, 0xfff5f5f5, 0xfff5f5f5, 0xfff5f5f5, 0xfff5f5f5, 0xfff5f5f5, 0xfff5f5f5, 0xfff5f5f5, 0xfff5f5f5, 0xfff5f5f5, 0xfff5f5f5, 0xfff5f5f5, 0xfff5f5f5, 0xfff5f5f5, 0xfff5f5f5, 0xfff5f5f5, 0xfff5f5f5, 0xfff5f5f5, 0xfff5f5f5, 0xfff5f5f5, 0xfff5f5f5, 0xfff5f5f5, 0xfff5f5f5, 0xfff5f5f5, 0xfff5f5f5, 0xfff5f5f5, 0xfff5f5f5, 0xfff5f5f5, 0xfff5f5f5, 0xfff5f5f5, 0xfff5f5f5, 0xfff5f5f5, 0xfff5f5f5, 0xfff5f5f5, 0xfff4f3f4, 0xffeaeaea, 0xffdeddde, 0xffd0d0d0, 0xffb2b1b1, 0xff818080, 0xff555253, 0xff2b2829, 0xff1d191a, 0xff211d1e, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20,
+ 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff1e191a, 0xff242021, 0xff605d5e, 0xffb5b3b3, 0xffe5e5e5, 0xfffaf9fa, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xfff9f9f9, 0xffe4e3e4, 0xffb0afb0, 0xff5c5959, 0xff231e20, 0xff1e1a1b, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20,
+ 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff1d191a, 0xff3f3b3c, 0xffaaa9a9, 0xffececec, 0xfffefefe, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xfffdfdfd, 0xffebeaea, 0xffa6a4a6, 0xff3c3839, 0xff1d191a, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20,
+ 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff211d1e, 0xff4e4a4b, 0xffcccacb, 0xfffefefe, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xfffdfdfd, 0xffc8c7c7, 0xff4b4848, 0xff211d1e, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20,
+ 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff221e1f, 0xff585556, 0xffdbdadb, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffd8d7d8, 0xff555253, 0xff221e1f, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20,
+ 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff1f1c1c, 0xff484546, 0xffd7d6d6, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffd4d3d3, 0xff474344, 0xff1f1b1c, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20,
+ 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff1f1b1c, 0xff383434, 0xffc3c2c2, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffc0bfbf, 0xff373333, 0xff1f1b1c, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20,
+ 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff221e1f, 0xff1e1a1b, 0xff9c9a9a, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xff9a9898, 0xff1e1a1b, 0xff221e1f, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20,
+ 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff1c1819, 0xff514e4e, 0xffebebeb, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffeaeaea, 0xff504c4d, 0xff1c1819, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20,
+ 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff221e1f, 0xff252122, 0xffaaa9aa, 0xfffdfdfd, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xfffdfdfd, 0xffaaa9a9, 0xff252122, 0xff221e1f, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20,
+ 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff1e1a1b, 0xff4a4748, 0xffe0dfe0, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffe0dfdf, 0xff4a4747, 0xff1e1a1b, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20,
+ 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff1f1b1c, 0xff787676, 0xfff4f3f3, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xfff3f3f3, 0xff777575, 0xff1f1b1c, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20,
+ 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff221e1f, 0xff2a2627, 0xffa8a6a6, 0xfffefefe, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xfffefefe, 0xffa6a5a5, 0xff292526, 0xff221e1f, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20,
+ 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff211d1e, 0xff373435, 0xffc5c4c4, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffc3c2c2, 0xff363333, 0xff211d1e, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20,
+ 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff201c1d, 0xff3f3c3d, 0xffd2d1d2, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffd2d1d1, 0xff3f3b3c, 0xff201c1d, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20,
+ 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff211d1e, 0xff4a4748, 0xffdcdbdb, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffdcdbdb, 0xff4a4748, 0xff211d1e, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20,
+ 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff211c1e, 0xff535052, 0xffe3e2e2, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffe3e2e2, 0xff535051, 0xff211c1d, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20,
+ 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff211d1e, 0xff555252, 0xffe4e3e3, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffe3e3e3, 0xff555253, 0xff211d1e, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20,
+ 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff211d1e, 0xff545152, 0xffe3e3e3, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xfffcfcfc, 0xfff5f4f5, 0xffececec, 0xffe4e3e4, 0xffdcdbdb, 0xffdbdada, 0xffe3e3e3, 0xffececec, 0xfff5f4f5, 0xfffcfcfd, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffe3e3e3, 0xff545152, 0xff211c1e, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20,
+ 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff211d1e, 0xff545152, 0xffe3e3e3, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xfff1f1f1, 0xffd2d1d1, 0xffafaeae, 0xff8a8889, 0xff6f6d6e, 0xff646162, 0xff5c595a, 0xff555253, 0xff4e4a4b, 0xff464344, 0xff454343, 0xff4d4a4b, 0xff555252, 0xff5c595a, 0xff646263, 0xff706e6f, 0xff898787, 0xffaeadad, 0xffd1d0d0, 0xfff1f1f1, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffe3e3e3, 0xff545152, 0xff211d1e, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20,
+ 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff211d1e, 0xff545152, 0xffe3e2e3, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xfffbfbfb, 0xffd0cfd0, 0xff949293, 0xff696667, 0xff474444, 0xff343031, 0xff272324, 0xff242021, 0xff231f20, 0xff221e1f, 0xff231f20, 0xff221e1f, 0xff221e1f, 0xff221e1f, 0xff221e1f, 0xff221e1f, 0xff221e1f, 0xff231f20, 0xff221e1f, 0xff231f20, 0xff231f20, 0xff282324, 0xff343031, 0xff464243, 0xff686566, 0xff929091, 0xffcccbcb, 0xfff9f9f9, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffe3e3e3, 0xff545152, 0xff211d1e, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20,
+ 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff211d1e, 0xff545151, 0xffe2e2e2, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xfffefefe, 0xfff8f7f7, 0xffdddcdc, 0xffa09f9f, 0xff5a5757, 0xff2b2829, 0xff1d191a, 0xff1e1a1b, 0xff211d1e, 0xff221e1f, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff221e1f, 0xff211d1e, 0xff1e1a1b, 0xff1d191a, 0xff2a2627, 0xff575454, 0xff9d9b9c, 0xffdcdadb, 0xfff7f7f7, 0xfffefdfd, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffe3e3e3, 0xff545152, 0xff211d1e, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20,
+ 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff211d1e, 0xff535051, 0xffe2e2e2, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xfffefefe, 0xffebebeb, 0xffb6b5b5, 0xff6c696a, 0xff353132, 0xff1d191a, 0xff1c1819, 0xff211d1e, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff211d1e, 0xff1d191a, 0xff1c1819, 0xff333030, 0xff6a6767, 0xffb1b0b0, 0xffe9e9e9, 0xfffdfdfd, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffe3e3e3, 0xff545152, 0xff211d1e, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20,
+ 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff211c1e, 0xff525050, 0xffe2e2e2, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffe7e7e7, 0xffaeacad, 0xff605d5e, 0xff272324, 0xff1a1617, 0xff1f1b1c, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff221e1f, 0xff1f1b1c, 0xff1a1617, 0xff252223, 0xff5c595a, 0xffa9a8a8, 0xffe5e5e5, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffe3e3e3, 0xff545152, 0xff211d1e, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20,
+ 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff211d1e, 0xff524f50, 0xffe2e1e2, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffefeeef, 0xffa7a6a6, 0xff5d5a5a, 0xff2c2829, 0xff1e1a1b, 0xff211d1e, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff211d1e, 0xff1e1a1b, 0xff2b2728, 0xff5a5757, 0xffa3a1a2, 0xffecebeb, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffe3e3e3, 0xff545152, 0xff211d1e, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20,
+ 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff211d1e, 0xff524f50, 0xffe2e1e1, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffcdcccd, 0xff605d5d, 0xff2b2728, 0xff211d1e, 0xff211d1e, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff221d1e, 0xff211d1e, 0xff2a2627, 0xff595657, 0xffc3c3c3, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffe3e3e3, 0xff545152, 0xff211d1e, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20,
+ 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff211d1e, 0xff524f50, 0xffe2e1e1, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xfff7f7f7, 0xff999797, 0xff343132, 0xff211d1e, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff221e1f, 0xff332f30, 0xff928f90, 0xfff3f2f3, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffe3e3e3, 0xff545152, 0xff211d1e, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20,
+ 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff211d1e, 0xff524f50, 0xffe1e1e1, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xfffefefe, 0xffd6d5d5, 0xff666464, 0xff221e1f, 0xff221e1f, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff211d1e, 0xff221e1f, 0xff646061, 0xffd3d2d2, 0xfffcfcfc, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffe3e3e3, 0xff545152, 0xff211d1e, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20,
+ 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff211d1e, 0xff524e4f, 0xffe1e1e1, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xfffaf9fa, 0xffb6b4b5, 0xff423f3f, 0xff1d191a, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff221e1f, 0xff1c1718, 0xff3e3a3b, 0xffb2b0b1, 0xfff9f9f9, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffe3e3e3, 0xff545152, 0xff211d1e, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20,
+ 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff211d1e, 0xff514e4f, 0xffe1e0e1, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xfff8f7f8, 0xffa2a0a1, 0xff353233, 0xff1c191a, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff1c1819, 0xff302c2d, 0xff9a9899, 0xfff6f6f6, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffe3e3e3, 0xff545152, 0xff211d1e, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20,
+ 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff211d1e, 0xff504e4e, 0xffe1e0e0, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xfff4f3f3, 0xff888687, 0xff2d292a, 0xff1f1b1c, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff1f1b1c, 0xff2a2728, 0xff827f7f, 0xffefefef, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffe3e3e3, 0xff545152, 0xff211d1e, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20,
+ 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff211d1e, 0xff504d4e, 0xffe1e0e0, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffecebec, 0xff716e6f, 0xff272324, 0xff211d1e, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff221e1f, 0xff272425, 0xff6f6d6e, 0xffe7e7e7, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffe3e3e3, 0xff545152, 0xff211d1e, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20,
+ 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff211d1e, 0xff504d4e, 0xffe0e0e0, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xfff1f0f1, 0xff726f70, 0xff242021, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff716f6f, 0xffeeeeee, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffe3e3e3, 0xff545152, 0xff211d1e, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20,
+ 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff211d1e, 0xff504d4e, 0xffe0dfe0, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xfff4f4f4, 0xff8a8888, 0xff262223, 0xff221e1f, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff221e1f, 0xff221e1f, 0xff221e1f, 0xff221e1f, 0xff221e1f, 0xff221e1f, 0xff221e1f, 0xff221e1f, 0xff221e1f, 0xff221e1f, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff221e1f, 0xff221d1e, 0xff888686, 0xfff4f4f4, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffe3e3e3, 0xff545152, 0xff211d1e, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20,
+ 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff211d1e, 0xff504d4d, 0xffe0dfdf, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xfff9f9f9, 0xff9f9d9d, 0xff2b2727, 0xff201c1d, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff221e1f, 0xff201c1d, 0xff201c1d, 0xff211d1e, 0xff252222, 0xff2e2a2b, 0xff333031, 0xff363334, 0xff3a3738, 0xff3b3738, 0xff373334, 0xff343031, 0xff2f2b2c, 0xff262223, 0xff211e1f, 0xff1f1b1c, 0xff201b1d, 0xff221e1f, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff201c1d, 0xff242122, 0xff999797, 0xfffafafa, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffe3e3e3, 0xff545152, 0xff211d1e, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20,
+ 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff211d1e, 0xff504c4d, 0xffe0dfdf, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffaeacac, 0xff312d2e, 0xff1e1a1b, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff1f1b1c, 0xff1d1819, 0xff242021, 0xff3c3839, 0xff5d5b5b, 0xff7b7979, 0xff959393, 0xffafadad, 0xffbebdbd, 0xffc6c5c5, 0xffcdcccc, 0xffcecdcd, 0xffc7c6c6, 0xffbfbebe, 0xffb1afaf, 0xff979595, 0xff7d7a7c, 0xff615d5e, 0xff3e3a3b, 0xff252122, 0xff1d191a, 0xff1f1b1c, 0xff221e1f, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff1f1b1c, 0xff2a2728, 0xffa4a2a2, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffe3e3e3, 0xff545152, 0xff211d1e, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20,
+ 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff211d1e, 0xff504c4d, 0xffe0dfdf, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffcbcaca, 0xff383535, 0xff1e1a1b, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff1f1b1c, 0xff1c1819, 0xff343031, 0xff6f6c6d, 0xffa6a5a5, 0xffcecdce, 0xffe8e8e8, 0xfff6f6f6, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xfff7f7f7, 0xffe9e9e9, 0xffd0d0d0, 0xffa9a8a8, 0xff737070, 0xff363334, 0xff1c1819, 0xff1d191a, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff201c1d, 0xff333031, 0xffbbb9ba, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffe3e3e3, 0xff545152, 0xff211d1e, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20,
+ 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff211d1e, 0xff4f4c4c, 0xffdfdfdf, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffefefef, 0xff555253, 0xff1e1a1b, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff211d1e, 0xff1b1718, 0xff3b3839, 0xff8b8888, 0xffd2d1d1, 0xfff3f3f3, 0xfffcfcfc, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xfffdfdfd, 0xfff4f4f4, 0xffd6d5d5, 0xff8f8d8e, 0xff403d3d, 0xff1d1819, 0xff211d1e, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff221d1e, 0xff4e4b4c, 0xffe2e1e1, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffe3e3e3, 0xff545152, 0xff211d1e, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20,
+ 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff211d1e, 0xff4f4b4c, 0xffdfdedf, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xff868384, 0xff211d1e, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff201c1d, 0xff2f2b2c, 0xff807d7d, 0xffe0e0e0, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xfffefefe, 0xffe3e3e3, 0xff858384, 0xff322e2f, 0xff201c1d, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff252122, 0xff7f7c7d, 0xfff8f8f8, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffe3e3e3, 0xff545152, 0xff211d1e, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20,
+ 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff211d1e, 0xff4e4b4c, 0xffdfdede, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffbab9b9, 0xff312d2e, 0xff221e1f, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff221e1f, 0xff272324, 0xff5b5858, 0xffc6c5c5, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffcbcbcb, 0xff5f5c5d, 0xff282425, 0xff221e1f, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff211d1e, 0xff332f30, 0xffb5b3b4, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffe5e4e4, 0xff555252, 0xff211c1e, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20,
+ 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff221e1f, 0xff423e3f, 0xffaaa8a9, 0xffc2c1c1, 0xffc0bebf, 0xffc0bfbf, 0xffc0bfbf, 0xffc0bfbf, 0xffc0bfbf, 0xffc0bfbf, 0xffc0bfbf, 0xffc0bfbf, 0xffc1bfbf, 0xffc1bfbf, 0xffc1bfbf, 0xffc1bfbf, 0xffc1bfbf, 0xffc1bfbf, 0xffc1bfc0, 0xffc1bfc0, 0xffc1c0c0, 0xffc1c0c0, 0xffc1c0c0, 0xffc1c0c0, 0xffc1c0c0, 0xffc1c0c0, 0xffc1c0c0, 0xffc1c0c0, 0xffc1c0c1, 0xffc1c0c1, 0xffc1c0c1, 0xffc1c0c1, 0xffc1c0c1, 0xffc2c1c1, 0xffc2c1c1, 0xffc2c1c1, 0xffc2c1c1, 0xffc2c1c1, 0xffc2c1c1, 0xffc2c1c1, 0xffc2c1c1, 0xffc3c1c2, 0xffc3c1c2, 0xffc3c2c2, 0xffc3c2c2, 0xffc3c2c2, 0xffc3c2c2, 0xffc3c2c2, 0xffc3c2c2, 0xffc3c2c2, 0xffc3c2c2, 0xffc3c2c3, 0xffc3c2c3, 0xffc3c2c3, 0xffc3c2c3, 0xffc3c2c3, 0xffc3c3c3, 0xffc3c3c3, 0xffc3c3c3, 0xffc4c3c3, 0xffc4c3c3, 0xffc4c3c3, 0xffc4c3c3, 0xffc4c3c3, 0xffc4c3c3, 0xffc5c3c4, 0xffc5c3c4, 0xffc5c4c4, 0xffc5c4c4, 0xffc5c4c4, 0xffc5c4c4, 0xffc5c4c4, 0xffc5c4c4, 0xffc5c4c4, 0xffc5c4c4, 0xffc5c4c4, 0xffc5c4c4, 0xffc5c4c4, 0xffc5c4c4, 0xffc5c4c4, 0xffc5c4c4, 0xffc5c4c4, 0xffc7c6c6, 0xffbab9ba, 0xff524f50, 0xff211d1e, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff201c1d, 0xff343031, 0xff888686, 0xffeaeaea, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xfff0f0f0, 0xff8f8e8e, 0xff383435, 0xff1f1b1c, 0xff221e1f, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff1f1a1b, 0xff535051, 0xffc0bfc0, 0xffd2d1d1, 0xffd1d1d1, 0xffd1d1d1, 0xffd1d1d1, 0xffd2d1d1, 0xffd2d1d1, 0xffd2d1d1, 0xffd2d1d1, 0xffd2d1d1, 0xffd3d2d2, 0xffd3d2d2, 0xffd3d2d2, 0xffd3d2d2, 0xffd3d2d3, 0xffd3d2d3, 0xffd3d2d3, 0xffd3d3d3, 0xffd3d3d3, 0xffd3d3d3, 0xffd4d3d3, 0xffd4d3d3, 0xffd3d3d3, 0xffd4d4d4, 0xffd5d4d4, 0xffd5d4d4, 0xffd5d4d4, 0xffd5d4d4, 0xffd5d4d4, 0xffd5d4d4, 0xffd5d4d4, 0xffd5d4d4, 0xffd5d4d5, 0xffd5d5d5, 0xffd5d5d5, 0xffd6d5d5, 0xffd6d5d6, 0xffd6d6d6, 0xffd6d6d6, 0xffd6d6d6, 0xffd7d6d6, 0xffd7d6d6, 0xffd7d6d6, 0xffd7d6d6, 0xffdad9d9, 0xffc3c2c2, 0xff4b4849, 0xff211d1e, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20,
+ 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff252122, 0xff2d292a, 0xff2e2b2c, 0xff2f2a2c, 0xff2f2b2c, 0xff2f2b2c, 0xff2f2b2c, 0xff2f2b2c, 0xff2f2b2c, 0xff2f2b2c, 0xff2f2b2c, 0xff2f2c2c, 0xff2f2c2c, 0xff2f2c2c, 0xff2f2c2d, 0xff2f2c2d, 0xff2f2c2d, 0xff2f2c2d, 0xff2f2c2d, 0xff302c2d, 0xff302c2d, 0xff302c2d, 0xff302c2d, 0xff302c2d, 0xff302c2d, 0xff302c2d, 0xff302c2d, 0xff302d2e, 0xff302d2e, 0xff302d2e, 0xff302d2e, 0xff302d2e, 0xff312d2e, 0xff312d2e, 0xff312d2e, 0xff312d2e, 0xff312d2e, 0xff312d2e, 0xff312d2e, 0xff312d2e, 0xff312d2e, 0xff312d2e, 0xff312e2f, 0xff312e2f, 0xff312e2f, 0xff312e2f, 0xff312e2f, 0xff322e2f, 0xff322e2f, 0xff322e2f, 0xff322e2f, 0xff322e2f, 0xff322e2f, 0xff322e2f, 0xff322e2f, 0xff322e2f, 0xff322e2f, 0xff322e2f, 0xff322e2f, 0xff322e2f, 0xff322e2f, 0xff322e2f, 0xff322e2f, 0xff322e2f, 0xff322f2f, 0xff322f30, 0xff322f30, 0xff322f30, 0xff322f30, 0xff322f30, 0xff332f30, 0xff332f30, 0xff332f30, 0xff332f30, 0xff332f30, 0xff332f30, 0xff332f30, 0xff332f30, 0xff333030, 0xff333030, 0xff343030, 0xff343031, 0xff2f2c2d, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff1c1819, 0xff413e3f, 0xffb2b1b2, 0xfffcfcfc, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xfffefffe, 0xffbbbaba, 0xff4b4748, 0xff1d191a, 0xff221e1f, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff221e1f, 0xff232021, 0xff373435, 0xff3e3a3b, 0xff3e3a3b, 0xff3e3a3b, 0xff3e3b3b, 0xff3e3b3b, 0xff3f3b3b, 0xff3f3b3c, 0xff3f3b3c, 0xff3f3c3c, 0xff3f3b3c, 0xff3f3b3d, 0xff3f3c3d, 0xff3f3c3d, 0xff403c3d, 0xff403c3d, 0xff403c3d, 0xff403c3d, 0xff403d3d, 0xff403d3e, 0xff403d3e, 0xff403d3e, 0xff403d3e, 0xff413d3e, 0xff413d3e, 0xff413d3e, 0xff413e3f, 0xff413e3f, 0xff413e3f, 0xff413e3f, 0xff413e3f, 0xff413e3f, 0xff423e3f, 0xff423e3f, 0xff423f3f, 0xff423f40, 0xff423f40, 0xff423f40, 0xff423f40, 0xff423f40, 0xff433f40, 0xff433f40, 0xff433f40, 0xff433f40, 0xff434041, 0xff3f3c3d, 0xff2a2627, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20,
+ 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff211d1e, 0xff211d1e, 0xff211d1e, 0xff211d1e, 0xff211d1e, 0xff211d1e, 0xff211d1e, 0xff211d1e, 0xff211d1e, 0xff211d1e, 0xff211d1e, 0xff211d1e, 0xff211d1e, 0xff211d1e, 0xff211d1e, 0xff211d1e, 0xff211d1e, 0xff211d1e, 0xff211d1e, 0xff211d1e, 0xff211d1e, 0xff211d1e, 0xff211d1e, 0xff211d1e, 0xff211d1e, 0xff211d1e, 0xff211d1e, 0xff211d1e, 0xff211d1e, 0xff211d1e, 0xff211d1e, 0xff211d1e, 0xff211d1e, 0xff211d1e, 0xff211d1e, 0xff211d1e, 0xff211d1e, 0xff211d1e, 0xff211d1e, 0xff211d1e, 0xff211d1e, 0xff211d1e, 0xff211d1e, 0xff211d1e, 0xff211d1e, 0xff211d1e, 0xff211d1e, 0xff211d1e, 0xff211d1e, 0xff211c1e, 0xff211c1d, 0xff211c1d, 0xff211c1d, 0xff211c1d, 0xff211c1d, 0xff211c1d, 0xff211c1d, 0xff211c1d, 0xff211c1d, 0xff211c1d, 0xff201c1d, 0xff201c1d, 0xff201c1d, 0xff201c1d, 0xff201c1d, 0xff201c1d, 0xff201c1d, 0xff201c1d, 0xff201c1d, 0xff201c1d, 0xff201c1d, 0xff201c1d, 0xff201c1d, 0xff201c1d, 0xff201c1d, 0xff201c1d, 0xff201c1d, 0xff201c1d, 0xff201c1d, 0xff201c1d, 0xff201c1d, 0xff211c1d, 0xff231e1f, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff1c1819, 0xff4f4c4d, 0xffcac8c8, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffcfcece, 0xff585556, 0xff1f1b1c, 0xff221e1f, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff201c1d, 0xff1f1b1c, 0xff1f1b1c, 0xff1f1b1c, 0xff1f1b1c, 0xff1f1b1c, 0xff1f1b1c, 0xff1f1b1c, 0xff1f1b1c, 0xff1f1b1c, 0xff1f1b1c, 0xff1f1b1c, 0xff1f1b1c, 0xff1f1b1c, 0xff1f1b1c, 0xff1f1b1c, 0xff1f1b1c, 0xff1f1b1c, 0xff1f1b1c, 0xff1f1b1c, 0xff1f1b1c, 0xff1f1b1c, 0xff1f1b1c, 0xff1f1b1c, 0xff1f1b1c, 0xff1f1b1c, 0xff1f1b1c, 0xff1f1b1c, 0xff1f1b1c, 0xff1f1b1c, 0xff1f1b1c, 0xff1f1b1c, 0xff1f1b1c, 0xff1f1b1c, 0xff1f1b1c, 0xff1f1b1c, 0xff1f1b1c, 0xff1f1b1c, 0xff1f1b1c, 0xff1f1b1c, 0xff1f1b1c, 0xff1f1b1c, 0xff1f1b1c, 0xff1f1b1c, 0xff1f1b1c, 0xff1f1b1c, 0xff221e1f, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20,
+ 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff1e1a1b, 0xff4f4c4d, 0xffd3d3d3, 0xfffefefe, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffd9d8d8, 0xff555152, 0xff201c1d, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20,
+ 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff242021, 0xff252122, 0xff252122, 0xff252122, 0xff252122, 0xff252122, 0xff252122, 0xff252122, 0xff252122, 0xff252122, 0xff252122, 0xff252122, 0xff252122, 0xff252122, 0xff252122, 0xff252122, 0xff252122, 0xff252122, 0xff252122, 0xff252122, 0xff252122, 0xff252122, 0xff252122, 0xff252122, 0xff252122, 0xff252122, 0xff252122, 0xff252122, 0xff252122, 0xff252122, 0xff252122, 0xff252122, 0xff252122, 0xff252122, 0xff252122, 0xff252122, 0xff252122, 0xff252122, 0xff252122, 0xff252122, 0xff252122, 0xff252122, 0xff252122, 0xff252122, 0xff252122, 0xff252122, 0xff252122, 0xff252122, 0xff252122, 0xff252122, 0xff252122, 0xff252122, 0xff252122, 0xff252122, 0xff252122, 0xff252122, 0xff252122, 0xff252122, 0xff252122, 0xff252122, 0xff252122, 0xff252122, 0xff252122, 0xff252122, 0xff252122, 0xff252122, 0xff252122, 0xff252122, 0xff252122, 0xff252122, 0xff252122, 0xff252122, 0xff252122, 0xff252122, 0xff252122, 0xff252122, 0xff252122, 0xff252122, 0xff252122, 0xff252122, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff211d1e, 0xff454242, 0xffcacaca, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffd1d1d1, 0xff464343, 0xff221e1f, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff221e1f, 0xff221e1f, 0xff221e1f, 0xff221e1f, 0xff221e1f, 0xff221e1f, 0xff221e1f, 0xff221e1f, 0xff221e1f, 0xff221e1f, 0xff221e1f, 0xff221e1f, 0xff221e1f, 0xff221e1f, 0xff221e1f, 0xff221e1f, 0xff221e1f, 0xff221e1f, 0xff221e1f, 0xff221e1f, 0xff221e1f, 0xff221e1f, 0xff221e1f, 0xff221e1f, 0xff221e1f, 0xff221e1f, 0xff221e1f, 0xff221e1f, 0xff221e1f, 0xff221e1f, 0xff221e1f, 0xff221e1f, 0xff221e1f, 0xff221e1f, 0xff221e1f, 0xff221e1f, 0xff221e1f, 0xff221e1f, 0xff221e1f, 0xff221e1f, 0xff221e1f, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20,
+ 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff221e1f, 0xff444041, 0xffa3a1a2, 0xffb6b4b5, 0xffb4b2b3, 0xffb4b2b3, 0xffb4b2b3, 0xffb4b2b3, 0xffb4b2b3, 0xffb4b2b3, 0xffb4b2b3, 0xffb4b2b3, 0xffb4b2b3, 0xffb4b2b3, 0xffb4b2b3, 0xffb4b2b3, 0xffb4b2b3, 0xffb4b2b3, 0xffb4b2b3, 0xffb4b2b3, 0xffb4b2b3, 0xffb4b2b3, 0xffb4b2b3, 0xffb4b2b3, 0xffb4b2b3, 0xffb4b2b3, 0xffb4b2b3, 0xffb4b2b3, 0xffb4b2b3, 0xffb4b2b3, 0xffb4b2b3, 0xffb4b2b3, 0xffb4b2b3, 0xffb4b2b3, 0xffb4b2b3, 0xffb4b2b3, 0xffb4b2b3, 0xffb4b2b3, 0xffb4b2b3, 0xffb4b2b3, 0xffb4b2b3, 0xffb4b2b3, 0xffb4b2b3, 0xffb4b2b3, 0xffb4b2b3, 0xffb4b2b3, 0xffb4b2b3, 0xffb4b2b3, 0xffb4b2b3, 0xffb4b2b3, 0xffb4b2b3, 0xffb4b2b3, 0xffb4b2b3, 0xffb4b2b3, 0xffb4b2b3, 0xffb4b2b3, 0xffb4b2b3, 0xffb4b2b3, 0xffb4b2b3, 0xffb4b2b3, 0xffb4b2b3, 0xffb4b2b3, 0xffb4b2b3, 0xffb4b2b3, 0xffb4b2b3, 0xffb4b2b3, 0xffb4b2b3, 0xffb4b2b3, 0xffb4b2b3, 0xffb4b2b3, 0xffb4b2b3, 0xffb4b2b3, 0xffb4b2b3, 0xffb4b2b3, 0xffb4b2b3, 0xffb4b2b3, 0xffb4b2b3, 0xffb4b2b3, 0xffb4b2b3, 0xffb4b2b3, 0xffb6b4b5, 0xff5b5859, 0xff1d191a, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff221e1f, 0xff373334, 0xffb8b7b7, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffc4c3c4, 0xff373334, 0xff201c1d, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff211d1e, 0xff464243, 0xffadabab, 0xffb0afaf, 0xffb0aeae, 0xffb0aeae, 0xffb0aeae, 0xffb0aeae, 0xffb0aeae, 0xffb0aeae, 0xffb0aeae, 0xffb0aeae, 0xffb0aeae, 0xffb0aeae, 0xffb0aeae, 0xffb0aeae, 0xffb0aeae, 0xffb0aeae, 0xffb0aeae, 0xffb0aeae, 0xffb0aeae, 0xffb0aeae, 0xffb0aeae, 0xffb0aeae, 0xffb0aeae, 0xffb0aeae, 0xffb0aeae, 0xffb0aeae, 0xffb0aeae, 0xffb0aeae, 0xffb0aeae, 0xffb0aeae, 0xffb0aeae, 0xffb0aeae, 0xffb0aeae, 0xffb0aeae, 0xffb0aeae, 0xffb0aeae, 0xffb0aeae, 0xffb0aeae, 0xffb0aeae, 0xffb0aeae, 0xffb0aeae, 0xffb1b0b0, 0xffa2a0a1, 0xff474445, 0xff221e1f, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20,
+ 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff211d1e, 0xff575454, 0xffeae9ea, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xfff1f1f1, 0xff464344, 0xff1d191a, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff221e1f, 0xff262223, 0xff928f90, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffa19fa0, 0xff262223, 0xff211d1e, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff221e1f, 0xff383435, 0xffdedddd, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xfff0efef, 0xff5e5b5c, 0xff211d1e, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20,
+ 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff211c1e, 0xff545152, 0xffe3e3e3, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffa6a5a5, 0xff1f1b1c, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff1d191a, 0xff696667, 0xfff4f4f4, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xfff8f8f8, 0xff7a7778, 0xff1d191a, 0xff221e1f, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff221e1f, 0xff8d8b8c, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffe9e8e8, 0xff5c5959, 0xff211d1e, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20,
+ 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff211d1e, 0xff545152, 0xffe3e3e3, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xfff9f9f9, 0xff585556, 0xff1e1a1b, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff1d191a, 0xff454143, 0xffdeddde, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffe3e2e2, 0xff535050, 0xff1d191a, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff221e1f, 0xff504c4d, 0xffe9e8e9, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffe9e8e8, 0xff5c5959, 0xff211d1e, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20,
+ 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff211d1e, 0xff545152, 0xffe3e3e3, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffc5c5c5, 0xff2c2829, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff221e1f, 0xff211d1e, 0xffadabab, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xfffdfdfd, 0xffb3b1b1, 0xff2a2627, 0xff211d1e, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff2f2b2c, 0xffb5b4b4, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffe9e8e8, 0xff5c5859, 0xff211d1e, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20,
+ 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff211d1e, 0xff545152, 0xffe3e3e3, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xff8e8b8c, 0xff211e1f, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff1c1819, 0xff5a5758, 0xfff0f0f0, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffebebeb, 0xff636161, 0xff1f1b1c, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff242021, 0xff838182, 0xfffdfdfd, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffe8e8e8, 0xff5b5859, 0xff211d1e, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20,
+ 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff211d1e, 0xff545152, 0xffe3e3e3, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xfff7f7f7, 0xff5b5959, 0xff221e1f, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff211d1e, 0xff2a2627, 0xffb2b1b2, 0xfffdfdfd, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffb2b0b0, 0xff312d2e, 0xff221e1f, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff211d1e, 0xff5c5959, 0xffe9e8e8, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffe8e8e8, 0xff5b5859, 0xff211d1e, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20,
+ 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff211d1e, 0xff545152, 0xffe3e3e3, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffd4d4d4, 0xff3c3839, 0xff221e1f, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff1e1a1b, 0xff5c5a5b, 0xffe9e9e9, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffecebec, 0xff5d5a5b, 0xff221d1e, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff211d1e, 0xff3d393a, 0xffcccbcb, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffe8e8e8, 0xff5b5859, 0xff211d1e, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20,
+ 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff211d1e, 0xff545152, 0xffe3e3e3, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffa9a7a8, 0xff2b2728, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff221e1f, 0xff252122, 0xff989696, 0xfffcfcfc, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xff979596, 0xff272324, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff221e1f, 0xff282325, 0xffa6a4a4, 0xfffefefe, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffe8e8e8, 0xff5b5859, 0xff211d1e, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20,
+ 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff211d1e, 0xff545152, 0xffe3e3e3, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xff828080, 0xff242021, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff211d1e, 0xff3d393a, 0xffcccacb, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffd3d2d2, 0xff3a3637, 0xff221e1f, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff201b1d, 0xff817f80, 0xfff6f6f6, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffe8e7e8, 0xff5b5859, 0xff211d1e, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20,
+ 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff211d1e, 0xff545152, 0xffe3e3e3, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xfff3f3f3, 0xff6a6767, 0xff221e1f, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff221e1f, 0xff666364, 0xfff1f1f1, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xfffcfcfc, 0xff666465, 0xff211d1e, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff1d191a, 0xff656263, 0xffeeeded, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffe8e7e8, 0xff5b5859, 0xff211d1e, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20,
+ 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff211d1e, 0xff545152, 0xffe3e3e3, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffe3e2e2, 0xff545152, 0xff211d1e, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff272224, 0xff908e8f, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xff9b9999, 0xff211d1e, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff1d191a, 0xff4c494a, 0xffe3e3e3, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffe8e7e8, 0xff5a5859, 0xff211d1e, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20,
+ 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff211d1e, 0xff545152, 0xffe3e3e3, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffd2d2d2, 0xff413d3e, 0xff211d1e, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff2e292a, 0xffb5b4b4, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffc4c2c3, 0xff292526, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff1f1b1c, 0xff373334, 0xffd1d0d0, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffe8e7e8, 0xff5a5859, 0xff211d1e, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20,
+ 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff211d1e, 0xff545152, 0xffe3e3e3, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffbebdbd, 0xff343031, 0xff211d1e, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff3d3a3a, 0xffd7d6d6, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffeae9e9, 0xff3b3838, 0xff201c1d, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff211d1e, 0xff262223, 0xffbdbcbc, 0xfffefefe, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffe8e7e7, 0xff5a5758, 0xff211d1e, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20,
+ 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff211d1e, 0xff545152, 0xffe3e3e3, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffb1afb0, 0xff2d292a, 0xff221e1f, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff221e1f, 0xff514d4e, 0xfff3f3f3, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xfffdfcfc, 0xff5a5758, 0xff1d191a, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff221e1f, 0xff211d1e, 0xffadabac, 0xfffdfdfd, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffe8e7e7, 0xff5a5758, 0xff211d1e, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20,
+ 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff211d1e, 0xff545152, 0xffe3e3e3, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffa9a8a8, 0xff292627, 0xff221e1f, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff211d1e, 0xff5f5c5d, 0xfffdfefd, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xff706e6f, 0xff1c1819, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff221e1f, 0xff201b1d, 0xffa2a0a0, 0xfffcfcfc, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffe8e7e7, 0xff5a5758, 0xff211d1e, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20,
+ 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff211d1e, 0xff545152, 0xffe3e3e3, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffa1a0a0, 0xff252122, 0xff221e1f, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff221e1f, 0xff6c6a6b, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xff7e7c7d, 0xff1a1617, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff221e1f, 0xff1e1a1b, 0xff979595, 0xfffcfcfc, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffe8e7e7, 0xff5a5758, 0xff211d1e, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20,
+ 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff211d1e, 0xff545152, 0xffe3e3e3, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xfffdfdfd, 0xff999798, 0xff221e1f, 0xff221e1f, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff211d1e, 0xff7b7879, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xff8d8b8b, 0xff191516, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff221e1f, 0xff1d1819, 0xff8c8a8b, 0xfffbfbfb, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffe8e7e7, 0xff5a5757, 0xff211d1e, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20,
+ 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff211d1e, 0xff545152, 0xffe3e3e3, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xfffbfbfb, 0xff929191, 0xff221e1f, 0xff221e1f, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff211d1e, 0xff868384, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xff989697, 0xff1b1618, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff1c1819, 0xff848182, 0xfffbfbfb, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffe7e7e7, 0xff5a5757, 0xff211d1e, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20,
+ 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff211d1e, 0xff545152, 0xffe3e3e3, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xfffcfcfc, 0xff969595, 0xff221e1f, 0xff221e1f, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff211d1e, 0xff827f80, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xff949292, 0xff1a1617, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff1c1819, 0xff888687, 0xfffbfbfb, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffe7e7e7, 0xff5a5757, 0xff211d1e, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20,
+ 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff211d1e, 0xff545152, 0xffe3e3e3, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xfffefefe, 0xff9e9d9d, 0xff241f21, 0xff221e1f, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff211d1e, 0xff777576, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xff8a8788, 0xff191516, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff221e1f, 0xff1d191a, 0xff929090, 0xfffbfbfb, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffe7e7e7, 0xff5a5757, 0xff211d1e, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20,
+ 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff211d1e, 0xff545152, 0xffe3e3e3, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffa5a3a5, 0xff272324, 0xff221e1f, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff211d1e, 0xff6a6768, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xff7c7a7a, 0xff1b1618, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff221e1f, 0xff1f1a1b, 0xff9b9a9a, 0xfffcfcfc, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffe7e7e7, 0xff5a5757, 0xff211d1e, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20,
+ 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff211d1e, 0xff545152, 0xffe3e3e3, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffadabab, 0xff2b2728, 0xff221e1f, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff211d1e, 0xff545051, 0xfff7f6f6, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xfffefefe, 0xff615e5e, 0xff1d191a, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff221e1f, 0xff201c1d, 0xffa4a3a4, 0xfffdfdfd, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffe7e7e7, 0xff5a5757, 0xff211d1e, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20,
+ 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff211d1e, 0xff545152, 0xffe3e3e3, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffb9b8b8, 0xff312e2e, 0xff211d1e, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff221e1f, 0xff444243, 0xffe2e2e2, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xfff5f5f5, 0xff444142, 0xff1f1b1c, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff221e1f, 0xff231f20, 0xffb5b4b4, 0xfffefefe, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffe7e6e6, 0xff5a5657, 0xff211d1e, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20,
+ 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff211d1e, 0xff545152, 0xffe3e3e3, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffcecdcd, 0xff3d393a, 0xff211d1e, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff353132, 0xffc9c7c8, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffdbdada, 0xff312e2f, 0xff211d1e, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff201c1d, 0xff2f2b2c, 0xffcbcaca, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffe7e6e6, 0xff595657, 0xff211d1e, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20,
+ 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff211d1e, 0xff545152, 0xffe3e3e3, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffdedddd, 0xff4c494a, 0xff211d1d, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff292526, 0xffa1a0a0, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffadacac, 0xff242021, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff1e1a1b, 0xff423f3f, 0xffdbdada, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffe7e6e6, 0xff595657, 0xff211d1e, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20,
+ 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff211d1e, 0xff545152, 0xffe3e3e3, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffececec, 0xff605d5d, 0xff211d1e, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff767374, 0xfffafafa, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xff7a7778, 0xff211d1e, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff1d191a, 0xff565354, 0xffe8e8e8, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffe7e6e6, 0xff595657, 0xff211d1e, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20,
+ 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff211d1e, 0xff545152, 0xffe3e3e3, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xfffafafa, 0xff767475, 0xff221f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff211d1e, 0xff4e4a4b, 0xffdfdede, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffe9e9e9, 0xff4a4748, 0xff221e1f, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff1e191b, 0xff6f6d6d, 0xfff1f0f0, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffe7e6e6, 0xff595657, 0xff211d1e, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20,
+ 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff211d1e, 0xff545152, 0xffe3e3e3, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xff9c9b9b, 0xff282526, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff221e1f, 0xff2e2a2b, 0xffb2b0b1, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffb5b3b4, 0xff2d292a, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff221e1f, 0xff231f20, 0xff969495, 0xfffbfbfb, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffe7e6e6, 0xff595657, 0xff211d1e, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20,
+ 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff211d1e, 0xff545152, 0xffe3e3e3, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffc6c5c5, 0xff343031, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff201c1d, 0xff797677, 0xfff3f3f3, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xfffafafa, 0xff777575, 0xff242021, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff211d1e, 0xff312e2f, 0xffbbbaba, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffe7e6e6, 0xff595657, 0xff211d1e, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20,
+ 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff211d1e, 0xff545152, 0xffe3e3e3, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffe9e8e9, 0xff4c4849, 0xff221e1f, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff1f1b1c, 0xff3c393a, 0xffd0cfcf, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffcfcece, 0xff413e3f, 0xff211d1e, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff201c1d, 0xff494646, 0xffdbdada, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffe7e6e6, 0xff595657, 0xff211d1e, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20,
+ 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff211d1e, 0xff545152, 0xffe3e3e3, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xff716e6f, 0xff211d1e, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff221e1f, 0xff1d1a1b, 0xff878585, 0xfffbfbfb, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xfff9f9f9, 0xff8a8989, 0xff231f20, 0xff221e1f, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff211d1e, 0xff6a6768, 0xfff1f1f1, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffe6e6e6, 0xff585656, 0xff211d1e, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20,
+ 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff211d1e, 0xff545152, 0xffe3e3e3, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffafadae, 0xff252123, 0xff231e20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff1f1b1c, 0xff373335, 0xffd2d2d2, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffd2d2d2, 0xff423e3f, 0xff1f1b1c, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff282425, 0xff9c9a9a, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffe6e6e6, 0xff585556, 0xff211d1e, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20,
+ 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff211d1e, 0xff545152, 0xffe3e3e3, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffebebeb, 0xff423f3f, 0xff201c1d, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff1d191a, 0xff686566, 0xfffafbfb, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xfff8f8f8, 0xff797677, 0xff1e1a1b, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff221e1f, 0xff3e3a3b, 0xffd4d3d3, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffe6e6e6, 0xff585556, 0xff211d1e, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20,
+ 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff211d1e, 0xff545152, 0xffe3e3e3, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xff838081, 0xff1c1819, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff221e1f, 0xff231f20, 0xffa7a5a6, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffbab9b9, 0xff292525, 0xff201c1d, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff221e1f, 0xff6a6768, 0xfffcfcfc, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffe6e5e6, 0xff585556, 0xff211d1e, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20,
+ 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff211d1e, 0xff545152, 0xffe3e3e3, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffcbcaca, 0xff292627, 0xff211d1e, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff201c1d, 0xff393536, 0xffcecdce, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffdbdbdb, 0xff434041, 0xff1d191a, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff262223, 0xffaeadad, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffe6e5e6, 0xff585556, 0xff211d1e, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20,
+ 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff211d1e, 0xff545152, 0xffe3e3e3, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xfffafafa, 0xff656264, 0xff1b1718, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff201c1d, 0xff595657, 0xffe2e2e2, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffececec, 0xff636162, 0xff1c1819, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff1f1b1c, 0xff4d4a4a, 0xffeeeeee, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffe6e5e6, 0xff585556, 0xff211d1e, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20,
+ 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff211d1e, 0xff545152, 0xffe3e3e3, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffc0bfbf, 0xff292525, 0xff201c1d, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff242021, 0xff71706f, 0xffebeaea, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xfff1f0f0, 0xff787576, 0xff221f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff221e1f, 0xff201c1d, 0xffa5a4a4, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffe6e5e5, 0xff585555, 0xff211d1e, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20,
+ 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff211d1e, 0xff545152, 0xffe3e3e3, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xfff2f2f2, 0xff676465, 0xff1c1718, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff221e1f, 0xff262223, 0xff7e7c7c, 0xfff2f2f2, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xfff4f4f4, 0xff827f80, 0xff282425, 0xff221e1f, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff1c1819, 0xff4d4a4b, 0xfff0f0f0, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffe6e5e5, 0xff585555, 0xff211d1e, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20,
+ 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff211d1e, 0xff545152, 0xffe3e3e3, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xfffefefe, 0xffb8b7b7, 0xff2b2729, 0xff211d1e, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff221e1f, 0xff242021, 0xff797777, 0xfff2f2f1, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xfff2f1f2, 0xff807e7f, 0xff282425, 0xff221e1f, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff221e1f, 0xff201b1c, 0xffa9a7a7, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffe6e5e5, 0xff585555, 0xff211d1e, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20,
+ 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff211d1e, 0xff545152, 0xffe3e3e3, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffefefef, 0xff6d6b6b, 0xff201c1d, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff221e1f, 0xff1e1a1b, 0xff6c696a, 0xffe7e7e7, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffeae9e9, 0xff777475, 0xff211d1e, 0xff221e1f, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff1c1819, 0xff5c595a, 0xfff0efef, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffe6e5e5, 0xff585455, 0xff211d1e, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20,
+ 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff211d1e, 0xff545152, 0xffe3e3e3, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffc4c3c4, 0xff3b3839, 0xff211d1e, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff221e1f, 0xff1c1819, 0xff4f4c4d, 0xffc4c3c3, 0xfffbfafb, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xfffbfbfb, 0xffcccacb, 0xff585656, 0xff1c1819, 0xff211d1e, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff201c1d, 0xff322e2f, 0xffbebdbd, 0xfffefefe, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffe6e5e5, 0xff585455, 0xff211d1e, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20,
+ 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff211d1e, 0xff545152, 0xffe3e3e3, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xfffbfbfb, 0xff858384, 0xff242021, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff1e1a1b, 0xff373435, 0xff929091, 0xffe1e0e0, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffe4e4e4, 0xff999797, 0xff3b3839, 0xff1c1819, 0xff221e1f, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff221e1f, 0xff221e1f, 0xff7d7a7a, 0xfff5f5f5, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffe5e5e5, 0xff575455, 0xff211d1e, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20,
+ 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff211d1e, 0xff545152, 0xffe3e3e3, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffe1e0e0, 0xff4e4b4c, 0xff201c1d, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff201b1c, 0xff252122, 0xff565354, 0xffa9a7a8, 0xffededed, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xfff0f0f0, 0xffaeacad, 0xff5a5758, 0xff272324, 0xff1f1b1c, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff201c1d, 0xff484546, 0xffd4d3d3, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffe5e5e5, 0xff575455, 0xff211d1e, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20,
+ 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff211d1e, 0xff545152, 0xffe3e3e3, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffc1c0c0, 0xff302d2e, 0xff201c1d, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff221e1f, 0xff211d1e, 0xff2d292a, 0xff575354, 0xffa5a4a4, 0xffebebeb, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffefefef, 0xffadabac, 0xff5b5959, 0xff2e2b2c, 0xff211d1e, 0xff221e1f, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff221e1f, 0xff2e2b2b, 0xffaeacad, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffe5e5e5, 0xff575455, 0xff211d1e, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20,
+ 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff211d1e, 0xff545152, 0xffe3e3e3, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xff9d9b9c, 0xff211d1e, 0xff221e1f, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff221e1f, 0xff272324, 0xff444142, 0xff838182, 0xffcac9ca, 0xfff2f2f2, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xfff3f3f4, 0xffcdcccd, 0xff888686, 0xff474444, 0xff282425, 0xff221e1f, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff211d1e, 0xff838182, 0xfffdfefe, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffe5e5e5, 0xff575455, 0xff211d1e, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20,
+ 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff211d1e, 0xff545152, 0xffe3e3e3, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xfff9fafa, 0xff747172, 0xff1e1a1b, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff201c1d, 0xff1e191a, 0xff272425, 0xff454243, 0xff767373, 0xffa3a1a2, 0xffc4c3c3, 0xffdddbdc, 0xffe7e6e6, 0xffebebeb, 0xffefefef, 0xffefefef, 0xffecebeb, 0xffe7e7e7, 0xffdedede, 0xffc5c4c5, 0xffa6a4a5, 0xff7a7777, 0xff494546, 0xff292526, 0xff1e1a1b, 0xff201c1d, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff1f1a1c, 0xff5c595a, 0xfff1f1f1, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffe5e4e5, 0xff575455, 0xff211d1e, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20,
+ 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff211d1e, 0xff545152, 0xffe3e3e3, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffe6e5e5, 0xff5f5c5d, 0xff201c1d, 0xff221e1f, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff221e1f, 0xff1e191a, 0xff1a1517, 0xff1d191a, 0xff242021, 0xff302c2d, 0xff413d3e, 0xff4a4747, 0xff524f50, 0xff535051, 0xff4b4748, 0xff423e3f, 0xff312e2e, 0xff252122, 0xff1e1a1b, 0xff1a1517, 0xff1d191a, 0xff211d1e, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231e20, 0xff1f1b1b, 0xff4e4c4c, 0xffdddcdc, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffe5e4e5, 0xff575455, 0xff211d1e, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20,
+ 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff211d1e, 0xff545152, 0xffe3e3e3, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffd7d7d7, 0xff565354, 0xff201c1d, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff211d1e, 0xff1f1b1c, 0xff1e1a1b, 0xff1d191a, 0xff1c1819, 0xff1c1819, 0xff1d1819, 0xff1e1a1b, 0xff1f1b1c, 0xff211d1e, 0xff221e1f, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff1d191a, 0xff4b4849, 0xffd0d0d0, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffe5e5e5, 0xff575455, 0xff211d1e, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20,
+ 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff211d1e, 0xff545152, 0xffe3e3e3, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffcccccc, 0xff4a4748, 0xff1f1b1c, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff1d191a, 0xff444041, 0xffc5c4c4, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffe5e5e4, 0xff565354, 0xff211d1e, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20,
+ 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff211d1e, 0xff545152, 0xffe3e3e3, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffcccbcb, 0xff484546, 0xff1e1a1b, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff1f1b1c, 0xff433f40, 0xffc1c0c0, 0xfffefefe, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffe5e5e4, 0xff565354, 0xff211d1e, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20,
+ 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff211d1e, 0xff545152, 0xffe3e3e3, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffdad9d9, 0xff504d4e, 0xff1d191a, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff201c1d, 0xff454243, 0xffcccacb, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffe5e4e4, 0xff565354, 0xff211d1e, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20,
+ 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff211d1e, 0xff545152, 0xffe3e3e3, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffe3e3e3, 0xff5e5c5c, 0xff211e1f, 0xff221e1f, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff221e1f, 0xff221d1e, 0xff504d4e, 0xffd6d6d6, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffe5e4e4, 0xff565354, 0xff211d1e, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20,
+ 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff211d1e, 0xff545152, 0xffe3e3e3, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffe9e9ea, 0xff7d7b7b, 0xff2e2a2b, 0xff201c1d, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff201c1d, 0xff2a2627, 0xff726f6f, 0xffe2e2e2, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffe5e4e4, 0xff565354, 0xff211d1e, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20,
+ 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff211d1e, 0xff545152, 0xffe3e3e3, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xfff6f5f6, 0xffa4a3a4, 0xff423e3f, 0xff1e1a1b, 0xff221e1f, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff221e1f, 0xff1d191a, 0xff3c3839, 0xff9b9a9a, 0xfff3f2f2, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffe5e4e4, 0xff565354, 0xff211d1e, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20,
+ 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff211d1e, 0xff545152, 0xffe3e3e3, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xfffefefe, 0xffcac9ca, 0xff666464, 0xff231e1f, 0xff1d191a, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff1f1b1c, 0xff211d1e, 0xff5d5b5b, 0xffc3c2c2, 0xfffbfbfb, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffe4e4e4, 0xff565354, 0xff211d1e, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20,
+ 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff211d1e, 0xff545152, 0xffe3e3e3, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xfff0efef, 0xffa9a8a9, 0xff433f40, 0xff1c1718, 0xff211d1e, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff211d1e, 0xff1b1718, 0xff393637, 0xff9d9c9c, 0xffececec, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffe4e4e4, 0xff565354, 0xff211d1e, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20,
+ 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff211d1e, 0xff545152, 0xffe3e3e3, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xfffefefe, 0xffe3e1e1, 0xff7e7b7b, 0xff2f2b2c, 0xff211d1e, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff201b1d, 0xff2b2628, 0xff737171, 0xffdcdcdc, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffe4e4e4, 0xff565354, 0xff211d1e, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20,
+ 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff211d1e, 0xff545152, 0xffe3e3e3, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffcccbcb, 0xff727070, 0xff363233, 0xff241f20, 0xff211d1e, 0xff221e1f, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff221e1f, 0xff221e1f, 0xff231f20, 0xff332f30, 0xff6b696a, 0xffc5c4c5, 0xfffdfdfd, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffe4e4e4, 0xff565354, 0xff211d1e, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20,
+ 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff211d1e, 0xff545152, 0xffe3e3e3, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffcac9ca, 0xff7d7a7b, 0xff484445, 0xff2b2728, 0xff201c1d, 0xff1f1b1c, 0xff211d1e, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff221e1f, 0xff1f1b1c, 0xff1f1b1c, 0xff2a2627, 0xff444142, 0xff767374, 0xffc3c2c2, 0xfffcfbfb, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffe4e4e4, 0xff565254, 0xff211d1e, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20,
+ 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff211d1e, 0xff545152, 0xffe3e3e3, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xfffdfcfd, 0xffdad9d9, 0xffa9a7a8, 0xff716e6f, 0xff413d3e, 0xff252122, 0xff1d191a, 0xff1b1718, 0xff1f1b1c, 0xff221d1f, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff221e1f, 0xff201c1d, 0xff1c1819, 0xff1d1819, 0xff242021, 0xff3d3a3b, 0xff6c6a6b, 0xffa4a2a3, 0xffd6d5d6, 0xfff9fafa, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffe4e4e4, 0xff565254, 0xff211d1e, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20,
+ 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff211d1e, 0xff545152, 0xffe3e3e3, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xfff1f1f1, 0xffd5d3d3, 0xffb0aeaf, 0xff838182, 0xff575455, 0xff322e30, 0xff221d1f, 0xff1c1819, 0xff191516, 0xff1b1718, 0xff1e1a1b, 0xff1f1b1c, 0xff201c1d, 0xff211d1e, 0xff211d1e, 0xff211d1e, 0xff211c1d, 0xff201c1d, 0xff1f1b1c, 0xff1e1a1b, 0xff1b1718, 0xff191516, 0xff1b1718, 0xff201c1d, 0xff302d2d, 0xff545253, 0xff7f7d7d, 0xffadabab, 0xffd2d1d1, 0xffefefef, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffe4e4e4, 0xff565253, 0xff211d1e, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20,
+ 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff211d1e, 0xff545152, 0xffe3e3e3, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xfffdfdfd, 0xfff8f8f8, 0xffeeeeee, 0xffd8d7d7, 0xffb7b6b6, 0xff989697, 0xff7a7778, 0xff5d595a, 0xff444041, 0xff363334, 0xff2f2c2d, 0xff2c2829, 0xff2a2526, 0xff292627, 0xff2c2829, 0xff2f2b2c, 0xff363234, 0xff413e3f, 0xff5b5758, 0xff777576, 0xff959494, 0xffb5b4b4, 0xffd5d5d5, 0xffededed, 0xfff8f7f7, 0xfffdfdfd, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffe4e4e3, 0xff565253, 0xff211d1e, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20,
+ 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff211d1e, 0xff545152, 0xffe3e3e3, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xfff9f9f9, 0xfff0f0f0, 0xffececec, 0xffe7e7e7, 0xffdedede, 0xffd4d3d3, 0xffd3d2d2, 0xffdddddc, 0xffe7e6e6, 0xffebebeb, 0xffefefef, 0xfff8f8f8, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffe4e4e4, 0xff555253, 0xff211d1e, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20,
+ 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff211d1e, 0xff545152, 0xffe3e3e3, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffe4e3e4, 0xff555253, 0xff211d1e, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20,
+ 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff211d1e, 0xff545152, 0xffe3e3e3, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffe4e3e4, 0xff555253, 0xff211d1e, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20,
+ 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff211c1d, 0xff555252, 0xffe4e3e3, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffe4e3e4, 0xff565253, 0xff211d1e, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20,
+ 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff211d1e, 0xff524f50, 0xffe2e1e2, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffe2e1e2, 0xff524f50, 0xff211d1e, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20,
+ 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff211d1e, 0xff484445, 0xffdad9d9, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffdad9d9, 0xff474445, 0xff211d1e, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20,
+ 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff211d1e, 0xff3d3a3b, 0xffd0cfd0, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffcfcfcf, 0xff3d3a3a, 0xff211d1e, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20,
+ 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff211d1e, 0xff363233, 0xffc1bfc0, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffbfbebe, 0xff343132, 0xff211d1e, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20,
+ 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff221e1f, 0xff272324, 0xff9e9c9d, 0xfffdfdfd, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xfffcfcfc, 0xff9d9b9b, 0xff272223, 0xff221e1f, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20,
+ 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff1e1a1b, 0xff6d6a6b, 0xfff0f0f0, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xfff0f0f0, 0xff6c696a, 0xff1e1a1b, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20,
+ 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff1f1b1c, 0xff403d3e, 0xffd9d8d8, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffd9d8d8, 0xff403c3d, 0xff1f1b1c, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20,
+ 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff221e1f, 0xff201c1d, 0xff969495, 0xfffcfcfc, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xfffcfcfc, 0xff959394, 0xff201b1d, 0xff221e1f, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20,
+ 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff1d191a, 0xff3e3a3b, 0xffdedddd, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffdddcdd, 0xff3d393a, 0xff1e1a1b, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20,
+ 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff1b1718, 0xff807e7f, 0xfffbfbfb, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xfffbfbfb, 0xff7e7c7c, 0xff1b1718, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20,
+ 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff211d1e, 0xff292526, 0xffa5a3a4, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffa2a1a1, 0xff282525, 0xff211d1e, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20,
+ 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff201c1d, 0xff363233, 0xffb9b8b8, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffb6b4b5, 0xff343132, 0xff201c1d, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20,
+ 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff211d1e, 0xff423e3f, 0xffb8b6b6, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffb3b2b2, 0xff3f3c3c, 0xff221e1f, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20,
+ 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff211d1e, 0xff353132, 0xffa4a3a4, 0xfffbfbfb, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xfffaf9fa, 0xffa09e9f, 0xff333031, 0xff221e1f, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20,
+ 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff201c1d, 0xff292526, 0xff7c7979, 0xffd9d9d9, 0xfffbfbfb, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xfffbfbfb, 0xffd7d5d6, 0xff777474, 0xff272324, 0xff201c1d, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20,
+ 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff211d1e, 0xff1b1617, 0xff3a3636, 0xff8e8c8d, 0xffd1d0d0, 0xffebebeb, 0xfffbfbfb, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xfffafafa, 0xffeaeaea, 0xffcecdce, 0xff8a8888, 0xff373333, 0xff1a1617, 0xff211d1e, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20,
+ 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff1f1b1c, 0xff1f1a1c, 0xff393536, 0xff625f60, 0xff929090, 0xffb2b0b1, 0xffc2c0c1, 0xffcecece, 0xffd7d6d6, 0xffd8d7d7, 0xffd8d7d7, 0xffd8d7d7, 0xffd8d7d7, 0xffd8d7d7, 0xffd8d7d7, 0xffd8d7d7, 0xffd8d7d7, 0xffd8d7d7, 0xffd8d7d7, 0xffd8d7d7, 0xffd8d7d7, 0xffd8d7d7, 0xffd8d7d7, 0xffd8d7d7, 0xffd8d7d7, 0xffd8d7d7, 0xffd8d7d7, 0xffd8d7d7, 0xffd8d7d7, 0xffd8d7d7, 0xffd8d7d7, 0xffd8d7d7, 0xffd8d7d7, 0xffd8d7d7, 0xffd8d7d7, 0xffd8d7d7, 0xffd8d7d7, 0xffd8d7d7, 0xffd8d7d7, 0xffd8d7d7, 0xffd8d7d7, 0xffd8d7d7, 0xffd8d7d7, 0xffd8d7d7, 0xffd8d7d7, 0xffd8d7d7, 0xffd8d7d7, 0xffd8d7d7, 0xffd8d7d7, 0xffd8d7d7, 0xffd8d7d7, 0xffd8d7d7, 0xffd8d7d7, 0xffd8d7d7, 0xffd8d7d7, 0xffd8d7d7, 0xffd8d7d7, 0xffd8d7d7, 0xffd8d7d7, 0xffd8d7d7, 0xffd8d7d7, 0xffd8d7d7, 0xffd8d7d7, 0xffd8d7d7, 0xffd8d7d7, 0xffd8d7d7, 0xffd8d7d7, 0xffd8d7d7, 0xffd8d7d7, 0xffd8d7d7, 0xffd8d7d7, 0xffd8d7d7, 0xffd8d7d7, 0xffd8d7d7, 0xffd8d7d7, 0xffd8d7d7, 0xffd8d7d7, 0xffd8d7d7, 0xffd8d7d7, 0xffd8d7d7, 0xffd8d7d7, 0xffd8d7d7, 0xffd8d7d7, 0xffd8d7d7, 0xffd8d7d7, 0xffd8d7d7, 0xffd8d7d7, 0xffd8d7d7, 0xffd8d7d7, 0xffd8d7d7, 0xffd8d7d7, 0xffd8d7d7, 0xffd8d7d7, 0xffd8d7d7, 0xffd8d7d7, 0xffd8d7d7, 0xffd8d7d7, 0xffd8d7d7, 0xffd8d7d7, 0xffd8d7d7, 0xffd8d7d7, 0xffd8d7d7, 0xffd8d7d7, 0xffd8d7d7, 0xffd8d7d7, 0xffd8d7d7, 0xffd8d7d7, 0xffd8d7d7, 0xffd8d7d7, 0xffd8d7d7, 0xffd8d7d7, 0xffd8d7d7, 0xffd8d7d7, 0xffd8d7d7, 0xffd8d7d7, 0xffd8d7d7, 0xffd8d7d7, 0xffd8d7d7, 0xffd8d7d7, 0xffd8d7d7, 0xffd8d7d7, 0xffd8d7d7, 0xffd8d7d7, 0xffd8d7d7, 0xffd8d7d7, 0xffd8d7d7, 0xffd8d7d7, 0xffd8d7d7, 0xffd8d7d7, 0xffd8d7d7, 0xffd8d7d7, 0xffd8d7d7, 0xffd8d7d7, 0xffd8d7d7, 0xffd8d7d7, 0xffd8d7d7, 0xffd8d7d7, 0xffd8d7d7, 0xffd8d7d7, 0xffd8d7d7, 0xffd8d7d7, 0xffd8d7d7, 0xffd8d7d7, 0xffd8d7d7, 0xffd8d7d7, 0xffd8d7d7, 0xffd8d7d7, 0xffd8d7d7, 0xffd8d7d7, 0xffd8d7d7, 0xffd8d7d7, 0xffd8d7d7, 0xffd8d7d7, 0xffd8d7d7, 0xffd8d7d7, 0xffd8d7d7, 0xffd8d7d7, 0xffd8d7d7, 0xffd8d7d7, 0xffd8d7d7, 0xffd8d7d7, 0xffd8d7d7, 0xffd8d7d7, 0xffd8d7d7, 0xffd8d7d7, 0xffd8d7d7, 0xffd8d7d7, 0xffd8d7d7, 0xffd8d7d7, 0xffd8d7d7, 0xffd8d7d7, 0xffd8d7d7, 0xffd8d7d7, 0xffd8d7d7, 0xffd8d7d7, 0xffd8d7d7, 0xffd8d7d7, 0xffd8d7d7, 0xffd8d7d7, 0xffd7d6d6, 0xffcecdcd, 0xffc0bfc0, 0xffb1afb0, 0xff908e8e, 0xff605c5d, 0xff373334, 0xff1e1a1b, 0xff1f1b1c, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20,
+ 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff221e1f, 0xff201c1d, 0xff1e1a1b, 0xff242021, 0xff2e2a2b, 0xff363233, 0xff3d393a, 0xff434041, 0xff454242, 0xff454142, 0xff454142, 0xff454142, 0xff454142, 0xff454142, 0xff454142, 0xff454142, 0xff454142, 0xff454142, 0xff454142, 0xff454142, 0xff454142, 0xff454142, 0xff454142, 0xff454142, 0xff454142, 0xff454142, 0xff454142, 0xff454142, 0xff454142, 0xff454142, 0xff454142, 0xff454142, 0xff454142, 0xff454142, 0xff454142, 0xff454142, 0xff454142, 0xff454142, 0xff454142, 0xff454142, 0xff454142, 0xff454142, 0xff454142, 0xff454142, 0xff454142, 0xff454142, 0xff454142, 0xff454142, 0xff454142, 0xff454142, 0xff454142, 0xff454142, 0xff454142, 0xff454142, 0xff454142, 0xff454142, 0xff454142, 0xff454142, 0xff454142, 0xff454142, 0xff454142, 0xff454142, 0xff454142, 0xff454142, 0xff454142, 0xff454142, 0xff454142, 0xff454142, 0xff454142, 0xff454142, 0xff454142, 0xff454142, 0xff454142, 0xff454142, 0xff454142, 0xff454142, 0xff454142, 0xff454142, 0xff454142, 0xff454142, 0xff454142, 0xff454142, 0xff454142, 0xff454142, 0xff454142, 0xff454142, 0xff454142, 0xff454142, 0xff454142, 0xff454142, 0xff454142, 0xff454142, 0xff454142, 0xff454142, 0xff454142, 0xff454142, 0xff454142, 0xff454142, 0xff454142, 0xff454142, 0xff454142, 0xff454142, 0xff454142, 0xff454142, 0xff454142, 0xff454142, 0xff454142, 0xff454142, 0xff454142, 0xff454142, 0xff454142, 0xff454142, 0xff454142, 0xff454142, 0xff454142, 0xff454142, 0xff454142, 0xff454142, 0xff454142, 0xff454142, 0xff454142, 0xff454142, 0xff454142, 0xff454142, 0xff454142, 0xff454142, 0xff454142, 0xff454142, 0xff454142, 0xff454142, 0xff454142, 0xff454142, 0xff454142, 0xff454142, 0xff454142, 0xff454142, 0xff454142, 0xff454142, 0xff454142, 0xff454142, 0xff454142, 0xff454142, 0xff454142, 0xff454142, 0xff454142, 0xff454142, 0xff454142, 0xff454142, 0xff454142, 0xff454142, 0xff454142, 0xff454142, 0xff454142, 0xff454142, 0xff454142, 0xff454142, 0xff454142, 0xff454142, 0xff454142, 0xff454142, 0xff454142, 0xff454142, 0xff454142, 0xff454142, 0xff454142, 0xff454142, 0xff454142, 0xff454142, 0xff454142, 0xff454142, 0xff454142, 0xff454142, 0xff454142, 0xff454142, 0xff454142, 0xff454142, 0xff454142, 0xff454242, 0xff434041, 0xff3c393a, 0xff363233, 0xff2e2a2b, 0xff231f20, 0xff1e1a1b, 0xff201c1d, 0xff221e1f, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20,
+ 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff221e1f, 0xff221e1f, 0xff211d1e, 0xff211d1e, 0xff211d1e, 0xff211d1e, 0xff211d1e, 0xff211d1e, 0xff211d1e, 0xff211d1e, 0xff211d1e, 0xff211d1e, 0xff211d1e, 0xff211d1e, 0xff211d1e, 0xff211d1e, 0xff211d1e, 0xff211d1e, 0xff211d1e, 0xff211d1e, 0xff211d1e, 0xff211d1e, 0xff211d1e, 0xff211d1e, 0xff211d1e, 0xff211d1e, 0xff211d1e, 0xff211d1e, 0xff211d1e, 0xff211d1e, 0xff211d1e, 0xff211d1e, 0xff211d1e, 0xff211d1e, 0xff211d1e, 0xff211d1e, 0xff211d1e, 0xff211d1e, 0xff211d1e, 0xff211d1e, 0xff211d1e, 0xff211d1e, 0xff211d1e, 0xff211d1e, 0xff211d1e, 0xff211d1e, 0xff211d1e, 0xff211d1e, 0xff211d1e, 0xff211d1e, 0xff211d1e, 0xff211d1e, 0xff211d1e, 0xff211d1e, 0xff211d1e, 0xff211d1e, 0xff211d1e, 0xff211d1e, 0xff211d1e, 0xff211d1e, 0xff211d1e, 0xff211d1e, 0xff211d1e, 0xff211d1e, 0xff211d1e, 0xff211d1e, 0xff211d1e, 0xff211d1e, 0xff211d1e, 0xff211d1e, 0xff211d1e, 0xff211d1e, 0xff211d1e, 0xff211d1e, 0xff211d1e, 0xff211d1e, 0xff211d1e, 0xff211d1e, 0xff211d1e, 0xff211d1e, 0xff211d1e, 0xff211d1e, 0xff211d1e, 0xff211d1e, 0xff211d1e, 0xff211d1e, 0xff211d1e, 0xff211d1e, 0xff211d1e, 0xff211d1e, 0xff211d1e, 0xff211d1e, 0xff211d1e, 0xff211d1e, 0xff211d1e, 0xff211d1e, 0xff211d1e, 0xff211d1e, 0xff211d1e, 0xff211d1e, 0xff211d1e, 0xff211d1e, 0xff211d1e, 0xff211d1e, 0xff211d1e, 0xff211d1e, 0xff211d1e, 0xff211d1e, 0xff211d1e, 0xff211d1e, 0xff211d1e, 0xff211d1e, 0xff211d1e, 0xff211d1e, 0xff211d1e, 0xff211d1e, 0xff211d1e, 0xff211d1e, 0xff211d1e, 0xff211d1e, 0xff211d1e, 0xff211d1e, 0xff211d1e, 0xff211d1e, 0xff211d1e, 0xff211d1e, 0xff211d1e, 0xff211d1e, 0xff211d1e, 0xff211d1e, 0xff211d1e, 0xff211d1e, 0xff211d1e, 0xff211d1e, 0xff211d1e, 0xff211d1e, 0xff211d1e, 0xff211d1e, 0xff211d1e, 0xff211d1e, 0xff211d1e, 0xff211d1e, 0xff211d1e, 0xff211d1e, 0xff211d1e, 0xff211d1e, 0xff211d1e, 0xff211d1e, 0xff211d1e, 0xff211d1e, 0xff211d1e, 0xff211d1e, 0xff211d1e, 0xff211d1e, 0xff211d1e, 0xff211d1e, 0xff211d1e, 0xff211d1e, 0xff211d1e, 0xff211d1e, 0xff211d1e, 0xff211d1e, 0xff211d1e, 0xff211d1e, 0xff211d1e, 0xff211d1e, 0xff211d1e, 0xff211d1e, 0xff211d1e, 0xff211d1e, 0xff211d1e, 0xff211d1e, 0xff211d1e, 0xff211d1e, 0xff211d1e, 0xff211d1e, 0xff211d1e, 0xff211d1e, 0xff221e1f, 0xff221e1f, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20,
+ 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20,
+ 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20,
+ 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20,
+ 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20,
+ 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20,
+ 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20,
+ 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff232021, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff232020, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff232020, 0xff232021, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff232021, 0xff232021, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20,
+ 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff252122, 0xff252122, 0xff252122, 0xff262223, 0xff242021, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff1f1b1c, 0xff393536, 0xffa1a0a0, 0xffb3b2b3, 0xffb1b0b0, 0xff726f70, 0xff221e1f, 0xff221e1f, 0xff231f20, 0xff231f20, 0xff231f20, 0xff1f1b1c, 0xff4c4849, 0xffa9a7a7, 0xffb3b2b2, 0xffb2b0b0, 0xff5b5859, 0xff1d191a, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff221e1f, 0xff231f20, 0xff787576, 0xffb4b2b2, 0xffb4b2b3, 0xffa09e9f, 0xff312d2e, 0xff201c1d, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff221e1f, 0xff242021, 0xff8c8a8b, 0xffb5b3b3, 0xffb4b2b3, 0xff898788, 0xff2e2a2b, 0xff211d1e, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20,
+ 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff201c1d, 0xff322e2f, 0xff807d7e, 0xff8d8b8c, 0xff8d8b8b, 0xff8e8c8d, 0xff625f60, 0xff262323, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff1d191a, 0xff464343, 0xffebebeb, 0xffffffff, 0xffffffff, 0xffa09e9f, 0xff211d1e, 0xff221e1f, 0xff231f20, 0xff231f20, 0xff231f20, 0xff1d191a, 0xff646162, 0xfff3f3f3, 0xffffffff, 0xffffffff, 0xff7c7a7b, 0xff1a1617, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff221e1f, 0xff232021, 0xffa9a7a7, 0xffffffff, 0xffffffff, 0xffe8e8e8, 0xff393536, 0xff1f1b1c, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff211d1e, 0xff252022, 0xffcac9ca, 0xffffffff, 0xffffffff, 0xffc5c4c5, 0xff343132, 0xff211d1e, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20,
+ 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff1c1819, 0xff6b6869, 0xfff4f4f4, 0xffffffff, 0xffffffff, 0xffffffff, 0xffcbcaca, 0xff3b3839, 0xff221e1f, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff1d191a, 0xff454142, 0xffe5e5e5, 0xffffffff, 0xfffbfbfb, 0xff9b999a, 0xff211d1e, 0xff221e1f, 0xff231f20, 0xff231f20, 0xff231f20, 0xff1d191a, 0xff615f5f, 0xffedecec, 0xffffffff, 0xfffafafa, 0xff797778, 0xff1a1617, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff221e1f, 0xff232021, 0xffa5a3a3, 0xfffefefe, 0xffffffff, 0xffe2e2e2, 0xff383535, 0xff1f1b1c, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff211d1e, 0xff242022, 0xffc4c2c4, 0xffffffff, 0xffffffff, 0xffc0bfbf, 0xff333031, 0xff211d1e, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20,
+ 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff211d1e, 0xff262223, 0xffacabab, 0xfffdfdfd, 0xffffffff, 0xffffffff, 0xffffffff, 0xfff6f5f5, 0xff666364, 0xff221e1f, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff1d191a, 0xff464343, 0xffebebea, 0xffffffff, 0xffffffff, 0xffa09e9e, 0xff211d1e, 0xff221e1f, 0xff231f20, 0xff231f20, 0xff231f20, 0xff1d191a, 0xff615f5f, 0xffedecec, 0xffffffff, 0xfffafafa, 0xff797778, 0xff1a1617, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff221e1f, 0xff232021, 0xffa5a3a3, 0xfffefefe, 0xffffffff, 0xffe2e2e2, 0xff383535, 0xff1f1b1c, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff211d1e, 0xff242022, 0xffc4c3c4, 0xffffffff, 0xffffffff, 0xffc0bfbf, 0xff333031, 0xff211d1e, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20,
+ 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff1f1b1c, 0xff4a4747, 0xffdddcdc, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffa6a4a5, 0xff282425, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff1f1b1c, 0xff393536, 0xffa4a2a3, 0xffb6b4b5, 0xffb4b2b3, 0xff727071, 0xff211e1f, 0xff221e1f, 0xff231f20, 0xff231f20, 0xff231f20, 0xff1d191a, 0xff615f5f, 0xffedecec, 0xffffffff, 0xfffafafa, 0xff797778, 0xff1a1617, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff221e1f, 0xff232021, 0xffa5a3a3, 0xfffefefe, 0xffffffff, 0xffe2e2e2, 0xff383535, 0xff1f1b1c, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff211d1e, 0xff242022, 0xffc4c3c4, 0xffffffff, 0xffffffff, 0xffc0bfbf, 0xff333031, 0xff211d1e, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20,
+ 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff211e1f, 0xff7e7c7e, 0xfff6f6f6, 0xffffffff, 0xfff8f8f8, 0xffd8d7d7, 0xfffdfdfd, 0xffffffff, 0xffe4e3e3, 0xff413d3e, 0xff221e1f, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff242021, 0xff242021, 0xff241f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff1d191a, 0xff615f5f, 0xffedecec, 0xffffffff, 0xfffafafa, 0xff797778, 0xff1a1617, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff221e1f, 0xff232021, 0xffa5a3a3, 0xfffefefe, 0xffffffff, 0xffe2e2e2, 0xff383535, 0xff1f1b1c, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff211d1e, 0xff242022, 0xffc4c3c4, 0xffffffff, 0xffffffff, 0xffc0bfbf, 0xff333031, 0xff211d1e, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20,
+ 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff221e1f, 0xff322e2f, 0xffb8b7b7, 0xffffffff, 0xffffffff, 0xffd7d7d7, 0xff656263, 0xfff0f0f0, 0xffffffff, 0xffffffff, 0xff7c797a, 0xff1f1b1c, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff221e1f, 0xff221e1f, 0xff211d1e, 0xff211d1e, 0xff211d1e, 0xff211d1e, 0xff211d1e, 0xff221e1f, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff221e1f, 0xff221e1f, 0xff221e1f, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff1d191a, 0xff615f5f, 0xffedecec, 0xffffffff, 0xfffafafa, 0xff797778, 0xff1a1617, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff221e1f, 0xff221e1f, 0xff211d1e, 0xff211d1e, 0xff211d1e, 0xff211d1e, 0xff211d1e, 0xff221e1f, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff221e1f, 0xff232021, 0xffa5a3a3, 0xfffefefe, 0xffffffff, 0xffe2e2e2, 0xff383535, 0xff1f1b1c, 0xff231f20, 0xff231f20, 0xff221e1f, 0xff211d1e, 0xff211c1d, 0xff211d1e, 0xff211d1e, 0xff221e1f, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff211d1e, 0xff242022, 0xffc4c3c4, 0xffffffff, 0xffffffff, 0xffc0bfbf, 0xff333031, 0xff211d1e, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff221e1f, 0xff221e1f, 0xff211d1e, 0xff211d1e, 0xff211d1e, 0xff211d1e, 0xff221e1f, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20,
+ 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff221e1f, 0xff555353, 0xffe7e7e6, 0xffffffff, 0xffffffff, 0xff939292, 0xff2c2829, 0xffc3c1c2, 0xffffffff, 0xffffffff, 0xffc7c6c6, 0xff292627, 0xff221e1f, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff211d1e, 0xff211d1e, 0xff211d1e, 0xff221e1f, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff211d1e, 0xff211d1e, 0xff211d1e, 0xff221e1e, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff221e1f, 0xff1f1b1c, 0xff1d191a, 0xff211d1e, 0xff282425, 0xff343031, 0xff3b3738, 0xff3e3a3b, 0xff3a3738, 0xff353132, 0xff282425, 0xff201b1d, 0xff1f1b1c, 0xff221e1f, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff211d1e, 0xff211d1e, 0xff211d1e, 0xff221e1f, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff1d191a, 0xff615f5f, 0xffedecec, 0xffffffff, 0xfffafafa, 0xff797778, 0xff1a1617, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff211d1e, 0xff1e1a1b, 0xff1f1a1b, 0xff242021, 0xff2e2a2b, 0xff383435, 0xff3d393a, 0xff3d393a, 0xff383536, 0xff2f2c2d, 0xff221f20, 0xff1e1a1b, 0xff211d1e, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff221e1f, 0xff232021, 0xffa5a3a3, 0xfffefefe, 0xffffffff, 0xffe2e2e2, 0xff383535, 0xff1f1a1c, 0xff1f1b1c, 0xff201c1d, 0xff2c282a, 0xff393637, 0xff3e3a3b, 0xff3c3839, 0xff312d2e, 0xff231f20, 0xff1f1b1c, 0xff221e1f, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff211d1e, 0xff242022, 0xffc4c3c4, 0xffffffff, 0xffffffff, 0xffc0bfbf, 0xff333031, 0xff211d1e, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff211d1e, 0xff1e1a1b, 0xff211d1e, 0xff2c292a, 0xff383535, 0xff3d3a3a, 0xff3e3a3b, 0xff373435, 0xff2b2728, 0xff201c1d, 0xff1f1b1c, 0xff221e1f, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20,
+ 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff252122, 0xff8d8b8c, 0xffffffff, 0xffffffff, 0xfff3f4f4, 0xff4d494b, 0xff201c1d, 0xff868485, 0xfffefefe, 0xffffffff, 0xfff9f8f8, 0xff585556, 0xff1c1819, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff454243, 0xff8a8889, 0xff8b8989, 0xff8b898a, 0xff464344, 0xff1f1b1c, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff211d1e, 0xff565354, 0xff8d8b8c, 0xff8b8a89, 0xff848283, 0xff363233, 0xff221e1f, 0xff231f20, 0xff231f20, 0xff231f20, 0xff211d1f, 0xff373334, 0xff5f5c5d, 0xff878586, 0xffa8a7a7, 0xffbebcbd, 0xffcbc9ca, 0xffd0d0d0, 0xffcbcaca, 0xffbfbebe, 0xffa6a4a4, 0xff7b7879, 0xff3f3c3d, 0xff1e1a1b, 0xff221d1e, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff211c1d, 0xff332f30, 0xff7d7b7c, 0xff8a8888, 0xff898787, 0xff5b5858, 0xff221e1f, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff1d191a, 0xff615f5f, 0xffedecec, 0xffffffff, 0xfffafafa, 0xff797778, 0xff1a1617, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff211d1e, 0xff282425, 0xff4a4647, 0xff727070, 0xff999797, 0xffb3b1b2, 0xffc5c4c4, 0xffcfcece, 0xffcfcdce, 0xffc6c5c5, 0xffb6b4b5, 0xff939292, 0xff5f5d5d, 0xff2b2728, 0xff1e1a1b, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff221e1f, 0xff232021, 0xffa5a3a3, 0xfffefefe, 0xffffffff, 0xffe2e2e2, 0xff373434, 0xff1a1617, 0xff3c3839, 0xff7d7b7b, 0xffaeadad, 0xffc7c6c7, 0xffd1d0d0, 0xffcccbcb, 0xffb9b8b8, 0xff8f8d8e, 0xff4d494a, 0xff1f1b1c, 0xff201c1d, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff211d1e, 0xff242022, 0xffc4c3c4, 0xffffffff, 0xffffffff, 0xffc0bfbf, 0xff333031, 0xff211d1e, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff1f1b1c, 0xff242021, 0xff514d4e, 0xff8a8788, 0xffb0aeaf, 0xffc5c4c4, 0xffcfcece, 0xffd0cfcf, 0xffc5c4c4, 0xffacabab, 0xff807d7e, 0xff423f40, 0xff1d1a1b, 0xff211d1e, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20,
+ 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff221e1f, 0xff363233, 0xffcdcccc, 0xffffffff, 0xffffffff, 0xffbdbcbc, 0xff272324, 0xff201c1d, 0xff524f50, 0xffe3e2e3, 0xffffffff, 0xffffffff, 0xffa4a2a2, 0xff1e191a, 0xff221e1f, 0xff231f20, 0xff231f20, 0xff231f20, 0xff221e1f, 0xff4e4b4b, 0xffe1e0e0, 0xfffcfcfc, 0xfffefefe, 0xff9d9b9c, 0xff1e1a1b, 0xff231e1f, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff221e1f, 0xff282425, 0xffbab9b9, 0xfffefefe, 0xfffefefe, 0xffcccbcb, 0xff363233, 0xff231f20, 0xff231f20, 0xff221e1f, 0xff221d1f, 0xff7e7c7d, 0xffcfcece, 0xffeaeaea, 0xfff7f7f8, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xfffefefe, 0xfff5f5f5, 0xffd7d7d7, 0xff7c7a7b, 0xff221f20, 0xff211d1e, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff1e191a, 0xff434041, 0xffdfdedf, 0xfff9f8f8, 0xfff5f5f5, 0xff989697, 0xff211d1e, 0xff221e1f, 0xff231f20, 0xff231f20, 0xff231f20, 0xff1d191a, 0xff615f5f, 0xffedecec, 0xffffffff, 0xfffafafa, 0xff797778, 0xff1a1617, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff211d1e, 0xff413e3e, 0xffabaaaa, 0xffdfdfdf, 0xfff1f1f1, 0xfffcfcfc, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xfffbfbfb, 0xffebebeb, 0xffb4b3b3, 0xff454142, 0xff1e1a1b, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff221e1f, 0xff232021, 0xffa5a3a3, 0xfffefefe, 0xffffffff, 0xffe2e2e2, 0xff363334, 0xff585556, 0xffcac9c9, 0xfff5f4f5, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xfffafafa, 0xffdfdede, 0xff858283, 0xff252223, 0xff201c1d, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff211d1e, 0xff242022, 0xffc4c3c4, 0xffffffff, 0xffffffff, 0xffc0bfbf, 0xff333031, 0xff211d1e, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff1e1a1b, 0xff393536, 0xff9f9d9d, 0xffe3e2e3, 0xfff9f8f9, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xfff6f5f6, 0xffd7d6d6, 0xff7c7a7a, 0xff252021, 0xff201c1d, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20,
+ 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff201c1d, 0xff625f60, 0xfffbfbfb, 0xffffffff, 0xffffffff, 0xff757374, 0xff1f1b1c, 0xff221e1f, 0xff302c2d, 0xffb6b5b5, 0xffffffff, 0xffffffff, 0xffe3e3e3, 0xff3b3738, 0xff1e1a1b, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff302c2d, 0xffb4b3b3, 0xffffffff, 0xffffffff, 0xffe2e2e2, 0xff363233, 0xff1f1b1c, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff1f1b1c, 0xff4d4a4b, 0xfff5f5f5, 0xffffffff, 0xffffffff, 0xff929090, 0xff252223, 0xff231f20, 0xff231f20, 0xff211d1e, 0xff231f20, 0xffb7b7b7, 0xfffefefe, 0xffffffff, 0xffffffff, 0xffffffff, 0xfff8f8f8, 0xfff3f3f4, 0xfff2f2f2, 0xfff6f6f6, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xfff8f8f8, 0xff949393, 0xff221d1e, 0xff221e1f, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff1d191a, 0xff454142, 0xffe5e5e5, 0xffffffff, 0xfffbfbfb, 0xff9b9a9a, 0xff211d1e, 0xff221e1f, 0xff231f20, 0xff231f20, 0xff231f20, 0xff1d191a, 0xff615f5f, 0xffedecec, 0xffffffff, 0xfffafafa, 0xff797778, 0xff1a1617, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff201c1d, 0xff585556, 0xffe5e4e4, 0xffffffff, 0xffffffff, 0xffffffff, 0xfffcfcfc, 0xfff5f6f5, 0xfff2f2f3, 0xfff3f3f3, 0xfffbfafb, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffd8d7d7, 0xff484445, 0xff1e1a1b, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff221e1f, 0xff232021, 0xffa5a3a3, 0xfffefefe, 0xffffffff, 0xffe2e1e1, 0xff6b6869, 0xffdadada, 0xffffffff, 0xffffffff, 0xfff9faf9, 0xfff1f1f1, 0xfff2f2f2, 0xfffcfcfc, 0xffffffff, 0xffffffff, 0xffffffff, 0xfff5f4f5, 0xff918f90, 0xff262122, 0xff211d1e, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff211d1e, 0xff242022, 0xffc4c3c4, 0xffffffff, 0xffffffff, 0xffc0bfbf, 0xff333031, 0xff211d1e, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff1d191a, 0xff444142, 0xffcdcccd, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xfff9f9f9, 0xfff3f3f3, 0xfff3f3f3, 0xfffcfcfc, 0xffffffff, 0xffffffff, 0xffffffff, 0xfff4f3f4, 0xff929091, 0xff272324, 0xff211d1e, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20,
+ 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xffa9a8a9, 0xffffffff, 0xffffffff, 0xffe0dfdf, 0xff403c3d, 0xff221e1f, 0xff231f20, 0xff201c1d, 0xff7e7c7c, 0xfff5f5f5, 0xffffffff, 0xfffcfcfc, 0xff7b787a, 0xff1b1718, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff221e1f, 0xff797878, 0xfff7f7f7, 0xffffffff, 0xffffffff, 0xff747272, 0xff1a1617, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff1c1819, 0xff949293, 0xffffffff, 0xffffffff, 0xffebeaeb, 0xff585455, 0xff221e1f, 0xff231f20, 0xff231f20, 0xff211d1e, 0xff231f20, 0xffb8b6b7, 0xfff7f7f7, 0xffd5d5d5, 0xff9c9b9b, 0xff6f6d6d, 0xff514e4f, 0xff413e3f, 0xff3e3a3b, 0xff4b4849, 0xff726f70, 0xffb6b5b5, 0xfff2f2f2, 0xffffffff, 0xffffffff, 0xfff5f5f5, 0xff6f6c6d, 0xff1e1a1b, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff1d191a, 0xff454142, 0xffe5e5e5, 0xffffffff, 0xfffbfbfb, 0xff9b999a, 0xff211d1e, 0xff221e1f, 0xff231f20, 0xff231f20, 0xff231f20, 0xff1d191a, 0xff615f5f, 0xffedecec, 0xffffffff, 0xfffafafa, 0xff797778, 0xff1a1617, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff201c1d, 0xff595656, 0xffe4e4e4, 0xffedecec, 0xffbbbaba, 0xff848282, 0xff5f5d5d, 0xff484445, 0xff3e3a3b, 0xff423e3f, 0xff5a5758, 0xff8e8c8d, 0xffd8d8d8, 0xfffdfdfd, 0xffffffff, 0xffffffff, 0xffc5c4c4, 0xff2e2a2b, 0xff201c1d, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff221e1f, 0xff232021, 0xffa5a3a3, 0xfffefefe, 0xffffffff, 0xfff0f0f0, 0xffd7d7d7, 0xffffffff, 0xffeeeded, 0xff9e9c9c, 0xff575354, 0xff3a3738, 0xff3d3a3b, 0xff646061, 0xffb7b5b5, 0xfff7f6f6, 0xffffffff, 0xffffffff, 0xfff0f0f0, 0xff716e6f, 0xff221e1f, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff211d1e, 0xff242022, 0xffc4c3c4, 0xffffffff, 0xffffffff, 0xffc0bfbf, 0xff333031, 0xff211d1e, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff1f1b1c, 0xff3c3839, 0xffd1d0d1, 0xffffffff, 0xffffffff, 0xfffcfcfc, 0xffd7d6d6, 0xff8d8b8b, 0xff575455, 0xff413e3e, 0xff413e3f, 0xff5d5a5b, 0xffa2a0a0, 0xffedecec, 0xffffffff, 0xffffffff, 0xfff2f2f2, 0xff777575, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20,
+ 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff201c1d, 0xff403c3d, 0xffe9e9e9, 0xffffffff, 0xffffffff, 0xffa5a4a4, 0xff292525, 0xff231f20, 0xff231f20, 0xff1e1a1b, 0xff484546, 0xffdedddd, 0xffffffff, 0xfffefefe, 0xffbfbebe, 0xff2a2627, 0xff211d1e, 0xff231f20, 0xff231f20, 0xff231f20, 0xff201c1d, 0xff494546, 0xffd9d8d8, 0xffffffff, 0xffffffff, 0xffbcbbbc, 0xff242122, 0xff211d1e, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff201c1d, 0xff322e2f, 0xffd9dad9, 0xffffffff, 0xffffffff, 0xffbdbcbd, 0xff343132, 0xff221e1f, 0xff231f20, 0xff231f20, 0xff221e1f, 0xff262122, 0xff817f7f, 0xff6a6768, 0xff2d292a, 0xff1b1718, 0xff1a1517, 0xff1d191a, 0xff1f1b1c, 0xff1f1b1c, 0xff1e1a1b, 0xff1a1617, 0xff231f20, 0xff767274, 0xffe8e8e8, 0xffffffff, 0xffffffff, 0xffc7c5c6, 0xff332f31, 0xff201c1d, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff1d191a, 0xff454142, 0xffe5e5e5, 0xffffffff, 0xfffbfbfb, 0xff9b999a, 0xff211d1e, 0xff221e1f, 0xff231f20, 0xff231f20, 0xff231f20, 0xff1d191a, 0xff615f5f, 0xffedecec, 0xffffffff, 0xfffafafa, 0xff797778, 0xff1a1617, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff211d1e, 0xff494647, 0xff858383, 0xff484546, 0xff231e20, 0xff191516, 0xff1c1819, 0xff1e1a1b, 0xff1f1b1c, 0xff1f1b1c, 0xff1c1819, 0xff1b1718, 0xff3d393a, 0xffb0afaf, 0xfffbfbfb, 0xffffffff, 0xfffdfdfd, 0xff777576, 0xff1b1718, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff221e1f, 0xff232021, 0xffa5a3a3, 0xfffefefe, 0xffffffff, 0xffffffff, 0xffffffff, 0xffe2e1e1, 0xff686666, 0xff1f1b1c, 0xff1c1819, 0xff1f1b1c, 0xff1f1b1c, 0xff1a1617, 0xff242021, 0xff8c8a8b, 0xfff6f6f6, 0xffffffff, 0xffffffff, 0xffcdcccc, 0xff3f3c3d, 0xff221e1f, 0xff231f20, 0xff231f20, 0xff231f20, 0xff211d1e, 0xff242022, 0xffc4c3c4, 0xffffffff, 0xffffffff, 0xffc0bfbf, 0xff333031, 0xff211d1e, 0xff231f20, 0xff231f20, 0xff231f20, 0xff211d1e, 0xff282425, 0xffadabab, 0xffffffff, 0xffffffff, 0xfff8f7f8, 0xffa7a6a6, 0xff393637, 0xff1b1618, 0xff1c1819, 0xff1f1b1c, 0xff1f1b1c, 0xff1b1718, 0xff1b1718, 0xff605d5e, 0xffe0dfe0, 0xffffffff, 0xffffffff, 0xffd4d3d3, 0xff434041, 0xff221e1f, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20,
+ 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff1c1819, 0xff838181, 0xffffffff, 0xffffffff, 0xfff5f5f5, 0xff686566, 0xff221f20, 0xff231f20, 0xff231f20, 0xff211d1e, 0xff252223, 0xffaeadae, 0xfffdfdfd, 0xffffffff, 0xffe8e8e8, 0xff575455, 0xff1d191a, 0xff231f20, 0xff231f20, 0xff231f20, 0xff211d1e, 0xff282526, 0xffa9a8a8, 0xfffdfdfd, 0xffffffff, 0xffededed, 0xff4f4b4c, 0xff1c1819, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff1b1718, 0xff6b696a, 0xfffcfcfc, 0xffffffff, 0xfff9f9f9, 0xff858283, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff242021, 0xff221e1f, 0xff1c1819, 0xff201c1d, 0xff221e1f, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff201c1d, 0xff1b1718, 0xff888687, 0xfffbfbfb, 0xffffffff, 0xffecebeb, 0xff625e60, 0xff1f1b1c, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff1d191a, 0xff454142, 0xffe5e5e5, 0xffffffff, 0xfffbfbfb, 0xff9b999a, 0xff211d1e, 0xff221e1f, 0xff231f20, 0xff231f20, 0xff231f20, 0xff1d191a, 0xff615f5f, 0xffedecec, 0xffffffff, 0xfffafafa, 0xff797778, 0xff1a1617, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff241f21, 0xff1e1a1b, 0xff1d191a, 0xff211d1e, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff1c1819, 0xff3e3a3b, 0xffcfcece, 0xffffffff, 0xffffffff, 0xffbebdbe, 0xff272324, 0xff211d1e, 0xff231f20, 0xff231f20, 0xff231f20, 0xff221e1f, 0xff232021, 0xffa5a3a3, 0xfffefefe, 0xffffffff, 0xffffffff, 0xfff3f3f3, 0xff7e7b7c, 0xff201c1d, 0xff221e1f, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff1f1b1c, 0xff221e20, 0xffa5a3a3, 0xffffffff, 0xffffffff, 0xfffcfcfc, 0xff7a7878, 0xff242021, 0xff231f20, 0xff231f20, 0xff231f20, 0xff211d1e, 0xff242022, 0xffc4c3c4, 0xffffffff, 0xffffffff, 0xffc0bfbf, 0xff333031, 0xff211d1e, 0xff231f20, 0xff231f20, 0xff231f20, 0xff1e1a1b, 0xff656262, 0xffeeeeee, 0xffffffff, 0xfffefefe, 0xffb6b4b5, 0xff302d2e, 0xff1d1819, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff221e1f, 0xff1a1516, 0xff686566, 0xfff6f6f6, 0xffffffff, 0xffffffff, 0xff807e7f, 0xff242021, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20,
+ 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff201c1d, 0xff2a2728, 0xffcecdcd, 0xffffffff, 0xffffffff, 0xffcecdcd, 0xff3e3b3b, 0xff221e1f, 0xff231f20, 0xff231f20, 0xff231f20, 0xff1b1718, 0xff6d6b6c, 0xfff6f6f6, 0xffffffff, 0xfffafafa, 0xff939292, 0xff221e1f, 0xff221e1f, 0xff231f20, 0xff231f20, 0xff231f20, 0xff1d191a, 0xff6d6a6b, 0xfff2f2f2, 0xffffffff, 0xfffbfbfb, 0xff918e8f, 0xff1e1a1b, 0xff221e1f, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff211d1e, 0xff221e1f, 0xffb4b2b2, 0xffffffff, 0xffffffff, 0xffe0dfdf, 0xff504c4d, 0xff1f1b1c, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff221e1f, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff1d191a, 0xff3a3637, 0xffe6e5e6, 0xffffffff, 0xfff9f9f9, 0xff898788, 0xff221e1f, 0xff221e1f, 0xff231f20, 0xff231f20, 0xff231f20, 0xff1d191a, 0xff454142, 0xffe5e5e5, 0xffffffff, 0xfffbfbfb, 0xff9b999a, 0xff211d1e, 0xff221e1f, 0xff231f20, 0xff231f20, 0xff231f20, 0xff1d191a, 0xff615f5f, 0xffedecec, 0xffffffff, 0xfffafafa, 0xff797778, 0xff1a1617, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff221e1f, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff221e1f, 0xff1c1819, 0xff8f8c8d, 0xfffafafa, 0xffffffff, 0xffe0dfdf, 0xff423f40, 0xff1e1a1b, 0xff231f20, 0xff231f20, 0xff231f20, 0xff221e1f, 0xff232021, 0xffa5a3a3, 0xfffefefe, 0xffffffff, 0xfffefefe, 0xffc9c8c9, 0xff343031, 0xff1f1b1c, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff1e1a1b, 0xff423e3f, 0xffe7e7e7, 0xffffffff, 0xffffffff, 0xffb9b8b8, 0xff2e2a2b, 0xff231f20, 0xff231f20, 0xff231f20, 0xff211d1e, 0xff242022, 0xffc4c3c4, 0xffffffff, 0xffffffff, 0xffc0bfbf, 0xff333031, 0xff211d1e, 0xff231f20, 0xff231f20, 0xff221e1f, 0xff282526, 0xffa9a7a7, 0xfffdfdfd, 0xffffffff, 0xffededed, 0xff545152, 0xff1b1718, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff221e1f, 0xff252222, 0xffb5b4b3, 0xffffffff, 0xffffffff, 0xffbcbcbc, 0xff2e2a2b, 0xff221e1f, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20,
+ 0xfd231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff1b1718, 0xff5f5d5d, 0xfff8f8f8, 0xffffffff, 0xfffefefe, 0xff999798, 0xff272324, 0xff221e1f, 0xff231f20, 0xff231f20, 0xff231f20, 0xff1f1b1c, 0xff343132, 0xffdad9d9, 0xffffffff, 0xffffffff, 0xffcac9c9, 0xff3b3738, 0xff201c1d, 0xff231f20, 0xff231f20, 0xff231f20, 0xff1f1b1c, 0xff383435, 0xffd4d3d4, 0xffffffff, 0xffffffff, 0xffcac9c9, 0xff353132, 0xff201c1d, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff1d191a, 0xff484545, 0xffe5e5e5, 0xffffffff, 0xfffefefe, 0xffb4b2b2, 0xff2b2727, 0xff211d1e, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff211d1e, 0xff1d191a, 0xff191516, 0xff191516, 0xff1b1718, 0xff1c1819, 0xff1d191a, 0xff1d191a, 0xff1b1718, 0xff201b1c, 0xffc9c8c9, 0xffffffff, 0xffffffff, 0xffa4a3a3, 0xff292526, 0xff221e1f, 0xff231f20, 0xff231f20, 0xff231f20, 0xff1d191a, 0xff454142, 0xffe5e5e5, 0xffffffff, 0xfffbfbfb, 0xff9b999a, 0xff211d1e, 0xff221e1f, 0xff231f20, 0xff231f20, 0xff231f20, 0xff1d191a, 0xff615f5f, 0xffedecec, 0xffffffff, 0xfffafafa, 0xff797778, 0xff1a1617, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff1f1b1c, 0xff1b1718, 0xff181415, 0xff1a1517, 0xff1c1819, 0xff1d191a, 0xff1d191a, 0xff1d191a, 0xff130f10, 0xff686566, 0xfff6f6f6, 0xffffffff, 0xffededed, 0xff5d5a5a, 0xff1c1819, 0xff231f20, 0xff231f20, 0xff231f20, 0xff221e1f, 0xff232021, 0xffa5a3a3, 0xfffefefe, 0xffffffff, 0xfffbfbfb, 0xff8e8c8d, 0xff1d191a, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff221e1f, 0xffaba9aa, 0xffffffff, 0xffffffff, 0xffe6e5e5, 0xff413f40, 0xff221e1f, 0xff231f20, 0xff231f20, 0xff211d1e, 0xff242022, 0xffc4c3c4, 0xffffffff, 0xffffffff, 0xffc0bfbf, 0xff333031, 0xff211d1e, 0xff231f20, 0xff231f20, 0xff201c1d, 0xff413e3f, 0xffd3d2d3, 0xffffffff, 0xffffffff, 0xffbfbebe, 0xff252122, 0xff211d1e, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff201c1d, 0xff757374, 0xffffffff, 0xffffffff, 0xffe4e4e4, 0xff3f3c3d, 0xff221e1f, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xfd231f20,
+ 0xf2231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff221e1f, 0xff201b1c, 0xffa8a7a7, 0xffffffff, 0xffffffff, 0xffeaeaea, 0xff625f60, 0xff201b1d, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff1d191a, 0xff999898, 0xffffffff, 0xffffffff, 0xffeeeeee, 0xff676466, 0xff211d1e, 0xff231f20, 0xff231f20, 0xff231f20, 0xff221e1f, 0xff1e1a1b, 0xff999898, 0xfffdfdfd, 0xffffffff, 0xffebebeb, 0xff636161, 0xff1e1a1b, 0xff231f20, 0xff231f20, 0xff231f20, 0xff221e1f, 0xff1d191b, 0xff858384, 0xfff8f7f7, 0xffffffff, 0xfff5f5f5, 0xff767475, 0xff1d191a, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff221e1f, 0xff1f1b1c, 0xff2d292a, 0xff504d4e, 0xff767474, 0xff8e8c8d, 0xff989797, 0xffa09e9f, 0xffa1a0a0, 0xffa1a0a0, 0xffa09f9f, 0xffa1a0a0, 0xffe4e4e4, 0xffffffff, 0xffffffff, 0xffb1afb0, 0xff2e2b2c, 0xff221e1f, 0xff231f20, 0xff231f20, 0xff231f20, 0xff1d191a, 0xff454142, 0xffe5e5e5, 0xffffffff, 0xfffbfbfb, 0xff9b999a, 0xff211d1e, 0xff221e1f, 0xff231f20, 0xff231f20, 0xff231f20, 0xff1d191a, 0xff615f5f, 0xffedecec, 0xffffffff, 0xfffafafa, 0xff797778, 0xff1a1617, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff201b1c, 0xff221f20, 0xff3c3839, 0xff636061, 0xff838182, 0xff949292, 0xff9d9c9c, 0xffa1a0a0, 0xffa1a0a0, 0xffa1a0a0, 0xff9d9c9c, 0xffbdbcbc, 0xfffbfbfb, 0xffffffff, 0xfff1f1f1, 0xff6a6768, 0xff1c1819, 0xff231f20, 0xff231f20, 0xff231f20, 0xff221e1f, 0xff232021, 0xffa5a3a3, 0xfffefefe, 0xffffffff, 0xfff7f7f7, 0xff636060, 0xff1a1617, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff201c1d, 0xff7b7979, 0xffffffff, 0xffffffff, 0xfffcfcfc, 0xff5a5758, 0xff211d1e, 0xff231f20, 0xff231f20, 0xff211d1e, 0xff242022, 0xffc4c3c4, 0xffffffff, 0xffffffff, 0xffc0bfbf, 0xff333031, 0xff211d1e, 0xff231f20, 0xff231f20, 0xff201c1d, 0xff5c5959, 0xffe7e7e7, 0xffffffff, 0xffffffff, 0xff908e8f, 0xff171213, 0xff1f1b1c, 0xff1f1b1c, 0xff1f1b1c, 0xff201c1d, 0xff201c1d, 0xff201c1d, 0xff201c1d, 0xff201c1d, 0xff201c1d, 0xff1e1a1b, 0xff555253, 0xfffbfbfb, 0xffffffff, 0xfffafafa, 0xff514e4f, 0xff211d1e, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xf2231f20,
+ 0xe5231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff1e1a1b, 0xff403d3e, 0xffdfdfdf, 0xffffffff, 0xffffffff, 0xffc8c7c7, 0xff353233, 0xff201b1c, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff1c1819, 0xff514f4f, 0xfff5f5f5, 0xffffffff, 0xffffffff, 0xffa19f9f, 0xff2a2627, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff1b1718, 0xff555153, 0xfff2f1f1, 0xffffffff, 0xfffdfdfd, 0xff9d9b9b, 0xff272324, 0xff221e1f, 0xff231f20, 0xff231f20, 0xff211d1e, 0xff302c2d, 0xffc0bfbf, 0xffffffff, 0xffffffff, 0xffdcdcdc, 0xff3d3a3b, 0xff1e1a1b, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff211d1e, 0xff373334, 0xff888586, 0xffd3d2d2, 0xfff9f8f8, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffbab9b9, 0xff332f30, 0xff221e1f, 0xff231f20, 0xff231f20, 0xff231f20, 0xff1d191a, 0xff454142, 0xffe5e5e5, 0xffffffff, 0xfffbfbfb, 0xff9b999a, 0xff211d1e, 0xff221e1f, 0xff231f20, 0xff231f20, 0xff231f20, 0xff1d191a, 0xff615f5f, 0xffedecec, 0xffffffff, 0xfffafafa, 0xff797778, 0xff1a1617, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff221e1f, 0xff262223, 0xff5a5757, 0xffb0afaf, 0xffebeaea, 0xfffefefe, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xfff3f3f3, 0xff747172, 0xff1d191a, 0xff231f20, 0xff231f20, 0xff231f20, 0xff221e1f, 0xff232021, 0xffa5a3a3, 0xfffefefe, 0xffffffff, 0xffebebeb, 0xff494647, 0xff1d191a, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff211d1e, 0xff5a5859, 0xfffdfdfd, 0xffffffff, 0xffffffff, 0xff737171, 0xff1f1b1c, 0xff231f20, 0xff231f20, 0xff211d1e, 0xff242022, 0xffc4c3c4, 0xffffffff, 0xffffffff, 0xffc0bfbf, 0xff333031, 0xff211d1e, 0xff231f20, 0xff231f20, 0xff221e1f, 0xff706e6f, 0xfff3f3f3, 0xffffffff, 0xffffffff, 0xffcdcccc, 0xffa6a4a4, 0xffaaa9a9, 0xffaaa8aa, 0xffaaa9a9, 0xffaaa9a9, 0xffaba9a9, 0xffaba9aa, 0xffabaaaa, 0xffababaa, 0xffacabaa, 0xffabaaab, 0xffbdbcbc, 0xfffcfcfc, 0xffffffff, 0xfffefeff, 0xff625e5f, 0xff201c1d, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xe5231f20,
+ 0xd4231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff1d191a, 0xff7d7a7b, 0xfff7f7f7, 0xffffffff, 0xfffafafa, 0xff959393, 0xff242021, 0xff282425, 0xff292526, 0xff292526, 0xff292526, 0xff292526, 0xff292526, 0xff272324, 0xff2b2728, 0xffc7c6c6, 0xffffffff, 0xffffffff, 0xffd9d8d8, 0xff433f40, 0xff221e1f, 0xff231f20, 0xff231f20, 0xff231f20, 0xff211d1e, 0xff252223, 0xffc5c3c4, 0xffffffff, 0xffffffff, 0xffd0d0d0, 0xff403d3e, 0xff211d1e, 0xff231f20, 0xff231f20, 0xff1f1b1c, 0xff5a5758, 0xffe8e7e7, 0xffffffff, 0xffffffff, 0xffa3a2a2, 0xff1e1a1b, 0xff221e1f, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff201c1d, 0xff565354, 0xffcfcece, 0xffffffff, 0xffffffff, 0xffffffff, 0xfffefefe, 0xfff7f7f7, 0xfff1f1f1, 0xffeeedee, 0xffececec, 0xffecebeb, 0xffecebeb, 0xffecebeb, 0xfffaf9f9, 0xffffffff, 0xffffffff, 0xffbcbbbc, 0xff343031, 0xff221e1f, 0xff231f20, 0xff231f20, 0xff231f20, 0xff1d191a, 0xff454142, 0xffe5e5e5, 0xffffffff, 0xfffbfbfb, 0xff9b999a, 0xff211d1e, 0xff221e1f, 0xff231f20, 0xff231f20, 0xff231f20, 0xff1d191a, 0xff615f5f, 0xffedecec, 0xffffffff, 0xfffafafa, 0xff797778, 0xff1a1617, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff211d1e, 0xff2f2b2c, 0xff8f8d8d, 0xfff3f2f2, 0xffffffff, 0xffffffff, 0xffffffff, 0xfffbfbfb, 0xfff4f4f4, 0xffefefef, 0xffededed, 0xffecebeb, 0xffecebeb, 0xffebeaeb, 0xfff1f1f1, 0xfffefefe, 0xffffffff, 0xfff4f4f4, 0xff787676, 0xff1d191a, 0xff231f20, 0xff231f20, 0xff231f20, 0xff221e1f, 0xff232021, 0xffa5a3a3, 0xfffefefe, 0xffffffff, 0xffe5e5e5, 0xff3e3b3b, 0xff1e1a1b, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff211d1e, 0xff4f4c4c, 0xfff8f8f8, 0xffffffff, 0xffffffff, 0xff827f80, 0xff1f1b1c, 0xff231f20, 0xff231f20, 0xff211d1e, 0xff242022, 0xffc4c3c4, 0xffffffff, 0xffffffff, 0xffc0bfbf, 0xff333031, 0xff211d1e, 0xff231f20, 0xff231f20, 0xff221e1f, 0xff7c7a7a, 0xfffbfafa, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xff686565, 0xff201c1d, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xd4231f20,
+ 0xb4231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff211d1e, 0xff2e2a2b, 0xffbab8b9, 0xfffefefe, 0xffffffff, 0xfffafafa, 0xffbbb9ba, 0xff979696, 0xff9b9a9a, 0xff9b9a9a, 0xff9b9a9a, 0xff9b9a9a, 0xff9b9a9a, 0xff9b9a9a, 0xff9c9a9a, 0xff979696, 0xffcfcfcf, 0xffffffff, 0xffffffff, 0xfffefefe, 0xff757273, 0xff221e1f, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff1b1717, 0xff7a7778, 0xffffffff, 0xffffffff, 0xfff4f4f4, 0xff6d6a6b, 0xff231e1f, 0xff231f20, 0xff221e1f, 0xff252122, 0xff918f8f, 0xfffcfbfb, 0xffffffff, 0xfff7f7f7, 0xff5b5859, 0xff1b1718, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff1f1b1c, 0xff494647, 0xffd3d2d2, 0xffffffff, 0xffffffff, 0xfff9f9f9, 0xffcccccc, 0xffa1a0a0, 0xff848383, 0xff726f70, 0xff676465, 0xff625f60, 0xff605d5e, 0xff5f5c5d, 0xff625e5f, 0xffd3d2d2, 0xffffffff, 0xffffffff, 0xffbcbbbb, 0xff343031, 0xff221e1f, 0xff231f20, 0xff231f20, 0xff231f20, 0xff1d191a, 0xff454142, 0xffe5e5e5, 0xffffffff, 0xfffbfbfb, 0xff9b999a, 0xff211d1e, 0xff221e1f, 0xff231f20, 0xff231f20, 0xff231f20, 0xff1d191a, 0xff615f5f, 0xffedecec, 0xffffffff, 0xfffafafa, 0xff797778, 0xff1a1617, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff272324, 0xff858383, 0xfff8f8f8, 0xffffffff, 0xffffffff, 0xffe8e7e7, 0xffb6b5b5, 0xff929191, 0xff7b7879, 0xff6c6969, 0xff656263, 0xff615e5f, 0xff615e5e, 0xff5a5758, 0xff908e8e, 0xfff8f8f8, 0xffffffff, 0xfff4f4f4, 0xff777576, 0xff1d191a, 0xff231f20, 0xff231f20, 0xff231f20, 0xff221e1f, 0xff232021, 0xffa5a3a3, 0xfffefefe, 0xffffffff, 0xffe3e3e3, 0xff3b3838, 0xff1f1b1c, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff221d1e, 0xff4d4a4b, 0xfff6f6f6, 0xffffffff, 0xffffffff, 0xff848182, 0xff1f1b1c, 0xff231f20, 0xff231f20, 0xff211d1e, 0xff242022, 0xffc4c3c4, 0xffffffff, 0xffffffff, 0xffc0bfbf, 0xff333031, 0xff211d1e, 0xff231f20, 0xff231f20, 0xff221e1f, 0xff807d7e, 0xfffdfdfd, 0xffffffff, 0xffffffff, 0xffe9e8e8, 0xffdfdede, 0xffe0dfdf, 0xffe0dfdf, 0xffe0dfdf, 0xffe0dfdf, 0xffe0dfdf, 0xffe0dfdf, 0xffe0dfdf, 0xffe0dfdf, 0xffe0dfdf, 0xffe0dfdf, 0xffe0dfdf, 0xffe0dfdf, 0xffe1e0e0, 0xffe0e0e0, 0xff5e5b5c, 0xff211c1d, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xb4231f20,
+ 0x8e231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff1f1b1c, 0xff565354, 0xffe4e3e3, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffb9b8b8, 0xff2a2627, 0xff221e1f, 0xff231f20, 0xff231f20, 0xff231f20, 0xff1f1b1c, 0xff3a3738, 0xffe4e3e4, 0xffffffff, 0xffffffff, 0xffa8a6a7, 0xff2b2728, 0xff231f20, 0xff221e1f, 0xff3a3637, 0xffc7c6c6, 0xffffffff, 0xffffffff, 0xffcbcbcb, 0xff292527, 0xff211d1e, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff221e1f, 0xff272324, 0xff9b9999, 0xfffdfdfd, 0xffffffff, 0xfff9f8f8, 0xff949192, 0xff3d393a, 0xff262223, 0xff201c1d, 0xff1e1a1b, 0xff1e1a1b, 0xff1e191a, 0xff1d191a, 0xff1b1718, 0xff1f1b1c, 0xffc6c5c5, 0xffffffff, 0xffffffff, 0xffbcbbbb, 0xff343031, 0xff221e1f, 0xff231f20, 0xff231f20, 0xff231f20, 0xff1d191a, 0xff454142, 0xffe5e5e5, 0xffffffff, 0xfffbfbfb, 0xff9b999a, 0xff211d1e, 0xff221e1f, 0xff231f20, 0xff231f20, 0xff231f20, 0xff1d191a, 0xff615f5f, 0xffedecec, 0xffffffff, 0xfffafafa, 0xff797778, 0xff1a1617, 0xff231f20, 0xff231f20, 0xff231f20, 0xff221e1f, 0xff484445, 0xffdadada, 0xffffffff, 0xffffffff, 0xffd4d2d2, 0xff5c595a, 0xff2f2b2c, 0xff221e1f, 0xff1f1b1c, 0xff1e1a1b, 0xff1e1a1b, 0xff1d191a, 0xff1d191a, 0xff140f10, 0xff656363, 0xfff5f5f5, 0xffffffff, 0xfff4f4f4, 0xff777576, 0xff1d191a, 0xff231f20, 0xff231f20, 0xff231f20, 0xff221e1f, 0xff232021, 0xffa5a3a3, 0xfffefefe, 0xffffffff, 0xffe7e7e7, 0xff423e3f, 0xff1e1a1b, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff211d1e, 0xff534f50, 0xfffafbfb, 0xffffffff, 0xffffffff, 0xff7c797a, 0xff1f1b1c, 0xff231f20, 0xff231f20, 0xff211d1e, 0xff242022, 0xffc4c3c4, 0xffffffff, 0xffffffff, 0xffc0bfbf, 0xff333031, 0xff211d1e, 0xff231f20, 0xff231f20, 0xff221e1f, 0xff7b7879, 0xfffafafa, 0xffffffff, 0xffffffff, 0xff8c8a8a, 0xff484545, 0xff504d4e, 0xff504d4d, 0xff504d4d, 0xff504d4d, 0xff504d4d, 0xff504d4d, 0xff504d4d, 0xff504d4d, 0xff504d4d, 0xff504d4d, 0xff504d4d, 0xff504d4d, 0xff504d4e, 0xff504d4e, 0xff312e2e, 0xff221f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0x8e231f20,
+ 0x62231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff252122, 0xff8e8b8b, 0xfffcfbfb, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xfff2f1f2, 0xff4d4a4b, 0xff201c1d, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff201c1d, 0xffa2a1a1, 0xffffffff, 0xffffffff, 0xffe1e0e0, 0xff434041, 0xff221e1f, 0xff221e1f, 0xff625f5f, 0xfff1f1f1, 0xffffffff, 0xffffffff, 0xff818080, 0xff1b1718, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff211d1e, 0xff3f3b3c, 0xffcfcecf, 0xffffffff, 0xffffffff, 0xffbdbcbc, 0xff292526, 0xff1f1b1c, 0xff221e1f, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff201c1d, 0xff292627, 0xffd8d7d7, 0xffffffff, 0xffffffff, 0xffbcbbbb, 0xff343031, 0xff221e1f, 0xff231f20, 0xff231f20, 0xff231f20, 0xff1d191a, 0xff454142, 0xffe5e5e5, 0xffffffff, 0xfffbfbfb, 0xff9b999a, 0xff211d1e, 0xff221e1f, 0xff231f20, 0xff231f20, 0xff231f20, 0xff1d191a, 0xff615f5f, 0xffedecec, 0xffffffff, 0xfffafafa, 0xff797778, 0xff1a1617, 0xff231f20, 0xff231f20, 0xff231f20, 0xff232021, 0xff757273, 0xfffdfdfd, 0xffffffff, 0xfffafafa, 0xff5f5d5d, 0xff1e1a1b, 0xff211d1e, 0xff221e1f, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff1b1718, 0xff787676, 0xfff7f7f7, 0xffffffff, 0xfff4f4f4, 0xff777576, 0xff1d191a, 0xff231f20, 0xff231f20, 0xff231f20, 0xff221e1f, 0xff232021, 0xffa5a3a3, 0xfffefefe, 0xffffffff, 0xfff1f1f1, 0xff545152, 0xff1b1718, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff201c1d, 0xff686566, 0xffffffff, 0xffffffff, 0xffffffff, 0xff676566, 0xff201c1d, 0xff231f20, 0xff231f20, 0xff211d1e, 0xff242022, 0xffc4c3c4, 0xffffffff, 0xffffffff, 0xffc0bfbf, 0xff333031, 0xff211d1e, 0xff231f20, 0xff231f20, 0xff211d1e, 0xff6d6a6b, 0xfff1f1f1, 0xffffffff, 0xffffffff, 0xff858384, 0xff171213, 0xff211d1e, 0xff211d1e, 0xff211d1e, 0xff211d1e, 0xff211d1e, 0xff211d1e, 0xff211d1e, 0xff211d1e, 0xff211d1e, 0xff211d1e, 0xff211d1e, 0xff211d1e, 0xff211d1e, 0xff211d1e, 0xff231e20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0x62231f20,
+ 0x2e231f20, 0xf0231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff221e1f, 0xff393536, 0xffc6c5c5, 0xffffffff, 0xffffffff, 0xfff0f0f0, 0xffa6a4a5, 0xffa2a0a1, 0xffa3a1a1, 0xffa3a1a1, 0xffa3a1a1, 0xffa3a1a1, 0xffa3a1a1, 0xffa3a1a1, 0xffa3a1a1, 0xffa3a1a1, 0xffa3a1a1, 0xffa2a1a2, 0xffb6b4b4, 0xfff7f7f7, 0xffffffff, 0xffffffff, 0xff929192, 0xff1e1a1b, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff201c1d, 0xff5b5758, 0xfff9fafa, 0xffffffff, 0xffffffff, 0xff7a7878, 0xff211d1e, 0xff272324, 0xff9d9b9c, 0xffffffff, 0xffffffff, 0xffebeaea, 0xff3f3c3d, 0xff1f1b1c, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff211d1e, 0xff535051, 0xffe2e2e2, 0xffffffff, 0xffffffff, 0xff7f7d7d, 0xff1a1517, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff1d191a, 0xff454142, 0xffededed, 0xffffffff, 0xffffffff, 0xffbcbbbb, 0xff343031, 0xff221e1f, 0xff231f20, 0xff231f20, 0xff231f20, 0xff1d191a, 0xff454142, 0xffe5e5e5, 0xffffffff, 0xfffbfbfb, 0xff9b999a, 0xff211d1e, 0xff221e1f, 0xff231f20, 0xff231f20, 0xff231f20, 0xff1d191a, 0xff615f5f, 0xffedecec, 0xffffffff, 0xfffafafa, 0xff797778, 0xff1a1617, 0xff231f20, 0xff231f20, 0xff231f20, 0xff252122, 0xff979697, 0xffffffff, 0xffffffff, 0xffd5d5d6, 0xff312d2e, 0xff211d1e, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff221e1f, 0xff201b1c, 0xff9c9a9b, 0xfffbfbfb, 0xffffffff, 0xfff4f4f4, 0xff777576, 0xff1d191a, 0xff231f20, 0xff231f20, 0xff231f20, 0xff221e1f, 0xff232021, 0xffa5a3a3, 0xfffefefe, 0xffffffff, 0xfff9f9f9, 0xff747272, 0xff1a1617, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff201b1c, 0xff8f8d8e, 0xffffffff, 0xffffffff, 0xfff5f4f4, 0xff4d4a4b, 0xff211d1e, 0xff231f20, 0xff231f20, 0xff211d1e, 0xff242022, 0xffc4c3c4, 0xffffffff, 0xffffffff, 0xffc0bfbf, 0xff333031, 0xff211d1e, 0xff231f20, 0xff231f20, 0xff201c1d, 0xff555152, 0xffe3e2e2, 0xffffffff, 0xffffffff, 0xffb7b6b6, 0xff211d1e, 0xff221e1f, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xf0231f20, 0x2e231f20,
+ 0x11231f20, 0xc4231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff221f20, 0xff605e5f, 0xfff1f1f1, 0xffffffff, 0xffffffff, 0xffacabab, 0xff1a1718, 0xff1c1819, 0xff1d191a, 0xff1d191a, 0xff1d191a, 0xff1d191a, 0xff1d191a, 0xff1d191a, 0xff1d191a, 0xff1d191a, 0xff1d191a, 0xff1d191a, 0xff353232, 0xffcccccc, 0xffffffff, 0xffffffff, 0xffdad9da, 0xff322e2f, 0xff201c1d, 0xff231f20, 0xff231f20, 0xff231f20, 0xff221e1f, 0xff312e2f, 0xffc9c8c8, 0xffffffff, 0xffffffff, 0xffc0bfbf, 0xff292526, 0xff3c3839, 0xffdad9da, 0xffffffff, 0xffffffff, 0xffaba9aa, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff211d1e, 0xff5e5b5c, 0xffeaeaea, 0xffffffff, 0xffffffff, 0xff6d6b6b, 0xff1b1617, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff1b1718, 0xff7e7c7d, 0xfffefdfe, 0xffffffff, 0xffffffff, 0xffbcbbbb, 0xff343031, 0xff221e1f, 0xff231f20, 0xff231f20, 0xff231f20, 0xff1d191a, 0xff454142, 0xffe5e5e5, 0xffffffff, 0xfffbfbfb, 0xff9b999a, 0xff211d1e, 0xff221e1f, 0xff231f20, 0xff231f20, 0xff231f20, 0xff1d191a, 0xff615f5f, 0xffedecec, 0xffffffff, 0xfffafafa, 0xff797778, 0xff1a1617, 0xff231f20, 0xff231f20, 0xff231f20, 0xff252223, 0xffa6a4a5, 0xffffffff, 0xffffffff, 0xffc6c4c4, 0xff2b2829, 0xff221e1f, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff201c1d, 0xff363233, 0xffcacaca, 0xffffffff, 0xffffffff, 0xfff4f4f4, 0xff777576, 0xff1d191a, 0xff231f20, 0xff231f20, 0xff231f20, 0xff221e1f, 0xff232021, 0xffa5a3a3, 0xfffefefe, 0xffffffff, 0xfffdfdfd, 0xffaaa9aa, 0xff231f20, 0xff221e1f, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff211d1e, 0xff2c2829, 0xffc9c7c8, 0xffffffff, 0xffffffff, 0xffd1d1d1, 0xff383435, 0xff221e1f, 0xff231f20, 0xff231f20, 0xff211d1e, 0xff242022, 0xffc4c3c4, 0xffffffff, 0xffffffff, 0xffc0bfbf, 0xff333031, 0xff211d1e, 0xff231f20, 0xff231f20, 0xff201c1d, 0xff383536, 0xffc6c5c6, 0xffffffff, 0xffffffff, 0xffe7e7e7, 0xff464344, 0xff1d191a, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xc4231f20, 0x11231f20,
+ 0x04231f20, 0x8c231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff272324, 0xff9f9d9d, 0xffffffff, 0xffffffff, 0xfffefefe, 0xff646262, 0xff1c1819, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff272324, 0xff959393, 0xffffffff, 0xffffffff, 0xffffffff, 0xff6d6a6b, 0xff1b1718, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff878586, 0xffffffff, 0xffffffff, 0xfff6f6f6, 0xff4d4a4a, 0xff6a6869, 0xffffffff, 0xffffffff, 0xfffbfbfb, 0xff656262, 0xff201c1d, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff211d1e, 0xff595657, 0xffe7e7e6, 0xffffffff, 0xffffffff, 0xff858384, 0xff181416, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff1e1a1b, 0xff393536, 0xffcdcccc, 0xffffffff, 0xffffffff, 0xffffffff, 0xffbcbbbb, 0xff343031, 0xff221e1f, 0xff231f20, 0xff231f20, 0xff231f20, 0xff1d191a, 0xff454142, 0xffe5e5e5, 0xffffffff, 0xfffbfbfb, 0xff9b999a, 0xff211d1e, 0xff221e1f, 0xff231f20, 0xff231f20, 0xff231f20, 0xff1d191a, 0xff615f5f, 0xffedecec, 0xffffffff, 0xfffafafa, 0xff797778, 0xff1a1617, 0xff231f20, 0xff231f20, 0xff231f20, 0xff252122, 0xffa09e9e, 0xffffffff, 0xffffffff, 0xffdad9d9, 0xff332f30, 0xff201c1d, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff221e1f, 0xff201c1d, 0xff777575, 0xfff2f2f2, 0xffffffff, 0xffffffff, 0xfff4f4f4, 0xff777576, 0xff1d191a, 0xff231f20, 0xff231f20, 0xff231f20, 0xff221e1f, 0xff232021, 0xffa5a3a3, 0xfffefefe, 0xffffffff, 0xffffffff, 0xffe0e0e0, 0xff4f4c4d, 0xff1e1a1b, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff1c1819, 0xff686566, 0xfffbfbfb, 0xffffffff, 0xffffffff, 0xff9c9b9b, 0xff272324, 0xff231f20, 0xff231f20, 0xff231f20, 0xff211d1e, 0xff242022, 0xffc4c3c4, 0xffffffff, 0xffffffff, 0xffc0bfbf, 0xff333031, 0xff211d1e, 0xff231f20, 0xff231f20, 0xff221e1f, 0xff221e1f, 0xff908f8f, 0xfffafafa, 0xffffffff, 0xfffcfcfc, 0xffa09e9e, 0xff262223, 0xff201c1d, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff211d1e, 0xff201c1d, 0xff221e1f, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0x8c231f20, 0x04231f20,
+ 0x01231f20, 0x49231f20, 0xf4231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff221e1f, 0xff3d3a3b, 0xffdddddd, 0xffffffff, 0xffffffff, 0xffd8d7d7, 0xff322e2f, 0xff211d1e, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff221d1e, 0xff605d5e, 0xffececec, 0xffffffff, 0xffffffff, 0xffb9b7b8, 0xff221e20, 0xff221e1f, 0xff231f20, 0xff231f20, 0xff231f20, 0xff221e1f, 0xff504c4d, 0xffe6e5e5, 0xffffffff, 0xffffffff, 0xff9c9a9b, 0xffb4b2b2, 0xffffffff, 0xffffffff, 0xffd0cfcf, 0xff373334, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff211d1e, 0xff474344, 0xffd8d7d7, 0xffffffff, 0xffffffff, 0xffcbcaca, 0xff322e2f, 0xff1b1718, 0xff211d1e, 0xff221e1f, 0xff221e1f, 0xff211d1e, 0xff1c1819, 0xff2f2b2c, 0xffa09e9f, 0xfffbfbfb, 0xffffffff, 0xffffffff, 0xffffffff, 0xffbcbbbb, 0xff343031, 0xff221e1f, 0xff231f20, 0xff231f20, 0xff231f20, 0xff1d191a, 0xff454142, 0xffe5e5e5, 0xffffffff, 0xfffbfbfb, 0xff9b999a, 0xff211d1e, 0xff221e1f, 0xff231f20, 0xff231f20, 0xff231f20, 0xff1d191a, 0xff615f5f, 0xffedecec, 0xffffffff, 0xfffafafa, 0xff797778, 0xff1a1617, 0xff231f20, 0xff231f20, 0xff231f20, 0xff242021, 0xff828081, 0xffffffff, 0xffffffff, 0xfffdfdfd, 0xff737171, 0xff1b1617, 0xff1f1b1c, 0xff221e1f, 0xff221e1f, 0xff221e1f, 0xff1f1b1c, 0xff1f1b1c, 0xff575555, 0xffd7d6d6, 0xffffffff, 0xffffffff, 0xffffffff, 0xfff4f4f4, 0xff777576, 0xff1d191a, 0xff231f20, 0xff231f20, 0xff231f20, 0xff221e1f, 0xff232021, 0xffa5a3a3, 0xfffefefe, 0xffffffff, 0xffffffff, 0xfffefefe, 0xffafaeaf, 0xff343132, 0xff1d191a, 0xff211d1e, 0xff221e1f, 0xff221e1f, 0xff201c1d, 0xff1a1617, 0xff474344, 0xffd5d4d4, 0xffffffff, 0xffffffff, 0xffebeaea, 0xff5b5858, 0xff221e1f, 0xff231f20, 0xff231f20, 0xff231f20, 0xff211d1e, 0xff242022, 0xffc4c3c4, 0xffffffff, 0xffffffff, 0xffc0bfbf, 0xff333031, 0xff211d1e, 0xff231f20, 0xff231f20, 0xff231f20, 0xff1e1a1b, 0xff454343, 0xffd9d8d9, 0xffffffff, 0xffffffff, 0xffefefef, 0xff828081, 0xff2a2627, 0xff1c1819, 0xff201c1d, 0xff221e1f, 0xff221e1f, 0xff221e1f, 0xff221e1f, 0xff201c1d, 0xff1e191b, 0xff1c1819, 0xff272424, 0xff524f50, 0xff4b4848, 0xff242021, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xf4231f20, 0x49231f20, 0x01231f20,
+ 0x00000000, 0x1c231f20, 0xc3231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff1e1a1b, 0xff757273, 0xffffffff, 0xffffffff, 0xffffffff, 0xff969495, 0xff211d1e, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff211d1e, 0xff393537, 0xffc7c6c6, 0xffffffff, 0xffffffff, 0xffececec, 0xff4c4949, 0xff1c1819, 0xff231f20, 0xff231f20, 0xff231f20, 0xff221e1f, 0xff302c2d, 0xffb4b3b3, 0xffffffff, 0xffffffff, 0xffeeedee, 0xfff3f3f3, 0xffffffff, 0xffffffff, 0xff918f90, 0xff262223, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff221e1f, 0xff2d292a, 0xffafadae, 0xffffffff, 0xffffffff, 0xfffbfbfb, 0xffacabab, 0xff434041, 0xff211d1e, 0xff1d191a, 0xff1e1a1b, 0xff262223, 0xff504d4e, 0xffadabab, 0xfff7f7f7, 0xfffbfbfb, 0xfff2f2f2, 0xffffffff, 0xffffffff, 0xffbcbbbb, 0xff343031, 0xff221e1f, 0xff231f20, 0xff231f20, 0xff231f20, 0xff1d191a, 0xff454142, 0xffe5e5e5, 0xffffffff, 0xfffbfbfb, 0xff9b999a, 0xff211d1e, 0xff221e1f, 0xff231f20, 0xff231f20, 0xff231f20, 0xff1d191a, 0xff615f5f, 0xffedecec, 0xffffffff, 0xfffafafa, 0xff797778, 0xff1a1617, 0xff231f20, 0xff231f20, 0xff231f20, 0xff221e1f, 0xff555252, 0xffeaeae9, 0xffffffff, 0xffffffff, 0xffe3e2e2, 0xff726f70, 0xff2b2828, 0xff1e1a1b, 0xff1d191a, 0xff201b1c, 0xff332f30, 0xff777475, 0xffd8d7d7, 0xffffffff, 0xfff3f2f2, 0xfffdfdfd, 0xffffffff, 0xfff4f4f4, 0xff777576, 0xff1d191a, 0xff231f20, 0xff231f20, 0xff231f20, 0xff221e1f, 0xff232021, 0xffa5a3a3, 0xfffefefe, 0xffffffff, 0xfffafafa, 0xfff7f8f8, 0xfffbfbfb, 0xffafaeae, 0xff4c494a, 0xff242021, 0xff1d191a, 0xff1e1a1b, 0xff282425, 0xff615e5f, 0xffcbcacb, 0xffffffff, 0xffffffff, 0xffffffff, 0xffa3a1a2, 0xff2c2829, 0xff221e1f, 0xff231f20, 0xff231f20, 0xff231f20, 0xff211d1e, 0xff242022, 0xffc4c3c4, 0xffffffff, 0xffffffff, 0xffc0bfbf, 0xff333031, 0xff211d1e, 0xff231f20, 0xff231f20, 0xff231f20, 0xff221e1f, 0xff1e1a1b, 0xff726f70, 0xfff5f5f5, 0xffffffff, 0xffffffff, 0xfff0efef, 0xffa9a7a7, 0xff5a5757, 0xff2d2a2b, 0xff211c1d, 0xff1e1a1b, 0xff1f1b1c, 0xff211d1e, 0xff2a2627, 0xff434041, 0xff706d6e, 0xffaba9aa, 0xffe1e1e1, 0xff868384, 0xff252122, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xc3231f20, 0x1c231f20, 0x00000000,
+ 0x00000000, 0x06231f20, 0x7c231f20, 0xfc231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff221e1f, 0xff262223, 0xffc0bebf, 0xffffffff, 0xffffffff, 0xfff5f4f4, 0xff575455, 0xff221e1f, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff221e1f, 0xff231f20, 0xff949293, 0xfffafafa, 0xffffffff, 0xfffbfbfb, 0xff908e8e, 0xff1c1819, 0xff221e1f, 0xff231f20, 0xff231f20, 0xff231f20, 0xff221e1f, 0xff7a7879, 0xfff6f5f6, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffe9e9e9, 0xff595657, 0xff221e1f, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff201b1c, 0xff605e5e, 0xffebeaea, 0xffffffff, 0xffffffff, 0xfffbfbfb, 0xffdfdedf, 0xffb4b3b3, 0xff9b9999, 0xffa1a0a0, 0xffc0bfbf, 0xffe6e6e6, 0xfffdfdfd, 0xffffffff, 0xffa5a2a3, 0xffc8c6c7, 0xffffffff, 0xffffffff, 0xffbcbbbb, 0xff343031, 0xff221e1f, 0xff231f20, 0xff231f20, 0xff231f20, 0xff1d191a, 0xff454142, 0xffe5e5e5, 0xffffffff, 0xfffbfbfb, 0xff9b999a, 0xff211d1e, 0xff221e1f, 0xff231f20, 0xff231f20, 0xff231f20, 0xff1d191a, 0xff615f5f, 0xffedecec, 0xffffffff, 0xfffafafa, 0xff797778, 0xff1a1617, 0xff231f20, 0xff231f20, 0xff231f20, 0xff221e1f, 0xff2d292a, 0xffa3a1a1, 0xffffffff, 0xffffffff, 0xffffffff, 0xfff1f1f1, 0xffcbcbcb, 0xffa4a3a3, 0xff9a9999, 0xffadabac, 0xffd4d3d3, 0xfff3f3f3, 0xffffffff, 0xffdfdfdf, 0xff9e9c9d, 0xfff6f6f6, 0xffffffff, 0xfff4f4f4, 0xff777576, 0xff1d191a, 0xff231f20, 0xff231f20, 0xff231f20, 0xff221e1f, 0xff232021, 0xffa5a3a3, 0xfffefefe, 0xffffffff, 0xffe6e5e5, 0xffa09f9e, 0xfffcfcfc, 0xfffdfdfd, 0xffe4e4e4, 0xffbbbaba, 0xff9f9d9d, 0xffa3a0a2, 0xffc5c4c4, 0xffececec, 0xfffefefe, 0xffffffff, 0xffffffff, 0xffcccbcb, 0xff433f40, 0xff201c1d, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff211d1e, 0xff242022, 0xffc4c2c4, 0xffffffff, 0xffffffff, 0xffc0bfbf, 0xff333031, 0xff211d1e, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff221e1f, 0xff242021, 0xff807e7e, 0xfff9f8f8, 0xffffffff, 0xffffffff, 0xfffcfcfc, 0xffececec, 0xffd0d0d0, 0xffb2b0b0, 0xffa4a1a2, 0xffa6a3a5, 0xffb5b3b4, 0xffcdcccd, 0xffe2e1e1, 0xfff3f3f3, 0xfffdfdfd, 0xffffffff, 0xff8b8a8a, 0xff242121, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xfc231f20, 0x7c231f20, 0x06231f20, 0x00000000,
+ 0x00000000, 0x00000000, 0x32231f20, 0xd8231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff1e191a, 0xff514e4f, 0xfff7f7f7, 0xffffffff, 0xffffffff, 0xffc5c4c5, 0xff332f30, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff1d191a, 0xff5c5a5a, 0xffebebeb, 0xffffffff, 0xffffffff, 0xffcdcdcd, 0xff343032, 0xff1f1b1c, 0xff231f20, 0xff231f20, 0xff231f20, 0xff1f1b1c, 0xff484546, 0xffdbdada, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffbdbcbd, 0xff343132, 0xff221e1f, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff221e1f, 0xff221e1f, 0xff807e7f, 0xfff2f2f2, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xfffdfdfd, 0xffabaaaa, 0xff363233, 0xffc1bfc0, 0xffffffff, 0xffffffff, 0xffbcbcbb, 0xff343031, 0xff221e1f, 0xff231f20, 0xff231f20, 0xff231f20, 0xff1d191a, 0xff454142, 0xffe5e5e5, 0xffffffff, 0xfffbfbfb, 0xff9b9a9a, 0xff211d1e, 0xff221e1f, 0xff231f20, 0xff231f20, 0xff231f20, 0xff1d191a, 0xff615f60, 0xffededec, 0xffffffff, 0xfffafafa, 0xff797778, 0xff1a1617, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff211d1e, 0xff3e3b3c, 0xffc0bebf, 0xfffdfdfe, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffe7e6e6, 0xff666364, 0xff656263, 0xfff5f5f5, 0xffffffff, 0xfff4f4f4, 0xff787576, 0xff1d191a, 0xff231f20, 0xff231f20, 0xff231f20, 0xff221e1f, 0xff232021, 0xffa5a3a3, 0xfffefefe, 0xffffffff, 0xffe2e2e2, 0xff464244, 0xff9e9d9d, 0xfffbfbfb, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffd1cfcf, 0xff4b4849, 0xff1f1b1c, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff211d1e, 0xff242122, 0xffc5c4c4, 0xffffffff, 0xffffffff, 0xffc0bfbf, 0xff343031, 0xff211d1e, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff221e1f, 0xff231f20, 0xff696767, 0xffdddddd, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xfff9f9f9, 0xff7d7b7c, 0xff252122, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xd8231f20, 0x32231f20, 0x00000000, 0x00000000,
+ 0x00231f20, 0x00000000, 0x05231f20, 0x8e231f20, 0xfa231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff1c1819, 0xff7f7d7d, 0xffe1e0e1, 0xffdbdbdb, 0xffdedede, 0xff7f7d7e, 0xff252122, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff201c1d, 0xff302d2e, 0xffb2b1b1, 0xffdcdbdb, 0xffdbdbdb, 0xffcccccc, 0xff555253, 0xff1e1a1b, 0xff231f20, 0xff231f20, 0xff231f20, 0xff221e1f, 0xff282425, 0xff9b9999, 0xffdbdbdb, 0xffdbdbdb, 0xffdbdbdb, 0xffd9d8d9, 0xff7b797a, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff221e1f, 0xff1f1b1c, 0xff656263, 0xffc7c6c7, 0xffeeeeee, 0xfff7f6f6, 0xfff8f8f8, 0xfff8f8f8, 0xfff6f6f6, 0xfff0f0f0, 0xffd4d3d3, 0xff838181, 0xff2b2728, 0xff211d1e, 0xffa7a5a6, 0xffe0dfdf, 0xffdedddd, 0xffa3a2a2, 0xff312d2e, 0xff221e1f, 0xff231f20, 0xff231f20, 0xff231f20, 0xff1e1a1b, 0xff3f3b3c, 0xffc5c4c4, 0xffdcdcdc, 0xffd9d9d9, 0xff888586, 0xff211d1e, 0xff221e1f, 0xff231f20, 0xff231f20, 0xff231f20, 0xff1e1a1b, 0xff575455, 0xffcfcdcf, 0xffdbdbdb, 0xffdbd9da, 0xff6b696a, 0xff1b1718, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff1f1b1c, 0xff363333, 0xff999797, 0xffe0dfe0, 0xfff5f4f4, 0xfff8f7f7, 0xfff9f8f8, 0xfff8f8f8, 0xfff5f5f5, 0xffe7e6e7, 0xffb6b5b5, 0xff535052, 0xff181415, 0xff595556, 0xffd4d3d3, 0xffdbdbdb, 0xffd4d4d4, 0xff696668, 0xff1e1a1b, 0xff231f20, 0xff231f20, 0xff231f20, 0xff221e1f, 0xff231f20, 0xff8f8d8e, 0xffdcdbdb, 0xffdddcdc, 0xffc3c2c2, 0xff322f30, 0xff272425, 0xff828080, 0xffd6d6d6, 0xfff1f1f1, 0xfff7f7f7, 0xfff9f9f9, 0xfff8f8f8, 0xfff5f5f5, 0xffe3e3e3, 0xff9e9d9d, 0xff393536, 0xff1d191a, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff211d1e, 0xff242021, 0xffaaa8a9, 0xffdedede, 0xffdddcdc, 0xffa6a4a5, 0xff312d2e, 0xff211d1e, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff1e1a1b, 0xff3c3839, 0xff918f8f, 0xffd3d2d3, 0xffededed, 0xfff5f5f5, 0xfff8f8f8, 0xfff9f9f9, 0xfff8f8f8, 0xfff7f6f6, 0xfff4f3f3, 0xffe8e8e8, 0xffd0cece, 0xff9e9c9c, 0xff5c5959, 0xff2b2829, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xfa231f20, 0x8e231f20, 0x05231f20, 0x00000000, 0x00231f20,
+ 0x00000000, 0x00231f20, 0x00000000, 0x30231f20, 0xd8231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff322e2f, 0xff373435, 0xff363334, 0xff363334, 0xff292526, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff221e1f, 0xff302b2c, 0xff373334, 0xff363334, 0xff363334, 0xff2c2829, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff221e1f, 0xff2c2829, 0xff363334, 0xff363334, 0xff363334, 0xff353233, 0xff282526, 0xff231e1f, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff221e1f, 0xff1c1819, 0xff2b2829, 0xff585556, 0xff7b7878, 0xff8a8888, 0xff8b8989, 0xff7b797a, 0xff5e5b5b, 0xff343132, 0xff1d191a, 0xff201c1d, 0xff231f20, 0xff302d2e, 0xff373335, 0xff373334, 0xff312d2e, 0xff242021, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff221e1f, 0xff262223, 0xff343132, 0xff373334, 0xff363334, 0xff2d2a2b, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff292526, 0xff353132, 0xff363334, 0xff363334, 0xff2a2728, 0xff221e1f, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff1f1b1c, 0xff1f1a1b, 0xff403d3e, 0xff6b6869, 0xff848283, 0xff8c8a8a, 0xff868384, 0xff6f6d6d, 0xff4b4748, 0xff242122, 0xff1d191a, 0xff221e1f, 0xff292526, 0xff363233, 0xff373334, 0xff363233, 0xff2a2728, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff2e2a2b, 0xff373334, 0xff373334, 0xff343131, 0xff252122, 0xff201c1d, 0xff1d191a, 0xff373334, 0xff625f60, 0xff807e7e, 0xff8c8a8b, 0xff888686, 0xff6f6c6d, 0xff433f40, 0xff1f1b1c, 0xff1f1b1c, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff312e2f, 0xff373334, 0xff373334, 0xff312d2e, 0xff242021, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff1f1b1c, 0xff1d191a, 0xff322e2f, 0xff565354, 0xff737172, 0xff878485, 0xff8d8b8b, 0xff888687, 0xff7d7b7c, 0xff676464, 0xff4d494a, 0xff2d292a, 0xff1d191a, 0xff1c1819, 0xff221d1e, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xd8231f20, 0x30231f20, 0x00000000, 0x00231f20, 0x00000000,
+ 0x00000000, 0x00231f20, 0x00000000, 0x00000000, 0x73231f20, 0xfb231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff211d1e, 0xff1f1b1c, 0xff1f1b1c, 0xff1f1b1c, 0xff221e1f, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff201c1d, 0xff1f1b1c, 0xff1f1b1c, 0xff1f1b1c, 0xff221e1f, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff211d1e, 0xff1f1b1c, 0xff1f1b1c, 0xff1f1b1c, 0xff1f1b1c, 0xff211d1e, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff201c1d, 0xff1c1819, 0xff1c1819, 0xff1e1a1b, 0xff1e1a1b, 0xff1d181a, 0xff1b1718, 0xff1f1b1c, 0xff231f20, 0xff231f20, 0xff231f20, 0xff201c1d, 0xff1f1b1c, 0xff1f1b1c, 0xff201c1d, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff221e1f, 0xff1f1b1c, 0xff1f1b1c, 0xff1f1b1c, 0xff211d1e, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff221e1f, 0xff1f1b1c, 0xff1f1b1c, 0xff1f1b1c, 0xff221d1e, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff221e1f, 0xff1e1a1b, 0xff1b1718, 0xff1d191a, 0xff1e1a1b, 0xff1d191a, 0xff1b1718, 0xff1d191a, 0xff211d1e, 0xff231f20, 0xff231f20, 0xff221e1f, 0xff1f1b1c, 0xff1f1b1c, 0xff1f1b1c, 0xff221e1f, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff211d1e, 0xff1f1b1c, 0xff1f1b1c, 0xff201b1d, 0xff231f20, 0xff231f20, 0xff231f20, 0xff1f1b1c, 0xff1b1718, 0xff1d191a, 0xff1e1a1b, 0xff1e1a1b, 0xff1c1718, 0xff1d191a, 0xff221e1f, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff201c1d, 0xff1f1b1c, 0xff1f1b1c, 0xff201c1d, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff1f1b1c, 0xff1c1718, 0xff1c1819, 0xff1e191a, 0xff1f1a1b, 0xff1e1a1b, 0xff1d1819, 0xff1b1718, 0xff1d191a, 0xff201c1d, 0xff221e1f, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xfb231f20, 0x73231f20, 0x00000000, 0x00000000, 0x00231f20, 0x00000000,
+ 0x00000000, 0x00000000, 0x00231f20, 0x00000000, 0x0e231f20, 0xb5231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff221e1f, 0xff221e1f, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff221e1f, 0xff221e1f, 0xff221e1f, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff221e1f, 0xff221e1f, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff221e1f, 0xff221e1f, 0xff221e1f, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xb5231f20, 0x0e231f20, 0x00000000, 0x00231f20, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x2a231f20, 0xde231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xde231f20, 0x2a231f20, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00231f20, 0x00000000, 0x51231f20, 0xf4231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xf4231f20, 0x51231f20, 0x00000000, 0x00231f20, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00231f20, 0x03231f20, 0x74231f20, 0xf5231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xf5231f20, 0x74231f20, 0x03231f20, 0x00231f20, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00231f20, 0x00000000, 0x0a231f20, 0x84231f20, 0xf5231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xf5231f20, 0x84231f20, 0x0a231f20, 0x00000000, 0x00231f20, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x10231f20, 0x84231f20, 0xf5231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xf5231f20, 0x84231f20, 0x10231f20, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00231f20, 0x00000000, 0x00000000, 0x0a231f20, 0x72231f20, 0xf4231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xf4231f20, 0x72231f20, 0x0a231f20, 0x00000000, 0x00000000, 0x00231f20, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00231f20, 0x00000000, 0x00000000, 0x03231f20, 0x4f231f20, 0xdd231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xdd231f20, 0x4f231f20, 0x03231f20, 0x00000000, 0x00000000, 0x00231f20, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00231f20, 0x00231f20, 0x00000000, 0x29231f20, 0xb6231f20, 0xfb231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xfb231f20, 0xb6231f20, 0x29231f20, 0x00000000, 0x00231f20, 0x00231f20, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00231f20, 0x00000000, 0x0e231f20, 0x73231f20, 0xd8231f20, 0xfb231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xfb231f20, 0xd8231f20, 0x73231f20, 0x0e231f20, 0x00000000, 0x00231f20, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x30231f20, 0x8e231f20, 0xd6231f20, 0xfd231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xfd231f20, 0xd6231f20, 0x8e231f20, 0x30231f20, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00231f20, 0x00000000, 0x00000000, 0x04231f20, 0x32231f20, 0x7b231f20, 0xc2231f20, 0xf3231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xf3231f20, 0xc2231f20, 0x7b231f20, 0x32231f20, 0x04231f20, 0x00000000, 0x00000000, 0x00231f20, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00231f20, 0x00231f20, 0x00000000, 0x00000000, 0x06231f20, 0x1c231f20, 0x49231f20, 0x8c231f20, 0xc4231f20, 0xf0231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xf0231f20, 0xc4231f20, 0x8c231f20, 0x49231f20, 0x1c231f20, 0x06231f20, 0x00000000, 0x00000000, 0x00231f20, 0x00231f20, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00231f20, 0x00000000, 0x00000000, 0x00000000, 0x01231f20, 0x04231f20, 0x11231f20, 0x2e231f20, 0x62231f20, 0x8e231f20, 0xb4231f20, 0xd4231f20, 0xe5231f20, 0xf2231f20, 0xfd231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xff231f20, 0xfd231f20, 0xf2231f20, 0xe5231f20, 0xd4231f20, 0xb4231f20, 0x8e231f20, 0x62231f20, 0x2e231f20, 0x11231f20, 0x04231f20, 0x01231f20, 0x00000000, 0x00000000, 0x00000000, 0x00231f20, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
+};
diff --git a/src/emu/ui/dirmenu.cpp b/src/emu/ui/dirmenu.cpp
new file mode 100644
index 00000000000..3ac9803cee6
--- /dev/null
+++ b/src/emu/ui/dirmenu.cpp
@@ -0,0 +1,690 @@
+// license:BSD-3-Clause
+// copyright-holders:Dankan1890
+/*********************************************************************
+
+ ui/dirmenu.cpp
+
+ Internal UI user interface.
+
+*********************************************************************/
+
+#include "emu.h"
+#include "ui/ui.h"
+#include "ui/menu.h"
+#include "ui/dirmenu.h"
+#include "ui/datfile.h"
+#include "ui/utils.h"
+#include "ui/optsmenu.h"
+
+struct folders_entry
+{
+ const char *name;
+ const char *option;
+};
+
+static const folders_entry s_folders_entry[] =
+{
+ { "ROMs", OPTION_MEDIAPATH },
+ { "UI", OPTION_UI_PATH },
+ { "Samples", OPTION_SAMPLEPATH },
+ { "DATs", OPTION_HISTORY_PATH },
+ { "INIs", OPTION_INIPATH },
+ { "Extra INIs", OPTION_EXTRAINI_PATH },
+ { "Icons", OPTION_ICONS_PATH },
+ { "Cheats", OPTION_CHEATPATH },
+ { "Snapshots", OPTION_SNAPSHOT_DIRECTORY },
+ { "Cabinets", OPTION_CABINETS_PATH },
+ { "Flyers", OPTION_FLYERS_PATH },
+ { "Titles", OPTION_TITLES_PATH },
+ { "Ends", OPTION_ENDS_PATH },
+ { "PCBs", OPTION_PCBS_PATH },
+ { "Marquees", OPTION_MARQUEES_PATH },
+ { "Controls Panels", OPTION_CPANELS_PATH },
+ { "Crosshairs", OPTION_CROSSHAIRPATH },
+ { "Artworks", OPTION_ARTPATH },
+ { "Bosses", OPTION_BOSSES_PATH },
+ { "Artworks Preview", OPTION_ARTPREV_PATH },
+ { "Select", OPTION_SELECT_PATH },
+ { "GameOver", OPTION_GAMEOVER_PATH },
+ { "HowTo", OPTION_HOWTO_PATH },
+ { "Logos", OPTION_LOGOS_PATH },
+ { "Scores", OPTION_SCORES_PATH },
+ { "Versus", OPTION_VERSUS_PATH },
+ { nullptr }
+};
+
+/**************************************************
+ MENU ADD FOLDER
+**************************************************/
+//-------------------------------------------------
+// ctor / dtor
+//-------------------------------------------------
+
+ui_menu_add_change_folder::ui_menu_add_change_folder(running_machine &machine, render_container *container, int ref, bool _change) : ui_menu(machine, container)
+{
+ m_ref = ref - 1;
+ m_change = _change;
+ m_search[0] = '\0';
+
+ // configure the starting's path
+ char *dst = nullptr;
+ osd_get_full_path(&dst, ".");
+ m_current_path = dst;
+ osd_free(dst);
+}
+
+ui_menu_add_change_folder::~ui_menu_add_change_folder()
+{
+}
+
+//-------------------------------------------------
+// handle
+//-------------------------------------------------
+
+void ui_menu_add_change_folder::handle()
+{
+ // process the menu
+ const ui_menu_event *m_event = process(0);
+
+ if (m_event != nullptr && m_event->itemref != nullptr)
+ {
+ if (m_event->iptkey == IPT_UI_SELECT)
+ {
+ int index = (FPTR)m_event->itemref - 1;
+ const ui_menu_item &pitem = item[index];
+
+ // go up to the parent path
+ if (!strcmp(pitem.text, ".."))
+ {
+ size_t first_sep = m_current_path.find_first_of(PATH_SEPARATOR[0]);
+ size_t last_sep = m_current_path.find_last_of(PATH_SEPARATOR[0]);
+ if (first_sep != last_sep)
+ m_current_path.erase(++last_sep);
+ }
+ else
+ {
+ // if isn't a drive, appends the directory
+ if (strcmp(pitem.subtext, "[DRIVE]") != 0)
+ {
+ if (m_current_path[m_current_path.length() - 1] == PATH_SEPARATOR[0])
+ m_current_path.append(pitem.text);
+ else
+ m_current_path.append(PATH_SEPARATOR).append(pitem.text);
+ }
+ else
+ m_current_path = pitem.text;
+ }
+
+ // reset the char buffer also in this case
+ if (m_search[0] != 0)
+ m_search[0] = '\0';
+ reset(UI_MENU_RESET_SELECT_FIRST);
+ }
+ else if (m_event->iptkey == IPT_SPECIAL)
+ {
+ int buflen = strlen(m_search);
+ bool update_selected = FALSE;
+
+ // if it's a backspace and we can handle it, do so
+ if ((m_event->unichar == 8 || m_event->unichar == 0x7f) && buflen > 0)
+ {
+ *(char *)utf8_previous_char(&m_search[buflen]) = 0;
+ update_selected = TRUE;
+ }
+ // if it's any other key and we're not maxed out, update
+ else if (m_event->unichar >= ' ' && m_event->unichar < 0x7f)
+ {
+ buflen += utf8_from_uchar(&m_search[buflen], ARRAY_LENGTH(m_search) - buflen, m_event->unichar);
+ m_search[buflen] = 0;
+ update_selected = TRUE;
+ }
+ // Tab key, save current path
+ else if (m_event->unichar == 0x09)
+ {
+ std::string error_string;
+ if (m_change)
+ {
+ if (machine().ui().options().exists(s_folders_entry[m_ref].option))
+ {
+ machine().ui().options().set_value(s_folders_entry[m_ref].option, m_current_path.c_str(), OPTION_PRIORITY_CMDLINE, error_string);
+ }
+ else {
+ if (strcmp(machine().options().value(s_folders_entry[m_ref].option), m_current_path.c_str()) != 0)
+ {
+ machine().options().set_value(s_folders_entry[m_ref].option, m_current_path.c_str(), OPTION_PRIORITY_CMDLINE, error_string);
+ machine().options().mark_changed(s_folders_entry[m_ref].option);
+ }
+ }
+ machine().datfile().reset_run();
+ }
+ else
+ {
+ std::string tmppath;
+ if (machine().ui().options().exists(s_folders_entry[m_ref].option)) {
+ tmppath.assign(machine().ui().options().value(s_folders_entry[m_ref].option)).append(";").append(m_current_path.c_str());
+ }
+ else {
+ tmppath.assign(machine().options().value(s_folders_entry[m_ref].option)).append(";").append(m_current_path.c_str());
+ }
+
+ if (machine().ui().options().exists(s_folders_entry[m_ref].option))
+ {
+ machine().ui().options().set_value(s_folders_entry[m_ref].option, tmppath.c_str(), OPTION_PRIORITY_CMDLINE, error_string);
+ }
+ else {
+ if (strcmp(machine().options().value(s_folders_entry[m_ref].option), tmppath.c_str()) != 0)
+ {
+ machine().options().set_value(s_folders_entry[m_ref].option, tmppath.c_str(), OPTION_PRIORITY_CMDLINE, error_string);
+ machine().options().mark_changed(s_folders_entry[m_ref].option);
+ }
+ }
+ }
+
+ ui_menu::menu_stack->parent->reset(UI_MENU_RESET_SELECT_FIRST);
+ ui_menu::stack_pop(machine());
+ }
+
+ // check for entries which matches our search buffer
+ if (update_selected)
+ {
+ const int cur_selected = selected;
+ int entry, bestmatch = 0;
+
+ // from current item to the end
+ for (entry = cur_selected; entry < item.size(); entry++)
+ if (item[entry].ref != nullptr && m_search[0] != 0)
+ {
+ int match = 0;
+ for (int i = 0; i < ARRAY_LENGTH(m_search); i++)
+ {
+ if (core_strnicmp(item[entry].text, m_search, i) == 0)
+ match = i;
+ }
+
+ if (match > bestmatch)
+ {
+ bestmatch = match;
+ selected = entry;
+ }
+ }
+
+ // and from the first item to current one
+ for (entry = 0; entry < cur_selected; entry++)
+ {
+ if (item[entry].ref != nullptr && m_search[0] != 0)
+ {
+ int match = 0;
+ for (int i = 0; i < ARRAY_LENGTH(m_search); i++)
+ {
+ if (core_strnicmp(item[entry].text, m_search, i) == 0)
+ match = i;
+ }
+
+ if (match > bestmatch)
+ {
+ bestmatch = match;
+ selected = entry;
+ }
+ }
+ }
+ }
+ }
+ else if (m_event->iptkey == IPT_UI_CANCEL)
+ {
+ // reset the char buffer also in this case
+ if (m_search[0] != 0)
+ m_search[0] = '\0';
+ }
+ }
+}
+
+//-------------------------------------------------
+// populate
+//-------------------------------------------------
+
+void ui_menu_add_change_folder::populate()
+{
+ // open a path
+ const char *volume_name;
+ file_enumerator path(m_current_path.c_str());
+ const osd_directory_entry *dirent;
+ int folders_count = 0;
+
+ // add the drives
+ for (int i = 0; (volume_name = osd_get_volume_name(i)) != nullptr; i++)
+ item_append(volume_name, "[DRIVE]", 0, (void *)(FPTR)++folders_count);
+
+ // add the directories
+ while ((dirent = path.next()) != nullptr)
+ {
+ if (dirent->type == ENTTYPE_DIR && strcmp(dirent->name, ".") != 0)
+ item_append(dirent->name, "[DIR]", 0, (void *)(FPTR)++folders_count);
+ }
+
+ item_append(MENU_SEPARATOR_ITEM, nullptr, 0, nullptr);
+
+ // configure the custom rendering
+ customtop = 2.0f * machine().ui().get_line_height() + 3.0f * UI_BOX_TB_BORDER;
+ custombottom = 1.0f * machine().ui().get_line_height() + 3.0f * UI_BOX_TB_BORDER;
+}
+
+//-------------------------------------------------
+// perform our special rendering
+//-------------------------------------------------
+
+void ui_menu_add_change_folder::custom_render(void *selectedref, float top, float bottom, float origx1, float origy1, float origx2, float origy2)
+{
+ float width, maxwidth = origx2 - origx1;
+ ui_manager &mui = machine().ui();
+ std::string tempbuf[2];
+ tempbuf[0] = (m_change) ? "Change" : "Add";
+ tempbuf[0].append(" ").append(s_folders_entry[m_ref].name).append(" Folder - Search: ").append(m_search).append("_");
+ tempbuf[1] = m_current_path;
+
+ // get the size of the text
+ for (auto & elem: tempbuf)
+ {
+ mui.draw_text_full(container, elem.c_str(), 0.0f, 0.0f, 1.0f, JUSTIFY_CENTER, WRAP_NEVER,
+ DRAW_NONE, ARGB_WHITE, ARGB_BLACK, &width, nullptr);
+ width += (2.0f * UI_BOX_LR_BORDER) + 0.01f;
+ maxwidth = MAX(width, maxwidth);
+ }
+
+ // compute our bounds
+ float x1 = 0.5f - 0.5f * maxwidth;
+ float x2 = x1 + maxwidth;
+ float y1 = origy1 - top;
+ float y2 = origy1 - UI_BOX_TB_BORDER;
+
+ // draw a box
+ mui.draw_outlined_box(container, x1, y1, x2, y2, UI_GREEN_COLOR);
+
+ // take off the borders
+ x1 += UI_BOX_LR_BORDER;
+ x2 -= UI_BOX_LR_BORDER;
+ y1 += UI_BOX_TB_BORDER;
+
+ // draw the text within it
+ for (auto & elem : tempbuf)
+ {
+ mui.draw_text_full(container, elem.c_str(), x1, y1, x2 - x1, JUSTIFY_CENTER, WRAP_NEVER,
+ DRAW_NORMAL, UI_TEXT_COLOR, UI_TEXT_BG_COLOR, nullptr, nullptr);
+ y1 = y1 + mui.get_line_height();
+ }
+
+ // bottom text
+ tempbuf[0] = "Press TAB to set";
+
+ mui.draw_text_full(container, tempbuf[0].c_str(), 0.0f, 0.0f, 1.0f, JUSTIFY_CENTER, WRAP_TRUNCATE,
+ DRAW_NONE, ARGB_WHITE, ARGB_BLACK, &width, nullptr);
+ width += 2 * UI_BOX_LR_BORDER;
+ maxwidth = MAX(maxwidth, width);
+
+ // compute our bounds
+ x1 = 0.5f - 0.5f * maxwidth;
+ x2 = x1 + maxwidth;
+ y1 = origy2 + UI_BOX_TB_BORDER;
+ y2 = origy2 + bottom;
+
+ // draw a box
+ mui.draw_outlined_box(container, x1, y1, x2, y2, UI_RED_COLOR);
+
+ // take off the borders
+ x1 += UI_BOX_LR_BORDER;
+ x2 -= UI_BOX_LR_BORDER;
+ y1 += UI_BOX_TB_BORDER;
+
+ // draw the text within it
+ mui.draw_text_full(container, tempbuf[0].c_str(), x1, y1, x2 - x1, JUSTIFY_CENTER, WRAP_TRUNCATE,
+ DRAW_NORMAL, UI_TEXT_COLOR, UI_TEXT_BG_COLOR, nullptr, nullptr);
+
+}
+
+/**************************************************
+ MENU DIRECTORY
+**************************************************/
+//-------------------------------------------------
+// ctor / dtor
+//-------------------------------------------------
+
+ui_menu_directory::ui_menu_directory(running_machine &machine, render_container *container) : ui_menu(machine, container)
+{
+}
+
+ui_menu_directory::~ui_menu_directory()
+{
+ save_ui_options(machine());
+ ui_globals::reset = true;
+}
+
+//-------------------------------------------------
+// handle
+//-------------------------------------------------
+
+void ui_menu_directory::handle()
+{
+ // process the menu
+ const ui_menu_event *m_event = process(0);
+
+ if (m_event != nullptr && m_event->itemref != nullptr && m_event->iptkey == IPT_UI_SELECT)
+ {
+ int ref = (FPTR)m_event->itemref;
+ bool change = (ref == HISTORY_FOLDERS || ref == EXTRAINI_FOLDERS || ref == UI_FOLDERS);
+ ui_menu::stack_push(global_alloc_clear<ui_menu_display_actual>(machine(), container, ref, change));
+ }
+}
+
+//-------------------------------------------------
+// populate
+//-------------------------------------------------
+
+void ui_menu_directory::populate()
+{
+ item_append("Roms", nullptr, 0, (void *)(FPTR)ROM_FOLDERS);
+ item_append("UI", nullptr, 0, (void *)(FPTR)UI_FOLDERS);
+ item_append("Samples", nullptr, 0, (void *)(FPTR)SAMPLE_FOLDERS);
+ item_append("INIs", nullptr, 0, (void *)(FPTR)INI_FOLDERS);
+ item_append("Artwork", nullptr, 0, (void *)(FPTR)ARTWORK_FOLDERS);
+ item_append("DATs (History, Mameinfo, etc...)", nullptr, 0, (void *)(FPTR)HISTORY_FOLDERS);
+ item_append("Extra INI (Category, etc...)", nullptr, 0, (void *)(FPTR)EXTRAINI_FOLDERS);
+ item_append("Icons", nullptr, 0, (void *)(FPTR)ICON_FOLDERS);
+ item_append("Cheats", nullptr, 0, (void *)(FPTR)CHEAT_FOLDERS);
+ item_append("Snapshots", nullptr, 0, (void *)(FPTR)SNAPSHOT_FOLDERS);
+ item_append("Cabinets", nullptr, 0, (void *)(FPTR)CABINET_FOLDERS);
+ item_append("Flyers", nullptr, 0, (void *)(FPTR)FLYER_FOLDERS);
+ item_append("Titles", nullptr, 0, (void *)(FPTR)TITLE_FOLDERS);
+ item_append("Ends", nullptr, 0, (void *)(FPTR)ENDS_FOLDERS);
+ item_append("PCBs", nullptr, 0, (void *)(FPTR)PCB_FOLDERS);
+ item_append("Marquees", nullptr, 0, (void *)(FPTR)MARQUEES_FOLDERS);
+ item_append("Control Panels", nullptr, 0, (void *)(FPTR)CPANEL_FOLDERS);
+ item_append("Bosses", nullptr, 0, (void *)(FPTR)BOSSES_FOLDERS);
+ item_append("Versus", nullptr, 0, (void *)(FPTR)VERSUS_FOLDERS);
+ item_append("Game Over", nullptr, 0, (void *)(FPTR)GAMEOVER_FOLDERS);
+ item_append("How To", nullptr, 0, (void *)(FPTR)HOWTO_FOLDERS);
+ item_append("Select", nullptr, 0, (void *)(FPTR)SELECT_FOLDERS);
+ item_append("Artwork Preview", nullptr, 0, (void *)(FPTR)ARTPREV_FOLDERS);
+ item_append("Scores", nullptr, 0, (void *)(FPTR)SCORES_FOLDERS);
+ item_append("Logos", nullptr, 0, (void *)(FPTR)LOGO_FOLDERS);
+ item_append("Crosshairs", nullptr, 0, (void *)(FPTR)CROSSHAIR_FOLDERS);
+
+ item_append(MENU_SEPARATOR_ITEM, nullptr, 0, nullptr);
+ customtop = machine().ui().get_line_height() + 3.0f * UI_BOX_TB_BORDER;
+}
+
+//-------------------------------------------------
+// perform our special rendering
+//-------------------------------------------------
+
+void ui_menu_directory::custom_render(void *selectedref, float top, float bottom, float origx1, float origy1, float origx2, float origy2)
+{
+ float width;
+ ui_manager &mui = machine().ui();
+
+ // get the size of the text
+ mui.draw_text_full(container, "Folder Setup", 0.0f, 0.0f, 1.0f, JUSTIFY_CENTER, WRAP_TRUNCATE,
+ DRAW_NONE, ARGB_WHITE, ARGB_BLACK, &width, nullptr);
+ width += (2.0f * UI_BOX_LR_BORDER) + 0.01f;
+ float maxwidth = MAX(width, origx2 - origx1);
+
+ // compute our bounds
+ float x1 = 0.5f - 0.5f * maxwidth;
+ float x2 = x1 + maxwidth;
+ float y1 = origy1 - top;
+ float y2 = origy1 - UI_BOX_TB_BORDER;
+
+ // draw a box
+ mui.draw_outlined_box(container, x1, y1, x2, y2, UI_GREEN_COLOR);
+
+ // take off the borders
+ x1 += UI_BOX_LR_BORDER;
+ x2 -= UI_BOX_LR_BORDER;
+ y1 += UI_BOX_TB_BORDER;
+
+ // draw the text within it
+ mui.draw_text_full(container, "Folder Setup", x1, y1, x2 - x1, JUSTIFY_CENTER, WRAP_TRUNCATE,
+ DRAW_NORMAL, UI_TEXT_COLOR, UI_TEXT_BG_COLOR, nullptr, nullptr);
+}
+
+/**************************************************
+ MENU DISPLAY PATH
+**************************************************/
+//-------------------------------------------------
+// ctor / dtor
+//-------------------------------------------------
+
+ui_menu_display_actual::ui_menu_display_actual(running_machine &machine, render_container *container, int ref, bool _change) : ui_menu(machine, container)
+{
+ m_ref = ref;
+ m_change = _change;
+}
+
+ui_menu_display_actual::~ui_menu_display_actual()
+{
+}
+
+//-------------------------------------------------
+// handle
+//-------------------------------------------------
+
+void ui_menu_display_actual::handle()
+{
+ // process the menu
+ const ui_menu_event *m_event = process(0);
+ if (m_event != nullptr && m_event->itemref != nullptr && m_event->iptkey == IPT_UI_SELECT)
+ switch ((FPTR)m_event->itemref)
+ {
+ case REMOVE_FOLDER:
+ ui_menu::stack_push(global_alloc_clear<ui_menu_remove_folder>(machine(), container, m_ref));
+ break;
+
+ case ADD_FOLDER:
+ case CHANGE_FOLDER:
+ ui_menu::stack_push(global_alloc_clear<ui_menu_add_change_folder>(machine(), container, m_ref, m_change));
+ break;
+ }
+}
+
+//-------------------------------------------------
+// populate
+//-------------------------------------------------
+
+void ui_menu_display_actual::populate()
+{
+ m_tempbuf.assign("Current ").append(s_folders_entry[m_ref - 1].name).append(" Folders");
+ if (machine().ui().options().exists(s_folders_entry[m_ref - 1].option)) {
+ m_searchpath.assign(machine().ui().options().value(s_folders_entry[m_ref - 1].option));
+ }
+ else {
+ m_searchpath.assign(machine().options().value(s_folders_entry[m_ref - 1].option));
+ }
+ path_iterator path(m_searchpath.c_str());
+ std::string curpath;
+ m_folders.clear();
+ while (path.next(curpath, nullptr))
+ m_folders.push_back(curpath);
+
+ if (m_change)
+ item_append("Change Folder", nullptr, 0, (void *)CHANGE_FOLDER);
+ else
+ item_append("Add Folder", nullptr, 0, (void *)ADD_FOLDER);
+
+ if (m_folders.size() > 1)
+ item_append("Remove Folder", nullptr, 0, (void *)REMOVE_FOLDER);
+
+ item_append(MENU_SEPARATOR_ITEM, nullptr, 0, nullptr);
+ customtop = (m_folders.size() + 1) * machine().ui().get_line_height() + 6.0f * UI_BOX_TB_BORDER;
+}
+
+//-------------------------------------------------
+// perform our special rendering
+//-------------------------------------------------
+
+void ui_menu_display_actual::custom_render(void *selectedref, float top, float bottom, float origx1, float origy1, float origx2, float origy2)
+{
+ float width, maxwidth = origx2 - origx1;
+ ui_manager &mui = machine().ui();
+ float lineh = mui.get_line_height();
+
+ for (auto & elem : m_folders)
+ {
+ mui.draw_text_full(container, elem.c_str(), 0.0f, 0.0f, 1.0f, JUSTIFY_LEFT, WRAP_TRUNCATE, DRAW_NONE, ARGB_WHITE, ARGB_BLACK, &width, nullptr);
+ width += (2.0f * UI_BOX_LR_BORDER) + 0.01f;
+ maxwidth = MAX(maxwidth, width);
+ }
+
+ // get the size of the text
+ mui.draw_text_full(container, m_tempbuf.c_str(), 0.0f, 0.0f, 1.0f, JUSTIFY_CENTER, WRAP_TRUNCATE, DRAW_NONE, ARGB_WHITE, ARGB_BLACK, &width, nullptr);
+ width += (2.0f * UI_BOX_LR_BORDER) + 0.01f;
+ maxwidth = MAX(width, maxwidth);
+
+ // compute our bounds
+ float x1 = 0.5f - 0.5f * maxwidth;
+ float x2 = x1 + maxwidth;
+ float y1 = origy1 - top;
+ float y2 = y1 + lineh + 2.0f * UI_BOX_TB_BORDER;
+
+ // draw a box
+ mui.draw_outlined_box(container, x1, y1, x2, y2, UI_GREEN_COLOR);
+
+ // take off the borders
+ x1 += UI_BOX_LR_BORDER;
+ x2 -= UI_BOX_LR_BORDER;
+ y1 += UI_BOX_TB_BORDER;
+
+ // draw the text within it
+ mui.draw_text_full(container, m_tempbuf.c_str(), x1, y1, x2 - x1, JUSTIFY_CENTER, WRAP_TRUNCATE,
+ DRAW_NORMAL, UI_TEXT_COLOR, UI_TEXT_BG_COLOR, nullptr, nullptr);
+
+ // compute our bounds
+ x1 = 0.5f - 0.5f * maxwidth;
+ x2 = x1 + maxwidth;
+ y1 = y2 + 2.0f * UI_BOX_TB_BORDER;
+ y2 = origy1 - UI_BOX_TB_BORDER;
+
+ // draw a box
+ mui.draw_outlined_box(container, x1, y1, x2, y2, UI_BACKGROUND_COLOR);
+
+ // take off the borders
+ x1 += UI_BOX_LR_BORDER;
+ x2 -= UI_BOX_LR_BORDER;
+ y1 += UI_BOX_TB_BORDER;
+
+ // draw the text within it
+ for (auto & elem : m_folders)
+ {
+ mui.draw_text_full(container, elem.c_str(), x1, y1, x2 - x1, JUSTIFY_LEFT, WRAP_TRUNCATE,
+ DRAW_NORMAL, UI_TEXT_COLOR, UI_TEXT_BG_COLOR, nullptr, nullptr);
+ y1 += lineh;
+ }
+
+}
+
+/**************************************************
+ MENU REMOVE FOLDER
+**************************************************/
+//-------------------------------------------------
+// ctor / dtor
+//-------------------------------------------------
+
+ui_menu_remove_folder::ui_menu_remove_folder(running_machine &machine, render_container *container, int ref) : ui_menu(machine, container)
+{
+ m_ref = ref - 1;
+ if (machine.ui().options().exists(s_folders_entry[m_ref].option)) {
+ m_searchpath.assign(machine.ui().options().value(s_folders_entry[m_ref].option));
+ }
+ else {
+ m_searchpath.assign(machine.options().value(s_folders_entry[m_ref].option));
+ }
+
+}
+
+ui_menu_remove_folder::~ui_menu_remove_folder()
+{
+}
+
+//-------------------------------------------------
+// handle
+//-------------------------------------------------
+
+void ui_menu_remove_folder::handle()
+{
+ // process the menu
+ const ui_menu_event *m_event = process(0);
+ if (m_event != nullptr && m_event->itemref != nullptr && m_event->iptkey == IPT_UI_SELECT)
+ {
+ int index = (FPTR)m_event->itemref - 1;
+ std::string tmppath;
+ for (size_t i = 0; i < item.size() - 2; i++)
+ if (i != index)
+ tmppath.append(item[i].text).append(";");
+
+ tmppath.substr(0, tmppath.size() - 1);
+ std::string error_string;
+ if (machine().ui().options().exists(s_folders_entry[m_ref].option))
+ {
+ machine().ui().options().set_value(s_folders_entry[m_ref].option, tmppath.c_str(), OPTION_PRIORITY_CMDLINE, error_string);
+ }
+ else {
+ if (strcmp(machine().options().value(s_folders_entry[m_ref].option),tmppath.c_str())!=0)
+ {
+ machine().options().set_value(s_folders_entry[m_ref].option, tmppath.c_str(), OPTION_PRIORITY_CMDLINE, error_string);
+ machine().options().mark_changed(s_folders_entry[m_ref].option);
+ }
+ }
+
+ ui_menu::menu_stack->parent->reset(UI_MENU_RESET_REMEMBER_REF);
+ ui_menu::stack_pop(machine());
+ }
+}
+
+//-------------------------------------------------
+// populate menu
+//-------------------------------------------------
+
+void ui_menu_remove_folder::populate()
+{
+ path_iterator path(m_searchpath.c_str());
+ std::string curpath;
+ int folders_count = 0;
+
+ while (path.next(curpath, nullptr))
+ item_append(curpath.c_str(), nullptr, 0, (void *)(FPTR)++folders_count);
+
+ item_append(MENU_SEPARATOR_ITEM, nullptr, 0, nullptr);
+
+ customtop = machine().ui().get_line_height() + 3.0f * UI_BOX_TB_BORDER;
+}
+
+//-------------------------------------------------
+// perform our special rendering
+//-------------------------------------------------
+
+void ui_menu_remove_folder::custom_render(void *selectedref, float top, float bottom, float origx1, float origy1, float origx2, float origy2)
+{
+ float width;
+ ui_manager &mui = machine().ui();
+ std::string tempbuf = std::string("Remove ").append(s_folders_entry[m_ref].name).append(" Folder");
+
+ // get the size of the text
+ mui.draw_text_full(container, tempbuf.c_str(), 0.0f, 0.0f, 1.0f, JUSTIFY_CENTER, WRAP_NEVER, DRAW_NONE, ARGB_WHITE, ARGB_BLACK, &width, nullptr);
+ width += (2.0f * UI_BOX_LR_BORDER) + 0.01f;
+ float maxwidth = MAX(width, origx2 - origx1);
+
+ // compute our bounds
+ float x1 = 0.5f - 0.5f * maxwidth;
+ float x2 = x1 + maxwidth;
+ float y1 = origy1 - top;
+ float y2 = origy1 - UI_BOX_TB_BORDER;
+
+ // draw a box
+ mui.draw_outlined_box(container, x1, y1, x2, y2, UI_GREEN_COLOR);
+
+ // take off the borders
+ x1 += UI_BOX_LR_BORDER;
+ x2 -= UI_BOX_LR_BORDER;
+ y1 += UI_BOX_TB_BORDER;
+
+ // draw the text within it
+ mui.draw_text_full(container, tempbuf.c_str(), x1, y1, x2 - x1, JUSTIFY_CENTER, WRAP_NEVER, DRAW_NORMAL,
+ UI_TEXT_COLOR, UI_TEXT_BG_COLOR, nullptr, nullptr);
+}
diff --git a/src/emu/ui/dirmenu.h b/src/emu/ui/dirmenu.h
new file mode 100644
index 00000000000..47734fc6542
--- /dev/null
+++ b/src/emu/ui/dirmenu.h
@@ -0,0 +1,128 @@
+// license:BSD-3-Clause
+// copyright-holders:Dankan1890
+/***************************************************************************
+
+ ui/dirmenu.h
+
+ Internal UI user interface.
+
+***************************************************************************/
+
+#pragma once
+
+#ifndef __UI_DIRMENU_H__
+#define __UI_DIRMENU_H__
+
+//-------------------------------------------------
+// class directory menu
+//-------------------------------------------------
+
+class ui_menu_directory : public ui_menu
+{
+public:
+ ui_menu_directory(running_machine &machine, render_container *container);
+ virtual ~ui_menu_directory();
+ virtual void populate() override;
+ virtual void handle() override;
+ virtual void custom_render(void *selectedref, float top, float bottom, float x, float y, float x2, float y2) override;
+
+private:
+ enum
+ {
+ ROM_FOLDERS = 1,
+ UI_FOLDERS,
+ SAMPLE_FOLDERS,
+ HISTORY_FOLDERS,
+ INI_FOLDERS,
+ EXTRAINI_FOLDERS,
+ ICON_FOLDERS,
+ CHEAT_FOLDERS,
+ SNAPSHOT_FOLDERS,
+ CABINET_FOLDERS,
+ FLYER_FOLDERS,
+ TITLE_FOLDERS,
+ ENDS_FOLDERS,
+ PCB_FOLDERS,
+ MARQUEES_FOLDERS,
+ CPANEL_FOLDERS,
+ CROSSHAIR_FOLDERS,
+ ARTWORK_FOLDERS,
+ BOSSES_FOLDERS,
+ ARTPREV_FOLDERS,
+ SELECT_FOLDERS,
+ GAMEOVER_FOLDERS,
+ HOWTO_FOLDERS,
+ LOGO_FOLDERS,
+ SCORES_FOLDERS,
+ VERSUS_FOLDERS
+ };
+};
+
+//-------------------------------------------------
+// class directory specific menu
+//-------------------------------------------------
+
+class ui_menu_display_actual : public ui_menu
+{
+public:
+ ui_menu_display_actual(running_machine &machine, render_container *container, int selectedref, bool _change);
+ virtual ~ui_menu_display_actual();
+ virtual void populate() override;
+ virtual void handle() override;
+ virtual void custom_render(void *selectedref, float top, float bottom, float x, float y, float x2, float y2) override;
+
+private:
+ std::string m_tempbuf, m_searchpath;
+ std::vector<std::string> m_folders;
+ int m_ref;
+ bool m_change;
+
+ enum
+ {
+ ADD_FOLDER = 1,
+ REMOVE_FOLDER,
+ CHANGE_FOLDER
+ };
+};
+
+//-------------------------------------------------
+// class remove folder menu
+//-------------------------------------------------
+
+class ui_menu_remove_folder : public ui_menu
+{
+public:
+ ui_menu_remove_folder(running_machine &machine, render_container *container, int ref);
+ virtual ~ui_menu_remove_folder();
+ virtual void populate() override;
+ virtual void handle() override;
+ virtual void custom_render(void *selectedref, float top, float bottom, float x, float y, float x2, float y2) override;
+
+private:
+ std::string m_searchpath;
+ int m_ref;
+};
+
+//-------------------------------------------------
+// class add / change folder menu
+//-------------------------------------------------
+
+class ui_menu_add_change_folder : public ui_menu
+{
+public:
+ ui_menu_add_change_folder(running_machine &machine, render_container *container, int ref, bool change);
+ virtual ~ui_menu_add_change_folder();
+ virtual void populate() override;
+ virtual void handle() override;
+ virtual void custom_render(void *selectedref, float top, float bottom, float x, float y, float x2, float y2) override;
+
+ virtual bool menu_has_search_active() override { return (m_search[0] != 0); }
+
+private:
+ int m_ref;
+ std::string m_current_path;
+ char m_search[40];
+ bool m_change;
+};
+
+#endif /* __UI_DIRMENU_H__ */
diff --git a/src/emu/ui/dsplmenu.cpp b/src/emu/ui/dsplmenu.cpp
new file mode 100644
index 00000000000..cea63f34759
--- /dev/null
+++ b/src/emu/ui/dsplmenu.cpp
@@ -0,0 +1,201 @@
+// license:BSD-3-Clause
+// copyright-holders:Dankan1890
+/*********************************************************************
+
+ ui/dsplmenu.cpp
+
+ UI video options menu.
+
+*********************************************************************/
+
+#include "emu.h"
+#include "ui/ui.h"
+#include "ui/menu.h"
+#include "ui/dsplmenu.h"
+#include "ui/selector.h"
+#include "ui/utils.h"
+
+#if defined(UI_WINDOWS) && !defined(UI_SDL)
+#include "../osd/windows/winmain.h"
+#else
+#include "../osd/modules/lib/osdobj_common.h"
+#endif
+
+ui_menu_display_options::video_modes ui_menu_display_options::m_video[] = {
+ { "auto", "Auto" },
+ { "opengl", "OpenGL" },
+#if defined(UI_WINDOWS) && !defined(UI_SDL)
+ { "d3d", "Direct3D" },
+ { "gdi", "GDI" },
+ { "ddraw", "DirectDraw" }
+#else
+ { "soft", "Software" },
+ { "accel", "SDL2 Accelerated" }
+#endif
+};
+
+ui_menu_display_options::dspl_option ui_menu_display_options::m_options[] = {
+ { 0, nullptr, nullptr },
+ { 0, "Video Mode", OSDOPTION_VIDEO },
+#if defined(UI_WINDOWS) && !defined(UI_SDL)
+ { 0, "Hardware Stretch", WINOPTION_HWSTRETCH },
+ { 0, "Triple Buffering", WINOPTION_TRIPLEBUFFER },
+ { 0, "HLSL", WINOPTION_HLSL_ENABLE },
+#endif
+ { 0, "GLSL", OSDOPTION_GL_GLSL },
+ { 0, "Bilinear Filtering", OSDOPTION_FILTER },
+ { 0, "Bitmap Prescaling", OSDOPTION_PRESCALE },
+ { 0, "Multi-Threaded Rendering", OSDOPTION_MULTITHREADING },
+ { 0, "Window Mode", OSDOPTION_WINDOW },
+ { 0, "Enforce Aspect Ratio", OSDOPTION_KEEPASPECT },
+ { 0, "Start Out Maximized", OSDOPTION_MAXIMIZE },
+ { 0, "Synchronized Refresh", OSDOPTION_SYNCREFRESH },
+ { 0, "Wait Vertical Sync", OSDOPTION_WAITVSYNC }
+};
+
+
+//-------------------------------------------------
+// ctor
+//-------------------------------------------------
+
+ui_menu_display_options::ui_menu_display_options(running_machine &machine, render_container *container) : ui_menu(machine, container)
+{
+ osd_options &options = downcast<osd_options &>(machine.options());
+
+ for (int d = 2; d < ARRAY_LENGTH(m_options); ++d)
+ m_options[d].status = options.int_value(m_options[d].option);
+
+ m_options[1].status = 0;
+ for (int cur = 0; cur < ARRAY_LENGTH(m_video); ++cur)
+ if (!core_stricmp(options.video(), m_video[cur].option))
+ {
+ m_options[1].status = cur;
+ break;
+ }
+}
+
+//-------------------------------------------------
+// dtor
+//-------------------------------------------------
+
+ui_menu_display_options::~ui_menu_display_options()
+{
+ std::string error_string;
+ for (int d = 2; d < ARRAY_LENGTH(m_options); ++d)
+ {
+ if (machine().options().int_value(m_options[d].option)!=m_options[d].status)
+ {
+ machine().options().set_value(m_options[d].option, m_options[d].status, OPTION_PRIORITY_CMDLINE, error_string);
+ machine().options().mark_changed(m_options[d].option);
+ }
+ }
+ if (strcmp(machine().options().value(m_options[1].option), m_video[m_options[1].status].option)!=0)
+ {
+ machine().options().set_value(m_options[1].option, m_video[m_options[1].status].option, OPTION_PRIORITY_CMDLINE, error_string);
+ machine().options().mark_changed(m_options[1].option);
+
+ }
+ ui_globals::reset = true;
+}
+
+
+//-------------------------------------------------
+// handle
+//-------------------------------------------------
+
+void ui_menu_display_options::handle()
+{
+ bool changed = false;
+
+ // process the menu
+ const ui_menu_event *m_event = process(0);
+
+ if (m_event != nullptr && m_event->itemref != nullptr)
+ {
+ int value = (FPTR)m_event->itemref;
+ if (!strcmp(m_options[value].option, OSDOPTION_VIDEO) || !strcmp(m_options[value].option, OSDOPTION_PRESCALE))
+ {
+ if (m_event->iptkey == IPT_UI_LEFT || m_event->iptkey == IPT_UI_RIGHT)
+ {
+ changed = true;
+ (m_event->iptkey == IPT_UI_LEFT) ? m_options[value].status-- : m_options[value].status++;
+ }
+ else if (m_event->iptkey == IPT_UI_SELECT && !strcmp(m_options[value].option, OSDOPTION_VIDEO))
+ {
+ int total = ARRAY_LENGTH(m_video);
+ std::vector<std::string> s_sel(total);
+ for (int index = 0; index < total; ++index)
+ s_sel[index] = m_video[index].label;
+
+ ui_menu::stack_push(global_alloc_clear<ui_menu_selector>(machine(), container, s_sel, m_options[value].status));
+ }
+ }
+ else if (m_event->iptkey == IPT_UI_LEFT || m_event->iptkey == IPT_UI_RIGHT || m_event->iptkey == IPT_UI_SELECT)
+ {
+ changed = true;
+ m_options[value].status = !m_options[value].status;
+ }
+ }
+
+ if (changed)
+ reset(UI_MENU_RESET_REMEMBER_REF);
+}
+
+//-------------------------------------------------
+// populate
+//-------------------------------------------------
+
+void ui_menu_display_options::populate()
+{
+ // add video mode option
+ std::string v_text(m_video[m_options[1].status].label);
+ UINT32 arrow_flags = get_arrow_flags(0, ARRAY_LENGTH(m_video) - 1, m_options[1].status);
+ item_append(m_options[1].description, v_text.c_str(), arrow_flags, (void *)(FPTR)1);
+
+ // add options items
+ for (int opt = 2; opt < ARRAY_LENGTH(m_options); ++opt)
+ if (strcmp(m_options[opt].option, OSDOPTION_PRESCALE) != 0)
+ item_append(m_options[opt].description, m_options[opt].status ? "On" : "Off",
+ m_options[opt].status ? MENU_FLAG_RIGHT_ARROW : MENU_FLAG_LEFT_ARROW, (void *)(FPTR)opt);
+ else
+ {
+ strprintf(v_text, "%d", m_options[opt].status);
+ arrow_flags = get_arrow_flags(1, 3, m_options[opt].status);
+ item_append(m_options[opt].description, v_text.c_str(), arrow_flags, (void *)(FPTR)opt);
+ }
+
+ item_append(MENU_SEPARATOR_ITEM, nullptr, 0, nullptr);
+ customtop = machine().ui().get_line_height() + (3.0f * UI_BOX_TB_BORDER);
+}
+
+//-------------------------------------------------
+// perform our special rendering
+//-------------------------------------------------
+
+void ui_menu_display_options::custom_render(void *selectedref, float top, float bottom, float origx1, float origy1, float origx2, float origy2)
+{
+ float width;
+ ui_manager &mui = machine().ui();
+ mui.draw_text_full(container, "Display Options", 0.0f, 0.0f, 1.0f, JUSTIFY_CENTER, WRAP_TRUNCATE,
+ DRAW_NONE, ARGB_WHITE, ARGB_BLACK, &width, nullptr);
+ width += 2 * UI_BOX_LR_BORDER;
+ float maxwidth = MAX(origx2 - origx1, width);
+
+ // compute our bounds
+ float x1 = 0.5f - 0.5f * maxwidth;
+ float x2 = x1 + maxwidth;
+ float y1 = origy1 - top;
+ float y2 = origy1 - UI_BOX_TB_BORDER;
+
+ // draw a box
+ mui.draw_outlined_box(container, x1, y1, x2, y2, UI_GREEN_COLOR);
+
+ // take off the borders
+ x1 += UI_BOX_LR_BORDER;
+ x2 -= UI_BOX_LR_BORDER;
+ y1 += UI_BOX_TB_BORDER;
+
+ // draw the text within it
+ mui.draw_text_full(container, "Display Options", x1, y1, x2 - x1, JUSTIFY_CENTER, WRAP_TRUNCATE,
+ DRAW_NORMAL, UI_TEXT_COLOR, UI_TEXT_BG_COLOR, nullptr, nullptr);
+}
diff --git a/src/emu/ui/dsplmenu.h b/src/emu/ui/dsplmenu.h
new file mode 100644
index 00000000000..364ce12844e
--- /dev/null
+++ b/src/emu/ui/dsplmenu.h
@@ -0,0 +1,46 @@
+// license:BSD-3-Clause
+// copyright-holders:Dankan1890
+/***************************************************************************
+
+ ui/dsplmenu.h
+
+ UI video options menu.
+
+***************************************************************************/
+
+#pragma once
+
+#ifndef __UI_DSPLMENU_H__
+#define __UI_DSPLMENU_H__
+
+//-------------------------------------------------
+// class display options menu
+//-------------------------------------------------
+class ui_menu_display_options : public ui_menu
+{
+public:
+ ui_menu_display_options(running_machine &machine, render_container *container);
+ virtual ~ui_menu_display_options();
+ virtual void populate() override;
+ virtual void handle() override;
+ virtual void custom_render(void *selectedref, float top, float bottom, float x, float y, float x2, float y2) override;
+
+private:
+ struct dspl_option
+ {
+ UINT16 status;
+ const char *description;
+ const char *option;
+ };
+
+ struct video_modes
+ {
+ const char *option;
+ const char *label;
+ };
+
+ static video_modes m_video[];
+ static dspl_option m_options[];
+};
+
+#endif /* __UI_DSPLMENU_H__ */
diff --git a/src/emu/ui/filemngr.cpp b/src/emu/ui/filemngr.cpp
index d277d0bd847..cccc92888c4 100644
--- a/src/emu/ui/filemngr.cpp
+++ b/src/emu/ui/filemngr.cpp
@@ -195,10 +195,10 @@ void ui_menu_file_manager::force_file_manager(running_machine &machine, render_c
ui_menu::stack_reset(machine);
// add the quit entry followed by the game select entry
- ui_menu *quit = auto_alloc_clear(machine, <ui_menu_quit_game>(machine, container));
+ ui_menu *quit = global_alloc_clear<ui_menu_quit_game>(machine, container);
quit->set_special_main_menu(true);
ui_menu::stack_push(quit);
- ui_menu::stack_push(auto_alloc_clear(machine, <ui_menu_file_manager>(machine, container, warnings)));
+ ui_menu::stack_push(global_alloc_clear<ui_menu_file_manager>(machine, container, warnings));
// force the menus on
machine.ui().show_menu();
diff --git a/src/emu/ui/icorender.h b/src/emu/ui/icorender.h
new file mode 100644
index 00000000000..eec52b7e3ed
--- /dev/null
+++ b/src/emu/ui/icorender.h
@@ -0,0 +1,233 @@
+// license:BSD-3-Clause
+// copyright-holders:Dankan1890;Victor Laskin
+/***************************************************************************
+
+ ui/icorender.h
+
+ ICOns file loader.
+
+ Original code by Victor Laskin (victor.laskin@gmail.com)
+ http://vitiy.info/Code/ico.cpp
+
+***************************************************************************/
+#pragma once
+
+#ifndef __UI_ICORENDER_H__
+#define __UI_ICORENDER_H__
+
+// These next two structs represent how the icon information is stored
+// in an ICO file.
+typedef struct
+{
+ UINT8 bWidth; // Width of the image
+ UINT8 bHeight; // Height of the image (times 2)
+ UINT8 bColorCount; // Number of colors in image (0 if >=8bpp)
+ UINT8 bReserved; // Reserved
+ UINT16 wPlanes; // Color Planes
+ UINT16 wBitCount; // Bits per pixel
+ UINT32 dwBytesInRes; // how many bytes in this resource?
+ UINT32 dwImageOffset; // where in the file is this image
+} ICONDIRENTRY, *LPICONDIRENTRY;
+
+typedef struct
+{
+ UINT16 idReserved; // Reserved
+ UINT16 idType; // resource type (1 for icons)
+ UINT16 idCount; // how many images?
+ //ICONDIRENTRY idEntries[1]; // the entries for each image
+} ICONDIR, *LPICONDIR;
+
+// size - 40 bytes
+typedef struct {
+ UINT32 biSize;
+ UINT32 biWidth;
+ UINT32 biHeight; // Icon Height (added height of XOR-Bitmap and AND-Bitmap)
+ UINT16 biPlanes;
+ UINT16 biBitCount;
+ UINT32 biCompression;
+ INT32 biSizeImage;
+ UINT32 biXPelsPerMeter;
+ UINT32 biYPelsPerMeter;
+ UINT32 biClrUsed;
+ UINT32 biClrImportant;
+} s_BITMAPINFOHEADER, *s_PBITMAPINFOHEADER;
+
+// 46 bytes
+typedef struct{
+ s_BITMAPINFOHEADER icHeader; // DIB header
+ UINT32 icColors[1]; // Color table (short 4 bytes) //RGBQUAD
+ UINT8 icXOR[1]; // DIB bits for XOR mask
+ UINT8 icAND[1]; // DIB bits for AND mask
+} ICONIMAGE, *LPICONIMAGE;
+
+//-------------------------------------------------
+// load an ICO file into a bitmap
+//-------------------------------------------------
+
+void render_load_ico(bitmap_argb32 &bitmap, emu_file &file, const char *dirname, const char *filename)
+{
+ INT32 width = 0;
+ INT32 height = 0;
+
+ // deallocate previous bitmap
+ bitmap.reset();
+
+ // define file's full name
+ std::string fname;
+
+ if (!dirname)
+ fname = filename;
+ else
+ fname.assign(dirname).append(PATH_SEPARATOR).append(filename);
+
+ file_error filerr = file.open(fname.c_str());
+
+ if (filerr != FILERR_NONE)
+ return;
+
+ // allocates a buffer for the image
+ UINT64 size = file.size();
+ UINT8 *buffer = global_alloc_array(UINT8, size + 1);
+
+ // read data from the file and set them in the buffer
+ file.read(buffer, size);
+
+ LPICONDIR icoDir = (LPICONDIR)buffer;
+ int iconsCount = icoDir->idCount;
+
+ if (icoDir->idReserved != 0 || icoDir->idType != 1 || iconsCount == 0 || iconsCount > 20)
+ {
+ file.close();
+ global_free_array(buffer);
+ return;
+ }
+
+ UINT8* cursor = buffer;
+ cursor += 6;
+ ICONDIRENTRY* dirEntry = (ICONDIRENTRY*)(cursor);
+ int maxSize = 0;
+ int offset = 0;
+ int maxBitCount = 0;
+ for (int i = 0; i < iconsCount; i++, ++dirEntry)
+ {
+ int w = dirEntry->bWidth;
+ int h = dirEntry->bHeight;
+ int bitCount = dirEntry->wBitCount;
+ if (w * h > maxSize || bitCount > maxBitCount) // we choose icon with max resolution
+ {
+ width = w;
+ height = h;
+ offset = dirEntry->dwImageOffset;
+ maxSize = w * h;
+ }
+ }
+
+ if (offset == 0) return;
+
+ cursor = buffer;
+ cursor += offset;
+ ICONIMAGE* icon = (ICONIMAGE*)(cursor);
+ int realBitsCount = (int)icon->icHeader.biBitCount;
+ bool hasAndMask = (realBitsCount < 32) && (height != icon->icHeader.biHeight);
+
+ cursor += 40;
+ bitmap.allocate(width, height);
+
+ // rgba + vertical swap
+ if (realBitsCount >= 32)
+ {
+ for (int x = 0; x < width; ++x)
+ for (int y = 0; y < height; ++y)
+ {
+ int shift2 = 4 * (x + (height - y - 1) * width);
+ bitmap.pix32(y, x) = rgb_t(cursor[shift2 + 3], cursor[shift2 + 2], cursor[shift2 + 1], cursor[shift2]);
+ }
+ }
+ else if (realBitsCount == 24)
+ for (int x = 0; x < width; ++x)
+ for (int y = 0; y < height; ++y)
+ {
+ int shift2 = 3 * (x + (height - y - 1) * width);
+ bitmap.pix32(y, x) = rgb_t(255, cursor[shift2 + 2], cursor[shift2 + 1], cursor[shift2]);
+ }
+ else if (realBitsCount == 8) // 256 colors
+ {
+ // 256 color table
+ UINT8 *colors = cursor;
+ cursor += 256 * 4;
+ for (int x = 0; x < width; ++x)
+ for (int y = 0; y < height; ++y)
+ {
+ int shift2 = (x + (height - y - 1) * width);
+ int index = 4 * cursor[shift2];
+ bitmap.pix32(y, x) = rgb_t(255, colors[index + 2], colors[index + 1], colors[index]);
+ }
+ }
+ else if (realBitsCount == 4) // 16 colors
+ {
+ // 16 color table
+ UINT8 *colors = cursor;
+ cursor += 16 * 4;
+ for (int x = 0; x < width; ++x)
+ for (int y = 0; y < height; ++y)
+ {
+ int shift2 = (x + (height - y - 1) * width);
+ UINT8 index = cursor[shift2 / 2];
+ if (shift2 % 2 == 0)
+ index = (index >> 4) & 0xF;
+ else
+ index = index & 0xF;
+ index *= 4;
+ bitmap.pix32(y, x) = rgb_t(255, colors[index + 2], colors[index + 1], colors[index]);
+ }
+ }
+ else if (realBitsCount == 1) // 2 colors
+ {
+ // 2 color table
+ UINT8 *colors = cursor;
+ cursor += 2 * 4;
+ int boundary = width; // !!! 32 bit boundary (http://www.daubnet.com/en/file-format-ico)
+ while (boundary % 32 != 0) boundary++;
+
+ for (int x = 0; x < width; ++x)
+ for (int y = 0; y < height; ++y)
+ {
+ int shift2 = (x + (height - y - 1) * boundary);
+ UINT8 index = cursor[shift2 / 8];
+
+ // select 1 bit only
+ UINT8 bit = 7 - (x % 8);
+ index = (index >> bit) & 0x01;
+ index *= 4;
+ bitmap.pix32(y, x) = rgb_t(255, colors[index + 2], colors[index + 1], colors[index]);
+ }
+ }
+
+ // Read AND mask after base color data - 1 BIT MASK
+ if (hasAndMask)
+ {
+ int boundary = width * realBitsCount; // !!! 32 bit boundary (http://www.daubnet.com/en/file-format-ico)
+ while (boundary % 32 != 0) boundary++;
+ cursor += boundary * height / 8;
+
+ boundary = width;
+ while (boundary % 32 != 0) boundary++;
+
+ for (int y = 0; y < height; ++y)
+ for (int x = 0; x < width; ++x)
+ {
+ UINT8 bit = 7 - (x % 8);
+ int shift2 = (x + (height - y - 1) * boundary) / 8;
+ int mask = (0x01 & ((UINT8)cursor[shift2] >> bit));
+ rgb_t colors = bitmap.pix32(y, x);
+ UINT8 alpha = colors.a();
+ alpha *= 1 - mask;
+ colors.set_a(alpha);
+ bitmap.pix32(y, x) = colors;
+ }
+ }
+ file.close();
+ global_free_array(buffer);
+}
+
+#endif /* __UI_ICORENDER_H__ */
diff --git a/src/emu/ui/imgcntrl.cpp b/src/emu/ui/imgcntrl.cpp
index 3bb77723726..8f3dbeca75b 100644
--- a/src/emu/ui/imgcntrl.cpp
+++ b/src/emu/ui/imgcntrl.cpp
@@ -190,20 +190,20 @@ void ui_menu_control_device_image::handle()
zippath_closedir(directory);
}
submenu_result = -1;
- ui_menu::stack_push(auto_alloc_clear(machine(), <ui_menu_file_selector>(machine(), container, image, current_directory, current_file, true, image->image_interface()!=nullptr, can_create, &submenu_result)));
+ ui_menu::stack_push(global_alloc_clear<ui_menu_file_selector>(machine(), container, image, current_directory, current_file, true, image->image_interface()!=nullptr, can_create, &submenu_result));
state = SELECT_FILE;
break;
}
case START_SOFTLIST:
sld = nullptr;
- ui_menu::stack_push(auto_alloc_clear(machine(), <ui_menu_software>(machine(), container, image->image_interface(), &sld)));
+ ui_menu::stack_push(global_alloc_clear<ui_menu_software>(machine(), container, image->image_interface(), &sld));
state = SELECT_SOFTLIST;
break;
case START_OTHER_PART: {
submenu_result = -1;
- ui_menu::stack_push(auto_alloc_clear(machine(), <ui_menu_software_parts>(machine(), container, swi, swp->interface(), &swp, true, &submenu_result)));
+ ui_menu::stack_push(global_alloc_clear<ui_menu_software_parts>(machine(), container, swi, swp->interface(), &swp, true, &submenu_result));
state = SELECT_OTHER_PART;
break;
}
@@ -214,7 +214,7 @@ void ui_menu_control_device_image::handle()
break;
}
software_info_name = "";
- ui_menu::stack_push(auto_alloc_clear(machine(), <ui_menu_software_list>(machine(), container, sld, image->image_interface(), software_info_name)));
+ ui_menu::stack_push(global_alloc_clear<ui_menu_software_list>(machine(), container, sld, image->image_interface(), software_info_name));
state = SELECT_PARTLIST;
break;
@@ -226,7 +226,7 @@ void ui_menu_control_device_image::handle()
{
submenu_result = -1;
swp = nullptr;
- ui_menu::stack_push(auto_alloc_clear(machine(), <ui_menu_software_parts>(machine(), container, swi, image->image_interface(), &swp, false, &submenu_result)));
+ ui_menu::stack_push(global_alloc_clear<ui_menu_software_parts>(machine(), container, swi, image->image_interface(), &swp, false, &submenu_result));
state = SELECT_ONE_PART;
}
else
@@ -290,7 +290,7 @@ void ui_menu_control_device_image::handle()
break;
case ui_menu_file_selector::R_CREATE:
- ui_menu::stack_push(auto_alloc_clear(machine(), <ui_menu_file_create>(machine(), container, image, current_directory, current_file, &create_ok)));
+ ui_menu::stack_push(global_alloc_clear<ui_menu_file_create>(machine(), container, image, current_directory, current_file, &create_ok));
state = CHECK_CREATE;
break;
@@ -310,7 +310,7 @@ void ui_menu_control_device_image::handle()
test_create(can_create, need_confirm);
if(can_create) {
if(need_confirm) {
- ui_menu::stack_push(auto_alloc_clear(machine(), <ui_menu_confirm_save_as>(machine(), container, &create_confirmed)));
+ ui_menu::stack_push(global_alloc_clear<ui_menu_confirm_save_as>(machine(), container, &create_confirmed));
state = CREATE_CONFIRM;
} else {
state = DO_CREATE;
diff --git a/src/emu/ui/inifile.cpp b/src/emu/ui/inifile.cpp
new file mode 100644
index 00000000000..1c92b43a4d6
--- /dev/null
+++ b/src/emu/ui/inifile.cpp
@@ -0,0 +1,454 @@
+// license:BSD-3-Clause
+// copyright-holders:Dankan1890
+/***************************************************************************
+
+ ui/inifile.cpp
+
+ UI INIs file manager.
+
+***************************************************************************/
+
+#include "emu.h"
+#include "ui/ui.h"
+#include "ui/inifile.h"
+#include "softlist.h"
+#include "drivenum.h"
+#include <algorithm>
+
+//-------------------------------------------------
+// GLOBAL VARIABLES
+//-------------------------------------------------
+UINT16 inifile_manager::current_category = 0;
+UINT16 inifile_manager::current_file = 0;
+
+//-------------------------------------------------
+// ctor
+//-------------------------------------------------
+
+inifile_manager::inifile_manager(running_machine &machine)
+ : m_machine(machine)
+{
+ ini_index.clear();
+ directory_scan();
+}
+
+//-------------------------------------------------
+// scan directories and create index
+//-------------------------------------------------
+
+void inifile_manager::directory_scan()
+{
+ // open extra INIs folder
+ file_enumerator path(machine().ui().options().extraini_path());
+ const osd_directory_entry *dir;
+
+ // loop into folder's file
+ while ((dir = path.next()) != nullptr)
+ {
+ int length = strlen(dir->name);
+ std::string filename(dir->name);
+
+ // skip ui_favorite file
+ if (!core_stricmp("ui_favorite.ini", filename.c_str()))
+ continue;
+
+ // check .ini file ending
+ if ((length > 4) && dir->name[length - 4] == '.' && tolower((UINT8)dir->name[length - 3]) == 'i' &&
+ tolower((UINT8)dir->name[length - 2]) == 'n' && tolower((UINT8)dir->name[length - 1]) == 'i')
+ {
+ // try to open file and indexing
+ if (parseopen(filename.c_str()))
+ {
+ init_category(filename);
+ parseclose();
+ }
+ }
+ }
+}
+
+//-------------------------------------------------
+// initialize category
+//-------------------------------------------------
+
+void inifile_manager::init_category(std::string &filename)
+{
+ categoryindex index;
+ char rbuf[MAX_CHAR_INFO];
+ std::string readbuf, name;
+ while (fgets(rbuf, MAX_CHAR_INFO, fp) != nullptr)
+ {
+ readbuf = rbuf;
+ if (readbuf[0] == '[')
+ {
+ size_t found = readbuf.find("]");
+ name = readbuf.substr(1, found - 1);
+ if (name == "FOLDER_SETTINGS" || name == "ROOT_FOLDER")
+ continue;
+ else
+ index.emplace_back(name, ftell(fp));
+ }
+ }
+
+ if (!index.empty())
+ ini_index.emplace_back(filename, index);
+}
+
+//-------------------------------------------------
+// load and indexing ini files
+//-------------------------------------------------
+
+void inifile_manager::load_ini_category(std::vector<int> &temp_filter)
+{
+ if (ini_index.empty())
+ return;
+
+ bool search_clones = false;
+ std::string filename(ini_index[current_file].name);
+ long offset = ini_index[current_file].category[current_category].offset;
+
+ if (!core_stricmp(filename.c_str(), "category.ini") || !core_stricmp(filename.c_str(), "alltime.ini"))
+ search_clones = true;
+
+ if (parseopen(filename.c_str()))
+ {
+ fseek(fp, offset, SEEK_SET);
+ int num_game = driver_list::total();
+ char rbuf[MAX_CHAR_INFO];
+ std::string readbuf;
+ while (fgets(rbuf, MAX_CHAR_INFO, fp) != nullptr)
+ {
+ readbuf = chartrimcarriage(rbuf);
+
+ if (readbuf.empty() || readbuf[0] == '[')
+ break;
+
+ int dfind = driver_list::find(readbuf.c_str());
+ if (dfind != -1 && search_clones)
+ {
+ temp_filter.push_back(dfind);
+ int clone_of = driver_list::non_bios_clone(dfind);
+ if (clone_of == -1)
+ {
+ for (int x = 0; x < num_game; x++)
+ if (readbuf == driver_list::driver(x).parent && readbuf != driver_list::driver(x).name)
+ temp_filter.push_back(x);
+ }
+ }
+ else if (dfind != -1)
+ temp_filter.push_back(dfind);
+ }
+ parseclose();
+ }
+}
+
+//---------------------------------------------------------
+// parseopen - Open up file for reading
+//---------------------------------------------------------
+
+bool inifile_manager::parseopen(const char *filename)
+{
+ // MAME core file parsing functions fail in recognizing UNICODE chars in UTF-8 without BOM,
+ // so it's better and faster use standard C fileio functions.
+
+ emu_file file(machine().ui().options().extraini_path(), OPEN_FLAG_READ);
+ if (file.open(filename) != FILERR_NONE)
+ return false;
+
+ m_fullpath = file.fullpath();
+ file.close();
+ fp = fopen(m_fullpath.c_str(), "r");
+
+ fgetc(fp);
+ fseek(fp, 0, SEEK_SET);
+ return true;
+}
+
+/**************************************************************************
+ FAVORITE MANAGER
+**************************************************************************/
+
+//-------------------------------------------------
+// ctor
+//-------------------------------------------------
+
+favorite_manager::favorite_manager(running_machine &machine)
+ : m_machine(machine)
+{
+ m_current = -1;
+ parse_favorite();
+}
+
+//-------------------------------------------------
+// add a game
+//-------------------------------------------------
+
+void favorite_manager::add_favorite_game(const game_driver *driver)
+{
+ m_list.emplace_back(driver->name, driver->description, "", "", "", 0, "", driver, "", "", "", 1, "", "", "", true);
+ save_favorite_games();
+}
+
+//-------------------------------------------------
+// add a system
+//-------------------------------------------------
+
+void favorite_manager::add_favorite_game(ui_software_info &swinfo)
+{
+ m_list.push_back(swinfo);
+ save_favorite_games();
+}
+
+//-------------------------------------------------
+// add a game / system
+//-------------------------------------------------
+
+void favorite_manager::add_favorite_game()
+{
+ if ((machine().system().flags & MACHINE_TYPE_ARCADE) != 0)
+ {
+ add_favorite_game(&machine().system());
+ return;
+ }
+
+ bool software_avail = false;
+ image_interface_iterator iter(machine().root_device());
+ for (device_image_interface *image = iter.first(); image != nullptr; image = iter.next())
+ {
+ if (image->exists() && image->software_entry())
+ {
+ const software_info *swinfo = image->software_entry();
+ const software_part *part = image->part_entry();
+ ui_software_info tmpmatches;
+ tmpmatches.shortname = strensure(swinfo->shortname());
+ tmpmatches.longname = strensure(image->longname());
+ tmpmatches.parentname = strensure(swinfo->parentname());
+ tmpmatches.year = strensure(image->year());
+ tmpmatches.publisher = strensure(image->manufacturer());
+ tmpmatches.supported = image->supported();
+ tmpmatches.part = strensure(part->name());
+ tmpmatches.driver = &machine().system();
+ tmpmatches.listname = strensure(image->software_list_name());
+ tmpmatches.interface = strensure(part->interface());
+ tmpmatches.instance = strensure(image->instance_name());
+ tmpmatches.startempty = 0;
+ tmpmatches.parentlongname.clear();
+ if (swinfo->parentname())
+ {
+ software_list_device *swlist = software_list_device::find_by_name(machine().config(), image->software_list_name());
+ for (software_info *c_swinfo = swlist->first_software_info(); c_swinfo != nullptr; c_swinfo = c_swinfo->next())
+ {
+ std::string c_parent(c_swinfo->parentname());
+ if (!c_parent.empty() && c_parent == swinfo->shortname())
+ {
+ tmpmatches.parentlongname = c_swinfo->longname();
+ break;
+ }
+ }
+ }
+
+ tmpmatches.usage.clear();
+ for (feature_list_item *flist = swinfo->other_info(); flist != nullptr; flist = flist->next())
+ if (!strcmp(flist->name(), "usage"))
+ tmpmatches.usage = flist->value();
+
+ tmpmatches.devicetype = strensure(image->image_type_name());
+ tmpmatches.available = true;
+ software_avail = true;
+ m_list.push_back(tmpmatches);
+ save_favorite_games();
+ }
+ }
+
+ if (!software_avail)
+ add_favorite_game(&machine().system());
+}
+
+//-------------------------------------------------
+// remove a favorite from list
+//-------------------------------------------------
+
+void favorite_manager::remove_favorite_game(ui_software_info &swinfo)
+{
+ m_list.erase(std::remove(m_list.begin(), m_list.end(), swinfo), m_list.end());
+ save_favorite_games();
+}
+
+//-------------------------------------------------
+// remove a favorite from list
+//-------------------------------------------------
+
+void favorite_manager::remove_favorite_game()
+{
+ m_list.erase(m_list.begin() + m_current);
+ save_favorite_games();
+}
+
+//-------------------------------------------------
+// check if game is already in favorite list
+//-------------------------------------------------
+
+bool favorite_manager::isgame_favorite()
+{
+ if ((machine().system().flags & MACHINE_TYPE_ARCADE) != 0)
+ return isgame_favorite(&machine().system());
+
+ image_interface_iterator iter(machine().root_device());
+ bool image_loaded = false;
+
+ for (device_image_interface *image = iter.first(); image != nullptr; image = iter.next())
+ {
+ const software_info *swinfo = image->software_entry();
+ if (image->exists() && swinfo != nullptr)
+ {
+ image_loaded = true;
+ for (size_t current = 0; current < m_list.size(); current++)
+ if (m_list[current].shortname == swinfo->shortname() &&
+ m_list[current].listname == image->software_list_name())
+ {
+ m_current = current;
+ return true;
+ }
+ }
+ }
+
+ if (!image_loaded)
+ return isgame_favorite(&machine().system());
+
+ m_current = -1;
+ return false;
+}
+
+//-------------------------------------------------
+// check if game is already in favorite list
+//-------------------------------------------------
+
+bool favorite_manager::isgame_favorite(const game_driver *driver)
+{
+ for (size_t x = 0; x < m_list.size(); x++)
+ if (m_list[x].driver == driver && m_list[x].shortname == driver->name)
+ {
+ m_current = x;
+ return true;
+ }
+
+ m_current = -1;
+ return false;
+}
+
+//-------------------------------------------------
+// check if game is already in favorite list
+//-------------------------------------------------
+
+bool favorite_manager::isgame_favorite(ui_software_info &swinfo)
+{
+ for (size_t x = 0; x < m_list.size(); x++)
+ if (m_list[x] == swinfo)
+ {
+ m_current = x;
+ return true;
+ }
+
+ m_current = -1;
+ return false;
+}
+
+//-------------------------------------------------
+// parse favorite file
+//-------------------------------------------------
+
+void favorite_manager::parse_favorite()
+{
+ emu_file file(machine().ui().options().ui_path(), OPEN_FLAG_READ);
+ if (file.open(favorite_filename) == FILERR_NONE)
+ {
+ char readbuf[1024];
+ file.gets(readbuf, 1024);
+
+ while (readbuf[0] == '[')
+ file.gets(readbuf, 1024);
+
+ while (file.gets(readbuf, 1024))
+ {
+ ui_software_info tmpmatches;
+ tmpmatches.shortname = chartrimcarriage(readbuf);
+ file.gets(readbuf, 1024);
+ tmpmatches.longname = chartrimcarriage(readbuf);
+ file.gets(readbuf, 1024);
+ tmpmatches.parentname = chartrimcarriage(readbuf);
+ file.gets(readbuf, 1024);
+ tmpmatches.year = chartrimcarriage(readbuf);
+ file.gets(readbuf, 1024);
+ tmpmatches.publisher = chartrimcarriage(readbuf);
+ file.gets(readbuf, 1024);
+ tmpmatches.supported = atoi(readbuf);
+ file.gets(readbuf, 1024);
+ tmpmatches.part = chartrimcarriage(readbuf);
+ file.gets(readbuf, 1024);
+ chartrimcarriage(readbuf);
+ int dx = driver_list::find(readbuf);
+ if (dx == -1) continue;
+ tmpmatches.driver = &driver_list::driver(dx);
+ file.gets(readbuf, 1024);
+ tmpmatches.listname = chartrimcarriage(readbuf);
+ file.gets(readbuf, 1024);
+ tmpmatches.interface = chartrimcarriage(readbuf);
+ file.gets(readbuf, 1024);
+ tmpmatches.instance = chartrimcarriage(readbuf);
+ file.gets(readbuf, 1024);
+ tmpmatches.startempty = atoi(readbuf);
+ file.gets(readbuf, 1024);
+ tmpmatches.parentlongname = chartrimcarriage(readbuf);
+ file.gets(readbuf, 1024);
+ tmpmatches.usage = chartrimcarriage(readbuf);
+ file.gets(readbuf, 1024);
+ tmpmatches.devicetype = chartrimcarriage(readbuf);
+ file.gets(readbuf, 1024);
+ tmpmatches.available = atoi(readbuf);
+ m_list.push_back(tmpmatches);
+ }
+ file.close();
+ }
+}
+
+//-------------------------------------------------
+// save favorite
+//-------------------------------------------------
+
+void favorite_manager::save_favorite_games()
+{
+ // attempt to open the output file
+ emu_file file(machine().ui().options().ui_path(), OPEN_FLAG_WRITE | OPEN_FLAG_CREATE | OPEN_FLAG_CREATE_PATHS);
+ if (file.open(favorite_filename) == FILERR_NONE)
+ {
+ if (m_list.empty())
+ {
+ file.remove_on_close();
+ file.close();
+ return;
+ }
+
+ // generate the favorite INI
+ std::string text("[ROOT_FOLDER]\n[Favorite]\n\n");
+ for (auto & elem : m_list)
+ {
+ text += elem.shortname + "\n";
+ text += elem.longname + "\n";
+ text += elem.parentname + "\n";
+ text += elem.year + "\n";
+ text += elem.publisher + "\n";
+ strcatprintf(text, "%d\n", elem.supported);
+ text += elem.part + "\n";
+ strcatprintf(text, "%s\n", elem.driver->name);
+ text += elem.listname + "\n";
+ text += elem.interface + "\n";
+ text += elem.instance + "\n";
+ strcatprintf(text, "%d\n", elem.startempty);
+ text += elem.parentlongname + "\n";
+ text += elem.usage + "\n";
+ text += elem.devicetype + "\n";
+ strcatprintf(text, "%d\n", elem.available);
+ }
+ file.puts(text.c_str());
+ file.close();
+ }
+}
diff --git a/src/emu/ui/inifile.h b/src/emu/ui/inifile.h
new file mode 100644
index 00000000000..5a90b0d3d83
--- /dev/null
+++ b/src/emu/ui/inifile.h
@@ -0,0 +1,122 @@
+// license:BSD-3-Clause
+// copyright-holders:Dankan1890
+/***************************************************************************
+
+ ui/inifile.h
+
+ UI INIs file manager.
+
+***************************************************************************/
+
+#pragma once
+
+#ifndef __UI_INIFILE_H__
+#define __UI_INIFILE_H__
+
+#include "ui/utils.h"
+
+//-------------------------------------------------
+// INIFILE MANAGER
+//-------------------------------------------------
+
+class inifile_manager
+{
+public:
+ // category structure
+ struct IniCategoryIndex
+ {
+ IniCategoryIndex(std::string _name, long _offset) { name = _name; offset = _offset; }
+ std::string name;
+ long offset;
+ };
+
+ using categoryindex = std::vector<IniCategoryIndex>;
+
+ // ini file structure
+ struct IniFileIndex
+ {
+ IniFileIndex(std::string _name, categoryindex _category) { name = _name; category = _category; }
+ std::string name;
+ categoryindex category;
+ };
+
+ // construction/destruction
+ inifile_manager(running_machine &machine);
+
+ // getters
+ running_machine &machine() const { return m_machine; }
+
+ // load games from category
+ void load_ini_category(std::vector<int> &temp_filter);
+
+ // files indices
+ std::vector<IniFileIndex> ini_index;
+ static UINT16 current_file, current_category;
+
+ std::string actual_file() { return ini_index[current_file].name; }
+ std::string actual_category() { return ini_index[current_file].category[current_category].name; }
+
+private:
+ // init category index
+ void init_category(std::string &filename);
+
+ // init file index
+ void directory_scan();
+
+ // file open/close/seek
+ bool parseopen(const char *filename);
+ void parseclose() { if (fp != nullptr) fclose(fp); }
+
+ // internal state
+ running_machine &m_machine; // reference to our machine
+ std::string m_fullpath;
+ FILE *fp = nullptr;
+};
+
+//-------------------------------------------------
+// FAVORITE MANAGER
+//-------------------------------------------------
+
+class favorite_manager
+{
+public:
+ // construction/destruction
+ favorite_manager(running_machine &machine);
+
+ // favorite indices
+ std::vector<ui_software_info> m_list;
+
+ // getters
+ running_machine &machine() const { return m_machine; }
+
+ // add
+ void add_favorite_game();
+ void add_favorite_game(const game_driver *driver);
+ void add_favorite_game(ui_software_info &swinfo);
+
+ // check
+ bool isgame_favorite();
+ bool isgame_favorite(const game_driver *driver);
+ bool isgame_favorite(ui_software_info &swinfo);
+
+ // save
+ void save_favorite_games();
+
+ // remove
+ void remove_favorite_game();
+ void remove_favorite_game(ui_software_info &swinfo);
+
+private:
+ const char *favorite_filename = "favorites.ini";
+
+ // current
+ int m_current;
+
+ // parse file ui_favorite
+ void parse_favorite();
+
+ // internal state
+ running_machine &m_machine; // reference to our machine
+};
+
+#endif /* __UI_INIFILE_H__ */
diff --git a/src/emu/ui/inputmap.cpp b/src/emu/ui/inputmap.cpp
index 1fc0d046e1f..f3ffe9b0e59 100644
--- a/src/emu/ui/inputmap.cpp
+++ b/src/emu/ui/inputmap.cpp
@@ -73,7 +73,7 @@ void ui_menu_input_groups::handle()
/* process the menu */
const ui_menu_event *menu_event = process(0);
if (menu_event != nullptr && menu_event->iptkey == IPT_UI_SELECT)
- ui_menu::stack_push(auto_alloc_clear(machine(), <ui_menu_input_general>(machine(), container, int((long long)(menu_event->itemref)-1))));
+ ui_menu::stack_push(global_alloc_clear<ui_menu_input_general>(machine(), container, int((long long)(menu_event->itemref)-1)));
}
diff --git a/src/emu/ui/mainmenu.cpp b/src/emu/ui/mainmenu.cpp
index 415ad118811..9ea41a3963d 100644
--- a/src/emu/ui/mainmenu.cpp
+++ b/src/emu/ui/mainmenu.cpp
@@ -23,12 +23,16 @@
#include "ui/mainmenu.h"
#include "ui/miscmenu.h"
#include "ui/selgame.h"
+#include "ui/simpleselgame.h"
#include "ui/sliders.h"
#include "ui/slotopt.h"
#include "ui/tapectrl.h"
#include "ui/videoopt.h"
#include "imagedev/cassette.h"
#include "machine/bcreader.h"
+#include "ui/datfile.h"
+#include "ui/inifile.h"
+#include "ui/datmenu.h"
/***************************************************************************
@@ -132,6 +136,59 @@ void ui_menu_main::populate()
if (machine().options().cheat() && machine().cheat().first() != nullptr)
item_append("Cheat", nullptr, 0, (void *)CHEAT);
+ /* add history menu */
+ if (machine().ui().options().enabled_dats())
+ item_append("History Info", nullptr, 0, (void *)HISTORY);
+
+ // add software history menu
+ if ((machine().system().flags & MACHINE_TYPE_ARCADE) == 0 && machine().ui().options().enabled_dats())
+ {
+ image_interface_iterator iter(machine().root_device());
+ for (device_image_interface *image = iter.first(); image != nullptr; image = iter.next())
+ {
+ const char *name = image->filename();
+ if (name != nullptr)
+ {
+ item_append("Software History Info", nullptr, 0, (void *)SW_HISTORY);
+ break;
+ }
+ }
+ }
+
+ /* add mameinfo / messinfo menu */
+ if (machine().ui().options().enabled_dats())
+ {
+ if ((machine().system().flags & MACHINE_TYPE_ARCADE) != 0)
+ item_append("MameInfo", nullptr, 0, (void *)MAMEINFO);
+ else if ((machine().system().flags & MACHINE_TYPE_ARCADE) == 0)
+ item_append("MessInfo", nullptr, 0, (void *)MAMEINFO);
+ }
+
+ /* add sysinfo menu */
+ if ((machine().system().flags & MACHINE_TYPE_ARCADE) == 0 && machine().ui().options().enabled_dats())
+ item_append("SysInfo", nullptr, 0, (void *)SYSINFO);
+
+ /* add command list menu */
+ if ((machine().system().flags & MACHINE_TYPE_ARCADE) != 0 && machine().ui().options().enabled_dats())
+ item_append("Commands Info", nullptr, 0, (void *)COMMAND);
+
+ /* add story menu */
+ if ((machine().system().flags & MACHINE_TYPE_ARCADE) != 0 && machine().ui().options().enabled_dats())
+ item_append("Mamescores", nullptr, 0, (void *)STORYINFO);
+
+ item_append(MENU_SEPARATOR_ITEM, nullptr, 0, nullptr);
+
+ /* add favorite menu */
+ if (!machine().favorite().isgame_favorite())
+ item_append("Add To Favorites", nullptr, 0, (void *)ADD_FAVORITE);
+ else
+ item_append("Remove From Favorites", nullptr, 0, (void *)REMOVE_FAVORITE);
+
+ item_append(MENU_SEPARATOR_ITEM, nullptr, 0, nullptr);
+
+// menu_text.assign("Quit from ").append(emulator_info::get_capstartgamenoun());
+// item_append(menu_text.c_str(), nullptr, 0, (void *)QUIT_GAME);
+
/* add reset and exit menus */
strprintf(menu_text, "Select New %s", emulator_info::get_capstartgamenoun());
item_append(menu_text.c_str(), nullptr, 0, (void *)SELECT_GAME);
@@ -152,91 +209,137 @@ void ui_menu_main::handle()
if (menu_event != nullptr && menu_event->iptkey == IPT_UI_SELECT) {
switch((long long)(menu_event->itemref)) {
case INPUT_GROUPS:
- ui_menu::stack_push(auto_alloc_clear(machine(), <ui_menu_input_groups>(machine(), container)));
+ ui_menu::stack_push(global_alloc_clear<ui_menu_input_groups>(machine(), container));
break;
case INPUT_SPECIFIC:
- ui_menu::stack_push(auto_alloc_clear(machine(), <ui_menu_input_specific>(machine(), container)));
+ ui_menu::stack_push(global_alloc_clear<ui_menu_input_specific>(machine(), container));
break;
case SETTINGS_DIP_SWITCHES:
- ui_menu::stack_push(auto_alloc_clear(machine(), <ui_menu_settings_dip_switches>(machine(), container)));
+ ui_menu::stack_push(global_alloc_clear<ui_menu_settings_dip_switches>(machine(), container));
break;
case SETTINGS_DRIVER_CONFIG:
- ui_menu::stack_push(auto_alloc_clear(machine(), <ui_menu_settings_driver_config>(machine(), container)));
+ ui_menu::stack_push(global_alloc_clear<ui_menu_settings_driver_config>(machine(), container));
break;
case ANALOG:
- ui_menu::stack_push(auto_alloc_clear(machine(), <ui_menu_analog>(machine(), container)));
+ ui_menu::stack_push(global_alloc_clear<ui_menu_analog>(machine(), container));
break;
case BOOKKEEPING:
- ui_menu::stack_push(auto_alloc_clear(machine(), <ui_menu_bookkeeping>(machine(), container)));
+ ui_menu::stack_push(global_alloc_clear<ui_menu_bookkeeping>(machine(), container));
break;
case GAME_INFO:
- ui_menu::stack_push(auto_alloc_clear(machine(), <ui_menu_game_info>(machine(), container)));
+ ui_menu::stack_push(global_alloc_clear<ui_menu_game_info>(machine(), container));
break;
case IMAGE_MENU_IMAGE_INFO:
- ui_menu::stack_push(auto_alloc_clear(machine(), <ui_menu_image_info>(machine(), container)));
+ ui_menu::stack_push(global_alloc_clear<ui_menu_image_info>(machine(), container));
break;
case IMAGE_MENU_FILE_MANAGER:
- ui_menu::stack_push(auto_alloc_clear(machine(), <ui_menu_file_manager>(machine(), container, nullptr)));
+ ui_menu::stack_push(global_alloc_clear<ui_menu_file_manager>(machine(), container, nullptr));
break;
case TAPE_CONTROL:
- ui_menu::stack_push(auto_alloc_clear(machine(), <ui_menu_tape_control>(machine(), container, nullptr)));
+ ui_menu::stack_push(global_alloc_clear<ui_menu_tape_control>(machine(), container, nullptr));
break;
- case PTY_INFO:
- ui_menu::stack_push(auto_alloc_clear(machine(), <ui_menu_pty_info>(machine(), container)));
+ case PTY_INFO:
+ ui_menu::stack_push(global_alloc_clear<ui_menu_pty_info>(machine(), container));
break;
case SLOT_DEVICES:
- ui_menu::stack_push(auto_alloc_clear(machine(), <ui_menu_slot_devices>(machine(), container)));
+ ui_menu::stack_push(global_alloc_clear<ui_menu_slot_devices>(machine(), container));
break;
case NETWORK_DEVICES:
- ui_menu::stack_push(auto_alloc_clear(machine(), <ui_menu_network_devices>(machine(), container)));
+ ui_menu::stack_push(global_alloc_clear<ui_menu_network_devices>(machine(), container));
break;
case KEYBOARD_MODE:
- ui_menu::stack_push(auto_alloc_clear(machine(), <ui_menu_keyboard_mode>(machine(), container)));
+ ui_menu::stack_push(global_alloc_clear<ui_menu_keyboard_mode>(machine(), container));
break;
case SLIDERS:
- ui_menu::stack_push(auto_alloc_clear(machine(), <ui_menu_sliders>(machine(), container, false)));
+ ui_menu::stack_push(global_alloc_clear<ui_menu_sliders>(machine(), container, false));
break;
case VIDEO_TARGETS:
- ui_menu::stack_push(auto_alloc_clear(machine(), <ui_menu_video_targets>(machine(), container)));
+ ui_menu::stack_push(global_alloc_clear<ui_menu_video_targets>(machine(), container));
break;
case VIDEO_OPTIONS:
- ui_menu::stack_push(auto_alloc_clear(machine(), <ui_menu_video_options>(machine(), container, machine().render().first_target())));
+ ui_menu::stack_push(global_alloc_clear<ui_menu_video_options>(machine(), container, machine().render().first_target()));
break;
case CROSSHAIR:
- ui_menu::stack_push(auto_alloc_clear(machine(), <ui_menu_crosshair>(machine(), container)));
+ ui_menu::stack_push(global_alloc_clear<ui_menu_crosshair>(machine(), container));
break;
case CHEAT:
- ui_menu::stack_push(auto_alloc_clear(machine(), <ui_menu_cheat>(machine(), container)));
+ ui_menu::stack_push(global_alloc_clear<ui_menu_cheat>(machine(), container));
break;
case SELECT_GAME:
- ui_menu::stack_push(auto_alloc_clear(machine(), <ui_menu_select_game>(machine(), container, nullptr)));
+ if (strcmp(machine().options().ui(),"simple")==0) {
+ ui_menu::stack_push(global_alloc_clear<ui_simple_menu_select_game>(machine(), container, nullptr));
+ } else {
+ ui_menu::stack_push(global_alloc_clear<ui_menu_select_game>(machine(), container, nullptr));
+ }
break;
case BIOS_SELECTION:
- ui_menu::stack_push(auto_alloc_clear(machine(), <ui_menu_bios_selection>(machine(), container)));
+ ui_menu::stack_push(global_alloc_clear<ui_menu_bios_selection>(machine(), container));
break;
case BARCODE_READ:
- ui_menu::stack_push(auto_alloc_clear(machine(), <ui_menu_barcode_reader>(machine(), container, nullptr)));
+ ui_menu::stack_push(global_alloc_clear<ui_menu_barcode_reader>(machine(), container, nullptr));
+ break;
+
+ case HISTORY:
+ ui_menu::stack_push(global_alloc_clear<ui_menu_dats>(machine(), container, UI_HISTORY_LOAD));
+ break;
+
+ case MAMEINFO:
+ if ((machine().system().flags & MACHINE_TYPE_ARCADE) != 0)
+ ui_menu::stack_push(global_alloc_clear<ui_menu_dats>(machine(), container, UI_MAMEINFO_LOAD));
+ else
+ ui_menu::stack_push(global_alloc_clear<ui_menu_dats>(machine(), container, UI_MESSINFO_LOAD));
+ break;
+
+ case SYSINFO:
+ ui_menu::stack_push(global_alloc_clear<ui_menu_dats>(machine(), container, UI_SYSINFO_LOAD));
+ break;
+
+ case COMMAND:
+ ui_menu::stack_push(global_alloc_clear<ui_menu_command>(machine(), container));
+ break;
+
+ case STORYINFO:
+ ui_menu::stack_push(global_alloc_clear<ui_menu_dats>(machine(), container, UI_STORY_LOAD));
+ break;
+
+ case ADD_FAVORITE:
+ machine().favorite().add_favorite_game();
+ reset(UI_MENU_RESET_REMEMBER_POSITION);
+ break;
+
+ case REMOVE_FAVORITE:
+ machine().favorite().remove_favorite_game();
+ reset(UI_MENU_RESET_REMEMBER_POSITION);
+ break;
+
+ case SW_HISTORY:
+ ui_menu::stack_push(global_alloc_clear<ui_menu_history_sw>(machine(), container));
+ break;
+
+ case QUIT_GAME:
+ ui_menu::stack_pop(machine());
+ machine().ui().request_quit();
break;
default:
diff --git a/src/emu/ui/mainmenu.h b/src/emu/ui/mainmenu.h
index 27a810341c3..ca697558dbd 100644
--- a/src/emu/ui/mainmenu.h
+++ b/src/emu/ui/mainmenu.h
@@ -45,7 +45,16 @@ private:
SELECT_GAME,
BIOS_SELECTION,
BARCODE_READ,
- PTY_INFO
+ PTY_INFO,
+ HISTORY,
+ MAMEINFO,
+ SYSINFO,
+ ADD_FAVORITE,
+ REMOVE_FAVORITE,
+ COMMAND,
+ STORYINFO,
+ SW_HISTORY,
+ QUIT_GAME
};
};
diff --git a/src/emu/ui/menu.cpp b/src/emu/ui/menu.cpp
index 069b05aa913..da22c83e126 100644
--- a/src/emu/ui/menu.cpp
+++ b/src/emu/ui/menu.cpp
@@ -2,9 +2,9 @@
// copyright-holders:Nicola Salmoria, Aaron Giles, Nathan Woods
/*********************************************************************
- ui/menu.c
+ ui/menu.c
- Internal MAME menus for the user interface.
+ Internal MAME menus for the user interface.
*********************************************************************/
@@ -15,18 +15,56 @@
#include "ui/ui.h"
#include "ui/menu.h"
#include "ui/mainmenu.h"
-
+#include "ui/utils.h"
+#include "ui/defimg.h"
+#include "ui/starimg.h"
+#include "ui/optsmenu.h"
+#include "ui/datfile.h"
+#include "rendfont.h"
+#include "ui/custmenu.h"
+#include "ui/icorender.h"
+#include "ui/toolbar.h"
/***************************************************************************
- CONSTANTS
+ CONSTANTS
***************************************************************************/
-#define UI_MENU_POOL_SIZE 65536
-#define UI_MENU_ALLOC_ITEMS 256
+#define UI_MENU_POOL_SIZE 65536
+#define MAX_ICONS_RENDER 40
+
+struct ui_arts_info
+{
+ const char *title, *path, *addpath;
+};
+
+static const ui_arts_info arts_info[] =
+{
+ { "Snapshots", OPTION_SNAPSHOT_DIRECTORY, "snap" },
+ { "Cabinets", OPTION_CABINETS_PATH, "cabinets;cabdevs" },
+ { "Control Panels", OPTION_CPANELS_PATH, "cpanel" },
+ { "PCBs", OPTION_PCBS_PATH, "pcb" },
+ { "Flyers", OPTION_FLYERS_PATH, "flyers" },
+ { "Titles", OPTION_TITLES_PATH, "titles" },
+ { "Ends", OPTION_ENDS_PATH, "ends" },
+ { "Artwork Preview", OPTION_ARTPREV_PATH, "artwork preview" },
+ { "Bosses", OPTION_BOSSES_PATH, "bosses" },
+ { "Logos", OPTION_LOGOS_PATH, "logo" },
+ { "Versus", OPTION_VERSUS_PATH, "versus" },
+ { "Game Over", OPTION_GAMEOVER_PATH, "gameover" },
+ { "HowTo", OPTION_HOWTO_PATH, "howto" },
+ { "Scores", OPTION_SCORES_PATH, "scores" },
+ { "Select", OPTION_SELECT_PATH, "select" },
+ { "Marquees", OPTION_MARQUEES_PATH, "marquees" },
+ { nullptr }
+};
+
+static const char *hover_msg[] = { "Add or remove favorites", "Export displayed list to file", "Show history.dat info",
+ "Show mameinfo.dat / messinfo.dat info", "Show command.dat info", "Setup directories",
+ "Configure options" };
/***************************************************************************
- GLOBAL VARIABLES
+ GLOBAL VARIABLES
***************************************************************************/
ui_menu *ui_menu::menu_stack;
@@ -34,9 +72,24 @@ ui_menu *ui_menu::menu_free;
std::unique_ptr<bitmap_rgb32> ui_menu::hilight_bitmap;
render_texture *ui_menu::hilight_texture;
render_texture *ui_menu::arrow_texture;
+render_texture *ui_menu::snapx_texture;
+render_texture *ui_menu::hilight_main_texture;
+render_texture *ui_menu::bgrnd_texture;
+render_texture *ui_menu::star_texture;
+render_texture *ui_menu::toolbar_texture[UI_TOOLBAR_BUTTONS];
+render_texture *ui_menu::sw_toolbar_texture[UI_TOOLBAR_BUTTONS];
+render_texture *ui_menu::icons_texture[MAX_ICONS_RENDER];
+std::unique_ptr<bitmap_argb32> ui_menu::snapx_bitmap;
+std::unique_ptr<bitmap_argb32> ui_menu::no_avail_bitmap;
+std::unique_ptr<bitmap_argb32> ui_menu::star_bitmap;
+std::unique_ptr<bitmap_argb32> ui_menu::bgrnd_bitmap;
+bitmap_argb32 *ui_menu::icons_bitmap[MAX_ICONS_RENDER];
+std::unique_ptr<bitmap_rgb32> ui_menu::hilight_main_bitmap;
+bitmap_argb32 *ui_menu::toolbar_bitmap[UI_TOOLBAR_BUTTONS];
+bitmap_argb32 *ui_menu::sw_toolbar_bitmap[UI_TOOLBAR_BUTTONS];
/***************************************************************************
- INLINE FUNCTIONS
+ INLINE FUNCTIONS
***************************************************************************/
//-------------------------------------------------
@@ -69,7 +122,7 @@ inline bool ui_menu::exclusive_input_pressed(int key, int repeat)
/***************************************************************************
- CORE SYSTEM MANAGEMENT
+ CORE SYSTEM MANAGEMENT
***************************************************************************/
//-------------------------------------------------
@@ -78,14 +131,12 @@ inline bool ui_menu::exclusive_input_pressed(int key, int repeat)
void ui_menu::init(running_machine &machine)
{
- int x;
-
// initialize the menu stack
ui_menu::stack_reset(machine);
// create a texture for hilighting items
hilight_bitmap = std::make_unique<bitmap_rgb32>(256, 1);
- for (x = 0; x < 256; x++)
+ for (int x = 0; x < 256; x++)
{
int alpha = 0xff;
if (x < 25) alpha = 0xff * x / 25;
@@ -98,6 +149,9 @@ void ui_menu::init(running_machine &machine)
// create a texture for arrow icons
arrow_texture = machine.render().texture_alloc(render_triangle);
+ // initialize ui
+ init_ui(machine);
+
// add an exit callback to free memory
machine.add_notifier(MACHINE_NOTIFY_EXIT, machine_notify_delegate(FUNC(ui_menu::exit), &machine));
}
@@ -114,14 +168,28 @@ void ui_menu::exit(running_machine &machine)
ui_menu::clear_free_list(machine);
// free textures
- machine.render().texture_free(hilight_texture);
- machine.render().texture_free(arrow_texture);
+ render_manager &mre = machine.render();
+ mre.texture_free(hilight_texture);
+ mre.texture_free(arrow_texture);
+ mre.texture_free(snapx_texture);
+ mre.texture_free(hilight_main_texture);
+ mre.texture_free(bgrnd_texture);
+ mre.texture_free(star_texture);
+
+ for (auto & elem : icons_texture)
+ mre.texture_free(elem);
+
+ for (int i = 0; i < UI_TOOLBAR_BUTTONS; i++)
+ {
+ mre.texture_free(sw_toolbar_texture[i]);
+ mre.texture_free(toolbar_texture[i]);
+ }
}
/***************************************************************************
- CORE MENU MANAGEMENT
+ CORE MENU MANAGEMENT
***************************************************************************/
//-------------------------------------------------
@@ -134,6 +202,8 @@ ui_menu::ui_menu(running_machine &machine, render_container *_container) : m_mac
container = _container;
reset(UI_MENU_RESET_SELECT_FIRST);
+
+ top_line = 0;
}
@@ -148,12 +218,8 @@ ui_menu::~ui_menu()
{
ui_menu_pool *ppool = pool;
pool = pool->next;
- auto_free(machine(), ppool);
+ global_free(ppool);
}
-
- // free the item array
- if (item)
- auto_free(machine(), item);
}
@@ -172,10 +238,10 @@ void ui_menu::reset(ui_menu_reset_options options)
else if (options == UI_MENU_RESET_REMEMBER_REF)
resetref = item[selected].ref;
- // reset all the pools and the numitems back to 0
+ // reset all the pools and the item.size() back to 0
for (ui_menu_pool *ppool = pool; ppool != nullptr; ppool = ppool->next)
ppool->top = (UINT8 *)(ppool + 1);
- numitems = 0;
+ item.clear();
visitems = 0;
selected = 0;
std::string backtext;
@@ -214,66 +280,42 @@ void ui_menu::set_special_main_menu(bool special)
//-------------------------------------------------
-// populated - returns true if the menu
-// has any non-default items in it
-//-------------------------------------------------
-
-bool ui_menu::populated()
-{
- return numitems > 1;
-}
-
-
-//-------------------------------------------------
// item_append - append a new item to the
// end of the menu
//-------------------------------------------------
void ui_menu::item_append(const char *text, const char *subtext, UINT32 flags, void *ref)
{
- ui_menu_item *pitem;
- int index;
-
// only allow multiline as the first item
if ((flags & MENU_FLAG_MULTILINE) != 0)
- assert(numitems == 1);
+ assert(item.size() == 1);
// only allow a single multi-line item
- else if (numitems >= 2)
+ else if (item.size() >= 2)
assert((item[0].flags & MENU_FLAG_MULTILINE) == 0);
- // realloc the item array if necessary
- if (numitems >= allocitems)
- {
- int olditems = allocitems;
- allocitems += UI_MENU_ALLOC_ITEMS;
- ui_menu_item *newitems = auto_alloc_array(machine(), ui_menu_item, allocitems);
- for (int itemnum = 0; itemnum < olditems; itemnum++)
- newitems[itemnum] = item[itemnum];
- auto_free(machine(), item);
- item = newitems;
- }
- index = numitems++;
-
- // copy the previous last item to the next one
- if (index != 0)
+ // allocate a new item and populate it
+ ui_menu_item pitem;
+ pitem.text = (text != nullptr) ? pool_strdup(text) : nullptr;
+ pitem.subtext = (subtext != nullptr) ? pool_strdup(subtext) : nullptr;
+ pitem.flags = flags;
+ pitem.ref = ref;
+
+ // append to array
+ int index = item.size();
+ if (!item.empty())
{
- index--;
- item[index + 1] = item[index];
+ item.insert(item.end() - 1, pitem);
+ --index;
}
-
- // allocate a new item and populate it
- pitem = &item[index];
- pitem->text = (text != nullptr) ? pool_strdup(text) : nullptr;
- pitem->subtext = (subtext != nullptr) ? pool_strdup(subtext) : nullptr;
- pitem->flags = flags;
- pitem->ref = ref;
+ else
+ item.push_back(pitem);
// update the selection if we need to
if (resetpos == index || (resetref != nullptr && resetref == ref))
selected = index;
- if (resetpos == numitems - 1)
- selected = numitems - 1;
+ if (resetpos == item.size() - 1)
+ selected = item.size() - 1;
}
@@ -288,27 +330,40 @@ const ui_menu_event *ui_menu::process(UINT32 flags)
menu_event.iptkey = IPT_INVALID;
// first make sure our selection is valid
- validate_selection(1);
+// if (!(flags & UI_MENU_PROCESS_NOINPUT))
+ validate_selection(1);
// draw the menu
- if (numitems > 1 && (item[0].flags & MENU_FLAG_MULTILINE) != 0)
+ if (item.size() > 1 && (item[0].flags & MENU_FLAG_MULTILINE) != 0)
draw_text_box();
+ else if ((item[0].flags & MENU_FLAG_UI ) != 0 || (item[0].flags & MENU_FLAG_UI_SWLIST ) != 0)
+ draw_select_game(flags & UI_MENU_PROCESS_NOINPUT);
+ else if ((item[0].flags & MENU_FLAG_UI_PALETTE ) != 0)
+ draw_palette_menu();
else
- draw(flags & UI_MENU_PROCESS_CUSTOM_ONLY);
+ draw(flags & UI_MENU_PROCESS_CUSTOM_ONLY, flags & UI_MENU_PROCESS_NOIMAGE, flags & UI_MENU_PROCESS_NOINPUT);
// process input
- if (!(flags & UI_MENU_PROCESS_NOKEYS))
+ if (!(flags & UI_MENU_PROCESS_NOKEYS) && !(flags & UI_MENU_PROCESS_NOINPUT))
{
// read events
- handle_events();
+ if ((item[0].flags & MENU_FLAG_UI ) != 0 || (item[0].flags & MENU_FLAG_UI_SWLIST ) != 0)
+ handle_main_events(flags);
+ else
+ handle_events(flags);
// handle the keys if we don't already have an menu_event
if (menu_event.iptkey == IPT_INVALID)
- handle_keys(flags);
+ {
+ if ((item[0].flags & MENU_FLAG_UI ) != 0 || (item[0].flags & MENU_FLAG_UI_SWLIST ) != 0)
+ handle_main_keys(flags);
+ else
+ handle_keys(flags);
+ }
}
// update the selected item in the menu_event
- if (menu_event.iptkey != IPT_INVALID && selected >= 0 && selected < numitems)
+ if (menu_event.iptkey != IPT_INVALID && selected >= 0 && selected < item.size())
{
menu_event.itemref = item[selected].ref;
return &menu_event;
@@ -338,7 +393,7 @@ void *ui_menu::m_pool_alloc(size_t size)
}
// allocate a new pool
- ppool = (ui_menu_pool *)auto_alloc_array_clear(machine(), UINT8, sizeof(*ppool) + UI_MENU_POOL_SIZE);
+ ppool = (ui_menu_pool *)global_alloc_array_clear<UINT8>(sizeof(*ppool) + UI_MENU_POOL_SIZE);
// wire it up
ppool->next = pool;
@@ -367,7 +422,7 @@ const char *ui_menu::pool_strdup(const char *string)
void *ui_menu::get_selection()
{
- return (selected >= 0 && selected < numitems) ? item[selected].ref : nullptr;
+ return (selected >= 0 && selected < item.size()) ? item[selected].ref : nullptr;
}
@@ -378,10 +433,8 @@ void *ui_menu::get_selection()
void ui_menu::set_selection(void *selected_itemref)
{
- int itemnum;
-
selected = -1;
- for (itemnum = 0; itemnum < numitems; itemnum++)
+ for (int itemnum = 0; itemnum < item.size(); itemnum++)
if (item[itemnum].ref == selected_itemref)
{
selected = itemnum;
@@ -392,38 +445,33 @@ void ui_menu::set_selection(void *selected_itemref)
/***************************************************************************
- INTERNAL MENU PROCESSING
+ INTERNAL MENU PROCESSING
***************************************************************************/
//-------------------------------------------------
// draw - draw a menu
//-------------------------------------------------
-void ui_menu::draw(bool customonly)
+void ui_menu::draw(bool customonly, bool noimage, bool noinput)
{
float line_height = machine().ui().get_line_height();
float lr_arrow_width = 0.4f * line_height * machine().render().ui_aspect();
float ud_arrow_width = line_height * machine().render().ui_aspect();
float gutter_width = lr_arrow_width * 1.3f;
- float x1, y1, x2, y2;
- float effective_width, effective_left;
- float visible_width, visible_main_menu_height;
- float visible_extra_menu_height;
- float visible_top, visible_left;
int selected_subitem_too_big = FALSE;
- int visible_lines;
- int top_line;
int itemnum, linenum;
bool mouse_hit, mouse_button;
- render_target *mouse_target;
- INT32 mouse_target_x, mouse_target_y;
float mouse_x = -1, mouse_y = -1;
+ bool history_flag = ((item[0].flags & MENU_FLAG_UI_HISTORY) != 0);
+
+ if (machine().ui().options().use_background_image() && &machine().system() == &GAME_NAME(___empty) && bgrnd_bitmap->valid() && !noimage)
+ container->add_quad(0.0f, 0.0f, 1.0f, 1.0f, ARGB_WHITE, bgrnd_texture, PRIMFLAG_BLENDMODE(BLENDMODE_ALPHA));
// compute the width and height of the full menu
- visible_width = 0;
- visible_main_menu_height = 0;
- for (itemnum = 0; itemnum < numitems; itemnum++)
+ float visible_width = 0;
+ float visible_main_menu_height = 0;
+ for (itemnum = 0; itemnum < item.size(); itemnum++)
{
const ui_menu_item &pitem = item[itemnum];
float total_width;
@@ -444,7 +492,7 @@ void ui_menu::draw(bool customonly)
}
// account for extra space at the top and bottom
- visible_extra_menu_height = customtop + custombottom;
+ float visible_extra_menu_height = customtop + custombottom;
// add a little bit of slop for rounding
visible_width += 0.01f;
@@ -458,48 +506,59 @@ void ui_menu::draw(bool customonly)
if (visible_main_menu_height + visible_extra_menu_height + 2.0f * UI_BOX_TB_BORDER > 1.0f)
visible_main_menu_height = 1.0f - 2.0f * UI_BOX_TB_BORDER - visible_extra_menu_height;
- visible_lines = floor(visible_main_menu_height / line_height);
+ int visible_lines = floor(visible_main_menu_height / line_height);
visible_main_menu_height = (float)visible_lines * line_height;
// compute top/left of inner menu area by centering
- visible_left = (1.0f - visible_width) * 0.5f;
- visible_top = (1.0f - (visible_main_menu_height + visible_extra_menu_height)) * 0.5f;
+ float visible_left = (1.0f - visible_width) * 0.5f;
+ float visible_top = (1.0f - (visible_main_menu_height + visible_extra_menu_height)) * 0.5f;
// if the menu is at the bottom of the extra, adjust
visible_top += customtop;
// first add us a box
- x1 = visible_left - UI_BOX_LR_BORDER;
- y1 = visible_top - UI_BOX_TB_BORDER;
- x2 = visible_left + visible_width + UI_BOX_LR_BORDER;
- y2 = visible_top + visible_main_menu_height + UI_BOX_TB_BORDER;
+ float x1 = visible_left - UI_BOX_LR_BORDER;
+ float y1 = visible_top - UI_BOX_TB_BORDER;
+ float x2 = visible_left + visible_width + UI_BOX_LR_BORDER;
+ float y2 = visible_top + visible_main_menu_height + UI_BOX_TB_BORDER;
if (!customonly)
machine().ui().draw_outlined_box(container, x1, y1, x2, y2, UI_BACKGROUND_COLOR);
// determine the first visible line based on the current selection
- top_line = selected - visible_lines / 2;
+ int top_line = selected - visible_lines / 2;
if (top_line < 0)
top_line = 0;
- if (top_line + visible_lines >= numitems)
- top_line = numitems - visible_lines;
+
+ if (top_line + visible_lines >= item.size())
+ {
+ if (history_flag)
+ selected = item.size() - 1;
+ top_line = item.size() - visible_lines;
+ }
+
+ if (history_flag && selected != item.size() - 1)
+ selected = top_line + visible_lines / 2;
// determine effective positions taking into account the hilighting arrows
- effective_width = visible_width - 2.0f * gutter_width;
- effective_left = visible_left + gutter_width;
+ float effective_width = visible_width - 2.0f * gutter_width;
+ float effective_left = visible_left + gutter_width;
// locate mouse
mouse_hit = false;
mouse_button = false;
- if (!customonly)
+ if (!customonly && !noinput)
{
- mouse_target = machine().ui_input().find_mouse(&mouse_target_x, &mouse_target_y, &mouse_button);
+ INT32 mouse_target_x, mouse_target_y;
+ render_target *mouse_target = machine().ui_input().find_mouse(&mouse_target_x, &mouse_target_y, &mouse_button);
if (mouse_target != nullptr)
if (mouse_target->map_point_container(mouse_target_x, mouse_target_y, *container, mouse_x, mouse_y))
mouse_hit = true;
}
// loop over visible lines
- hover = numitems + 1;
+ hover = item.size() + 1;
+ float line_x0 = x1 + 0.5f * UI_LINE_WIDTH;
+ float line_x1 = x2 - 0.5f * UI_LINE_WIDTH;
if (!customonly)
for (linenum = 0; linenum < visible_lines; linenum++)
{
@@ -511,17 +570,16 @@ void ui_menu::draw(bool customonly)
rgb_t bgcolor = UI_TEXT_BG_COLOR;
rgb_t fgcolor2 = UI_SUBITEM_COLOR;
rgb_t fgcolor3 = UI_CLONE_COLOR;
- float line_x0 = x1 + 0.5f * UI_LINE_WIDTH;
float line_y0 = line_y;
- float line_x1 = x2 - 0.5f * UI_LINE_WIDTH;
float line_y1 = line_y + line_height;
// set the hover if this is our item
- if (mouse_hit && line_x0 <= mouse_x && line_x1 > mouse_x && line_y0 <= mouse_y && line_y1 > mouse_y && pitem.is_selectable())
+ if (mouse_hit && line_x0 <= mouse_x && line_x1 > mouse_x && line_y0 <= mouse_y && line_y1 > mouse_y && pitem.is_selectable()
+ && (pitem.flags & MENU_FLAG_UI_HISTORY) == 0)
hover = itemnum;
// if we're selected, draw with a different background
- if (itemnum == selected)
+ if (itemnum == selected && (pitem.flags & MENU_FLAG_UI_HISTORY) == 0)
{
fgcolor = UI_SELECTED_COLOR;
bgcolor = UI_SELECTED_BG_COLOR;
@@ -530,7 +588,8 @@ void ui_menu::draw(bool customonly)
}
// else if the mouse is over this item, draw with a different background
- else if (itemnum == hover)
+ else if (itemnum == hover && (((pitem.flags & MENU_FLAG_UI_HISTORY) == 0) || (linenum == 0 && top_line != 0)
+ || (linenum == visible_lines - 1 && itemnum != item.size() - 1)))
{
fgcolor = UI_MOUSEOVER_COLOR;
bgcolor = UI_MOUSEOVER_BG_COLOR;
@@ -545,8 +604,7 @@ void ui_menu::draw(bool customonly)
// if we're on the top line, display the up arrow
if (linenum == 0 && top_line != 0)
{
- draw_arrow(
- container,
+ draw_arrow(container,
0.5f * (x1 + x2) - 0.5f * ud_arrow_width,
line_y + 0.25f * line_height,
0.5f * (x1 + x2) + 0.5f * ud_arrow_width,
@@ -554,14 +612,13 @@ void ui_menu::draw(bool customonly)
fgcolor,
ROT0);
if (hover == itemnum)
- hover = -2;
+ hover = HOVER_ARROW_UP;
}
// if we're on the bottom line, display the down arrow
- else if (linenum == visible_lines - 1 && itemnum != numitems - 1)
+ else if (linenum == visible_lines - 1 && itemnum != item.size() - 1)
{
- draw_arrow(
- container,
+ draw_arrow(container,
0.5f * (x1 + x2) - 0.5f * ud_arrow_width,
line_y + 0.25f * line_height,
0.5f * (x1 + x2) + 0.5f * ud_arrow_width,
@@ -569,17 +626,22 @@ void ui_menu::draw(bool customonly)
fgcolor,
ROT0 ^ ORIENTATION_FLIP_Y);
if (hover == itemnum)
- hover = -1;
+ hover = HOVER_ARROW_DOWN;
}
// if we're just a divider, draw a line
else if (strcmp(itemtext, MENU_SEPARATOR_ITEM) == 0)
container->add_line(visible_left, line_y + 0.5f * line_height, visible_left + visible_width, line_y + 0.5f * line_height, UI_LINE_WIDTH, UI_BORDER_COLOR, PRIMFLAG_BLENDMODE(BLENDMODE_ALPHA));
+ // draw the subitem left-justified
+ else if (pitem.subtext == nullptr && (pitem.flags & MENU_FLAG_UI_HISTORY) != 0)
+ machine().ui().draw_text_full(container, itemtext, effective_left, line_y, effective_width,
+ JUSTIFY_LEFT, WRAP_TRUNCATE, DRAW_NORMAL, fgcolor, bgcolor, nullptr, nullptr);
+
// if we don't have a subitem, just draw the string centered
else if (pitem.subtext == nullptr)
machine().ui().draw_text_full(container, itemtext, effective_left, line_y, effective_width,
- JUSTIFY_CENTER, WRAP_TRUNCATE, DRAW_NORMAL, fgcolor, bgcolor, nullptr, nullptr);
+ JUSTIFY_CENTER, WRAP_TRUNCATE, DRAW_NORMAL, fgcolor, bgcolor, nullptr, nullptr);
// otherwise, draw the item on the left and the subitem text on the right
else
@@ -603,6 +665,16 @@ void ui_menu::draw(bool customonly)
selected_subitem_too_big = TRUE;
}
+ // customize subitem text color
+ if (!core_stricmp(subitem_text, "On"))
+ fgcolor2 = rgb_t(0xff,0x00,0xff,0x00);
+
+ if (!core_stricmp(subitem_text, "Off"))
+ fgcolor2 = rgb_t(0xff,0xff,0x00,0x00);
+
+ if (!core_stricmp(subitem_text, "Auto"))
+ fgcolor2 = rgb_t(0xff,0xff,0xff,0x00);
+
// draw the subitem right-justified
machine().ui().draw_text_full(container, subitem_text, effective_left + item_width, line_y, effective_width - item_width,
JUSTIFY_RIGHT, WRAP_TRUNCATE, DRAW_NORMAL, subitem_invert ? fgcolor3 : fgcolor2, bgcolor, &subitem_width, nullptr);
@@ -610,8 +682,7 @@ void ui_menu::draw(bool customonly)
// apply arrows
if (itemnum == selected && (pitem.flags & MENU_FLAG_LEFT_ARROW))
{
- draw_arrow(
- container,
+ draw_arrow(container,
effective_left + effective_width - subitem_width - gutter_width,
line_y + 0.1f * line_height,
effective_left + effective_width - subitem_width - gutter_width + lr_arrow_width,
@@ -621,8 +692,7 @@ void ui_menu::draw(bool customonly)
}
if (itemnum == selected && (pitem.flags & MENU_FLAG_RIGHT_ARROW))
{
- draw_arrow(
- container,
+ draw_arrow(container,
effective_left + effective_width + gutter_width - lr_arrow_width,
line_y + 0.1f * line_height,
effective_left + effective_width + gutter_width,
@@ -645,7 +715,7 @@ void ui_menu::draw(bool customonly)
// compute the multi-line target width/height
machine().ui().draw_text_full(container, pitem.subtext, 0, 0, visible_width * 0.75f,
- JUSTIFY_RIGHT, WRAP_WORD, DRAW_NONE, ARGB_WHITE, ARGB_BLACK, &target_width, &target_height);
+ JUSTIFY_RIGHT, WRAP_WORD, DRAW_NONE, ARGB_WHITE, ARGB_BLACK, &target_width, &target_height);
// determine the target location
target_x = visible_left + visible_width - target_width - UI_BOX_LR_BORDER;
@@ -657,16 +727,19 @@ void ui_menu::draw(bool customonly)
machine().ui().draw_outlined_box(container, target_x - UI_BOX_LR_BORDER,
target_y - UI_BOX_TB_BORDER,
target_x + target_width + UI_BOX_LR_BORDER,
- target_y + target_height + UI_BOX_TB_BORDER, subitem_invert ? UI_SELECTED_BG_COLOR : UI_BACKGROUND_COLOR);
+ target_y + target_height + UI_BOX_TB_BORDER,
+ subitem_invert ? UI_SELECTED_BG_COLOR : UI_BACKGROUND_COLOR);
machine().ui().draw_text_full(container, pitem.subtext, target_x, target_y, target_width,
JUSTIFY_RIGHT, WRAP_WORD, DRAW_NORMAL, UI_SELECTED_COLOR, UI_SELECTED_BG_COLOR, nullptr, nullptr);
}
// if there is something special to add, do it by calling the virtual method
- custom_render((selected >= 0 && selected < numitems) ? item[selected].ref : nullptr, customtop, custombottom, x1, y1, x2, y2);
+ custom_render((selected >= 0 && selected < item.size()) ? item[selected].ref : nullptr, customtop, custombottom, x1, y1, x2, y2);
// return the number of visible lines, minus 1 for top arrow and 1 for bottom arrow
- visitems = visible_lines - (top_line != 0) - (top_line + visible_lines != numitems);
+ visitems = visible_lines - (top_line != 0) - (top_line + visible_lines != item.size());
+// if (history_flag && (top_line + visible_lines >= item.size()))
+// selected = item.size() - 1;
}
void ui_menu::custom_render(void *selectedref, float top, float bottom, float x, float y, float x2, float y2)
@@ -691,7 +764,7 @@ void ui_menu::draw_text_box()
// compute the multi-line target width/height
machine().ui().draw_text_full(container, text, 0, 0, 1.0f - 2.0f * UI_BOX_LR_BORDER - 2.0f * gutter_width,
- JUSTIFY_LEFT, WRAP_WORD, DRAW_NONE, ARGB_WHITE, ARGB_BLACK, &target_width, &target_height);
+ JUSTIFY_LEFT, WRAP_WORD, DRAW_NONE, ARGB_WHITE, ARGB_BLACK, &target_width, &target_height);
target_height += 2.0f * line_height;
if (target_height > 1.0f - 2.0f * UI_BOX_TB_BORDER)
target_height = floorf((1.0f - 2.0f * UI_BOX_TB_BORDER) / line_height) * line_height;
@@ -716,25 +789,25 @@ void ui_menu::draw_text_box()
// add a box around that
machine().ui().draw_outlined_box(container, target_x - UI_BOX_LR_BORDER - gutter_width,
- target_y - UI_BOX_TB_BORDER,
- target_x + target_width + gutter_width + UI_BOX_LR_BORDER,
- target_y + target_height + UI_BOX_TB_BORDER, (item[0].flags & MENU_FLAG_REDTEXT) ? UI_RED_COLOR : UI_BACKGROUND_COLOR);
+ target_y - UI_BOX_TB_BORDER,
+ target_x + target_width + gutter_width + UI_BOX_LR_BORDER,
+ target_y + target_height + UI_BOX_TB_BORDER,
+ (item[0].flags & MENU_FLAG_REDTEXT) ? UI_RED_COLOR : UI_BACKGROUND_COLOR);
machine().ui().draw_text_full(container, text, target_x, target_y, target_width,
JUSTIFY_LEFT, WRAP_WORD, DRAW_NORMAL, UI_TEXT_COLOR, UI_TEXT_BG_COLOR, nullptr, nullptr);
// draw the "return to prior menu" text with a hilight behind it
- highlight(
- container,
- target_x + 0.5f * UI_LINE_WIDTH,
- target_y + target_height - line_height,
- target_x + target_width - 0.5f * UI_LINE_WIDTH,
- target_y + target_height,
- UI_SELECTED_BG_COLOR);
+ highlight(container,
+ target_x + 0.5f * UI_LINE_WIDTH,
+ target_y + target_height - line_height,
+ target_x + target_width - 0.5f * UI_LINE_WIDTH,
+ target_y + target_height,
+ UI_SELECTED_BG_COLOR);
machine().ui().draw_text_full(container, backtext, target_x, target_y + target_height - line_height, target_width,
JUSTIFY_CENTER, WRAP_TRUNCATE, DRAW_NORMAL, UI_SELECTED_COLOR, UI_SELECTED_BG_COLOR, nullptr, nullptr);
// artificially set the hover to the last item so a double-click exits
- hover = numitems - 1;
+ hover = item.size() - 1;
}
@@ -743,10 +816,11 @@ void ui_menu::draw_text_box()
// input events for a menu
//-------------------------------------------------
-void ui_menu::handle_events()
+void ui_menu::handle_events(UINT32 flags)
{
int stop = FALSE;
ui_event local_menu_event;
+ bool historyflag = ((item[0].flags & MENU_FLAG_UI_HISTORY) != 0);
// loop while we have interesting events
while (!stop && machine().ui_input().pop_event(&local_menu_event))
@@ -755,35 +829,61 @@ void ui_menu::handle_events()
{
// if we are hovering over a valid item, select it with a single click
case UI_EVENT_MOUSE_DOWN:
- if (hover >= 0 && hover < numitems)
- selected = hover;
- else if (hover == -2)
+ if ((flags & UI_MENU_PROCESS_ONLYCHAR) == 0)
{
- selected -= visitems - 1;
- validate_selection(1);
- }
- else if (hover == -1)
- {
- selected += visitems - 1;
- validate_selection(1);
+ if (hover >= 0 && hover < item.size())
+ selected = hover;
+ else if (hover == HOVER_ARROW_UP)
+ {
+ selected -= visitems - 1;
+ validate_selection(1);
+ }
+ else if (hover == HOVER_ARROW_DOWN)
+ {
+ selected += visitems - 1;
+ validate_selection(1);
+ }
}
break;
// if we are hovering over a valid item, fake a UI_SELECT with a double-click
case UI_EVENT_MOUSE_DOUBLE_CLICK:
- if (hover >= 0 && hover < numitems)
+ if ((flags & UI_MENU_PROCESS_ONLYCHAR) == 0)
{
- selected = hover;
- if (local_menu_event.event_type == UI_EVENT_MOUSE_DOUBLE_CLICK)
+ if (hover >= 0 && hover < item.size())
{
- menu_event.iptkey = IPT_UI_SELECT;
- if (selected == numitems - 1)
+ selected = hover;
+ if (local_menu_event.event_type == UI_EVENT_MOUSE_DOUBLE_CLICK)
{
- menu_event.iptkey = IPT_UI_CANCEL;
- ui_menu::stack_pop(machine());
+ menu_event.iptkey = IPT_UI_SELECT;
+ if (selected == item.size() - 1)
+ {
+ menu_event.iptkey = IPT_UI_CANCEL;
+ ui_menu::stack_pop(machine());
+ }
}
+ stop = TRUE;
+ }
+ }
+ break;
+
+ // caught scroll event
+ case UI_EVENT_MOUSE_WHEEL:
+ if ((flags & UI_MENU_PROCESS_ONLYCHAR) == 0)
+ {
+ if (local_menu_event.zdelta > 0)
+ {
+ if (historyflag && selected == item.size() - 1)
+ selected -= visitems + 1;
+ else
+ selected -= local_menu_event.num_lines;
+ validate_selection(-1);
+ }
+ else
+ {
+ selected += local_menu_event.num_lines;
+ validate_selection(1);
}
- stop = TRUE;
}
break;
@@ -815,13 +915,15 @@ void ui_menu::handle_keys(UINT32 flags)
int code;
// bail if no items
- if (numitems == 0)
+ if (item.empty())
return;
+ bool historyflag = ((item[0].flags & MENU_FLAG_UI_HISTORY) != 0);
+
// if we hit select, return TRUE or pop the stack, depending on the item
if (exclusive_input_pressed(IPT_UI_SELECT, 0))
{
- if (selected == numitems - 1)
+ if (selected == item.size() - 1)
{
menu_event.iptkey = IPT_UI_CANCEL;
ui_menu::stack_pop(machine());
@@ -829,10 +931,15 @@ void ui_menu::handle_keys(UINT32 flags)
return;
}
+ // bail out
+ if ((flags & UI_MENU_PROCESS_ONLYCHAR) != 0)
+ return;
+
// hitting cancel also pops the stack
if (exclusive_input_pressed(IPT_UI_CANCEL, 0))
{
- ui_menu::stack_pop(machine());
+ if (!menu_has_search_active())
+ ui_menu::stack_pop(machine());
return;
}
@@ -852,14 +959,32 @@ void ui_menu::handle_keys(UINT32 flags)
// up backs up by one item
if (exclusive_input_pressed(IPT_UI_UP, 6))
{
- selected = (selected + numitems - 1) % numitems;
+ if (historyflag && selected <= (visitems / 2))
+ return;
+ else if (historyflag && visitems == item.size())
+ {
+ selected = item.size() - 1;
+ return;
+ }
+ else if (historyflag && selected == item.size() - 1)
+ selected = (item.size() - 1) - (visitems / 2);
+
+ selected = (selected + item.size() - 1) % item.size();
validate_selection(-1);
}
// down advances by one item
if (exclusive_input_pressed(IPT_UI_DOWN, 6))
{
- selected = (selected + 1) % numitems;
+ if (historyflag && (selected < visitems / 2))
+ selected = visitems / 2;
+ else if (historyflag && (selected + (visitems / 2) >= item.size()))
+ {
+ selected = item.size() - 1;
+ return;
+ }
+
+ selected = (selected + 1) % item.size();
validate_selection(1);
}
@@ -887,7 +1012,7 @@ void ui_menu::handle_keys(UINT32 flags)
// end goes to the last
if (exclusive_input_pressed(IPT_UI_END, 0))
{
- selected = numitems - 1;
+ selected = item.size() - 1;
validate_selection(-1);
}
@@ -927,12 +1052,12 @@ void ui_menu::validate_selection(int scandir)
// clamp to be in range
if (selected < 0)
selected = 0;
- else if (selected >= numitems)
- selected = numitems - 1;
+ else if (selected >= item.size())
+ selected = item.size() - 1;
// skip past unselectable items
while (!item[selected].is_selectable())
- selected = (selected + numitems + scandir) % numitems;
+ selected = (selected + item.size() + scandir) % item.size();
}
@@ -948,14 +1073,14 @@ void ui_menu::clear_free_list(running_machine &machine)
{
ui_menu *menu = menu_free;
menu_free = menu->parent;
- auto_free(machine, menu);
+ global_free(menu);
}
}
/***************************************************************************
- MENU STACK MANAGEMENT
+ MENU STACK MANAGEMENT
***************************************************************************/
//-------------------------------------------------
@@ -1018,14 +1143,14 @@ bool ui_menu::stack_has_special_main_menu()
void ui_menu::do_handle()
{
- if(!populated())
+ if(item.size() < 2)
populate();
handle();
}
/***************************************************************************
- UI SYSTEM INTERACTION
+ UI SYSTEM INTERACTION
***************************************************************************/
//-------------------------------------------------
@@ -1037,7 +1162,7 @@ UINT32 ui_menu::ui_handler(running_machine &machine, render_container *container
{
// if we have no menus stacked up, start with the main menu
if (menu_stack == nullptr)
- stack_push(auto_alloc_clear(machine, <ui_menu_main>(machine, container)));
+ stack_push(global_alloc_clear<ui_menu_main>(machine, container));
// update the menu state
if (menu_stack != nullptr)
@@ -1054,7 +1179,7 @@ UINT32 ui_menu::ui_handler(running_machine &machine, render_container *container
}
/***************************************************************************
- MENU HELPERS
+ MENU HELPERS
***************************************************************************/
//-------------------------------------------------
@@ -1118,8 +1243,7 @@ void ui_menu::render_triangle(bitmap_argb32 &dest, bitmap_argb32 &source, const
void ui_menu::highlight(render_container *container, float x0, float y0, float x1, float y1, rgb_t bgcolor)
{
- container->add_quad(x0, y0, x1, y1, bgcolor, hilight_texture,
- PRIMFLAG_BLENDMODE(BLENDMODE_ALPHA) | PRIMFLAG_TEXWRAP(TRUE));
+ container->add_quad(x0, y0, x1, y1, bgcolor, hilight_texture, PRIMFLAG_BLENDMODE(BLENDMODE_ALPHA) | PRIMFLAG_TEXWRAP(TRUE));
}
@@ -1129,12 +1253,1375 @@ void ui_menu::highlight(render_container *container, float x0, float y0, float x
void ui_menu::draw_arrow(render_container *container, float x0, float y0, float x1, float y1, rgb_t fgcolor, UINT32 orientation)
{
- container->add_quad(
- x0,
- y0,
- x1,
- y1,
- fgcolor,
- arrow_texture,
- PRIMFLAG_BLENDMODE(BLENDMODE_ALPHA) | PRIMFLAG_TEXORIENT(orientation));
+ container->add_quad(x0, y0, x1, y1, fgcolor, arrow_texture, PRIMFLAG_BLENDMODE(BLENDMODE_ALPHA) | PRIMFLAG_TEXORIENT(orientation));
+}
+
+//-------------------------------------------------
+// init - initialize the ui menu system
+//-------------------------------------------------
+
+void ui_menu::init_ui(running_machine &machine)
+{
+ render_manager &mrender = machine.render();
+ // create a texture for hilighting items in main menu
+ hilight_main_bitmap = std::make_unique<bitmap_rgb32>(1, 26);
+ int r1 = 0, g1 = 169, b1 = 255; //Any start color
+ int r2 = 0, g2 = 39, b2 = 130; //Any stop color
+ for (int y = 0; y < 26; y++)
+ {
+ int r = r1 + (y * (r2 - r1) / 26);
+ int g = g1 + (y * (g2 - g1) / 26);
+ int b = b1 + (y * (b2 - b1) / 26);
+ hilight_main_bitmap->pix32(y, 0) = rgb_t(0xff, r, g, b);
+ }
+
+ hilight_main_texture = mrender.texture_alloc();
+ hilight_main_texture->set_bitmap(*hilight_main_bitmap, hilight_main_bitmap->cliprect(), TEXFORMAT_ARGB32);
+
+ // create a texture for snapshot
+ snapx_bitmap = std::make_unique<bitmap_argb32>(0, 0);
+ snapx_texture = mrender.texture_alloc(render_texture::hq_scale);
+
+ // allocates and sets the default "no available" image
+ no_avail_bitmap = std::make_unique<bitmap_argb32>(256, 256);
+ UINT32 *dst = &no_avail_bitmap->pix32(0);
+ memcpy(dst, no_avail_bmp, 256 * 256 * sizeof(UINT32));
+
+ // allocates and sets the favorites star image
+ star_bitmap = std::make_unique<bitmap_argb32>(32, 32);
+ dst = &star_bitmap->pix32(0);
+ memcpy(dst, favorite_star_bmp, 32 * 32 * sizeof(UINT32));
+ star_texture = mrender.texture_alloc();
+ star_texture->set_bitmap(*star_bitmap, star_bitmap->cliprect(), TEXFORMAT_ARGB32);
+
+ // allocates icons bitmap and texture
+ for (int i = 0; i < MAX_ICONS_RENDER; i++)
+ {
+ icons_bitmap[i] = auto_alloc(machine, bitmap_argb32);
+ icons_texture[i] = mrender.texture_alloc();
+ }
+
+ // create a texture for main menu background
+ bgrnd_bitmap = std::make_unique<bitmap_argb32>(0, 0);
+ bgrnd_texture = mrender.texture_alloc(render_texture::hq_scale);
+
+ ui_options &mopt = machine.ui().options();
+ if (mopt.use_background_image() && &machine.system() == &GAME_NAME(___empty))
+ {
+ emu_file backgroundfile(".", OPEN_FLAG_READ);
+ render_load_jpeg(*bgrnd_bitmap, backgroundfile, nullptr, "background.jpg");
+
+ if (!bgrnd_bitmap->valid())
+ render_load_png(*bgrnd_bitmap, backgroundfile, nullptr, "background.png");
+
+ if (bgrnd_bitmap->valid())
+ bgrnd_texture->set_bitmap(*bgrnd_bitmap, bgrnd_bitmap->cliprect(), TEXFORMAT_ARGB32);
+ else
+ bgrnd_bitmap->reset();
+ }
+ else
+ bgrnd_bitmap->reset();
+
+ // create a texture for toolbar
+ for (int x = 0; x < UI_TOOLBAR_BUTTONS; ++x)
+ {
+ toolbar_bitmap[x] = auto_alloc(machine, bitmap_argb32(32, 32));
+ toolbar_texture[x] = mrender.texture_alloc();
+ UINT32 *dst = &toolbar_bitmap[x]->pix32(0);
+ memcpy(dst, toolbar_bitmap_bmp[x], 32 * 32 * sizeof(UINT32));
+ if (toolbar_bitmap[x]->valid())
+ toolbar_texture[x]->set_bitmap(*toolbar_bitmap[x], toolbar_bitmap[x]->cliprect(), TEXFORMAT_ARGB32);
+ else
+ toolbar_bitmap[x]->reset();
+ }
+
+ // create a texture for toolbar
+ for (int x = 0; x < UI_TOOLBAR_BUTTONS; ++x)
+ {
+ sw_toolbar_bitmap[x] = auto_alloc(machine, bitmap_argb32(32, 32));
+ sw_toolbar_texture[x] = mrender.texture_alloc();
+ if (x == 0 || x == 2)
+ {
+ UINT32 *dst;
+ dst = &sw_toolbar_bitmap[x]->pix32(0);
+ memcpy(dst, toolbar_bitmap_bmp[x], 32 * 32 * sizeof(UINT32));
+ sw_toolbar_texture[x]->set_bitmap(*sw_toolbar_bitmap[x], sw_toolbar_bitmap[x]->cliprect(), TEXFORMAT_ARGB32);
+ }
+ else
+ sw_toolbar_bitmap[x]->reset();
+ }
+}
+
+
+//-------------------------------------------------
+// draw main menu
+//-------------------------------------------------
+
+void ui_menu::draw_select_game(bool noinput)
+{
+ float line_height = machine().ui().get_line_height();
+ float ud_arrow_width = line_height * machine().render().ui_aspect();
+ float gutter_width = 0.4f * line_height * machine().render().ui_aspect() * 1.3f;
+ mouse_x = -1, mouse_y = -1;
+ float right_panel_size = (ui_globals::panels_status == HIDE_BOTH || ui_globals::panels_status == HIDE_RIGHT_PANEL) ? 2.0f * UI_BOX_LR_BORDER : 0.3f;
+ float visible_width = 1.0f - 4.0f * UI_BOX_LR_BORDER;
+ float primary_left = (1.0f - visible_width) * 0.5f;
+ float primary_width = visible_width;
+ bool is_swlist = ((item[0].flags & MENU_FLAG_UI_SWLIST) != 0);
+ bool is_favorites = ((item[0].flags & MENU_FLAG_UI_FAVORITE) != 0);
+ ui_manager &mui = machine().ui();
+
+ // draw background image if available
+ if (machine().ui().options().use_background_image() && bgrnd_bitmap->valid())
+ container->add_quad(0.0f, 0.0f, 1.0f, 1.0f, ARGB_WHITE, bgrnd_texture, PRIMFLAG_BLENDMODE(BLENDMODE_ALPHA));
+
+ hover = item.size() + 1;
+ visible_items = (is_swlist) ? item.size() - 2 : item.size() - 5;
+ float extra_height = (is_swlist) ? 2.0f * line_height : 5.0f * line_height;
+ float visible_extra_menu_height = customtop + custombottom + extra_height;
+
+ // locate mouse
+ mouse_hit = FALSE;
+ mouse_button = FALSE;
+ if (!noinput)
+ {
+ mouse_target = machine().ui_input().find_mouse(&mouse_target_x, &mouse_target_y, &mouse_button);
+ if (mouse_target != nullptr)
+ if (mouse_target->map_point_container(mouse_target_x, mouse_target_y, *container, mouse_x, mouse_y))
+ mouse_hit = TRUE;
+ }
+
+ // account for extra space at the top and bottom
+ float visible_main_menu_height = 1.0f - 2.0f * UI_BOX_TB_BORDER - visible_extra_menu_height;
+ visible_lines = floor(visible_main_menu_height / line_height);
+ visible_main_menu_height = (float)(visible_lines * line_height);
+
+ if (!is_swlist)
+ ui_globals::visible_main_lines = visible_lines;
+ else
+ ui_globals::visible_sw_lines = visible_lines;
+
+ // compute top/left of inner menu area by centering
+ float visible_left = primary_left;
+ float visible_top = (1.0f - (visible_main_menu_height + visible_extra_menu_height)) * 0.5f;
+
+ // if the menu is at the bottom of the extra, adjust
+ visible_top += customtop;
+
+ // compute left box size
+ float x1 = visible_left - UI_BOX_LR_BORDER;
+ float y1 = visible_top - UI_BOX_TB_BORDER;
+ float x2 = x1 + 2.0f * UI_BOX_LR_BORDER;
+ float y2 = visible_top + visible_main_menu_height + UI_BOX_TB_BORDER + extra_height;
+
+ // add left box
+ visible_left = draw_left_panel(x1, y1, x2, y2);
+ visible_width -= right_panel_size + visible_left - 2.0f * UI_BOX_LR_BORDER;
+
+ // compute and add main box
+ x1 = visible_left - UI_BOX_LR_BORDER;
+ x2 = visible_left + visible_width + UI_BOX_LR_BORDER;
+ float line = visible_top + (float)(visible_lines * line_height);
+
+ //machine().ui().draw_outlined_box(container, x1, y1, x2, y2, rgb_t(0xEF, 0x12, 0x47, 0x7B));
+ mui.draw_outlined_box(container, x1, y1, x2, y2, UI_BACKGROUND_COLOR);
+
+ if (visible_items < visible_lines)
+ visible_lines = visible_items;
+ if (top_line < 0 || selected == 0)
+ top_line = 0;
+ if (selected < visible_items && top_line + visible_lines >= visible_items)
+ top_line = visible_items - visible_lines;
+
+ // determine effective positions taking into account the hilighting arrows
+ float effective_width = visible_width - 2.0f * gutter_width;
+ float effective_left = visible_left + gutter_width;
+
+ int n_loop = (visible_items >= visible_lines) ? visible_lines : visible_items;
+
+ for (int linenum = 0; linenum < n_loop; linenum++)
+ {
+ float line_y = visible_top + (float)linenum * line_height;
+ int itemnum = top_line + linenum;
+ const ui_menu_item &pitem = item[itemnum];
+ const char *itemtext = pitem.text;
+ rgb_t fgcolor = UI_TEXT_COLOR;
+ rgb_t bgcolor = UI_TEXT_BG_COLOR;
+ rgb_t fgcolor3 = UI_CLONE_COLOR;
+ float line_x0 = x1 + 0.5f * UI_LINE_WIDTH;
+ float line_y0 = line_y;
+ float line_x1 = x2 - 0.5f * UI_LINE_WIDTH;
+ float line_y1 = line_y + line_height;
+
+ // set the hover if this is our item
+ if (mouse_hit && line_x0 <= mouse_x && line_x1 > mouse_x && line_y0 <= mouse_y && line_y1 > mouse_y && pitem.is_selectable())
+ hover = itemnum;
+
+ // if we're selected, draw with a different background
+ if (itemnum == selected)
+ {
+ fgcolor = rgb_t(0xff, 0xff, 0xff, 0x00);
+ bgcolor = rgb_t(0xff, 0xff, 0xff, 0xff);
+ fgcolor3 = rgb_t(0xff, 0xcc, 0xcc, 0x00);
+ }
+ // else if the mouse is over this item, draw with a different background
+ else if (itemnum == hover)
+ {
+ fgcolor = fgcolor3 = UI_MOUSEOVER_COLOR;
+ bgcolor = UI_MOUSEOVER_BG_COLOR;
+ }
+
+ // if we have some background hilighting to do, add a quad behind everything else
+ if (bgcolor != UI_TEXT_BG_COLOR)
+ mui.draw_textured_box(container, line_x0 + 0.01f, line_y0, line_x1 - 0.01f, line_y1,
+ bgcolor, rgb_t(255, 43, 43, 43), hilight_main_texture,
+ PRIMFLAG_BLENDMODE(BLENDMODE_ALPHA) | PRIMFLAG_TEXWRAP(TRUE));
+
+ // if we're on the top line, display the up arrow
+ if (linenum == 0 && top_line != 0)
+ {
+ draw_arrow(container, 0.5f * (x1 + x2) - 0.5f * ud_arrow_width, line_y + 0.25f * line_height,
+ 0.5f * (x1 + x2) + 0.5f * ud_arrow_width, line_y + 0.75f * line_height, fgcolor, ROT0);
+
+ if (hover == itemnum)
+ hover = HOVER_ARROW_UP;
+ }
+ // if we're on the bottom line, display the down arrow
+ else if (linenum == visible_lines - 1 && itemnum != visible_items - 1)
+ {
+ draw_arrow(container, 0.5f * (x1 + x2) - 0.5f * ud_arrow_width, line_y + 0.25f * line_height,
+ 0.5f * (x1 + x2) + 0.5f * ud_arrow_width, line_y + 0.75f * line_height, fgcolor, ROT0 ^ ORIENTATION_FLIP_Y);
+
+ if (hover == itemnum)
+ hover = HOVER_ARROW_DOWN;
+ }
+ // if we're just a divider, draw a line
+ else if (strcmp(itemtext, MENU_SEPARATOR_ITEM) == 0)
+ container->add_line(visible_left, line_y + 0.5f * line_height, visible_left + visible_width, line_y + 0.5f * line_height,
+ UI_LINE_WIDTH, UI_TEXT_COLOR, PRIMFLAG_BLENDMODE(BLENDMODE_ALPHA));
+ // draw the item centered
+ else if (pitem.subtext == nullptr)
+ {
+ int item_invert = pitem.flags & MENU_FLAG_INVERT;
+ float space = 0.0f;
+
+ if (!is_swlist)
+ {
+ if (is_favorites)
+ {
+ ui_software_info *soft = (ui_software_info *)item[itemnum].ref;
+ if (soft->startempty == 1)
+ draw_icon(linenum, (void *)soft->driver, effective_left, line_y);
+ }
+ else
+ draw_icon(linenum, item[itemnum].ref, effective_left, line_y);
+
+ space = mui.get_line_height() * container->manager().ui_aspect() * 1.5f;
+ }
+ mui.draw_text_full(container, itemtext, effective_left + space, line_y, effective_width - space,
+ JUSTIFY_LEFT, WRAP_TRUNCATE, DRAW_NORMAL, item_invert ? fgcolor3 : fgcolor,
+ bgcolor, nullptr, nullptr);
+ }
+ else
+ {
+ int item_invert = pitem.flags & MENU_FLAG_INVERT;
+ const char *subitem_text = pitem.subtext;
+ float item_width, subitem_width;
+
+ // compute right space for subitem
+ mui.draw_text_full(container, subitem_text, effective_left, line_y, machine().ui().get_string_width(pitem.subtext),
+ JUSTIFY_RIGHT, WRAP_NEVER, DRAW_NONE, item_invert ? fgcolor3 : fgcolor, bgcolor, &subitem_width, nullptr);
+ subitem_width += gutter_width;
+
+ // draw the item left-justified
+ mui.draw_text_full(container, itemtext, effective_left, line_y, effective_width - subitem_width,
+ JUSTIFY_LEFT, WRAP_TRUNCATE, DRAW_NORMAL, item_invert ? fgcolor3 : fgcolor, bgcolor, &item_width, nullptr);
+
+ // draw the subitem right-justified
+ mui.draw_text_full(container, subitem_text, effective_left + item_width, line_y, effective_width - item_width,
+ JUSTIFY_RIGHT, WRAP_NEVER, DRAW_NORMAL, item_invert ? fgcolor3 : fgcolor, bgcolor, nullptr, nullptr);
+ }
+ }
+
+ for (size_t count = visible_items; count < item.size(); count++)
+ {
+ const ui_menu_item &pitem = item[count];
+ const char *itemtext = pitem.text;
+ float line_x0 = x1 + 0.5f * UI_LINE_WIDTH;
+ float line_y0 = line;
+ float line_x1 = x2 - 0.5f * UI_LINE_WIDTH;
+ float line_y1 = line + line_height;
+ rgb_t fgcolor = UI_TEXT_COLOR;
+ rgb_t bgcolor = UI_TEXT_BG_COLOR;
+
+ if (mouse_hit && line_x0 <= mouse_x && line_x1 > mouse_x && line_y0 <= mouse_y && line_y1 > mouse_y && pitem.is_selectable())
+ hover = count;
+
+ // if we're selected, draw with a different background
+ if (count == selected)
+ {
+ fgcolor = rgb_t(0xff, 0xff, 0xff, 0x00);
+ bgcolor = rgb_t(0xff, 0xff, 0xff, 0xff);
+ }
+ // else if the mouse is over this item, draw with a different background
+ else if (count == hover)
+ {
+ fgcolor = UI_MOUSEOVER_COLOR;
+ bgcolor = UI_MOUSEOVER_BG_COLOR;
+ }
+
+ // if we have some background hilighting to do, add a quad behind everything else
+ if (bgcolor != UI_TEXT_BG_COLOR)
+ mui.draw_textured_box(container, line_x0 + 0.01f, line_y0, line_x1 - 0.01f, line_y1, bgcolor, rgb_t(255, 43, 43, 43),
+ hilight_main_texture, PRIMFLAG_BLENDMODE(BLENDMODE_ALPHA) | PRIMFLAG_TEXWRAP(TRUE));
+
+ if (strcmp(itemtext, MENU_SEPARATOR_ITEM) == 0)
+ container->add_line(visible_left, line + 0.5f * line_height, visible_left + visible_width, line + 0.5f * line_height,
+ UI_LINE_WIDTH, UI_TEXT_COLOR, PRIMFLAG_BLENDMODE(BLENDMODE_ALPHA));
+ else
+ mui.draw_text_full(container, itemtext, effective_left, line, effective_width,
+ JUSTIFY_CENTER, WRAP_TRUNCATE, DRAW_NORMAL, fgcolor, bgcolor, nullptr, nullptr);
+ line += line_height;
+ }
+
+ x1 = x2;
+ x2 += right_panel_size;
+
+ draw_right_panel((selected >= 0 && selected < item.size()) ? item[selected].ref : nullptr, x1, y1, x2, y2);
+
+ x1 = primary_left - UI_BOX_LR_BORDER;
+ x2 = primary_left + primary_width + UI_BOX_LR_BORDER;
+
+ // if there is something special to add, do it by calling the virtual method
+ custom_render((selected >= 0 && selected < item.size()) ? item[selected].ref : nullptr, customtop, custombottom, x1, y1, x2, y2);
+
+ // return the number of visible lines, minus 1 for top arrow and 1 for bottom arrow
+ visitems = visible_lines - (top_line != 0) - (top_line + visible_lines != visible_items);
+
+ // reset redraw icon stage
+ if (!is_swlist)
+ ui_globals::redraw_icon = false;
+}
+
+//-------------------------------------------------
+// get title and search path for right panel
+//-------------------------------------------------
+
+void ui_menu::get_title_search(std::string &snaptext, std::string &searchstr)
+{
+ // get arts title text
+ snaptext.assign(arts_info[ui_globals::curimage_view].title);
+
+ // get search path
+ if (ui_globals::curimage_view == SNAPSHOT_VIEW)
+ searchstr = machine().options().value(arts_info[ui_globals::curimage_view].path);
+ else
+ searchstr = machine().ui().options().value(arts_info[ui_globals::curimage_view].path);
+
+ path_iterator path(searchstr.c_str());
+ std::string curpath;
+
+ // iterate over path and add path for zipped formats
+ while (path.next(curpath))
+ {
+ path_iterator path_iter(arts_info[ui_globals::curimage_view].addpath);
+ std::string c_path;
+ while (path_iter.next(c_path))
+ searchstr.append(";").append(curpath).append(PATH_SEPARATOR).append(c_path);
+ }
}
+
+//-------------------------------------------------
+// handle keys for main menu
+//-------------------------------------------------
+
+void ui_menu::handle_main_keys(UINT32 flags)
+{
+ bool ignorepause = ui_menu::stack_has_special_main_menu();
+
+ // bail if no items
+ if (item.size() == 0)
+ return;
+
+ // if we hit select, return TRUE or pop the stack, depending on the item
+ if (exclusive_input_pressed(IPT_UI_SELECT, 0))
+ {
+ if (selected == item.size() - 1)
+ {
+ menu_event.iptkey = IPT_UI_CANCEL;
+ ui_menu::stack_pop(machine());
+ }
+ return;
+ }
+
+ // hitting cancel also pops the stack
+ if (exclusive_input_pressed(IPT_UI_CANCEL, 0))
+ {
+ if (!menu_has_search_active())
+ ui_menu::stack_pop(machine());
+ // else if (!ui_error)
+ // ui_menu::stack_pop(machine()); TODO
+ return;
+ }
+
+ // validate the current selection
+ validate_selection(1);
+
+ // swallow left/right keys if they are not appropriate
+ bool ignoreleft = ((item[selected].flags & MENU_FLAG_LEFT_ARROW) == 0 || ui_globals::panels_status == HIDE_BOTH || ui_globals::panels_status == HIDE_RIGHT_PANEL);
+ bool ignoreright = ((item[selected].flags & MENU_FLAG_RIGHT_ARROW) == 0 || ui_globals::panels_status == HIDE_BOTH || ui_globals::panels_status == HIDE_RIGHT_PANEL);
+ bool ignoreup = (ui_globals::panels_status == HIDE_BOTH || ui_globals::panels_status == HIDE_LEFT_PANEL);
+ bool ignoredown = (ui_globals::panels_status == HIDE_BOTH || ui_globals::panels_status == HIDE_LEFT_PANEL);
+
+ input_manager &minput = machine().input();
+ // accept left/right keys as-is with repeat
+ if (!ignoreleft && exclusive_input_pressed(IPT_UI_LEFT, (flags & UI_MENU_PROCESS_LR_REPEAT) ? 6 : 0))
+ {
+ // Swap the right panel
+ if (minput.code_pressed(KEYCODE_LCONTROL) || minput.code_pressed(JOYCODE_BUTTON1))
+ menu_event.iptkey = IPT_UI_LEFT_PANEL;
+ return;
+ }
+
+ if (!ignoreright && exclusive_input_pressed(IPT_UI_RIGHT, (flags & UI_MENU_PROCESS_LR_REPEAT) ? 6 : 0))
+ {
+ // Swap the right panel
+// if (minput.code_pressed(KEYCODE_LCONTROL) || minput.code_pressed(JOYCODE_BUTTON1))
+// menu_event.iptkey = IPT_UI_RIGHT_PANEL;
+ return;
+ }
+
+ // up backs up by one item
+ if (exclusive_input_pressed(IPT_UI_UP, 6))
+ {
+ // Filter
+ if (!ignoreup && (minput.code_pressed(KEYCODE_LALT) || minput.code_pressed(JOYCODE_BUTTON2)))
+ {
+ menu_event.iptkey = IPT_UI_UP_FILTER;
+ return;
+ }
+
+ // Infos
+ if (!ignoreleft && (minput.code_pressed(KEYCODE_LCONTROL) || minput.code_pressed(JOYCODE_BUTTON1)))
+ {
+ menu_event.iptkey = IPT_UI_UP_PANEL;
+ topline_datsview--;
+ return;
+ }
+
+ if (selected == visible_items + 1 || selected == 0 || ui_error)
+ return;
+
+ selected--;
+
+ if (selected == top_line && top_line != 0)
+ top_line--;
+ }
+
+ // down advances by one item
+ if (exclusive_input_pressed(IPT_UI_DOWN, 6))
+ {
+ // Filter
+ if (!ignoredown && (minput.code_pressed(KEYCODE_LALT) || minput.code_pressed(JOYCODE_BUTTON2)))
+ {
+ menu_event.iptkey = IPT_UI_DOWN_FILTER;
+ return;
+ }
+
+ // Infos
+ if (!ignoreright && (minput.code_pressed(KEYCODE_LCONTROL) || minput.code_pressed(JOYCODE_BUTTON1)))
+ {
+ menu_event.iptkey = IPT_UI_DOWN_PANEL;
+ topline_datsview++;
+ return;
+ }
+
+ if (selected == item.size() - 1 || selected == visible_items - 1 || ui_error)
+ return;
+
+ selected++;
+
+ if (selected == top_line + visitems + (top_line != 0))
+ top_line++;
+ }
+
+ // page up backs up by visitems
+ if (exclusive_input_pressed(IPT_UI_PAGE_UP, 6))
+ {
+ // Infos
+ if (!ignoreleft && (minput.code_pressed(KEYCODE_LCONTROL) || minput.code_pressed(JOYCODE_BUTTON1)))
+ {
+ menu_event.iptkey = IPT_UI_DOWN_PANEL;
+ topline_datsview -= right_visible_lines - 1;
+ return;
+ }
+
+ if (selected < visible_items && !ui_error)
+ {
+ selected -= visitems;
+
+ if (selected < 0)
+ selected = 0;
+
+ top_line -= visitems - (top_line + visible_lines == visible_items);
+ }
+ }
+
+ // page down advances by visitems
+ if (exclusive_input_pressed(IPT_UI_PAGE_DOWN, 6))
+ {
+ // Infos
+ if (!ignoreleft && (minput.code_pressed(KEYCODE_LCONTROL) || minput.code_pressed(JOYCODE_BUTTON1)))
+ {
+ menu_event.iptkey = IPT_UI_DOWN_PANEL;
+ topline_datsview += right_visible_lines - 1;
+ return;
+ }
+
+ if (selected < visible_items && !ui_error)
+ {
+ selected += visible_lines - 2 + (selected == 0);
+
+ if (selected >= visible_items)
+ selected = visible_items - 1;
+
+ top_line += visible_lines - 2;
+ }
+ }
+
+ // home goes to the start
+ if (exclusive_input_pressed(IPT_UI_HOME, 0))
+ {
+ // Infos
+ if (!ignoreleft && (minput.code_pressed(KEYCODE_LCONTROL) || minput.code_pressed(JOYCODE_BUTTON1)))
+ {
+ menu_event.iptkey = IPT_UI_DOWN_PANEL;
+ topline_datsview = 0;
+ return;
+ }
+
+ if (selected < visible_items && !ui_error)
+ {
+ selected = 0;
+ top_line = 0;
+ }
+ }
+
+ // end goes to the last
+ if (exclusive_input_pressed(IPT_UI_END, 0))
+ {
+ // Infos
+ if (!ignoreleft && (minput.code_pressed(KEYCODE_LCONTROL) || minput.code_pressed(JOYCODE_BUTTON1)))
+ {
+ menu_event.iptkey = IPT_UI_DOWN_PANEL;
+ topline_datsview = totallines;
+ return;
+ }
+
+ if (selected < visible_items && !ui_error)
+ selected = top_line = visible_items - 1;
+ }
+
+ // pause enables/disables pause
+ if (!ui_error && !ignorepause && exclusive_input_pressed(IPT_UI_PAUSE, 0))
+ {
+ if (machine().paused())
+ machine().resume();
+ else
+ machine().pause();
+ }
+
+ // handle a toggle cheats request
+ if (!ui_error && machine().ui_input().pressed_repeat(IPT_UI_TOGGLE_CHEAT, 0))
+ machine().cheat().set_enable(!machine().cheat().enabled());
+
+ // see if any other UI keys are pressed
+ if (menu_event.iptkey == IPT_INVALID)
+ for (int code = IPT_UI_FIRST + 1; code < IPT_UI_LAST; code++)
+ {
+ if (ui_error || code == IPT_UI_CONFIGURE || (code == IPT_UI_LEFT && ignoreleft) || (code == IPT_UI_RIGHT && ignoreright) || (code == IPT_UI_PAUSE && ignorepause))
+ continue;
+
+ if (exclusive_input_pressed(code, 0))
+ break;
+ }
+}
+
+//-------------------------------------------------
+// handle input events for main menu
+//-------------------------------------------------
+
+void ui_menu::handle_main_events(UINT32 flags)
+{
+ bool stop = false;
+ ui_event local_menu_event;
+
+ // loop while we have interesting events
+ while (!stop && machine().ui_input().pop_event(&local_menu_event))
+ {
+ switch (local_menu_event.event_type)
+ {
+ // if we are hovering over a valid item, select it with a single click
+ case UI_EVENT_MOUSE_DOWN:
+ {
+ if (ui_error)
+ {
+ menu_event.iptkey = IPT_OTHER;
+ stop = true;
+ }
+ else
+ {
+ if (hover >= 0 && hover < item.size())
+ selected = hover;
+ else if (hover == HOVER_ARROW_UP)
+ {
+ selected -= visitems;
+ if (selected < 0)
+ selected = 0;
+ top_line -= visitems - (top_line + visible_lines == visible_items);
+ }
+ else if (hover == HOVER_ARROW_DOWN)
+ {
+ selected += visible_lines - 2 + (selected == 0);
+ if (selected >= visible_items)
+ selected = visible_items - 1;
+ top_line += visible_lines - 2;
+ }
+ else if (hover == HOVER_UI_RIGHT)
+ menu_event.iptkey = IPT_UI_RIGHT;
+ else if (hover == HOVER_UI_LEFT)
+ menu_event.iptkey = IPT_UI_LEFT;
+ else if (hover == HOVER_DAT_DOWN)
+ topline_datsview += right_visible_lines - 1;
+ else if (hover == HOVER_DAT_UP)
+ topline_datsview -= right_visible_lines - 1;
+ else if (hover == HOVER_LPANEL_ARROW)
+ {
+ if (ui_globals::panels_status == HIDE_LEFT_PANEL)
+ ui_globals::panels_status = SHOW_PANELS;
+ else if (ui_globals::panels_status == HIDE_BOTH)
+ ui_globals::panels_status = HIDE_RIGHT_PANEL;
+ else if (ui_globals::panels_status == SHOW_PANELS)
+ ui_globals::panels_status = HIDE_LEFT_PANEL;
+ else if (ui_globals::panels_status == HIDE_RIGHT_PANEL)
+ ui_globals::panels_status = HIDE_BOTH;
+ }
+ else if (hover == HOVER_RPANEL_ARROW)
+ {
+ if (ui_globals::panels_status == HIDE_RIGHT_PANEL)
+ ui_globals::panels_status = SHOW_PANELS;
+ else if (ui_globals::panels_status == HIDE_BOTH)
+ ui_globals::panels_status = HIDE_LEFT_PANEL;
+ else if (ui_globals::panels_status == SHOW_PANELS)
+ ui_globals::panels_status = HIDE_RIGHT_PANEL;
+ else if (ui_globals::panels_status == HIDE_LEFT_PANEL)
+ ui_globals::panels_status = HIDE_BOTH;
+ }
+ else if (hover == HOVER_B_FAV)
+ {
+ menu_event.iptkey = IPT_UI_FAVORITES;
+ stop = true;
+ }
+ else if (hover == HOVER_B_EXPORT)
+ {
+ menu_event.iptkey = IPT_UI_EXPORT;
+ stop = true;
+ }
+ else if (hover == HOVER_B_HISTORY)
+ {
+ menu_event.iptkey = IPT_UI_HISTORY;
+ stop = true;
+ }
+ else if (hover == HOVER_B_MAMEINFO)
+ {
+ menu_event.iptkey = IPT_UI_MAMEINFO;
+ stop = true;
+ }
+ else if (hover == HOVER_B_COMMAND)
+ {
+ menu_event.iptkey = IPT_UI_COMMAND;
+ stop = true;
+ }
+ else if (hover == HOVER_B_SETTINGS)
+ {
+ menu_event.iptkey = IPT_UI_SELECT;
+ selected = visible_items + 1;
+ stop = true;
+ }
+ else if (hover == HOVER_B_FOLDERS)
+ {
+ menu_event.iptkey = IPT_UI_SELECT;
+ selected = visible_items + 2;
+ stop = true;
+ }
+ else if (hover >= HOVER_RP_FIRST && hover <= HOVER_RP_LAST)
+ {
+ ui_globals::rpanel = (HOVER_RP_FIRST - hover) * (-1);
+ stop = true;
+ }
+ else if (hover >= HOVER_SW_FILTER_FIRST && hover <= HOVER_SW_FILTER_LAST)
+ {
+ l_sw_hover = (HOVER_SW_FILTER_FIRST - hover) * (-1);
+ menu_event.iptkey = IPT_OTHER;
+ stop = true;
+ }
+ else if (hover >= HOVER_FILTER_FIRST && hover <= HOVER_FILTER_LAST)
+ {
+ l_hover = (HOVER_FILTER_FIRST - hover) * (-1);
+ menu_event.iptkey = IPT_OTHER;
+ stop = true;
+ }
+ }
+ break;
+ }
+
+ // if we are hovering over a valid item, fake a UI_SELECT with a double-click
+ case UI_EVENT_MOUSE_DOUBLE_CLICK:
+ if (hover >= 0 && hover < item.size())
+ {
+ selected = hover;
+ menu_event.iptkey = IPT_UI_SELECT;
+ }
+
+ if (selected == item.size() - 1)
+ {
+ menu_event.iptkey = IPT_UI_CANCEL;
+ ui_menu::stack_pop(machine());
+ }
+ stop = true;
+ break;
+
+ // caught scroll event
+ case UI_EVENT_MOUSE_WHEEL:
+ if (local_menu_event.zdelta > 0)
+ {
+ if (selected >= visible_items || selected == 0 || ui_error)
+ break;
+ selected -= local_menu_event.num_lines;
+ if (selected < top_line + (top_line != 0))
+ top_line -= local_menu_event.num_lines;
+ }
+ else
+ {
+ if (selected >= visible_items - 1 || ui_error)
+ break;
+ selected += local_menu_event.num_lines;
+ if (selected > visible_items - 1)
+ selected = visible_items - 1;
+ if (selected >= top_line + visitems + (top_line != 0))
+ top_line += local_menu_event.num_lines;
+ }
+ break;
+
+ // translate CHAR events into specials
+ case UI_EVENT_CHAR:
+ menu_event.iptkey = IPT_SPECIAL;
+ menu_event.unichar = local_menu_event.ch;
+ stop = true;
+ break;
+
+ // ignore everything else
+ default:
+ break;
+ }
+ }
+}
+
+//-------------------------------------------------
+// draw right box title
+//-------------------------------------------------
+
+float ui_menu::draw_right_box_title(float x1, float y1, float x2, float y2)
+{
+ ui_manager &mui = machine().ui();
+ float line_height = mui.get_line_height();
+ float midl = (x2 - x1) * 0.5f;
+
+ // add outlined box for options
+ //machine().ui().draw_outlined_box(container, x1, y1, x2, y2, rgb_t(0xEF, 0x12, 0x47, 0x7B));
+ mui.draw_outlined_box(container, x1, y1, x2, y2, UI_BACKGROUND_COLOR);
+
+ // add separator line
+ container->add_line(x1 + midl, y1, x1 + midl, y1 + line_height, UI_LINE_WIDTH, UI_BORDER_COLOR, PRIMFLAG_BLENDMODE(BLENDMODE_ALPHA));
+
+ std::string buffer[RP_LAST + 1];
+ buffer[RP_IMAGES].assign("Images");
+ buffer[RP_INFOS].assign("Infos");
+
+ for (int cells = RP_IMAGES; cells <= RP_INFOS; cells++)
+ {
+ rgb_t bgcolor = UI_TEXT_BG_COLOR;
+ rgb_t fgcolor = UI_TEXT_COLOR;
+
+ if (mouse_hit && x1 <= mouse_x && x1 + midl > mouse_x && y1 <= mouse_y && y1 + line_height > mouse_y)
+ {
+ if (ui_globals::rpanel != cells)
+ {
+ bgcolor = UI_MOUSEOVER_BG_COLOR;
+ fgcolor = UI_MOUSEOVER_COLOR;
+ hover = HOVER_RP_FIRST + cells;
+ }
+ }
+
+ if (ui_globals::rpanel != cells)
+ {
+ container->add_line(x1, y1 + line_height, x1 + midl, y1 + line_height, UI_LINE_WIDTH,
+ UI_BORDER_COLOR, PRIMFLAG_BLENDMODE(BLENDMODE_ALPHA));
+ if (fgcolor != UI_MOUSEOVER_COLOR)
+ fgcolor = UI_CLONE_COLOR;
+ }
+
+ if (bgcolor != UI_TEXT_BG_COLOR)
+ container->add_rect(x1 + UI_LINE_WIDTH, y1 + UI_LINE_WIDTH, x1 + midl - UI_LINE_WIDTH, y1 + line_height,
+ bgcolor, PRIMFLAG_BLENDMODE(BLENDMODE_ALPHA) | PRIMFLAG_TEXWRAP(TRUE));
+
+ mui.draw_text_full(container, buffer[cells].c_str(), x1 + UI_LINE_WIDTH, y1, midl - UI_LINE_WIDTH,
+ JUSTIFY_CENTER, WRAP_NEVER, DRAW_NORMAL, fgcolor, bgcolor, nullptr, nullptr);
+ x1 = x1 + midl;
+ }
+
+ return (y1 + line_height + UI_LINE_WIDTH);
+}
+
+//-------------------------------------------------
+// common function for images render
+//-------------------------------------------------
+
+std::string ui_menu::arts_render_common(float origx1, float origy1, float origx2, float origy2)
+{
+ std::string snaptext, searchstr;
+ get_title_search(snaptext, searchstr);
+
+ // apply title to right panel
+ float title_size = 0.0f;
+ float txt_lenght = 0.0f;
+
+ for (int x = FIRST_VIEW; x < LAST_VIEW; x++)
+ {
+ machine().ui().draw_text_full(container, arts_info[x].title, origx1, origy1, origx2 - origx1, JUSTIFY_CENTER,
+ WRAP_TRUNCATE, DRAW_NONE, UI_TEXT_COLOR, UI_TEXT_BG_COLOR, &txt_lenght, nullptr);
+ txt_lenght += 0.01f;
+ title_size = MAX(txt_lenght, title_size);
+ }
+
+ machine().ui().draw_text_full(container, snaptext.c_str(), origx1, origy1, origx2 - origx1, JUSTIFY_CENTER, WRAP_TRUNCATE,
+ DRAW_NORMAL, UI_TEXT_COLOR, UI_TEXT_BG_COLOR, nullptr, nullptr);
+
+ draw_common_arrow(origx1, origy1, origx2, origy2, ui_globals::curimage_view, FIRST_VIEW, LAST_VIEW, title_size);
+
+ return searchstr;
+}
+
+//-------------------------------------------------
+// draw favorites star
+//-------------------------------------------------
+
+void ui_menu::draw_star(float x0, float y0)
+{
+ float y1 = y0 + machine().ui().get_line_height();
+ float x1 = x0 + machine().ui().get_line_height() * container->manager().ui_aspect();
+ container->add_quad(x0, y0, x1, y1, ARGB_WHITE, star_texture, PRIMFLAG_BLENDMODE(BLENDMODE_ALPHA));
+}
+
+//-------------------------------------------------
+// draw toolbar
+//-------------------------------------------------
+
+void ui_menu::draw_toolbar(float x1, float y1, float x2, float y2, bool software)
+{
+ ui_manager &mui = machine().ui();
+ // draw a box
+ mui.draw_outlined_box(container, x1, y1, x2, y2, rgb_t(0xEF, 0x12, 0x47, 0x7B));
+
+ // take off the borders
+ x1 += UI_BOX_LR_BORDER;
+ x2 -= UI_BOX_LR_BORDER;
+ y1 += UI_BOX_TB_BORDER;
+ y2 -= UI_BOX_TB_BORDER;
+
+ render_texture **t_texture = (software) ? sw_toolbar_texture : toolbar_texture;
+ bitmap_argb32 **t_bitmap = (software) ? sw_toolbar_bitmap : toolbar_bitmap;
+
+ int m_valid = 0;
+ for (int x = 0; x < UI_TOOLBAR_BUTTONS; ++x)
+ if (t_bitmap[x]->valid())
+ m_valid++;
+
+ float x_pixel = 1.0f / container->manager().ui_target().width();
+ int h_len = mui.get_line_height() * container->manager().ui_target().height();
+ h_len = (h_len % 2 == 0) ? h_len : h_len - 1;
+ x1 = (x1 + x2) * 0.5f - x_pixel * (m_valid * ((h_len / 2) + 2));
+
+ for (int z = 0; z < UI_TOOLBAR_BUTTONS; ++z)
+ {
+ if (t_bitmap[z]->valid())
+ {
+ x2 = x1 + x_pixel * h_len;
+ rgb_t color(0xEFEFEFEF);
+ if (mouse_hit && x1 <= mouse_x && x2 > mouse_x && y1 <= mouse_y && y2 > mouse_y)
+ {
+ hover = HOVER_B_FAV + z;
+ color = ARGB_WHITE;
+ float ypos = y2 + machine().ui().get_line_height() + 2.0f * UI_BOX_TB_BORDER;
+ mui.draw_text_box(container, hover_msg[z], JUSTIFY_CENTER, 0.5f, ypos, UI_BACKGROUND_COLOR);
+ }
+
+ container->add_quad(x1, y1, x2, y2, color, t_texture[z], PRIMFLAG_BLENDMODE(BLENDMODE_ALPHA));
+ x1 += x_pixel * (h_len + 2);
+ }
+ }
+}
+
+
+//-------------------------------------------------
+// perform rendering of image
+//-------------------------------------------------
+
+void ui_menu::arts_render_images(bitmap_argb32 *tmp_bitmap, float origx1, float origy1, float origx2, float origy2, bool software)
+{
+ bool no_available = false;
+ float line_height = machine().ui().get_line_height();
+
+ // if it fails, use the default image
+ if (!tmp_bitmap->valid())
+ {
+ tmp_bitmap->reset();
+ tmp_bitmap->allocate(256, 256);
+ for (int x = 0; x < 256; x++)
+ for (int y = 0; y < 256; y++)
+ tmp_bitmap->pix32(y, x) = no_avail_bitmap->pix32(y, x);
+ no_available = true;
+ }
+
+ if (tmp_bitmap->valid())
+ {
+ float panel_width = origx2 - origx1 - 0.02f;
+ float panel_height = origy2 - origy1 - 0.02f - (2.0f * UI_BOX_TB_BORDER) - (2.0f * line_height);
+ int screen_width = machine().render().ui_target().width();
+ int screen_height = machine().render().ui_target().height();
+ int panel_width_pixel = panel_width * screen_width;
+ int panel_height_pixel = panel_height * screen_height;
+ float ratio = 0.0f;
+
+ // Calculate resize ratios for resizing
+ float ratioW = (float)panel_width_pixel / tmp_bitmap->width();
+ float ratioH = (float)panel_height_pixel / tmp_bitmap->height();
+ float ratioI = (float)tmp_bitmap->height() / tmp_bitmap->width();
+ int dest_xPixel = tmp_bitmap->width();
+ int dest_yPixel = tmp_bitmap->height();
+
+ // force 4:3 ratio min
+ if (machine().ui().options().forced_4x3_snapshot() && ratioI < 0.75f && ui_globals::curimage_view == SNAPSHOT_VIEW)
+ {
+ // smaller ratio will ensure that the image fits in the view
+ dest_yPixel = tmp_bitmap->width() * 0.75f;
+ ratioH = (float)panel_height_pixel / dest_yPixel;
+ ratio = MIN(ratioW, ratioH);
+ dest_xPixel = tmp_bitmap->width() * ratio;
+ dest_yPixel *= ratio;
+ }
+ // resize the bitmap if necessary
+ else if (ratioW < 1 || ratioH < 1 || (machine().ui().options().enlarge_snaps() && !no_available))
+ {
+ // smaller ratio will ensure that the image fits in the view
+ ratio = MIN(ratioW, ratioH);
+ dest_xPixel = tmp_bitmap->width() * ratio;
+ dest_yPixel = tmp_bitmap->height() * ratio;
+ }
+
+ bitmap_argb32 *dest_bitmap;
+ dest_bitmap = auto_alloc(machine(), bitmap_argb32);
+
+ // resample if necessary
+ if (dest_xPixel != tmp_bitmap->width() || dest_yPixel != tmp_bitmap->height())
+ {
+ dest_bitmap->allocate(dest_xPixel, dest_yPixel);
+ render_color color = { 1.0f, 1.0f, 1.0f, 1.0f };
+ render_resample_argb_bitmap_hq(*dest_bitmap, *tmp_bitmap, color, true);
+ }
+ else
+ dest_bitmap = tmp_bitmap;
+
+ snapx_bitmap->reset();
+ snapx_bitmap->allocate(panel_width_pixel, panel_height_pixel);
+ int x1 = (0.5f * panel_width_pixel) - (0.5f * dest_xPixel);
+ int y1 = (0.5f * panel_height_pixel) - (0.5f * dest_yPixel);
+
+ for (int x = 0; x < dest_xPixel; x++)
+ for (int y = 0; y < dest_yPixel; y++)
+ snapx_bitmap->pix32(y + y1, x + x1) = dest_bitmap->pix32(y, x);
+
+ auto_free(machine(), dest_bitmap);
+
+ // apply bitmap
+ snapx_texture->set_bitmap(*snapx_bitmap, snapx_bitmap->cliprect(), TEXFORMAT_ARGB32);
+ }
+ else
+ snapx_bitmap->reset();
+}
+
+//-------------------------------------------------
+// draw common arrows
+//-------------------------------------------------
+
+void ui_menu::draw_common_arrow(float origx1, float origy1, float origx2, float origy2, int current, int dmin, int dmax, float title_size)
+{
+ float line_height = machine().ui().get_line_height();
+ float lr_arrow_width = 0.4f * line_height * machine().render().ui_aspect();
+ float gutter_width = lr_arrow_width * 1.3f;
+
+ // set left-right arrows dimension
+ float ar_x0 = 0.5f * (origx2 + origx1) + 0.5f * title_size + gutter_width - lr_arrow_width;
+ float ar_y0 = origy1 + 0.1f * line_height;
+ float ar_x1 = 0.5f * (origx2 + origx1) + 0.5f * title_size + gutter_width;
+ float ar_y1 = origy1 + 0.9f * line_height;
+
+ float al_x0 = 0.5f * (origx2 + origx1) - 0.5f * title_size - gutter_width;
+ float al_y0 = origy1 + 0.1f * line_height;
+ float al_x1 = 0.5f * (origx2 + origx1) - 0.5f * title_size - gutter_width + lr_arrow_width;
+ float al_y1 = origy1 + 0.9f * line_height;
+
+ rgb_t fgcolor_right, fgcolor_left;
+ fgcolor_right = fgcolor_left = UI_TEXT_COLOR;
+
+ // set hover
+ if (mouse_hit && ar_x0 <= mouse_x && ar_x1 > mouse_x && ar_y0 <= mouse_y && ar_y1 > mouse_y && current != dmax)
+ {
+ machine().ui().draw_textured_box(container, ar_x0 + 0.01f, ar_y0, ar_x1 - 0.01f, ar_y1, UI_MOUSEOVER_BG_COLOR, rgb_t(255, 43, 43, 43),
+ hilight_main_texture, PRIMFLAG_BLENDMODE(BLENDMODE_ALPHA) | PRIMFLAG_TEXWRAP(TRUE));
+ hover = HOVER_UI_RIGHT;
+ fgcolor_right = UI_MOUSEOVER_COLOR;
+ }
+ else if (mouse_hit && al_x0 <= mouse_x && al_x1 > mouse_x && al_y0 <= mouse_y && al_y1 > mouse_y && current != dmin)
+ {
+ machine().ui().draw_textured_box(container, al_x0 + 0.01f, al_y0, al_x1 - 0.01f, al_y1, UI_MOUSEOVER_BG_COLOR, rgb_t(255, 43, 43, 43),
+ hilight_main_texture, PRIMFLAG_BLENDMODE(BLENDMODE_ALPHA) | PRIMFLAG_TEXWRAP(TRUE));
+ hover = HOVER_UI_LEFT;
+ fgcolor_left = UI_MOUSEOVER_COLOR;
+ }
+
+ // apply arrow
+ if (current == dmin)
+ container->add_quad(ar_x0, ar_y0, ar_x1, ar_y1, fgcolor_right, arrow_texture, PRIMFLAG_BLENDMODE(BLENDMODE_ALPHA) | PRIMFLAG_TEXORIENT(ROT90));
+ else if (current == dmax)
+ container->add_quad(al_x0, al_y0, al_x1, al_y1, fgcolor_left, arrow_texture, PRIMFLAG_BLENDMODE(BLENDMODE_ALPHA) | PRIMFLAG_TEXORIENT(ROT90 ^ ORIENTATION_FLIP_X));
+ else
+ {
+ container->add_quad(ar_x0, ar_y0, ar_x1, ar_y1, fgcolor_right, arrow_texture, PRIMFLAG_BLENDMODE(BLENDMODE_ALPHA) | PRIMFLAG_TEXORIENT(ROT90));
+ container->add_quad(al_x0, al_y0, al_x1, al_y1, fgcolor_left, arrow_texture, PRIMFLAG_BLENDMODE(BLENDMODE_ALPHA) | PRIMFLAG_TEXORIENT(ROT90 ^ ORIENTATION_FLIP_X));
+ }
+}
+
+//-------------------------------------------------
+// draw icons
+//-------------------------------------------------
+
+void ui_menu::draw_icon(int linenum, void *selectedref, float x0, float y0)
+{
+ static const game_driver *olddriver[MAX_ICONS_RENDER] = { nullptr };
+ float x1 = x0 + machine().ui().get_line_height() * container->manager().ui_aspect(container);
+ float y1 = y0 + machine().ui().get_line_height();
+ const game_driver *driver = ((FPTR)selectedref > 2) ? (const game_driver *)selectedref : nullptr;
+
+ if (driver == nullptr)
+ return;
+
+ if (olddriver[linenum] != driver || ui_globals::redraw_icon)
+ {
+ olddriver[linenum] = driver;
+
+ // set clone status
+ bool cloneof = strcmp(driver->parent, "0");
+ if (cloneof)
+ {
+ int cx = driver_list::find(driver->parent);
+ if (cx != -1 && ((driver_list::driver(cx).flags & MACHINE_IS_BIOS_ROOT) != 0))
+ cloneof = false;
+ }
+
+ // get search path
+ path_iterator path(machine().ui().options().icons_directory());
+ std::string curpath;
+ std::string searchstr(machine().ui().options().icons_directory());
+
+ // iterate over path and add path for zipped formats
+ while (path.next(curpath))
+ searchstr.append(";").append(curpath.c_str()).append(PATH_SEPARATOR).append("icons");
+
+ bitmap_argb32 *tmp = auto_alloc(machine(), bitmap_argb32);
+ emu_file snapfile(searchstr.c_str(), OPEN_FLAG_READ);
+ std::string fullname = std::string(driver->name).append(".ico");
+ render_load_ico(*tmp, snapfile, nullptr, fullname.c_str());
+
+ if (!tmp->valid() && cloneof)
+ {
+ fullname.assign(driver->parent).append(".ico");
+ render_load_ico(*tmp, snapfile, nullptr, fullname.c_str());
+ }
+
+ if (tmp->valid())
+ {
+ float panel_width = x1 - x0;
+ float panel_height = y1 - y0;
+ int screen_width = machine().render().ui_target().width();
+ int screen_height = machine().render().ui_target().height();
+ int panel_width_pixel = panel_width * screen_width;
+ int panel_height_pixel = panel_height * screen_height;
+
+ // Calculate resize ratios for resizing
+ float ratioW = (float)panel_width_pixel / tmp->width();
+ float ratioH = (float)panel_height_pixel / tmp->height();
+ int dest_xPixel = tmp->width();
+ int dest_yPixel = tmp->height();
+
+ if (ratioW < 1 || ratioH < 1)
+ {
+ // smaller ratio will ensure that the image fits in the view
+ float ratio = MIN(ratioW, ratioH);
+ dest_xPixel = tmp->width() * ratio;
+ dest_yPixel = tmp->height() * ratio;
+ }
+
+ bitmap_argb32 *dest_bitmap;
+ dest_bitmap = auto_alloc(machine(), bitmap_argb32);
+
+ // resample if necessary
+ if (dest_xPixel != tmp->width() || dest_yPixel != tmp->height())
+ {
+ dest_bitmap->allocate(dest_xPixel, dest_yPixel);
+ render_color color = { 1.0f, 1.0f, 1.0f, 1.0f };
+ render_resample_argb_bitmap_hq(*dest_bitmap, *tmp, color, true);
+ }
+ else
+ dest_bitmap = tmp;
+
+ icons_bitmap[linenum]->reset();
+ icons_bitmap[linenum]->allocate(panel_width_pixel, panel_height_pixel);
+
+ for (int x = 0; x < dest_xPixel; x++)
+ for (int y = 0; y < dest_yPixel; y++)
+ icons_bitmap[linenum]->pix32(y, x) = dest_bitmap->pix32(y, x);
+
+ auto_free(machine(), dest_bitmap);
+
+ icons_texture[linenum]->set_bitmap(*icons_bitmap[linenum], icons_bitmap[linenum]->cliprect(), TEXFORMAT_ARGB32);
+ }
+ else
+ icons_bitmap[linenum]->reset();
+
+ auto_free(machine(), tmp);
+ }
+
+ if (icons_bitmap[linenum]->valid())
+ container->add_quad(x0, y0, x1, y1, ARGB_WHITE, icons_texture[linenum], PRIMFLAG_BLENDMODE(BLENDMODE_ALPHA));
+}
+
+//-------------------------------------------------
+// draw info arrow
+//-------------------------------------------------
+
+void ui_menu::info_arrow(int ub, float origx1, float origx2, float oy1, float line_height, float text_size, float ud_arrow_width)
+{
+ rgb_t fgcolor = UI_TEXT_COLOR;
+ UINT32 orientation = (!ub) ? ROT0 : ROT0 ^ ORIENTATION_FLIP_Y;
+
+ if (mouse_hit && origx1 <= mouse_x && origx2 > mouse_x && oy1 <= mouse_y && oy1 + (line_height * text_size) > mouse_y)
+ {
+ machine().ui().draw_textured_box(container, origx1 + 0.01f, oy1, origx2 - 0.01f, oy1 + (line_height * text_size), UI_MOUSEOVER_BG_COLOR,
+ rgb_t(255, 43, 43, 43), hilight_main_texture, PRIMFLAG_BLENDMODE(BLENDMODE_ALPHA) | PRIMFLAG_TEXWRAP(TRUE));
+ hover = (!ub) ? HOVER_DAT_UP : HOVER_DAT_DOWN;
+ fgcolor = UI_MOUSEOVER_COLOR;
+ }
+
+ draw_arrow(container, 0.5f * (origx1 + origx2) - 0.5f * (ud_arrow_width * text_size), oy1 + 0.25f * (line_height * text_size),
+ 0.5f * (origx1 + origx2) + 0.5f * (ud_arrow_width * text_size), oy1 + 0.75f * (line_height * text_size), fgcolor, orientation);
+}
+
+//-------------------------------------------------
+// draw - draw a menu
+//-------------------------------------------------
+
+void ui_menu::draw_palette_menu()
+{
+ ui_manager &mui = machine().ui();
+ float line_height = mui.get_line_height();
+ float lr_arrow_width = 0.4f * line_height * machine().render().ui_aspect();
+ float ud_arrow_width = line_height * machine().render().ui_aspect();
+ float gutter_width = lr_arrow_width * 1.3f;
+ int itemnum, linenum;
+
+ if (machine().ui().options().use_background_image() && machine().options().system() == nullptr && bgrnd_bitmap->valid())
+ container->add_quad(0.0f, 0.0f, 1.0f, 1.0f, ARGB_WHITE, bgrnd_texture, PRIMFLAG_BLENDMODE(BLENDMODE_ALPHA));
+
+ // compute the width and height of the full menu
+ float visible_width = 0;
+ float visible_main_menu_height = 0;
+ for (itemnum = 0; itemnum < item.size(); itemnum++)
+ {
+ const ui_menu_item &pitem = item[itemnum];
+
+ // compute width of left hand side
+ float total_width = gutter_width + mui.get_string_width(pitem.text) + gutter_width;
+
+ // add in width of right hand side
+ if (pitem.subtext)
+ total_width += 2.0f * gutter_width + mui.get_string_width(pitem.subtext);
+
+ // track the maximum
+ if (total_width > visible_width)
+ visible_width = total_width;
+
+ // track the height as well
+ visible_main_menu_height += line_height;
+ }
+
+ // account for extra space at the top and bottom
+ float visible_extra_menu_height = customtop + custombottom;
+
+ // add a little bit of slop for rounding
+ visible_width += 0.01f;
+ visible_main_menu_height += 0.01f;
+
+ // if we are too wide or too tall, clamp it down
+ if (visible_width + 2.0f * UI_BOX_LR_BORDER > 1.0f)
+ visible_width = 1.0f - 2.0f * UI_BOX_LR_BORDER;
+
+ // if the menu and extra menu won't fit, take away part of the regular menu, it will scroll
+ if (visible_main_menu_height + visible_extra_menu_height + 2.0f * UI_BOX_TB_BORDER > 1.0f)
+ visible_main_menu_height = 1.0f - 2.0f * UI_BOX_TB_BORDER - visible_extra_menu_height;
+
+ int visible_lines = floor(visible_main_menu_height / line_height);
+ visible_main_menu_height = (float)visible_lines * line_height;
+
+ // compute top/left of inner menu area by centering
+ float visible_left = (1.0f - visible_width) * 0.5f;
+ float visible_top = (1.0f - (visible_main_menu_height + visible_extra_menu_height)) * 0.5f;
+
+ // if the menu is at the bottom of the extra, adjust
+ visible_top += customtop;
+
+ // first add us a box
+ float x1 = visible_left - UI_BOX_LR_BORDER;
+ float y1 = visible_top - UI_BOX_TB_BORDER;
+ float x2 = visible_left + visible_width + UI_BOX_LR_BORDER;
+ float y2 = visible_top + visible_main_menu_height + UI_BOX_TB_BORDER;
+ mui.draw_outlined_box(container, x1, y1, x2, y2, UI_BACKGROUND_COLOR);
+
+ // determine the first visible line based on the current selection
+ int top_line = selected - visible_lines / 2;
+ if (top_line < 0)
+ top_line = 0;
+ if (top_line + visible_lines >= item.size())
+ top_line = item.size() - visible_lines;
+
+ // determine effective positions taking into account the hilighting arrows
+ float effective_width = visible_width - 2.0f * gutter_width;
+ float effective_left = visible_left + gutter_width;
+
+ // locate mouse
+ mouse_hit = false;
+ mouse_button = false;
+ mouse_target = machine().ui_input().find_mouse(&mouse_target_x, &mouse_target_y, &mouse_button);
+ if (mouse_target != nullptr)
+ if (mouse_target->map_point_container(mouse_target_x, mouse_target_y, *container, mouse_x, mouse_y))
+ mouse_hit = true;
+
+ // loop over visible lines
+ hover = item.size() + 1;
+ float line_x0 = x1 + 0.5f * UI_LINE_WIDTH;
+ float line_x1 = x2 - 0.5f * UI_LINE_WIDTH;
+
+ for (linenum = 0; linenum < visible_lines; linenum++)
+ {
+ float line_y = visible_top + (float)linenum * line_height;
+ itemnum = top_line + linenum;
+ const ui_menu_item &pitem = item[itemnum];
+ const char *itemtext = pitem.text;
+ rgb_t fgcolor = UI_TEXT_COLOR;
+ rgb_t bgcolor = UI_TEXT_BG_COLOR;
+ float line_y0 = line_y;
+ float line_y1 = line_y + line_height;
+
+ // set the hover if this is our item
+ if (mouse_hit && line_x0 <= mouse_x && line_x1 > mouse_x && line_y0 <= mouse_y && line_y1 > mouse_y && pitem.is_selectable())
+ hover = itemnum;
+
+ // if we're selected, draw with a different background
+ if (itemnum == selected && (pitem.flags & MENU_FLAG_UI_HISTORY) == 0)
+ {
+ fgcolor = UI_SELECTED_COLOR;
+ bgcolor = UI_SELECTED_BG_COLOR;
+ }
+
+ // else if the mouse is over this item, draw with a different background
+ else if (itemnum == hover && (pitem.flags & MENU_FLAG_UI_HISTORY) == 0)
+ {
+ fgcolor = UI_MOUSEOVER_COLOR;
+ bgcolor = UI_MOUSEOVER_BG_COLOR;
+ }
+
+ // if we have some background hilighting to do, add a quad behind everything else
+ if (bgcolor != UI_TEXT_BG_COLOR)
+ highlight(container, line_x0, line_y0, line_x1, line_y1, bgcolor);
+
+ // if we're on the top line, display the up arrow
+ if (linenum == 0 && top_line != 0)
+ {
+ draw_arrow(container,
+ 0.5f * (x1 + x2) - 0.5f * ud_arrow_width,
+ line_y + 0.25f * line_height,
+ 0.5f * (x1 + x2) + 0.5f * ud_arrow_width,
+ line_y + 0.75f * line_height,
+ fgcolor,
+ ROT0);
+ if (hover == itemnum)
+ hover = HOVER_ARROW_UP;
+ }
+
+ // if we're on the bottom line, display the down arrow
+ else if (linenum == visible_lines - 1 && itemnum != item.size() - 1)
+ {
+ draw_arrow(container,
+ 0.5f * (x1 + x2) - 0.5f * ud_arrow_width,
+ line_y + 0.25f * line_height,
+ 0.5f * (x1 + x2) + 0.5f * ud_arrow_width,
+ line_y + 0.75f * line_height,
+ fgcolor,
+ ROT0 ^ ORIENTATION_FLIP_Y);
+ if (hover == itemnum)
+ hover = HOVER_ARROW_DOWN;
+ }
+
+ // if we're just a divider, draw a line
+ else if (strcmp(itemtext, MENU_SEPARATOR_ITEM) == 0)
+ container->add_line(visible_left, line_y + 0.5f * line_height, visible_left + visible_width, line_y + 0.5f * line_height, UI_LINE_WIDTH, UI_BORDER_COLOR, PRIMFLAG_BLENDMODE(BLENDMODE_ALPHA));
+
+ // if we don't have a subitem, just draw the string centered
+ else if (pitem.subtext == nullptr)
+ mui.draw_text_full(container, itemtext, effective_left, line_y, effective_width,
+ JUSTIFY_CENTER, WRAP_TRUNCATE, DRAW_NORMAL, fgcolor, bgcolor, nullptr, nullptr);
+
+ // otherwise, draw the item on the left and the subitem text on the right
+ else
+ {
+ const char *subitem_text = pitem.subtext;
+ rgb_t color = rgb_t((UINT32)strtoul(subitem_text, nullptr, 16));
+
+ // draw the left-side text
+ mui.draw_text_full(container, itemtext, effective_left, line_y, effective_width,
+ JUSTIFY_LEFT, WRAP_TRUNCATE, DRAW_NORMAL, fgcolor, bgcolor, nullptr, nullptr);
+
+ // give 2 spaces worth of padding
+ float subitem_width = mui.get_string_width("FF00FF00");
+
+ mui.draw_outlined_box(container, effective_left + effective_width - subitem_width, line_y0,
+ effective_left + effective_width, line_y1, color);
+ }
+ }
+
+ // if there is something special to add, do it by calling the virtual method
+ custom_render((selected >= 0 && selected < item.size()) ? item[selected].ref : nullptr, customtop, custombottom, x1, y1, x2, y2);
+
+ // return the number of visible lines, minus 1 for top arrow and 1 for bottom arrow
+ visitems = visible_lines - (top_line != 0) - (top_line + visible_lines != item.size());
+} \ No newline at end of file
diff --git a/src/emu/ui/menu.h b/src/emu/ui/menu.h
index b52b0f90ff4..174d2866fac 100644
--- a/src/emu/ui/menu.h
+++ b/src/emu/ui/menu.h
@@ -2,9 +2,9 @@
// copyright-holders:Nicola Salmoria, Aaron Giles, Nathan Woods
/***************************************************************************
- ui/menu.h
+ ui/menu.h
- Internal MAME menus for the user interface.
+ Internal MAME menus for the user interface.
***************************************************************************/
@@ -17,7 +17,7 @@
/***************************************************************************
- CONSTANTS
+ CONSTANTS
***************************************************************************/
// flags for menu items
@@ -27,6 +27,11 @@
#define MENU_FLAG_MULTILINE (1 << 3)
#define MENU_FLAG_REDTEXT (1 << 4)
#define MENU_FLAG_DISABLE (1 << 5)
+#define MENU_FLAG_UI (1 << 6)
+#define MENU_FLAG_UI_HISTORY (1 << 7)
+#define MENU_FLAG_UI_SWLIST (1 << 8)
+#define MENU_FLAG_UI_FAVORITE (1 << 9)
+#define MENU_FLAG_UI_PALETTE (1 << 10)
// special menu item for separators
#define MENU_SEPARATOR_ITEM "---"
@@ -35,6 +40,9 @@
#define UI_MENU_PROCESS_NOKEYS 1
#define UI_MENU_PROCESS_LR_REPEAT 2
#define UI_MENU_PROCESS_CUSTOM_ONLY 4
+#define UI_MENU_PROCESS_ONLYCHAR 8
+#define UI_MENU_PROCESS_NOINPUT 16
+#define UI_MENU_PROCESS_NOIMAGE 32
// options for ui_menu_reset
enum ui_menu_reset_options
@@ -47,32 +55,32 @@ enum ui_menu_reset_options
/***************************************************************************
- TYPE DEFINITIONS
+ TYPE DEFINITIONS
***************************************************************************/
// menu-related events
struct ui_menu_event
{
- void * itemref; // reference for the selected item
- int iptkey; // one of the IPT_* values from inptport.h
- unicode_char unichar; // unicode character if iptkey == IPT_SPECIAL
+ void *itemref; // reference for the selected item
+ int iptkey; // one of the IPT_* values from inptport.h
+ unicode_char unichar; // unicode character if iptkey == IPT_SPECIAL
};
struct ui_menu_pool
{
- ui_menu_pool * next; // chain to next one
- UINT8 * top; // top of the pool
- UINT8 * end; // end of the pool
+ ui_menu_pool *next; // chain to next one
+ UINT8 *top; // top of the pool
+ UINT8 *end; // end of the pool
};
class ui_menu_item
{
public:
- const char * text;
- const char * subtext;
- UINT32 flags;
- void * ref;
+ const char *text;
+ const char *subtext;
+ UINT32 flags;
+ void *ref;
inline bool is_selectable() const;
};
@@ -85,27 +93,22 @@ public:
running_machine &machine() const { return m_machine; }
- render_container * container; // render_container we render to
- ui_menu_event menu_event; // the UI menu_event that occurred
- ui_menu * parent; // pointer to parent menu
- int resetpos; // reset position
- void * resetref; // reset reference
- int selected; // which item is selected
- int hover; // which item is being hovered over
- int visitems; // number of visible items
- int numitems; // number of items in the menu
- int allocitems; // allocated size of array
- ui_menu_item * item; // pointer to array of items
- float customtop; // amount of extra height to add at the top
- float custombottom; // amount of extra height to add at the bottom
- ui_menu_pool * pool; // list of memory pools
+ render_container *container; // render_container we render to
+ ui_menu_event menu_event; // the UI menu_event that occurred
+ ui_menu *parent; // pointer to parent menu
+ int resetpos; // reset position
+ void *resetref; // reset reference
+ int selected; // which item is selected
+ int hover; // which item is being hovered over
+ int visitems; // number of visible items
+ float customtop; // amount of extra height to add at the top
+ float custombottom; // amount of extra height to add at the bottom
+ ui_menu_pool *pool; // list of memory pools
+ std::vector<ui_menu_item> item; // array of items
// free all items in the menu, and all memory allocated from the memory pool
void reset(ui_menu_reset_options options);
- // returns true if the menu has any non-default items in it
- bool populated();
-
// append a new item to the end of the menu
void item_append(const char *text, const char *subtext, UINT32 flags, void *ref);
@@ -168,22 +171,111 @@ public:
// To be reimplemented in the menu subclass
virtual void handle() = 0;
+ // test if search is active
+ virtual bool menu_has_search_active() { return false; }
+
private:
static ui_menu *menu_free;
static std::unique_ptr<bitmap_rgb32> hilight_bitmap;
static render_texture *hilight_texture, *arrow_texture;
bool m_special_main_menu;
- running_machine & m_machine; // machine we are attached to
+ running_machine &m_machine; // machine we are attached to
- void draw(bool customonly);
+ void draw(bool customonly, bool noimage, bool noinput);
void draw_text_box();
- void handle_events();
+ void handle_events(UINT32 flags);
void handle_keys(UINT32 flags);
inline bool exclusive_input_pressed(int key, int repeat);
static void clear_free_list(running_machine &machine);
static void render_triangle(bitmap_argb32 &dest, bitmap_argb32 &source, const rectangle &sbounds, void *param);
+
+public:
+ int visible_items;
+ bool ui_error;
+
+ // mouse handling
+ bool mouse_hit, mouse_button;
+ render_target *mouse_target;
+ INT32 mouse_target_x, mouse_target_y;
+ float mouse_x, mouse_y;
+
+ // draw toolbar
+ void draw_toolbar(float x1, float y1, float x2, float y2, bool software = false);
+
+ // draw left panel
+ virtual float draw_left_panel(float x1, float y1, float x2, float y2) { return 0; }
+
+ // draw right panel
+ virtual void draw_right_panel(void *selectedref, float origx1, float origy1, float origx2, float origy2) { };
+
+ // draw star
+ void draw_star(float x0, float y0);
+
+ // Global initialization
+ static void init_ui(running_machine &machine);
+
+ // get arrows status
+ template <typename _T1, typename _T2, typename _T3>
+ UINT32 get_arrow_flags(_T1 min, _T2 max, _T3 actual)
+ {
+ if (max == 0)
+ return 0;
+ else
+ return ((actual <= min) ? MENU_FLAG_RIGHT_ARROW : (actual >= max ? MENU_FLAG_LEFT_ARROW : (MENU_FLAG_LEFT_ARROW | MENU_FLAG_RIGHT_ARROW)));
+ }
+
+protected:
+ int topline_datsview; // right box top line
+ int top_line; // main box top line
+ int l_sw_hover;
+ int l_hover;
+ int totallines;
+
+ // draw right box
+ float draw_right_box_title(float x1, float y1, float x2, float y2);
+
+ // draw arrow
+ void draw_common_arrow(float origx1, float origy1, float origx2, float origy2, int current, int dmin, int dmax, float title);
+ void info_arrow(int ub, float origx1, float origx2, float oy1, float line_height, float text_size, float ud_arrow_width);
+
+ // images render
+ std::string arts_render_common(float origx1, float origy1, float origx2, float origy2);
+ void arts_render_images(bitmap_argb32 *bitmap, float origx1, float origy1, float origx2, float origy2, bool software);
+
+ int visible_lines; // main box visible lines
+ int right_visible_lines; // right box lines
+
+ static std::unique_ptr<bitmap_argb32> snapx_bitmap;
+ static render_texture *snapx_texture;
+
+private:
+ static std::unique_ptr<bitmap_argb32> no_avail_bitmap, bgrnd_bitmap, star_bitmap;
+ static std::unique_ptr<bitmap_rgb32> hilight_main_bitmap;
+ static render_texture *hilight_main_texture, *bgrnd_texture, *star_texture;
+ static bitmap_argb32 *icons_bitmap[];
+ static render_texture *icons_texture[];
+
+ // toolbar
+ static bitmap_argb32 *toolbar_bitmap[], *sw_toolbar_bitmap[];
+ static render_texture *toolbar_texture[], *sw_toolbar_texture[];
+
+ // draw game list
+ void draw_select_game(bool noinput);
+
+ // draw game list
+ void draw_palette_menu();
+
+ void get_title_search(std::string &title, std::string &search);
+
+ // handle keys
+ void handle_main_keys(UINT32 flags);
+
+ // handle mouse
+ void handle_main_events(UINT32 flags);
+
+ void draw_icon(int linenum, void *selectedref, float x1, float y1);
};
#endif // __UI_MENU_H__
diff --git a/src/emu/ui/miscmenu.cpp b/src/emu/ui/miscmenu.cpp
index 1eaa9fe1366..0b41eed95bb 100644
--- a/src/emu/ui/miscmenu.cpp
+++ b/src/emu/ui/miscmenu.cpp
@@ -1,5 +1,5 @@
// license:BSD-3-Clause
-// copyright-holders:Nicola Salmoria, Aaron Giles, Nathan Woods
+// copyright-holders:Nicola Salmoria, Aaron Giles, Nathan Woods,Dankan1890
/*********************************************************************
miscmenu.c
@@ -15,7 +15,7 @@
#include "ui/ui.h"
#include "ui/menu.h"
#include "ui/miscmenu.h"
-
+#include "ui/utils.h"
/***************************************************************************
MENU HANDLERS
@@ -434,9 +434,9 @@ void ui_menu_crosshair::populate()
file_enumerator path(machine().options().crosshair_path());
const osd_directory_entry *dir;
/* reset search flags */
- int using_default = false;
- int finished = false;
- int found = false;
+ bool using_default = false;
+ bool finished = false;
+ bool found = false;
/* if we are using the default, then we just need to find the first in the list */
if (*(settings.name) == 0)
@@ -556,3 +556,120 @@ void ui_menu_quit_game::handle()
/* reset the menu stack */
ui_menu::stack_reset(machine());
}
+
+ui_menu_misc_options::misc_option ui_menu_misc_options::m_options[] = {
+ { 0, nullptr, nullptr },
+ { 0, "Re-select last machine played", OPTION_REMEMBER_LAST },
+ { 0, "Enlarge images in the right panel", OPTION_ENLARGE_SNAPS },
+ { 0, "DATs info", OPTION_DATS_ENABLED },
+ { 0, "Cheats", OPTION_CHEAT },
+ { 0, "Show mouse pointer", OPTION_UI_MOUSE },
+ { 0, "Confirm quit from machines", OPTION_UI_CONFIRM_QUIT },
+ { 0, "Skip displaying information's screen at startup", OPTION_UI_SKIP_GAMEINFO },
+ { 0, "Force 4:3 appearance for software snapshot", OPTION_FORCED4X3 },
+ { 0, "Use image as background", OPTION_USE_BACKGROUND },
+ { 0, "Skip bios selection menu", OPTION_SKIP_BIOS_MENU },
+ { 0, "Skip software parts selection menu", OPTION_SKIP_PARTS_MENU }
+};
+
+//-------------------------------------------------
+// ctor / dtor
+//-------------------------------------------------
+
+ui_menu_misc_options::ui_menu_misc_options(running_machine &machine, render_container *container) : ui_menu(machine, container)
+{
+ for (int d = 1; d < ARRAY_LENGTH(m_options); ++d)
+ m_options[d].status = machine.ui().options().bool_value(m_options[d].option);
+}
+
+ui_menu_misc_options::~ui_menu_misc_options()
+{
+ std::string error_string;
+ for (int d = 1; d < ARRAY_LENGTH(m_options); ++d) {
+ if (machine().ui().options().exists(m_options[d].option))
+ {
+ machine().ui().options().set_value(m_options[d].option, m_options[d].status, OPTION_PRIORITY_CMDLINE, error_string);
+ }
+ else {
+ if (machine().options().bool_value(m_options[d].option) != m_options[d].status)
+ {
+ machine().options().set_value(m_options[d].option, m_options[d].status, OPTION_PRIORITY_CMDLINE, error_string);
+ machine().options().mark_changed(m_options[d].option);
+ }
+ }
+ }
+ ui_globals::reset = true;
+}
+
+//-------------------------------------------------
+// handlethe options menu
+//-------------------------------------------------
+
+void ui_menu_misc_options::handle()
+{
+ bool changed = false;
+
+ // process the menu
+ const ui_menu_event *m_event = process(0);
+ if (m_event != nullptr && m_event->itemref != nullptr)
+ {
+ if (m_event->iptkey == IPT_UI_LEFT || m_event->iptkey == IPT_UI_RIGHT || m_event->iptkey == IPT_UI_SELECT)
+ {
+ changed = true;
+ int value = (FPTR)m_event->itemref;
+ if (!strcmp(m_options[value].option, OPTION_ENLARGE_SNAPS))
+ ui_globals::switch_image = true;
+ m_options[value].status = !m_options[value].status;
+ }
+ }
+
+ if (changed)
+ reset(UI_MENU_RESET_REMEMBER_REF);
+}
+
+//-------------------------------------------------
+// populate
+//-------------------------------------------------
+
+void ui_menu_misc_options::populate()
+{
+ // add options items
+ for (int opt = 1; opt < ARRAY_LENGTH(m_options); ++opt)
+ item_append(m_options[opt].description, m_options[opt].status ? "On" : "Off", m_options[opt].status ? MENU_FLAG_RIGHT_ARROW : MENU_FLAG_LEFT_ARROW, (void *)(FPTR)opt);
+
+ item_append(MENU_SEPARATOR_ITEM, nullptr, 0, nullptr);
+ customtop = machine().ui().get_line_height() + (3.0f * UI_BOX_TB_BORDER);
+}
+
+//-------------------------------------------------
+// perform our special rendering
+//-------------------------------------------------
+
+void ui_menu_misc_options::custom_render(void *selectedref, float top, float bottom, float origx1, float origy1, float origx2, float origy2)
+{
+ float width;
+ ui_manager &mui = machine().ui();
+
+ mui.draw_text_full(container, "Miscellaneous Options", 0.0f, 0.0f, 1.0f, JUSTIFY_CENTER, WRAP_TRUNCATE,
+ DRAW_NONE, ARGB_WHITE, ARGB_BLACK, &width, nullptr);
+ width += 2 * UI_BOX_LR_BORDER;
+ float maxwidth = MAX(origx2 - origx1, width);
+
+ // compute our bounds
+ float x1 = 0.5f - 0.5f * maxwidth;
+ float x2 = x1 + maxwidth;
+ float y1 = origy1 - top;
+ float y2 = origy1 - UI_BOX_TB_BORDER;
+
+ // draw a box
+ mui.draw_outlined_box(container, x1, y1, x2, y2, UI_GREEN_COLOR);
+
+ // take off the borders
+ x1 += UI_BOX_LR_BORDER;
+ x2 -= UI_BOX_LR_BORDER;
+ y1 += UI_BOX_TB_BORDER;
+
+ // draw the text within it
+ mui.draw_text_full(container, "Miscellaneous Options", x1, y1, x2 - x1, JUSTIFY_CENTER, WRAP_TRUNCATE,
+ DRAW_NORMAL, UI_TEXT_COLOR, UI_TEXT_BG_COLOR, nullptr, nullptr);
+}
diff --git a/src/emu/ui/miscmenu.h b/src/emu/ui/miscmenu.h
index ea75897edde..f43c4a6b2ba 100644
--- a/src/emu/ui/miscmenu.h
+++ b/src/emu/ui/miscmenu.h
@@ -1,5 +1,5 @@
// license:BSD-3-Clause
-// copyright-holders:Nicola Salmoria, Aaron Giles, Nathan Woods
+// copyright-holders:Nicola Salmoria, Aaron Giles, Nathan Woods,Dankan1890
/***************************************************************************
ui/miscmenu.h
@@ -85,4 +85,27 @@ public:
virtual void handle() override;
};
+//-------------------------------------------------
+// class miscellaneous options menu
+//-------------------------------------------------
+class ui_menu_misc_options : public ui_menu
+{
+public:
+ ui_menu_misc_options(running_machine &machine, render_container *container);
+ virtual ~ui_menu_misc_options();
+ virtual void populate() override;
+ virtual void handle() override;
+ virtual void custom_render(void *selectedref, float top, float bottom, float x, float y, float x2, float y2) override;
+
+private:
+ struct misc_option
+ {
+ bool status;
+ const char *description;
+ const char *option;
+ };
+
+ static misc_option m_options[];
+};
+
#endif /* __UI_MISCMENU_H__ */
diff --git a/src/emu/ui/moptions.cpp b/src/emu/ui/moptions.cpp
new file mode 100644
index 00000000000..dd4897749fc
--- /dev/null
+++ b/src/emu/ui/moptions.cpp
@@ -0,0 +1,92 @@
+// license:BSD-3-Clause
+// copyright-holders:Dankan1890
+/***************************************************************************
+
+ ui/moptions.c
+
+ UI main options manager.
+
+***************************************************************************/
+
+#include "emu.h"
+#include "ui/moptions.h"
+
+
+//**************************************************************************
+// UI EXTRA OPTIONS
+//**************************************************************************
+
+const options_entry ui_options::s_option_entries[] =
+{
+ // seach path options
+ { nullptr, nullptr, OPTION_HEADER, "UI SEARCH PATH OPTIONS" },
+ { OPTION_HISTORY_PATH, "history;dats;.", OPTION_STRING, "path to history files" },
+ { OPTION_EXTRAINI_PATH, "folders", OPTION_STRING, "path to extra ini files" },
+ { OPTION_CABINETS_PATH, "cabinets;cabdevs", OPTION_STRING, "path to cabinets / devices image" },
+ { OPTION_CPANELS_PATH, "cpanel", OPTION_STRING, "path to control panel image" },
+ { OPTION_PCBS_PATH, "pcb", OPTION_STRING, "path to pcbs image" },
+ { OPTION_FLYERS_PATH, "flyers", OPTION_STRING, "path to flyers image" },
+ { OPTION_TITLES_PATH, "titles", OPTION_STRING, "path to titles image" },
+ { OPTION_ENDS_PATH, "ends", OPTION_STRING, "path to ends image" },
+ { OPTION_MARQUEES_PATH, "marquees", OPTION_STRING, "path to marquees image" },
+ { OPTION_ARTPREV_PATH, "artwork preview", OPTION_STRING, "path to artwork preview image" },
+ { OPTION_BOSSES_PATH, "bosses", OPTION_STRING, "path to bosses image" },
+ { OPTION_LOGOS_PATH, "logo", OPTION_STRING, "path to logos image" },
+ { OPTION_SCORES_PATH, "scores", OPTION_STRING, "path to scores image" },
+ { OPTION_VERSUS_PATH, "versus", OPTION_STRING, "path to versus image" },
+ { OPTION_GAMEOVER_PATH, "gameover", OPTION_STRING, "path to gameover image" },
+ { OPTION_HOWTO_PATH, "howto", OPTION_STRING, "path to howto image" },
+ { OPTION_SELECT_PATH, "select", OPTION_STRING, "path to select image" },
+ { OPTION_ICONS_PATH, "icons", OPTION_STRING, "path to ICOns image" },
+ { OPTION_UI_PATH, "ui", OPTION_STRING, "path to UI files" },
+
+ // misc options
+ { nullptr, nullptr, OPTION_HEADER, "UI MISC OPTIONS" },
+ { OPTION_DATS_ENABLED, "1", OPTION_BOOLEAN, "enable DATs support" },
+ { OPTION_REMEMBER_LAST, "1", OPTION_BOOLEAN, "reselect in main menu last played game" },
+ { OPTION_ENLARGE_SNAPS, "1", OPTION_BOOLEAN, "enlarge arts (snapshot, title, etc...) in right panel (keeping aspect ratio)" },
+ { OPTION_FORCED4X3, "1", OPTION_BOOLEAN, "force the appearance of the snapshot in the list software to 4:3" },
+ { OPTION_USE_BACKGROUND, "1", OPTION_BOOLEAN, "enable background image in main view" },
+ { OPTION_SKIP_BIOS_MENU, "0", OPTION_BOOLEAN, "skip bios submenu, start with configured or default" },
+ { OPTION_SKIP_PARTS_MENU, "0", OPTION_BOOLEAN, "skip parts submenu, start with first part" },
+ { OPTION_LAST_USED_FILTER, "", OPTION_STRING, "latest used filter" },
+ { OPTION_LAST_USED_MACHINE, "", OPTION_STRING, "latest used machine" },
+ { OPTION_INFO_AUTO_AUDIT, "0", OPTION_BOOLEAN, "enable auto audit in the general info panel" },
+ { OPTION_UI_SKIP_GAMEINFO, "0", OPTION_BOOLEAN, "skip displaying the information screen at startup" },
+ { OPTION_UI_FONT, "default", OPTION_STRING, "specify a font to use" },
+ { OPTION_UI_CONFIRM_QUIT, "0", OPTION_BOOLEAN, "display confirm quit screen on exit" },
+ { OPTION_UI_MOUSE, "1", OPTION_BOOLEAN, "display ui mouse cursor" },
+
+ // UI options
+ { nullptr, nullptr, OPTION_HEADER, "UI OPTIONS" },
+ { OPTION_INFOS_SIZE "(0.05-1.00)", "0.75", OPTION_FLOAT, "UI right panel infos text size (0.05 - 1.00)" },
+ { OPTION_FONT_ROWS "(25-40)", "30", OPTION_INTEGER, "UI font text size (25 - 40)" },
+ { OPTION_HIDE_PANELS "(0-3)", "0", OPTION_INTEGER, "UI hide left/right panel in main view (0 = Show all, 1 = hide left, 2 = hide right, 3 = hide both" },
+ { OPTION_UI_BORDER_COLOR, "ffffffff", OPTION_STRING, "UI border color (ARGB)" },
+ { OPTION_UI_BACKGROUND_COLOR, "ef101030", OPTION_STRING, "UI background color (ARGB)" },
+ { OPTION_UI_CLONE_COLOR, "ff808080", OPTION_STRING, "UI clone color (ARGB)" },
+ { OPTION_UI_DIPSW_COLOR, "ffffff00", OPTION_STRING, "UI dipswitch color (ARGB)" },
+ { OPTION_UI_GFXVIEWER_BG_COLOR, "ef101030", OPTION_STRING, "UI gfx viewer color (ARGB)" },
+ { OPTION_UI_MOUSEDOWN_BG_COLOR, "b0606000", OPTION_STRING, "UI mouse down bg color (ARGB)" },
+ { OPTION_UI_MOUSEDOWN_COLOR, "ffffff80", OPTION_STRING, "UI mouse down color (ARGB)" },
+ { OPTION_UI_MOUSEOVER_BG_COLOR, "70404000", OPTION_STRING, "UI mouse over bg color (ARGB)" },
+ { OPTION_UI_MOUSEOVER_COLOR, "ffffff80", OPTION_STRING, "UI mouse over color (ARGB)" },
+ { OPTION_UI_SELECTED_BG_COLOR, "ef808000", OPTION_STRING, "UI selected bg color (ARGB)" },
+ { OPTION_UI_SELECTED_COLOR, "ffffff00", OPTION_STRING, "UI selected color (ARGB)" },
+ { OPTION_UI_SLIDER_COLOR, "ffffffff", OPTION_STRING, "UI slider color (ARGB)" },
+ { OPTION_UI_SUBITEM_COLOR, "ffffffff", OPTION_STRING, "UI subitem color (ARGB)" },
+ { OPTION_UI_TEXT_BG_COLOR, "ef000000", OPTION_STRING, "UI text bg color (ARGB)" },
+ { OPTION_UI_TEXT_COLOR, "ffffffff", OPTION_STRING, "UI text color (ARGB)" },
+ { OPTION_UI_UNAVAILABLE_COLOR, "ff404040", OPTION_STRING, "UI unavailable color (ARGB)" },
+ { nullptr }
+};
+
+//-------------------------------------------------
+// ui_options - constructor
+//-------------------------------------------------
+
+ui_options::ui_options()
+: core_options()
+{
+ add_entries(ui_options::s_option_entries);
+}
diff --git a/src/emu/ui/moptions.h b/src/emu/ui/moptions.h
new file mode 100644
index 00000000000..3b1ab8948c0
--- /dev/null
+++ b/src/emu/ui/moptions.h
@@ -0,0 +1,148 @@
+// license:BSD-3-Clause
+// copyright-holders:Dankan1890
+/***************************************************************************
+
+ ui/moptions.h
+
+ UI main options manager.
+
+***************************************************************************/
+
+#pragma once
+
+#ifndef __UI_OPTS_H__
+#define __UI_OPTS_H__
+
+#include "options.h"
+
+// core directory options
+#define OPTION_HISTORY_PATH "historypath"
+#define OPTION_EXTRAINI_PATH "extrainipath"
+#define OPTION_CABINETS_PATH "cabinets_directory"
+#define OPTION_CPANELS_PATH "cpanels_directory"
+#define OPTION_PCBS_PATH "pcbs_directory"
+#define OPTION_FLYERS_PATH "flyers_directory"
+#define OPTION_TITLES_PATH "titles_directory"
+#define OPTION_ENDS_PATH "ends_directory"
+#define OPTION_MARQUEES_PATH "marquees_directory"
+#define OPTION_ARTPREV_PATH "artwork_preview_directory"
+#define OPTION_BOSSES_PATH "bosses_directory"
+#define OPTION_LOGOS_PATH "logos_directory"
+#define OPTION_SCORES_PATH "scores_directory"
+#define OPTION_VERSUS_PATH "versus_directory"
+#define OPTION_GAMEOVER_PATH "gameover_directory"
+#define OPTION_HOWTO_PATH "howto_directory"
+#define OPTION_SELECT_PATH "select_directory"
+#define OPTION_ICONS_PATH "icons_directory"
+#define OPTION_UI_PATH "ui_path"
+
+// core misc options
+#define OPTION_DATS_ENABLED "dats_enabled"
+#define OPTION_REMEMBER_LAST "remember_last"
+#define OPTION_ENLARGE_SNAPS "enlarge_snaps"
+#define OPTION_FORCED4X3 "forced4x3"
+#define OPTION_USE_BACKGROUND "use_background"
+#define OPTION_SKIP_BIOS_MENU "skip_biosmenu"
+#define OPTION_SKIP_PARTS_MENU "skip_partsmenu"
+#define OPTION_LAST_USED_FILTER "last_used_filter"
+#define OPTION_LAST_USED_MACHINE "last_used_machine"
+#define OPTION_INFO_AUTO_AUDIT "info_audit_enabled"
+
+// core UI options
+#define OPTION_INFOS_SIZE "infos_text_size"
+#define OPTION_FONT_ROWS "font_rows"
+#define OPTION_HIDE_PANELS "hide_main_panel"
+
+#define OPTION_UI_BORDER_COLOR "ui_border_color"
+#define OPTION_UI_BACKGROUND_COLOR "ui_bg_color"
+#define OPTION_UI_GFXVIEWER_BG_COLOR "ui_gfxviewer_color"
+#define OPTION_UI_UNAVAILABLE_COLOR "ui_unavail_color"
+#define OPTION_UI_TEXT_COLOR "ui_text_color"
+#define OPTION_UI_TEXT_BG_COLOR "ui_text_bg_color"
+#define OPTION_UI_SUBITEM_COLOR "ui_subitem_color"
+#define OPTION_UI_CLONE_COLOR "ui_clone_color"
+#define OPTION_UI_SELECTED_COLOR "ui_selected_color"
+#define OPTION_UI_SELECTED_BG_COLOR "ui_selected_bg_color"
+#define OPTION_UI_MOUSEOVER_COLOR "ui_mouseover_color"
+#define OPTION_UI_MOUSEOVER_BG_COLOR "ui_mouseover_bg_color"
+#define OPTION_UI_MOUSEDOWN_COLOR "ui_mousedown_color"
+#define OPTION_UI_MOUSEDOWN_BG_COLOR "ui_mousedown_bg_color"
+#define OPTION_UI_DIPSW_COLOR "ui_dipsw_color"
+#define OPTION_UI_SLIDER_COLOR "ui_slider_color"
+
+#define OPTION_UI_FONT "uifont"
+#define OPTION_UI_CONFIRM_QUIT "confirm_quit"
+#define OPTION_UI_MOUSE "ui_mouse"
+#define OPTION_UI_SKIP_GAMEINFO "skip_gameinfo"
+
+
+class ui_options : public core_options
+{
+public:
+ // construction/destruction
+ ui_options();
+
+ // Search path options
+ const char *history_path() const { return value(OPTION_HISTORY_PATH); }
+ const char *extraini_path() const { return value(OPTION_EXTRAINI_PATH); }
+ const char *cabinets_directory() const { return value(OPTION_CABINETS_PATH); }
+ const char *cpanels_directory() const { return value(OPTION_CPANELS_PATH); }
+ const char *pcbs_directory() const { return value(OPTION_PCBS_PATH); }
+ const char *flyers_directory() const { return value(OPTION_FLYERS_PATH); }
+ const char *titles_directory() const { return value(OPTION_TITLES_PATH); }
+ const char *ends_directory() const { return value(OPTION_ENDS_PATH); }
+ const char *marquees_directory() const { return value(OPTION_MARQUEES_PATH); }
+ const char *artprev_directory() const { return value(OPTION_ARTPREV_PATH); }
+ const char *bosses_directory() const { return value(OPTION_BOSSES_PATH); }
+ const char *logos_directory() const { return value(OPTION_LOGOS_PATH); }
+ const char *scores_directory() const { return value(OPTION_SCORES_PATH); }
+ const char *versus_directory() const { return value(OPTION_VERSUS_PATH); }
+ const char *gameover_directory() const { return value(OPTION_GAMEOVER_PATH); }
+ const char *howto_directory() const { return value(OPTION_HOWTO_PATH); }
+ const char *select_directory() const { return value(OPTION_SELECT_PATH); }
+ const char *icons_directory() const { return value(OPTION_ICONS_PATH); }
+ const char *ui_path() const { return value(OPTION_UI_PATH); }
+
+ // Misc options
+ bool enabled_dats() const { return bool_value(OPTION_DATS_ENABLED); }
+ bool remember_last() const { return bool_value(OPTION_REMEMBER_LAST); }
+ bool enlarge_snaps() const { return bool_value(OPTION_ENLARGE_SNAPS); }
+ bool forced_4x3_snapshot() const { return bool_value(OPTION_FORCED4X3); }
+ bool use_background_image() const { return bool_value(OPTION_USE_BACKGROUND); }
+ bool skip_bios_menu() const { return bool_value(OPTION_SKIP_BIOS_MENU); }
+ bool skip_parts_menu() const { return bool_value(OPTION_SKIP_PARTS_MENU); }
+ const char *last_used_machine() const { return value(OPTION_LAST_USED_MACHINE); }
+ const char *last_used_filter() const { return value(OPTION_LAST_USED_FILTER); }
+ bool info_audit() const { return bool_value(OPTION_INFO_AUTO_AUDIT); }
+
+ // UI options
+ float infos_size() const { return float_value(OPTION_INFOS_SIZE); }
+ int font_rows() const { return int_value(OPTION_FONT_ROWS); }
+ int hide_panels() const { return int_value(OPTION_HIDE_PANELS); }
+
+ const char *ui_border_color() const { return value(OPTION_UI_BORDER_COLOR); }
+ const char *ui_bg_color() const { return value(OPTION_UI_BACKGROUND_COLOR); }
+ const char *ui_gfx_bg_color() const { return value(OPTION_UI_GFXVIEWER_BG_COLOR); }
+ const char *ui_unavail_color() const { return value(OPTION_UI_UNAVAILABLE_COLOR); }
+ const char *ui_text_color() const { return value(OPTION_UI_TEXT_COLOR); }
+ const char *ui_text_bg_color() const { return value(OPTION_UI_TEXT_BG_COLOR); }
+ const char *ui_subitem_color() const { return value(OPTION_UI_SUBITEM_COLOR); }
+ const char *ui_clone_color() const { return value(OPTION_UI_CLONE_COLOR); }
+ const char *ui_selected_color() const { return value(OPTION_UI_SELECTED_COLOR); }
+ const char *ui_selected_bg_color() const { return value(OPTION_UI_SELECTED_BG_COLOR); }
+ const char *ui_mouseover_color() const { return value(OPTION_UI_MOUSEOVER_COLOR); }
+ const char *ui_mouseover_bg_color() const { return value(OPTION_UI_MOUSEOVER_BG_COLOR); }
+ const char *ui_mousedown_color() const { return value(OPTION_UI_MOUSEDOWN_COLOR); }
+ const char *ui_mousedown_bg_color() const { return value(OPTION_UI_MOUSEDOWN_BG_COLOR); }
+ const char *ui_dipsw_color() const { return value(OPTION_UI_DIPSW_COLOR); }
+ const char *ui_slider_color() const { return value(OPTION_UI_SLIDER_COLOR); }
+
+ bool skip_gameinfo() const { return bool_value(OPTION_UI_SKIP_GAMEINFO); }
+ const char *ui_font() const { return value(OPTION_UI_FONT); }
+ bool confirm_quit() const { return bool_value(OPTION_UI_CONFIRM_QUIT); }
+ bool ui_mouse() const { return bool_value(OPTION_UI_MOUSE); }
+private:
+ static const options_entry s_option_entries[];
+};
+
+#endif /* __UI_OPTS_H__ */
diff --git a/src/emu/ui/optsmenu.cpp b/src/emu/ui/optsmenu.cpp
new file mode 100644
index 00000000000..1884547d8c5
--- /dev/null
+++ b/src/emu/ui/optsmenu.cpp
@@ -0,0 +1,342 @@
+// license:BSD-3-Clause
+// copyright-holders:Dankan1890
+/*********************************************************************
+
+ ui/optsmenu.cpp
+
+ UI main options menu manager.
+
+*********************************************************************/
+
+#include "emu.h"
+#include "ui/ui.h"
+#include "ui/menu.h"
+#include "ui/datfile.h"
+#include "ui/inifile.h"
+#include "ui/selector.h"
+#include "ui/custui.h"
+#include "ui/sndmenu.h"
+#include "ui/ctrlmenu.h"
+#include "ui/dsplmenu.h"
+#include "ui/miscmenu.h"
+#include "ui/optsmenu.h"
+#include "ui/custmenu.h"
+#include "ui/inputmap.h"
+#include "rendfont.h"
+
+//-------------------------------------------------
+// ctor
+//-------------------------------------------------
+
+ui_menu_game_options::ui_menu_game_options(running_machine &machine, render_container *container) : ui_menu(machine, container)
+{
+}
+
+//-------------------------------------------------
+// dtor
+//-------------------------------------------------
+
+ui_menu_game_options::~ui_menu_game_options()
+{
+ ui_menu::menu_stack->reset(UI_MENU_RESET_SELECT_FIRST);
+ save_ui_options(machine());
+ ui_globals::switch_image = true;
+}
+
+//-------------------------------------------------
+// handle
+//-------------------------------------------------
+
+void ui_menu_game_options::handle()
+{
+ bool changed = false;
+
+ // process the menu
+// ui_menu::menu_stack->parent->process(UI_MENU_PROCESS_NOINPUT);
+// const ui_menu_event *m_event = process(UI_MENU_PROCESS_LR_REPEAT | UI_MENU_PROCESS_NOIMAGE);
+ const ui_menu_event *m_event = process(UI_MENU_PROCESS_LR_REPEAT);
+
+ if (m_event != nullptr && m_event->itemref != nullptr)
+ switch ((FPTR)m_event->itemref)
+ {
+ case FILTER_MENU:
+ {
+ if (m_event->iptkey == IPT_UI_LEFT || m_event->iptkey == IPT_UI_RIGHT)
+ {
+ (m_event->iptkey == IPT_UI_RIGHT) ? ++main_filters::actual : --main_filters::actual;
+ changed = true;
+ }
+ else if (m_event->iptkey == IPT_UI_SELECT)
+ {
+ int total = main_filters::length;
+ std::vector<std::string> s_sel(total);
+ for (int index = 0; index < total; ++index)
+ s_sel[index] = main_filters::text[index];
+
+ ui_menu::stack_push(global_alloc_clear<ui_menu_selector>(machine(), container, s_sel, main_filters::actual));
+ }
+ break;
+ }
+
+ case FILE_CATEGORY_FILTER:
+ {
+ if (m_event->iptkey == IPT_UI_LEFT)
+ {
+ machine().inifile().current_file--;
+ machine().inifile().current_category = 0;
+ changed = true;
+ }
+ else if (m_event->iptkey == IPT_UI_RIGHT)
+ {
+ machine().inifile().current_file++;
+ machine().inifile().current_category = 0;
+ changed = true;
+ }
+ else if (m_event->iptkey == IPT_UI_SELECT)
+ {
+ inifile_manager &ifile = machine().inifile();
+ int total = ifile.ini_index.size();
+ std::vector<std::string> s_sel(total);
+ machine().inifile().current_category = 0;
+ for (size_t index = 0; index < total; ++index)
+ s_sel[index] = ifile.ini_index[index].name;
+
+ ui_menu::stack_push(global_alloc_clear<ui_menu_selector>(machine(), container, s_sel, ifile.current_file, SELECTOR_INIFILE));
+ }
+ break;
+ }
+
+ case CATEGORY_FILTER:
+ {
+ if (m_event->iptkey == IPT_UI_LEFT)
+ {
+ machine().inifile().current_category--;
+ changed = true;
+ }
+ else if (m_event->iptkey == IPT_UI_RIGHT)
+ {
+ machine().inifile().current_category++;
+ changed = true;
+ }
+ else if (m_event->iptkey == IPT_UI_SELECT)
+ {
+ inifile_manager &ifile = machine().inifile();
+ int cfile = ifile.current_file;
+ int total = ifile.ini_index[cfile].category.size();
+ std::vector<std::string> s_sel(total);
+ for (int index = 0; index < total; ++index)
+ s_sel[index] = ifile.ini_index[cfile].category[index].name;
+
+ ui_menu::stack_push(global_alloc_clear<ui_menu_selector>(machine(), container, s_sel, ifile.current_category, SELECTOR_CATEGORY));
+ }
+ break;
+ }
+
+ case MANUFACT_CAT_FILTER:
+ if (m_event->iptkey == IPT_UI_LEFT || m_event->iptkey == IPT_UI_RIGHT)
+ {
+ (m_event->iptkey == IPT_UI_RIGHT) ? c_mnfct::actual++ : c_mnfct::actual--;
+ changed = true;
+ }
+ else if (m_event->iptkey == IPT_UI_SELECT)
+ ui_menu::stack_push(global_alloc_clear<ui_menu_selector>(machine(), container, c_mnfct::ui, c_mnfct::actual));
+
+ break;
+
+ case YEAR_CAT_FILTER:
+ if (m_event->iptkey == IPT_UI_LEFT || m_event->iptkey == IPT_UI_RIGHT)
+ {
+ (m_event->iptkey == IPT_UI_RIGHT) ? c_year::actual++ : c_year::actual--;
+ changed = true;
+ }
+ else if (m_event->iptkey == IPT_UI_SELECT)
+ ui_menu::stack_push(global_alloc_clear<ui_menu_selector>(machine(), container, c_year::ui, c_year::actual));
+
+ break;
+
+ case SCREEN_CAT_FILTER:
+ if (m_event->iptkey == IPT_UI_LEFT || m_event->iptkey == IPT_UI_RIGHT)
+ {
+ (m_event->iptkey == IPT_UI_RIGHT) ? screen_filters::actual++ : screen_filters::actual--;
+ changed = true;
+ }
+ else if (m_event->iptkey == IPT_UI_SELECT)
+ {
+ std::vector<std::string> text(screen_filters::length);
+ for (int x = 0; x < screen_filters::length; ++x)
+ text[x] = screen_filters::text[x];
+
+ ui_menu::stack_push(global_alloc_clear<ui_menu_selector>(machine(), container, text, screen_filters::actual));
+ }
+
+ break;
+
+ case MISC_MENU:
+ if (m_event->iptkey == IPT_UI_SELECT)
+ ui_menu::stack_push(global_alloc_clear<ui_menu_misc_options>(machine(), container));
+ break;
+
+ case SOUND_MENU:
+ if (m_event->iptkey == IPT_UI_SELECT)
+ ui_menu::stack_push(global_alloc_clear<ui_menu_sound_options>(machine(), container));
+ break;
+
+ case DISPLAY_MENU:
+ if (m_event->iptkey == IPT_UI_SELECT)
+ ui_menu::stack_push(global_alloc_clear<ui_menu_display_options>(machine(), container));
+ break;
+
+ case CUSTOM_MENU:
+ if (m_event->iptkey == IPT_UI_SELECT)
+ ui_menu::stack_push(global_alloc_clear<ui_menu_custom_ui>(machine(), container));
+ break;
+
+ case CONTROLLER_MENU:
+ if (m_event->iptkey == IPT_UI_SELECT)
+ ui_menu::stack_push(global_alloc_clear<ui_menu_controller_mapping>(machine(), container));
+ break;
+
+ case CGI_MENU:
+ if (m_event->iptkey == IPT_UI_SELECT)
+ ui_menu::stack_push(global_alloc_clear<ui_menu_input_groups>(machine(), container));
+ break;
+
+ case CUSTOM_FILTER:
+ if (m_event->iptkey == IPT_UI_SELECT)
+ ui_menu::stack_push(global_alloc_clear<ui_menu_custom_filter>(machine(), container));
+ break;
+ }
+
+ if (changed)
+ reset(UI_MENU_RESET_REMEMBER_REF);
+}
+
+//-------------------------------------------------
+// populate
+//-------------------------------------------------
+
+void ui_menu_game_options::populate()
+{
+ if (strcmp(machine().options().ui(),"simple")!=0)
+ {
+ // set filter arrow
+ std::string fbuff;
+
+ // add filter item
+ UINT32 arrow_flags = get_arrow_flags((int)FILTER_FIRST, (int)FILTER_LAST, main_filters::actual);
+ item_append("Filter", main_filters::text[main_filters::actual], arrow_flags, (void *)(FPTR)FILTER_MENU);
+
+ // add category subitem
+ if (main_filters::actual == FILTER_CATEGORY && !machine().inifile().ini_index.empty())
+ {
+ inifile_manager &inif = machine().inifile();
+ int afile = inif.current_file;
+
+ arrow_flags = get_arrow_flags(0, inif.ini_index.size() - 1, afile);
+ fbuff = " ^!File";
+ convert_command_glyph(fbuff);
+ item_append(fbuff.c_str(), inif.actual_file().c_str(), arrow_flags, (void *)(FPTR)FILE_CATEGORY_FILTER);
+
+ arrow_flags = get_arrow_flags(0, inif.ini_index[afile].category.size() - 1, inif.current_category);
+ fbuff = " ^!Category";
+ convert_command_glyph(fbuff);
+ item_append(fbuff.c_str(), inif.actual_category().c_str(), arrow_flags, (void *)(FPTR)CATEGORY_FILTER);
+ }
+ // add manufacturer subitem
+ else if (main_filters::actual == FILTER_MANUFACTURER && c_mnfct::ui.size() > 0)
+ {
+ arrow_flags = get_arrow_flags(0, c_mnfct::ui.size() - 1, c_mnfct::actual);
+ fbuff = "^!Manufacturer";
+ convert_command_glyph(fbuff);
+ item_append(fbuff.c_str(), c_mnfct::ui[c_mnfct::actual].c_str(), arrow_flags, (void *)(FPTR)MANUFACT_CAT_FILTER);
+ }
+ // add year subitem
+ else if (main_filters::actual == FILTER_YEAR && c_year::ui.size() > 0)
+ {
+ arrow_flags = get_arrow_flags(0, c_year::ui.size() - 1, c_year::actual);
+ fbuff.assign("^!Year");
+ convert_command_glyph(fbuff);
+ item_append(fbuff.c_str(), c_year::ui[c_year::actual].c_str(), arrow_flags, (void *)(FPTR)YEAR_CAT_FILTER);
+ }
+ // add screen subitem
+ else if (main_filters::actual == FILTER_SCREEN)
+ {
+ arrow_flags = get_arrow_flags(0, screen_filters::length - 1, screen_filters::actual);
+ fbuff = "^!Screen type";
+ convert_command_glyph(fbuff);
+ item_append(fbuff.c_str(), screen_filters::text[screen_filters::actual], arrow_flags, (void *)(FPTR)SCREEN_CAT_FILTER);
+ }
+ // add custom subitem
+ else if (main_filters::actual == FILTER_CUSTOM)
+ {
+ fbuff = "^!Setup custom filter";
+ convert_command_glyph(fbuff);
+ item_append(fbuff.c_str(), nullptr, 0, (void *)(FPTR)CUSTOM_FILTER);
+ }
+
+ item_append(MENU_SEPARATOR_ITEM, nullptr, 0, nullptr);
+
+ // add options items
+ item_append("Customize UI", nullptr, 0, (void *)(FPTR)CUSTOM_MENU);
+ }
+ item_append("Display Options", nullptr, 0, (void *)(FPTR)DISPLAY_MENU);
+ item_append("Sound Options", nullptr, 0, (void *)(FPTR)SOUND_MENU);
+ item_append("Miscellaneous Options", nullptr, 0, (void *)(FPTR)MISC_MENU);
+ item_append("Device Mapping", nullptr, 0, (void *)(FPTR)CONTROLLER_MENU);
+ item_append("General Inputs", nullptr, 0, (void *)(FPTR)CGI_MENU);
+ item_append(MENU_SEPARATOR_ITEM, nullptr, 0, nullptr);
+
+ custombottom = 2.0f * machine().ui().get_line_height() + 3.0f * UI_BOX_TB_BORDER;
+ customtop = machine().ui().get_line_height() + 3.0f * UI_BOX_TB_BORDER;
+}
+
+//-------------------------------------------------
+// perform our special rendering
+//-------------------------------------------------
+
+void ui_menu_game_options::custom_render(void *selectedref, float top, float bottom, float origx1, float origy1, float origx2, float origy2)
+{
+ float width;
+ ui_manager &mui = machine().ui();
+ mui.draw_text_full(container, "Settings", 0.0f, 0.0f, 1.0f, JUSTIFY_CENTER, WRAP_TRUNCATE,
+ DRAW_NONE, ARGB_WHITE, ARGB_BLACK, &width, nullptr);
+ width += 2 * UI_BOX_LR_BORDER;
+ float maxwidth = MAX(origx2 - origx1, width);
+
+ // compute our bounds
+ float x1 = 0.5f - 0.5f * maxwidth;
+ float x2 = x1 + maxwidth;
+ float y1 = origy1 - top;
+ float y2 = origy1 - UI_BOX_TB_BORDER;
+
+ // draw a box
+ mui.draw_outlined_box(container, x1, y1, x2, y2, UI_GREEN_COLOR);
+
+ // take off the borders
+ x1 += UI_BOX_LR_BORDER;
+ x2 -= UI_BOX_LR_BORDER;
+ y1 += UI_BOX_TB_BORDER;
+
+ // draw the text within it
+ mui.draw_text_full(container, "Settings", x1, y1, x2 - x1, JUSTIFY_CENTER, WRAP_TRUNCATE,
+ DRAW_NORMAL, UI_TEXT_COLOR, UI_TEXT_BG_COLOR, nullptr, nullptr);
+}
+
+//-------------------------------------------------
+// save ui options
+//-------------------------------------------------
+
+void save_ui_options(running_machine &machine)
+{
+ // attempt to open the output file
+ emu_file file(machine.options().ini_path(), OPEN_FLAG_WRITE | OPEN_FLAG_CREATE | OPEN_FLAG_CREATE_PATHS);
+ if (file.open("ui.ini") == FILERR_NONE)
+ {
+ // generate the updated INI
+ std::string initext = machine.ui().options().output_ini();
+ file.puts(initext.c_str());
+ file.close();
+ }
+ else
+ machine.popmessage("**Error to save ui.ini**", emulator_info::get_configname());
+}
diff --git a/src/emu/ui/optsmenu.h b/src/emu/ui/optsmenu.h
new file mode 100644
index 00000000000..b62e5712de9
--- /dev/null
+++ b/src/emu/ui/optsmenu.h
@@ -0,0 +1,48 @@
+// license:BSD-3-Clause
+// copyright-holders:Dankan1890
+/***************************************************************************
+
+ ui/optsmenu.h
+
+ UI main options menu manager.
+
+***************************************************************************/
+
+#pragma once
+
+#ifndef __UI_OPTSMENU_H__
+#define __UI_OPTSMENU_H__
+
+class ui_menu_game_options : public ui_menu
+{
+public:
+ ui_menu_game_options(running_machine &machine, render_container *container);
+ virtual ~ui_menu_game_options();
+ virtual void populate() override;
+ virtual void handle() override;
+ virtual void custom_render(void *selectedref, float top, float bottom, float x, float y, float x2, float y2) override;
+
+private:
+ enum
+ {
+ FILTER_MENU = 1,
+ FILE_CATEGORY_FILTER,
+ MANUFACT_CAT_FILTER,
+ YEAR_CAT_FILTER,
+ SCREEN_CAT_FILTER,
+ CATEGORY_FILTER,
+ MISC_MENU,
+ DISPLAY_MENU,
+ CUSTOM_MENU,
+ SOUND_MENU,
+ CONTROLLER_MENU,
+ SAVE_OPTIONS,
+ CGI_MENU,
+ CUSTOM_FILTER
+ };
+};
+
+// save options to file
+void save_ui_options(running_machine &machine);
+
+#endif /* __UI_OPTSMENU_H__ */
diff --git a/src/emu/ui/selector.cpp b/src/emu/ui/selector.cpp
new file mode 100644
index 00000000000..c9cc3c7b6c0
--- /dev/null
+++ b/src/emu/ui/selector.cpp
@@ -0,0 +1,244 @@
+// license:BSD-3-Clause
+// copyright-holders:Dankan1890
+/*********************************************************************
+
+ ui/m_selector.cpp
+
+ Internal UI user interface.
+
+*********************************************************************/
+
+#include "emu.h"
+#include "ui/ui.h"
+#include "ui/menu.h"
+#include "ui/selector.h"
+#include "ui/inifile.h"
+
+//-------------------------------------------------
+// ctor / dtor
+//-------------------------------------------------
+
+ui_menu_selector::ui_menu_selector(running_machine &machine, render_container *container, std::vector<std::string> s_sel, UINT16 &s_actual, int category, int _hover)
+ : ui_menu(machine, container), m_selector(s_actual)
+{
+ m_category = category;
+ m_first_pass = true;
+ m_hover = _hover;
+ m_str_items = s_sel;
+ m_search[0] = '\0';
+ m_searchlist[0] = nullptr;
+}
+
+ui_menu_selector::~ui_menu_selector()
+{
+}
+
+//-------------------------------------------------
+// handle
+//-------------------------------------------------
+
+void ui_menu_selector::handle()
+{
+ // process the menu
+ const ui_menu_event *m_event = process(0);
+
+ if (m_event != nullptr && m_event->itemref != nullptr)
+ {
+ if (m_event->iptkey == IPT_UI_SELECT)
+ {
+ for (size_t idx = 0; idx < m_str_items.size(); ++idx)
+ if ((void*)&m_str_items[idx] == m_event->itemref)
+ m_selector = idx;
+
+ switch (m_category)
+ {
+ case SELECTOR_INIFILE:
+ machine().inifile().current_file = m_selector;
+ machine().inifile().current_category = 0;
+ ui_menu::menu_stack->parent->reset(UI_MENU_RESET_REMEMBER_REF);
+ break;
+
+ case SELECTOR_CATEGORY:
+ machine().inifile().current_category = m_selector;
+ ui_menu::menu_stack->parent->reset(UI_MENU_RESET_REMEMBER_REF);
+ break;
+
+ case SELECTOR_GAME:
+ main_filters::actual = m_hover;
+ ui_menu::menu_stack->parent->reset(UI_MENU_RESET_SELECT_FIRST);
+ break;
+
+ case SELECTOR_SOFTWARE:
+ sw_filters::actual = m_hover;
+ ui_menu::menu_stack->parent->reset(UI_MENU_RESET_SELECT_FIRST);
+ break;
+
+ default:
+ ui_menu::menu_stack->parent->reset(UI_MENU_RESET_REMEMBER_REF);
+ break;
+ }
+
+ ui_globals::switch_image = true;
+ ui_menu::stack_pop(machine());
+ }
+ else if (m_event->iptkey == IPT_SPECIAL)
+ {
+ int buflen = strlen(m_search);
+
+ // if it's a backspace and we can handle it, do so
+ if ((m_event->unichar == 8 || m_event->unichar == 0x7f) && buflen > 0)
+ {
+ *(char *)utf8_previous_char(&m_search[buflen]) = 0;
+ reset(UI_MENU_RESET_SELECT_FIRST);
+ }
+
+ // if it's any other key and we're not maxed out, update
+ else if (m_event->unichar >= ' ' && m_event->unichar < 0x7f)
+ {
+ buflen += utf8_from_uchar(&m_search[buflen], ARRAY_LENGTH(m_search) - buflen, m_event->unichar);
+ m_search[buflen] = 0;
+ reset(UI_MENU_RESET_SELECT_FIRST);
+ }
+ }
+
+ // escape pressed with non-empty text clears the text
+ else if (m_event->iptkey == IPT_UI_CANCEL && m_search[0] != 0)
+ {
+ m_search[0] = '\0';
+ reset(UI_MENU_RESET_SELECT_FIRST);
+ }
+ }
+}
+
+//-------------------------------------------------
+// populate
+//-------------------------------------------------
+
+void ui_menu_selector::populate()
+{
+ if (m_search[0] != 0)
+ {
+ find_matches(m_search);
+
+ for (int curitem = 0; m_searchlist[curitem]; ++curitem)
+ item_append(m_searchlist[curitem]->c_str(), nullptr, 0, (void *)m_searchlist[curitem]);
+ }
+ else
+ {
+ for (size_t index = 0, added = 0; index < m_str_items.size(); ++index)
+ if (m_str_items[index] != "_skip_")
+ {
+ if (m_first_pass && m_selector == index)
+ selected = added;
+
+ added++;
+ item_append(m_str_items[index].c_str(), nullptr, 0, (void *)&m_str_items[index]);
+ }
+ }
+
+ item_append(MENU_SEPARATOR_ITEM, nullptr, 0, nullptr);
+ customtop = custombottom = machine().ui().get_line_height() + 3.0f * UI_BOX_TB_BORDER;
+ m_first_pass = false;
+}
+
+//-------------------------------------------------
+// perform our special rendering
+//-------------------------------------------------
+
+void ui_menu_selector::custom_render(void *selectedref, float top, float bottom, float origx1, float origy1, float origx2, float origy2)
+{
+ float width;
+ ui_manager &mui = machine().ui();
+ std::string tempbuf = std::string("Selection List - Search: ").append(m_search).append("_");
+
+ // get the size of the text
+ mui.draw_text_full(container, tempbuf.c_str(), 0.0f, 0.0f, 1.0f, JUSTIFY_CENTER, WRAP_TRUNCATE,
+ DRAW_NONE, ARGB_WHITE, ARGB_BLACK, &width, nullptr);
+ width += (2.0f * UI_BOX_LR_BORDER) + 0.01f;
+ float maxwidth = MAX(width, origx2 - origx1);
+
+ // compute our bounds
+ float x1 = 0.5f - 0.5f * maxwidth;
+ float x2 = x1 + maxwidth;
+ float y1 = origy1 - top;
+ float y2 = origy1 - UI_BOX_TB_BORDER;
+
+ // draw a box
+ mui.draw_outlined_box(container, x1, y1, x2, y2, UI_GREEN_COLOR);
+
+ // take off the borders
+ x1 += UI_BOX_LR_BORDER;
+ x2 -= UI_BOX_LR_BORDER;
+ y1 += UI_BOX_TB_BORDER;
+
+ // draw the text within it
+ mui.draw_text_full(container, tempbuf.c_str(), x1, y1, x2 - x1, JUSTIFY_CENTER, WRAP_TRUNCATE,
+ DRAW_NORMAL, UI_TEXT_COLOR, UI_TEXT_BG_COLOR, nullptr, nullptr);
+
+ // bottom text
+ // get the text for 'UI Select'
+ std::string ui_select_text = machine().input().seq_name(machine().ioport().type_seq(IPT_UI_SELECT, 0, SEQ_TYPE_STANDARD));
+ tempbuf.assign("Double click or press ").append(ui_select_text).append(" to select");
+
+ mui.draw_text_full(container, tempbuf.c_str(), 0.0f, 0.0f, 1.0f, JUSTIFY_CENTER, WRAP_NEVER,
+ DRAW_NONE, ARGB_WHITE, ARGB_BLACK, &width, nullptr);
+ width += 2 * UI_BOX_LR_BORDER;
+ maxwidth = MAX(maxwidth, width);
+
+ // compute our bounds
+ x1 = 0.5f - 0.5f * maxwidth;
+ x2 = x1 + maxwidth;
+ y1 = origy2 + UI_BOX_TB_BORDER;
+ y2 = origy2 + bottom;
+
+ // draw a box
+ mui.draw_outlined_box(container, x1, y1, x2, y2, UI_RED_COLOR);
+
+ // take off the borders
+ x1 += UI_BOX_LR_BORDER;
+ x2 -= UI_BOX_LR_BORDER;
+ y1 += UI_BOX_TB_BORDER;
+
+ // draw the text within it
+ mui.draw_text_full(container, tempbuf.c_str(), x1, y1, x2 - x1, JUSTIFY_CENTER, WRAP_NEVER,
+ DRAW_NORMAL, UI_TEXT_COLOR, UI_TEXT_BG_COLOR, nullptr, nullptr);
+}
+
+//-------------------------------------------------
+// find approximate matches
+//-------------------------------------------------
+
+void ui_menu_selector::find_matches(const char *str)
+{
+ // allocate memory to track the penalty value
+ std::vector<int> penalty(VISIBLE_GAMES_IN_SEARCH, 9999);
+ int index = 0;
+
+ for (; index < m_str_items.size(); ++index)
+ {
+ if (m_str_items[index] == "_skip_")
+ continue;
+
+ // pick the best match between driver name and description
+ int curpenalty = fuzzy_substring(str, m_str_items[index]);
+
+ // insert into the sorted table of matches
+ for (int matchnum = VISIBLE_GAMES_IN_SEARCH - 1; matchnum >= 0; --matchnum)
+ {
+ // stop if we're worse than the current entry
+ if (curpenalty >= penalty[matchnum])
+ break;
+
+ // as long as this isn't the last entry, bump this one down
+ if (matchnum < VISIBLE_GAMES_IN_SEARCH - 1)
+ {
+ penalty[matchnum + 1] = penalty[matchnum];
+ m_searchlist[matchnum + 1] = m_searchlist[matchnum];
+ }
+
+ m_searchlist[matchnum] = &m_str_items[index];
+ penalty[matchnum] = curpenalty;
+ }
+ }
+ (index < VISIBLE_GAMES_IN_SEARCH) ? m_searchlist[index] = nullptr : m_searchlist[VISIBLE_GAMES_IN_SEARCH] = nullptr;
+}
diff --git a/src/emu/ui/selector.h b/src/emu/ui/selector.h
new file mode 100644
index 00000000000..595ca1f578d
--- /dev/null
+++ b/src/emu/ui/selector.h
@@ -0,0 +1,51 @@
+// license:BSD-3-Clause
+// copyright-holders:Dankan1890
+/***************************************************************************
+
+ ui/selector.h
+
+ Internal UI user interface.
+
+***************************************************************************/
+
+#pragma once
+
+#ifndef __UI_SELECTOR_H__
+#define __UI_SELECTOR_H__
+
+enum
+{
+ SELECTOR_INIFILE = 1,
+ SELECTOR_CATEGORY,
+ SELECTOR_GAME,
+ SELECTOR_SOFTWARE
+};
+
+//-------------------------------------------------
+// class selector menu
+//-------------------------------------------------
+
+class ui_menu_selector : public ui_menu
+{
+public:
+ ui_menu_selector(running_machine &machine, render_container *container, std::vector<std::string> _sel, UINT16 &_actual, int _category = 0, int _hover = 0);
+ virtual ~ui_menu_selector();
+ virtual void populate() override;
+ virtual void handle() override;
+ virtual void custom_render(void *selectedref, float top, float bottom, float x, float y, float x2, float y2) override;
+
+ virtual bool menu_has_search_active() override { return (m_search[0] != 0); }
+
+private:
+ enum { VISIBLE_GAMES_IN_SEARCH = 200 };
+ char m_search[40];
+ UINT16 &m_selector;
+ int m_category, m_hover;
+ bool m_first_pass;
+ std::vector<std::string> m_str_items;
+ std::string *m_searchlist[VISIBLE_GAMES_IN_SEARCH + 1];
+
+ void find_matches(const char *str);
+};
+
+#endif /* __UI_SELECTOR_H__ */
diff --git a/src/emu/ui/selgame.cpp b/src/emu/ui/selgame.cpp
index 9a080df6655..9642826e024 100644
--- a/src/emu/ui/selgame.cpp
+++ b/src/emu/ui/selgame.cpp
@@ -1,12 +1,12 @@
// license:BSD-3-Clause
-// copyright-holders:Nicola Salmoria, Aaron Giles, Nathan Woods
-/***************************************************************************
+// copyright-holders:Dankan1890
+/*********************************************************************
- ui/selgame.c
+ ui/selgame.cpp
- Game selector
+ Main UI menu.
-***************************************************************************/
+*********************************************************************/
#include "emu.h"
#include "emuopts.h"
@@ -14,294 +14,839 @@
#include "ui/menu.h"
#include "uiinput.h"
#include "ui/selgame.h"
-#include "ui/inputmap.h"
#include "ui/miscmenu.h"
#include "audit.h"
-#include <ctype.h>
-
+#include "ui/datfile.h"
+#include "ui/inifile.h"
+#include "rendfont.h"
+#include "ui/datmenu.h"
+#include "ui/dirmenu.h"
+#include "ui/optsmenu.h"
+#include "ui/selector.h"
+#include "ui/selsoft.h"
+#include "sound/samples.h"
+#include "ui/custmenu.h"
+#include "../info.h"
+#include "ui/auditmenu.h"
+#include "rendutil.h"
+#include "softlist.h"
+#include <algorithm>
+
+extern const char UI_VERSION_TAG[];
+
+static bool first_start = true;
+static const char *dats_info[] = { "General Info", "History", "Mameinfo", "Sysinfo", "Messinfo", "Command", "Mamescore" };
//-------------------------------------------------
-// ctor
+// sort
//-------------------------------------------------
-ui_menu_select_game::ui_menu_select_game(running_machine &machine, render_container *container, const char *gamename) : ui_menu(machine, container), m_driverlist(driver_list::total() + 1)
+inline int c_stricmp(const char *s1, const char *s2)
{
- build_driver_list();
- if(gamename)
- strcpy(m_search, gamename);
- m_matchlist[0] = -1;
+ for (;;)
+ {
+ int c1 = tolower((UINT8)*s1++);
+ int c2 = tolower((UINT8)*s2++);
+ if (c1 == 0 || c1 != c2)
+ return c1 - c2;
+ }
}
+bool sort_game_list(const game_driver *x, const game_driver *y)
+{
+ bool clonex = strcmp(x->parent, "0");
+ bool cloney = strcmp(y->parent, "0");
+
+ if (!clonex && !cloney)
+ return (c_stricmp(x->description, y->description) < 0);
+
+ int cx = -1, cy = -1;
+ if (clonex)
+ {
+ cx = driver_list::find(x->parent);
+ if (cx == -1 || (driver_list::driver(cx).flags & MACHINE_IS_BIOS_ROOT) != 0)
+ clonex = false;
+ }
+
+ if (cloney)
+ {
+ cy = driver_list::find(y->parent);
+ if (cy == -1 || (driver_list::driver(cy).flags & MACHINE_IS_BIOS_ROOT) != 0)
+ cloney = false;
+ }
+
+ if (!clonex && !cloney)
+ return (c_stricmp(x->description, y->description) < 0);
+
+ else if (clonex && cloney)
+ {
+ if (!c_stricmp(x->parent, y->parent))
+ return (c_stricmp(x->description, y->description) < 0);
+ else
+ return (c_stricmp(driver_list::driver(cx).description, driver_list::driver(cy).description) < 0);
+ }
+ else if (!clonex && cloney)
+ {
+ if (!c_stricmp(x->name, y->parent))
+ return true;
+ else
+ return (c_stricmp(x->description, driver_list::driver(cy).description) < 0);
+ }
+ else
+ {
+ if (!c_stricmp(x->parent, y->name))
+ return false;
+ else
+ return (c_stricmp(driver_list::driver(cx).description, y->description) < 0);
+ }
+}
//-------------------------------------------------
-// dtor
+// save main option
//-------------------------------------------------
-ui_menu_select_game::~ui_menu_select_game()
+void save_main_option(running_machine &machine)
{
-}
+ // parse the file
+ std::string error;
+ emu_options options(machine.options()); // This way we make sure that all OSD parts are in
+ std::string error_string;
+ // attempt to open the main ini file
+ {
+ emu_file file(machine.options().ini_path(), OPEN_FLAG_READ);
+ if (file.open(emulator_info::get_configname(), ".ini") == FILERR_NONE)
+ {
+ bool result = options.parse_ini_file((core_file&)file, OPTION_PRIORITY_MAME_INI, OPTION_PRIORITY_DRIVER_INI, error);
+ if (!result)
+ {
+ osd_printf_error("**Error to load %s.ini**", emulator_info::get_configname());
+ return;
+ }
+ }
+ }
+
+ for (emu_options::entry *f_entry = machine.options().first(); f_entry != nullptr; f_entry = f_entry->next())
+ {
+ if (f_entry->is_changed())
+ {
+ options.set_value(f_entry->name(), f_entry->value(), OPTION_PRIORITY_CMDLINE, error_string);
+ }
+ }
+ // attempt to open the output file
+ {
+ emu_file file(machine.options().ini_path(), OPEN_FLAG_WRITE | OPEN_FLAG_CREATE | OPEN_FLAG_CREATE_PATHS);
+ if (file.open(emulator_info::get_configname(), ".ini") == FILERR_NONE)
+ {
+ // generate the updated INI
+ std::string initext = options.output_ini();
+ file.puts(initext.c_str());
+ file.close();
+ }
+ else {
+ machine.popmessage("**Error to save %s.ini**", emulator_info::get_configname());
+ return;
+ }
+ }
+ machine.ui().popup_time(3, "\n Configuration saved \n\n");
+}
//-------------------------------------------------
-// build_driver_list - build a list of available
-// drivers
+// ctor
//-------------------------------------------------
-void ui_menu_select_game::build_driver_list()
+ui_menu_select_game::ui_menu_select_game(running_machine &machine, render_container *container, const char *gamename) : ui_menu(machine, container)
{
- // start with an empty list
- m_drivlist = std::make_unique<driver_enumerator>(machine().options());
- m_drivlist->exclude_all();
+ std::string error_string, last_filter, sub_filter;
+ ui_options &moptions = machine.ui().options();
- // open a path to the ROMs and find them in the array
- file_enumerator path(machine().options().media_path());
- const osd_directory_entry *dir;
+ // load drivers cache
+ load_cache_info();
- // iterate while we get new objects
- while ((dir = path.next()) != nullptr)
+ // build drivers list
+ if (!load_available_machines())
+ build_available_list();
+
+ // load custom filter
+ load_custom_filters();
+
+ if (first_start)
{
- char drivername[50];
- char *dst = drivername;
- const char *src;
+ reselect_last::driver = moptions.last_used_machine();
+ std::string tmp(moptions.last_used_filter());
+ std::size_t found = tmp.find_first_of(",");
+ if (found == std::string::npos)
+ last_filter = tmp;
+ else
+ {
+ last_filter = tmp.substr(0, found);
+ sub_filter = tmp.substr(found + 1);
+ }
- // build a name for it
- for (src = dir->name; *src != 0 && *src != '.' && dst < &drivername[ARRAY_LENGTH(drivername) - 1]; src++)
- *dst++ = tolower((UINT8)*src);
- *dst = 0;
+ for (size_t ind = 0; ind < main_filters::length; ++ind)
+ if (last_filter == main_filters::text[ind])
+ {
+ main_filters::actual = ind;
+ break;
+ }
- int drivnum = m_drivlist->find(drivername);
- if (drivnum != -1)
- m_drivlist->include(drivnum);
+ if (main_filters::actual == FILTER_CATEGORY)
+ main_filters::actual = FILTER_ALL;
+ else if (main_filters::actual == FILTER_MANUFACTURER)
+ {
+ for (size_t id = 0; id < c_mnfct::ui.size(); ++id)
+ if (sub_filter == c_mnfct::ui[id])
+ c_mnfct::actual = id;
+ }
+ else if (main_filters::actual == FILTER_YEAR)
+ {
+ for (size_t id = 0; id < c_year::ui.size(); ++id)
+ if (sub_filter == c_year::ui[id])
+ c_year::actual = id;
+ }
+ else if (main_filters::actual == FILTER_SCREEN)
+ {
+ for (size_t id = 0; id < screen_filters::length; ++id)
+ if (sub_filter == screen_filters::text[id])
+ screen_filters::actual = id;
+ }
+ first_start = false;
}
- // now build the final list
- m_drivlist->reset();
- int listnum = 0;
- while (m_drivlist->next())
- m_driverlist[listnum++] = &m_drivlist->driver();
+ if (!moptions.remember_last())
+ reselect_last::reset();
+
+ machine.options().set_value(OPTION_SNAPNAME, "%g/%i", OPTION_PRIORITY_CMDLINE, error_string);
+ machine.options().set_value(OPTION_SOFTWARENAME, "", OPTION_PRIORITY_CMDLINE, error_string);
- // NULL-terminate
- m_driverlist[listnum] = nullptr;
+ ui_globals::curimage_view = FIRST_VIEW;
+ ui_globals::curdats_view = UI_FIRST_LOAD;
+ ui_globals::switch_image = false;
+ ui_globals::default_image = true;
+ ui_globals::panels_status = moptions.hide_panels();
}
+//-------------------------------------------------
+// dtor
+//-------------------------------------------------
+ui_menu_select_game::~ui_menu_select_game()
+{
+ std::string error_string, last_driver;
+ const game_driver *driver = nullptr;
+ ui_software_info *swinfo = nullptr;
+ ui_options &mopt = machine().ui().options();
+ if (main_filters::actual == FILTER_FAVORITE_GAME)
+ swinfo = (selected >= 0 && selected < item.size()) ? (ui_software_info *)item[selected].ref : nullptr;
+ else
+ driver = (selected >= 0 && selected < item.size()) ? (const game_driver *)item[selected].ref : nullptr;
+
+ if ((FPTR)driver > 3)
+ last_driver = driver->name;
+
+ if ((FPTR)swinfo > 3)
+ last_driver = swinfo->shortname;
+
+ std::string filter(main_filters::text[main_filters::actual]);
+ if (main_filters::actual == FILTER_MANUFACTURER)
+ filter.append(",").append(c_mnfct::ui[c_mnfct::actual]);
+ else if (main_filters::actual == FILTER_YEAR)
+ filter.append(",").append(c_year::ui[c_year::actual]);
+ else if (main_filters::actual == FILTER_SCREEN)
+ filter.append(",").append(screen_filters::text[screen_filters::actual]);
+
+ mopt.set_value(OPTION_LAST_USED_FILTER, filter.c_str(), OPTION_PRIORITY_CMDLINE, error_string);
+ mopt.set_value(OPTION_LAST_USED_MACHINE, last_driver.c_str(), OPTION_PRIORITY_CMDLINE, error_string);
+ mopt.set_value(OPTION_HIDE_PANELS, ui_globals::panels_status, OPTION_PRIORITY_CMDLINE, error_string);
+ save_ui_options(machine());
+}
//-------------------------------------------------
-// handle - handle the game select menu
+// handle
//-------------------------------------------------
void ui_menu_select_game::handle()
{
+ bool check_filter = false;
+ bool enabled_dats = machine().ui().options().enabled_dats();
+
+ // if i have to load datfile, performe an hard reset
+ if (ui_globals::reset)
+ {
+ ui_globals::reset = false;
+ machine().schedule_hard_reset();
+ ui_menu::stack_reset(machine());
+ return;
+ }
+
+ // if i have to reselect a software, force software list submenu
+ if (reselect_last::get())
+ {
+ const game_driver *driver = (const game_driver *)item[selected].ref;
+ ui_menu::stack_push(global_alloc_clear<ui_menu_select_software>(machine(), container, driver));
+ return;
+ }
+
// ignore pause keys by swallowing them before we process the menu
machine().ui_input().pressed(IPT_UI_PAUSE);
// process the menu
- const ui_menu_event *menu_event = process(0);
- if (menu_event != nullptr && menu_event->itemref != nullptr)
+ const ui_menu_event *m_event = process(UI_MENU_PROCESS_LR_REPEAT);
+ if (m_event != nullptr && m_event->itemref != nullptr)
{
- // reset the error on any future menu_event
- if (m_error)
- m_error = false;
+ // reset the error on any future m_event
+ if (ui_error)
+ ui_error = false;
// handle selections
- else
+ else if (m_event->iptkey == IPT_UI_SELECT)
+ {
+ if (main_filters::actual != FILTER_FAVORITE_GAME)
+ inkey_select(m_event);
+ else
+ inkey_select_favorite(m_event);
+ }
+
+ // handle UI_LEFT
+ else if (m_event->iptkey == IPT_UI_LEFT)
{
- switch(menu_event->iptkey)
+ // Images
+ if (ui_globals::rpanel == RP_IMAGES && ui_globals::curimage_view > FIRST_VIEW)
{
- case IPT_UI_SELECT:
- inkey_select(menu_event);
- break;
- case IPT_UI_CANCEL:
- inkey_cancel(menu_event);
- break;
- case IPT_SPECIAL:
- inkey_special(menu_event);
- break;
+ ui_globals::curimage_view--;
+ ui_globals::switch_image = true;
+ ui_globals::default_image = false;
+ }
+
+ // Infos
+ else if (ui_globals::rpanel == RP_INFOS && ui_globals::curdats_view > UI_FIRST_LOAD)
+ {
+ ui_globals::curdats_view--;
+ topline_datsview = 0;
}
}
- }
- // if we're in an error state, overlay an error message
- if (m_error)
- machine().ui().draw_text_box(container,
- "The selected game is missing one or more required ROM or CHD images. "
- "Please select a different game.\n\nPress any key to continue.",
- JUSTIFY_CENTER, 0.5f, 0.5f, UI_RED_COLOR);
-}
+ // handle UI_RIGHT
+ else if (m_event->iptkey == IPT_UI_RIGHT)
+ {
+ // Images
+ if (ui_globals::rpanel == RP_IMAGES && ui_globals::curimage_view < LAST_VIEW)
+ {
+ ui_globals::curimage_view++;
+ ui_globals::switch_image = true;
+ ui_globals::default_image = false;
+ }
+ // Infos
+ else if (ui_globals::rpanel == RP_INFOS && ui_globals::curdats_view < UI_LAST_LOAD)
+ {
+ ui_globals::curdats_view++;
+ topline_datsview = 0;
+ }
+ }
-//-------------------------------------------------
-// inkey_select
-//-------------------------------------------------
+ // handle UI_UP_FILTER
+ else if (m_event->iptkey == IPT_UI_UP_FILTER && main_filters::actual > FILTER_FIRST)
+ {
+ l_hover = main_filters::actual - 1;
+ check_filter = true;
+ }
-void ui_menu_select_game::inkey_select(const ui_menu_event *menu_event)
-{
- const game_driver *driver = (const game_driver *)menu_event->itemref;
+ // handle UI_DOWN_FILTER
+ else if (m_event->iptkey == IPT_UI_DOWN_FILTER && main_filters::actual < FILTER_LAST)
+ {
+ l_hover = main_filters::actual + 1;
+ check_filter = true;
+ }
- // special case for configure inputs
- if ((FPTR)driver == 1)
- ui_menu::stack_push(auto_alloc_clear(machine(), <ui_menu_input_groups>(machine(), container)));
+ // handle UI_LEFT_PANEL
+ else if (m_event->iptkey == IPT_UI_LEFT_PANEL)
+ ui_globals::rpanel = RP_IMAGES;
- // anything else is a driver
- else
+ // handle UI_RIGHT_PANEL
+ else if (m_event->iptkey == IPT_UI_RIGHT_PANEL)
+ ui_globals::rpanel = RP_INFOS;
+
+ // escape pressed with non-empty text clears the text
+ else if (m_event->iptkey == IPT_UI_CANCEL && m_search[0] != 0)
+ {
+ m_search[0] = '\0';
+ reset(UI_MENU_RESET_SELECT_FIRST);
+ }
+
+ // handle UI_HISTORY
+ else if (m_event->iptkey == IPT_UI_HISTORY && enabled_dats)
+ {
+ if (main_filters::actual != FILTER_FAVORITE_GAME)
+ {
+ const game_driver *driver = (const game_driver *)m_event->itemref;
+ if ((FPTR)driver > 3)
+ ui_menu::stack_push(global_alloc_clear<ui_menu_dats>(machine(), container, UI_HISTORY_LOAD, driver));
+ }
+ else
+ {
+ ui_software_info *swinfo = (ui_software_info *)m_event->itemref;
+ if ((FPTR)swinfo > 3)
+ {
+ if (swinfo->startempty == 1)
+ ui_menu::stack_push(global_alloc_clear<ui_menu_dats>(machine(), container, UI_HISTORY_LOAD, swinfo->driver));
+ else
+ ui_menu::stack_push(global_alloc_clear<ui_menu_history_sw>(machine(), container, swinfo));
+ }
+ }
+ }
+
+ // handle UI_MAMEINFO
+ else if (m_event->iptkey == IPT_UI_MAMEINFO && enabled_dats)
+ {
+ if (main_filters::actual != FILTER_FAVORITE_GAME)
+ {
+ const game_driver *driver = (const game_driver *)m_event->itemref;
+ if ((FPTR)driver > 3)
+ {
+ if ((driver->flags & MACHINE_TYPE_ARCADE) != 0)
+ ui_menu::stack_push(global_alloc_clear<ui_menu_dats>(machine(), container, UI_MAMEINFO_LOAD, driver));
+ else
+ ui_menu::stack_push(global_alloc_clear<ui_menu_dats>(machine(), container, UI_MESSINFO_LOAD, driver));
+ }
+ }
+ else
+ {
+ ui_software_info *swinfo = (ui_software_info *)m_event->itemref;
+ if ((FPTR)swinfo > 3 && swinfo->startempty == 1)
+ {
+ if ((swinfo->driver->flags & MACHINE_TYPE_ARCADE) != 0)
+ ui_menu::stack_push(global_alloc_clear<ui_menu_dats>(machine(), container, UI_MAMEINFO_LOAD, swinfo->driver));
+ else
+ ui_menu::stack_push(global_alloc_clear<ui_menu_dats>(machine(), container, UI_MESSINFO_LOAD, swinfo->driver));
+ }
+ }
+ }
+
+ // handle UI_STORY
+ else if (m_event->iptkey == IPT_UI_STORY && enabled_dats)
+ {
+ if (main_filters::actual != FILTER_FAVORITE_GAME)
+ {
+ const game_driver *driver = (const game_driver *)m_event->itemref;
+ if ((FPTR)driver > 3)
+ ui_menu::stack_push(global_alloc_clear<ui_menu_dats>(machine(), container, UI_STORY_LOAD, driver));
+ }
+ else
+ {
+ ui_software_info *swinfo = (ui_software_info *)m_event->itemref;
+ if ((FPTR)swinfo > 3 && swinfo->startempty == 1)
+ ui_menu::stack_push(global_alloc_clear<ui_menu_dats>(machine(), container, UI_STORY_LOAD, swinfo->driver));
+ }
+ }
+
+ // handle UI_SYSINFO
+ else if (m_event->iptkey == IPT_UI_SYSINFO && enabled_dats)
+ {
+ if (main_filters::actual != FILTER_FAVORITE_GAME)
+ {
+ const game_driver *driver = (const game_driver *)m_event->itemref;
+ if ((FPTR)driver > 3)
+ ui_menu::stack_push(global_alloc_clear<ui_menu_dats>(machine(), container, UI_SYSINFO_LOAD, driver));
+ }
+ else
+ {
+ ui_software_info *swinfo = (ui_software_info *)m_event->itemref;
+ if ((FPTR)swinfo > 3 && swinfo->startempty == 1)
+ ui_menu::stack_push(global_alloc_clear<ui_menu_dats>(machine(), container, UI_SYSINFO_LOAD, swinfo->driver));
+ }
+ }
+
+ // handle UI_COMMAND
+ else if (m_event->iptkey == IPT_UI_COMMAND && enabled_dats)
+ {
+ if (main_filters::actual != FILTER_FAVORITE_GAME)
+ {
+ const game_driver *driver = (const game_driver *)m_event->itemref;
+ if ((FPTR)driver > 3)
+ ui_menu::stack_push(global_alloc_clear<ui_menu_command>(machine(), container, driver));
+ }
+ else
+ {
+ ui_software_info *swinfo = (ui_software_info *)m_event->itemref;
+ if ((FPTR)swinfo > 3 && swinfo->startempty == 1)
+ ui_menu::stack_push(global_alloc_clear<ui_menu_command>(machine(), container, swinfo->driver));
+ }
+ }
+
+ // handle UI_FAVORITES
+ else if (m_event->iptkey == IPT_UI_FAVORITES)
+ {
+ if (main_filters::actual != FILTER_FAVORITE_GAME)
+ {
+ const game_driver *driver = (const game_driver *)m_event->itemref;
+ if ((FPTR)driver > 3)
+ {
+ if (!machine().favorite().isgame_favorite(driver))
+ {
+ machine().favorite().add_favorite_game(driver);
+ machine().popmessage("%s\n added to favorites list.", driver->description);
+ }
+
+ else
+ {
+ machine().favorite().remove_favorite_game();
+ machine().popmessage("%s\n removed from favorites list.", driver->description);
+ }
+ }
+ }
+ else
+ {
+ ui_software_info *swinfo = (ui_software_info *)m_event->itemref;
+ if ((FPTR)swinfo > 3)
+ {
+ machine().popmessage("%s\n removed from favorites list.", swinfo->longname.c_str());
+ machine().favorite().remove_favorite_game(*swinfo);
+ reset(UI_MENU_RESET_SELECT_FIRST);
+ }
+ }
+ }
+
+ // handle UI_EXPORT
+ else if (m_event->iptkey == IPT_UI_EXPORT)
+ inkey_export();
+
+ // handle UI_AUDIT_FAST
+ else if (m_event->iptkey == IPT_UI_AUDIT_FAST && !m_unavailsortedlist.empty())
+ ui_menu::stack_push(global_alloc_clear<ui_menu_audit>(machine(), container, m_availsortedlist, m_unavailsortedlist, 1));
+
+ // handle UI_AUDIT_ALL
+ else if (m_event->iptkey == IPT_UI_AUDIT_ALL)
+ ui_menu::stack_push(global_alloc_clear<ui_menu_audit>(machine(), container, m_availsortedlist, m_unavailsortedlist, 2));
+
+ // typed characters append to the buffer
+ else if (m_event->iptkey == IPT_SPECIAL)
+ inkey_special(m_event);
+
+ else if (m_event->iptkey == IPT_OTHER)
+ check_filter = true;
+ }
+
+ if (m_event != nullptr && m_event->itemref == nullptr)
{
- // audit the game first to see if we're going to work
- driver_enumerator enumerator(machine().options(), *driver);
- enumerator.next();
- media_auditor auditor(enumerator);
- media_auditor::summary summary = auditor.audit_media(AUDIT_VALIDATE_FAST);
+ if (m_event->iptkey == IPT_SPECIAL && m_event->unichar == 0x09)
+ selected = m_prev_selected;
- // if everything looks good, schedule the new driver
- if (summary == media_auditor::CORRECT || summary == media_auditor::BEST_AVAILABLE || summary == media_auditor::NONE_NEEDED)
+ // handle UI_UP_FILTER
+ else if (m_event->iptkey == IPT_UI_UP_FILTER && main_filters::actual > FILTER_FIRST)
{
- machine().manager().schedule_new_driver(*driver);
- machine().schedule_hard_reset();
- ui_menu::stack_reset(machine());
+ l_hover = main_filters::actual - 1;
+ check_filter = true;
}
- // otherwise, display an error
+ // handle UI_DOWN_FILTER
+ else if (m_event->iptkey == IPT_UI_DOWN_FILTER && main_filters::actual < FILTER_LAST)
+ {
+ l_hover = main_filters::actual + 1;
+ check_filter = true;
+ }
+ else if (m_event->iptkey == IPT_OTHER)
+ check_filter = true;
+ }
+
+ // if we're in an error state, overlay an error message
+ if (ui_error)
+ machine().ui().draw_text_box(container, "The selected game is missing one or more required ROM or CHD images. "
+ "Please select a different game.\n\nPress any key (except ESC) to continue.", JUSTIFY_CENTER, 0.5f, 0.5f, UI_RED_COLOR);
+
+ // handle filters selection from key shortcuts
+ if (check_filter)
+ {
+ m_search[0] = '\0';
+ if (l_hover == FILTER_CATEGORY)
+ {
+ main_filters::actual = l_hover;
+ ui_menu::stack_push(global_alloc_clear<ui_menu_game_options>(machine(), container));
+ }
+ else if (l_hover == FILTER_CUSTOM)
+ {
+ main_filters::actual = l_hover;
+ ui_menu::stack_push(global_alloc_clear<ui_menu_custom_filter>(machine(), container, true));
+ }
+ else if (l_hover == FILTER_MANUFACTURER)
+ ui_menu::stack_push(global_alloc_clear<ui_menu_selector>(machine(), container, c_mnfct::ui, c_mnfct::actual, SELECTOR_GAME, l_hover));
+ else if (l_hover == FILTER_YEAR)
+ ui_menu::stack_push(global_alloc_clear<ui_menu_selector>(machine(), container, c_year::ui, c_year::actual, SELECTOR_GAME, l_hover));
+ else if (l_hover == FILTER_SCREEN)
+ {
+ std::vector<std::string> text(screen_filters::length);
+ for (int x = 0; x < screen_filters::length; ++x)
+ text[x] = screen_filters::text[x];
+
+ ui_menu::stack_push(global_alloc_clear<ui_menu_selector>(machine(), container, text, screen_filters::actual, SELECTOR_GAME, l_hover));
+ }
else
{
- reset(UI_MENU_RESET_REMEMBER_REF);
- m_error = true;
+ if (l_hover >= FILTER_ALL)
+ main_filters::actual = l_hover;
+ reset(UI_MENU_RESET_SELECT_FIRST);
}
}
}
-
//-------------------------------------------------
-// inkey_cancel
+// populate
//-------------------------------------------------
-void ui_menu_select_game::inkey_cancel(const ui_menu_event *menu_event)
+void ui_menu_select_game::populate()
{
- // escape pressed with non-empty text clears the text
- if (m_search[0] != 0)
+ ui_globals::redraw_icon = true;
+ ui_globals::switch_image = true;
+ int old_item_selected = -1;
+
+ if (main_filters::actual != FILTER_FAVORITE_GAME)
{
- // since we have already been popped, we must recreate ourself from scratch
- ui_menu::stack_push(auto_alloc_clear(machine(), <ui_menu_select_game>(machine(), container, nullptr)));
- }
-}
+ // if search is not empty, find approximate matches
+ if (m_search[0] != 0 && !no_active_search())
+ populate_search();
+ else
+ {
+ // reset search string
+ m_search[0] = '\0';
+ m_displaylist.clear();
+ m_tmp.clear();
+
+ // if filter is set on category, build category list
+ switch (main_filters::actual)
+ {
+ case FILTER_CATEGORY:
+ build_category();
+ break;
+ case FILTER_MANUFACTURER:
+ build_list(m_tmp, c_mnfct::ui[c_mnfct::actual].c_str());
+ break;
-//-------------------------------------------------
-// inkey_special - typed characters append to the buffer
-//-------------------------------------------------
+ case FILTER_YEAR:
+ build_list(m_tmp, c_year::ui[c_year::actual].c_str());
+ break;
-void ui_menu_select_game::inkey_special(const ui_menu_event *menu_event)
-{
- // typed characters append to the buffer
- int buflen = strlen(m_search);
+ case FILTER_SCREEN:
+ case FILTER_STEREO:
+ case FILTER_SAMPLES:
+ case FILTER_NOSAMPLES:
+ case FILTER_CHD:
+ case FILTER_NOCHD:
+ build_from_cache(m_tmp, screen_filters::actual);
+ break;
- // if it's a backspace and we can handle it, do so
- if ((menu_event->unichar == 8 || menu_event->unichar == 0x7f) && buflen > 0)
+ case FILTER_CUSTOM:
+ build_custom();
+ break;
+
+ default:
+ build_list(m_tmp);
+ break;
+ }
+
+ // iterate over entries
+ for (size_t curitem = 0; curitem < m_displaylist.size(); ++curitem)
+ {
+ UINT32 flags_ui = MENU_FLAG_UI | MENU_FLAG_LEFT_ARROW | MENU_FLAG_RIGHT_ARROW;
+
+ if (old_item_selected == -1 && !reselect_last::driver.empty() && m_displaylist[curitem]->name == reselect_last::driver)
+ old_item_selected = curitem;
+
+ bool cloneof = strcmp(m_displaylist[curitem]->parent, "0");
+ if (cloneof)
+ {
+ int cx = driver_list::find(m_displaylist[curitem]->parent);
+ if (cx != -1 && ((driver_list::driver(cx).flags & MACHINE_IS_BIOS_ROOT) != 0))
+ cloneof = false;
+ }
+ if (cloneof)
+ flags_ui |= MENU_FLAG_INVERT;
+
+ item_append(m_displaylist[curitem]->description, nullptr, flags_ui, (void *)m_displaylist[curitem]);
+ }
+ }
+ }
+ // populate favorites list
+ else
{
- *(char *)utf8_previous_char(&m_search[buflen]) = 0;
- m_rerandomize = true;
- reset(UI_MENU_RESET_SELECT_FIRST);
+ m_search[0] = '\0';
+ int curitem = 0;
+ // iterate over entries
+ for (auto & mfavorite : machine().favorite().m_list)
+ {
+ UINT32 flags_ui = MENU_FLAG_UI | MENU_FLAG_LEFT_ARROW | MENU_FLAG_RIGHT_ARROW | MENU_FLAG_UI_FAVORITE;
+ if (mfavorite.startempty == 1)
+ {
+ if (old_item_selected == -1 && !reselect_last::driver.empty() && mfavorite.shortname == reselect_last::driver)
+ old_item_selected = curitem;
+
+ bool cloneof = strcmp(mfavorite.driver->parent, "0");
+ if (cloneof)
+ {
+ int cx = driver_list::find(mfavorite.driver->parent);
+ if (cx != -1 && ((driver_list::driver(cx).flags & MACHINE_IS_BIOS_ROOT) != 0))
+ cloneof = false;
+ }
+ if (cloneof)
+ flags_ui |= MENU_FLAG_INVERT;
+
+ item_append(mfavorite.longname.c_str(), nullptr, flags_ui, (void *)&mfavorite);
+ }
+ else
+ {
+ if (old_item_selected == -1 && !reselect_last::driver.empty() && mfavorite.shortname == reselect_last::driver)
+ old_item_selected = curitem;
+ item_append(mfavorite.longname.c_str(), mfavorite.devicetype.c_str(),
+ mfavorite.parentname.empty() ? flags_ui : (MENU_FLAG_INVERT | flags_ui), (void *)&mfavorite);
+ }
+ curitem++;
+ }
}
- // if it's any other key and we're not maxed out, update
- else if (menu_event->unichar >= ' ' && menu_event->unichar < 0x7f)
+ // add special items
+ item_append(MENU_SEPARATOR_ITEM, nullptr, MENU_FLAG_UI, nullptr);
+ item_append("Configure Options", nullptr, MENU_FLAG_UI, (void *)(FPTR)1);
+ item_append("Configure Directories", nullptr, MENU_FLAG_UI, (void *)(FPTR)2);
+ item_append("Save Configuration", nullptr, MENU_FLAG_UI, (void *)(FPTR)3);
+
+ // configure the custom rendering
+ customtop = 3.0f * machine().ui().get_line_height() + 5.0f * UI_BOX_TB_BORDER;
+ custombottom = 5.0f * machine().ui().get_line_height() + 3.0f * UI_BOX_TB_BORDER;
+
+ // reselect prior game launched, if any
+ if (old_item_selected != -1)
{
- buflen += utf8_from_uchar(&m_search[buflen], ARRAY_LENGTH(m_search) - buflen, menu_event->unichar);
- m_search[buflen] = 0;
- reset(UI_MENU_RESET_SELECT_FIRST);
+ selected = old_item_selected;
+ if (ui_globals::visible_main_lines == 0)
+ top_line = (selected != 0) ? selected - 1 : 0;
+ else
+ top_line = selected - (ui_globals::visible_main_lines / 2);
+
+ if (reselect_last::software.empty())
+ reselect_last::reset();
}
+ else
+ reselect_last::reset();
}
-
//-------------------------------------------------
-// populate - populate the game select menu
+// build a list of available drivers
//-------------------------------------------------
-void ui_menu_select_game::populate()
+void ui_menu_select_game::build_available_list()
{
- int matchcount;
- int curitem;
-
- for (curitem = matchcount = 0; m_driverlist[curitem] != nullptr && matchcount < VISIBLE_GAMES_IN_LIST; curitem++)
- if (!(m_driverlist[curitem]->flags & MACHINE_NO_STANDALONE))
- matchcount++;
-
- // if nothing there, add a single multiline item and return
- if (matchcount == 0)
- {
- std::string txt;
- strprintf(txt, "No %s found. Please check the rompath specified in the %s.ini file.\n\n"
- "If this is your first time using %s, please see the config.txt file in "
- "the docs directory for information on configuring %s.",
- emulator_info::get_gamesnoun(),
- emulator_info::get_configname(),
- emulator_info::get_appname(),emulator_info::get_appname() );
- item_append(txt.c_str(), nullptr, MENU_FLAG_MULTILINE | MENU_FLAG_REDTEXT, nullptr);
- return;
- }
+ int m_total = driver_list::total();
+ std::vector<bool> m_included(m_total, false);
- // otherwise, rebuild the match list
- assert(m_drivlist != nullptr);
- if (m_search[0] != 0 || m_matchlist[0] == -1 || m_rerandomize)
- m_drivlist->find_approximate_matches(m_search, matchcount, m_matchlist);
- m_rerandomize = false;
+ // open a path to the ROMs and find them in the array
+ file_enumerator path(machine().options().media_path());
+ const osd_directory_entry *dir;
- // iterate over entries
- for (curitem = 0; curitem < matchcount; curitem++)
+ // iterate while we get new objects
+ while ((dir = path.next()) != nullptr)
{
- int curmatch = m_matchlist[curitem];
- if (curmatch != -1)
+ char drivername[50];
+ char *dst = drivername;
+ const char *src;
+
+ // build a name for it
+ for (src = dir->name; *src != 0 && *src != '.' && dst < &drivername[ARRAY_LENGTH(drivername) - 1]; ++src)
+ *dst++ = tolower((UINT8) * src);
+
+ *dst = 0;
+ int drivnum = driver_list::find(drivername);
+ if (drivnum != -1 && !m_included[drivnum])
{
- int cloneof = m_drivlist->non_bios_clone(curmatch);
- item_append(m_drivlist->driver(curmatch).name, m_drivlist->driver(curmatch).description, (cloneof == -1) ? 0 : MENU_FLAG_INVERT, (void *)&m_drivlist->driver(curmatch));
+ m_availsortedlist.push_back(&driver_list::driver(drivnum));
+ m_included[drivnum] = true;
}
}
- // if we're forced into this, allow general input configuration as well
- if (ui_menu::stack_has_special_main_menu())
- {
- item_append(MENU_SEPARATOR_ITEM, nullptr, 0, nullptr);
- item_append("Configure General Inputs", nullptr, 0, (void *)1);
- }
+ // now check and include NONE_NEEDED
+ for (int x = 0; x < m_total; ++x)
+ if (!m_included[x])
+ {
+ if (&driver_list::driver(x) == &GAME_NAME(___empty))
+ continue;
- // configure the custom rendering
- customtop = machine().ui().get_line_height() + 3.0f * UI_BOX_TB_BORDER;
- custombottom = 4.0f * machine().ui().get_line_height() + 3.0f * UI_BOX_TB_BORDER;
-}
+ const rom_entry *rom = driver_list::driver(x).rom;
+ if (ROMENTRY_ISREGION(rom) && ROMENTRY_ISEND(++rom))
+ {
+ m_availsortedlist.push_back(&driver_list::driver(x));
+ m_included[x] = true;
+ }
+ }
+
+ // sort
+ std::stable_sort(m_availsortedlist.begin(), m_availsortedlist.end(), sort_game_list);
+ // now build the unavailable list
+ for (int x = 0; x < m_total; ++x)
+ if (!m_included[x] && &driver_list::driver(x) != &GAME_NAME(___empty))
+ m_unavailsortedlist.push_back(&driver_list::driver(x));
+
+ // sort
+ std::stable_sort(m_unavailsortedlist.begin(), m_unavailsortedlist.end(), sort_game_list);
+}
//-------------------------------------------------
-// custom_render - perform our special rendering
+// perform our special rendering
//-------------------------------------------------
void ui_menu_select_game::custom_render(void *selectedref, float top, float bottom, float origx1, float origy1, float origx2, float origy2)
{
- const game_driver *driver;
- float width, maxwidth;
- float x1, y1, x2, y2;
+ const game_driver *driver = nullptr;
+ ui_software_info *swinfo = nullptr;
+ float width, maxwidth = origx2 - origx1;
std::string tempbuf[5];
- rgb_t color;
- int line;
+ rgb_t color = UI_BACKGROUND_COLOR;
+ bool isstar = false;
+ ui_manager &mui = machine().ui();
+ float tbarspace = mui.get_line_height();
+
+ strprintf(tempbuf[0], "MAME %s ( %d / %d machines (%d BIOS) )", bare_build_version, visible_items, (driver_list::total() - 1), m_isabios + m_issbios);
+ std::string filtered;
+
+ if (main_filters::actual == FILTER_CATEGORY && !machine().inifile().ini_index.empty())
+ {
+ std::string s_file(machine().inifile().actual_file());
+ std::string s_category(machine().inifile().actual_category());
+ filtered.assign(main_filters::text[main_filters::actual]).append(" (").append(s_file).append(" - ").append(s_category).append(") -");
+ }
+
+ else if (main_filters::actual == FILTER_MANUFACTURER)
+ filtered.assign(main_filters::text[main_filters::actual]).append(" (").append(c_mnfct::ui[c_mnfct::actual]).append(") -");
+
+ else if (main_filters::actual == FILTER_YEAR)
+ filtered.assign(main_filters::text[main_filters::actual]).append(" (").append(c_year::ui[c_year::actual]).append(") -");
+
+ else if (main_filters::actual == FILTER_SCREEN)
+ filtered.assign(main_filters::text[main_filters::actual]).append(" (").append(screen_filters::text[screen_filters::actual]).append(") -");
// display the current typeahead
- if (m_search[0] != 0)
- strprintf(tempbuf[0], "Type name or select: %s_", m_search);
+ if (no_active_search())
+ tempbuf[1].clear();
else
- strprintf(tempbuf[0],"Type name or select: (random)");
+ tempbuf[1].assign(filtered).append(" Search: ").append(m_search).append("_");
// get the size of the text
- machine().ui().draw_text_full(container, tempbuf[0].c_str(), 0.0f, 0.0f, 1.0f, JUSTIFY_CENTER, WRAP_TRUNCATE,
- DRAW_NONE, ARGB_WHITE, ARGB_BLACK, &width, nullptr);
- width += 2 * UI_BOX_LR_BORDER;
- maxwidth = MAX(width, origx2 - origx1);
+ for (int line = 0; line < 2; ++line)
+ {
+ mui.draw_text_full(container, tempbuf[line].c_str(), 0.0f, 0.0f, 1.0f, JUSTIFY_CENTER, WRAP_NEVER,
+ DRAW_NONE, ARGB_WHITE, ARGB_BLACK, &width, nullptr);
+ width += 2 * UI_BOX_LR_BORDER;
+ maxwidth = MAX(width, maxwidth);
+ }
// compute our bounds
- x1 = 0.5f - 0.5f * maxwidth;
- x2 = x1 + maxwidth;
- y1 = origy1 - top;
- y2 = origy1 - UI_BOX_TB_BORDER;
+ float x1 = 0.5f - 0.5f * maxwidth;
+ float x2 = x1 + maxwidth;
+ float y1 = origy1 - top;
+ float y2 = origy1 - 3.0f * UI_BOX_TB_BORDER - tbarspace;
// draw a box
- machine().ui().draw_outlined_box(container, x1, y1, x2, y2, UI_BACKGROUND_COLOR);
+ mui.draw_outlined_box(container, x1, y1, x2, y2, UI_BACKGROUND_COLOR);
// take off the borders
x1 += UI_BOX_LR_BORDER;
@@ -309,78 +854,135 @@ void ui_menu_select_game::custom_render(void *selectedref, float top, float bott
y1 += UI_BOX_TB_BORDER;
// draw the text within it
- machine().ui().draw_text_full(container, tempbuf[0].c_str(), x1, y1, x2 - x1, JUSTIFY_CENTER, WRAP_TRUNCATE,
- DRAW_NORMAL, UI_TEXT_COLOR, UI_TEXT_BG_COLOR, nullptr, nullptr);
+ for (int line = 0; line < 2; ++line)
+ {
+ mui.draw_text_full(container, tempbuf[line].c_str(), x1, y1, x2 - x1, JUSTIFY_CENTER, WRAP_NEVER,
+ DRAW_NORMAL, UI_TEXT_COLOR, UI_TEXT_BG_COLOR, nullptr, nullptr);
+ y1 += mui.get_line_height();
+ }
// determine the text to render below
- driver = ((FPTR)selectedref > 1) ? (const game_driver *)selectedref : nullptr;
- if ((FPTR)driver > 1)
+ if (main_filters::actual != FILTER_FAVORITE_GAME)
+ driver = ((FPTR)selectedref > 3) ? (const game_driver *)selectedref : nullptr;
+ else
{
- const char *gfxstat, *soundstat;
+ swinfo = ((FPTR)selectedref > 3) ? (ui_software_info *)selectedref : nullptr;
+ if (swinfo && swinfo->startempty == 1)
+ driver = swinfo->driver;
+ }
+
+ if ((FPTR)driver > 3)
+ {
+ isstar = machine().favorite().isgame_favorite(driver);
// first line is game name
- strprintf(tempbuf[0],"%-.100s", driver->description);
+ strprintf(tempbuf[0], "Romset: %-.100s", driver->name);
// next line is year, manufacturer
strprintf(tempbuf[1], "%s, %-.100s", driver->year, driver->manufacturer);
- // next line source path
- strprintf(tempbuf[2],"Driver: %-.100s", core_filename_extract_base(driver->source_file).c_str());
+ // next line is clone/parent status
+ int cloneof = driver_list::non_bios_clone(*driver);
+
+ if (cloneof != -1)
+ strprintf(tempbuf[2], "Driver is clone of: %-.100s", driver_list::driver(cloneof).description);
+ else
+ tempbuf[2] = "Driver is parent";
// next line is overall driver status
if (driver->flags & MACHINE_NOT_WORKING)
- tempbuf[3].assign("Overall: NOT WORKING");
+ tempbuf[3] = "Overall: NOT WORKING";
else if (driver->flags & MACHINE_UNEMULATED_PROTECTION)
- tempbuf[3].assign("Overall: Unemulated Protection");
+ tempbuf[3] = "Overall: Unemulated Protection";
else
- tempbuf[3].assign("Overall: Working");
+ tempbuf[3] = "Overall: Working";
// next line is graphics, sound status
if (driver->flags & (MACHINE_IMPERFECT_GRAPHICS | MACHINE_WRONG_COLORS | MACHINE_IMPERFECT_COLORS))
- gfxstat = "Imperfect";
+ tempbuf[4] = "Graphics: Imperfect, ";
else
- gfxstat = "OK";
+ tempbuf[4] = "Graphics: OK, ";
if (driver->flags & MACHINE_NO_SOUND)
- soundstat = "Unimplemented";
+ tempbuf[4].append("Sound: Unimplemented");
else if (driver->flags & MACHINE_IMPERFECT_SOUND)
- soundstat = "Imperfect";
+ tempbuf[4].append("Sound: Imperfect");
else
- soundstat = "OK";
+ tempbuf[4].append("Sound: OK");
- strprintf(tempbuf[4], "Gfx: %s, Sound: %s", gfxstat, soundstat);
+ color = UI_GREEN_COLOR;
+
+ if ((driver->flags & (MACHINE_IMPERFECT_GRAPHICS | MACHINE_WRONG_COLORS | MACHINE_IMPERFECT_COLORS
+ | MACHINE_NO_SOUND | MACHINE_IMPERFECT_SOUND)) != 0)
+ color = UI_YELLOW_COLOR;
+
+ if ((driver->flags & (MACHINE_NOT_WORKING | MACHINE_UNEMULATED_PROTECTION)) != 0)
+ color = UI_RED_COLOR;
}
- else
+
+ else if ((FPTR)swinfo > 3)
{
- const char *s = emulator_info::get_copyright();
- line = 0;
+ isstar = machine().favorite().isgame_favorite(*swinfo);
- // first line is version string
- strprintf(tempbuf[line++], "%s %s", emulator_info::get_appname(), build_version);
+ // first line is system
+ strprintf(tempbuf[0], "System: %-.100s", swinfo->driver->description);
- // output message
- while (line < ARRAY_LENGTH(tempbuf))
- {
- if (!(*s == 0 || *s == '\n'))
- tempbuf[line].push_back(*s);
+ // next line is year, publisher
+ strprintf(tempbuf[1], "%s, %-.100s", swinfo->year.c_str(), swinfo->publisher.c_str());
- if (*s == '\n')
- {
- line++;
- s++;
- } else if (*s != 0)
- s++;
- else
- line++;
+ // next line is parent/clone
+ if (!swinfo->parentname.empty())
+ strprintf(tempbuf[2], "Software is clone of: %-.100s", !swinfo->parentlongname.empty() ? swinfo->parentlongname.c_str() : swinfo->parentname.c_str());
+ else
+ tempbuf[2] = "Software is parent";
+
+ // next line is supported status
+ if (swinfo->supported == SOFTWARE_SUPPORTED_NO)
+ {
+ tempbuf[3] = "Supported: No";
+ color = UI_RED_COLOR;
+ }
+ else if (swinfo->supported == SOFTWARE_SUPPORTED_PARTIAL)
+ {
+ tempbuf[3] = "Supported: Partial";
+ color = UI_YELLOW_COLOR;
}
+ else
+ {
+ tempbuf[3] = "Supported: Yes";
+ color = UI_GREEN_COLOR;
+ }
+
+ // last line is romset name
+ strprintf(tempbuf[4], "romset: %-.100s", swinfo->shortname.c_str());
}
+ else
+ {
+ std::string copyright(emulator_info::get_copyright());
+ size_t found = copyright.find("\n");
+ tempbuf[0].clear();
+ tempbuf[1].assign(emulator_info::get_appname()).append(" ").append(build_version);
+ tempbuf[2] = copyright.substr(0, found);
+ tempbuf[3] = copyright.substr(found + 1);
+ tempbuf[4].clear();
+ }
+
+ // compute our bounds
+ x1 = 0.5f - 0.5f * maxwidth;
+ x2 = x1 + maxwidth;
+ y1 = y2;
+ y2 = origy1 - UI_BOX_TB_BORDER;
+
+ // draw toolbar
+ draw_toolbar(x1, y1, x2, y2);
// get the size of the text
maxwidth = origx2 - origx1;
- for (line = 0; line < 4; line++)
+
+ for (auto & elem : tempbuf)
{
- machine().ui().draw_text_full(container, tempbuf[line].c_str(), 0.0f, 0.0f, 1.0f, JUSTIFY_CENTER, WRAP_TRUNCATE,
- DRAW_NONE, ARGB_WHITE, ARGB_BLACK, &width, nullptr);
+ mui.draw_text_full(container, elem.c_str(), 0.0f, 0.0f, 1.0f, JUSTIFY_CENTER, WRAP_NEVER,
+ DRAW_NONE, ARGB_WHITE, ARGB_BLACK, &width, nullptr);
width += 2 * UI_BOX_LR_BORDER;
maxwidth = MAX(maxwidth, width);
}
@@ -392,47 +994,41 @@ void ui_menu_select_game::custom_render(void *selectedref, float top, float bott
y2 = origy2 + bottom;
// draw a box
- color = UI_BACKGROUND_COLOR;
- if (driver != nullptr)
- color = UI_GREEN_COLOR;
- if (driver != nullptr && (driver->flags & (MACHINE_IMPERFECT_GRAPHICS | MACHINE_WRONG_COLORS | MACHINE_IMPERFECT_COLORS | MACHINE_NO_SOUND | MACHINE_IMPERFECT_SOUND)) != 0)
- color = UI_YELLOW_COLOR;
- if (driver != nullptr && (driver->flags & (MACHINE_NOT_WORKING | MACHINE_UNEMULATED_PROTECTION)) != 0)
- color = UI_RED_COLOR;
- machine().ui().draw_outlined_box(container, x1, y1, x2, y2, color);
+ mui.draw_outlined_box(container, x1, y1, x2, y2, color);
// take off the borders
x1 += UI_BOX_LR_BORDER;
x2 -= UI_BOX_LR_BORDER;
y1 += UI_BOX_TB_BORDER;
+ // is favorite? draw the star
+ if (isstar)
+ draw_star(x1, y1);
+
// draw all lines
- for (line = 0; line < 4; line++)
+ for (auto & elem : tempbuf)
{
- machine().ui().draw_text_full(container, tempbuf[line].c_str(), x1, y1, x2 - x1, JUSTIFY_CENTER, WRAP_TRUNCATE,
- DRAW_NORMAL, UI_TEXT_COLOR, UI_TEXT_BG_COLOR, nullptr, nullptr);
- y1 += machine().ui().get_line_height();
+ mui.draw_text_full(container, elem.c_str(), x1, y1, x2 - x1, JUSTIFY_CENTER, WRAP_NEVER,
+ DRAW_NORMAL, UI_TEXT_COLOR, UI_TEXT_BG_COLOR, nullptr, nullptr);
+ y1 += mui.get_line_height();
}
}
-
//-------------------------------------------------
-// force_game_select - force the game
-// select menu to be visible and inescapable
+// force the game select menu to be visible
+// and inescapable
//-------------------------------------------------
void ui_menu_select_game::force_game_select(running_machine &machine, render_container *container)
{
- char *gamename = (char *)machine.options().system_name();
-
// reset the menu stack
ui_menu::stack_reset(machine);
// add the quit entry followed by the game select entry
- ui_menu *quit = auto_alloc_clear(machine, <ui_menu_quit_game>(machine, container));
+ ui_menu *quit = global_alloc_clear<ui_menu_quit_game>(machine, container);
quit->set_special_main_menu(true);
ui_menu::stack_push(quit);
- ui_menu::stack_push(auto_alloc_clear(machine, <ui_menu_select_game>(machine, container, gamename)));
+ ui_menu::stack_push(global_alloc_clear<ui_menu_select_game>(machine, container, nullptr));
// force the menus on
machine.ui().show_menu();
@@ -440,3 +1036,1602 @@ void ui_menu_select_game::force_game_select(running_machine &machine, render_con
// make sure MAME is paused
machine.pause();
}
+
+//-------------------------------------------------
+// handle select key event
+//-------------------------------------------------
+
+void ui_menu_select_game::inkey_select(const ui_menu_event *m_event)
+{
+ const game_driver *driver = (const game_driver *)m_event->itemref;
+
+ // special case for configure options
+ if ((FPTR)driver == 1)
+ ui_menu::stack_push(global_alloc_clear<ui_menu_game_options>(machine(), container));
+ // special case for configure directory
+ else if ((FPTR)driver == 2)
+ ui_menu::stack_push(global_alloc_clear<ui_menu_directory>(machine(), container));
+ // anything else is a driver
+ else if ((FPTR)driver == 3) {
+ save_main_option(machine());
+ }
+ // anything else is a driver
+ else
+ {
+ // audit the game first to see if we're going to work
+ driver_enumerator enumerator(machine().options(), *driver);
+ enumerator.next();
+ media_auditor auditor(enumerator);
+ media_auditor::summary summary = auditor.audit_media(AUDIT_VALIDATE_FAST);
+
+ // if everything looks good, schedule the new driver
+ if (summary == media_auditor::CORRECT || summary == media_auditor::BEST_AVAILABLE || summary == media_auditor::NONE_NEEDED)
+ {
+ if ((driver->flags & MACHINE_TYPE_ARCADE) == 0)
+ {
+ software_list_device_iterator iter(enumerator.config().root_device());
+ for (software_list_device *swlistdev = iter.first(); swlistdev != nullptr; swlistdev = iter.next())
+ if (swlistdev->first_software_info() != nullptr)
+ {
+ ui_menu::stack_push(global_alloc_clear<ui_menu_select_software>(machine(), container, driver));
+ return;
+ }
+ }
+
+ std::vector<s_bios> biosname;
+ if (!machine().ui().options().skip_bios_menu() && has_multiple_bios(driver, biosname))
+ ui_menu::stack_push(global_alloc_clear<ui_bios_selection>(machine(), container, biosname, (void *)driver, false, false));
+ else
+ {
+ reselect_last::driver = driver->name;
+ reselect_last::software.clear();
+ reselect_last::swlist.clear();
+ machine().manager().schedule_new_driver(*driver);
+ machine().schedule_hard_reset();
+ ui_menu::stack_reset(machine());
+ }
+ }
+ // otherwise, display an error
+ else
+ {
+ reset(UI_MENU_RESET_REMEMBER_REF);
+ ui_error = true;
+ }
+ }
+}
+
+//-------------------------------------------------
+// handle select key event for favorites menu
+//-------------------------------------------------
+
+void ui_menu_select_game::inkey_select_favorite(const ui_menu_event *m_event)
+{
+ ui_software_info *ui_swinfo = (ui_software_info *)m_event->itemref;
+ ui_options &mopt = machine().ui().options();
+
+ // special case for configure options
+ if ((FPTR)ui_swinfo == 1)
+ ui_menu::stack_push(global_alloc_clear<ui_menu_game_options>(machine(), container));
+
+ // special case for configure directory
+ else if ((FPTR)ui_swinfo == 2)
+ ui_menu::stack_push(global_alloc_clear<ui_menu_directory>(machine(), container));
+ else if ((FPTR)ui_swinfo == 3)
+ {
+ save_main_option(machine());
+ }
+ else if (ui_swinfo->startempty == 1)
+ {
+ // audit the game first to see if we're going to work
+ driver_enumerator enumerator(machine().options(), *ui_swinfo->driver);
+ enumerator.next();
+ media_auditor auditor(enumerator);
+ media_auditor::summary summary = auditor.audit_media(AUDIT_VALIDATE_FAST);
+
+ // if everything looks good, schedule the new driver
+ if (summary == media_auditor::CORRECT || summary == media_auditor::BEST_AVAILABLE || summary == media_auditor::NONE_NEEDED)
+ {
+ std::vector<s_bios> biosname;
+ if (!mopt.skip_bios_menu() && has_multiple_bios(ui_swinfo->driver, biosname))
+ ui_menu::stack_push(global_alloc_clear<ui_bios_selection>(machine(), container, biosname, (void *)ui_swinfo->driver, false, false));
+ else
+ {
+ reselect_last::driver = ui_swinfo->driver->name;
+ reselect_last::software.clear();
+ reselect_last::swlist.clear();
+ reselect_last::set(true);
+ machine().manager().schedule_new_driver(*ui_swinfo->driver);
+ machine().schedule_hard_reset();
+ ui_menu::stack_reset(machine());
+ }
+ }
+
+ // otherwise, display an error
+ else
+ {
+ reset(UI_MENU_RESET_REMEMBER_REF);
+ ui_error = true;
+ }
+ }
+ else
+ {
+ // first validate
+ driver_enumerator drv(machine().options(), *ui_swinfo->driver);
+ media_auditor auditor(drv);
+ drv.next();
+ software_list_device *swlist = software_list_device::find_by_name(drv.config(), ui_swinfo->listname.c_str());
+ software_info *swinfo = swlist->find(ui_swinfo->shortname.c_str());
+ media_auditor::summary summary = auditor.audit_software(swlist->list_name(), swinfo, AUDIT_VALIDATE_FAST);
+ if (summary == media_auditor::CORRECT || summary == media_auditor::BEST_AVAILABLE || summary == media_auditor::NONE_NEEDED)
+ {
+ std::vector<s_bios> biosname;
+ if (!mopt.skip_bios_menu() && has_multiple_bios(ui_swinfo->driver, biosname))
+ {
+ ui_menu::stack_push(global_alloc_clear<ui_bios_selection>(machine(), container, biosname, (void *)ui_swinfo, true, false));
+ return;
+ }
+ else if (!mopt.skip_parts_menu() && swinfo->has_multiple_parts(ui_swinfo->interface.c_str()))
+ {
+ std::unordered_map<std::string, std::string> parts;
+ for (const software_part *swpart = swinfo->first_part(); swpart != nullptr; swpart = swpart->next())
+ {
+ if (swpart->matches_interface(ui_swinfo->interface.c_str()))
+ {
+ std::string menu_part_name(swpart->name());
+ if (swpart->feature("part_id") != nullptr)
+ menu_part_name.assign("(").append(swpart->feature("part_id")).append(")");
+ parts.emplace(swpart->name(), menu_part_name);
+ }
+ }
+ ui_menu::stack_push(global_alloc_clear<ui_software_parts>(machine(), container, parts, ui_swinfo));
+ return;
+ }
+
+ std::string error_string;
+ std::string string_list = std::string(ui_swinfo->listname).append(":").append(ui_swinfo->shortname).append(":").append(ui_swinfo->part).append(":").append(ui_swinfo->instance);
+ mopt.set_value(OPTION_SOFTWARENAME, string_list.c_str(), OPTION_PRIORITY_CMDLINE, error_string);
+ std::string snap_list = std::string(ui_swinfo->listname).append(PATH_SEPARATOR).append(ui_swinfo->shortname);
+ mopt.set_value(OPTION_SNAPNAME, snap_list.c_str(), OPTION_PRIORITY_CMDLINE, error_string);
+ reselect_last::driver = drv.driver().name;
+ reselect_last::software = ui_swinfo->shortname;
+ reselect_last::swlist = ui_swinfo->listname;
+ machine().manager().schedule_new_driver(drv.driver());
+ machine().schedule_hard_reset();
+ ui_menu::stack_reset(machine());
+ }
+ // otherwise, display an error
+ else
+ {
+ reset(UI_MENU_RESET_REMEMBER_POSITION);
+ ui_error = true;
+ }
+ }
+}
+
+//-------------------------------------------------
+// returns if the search can be activated
+//-------------------------------------------------
+
+inline bool ui_menu_select_game::no_active_search()
+{
+ return (main_filters::actual == FILTER_FAVORITE_GAME);
+}
+
+//-------------------------------------------------
+// handle special key event
+//-------------------------------------------------
+
+void ui_menu_select_game::inkey_special(const ui_menu_event *m_event)
+{
+ int buflen = strlen(m_search);
+
+ // if it's a backspace and we can handle it, do so
+ if (((m_event->unichar == 8 || m_event->unichar == 0x7f) && buflen > 0) && !no_active_search())
+ {
+ *(char *)utf8_previous_char(&m_search[buflen]) = 0;
+ reset(UI_MENU_RESET_SELECT_FIRST);
+ }
+
+ // if it's any other key and we're not maxed out, update
+ else if ((m_event->unichar >= ' ' && m_event->unichar < 0x7f) && !no_active_search())
+ {
+ buflen += utf8_from_uchar(&m_search[buflen], ARRAY_LENGTH(m_search) - buflen, m_event->unichar);
+ m_search[buflen] = 0;
+ reset(UI_MENU_RESET_SELECT_FIRST);
+ }
+
+ // Tab key
+ else if (m_event->unichar == 0x09)
+ {
+ // if the selection is in the main screen, save and go to submenu
+ if (selected <= visible_items)
+ {
+ m_prev_selected = selected;
+ selected = visible_items + 1;
+ }
+
+ // otherwise, retrieve the previous position
+ else
+ selected = m_prev_selected;
+ }
+}
+
+//-------------------------------------------------
+// build list
+//-------------------------------------------------
+
+void ui_menu_select_game::build_list(std::vector<const game_driver *> &s_drivers, const char *filter_text, int filter, bool bioscheck)
+{
+ int cx = 0;
+ bool cloneof = false;
+
+ if (s_drivers.empty())
+ {
+ filter = main_filters::actual;
+ if (filter == FILTER_AVAILABLE)
+ s_drivers = m_availsortedlist;
+ else if (filter == FILTER_UNAVAILABLE)
+ s_drivers = m_unavailsortedlist;
+ else
+ s_drivers = m_sortedlist;
+ }
+
+ for (auto & s_driver : s_drivers)
+ {
+ if (!bioscheck && filter != FILTER_BIOS && (s_driver->flags & MACHINE_IS_BIOS_ROOT) != 0)
+ continue;
+
+ switch (filter)
+ {
+ case FILTER_ALL:
+ case FILTER_AVAILABLE:
+ case FILTER_UNAVAILABLE:
+ m_displaylist.push_back(s_driver);
+ break;
+
+ case FILTER_WORKING:
+ if (!(s_driver->flags & MACHINE_NOT_WORKING))
+ m_displaylist.push_back(s_driver);
+ break;
+
+ case FILTER_NOT_MECHANICAL:
+ if (!(s_driver->flags & MACHINE_MECHANICAL))
+ m_displaylist.push_back(s_driver);
+ break;
+
+ case FILTER_BIOS:
+ if (s_driver->flags & MACHINE_IS_BIOS_ROOT)
+ m_displaylist.push_back(s_driver);
+ break;
+
+ case FILTER_PARENT:
+ case FILTER_CLONES:
+ cloneof = strcmp(s_driver->parent, "0");
+ if (cloneof)
+ {
+ cx = driver_list::find(s_driver->parent);
+ if (cx != -1 && ((driver_list::driver(cx).flags & MACHINE_IS_BIOS_ROOT) != 0))
+ cloneof = false;
+ }
+
+ if (filter == FILTER_CLONES && cloneof)
+ m_displaylist.push_back(s_driver);
+ else if (filter == FILTER_PARENT && !cloneof)
+ m_displaylist.push_back(s_driver);
+ break;
+
+ case FILTER_NOT_WORKING:
+ if (s_driver->flags & MACHINE_NOT_WORKING)
+ m_displaylist.push_back(s_driver);
+ break;
+
+ case FILTER_MECHANICAL:
+ if (s_driver->flags & MACHINE_MECHANICAL)
+ m_displaylist.push_back(s_driver);
+ break;
+
+ case FILTER_SAVE:
+ if (s_driver->flags & MACHINE_SUPPORTS_SAVE)
+ m_displaylist.push_back(s_driver);
+ break;
+
+ case FILTER_NOSAVE:
+ if (!(s_driver->flags & MACHINE_SUPPORTS_SAVE))
+ m_displaylist.push_back(s_driver);
+ break;
+
+ case FILTER_YEAR:
+ if (!core_stricmp(filter_text, s_driver->year))
+ m_displaylist.push_back(s_driver);
+ break;
+
+ case FILTER_VERTICAL:
+ if (s_driver->flags & ORIENTATION_SWAP_XY)
+ m_displaylist.push_back(s_driver);
+ break;
+
+ case FILTER_HORIZONTAL:
+ if (!(s_driver->flags & ORIENTATION_SWAP_XY))
+ m_displaylist.push_back(s_driver);
+ break;
+
+ case FILTER_MANUFACTURER:
+ {
+ std::string name = c_mnfct::getname(s_driver->manufacturer);
+ if (!core_stricmp(filter_text, name.c_str()))
+ m_displaylist.push_back(s_driver);
+ break;
+ }
+ }
+ }
+}
+
+//-------------------------------------------------
+// build custom display list
+//-------------------------------------------------
+
+void ui_menu_select_game::build_custom()
+{
+ std::vector<const game_driver *> s_drivers;
+ bool bioscheck = false;
+
+ if (custfltr::main == FILTER_AVAILABLE)
+ s_drivers = m_availsortedlist;
+ else if (custfltr::main == FILTER_UNAVAILABLE)
+ s_drivers = m_unavailsortedlist;
+ else
+ s_drivers = m_sortedlist;
+
+ for (auto & elem : s_drivers)
+ {
+ m_displaylist.push_back(elem);
+ }
+
+ for (int count = 1; count <= custfltr::numother; ++count)
+ {
+ int filter = custfltr::other[count];
+ if (filter == FILTER_BIOS)
+ bioscheck = true;
+ }
+
+ for (int count = 1; count <= custfltr::numother; ++count)
+ {
+ int filter = custfltr::other[count];
+ s_drivers = m_displaylist;
+ m_displaylist.clear();
+
+ switch (filter)
+ {
+ case FILTER_YEAR:
+ build_list(s_drivers, c_year::ui[custfltr::year[count]].c_str(), filter, bioscheck);
+ break;
+ case FILTER_MANUFACTURER:
+ build_list(s_drivers, c_mnfct::ui[custfltr::mnfct[count]].c_str(), filter, bioscheck);
+ break;
+ case FILTER_SCREEN:
+ build_from_cache(s_drivers, custfltr::screen[count], filter, bioscheck);
+ break;
+ case FILTER_CHD:
+ case FILTER_NOCHD:
+ case FILTER_SAMPLES:
+ case FILTER_NOSAMPLES:
+ case FILTER_STEREO:
+ build_from_cache(s_drivers, 0, filter, bioscheck);
+ break;
+ default:
+ build_list(s_drivers, nullptr, filter, bioscheck);
+ break;
+ }
+ }
+}
+
+//-------------------------------------------------
+// build category list
+//-------------------------------------------------
+
+void ui_menu_select_game::build_category()
+{
+ std::vector<int> temp_filter;
+ machine().inifile().load_ini_category(temp_filter);
+
+ for (auto actual : temp_filter)
+ m_tmp.push_back(&driver_list::driver(actual));
+
+ std::stable_sort(m_tmp.begin(), m_tmp.end(), sort_game_list);
+ m_displaylist = m_tmp;
+}
+
+//-------------------------------------------------
+// build list from cache
+//-------------------------------------------------
+
+void ui_menu_select_game::build_from_cache(std::vector<const game_driver *> &s_drivers, int screens, int filter, bool bioscheck)
+{
+ if (s_drivers.empty())
+ {
+ s_drivers = m_sortedlist;
+ filter = main_filters::actual;
+ }
+
+ for (auto & s_driver : s_drivers)
+ {
+ if (!bioscheck && filter != FILTER_BIOS && (s_driver->flags & MACHINE_IS_BIOS_ROOT) != 0)
+ continue;
+ int idx = driver_list::find(s_driver->name);
+
+ switch (filter)
+ {
+ case FILTER_SCREEN:
+ if (driver_cache[idx].b_screen == screens)
+ m_displaylist.push_back(s_driver);
+ break;
+
+ case FILTER_SAMPLES:
+ if (driver_cache[idx].b_samples)
+ m_displaylist.push_back(s_driver);
+ break;
+
+ case FILTER_NOSAMPLES:
+ if (!driver_cache[idx].b_samples)
+ m_displaylist.push_back(s_driver);
+ break;
+
+ case FILTER_STEREO:
+ if (driver_cache[idx].b_stereo)
+ m_displaylist.push_back(s_driver);
+ break;
+
+ case FILTER_CHD:
+ if (driver_cache[idx].b_chd)
+ m_displaylist.push_back(s_driver);
+ break;
+
+ case FILTER_NOCHD:
+ if (!driver_cache[idx].b_chd)
+ m_displaylist.push_back(s_driver);
+ break;
+ }
+ }
+}
+
+//-------------------------------------------------
+// populate search list
+//-------------------------------------------------
+
+void ui_menu_select_game::populate_search()
+{
+ // allocate memory to track the penalty value
+ std::vector<int> penalty(VISIBLE_GAMES_IN_SEARCH, 9999);
+ int index = 0;
+ for (; index < m_displaylist.size(); ++index)
+ {
+ // pick the best match between driver name and description
+ int curpenalty = fuzzy_substring(m_search, m_displaylist[index]->description);
+ int tmp = fuzzy_substring(m_search, m_displaylist[index]->name);
+ curpenalty = MIN(curpenalty, tmp);
+
+ // insert into the sorted table of matches
+ for (int matchnum = VISIBLE_GAMES_IN_SEARCH - 1; matchnum >= 0; --matchnum)
+ {
+ // stop if we're worse than the current entry
+ if (curpenalty >= penalty[matchnum])
+ break;
+
+ // as long as this isn't the last entry, bump this one down
+ if (matchnum < VISIBLE_GAMES_IN_SEARCH - 1)
+ {
+ penalty[matchnum + 1] = penalty[matchnum];
+ m_searchlist[matchnum + 1] = m_searchlist[matchnum];
+ }
+
+ m_searchlist[matchnum] = m_displaylist[index];
+ penalty[matchnum] = curpenalty;
+ }
+ }
+
+ (index < VISIBLE_GAMES_IN_SEARCH) ? m_searchlist[index] = nullptr : m_searchlist[VISIBLE_GAMES_IN_SEARCH] = nullptr;
+ UINT32 flags_ui = MENU_FLAG_UI | MENU_FLAG_LEFT_ARROW | MENU_FLAG_RIGHT_ARROW;
+ for (int curitem = 0; m_searchlist[curitem]; ++curitem)
+ {
+ bool cloneof = strcmp(m_searchlist[curitem]->parent, "0");
+ if (cloneof)
+ {
+ int cx = driver_list::find(m_searchlist[curitem]->parent);
+ if (cx != -1 && ((driver_list::driver(cx).flags & MACHINE_IS_BIOS_ROOT) != 0))
+ cloneof = false;
+ }
+ item_append(m_searchlist[curitem]->description, nullptr, (!cloneof) ? flags_ui : (MENU_FLAG_INVERT | flags_ui),
+ (void *)m_searchlist[curitem]);
+ }
+}
+
+//-------------------------------------------------
+// generate general info
+//-------------------------------------------------
+
+void ui_menu_select_game::general_info(const game_driver *driver, std::string &buffer)
+{
+ strprintf(buffer, "Romset: %-.100s\n", driver->name);
+ buffer.append("Year: ").append(driver->year).append("\n");
+ strcatprintf(buffer, "Manufacturer: %-.100s\n", driver->manufacturer);
+
+ int cloneof = driver_list::non_bios_clone(*driver);
+ if (cloneof != -1)
+ strcatprintf(buffer, "Driver is Clone of: %-.100s\n", driver_list::driver(cloneof).description);
+ else
+ buffer.append("Driver is Parent\n");
+
+ if (driver->flags & MACHINE_NOT_WORKING)
+ buffer.append("Overall: NOT WORKING\n");
+ else if (driver->flags & MACHINE_UNEMULATED_PROTECTION)
+ buffer.append("Overall: Unemulated Protection\n");
+ else
+ buffer.append("Overall: Working\n");
+
+ if (driver->flags & MACHINE_IMPERFECT_COLORS)
+ buffer.append("Graphics: Imperfect Colors\n");
+ else if (driver->flags & MACHINE_WRONG_COLORS)
+ buffer.append("Graphics: Wrong Colors\n");
+ else if (driver->flags & MACHINE_IMPERFECT_GRAPHICS)
+ buffer.append("Graphics: Imperfect\n");
+ else
+ buffer.append("Graphics: OK\n");
+
+ if (driver->flags & MACHINE_NO_SOUND)
+ buffer.append("Sound: Unimplemented\n");
+ else if (driver->flags & MACHINE_IMPERFECT_SOUND)
+ buffer.append("Sound: Imperfect\n");
+ else
+ buffer.append("Sound: OK\n");
+
+ strcatprintf(buffer, "Driver is Skeleton: %s\n", ((driver->flags & MACHINE_IS_SKELETON) ? "Yes" : "No"));
+ strcatprintf(buffer, "Game is Mechanical: %s\n", ((driver->flags & MACHINE_MECHANICAL) ? "Yes" : "No"));
+ strcatprintf(buffer, "Requires Artwork: %s\n", ((driver->flags & MACHINE_REQUIRES_ARTWORK) ? "Yes" : "No"));
+ strcatprintf(buffer, "Requires Clickable Artwork: %s\n", ((driver->flags & MACHINE_CLICKABLE_ARTWORK) ? "Yes" : "No"));
+ strcatprintf(buffer, "Support Cocktail: %s\n", ((driver->flags & MACHINE_NO_COCKTAIL) ? "Yes" : "No"));
+ strcatprintf(buffer, "Driver is Bios: %s\n", ((driver->flags & MACHINE_IS_BIOS_ROOT) ? "Yes" : "No"));
+ strcatprintf(buffer, "Support Save: %s\n", ((driver->flags & MACHINE_SUPPORTS_SAVE) ? "Yes" : "No"));
+
+ int idx = driver_list::find(driver->name);
+ strcatprintf(buffer, "Screen Type: %s\n", screen_filters::text[driver_cache[idx].b_screen]);
+ strcatprintf(buffer, "Screen Orentation: %s\n", ((driver->flags & ORIENTATION_SWAP_XY) ? "Vertical" : "Horizontal"));
+ strcatprintf(buffer, "Requires Samples: %s\n", (driver_cache[idx].b_samples ? "Yes" : "No"));
+ strcatprintf(buffer, "Sound Channel: %s\n", (driver_cache[idx].b_stereo ? "Stereo" : "Mono"));
+ strcatprintf(buffer, "Requires CHD: %s\n", (driver_cache[idx].b_chd ? "Yes" : "No"));
+
+ // audit the game first to see if we're going to work
+ if (machine().ui().options().info_audit())
+ {
+ driver_enumerator enumerator(machine().options(), *driver);
+ enumerator.next();
+ media_auditor auditor(enumerator);
+ media_auditor::summary summary = auditor.audit_media(AUDIT_VALIDATE_FAST);
+ media_auditor::summary summary_samples = auditor.audit_samples();
+
+ // if everything looks good, schedule the new driver
+ if (summary == media_auditor::CORRECT || summary == media_auditor::BEST_AVAILABLE || summary == media_auditor::NONE_NEEDED)
+ buffer.append("Roms Audit Pass: OK\n");
+ else
+ buffer.append("Roms Audit Pass: BAD\n");
+
+ if (summary_samples == media_auditor::NONE_NEEDED)
+ buffer.append("Samples Audit Pass: None Needed\n");
+ else if (summary_samples == media_auditor::CORRECT || summary_samples == media_auditor::BEST_AVAILABLE)
+ buffer.append("Samples Audit Pass: OK\n");
+ else
+ buffer.append("Samples Audit Pass: BAD\n");
+ }
+ else
+ buffer.append("Roms Audit Pass: Disabled\nSamples Audit Pass: Disabled\n");
+}
+
+void ui_menu_select_game::inkey_export()
+{
+ std::string filename("exported");
+ emu_file infile(machine().ui().options().ui_path(), OPEN_FLAG_READ);
+ if (infile.open(filename.c_str(), ".xml") == FILERR_NONE)
+ for (int seq = 0; ; ++seq)
+ {
+ std::string seqtext;
+ strprintf(seqtext, "%s_%04d", filename.c_str(), seq);
+ if (infile.open(seqtext.c_str(), ".xml") != FILERR_NONE)
+ {
+ filename = seqtext;
+ break;
+ }
+ }
+
+ // attempt to open the output file
+ emu_file file(machine().ui().options().ui_path(), OPEN_FLAG_WRITE | OPEN_FLAG_CREATE | OPEN_FLAG_CREATE_PATHS);
+ if (file.open(filename.c_str(), ".xml") == FILERR_NONE)
+ {
+ FILE *pfile;
+ std::string fullpath(file.fullpath());
+ file.close();
+ pfile = fopen(fullpath.c_str() , "w");
+ driver_enumerator drivlist(machine().options());
+ drivlist.exclude_all();
+
+ if (m_search[0] != 0)
+ {
+ for (int curitem = 0; m_searchlist[curitem]; ++curitem)
+ {
+ int f = driver_list::find(m_searchlist[curitem]->name);
+ drivlist.include(f);
+ }
+ }
+ else
+ {
+ for (auto & elem : m_displaylist)
+ {
+ int f = driver_list::find(elem->name);
+ drivlist.include(f);
+ }
+ }
+
+ // create the XML and save to file
+ info_xml_creator creator(drivlist);
+ creator.output(pfile, false);
+ fclose(pfile);
+ machine().popmessage("%s.xml saved under ui folder.", filename.c_str());
+ }
+}
+
+//-------------------------------------------------
+// save drivers infos to file
+//-------------------------------------------------
+
+void ui_menu_select_game::save_cache_info()
+{
+ // attempt to open the output file
+ emu_file file(machine().ui().options().ui_path(), OPEN_FLAG_WRITE | OPEN_FLAG_CREATE | OPEN_FLAG_CREATE_PATHS);
+
+ if (file.open("info_", emulator_info::get_configname(), ".ini") == FILERR_NONE)
+ {
+ m_sortedlist.clear();
+
+ // generate header
+ std::string buffer = std::string("#\n").append(UI_VERSION_TAG).append(bare_build_version).append("\n#\n\n");
+
+ // generate full list
+ for (int x = 0; x < driver_list::total(); ++x)
+ {
+ const game_driver *driver = &driver_list::driver(x);
+ if (driver == &GAME_NAME(___empty))
+ continue;
+
+ m_sortedlist.push_back(driver);
+ c_mnfct::set(driver->manufacturer);
+ c_year::set(driver->year);
+ }
+
+ // sort manufacturers - years and driver
+ std::stable_sort(c_mnfct::ui.begin(), c_mnfct::ui.end());
+ std::stable_sort(c_year::ui.begin(), c_year::ui.end());
+ std::stable_sort(m_sortedlist.begin(), m_sortedlist.end(), sort_game_list);
+
+ int index = 0;
+ m_isabios = 0;
+ m_issbios = 0;
+ m_isarcades = 0;
+ m_issystems = 0;
+ for (int x = 0; x < driver_list::total(); ++x)
+ {
+ const game_driver *driver = &driver_list::driver(x);
+ if (driver == &GAME_NAME(___empty))
+ continue;
+
+ if (driver->flags & MACHINE_TYPE_ARCADE)
+ {
+ if (driver->flags & MACHINE_IS_BIOS_ROOT)
+ m_isabios++;
+ m_isarcades++;
+ }
+ else
+ {
+ if (driver->flags & MACHINE_IS_BIOS_ROOT)
+ m_issbios++;
+ m_issystems++;
+ }
+ cache_info infos;
+ machine_config config(*driver, machine().options());
+
+ samples_device_iterator iter(config.root_device());
+ infos.b_samples = (iter.first() != nullptr) ? 1 : 0;
+
+ const screen_device *screen = config.first_screen();
+ infos.b_screen = (screen != nullptr) ? screen->screen_type() : 0;
+
+ speaker_device_iterator siter(config.root_device());
+ sound_interface_iterator snditer(config.root_device());
+ infos.b_stereo = (snditer.first() != nullptr && siter.count() > 1) ? 1 : 0;
+ infos.b_chd = 0;
+ for (const rom_entry *rom = driver->rom; !ROMENTRY_ISEND(rom); ++rom)
+ if (ROMENTRY_ISREGION(rom) && ROMREGION_ISDISKDATA(rom))
+ {
+ infos.b_chd = 1;
+ break;
+ }
+ driver_cache[x].b_screen = infos.b_screen;
+ driver_cache[x].b_samples = infos.b_samples;
+ driver_cache[x].b_stereo = infos.b_stereo;
+ driver_cache[x].b_chd = infos.b_chd;
+ int find = driver_list::find(m_sortedlist[index++]->name);
+ strcatprintf(buffer, "%d,%d,%d,%d,%d\n", infos.b_screen, infos.b_samples, infos.b_stereo, infos.b_chd, find);
+ }
+
+ strcatprintf(buffer, "%d,%d,%d,%d\n", m_isabios, m_issbios, m_isarcades, m_issystems);
+ file.puts(buffer.c_str());
+ file.close();
+ }
+}
+
+//-------------------------------------------------
+// load drivers infos from file
+//-------------------------------------------------
+
+void ui_menu_select_game::load_cache_info()
+{
+ driver_cache.resize(driver_list::total() + 1);
+
+ // try to load driver cache
+ emu_file file(machine().ui().options().ui_path(), OPEN_FLAG_READ);
+ if (file.open("info_", emulator_info::get_configname(), ".ini") != FILERR_NONE)
+ {
+ save_cache_info();
+ return;
+ }
+
+ std::string readbuf;
+ char rbuf[MAX_CHAR_INFO];
+ file.gets(rbuf, MAX_CHAR_INFO);
+ file.gets(rbuf, MAX_CHAR_INFO);
+ readbuf = chartrimcarriage(rbuf);
+ std::string a_rev = std::string(UI_VERSION_TAG).append(bare_build_version);
+
+ // version not matching ? save and exit
+ if (a_rev != readbuf)
+ {
+ file.close();
+ save_cache_info();
+ return;
+ }
+
+ size_t pos = 0, end = 0;
+ file.gets(rbuf, MAX_CHAR_INFO);
+ file.gets(rbuf, MAX_CHAR_INFO);
+ for (int x = 0; x < driver_list::total(); ++x)
+ {
+ const game_driver *driver = &driver_list::driver(x);
+ if (driver == &GAME_NAME(___empty))
+ continue;
+
+ c_mnfct::set(driver->manufacturer);
+ c_year::set(driver->year);
+ file.gets(rbuf, MAX_CHAR_INFO);
+ readbuf = chartrimcarriage(rbuf);
+ pos = readbuf.find_first_of(',');
+ driver_cache[x].b_screen = std::stoi(readbuf.substr(0, pos));
+ end = readbuf.find_first_of(',', ++pos);
+ driver_cache[x].b_samples = std::stoi(readbuf.substr(pos, end));
+ pos = end;
+ end = readbuf.find_first_of(',', ++pos);
+ driver_cache[x].b_stereo = std::stoi(readbuf.substr(pos, end));
+ pos = end;
+ end = readbuf.find_first_of(',', ++pos);
+ driver_cache[x].b_chd = std::stoi(readbuf.substr(pos, end));
+ pos = end;
+ int find = std::stoi(readbuf.substr(++pos));
+ m_sortedlist.push_back(&driver_list::driver(find));
+ }
+ file.gets(rbuf, MAX_CHAR_INFO);
+ readbuf = chartrimcarriage(rbuf);
+ pos = readbuf.find_first_of(',');
+ m_isabios = std::stoi(readbuf.substr(0, pos));
+ end = readbuf.find_first_of(',', ++pos);
+ m_issbios = std::stoi(readbuf.substr(pos, end));
+ pos = end;
+ end = readbuf.find_first_of(',', ++pos);
+ m_isarcades = std::stoi(readbuf.substr(pos, end));
+ pos = end;
+ m_issystems = std::stoi(readbuf.substr(++pos));
+ file.close();
+ std::stable_sort(c_mnfct::ui.begin(), c_mnfct::ui.end());
+ std::stable_sort(c_year::ui.begin(), c_year::ui.end());
+}
+
+//-------------------------------------------------
+// load drivers infos from file
+//-------------------------------------------------
+
+bool ui_menu_select_game::load_available_machines()
+{
+ // try to load available drivers from file
+ emu_file file(machine().ui().options().ui_path(), OPEN_FLAG_READ);
+ if (file.open(emulator_info::get_configname(), "_avail.ini") != FILERR_NONE)
+ return false;
+
+ std::string readbuf;
+ char rbuf[MAX_CHAR_INFO];
+ file.gets(rbuf, MAX_CHAR_INFO);
+ file.gets(rbuf, MAX_CHAR_INFO);
+ readbuf = chartrimcarriage(rbuf);
+ std::string a_rev = std::string(UI_VERSION_TAG).append(bare_build_version);
+
+ // version not matching ? exit
+ if (a_rev != readbuf)
+ {
+ file.close();
+ return false;
+ }
+
+ file.gets(rbuf, MAX_CHAR_INFO);
+ file.gets(rbuf, MAX_CHAR_INFO);
+ int avsize = 0, unavsize = 0;
+ file.gets(rbuf, MAX_CHAR_INFO);
+ avsize = atoi(rbuf);
+ file.gets(rbuf, MAX_CHAR_INFO);
+ unavsize = atoi(rbuf);
+
+ // load available list
+ for (int x = 0; x < avsize; ++x)
+ {
+ file.gets(rbuf, MAX_CHAR_INFO);
+ int find = atoi(rbuf);
+ m_availsortedlist.push_back(&driver_list::driver(find));
+ }
+
+ // load unavailable list
+ for (int x = 0; x < unavsize; ++x)
+ {
+ file.gets(rbuf, MAX_CHAR_INFO);
+ int find = atoi(rbuf);
+ m_unavailsortedlist.push_back(&driver_list::driver(find));
+ }
+ file.close();
+ return true;
+}
+
+//-------------------------------------------------
+// load custom filters info from file
+//-------------------------------------------------
+
+void ui_menu_select_game::load_custom_filters()
+{
+ // attempt to open the output file
+ emu_file file(machine().ui().options().ui_path(), OPEN_FLAG_READ);
+ if (file.open("custom_", emulator_info::get_configname(), "_filter.ini") == FILERR_NONE)
+ {
+ char buffer[MAX_CHAR_INFO];
+
+ // get number of filters
+ file.gets(buffer, MAX_CHAR_INFO);
+ char *pb = strchr(buffer, '=');
+ custfltr::numother = atoi(++pb) - 1;
+
+ // get main filter
+ file.gets(buffer, MAX_CHAR_INFO);
+ pb = strchr(buffer, '=') + 2;
+
+ for (int y = 0; y < main_filters::length; ++y)
+ if (!strncmp(pb, main_filters::text[y], strlen(main_filters::text[y])))
+ {
+ custfltr::main = y;
+ break;
+ }
+
+ for (int x = 1; x <= custfltr::numother; ++x)
+ {
+ file.gets(buffer, MAX_CHAR_INFO);
+ char *cb = strchr(buffer, '=') + 2;
+ for (int y = 0; y < main_filters::length; ++y)
+ if (!strncmp(cb, main_filters::text[y], strlen(main_filters::text[y])))
+ {
+ custfltr::other[x] = y;
+ if (y == FILTER_MANUFACTURER)
+ {
+ file.gets(buffer, MAX_CHAR_INFO);
+ char *ab = strchr(buffer, '=') + 2;
+ for (size_t z = 0; z < c_mnfct::ui.size(); ++z)
+ if (!strncmp(ab, c_mnfct::ui[z].c_str(), c_mnfct::ui[z].length()))
+ custfltr::mnfct[x] = z;
+ }
+ else if (y == FILTER_YEAR)
+ {
+ file.gets(buffer, MAX_CHAR_INFO);
+ char *db = strchr(buffer, '=') + 2;
+ for (size_t z = 0; z < c_year::ui.size(); ++z)
+ if (!strncmp(db, c_year::ui[z].c_str(), c_year::ui[z].length()))
+ custfltr::year[x] = z;
+ }
+ else if (y == FILTER_SCREEN)
+ {
+ file.gets(buffer, MAX_CHAR_INFO);
+ char *db = strchr(buffer, '=') + 2;
+ for (size_t z = 0; z < screen_filters::length; ++z)
+ if (!strncmp(db, screen_filters::text[z], strlen(screen_filters::text[z])))
+ custfltr::screen[x] = z;
+ }
+ }
+ }
+ file.close();
+ }
+
+}
+
+
+//-------------------------------------------------
+// draw left box
+//-------------------------------------------------
+
+float ui_menu_select_game::draw_left_panel(float x1, float y1, float x2, float y2)
+{
+ ui_manager &mui = machine().ui();
+ float line_height = mui.get_line_height();
+
+ if (ui_globals::panels_status == SHOW_PANELS || ui_globals::panels_status == HIDE_RIGHT_PANEL)
+ {
+ float origy1 = y1;
+ float origy2 = y2;
+ float text_size = 0.75f;
+ float line_height_max = line_height * text_size;
+ float left_width = 0.0f;
+ int text_lenght = main_filters::length;
+ int afilter = main_filters::actual;
+ int phover = HOVER_FILTER_FIRST;
+ const char **text = main_filters::text;
+ float sc = y2 - y1 - (2.0f * UI_BOX_TB_BORDER);
+
+ if ((text_lenght * line_height_max) > sc)
+ {
+ float lm = sc / (text_lenght);
+ text_size = lm / line_height;
+ line_height_max = line_height * text_size;
+ }
+
+ float text_sign = mui.get_string_width_ex("_# ", text_size);
+ for (int x = 0; x < text_lenght; ++x)
+ {
+ float total_width;
+
+ // compute width of left hand side
+ total_width = mui.get_string_width_ex(text[x], text_size);
+ total_width += text_sign;
+
+ // track the maximum
+ if (total_width > left_width)
+ left_width = total_width;
+ }
+
+ x2 = x1 + left_width + 2.0f * UI_BOX_LR_BORDER;
+ //machine().ui().draw_outlined_box(container, x1, y1, x2, y2, rgb_t(0xEF, 0x12, 0x47, 0x7B));
+ mui.draw_outlined_box(container, x1, y1, x2, y2, UI_BACKGROUND_COLOR);
+
+ // take off the borders
+ x1 += UI_BOX_LR_BORDER;
+ x2 -= UI_BOX_LR_BORDER;
+ y1 += UI_BOX_TB_BORDER;
+ y2 -= UI_BOX_TB_BORDER;
+
+ for (int filter = 0; filter < text_lenght; ++filter)
+ {
+ std::string str(text[filter]);
+ rgb_t bgcolor = UI_TEXT_BG_COLOR;
+ rgb_t fgcolor = UI_TEXT_COLOR;
+
+ if (mouse_hit && x1 <= mouse_x && x2 > mouse_x && y1 <= mouse_y && y1 + line_height_max > mouse_y)
+ {
+ bgcolor = UI_MOUSEOVER_BG_COLOR;
+ fgcolor = UI_MOUSEOVER_COLOR;
+ hover = phover + filter;
+ }
+
+ if (afilter == filter)
+ {
+ bgcolor = UI_SELECTED_BG_COLOR;
+ fgcolor = UI_SELECTED_COLOR;
+ }
+
+ if (bgcolor != UI_TEXT_BG_COLOR)
+ container->add_rect(x1, y1, x2, y1 + line_height_max, bgcolor, PRIMFLAG_BLENDMODE(BLENDMODE_ALPHA) | PRIMFLAG_TEXWRAP(TRUE));
+
+ float x1t = x1 + text_sign;
+ if (afilter == FILTER_CUSTOM)
+ {
+ if (filter == custfltr::main)
+ {
+ str.assign("@custom1 ").append(text[filter]);
+ x1t -= text_sign;
+ }
+ else
+ {
+ for (int count = 1; count <= custfltr::numother; ++count)
+ {
+ int cfilter = custfltr::other[count];
+ if (cfilter == filter)
+ {
+ strprintf(str, "@custom%d %s", count + 1, text[filter]);
+ x1t -= text_sign;
+ break;
+ }
+ }
+ }
+ convert_command_glyph(str);
+ }
+
+ mui.draw_text_full(container, str.c_str(), x1t, y1, x2 - x1, JUSTIFY_LEFT, WRAP_NEVER,
+ DRAW_NORMAL, fgcolor, bgcolor, nullptr, nullptr, text_size);
+ y1 += line_height_max;
+ }
+
+ x1 = x2 + UI_BOX_LR_BORDER;
+ x2 = x1 + 2.0f * UI_BOX_LR_BORDER;
+ y1 = origy1;
+ y2 = origy2;
+ float lr_arrow_width = 0.4f * line_height * machine().render().ui_aspect();
+ rgb_t fgcolor = UI_TEXT_COLOR;
+
+ // set left-right arrows dimension
+ float ar_x0 = 0.5f * (x2 + x1) - 0.5f * lr_arrow_width;
+ float ar_y0 = 0.5f * (y2 + y1) + 0.1f * line_height;
+ float ar_x1 = ar_x0 + lr_arrow_width;
+ float ar_y1 = 0.5f * (y2 + y1) + 0.9f * line_height;
+
+ //machine().ui().draw_outlined_box(container, x1, y1, x2, y2, UI_BACKGROUND_COLOR);
+ mui.draw_outlined_box(container, x1, y1, x2, y2, rgb_t(0xEF, 0x12, 0x47, 0x7B));
+
+ if (mouse_hit && x1 <= mouse_x && x2 > mouse_x && y1 <= mouse_y && y2 > mouse_y)
+ {
+ fgcolor = UI_MOUSEOVER_COLOR;
+ hover = HOVER_LPANEL_ARROW;
+ }
+
+ draw_arrow(container, ar_x0, ar_y0, ar_x1, ar_y1, fgcolor, ROT90 ^ ORIENTATION_FLIP_X);
+ return x2 + UI_BOX_LR_BORDER;
+ }
+ else
+ {
+ float lr_arrow_width = 0.4f * line_height * machine().render().ui_aspect();
+ rgb_t fgcolor = UI_TEXT_COLOR;
+
+ // set left-right arrows dimension
+ float ar_x0 = 0.5f * (x2 + x1) - 0.5f * lr_arrow_width;
+ float ar_y0 = 0.5f * (y2 + y1) + 0.1f * line_height;
+ float ar_x1 = ar_x0 + lr_arrow_width;
+ float ar_y1 = 0.5f * (y2 + y1) + 0.9f * line_height;
+
+ //machine().ui().draw_outlined_box(container, x1, y1, x2, y2, UI_BACKGROUND_COLOR);
+ mui.draw_outlined_box(container, x1, y1, x2, y2, rgb_t(0xEF, 0x12, 0x47, 0x7B));
+
+ if (mouse_hit && x1 <= mouse_x && x2 > mouse_x && y1 <= mouse_y && y2 > mouse_y)
+ {
+ fgcolor = UI_MOUSEOVER_COLOR;
+ hover = HOVER_LPANEL_ARROW;
+ }
+
+ draw_arrow(container, ar_x0, ar_y0, ar_x1, ar_y1, fgcolor, ROT90);
+ return x2 + UI_BOX_LR_BORDER;
+ }
+}
+
+//-------------------------------------------------
+// draw infos
+//-------------------------------------------------
+
+void ui_menu_select_game::infos_render(void *selectedref, float origx1, float origy1, float origx2, float origy2)
+{
+ ui_manager &mui = machine().ui();
+ float line_height = mui.get_line_height();
+ static std::string buffer;
+ std::vector<int> xstart;
+ std::vector<int> xend;
+ float text_size = machine().ui().options().infos_size();
+ const game_driver *driver = nullptr;
+ ui_software_info *soft = nullptr;
+ bool is_favorites = ((item[0].flags & MENU_FLAG_UI_FAVORITE) != 0);
+ static ui_software_info *oldsoft = nullptr;
+ static const game_driver *olddriver = nullptr;
+ static int oldview = -1;
+ static int old_sw_view = -1;
+
+ if (is_favorites)
+ {
+ soft = ((FPTR)selectedref > 3) ? (ui_software_info *)selectedref : nullptr;
+ if (soft && soft->startempty == 1)
+ {
+ driver = soft->driver;
+ oldsoft = nullptr;
+ }
+ else
+ olddriver = nullptr;
+ }
+ else
+ {
+ driver = ((FPTR)selectedref > 3) ? (const game_driver *)selectedref : nullptr;
+ oldsoft = nullptr;
+ }
+
+ if (driver)
+ {
+ float gutter_width = 0.4f * line_height * machine().render().ui_aspect() * 1.3f;
+ float ud_arrow_width = line_height * machine().render().ui_aspect();
+ float oy1 = origy1 + line_height;
+
+ // MAMESCORE? Full size text
+ if (ui_globals::curdats_view == UI_STORY_LOAD)
+ text_size = 1.0f;
+
+ std::string snaptext(dats_info[ui_globals::curdats_view]);
+
+ // apply title to right panel
+ float title_size = 0.0f;
+ float txt_lenght = 0.0f;
+
+ for (int x = UI_FIRST_LOAD; x < UI_LAST_LOAD; ++x)
+ {
+ mui.draw_text_full(container, dats_info[x], origx1, origy1, origx2 - origx1, JUSTIFY_CENTER,
+ WRAP_TRUNCATE, DRAW_NONE, UI_TEXT_COLOR, UI_TEXT_BG_COLOR, &txt_lenght, nullptr);
+ txt_lenght += 0.01f;
+ title_size = MAX(txt_lenght, title_size);
+ }
+
+ mui.draw_text_full(container, snaptext.c_str(), origx1, origy1, origx2 - origx1, JUSTIFY_CENTER,
+ WRAP_TRUNCATE, DRAW_NORMAL, UI_TEXT_COLOR, UI_TEXT_BG_COLOR, nullptr, nullptr);
+
+ draw_common_arrow(origx1, origy1, origx2, origy2, ui_globals::curdats_view, UI_FIRST_LOAD, UI_LAST_LOAD, title_size);
+
+ if (driver != olddriver || ui_globals::curdats_view != oldview)
+ {
+ buffer.clear();
+ olddriver = driver;
+ oldview = ui_globals::curdats_view;
+ topline_datsview = 0;
+ totallines = 0;
+ std::vector<std::string> m_item;
+
+ if (ui_globals::curdats_view == UI_GENERAL_LOAD)
+ general_info(driver, buffer);
+ else if (ui_globals::curdats_view != UI_COMMAND_LOAD)
+ machine().datfile().load_data_info(driver, buffer, ui_globals::curdats_view);
+ else
+ machine().datfile().command_sub_menu(driver, m_item);
+
+ if (!m_item.empty() && ui_globals::curdats_view == UI_COMMAND_LOAD)
+ {
+ for (size_t x = 0; x < m_item.size(); ++x)
+ {
+ std::string t_buffer;
+ buffer.append(m_item[x]).append("\n");
+ machine().datfile().load_command_info(t_buffer, m_item[x]);
+ if (!t_buffer.empty())
+ buffer.append(t_buffer).append("\n");
+ }
+ convert_command_glyph(buffer);
+ }
+ }
+
+ if (buffer.empty())
+ {
+ mui.draw_text_full(container, "No Infos Available", origx1, (origy2 + origy1) * 0.5f, origx2 - origx1, JUSTIFY_CENTER,
+ WRAP_WORD, DRAW_NORMAL, UI_TEXT_COLOR, UI_TEXT_BG_COLOR, nullptr, nullptr);
+ return;
+ }
+ else if (ui_globals::curdats_view != UI_STORY_LOAD && ui_globals::curdats_view != UI_COMMAND_LOAD)
+ mui.wrap_text(container, buffer.c_str(), origx1, origy1, origx2 - origx1 - (2.0f * gutter_width), totallines, xstart, xend, text_size);
+ else
+ mui.wrap_text(container, buffer.c_str(), 0.0f, 0.0f, 1.0f - (2.0f * gutter_width), totallines, xstart, xend, text_size);
+
+ int r_visible_lines = floor((origy2 - oy1) / (line_height * text_size));
+ if (totallines < r_visible_lines)
+ r_visible_lines = totallines;
+ if (topline_datsview < 0)
+ topline_datsview = 0;
+ if (topline_datsview + r_visible_lines >= totallines)
+ topline_datsview = totallines - r_visible_lines;
+
+ float sc = origx2 - origx1 - (2.0f * UI_BOX_LR_BORDER);
+ for (int r = 0; r < r_visible_lines; ++r)
+ {
+ int itemline = r + topline_datsview;
+ std::string tempbuf(buffer.substr(xstart[itemline], xend[itemline] - xstart[itemline]));
+
+ // up arrow
+ if (r == 0 && topline_datsview != 0)
+ info_arrow(0, origx1, origx2, oy1, line_height, text_size, ud_arrow_width);
+ // bottom arrow
+ else if (r == r_visible_lines - 1 && itemline != totallines - 1)
+ info_arrow(1, origx1, origx2, oy1, line_height, text_size, ud_arrow_width);
+ // special case for mamescore
+ else if (ui_globals::curdats_view == UI_STORY_LOAD)
+ {
+ // check size
+ float textlen = mui.get_string_width_ex(tempbuf.c_str(), text_size);
+ float tmp_size = (textlen > sc) ? text_size * (sc / textlen) : text_size;
+
+ size_t last_underscore = tempbuf.find_last_of("_");
+ if (last_underscore == std::string::npos)
+ {
+ mui.draw_text_full(container, tempbuf.c_str(), origx1, oy1, origx2 - origx1, JUSTIFY_CENTER,
+ WRAP_TRUNCATE, DRAW_NORMAL, UI_TEXT_COLOR, UI_TEXT_BG_COLOR, nullptr, nullptr, tmp_size);
+ }
+ else
+ {
+ float effective_width = origx2 - origx1 - gutter_width;
+ float effective_left = origx1 + gutter_width;
+ std::string last_part(tempbuf.substr(last_underscore + 1));
+ std::string first_part(tempbuf.substr(0, tempbuf.find("___")));
+ float item_width;
+
+ mui.draw_text_full(container, first_part.c_str(), effective_left, oy1, effective_width,
+ JUSTIFY_LEFT, WRAP_TRUNCATE, DRAW_NORMAL, UI_TEXT_COLOR, UI_TEXT_BG_COLOR, &item_width, nullptr, tmp_size);
+
+ mui.draw_text_full(container, last_part.c_str(), effective_left + item_width, oy1,
+ origx2 - origx1 - 2.0f * gutter_width - item_width, JUSTIFY_RIGHT, WRAP_TRUNCATE,
+ DRAW_NORMAL, UI_TEXT_COLOR, UI_TEXT_BG_COLOR, nullptr, nullptr, tmp_size);
+ }
+ }
+
+ // special case for command
+ else if (ui_globals::curdats_view == UI_COMMAND_LOAD || ui_globals::curdats_view == UI_GENERAL_LOAD)
+ {
+ // check size
+ float textlen = mui.get_string_width_ex(tempbuf.c_str(), text_size);
+ float tmp_size = (textlen > sc) ? text_size * (sc / textlen) : text_size;
+
+ int first_dspace = (ui_globals::curdats_view == UI_COMMAND_LOAD) ? tempbuf.find(" ") : tempbuf.find(":");
+ if (first_dspace > 0)
+ {
+ float effective_width = origx2 - origx1 - gutter_width;
+ float effective_left = origx1 + gutter_width;
+ std::string first_part(tempbuf.substr(0, first_dspace));
+ std::string last_part(tempbuf.substr(first_dspace + 1));
+ strtrimspace(last_part);
+ mui.draw_text_full(container, first_part.c_str(), effective_left, oy1, effective_width, JUSTIFY_LEFT,
+ WRAP_TRUNCATE, DRAW_NORMAL, UI_TEXT_COLOR, UI_TEXT_BG_COLOR, nullptr, nullptr, tmp_size);
+
+ mui.draw_text_full(container, last_part.c_str(), effective_left, oy1, origx2 - origx1 - 2.0f * gutter_width,
+ JUSTIFY_RIGHT, WRAP_TRUNCATE, DRAW_NORMAL, UI_TEXT_COLOR, UI_TEXT_BG_COLOR, nullptr, nullptr, tmp_size);
+ }
+ else
+ mui.draw_text_full(container, tempbuf.c_str(), origx1 + gutter_width, oy1, origx2 - origx1, JUSTIFY_LEFT,
+ WRAP_TRUNCATE, DRAW_NORMAL, UI_TEXT_COLOR, UI_TEXT_BG_COLOR, nullptr, nullptr, tmp_size);
+ }
+ else
+ mui.draw_text_full(container, tempbuf.c_str(), origx1 + gutter_width, oy1, origx2 - origx1, JUSTIFY_LEFT,
+ WRAP_TRUNCATE, DRAW_NORMAL, UI_TEXT_COLOR, UI_TEXT_BG_COLOR, nullptr, nullptr, text_size);
+
+ oy1 += (line_height * text_size);
+ }
+
+ // return the number of visible lines, minus 1 for top arrow and 1 for bottom arrow
+ right_visible_lines = r_visible_lines - (topline_datsview != 0) - (topline_datsview + r_visible_lines != totallines);
+ }
+ else if (soft)
+ {
+ float gutter_width = 0.4f * line_height * machine().render().ui_aspect() * 1.3f;
+ float ud_arrow_width = line_height * machine().render().ui_aspect();
+ float oy1 = origy1 + line_height;
+
+ // apply title to right panel
+ if (soft->usage.empty())
+ {
+ mui.draw_text_full(container, "History", origx1, origy1, origx2 - origx1, JUSTIFY_CENTER, WRAP_TRUNCATE,
+ DRAW_NORMAL, UI_TEXT_COLOR, UI_TEXT_BG_COLOR, nullptr, nullptr);
+ ui_globals::cur_sw_dats_view = 0;
+ }
+ else
+ {
+ float title_size = 0.0f;
+ float txt_lenght = 0.0f;
+ std::string t_text[2];
+ t_text[0] = "History";
+ t_text[1] = "Usage";
+
+ for (auto & elem: t_text)
+ {
+ mui.draw_text_full(container, elem.c_str(), origx1, origy1, origx2 - origx1, JUSTIFY_CENTER, WRAP_TRUNCATE,
+ DRAW_NONE, UI_TEXT_COLOR, UI_TEXT_BG_COLOR, &txt_lenght, nullptr);
+ txt_lenght += 0.01f;
+ title_size = MAX(txt_lenght, title_size);
+ }
+
+ mui.draw_text_full(container, t_text[ui_globals::cur_sw_dats_view].c_str(), origx1, origy1, origx2 - origx1,
+ JUSTIFY_CENTER, WRAP_TRUNCATE, DRAW_NORMAL, UI_TEXT_COLOR, UI_TEXT_BG_COLOR, nullptr, nullptr);
+
+ draw_common_arrow(origx1, origy1, origx2, origy2, ui_globals::cur_sw_dats_view, 0, 1, title_size);
+ }
+
+ if (oldsoft != soft || old_sw_view != ui_globals::cur_sw_dats_view)
+ {
+ buffer.clear();
+ old_sw_view = ui_globals::cur_sw_dats_view;
+ oldsoft = soft;
+ if (ui_globals::cur_sw_dats_view == 0)
+ {
+ if (soft->startempty == 1)
+ machine().datfile().load_data_info(soft->driver, buffer, UI_HISTORY_LOAD);
+ else
+ machine().datfile().load_software_info(soft->listname, buffer, soft->shortname, soft->parentname);
+ }
+ else
+ buffer = soft->usage;
+ }
+
+ if (buffer.empty())
+ {
+ mui.draw_text_full(container, "No Infos Available", origx1, (origy2 + origy1) * 0.5f, origx2 - origx1, JUSTIFY_CENTER,
+ WRAP_WORD, DRAW_NORMAL, UI_TEXT_COLOR, UI_TEXT_BG_COLOR, nullptr, nullptr);
+ return;
+ }
+ else
+ mui.wrap_text(container, buffer.c_str(), origx1, origy1, origx2 - origx1 - (2.0f * gutter_width), totallines, xstart, xend, text_size);
+
+ int r_visible_lines = floor((origy2 - oy1) / (line_height * text_size));
+ if (totallines < r_visible_lines)
+ r_visible_lines = totallines;
+ if (topline_datsview < 0)
+ topline_datsview = 0;
+ if (topline_datsview + r_visible_lines >= totallines)
+ topline_datsview = totallines - r_visible_lines;
+
+ for (int r = 0; r < r_visible_lines; ++r)
+ {
+ int itemline = r + topline_datsview;
+ std::string tempbuf(buffer.substr(xstart[itemline], xend[itemline] - xstart[itemline]));
+
+ // up arrow
+ if (r == 0 && topline_datsview != 0)
+ info_arrow(0, origx1, origx2, oy1, line_height, text_size, ud_arrow_width);
+ // bottom arrow
+ else if (r == r_visible_lines - 1 && itemline != totallines - 1)
+ info_arrow(1, origx1, origx2, oy1, line_height, text_size, ud_arrow_width);
+ else
+ mui.draw_text_full(container, tempbuf.c_str(), origx1 + gutter_width, oy1, origx2 - origx1, JUSTIFY_LEFT,
+ WRAP_TRUNCATE, DRAW_NORMAL, UI_TEXT_COLOR, UI_TEXT_BG_COLOR, nullptr, nullptr, text_size);
+ oy1 += (line_height * text_size);
+ }
+
+ // return the number of visible lines, minus 1 for top arrow and 1 for bottom arrow
+ right_visible_lines = r_visible_lines - (topline_datsview != 0) - (topline_datsview + r_visible_lines != totallines);
+ }
+}
+
+void ui_menu_select_game::draw_right_panel(void *selectedref, float origx1, float origy1, float origx2, float origy2)
+{
+ ui_manager &mui = machine().ui();
+ float line_height = mui.get_line_height();
+ float lr_arrow_width = 0.4f * line_height * machine().render().ui_aspect();
+ rgb_t fgcolor = UI_TEXT_COLOR;
+ bool hide = (ui_globals::panels_status == HIDE_RIGHT_PANEL || ui_globals::panels_status == HIDE_BOTH);
+ float x2 = (hide) ? origx2 : origx1 + 2.0f * UI_BOX_LR_BORDER;
+
+ // set left-right arrows dimension
+ float ar_x0 = 0.5f * (x2 + origx1) - 0.5f * lr_arrow_width;
+ float ar_y0 = 0.5f * (origy2 + origy1) + 0.1f * line_height;
+ float ar_x1 = ar_x0 + lr_arrow_width;
+ float ar_y1 = 0.5f * (origy2 + origy1) + 0.9f * line_height;
+
+ //machine().ui().draw_outlined_box(container, origx1, origy1, origx2, origy2, UI_BACKGROUND_COLOR);
+ mui.draw_outlined_box(container, origx1, origy1, origx2, origy2, rgb_t(0xEF, 0x12, 0x47, 0x7B));
+
+ if (mouse_hit && origx1 <= mouse_x && x2 > mouse_x && origy1 <= mouse_y && origy2 > mouse_y)
+ {
+ fgcolor = UI_MOUSEOVER_COLOR;
+ hover = HOVER_RPANEL_ARROW;
+ }
+
+ if (hide)
+ {
+ draw_arrow(container, ar_x0, ar_y0, ar_x1, ar_y1, fgcolor, ROT90 ^ ORIENTATION_FLIP_X);
+ return;
+ }
+
+ draw_arrow(container, ar_x0, ar_y0, ar_x1, ar_y1, fgcolor, ROT90);
+ origx1 = x2;
+ origy1 = draw_right_box_title(origx1, origy1, origx2, origy2);
+
+ if (ui_globals::rpanel == RP_IMAGES)
+ arts_render(selectedref, origx1, origy1, origx2, origy2);
+ else
+ infos_render(selectedref, origx1, origy1, origx2, origy2);
+}
+
+//-------------------------------------------------
+// perform our special rendering
+//-------------------------------------------------
+
+void ui_menu_select_game::arts_render(void *selectedref, float origx1, float origy1, float origx2, float origy2)
+{
+ ui_manager &mui = machine().ui();
+ float line_height = mui.get_line_height();
+ bool is_favorites = ((item[0].flags & MENU_FLAG_UI_FAVORITE) != 0);
+ static ui_software_info *oldsoft = nullptr;
+ static const game_driver *olddriver = nullptr;
+ const game_driver *driver = nullptr;
+ ui_software_info *soft = nullptr;
+
+ if (is_favorites)
+ {
+ soft = ((FPTR)selectedref > 3) ? (ui_software_info *)selectedref : nullptr;
+ if (soft && soft->startempty == 1)
+ {
+ driver = soft->driver;
+ oldsoft = nullptr;
+ }
+ else
+ olddriver = nullptr;
+ }
+ else
+ {
+ driver = ((FPTR)selectedref > 3) ? (const game_driver *)selectedref : nullptr;
+ oldsoft = nullptr;
+ }
+
+ if (driver)
+ {
+ if (ui_globals::default_image)
+ ((driver->flags & MACHINE_TYPE_ARCADE) == 0) ? ui_globals::curimage_view = CABINETS_VIEW : ui_globals::curimage_view = SNAPSHOT_VIEW;
+
+ std::string searchstr;
+ searchstr = arts_render_common(origx1, origy1, origx2, origy2);
+
+ // loads the image if necessary
+ if (driver != olddriver || !snapx_bitmap->valid() || ui_globals::switch_image)
+ {
+ emu_file snapfile(searchstr.c_str(), OPEN_FLAG_READ);
+ bitmap_argb32 *tmp_bitmap;
+ tmp_bitmap = auto_alloc(machine(), bitmap_argb32);
+
+ // try to load snapshot first from saved "0000.png" file
+ std::string fullname(driver->name);
+ render_load_png(*tmp_bitmap, snapfile, fullname.c_str(), "0000.png");
+
+ if (!tmp_bitmap->valid())
+ render_load_jpeg(*tmp_bitmap, snapfile, fullname.c_str(), "0000.jpg");
+
+ // if fail, attemp to load from standard file
+ if (!tmp_bitmap->valid())
+ {
+ fullname.assign(driver->name).append(".png");
+ render_load_png(*tmp_bitmap, snapfile, nullptr, fullname.c_str());
+
+ if (!tmp_bitmap->valid())
+ {
+ fullname.assign(driver->name).append(".jpg");
+ render_load_jpeg(*tmp_bitmap, snapfile, nullptr, fullname.c_str());
+ }
+ }
+
+ // if fail again, attemp to load from parent file
+ if (!tmp_bitmap->valid())
+ {
+ // set clone status
+ bool cloneof = strcmp(driver->parent, "0");
+ if (cloneof)
+ {
+ int cx = driver_list::find(driver->parent);
+ if (cx != -1 && ((driver_list::driver(cx).flags & MACHINE_IS_BIOS_ROOT) != 0))
+ cloneof = false;
+ }
+
+ if (cloneof)
+ {
+ fullname.assign(driver->parent).append(".png");
+ render_load_png(*tmp_bitmap, snapfile, nullptr, fullname.c_str());
+
+ if (!tmp_bitmap->valid())
+ {
+ fullname.assign(driver->parent).append(".jpg");
+ render_load_jpeg(*tmp_bitmap, snapfile, nullptr, fullname.c_str());
+ }
+ }
+ }
+
+ olddriver = driver;
+ ui_globals::switch_image = false;
+ arts_render_images(tmp_bitmap, origx1, origy1, origx2, origy2, false);
+ auto_free(machine(), tmp_bitmap);
+ }
+
+ // if the image is available, loaded and valid, display it
+ if (snapx_bitmap->valid())
+ {
+ float x1 = origx1 + 0.01f;
+ float x2 = origx2 - 0.01f;
+ float y1 = origy1 + UI_BOX_TB_BORDER + line_height;
+ float y2 = origy2 - UI_BOX_TB_BORDER - line_height;
+
+ // apply texture
+ container->add_quad( x1, y1, x2, y2, ARGB_WHITE, snapx_texture, PRIMFLAG_BLENDMODE(BLENDMODE_ALPHA));
+ }
+ }
+ else if (soft)
+ {
+ std::string fullname, pathname;
+
+ if (ui_globals::default_image)
+ (soft->startempty == 0) ? ui_globals::curimage_view = SNAPSHOT_VIEW : ui_globals::curimage_view = CABINETS_VIEW;
+
+ // arts title and searchpath
+ std::string searchstr;
+ searchstr = arts_render_common(origx1, origy1, origx2, origy2);
+
+ // loads the image if necessary
+ if (soft != oldsoft || !snapx_bitmap->valid() || ui_globals::switch_image)
+ {
+ emu_file snapfile(searchstr.c_str(), OPEN_FLAG_READ);
+ bitmap_argb32 *tmp_bitmap;
+ tmp_bitmap = auto_alloc(machine(), bitmap_argb32);
+
+ if (soft->startempty == 1)
+ {
+ // Load driver snapshot
+ fullname.assign(soft->driver->name).append(".png");
+ render_load_png(*tmp_bitmap, snapfile, nullptr, fullname.c_str());
+
+ if (!tmp_bitmap->valid())
+ {
+ fullname.assign(soft->driver->name).append(".jpg");
+ render_load_jpeg(*tmp_bitmap, snapfile, nullptr, fullname.c_str());
+ }
+ }
+ else if (ui_globals::curimage_view == TITLES_VIEW)
+ {
+ // First attempt from name list
+ pathname.assign(soft->listname).append("_titles");
+ fullname.assign(soft->shortname).append(".png");
+ render_load_png(*tmp_bitmap, snapfile, pathname.c_str(), fullname.c_str());
+
+ if (!tmp_bitmap->valid())
+ {
+ fullname.assign(soft->shortname).append(".jpg");
+ render_load_jpeg(*tmp_bitmap, snapfile, pathname.c_str(), fullname.c_str());
+ }
+ }
+ else
+ {
+ // First attempt from name list
+ pathname = soft->listname;
+ fullname.assign(soft->shortname).append(".png");
+ render_load_png(*tmp_bitmap, snapfile, pathname.c_str(), fullname.c_str());
+
+ if (!tmp_bitmap->valid())
+ {
+ fullname.assign(soft->shortname).append(".jpg");
+ render_load_jpeg(*tmp_bitmap, snapfile, pathname.c_str(), fullname.c_str());
+ }
+
+ if (!tmp_bitmap->valid())
+ {
+ // Second attempt from driver name + part name
+ pathname.assign(soft->driver->name).append(soft->part.c_str());
+ fullname.assign(soft->shortname).append(".png");
+ render_load_png(*tmp_bitmap, snapfile, pathname.c_str(), fullname.c_str());
+
+ if (!tmp_bitmap->valid())
+ {
+ fullname.assign(soft->shortname).append(".jpg");
+ render_load_jpeg(*tmp_bitmap, snapfile, pathname.c_str(), fullname.c_str());
+ }
+ }
+ }
+
+ oldsoft = soft;
+ ui_globals::switch_image = false;
+ arts_render_images(tmp_bitmap, origx1, origy1, origx2, origy2, true);
+ auto_free(machine(), tmp_bitmap);
+ }
+
+ // if the image is available, loaded and valid, display it
+ if (snapx_bitmap->valid())
+ {
+ float x1 = origx1 + 0.01f;
+ float x2 = origx2 - 0.01f;
+ float y1 = origy1 + UI_BOX_TB_BORDER + line_height;
+ float y2 = origy2 - UI_BOX_TB_BORDER - line_height;
+
+ // apply texture
+ container->add_quad(x1, y1, x2, y2, ARGB_WHITE, snapx_texture, PRIMFLAG_BLENDMODE(BLENDMODE_ALPHA));
+ }
+ }
+}
diff --git a/src/emu/ui/selgame.h b/src/emu/ui/selgame.h
index b5e6687c4f3..d09c9789ee0 100644
--- a/src/emu/ui/selgame.h
+++ b/src/emu/ui/selgame.h
@@ -1,22 +1,23 @@
// license:BSD-3-Clause
-// copyright-holders:Nicola Salmoria, Aaron Giles, Nathan Woods
+// copyright-holders:Dankan1890
/***************************************************************************
ui/selgame.h
- Game selector
+ Main UI menu.
***************************************************************************/
#pragma once
-#ifndef __UI_SELGAME_H__
-#define __UI_SELGAME_H__
+#ifndef __UI_MAIN_H__
+#define __UI_MAIN_H__
#include "drivenum.h"
-#include "menu.h"
+#include "ui/menu.h"
-class ui_menu_select_game : public ui_menu {
+class ui_menu_select_game : public ui_menu
+{
public:
ui_menu_select_game(running_machine &machine, render_container *container, const char *gamename);
virtual ~ui_menu_select_game();
@@ -27,21 +28,61 @@ public:
// force game select menu
static void force_game_select(running_machine &machine, render_container *container);
+ virtual bool menu_has_search_active() override { return (m_search[0] != 0); }
+
+ // draw left panel
+ virtual float draw_left_panel(float x1, float y1, float x2, float y2) override;
+
+ // draw right panel
+ virtual void draw_right_panel(void *selectedref, float origx1, float origy1, float origx2, float origy2) override;
+
private:
- // internal state
- enum { VISIBLE_GAMES_IN_LIST = 15 };
- UINT8 m_error;
- UINT8 m_rerandomize;
- char m_search[40];
- int m_matchlist[VISIBLE_GAMES_IN_LIST];
- std::vector<const game_driver *> m_driverlist;
- std::unique_ptr<driver_enumerator> m_drivlist;
+ struct cache_info
+ {
+ UINT8 b_screen, b_stereo, b_samples, b_chd;
+ };
+
+ std::vector<cache_info> driver_cache;
+
+ enum { VISIBLE_GAMES_IN_SEARCH = 200 };
+ char m_search[40];
+ int m_prev_selected;
+ int m_isabios, m_issbios, m_isarcades, m_issystems;
+
+ std::vector<const game_driver *> m_sortedlist;
+ std::vector<const game_driver *> m_availsortedlist;
+ std::vector<const game_driver *> m_unavailsortedlist;
+ std::vector<const game_driver *> m_displaylist;
+ std::vector<const game_driver *> m_tmp;
+
+ const game_driver *m_searchlist[VISIBLE_GAMES_IN_SEARCH + 1];
// internal methods
- void build_driver_list();
+ void build_custom();
+ void build_category();
+ void build_available_list();
+ void build_list(std::vector<const game_driver *> &vec, const char *filter_text = nullptr, int filter = 0, bool bioscheck = false);
+ void build_from_cache(std::vector<const game_driver *> &vec, int screens = 0, int filter = 0, bool bioscheck = false);
+
+ bool no_active_search();
+ void populate_search();
+ void load_cache_info();
+ void save_cache_info();
+ bool load_available_machines();
+ void load_custom_filters();
+
+ // General info
+ void general_info(const game_driver *driver, std::string &buffer);
+
+ void arts_render(void *selectedref, float x1, float y1, float x2, float y2);
+ void infos_render(void *selectedref, float x1, float y1, float x2, float y2);
+
+ // handlers
void inkey_select(const ui_menu_event *menu_event);
- void inkey_cancel(const ui_menu_event *menu_event);
+ void inkey_select_favorite(const ui_menu_event *menu_event);
void inkey_special(const ui_menu_event *menu_event);
+ void inkey_export();
};
-#endif /* __UI_SELGAME_H__ */
+
+#endif /* __UI_MAIN_H__ */
diff --git a/src/emu/ui/selsoft.cpp b/src/emu/ui/selsoft.cpp
new file mode 100644
index 00000000000..fc3d21b550d
--- /dev/null
+++ b/src/emu/ui/selsoft.cpp
@@ -0,0 +1,1974 @@
+// license:BSD-3-Clause
+// copyright-holders:Dankan1890
+/***************************************************************************
+
+ ui/selsoft.cpp
+
+ UI softwares menu.
+
+***************************************************************************/
+
+#include "emu.h"
+#include "emuopts.h"
+#include "ui/ui.h"
+#include "ui/menu.h"
+#include "uiinput.h"
+#include "audit.h"
+#include "ui/selsoft.h"
+#include "ui/datmenu.h"
+#include "ui/datfile.h"
+#include "ui/inifile.h"
+#include "ui/selector.h"
+#include "ui/custmenu.h"
+#include "rendfont.h"
+#include "rendutil.h"
+#include "softlist.h"
+#include <algorithm>
+
+std::string reselect_last::driver;
+std::string reselect_last::software;
+std::string reselect_last::swlist;
+bool reselect_last::m_reselect = false;
+static const char *region_lists[] = { "arab", "arg", "asia", "aus", "aut", "bel", "blr", "bra", "can", "chi", "chn", "cze", "den",
+ "ecu", "esp", "euro", "fin", "fra", "gbr", "ger", "gre", "hkg", "hun", "irl", "isr",
+ "isv", "ita", "jpn", "kaz", "kor", "lat", "lux", "mex", "ned", "nld", "nor", "nzl",
+ "pol", "rus", "slo", "spa", "sui", "swe", "tha", "tpe", "tw", "uk", "ukr", "usa" };
+
+//-------------------------------------------------
+// compares two items in the software list and
+// sort them by parent-clone
+//-------------------------------------------------
+
+bool compare_software(ui_software_info a, ui_software_info b)
+{
+ ui_software_info *x = &a;
+ ui_software_info *y = &b;
+
+ bool clonex = (x->parentname[0] != '\0');
+ bool cloney = (y->parentname[0] != '\0');
+
+ if (!clonex && !cloney)
+ return (strmakelower(x->longname) < strmakelower(y->longname));
+
+ std::string cx(x->parentlongname), cy(y->parentlongname);
+
+ if (clonex && cx[0] == '\0')
+ clonex = false;
+
+ if (cloney && cy[0] == '\0')
+ cloney = false;
+
+ if (!clonex && !cloney)
+ return (strmakelower(x->longname) < strmakelower(y->longname));
+ else if (clonex && cloney)
+ {
+ if (!core_stricmp(x->parentname.c_str(), y->parentname.c_str()) && !core_stricmp(x->instance.c_str(), y->instance.c_str()))
+ return (strmakelower(x->longname) < strmakelower(y->longname));
+ else
+ return (strmakelower(cx) < strmakelower(cy));
+ }
+ else if (!clonex && cloney)
+ {
+ if (!core_stricmp(x->shortname.c_str(), y->parentname.c_str()) && !core_stricmp(x->instance.c_str(), y->instance.c_str()))
+ return true;
+ else
+ return (strmakelower(x->longname) < strmakelower(cy));
+ }
+ else
+ {
+ if (!core_stricmp(x->parentname.c_str(), y->shortname.c_str()) && !core_stricmp(x->instance.c_str(), y->instance.c_str()))
+ return false;
+ else
+ return (strmakelower(cx) < strmakelower(y->longname));
+ }
+}
+
+//-------------------------------------------------
+// get bios count
+//-------------------------------------------------
+
+bool has_multiple_bios(const game_driver *driver, std::vector<s_bios> &biosname)
+{
+ if (driver->rom == nullptr)
+ return 0;
+
+ std::string default_name;
+ for (const rom_entry *rom = driver->rom; !ROMENTRY_ISEND(rom); ++rom)
+ if (ROMENTRY_ISDEFAULT_BIOS(rom))
+ default_name = ROM_GETNAME(rom);
+
+ for (const rom_entry *rom = driver->rom; !ROMENTRY_ISEND(rom); ++rom)
+ {
+ if (ROMENTRY_ISSYSTEM_BIOS(rom))
+ {
+ std::string name(ROM_GETHASHDATA(rom));
+ std::string bname(ROM_GETNAME(rom));
+ int bios_flags = ROM_GETBIOSFLAGS(rom);
+
+ if (bname == default_name)
+ {
+ name.append(" (default)");
+ biosname.emplace(biosname.begin(), name, bios_flags - 1);
+ }
+ else
+ biosname.emplace_back(name, bios_flags - 1);
+ }
+ }
+ return (biosname.size() > 1);
+}
+
+//-------------------------------------------------
+// ctor
+//-------------------------------------------------
+
+ui_menu_select_software::ui_menu_select_software(running_machine &machine, render_container *container, const game_driver *driver) : ui_menu(machine, container)
+{
+ if (reselect_last::get())
+ reselect_last::set(false);
+
+ sw_filters::actual = 0;
+
+ m_driver = driver;
+ build_software_list();
+ load_sw_custom_filters();
+
+ ui_globals::curimage_view = SNAPSHOT_VIEW;
+ ui_globals::switch_image = true;
+ ui_globals::cur_sw_dats_view = UI_FIRST_LOAD;
+
+ std::string error_string;
+ machine.options().set_value(OPTION_SOFTWARENAME, "", OPTION_PRIORITY_CMDLINE, error_string);
+}
+
+//-------------------------------------------------
+// dtor
+//-------------------------------------------------
+
+ui_menu_select_software::~ui_menu_select_software()
+{
+ ui_globals::curimage_view = CABINETS_VIEW;
+ ui_globals::switch_image = true;
+}
+
+//-------------------------------------------------
+// handle
+//-------------------------------------------------
+
+void ui_menu_select_software::handle()
+{
+ bool check_filter = false;
+
+ // ignore pause keys by swallowing them before we process the menu
+ machine().ui_input().pressed(IPT_UI_PAUSE);
+
+ // process the menu
+ const ui_menu_event *m_event = process(UI_MENU_PROCESS_LR_REPEAT);
+
+ if (m_event != nullptr && m_event->itemref != nullptr)
+ {
+ // reset the error on any future m_event
+ if (ui_error)
+ ui_error = false;
+
+ // handle selections
+ else if (m_event->iptkey == IPT_UI_SELECT)
+ inkey_select(m_event);
+
+ // handle UI_LEFT
+ else if (m_event->iptkey == IPT_UI_LEFT)
+ {
+ // Images
+ if (ui_globals::rpanel == RP_IMAGES && ui_globals::curimage_view > FIRST_VIEW)
+ {
+ ui_globals::curimage_view--;
+ ui_globals::switch_image = true;
+ ui_globals::default_image = false;
+ }
+
+ // Infos
+ else if (ui_globals::rpanel == RP_INFOS && ui_globals::cur_sw_dats_view > 0)
+ {
+ ui_globals::cur_sw_dats_view--;
+ topline_datsview = 0;
+ }
+ }
+
+ // handle UI_RIGHT
+ else if (m_event->iptkey == IPT_UI_RIGHT)
+ {
+ // Images
+ if (ui_globals::rpanel == RP_IMAGES && ui_globals::curimage_view < LAST_VIEW)
+ {
+ ui_globals::curimage_view++;
+ ui_globals::switch_image = true;
+ ui_globals::default_image = false;
+ }
+
+ // Infos
+ else if (ui_globals::rpanel == RP_INFOS && ui_globals::cur_sw_dats_view < 1)
+ {
+ ui_globals::cur_sw_dats_view++;
+ topline_datsview = 0;
+ }
+ }
+
+ // handle UI_HISTORY
+ else if (m_event->iptkey == IPT_UI_HISTORY && machine().ui().options().enabled_dats())
+ {
+ ui_software_info *ui_swinfo = (ui_software_info *)m_event->itemref;
+
+ if ((FPTR)ui_swinfo > 1)
+ ui_menu::stack_push(global_alloc_clear<ui_menu_history_sw>(machine(), container, ui_swinfo, m_driver));
+ }
+
+ // handle UI_UP_FILTER
+ else if (m_event->iptkey == IPT_UI_UP_FILTER && sw_filters::actual > UI_SW_FIRST)
+ {
+ l_sw_hover = sw_filters::actual - 1;
+ check_filter = true;
+ }
+
+ // handle UI_DOWN_FILTER
+ else if (m_event->iptkey == IPT_UI_DOWN_FILTER && sw_filters::actual < UI_SW_LAST)
+ {
+ l_sw_hover = sw_filters::actual + 1;
+ check_filter = true;
+ }
+
+ // handle UI_LEFT_PANEL
+ else if (m_event->iptkey == IPT_UI_LEFT_PANEL)
+ ui_globals::rpanel = RP_IMAGES;
+
+ // handle UI_RIGHT_PANEL
+ else if (m_event->iptkey == IPT_UI_RIGHT_PANEL)
+ ui_globals::rpanel = RP_INFOS;
+
+ // escape pressed with non-empty text clears the text
+ else if (m_event->iptkey == IPT_UI_CANCEL && m_search[0] != 0)
+ {
+ m_search[0] = '\0';
+ reset(UI_MENU_RESET_SELECT_FIRST);
+ }
+
+ // handle UI_FAVORITES
+ else if (m_event->iptkey == IPT_UI_FAVORITES)
+ {
+ ui_software_info *swinfo = (ui_software_info *)m_event->itemref;
+
+ if ((FPTR)swinfo > 2)
+ {
+ if (!machine().favorite().isgame_favorite(*swinfo))
+ {
+ machine().favorite().add_favorite_game(*swinfo);
+ machine().popmessage("%s\n added to favorites list.", swinfo->longname.c_str());
+ }
+
+ else
+ {
+ machine().popmessage("%s\n removed from favorites list.", swinfo->longname.c_str());
+ machine().favorite().remove_favorite_game();
+ }
+ }
+ }
+
+ // typed characters append to the buffer
+ else if (m_event->iptkey == IPT_SPECIAL)
+ inkey_special(m_event);
+
+ else if (m_event->iptkey == IPT_OTHER)
+ check_filter = true;
+ }
+
+ if (m_event != nullptr && m_event->itemref == nullptr)
+ {
+ // reset the error on any future m_event
+ if (ui_error)
+ ui_error = false;
+
+ else if (m_event->iptkey == IPT_OTHER)
+ check_filter = true;
+
+ // handle UI_UP_FILTER
+ else if (m_event->iptkey == IPT_UI_UP_FILTER && sw_filters::actual > UI_SW_FIRST)
+ {
+ l_sw_hover = sw_filters::actual - 1;
+ check_filter = true;
+ }
+
+ // handle UI_DOWN_FILTER
+ else if (m_event->iptkey == IPT_UI_DOWN_FILTER && sw_filters::actual < UI_SW_LAST)
+ {
+ l_sw_hover = sw_filters::actual + 1;
+ check_filter = true;
+ }
+ }
+
+ // if we're in an error state, overlay an error message
+ if (ui_error)
+ machine().ui().draw_text_box(container,
+ "The selected software is missing one or more required files. "
+ "Please select a different software.\n\nPress any key (except ESC) to continue.",
+ JUSTIFY_CENTER, 0.5f, 0.5f, UI_RED_COLOR);
+
+ // handle filters selection from key shortcuts
+ if (check_filter)
+ {
+ m_search[0] = '\0';
+
+ switch (l_sw_hover)
+ {
+ case UI_SW_REGION:
+ ui_menu::stack_push(global_alloc_clear<ui_menu_selector>(machine(), container, m_filter.region.ui,
+ m_filter.region.actual, SELECTOR_SOFTWARE, l_sw_hover));
+ break;
+ case UI_SW_YEARS:
+ ui_menu::stack_push(global_alloc_clear<ui_menu_selector>(machine(), container, m_filter.year.ui,
+ m_filter.year.actual, SELECTOR_SOFTWARE, l_sw_hover));
+ break;
+ case UI_SW_LIST:
+ ui_menu::stack_push(global_alloc_clear<ui_menu_selector>(machine(), container, m_filter.swlist.description,
+ m_filter.swlist.actual, SELECTOR_SOFTWARE, l_sw_hover));
+ break;
+ case UI_SW_TYPE:
+ ui_menu::stack_push(global_alloc_clear<ui_menu_selector>(machine(), container, m_filter.type.ui,
+ m_filter.type.actual, SELECTOR_SOFTWARE, l_sw_hover));
+ break;
+ case UI_SW_PUBLISHERS:
+ ui_menu::stack_push(global_alloc_clear<ui_menu_selector>(machine(), container, m_filter.publisher.ui,
+ m_filter.publisher.actual, SELECTOR_SOFTWARE, l_sw_hover));
+ break;
+ case UI_SW_CUSTOM:
+ sw_filters::actual = l_sw_hover;
+ ui_menu::stack_push(global_alloc_clear<ui_menu_swcustom_filter>(machine(), container, m_driver, m_filter));
+ break;
+ default:
+ sw_filters::actual = l_sw_hover;
+ reset(UI_MENU_RESET_SELECT_FIRST);
+ break;
+ }
+ }
+}
+
+//-------------------------------------------------
+// populate
+//-------------------------------------------------
+
+void ui_menu_select_software::populate()
+{
+ UINT32 flags_ui = MENU_FLAG_UI_SWLIST | MENU_FLAG_LEFT_ARROW | MENU_FLAG_RIGHT_ARROW;
+ m_has_empty_start = true;
+ int old_software = -1;
+
+ machine_config config(*m_driver, machine().options());
+ image_interface_iterator iter(config.root_device());
+
+ for (device_image_interface *image = iter.first(); image != nullptr; image = iter.next())
+ if (image->filename() == nullptr && image->must_be_loaded())
+ {
+ m_has_empty_start = false;
+ break;
+ }
+
+ // no active search
+ if (m_search[0] == 0)
+ {
+ // if the device can be loaded empty, add an item
+ if (m_has_empty_start)
+ item_append("[Start empty]", nullptr, flags_ui, (void *)&m_swinfo[0]);
+
+ m_displaylist.clear();
+ m_tmp.clear();
+
+ switch (sw_filters::actual)
+ {
+ case UI_SW_PUBLISHERS:
+ build_list(m_tmp, m_filter.publisher.ui[m_filter.publisher.actual].c_str());
+ break;
+
+ case UI_SW_LIST:
+ build_list(m_tmp, m_filter.swlist.name[m_filter.swlist.actual].c_str());
+ break;
+
+ case UI_SW_YEARS:
+ build_list(m_tmp, m_filter.year.ui[m_filter.year.actual].c_str());
+ break;
+
+ case UI_SW_TYPE:
+ build_list(m_tmp, m_filter.type.ui[m_filter.type.actual].c_str());
+ break;
+
+ case UI_SW_REGION:
+ build_list(m_tmp, m_filter.region.ui[m_filter.region.actual].c_str());
+ break;
+
+ case UI_SW_CUSTOM:
+ build_custom();
+ break;
+
+ default:
+ build_list(m_tmp);
+ break;
+ }
+
+ // iterate over entries
+ for (size_t curitem = 0; curitem < m_displaylist.size(); ++curitem)
+ {
+ if (reselect_last::software == "[Start empty]" && !reselect_last::driver.empty())
+ old_software = 0;
+
+ else if (!reselect_last::software.empty() && m_displaylist[curitem]->shortname == reselect_last::software
+ && m_displaylist[curitem]->listname == reselect_last::swlist)
+ old_software = m_has_empty_start ? curitem + 1 : curitem;
+
+ item_append(m_displaylist[curitem]->longname.c_str(), m_displaylist[curitem]->devicetype.c_str(),
+ m_displaylist[curitem]->parentname.empty() ? flags_ui : (MENU_FLAG_INVERT | flags_ui), (void *)m_displaylist[curitem]);
+ }
+ }
+
+ else
+ {
+ find_matches(m_search, VISIBLE_GAMES_IN_SEARCH);
+
+ for (int curitem = 0; m_searchlist[curitem] != nullptr; ++curitem)
+ item_append(m_searchlist[curitem]->longname.c_str(), m_searchlist[curitem]->devicetype.c_str(),
+ m_searchlist[curitem]->parentname.empty() ? flags_ui : (MENU_FLAG_INVERT | flags_ui),
+ (void *)m_searchlist[curitem]);
+ }
+
+ item_append(MENU_SEPARATOR_ITEM, nullptr, flags_ui, nullptr);
+
+ // configure the custom rendering
+ customtop = 4.0f * machine().ui().get_line_height() + 5.0f * UI_BOX_TB_BORDER;
+ custombottom = 5.0f * machine().ui().get_line_height() + 4.0f * UI_BOX_TB_BORDER;
+
+ if (old_software != -1)
+ {
+ selected = old_software;
+ top_line = selected - (ui_globals::visible_sw_lines / 2);
+ }
+
+ reselect_last::reset();
+}
+
+//-------------------------------------------------
+// build a list of softwares
+//-------------------------------------------------
+
+void ui_menu_select_software::build_software_list()
+{
+ // add start empty item
+ m_swinfo.emplace_back(m_driver->name, m_driver->description, "", "", "", 0, "", m_driver, "", "", "", 1, "", "", "", true);
+
+ machine_config config(*m_driver, machine().options());
+ software_list_device_iterator deviter(config.root_device());
+
+ // iterate thru all software lists
+ for (software_list_device *swlist = deviter.first(); swlist != nullptr; swlist = deviter.next())
+ {
+ m_filter.swlist.name.push_back(swlist->list_name());
+ m_filter.swlist.description.push_back(swlist->description());
+ for (software_info *swinfo = swlist->first_software_info(); swinfo != nullptr; swinfo = swinfo->next())
+ {
+ software_part *part = swinfo->first_part();
+ if (part->is_compatible(*swlist))
+ {
+ const char *instance_name = nullptr;
+ const char *type_name = nullptr;
+ ui_software_info tmpmatches;
+ image_interface_iterator imgiter(config.root_device());
+ for (device_image_interface *image = imgiter.first(); image != nullptr; image = imgiter.next())
+ {
+ const char *interface = image->image_interface();
+ if (interface != nullptr && part->matches_interface(interface))
+ {
+ instance_name = image->instance_name();
+ if (instance_name != nullptr)
+ tmpmatches.instance = image->instance_name();
+
+ type_name = image->image_type_name();
+ if (type_name != nullptr)
+ tmpmatches.devicetype = type_name;
+ break;
+ }
+ }
+
+ if (instance_name == nullptr || type_name == nullptr)
+ continue;
+
+ if (swinfo->shortname()) tmpmatches.shortname = swinfo->shortname();
+ if (swinfo->longname()) tmpmatches.longname = swinfo->longname();
+ if (swinfo->parentname()) tmpmatches.parentname = swinfo->parentname();
+ if (swinfo->year()) tmpmatches.year = swinfo->year();
+ if (swinfo->publisher()) tmpmatches.publisher = swinfo->publisher();
+ tmpmatches.supported = swinfo->supported();
+ if (part->name()) tmpmatches.part = part->name();
+ tmpmatches.driver = m_driver;
+ if (swlist->list_name()) tmpmatches.listname = swlist->list_name();
+ if (part->interface()) tmpmatches.interface = part->interface();
+ tmpmatches.startempty = 0;
+ tmpmatches.parentlongname.clear();
+ tmpmatches.usage.clear();
+ tmpmatches.available = false;
+
+ for (feature_list_item *flist = swinfo->other_info(); flist != nullptr; flist = flist->next())
+ if (!strcmp(flist->name(), "usage"))
+ tmpmatches.usage = flist->value();
+
+ m_swinfo.push_back(tmpmatches);
+ m_filter.region.set(tmpmatches.longname);
+ m_filter.publisher.set(tmpmatches.publisher);
+ m_filter.year.set(tmpmatches.year);
+ m_filter.type.set(tmpmatches.devicetype);
+ }
+ }
+ }
+ m_displaylist.resize(m_swinfo.size() + 1);
+
+ // retrieve and set the long name of software for parents
+ for (size_t y = 1; y < m_swinfo.size(); ++y)
+ {
+ if (!m_swinfo[y].parentname.empty())
+ {
+ std::string lparent(m_swinfo[y].parentname);
+ bool found = false;
+
+ // first scan backward
+ for (int x = y; x > 0; --x)
+ if (lparent == m_swinfo[x].shortname && m_swinfo[y].listname == m_swinfo[x].listname)
+ {
+ m_swinfo[y].parentlongname = m_swinfo[x].longname;
+ found = true;
+ break;
+ }
+
+ // not found? then scan forward
+ for (size_t x = y; !found && x < m_swinfo.size(); ++x)
+ if (lparent == m_swinfo[x].shortname && m_swinfo[y].listname == m_swinfo[x].listname)
+ {
+ m_swinfo[y].parentlongname = m_swinfo[x].longname;
+ break;
+ }
+ }
+ }
+
+ std::string searchstr, curpath;
+ const osd_directory_entry *dir;
+ for (auto & elem : m_filter.swlist.name)
+ {
+ path_iterator path(machine().options().media_path());
+ while (path.next(curpath))
+ {
+ searchstr.assign(curpath).append(PATH_SEPARATOR).append(elem).append(";");
+ file_enumerator fpath(searchstr.c_str());
+
+ // iterate while we get new objects
+ while ((dir = fpath.next()) != nullptr)
+ {
+ std::string name;
+ if (dir->type == ENTTYPE_FILE)
+ name = core_filename_extract_base(dir->name, true);
+ else if (dir->type == ENTTYPE_DIR && strcmp(dir->name, ".") != 0)
+ name = dir->name;
+ else
+ continue;
+
+ strmakelower(name);
+ for (auto & yelem : m_swinfo)
+ if (yelem.shortname == name && yelem.listname == elem)
+ {
+ yelem.available = true;
+ break;
+ }
+ }
+ }
+ }
+
+ // sort array
+ std::stable_sort(m_swinfo.begin() + 1, m_swinfo.end(), compare_software);
+ std::stable_sort(m_filter.region.ui.begin(), m_filter.region.ui.end());
+ std::stable_sort(m_filter.year.ui.begin(), m_filter.year.ui.end());
+ std::stable_sort(m_filter.type.ui.begin(), m_filter.type.ui.end());
+ std::stable_sort(m_filter.publisher.ui.begin(), m_filter.publisher.ui.end());
+
+ for (size_t x = 1; x < m_swinfo.size(); ++x)
+ m_sortedlist.push_back(&m_swinfo[x]);
+}
+
+//-------------------------------------------------
+// perform our special rendering
+//-------------------------------------------------
+
+void ui_menu_select_software::custom_render(void *selectedref, float top, float bottom, float origx1, float origy1, float origx2, float origy2)
+{
+ ui_software_info *swinfo = (FPTR)selectedref > 1 ? (ui_software_info *)selectedref : nullptr;
+ const game_driver *driver = nullptr;
+ ui_manager &mui = machine().ui();
+ float width;
+ std::string tempbuf[5], filtered;
+ rgb_t color = UI_BACKGROUND_COLOR;
+ bool isstar = false;
+ float tbarspace = mui.get_line_height();
+
+ // determine the text for the header
+ int vis_item = (m_search[0] != 0) ? visible_items : (m_has_empty_start ? visible_items - 1 : visible_items);
+ strprintf(tempbuf[0], "MAME %s ( %d / %d softwares )", bare_build_version, vis_item, (int)m_swinfo.size() - 1);
+ tempbuf[1].assign("Driver: \"").append(m_driver->description).append("\" software list ");
+
+ if (sw_filters::actual == UI_SW_REGION && m_filter.region.ui.size() != 0)
+ filtered.assign("Region: ").append(m_filter.region.ui[m_filter.region.actual]).append(" - ");
+ else if (sw_filters::actual == UI_SW_PUBLISHERS)
+ filtered.assign("Publisher: ").append(m_filter.publisher.ui[m_filter.publisher.actual]).append(" - ");
+ else if (sw_filters::actual == UI_SW_YEARS)
+ filtered.assign("Year: ").append(m_filter.year.ui[m_filter.year.actual]).append(" - ");
+ else if (sw_filters::actual == UI_SW_LIST)
+ filtered.assign("Software List: ").append(m_filter.swlist.description[m_filter.swlist.actual]).append(" - ");
+ else if (sw_filters::actual == UI_SW_TYPE)
+ filtered.assign("Device type: ").append(m_filter.type.ui[m_filter.type.actual]).append(" - ");
+
+ tempbuf[2].assign(filtered).append("Search: ").append(m_search).append("_");
+
+ // get the size of the text
+ float maxwidth = origx2 - origx1;
+
+ for (int line = 0; line < 3; ++line)
+ {
+ mui.draw_text_full(container, tempbuf[line].c_str(), 0.0f, 0.0f, 1.0f, JUSTIFY_CENTER, WRAP_NEVER,
+ DRAW_NONE, ARGB_WHITE, ARGB_BLACK, &width, nullptr);
+ width += 2 * UI_BOX_LR_BORDER;
+ maxwidth = MAX(width, maxwidth);
+ }
+
+ // compute our bounds
+ float x1 = 0.5f - 0.5f * maxwidth;
+ float x2 = x1 + maxwidth;
+ float y1 = origy1 - top;
+ float y2 = origy1 - 3.0f * UI_BOX_TB_BORDER - tbarspace;
+
+ // draw a box
+ mui.draw_outlined_box(container, x1, y1, x2, y2, UI_BACKGROUND_COLOR);
+
+ // take off the borders
+ x1 += UI_BOX_LR_BORDER;
+ x2 -= UI_BOX_LR_BORDER;
+ y1 += UI_BOX_TB_BORDER;
+
+ // draw the text within it
+ for (int line = 0; line < 3; ++line)
+ {
+ mui.draw_text_full(container, tempbuf[line].c_str(), x1, y1, x2 - x1, JUSTIFY_CENTER, WRAP_NEVER,
+ DRAW_NORMAL, UI_TEXT_COLOR, UI_TEXT_BG_COLOR, nullptr, nullptr);
+ y1 += mui.get_line_height();
+ }
+
+ // determine the text to render below
+ if (swinfo && swinfo->startempty == 1)
+ driver = swinfo->driver;
+
+ if ((FPTR)driver > 1)
+ {
+ isstar = machine().favorite().isgame_favorite(driver);
+
+ // first line is game description
+ strprintf(tempbuf[0], "%-.100s", driver->description);
+
+ // next line is year, manufacturer
+ strprintf(tempbuf[1], "%s, %-.100s", driver->year, driver->manufacturer);
+
+ // next line is clone/parent status
+ int cloneof = driver_list::non_bios_clone(*driver);
+
+ if (cloneof != -1)
+ strprintf(tempbuf[2], "Driver is clone of: %-.100s", driver_list::driver(cloneof).description);
+ else
+ tempbuf[2] = "Driver is parent";
+
+ // next line is overall driver status
+ if (driver->flags & MACHINE_NOT_WORKING)
+ tempbuf[3] = "Overall: NOT WORKING";
+ else if (driver->flags & MACHINE_UNEMULATED_PROTECTION)
+ tempbuf[3] = "Overall: Unemulated Protection";
+ else
+ tempbuf[3] = "Overall: Working";
+
+ // next line is graphics, sound status
+ if (driver->flags & (MACHINE_IMPERFECT_GRAPHICS | MACHINE_WRONG_COLORS | MACHINE_IMPERFECT_COLORS))
+ tempbuf[4] = "Graphics: Imperfect, ";
+ else
+ tempbuf[4] = "Graphics: OK, ";
+
+ if (driver->flags & MACHINE_NO_SOUND)
+ tempbuf[4].append("Sound: Unimplemented");
+ else if (driver->flags & MACHINE_IMPERFECT_SOUND)
+ tempbuf[4].append("Sound: Imperfect");
+ else
+ tempbuf[4].append("Sound: OK");
+
+ color = UI_GREEN_COLOR;
+
+ if ((driver->flags & (MACHINE_IMPERFECT_GRAPHICS | MACHINE_WRONG_COLORS | MACHINE_IMPERFECT_COLORS
+ | MACHINE_NO_SOUND | MACHINE_IMPERFECT_SOUND)) != 0)
+ color = UI_YELLOW_COLOR;
+
+ if ((driver->flags & (MACHINE_NOT_WORKING | MACHINE_UNEMULATED_PROTECTION)) != 0)
+ color = UI_RED_COLOR;
+
+ }
+
+ else if ((FPTR)swinfo > 1)
+ {
+ isstar = machine().favorite().isgame_favorite(*swinfo);
+
+ // first line is long name
+ strprintf(tempbuf[0], "%-.100s", swinfo->longname.c_str());
+
+ // next line is year, publisher
+ strprintf(tempbuf[1], "%s, %-.100s", swinfo->year.c_str(), swinfo->publisher.c_str());
+
+ // next line is parent/clone
+ if (!swinfo->parentname.empty())
+ strprintf(tempbuf[2], "Software is clone of: %-.100s", !swinfo->parentlongname.empty() ? swinfo->parentlongname.c_str() : swinfo->parentname.c_str());
+ else
+ tempbuf[2] = "Software is parent";
+
+ // next line is supported status
+ if (swinfo->supported == SOFTWARE_SUPPORTED_NO)
+ {
+ tempbuf[3] = "Supported: No";
+ color = UI_RED_COLOR;
+ }
+ else if (swinfo->supported == SOFTWARE_SUPPORTED_PARTIAL)
+ {
+ tempbuf[3] = "Supported: Partial";
+ color = UI_YELLOW_COLOR;
+ }
+ else
+ {
+ tempbuf[3] = "Supported: Yes";
+ color = UI_GREEN_COLOR;
+ }
+
+ // last line is romset name
+ strprintf(tempbuf[4], "romset: %-.100s", swinfo->shortname.c_str());
+ }
+
+ else
+ {
+ std::string copyright(emulator_info::get_copyright());
+ size_t found = copyright.find("\n");
+
+ tempbuf[0].clear();
+ tempbuf[1].assign(emulator_info::get_appname()).append(" ").append(build_version);
+ tempbuf[2] = copyright.substr(0, found);
+ tempbuf[3] = copyright.substr(found + 1);
+ tempbuf[4].clear();
+ }
+
+ // compute our bounds
+ x1 = 0.5f - 0.5f * maxwidth;
+ x2 = x1 + maxwidth;
+ y1 = y2;
+ y2 = origy1 - UI_BOX_TB_BORDER;
+
+ // draw toolbar
+ draw_toolbar(x1, y1, x2, y2, true);
+
+ // get the size of the text
+ maxwidth = origx2 - origx1;
+
+ for (auto & elem : tempbuf)
+ {
+ mui.draw_text_full(container, elem.c_str(), 0.0f, 0.0f, 1.0f, JUSTIFY_CENTER, WRAP_NEVER,
+ DRAW_NONE, ARGB_WHITE, ARGB_BLACK, &width, nullptr);
+ width += 2 * UI_BOX_LR_BORDER;
+ maxwidth = MAX(maxwidth, width);
+ }
+
+ // compute our bounds
+ x1 = 0.5f - 0.5f * maxwidth;
+ x2 = x1 + maxwidth;
+ y1 = origy2 + UI_BOX_TB_BORDER;
+ y2 = origy2 + bottom;
+
+ // draw a box
+ mui.draw_outlined_box(container, x1, y1, x2, y2, color);
+
+ // take off the borders
+ x1 += UI_BOX_LR_BORDER;
+ x2 -= UI_BOX_LR_BORDER;
+ y1 += UI_BOX_TB_BORDER;
+
+ // is favorite? draw the star
+ if (isstar)
+ draw_star(x1, y1);
+
+ // draw all lines
+ for (auto & elem : tempbuf)
+ {
+ mui.draw_text_full(container, elem.c_str(), x1, y1, x2 - x1, JUSTIFY_CENTER, WRAP_NEVER,
+ DRAW_NORMAL, UI_TEXT_COLOR, UI_TEXT_BG_COLOR, nullptr, nullptr);
+ y1 += machine().ui().get_line_height();
+ }
+}
+
+//-------------------------------------------------
+// handle select key event
+//-------------------------------------------------
+
+void ui_menu_select_software::inkey_select(const ui_menu_event *m_event)
+{
+ ui_software_info *ui_swinfo = (ui_software_info *)m_event->itemref;
+ ui_options &mopt = machine().ui().options();
+
+ if (ui_swinfo->startempty == 1)
+ {
+ std::vector<s_bios> biosname;
+ if (has_multiple_bios(ui_swinfo->driver, biosname) && !mopt.skip_bios_menu())
+ ui_menu::stack_push(global_alloc_clear<ui_bios_selection>(machine(), container, biosname, (void *)ui_swinfo->driver, false, true));
+ else
+ {
+ reselect_last::driver = ui_swinfo->driver->name;
+ reselect_last::software = "[Start empty]";
+ reselect_last::swlist.clear();
+ reselect_last::set(true);
+ machine().manager().schedule_new_driver(*ui_swinfo->driver);
+ machine().schedule_hard_reset();
+ ui_menu::stack_reset(machine());
+ }
+ }
+
+ else
+ {
+ // first validate
+ driver_enumerator drivlist(machine().options(), *ui_swinfo->driver);
+ media_auditor auditor(drivlist);
+ drivlist.next();
+ software_list_device *swlist = software_list_device::find_by_name(drivlist.config(), ui_swinfo->listname.c_str());
+ software_info *swinfo = swlist->find(ui_swinfo->shortname.c_str());
+
+ media_auditor::summary summary = auditor.audit_software(swlist->list_name(), swinfo, AUDIT_VALIDATE_FAST);
+
+ if (summary == media_auditor::CORRECT || summary == media_auditor::BEST_AVAILABLE || summary == media_auditor::NONE_NEEDED)
+ {
+ std::vector<s_bios> biosname;
+ if (!mopt.skip_bios_menu() && has_multiple_bios(ui_swinfo->driver, biosname))
+ {
+ ui_menu::stack_push(global_alloc_clear<ui_bios_selection>(machine(), container, biosname, (void *)ui_swinfo, true, false));
+ return;
+ }
+ else if (!mopt.skip_parts_menu() && swinfo->has_multiple_parts(ui_swinfo->interface.c_str()))
+ {
+ std::unordered_map<std::string, std::string> parts;
+ for (const software_part *swpart = swinfo->first_part(); swpart != nullptr; swpart = swpart->next())
+ {
+ if (swpart->matches_interface(ui_swinfo->interface.c_str()))
+ {
+ std::string menu_part_name(swpart->name());
+ if (swpart->feature("part_id") != nullptr)
+ menu_part_name.assign("(").append(swpart->feature("part_id")).append(")");
+ parts.emplace(swpart->name(), menu_part_name);
+ }
+ }
+ ui_menu::stack_push(global_alloc_clear<ui_software_parts>(machine(), container, parts, ui_swinfo));
+ return;
+ }
+ std::string error_string;
+ std::string string_list = std::string(ui_swinfo->listname).append(":").append(ui_swinfo->shortname).append(":").append(ui_swinfo->part).append(":").append(ui_swinfo->instance);
+ machine().options().set_value(OPTION_SOFTWARENAME, string_list.c_str(), OPTION_PRIORITY_CMDLINE, error_string);
+ std::string snap_list = std::string(ui_swinfo->listname).append(PATH_SEPARATOR).append(ui_swinfo->shortname);
+ machine().options().set_value(OPTION_SNAPNAME, snap_list.c_str(), OPTION_PRIORITY_CMDLINE, error_string);
+ reselect_last::driver = drivlist.driver().name;
+ reselect_last::software = ui_swinfo->shortname;
+ reselect_last::swlist = ui_swinfo->listname;
+ reselect_last::set(true);
+ machine().manager().schedule_new_driver(drivlist.driver());
+ machine().schedule_hard_reset();
+ ui_menu::stack_reset(machine());
+ }
+
+ // otherwise, display an error
+ else
+ {
+ reset(UI_MENU_RESET_REMEMBER_POSITION);
+ ui_error = true;
+ }
+ }
+}
+
+//-------------------------------------------------
+// handle special key event
+//-------------------------------------------------
+
+void ui_menu_select_software::inkey_special(const ui_menu_event *m_event)
+{
+ int buflen = strlen(m_search);
+
+ // if it's a backspace and we can handle it, do so
+ if ((m_event->unichar == 8 || m_event->unichar == 0x7f) && buflen > 0)
+ {
+ *(char *)utf8_previous_char(&m_search[buflen]) = 0;
+ reset(UI_MENU_RESET_SELECT_FIRST);
+ }
+
+ // if it's any other key and we're not maxed out, update
+ else if (m_event->unichar >= ' ' && m_event->unichar < 0x7f)
+ {
+ buflen += utf8_from_uchar(&m_search[buflen], ARRAY_LENGTH(m_search) - buflen, m_event->unichar);
+ m_search[buflen] = 0;
+ reset(UI_MENU_RESET_SELECT_FIRST);
+ }
+}
+
+//-------------------------------------------------
+// load custom filters info from file
+//-------------------------------------------------
+
+void ui_menu_select_software::load_sw_custom_filters()
+{
+ // attempt to open the output file
+ emu_file file(machine().ui().options().ui_path(), OPEN_FLAG_READ);
+ if (file.open("custom_", m_driver->name, "_filter.ini") == FILERR_NONE)
+ {
+ char buffer[MAX_CHAR_INFO];
+
+ // get number of filters
+ file.gets(buffer, MAX_CHAR_INFO);
+ char *pb = strchr(buffer, '=');
+ sw_custfltr::numother = atoi(++pb) - 1;
+
+ // get main filter
+ file.gets(buffer, MAX_CHAR_INFO);
+ pb = strchr(buffer, '=') + 2;
+
+ for (int y = 0; y < sw_filters::length; ++y)
+ if (!strncmp(pb, sw_filters::text[y], strlen(sw_filters::text[y])))
+ {
+ sw_custfltr::main = y;
+ break;
+ }
+
+ for (int x = 1; x <= sw_custfltr::numother; ++x)
+ {
+ file.gets(buffer, MAX_CHAR_INFO);
+ char *cb = strchr(buffer, '=') + 2;
+ for (int y = 0; y < sw_filters::length; y++)
+ {
+ if (!strncmp(cb, sw_filters::text[y], strlen(sw_filters::text[y])))
+ {
+ sw_custfltr::other[x] = y;
+ if (y == UI_SW_PUBLISHERS)
+ {
+ file.gets(buffer, MAX_CHAR_INFO);
+ char *ab = strchr(buffer, '=') + 2;
+ for (size_t z = 0; z < m_filter.publisher.ui.size(); ++z)
+ if (!strncmp(ab, m_filter.publisher.ui[z].c_str(), m_filter.publisher.ui[z].length()))
+ sw_custfltr::mnfct[x] = z;
+ }
+ else if (y == UI_SW_YEARS)
+ {
+ file.gets(buffer, MAX_CHAR_INFO);
+ char *db = strchr(buffer, '=') + 2;
+ for (size_t z = 0; z < m_filter.year.ui.size(); ++z)
+ if (!strncmp(db, m_filter.year.ui[z].c_str(), m_filter.year.ui[z].length()))
+ sw_custfltr::year[x] = z;
+ }
+ else if (y == UI_SW_LIST)
+ {
+ file.gets(buffer, MAX_CHAR_INFO);
+ char *gb = strchr(buffer, '=') + 2;
+ for (size_t z = 0; z < m_filter.swlist.name.size(); ++z)
+ if (!strncmp(gb, m_filter.swlist.name[z].c_str(), m_filter.swlist.name[z].length()))
+ sw_custfltr::list[x] = z;
+ }
+ else if (y == UI_SW_TYPE)
+ {
+ file.gets(buffer, MAX_CHAR_INFO);
+ char *fb = strchr(buffer, '=') + 2;
+ for (size_t z = 0; z < m_filter.type.ui.size(); ++z)
+ if (!strncmp(fb, m_filter.type.ui[z].c_str(), m_filter.type.ui[z].length()))
+ sw_custfltr::type[x] = z;
+ }
+ else if (y == UI_SW_REGION)
+ {
+ file.gets(buffer, MAX_CHAR_INFO);
+ char *eb = strchr(buffer, '=') + 2;
+ for (size_t z = 0; z < m_filter.region.ui.size(); ++z)
+ if (!strncmp(eb, m_filter.region.ui[z].c_str(), m_filter.region.ui[z].length()))
+ sw_custfltr::region[x] = z;
+ }
+ }
+ }
+ }
+ file.close();
+ }
+}
+
+//-------------------------------------------------
+// set software regions
+//-------------------------------------------------
+
+void c_sw_region::set(std::string &str)
+{
+ std::string name = getname(str);
+ if (std::find(ui.begin(), ui.end(), name) != ui.end())
+ return;
+
+ ui.push_back(name);
+}
+
+std::string c_sw_region::getname(std::string &str)
+{
+ std::string fullname(str);
+ strmakelower(fullname);
+ size_t found = fullname.find("(");
+
+ if (found != std::string::npos)
+ {
+ size_t ends = fullname.find_first_not_of("abcdefghijklmnopqrstuvwxyz", found + 1);
+ std::string temp(fullname.substr(found + 1, ends - found - 1));
+
+ for (auto & elem : region_lists)
+ if (temp == elem)
+ return (str.substr(found + 1, ends - found - 1));
+ }
+ return std::string("<none>");
+}
+
+//-------------------------------------------------
+// set software device type
+//-------------------------------------------------
+
+void c_sw_type::set(std::string &str)
+{
+ if (std::find(ui.begin(), ui.end(), str) != ui.end())
+ return;
+
+ ui.push_back(str);
+}
+
+//-------------------------------------------------
+// set software years
+//-------------------------------------------------
+
+void c_sw_year::set(std::string &str)
+{
+ if (std::find(ui.begin(), ui.end(), str) != ui.end())
+ return;
+
+ ui.push_back(str);
+}
+
+//-------------------------------------------------
+// set software publishers
+//-------------------------------------------------
+
+void c_sw_publisher::set(std::string &str)
+{
+ std::string name = getname(str);
+ if (std::find(ui.begin(), ui.end(), name) != ui.end())
+ return;
+
+ ui.push_back(name);
+}
+
+std::string c_sw_publisher::getname(std::string &str)
+{
+ size_t found = str.find("(");
+
+ if (found != std::string::npos)
+ return (str.substr(0, found - 1));
+ else
+ return str;
+}
+
+//-------------------------------------------------
+// build display list
+//-------------------------------------------------
+void ui_menu_select_software::build_list(std::vector<ui_software_info *> &s_drivers, const char *filter_text, int filter)
+{
+
+ if (s_drivers.empty() && filter == -1)
+ {
+ filter = sw_filters::actual;
+ s_drivers = m_sortedlist;
+ }
+
+ // iterate over entries
+ for (auto & s_driver : s_drivers)
+ {
+ switch (filter)
+ {
+ case UI_SW_PARENTS:
+ if (s_driver->parentname.empty())
+ m_displaylist.push_back(s_driver);
+ break;
+
+ case UI_SW_CLONES:
+ if (!s_driver->parentname.empty())
+ m_displaylist.push_back(s_driver);
+ break;
+
+ case UI_SW_AVAILABLE:
+ if (s_driver->available)
+ m_displaylist.push_back(s_driver);
+ break;
+
+ case UI_SW_UNAVAILABLE:
+ if (!s_driver->available)
+ m_displaylist.push_back(s_driver);
+ break;
+
+ case UI_SW_SUPPORTED:
+ if (s_driver->supported == SOFTWARE_SUPPORTED_YES)
+ m_displaylist.push_back(s_driver);
+ break;
+
+ case UI_SW_PARTIAL_SUPPORTED:
+ if (s_driver->supported == SOFTWARE_SUPPORTED_PARTIAL)
+ m_displaylist.push_back(s_driver);
+ break;
+
+ case UI_SW_UNSUPPORTED:
+ if (s_driver->supported == SOFTWARE_SUPPORTED_NO)
+ m_displaylist.push_back(s_driver);
+ break;
+
+ case UI_SW_REGION:
+ {
+ std::string name = m_filter.region.getname(s_driver->longname);
+
+ if(!name.empty() && name == filter_text)
+ m_displaylist.push_back(s_driver);
+ break;
+ }
+
+ case UI_SW_PUBLISHERS:
+ {
+ std::string name = m_filter.publisher.getname(s_driver->publisher);
+
+ if(!name.empty() && name == filter_text)
+ m_displaylist.push_back(s_driver);
+ break;
+ }
+
+ case UI_SW_YEARS:
+ if(s_driver->year == filter_text)
+ m_displaylist.push_back(s_driver);
+ break;
+
+ case UI_SW_LIST:
+ if(s_driver->listname == filter_text)
+ m_displaylist.push_back(s_driver);
+ break;
+
+ case UI_SW_TYPE:
+ if(s_driver->devicetype == filter_text)
+ m_displaylist.push_back(s_driver);
+ break;
+
+ default:
+ m_displaylist.push_back(s_driver);
+ break;
+ }
+ }
+}
+
+//-------------------------------------------------
+// find approximate matches
+//-------------------------------------------------
+
+void ui_menu_select_software::find_matches(const char *str, int count)
+{
+ // allocate memory to track the penalty value
+ std::vector<int> penalty(count, 9999);
+ int index = 0;
+
+ for (; m_displaylist[index]; ++index)
+ {
+ // pick the best match between driver name and description
+ int curpenalty = fuzzy_substring(str, m_displaylist[index]->longname);
+ int tmp = fuzzy_substring(str, m_displaylist[index]->shortname);
+ curpenalty = MIN(curpenalty, tmp);
+
+ // insert into the sorted table of matches
+ for (int matchnum = count - 1; matchnum >= 0; --matchnum)
+ {
+ // stop if we're worse than the current entry
+ if (curpenalty >= penalty[matchnum])
+ break;
+
+ // as long as this isn't the last entry, bump this one down
+ if (matchnum < count - 1)
+ {
+ penalty[matchnum + 1] = penalty[matchnum];
+ m_searchlist[matchnum + 1] = m_searchlist[matchnum];
+ }
+
+ m_searchlist[matchnum] = m_displaylist[index];
+ penalty[matchnum] = curpenalty;
+ }
+ }
+ (index < count) ? m_searchlist[index] = nullptr : m_searchlist[count] = nullptr;
+}
+
+//-------------------------------------------------
+// build custom display list
+//-------------------------------------------------
+
+void ui_menu_select_software::build_custom()
+{
+ std::vector<ui_software_info *> s_drivers;
+
+ build_list(m_sortedlist, nullptr, sw_custfltr::main);
+
+ for (int count = 1; count <= sw_custfltr::numother; ++count)
+ {
+ int filter = sw_custfltr::other[count];
+ s_drivers = m_displaylist;
+ m_displaylist.clear();
+
+ switch (filter)
+ {
+ case UI_SW_YEARS:
+ build_list(s_drivers, m_filter.year.ui[sw_custfltr::year[count]].c_str(), filter);
+ break;
+ case UI_SW_LIST:
+ build_list(s_drivers, m_filter.swlist.name[sw_custfltr::list[count]].c_str(), filter);
+ break;
+ case UI_SW_TYPE:
+ build_list(s_drivers, m_filter.type.ui[sw_custfltr::type[count]].c_str(), filter);
+ break;
+ case UI_SW_PUBLISHERS:
+ build_list(s_drivers, m_filter.publisher.ui[sw_custfltr::mnfct[count]].c_str(), filter);
+ break;
+ case UI_SW_REGION:
+ build_list(s_drivers, m_filter.region.ui[sw_custfltr::region[count]].c_str(), filter);
+ break;
+ default:
+ build_list(s_drivers, nullptr, filter);
+ break;
+ }
+ }
+}
+
+//-------------------------------------------------
+// draw left box
+//-------------------------------------------------
+
+float ui_menu_select_software::draw_left_panel(float x1, float y1, float x2, float y2)
+{
+ ui_manager &mui = machine().ui();
+
+ if (ui_globals::panels_status == SHOW_PANELS || ui_globals::panels_status == HIDE_RIGHT_PANEL)
+ {
+ float origy1 = y1;
+ float origy2 = y2;
+ float text_size = 0.75f;
+ float l_height = mui.get_line_height();
+ float line_height = l_height * text_size;
+ float left_width = 0.0f;
+ int text_lenght = sw_filters::length;
+ int afilter = sw_filters::actual;
+ int phover = HOVER_SW_FILTER_FIRST;
+ const char **text = sw_filters::text;
+ float sc = y2 - y1 - (2.0f * UI_BOX_TB_BORDER);
+
+ if ((text_lenght * line_height) > sc)
+ {
+ float lm = sc / (text_lenght);
+ text_size = lm / l_height;
+ line_height = l_height * text_size;
+ }
+
+ float text_sign = mui.get_string_width_ex("_# ", text_size);
+ for (int x = 0; x < text_lenght; ++x)
+ {
+ float total_width;
+
+ // compute width of left hand side
+ total_width = mui.get_string_width_ex(text[x], text_size);
+ total_width += text_sign;
+
+ // track the maximum
+ if (total_width > left_width)
+ left_width = total_width;
+ }
+
+ x2 = x1 + left_width + 2.0f * UI_BOX_LR_BORDER;
+ //machine().ui().draw_outlined_box(container, x1, y1, x2, y2, rgb_t(0xEF, 0x12, 0x47, 0x7B));
+ mui.draw_outlined_box(container, x1, y1, x2, y2, UI_BACKGROUND_COLOR);
+
+ // take off the borders
+ x1 += UI_BOX_LR_BORDER;
+ x2 -= UI_BOX_LR_BORDER;
+ y1 += UI_BOX_TB_BORDER;
+ y2 -= UI_BOX_TB_BORDER;
+
+ for (int filter = 0; filter < text_lenght; ++filter)
+ {
+ std::string str(text[filter]);
+ rgb_t bgcolor = UI_TEXT_BG_COLOR;
+ rgb_t fgcolor = UI_TEXT_COLOR;
+
+ if (mouse_hit && x1 <= mouse_x && x2 > mouse_x && y1 <= mouse_y && y1 + line_height > mouse_y)
+ {
+ bgcolor = UI_MOUSEOVER_BG_COLOR;
+ fgcolor = UI_MOUSEOVER_COLOR;
+ hover = phover + filter;
+ }
+
+ if (afilter == filter)
+ {
+ bgcolor = UI_SELECTED_BG_COLOR;
+ fgcolor = UI_SELECTED_COLOR;
+ }
+
+ if (bgcolor != UI_TEXT_BG_COLOR)
+ container->add_rect(x1, y1, x2, y1 + line_height, bgcolor, PRIMFLAG_BLENDMODE(BLENDMODE_ALPHA) | PRIMFLAG_TEXWRAP(TRUE));
+
+ float x1t = x1 + text_sign;
+ if (afilter == UI_SW_CUSTOM)
+ {
+ if (filter == sw_custfltr::main)
+ {
+ str.assign("@custom1 ").append(text[filter]);
+ x1t -= text_sign;
+ }
+ else
+ {
+ for (int count = 1; count <= sw_custfltr::numother; ++count)
+ {
+ int cfilter = sw_custfltr::other[count];
+ if (cfilter == filter)
+ {
+ strprintf(str, "@custom%d %s", count + 1, text[filter]);
+ x1t -= text_sign;
+ break;
+ }
+ }
+ }
+ convert_command_glyph(str);
+ }
+
+ mui.draw_text_full(container, str.c_str(), x1t, y1, x2 - x1, JUSTIFY_LEFT, WRAP_NEVER,
+ DRAW_NORMAL, fgcolor, bgcolor, nullptr, nullptr, text_size);
+ y1 += line_height;
+ }
+
+ x1 = x2 + UI_BOX_LR_BORDER;
+ x2 = x1 + 2.0f * UI_BOX_LR_BORDER;
+ y1 = origy1;
+ y2 = origy2;
+ line_height = mui.get_line_height();
+ float lr_arrow_width = 0.4f * line_height * machine().render().ui_aspect();
+ rgb_t fgcolor = UI_TEXT_COLOR;
+
+ // set left-right arrows dimension
+ float ar_x0 = 0.5f * (x2 + x1) - 0.5f * lr_arrow_width;
+ float ar_y0 = 0.5f * (y2 + y1) + 0.1f * line_height;
+ float ar_x1 = ar_x0 + lr_arrow_width;
+ float ar_y1 = 0.5f * (y2 + y1) + 0.9f * line_height;
+
+ //machine().ui().draw_outlined_box(container, x1, y1, x2, y2, UI_BACKGROUND_COLOR);
+ mui.draw_outlined_box(container, x1, y1, x2, y2, rgb_t(0xEF, 0x12, 0x47, 0x7B));
+
+ if (mouse_hit && x1 <= mouse_x && x2 > mouse_x && y1 <= mouse_y && y2 > mouse_y)
+ {
+ fgcolor = UI_MOUSEOVER_COLOR;
+ hover = HOVER_LPANEL_ARROW;
+ }
+
+ draw_arrow(container, ar_x0, ar_y0, ar_x1, ar_y1, fgcolor, ROT90 ^ ORIENTATION_FLIP_X);
+ return x2 + UI_BOX_LR_BORDER;
+ }
+ else
+ {
+ float line_height = mui.get_line_height();
+ float lr_arrow_width = 0.4f * line_height * machine().render().ui_aspect();
+ rgb_t fgcolor = UI_TEXT_COLOR;
+
+ // set left-right arrows dimension
+ float ar_x0 = 0.5f * (x2 + x1) - 0.5f * lr_arrow_width;
+ float ar_y0 = 0.5f * (y2 + y1) + 0.1f * line_height;
+ float ar_x1 = ar_x0 + lr_arrow_width;
+ float ar_y1 = 0.5f * (y2 + y1) + 0.9f * line_height;
+
+ //machine().ui().draw_outlined_box(container, x1, y1, x2, y2, UI_BACKGROUND_COLOR);
+ mui.draw_outlined_box(container, x1, y1, x2, y2, rgb_t(0xEF, 0x12, 0x47, 0x7B));
+
+ if (mouse_hit && x1 <= mouse_x && x2 > mouse_x && y1 <= mouse_y && y2 > mouse_y)
+ {
+ fgcolor = UI_MOUSEOVER_COLOR;
+ hover = HOVER_LPANEL_ARROW;
+ }
+
+ draw_arrow(container, ar_x0, ar_y0, ar_x1, ar_y1, fgcolor, ROT90);
+ return x2 + UI_BOX_LR_BORDER;
+ }
+}
+
+//-------------------------------------------------
+// draw infos
+//-------------------------------------------------
+
+void ui_menu_select_software::infos_render(void *selectedref, float origx1, float origy1, float origx2, float origy2)
+{
+ ui_manager &mui = machine().ui();
+ float line_height = mui.get_line_height();
+ static std::string buffer;
+ std::vector<int> xstart;
+ std::vector<int> xend;
+ float text_size = machine().ui().options().infos_size();
+ ui_software_info *soft = ((FPTR)selectedref > 2) ? (ui_software_info *)selectedref : nullptr;
+ static ui_software_info *oldsoft = nullptr;
+ static int old_sw_view = -1;
+
+ float gutter_width = 0.4f * line_height * machine().render().ui_aspect() * 1.3f;
+ float ud_arrow_width = line_height * machine().render().ui_aspect();
+ float oy1 = origy1 + line_height;
+
+ // apply title to right panel
+ if (soft && soft->usage.empty())
+ {
+ mui.draw_text_full(container, "History", origx1, origy1, origx2 - origx1, JUSTIFY_CENTER, WRAP_TRUNCATE,
+ DRAW_NORMAL, UI_TEXT_COLOR, UI_TEXT_BG_COLOR, nullptr, nullptr);
+ ui_globals::cur_sw_dats_view = 0;
+ }
+ else
+ {
+ float title_size = 0.0f;
+ float txt_lenght = 0.0f;
+ std::string t_text[2];
+ t_text[0] = "History";
+ t_text[1] = "Usage";
+
+ for (auto & elem : t_text)
+ {
+ mui.draw_text_full(container, elem.c_str(), origx1, origy1, origx2 - origx1, JUSTIFY_CENTER, WRAP_TRUNCATE,
+ DRAW_NONE, UI_TEXT_COLOR, UI_TEXT_BG_COLOR, &txt_lenght, nullptr);
+ txt_lenght += 0.01f;
+ title_size = MAX(txt_lenght, title_size);
+ }
+
+ mui.draw_text_full(container, t_text[ui_globals::cur_sw_dats_view].c_str(), origx1, origy1, origx2 - origx1,
+ JUSTIFY_CENTER, WRAP_TRUNCATE, DRAW_NORMAL, UI_TEXT_COLOR, UI_TEXT_BG_COLOR,
+ nullptr, nullptr);
+
+ draw_common_arrow(origx1, origy1, origx2, origy2, ui_globals::cur_sw_dats_view, 0, 1, title_size);
+ }
+
+ if (oldsoft != soft || old_sw_view != ui_globals::cur_sw_dats_view)
+ {
+ buffer.clear();
+ old_sw_view = ui_globals::cur_sw_dats_view;
+ oldsoft = soft;
+ if (ui_globals::cur_sw_dats_view == 0)
+ {
+ if (soft->startempty == 1)
+ machine().datfile().load_data_info(soft->driver, buffer, UI_HISTORY_LOAD);
+ else
+ machine().datfile().load_software_info(soft->listname, buffer, soft->shortname, soft->parentname);
+ }
+ else
+ buffer = soft->usage;
+ }
+
+ if (buffer.empty())
+ {
+ mui.draw_text_full(container, "No Infos Available", origx1, (origy2 + origy1) * 0.5f, origx2 - origx1, JUSTIFY_CENTER,
+ WRAP_WORD, DRAW_NORMAL, UI_TEXT_COLOR, UI_TEXT_BG_COLOR, nullptr, nullptr);
+ return;
+ }
+ else
+ mui.wrap_text(container, buffer.c_str(), origx1, origy1, origx2 - origx1 - (2.0f * gutter_width), totallines,
+ xstart, xend, text_size);
+
+ int r_visible_lines = floor((origy2 - oy1) / (line_height * text_size));
+ if (totallines < r_visible_lines)
+ r_visible_lines = totallines;
+ if (topline_datsview < 0)
+ topline_datsview = 0;
+ if (topline_datsview + r_visible_lines >= totallines)
+ topline_datsview = totallines - r_visible_lines;
+
+ for (int r = 0; r < r_visible_lines; ++r)
+ {
+ int itemline = r + topline_datsview;
+ std::string tempbuf;
+ tempbuf.assign(buffer.substr(xstart[itemline], xend[itemline] - xstart[itemline]));
+
+ // up arrow
+ if (r == 0 && topline_datsview != 0)
+ info_arrow(0, origx1, origx2, oy1, line_height, text_size, ud_arrow_width);
+ // bottom arrow
+ else if (r == r_visible_lines - 1 && itemline != totallines - 1)
+ info_arrow(1, origx1, origx2, oy1, line_height, text_size, ud_arrow_width);
+ else
+ mui.draw_text_full(container, tempbuf.c_str(), origx1 + gutter_width, oy1, origx2 - origx1,
+ JUSTIFY_LEFT, WRAP_TRUNCATE, DRAW_NORMAL, UI_TEXT_COLOR, UI_TEXT_BG_COLOR,
+ nullptr, nullptr, text_size);
+ oy1 += (line_height * text_size);
+ }
+
+ // return the number of visible lines, minus 1 for top arrow and 1 for bottom arrow
+ right_visible_lines = r_visible_lines - (topline_datsview != 0) - (topline_datsview + r_visible_lines != totallines);
+}
+
+//-------------------------------------------------
+// perform our special rendering
+//-------------------------------------------------
+
+void ui_menu_select_software::arts_render(void *selectedref, float origx1, float origy1, float origx2, float origy2)
+{
+ ui_manager &mui = machine().ui();
+ float line_height = mui.get_line_height();
+ static ui_software_info *oldsoft = nullptr;
+ static const game_driver *olddriver = nullptr;
+ const game_driver *driver = nullptr;
+ ui_software_info *soft = ((FPTR)selectedref > 2) ? (ui_software_info *)selectedref : nullptr;
+
+ if (soft && soft->startempty == 1)
+ {
+ driver = soft->driver;
+ oldsoft = nullptr;
+ }
+ else
+ olddriver = nullptr;
+
+ if (driver)
+ {
+ if (ui_globals::default_image)
+ ((driver->flags & MACHINE_TYPE_ARCADE) == 0) ? ui_globals::curimage_view = CABINETS_VIEW : ui_globals::curimage_view = SNAPSHOT_VIEW;
+
+ std::string searchstr;
+ searchstr = arts_render_common(origx1, origy1, origx2, origy2);
+
+ // loads the image if necessary
+ if (driver != olddriver || !snapx_bitmap->valid() || ui_globals::switch_image)
+ {
+ emu_file snapfile(searchstr.c_str(), OPEN_FLAG_READ);
+ bitmap_argb32 *tmp_bitmap;
+ tmp_bitmap = auto_alloc(machine(), bitmap_argb32);
+
+ // try to load snapshot first from saved "0000.png" file
+ std::string fullname(driver->name);
+ render_load_png(*tmp_bitmap, snapfile, fullname.c_str(), "0000.png");
+
+ if (!tmp_bitmap->valid())
+ render_load_jpeg(*tmp_bitmap, snapfile, fullname.c_str(), "0000.jpg");
+
+ // if fail, attemp to load from standard file
+ if (!tmp_bitmap->valid())
+ {
+ fullname.assign(driver->name).append(".png");
+ render_load_png(*tmp_bitmap, snapfile, nullptr, fullname.c_str());
+
+ if (!tmp_bitmap->valid())
+ {
+ fullname.assign(driver->name).append(".jpg");
+ render_load_jpeg(*tmp_bitmap, snapfile, nullptr, fullname.c_str());
+ }
+ }
+
+ // if fail again, attemp to load from parent file
+ if (!tmp_bitmap->valid())
+ {
+ // set clone status
+ bool cloneof = strcmp(driver->parent, "0");
+ if (cloneof)
+ {
+ int cx = driver_list::find(driver->parent);
+ if (cx != -1 && ((driver_list::driver(cx).flags & MACHINE_IS_BIOS_ROOT) != 0))
+ cloneof = false;
+ }
+
+ if (cloneof)
+ {
+ fullname.assign(driver->parent).append(".png");
+ render_load_png(*tmp_bitmap, snapfile, nullptr, fullname.c_str());
+
+ if (!tmp_bitmap->valid())
+ {
+ fullname.assign(driver->parent).append(".jpg");
+ render_load_jpeg(*tmp_bitmap, snapfile, nullptr, fullname.c_str());
+ }
+ }
+ }
+
+ olddriver = driver;
+ ui_globals::switch_image = false;
+ arts_render_images(tmp_bitmap, origx1, origy1, origx2, origy2, false);
+ auto_free(machine(), tmp_bitmap);
+ }
+
+ // if the image is available, loaded and valid, display it
+ if (snapx_bitmap->valid())
+ {
+ float x1 = origx1 + 0.01f;
+ float x2 = origx2 - 0.01f;
+ float y1 = origy1 + UI_BOX_TB_BORDER + line_height;
+ float y2 = origy2 - UI_BOX_TB_BORDER - line_height;
+
+ // apply texture
+ container->add_quad( x1, y1, x2, y2, ARGB_WHITE, snapx_texture, PRIMFLAG_BLENDMODE(BLENDMODE_ALPHA));
+ }
+ }
+ else if (soft)
+ {
+ std::string fullname, pathname;
+ if (ui_globals::default_image)
+ (soft->startempty == 0) ? ui_globals::curimage_view = SNAPSHOT_VIEW : ui_globals::curimage_view = CABINETS_VIEW;
+
+ // arts title and searchpath
+ std::string searchstr;
+ searchstr = arts_render_common(origx1, origy1, origx2, origy2);
+
+ // loads the image if necessary
+ if (soft != oldsoft || !snapx_bitmap->valid() || ui_globals::switch_image)
+ {
+ emu_file snapfile(searchstr.c_str(), OPEN_FLAG_READ);
+ bitmap_argb32 *tmp_bitmap;
+ tmp_bitmap = auto_alloc(machine(), bitmap_argb32);
+
+ if (soft->startempty == 1)
+ {
+ // Load driver snapshot
+ fullname.assign(soft->driver->name).append(".png");
+ render_load_png(*tmp_bitmap, snapfile, nullptr, fullname.c_str());
+
+ if (!tmp_bitmap->valid())
+ {
+ fullname.assign(soft->driver->name).append(".jpg");
+ render_load_jpeg(*tmp_bitmap, snapfile, nullptr, fullname.c_str());
+ }
+ }
+ else if (ui_globals::curimage_view == TITLES_VIEW)
+ {
+ // First attempt from name list
+ pathname.assign(soft->listname).append("_titles");
+ fullname.assign(soft->shortname).append(".png");
+ render_load_png(*tmp_bitmap, snapfile, pathname.c_str(), fullname.c_str());
+
+ if (!tmp_bitmap->valid())
+ {
+ fullname.assign(soft->shortname).append(".jpg");
+ render_load_jpeg(*tmp_bitmap, snapfile, pathname.c_str(), fullname.c_str());
+ }
+ }
+ else
+ {
+ // First attempt from name list
+ pathname = soft->listname;
+ fullname.assign(soft->shortname).append(".png");
+ render_load_png(*tmp_bitmap, snapfile, pathname.c_str(), fullname.c_str());
+
+ if (!tmp_bitmap->valid())
+ {
+ fullname.assign(soft->shortname).append(".jpg");
+ render_load_jpeg(*tmp_bitmap, snapfile, pathname.c_str(), fullname.c_str());
+ }
+
+ if (!tmp_bitmap->valid())
+ {
+ // Second attempt from driver name + part name
+ pathname.assign(soft->driver->name).append(soft->part);
+ fullname.assign(soft->shortname).append(".png");
+ render_load_png(*tmp_bitmap, snapfile, pathname.c_str(), fullname.c_str());
+
+ if (!tmp_bitmap->valid())
+ {
+ fullname.assign(soft->shortname).append(".jpg");
+ render_load_jpeg(*tmp_bitmap, snapfile, pathname.c_str(), fullname.c_str());
+ }
+ }
+ }
+
+ oldsoft = soft;
+ ui_globals::switch_image = false;
+ arts_render_images(tmp_bitmap, origx1, origy1, origx2, origy2, true);
+ auto_free(machine(), tmp_bitmap);
+ }
+
+ // if the image is available, loaded and valid, display it
+ if (snapx_bitmap->valid())
+ {
+ float x1 = origx1 + 0.01f;
+ float x2 = origx2 - 0.01f;
+ float y1 = origy1 + UI_BOX_TB_BORDER + line_height;
+ float y2 = origy2 - UI_BOX_TB_BORDER - line_height;
+
+ // apply texture
+ container->add_quad(x1, y1, x2, y2, ARGB_WHITE, snapx_texture, PRIMFLAG_BLENDMODE(BLENDMODE_ALPHA));
+ }
+ }
+}
+
+void ui_menu_select_software::draw_right_panel(void *selectedref, float origx1, float origy1, float origx2, float origy2)
+{
+ ui_manager &mui = machine().ui();
+ float line_height = mui.get_line_height();
+ float lr_arrow_width = 0.4f * line_height * machine().render().ui_aspect();
+ rgb_t fgcolor = UI_TEXT_COLOR;
+ bool hide = (ui_globals::panels_status == HIDE_RIGHT_PANEL || ui_globals::panels_status == HIDE_BOTH);
+ float x2 = (hide) ? origx2 : origx1 + 2.0f * UI_BOX_LR_BORDER;
+
+ // set left-right arrows dimension
+ float ar_x0 = 0.5f * (x2 + origx1) - 0.5f * lr_arrow_width;
+ float ar_y0 = 0.5f * (origy2 + origy1) + 0.1f * line_height;
+ float ar_x1 = ar_x0 + lr_arrow_width;
+ float ar_y1 = 0.5f * (origy2 + origy1) + 0.9f * line_height;
+
+ //machine().ui().draw_outlined_box(container, origx1, origy1, origx2, origy2, UI_BACKGROUND_COLOR);
+ mui.draw_outlined_box(container, origx1, origy1, origx2, origy2, rgb_t(0xEF, 0x12, 0x47, 0x7B));
+
+ if (mouse_hit && origx1 <= mouse_x && x2 > mouse_x && origy1 <= mouse_y && origy2 > mouse_y)
+ {
+ fgcolor = UI_MOUSEOVER_COLOR;
+ hover = HOVER_RPANEL_ARROW;
+ }
+
+ if (hide)
+ {
+ draw_arrow(container, ar_x0, ar_y0, ar_x1, ar_y1, fgcolor, ROT90 ^ ORIENTATION_FLIP_X);
+ return;
+ }
+
+ draw_arrow(container, ar_x0, ar_y0, ar_x1, ar_y1, fgcolor, ROT90);
+ origx1 = x2;
+ origy1 = draw_right_box_title(origx1, origy1, origx2, origy2);
+
+ if (ui_globals::rpanel == RP_IMAGES)
+ arts_render(selectedref, origx1, origy1, origx2, origy2);
+ else
+ infos_render(selectedref, origx1, origy1, origx2, origy2);
+}
+
+//-------------------------------------------------
+// ctor
+//-------------------------------------------------
+
+ui_software_parts::ui_software_parts(running_machine &machine, render_container *container, std::unordered_map<std::string, std::string> parts, ui_software_info *ui_info) : ui_menu(machine, container)
+{
+ m_parts = parts;
+ m_uiinfo = ui_info;
+}
+
+//-------------------------------------------------
+// dtor
+//-------------------------------------------------
+
+ui_software_parts::~ui_software_parts()
+{
+}
+
+//-------------------------------------------------
+// populate
+//-------------------------------------------------
+
+void ui_software_parts::populate()
+{
+ for (auto & elem : m_parts)
+ item_append(elem.first.c_str(), elem.second.c_str(), 0, (void *)&elem);
+
+ item_append(MENU_SEPARATOR_ITEM, nullptr, 0, nullptr);
+ customtop = machine().ui().get_line_height() + (3.0f * UI_BOX_TB_BORDER);
+}
+
+//-------------------------------------------------
+// handle
+//-------------------------------------------------
+
+void ui_software_parts::handle()
+{
+ // process the menu
+ const ui_menu_event *event = process(0);
+ if (event != nullptr && event->iptkey == IPT_UI_SELECT && event->itemref != nullptr)
+ for (auto & elem : m_parts)
+ if ((void*)&elem == event->itemref)
+ {
+ std::string error_string;
+ std::string string_list = std::string(m_uiinfo->listname).append(":").append(m_uiinfo->shortname).append(":").append(elem.first).append(":").append(m_uiinfo->instance);
+ machine().options().set_value(OPTION_SOFTWARENAME, string_list.c_str(), OPTION_PRIORITY_CMDLINE, error_string);
+
+ reselect_last::driver = m_uiinfo->driver->name;
+ reselect_last::software = m_uiinfo->shortname;
+ reselect_last::swlist = m_uiinfo->listname;
+ reselect_last::set(true);
+
+ std::string snap_list = std::string(m_uiinfo->listname).append("/").append(m_uiinfo->shortname);
+ machine().options().set_value(OPTION_SNAPNAME, snap_list.c_str(), OPTION_PRIORITY_CMDLINE, error_string);
+
+ machine().manager().schedule_new_driver(*m_uiinfo->driver);
+ machine().schedule_hard_reset();
+ ui_menu::stack_reset(machine());
+ }
+}
+
+//-------------------------------------------------
+// perform our special rendering
+//-------------------------------------------------
+
+void ui_software_parts::custom_render(void *selectedref, float top, float bottom, float origx1, float origy1, float origx2, float origy2)
+{
+ float width;
+ ui_manager &mui = machine().ui();
+ mui.draw_text_full(container, "Software part selection:", 0.0f, 0.0f, 1.0f, JUSTIFY_CENTER, WRAP_TRUNCATE,
+ DRAW_NONE, ARGB_WHITE, ARGB_BLACK, &width, nullptr);
+ width += 2 * UI_BOX_LR_BORDER;
+ float maxwidth = MAX(origx2 - origx1, width);
+
+ // compute our bounds
+ float x1 = 0.5f - 0.5f * maxwidth;
+ float x2 = x1 + maxwidth;
+ float y1 = origy1 - top;
+ float y2 = origy1 - UI_BOX_TB_BORDER;
+
+ // draw a box
+ mui.draw_outlined_box(container, x1, y1, x2, y2, UI_GREEN_COLOR);
+
+ // take off the borders
+ x1 += UI_BOX_LR_BORDER;
+ x2 -= UI_BOX_LR_BORDER;
+ y1 += UI_BOX_TB_BORDER;
+
+ // draw the text within it
+ mui.draw_text_full(container, "Software part selection:", x1, y1, x2 - x1, JUSTIFY_CENTER, WRAP_TRUNCATE,
+ DRAW_NORMAL, UI_TEXT_COLOR, UI_TEXT_BG_COLOR, nullptr, nullptr);
+}
+
+//-------------------------------------------------
+// ctor
+//-------------------------------------------------
+
+ui_bios_selection::ui_bios_selection(running_machine &machine, render_container *container, std::vector<s_bios> biosname, void *_driver, bool _software, bool _inlist) : ui_menu(machine, container)
+{
+ m_bios = biosname;
+ m_driver = _driver;
+ m_software = _software;
+ m_inlist = _inlist;
+}
+
+//-------------------------------------------------
+// dtor
+//-------------------------------------------------
+
+ui_bios_selection::~ui_bios_selection()
+{
+}
+
+//-------------------------------------------------
+// populate
+//-------------------------------------------------
+
+void ui_bios_selection::populate()
+{
+ for (auto & elem : m_bios)
+ item_append(elem.name.c_str(), nullptr, 0, (void *)&elem.name);
+
+ item_append(MENU_SEPARATOR_ITEM, nullptr, 0, nullptr);
+ customtop = machine().ui().get_line_height() + (3.0f * UI_BOX_TB_BORDER);
+}
+
+//-------------------------------------------------
+// handle
+//-------------------------------------------------
+
+void ui_bios_selection::handle()
+{
+ // process the menu
+ const ui_menu_event *event = process(0);
+ ui_options &moptions = machine().ui().options();
+ if (event != nullptr && event->iptkey == IPT_UI_SELECT && event->itemref != nullptr)
+ for (auto & elem : m_bios)
+ if ((void*)&elem.name == event->itemref)
+ {
+ if (!m_software)
+ {
+ const game_driver *s_driver = (const game_driver *)m_driver;
+ reselect_last::driver = s_driver->name;
+ if (m_inlist)
+ reselect_last::software = "[Start empty]";
+ else
+ {
+ reselect_last::software.clear();
+ reselect_last::swlist.clear();
+ reselect_last::set(true);
+ }
+
+ std::string error;
+ moptions.set_value("bios", elem.id, OPTION_PRIORITY_CMDLINE, error);
+ machine().manager().schedule_new_driver(*s_driver);
+ machine().schedule_hard_reset();
+ ui_menu::stack_reset(machine());
+ }
+ else
+ {
+ ui_software_info *ui_swinfo = (ui_software_info *)m_driver;
+ std::string error;
+ machine().options().set_value("bios", elem.id, OPTION_PRIORITY_CMDLINE, error);
+ driver_enumerator drivlist(machine().options(), *ui_swinfo->driver);
+ drivlist.next();
+ software_list_device *swlist = software_list_device::find_by_name(drivlist.config(), ui_swinfo->listname.c_str());
+ software_info *swinfo = swlist->find(ui_swinfo->shortname.c_str());
+ if (!moptions.skip_parts_menu() && swinfo->has_multiple_parts(ui_swinfo->interface.c_str()))
+ {
+ std::unordered_map<std::string, std::string> parts;
+ for (const software_part *swpart = swinfo->first_part(); swpart != nullptr; swpart = swpart->next())
+ {
+ if (swpart->matches_interface(ui_swinfo->interface.c_str()))
+ {
+ std::string menu_part_name(swpart->name());
+ if (swpart->feature("part_id") != nullptr)
+ menu_part_name.assign("(").append(swpart->feature("part_id")).append(")");
+ parts.emplace(swpart->name(), menu_part_name);
+ }
+ }
+ ui_menu::stack_push(global_alloc_clear<ui_software_parts>(machine(), container, parts, ui_swinfo));
+ return;
+ }
+ std::string error_string;
+ std::string string_list = std::string(ui_swinfo->listname).append(":").append(ui_swinfo->shortname).append(":").append(ui_swinfo->part).append(":").append(ui_swinfo->instance);
+ moptions.set_value(OPTION_SOFTWARENAME, string_list.c_str(), OPTION_PRIORITY_CMDLINE, error_string);
+ std::string snap_list = std::string(ui_swinfo->listname).append(PATH_SEPARATOR).append(ui_swinfo->shortname);
+ moptions.set_value(OPTION_SNAPNAME, snap_list.c_str(), OPTION_PRIORITY_CMDLINE, error_string);
+ reselect_last::driver = drivlist.driver().name;
+ reselect_last::software = ui_swinfo->shortname;
+ reselect_last::swlist = ui_swinfo->listname;
+ reselect_last::set(true);
+ machine().manager().schedule_new_driver(drivlist.driver());
+ machine().schedule_hard_reset();
+ ui_menu::stack_reset(machine());
+ }
+ }
+}
+
+//-------------------------------------------------
+// perform our special rendering
+//-------------------------------------------------
+
+void ui_bios_selection::custom_render(void *selectedref, float top, float bottom, float origx1, float origy1, float origx2, float origy2)
+{
+ float width;
+ ui_manager &mui = machine().ui();
+ mui.draw_text_full(container, "Bios selection:", 0.0f, 0.0f, 1.0f, JUSTIFY_CENTER, WRAP_TRUNCATE,
+ DRAW_NONE, ARGB_WHITE, ARGB_BLACK, &width, nullptr);
+ width += 2 * UI_BOX_LR_BORDER;
+ float maxwidth = MAX(origx2 - origx1, width);
+
+ // compute our bounds
+ float x1 = 0.5f - 0.5f * maxwidth;
+ float x2 = x1 + maxwidth;
+ float y1 = origy1 - top;
+ float y2 = origy1 - UI_BOX_TB_BORDER;
+
+ // draw a box
+ mui.draw_outlined_box(container, x1, y1, x2, y2, UI_GREEN_COLOR);
+
+ // take off the borders
+ x1 += UI_BOX_LR_BORDER;
+ x2 -= UI_BOX_LR_BORDER;
+ y1 += UI_BOX_TB_BORDER;
+
+ // draw the text within it
+ mui.draw_text_full(container, "Bios selection:", x1, y1, x2 - x1, JUSTIFY_CENTER, WRAP_TRUNCATE,
+ DRAW_NORMAL, UI_TEXT_COLOR, UI_TEXT_BG_COLOR, nullptr, nullptr);
+}
diff --git a/src/emu/ui/selsoft.h b/src/emu/ui/selsoft.h
new file mode 100644
index 00000000000..8f7e6d413c8
--- /dev/null
+++ b/src/emu/ui/selsoft.h
@@ -0,0 +1,112 @@
+// license:BSD-3-Clause
+// copyright-holders:Dankan1890
+/***************************************************************************
+
+ ui/selsoft.h
+
+ UI softwares menu.
+
+***************************************************************************/
+#pragma once
+
+#ifndef __UI_SELSOFT_H__
+#define __UI_SELSOFT_H__
+
+#include "ui/custmenu.h"
+
+struct s_bios
+{
+ s_bios(std::string _name, int _id) { name = _name; id = _id; }
+ std::string name;
+ int id;
+};
+
+// Menu Class
+class ui_menu_select_software : public ui_menu
+{
+public:
+ ui_menu_select_software(running_machine &machine, render_container *container, const game_driver *driver);
+ virtual ~ui_menu_select_software();
+ virtual void populate() override;
+ virtual void handle() override;
+ virtual void custom_render(void *selectedref, float top, float bottom, float x, float y, float x2, float y2) override;
+
+ virtual bool menu_has_search_active() override { return (m_search[0] != 0); }
+
+ // draw left panel
+ virtual float draw_left_panel(float x1, float y1, float x2, float y2) override;
+
+ // draw right panel
+ virtual void draw_right_panel(void *selectedref, float origx1, float origy1, float origx2, float origy2) override;
+
+private:
+ enum { VISIBLE_GAMES_IN_SEARCH = 200 };
+ char m_search[40];
+ const game_driver *m_driver;
+ bool m_has_empty_start;
+ s_filter m_filter;
+
+ ui_software_info *m_searchlist[VISIBLE_GAMES_IN_SEARCH + 1];
+ std::vector<ui_software_info *> m_displaylist, m_tmp, m_sortedlist;
+ std::vector<ui_software_info> m_swinfo;
+
+ void build_software_list();
+ void build_list(std::vector<ui_software_info *> &vec, const char *filter_text = nullptr, int filter = -1);
+ void build_custom();
+ void find_matches(const char *str, int count);
+ void load_sw_custom_filters();
+
+ void arts_render(void *selectedref, float x1, float y1, float x2, float y2);
+ void infos_render(void *selectedref, float x1, float y1, float x2, float y2);
+
+ // handlers
+ void inkey_select(const ui_menu_event *menu_event);
+ void inkey_special(const ui_menu_event *menu_event);
+};
+
+class ui_software_parts : public ui_menu
+{
+public:
+ ui_software_parts(running_machine &machine, render_container *container, std::unordered_map<std::string, std::string> parts, ui_software_info *ui_info);
+ virtual ~ui_software_parts();
+ virtual void populate() override;
+ virtual void handle() override;
+ virtual void custom_render(void *selectedref, float top, float bottom, float x, float y, float x2, float y2) override;
+
+private:
+ ui_software_info *m_uiinfo;
+ std::unordered_map<std::string, std::string> m_parts;
+};
+
+class ui_bios_selection : public ui_menu
+{
+public:
+ ui_bios_selection(running_machine &machine, render_container *container, std::vector<s_bios> biosname, void *driver, bool software, bool inlist);
+ virtual ~ui_bios_selection();
+ virtual void populate() override;
+ virtual void handle() override;
+ virtual void custom_render(void *selectedref, float top, float bottom, float x, float y, float x2, float y2) override;
+
+private:
+
+ void *m_driver;
+ bool m_software, m_inlist;
+ std::vector<s_bios> m_bios;
+};
+
+struct reselect_last
+{
+ static std::string driver, software, swlist;
+ static void set(bool value) { m_reselect = value; }
+ static bool get() { return m_reselect; }
+ static void reset() { driver.clear(); software.clear(); swlist.clear(); set(false); }
+
+private:
+ static bool m_reselect;
+};
+
+// Getter
+bool has_multiple_bios(const game_driver *driver, std::vector<s_bios> &biosname);
+
+
+#endif /* __UI_SELSOFT_H__ */
diff --git a/src/emu/ui/simpleselgame.cpp b/src/emu/ui/simpleselgame.cpp
new file mode 100644
index 00000000000..8f5ada60071
--- /dev/null
+++ b/src/emu/ui/simpleselgame.cpp
@@ -0,0 +1,445 @@
+// license:BSD-3-Clause
+// copyright-holders:Nicola Salmoria, Aaron Giles, Nathan Woods
+/***************************************************************************
+
+ ui/simpleselgame.c
+
+ Game selector
+
+***************************************************************************/
+
+#include "emu.h"
+#include "emuopts.h"
+#include "ui/ui.h"
+#include "ui/menu.h"
+#include "uiinput.h"
+#include "ui/simpleselgame.h"
+#include "ui/inputmap.h"
+#include "ui/miscmenu.h"
+#include "ui/optsmenu.h"
+#include "audit.h"
+#include <ctype.h>
+
+
+//-------------------------------------------------
+// ctor
+//-------------------------------------------------
+
+ui_simple_menu_select_game::ui_simple_menu_select_game(running_machine &machine, render_container *container, const char *gamename) : ui_menu(machine, container), m_driverlist(driver_list::total() + 1)
+{
+ build_driver_list();
+ if(gamename)
+ strcpy(m_search, gamename);
+ m_matchlist[0] = -1;
+}
+
+
+//-------------------------------------------------
+// dtor
+//-------------------------------------------------
+
+ui_simple_menu_select_game::~ui_simple_menu_select_game()
+{
+}
+
+
+
+//-------------------------------------------------
+// build_driver_list - build a list of available
+// drivers
+//-------------------------------------------------
+
+void ui_simple_menu_select_game::build_driver_list()
+{
+ // start with an empty list
+ m_drivlist = std::make_unique<driver_enumerator>(machine().options());
+ m_drivlist->exclude_all();
+
+ // open a path to the ROMs and find them in the array
+ file_enumerator path(machine().options().media_path());
+ const osd_directory_entry *dir;
+
+ // iterate while we get new objects
+ while ((dir = path.next()) != nullptr)
+ {
+ char drivername[50];
+ char *dst = drivername;
+ const char *src;
+
+ // build a name for it
+ for (src = dir->name; *src != 0 && *src != '.' && dst < &drivername[ARRAY_LENGTH(drivername) - 1]; src++)
+ *dst++ = tolower((UINT8)*src);
+ *dst = 0;
+
+ int drivnum = m_drivlist->find(drivername);
+ if (drivnum != -1)
+ m_drivlist->include(drivnum);
+ }
+
+ // now build the final list
+ m_drivlist->reset();
+ int listnum = 0;
+ while (m_drivlist->next())
+ m_driverlist[listnum++] = &m_drivlist->driver();
+
+ // NULL-terminate
+ m_driverlist[listnum] = nullptr;
+}
+
+
+
+//-------------------------------------------------
+// handle - handle the game select menu
+//-------------------------------------------------
+
+void ui_simple_menu_select_game::handle()
+{
+ // ignore pause keys by swallowing them before we process the menu
+ machine().ui_input().pressed(IPT_UI_PAUSE);
+
+ // process the menu
+ const ui_menu_event *menu_event = process(0);
+ if (menu_event != nullptr && menu_event->itemref != nullptr)
+ {
+ // reset the error on any future menu_event
+ if (m_error)
+ m_error = false;
+
+ // handle selections
+ else
+ {
+ switch(menu_event->iptkey)
+ {
+ case IPT_UI_SELECT:
+ inkey_select(menu_event);
+ break;
+ case IPT_UI_CANCEL:
+ inkey_cancel(menu_event);
+ break;
+ case IPT_SPECIAL:
+ inkey_special(menu_event);
+ break;
+ }
+ }
+ }
+
+ // if we're in an error state, overlay an error message
+ if (m_error)
+ machine().ui().draw_text_box(container,
+ "The selected game is missing one or more required ROM or CHD images. "
+ "Please select a different game.\n\nPress any key to continue.",
+ JUSTIFY_CENTER, 0.5f, 0.5f, UI_RED_COLOR);
+}
+
+
+//-------------------------------------------------
+// inkey_select
+//-------------------------------------------------
+extern void save_main_option(running_machine &machine);
+void ui_simple_menu_select_game::inkey_select(const ui_menu_event *menu_event)
+{
+ const game_driver *driver = (const game_driver *)menu_event->itemref;
+
+ // special case for configure inputs
+ if ((FPTR)driver == 1)
+ ui_menu::stack_push(global_alloc_clear<ui_menu_game_options>(machine(), container));
+ else if ((FPTR)driver == 2)
+ save_main_option(machine());
+ // anything else is a driver
+ else
+ {
+ // audit the game first to see if we're going to work
+ driver_enumerator enumerator(machine().options(), *driver);
+ enumerator.next();
+ media_auditor auditor(enumerator);
+ media_auditor::summary summary = auditor.audit_media(AUDIT_VALIDATE_FAST);
+
+ // if everything looks good, schedule the new driver
+ if (summary == media_auditor::CORRECT || summary == media_auditor::BEST_AVAILABLE || summary == media_auditor::NONE_NEEDED)
+ {
+ machine().manager().schedule_new_driver(*driver);
+ machine().schedule_hard_reset();
+ ui_menu::stack_reset(machine());
+ }
+
+ // otherwise, display an error
+ else
+ {
+ reset(UI_MENU_RESET_REMEMBER_REF);
+ m_error = true;
+ }
+ }
+}
+
+
+//-------------------------------------------------
+// inkey_cancel
+//-------------------------------------------------
+
+void ui_simple_menu_select_game::inkey_cancel(const ui_menu_event *menu_event)
+{
+ // escape pressed with non-empty text clears the text
+ if (m_search[0] != 0)
+ {
+ // since we have already been popped, we must recreate ourself from scratch
+ ui_menu::stack_push(global_alloc_clear<ui_simple_menu_select_game>(machine(), container, nullptr));
+ }
+}
+
+
+//-------------------------------------------------
+// inkey_special - typed characters append to the buffer
+//-------------------------------------------------
+
+void ui_simple_menu_select_game::inkey_special(const ui_menu_event *menu_event)
+{
+ // typed characters append to the buffer
+ int buflen = strlen(m_search);
+
+ // if it's a backspace and we can handle it, do so
+ if ((menu_event->unichar == 8 || menu_event->unichar == 0x7f) && buflen > 0)
+ {
+ *(char *)utf8_previous_char(&m_search[buflen]) = 0;
+ m_rerandomize = true;
+ reset(UI_MENU_RESET_SELECT_FIRST);
+ }
+
+ // if it's any other key and we're not maxed out, update
+ else if (menu_event->unichar >= ' ' && menu_event->unichar < 0x7f)
+ {
+ buflen += utf8_from_uchar(&m_search[buflen], ARRAY_LENGTH(m_search) - buflen, menu_event->unichar);
+ m_search[buflen] = 0;
+ reset(UI_MENU_RESET_SELECT_FIRST);
+ }
+}
+
+
+//-------------------------------------------------
+// populate - populate the game select menu
+//-------------------------------------------------
+
+void ui_simple_menu_select_game::populate()
+{
+ int matchcount;
+ int curitem;
+
+ for (curitem = matchcount = 0; m_driverlist[curitem] != nullptr && matchcount < VISIBLE_GAMES_IN_LIST; curitem++)
+ if (!(m_driverlist[curitem]->flags & MACHINE_NO_STANDALONE))
+ matchcount++;
+
+ // if nothing there, add a single multiline item and return
+ if (matchcount == 0)
+ {
+ std::string txt;
+ strprintf(txt, "No %s found. Please check the rompath specified in the %s.ini file.\n\n"
+ "If this is your first time using %s, please see the config.txt file in "
+ "the docs directory for information on configuring %s.",
+ emulator_info::get_gamesnoun(),
+ emulator_info::get_configname(),
+ emulator_info::get_appname(),emulator_info::get_appname() );
+ item_append(txt.c_str(), nullptr, MENU_FLAG_MULTILINE | MENU_FLAG_REDTEXT, nullptr);
+ return;
+ }
+
+ // otherwise, rebuild the match list
+ assert(m_drivlist != nullptr);
+ if (m_search[0] != 0 || m_matchlist[0] == -1 || m_rerandomize)
+ m_drivlist->find_approximate_matches(m_search, matchcount, m_matchlist);
+ m_rerandomize = false;
+
+ // iterate over entries
+ for (curitem = 0; curitem < matchcount; curitem++)
+ {
+ int curmatch = m_matchlist[curitem];
+ if (curmatch != -1)
+ {
+ int cloneof = m_drivlist->non_bios_clone(curmatch);
+ item_append(m_drivlist->driver(curmatch).name, m_drivlist->driver(curmatch).description, (cloneof == -1) ? 0 : MENU_FLAG_INVERT, (void *)&m_drivlist->driver(curmatch));
+ }
+ }
+
+ // if we're forced into this, allow general input configuration as well
+ if (ui_menu::stack_has_special_main_menu())
+ {
+ item_append(MENU_SEPARATOR_ITEM, nullptr, 0, nullptr);
+ item_append("Configure Options", nullptr, 0, (void *)1);
+ item_append("Save Configuration", nullptr, 0, (void *)2);
+ }
+
+ // configure the custom rendering
+ customtop = machine().ui().get_line_height() + 3.0f * UI_BOX_TB_BORDER;
+ custombottom = 4.0f * machine().ui().get_line_height() + 3.0f * UI_BOX_TB_BORDER;
+}
+
+
+//-------------------------------------------------
+// custom_render - perform our special rendering
+//-------------------------------------------------
+
+void ui_simple_menu_select_game::custom_render(void *selectedref, float top, float bottom, float origx1, float origy1, float origx2, float origy2)
+{
+ const game_driver *driver;
+ float width, maxwidth;
+ float x1, y1, x2, y2;
+ std::string tempbuf[5];
+ rgb_t color;
+ int line;
+
+ // display the current typeahead
+ if (m_search[0] != 0)
+ strprintf(tempbuf[0], "Type name or select: %s_", m_search);
+ else
+ strprintf(tempbuf[0],"Type name or select: (random)");
+
+ // get the size of the text
+ machine().ui().draw_text_full(container, tempbuf[0].c_str(), 0.0f, 0.0f, 1.0f, JUSTIFY_CENTER, WRAP_TRUNCATE,
+ DRAW_NONE, ARGB_WHITE, ARGB_BLACK, &width, nullptr);
+ width += 2 * UI_BOX_LR_BORDER;
+ maxwidth = MAX(width, origx2 - origx1);
+
+ // compute our bounds
+ x1 = 0.5f - 0.5f * maxwidth;
+ x2 = x1 + maxwidth;
+ y1 = origy1 - top;
+ y2 = origy1 - UI_BOX_TB_BORDER;
+
+ // draw a box
+ machine().ui().draw_outlined_box(container, x1, y1, x2, y2, UI_BACKGROUND_COLOR);
+
+ // take off the borders
+ x1 += UI_BOX_LR_BORDER;
+ x2 -= UI_BOX_LR_BORDER;
+ y1 += UI_BOX_TB_BORDER;
+
+ // draw the text within it
+ machine().ui().draw_text_full(container, tempbuf[0].c_str(), x1, y1, x2 - x1, JUSTIFY_CENTER, WRAP_TRUNCATE,
+ DRAW_NORMAL, UI_TEXT_COLOR, UI_TEXT_BG_COLOR, nullptr, nullptr);
+
+ // determine the text to render below
+ driver = ((FPTR)selectedref > 2) ? (const game_driver *)selectedref : nullptr;
+ if ((FPTR)driver > 2)
+ {
+ const char *gfxstat, *soundstat;
+
+ // first line is game name
+ strprintf(tempbuf[0],"%-.100s", driver->description);
+
+ // next line is year, manufacturer
+ strprintf(tempbuf[1], "%s, %-.100s", driver->year, driver->manufacturer);
+
+ // next line source path
+ strprintf(tempbuf[2],"Driver: %-.100s", core_filename_extract_base(driver->source_file).c_str());
+
+ // next line is overall driver status
+ if (driver->flags & MACHINE_NOT_WORKING)
+ tempbuf[3].assign("Overall: NOT WORKING");
+ else if (driver->flags & MACHINE_UNEMULATED_PROTECTION)
+ tempbuf[3].assign("Overall: Unemulated Protection");
+ else
+ tempbuf[3].assign("Overall: Working");
+
+ // next line is graphics, sound status
+ if (driver->flags & (MACHINE_IMPERFECT_GRAPHICS | MACHINE_WRONG_COLORS | MACHINE_IMPERFECT_COLORS))
+ gfxstat = "Imperfect";
+ else
+ gfxstat = "OK";
+
+ if (driver->flags & MACHINE_NO_SOUND)
+ soundstat = "Unimplemented";
+ else if (driver->flags & MACHINE_IMPERFECT_SOUND)
+ soundstat = "Imperfect";
+ else
+ soundstat = "OK";
+
+ strprintf(tempbuf[4], "Gfx: %s, Sound: %s", gfxstat, soundstat);
+ }
+ else
+ {
+ const char *s = emulator_info::get_copyright();
+ line = 0;
+
+ // first line is version string
+ strprintf(tempbuf[line++], "%s %s", emulator_info::get_appname(), build_version);
+
+ // output message
+ while (line < ARRAY_LENGTH(tempbuf))
+ {
+ if (!(*s == 0 || *s == '\n'))
+ tempbuf[line].push_back(*s);
+
+ if (*s == '\n')
+ {
+ line++;
+ s++;
+ } else if (*s != 0)
+ s++;
+ else
+ line++;
+ }
+ }
+
+ // get the size of the text
+ maxwidth = origx2 - origx1;
+ for (line = 0; line < 4; line++)
+ {
+ machine().ui().draw_text_full(container, tempbuf[line].c_str(), 0.0f, 0.0f, 1.0f, JUSTIFY_CENTER, WRAP_TRUNCATE,
+ DRAW_NONE, ARGB_WHITE, ARGB_BLACK, &width, nullptr);
+ width += 2 * UI_BOX_LR_BORDER;
+ maxwidth = MAX(maxwidth, width);
+ }
+
+ // compute our bounds
+ x1 = 0.5f - 0.5f * maxwidth;
+ x2 = x1 + maxwidth;
+ y1 = origy2 + UI_BOX_TB_BORDER;
+ y2 = origy2 + bottom;
+
+ // draw a box
+ color = UI_BACKGROUND_COLOR;
+ if (driver != nullptr)
+ color = UI_GREEN_COLOR;
+ if (driver != nullptr && (driver->flags & (MACHINE_IMPERFECT_GRAPHICS | MACHINE_WRONG_COLORS | MACHINE_IMPERFECT_COLORS | MACHINE_NO_SOUND | MACHINE_IMPERFECT_SOUND)) != 0)
+ color = UI_YELLOW_COLOR;
+ if (driver != nullptr && (driver->flags & (MACHINE_NOT_WORKING | MACHINE_UNEMULATED_PROTECTION)) != 0)
+ color = UI_RED_COLOR;
+ machine().ui().draw_outlined_box(container, x1, y1, x2, y2, color);
+
+ // take off the borders
+ x1 += UI_BOX_LR_BORDER;
+ x2 -= UI_BOX_LR_BORDER;
+ y1 += UI_BOX_TB_BORDER;
+
+ // draw all lines
+ for (line = 0; line < 4; line++)
+ {
+ machine().ui().draw_text_full(container, tempbuf[line].c_str(), x1, y1, x2 - x1, JUSTIFY_CENTER, WRAP_TRUNCATE,
+ DRAW_NORMAL, UI_TEXT_COLOR, UI_TEXT_BG_COLOR, nullptr, nullptr);
+ y1 += machine().ui().get_line_height();
+ }
+}
+
+
+//-------------------------------------------------
+// force_game_select - force the game
+// select menu to be visible and inescapable
+//-------------------------------------------------
+
+void ui_simple_menu_select_game::force_game_select(running_machine &machine, render_container *container)
+{
+ char *gamename = (char *)machine.options().system_name();
+
+ // reset the menu stack
+ ui_menu::stack_reset(machine);
+
+ // add the quit entry followed by the game select entry
+ ui_menu *quit = global_alloc_clear<ui_menu_quit_game>(machine, container);
+ quit->set_special_main_menu(true);
+ ui_menu::stack_push(quit);
+ ui_menu::stack_push(global_alloc_clear<ui_simple_menu_select_game>(machine, container, gamename));
+
+ // force the menus on
+ machine.ui().show_menu();
+
+ // make sure MAME is paused
+ machine.pause();
+}
diff --git a/src/emu/ui/simpleselgame.h b/src/emu/ui/simpleselgame.h
new file mode 100644
index 00000000000..50fcf10a432
--- /dev/null
+++ b/src/emu/ui/simpleselgame.h
@@ -0,0 +1,47 @@
+// license:BSD-3-Clause
+// copyright-holders:Nicola Salmoria, Aaron Giles, Nathan Woods
+/***************************************************************************
+
+ ui/selgame.h
+
+ Game selector
+
+***************************************************************************/
+
+#pragma once
+
+#ifndef __UI_SIMPLESELGAME_H__
+#define __UI_SIMPLESELGAME_H__
+
+#include "drivenum.h"
+#include "menu.h"
+
+class ui_simple_menu_select_game : public ui_menu {
+public:
+ ui_simple_menu_select_game(running_machine &machine, render_container *container, const char *gamename);
+ virtual ~ui_simple_menu_select_game();
+ virtual void populate() override;
+ virtual void handle() override;
+ virtual void custom_render(void *selectedref, float top, float bottom, float x, float y, float x2, float y2) override;
+
+ // force game select menu
+ static void force_game_select(running_machine &machine, render_container *container);
+
+private:
+ // internal state
+ enum { VISIBLE_GAMES_IN_LIST = 15 };
+ UINT8 m_error;
+ bool m_rerandomize;
+ char m_search[40];
+ int m_matchlist[VISIBLE_GAMES_IN_LIST];
+ std::vector<const game_driver *> m_driverlist;
+ std::unique_ptr<driver_enumerator> m_drivlist;
+
+ // internal methods
+ void build_driver_list();
+ void inkey_select(const ui_menu_event *menu_event);
+ void inkey_cancel(const ui_menu_event *menu_event);
+ void inkey_special(const ui_menu_event *menu_event);
+};
+
+#endif /* __UI_SELGAME_H__ */
diff --git a/src/emu/ui/sliders.cpp b/src/emu/ui/sliders.cpp
index 26da6327202..e494213aa1b 100644
--- a/src/emu/ui/sliders.cpp
+++ b/src/emu/ui/sliders.cpp
@@ -108,14 +108,14 @@ void ui_menu_sliders::handle()
/* if we got here via up or page up, select the previous item */
if (menu_event->iptkey == IPT_UI_UP || menu_event->iptkey == IPT_UI_PAGE_UP)
{
- selected = (selected + numitems - 1) % numitems;
+ selected = (selected + item.size() - 1) % item.size();
validate_selection(-1);
}
/* otherwise select the next item */
else if (menu_event->iptkey == IPT_UI_DOWN || menu_event->iptkey == IPT_UI_PAGE_DOWN)
{
- selected = (selected + 1) % numitems;
+ selected = (selected + 1) % item.size();
validate_selection(1);
}
}
@@ -242,7 +242,7 @@ UINT32 ui_menu_sliders::ui_handler(running_machine &machine, render_container *c
/* if this is the first call, push the sliders menu */
if (state)
- ui_menu::stack_push(auto_alloc_clear(machine, <ui_menu_sliders>(machine, container, true)));
+ ui_menu::stack_push(global_alloc_clear<ui_menu_sliders>(machine, container, true));
/* handle standard menus */
result = ui_menu::ui_handler(machine, container, state);
diff --git a/src/emu/ui/slotopt.cpp b/src/emu/ui/slotopt.cpp
index cce17353532..959fef74adc 100644
--- a/src/emu/ui/slotopt.cpp
+++ b/src/emu/ui/slotopt.cpp
@@ -189,7 +189,7 @@ void ui_menu_slot_devices::handle()
{
if ((FPTR)menu_event->itemref == 1 && menu_event->iptkey == IPT_UI_SELECT)
{
- machine().options().add_slot_options(false);
+ machine().options().add_slot_options();
machine().schedule_hard_reset();
}
else if (menu_event->iptkey == IPT_UI_LEFT || menu_event->iptkey == IPT_UI_RIGHT)
@@ -204,7 +204,7 @@ void ui_menu_slot_devices::handle()
device_slot_interface *slot = (device_slot_interface *)menu_event->itemref;
device_slot_option *option = slot_get_current_option(slot);
if (option)
- ui_menu::stack_push(auto_alloc_clear(machine(), <ui_menu_device_config>(machine(), container, slot, option)));
+ ui_menu::stack_push(global_alloc_clear<ui_menu_device_config>(machine(), container, slot, option));
}
}
}
diff --git a/src/emu/ui/sndmenu.cpp b/src/emu/ui/sndmenu.cpp
new file mode 100644
index 00000000000..06563c661b3
--- /dev/null
+++ b/src/emu/ui/sndmenu.cpp
@@ -0,0 +1,174 @@
+// license:BSD-3-Clause
+// copyright-holders:Dankan1890
+/*********************************************************************
+
+ ui/sndmenu.cpp
+
+ Internal UI user interface.
+
+*********************************************************************/
+
+#include "emu.h"
+#include "ui/ui.h"
+#include "ui/menu.h"
+#include "ui/sndmenu.h"
+#include "ui/selector.h"
+#include "cliopts.h"
+#include "../osd/modules/lib/osdobj_common.h" // TODO: remove
+
+const int ui_menu_sound_options::m_sound_rate[] = { 11025, 22050, 44100, 48000 };
+
+//-------------------------------------------------
+// ctor
+//-------------------------------------------------
+
+ui_menu_sound_options::ui_menu_sound_options(running_machine &machine, render_container *container) : ui_menu(machine, container)
+{
+ osd_options &options = downcast<osd_options &>(machine.options());
+
+ m_sample_rate = machine.options().sample_rate();
+ m_sound = (strcmp(options.sound(), OSDOPTVAL_NONE) && strcmp(options.sound(), "0"));
+ m_samples = machine.options().samples();
+
+ int total = ARRAY_LENGTH(m_sound_rate);
+
+ for (m_cur_rates = 0; m_cur_rates < total; m_cur_rates++)
+ if (m_sample_rate == m_sound_rate[m_cur_rates])
+ break;
+
+ if (m_cur_rates == total)
+ m_cur_rates = 2;
+}
+
+//-------------------------------------------------
+// dtor
+//-------------------------------------------------
+
+ui_menu_sound_options::~ui_menu_sound_options()
+{
+ std::string error_string;
+ emu_options &moptions = machine().options();
+
+ if (strcmp(moptions.value(OSDOPTION_SOUND),m_sound ? OSDOPTVAL_AUTO : OSDOPTVAL_NONE)!=0)
+ {
+ moptions.set_value(OSDOPTION_SOUND, m_sound ? OSDOPTVAL_AUTO : OSDOPTVAL_NONE, OPTION_PRIORITY_CMDLINE, error_string);
+ machine().options().mark_changed(OSDOPTION_SOUND);
+ }
+ if (moptions.int_value(OPTION_SAMPLERATE)!=m_sound_rate[m_cur_rates])
+ {
+ moptions.set_value(OPTION_SAMPLERATE, m_sound_rate[m_cur_rates], OPTION_PRIORITY_CMDLINE, error_string);
+ machine().options().mark_changed(OPTION_SAMPLERATE);
+ }
+ if (moptions.bool_value(OPTION_SAMPLES)!=m_samples)
+ {
+ moptions.set_value(OPTION_SAMPLES, m_samples, OPTION_PRIORITY_CMDLINE, error_string);
+ machine().options().mark_changed(OPTION_SAMPLES);
+ }
+}
+
+//-------------------------------------------------
+// handle
+//-------------------------------------------------
+
+void ui_menu_sound_options::handle()
+{
+ bool changed = false;
+
+ // process the menu
+ const ui_menu_event *m_event = process(0);
+
+ if (m_event != nullptr && m_event->itemref != nullptr)
+ {
+ switch ((FPTR)m_event->itemref)
+ {
+ case ENABLE_SOUND:
+ if (m_event->iptkey == IPT_UI_LEFT || m_event->iptkey == IPT_UI_RIGHT || m_event->iptkey == IPT_UI_SELECT)
+ {
+ m_sound = !m_sound;
+ changed = true;
+ }
+ break;
+
+ case SAMPLE_RATE:
+ if (m_event->iptkey == IPT_UI_LEFT || m_event->iptkey == IPT_UI_RIGHT)
+ {
+ (m_event->iptkey == IPT_UI_LEFT) ? m_cur_rates-- : m_cur_rates++;
+ changed = true;
+ }
+ else if (m_event->iptkey == IPT_UI_SELECT)
+ {
+ int total = ARRAY_LENGTH(m_sound_rate);
+ std::vector<std::string> s_sel(total);
+ for (int index = 0; index < total; index++)
+ s_sel[index] = std::to_string(m_sound_rate[index]);
+
+ ui_menu::stack_push(global_alloc_clear<ui_menu_selector>(machine(), container, s_sel, m_cur_rates));
+ }
+ break;
+
+ case ENABLE_SAMPLES:
+ if (m_event->iptkey == IPT_UI_LEFT || m_event->iptkey == IPT_UI_RIGHT || m_event->iptkey == IPT_UI_SELECT)
+ {
+ m_samples = !m_samples;
+ changed = true;
+ }
+ break;
+ }
+ }
+
+ if (changed)
+ reset(UI_MENU_RESET_REMEMBER_REF);
+
+}
+
+//-------------------------------------------------
+// populate
+//-------------------------------------------------
+
+void ui_menu_sound_options::populate()
+{
+ UINT32 arrow_flags = get_arrow_flags(0, ARRAY_LENGTH(m_sound_rate) - 1, m_cur_rates);
+ m_sample_rate = m_sound_rate[m_cur_rates];
+ std::string s_text;
+ strprintf(s_text, "%d", m_sample_rate);
+
+ // add options items
+ item_append("Sound", m_sound ? "On" : "Off", m_sound ? MENU_FLAG_RIGHT_ARROW : MENU_FLAG_LEFT_ARROW, (void *)(FPTR)ENABLE_SOUND);
+ item_append("Sample Rate", s_text.c_str(), arrow_flags, (void *)(FPTR)SAMPLE_RATE);
+ item_append("Use External Samples", m_samples ? "On" : "Off", m_samples ? MENU_FLAG_RIGHT_ARROW : MENU_FLAG_LEFT_ARROW, (void *)(FPTR)ENABLE_SAMPLES);
+ item_append(MENU_SEPARATOR_ITEM, nullptr, 0, nullptr);
+
+ customtop = machine().ui().get_line_height() + (3.0f * UI_BOX_TB_BORDER);
+}
+
+//-------------------------------------------------
+// perform our special rendering
+//-------------------------------------------------
+
+void ui_menu_sound_options::custom_render(void *selectedref, float top, float bottom, float origx1, float origy1, float origx2, float origy2)
+{
+ float width;
+ ui_manager &mui = machine().ui();
+ mui.draw_text_full(container, "Sound Options", 0.0f, 0.0f, 1.0f, JUSTIFY_CENTER, WRAP_TRUNCATE,
+ DRAW_NONE, ARGB_WHITE, ARGB_BLACK, &width, nullptr);
+ width += 2 * UI_BOX_LR_BORDER;
+ float maxwidth = MAX(origx2 - origx1, width);
+
+ // compute our bounds
+ float x1 = 0.5f - 0.5f * maxwidth;
+ float x2 = x1 + maxwidth;
+ float y1 = origy1 - top;
+ float y2 = origy1 - UI_BOX_TB_BORDER;
+
+ // draw a box
+ mui.draw_outlined_box(container, x1, y1, x2, y2, UI_GREEN_COLOR);
+
+ // take off the borders
+ x1 += UI_BOX_LR_BORDER;
+ x2 -= UI_BOX_LR_BORDER;
+ y1 += UI_BOX_TB_BORDER;
+
+ // draw the text within it
+ mui.draw_text_full(container, "Sound Options", x1, y1, x2 - x1, JUSTIFY_CENTER, WRAP_TRUNCATE,
+ DRAW_NORMAL, UI_TEXT_COLOR, UI_TEXT_BG_COLOR, nullptr, nullptr);
+}
diff --git a/src/emu/ui/sndmenu.h b/src/emu/ui/sndmenu.h
new file mode 100644
index 00000000000..8b13b38ea88
--- /dev/null
+++ b/src/emu/ui/sndmenu.h
@@ -0,0 +1,42 @@
+// license:BSD-3-Clause
+// copyright-holders:Dankan1890
+/***************************************************************************
+
+ ui/sndmenu.h
+
+ Internal UI user interface.
+
+***************************************************************************/
+
+#pragma once
+
+#ifndef __UI_SNDMENU_H__
+#define __UI_SNDMENU_H__
+
+//-------------------------------------------------
+// class sound options menu
+//-------------------------------------------------
+class ui_menu_sound_options : public ui_menu
+{
+public:
+ ui_menu_sound_options(running_machine &machine, render_container *container);
+ virtual ~ui_menu_sound_options();
+ virtual void populate() override;
+ virtual void handle() override;
+ virtual void custom_render(void *selectedref, float top, float bottom, float x, float y, float x2, float y2) override;
+
+private:
+ enum
+ {
+ ENABLE_SOUND = 1,
+ SAMPLE_RATE,
+ ENABLE_SAMPLES
+ };
+
+ UINT16 m_cur_rates;
+ static const int m_sound_rate[];
+ int m_sample_rate;
+ bool m_samples, m_sound;
+};
+
+#endif /* __UI_SNDMENU_H__ */
diff --git a/src/emu/ui/starimg.h b/src/emu/ui/starimg.h
new file mode 100644
index 00000000000..2704e486e5b
--- /dev/null
+++ b/src/emu/ui/starimg.h
@@ -0,0 +1,37 @@
+// license:BSD-3-Clause
+// copyright-holders:Dankan1890
+static const UINT32 favorite_star_bmp[] =
+{
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x02D07A00, 0x15D07A00, 0x0FD07A00, 0x00D07A00, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x76D27F04, 0xBFDA9714, 0xB9D78F0E, 0x4DD17B01, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x3BD07A00, 0xFFE8B228, 0xFFFDEB50, 0xFFFBE34A, 0xD0E1A11C, 0x13D07A00, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x0BD07A00, 0xA0D48306, 0xFFFACE42, 0xFFFBCE45, 0xFFFCD146, 0xFFF2BD34, 0x67D07A00, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x49D27E03, 0xE9EAAB26, 0xFFFDD044, 0xFFF9C741, 0xFFFAC942, 0xFFFED245, 0xD1DF9716, 0x27D07A00, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0xA2DB8D0F, 0xFFF6C236, 0xFFFAC740, 0xFFF8C53F, 0xFFF8C53F, 0xFFFDCB41, 0xF7F0B62E, 0x71D68308, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x31D07A00, 0xFFE7A420, 0xFFFDCA3F, 0xFFF8C23D, 0xFFF8C23D, 0xFFF8C23D, 0xFFF8C23D, 0xFFFCC83D, 0xE0E19818, 0x11D07A00, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x08D07A00, 0x99D38004, 0xFFF9C237, 0xFFFAC43C, 0xFFF8BF3A, 0xFFF8BF3A, 0xFFF8BF3A, 0xFFF8BF3A, 0xFFFBC53C, 0xFFF1B32B, 0x63D07A00, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x01D07A00, 0x15D07A00, 0x24D07A00, 0x39D07A00, 0x4AD07A00, 0x79D48205, 0xE6E9A820, 0xFFFDC539, 0xFFF8BC37, 0xFFF8BC37, 0xFFF8BC37, 0xFFF8BC37, 0xFFF8BC37, 0xFFF9BD37, 0xFFFEC63A, 0xD8DF9613, 0x64D17C01, 0x3FD07A00, 0x2FD07A00, 0x1CD07A00, 0x0AD07A00, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x04D07A00, 0x3BD07A00, 0x8BD07A00, 0xA5D17B01, 0xBFDA940F, 0xCEE1A317, 0xE2E7B622, 0xF4EDC229, 0xFFF1C62D, 0xFFFAC735, 0xFFFABC35, 0xFFF8B934, 0xFFF8B934, 0xFFF8B934, 0xFFF8B934, 0xFFF8B934, 0xFFF8B934, 0xFFFCBF36, 0xFFF7C733, 0xFCEFC52C, 0xE9EABB24, 0xD8E4AE1D, 0xC6DD9C13, 0xB4D58608, 0x99D07A00, 0x75D07A00, 0x20D07A00, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x01D07A00, 0xBBD78608, 0xFFE9AE1F, 0xFFF9D133, 0xFFFCD839, 0xFFFCD338, 0xFFFCCC36, 0xFFFCC333, 0xFFFCBB32, 0xFFF7B630, 0xFFF7B630, 0xFFF7B630, 0xFFF7B630, 0xFFF7B630, 0xFFF7B630, 0xFFF7B630, 0xFFF7B630, 0xFFF7B630, 0xFFF7B630, 0xFFF7B630, 0xFFFAB831, 0xFFFCC033, 0xFFFCC735, 0xFFFCD037, 0xFFFCD739, 0xFFFBD536, 0xFFF5C92F, 0xE8E4A318, 0x55D78507, 0x00000000, 0x00000000,
+ 0x00000000, 0x13D07A00, 0xFFDF9212, 0xFFFABC2F, 0xFFF9B72F, 0xFFF8B32E, 0xFFF7B22D, 0xFFF7B22D, 0xFFF7B22D, 0xFFF7B22D, 0xFFF7B22D, 0xFFF7B22D, 0xFFF7B22D, 0xFFF7B22D, 0xFFF7B22D, 0xFFF7B22D, 0xFFF7B22D, 0xFFF7B22D, 0xFFF7B22D, 0xFFF7B22D, 0xFFF7B22D, 0xFFF7B22D, 0xFFF7B22D, 0xFFF7B22D, 0xFFF7B22D, 0xFFF7B32D, 0xFFF9B52E, 0xFFF9B92F, 0xFFF6B52A, 0xC1DB8B0D, 0x00000000, 0x00000000,
+ 0x00000000, 0x07D07A00, 0xE6DC8B0E, 0xFFF4AB27, 0xFFF7AF2A, 0xFFF7AF2A, 0xFFF7AF2A, 0xFFF7AF2A, 0xFFF7AF2A, 0xFFF7AF2A, 0xFFF7AF2A, 0xFFF7AF2A, 0xFFF7AF2A, 0xFFF7AF2A, 0xFFF7AF2A, 0xFFF7AF2A, 0xFFF7AF2A, 0xFFF7AF2A, 0xFFF7AF2A, 0xFFF7AF2A, 0xFFF7AF2A, 0xFFF7AF2A, 0xFFF7AF2A, 0xFFF7AF2A, 0xFFF7AF2A, 0xFFF7AF2A, 0xFFF7AF2A, 0xFFF7AF2A, 0xFFEFA421, 0xAAD9860A, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x5ED58005, 0xE8E39213, 0xFFF7AB26, 0xFFF7AB26, 0xFFF7AB26, 0xFFF7AB26, 0xFFF7AB26, 0xFFF7AB26, 0xFFF7AB26, 0xFFF7AB26, 0xFFF7AB26, 0xFFF7AB26, 0xFFF7AB26, 0xFFF7AB26, 0xFFF7AB26, 0xFFF7AB26, 0xFFF7AB26, 0xFFF7AB26, 0xFFF7AB26, 0xFFF7AB26, 0xFFF7AB26, 0xFFF7AB26, 0xFFF7AB26, 0xFFF7AB26, 0xFFF7AB26, 0xFFF4A925, 0xE2DC890C, 0x45D27C02, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x41D07A00, 0xE7E18F11, 0xFFF3A420, 0xFFF6A823, 0xFFF6A823, 0xFFF6A823, 0xFFF6A823, 0xFFF6A823, 0xFFF6A823, 0xFFF6A823, 0xFFF6A823, 0xFFF6A823, 0xFFF6A823, 0xFFF6A823, 0xFFF6A823, 0xFFF6A823, 0xFFF6A823, 0xFFF6A823, 0xFFF6A823, 0xFFF6A823, 0xFFF6A823, 0xFFF6A823, 0xFFF6A823, 0xFFEFA11D, 0xE0DB880A, 0x35D07A00, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x5DD47E03, 0xE6E08D0D, 0xFFF5A41F, 0xFFF6A41F, 0xFFF6A41F, 0xFFF6A41F, 0xFFF6A41F, 0xFFF6A41F, 0xFFF6A41F, 0xFFF6A41F, 0xFFF6A41F, 0xFFF6A41F, 0xFFF6A41F, 0xFFF6A41F, 0xFFF6A41F, 0xFFF6A41F, 0xFFF6A41F, 0xFFF6A41F, 0xFFF6A41F, 0xFFF6A41F, 0xFFF6A41F, 0xFFF3A11D, 0xDFDB8609, 0x4FD27C01, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x40D07A00, 0xE6E08A0C, 0xFFF29D19, 0xFFF6A01C, 0xFFF6A01C, 0xFFF6A01C, 0xFFF6A01C, 0xFFF6A01C, 0xFFF6A01C, 0xFFF6A01C, 0xFFF6A01C, 0xFFF6A01C, 0xFFF6A01C, 0xFFF6A01C, 0xFFF6A01C, 0xFFF6A01C, 0xFFF6A01C, 0xFFF6A01C, 0xFFF6A01C, 0xFFEE9917, 0xDDDA8407, 0x30D07A00, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x5BD37D02, 0xE6DF880A, 0xFFF59C18, 0xFFF69D18, 0xFFF69D18, 0xFFF69D18, 0xFFF69D18, 0xFFF69D18, 0xFFF69D18, 0xFFF69D18, 0xFFF69D18, 0xFFF69D18, 0xFFF69D18, 0xFFF69D18, 0xFFF69D18, 0xFFF69D18, 0xFFF69D18, 0xFFF29A16, 0xDCD98306, 0x49D17B01, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x7BD07A00, 0xFFEF9311, 0xFFF69A15, 0xFFF59915, 0xFFF59915, 0xFFF59915, 0xFFF59915, 0xFFF59915, 0xFFF59915, 0xFFF59915, 0xFFF59915, 0xFFF59915, 0xFFF59915, 0xFFF59915, 0xFFF59915, 0xFFF69915, 0xFFE2890A, 0x3BD07A00, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x01D07A00, 0xA2D17B00, 0xFFF59612, 0xFFF69713, 0xFFF59612, 0xFFF59612, 0xFFF59612, 0xFFF59612, 0xFFF59612, 0xFFF59612, 0xFFF59612, 0xFFF59612, 0xFFF59612, 0xFFF59612, 0xFFF59612, 0xFFF59612, 0xFFF79712, 0xFFE98D0B, 0x4BD07A00, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x14D07A00, 0xBED87F03, 0xFFF6940E, 0xFFF5930E, 0xFFF5930E, 0xFFF5930E, 0xFFF5930E, 0xFFF5930E, 0xFFF5930E, 0xFFF5930E, 0xFFF5930E, 0xFFF5930E, 0xFFF5930E, 0xFFF5930E, 0xFFF5930E, 0xFFF5930E, 0xFFF7940E, 0xFFF1900B, 0x7ED07A00, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x27D07A00, 0xD1DE8205, 0xFFF8920C, 0xFFF5900C, 0xFFF5900C, 0xFFF5900C, 0xFFF5900C, 0xFFF5900C, 0xFFF5900C, 0xFFF5900C, 0xFFF5900C, 0xFFF5900C, 0xFFF5900C, 0xFFF5900C, 0xFFF5900C, 0xFFF5900C, 0xFFF6910C, 0xFFF5910C, 0xA5D27B01, 0x03D07A00, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x40D07A00, 0xEAE48505, 0xFFFA9009, 0xFFF58D09, 0xFFF58D09, 0xFFF58D09, 0xFFF58D09, 0xFFF58D09, 0xFFF58D09, 0xFFF58D09, 0xFFF58D09, 0xFFF58D09, 0xFFF58D09, 0xFFF58D09, 0xFFF58D09, 0xFFF58D09, 0xFFF58D09, 0xFFF78E09, 0xC1D97F02, 0x17D07A00, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x57D17B00, 0xFBE88504, 0xFFF78D06, 0xFFF48B06, 0xFFF48B06, 0xFFF48B06, 0xFFF48B06, 0xFFF48B06, 0xFFF38B06, 0xFFEC8705, 0xFFF18A06, 0xFFF48B06, 0xFFF48B06, 0xFFF48B06, 0xFFF48B06, 0xFFF48B06, 0xFFF48B06, 0xFFF88E06, 0xD6DF8102, 0x2CD07A00, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x83D67D01, 0xFFED8503, 0xFFF48804, 0xFFF48804, 0xFFF48804, 0xFFF48804, 0xFFF28804, 0xFFEA8503, 0xCDDC7F02, 0x79D17B00, 0xA1D47C01, 0xEFE18102, 0xFFEE8604, 0xFFF38804, 0xFFF48804, 0xFFF48804, 0xFFF48804, 0xFFF88B04, 0xEFE58203, 0x46D07A00, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0xA0D87D01, 0xFFED8401, 0xFFF48602, 0xFFF48602, 0xFFF48602, 0xFFEF8501, 0xE9DE7F01, 0x8FD67D00, 0x23D07A00, 0x04D07A00, 0x0DD07A00, 0x46D07A00, 0xC3D97D01, 0xFFE28001, 0xFFF38602, 0xFFF48602, 0xFFF48602, 0xFFF58702, 0xFDE88201, 0x59D17A00, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x5FD47B00, 0xF3E58000, 0xFFF18400, 0xFFED8200, 0xDEE07F01, 0x90D37B00, 0x1FD07A00, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x01D07A00, 0x3BD07A00, 0xBDD67C00, 0xF2E48000, 0xFFEF8300, 0xFFF08300, 0xDEDF7E01, 0x34D07A00, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x10D07A00, 0x71D57C00, 0xD2DB7D00, 0x9AD87C00, 0x34D07A00, 0x0AD07A00, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x13D07A00, 0x52D27B00, 0xBBD97D00, 0xCBDA7D00, 0x5DD27B00, 0x0AD07A00, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
+};
diff --git a/src/emu/ui/swlist.cpp b/src/emu/ui/swlist.cpp
index 64eb5109fae..d57c91fae40 100644
--- a/src/emu/ui/swlist.cpp
+++ b/src/emu/ui/swlist.cpp
@@ -448,7 +448,7 @@ void ui_menu_software::handle()
const ui_menu_event *event = process(0);
if (event != nullptr && event->iptkey == IPT_UI_SELECT) {
- // ui_menu::stack_push(auto_alloc_clear(machine(), <ui_menu_software_list>(machine(), container, (software_list_config *)event->itemref, image)));
+ // ui_menu::stack_push(global_alloc_clear<ui_menu_software_list>(machine(), container, (software_list_config *)event->itemref, image));
*m_result = (software_list_device *)event->itemref;
ui_menu::stack_pop(machine());
}
diff --git a/src/emu/ui/toolbar.h b/src/emu/ui/toolbar.h
new file mode 100644
index 00000000000..f15f4499229
--- /dev/null
+++ b/src/emu/ui/toolbar.h
@@ -0,0 +1,250 @@
+// license:BSD-3-Clause
+// copyright-holders:Dankan1890
+static const UINT32 toolbar_bitmap_bmp[][1024] = {
+{
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x02D07A00, 0x15D07A00, 0x0FD07A00, 0x00D07A00, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x76D27F04, 0xBFDA9714, 0xB9D78F0E, 0x4DD17B01, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x3BD07A00, 0xFFE8B228, 0xFFFDEB50, 0xFFFBE34A, 0xD0E1A11C, 0x13D07A00, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x0BD07A00, 0xA0D48306, 0xFFFACE42, 0xFFFBCE45, 0xFFFCD146, 0xFFF2BD34, 0x67D07A00, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x49D27E03, 0xE9EAAB26, 0xFFFDD044, 0xFFF9C741, 0xFFFAC942, 0xFFFED245, 0xD1DF9716, 0x27D07A00, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0xA2DB8D0F, 0xFFF6C236, 0xFFFAC740, 0xFFF8C53F, 0xFFF8C53F, 0xFFFDCB41, 0xF7F0B62E, 0x71D68308, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x31D07A00, 0xFFE7A420, 0xFFFDCA3F, 0xFFF8C23D, 0xFFF8C23D, 0xFFF8C23D, 0xFFF8C23D, 0xFFFCC83D, 0xE0E19818, 0x11D07A00, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x08D07A00, 0x99D38004, 0xFFF9C237, 0xFFFAC43C, 0xFFF8BF3A, 0xFFF8BF3A, 0xFFF8BF3A, 0xFFF8BF3A, 0xFFFBC53C, 0xFFF1B32B, 0x63D07A00, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x01D07A00, 0x15D07A00, 0x24D07A00, 0x39D07A00, 0x4AD07A00, 0x79D48205, 0xE6E9A820, 0xFFFDC539, 0xFFF8BC37, 0xFFF8BC37, 0xFFF8BC37, 0xFFF8BC37, 0xFFF8BC37, 0xFFF9BD37, 0xFFFEC63A, 0xD8DF9613, 0x64D17C01, 0x3FD07A00, 0x2FD07A00, 0x1CD07A00, 0x0AD07A00, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x04D07A00, 0x3BD07A00, 0x8BD07A00, 0xA5D17B01, 0xBFDA940F, 0xCEE1A317, 0xE2E7B622, 0xF4EDC229, 0xFFF1C62D, 0xFFFAC735, 0xFFFABC35, 0xFFF8B934, 0xFFF8B934, 0xFFF8B934, 0xFFF8B934, 0xFFF8B934, 0xFFF8B934, 0xFFFCBF36, 0xFFF7C733, 0xFCEFC52C, 0xE9EABB24, 0xD8E4AE1D, 0xC6DD9C13, 0xB4D58608, 0x99D07A00, 0x75D07A00, 0x20D07A00, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x01D07A00, 0xBBD78608, 0xFFE9AE1F, 0xFFF9D133, 0xFFFCD839, 0xFFFCD338, 0xFFFCCC36, 0xFFFCC333, 0xFFFCBB32, 0xFFF7B630, 0xFFF7B630, 0xFFF7B630, 0xFFF7B630, 0xFFF7B630, 0xFFF7B630, 0xFFF7B630, 0xFFF7B630, 0xFFF7B630, 0xFFF7B630, 0xFFF7B630, 0xFFFAB831, 0xFFFCC033, 0xFFFCC735, 0xFFFCD037, 0xFFFCD739, 0xFFFBD536, 0xFFF5C92F, 0xE8E4A318, 0x55D78507, 0x00000000, 0x00000000,
+ 0x00000000, 0x13D07A00, 0xFFDF9212, 0xFFFABC2F, 0xFFF9B72F, 0xFFF8B32E, 0xFFF7B22D, 0xFFF7B22D, 0xFFF7B22D, 0xFFF7B22D, 0xFFF7B22D, 0xFFF7B22D, 0xFFF7B22D, 0xFFF7B22D, 0xFFF7B22D, 0xFFF7B22D, 0xFFF7B22D, 0xFFF7B22D, 0xFFF7B22D, 0xFFF7B22D, 0xFFF7B22D, 0xFFF7B22D, 0xFFF7B22D, 0xFFF7B22D, 0xFFF7B22D, 0xFFF7B32D, 0xFFF9B52E, 0xFFF9B92F, 0xFFF6B52A, 0xC1DB8B0D, 0x00000000, 0x00000000,
+ 0x00000000, 0x07D07A00, 0xE6DC8B0E, 0xFFF4AB27, 0xFFF7AF2A, 0xFFF7AF2A, 0xFFF7AF2A, 0xFFF7AF2A, 0xFFF7AF2A, 0xFFF7AF2A, 0xFFF7AF2A, 0xFFF7AF2A, 0xFFF7AF2A, 0xFFF7AF2A, 0xFFF7AF2A, 0xFFF7AF2A, 0xFFF7AF2A, 0xFFF7AF2A, 0xFFF7AF2A, 0xFFF7AF2A, 0xFFF7AF2A, 0xFFF7AF2A, 0xFFF7AF2A, 0xFFF7AF2A, 0xFFF7AF2A, 0xFFF7AF2A, 0xFFF7AF2A, 0xFFF7AF2A, 0xFFEFA421, 0xAAD9860A, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x5ED58005, 0xE8E39213, 0xFFF7AB26, 0xFFF7AB26, 0xFFF7AB26, 0xFFF7AB26, 0xFFF7AB26, 0xFFF7AB26, 0xFFF7AB26, 0xFFF7AB26, 0xFFF7AB26, 0xFFF7AB26, 0xFFF7AB26, 0xFFF7AB26, 0xFFF7AB26, 0xFFF7AB26, 0xFFF7AB26, 0xFFF7AB26, 0xFFF7AB26, 0xFFF7AB26, 0xFFF7AB26, 0xFFF7AB26, 0xFFF7AB26, 0xFFF7AB26, 0xFFF7AB26, 0xFFF4A925, 0xE2DC890C, 0x45D27C02, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x41D07A00, 0xE7E18F11, 0xFFF3A420, 0xFFF6A823, 0xFFF6A823, 0xFFF6A823, 0xFFF6A823, 0xFFF6A823, 0xFFF6A823, 0xFFF6A823, 0xFFF6A823, 0xFFF6A823, 0xFFF6A823, 0xFFF6A823, 0xFFF6A823, 0xFFF6A823, 0xFFF6A823, 0xFFF6A823, 0xFFF6A823, 0xFFF6A823, 0xFFF6A823, 0xFFF6A823, 0xFFF6A823, 0xFFEFA11D, 0xE0DB880A, 0x35D07A00, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x5DD47E03, 0xE6E08D0D, 0xFFF5A41F, 0xFFF6A41F, 0xFFF6A41F, 0xFFF6A41F, 0xFFF6A41F, 0xFFF6A41F, 0xFFF6A41F, 0xFFF6A41F, 0xFFF6A41F, 0xFFF6A41F, 0xFFF6A41F, 0xFFF6A41F, 0xFFF6A41F, 0xFFF6A41F, 0xFFF6A41F, 0xFFF6A41F, 0xFFF6A41F, 0xFFF6A41F, 0xFFF6A41F, 0xFFF3A11D, 0xDFDB8609, 0x4FD27C01, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x40D07A00, 0xE6E08A0C, 0xFFF29D19, 0xFFF6A01C, 0xFFF6A01C, 0xFFF6A01C, 0xFFF6A01C, 0xFFF6A01C, 0xFFF6A01C, 0xFFF6A01C, 0xFFF6A01C, 0xFFF6A01C, 0xFFF6A01C, 0xFFF6A01C, 0xFFF6A01C, 0xFFF6A01C, 0xFFF6A01C, 0xFFF6A01C, 0xFFF6A01C, 0xFFEE9917, 0xDDDA8407, 0x30D07A00, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x5BD37D02, 0xE6DF880A, 0xFFF59C18, 0xFFF69D18, 0xFFF69D18, 0xFFF69D18, 0xFFF69D18, 0xFFF69D18, 0xFFF69D18, 0xFFF69D18, 0xFFF69D18, 0xFFF69D18, 0xFFF69D18, 0xFFF69D18, 0xFFF69D18, 0xFFF69D18, 0xFFF69D18, 0xFFF29A16, 0xDCD98306, 0x49D17B01, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x7BD07A00, 0xFFEF9311, 0xFFF69A15, 0xFFF59915, 0xFFF59915, 0xFFF59915, 0xFFF59915, 0xFFF59915, 0xFFF59915, 0xFFF59915, 0xFFF59915, 0xFFF59915, 0xFFF59915, 0xFFF59915, 0xFFF59915, 0xFFF69915, 0xFFE2890A, 0x3BD07A00, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x01D07A00, 0xA2D17B00, 0xFFF59612, 0xFFF69713, 0xFFF59612, 0xFFF59612, 0xFFF59612, 0xFFF59612, 0xFFF59612, 0xFFF59612, 0xFFF59612, 0xFFF59612, 0xFFF59612, 0xFFF59612, 0xFFF59612, 0xFFF59612, 0xFFF79712, 0xFFE98D0B, 0x4BD07A00, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x14D07A00, 0xBED87F03, 0xFFF6940E, 0xFFF5930E, 0xFFF5930E, 0xFFF5930E, 0xFFF5930E, 0xFFF5930E, 0xFFF5930E, 0xFFF5930E, 0xFFF5930E, 0xFFF5930E, 0xFFF5930E, 0xFFF5930E, 0xFFF5930E, 0xFFF5930E, 0xFFF7940E, 0xFFF1900B, 0x7ED07A00, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x27D07A00, 0xD1DE8205, 0xFFF8920C, 0xFFF5900C, 0xFFF5900C, 0xFFF5900C, 0xFFF5900C, 0xFFF5900C, 0xFFF5900C, 0xFFF5900C, 0xFFF5900C, 0xFFF5900C, 0xFFF5900C, 0xFFF5900C, 0xFFF5900C, 0xFFF5900C, 0xFFF6910C, 0xFFF5910C, 0xA5D27B01, 0x03D07A00, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x40D07A00, 0xEAE48505, 0xFFFA9009, 0xFFF58D09, 0xFFF58D09, 0xFFF58D09, 0xFFF58D09, 0xFFF58D09, 0xFFF58D09, 0xFFF58D09, 0xFFF58D09, 0xFFF58D09, 0xFFF58D09, 0xFFF58D09, 0xFFF58D09, 0xFFF58D09, 0xFFF58D09, 0xFFF78E09, 0xC1D97F02, 0x17D07A00, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x57D17B00, 0xFBE88504, 0xFFF78D06, 0xFFF48B06, 0xFFF48B06, 0xFFF48B06, 0xFFF48B06, 0xFFF48B06, 0xFFF38B06, 0xFFEC8705, 0xFFF18A06, 0xFFF48B06, 0xFFF48B06, 0xFFF48B06, 0xFFF48B06, 0xFFF48B06, 0xFFF48B06, 0xFFF88E06, 0xD6DF8102, 0x2CD07A00, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x83D67D01, 0xFFED8503, 0xFFF48804, 0xFFF48804, 0xFFF48804, 0xFFF48804, 0xFFF28804, 0xFFEA8503, 0xCDDC7F02, 0x79D17B00, 0xA1D47C01, 0xEFE18102, 0xFFEE8604, 0xFFF38804, 0xFFF48804, 0xFFF48804, 0xFFF48804, 0xFFF88B04, 0xEFE58203, 0x46D07A00, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0xA0D87D01, 0xFFED8401, 0xFFF48602, 0xFFF48602, 0xFFF48602, 0xFFEF8501, 0xE9DE7F01, 0x8FD67D00, 0x23D07A00, 0x04D07A00, 0x0DD07A00, 0x46D07A00, 0xC3D97D01, 0xFFE28001, 0xFFF38602, 0xFFF48602, 0xFFF48602, 0xFFF58702, 0xFDE88201, 0x59D17A00, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x5FD47B00, 0xF3E58000, 0xFFF18400, 0xFFED8200, 0xDEE07F01, 0x90D37B00, 0x1FD07A00, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x01D07A00, 0x3BD07A00, 0xBDD67C00, 0xF2E48000, 0xFFEF8300, 0xFFF08300, 0xDEDF7E01, 0x34D07A00, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x10D07A00, 0x71D57C00, 0xD2DB7D00, 0x9AD87C00, 0x34D07A00, 0x0AD07A00, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x13D07A00, 0x52D27B00, 0xBBD97D00, 0xCBDA7D00, 0x5DD27B00, 0x0AD07A00, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
+},
+
+{
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x41D07A00, 0x8BD07A00, 0xAAD07A00, 0xAAD07A00, 0xAAC48715, 0xAAC08C1D, 0xAAC08C1D, 0xAAC08C1D, 0xAAC08C1D, 0xAAC08C1D, 0xAAC08C1D, 0xAAC08C1D, 0xAAC08C1D, 0xAAC08C1D, 0xAAC08C1D, 0xAAC08C1D, 0xAAC08C1D, 0xAAC08C1D, 0xAAC08C1D, 0xAAC08C1D, 0xAACA810B, 0xAAD07A00, 0xA4D07A00, 0x7DD07A00, 0x1CD07A00, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x07D07A00, 0x7BD38206, 0xFFE8B82B, 0xFFF9E24B, 0xFFFEEE55, 0xFFFDEE55, 0xFFCBA95F, 0xFFEBEBEB, 0xFFF1F1F1, 0xFFF3F3F3, 0xFFF7F7F7, 0xFFF9F9F9, 0xFFFCFCFC, 0xFFFEFEFE, 0xFFFEFEFE, 0xFFFEFEFE, 0xFFFCFCFC, 0xFFFAFAFA, 0xFFF7F7F7, 0xFFF5F5F5, 0xFFF2F2F2, 0xFFE9E9E9, 0xFFD4AC2F, 0xFFFDEE55, 0xFFFDEC53, 0xFFF6DE47, 0xE4DE9E19, 0x49D38105, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x2DD07A00, 0xD7E39E1C, 0xFFFDDC4A, 0xFFFBD047, 0xFFFACC45, 0xFFF9CB45, 0xFFC4A258, 0xFFD0D0D0, 0xFFD6D6D6, 0xFFDDDDDD, 0xFFE6E6E6, 0xFFEEEEEE, 0xFFF6F6F6, 0xFFFBFBFB, 0xFFF0E5CC, 0xFFD4B167, 0xFFD2B066, 0xFFD0AE64, 0xFFE9E9E9, 0xFFE1E1E1, 0xFFD8D8D8, 0xFFD2D2D2, 0xFFD3A12A, 0xFFF9CB45, 0xFFFACD46, 0xFFFBD348, 0xFFF7CD3E, 0xB2DB9112, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x52D07A00, 0xFCEBAD2C, 0xFFFCCC44, 0xFFF9C943, 0xFFF9C943, 0xFFF9C943, 0xFFC4A258, 0xFFD0D0D0, 0xFFD6D6D6, 0xFFDDDDDD, 0xFFE6E6E6, 0xFFEEEEEE, 0xFFF6F6F6, 0xFFFBFBFB, 0xFFE9D8B3, 0xFFE6B437, 0xFFF9C943, 0xFFD3A02A, 0xFFE9E9E9, 0xFFE1E1E1, 0xFFD8D8D8, 0xFFD2D2D2, 0xFFD3A02A, 0xFFF9C943, 0xFFF9C943, 0xFFF9C943, 0xFFFBCB44, 0xFADD9416, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x55D07A00, 0xFFEBAD2B, 0xFFF9C741, 0xFFF9C741, 0xFFF9C741, 0xFFF9C741, 0xFFC4A258, 0xFFD0D0D0, 0xFFD6D6D6, 0xFFDDDDDD, 0xFFE6E6E6, 0xFFEEEEEE, 0xFFF6F6F6, 0xFFFBFBFB, 0xFFE9D8B3, 0xFFE6B335, 0xFFF9C741, 0xFFD3A029, 0xFFE9E9E9, 0xFFE1E1E1, 0xFFD8D8D8, 0xFFD2D2D2, 0xFFD3A029, 0xFFF9C741, 0xFFF9C741, 0xFFF9C741, 0xFFF9C741, 0xFFDD9416, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x55D07A00, 0xFFEAAB2A, 0xFFF8C43F, 0xFFF8C43F, 0xFFF8C43F, 0xFFF8C43F, 0xFFC4A258, 0xFFD0D0D0, 0xFFD6D6D6, 0xFFDDDDDD, 0xFFE6E6E6, 0xFFEEEEEE, 0xFFF6F6F6, 0xFFFBFBFB, 0xFFE9D8B3, 0xFFE5B133, 0xFFF8C43F, 0xFFD29F28, 0xFFE9E9E9, 0xFFE1E1E1, 0xFFD8D8D8, 0xFFD2D2D2, 0xFFD29F28, 0xFFF8C43F, 0xFFF8C43F, 0xFFF8C43F, 0xFFF8C43F, 0xFFDD9315, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x55D07A00, 0xFFEAAA28, 0xFFF8C23C, 0xFFF8C23C, 0xFFF8C23C, 0xFFF8C23C, 0xFFC4A258, 0xFFD0D0D0, 0xFFD6D6D6, 0xFFDDDDDD, 0xFFE6E6E6, 0xFFEEEEEE, 0xFFF6F6F6, 0xFFFBFBFB, 0xFFE9D8B3, 0xFFE5B032, 0xFFF8C23C, 0xFFD29E27, 0xFFE9E9E9, 0xFFE1E1E1, 0xFFD8D8D8, 0xFFD2D2D2, 0xFFD29E27, 0xFFF8C23C, 0xFFF8C23C, 0xFFF8C23C, 0xFFF8C23C, 0xFFDD9214, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x55D07A00, 0xFFEAA826, 0xFFF8BF39, 0xFFF8BF39, 0xFFF8BF39, 0xFFF8BF39, 0xFFC9A352, 0xFFCFCDC7, 0xFFD6D6D6, 0xFFDDDDDD, 0xFFE6E6E6, 0xFFEEEEEE, 0xFFF6F6F6, 0xFFFBFBFB, 0xFFE9D8B3, 0xFFD8A329, 0xFFE5AE30, 0xFFCC9723, 0xFFECECEC, 0xFFE1E1E1, 0xFFD8D8D8, 0xFFD0CCC2, 0xFFD8A128, 0xFFF8BF39, 0xFFF8BF39, 0xFFF8BF39, 0xFFF8BF39, 0xFFDD9113, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x55D07A00, 0xFFEAA624, 0xFFF8BC36, 0xFFF8BC36, 0xFFF8BC36, 0xFFF8BC36, 0xFFD7A63B, 0xFFCCBFA3, 0xFFD6D6D6, 0xFFDDDDDD, 0xFFE6E6E6, 0xFFEEEEEE, 0xFFF6F6F6, 0xFFFBFBFB, 0xFFF8F2E6, 0xFFEAD8B3, 0xFFEAD8B3, 0xFFEAD8B3, 0xFFF5F5F5, 0xFFE1E1E1, 0xFFD8D7D5, 0xFFCBB280, 0xFFE9AF2F, 0xFFF8BC36, 0xFFF8BC36, 0xFFF8BC36, 0xFFF8BC36, 0xFFDD9012, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x55D07A00, 0xFFEAA422, 0xFFF8B933, 0xFFF8B933, 0xFFF8B933, 0xFFF8B933, 0xFFF1B430, 0xFFD6A02D, 0xFFD0B57B, 0xFFD3C099, 0xFFD9C8A3, 0xFFDFCDA8, 0xFFE4D3AE, 0xFFE7D6B1, 0xFFE9D8B3, 0xFFE8D7B2, 0xFFE5D3AE, 0xFFE1CFAA, 0xFFDBCAA5, 0xFFD5C298, 0xFFD0AB5D, 0xFFDDA42C, 0xFFF8B933, 0xFFF8B933, 0xFFF8B933, 0xFFF8B933, 0xFFF8B933, 0xFFDD8F11, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x55D07A00, 0xFFEAA120, 0xFFF7B530, 0xFFF7B530, 0xFFF7B530, 0xFFF7B530, 0xFFF7B530, 0xFFF4B32F, 0xFFE9AB2B, 0xFFE5A72A, 0xFFE4A729, 0xFFE4A729, 0xFFE4A729, 0xFFE4A729, 0xFFE4A729, 0xFFE4A729, 0xFFE4A729, 0xFFE4A729, 0xFFE4A729, 0xFFE5A82A, 0xFFEDAE2D, 0xFFF5B430, 0xFFF7B530, 0xFFF7B530, 0xFFF7B530, 0xFFF7B530, 0xFFF7B530, 0xFFDD8E10, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x55D07A00, 0xFFEA9F1E, 0xFFF7B22D, 0xFFF7B22D, 0xFFF7B22D, 0xFFF7B22D, 0xFFF7B22D, 0xFFF7B22D, 0xFFF7B22D, 0xFFF7B22D, 0xFFF7B22D, 0xFFF7B22D, 0xFFF7B22D, 0xFFF7B22D, 0xFFF7B22D, 0xFFF7B22D, 0xFFF7B22D, 0xFFF7B22D, 0xFFF7B22D, 0xFFF7B22D, 0xFFF7B22D, 0xFFF7B22D, 0xFFF7B22D, 0xFFF7B22D, 0xFFF7B22D, 0xFFF7B22D, 0xFFF7B22D, 0xFFDD8D0F, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x55D07A00, 0xFFEA9D1C, 0xFFF7AF2A, 0xFFF7AF2A, 0xFFF7AF2A, 0xFFF7AF2A, 0xFFF7AF2A, 0xFFF7AF2A, 0xFFF7AF2A, 0xFFF7AF2A, 0xFFF7AF2A, 0xFFF7AF2A, 0xFFF7AF2A, 0xFFF7AF2A, 0xFFF7AF2A, 0xFFF7AF2A, 0xFFF7AF2A, 0xFFF7AF2A, 0xFFF7AF2A, 0xFFF7AF2A, 0xFFF7AF2A, 0xFFF7AF2A, 0xFFF7AF2A, 0xFFF7AF2A, 0xFFF7AF2A, 0xFFF7AF2A, 0xFFF7AF2A, 0xFFDD8B0E, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x55D07A00, 0xFFEA9A19, 0xFFF7AB26, 0xFFF7AB26, 0xFFF7AB26, 0xFFF7AB26, 0xFFF0A725, 0xFFE8A324, 0xFFE4A123, 0xFFE4A123, 0xFFE4A123, 0xFFE4A123, 0xFFE4A123, 0xFFE4A123, 0xFFE4A123, 0xFFE4A123, 0xFFE4A123, 0xFFE4A123, 0xFFE4A123, 0xFFE4A123, 0xFFE5A124, 0xFFE9A424, 0xFFF4AA26, 0xFFF7AB26, 0xFFF7AB26, 0xFFF7AB26, 0xFFF7AB26, 0xFFDD8A0D, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x55D07A00, 0xFFE99917, 0xFFF6A823, 0xFFF6A823, 0xFFF6A823, 0xFFE9A122, 0xFFD7A84A, 0xFFE5CC98, 0xFFEAD8B3, 0xFFEAD8B3, 0xFFEAD8B3, 0xFFEAD8B3, 0xFFEAD8B3, 0xFFEAD8B3, 0xFFEAD8B3, 0xFFEAD8B3, 0xFFEAD8B3, 0xFFEAD8B3, 0xFFEAD8B3, 0xFFEAD8B3, 0xFFE9D6AE, 0xFFE4C78C, 0xFFD89C2A, 0xFFF0A522, 0xFFF6A823, 0xFFF6A823, 0xFFF6A823, 0xFFDD890B, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x55D07A00, 0xFFE99614, 0xFFF6A41F, 0xFFF6A41F, 0xFFEFA11F, 0xFFD7A94D, 0xFFFBF9F6, 0xFFF7F7F7, 0xFFEFEFEF, 0xFFEEEEEE, 0xFFEEEEEE, 0xFFEEEEEE, 0xFFEEEEEE, 0xFFEEEEEE, 0xFFEEEEEE, 0xFFEEEEEE, 0xFFEEEEEE, 0xFFEEEEEE, 0xFFEEEEEE, 0xFFEEEEEE, 0xFFF2F2F2, 0xFFF8F8F8, 0xFFEEE1C5, 0xFFDBA136, 0xFFF6A41F, 0xFFF6A41F, 0xFFF6A41F, 0xFFDC880A, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x55D07A00, 0xFFE99413, 0xFFF6A11C, 0xFFF6A11C, 0xFFE79B1C, 0xFFDDC594, 0xFFF3F3F3, 0xFFEDEDED, 0xFFECECEC, 0xFFECECEC, 0xFFECECEC, 0xFFECECEC, 0xFFECECEC, 0xFFECECEC, 0xFFECECEC, 0xFFECECEC, 0xFFECECEC, 0xFFECECEC, 0xFFECECEC, 0xFFECECEC, 0xFFECECEC, 0xFFEDEDED, 0xFFF2EFEA, 0xFFD2AA59, 0xFFF6A11C, 0xFFF6A11C, 0xFFF6A11C, 0xFFDC8709, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x55D07A00, 0xFFE99110, 0xFFF69D18, 0xFFF69D18, 0xFFE49719, 0xFFDCCAA5, 0xFFE9E9E9, 0xFFE2E2E2, 0xFFDEDEDE, 0xFFDEDEDE, 0xFFDEDEDE, 0xFFDEDEDE, 0xFFDEDEDE, 0xFFDEDEDE, 0xFFDEDEDE, 0xFFDEDEDE, 0xFFDEDEDE, 0xFFDEDEDE, 0xFFDEDEDE, 0xFFDEDEDE, 0xFFDEDEDE, 0xFFE6E6E6, 0xFFEAEAEA, 0xFFCEAB61, 0xFFF69D18, 0xFFF69D18, 0xFFF69D18, 0xFFDC8608, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x55D07A00, 0xFFE88F0E, 0xFFF59A15, 0xFFF59A15, 0xFFE39518, 0xFFDAC9A4, 0xFFE7E7E7, 0xFFE0E0E0, 0xFFDCDCDC, 0xFFDCDCDC, 0xFFDCDCDC, 0xFFDCDCDC, 0xFFDCDCDC, 0xFFDCDCDC, 0xFFDCDCDC, 0xFFDCDCDC, 0xFFDCDCDC, 0xFFDCDCDC, 0xFFDCDCDC, 0xFFDCDCDC, 0xFFDCDCDC, 0xFFE4E4E4, 0xFFE7E7E7, 0xFFCDAA60, 0xFFF59A15, 0xFFF59A15, 0xFFF59A15, 0xFFDC8507, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x55D07A00, 0xFFE88D0C, 0xFFF59712, 0xFFF59712, 0xFFE39315, 0xFFD8C6A1, 0xFFE4E4E4, 0xFFE4E4E4, 0xFFE4E4E4, 0xFFE4E4E4, 0xFFE4E4E4, 0xFFE4E4E4, 0xFFE4E4E4, 0xFFE4E4E4, 0xFFE4E4E4, 0xFFE4E4E4, 0xFFE4E4E4, 0xFFE4E4E4, 0xFFE4E4E4, 0xFFE4E4E4, 0xFFE4E4E4, 0xFFE4E4E4, 0xFFE4E4E4, 0xFFCCA95F, 0xFFF59712, 0xFFF59712, 0xFFF59712, 0xFFDC8406, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x55D07A00, 0xFFE88B0A, 0xFFF5930F, 0xFFF5930F, 0xFFE39114, 0xFFD5C49F, 0xFFE0E0E0, 0xFFE0E0E0, 0xFFE0E0E0, 0xFFE0E0E0, 0xFFE0E0E0, 0xFFE0E0E0, 0xFFE0E0E0, 0xFFE0E0E0, 0xFFE0E0E0, 0xFFE0E0E0, 0xFFE0E0E0, 0xFFE0E0E0, 0xFFE0E0E0, 0xFFE0E0E0, 0xFFE0E0E0, 0xFFE0E0E0, 0xFFE0E0E0, 0xFFCBA85E, 0xFFF5930F, 0xFFF5930F, 0xFFF5930F, 0xFFDC8205, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x55D07A00, 0xFFE88808, 0xFFF5900C, 0xFFF5900C, 0xFFE38E11, 0xFFD3C29D, 0xFFDCDCDC, 0xFFCECECE, 0xFFC7C7C7, 0xFFC7C7C7, 0xFFC7C7C7, 0xFFC7C7C7, 0xFFC7C7C7, 0xFFC7C7C7, 0xFFC7C7C7, 0xFFC7C7C7, 0xFFC7C7C7, 0xFFC7C7C7, 0xFFC7C7C7, 0xFFC7C7C7, 0xFFC7C7C7, 0xFFD6D6D6, 0xFFDDDDDD, 0xFFCAA75D, 0xFFF5900C, 0xFFF5900C, 0xFFF5900C, 0xFFDC8104, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x55D07A00, 0xFFE88706, 0xFFF58E09, 0xFFF58E09, 0xFFE38D10, 0xFFD1C09B, 0xFFDADADA, 0xFFDADADA, 0xFFDADADA, 0xFFDADADA, 0xFFDADADA, 0xFFDADADA, 0xFFDADADA, 0xFFDADADA, 0xFFDADADA, 0xFFDADADA, 0xFFDADADA, 0xFFDADADA, 0xFFDADADA, 0xFFDADADA, 0xFFDADADA, 0xFFDADADA, 0xFFDADADA, 0xFFC8A65C, 0xFFF58E09, 0xFFF58E09, 0xFFF58E09, 0xFFDC8103, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x55D07A00, 0xFFE88504, 0xFFF48B07, 0xFFF48B07, 0xFFE38B0E, 0xFFCEBD98, 0xFFD6D6D6, 0xFFD6D6D6, 0xFFD6D6D6, 0xFFD6D6D6, 0xFFD6D6D6, 0xFFD6D6D6, 0xFFD6D6D6, 0xFFD6D6D6, 0xFFD6D6D6, 0xFFD6D6D6, 0xFFD6D6D6, 0xFFD6D6D6, 0xFFD6D6D6, 0xFFD6D6D6, 0xFFD6D6D6, 0xFFD6D6D6, 0xFFD6D6D6, 0xFFC7A55B, 0xFFF48B07, 0xFFF48B07, 0xFFF48B07, 0xFFDC8002, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x52D07A00, 0xFCE78404, 0xFFF48905, 0xFFF48905, 0xFFE28A0D, 0xFFCDBC97, 0xFFD3D3D3, 0xFFC6C6C6, 0xFFBFBFBF, 0xFFBFBFBF, 0xFFBFBFBF, 0xFFBFBFBF, 0xFFBFBFBF, 0xFFBFBFBF, 0xFFBFBFBF, 0xFFBFBFBF, 0xFFBFBFBF, 0xFFBFBFBF, 0xFFBFBFBF, 0xFFBFBFBF, 0xFFBFBFBF, 0xFFCDCDCD, 0xFFD4D4D4, 0xFFC7A45A, 0xFFF48905, 0xFFF48905, 0xFFF38905, 0xFADC7F02, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x2ED07A00, 0xD8DF7F01, 0xFFF38602, 0xFFF48602, 0xFFE2880B, 0xFFCBBA95, 0xFFD1D1D1, 0xFFD1D1D1, 0xFFD1D1D1, 0xFFD1D1D1, 0xFFD1D1D1, 0xFFD1D1D1, 0xFFD1D1D1, 0xFFD1D1D1, 0xFFD1D1D1, 0xFFD1D1D1, 0xFFD1D1D1, 0xFFD1D1D1, 0xFFD1D1D1, 0xFFD1D1D1, 0xFFD1D1D1, 0xFFD1D1D1, 0xFFD1D1D1, 0xFFC6A359, 0xFFF48602, 0xFFF48602, 0xFFED8402, 0xB2D97D01, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x08D07A00, 0x7BD37B00, 0xFFE27F00, 0xFFF08401, 0xFFE2870A, 0xFFCAB893, 0xFFCFCFCF, 0xFFCFCFCF, 0xFFCFCFCF, 0xFFCFCFCF, 0xFFCFCFCF, 0xFFCFCFCF, 0xFFCFCFCF, 0xFFCFCFCF, 0xFFCFCFCF, 0xFFCFCFCF, 0xFFCFCFCF, 0xFFCFCFCF, 0xFFCFCFCF, 0xFFCFCFCF, 0xFFCFCFCF, 0xFFCFCFCF, 0xFFCFCFCF, 0xFFC5A258, 0xFFF38501, 0xFFEE8301, 0xE4DB7D00, 0x49D27B00, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x43D07A00, 0x8DD07A00, 0xAACD7D05, 0xAAC28919, 0xAAC08C1D, 0xAAC08C1D, 0xAAC08C1D, 0xAAC08C1D, 0xAAC08C1D, 0xAAC08C1D, 0xAAC08C1D, 0xAAC08C1D, 0xAAC08C1D, 0xAAC08C1D, 0xAAC08C1D, 0xAAC08C1D, 0xAAC08C1D, 0xAAC08C1D, 0xAAC08C1D, 0xAAC08C1D, 0xAAC08C1D, 0xAAC48715, 0xA5D07A00, 0x7FD07A00, 0x1DD07A00, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
+},
+
+{
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x0E999999, 0x59999999, 0x9E999999, 0xAA999999, 0xAA999999, 0xAA999999, 0xAA999999, 0xAA999999, 0xAA999999, 0xAA999999, 0xAA999999, 0xAA999999, 0xAA999999, 0xAA999999, 0xAA999999, 0xAA999999, 0xAA999999, 0xAA999999, 0xAA999999, 0xAA999999, 0xAA999999, 0xAA999999, 0x8B999999, 0x41999999, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x0F999999, 0xC8AEAEAE, 0xFFDADADA, 0xFFF7F7F7, 0xFFFAFAFA, 0xFFFAFAFA, 0xFFFAFAFA, 0xFFFAFAFA, 0xFFFAFAFA, 0xFFFAFAFA, 0xFFFAFAFA, 0xFFFAFAFA, 0xFFFAFAFA, 0xFFFAFAFA, 0xFFFAFAFA, 0xFFFAFAFA, 0xFFFAFAFA, 0xFFFAFAFA, 0xFFFAFAFA, 0xFFFAFAFA, 0xFFFAFAFA, 0xFFFAFAFA, 0xFFFAFAFA, 0xFFF1F1F1, 0xFFCDCDCD, 0x7BA1A1A1, 0x08999999, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x5B999999, 0xFFDADADA, 0xFFF8F8F8, 0xFFF2F2F2, 0xFFEFEFEF, 0xFFEFEFEF, 0xFFEFEFEF, 0xFFEFEFEF, 0xFFEFEFEF, 0xFFEFEFEF, 0xFFEFEFEF, 0xFFEFEFEF, 0xFFEFEFEF, 0xFFEFEFEF, 0xFFEFEFEF, 0xFFEFEFEF, 0xFFEFEFEF, 0xFFEFEFEF, 0xFFEFEFEF, 0xFFEFEFEF, 0xFFEFEFEF, 0xFFEFEFEF, 0xFFF0F0F0, 0xFFF3F3F3, 0xFFFAFAFA, 0xD8BFBFBF, 0x2E999999, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0xA3999999, 0xFFEEEEEE, 0xFFF0F0F0, 0xFFEFEFEF, 0xFFEFEFEF, 0xFFEFEFEF, 0xFFEFEFEF, 0xFFEFEFEF, 0xFFEFEFEF, 0xFFEFEFEF, 0xFFEFEFEF, 0xFFEFEFEF, 0xFFEFEFEF, 0xFFEFEFEF, 0xFFEFEFEF, 0xFFEFEFEF, 0xFFEFEFEF, 0xFFEFEFEF, 0xFFEFEFEF, 0xFFEFEFEF, 0xFFEFEFEF, 0xFFEFEFEF, 0xFFEFEFEF, 0xFFEFEFEF, 0xFFF2F2F2, 0xFCD1D1D1, 0x53999999, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0xAA999999, 0xFFEEEEEE, 0xFFEEEEEE, 0xFFEEEEEE, 0xFFEEEEEE, 0xFFEEEEEE, 0xFFEEEEEE, 0xFFEEEEEE, 0xFFEEEEEE, 0xFFEEEEEE, 0xFFEEEEEE, 0xFFEEEEEE, 0xFFEEEEEE, 0xFFEEEEEE, 0xFFEEEEEE, 0xFFEEEEEE, 0xFFEEEEEE, 0xFFEEEEEE, 0xFFEEEEEE, 0xFFEEEEEE, 0xFFEEEEEE, 0xFFEEEEEE, 0xFFEEEEEE, 0xFFEEEEEE, 0xFFEEEEEE, 0xFFD1D1D1, 0x55999999, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0xAA999999, 0xFFEDEDED, 0xFFEDEDED, 0xFFEDEDED, 0xFFB5B5B5, 0xFF999999, 0xFF999999, 0xFF999999, 0xFF999999, 0xFF999999, 0xFF999999, 0xFF999999, 0xFF999999, 0xFF999999, 0xFF999999, 0xFF999999, 0xFF999999, 0xFF999999, 0xFF999999, 0xFF999999, 0xFF999999, 0xFF9A9A9A, 0xFFD3D3D3, 0xFFEDEDED, 0xFFEDEDED, 0xFFD1D1D1, 0x55999999, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0xAA999999, 0xFFEDEDED, 0xFFEDEDED, 0xFFEDEDED, 0xFFDADADA, 0xFFD1D1D1, 0xFFD1D1D1, 0xFFD1D1D1, 0xFFD1D1D1, 0xFFD1D1D1, 0xFFD1D1D1, 0xFFD1D1D1, 0xFFD1D1D1, 0xFFD1D1D1, 0xFFD1D1D1, 0xFFD1D1D1, 0xFFD1D1D1, 0xFFD1D1D1, 0xFFD1D1D1, 0xFFD1D1D1, 0xFFD1D1D1, 0xFFD1D1D1, 0xFFE4E4E4, 0xFFEDEDED, 0xFFEDEDED, 0xFFD1D1D1, 0x55999999, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0xAA999999, 0xFFECECEC, 0xFFECECEC, 0xFFECECEC, 0xFFECECEC, 0xFFECECEC, 0xFFECECEC, 0xFFECECEC, 0xFFECECEC, 0xFFECECEC, 0xFFECECEC, 0xFFECECEC, 0xFFECECEC, 0xFFECECEC, 0xFFECECEC, 0xFFECECEC, 0xFFECECEC, 0xFFECECEC, 0xFFECECEC, 0xFFECECEC, 0xFFECECEC, 0xFFECECEC, 0xFFECECEC, 0xFFECECEC, 0xFFECECEC, 0xFFD0D0D0, 0x55999999, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0xAA999999, 0xFFEBEBEB, 0xFFEBEBEB, 0xFFEBEBEB, 0xFFEBEBEB, 0xFFEBEBEB, 0xFFEBEBEB, 0xFFEBEBEB, 0xFFEBEBEB, 0xFFEBEBEB, 0xFFEBEBEB, 0xFFEBEBEB, 0xFFEBEBEB, 0xFFEBEBEB, 0xFFEBEBEB, 0xFFEBEBEB, 0xFFEBEBEB, 0xFFEBEBEB, 0xFFEBEBEB, 0xFFEBEBEB, 0xFFEBEBEB, 0xFFEBEBEB, 0xFFEBEBEB, 0xFFEBEBEB, 0xFFEBEBEB, 0xFFCFCFCF, 0x55999999, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0xAA999999, 0xFFEAEAEA, 0xFFEAEAEA, 0xFFEAEAEA, 0xFFD8D8D8, 0xFFCFCFCF, 0xFFCFCFCF, 0xFFCFCFCF, 0xFFCFCFCF, 0xFFCFCFCF, 0xFFCFCFCF, 0xFFCFCFCF, 0xFFCFCFCF, 0xFFCFCFCF, 0xFFCFCFCF, 0xFFCFCFCF, 0xFFCFCFCF, 0xFFCFCFCF, 0xFFCFCFCF, 0xFFCFCFCF, 0xFFCFCFCF, 0xFFCFCFCF, 0xFFE1E1E1, 0xFFEAEAEA, 0xFFEAEAEA, 0xFFCFCFCF, 0x55999999, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0xAA999999, 0xFFE9E9E9, 0xFFE9E9E9, 0xFFE9E9E9, 0xFFB4B4B4, 0xFF999999, 0xFF999999, 0xFF999999, 0xFF999999, 0xFF999999, 0xFF999999, 0xFF999999, 0xFF999999, 0xFF999999, 0xFF999999, 0xFF999999, 0xFF999999, 0xFF999999, 0xFF999999, 0xFF999999, 0xFF999999, 0xFF9A9A9A, 0xFFD0D0D0, 0xFFE9E9E9, 0xFFE9E9E9, 0xFFCECECE, 0x55999999, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0xAA999999, 0xFFE8E8E8, 0xFFE8E8E8, 0xFFE8E8E8, 0xFFE8E8E8, 0xFFE8E8E8, 0xFFE8E8E8, 0xFFE8E8E8, 0xFFE8E8E8, 0xFFE8E8E8, 0xFFE8E8E8, 0xFFE8E8E8, 0xFFE8E8E8, 0xFFE8E8E8, 0xFFE8E8E8, 0xFFE8E8E8, 0xFFE8E8E8, 0xFFE8E8E8, 0xFFE8E8E8, 0xFFE8E8E8, 0xFFE8E8E8, 0xFFE8E8E8, 0xFFE8E8E8, 0xFFE8E8E8, 0xFFE8E8E8, 0xFFCDCDCD, 0x55999999, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0xAA999999, 0xFFE7E7E7, 0xFFE7E7E7, 0xFFE7E7E7, 0xFFE7E7E7, 0xFFE7E7E7, 0xFFE7E7E7, 0xFFE7E7E7, 0xFFE7E7E7, 0xFFE7E7E7, 0xFFE7E7E7, 0xFFE7E7E7, 0xFFE7E7E7, 0xFFE7E7E7, 0xFFE7E7E7, 0xFFE7E7E7, 0xFFE7E7E7, 0xFFE7E7E7, 0xFFE7E7E7, 0xFFE7E7E7, 0xFFE7E7E7, 0xFFE7E7E7, 0xFFE7E7E7, 0xFFE7E7E7, 0xFFE7E7E7, 0xFFCDCDCD, 0x55999999, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0xAA999999, 0xFFE6E6E6, 0xFFE6E6E6, 0xFFE6E6E6, 0xFFE6E6E6, 0xFFE6E6E6, 0xFFE6E6E6, 0xFFE6E6E6, 0xFFE6E6E6, 0xFFE6E6E6, 0xFFE6E6E6, 0xFFE6E6E6, 0xFFE6E6E6, 0xFFE6E6E6, 0xFFE6E6E6, 0xFFE6E6E6, 0xFFE6E6E6, 0xFFE6E6E6, 0xFFE6E6E6, 0xFFE6E6E6, 0xFFE6E6E6, 0xFFE6E6E6, 0xFFE6E6E6, 0xFFE6E6E6, 0xFFE6E6E6, 0xFFCCCCCC, 0x55999999, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0xAA999999, 0xFFE5E5E5, 0xFFE5E5E5, 0xFFE5E5E5, 0xFFE5E5E5, 0xFFE5E5E5, 0xFFE5E5E5, 0xFFE5E5E5, 0xFFE5E5E5, 0xFFE5E5E5, 0xFFE5E5E5, 0xFFE5E5E5, 0xFFE5E5E5, 0xFFE5E5E5, 0xFFE5E5E5, 0xFFE5E5E5, 0xFFE5E5E5, 0xFFE5E5E5, 0xFFE5E5E5, 0xFFE5E5E5, 0xFFE5E5E5, 0xFFE5E5E5, 0xFFE5E5E5, 0xFFE5E5E5, 0xFFE5E5E5, 0xFFCBCBCB, 0x55999999, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0xAA999999, 0xFFE4E4E4, 0xFFE4E4E4, 0xFFE4E4E4, 0xFFB2B2B2, 0xFF999999, 0xFF999999, 0xFF999999, 0xFF999999, 0xFF999999, 0xFF999999, 0xFF999999, 0xFF999999, 0xFF999999, 0xFF999999, 0xFF999999, 0xFF999999, 0xFF999999, 0xFF999999, 0xFF999999, 0xFF999999, 0xFF9A9A9A, 0xFFCCCCCC, 0xFFE4E4E4, 0xFFE4E4E4, 0xFFCBCBCB, 0x55999999, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0xAA999999, 0xFFE3E3E3, 0xFFE3E3E3, 0xFFE3E3E3, 0xFFD2D2D2, 0xFFCACACA, 0xFFCACACA, 0xFFCACACA, 0xFFCACACA, 0xFFCACACA, 0xFFCACACA, 0xFFCACACA, 0xFFCACACA, 0xFFCACACA, 0xFFCACACA, 0xFFCACACA, 0xFFCACACA, 0xFFCACACA, 0xFFCACACA, 0xFFCACACA, 0xFFB0BABD, 0xFFAEB9BC, 0xFFDADBDB, 0xFFABC1C8, 0xFFD9DDDE, 0xFFCACACA, 0x55999999, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0xAA999999, 0xFFE2E2E2, 0xFFE2E2E2, 0xFFE2E2E2, 0xFFE2E2E2, 0xFFE2E2E2, 0xFFE2E2E2, 0xFFE2E2E2, 0xFFE2E2E2, 0xFFE2E2E2, 0xFFE2E2E2, 0xFFE2E2E2, 0xFFE2E2E2, 0xFFE2E2E2, 0xFFE2E2E2, 0xFFE2E2E2, 0xFFE2E2E2, 0xFFDEE0E0, 0xFFBECFD4, 0xFFC5D1D4, 0xFF6CADC1, 0xFF53B4CE, 0xFF89B6C4, 0xFF35AAC8, 0xFFA8C3CC, 0xFFA6B9BE, 0x59758F96, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0xAA999999, 0xFFE1E1E1, 0xFFE1E1E1, 0xFFE1E1E1, 0xFFE1E1E1, 0xFFE1E1E1, 0xFFE1E1E1, 0xFFE1E1E1, 0xFFE1E1E1, 0xFFE1E1E1, 0xFFE1E1E1, 0xFFE1E1E1, 0xFFE1E1E1, 0xFFE1E1E1, 0xFFE1E1E1, 0xFFE1E1E1, 0xFFE1E1E1, 0xFFD2D7D9, 0xFF5CABC4, 0xFF4AB6D1, 0xFF35ACD0, 0xFF2ABAE5, 0xFF25B0D9, 0xFF28B6E3, 0xFF49ACC8, 0xFF3AACCB, 0x632385A4, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0xAA999999, 0xFFE0E0E0, 0xFFE0E0E0, 0xFFE0E0E0, 0xFFE0E0E0, 0xFFE0E0E0, 0xFFE0E0E0, 0xFFE0E0E0, 0xFFE0E0E0, 0xFFE0E0E0, 0xFFE0E0E0, 0xFFE0E0E0, 0xFFE0E0E0, 0xFFE0E0E0, 0xFFE0E0E0, 0xFFDEDFDF, 0xFFA7C0C9, 0xFF79B4C5, 0xFF3CA1C0, 0xFF29B3E0, 0xFF25B0DC, 0xFF5DC2E3, 0xFFB1E2F2, 0xFF59C2E3, 0xFF26B3DE, 0xFF26A8D2, 0xA41C8CAD, 0x661783A4, 0x180E6784,
+ 0x00000000, 0x00000000, 0x00000000, 0xAA999999, 0xFFDFDFDF, 0xFFDFDFDF, 0xFFDFDFDF, 0xFFC0C0C0, 0xFFB0B0B0, 0xFFB0B0B0, 0xFFB0B0B0, 0xFFB0B0B0, 0xFFB0B0B0, 0xFFB0B0B0, 0xFFB0B0B0, 0xFFB0B0B0, 0xFFB0B0B0, 0xFFB0B0B0, 0xFFDEDEDE, 0xFF87AEBA, 0xFF24A7D1, 0xFF25ABD5, 0xFF25A8D1, 0xFF1EA4CF, 0xFF9BD7EA, 0xFFFFFFFF, 0xFF91D3E8, 0xFF23A6D0, 0xFF25A9D2, 0xFD26ACD4, 0xD11E94B8, 0x280D647F,
+ 0x00000000, 0x00000000, 0x00000000, 0xAA999999, 0xFFDEDEDE, 0xFFDEDEDE, 0xFFDEDEDE, 0xFFBFBFBF, 0xFFB0B0B0, 0xFFB0B0B0, 0xFFB0B0B0, 0xFFB0B0B0, 0xFFB0B0B0, 0xFFB0B0B0, 0xFFB0B0B0, 0xFFB0B0B0, 0xFFB0B0B0, 0xFFB0B0B0, 0xFFBFCCD1, 0xFF85B3C2, 0xFF1F96BC, 0xFF229FC7, 0xFF229FC6, 0xFF1B9BC5, 0xFF95D1E4, 0xFFFFFFFF, 0xFF8DCDE2, 0xFF219DC6, 0xFF229FC6, 0xFF22A0C8, 0xBE1986A9, 0x46137696,
+ 0x00000000, 0x00000000, 0x00000000, 0xAA999999, 0xFFDDDDDD, 0xFFDDDDDD, 0xFFDDDDDD, 0xFFDDDDDD, 0xFFDDDDDD, 0xFFDDDDDD, 0xFFDDDDDD, 0xFFDDDDDD, 0xFFDDDDDD, 0xFFDDDDDD, 0xFFDDDDDD, 0xFFDDDDDD, 0xFFDDDDDD, 0xFFDDDDDD, 0xFF77A5B4, 0xFF2795B9, 0xFF2099C0, 0xFF2097BD, 0xFF2097BD, 0xFF1A95BC, 0xFF8BC9DD, 0xFFFEFEFF, 0xFF7CC2D8, 0xFF1D96BC, 0xFF2097BD, 0xFF2097BE, 0xFB219BC1, 0xDE1780A1,
+ 0x00000000, 0x00000000, 0x00000000, 0xAA999999, 0xFFDCDCDC, 0xFFDCDCDC, 0xFFDCDCDC, 0xFFDCDCDC, 0xFFDCDCDC, 0xFFDCDCDC, 0xFFDCDCDC, 0xFFDCDCDC, 0xFFDCDCDC, 0xFFDCDCDC, 0xFFDCDCDC, 0xFFDCDCDC, 0xFFDCDCDC, 0xFFDCDCDC, 0xFFCBD2D3, 0xFF5293A8, 0xFF1D8FB3, 0xFF1C8EB1, 0xFF1C8EB1, 0xFF198CB0, 0xFF77BAD0, 0xFFFCFDFE, 0xFF64B1CA, 0xFF178BAF, 0xFF1C8EB1, 0xFF1C8EB2, 0xF21984A6, 0x5E0F6884,
+ 0x00000000, 0x00000000, 0x00000000, 0xAA999999, 0xFFDBDBDB, 0xFFDBDBDB, 0xFFDBDBDB, 0xFFDBDBDB, 0xFFDBDBDB, 0xFFDBDBDB, 0xFFDBDBDB, 0xFFDBDBDB, 0xFFDBDBDB, 0xFFDBDBDB, 0xFFDBDBDB, 0xFFDBDBDB, 0xFFDBDBDB, 0xFFDBDBDB, 0xFF85ABB8, 0xFF2789AA, 0xFF1B87A9, 0xFF1A85A7, 0xFF1A85A7, 0xFF1884A6, 0xFF69AEC5, 0xFFF9FCFD, 0xFF51A2BC, 0xFF1683A5, 0xFF1A85A7, 0xFF1A85A7, 0xFB1B88AB, 0xC0147695,
+ 0x00000000, 0x00000000, 0x00000000, 0xAA999999, 0xFFDADADA, 0xFFDADADA, 0xFFDADADA, 0xFFDADADA, 0xFFDADADA, 0xFFDADADA, 0xFFDADADA, 0xFFDADADA, 0xFFDADADA, 0xFFDADADA, 0xFFDADADA, 0xFFDADADA, 0xFFDADADA, 0xFFDADADA, 0xFFAFC0C6, 0xFF5F95A6, 0xFF177998, 0xFF187C9D, 0xFF187C9C, 0xFF177B9C, 0xFF2C87A4, 0xFF75B0C3, 0xFF1E7F9F, 0xFF177B9C, 0xFF187C9C, 0xFF177D9D, 0xD7147190, 0x7C0F6682,
+ 0x00000000, 0x00000000, 0x00000000, 0xAA999999, 0xFFDADADA, 0xFFDADADA, 0xFFDADADA, 0xFFDADADA, 0xFFDADADA, 0xFFDADADA, 0xFFDADADA, 0xFFDADADA, 0xFFDADADA, 0xFFDADADA, 0xFFDADADA, 0xFFDADADA, 0xFFDADADA, 0xFFDADADA, 0xFFDADADA, 0xFF94B1B9, 0xFF167695, 0xFF167695, 0xFF157593, 0xFF137492, 0xFF4E97AE, 0xFFA3CAD6, 0xFF4390A9, 0xFF147492, 0xFF157593, 0xFF177796, 0xBD126D8B, 0x190B5B75,
+ 0x00000000, 0x00000000, 0x00000000, 0x91999999, 0xFFD2D2D2, 0xFFD9D9D9, 0xFFD9D9D9, 0xFFD9D9D9, 0xFFD9D9D9, 0xFFD9D9D9, 0xFFD9D9D9, 0xFFD9D9D9, 0xFFD9D9D9, 0xFFD9D9D9, 0xFFD9D9D9, 0xFFD9D9D9, 0xFFD9D9D9, 0xFFD9D9D9, 0xFFD6D7D8, 0xFF7FA4B0, 0xFF4D899B, 0xFF21718B, 0xFF136D8A, 0xFF0C6986, 0xFF7FB0BF, 0xFFE5EFF2, 0xFF78ABBB, 0xFF116C89, 0xFC136C88, 0xCA106682, 0x990F6580, 0x240B5E78,
+ 0x00000000, 0x00000000, 0x00000000, 0x45999999, 0xFFBCBCBC, 0xFFD8D8D8, 0xFFD9D9D9, 0xFFD9D9D9, 0xFFD9D9D9, 0xFFD9D9D9, 0xFFD9D9D9, 0xFFD9D9D9, 0xFFD9D9D9, 0xFFD9D9D9, 0xFFD9D9D9, 0xFFD9D9D9, 0xFFD9D9D9, 0xFFD9D9D9, 0xFFD9D9D9, 0xFFD3D6D6, 0xFFBFC9CC, 0xFF3D7E93, 0xFF126681, 0xFF116682, 0xFF22728B, 0xFF44889D, 0xFF1F6F89, 0xF90F6480, 0xFC116681, 0x620D607A, 0x0A0A5A74, 0x020A5B75,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x7B9C9C9C, 0xD7B1B1B1, 0xFAC1C1C1, 0xFFC3C3C3, 0xFFC3C3C3, 0xFFC3C3C3, 0xFFC3C3C3, 0xFFC3C3C3, 0xFFC3C3C3, 0xFFC3C3C3, 0xFFC3C3C3, 0xFFC3C3C3, 0xFFC3C3C3, 0xFFC3C3C3, 0xFFC3C3C3, 0xFFC3C3C3, 0xFFBDBFC0, 0xFF819BA4, 0xFF96A8AD, 0xFF467C8E, 0xF220687F, 0xCB276A7F, 0xE90E607A, 0x520B5D77, 0x5F0B5D77, 0x2B0B5D77, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x07999999, 0x2D999999, 0x50999999, 0x55999999, 0x55999999, 0x55999999, 0x55999999, 0x55999999, 0x55999999, 0x55999999, 0x55999999, 0x55999999, 0x55999999, 0x55999999, 0x55999999, 0x55999999, 0x55999999, 0x55999999, 0x55999999, 0x72407283, 0x6626687D, 0x22467584, 0x800B5C76, 0x1A0A5B75, 0x00000000, 0x00000000, 0x00000000, 0x00000000
+},
+
+{
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x0E999999, 0x59999999, 0x9E999999, 0xAA999999, 0xAA999999, 0xAA999999, 0xAA999999, 0xAA999999, 0xAA999999, 0xAA999999, 0xAA999999, 0xAA999999, 0xAA999999, 0xAA999999, 0xAA999999, 0xAA999999, 0xAA999999, 0xAA999999, 0xAA999999, 0xAA999999, 0xAA999999, 0xAA999999, 0x8B999999, 0x41999999, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x0F999999, 0xC8AEAEAE, 0xFFDADADA, 0xFFF7F7F7, 0xFFFAFAFA, 0xFFFAFAFA, 0xFFFAFAFA, 0xFFFAFAFA, 0xFFFAFAFA, 0xFFFAFAFA, 0xFFFAFAFA, 0xFFFAFAFA, 0xFFFAFAFA, 0xFFFAFAFA, 0xFFFAFAFA, 0xFFFAFAFA, 0xFFFAFAFA, 0xFFFAFAFA, 0xFFFAFAFA, 0xFFFAFAFA, 0xFFFAFAFA, 0xFFFAFAFA, 0xFFFAFAFA, 0xFFF1F1F1, 0xFFCDCDCD, 0x7BA1A1A1, 0x08999999, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x5B999999, 0xFFDADADA, 0xFFF8F8F8, 0xFFF2F2F2, 0xFFEFEFEF, 0xFFEFEFEF, 0xFFEFEFEF, 0xFFEFEFEF, 0xFFEFEFEF, 0xFFEFEFEF, 0xFFEFEFEF, 0xFFEFEFEF, 0xFFEFEFEF, 0xFFEFEFEF, 0xFFEFEFEF, 0xFFEFEFEF, 0xFFEFEFEF, 0xFFEFEFEF, 0xFFEFEFEF, 0xFFEFEFEF, 0xFFEFEFEF, 0xFFEFEFEF, 0xFFF0F0F0, 0xFFF3F3F3, 0xFFFAFAFA, 0xD8BFBFBF, 0x2E999999, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0xA3999999, 0xFFEEEEEE, 0xFFF0F0F0, 0xFFEFEFEF, 0xFFEFEFEF, 0xFFEFEFEF, 0xFFEFEFEF, 0xFFEFEFEF, 0xFFEFEFEF, 0xFFEFEFEF, 0xFFEFEFEF, 0xFFEFEFEF, 0xFFEFEFEF, 0xFFEFEFEF, 0xFFEFEFEF, 0xFFEFEFEF, 0xFFEFEFEF, 0xFFEFEFEF, 0xFFEFEFEF, 0xFFEFEFEF, 0xFFEFEFEF, 0xFFEFEFEF, 0xFFEFEFEF, 0xFFEFEFEF, 0xFFF2F2F2, 0xFCD1D1D1, 0x53999999, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0xAA999999, 0xFFEEEEEE, 0xFFEEEEEE, 0xFFEEEEEE, 0xFFEEEEEE, 0xFFEEEEEE, 0xFFEEEEEE, 0xFFEEEEEE, 0xFFEEEEEE, 0xFFEEEEEE, 0xFFEEEEEE, 0xFFEEEEEE, 0xFFEEEEEE, 0xFFEEEEEE, 0xFFEEEEEE, 0xFFEEEEEE, 0xFFEEEEEE, 0xFFEEEEEE, 0xFFEEEEEE, 0xFFEEEEEE, 0xFFEEEEEE, 0xFFEEEEEE, 0xFFEEEEEE, 0xFFEEEEEE, 0xFFEEEEEE, 0xFFD1D1D1, 0x55999999, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0xAA999999, 0xFFEDEDED, 0xFFEDEDED, 0xFFEDEDED, 0xFFB5B5B5, 0xFF999999, 0xFF999999, 0xFF999999, 0xFF999999, 0xFF999999, 0xFF999999, 0xFF999999, 0xFF999999, 0xFF999999, 0xFF999999, 0xFF999999, 0xFF999999, 0xFF999999, 0xFF999999, 0xFF999999, 0xFF999999, 0xFF9A9A9A, 0xFFD3D3D3, 0xFFEDEDED, 0xFFEDEDED, 0xFFD1D1D1, 0x55999999, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0xAA999999, 0xFFEDEDED, 0xFFEDEDED, 0xFFEDEDED, 0xFFDADADA, 0xFFD1D1D1, 0xFFD1D1D1, 0xFFD1D1D1, 0xFFD1D1D1, 0xFFD1D1D1, 0xFFD1D1D1, 0xFFD1D1D1, 0xFFD1D1D1, 0xFFD1D1D1, 0xFFD1D1D1, 0xFFD1D1D1, 0xFFD1D1D1, 0xFFD1D1D1, 0xFFD1D1D1, 0xFFD1D1D1, 0xFFD1D1D1, 0xFFD1D1D1, 0xFFE4E4E4, 0xFFEDEDED, 0xFFEDEDED, 0xFFD1D1D1, 0x55999999, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0xAA999999, 0xFFECECEC, 0xFFECECEC, 0xFFECECEC, 0xFFECECEC, 0xFFECECEC, 0xFFECECEC, 0xFFECECEC, 0xFFECECEC, 0xFFECECEC, 0xFFECECEC, 0xFFECECEC, 0xFFECECEC, 0xFFECECEC, 0xFFECECEC, 0xFFECECEC, 0xFFECECEC, 0xFFECECEC, 0xFFECECEC, 0xFFECECEC, 0xFFECECEC, 0xFFECECEC, 0xFFECECEC, 0xFFECECEC, 0xFFECECEC, 0xFFD0D0D0, 0x55999999, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0xAA999999, 0xFFEBEBEB, 0xFFEBEBEB, 0xFFEBEBEB, 0xFFEBEBEB, 0xFFEBEBEB, 0xFFEBEBEB, 0xFFEBEBEB, 0xFFEBEBEB, 0xFFEBEBEB, 0xFFEBEBEB, 0xFFEBEBEB, 0xFFEBEBEB, 0xFFEBEBEB, 0xFFEBEBEB, 0xFFEBEBEB, 0xFFEBEBEB, 0xFFEBEBEB, 0xFFEBEBEB, 0xFFEBEBEB, 0xFFEBEBEB, 0xFFEBEBEB, 0xFFEBEBEB, 0xFFEBEBEB, 0xFFEBEBEB, 0xFFCFCFCF, 0x55999999, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0xAA999999, 0xFFEAEAEA, 0xFFEAEAEA, 0xFFEAEAEA, 0xFFD8D8D8, 0xFFCFCFCF, 0xFFCFCFCF, 0xFFCFCFCF, 0xFFCFCFCF, 0xFFCFCFCF, 0xFFCFCFCF, 0xFFCFCFCF, 0xFFCFCFCF, 0xFFCFCFCF, 0xFFCFCFCF, 0xFFCFCFCF, 0xFFCFCFCF, 0xFFCFCFCF, 0xFFCFCFCF, 0xFFCFCFCF, 0xFFCFCFCF, 0xFFCFCFCF, 0xFFE1E1E1, 0xFFEAEAEA, 0xFFEAEAEA, 0xFFCFCFCF, 0x55999999, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0xAA999999, 0xFFE9E9E9, 0xFFE9E9E9, 0xFFE9E9E9, 0xFFB4B4B4, 0xFF999999, 0xFF999999, 0xFF999999, 0xFF999999, 0xFF999999, 0xFF999999, 0xFF999999, 0xFF999999, 0xFF999999, 0xFF999999, 0xFF999999, 0xFF999999, 0xFF999999, 0xFF999999, 0xFF999999, 0xFF999999, 0xFF9A9A9A, 0xFFD0D0D0, 0xFFE9E9E9, 0xFFE9E9E9, 0xFFCECECE, 0x55999999, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0xAA999999, 0xFFE8E8E8, 0xFFE8E8E8, 0xFFE8E8E8, 0xFFE8E8E8, 0xFFE8E8E8, 0xFFE8E8E8, 0xFFE8E8E8, 0xFFE8E8E8, 0xFFE8E8E8, 0xFFE8E8E8, 0xFFE8E8E8, 0xFFE8E8E8, 0xFFE8E8E8, 0xFFE8E8E8, 0xFFE8E8E8, 0xFFE8E8E8, 0xFFE8E8E8, 0xFFE8E8E8, 0xFFE8E8E8, 0xFFE8E8E8, 0xFFE8E8E8, 0xFFE8E8E8, 0xFFE8E8E8, 0xFFE8E8E8, 0xFFCDCDCD, 0x55999999, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0xAA999999, 0xFFE7E7E7, 0xFFE7E7E7, 0xFFE7E7E7, 0xFFE7E7E7, 0xFFE7E7E7, 0xFFE7E7E7, 0xFFE7E7E7, 0xFFE7E7E7, 0xFFE7E7E7, 0xFFE7E7E7, 0xFFE7E7E7, 0xFFE7E7E7, 0xFFE7E7E7, 0xFFE7E7E7, 0xFFE7E7E7, 0xFFE7E7E7, 0xFFE7E7E7, 0xFFE7E7E7, 0xFFE7E7E7, 0xFFE7E7E7, 0xFFE7E7E7, 0xFFE7E7E7, 0xFFE7E7E7, 0xFFE7E7E7, 0xFFCDCDCD, 0x55999999, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0xAA999999, 0xFFE6E6E6, 0xFFE6E6E6, 0xFFE6E6E6, 0xFFE6E6E6, 0xFFE6E6E6, 0xFFE6E6E6, 0xFFE6E6E6, 0xFFE6E6E6, 0xFFE6E6E6, 0xFFE6E6E6, 0xFFE6E6E6, 0xFFE6E6E6, 0xFFE6E6E6, 0xFFE6E6E6, 0xFFE6E6E6, 0xFFE6E6E6, 0xFFE6E6E6, 0xFFE6E6E6, 0xFFE6E6E6, 0xFFE6E6E6, 0xFFE6E6E6, 0xFFE6E6E6, 0xFFE6E6E6, 0xFFE6E6E6, 0xFFCCCCCC, 0x55999999, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0xAA999999, 0xFFE5E5E5, 0xFFE5E5E5, 0xFFE5E5E5, 0xFFE5E5E5, 0xFFE5E5E5, 0xFFE5E5E5, 0xFFE5E5E5, 0xFFE5E5E5, 0xFFE5E5E5, 0xFFE5E5E5, 0xFFE5E5E5, 0xFFE5E5E5, 0xFFE5E5E5, 0xFFE5E5E5, 0xFFE5E5E5, 0xFFE5E5E5, 0xFFE5E5E5, 0xFFE5E5E5, 0xFFE5E5E5, 0xFFE5E5E5, 0xFFE5E5E5, 0xFFE5E5E5, 0xFFE5E5E5, 0xFFE5E5E5, 0xFFCBCBCB, 0x55999999, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0xAA999999, 0xFFE4E4E4, 0xFFE4E4E4, 0xFFE4E4E4, 0xFFB2B2B2, 0xFF999999, 0xFF999999, 0xFF999999, 0xFF999999, 0xFF999999, 0xFF999999, 0xFF999999, 0xFF999999, 0xFF999999, 0xFF999999, 0xFF999999, 0xFF999999, 0xFF999999, 0xFF999999, 0xFF999999, 0xFF999999, 0xFF9A9A9A, 0xFFCCCCCC, 0xFFE4E4E4, 0xFFE4E4E4, 0xFFCBCBCB, 0x55999999, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0xAA999999, 0xFFE3E3E3, 0xFFE3E3E3, 0xFFE3E3E3, 0xFFD2D2D2, 0xFFCACACA, 0xFFCACACA, 0xFFCACACA, 0xFFCACACA, 0xFFCACACA, 0xFFCACACA, 0xFFCACACA, 0xFFCACACA, 0xFFCACACA, 0xFFCACACA, 0xFFCACACA, 0xFFCACACA, 0xFFCACACA, 0xFFCACACA, 0xFFCACACA, 0xFFCACACA, 0xFFCACACA, 0xFFDBDBDB, 0xFFE3E3E3, 0xFFE3E3E3, 0xFFCACACA, 0x55999999, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0xAA999999, 0xFFE2E2E2, 0xFFE2E2E2, 0xFFE2E2E2, 0xFFE2E2E2, 0xFFE2E2E2, 0xFFE2E2E2, 0xFFE2E2E2, 0xFFE2E2E2, 0xFFE2E2E2, 0xFFE2E2E2, 0xFFE2E2E2, 0xFFE2E2E2, 0xFFE2E2E2, 0xFFE2E2E2, 0xFFE2E2E2, 0xFFE2E2E2, 0xFFE2E2E2, 0xFFE2E2E2, 0xFFE2E2E2, 0xFFBAC5A7, 0xFFB5C29F, 0xFFD6D8D1, 0xFF9AB077, 0xFFD1D5CA, 0xFFC9C9C9, 0x55999999, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0xAA999999, 0xFFE1E1E1, 0xFFE1E1E1, 0xFFE1E1E1, 0xFFE1E1E1, 0xFFE1E1E1, 0xFFE1E1E1, 0xFFE1E1E1, 0xFFE1E1E1, 0xFFE1E1E1, 0xFFE1E1E1, 0xFFE1E1E1, 0xFFE1E1E1, 0xFFE1E1E1, 0xFFE1E1E1, 0xFFE1E1E1, 0xFFE1E1E1, 0xFFDCDDDA, 0xFFB2C09C, 0xFFB9C3A7, 0xFF95B06E, 0xFF99BE65, 0xFF94AE6B, 0xFF91B959, 0xFFB3C09D, 0xFF9EAD84, 0x5C778B57, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0xAA999999, 0xFFE0E0E0, 0xFFE0E0E0, 0xFFE0E0E0, 0xFFE0E0E0, 0xFFE0E0E0, 0xFFE0E0E0, 0xFFE0E0E0, 0xFFE0E0E0, 0xFFE0E0E0, 0xFFE0E0E0, 0xFFE0E0E0, 0xFFE0E0E0, 0xFFE0E0E0, 0xFFE0E0E0, 0xFFE0E0E0, 0xFFDADBD8, 0xFFC9CEBF, 0xFF90AE62, 0xFF93BE57, 0xFF8EB853, 0xFF97C060, 0xFFA2C86F, 0xFF94BE5D, 0xFF89B24D, 0xFF8DB852, 0x6B678E2C, 0x0E446804, 0x03466A06,
+ 0x00000000, 0x00000000, 0x00000000, 0xAA999999, 0xFFDFDFDF, 0xFFDFDFDF, 0xFFDFDFDF, 0xFFC0C0C0, 0xFFB0B0B0, 0xFFB0B0B0, 0xFFB0B0B0, 0xFFB0B0B0, 0xFFB0B0B0, 0xFFB0B0B0, 0xFFB0B0B0, 0xFFB0B0B0, 0xFFB0B0B0, 0xFFB0B0B0, 0xFFDDDEDC, 0xFFA5B68A, 0xFF92B263, 0xFF86AD4F, 0xFF8FB957, 0xFF8BB551, 0xFFB8D295, 0xFFEAF2E1, 0xFFB4D08F, 0xFF8DB754, 0xFF89B350, 0xCE76A038, 0xA16E962E, 0x27517612,
+ 0x00000000, 0x00000000, 0x00000000, 0xAA999999, 0xFFDEDEDE, 0xFFDEDEDE, 0xFFDEDEDE, 0xFFBFBFBF, 0xFFB0B0B0, 0xFFB0B0B0, 0xFFB0B0B0, 0xFFB0B0B0, 0xFFB0B0B0, 0xFFB0B0B0, 0xFFB0B0B0, 0xFFB0B0B0, 0xFFB0B0B0, 0xFFB0B0B0, 0xFFDEDEDE, 0xFFB2BC9F, 0xFF81AA47, 0xFF87B14F, 0xFF84AE4C, 0xFF80AB46, 0xFFC7DAAE, 0xFFFFFFFF, 0xFFC3D8A8, 0xFF84AE4B, 0xFF85AF4D, 0xFF8AB552, 0xBE6F9633, 0x1A466B07,
+ 0x00000000, 0x00000000, 0x00000000, 0xAA999999, 0xFFDDDDDD, 0xFFDDDDDD, 0xFFDDDDDD, 0xFFDDDDDD, 0xFFDDDDDD, 0xFFDDDDDD, 0xFFDDDDDD, 0xFFDDDDDD, 0xFFDDDDDD, 0xFFDDDDDD, 0xFFDDDDDD, 0xFFDDDDDD, 0xFFDDDDDD, 0xFFDDDDDD, 0xFFB4BFA1, 0xFF8FAA64, 0xFF7BA53F, 0xFF7FA845, 0xFF7EA745, 0xFF7BA53F, 0xFFC0D4A4, 0xFFFFFFFF, 0xFFBAD09D, 0xFF7DA743, 0xFF7EA745, 0xFF80A946, 0xD9709931, 0x815C831C,
+ 0x00000000, 0x00000000, 0x00000000, 0xAA999999, 0xFFDCDCDC, 0xFFDCDCDC, 0xFFDCDCDC, 0xFFDCDCDC, 0xFFDCDCDC, 0xFFDCDCDC, 0xFFDCDCDC, 0xFFDCDCDC, 0xFFDCDCDC, 0xFFDCDCDC, 0xFFDCDCDC, 0xFFDCDCDC, 0xFFDCDCDC, 0xFFDCDCDC, 0xFFAAB893, 0xFF7C9F48, 0xFF779F3C, 0xFF769F3B, 0xFF769F3B, 0xFF739C37, 0xFFB4CA93, 0xFFFEFEFD, 0xFFA9C284, 0xFF739D38, 0xFF769F3B, 0xFF769E3B, 0xFB769E3B, 0xBE628925,
+ 0x00000000, 0x00000000, 0x00000000, 0xAA999999, 0xFFDBDBDB, 0xFFDBDBDB, 0xFFDBDBDB, 0xFFDBDBDB, 0xFFDBDBDB, 0xFFDBDBDB, 0xFFDBDBDB, 0xFFDBDBDB, 0xFFDBDBDB, 0xFFDBDBDB, 0xFFDBDBDB, 0xFFDBDBDB, 0xFFDBDBDB, 0xFFDBDBDB, 0xFFCBCFC5, 0xFF7D9A4F, 0xFF729935, 0xFF709834, 0xFF709734, 0xFF6E9631, 0xFFA7BF82, 0xFFFDFDFC, 0xFF9BB670, 0xFF6D9530, 0xFF709734, 0xFF709835, 0xF268902A, 0x5E517611,
+ 0x00000000, 0x00000000, 0x00000000, 0xAA999999, 0xFFDADADA, 0xFFDADADA, 0xFFDADADA, 0xFFDADADA, 0xFFDADADA, 0xFFDADADA, 0xFFDADADA, 0xFFDADADA, 0xFFDADADA, 0xFFDADADA, 0xFFDADADA, 0xFFDADADA, 0xFFDADADA, 0xFFDADADA, 0xFF98A979, 0xFF6A8F2F, 0xFF678E2A, 0xFF688F2A, 0xFF688F2A, 0xFF678E29, 0xFF90AC63, 0xFFE7EDDE, 0xFF7FA04C, 0xFF668D27, 0xFF688F2A, 0xFF678E2A, 0xFB688F2A, 0xDC5A801A,
+ 0x00000000, 0x00000000, 0x00000000, 0xAA999999, 0xFFDADADA, 0xFFDADADA, 0xFFDADADA, 0xFFDADADA, 0xFFDADADA, 0xFFDADADA, 0xFFDADADA, 0xFFDADADA, 0xFFDADADA, 0xFFDADADA, 0xFFDADADA, 0xFFDADADA, 0xFFDADADA, 0xFFDADADA, 0xFFCACEC4, 0xFFA3B28B, 0xFF5E8420, 0xFF618824, 0xFF618823, 0xFF618823, 0xFF678C2B, 0xFF83A153, 0xFF618824, 0xFF608723, 0xFF618823, 0xFF628924, 0xBC557A16, 0x434E730F,
+ 0x00000000, 0x00000000, 0x00000000, 0x91999999, 0xFFD2D2D2, 0xFFD9D9D9, 0xFFD9D9D9, 0xFFD9D9D9, 0xFFD9D9D9, 0xFFD9D9D9, 0xFFD9D9D9, 0xFFD9D9D9, 0xFFD9D9D9, 0xFFD9D9D9, 0xFFD9D9D9, 0xFFD9D9D9, 0xFFD9D9D9, 0xFFD9D9D9, 0xFFD8D8D7, 0xFF93A575, 0xFF5A811C, 0xFF597F1A, 0xFF597F1A, 0xFF567D15, 0xFFA1B77D, 0xFFF3F6EF, 0xFF98B072, 0xFF587E18, 0xFF597F1A, 0xFD59801A, 0xCF547A14, 0x27476B07,
+ 0x00000000, 0x00000000, 0x00000000, 0x45999999, 0xFFBCBCBC, 0xFFD8D8D8, 0xFFD9D9D9, 0xFFD9D9D9, 0xFFD9D9D9, 0xFFD9D9D9, 0xFFD9D9D9, 0xFFD9D9D9, 0xFFD9D9D9, 0xFFD9D9D9, 0xFFD9D9D9, 0xFFD9D9D9, 0xFFD9D9D9, 0xFFD9D9D9, 0xFFD8D8D7, 0xFFB3BDA3, 0xFF9BAC80, 0xFF658430, 0xFF557B16, 0xFF517810, 0xFF91A968, 0xFFDAE2CC, 0xFF8BA560, 0xFF527913, 0xFA537914, 0x9B4D720D, 0x5C4C710D, 0x15476C08,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x7B9C9C9C, 0xD7B1B1B1, 0xFAC1C1C1, 0xFFC3C3C3, 0xFFC3C3C3, 0xFFC3C3C3, 0xFFC3C3C3, 0xFFC3C3C3, 0xFFC3C3C3, 0xFFC3C3C3, 0xFFC3C3C3, 0xFFC3C3C3, 0xFFC3C3C3, 0xFFC3C3C3, 0xFFC3C3C3, 0xFFC3C3C3, 0xFFB8BBB3, 0xFF6E8744, 0xFF5E7A2D, 0xFF54761A, 0xFD4C720C, 0xF64C720C, 0xFB4C720B, 0xC54B700B, 0xD94C720D, 0x53496E0A, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x07999999, 0x2D999999, 0x50999999, 0x55999999, 0x55999999, 0x55999999, 0x55999999, 0x55999999, 0x55999999, 0x55999999, 0x55999999, 0x55999999, 0x55999999, 0x55999999, 0x55999999, 0x55999999, 0x55969793, 0x55728354, 0x557E8A69, 0xAB52731A, 0xBC4A6E0A, 0x70486C0A, 0xE0496D08, 0x41466B06, 0x2F476B07, 0x16476B07, 0x00000000, 0x00000000
+},
+
+{
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x0E999999, 0x59999999, 0x9E999999, 0xAA999999, 0xAA999999, 0xAA999999, 0xAA999999, 0xAA999999, 0xAA999999, 0xAA999999, 0xAA999999, 0xAA999999, 0xAA999999, 0xAA999999, 0xAA999999, 0xAA999999, 0xAA999999, 0xAA999999, 0xAA999999, 0xAA999999, 0xAA999999, 0xAA999999, 0x8B999999, 0x41999999, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x0F999999, 0xC8AEAEAE, 0xFFDADADA, 0xFFF7F7F7, 0xFFFAFAFA, 0xFFFAFAFA, 0xFFFAFAFA, 0xFFFAFAFA, 0xFFFAFAFA, 0xFFFAFAFA, 0xFFFAFAFA, 0xFFFAFAFA, 0xFFFAFAFA, 0xFFFAFAFA, 0xFFFAFAFA, 0xFFFAFAFA, 0xFFFAFAFA, 0xFFFAFAFA, 0xFFFAFAFA, 0xFFFAFAFA, 0xFFFAFAFA, 0xFFFAFAFA, 0xFFFAFAFA, 0xFFF1F1F1, 0xFFCDCDCD, 0x7BA1A1A1, 0x08999999, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x5B999999, 0xFFDADADA, 0xFFF8F8F8, 0xFFF2F2F2, 0xFFEFEFEF, 0xFFEFEFEF, 0xFFEFEFEF, 0xFFEFEFEF, 0xFFEFEFEF, 0xFFEFEFEF, 0xFFEFEFEF, 0xFFEFEFEF, 0xFFEFEFEF, 0xFFEFEFEF, 0xFFEFEFEF, 0xFFEFEFEF, 0xFFEFEFEF, 0xFFEFEFEF, 0xFFEFEFEF, 0xFFEFEFEF, 0xFFEFEFEF, 0xFFEFEFEF, 0xFFF0F0F0, 0xFFF3F3F3, 0xFFFAFAFA, 0xD8BFBFBF, 0x2E999999, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0xA3999999, 0xFFEEEEEE, 0xFFF0F0F0, 0xFFEFEFEF, 0xFFEFEFEF, 0xFFEFEFEF, 0xFFEFEFEF, 0xFFEFEFEF, 0xFFEFEFEF, 0xFFEFEFEF, 0xFFEFEFEF, 0xFFEFEFEF, 0xFFEFEFEF, 0xFFEFEFEF, 0xFFEFEFEF, 0xFFEFEFEF, 0xFFEFEFEF, 0xFFEFEFEF, 0xFFEFEFEF, 0xFFEFEFEF, 0xFFEFEFEF, 0xFFEFEFEF, 0xFFEFEFEF, 0xFFEFEFEF, 0xFFF2F2F2, 0xFCD1D1D1, 0x53999999, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0xAA999999, 0xFFEEEEEE, 0xFFEEEEEE, 0xFFEEEEEE, 0xFFEEEEEE, 0xFFEEEEEE, 0xFFEEEEEE, 0xFFEEEEEE, 0xFFEEEEEE, 0xFFEEEEEE, 0xFFEEEEEE, 0xFFEEEEEE, 0xFFEEEEEE, 0xFFEEEEEE, 0xFFEEEEEE, 0xFFEEEEEE, 0xFFEEEEEE, 0xFFEEEEEE, 0xFFEEEEEE, 0xFFEEEEEE, 0xFFEEEEEE, 0xFFEEEEEE, 0xFFEEEEEE, 0xFFEEEEEE, 0xFFEEEEEE, 0xFFD1D1D1, 0x55999999, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0xAA999999, 0xFFEDEDED, 0xFFEDEDED, 0xFFEDEDED, 0xFFB5B5B5, 0xFF999999, 0xFF999999, 0xFF999999, 0xFF999999, 0xFF999999, 0xFF999999, 0xFF999999, 0xFF999999, 0xFF999999, 0xFF999999, 0xFF999999, 0xFF999999, 0xFF999999, 0xFF999999, 0xFF999999, 0xFF999999, 0xFF9A9A9A, 0xFFD3D3D3, 0xFFEDEDED, 0xFFEDEDED, 0xFFD1D1D1, 0x55999999, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0xAA999999, 0xFFEDEDED, 0xFFEDEDED, 0xFFEDEDED, 0xFFDADADA, 0xFFD1D1D1, 0xFFD1D1D1, 0xFFD1D1D1, 0xFFD1D1D1, 0xFFD1D1D1, 0xFFD1D1D1, 0xFFD1D1D1, 0xFFD1D1D1, 0xFFD1D1D1, 0xFFD1D1D1, 0xFFD1D1D1, 0xFFD1D1D1, 0xFFD1D1D1, 0xFFD1D1D1, 0xFFD1D1D1, 0xFFD1D1D1, 0xFFD1D1D1, 0xFFE4E4E4, 0xFFEDEDED, 0xFFEDEDED, 0xFFD1D1D1, 0x55999999, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0xAA999999, 0xFFECECEC, 0xFFECECEC, 0xFFECECEC, 0xFFECECEC, 0xFFECECEC, 0xFFECECEC, 0xFFECECEC, 0xFFECECEC, 0xFFECECEC, 0xFFECECEC, 0xFFECECEC, 0xFFECECEC, 0xFFECECEC, 0xFFECECEC, 0xFFECECEC, 0xFFECECEC, 0xFFECECEC, 0xFFECECEC, 0xFFECECEC, 0xFFECECEC, 0xFFECECEC, 0xFFECECEC, 0xFFECECEC, 0xFFECECEC, 0xFFD0D0D0, 0x55999999, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0xAA999999, 0xFFEBEBEB, 0xFFEBEBEB, 0xFFEBEBEB, 0xFFEBEBEB, 0xFFEBEBEB, 0xFFEBEBEB, 0xFFEBEBEB, 0xFFEBEBEB, 0xFFEBEBEB, 0xFFEBEBEB, 0xFFEBEBEB, 0xFFEBEBEB, 0xFFEBEBEB, 0xFFEBEBEB, 0xFFEBEBEB, 0xFFEBEBEB, 0xFFEBEBEB, 0xFFEBEBEB, 0xFFEBEBEB, 0xFFEBEBEB, 0xFFEBEBEB, 0xFFEBEBEB, 0xFFEBEBEB, 0xFFEBEBEB, 0xFFCFCFCF, 0x55999999, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0xAA999999, 0xFFEAEAEA, 0xFFEAEAEA, 0xFFEAEAEA, 0xFFD8D8D8, 0xFFCFCFCF, 0xFFCFCFCF, 0xFFCFCFCF, 0xFFCFCFCF, 0xFFCFCFCF, 0xFFCFCFCF, 0xFFCFCFCF, 0xFFCFCFCF, 0xFFCFCFCF, 0xFFCFCFCF, 0xFFCFCFCF, 0xFFCFCFCF, 0xFFCFCFCF, 0xFFCFCFCF, 0xFFCFCFCF, 0xFFCFCFCF, 0xFFCFCFCF, 0xFFE1E1E1, 0xFFEAEAEA, 0xFFEAEAEA, 0xFFCFCFCF, 0x55999999, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0xAA999999, 0xFFE9E9E9, 0xFFE9E9E9, 0xFFE9E9E9, 0xFFB4B4B4, 0xFF999999, 0xFF999999, 0xFF999999, 0xFF999999, 0xFF999999, 0xFF999999, 0xFF999999, 0xFF999999, 0xFF999999, 0xFF999999, 0xFF999999, 0xFF999999, 0xFF999999, 0xFF999999, 0xFF999999, 0xFF999999, 0xFF9A9A9A, 0xFFD0D0D0, 0xFFE9E9E9, 0xFFE9E9E9, 0xFFCECECE, 0x55999999, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0xAA999999, 0xFFE8E8E8, 0xFFE8E8E8, 0xFFE8E8E8, 0xFFE8E8E8, 0xFFE8E8E8, 0xFFE8E8E8, 0xFFE8E8E8, 0xFFE8E8E8, 0xFFE8E8E8, 0xFFE8E8E8, 0xFFE8E8E8, 0xFFE8E8E8, 0xFFE8E8E8, 0xFFE8E8E8, 0xFFE8E8E8, 0xFFE8E8E8, 0xFFE8E8E8, 0xFFE8E8E8, 0xFFE8E8E8, 0xFFE8E8E8, 0xFFE8E8E8, 0xFFE8E8E8, 0xFFE8E8E8, 0xFFE8E8E8, 0xFFCDCDCD, 0x55999999, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0xAA999999, 0xFFE7E7E7, 0xFFE7E7E7, 0xFFE7E7E7, 0xFFE7E7E7, 0xFFE7E7E7, 0xFFE7E7E7, 0xFFE7E7E7, 0xFFE7E7E7, 0xFFE7E7E7, 0xFFE7E7E7, 0xFFE7E7E7, 0xFFE7E7E7, 0xFFE7E7E7, 0xFFE7E7E7, 0xFFE7E7E7, 0xFFE7E7E7, 0xFFE7E7E7, 0xFFE7E7E7, 0xFFE7E7E7, 0xFFE7E7E7, 0xFFE7E7E7, 0xFFE7E7E7, 0xFFE7E7E7, 0xFFE7E7E7, 0xFFCDCDCD, 0x55999999, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0xAA999999, 0xFFE6E6E6, 0xFFE6E6E6, 0xFFE6E6E6, 0xFFE6E6E6, 0xFFE6E6E6, 0xFFE6E6E6, 0xFFE6E6E6, 0xFFE6E6E6, 0xFFE6E6E6, 0xFFE6E6E6, 0xFFE6E6E6, 0xFFE6E6E6, 0xFFE6E6E6, 0xFFE6E6E6, 0xFFE6E6E6, 0xFFE6E6E6, 0xFFE6E6E6, 0xFFE6E6E6, 0xFFE6E6E6, 0xFFE6E6E6, 0xFFE6E6E6, 0xFFE6E6E6, 0xFFE6E6E6, 0xFFE6E6E6, 0xFFCCCCCC, 0x55999999, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0xAA999999, 0xFFE5E5E5, 0xFFE5E5E5, 0xFFE5E5E5, 0xFFE5E5E5, 0xFFE5E5E5, 0xFFE5E5E5, 0xFFE5E5E5, 0xFFE5E5E5, 0xFFE5E5E5, 0xFFE5E5E5, 0xFFE5E5E5, 0xFFE5E5E5, 0xFFE5E5E5, 0xFFE5E5E5, 0xFFE5E5E5, 0xFFE5E5E5, 0xFFE5E5E5, 0xFFE5E5E5, 0xFFE5E5E5, 0xFFE5E5E5, 0xFFE5E5E5, 0xFFE5E5E5, 0xFFE5E5E5, 0xFFE5E5E5, 0xFFCBCBCB, 0x55999999, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0xAA999999, 0xFFE4E4E4, 0xFFE4E4E4, 0xFFE4E4E4, 0xFFB2B2B2, 0xFF999999, 0xFF999999, 0xFF999999, 0xFF999999, 0xFF999999, 0xFF999999, 0xFF999999, 0xFF999999, 0xFF999999, 0xFF999999, 0xFF999999, 0xFF999999, 0xFF999999, 0xFF999999, 0xFF999999, 0xFF999999, 0xFF9A9A9A, 0xFFCCCCCC, 0xFFE4E4E4, 0xFFE4E4E4, 0xFFCBCBCB, 0x55999999, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0xAA999999, 0xFFE3E3E3, 0xFFE3E3E3, 0xFFE3E3E3, 0xFFD2D2D2, 0xFFCACACA, 0xFFCACACA, 0xFFCACACA, 0xFFCACACA, 0xFFCACACA, 0xFFCACACA, 0xFFCACACA, 0xFFCACACA, 0xFFCACACA, 0xFFCACACA, 0xFFCACACA, 0xFFCACACA, 0xFFCACACA, 0xFFCACACA, 0xFFCACACA, 0xFFC6B7B1, 0xFFC6B5B0, 0xFFDBDBDA, 0xFFDAB9AF, 0xFFE1DBD9, 0xFFCACACA, 0x55999999, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0xAA999999, 0xFFE2E2E2, 0xFFE2E2E2, 0xFFE2E2E2, 0xFFE2E2E2, 0xFFE2E2E2, 0xFFE2E2E2, 0xFFE2E2E2, 0xFFE2E2E2, 0xFFE2E2E2, 0xFFE2E2E2, 0xFFE2E2E2, 0xFFE2E2E2, 0xFFE2E2E2, 0xFFE2E2E2, 0xFFE2E2E2, 0xFFE2E2E2, 0xFFE1DFDE, 0xFFDEC9C0, 0xFFDDCDC7, 0xFFDB9673, 0xFFE49259, 0xFFDAA68E, 0xFFE4803C, 0xFFDCBAAC, 0xFFCAB2A9, 0x59A68679, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0xAA999999, 0xFFE1E1E1, 0xFFE1E1E1, 0xFFE1E1E1, 0xFFE1E1E1, 0xFFE1E1E1, 0xFFE1E1E1, 0xFFE1E1E1, 0xFFE1E1E1, 0xFFE1E1E1, 0xFFE1E1E1, 0xFFE1E1E1, 0xFFE1E1E1, 0xFFE1E1E1, 0xFFE1E1E1, 0xFFE1E1E1, 0xFFE1E1E1, 0xFFDED6D3, 0xFFDD8F62, 0xFFE78F50, 0xFFE8813C, 0xFFF0852D, 0xFFEB7D2A, 0xFFF0832C, 0xFFE2884F, 0xFFE38341, 0x63CF612D, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0xAA999999, 0xFFE0E0E0, 0xFFE0E0E0, 0xFFE0E0E0, 0xFFE0E0E0, 0xFFE0E0E0, 0xFFE0E0E0, 0xFFE0E0E0, 0xFFE0E0E0, 0xFFE0E0E0, 0xFFE0E0E0, 0xFFE0E0E0, 0xFFE0E0E0, 0xFFE0E0E0, 0xFFE0E0E0, 0xFFE0DFDE, 0xFFDAB7AA, 0xFFDC9D7E, 0xFFDE7B42, 0xFFEB7F2A, 0xFFEA7C27, 0xFFED9D5F, 0xFFF6CFB1, 0xFFEE9A5B, 0xFFEB7E28, 0xFFE67729, 0xA4D76225, 0x66D55A22, 0x18C5461C,
+ 0x00000000, 0x00000000, 0x00000000, 0xAA999999, 0xFFDFDFDF, 0xFFDFDFDF, 0xFFDFDFDF, 0xFFC0C0C0, 0xFFB0B0B0, 0xFFB0B0B0, 0xFFB0B0B0, 0xFFB0B0B0, 0xFFB0B0B0, 0xFFB0B0B0, 0xFFB0B0B0, 0xFFB0B0B0, 0xFFB0B0B0, 0xFFB0B0B0, 0xFFDFDEDE, 0xFFD59F8C, 0xFFE77426, 0xFFE87627, 0xFFE47426, 0xFFE46F1E, 0xFFF3C09C, 0xFFFFFFFF, 0xFFF2B992, 0xFFE37324, 0xFFE67426, 0xFDE87727, 0xD1DC6523, 0x28C3441C,
+ 0x00000000, 0x00000000, 0x00000000, 0xAA999999, 0xFFDEDEDE, 0xFFDEDEDE, 0xFFDEDEDE, 0xFFBFBFBF, 0xFFB0B0B0, 0xFFB0B0B0, 0xFFB0B0B0, 0xFFB0B0B0, 0xFFB0B0B0, 0xFFB0B0B0, 0xFFB0B0B0, 0xFFB0B0B0, 0xFFB0B0B0, 0xFFB0B0B0, 0xFFDBC8C1, 0xFFD9A08A, 0xFFDE6521, 0xFFE06B21, 0xFFE06B21, 0xFFDF661A, 0xFFF0B794, 0xFFFFFFFF, 0xFFEEB28D, 0xFFE0691F, 0xFFDF6B21, 0xFFE06B21, 0xBED85A1F, 0x46CF4F1D,
+ 0x00000000, 0x00000000, 0x00000000, 0xAA999999, 0xFFDDDDDD, 0xFFDDDDDD, 0xFFDDDDDD, 0xFFDDDDDD, 0xFFDDDDDD, 0xFFDDDDDD, 0xFFDDDDDD, 0xFFDDDDDD, 0xFFDDDDDD, 0xFFDDDDDD, 0xFFDDDDDD, 0xFFDDDDDD, 0xFFDDDDDD, 0xFFDDDDDD, 0xFFD3947C, 0xFFDC6527, 0xFFDE631D, 0xFFDB621D, 0xFFDC621D, 0xFFDB5E17, 0xFFECAD89, 0xFFFFFEFE, 0xFFEAA37A, 0xFFDB5F1A, 0xFFDC621D, 0xFFDC621D, 0xFBE1641E, 0xDED2541C,
+ 0x00000000, 0x00000000, 0x00000000, 0xAA999999, 0xFFDCDCDC, 0xFFDCDCDC, 0xFFDCDCDC, 0xFFDCDCDC, 0xFFDCDCDC, 0xFFDCDCDC, 0xFFDCDCDC, 0xFFDCDCDC, 0xFFDCDCDC, 0xFFDCDCDC, 0xFFDCDCDC, 0xFFDCDCDC, 0xFFDCDCDC, 0xFFDCDCDC, 0xFFD9CFCD, 0xFFD17857, 0xFFD75819, 0xFFD65719, 0xFFD65719, 0xFFD55414, 0xFFE69A75, 0xFFFEFDFC, 0xFFE38C61, 0xFFD55313, 0xFFD65719, 0xFFD65719, 0xF2D45319, 0x5EC6451A,
+ 0x00000000, 0x00000000, 0x00000000, 0xAA999999, 0xFFDBDBDB, 0xFFDBDBDB, 0xFFDBDBDB, 0xFFDBDBDB, 0xFFDBDBDB, 0xFFDBDBDB, 0xFFDBDBDB, 0xFFDBDBDB, 0xFFDBDBDB, 0xFFDBDBDB, 0xFFDBDBDB, 0xFFDBDBDB, 0xFFDBDBDB, 0xFFDBDBDB, 0xFFD39B89, 0xFFD85925, 0xFFD35015, 0xFFD24F15, 0xFFD24F15, 0xFFD14D12, 0xFFE18B65, 0xFFFEFBF9, 0xFFDC784C, 0xFFD14B11, 0xFFD24F15, 0xFFD24E15, 0xFBD85015, 0xC0D04917,
+ 0x00000000, 0x00000000, 0x00000000, 0xAA999999, 0xFFDADADA, 0xFFDADADA, 0xFFDADADA, 0xFFDADADA, 0xFFDADADA, 0xFFDADADA, 0xFFDADADA, 0xFFDADADA, 0xFFDADADA, 0xFFDADADA, 0xFFDADADA, 0xFFDADADA, 0xFFDADADA, 0xFFDADADA, 0xFFD5B9B1, 0xFFCC7D64, 0xFFCC4513, 0xFFCD4410, 0xFFCD4410, 0xFFCD440F, 0xFFD15425, 0xFFE08F71, 0xFFCE4917, 0xFFCD430F, 0xFFCD4410, 0xFFCE4410, 0xD7C84315, 0x7CC34118,
+ 0x00000000, 0x00000000, 0x00000000, 0xAA999999, 0xFFDADADA, 0xFFDADADA, 0xFFDADADA, 0xFFDADADA, 0xFFDADADA, 0xFFDADADA, 0xFFDADADA, 0xFFDADADA, 0xFFDADADA, 0xFFDADADA, 0xFFDADADA, 0xFFDADADA, 0xFFDADADA, 0xFFDADADA, 0xFFDADADA, 0xFFD1A598, 0xFFCD3E0E, 0xFFC93C0C, 0xFFC93C0D, 0xFFC83A0A, 0xFFD66B47, 0xFFEAB4A0, 0xFFD4633C, 0xFFC93B0B, 0xFFC93C0D, 0xFFCB3D0B, 0xBDCB3E12, 0x19BF3E19,
+ 0x00000000, 0x00000000, 0x00000000, 0x91999999, 0xFFD2D2D2, 0xFFD9D9D9, 0xFFD9D9D9, 0xFFD9D9D9, 0xFFD9D9D9, 0xFFD9D9D9, 0xFFD9D9D9, 0xFFD9D9D9, 0xFFD9D9D9, 0xFFD9D9D9, 0xFFD9D9D9, 0xFFD9D9D9, 0xFFD9D9D9, 0xFFD9D9D9, 0xFFD8D7D6, 0xFFCE9383, 0xFFC96A4E, 0xFFC4451F, 0xFFC53408, 0xFFC32E03, 0xFFDF907A, 0xFFF8E9E4, 0xFFDD8B72, 0xFFC43206, 0xFCC5350A, 0xCAC23911, 0x99C23B13, 0x24C03D18,
+ 0x00000000, 0x00000000, 0x00000000, 0x45999999, 0xFFBCBCBC, 0xFFD8D8D8, 0xFFD9D9D9, 0xFFD9D9D9, 0xFFD9D9D9, 0xFFD9D9D9, 0xFFD9D9D9, 0xFFD9D9D9, 0xFFD9D9D9, 0xFFD9D9D9, 0xFFD9D9D9, 0xFFD9D9D9, 0xFFD9D9D9, 0xFFD9D9D9, 0xFFD9D9D9, 0xFFD8D5D4, 0xFFD5C6C1, 0xFFC55A3D, 0xFFC1320B, 0xFFC13109, 0xFFC53D18, 0xFFCE5A3C, 0xFFC43B17, 0xF9C1310B, 0xFCC13109, 0x62BF3812, 0x0ABD3E1B, 0x02BE3E1A,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x7B9C9C9C, 0xD7B1B1B1, 0xFAC1C1C1, 0xFFC3C3C3, 0xFFC3C3C3, 0xFFC3C3C3, 0xFFC3C3C3, 0xFFC3C3C3, 0xFFC3C3C3, 0xFFC3C3C3, 0xFFC3C3C3, 0xFFC3C3C3, 0xFFC3C3C3, 0xFFC3C3C3, 0xFFC3C3C3, 0xFFC3C3C3, 0xFFC2BEBD, 0xFFBA9185, 0xFFBDA19A, 0xFFBC5F46, 0xF2BB3D1C, 0xCBB84A2B, 0xE9BE2E09, 0x52BE3915, 0x5FBE3B17, 0x2BBE3A16, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x07999999, 0x2D999999, 0x50999999, 0x55999999, 0x55999999, 0x55999999, 0x55999999, 0x55999999, 0x55999999, 0x55999999, 0x55999999, 0x55999999, 0x55999999, 0x55999999, 0x55999999, 0x55999999, 0x55999999, 0x55999999, 0x55999999, 0x72B05D46, 0x66B74B2D, 0x22AE644F, 0x80BE3814, 0x1ABE3C18, 0x00000000, 0x00000000, 0x00000000, 0x00000000
+},
+
+{
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x03B5B5B5, 0x48B6B6B6, 0xC2C9C9C9, 0xF9CDCDCD, 0xFFCDCDCD, 0xFFCDCDCD, 0xFFCDCDCD, 0xFFCDCDCD, 0xFFCDCDCD, 0xFBCDCDCD, 0xAEC5C5C5, 0x3BB7B7B7, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x21B5B5B5, 0xCBCBCBCB, 0xFFF5F5F5, 0xFFF9F9F9, 0xFFF7F7F7, 0xFFF7F7F7, 0xFFF7F7F7, 0xFFF7F7F7, 0xFFF7F7F7, 0xFFF9F9F9, 0xFFECECEC, 0xB4C6C6C6, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x51B5B5B5, 0xFADDDDDD, 0xFFF6F6F6, 0xFFF3F3F3, 0xFFF3F3F3, 0xFFF3F3F3, 0xFFF3F3F3, 0xFFF3F3F3, 0xFFF3F3F3, 0xFFF3F3F3, 0xFFF7F7F7, 0xFFD1D1D1, 0x63B5B5B5, 0x55B5B5B5, 0x55B5B5B5, 0x55B5B5B5, 0x55B5B5B5, 0x55B5B5B5, 0x55B5B5B5, 0x55B5B5B5, 0x55B5B5B5, 0x55B5B5B5, 0x55B5B5B5, 0x55B5B5B5, 0x55B5B5B5, 0x55B5B5B5, 0x52B5B5B5, 0x37B5B5B5, 0x06B5B5B5, 0x00000000, 0x00000000, 0x00000000,
+ 0x55B5B5B5, 0xFFDEDEDE, 0xFFF3F3F3, 0xFFF3F3F3, 0xFFF3F3F3, 0xFFF3F3F3, 0xFFF3F3F3, 0xFFF3F3F3, 0xFFF3F3F3, 0xFFF3F3F3, 0xFFF7F7F7, 0xFFF1F1F1, 0xFFE6E6E6, 0xFFE6E6E6, 0xFFE6E6E6, 0xFFE6E6E6, 0xFFE6E6E6, 0xFFE6E6E6, 0xFFE6E6E6, 0xFFE6E6E6, 0xFFE6E6E6, 0xFFE6E6E6, 0xFFE6E6E6, 0xFFE6E6E6, 0xFFE6E6E6, 0xFFE6E6E6, 0xFCE5E5E5, 0xE1D9D9D9, 0x7EB6B6B6, 0x07B5B5B5, 0x00000000, 0x00000000,
+ 0x55B5B5B5, 0xFFDEDEDE, 0xFFF2F2F2, 0xFFF2F2F2, 0xFFF2F2F2, 0xFFF2F2F2, 0xFFF2F2F2, 0xFFF2F2F2, 0xFFF2F2F2, 0xFFF2F2F2, 0xFFF2F2F2, 0xFFF2F2F2, 0xFFF2F2F2, 0xFFF2F2F2, 0xFFF2F2F2, 0xFFF2F2F2, 0xFFF2F2F2, 0xFFF2F2F2, 0xFFF2F2F2, 0xFFF2F2F2, 0xFFF0F0EE, 0xFFEADFCF, 0xFFE4CEB1, 0xFFE3CEB0, 0xFFE3CEB0, 0xFFE3CEB0, 0xFFE5D0B2, 0xFFEAD5B7, 0xE4CEB696, 0x58C0965D, 0x06C4842A, 0x00000000,
+ 0x55B5B5B5, 0xFFDDDDDD, 0xFFF1F1F1, 0xFFF1F1F1, 0xFFF1F1F1, 0xFFF1F1F1, 0xFFF1F1F1, 0xFFF1F1F1, 0xFFF1F1F1, 0xFFF1F1F1, 0xFFF1F1F1, 0xFFF1F1F1, 0xFFF1F1F1, 0xFFF1F1F1, 0xFFF1F1F1, 0xFFF1F1F1, 0xFFF1F1F1, 0xFFF1F1F1, 0xFFF1F1F1, 0xFFF1F1F1, 0xFFDEC7A8, 0xFFE7A054, 0xFFC4B778, 0xFFBAB97E, 0xFFBAB97E, 0xFFBAB97E, 0xFFBAB97E, 0xFFBAB97E, 0xFFC4B475, 0xE4E89A43, 0x7EC7842A, 0x07C4842A,
+ 0x55B5B5B5, 0xFFDCDCDC, 0xFFF0F0F0, 0xFFF0F0F0, 0xFFF0F0F0, 0xFFF0F0F0, 0xFFF0F0F0, 0xFFF0F0F0, 0xFFF0F0F0, 0xFFF0F0F0, 0xFFF0F0F0, 0xFFF0F0F0, 0xFFF0F0F0, 0xFFF0F0F0, 0xFFF0F0F0, 0xFFF0F0F0, 0xFFF0F0F0, 0xFFF0F0F0, 0xFFF0F0F0, 0xFFEDEDEC, 0xFFE3A34E, 0xFFFBC160, 0xFFFFBE5A, 0xFFFFBA57, 0xFFFFBA57, 0xFFFFBA57, 0xFFFFBA57, 0xFFFFBA57, 0xFFFFBE5B, 0xFFFAC668, 0xE2F09F37, 0x38C4842A,
+ 0x55B5B5B5, 0xFFDBDBDB, 0xFFEFEFEF, 0xFFEFEFEF, 0xFFEFEFEF, 0xFFEFEFEF, 0xFFEFEFEF, 0xFFEFEFEF, 0xFFEFEFEF, 0xFFEFEFEF, 0xFFEFEFEF, 0xFFEFEFEF, 0xFFEFEFEF, 0xFFEFEFEF, 0xFFEFEFEF, 0xFFEFEFEF, 0xFFEFEFEF, 0xFFEFEFEF, 0xFFEFEFEF, 0xFFE5E3DF, 0xFFE99B32, 0xFFFFBA55, 0xFFFFB853, 0xFFFFB853, 0xFFFFB853, 0xFFFFB853, 0xFFFFB853, 0xFFFFB853, 0xFFFFB853, 0xFFFFBA56, 0xFDECA644, 0x53C4842A,
+ 0x55B5B5B5, 0xFFDBDBDB, 0xFFEEEEEE, 0xFFECECEB, 0xFFE5D7C4, 0xFFE2CCAF, 0xFFE0CBAD, 0xFFE0CBAD, 0xFFE0CBAD, 0xFFE0CBAD, 0xFFE0CBAD, 0xFFE0CBAD, 0xFFE0CBAD, 0xFFE0CBAD, 0xFFE0CBAD, 0xFFE0CBAD, 0xFFE0CBAD, 0xFFE0CBAD, 0xFFE0CBAD, 0xFFD9C2A0, 0xFFEC9C30, 0xFFFFB751, 0xFFFFB64F, 0xFFFFB64F, 0xFFFFB64F, 0xFFFFB64F, 0xFFFFB64F, 0xFFFFB64F, 0xFFFFB64F, 0xFFFFB64F, 0xFFEBA543, 0x55C4842A,
+ 0x55B5B5B5, 0xFFDADADA, 0xFFEAEAE9, 0xFFD7B98F, 0xFFF0A750, 0xFFDDB262, 0xFFD5B56A, 0xFFD5B56A, 0xFFD5B56A, 0xFFD5B56A, 0xFFD5B56A, 0xFFD5B56A, 0xFFD5B56A, 0xFFD5B56A, 0xFFD5B56A, 0xFFD5B56A, 0xFFD5B56A, 0xFFD5B56A, 0xFFD5B56A, 0xFFD8B367, 0xFFFAB952, 0xFFFFB64F, 0xFFFFB24B, 0xFFFFB24B, 0xFFFFB24B, 0xFFFFB24B, 0xFFFFB24B, 0xFFFFB24B, 0xFFFFB24B, 0xFFFFB24B, 0xFFEBA340, 0x55C4842A,
+ 0x55B5B5B5, 0xFFDADADA, 0xFFE3D5C1, 0xFFF0A544, 0xFFFFB753, 0xFFFFB048, 0xFFFFAE44, 0xFFFFAE44, 0xFFFFAE44, 0xFFFFAE44, 0xFFFFAE44, 0xFFFFAE44, 0xFFFFAE44, 0xFFFFAE44, 0xFFFFAE44, 0xFFFFAE44, 0xFFFFAE44, 0xFFFFAE44, 0xFFFFAE44, 0xFFFFAE44, 0xFFFFAE44, 0xFFFFAE44, 0xFFFFAE44, 0xFFFFAE44, 0xFFFFAE44, 0xFFFFAE44, 0xFFFFAE44, 0xFFFFAE44, 0xFFFFAE44, 0xFFFFAE44, 0xFFEBA03B, 0x55C4842A,
+ 0x55B5B5B5, 0xFFD9D9D9, 0xFFDFC9AC, 0xFFEC9F38, 0xFFFFAE42, 0xFFFFAC40, 0xFFFFAC40, 0xFFFFAC40, 0xFFFFAC40, 0xFFFFAC40, 0xFFFFAC40, 0xFFFFAC40, 0xFFFFAC40, 0xFFFFAC40, 0xFFFFAC40, 0xFFFFAC40, 0xFFFFAC40, 0xFFFFAC40, 0xFFFFAC40, 0xFFFFAC40, 0xFFFFAC40, 0xFFFFAC40, 0xFFFFAC40, 0xFFFFAC40, 0xFFFFAC40, 0xFFFFAC40, 0xFFFFAC40, 0xFFFFAC40, 0xFFFFAC40, 0xFFFFAC40, 0xFFEB9E39, 0x55C4842A,
+ 0x55B5B5B5, 0xFFD9D9D9, 0xFFDEC8AA, 0xFFEB9C34, 0xFFFFA739, 0xFFFFA739, 0xFFFFA739, 0xFFFFA739, 0xFFFFA739, 0xFFFFA739, 0xFFFFA739, 0xFFFFA739, 0xFFFFA739, 0xFFFFA739, 0xFFFFA739, 0xFFFFA739, 0xFFFFA739, 0xFFFFA739, 0xFFFFA739, 0xFFFFA739, 0xFFFFA739, 0xFFFFA739, 0xFFFFA739, 0xFFFFA739, 0xFFFFA739, 0xFFFFA739, 0xFFFFA739, 0xFFFFA739, 0xFFFFA739, 0xFFFFA739, 0xFFEB9C34, 0x55C4842A,
+ 0x55B5B5B5, 0xFFD8D8D8, 0xFFDDC8AA, 0xFFEB9A30, 0xFFFFA533, 0xFFFFA533, 0xFFFFA533, 0xFFFFA533, 0xFFFFA533, 0xFFFFA533, 0xFFFFA533, 0xFFFFA533, 0xFFFFA533, 0xFFFFA533, 0xFFFFA533, 0xFFFFA533, 0xFFFFA533, 0xFFFFA533, 0xFFFFA533, 0xFFFFA533, 0xFFFFA533, 0xFFFFA533, 0xFFFFA533, 0xFFFFA533, 0xFFFFA533, 0xFFFFA533, 0xFFFFA533, 0xFFFFA533, 0xFFFFA533, 0xFFFFA533, 0xFFEB9A30, 0x55C4842A,
+ 0x55B5B5B5, 0xFFD7D7D7, 0xFFDCC7A9, 0xFFEB972B, 0xFFFFA12C, 0xFFFFA12C, 0xFFFFA12C, 0xFFFFA12C, 0xFFFFA12C, 0xFFFFA12C, 0xFFFFA12C, 0xFFFFA12C, 0xFFFFA12C, 0xFFFFA12C, 0xFFFFA12C, 0xFFFFA12C, 0xFFFFA12C, 0xFFFFA12C, 0xFFFFA12C, 0xFFFFA12C, 0xFFFFA12C, 0xFFFFA12C, 0xFFFFA12C, 0xFFFFA12C, 0xFFFFA12C, 0xFFFFA12C, 0xFFFFA12C, 0xFFFFA12C, 0xFFFFA12C, 0xFFFFA12C, 0xFFEB972B, 0x55C4842A,
+ 0x55B5B5B5, 0xFFD7D7D7, 0xFFDCC6A8, 0xFFEB9627, 0xFFFF9F26, 0xFFFF9F26, 0xFFFF9F26, 0xFFFF9F26, 0xFFFF9F26, 0xFFFF9F26, 0xFFFF9F26, 0xFFFF9F26, 0xFFFF9F26, 0xFFFF9F26, 0xFFFF9F26, 0xFFFF9F26, 0xFFFF9F26, 0xFFFF9F26, 0xFFFF9F26, 0xFFFF9F26, 0xFFFF9F26, 0xFFFF9F26, 0xFFFF9F26, 0xFFFF9F26, 0xFFFF9F26, 0xFFFF9F26, 0xFFFF9F26, 0xFFFF9F26, 0xFFFF9F26, 0xFFFF9F26, 0xFFEB9627, 0x55C4842A,
+ 0x55B5B5B5, 0xFFD7D7D7, 0xFFDCC6A8, 0xFFEB9423, 0xFFFF9C1F, 0xFFFF9C1F, 0xFFFF9C1F, 0xFFFF9C1F, 0xFFFF9C1F, 0xFFFF9C1F, 0xFFFF9C1F, 0xFFFF9C1F, 0xFFFF9C1F, 0xFFFF9C1F, 0xFFFF9C1F, 0xFFFF9C1F, 0xFFFF9C1F, 0xFFFF9C1F, 0xFFFF9C1F, 0xFFFF9C1F, 0xFFFF9C1F, 0xFFFF9C1F, 0xFFFF9C1F, 0xFFFF9C1F, 0xFFFF9C1F, 0xFFFF9C1F, 0xFFFF9C1F, 0xFFFF9C1F, 0xFFFF9C1F, 0xFFFF9C1F, 0xFFEB9423, 0x55C4842A,
+ 0x55B5B5B5, 0xFFD5D5D5, 0xFFDAC5A7, 0xFFEA9320, 0xFFFD9A1B, 0xFFFD9A1B, 0xFFFD9A1B, 0xFFFD9A1B, 0xFFFD9A1B, 0xFFFD9A1B, 0xFFFD9A1B, 0xFFFD9A1B, 0xFFFD9A1B, 0xFFFD9A1B, 0xFFFD9A1B, 0xFFFD9A1B, 0xFFFD9A1B, 0xFFFD9A1B, 0xFFFD9A1B, 0xFFFD9A1B, 0xFFFD9A1B, 0xFFFD9A1B, 0xFFFD9A1B, 0xFFFD9A1B, 0xFFFD9A1B, 0xFFFD9A1B, 0xFFFD9A1B, 0xFFFD9A1B, 0xFFFD9A1B, 0xFFFD9A1B, 0xFFEA9320, 0x55C4842A,
+ 0x55B5B5B5, 0xFFD5D5D5, 0xFFDAC5A7, 0xFFE38F21, 0xFFF3951D, 0xFFF3951D, 0xFFF3951D, 0xFFF3951D, 0xFFF3951D, 0xFFF3951D, 0xFFF3951D, 0xFFF3951D, 0xFFF3951D, 0xFFF3951D, 0xFFF3951D, 0xFFF3951D, 0xFFF3951D, 0xFFF3951D, 0xFFF3951D, 0xFFF3951D, 0xFFF3951D, 0xFFF3951D, 0xFFF3951D, 0xFFF3951D, 0xFFF3951D, 0xFFF3951D, 0xFFF3951D, 0xFFF3951D, 0xFFF3951D, 0xFFF3951D, 0xFFE38F21, 0x55C4842A,
+ 0x55B5B5B5, 0xFFD4D4D4, 0xFFD9C4A6, 0xFFDE8D22, 0xFFEC921F, 0xFFEC921F, 0xFFEC921F, 0xFFEC921F, 0xFFEC921F, 0xFFEC921F, 0xFFEC921F, 0xFFEC921F, 0xFFEC921F, 0xFFEC921F, 0xFFEC921F, 0xFFEC921F, 0xFFEC921F, 0xFFEC921F, 0xFFEC921F, 0xFFEC921F, 0xFFEC921F, 0xFFEC921F, 0xFFEC921F, 0xFFEC921F, 0xFFEC921F, 0xFFEC921F, 0xFFEC921F, 0xFFEC921F, 0xFFEC921F, 0xFFEC921F, 0xFFDE8D22, 0x55C4842A,
+ 0x55B5B5B5, 0xFFD4D4D4, 0xFFD9C4A6, 0xFFD88A24, 0xFFE28E21, 0xFFE28E21, 0xFFE28E21, 0xFFE28E21, 0xFFE28E21, 0xFFE28E21, 0xFFE28E21, 0xFFE28E21, 0xFFE28E21, 0xFFE28E21, 0xFFE28E21, 0xFFE28E21, 0xFFE28E21, 0xFFE28E21, 0xFFE28E21, 0xFFE28E21, 0xFFE28E21, 0xFFE28E21, 0xFFE28E21, 0xFFE28E21, 0xFFE28E21, 0xFFE28E21, 0xFFE28E21, 0xFFE28E21, 0xFFE28E21, 0xFFE28E21, 0xFFD88A24, 0x55C4842A,
+ 0x51B5B5B5, 0xFAD3D3D3, 0xFFD8C3A5, 0xFFD38926, 0xFFDB8C25, 0xFFDB8C25, 0xFFDB8C25, 0xFFDB8C25, 0xFFDB8C25, 0xFFDB8C25, 0xFFDB8C25, 0xFFDB8C25, 0xFFDB8C25, 0xFFDB8C25, 0xFFDB8C25, 0xFFDB8C25, 0xFFDB8C25, 0xFFDB8C25, 0xFFDB8C25, 0xFFDB8C25, 0xFFDB8C25, 0xFFDB8C25, 0xFFDB8C25, 0xFFDB8C25, 0xFFDB8C25, 0xFFDB8C25, 0xFFDB8C25, 0xFFDB8C25, 0xFFDB8C25, 0xFFDB8C25, 0xFFD38926, 0x55C4842A,
+ 0x21B5B5B5, 0xCBC3C3C3, 0xFFD6C4AC, 0xFFCE8B34, 0xFFD38827, 0xFFD38827, 0xFFD38827, 0xFFD38827, 0xFFD38827, 0xFFD38827, 0xFFD38827, 0xFFD38827, 0xFFD38827, 0xFFD38827, 0xFFD38827, 0xFFD38827, 0xFFD38827, 0xFFD38827, 0xFFD38827, 0xFFD38827, 0xFFD38827, 0xFFD38827, 0xFFD38827, 0xFFD38827, 0xFFD38827, 0xFFD38827, 0xFFD38827, 0xFFD38827, 0xFFD38827, 0xFFD38827, 0xEDCC8628, 0x43C4842A,
+ 0x03B5B5B5, 0x4CB6B6B6, 0xC8BFB9B1, 0xFAC3924D, 0xFFCA8629, 0xFFCD8829, 0xFFCD8929, 0xFFCD8929, 0xFFCD8929, 0xFFCD8929, 0xFFCD8929, 0xFFCD8929, 0xFFCD8929, 0xFFCD8929, 0xFFCD8929, 0xFFCD8929, 0xFFCD8929, 0xFFCD8929, 0xFFCD8929, 0xFFCD8929, 0xFFCD8929, 0xFFCD8929, 0xFFCD8929, 0xFFCD8929, 0xFFCD8929, 0xFFCD8929, 0xFFCD8929, 0xFFCD8929, 0xFFCD8829, 0xFFCA8629, 0xC1C6852A, 0x17C4842A,
+ 0x00000000, 0x00000000, 0x00000000, 0x10C4842A, 0x72C4842A, 0xA5C4842A, 0xAAC4842A, 0xAAC4842A, 0xAAC4842A, 0xAAC4842A, 0xAAC4842A, 0xAAC4842A, 0xAAC4842A, 0xAAC4842A, 0xAAC4842A, 0xAAC4842A, 0xAAC4842A, 0xAAC4842A, 0xAAC4842A, 0xAAC4842A, 0xAAC4842A, 0xAAC4842A, 0xAAC4842A, 0xAAC4842A, 0xAAC4842A, 0xAAC4842A, 0xAAC4842A, 0xAAC4842A, 0xA5C4842A, 0x72C4842A, 0x10C4842A, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
+},
+
+{
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x27999999, 0x8E999999, 0xAA999999, 0xAA999999, 0x8E999999, 0x27999999, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x10999999, 0xBAAAAAAA, 0xFFF2F2F2, 0xFFFAFAFA, 0xFFFAFAFA, 0xFFF2F2F2, 0xBAA9A9A9, 0x10999999, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x37999999, 0xE1C4C4C4, 0xFFF6F6F6, 0xFFF0F0F0, 0xFFF0F0F0, 0xFFF5F5F5, 0xDAC0C0C0, 0x30999999, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x49A1A1A1, 0x99B0B0B0, 0x69A7A7A7, 0x23999999, 0x00000000, 0x00000000, 0x659D9D9D, 0xF8D4D4D4, 0xFFF1F1F1, 0xFFEFEFEF, 0xFFEFEFEF, 0xFFF3F3F3, 0xF4D3D3D3, 0x619D9D9D, 0x00000000, 0x00000000, 0x23999999, 0x69A7A7A7, 0x99B0B0B0, 0x49A1A1A1, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x43999999, 0xE8C7C7C7, 0xFFEAEAEA, 0xF6DEDEDE, 0xCDAFAFAF, 0x58999999, 0x80999999, 0xDDC0C0C0, 0xFFF0F0F0, 0xFFEFEFEF, 0xFFEEEEEE, 0xFFEEEEEE, 0xFFEFEFEF, 0xFFF1F1F1, 0xDDC0C0C0, 0x7E999999, 0x56999999, 0xCDAFAFAF, 0xF6DEDEDE, 0xFFEAEAEA, 0xE8C7C7C7, 0x43999999, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x4CA3A3A3, 0xE8C7C7C7, 0xFFFBFBFB, 0xFFF0F0F0, 0xFFF4F4F4, 0xFFF9F9F9, 0xFFDADADA, 0xFFECECEC, 0xFFFAFAFA, 0xFFF3F3F3, 0xFFEDEDED, 0xFFEDEDED, 0xFFEDEDED, 0xFFEDEDED, 0xFFF3F3F3, 0xFFFAFAFA, 0xFFEBEBEB, 0xFFD9D9D9, 0xFFF9F9F9, 0xFFF4F4F4, 0xFFF0F0F0, 0xFFFBFBFB, 0xE8C7C7C7, 0x4CA3A3A3, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x9DADADAD, 0xFFE1E1E1, 0xFFF0F0F0, 0xFFEDEDED, 0xFFEDEDED, 0xFFF0F0F0, 0xFFF3F3F3, 0xFFF2F2F2, 0xFFEEEEEE, 0xFFEDEDED, 0xFFEDEDED, 0xFFEDEDED, 0xFFEDEDED, 0xFFEDEDED, 0xFFEDEDED, 0xFFEEEEEE, 0xFFF2F2F2, 0xFFF3F3F3, 0xFFF0F0F0, 0xFFEDEDED, 0xFFEDEDED, 0xFFF0F0F0, 0xFFE1E1E1, 0x9DADADAD, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x7AA7A7A7, 0xFAD5D5D5, 0xFFEBEBEB, 0xFFEBEBEB, 0xFFEBEBEB, 0xFFEBEBEB, 0xFFEBEBEB, 0xFFEBEBEB, 0xFFEBEBEB, 0xFFE6E6E6, 0xFFDEDEDE, 0xFFDADADA, 0xFFDADADA, 0xFFDEDEDE, 0xFFE6E6E6, 0xFFEBEBEB, 0xFFEBEBEB, 0xFFEBEBEB, 0xFFEBEBEB, 0xFFEBEBEB, 0xFFEBEBEB, 0xFFEBEBEB, 0xF8D4D4D4, 0x79A7A7A7, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x2E999999, 0xD8B0B0B0, 0xFFE8E8E8, 0xFFEBEBEB, 0xFFEBEBEB, 0xFFEBEBEB, 0xFFEBEBEB, 0xFFEAEAEA, 0xFFD4D4D4, 0xFFC2C2C2, 0xFFB9B9B9, 0xFFB6B6B6, 0xFFB6B6B6, 0xFFB9B9B9, 0xFFC2C2C2, 0xFFD4D4D4, 0xFFEAEAEA, 0xFFEBEBEB, 0xFFEBEBEB, 0xFFEBEBEB, 0xFFEBEBEB, 0xFFE8E8E8, 0xD3AFAFAF, 0x29999999, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x60999999, 0xFFD3D3D3, 0xFFEBEBEB, 0xFFEAEAEA, 0xFFEAEAEA, 0xFFE2E2E2, 0xFFC5C5C5, 0xFFB5B5B5, 0xFFB5B5B5, 0xFFB5B5B5, 0xFFB5B5B5, 0xFFB5B5B5, 0xFFB5B5B5, 0xFFB5B5B5, 0xFFB5B5B5, 0xFFC5C5C5, 0xFFE2E2E2, 0xFFEAEAEA, 0xFFEAEAEA, 0xFFEBEBEB, 0xFFD3D3D3, 0x60999999, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x8A999999, 0xFFE6E6E6, 0xFFECECEC, 0xFFE9E9E9, 0xFFE8E8E8, 0xFFC6C6C6, 0xFFB8B8B8, 0xFFB7B7B7, 0xFFB7B7B7, 0xFFB7B7B7, 0xFFB7B7B7, 0xFFB7B7B7, 0xFFB7B7B7, 0xFFB7B7B7, 0xFFB7B7B7, 0xFFB8B8B8, 0xFFC6C6C6, 0xFFE8E8E8, 0xFFE9E9E9, 0xFFECECEC, 0xFFE2E2E2, 0x83999999, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x0E999999, 0x2E999999, 0x619D9D9D, 0xDDC1C1C1, 0xFFF0F0F0, 0xFFE8E8E8, 0xFFE8E8E8, 0xFFD4D4D4, 0xFFB9B9B9, 0xFFB9B9B9, 0xFFB9B9B9, 0xFFBABABA, 0xD8B9B9B9, 0xB9B9B9B9, 0xB9B9B9B9, 0xD8B9B9B9, 0xFFBABABA, 0xFFB9B9B9, 0xFFB9B9B9, 0xFFB9B9B9, 0xFFD4D4D4, 0xFFE8E8E8, 0xFFE9E9E9, 0xFFF2F2F2, 0xDDBFBFBF, 0x619D9D9D, 0x2E999999, 0x0E999999, 0x00000000, 0x00000000,
+ 0x00000000, 0x27999999, 0xB8A8A8A8, 0xD8C4C4C4, 0xF4D9D9D9, 0xFFEFEFEF, 0xFFECECEC, 0xFFE7E7E7, 0xFFE3E3E3, 0xFFC7C7C7, 0xFFBCBCBC, 0xFFBCBCBC, 0xFFBCBCBC, 0xC6BCBCBC, 0x2EBBBBBB, 0x0FBBBBBB, 0x0FBBBBBB, 0x2EBBBBBB, 0xC6BCBCBC, 0xFFBCBCBC, 0xFFBCBCBC, 0xFFBCBCBC, 0xFFC7C7C7, 0xFFE3E3E3, 0xFFE7E7E7, 0xFFECECEC, 0xFFEFEFEF, 0xF4D9D9D9, 0xD8C4C4C4, 0xB8A8A8A8, 0x27999999, 0x00000000,
+ 0x04999999, 0x919D9D9D, 0xFFECECEC, 0xFFF6F6F6, 0xFFEBEBEB, 0xFFE6E6E6, 0xFFE5E5E5, 0xFFE5E5E5, 0xFFDCDCDC, 0xFFC2C2C2, 0xFFBEBEBE, 0xFFBEBEBE, 0xD8BEBEBE, 0x2EBEBEBE, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x2EBEBEBE, 0xD8BEBEBE, 0xFFBEBEBE, 0xFFBEBEBE, 0xFFC2C2C2, 0xFFDBDBDB, 0xFFE5E5E5, 0xFFE5E5E5, 0xFFE6E6E6, 0xFFEBEBEB, 0xFFF6F6F6, 0xFFEBEBEB, 0x8E999999, 0x00000000,
+ 0x12999999, 0xBCA8A8A8, 0xFFE6E6E6, 0xFFE5E5E5, 0xFFE5E5E5, 0xFFE5E5E5, 0xFFE5E5E5, 0xFFE5E5E5, 0xFFDADADA, 0xFFC2C2C2, 0xFFC1C1C1, 0xFFC1C1C1, 0xB9C1C1C1, 0x0FC1C1C1, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x0FC1C1C1, 0xB9C1C1C1, 0xFFC1C1C1, 0xFFC1C1C1, 0xFFC1C1C1, 0xFFD9D9D9, 0xFFE5E5E5, 0xFFE5E5E5, 0xFFE5E5E5, 0xFFE5E5E5, 0xFFE5E5E5, 0xFFE5E5E5, 0xAA999999, 0x00000000,
+ 0x14999999, 0xBEA8A8A8, 0xFFE3E3E3, 0xFFE3E3E3, 0xFFE3E3E3, 0xFFE3E3E3, 0xFFE3E3E3, 0xFFE3E3E3, 0xFFDCDCDC, 0xFFC4C4C4, 0xFFC3C3C3, 0xFFC3C3C3, 0xB9C4C4C4, 0x0FC4C4C4, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x0FC4C4C4, 0xB9C4C4C4, 0xFFC3C3C3, 0xFFC3C3C3, 0xFFC4C4C4, 0xFFDDDDDD, 0xFFE3E3E3, 0xFFE3E3E3, 0xFFE3E3E3, 0xFFE3E3E3, 0xFFE3E3E3, 0xFFE3E3E3, 0xAA999999, 0x00000000,
+ 0x05999999, 0x9A9E9E9E, 0xFFDCDCDC, 0xFFE3E3E3, 0xFFE3E3E3, 0xFFE3E3E3, 0xFFE3E3E3, 0xFFE3E3E3, 0xFFDEDEDE, 0xFFC8C8C8, 0xFFC5C5C5, 0xFFC5C5C5, 0xD8C6C6C6, 0x2EC6C6C6, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x2EC6C6C6, 0xD8C6C6C6, 0xFFC5C5C5, 0xFFC5C5C5, 0xFFC8C8C8, 0xFFDDDDDD, 0xFFE3E3E3, 0xFFE3E3E3, 0xFFE3E3E3, 0xFFE3E3E3, 0xFFE3E3E3, 0xFFDCDCDC, 0x95999999, 0x00000000,
+ 0x00000000, 0x2D999999, 0xC3A8A8A8, 0xE5BEBEBE, 0xFCCACACA, 0xFFDADADA, 0xFFE1E1E1, 0xFFE1E1E1, 0xFFE2E2E2, 0xFFD2D2D2, 0xFFC8C8C8, 0xFFC8C8C8, 0xFFC8C8C8, 0xC6C9C9C9, 0x2ECACACA, 0x0FCACACA, 0x0FCACACA, 0x2ECACACA, 0xC6C9C9C9, 0xFFC8C8C8, 0xFFC8C8C8, 0xFFC8C8C8, 0xFFD1D1D1, 0xFFE1E1E1, 0xFFE1E1E1, 0xFFE1E1E1, 0xFFD9D9D9, 0xFCCACACA, 0xE5BEBEBE, 0xC3A8A8A8, 0x2D999999, 0x00000000,
+ 0x00000000, 0x00000000, 0x19999999, 0x3B999999, 0x709D9D9D, 0xE4B9B9B9, 0xFFE0E0E0, 0xFFE0E0E0, 0xFFE2E2E2, 0xFFDDDDDD, 0xFFCBCBCB, 0xFFCBCBCB, 0xFFCBCBCB, 0xFFCBCBCB, 0xD8CCCCCC, 0xB9CCCCCC, 0xB9CCCCCC, 0xD8CCCCCC, 0xFFCBCBCB, 0xFFCBCBCB, 0xFFCBCBCB, 0xFFCBCBCB, 0xFFDDDDDD, 0xFFE2E2E2, 0xFFE0E0E0, 0xFFE0E0E0, 0xE1B8B8B8, 0x6C9D9D9D, 0x3B999999, 0x19999999, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x04999999, 0x959C9C9C, 0xFFD7D7D7, 0xFFDFDFDF, 0xFFDFDFDF, 0xFFE4E4E4, 0xFFD8D8D8, 0xFFCECECE, 0xFFCECECE, 0xFFCECECE, 0xFFCECECE, 0xFFCECECE, 0xFFCECECE, 0xFFCECECE, 0xFFCECECE, 0xFFCECECE, 0xFFCECECE, 0xFFD8D8D8, 0xFFE4E4E4, 0xFFDFDFDF, 0xFFDFDFDF, 0xFFD7D7D7, 0x8A999999, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x60999999, 0xFFCBCBCB, 0xFFDFDFDF, 0xFFDEDEDE, 0xFFDFDFDF, 0xFFE3E3E3, 0xFFDADADA, 0xFFCFCFCF, 0xFFCFCFCF, 0xFFCFCFCF, 0xFFCFCFCF, 0xFFCFCFCF, 0xFFCFCFCF, 0xFFCFCFCF, 0xFFCFCFCF, 0xFFDADADA, 0xFFE3E3E3, 0xFFDEDEDE, 0xFFDEDEDE, 0xFFDFDFDF, 0xFFC9C9C9, 0x5C999999, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x23999999, 0xCDACACAC, 0xFFE8E8E8, 0xFFDFDFDF, 0xFFDDDDDD, 0xFFDDDDDD, 0xFFDEDEDE, 0xFFE3E3E3, 0xFFE1E1E1, 0xFFDADADA, 0xFFD5D5D5, 0xFFD2D2D2, 0xFFD2D2D2, 0xFFD5D5D5, 0xFFD9D9D9, 0xFFE1E1E1, 0xFFE3E3E3, 0xFFDEDEDE, 0xFFDDDDDD, 0xFFDDDDDD, 0xFFE0E0E0, 0xFFE9E9E9, 0xCDACACAC, 0x23999999, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x69A3A3A3, 0xF6CECECE, 0xFFE4E4E4, 0xFFDDDDDD, 0xFFDDDDDD, 0xFFDDDDDD, 0xFFDDDDDD, 0xFFDDDDDD, 0xFFDFDFDF, 0xFFE1E1E1, 0xFFDFDFDF, 0xFFE1E1E1, 0xFFE1E1E1, 0xFFDFDFDF, 0xFFE1E1E1, 0xFFDFDFDF, 0xFFDDDDDD, 0xFFDDDDDD, 0xFFDDDDDD, 0xFFDDDDDD, 0xFFDDDDDD, 0xFFE4E4E4, 0xF6CECECE, 0x69A3A3A3, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x9DA8A8A8, 0xFFCFCFCF, 0xFFDBDBDB, 0xFFDBDBDB, 0xFFDBDBDB, 0xFFDBDBDB, 0xFFDBDBDB, 0xFFDBDBDB, 0xFFDBDBDB, 0xFFDBDBDB, 0xFFDBDBDB, 0xFFDBDBDB, 0xFFDBDBDB, 0xFFDBDBDB, 0xFFDBDBDB, 0xFFDBDBDB, 0xFFDBDBDB, 0xFFDBDBDB, 0xFFDBDBDB, 0xFFDBDBDB, 0xFFDBDBDB, 0xFFDBDBDB, 0xFFCFCFCF, 0x9DA8A8A8, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x4E9F9F9F, 0xEABFBFBF, 0xFFDBDBDB, 0xFFDBDBDB, 0xFFDBDBDB, 0xFFD9D9D9, 0xFFC7C7C7, 0xFFD2D2D2, 0xFFDBDBDB, 0xFFDBDBDB, 0xFFDBDBDB, 0xFFDBDBDB, 0xFFDBDBDB, 0xFFDBDBDB, 0xFFDBDBDB, 0xFFDBDBDB, 0xFFD2D2D2, 0xFFC7C7C7, 0xFFD9D9D9, 0xFFDBDBDB, 0xFFDBDBDB, 0xFFDBDBDB, 0xE8B7B7B7, 0x4C9F9F9F, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x0C999999, 0x5F999999, 0xEABFBFBF, 0xFFCECECE, 0xFAC8C8C8, 0xD8ABABAB, 0x60999999, 0x959C9C9C, 0xE4B5B5B5, 0xFFD3D3D3, 0xFFDADADA, 0xFFDADADA, 0xFFDADADA, 0xFFDADADA, 0xFFD2D2D2, 0xE1B4B4B4, 0x959C9C9C, 0x60999999, 0xD8ADADAD, 0xFAC8C8C8, 0xFFCECECE, 0xE8B7B7B7, 0x43999999, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x0C999999, 0x52A0A0A0, 0xA0A8A8A8, 0x7AA4A4A4, 0x2E999999, 0x00000000, 0x04999999, 0x709C9C9C, 0xFCC4C4C4, 0xFFD9D9D9, 0xFFD9D9D9, 0xFFD9D9D9, 0xFFD9D9D9, 0xF4C1C1C1, 0x659B9B9B, 0x04999999, 0x00000000, 0x2E999999, 0x7AA4A4A4, 0xA0A8A8A8, 0x50A0A0A0, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x39999999, 0xE3B9B9B9, 0xFFD9D9D9, 0xFFD9D9D9, 0xFFD9D9D9, 0xFFD9D9D9, 0xDAB5B5B5, 0x30999999, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x14999999, 0xBEA5A5A5, 0xFFD3D3D3, 0xFFD8D8D8, 0xFFD8D8D8, 0xFFD3D3D3, 0xBAA4A4A4, 0x10999999, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x2D999999, 0x9C9F9F9F, 0xC0A7A7A7, 0xBEA6A6A6, 0x9A9E9E9E, 0x2D999999, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x07999999, 0x16999999, 0x14999999, 0x05999999, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
+}
+};
+
+#define UI_TOOLBAR_BUTTONS ARRAY_LENGTH(toolbar_bitmap_bmp)
diff --git a/src/emu/ui/ui.cpp b/src/emu/ui/ui.cpp
index 0048936ea20..6d996ac50a0 100644
--- a/src/emu/ui/ui.cpp
+++ b/src/emu/ui/ui.cpp
@@ -37,6 +37,8 @@ enum
LOADSAVE_SAVE
};
+#define MAX_SAVED_STATE_JOYSTICK 4
+
/***************************************************************************
LOCAL VARIABLES
@@ -86,6 +88,25 @@ static const input_item_id non_char_keys[] =
ITEM_ID_CANCEL
};
+static const char *s_color_list[] = {
+ OPTION_UI_BORDER_COLOR,
+ OPTION_UI_BACKGROUND_COLOR,
+ OPTION_UI_GFXVIEWER_BG_COLOR,
+ OPTION_UI_UNAVAILABLE_COLOR,
+ OPTION_UI_TEXT_COLOR,
+ OPTION_UI_TEXT_BG_COLOR,
+ OPTION_UI_SUBITEM_COLOR,
+ OPTION_UI_CLONE_COLOR,
+ OPTION_UI_SELECTED_COLOR,
+ OPTION_UI_SELECTED_BG_COLOR,
+ OPTION_UI_MOUSEOVER_COLOR,
+ OPTION_UI_MOUSEOVER_BG_COLOR,
+ OPTION_UI_MOUSEDOWN_COLOR,
+ OPTION_UI_MOUSEDOWN_BG_COLOR,
+ OPTION_UI_DIPSW_COLOR,
+ OPTION_UI_SLIDER_COLOR
+};
+
/***************************************************************************
GLOBAL VARIABLES
***************************************************************************/
@@ -139,6 +160,24 @@ static INT32 slider_crossoffset(running_machine &machine, void *arg, std::string
***************************************************************************/
//-------------------------------------------------
+// load ui options
+//-------------------------------------------------
+
+static void load_ui_options(running_machine &machine)
+{
+ // parse the file
+ std::string error;
+ // attempt to open the output file
+ emu_file file(machine.options().ini_path(), OPEN_FLAG_READ);
+ if (file.open("ui.ini") == FILERR_NONE)
+ {
+ bool result = machine.ui().options().parse_ini_file((core_file&)file, OPTION_PRIORITY_MAME_INI, OPTION_PRIORITY_DRIVER_INI, error);
+ if (!result)
+ osd_printf_error("**Error to load ui.ini**");
+ }
+}
+
+//-------------------------------------------------
// is_breakable_char - is a given unicode
// character a possible line break?
//-------------------------------------------------
@@ -183,7 +222,8 @@ static inline int is_breakable_char(unicode_char ch)
CORE IMPLEMENTATION
***************************************************************************/
-static const UINT32 mouse_bitmap[] = {
+static const UINT32 mouse_bitmap[32*32] =
+{
0x00ffffff,0x00ffffff,0x00ffffff,0x00ffffff,0x00ffffff,0x00ffffff,0x00ffffff,0x00ffffff,0x00ffffff,0x00ffffff,0x00ffffff,0x00ffffff,0x00ffffff,0x00ffffff,0x00ffffff,0x00ffffff,0x00ffffff,0x00ffffff,0x00ffffff,0x00ffffff,0x00ffffff,0x00ffffff,0x00ffffff,0x00ffffff,0x00ffffff,0x00ffffff,0x00ffffff,0x00ffffff,0x00ffffff,0x00ffffff,0x00ffffff,0x00ffffff,
0x09a46f30,0x81ac7c43,0x24af8049,0x00ad7d45,0x00a8753a,0x00a46f30,0x009f6725,0x009b611c,0x00985b14,0x0095560d,0x00935308,0x00915004,0x00904e02,0x008f4e01,0x008f4d00,0x008f4d00,0x00ffffff,0x00ffffff,0x00ffffff,0x00ffffff,0x00ffffff,0x00ffffff,0x00ffffff,0x00ffffff,0x00ffffff,0x00ffffff,0x00ffffff,0x00ffffff,0x00ffffff,0x00ffffff,0x00ffffff,0x00ffffff,
0x00a16a29,0xa2aa783d,0xffbb864a,0xc0b0824c,0x5aaf7f48,0x09ac7b42,0x00a9773c,0x00a67134,0x00a26b2b,0x009e6522,0x009a5e19,0x00965911,0x0094550b,0x00925207,0x00915004,0x008f4e01,0x00ffffff,0x00ffffff,0x00ffffff,0x00ffffff,0x00ffffff,0x00ffffff,0x00ffffff,0x00ffffff,0x00ffffff,0x00ffffff,0x00ffffff,0x00ffffff,0x00ffffff,0x00ffffff,0x00ffffff,0x00ffffff,
@@ -226,9 +266,14 @@ static const UINT32 mouse_bitmap[] = {
ui_manager::ui_manager(running_machine &machine)
: m_machine(machine)
{
+}
+
+void ui_manager::init()
+{
+ load_ui_options(machine());
// initialize the other UI bits
- ui_menu::init(machine);
- ui_gfx_init(machine);
+ ui_menu::init(machine());
+ ui_gfx_init(machine());
// reset instance variables
m_font = nullptr;
@@ -236,26 +281,30 @@ ui_manager::ui_manager(running_machine &machine)
m_handler_param = 0;
m_single_step = false;
m_showfps = false;
- m_showfps_end = false;
+ m_showfps_end = 0;
m_show_profiler = false;
m_popup_text_end = 0;
m_use_natural_keyboard = false;
m_mouse_arrow_texture = nullptr;
+ m_load_save_hold = false;
+
+ get_font_rows(&machine());
+ decode_ui_color(0, &machine());
// more initialization
set_handler(handler_messagebox, 0);
m_non_char_keys_down = std::make_unique<UINT8[]>((ARRAY_LENGTH(non_char_keys) + 7) / 8);
- m_mouse_show = machine.system().flags & MACHINE_CLICKABLE_ARTWORK ? true : false;
+ m_mouse_show = machine().system().flags & MACHINE_CLICKABLE_ARTWORK ? true : false;
// request a callback upon exiting
- machine.add_notifier(MACHINE_NOTIFY_EXIT, machine_notify_delegate(FUNC(ui_manager::exit), this));
+ machine().add_notifier(MACHINE_NOTIFY_EXIT, machine_notify_delegate(FUNC(ui_manager::exit), this));
// retrieve options
- m_use_natural_keyboard = machine.options().natural_keyboard();
- bitmap_argb32 *ui_mouse_bitmap = auto_alloc(machine, bitmap_argb32(32, 32));
+ m_use_natural_keyboard = machine().options().natural_keyboard();
+ bitmap_argb32 *ui_mouse_bitmap = auto_alloc(machine(), bitmap_argb32(32, 32));
UINT32 *dst = &ui_mouse_bitmap->pix32(0);
memcpy(dst,mouse_bitmap,32*32*sizeof(UINT32));
- m_mouse_arrow_texture = machine.render().texture_alloc();
+ m_mouse_arrow_texture = machine().render().texture_alloc();
m_mouse_arrow_texture->set_bitmap(*ui_mouse_bitmap, ui_mouse_bitmap->cliprect(), TEXFORMAT_ARGB32);
}
@@ -312,7 +361,7 @@ void ui_manager::display_startup_screens(bool first_time, bool show_disclaimer)
{
const int maxstate = 4;
int str = machine().options().seconds_to_run();
- bool show_gameinfo = !machine().options().skip_gameinfo();
+ bool show_gameinfo = !machine().ui().options().skip_gameinfo();
bool show_warnings = true, show_mandatory_fileman = true;
int state;
@@ -447,7 +496,8 @@ void ui_manager::update_and_render(render_container *container)
else
m_popup_text_end = 0;
- if (m_mouse_show || (is_menu_active() && machine().options().ui_mouse()))
+ // display the internal mouse cursor
+ if (m_mouse_show || (is_menu_active() && machine().ui().options().ui_mouse()))
{
INT32 mouse_target_x, mouse_target_y;
bool mouse_button;
@@ -456,8 +506,10 @@ void ui_manager::update_and_render(render_container *container)
if (mouse_target != nullptr)
{
float mouse_y=-1,mouse_x=-1;
- if (mouse_target->map_point_container(mouse_target_x, mouse_target_y, *container, mouse_x, mouse_y)) {
- container->add_quad(mouse_x,mouse_y,mouse_x + 0.05f*container->manager().ui_aspect(container),mouse_y + 0.05f,UI_TEXT_COLOR,m_mouse_arrow_texture,PRIMFLAG_BLENDMODE(BLENDMODE_ALPHA));
+ if (mouse_target->map_point_container(mouse_target_x, mouse_target_y, *container, mouse_x, mouse_y))
+ {
+ const float cursor_size = 0.6 * machine().ui().get_line_height();
+ container->add_quad(mouse_x, mouse_y, mouse_x + cursor_size*container->manager().ui_aspect(container), mouse_y + cursor_size, UI_TEXT_COLOR, m_mouse_arrow_texture, PRIMFLAG_ANTIALIAS(1) | PRIMFLAG_BLENDMODE(BLENDMODE_ALPHA));
}
}
}
@@ -476,7 +528,7 @@ render_font *ui_manager::get_font()
{
// allocate the font and messagebox string
if (m_font == nullptr)
- m_font = machine().render().font_alloc(machine().options().ui_font());
+ m_font = machine().render().font_alloc(machine().ui().options().ui_font());
return m_font;
}
@@ -592,9 +644,9 @@ void ui_manager::draw_text(render_container *container, const char *buf, float x
// and full size computation
//-------------------------------------------------
-void ui_manager::draw_text_full(render_container *container, const char *origs, float x, float y, float origwrapwidth, int justify, int wrap, int draw, rgb_t fgcolor, rgb_t bgcolor, float *totalwidth, float *totalheight)
+void ui_manager::draw_text_full(render_container *container, const char *origs, float x, float y, float origwrapwidth, int justify, int wrap, int draw, rgb_t fgcolor, rgb_t bgcolor, float *totalwidth, float *totalheight, float text_size)
{
- float lineheight = get_line_height();
+ float lineheight = get_line_height() * text_size;
const char *ends = origs + strlen(origs);
float wrapwidth = origwrapwidth;
const char *s = origs;
@@ -1019,7 +1071,9 @@ std::string &ui_manager::warnings_string(std::string &str)
MACHINE_IMPERFECT_SOUND | \
MACHINE_IMPERFECT_GRAPHICS | \
MACHINE_IMPERFECT_KEYBOARD | \
- MACHINE_NO_COCKTAIL)
+ MACHINE_NO_COCKTAIL| \
+ MACHINE_IS_INCOMPLETE| \
+ MACHINE_NO_SOUND_HW )
str.clear();
@@ -1083,6 +1137,20 @@ std::string &ui_manager::warnings_string(std::string &str)
str.append(" requires external artwork files\n");
}
+ if (machine().system().flags & MACHINE_IS_INCOMPLETE )
+ {
+ str.append("This ");
+ str.append(emulator_info::get_gamenoun());
+ str.append(" was never completed. It may exhibit strange behavior or missing elements that are not bugs in the emulation.\n");
+ }
+
+ if (machine().system().flags & MACHINE_NO_SOUND_HW )
+ {
+ str.append("This ");
+ str.append(emulator_info::get_gamenoun());
+ str.append(" has no sound hardware, MAME will produce no sounds, this is expected behaviour.\n");
+ }
+
// if there's a NOT WORKING, UNEMULATED PROTECTION or GAME MECHANICAL warning, make it stronger
if (machine().system().flags & (MACHINE_NOT_WORKING | MACHINE_UNEMULATED_PROTECTION | MACHINE_MECHANICAL))
{
@@ -1487,7 +1555,6 @@ UINT32 ui_manager::handler_ingame(running_machine &machine, render_container *co
// first draw the FPS counter
if (machine.ui().show_fps_counter())
{
- std::string tempstring;
machine.ui().draw_text_full(container, machine.video().speed_text().c_str(), 0.0f, 0.0f, 1.0f,
JUSTIFY_RIGHT, WRAP_WORD, DRAW_OPAQUE, ARGB_WHITE, ARGB_BLACK, nullptr, nullptr);
}
@@ -1609,6 +1676,7 @@ UINT32 ui_manager::handler_ingame(running_machine &machine, render_container *co
if (machine.ui_input().pressed(IPT_UI_SAVE_STATE))
{
machine.pause();
+ machine.ui().m_load_save_hold = true;
return machine.ui().set_handler(handler_load_save, LOADSAVE_SAVE);
}
@@ -1616,6 +1684,7 @@ UINT32 ui_manager::handler_ingame(running_machine &machine, render_container *co
if (machine.ui_input().pressed(IPT_UI_LOAD_STATE))
{
machine.pause();
+ machine.ui().m_load_save_hold = true;
return machine.ui().set_handler(handler_load_save, LOADSAVE_LOAD);
}
@@ -1627,15 +1696,21 @@ UINT32 ui_manager::handler_ingame(running_machine &machine, render_container *co
if (machine.ui_input().pressed(IPT_UI_PAUSE))
{
// with a shift key, it is single step
- if (is_paused && (machine.input().code_pressed(KEYCODE_LSHIFT) || machine.input().code_pressed(KEYCODE_RSHIFT)))
- {
- machine.ui().set_single_step(true);
- machine.resume();
- }
- else
+// if (is_paused && (machine.input().code_pressed(KEYCODE_LSHIFT) || machine.input().code_pressed(KEYCODE_RSHIFT)))
+// {
+// machine.ui().set_single_step(true);
+// machine.resume();
+// }
+// else
machine.toggle_pause();
}
+ if (machine.ui_input().pressed(IPT_UI_PAUSE_SINGLE))
+ {
+ machine.ui().set_single_step(true);
+ machine.resume();
+ }
+
// handle a toggle cheats request
if (machine.ui_input().pressed(IPT_UI_TOGGLE_CHEAT))
machine.cheat().set_enable(!machine.cheat().enabled());
@@ -1697,6 +1772,23 @@ UINT32 ui_manager::handler_load_save(running_machine &machine, render_container
else
machine.ui().draw_message_window(container, "Select position to load from");
+ // if load/save state sequence is still being pressed, do not read the filename yet
+ if (machine.ui().m_load_save_hold) {
+ bool seq_in_progress = false;
+ const input_seq &load_save_seq = state == LOADSAVE_SAVE ?
+ machine.ioport().type_seq(IPT_UI_SAVE_STATE) :
+ machine.ioport().type_seq(IPT_UI_LOAD_STATE);
+
+ for (int i = 0; i < load_save_seq.length(); i++)
+ if (machine.input().code_pressed_once(load_save_seq[i]))
+ seq_in_progress = true;
+
+ if (seq_in_progress)
+ return state;
+ else
+ machine.ui().m_load_save_hold = false;
+ }
+
// check for cancel key
if (machine.ui_input().pressed(IPT_UI_CANCEL))
{
@@ -1724,21 +1816,41 @@ UINT32 ui_manager::handler_load_save(running_machine &machine, render_container
if (machine.input().code_pressed_once(input_code(DEVICE_CLASS_KEYBOARD, 0, ITEM_CLASS_SWITCH, ITEM_MODIFIER_NONE, id)))
file = id - ITEM_ID_0_PAD + '0';
if (file == 0)
- return state;
+ {
+ bool found = false;
+
+ for (int joy_index = 0; joy_index <= MAX_SAVED_STATE_JOYSTICK; joy_index++)
+ for (input_item_id id = ITEM_ID_BUTTON1; id <= ITEM_ID_BUTTON32; ++id)
+ if (machine.input().code_pressed_once(input_code(DEVICE_CLASS_JOYSTICK, joy_index, ITEM_CLASS_SWITCH, ITEM_MODIFIER_NONE, id)))
+ {
+ snprintf(filename, sizeof(filename), "joy%i-%i", joy_index, id - ITEM_ID_BUTTON1 + 1);
+ found = true;
+ break;
+ }
+
+ if (!found)
+ return state;
+ }
+ else
+ {
+ sprintf(filename, "%c", file);
+ }
// display a popup indicating that the save will proceed
- sprintf(filename, "%c", file);
if (state == LOADSAVE_SAVE)
{
- machine.popmessage("Save to position %c", file);
+ machine.popmessage("Save to position %s", filename);
machine.schedule_save(filename);
}
else
{
- machine.popmessage("Load from position %c", file);
+ machine.popmessage("Load from position %s", filename);
machine.schedule_load(filename);
}
+ // avoid handling the name of the save state slot as a seperate input
+ machine.ui_input().mark_all_as_pressed();
+
// remove the pause and reset the state
machine.resume();
return UI_HANDLER_CANCEL;
@@ -1751,7 +1863,7 @@ UINT32 ui_manager::handler_load_save(running_machine &machine, render_container
void ui_manager::request_quit()
{
- if (!machine().options().confirm_quit())
+ if (!machine().ui().options().confirm_quit())
machine().schedule_exit();
else
set_handler(handler_confirm_quit, 0);
@@ -1856,7 +1968,7 @@ static slider_state *slider_init(running_machine &machine)
INT32 maxval = 2000;
INT32 defval = 1000;
- info.stream->input_name(info.inputnum, str);
+ str.assign(info.stream->input_name(info.inputnum));
str.append(" Volume");
*tailptr = slider_alloc(machine, str.c_str(), 0, defval, maxval, 20, slider_mixervol, (void *)(FPTR)item);
tailptr = &(*tailptr)->next;
@@ -2474,3 +2586,193 @@ void ui_manager::set_use_natural_keyboard(bool use_natural_keyboard)
machine().options().set_value(OPTION_NATURAL_KEYBOARD, use_natural_keyboard, OPTION_PRIORITY_CMDLINE, error);
assert(error.empty());
}
+
+//-------------------------------------------------
+// wrap_text
+//-------------------------------------------------
+
+void ui_manager::wrap_text(render_container *container, const char *origs, float x, float y, float origwrapwidth, int &count, std::vector<int> &xstart, std::vector<int> &xend, float text_size)
+{
+ float lineheight = get_line_height() * text_size;
+ const char *ends = origs + strlen(origs);
+ float wrapwidth = origwrapwidth;
+ const char *s = origs;
+ const char *linestart;
+ float maxwidth = 0;
+ float aspect = machine().render().ui_aspect(container);
+ count = 0;
+
+ // loop over lines
+ while (*s != 0)
+ {
+ const char *lastbreak = nullptr;
+ unicode_char schar;
+ int scharcount;
+ float lastbreak_width = 0;
+ float curwidth = 0;
+
+ // get the current character
+ scharcount = uchar_from_utf8(&schar, s, ends - s);
+ if (scharcount == -1)
+ break;
+
+ // remember the starting position of the line
+ linestart = s;
+
+ // loop while we have characters and are less than the wrapwidth
+ while (*s != 0 && curwidth <= wrapwidth)
+ {
+ float chwidth;
+
+ // get the current chcaracter
+ scharcount = uchar_from_utf8(&schar, s, ends - s);
+ if (scharcount == -1)
+ break;
+
+ // if we hit a newline, stop immediately
+ if (schar == '\n')
+ break;
+
+ // get the width of this character
+ chwidth = get_font()->char_width(lineheight, aspect, schar);
+
+ // if we hit a space, remember the location and width *without* the space
+ if (schar == ' ')
+ {
+ lastbreak = s;
+ lastbreak_width = curwidth;
+ }
+
+ // add the width of this character and advance
+ curwidth += chwidth;
+ s += scharcount;
+
+ // if we hit any non-space breakable character, remember the location and width
+ // *with* the breakable character
+ if (schar != ' ' && is_breakable_char(schar) && curwidth <= wrapwidth)
+ {
+ lastbreak = s;
+ lastbreak_width = curwidth;
+ }
+ }
+
+ // if we accumulated too much for the current width, we need to back off
+ if (curwidth > wrapwidth)
+ {
+ // if we hit a break, back up to there with the appropriate width
+ if (lastbreak != nullptr)
+ {
+ s = lastbreak;
+ curwidth = lastbreak_width;
+ }
+
+ // if we didn't hit a break, back up one character
+ else if (s > linestart)
+ {
+ // get the previous character
+ s = (const char *)utf8_previous_char(s);
+ scharcount = uchar_from_utf8(&schar, s, ends - s);
+ if (scharcount == -1)
+ break;
+
+ curwidth -= get_font()->char_width(lineheight, aspect, schar);
+ }
+ }
+
+ // track the maximum width of any given line
+ if (curwidth > maxwidth)
+ maxwidth = curwidth;
+
+ xstart.push_back(linestart - origs);
+ xend.push_back(s - origs);
+
+ // loop from the line start and add the characters
+ while (linestart < s)
+ {
+ // get the current character
+ unicode_char linechar;
+ int linecharcount = uchar_from_utf8(&linechar, linestart, ends - linestart);
+ if (linecharcount == -1)
+ break;
+ linestart += linecharcount;
+ }
+
+ // advance by a row
+ count++;
+
+ // skip past any spaces at the beginning of the next line
+ scharcount = uchar_from_utf8(&schar, s, ends - s);
+ if (scharcount == -1)
+ break;
+
+ if (schar == '\n')
+ s += scharcount;
+ else
+ while (*s && isspace(schar))
+ {
+ s += scharcount;
+ scharcount = uchar_from_utf8(&schar, s, ends - s);
+ if (scharcount == -1)
+ break;
+ }
+ }
+}
+
+//-------------------------------------------------
+// draw_textured_box - add primitives to
+// draw an outlined box with the given
+// textured background and line color
+//-------------------------------------------------
+
+void ui_manager::draw_textured_box(render_container *container, float x0, float y0, float x1, float y1, rgb_t backcolor, rgb_t linecolor, render_texture *texture, UINT32 flags)
+{
+ container->add_quad(x0, y0, x1, y1, backcolor, texture, flags);
+ container->add_line(x0, y0, x1, y0, UI_LINE_WIDTH, linecolor, PRIMFLAG_BLENDMODE(BLENDMODE_ALPHA));
+ container->add_line(x1, y0, x1, y1, UI_LINE_WIDTH, linecolor, PRIMFLAG_BLENDMODE(BLENDMODE_ALPHA));
+ container->add_line(x1, y1, x0, y1, UI_LINE_WIDTH, linecolor, PRIMFLAG_BLENDMODE(BLENDMODE_ALPHA));
+ container->add_line(x0, y1, x0, y0, UI_LINE_WIDTH, linecolor, PRIMFLAG_BLENDMODE(BLENDMODE_ALPHA));
+}
+
+//-------------------------------------------------
+// get_string_width_ex - return the width of a
+// character string with given text size
+//-------------------------------------------------
+
+float ui_manager::get_string_width_ex(const char *s, float text_size)
+{
+ return get_font()->utf8string_width(get_line_height() * text_size, machine().render().ui_aspect(), s);
+}
+
+//-------------------------------------------------
+// decode UI color options
+//-------------------------------------------------
+
+rgb_t decode_ui_color(int id, running_machine *machine)
+{
+ static rgb_t color[ARRAY_LENGTH(s_color_list)];
+
+ if (machine != nullptr) {
+ ui_options option;
+ for (int x = 0; x < ARRAY_LENGTH(s_color_list); x++) {
+ const char *o_default = option.value(s_color_list[x]);
+ const char *s_option = machine->ui().options().value(s_color_list[x]);
+ int len = strlen(s_option);
+ if (len != 8)
+ color[x] = rgb_t((UINT32)strtoul(o_default, nullptr, 16));
+ else
+ color[x] = rgb_t((UINT32)strtoul(s_option, nullptr, 16));
+ }
+ }
+ return color[id];
+}
+
+//-------------------------------------------------
+// get font rows from options
+//-------------------------------------------------
+
+int get_font_rows(running_machine *machine)
+{
+ static int value;
+
+ return ((machine != nullptr) ? value = machine->ui().options().font_rows() : value);
+}
diff --git a/src/emu/ui/ui.h b/src/emu/ui/ui.h
index ac68a2fb773..5a07a0800b5 100644
--- a/src/emu/ui/ui.h
+++ b/src/emu/ui/ui.h
@@ -14,14 +14,15 @@
#define __USRINTRF_H__
#include "render.h"
-
+#include "moptions.h"
/***************************************************************************
CONSTANTS
***************************************************************************/
/* preferred font height; use ui_get_line_height() to get actual height */
-#define UI_TARGET_FONT_ROWS (25)
+#define UI_TARGET_FONT_ROWS get_font_rows()
+
#define UI_TARGET_FONT_HEIGHT (1.0f / (float)UI_TARGET_FONT_ROWS)
#define UI_MAX_FONT_HEIGHT (1.0f / 15.0f)
@@ -35,25 +36,25 @@
/* handy colors */
#define ARGB_WHITE rgb_t(0xff,0xff,0xff,0xff)
#define ARGB_BLACK rgb_t(0xff,0x00,0x00,0x00)
-#define UI_BORDER_COLOR rgb_t(0xff,0xff,0xff,0xff)
-#define UI_BACKGROUND_COLOR rgb_t(0xef,0x10,0x10,0x30)
-#define UI_GFXVIEWER_BG_COLOR rgb_t(0xef,0x10,0x10,0x30)
#define UI_GREEN_COLOR rgb_t(0xef,0x10,0x60,0x10)
#define UI_YELLOW_COLOR rgb_t(0xef,0x60,0x60,0x10)
#define UI_RED_COLOR rgb_t(0xf0,0x60,0x10,0x10)
-#define UI_UNAVAILABLE_COLOR rgb_t(0xff,0x40,0x40,0x40)
-#define UI_TEXT_COLOR rgb_t(0xff,0xff,0xff,0xff)
-#define UI_TEXT_BG_COLOR rgb_t(0xef,0x00,0x00,0x00)
-#define UI_SUBITEM_COLOR rgb_t(0xff,0xff,0xff,0xff)
-#define UI_CLONE_COLOR rgb_t(0xff,0x80,0x80,0x80)
-#define UI_SELECTED_COLOR rgb_t(0xff,0xff,0xff,0x00)
-#define UI_SELECTED_BG_COLOR rgb_t(0xef,0x80,0x80,0x00)
-#define UI_MOUSEOVER_COLOR rgb_t(0xff,0xff,0xff,0x80)
-#define UI_MOUSEOVER_BG_COLOR rgb_t(0x70,0x40,0x40,0x00)
-#define UI_MOUSEDOWN_COLOR rgb_t(0xff,0xff,0xff,0x80)
-#define UI_MOUSEDOWN_BG_COLOR rgb_t(0xb0,0x60,0x60,0x00)
-#define UI_DIPSW_COLOR rgb_t(0xff,0xff,0xff,0x00)
-#define UI_SLIDER_COLOR rgb_t(0xff,0xff,0xff,0xff)
+#define UI_BORDER_COLOR decode_ui_color(0)
+#define UI_BACKGROUND_COLOR decode_ui_color(1)
+#define UI_GFXVIEWER_BG_COLOR decode_ui_color(2)
+#define UI_UNAVAILABLE_COLOR decode_ui_color(3)
+#define UI_TEXT_COLOR decode_ui_color(4)
+#define UI_TEXT_BG_COLOR decode_ui_color(5)
+#define UI_SUBITEM_COLOR decode_ui_color(6)
+#define UI_CLONE_COLOR decode_ui_color(7)
+#define UI_SELECTED_COLOR decode_ui_color(8)
+#define UI_SELECTED_BG_COLOR decode_ui_color(9)
+#define UI_MOUSEOVER_COLOR decode_ui_color(10)
+#define UI_MOUSEOVER_BG_COLOR decode_ui_color(11)
+#define UI_MOUSEDOWN_COLOR decode_ui_color(12)
+#define UI_MOUSEDOWN_BG_COLOR decode_ui_color(13)
+#define UI_DIPSW_COLOR decode_ui_color(14)
+#define UI_SLIDER_COLOR decode_ui_color(15)
/* cancel return value for a UI handler */
#define UI_HANDLER_CANCEL ((UINT32)~0)
@@ -112,96 +113,111 @@ struct slider_state
class ui_manager
{
public:
- // construction/destruction
- ui_manager(running_machine &machine);
-
- // getters
- running_machine &machine() const { return m_machine; }
- bool single_step() const { return m_single_step; }
-
- // setters
- void set_single_step(bool single_step) { m_single_step = single_step; }
-
- // methods
- void initialize(running_machine &machine);
- UINT32 set_handler(ui_callback callback, UINT32 param);
- void display_startup_screens(bool first_time, bool show_disclaimer);
- void set_startup_text(const char *text, bool force);
- void update_and_render(render_container *container);
- render_font *get_font();
- float get_line_height();
- float get_char_width(unicode_char ch);
- float get_string_width(const char *s);
- void draw_outlined_box(render_container *container, float x0, float y0, float x1, float y1, rgb_t backcolor);
- void draw_outlined_box(render_container *container, float x0, float y0, float x1, float y1, rgb_t fgcolor, rgb_t bgcolor);
- void draw_text(render_container *container, const char *buf, float x, float y);
- void draw_text_full(render_container *container, const char *origs, float x, float y, float origwrapwidth, int justify, int wrap, int draw, rgb_t fgcolor, rgb_t bgcolor, float *totalwidth = nullptr, float *totalheight = nullptr);
+ // construction/destruction
+ ui_manager(running_machine &machine);
+
+ void init();
+
+ // getters
+ running_machine &machine() const { return m_machine; }
+ bool single_step() const { return m_single_step; }
+ ui_options &options() { return m_ui_options; }
+
+ // setters
+ void set_single_step(bool single_step) { m_single_step = single_step; }
+
+ // methods
+ void initialize(running_machine &machine);
+ UINT32 set_handler(ui_callback callback, UINT32 param);
+ void display_startup_screens(bool first_time, bool show_disclaimer);
+ void set_startup_text(const char *text, bool force);
+ void update_and_render(render_container *container);
+ render_font *get_font();
+ float get_line_height();
+ float get_char_width(unicode_char ch);
+ float get_string_width(const char *s);
+ void draw_outlined_box(render_container *container, float x0, float y0, float x1, float y1, rgb_t backcolor);
+ void draw_outlined_box(render_container *container, float x0, float y0, float x1, float y1, rgb_t fgcolor, rgb_t bgcolor);
+ void draw_text(render_container *container, const char *buf, float x, float y);
+ void draw_text_full(render_container *container, const char *origs, float x, float y, float origwrapwidth, int justify, int wrap, int draw, rgb_t fgcolor, rgb_t bgcolor, float *totalwidth = nullptr, float *totalheight = nullptr, float text_size = 1.0f);
void draw_text_box(render_container *container, const char *text, int justify, float xpos, float ypos, rgb_t backcolor);
- void draw_message_window(render_container *container, const char *text);
-
- void CLIB_DECL popup_time(int seconds, const char *text, ...) ATTR_PRINTF(3,4);
- void show_fps_temp(double seconds);
- void set_show_fps(bool show);
- bool show_fps() const;
- bool show_fps_counter();
- void set_show_profiler(bool show);
- bool show_profiler() const;
- void show_menu();
- void show_mouse(bool status);
- bool is_menu_active();
- bool can_paste();
- void paste();
- bool use_natural_keyboard() const;
- void set_use_natural_keyboard(bool use_natural_keyboard);
- void image_handler_ingame();
- void increase_frameskip();
- void decrease_frameskip();
- void request_quit();
-
- // print the game info string into a buffer
- std::string &game_info_astring(std::string &str);
-
- // slider controls
- const slider_state *get_slider_list(void);
-
- // other
- void process_natural_keyboard();
+ void draw_message_window(render_container *container, const char *text);
+
+ void CLIB_DECL popup_time(int seconds, const char *text, ...) ATTR_PRINTF(3,4);
+ void show_fps_temp(double seconds);
+ void set_show_fps(bool show);
+ bool show_fps() const;
+ bool show_fps_counter();
+ void set_show_profiler(bool show);
+ bool show_profiler() const;
+ void show_menu();
+ void show_mouse(bool status);
+ bool is_menu_active();
+ bool can_paste();
+ void paste();
+ bool use_natural_keyboard() const;
+ void set_use_natural_keyboard(bool use_natural_keyboard);
+ void image_handler_ingame();
+ void increase_frameskip();
+ void decrease_frameskip();
+ void request_quit();
+
+ // print the game info string into a buffer
+ std::string &game_info_astring(std::string &str);
+
+ // slider controls
+ const slider_state *get_slider_list(void);
+
+ // other
+ void process_natural_keyboard();
+
+ // word wrap
+ void wrap_text(render_container *container, const char *origs, float x, float y, float origwrapwidth, int &totallines, std::vector<int> &xstart, std::vector<int> &xend, float text_size = 1.0f);
+
+ // draw an outlined box with given line color and filled with a texture
+ void draw_textured_box(render_container *container, float x0, float y0, float x1, float y1, rgb_t backcolor, rgb_t linecolor, render_texture *texture = nullptr, UINT32 flags = PRIMFLAG_BLENDMODE(BLENDMODE_ALPHA));
+
+ // return text string width with given text size
+ float get_string_width_ex(const char *s, float text_size);
private:
- // instance variables
- running_machine & m_machine;
- render_font * m_font;
- ui_callback m_handler_callback;
- UINT32 m_handler_param;
- bool m_single_step;
- bool m_showfps;
- osd_ticks_t m_showfps_end;
- bool m_show_profiler;
- osd_ticks_t m_popup_text_end;
- bool m_use_natural_keyboard;
+ // instance variables
+ running_machine & m_machine;
+ render_font * m_font;
+ ui_callback m_handler_callback;
+ UINT32 m_handler_param;
+ bool m_single_step;
+ bool m_showfps;
+ osd_ticks_t m_showfps_end;
+ bool m_show_profiler;
+ osd_ticks_t m_popup_text_end;
+ bool m_use_natural_keyboard;
std::unique_ptr<UINT8[]> m_non_char_keys_down;
- render_texture * m_mouse_arrow_texture;
- bool m_mouse_show;
-
- // text generators
- std::string &disclaimer_string(std::string &buffer);
- std::string &warnings_string(std::string &buffer);
-
- // UI handlers
- static UINT32 handler_messagebox(running_machine &machine, render_container *container, UINT32 state);
- static UINT32 handler_messagebox_ok(running_machine &machine, render_container *container, UINT32 state);
- static UINT32 handler_messagebox_anykey(running_machine &machine, render_container *container, UINT32 state);
- static UINT32 handler_ingame(running_machine &machine, render_container *container, UINT32 state);
- static UINT32 handler_load_save(running_machine &machine, render_container *container, UINT32 state);
- static UINT32 handler_confirm_quit(running_machine &machine, render_container *container, UINT32 state);
-
- // private methods
- void exit();
+ render_texture * m_mouse_arrow_texture;
+ bool m_mouse_show;
+ bool m_load_save_hold;
+ ui_options m_ui_options;
+
+ // text generators
+ std::string &disclaimer_string(std::string &buffer);
+ std::string &warnings_string(std::string &buffer);
+
+ // UI handlers
+ static UINT32 handler_messagebox(running_machine &machine, render_container *container, UINT32 state);
+ static UINT32 handler_messagebox_ok(running_machine &machine, render_container *container, UINT32 state);
+ static UINT32 handler_messagebox_anykey(running_machine &machine, render_container *container, UINT32 state);
+ static UINT32 handler_ingame(running_machine &machine, render_container *container, UINT32 state);
+ static UINT32 handler_load_save(running_machine &machine, render_container *container, UINT32 state);
+ static UINT32 handler_confirm_quit(running_machine &machine, render_container *container, UINT32 state);
+
+ // private methods
+ void exit();
};
/***************************************************************************
FUNCTION PROTOTYPES
***************************************************************************/
-
+rgb_t decode_ui_color(int id, running_machine *machine = nullptr);
+int get_font_rows(running_machine *machine = NULL);
#endif /* __USRINTRF_H__ */
diff --git a/src/emu/ui/uicmd14.png b/src/emu/ui/uicmd14.png
new file mode 100644
index 00000000000..d3cae952cac
--- /dev/null
+++ b/src/emu/ui/uicmd14.png
Binary files differ
diff --git a/src/emu/ui/utils.cpp b/src/emu/ui/utils.cpp
new file mode 100644
index 00000000000..eb8078a4ab1
--- /dev/null
+++ b/src/emu/ui/utils.cpp
@@ -0,0 +1,178 @@
+// license:BSD-3-Clause
+// copyright-holders:Dankan1890
+/***************************************************************************
+
+ ui/utils.cpp
+
+ Internal UI user interface.
+
+***************************************************************************/
+
+#include "emu.h"
+#include "ui/utils.h"
+#include <algorithm>
+
+extern const char UI_VERSION_TAG[];
+const char UI_VERSION_TAG[] = "# UI INFO ";
+
+// Years index
+UINT16 c_year::actual = 0;
+std::vector<std::string> c_year::ui;
+
+// Manufacturers index
+UINT16 c_mnfct::actual = 0;
+std::vector<std::string> c_mnfct::ui;
+
+// Main filters
+UINT16 main_filters::actual = 0;
+const char *main_filters::text[] = { "All", "Available", "Unavailable", "Working", "Not Mechanical", "Category", "Favorites", "BIOS",
+ "Originals", "Clones", "Not Working", "Mechanical", "Manufacturers", "Years", "Support Save",
+ "Not Support Save", "CHD", "No CHD", "Use Samples", "Not Use Samples", "Stereo", "Vertical",
+ "Horizontal", "Screen Type", "Custom" };
+size_t main_filters::length = ARRAY_LENGTH(main_filters::text);
+
+// Software filters
+UINT16 sw_filters::actual = 0;
+const char *sw_filters::text[] = { "All", "Available", "Unavailable", "Originals", "Clones", "Years", "Publishers", "Supported",
+ "Partial Supported", "Unsupported", "Region", "Device Type", "Software List", "Custom" };
+size_t sw_filters::length = ARRAY_LENGTH(sw_filters::text);
+
+// Screens
+UINT16 screen_filters::actual = 0;
+const char *screen_filters::text[] = { "<none>", "Raster", "Vector", "LCD" };
+size_t screen_filters::length = ARRAY_LENGTH(screen_filters::text);
+
+// Globals
+UINT8 ui_globals::rpanel = 0;
+UINT8 ui_globals::curimage_view = 0;
+UINT8 ui_globals::curdats_view = 0;
+UINT8 ui_globals::cur_sw_dats_view = 0;
+bool ui_globals::switch_image = false;
+bool ui_globals::default_image = true;
+bool ui_globals::reset = false;
+bool ui_globals::redraw_icon = false;
+int ui_globals::visible_main_lines = 0;
+int ui_globals::visible_sw_lines = 0;
+UINT16 ui_globals::panels_status = 0;
+
+// Custom filter
+UINT16 custfltr::main = 0;
+UINT16 custfltr::numother = 0;
+UINT16 custfltr::other[MAX_CUST_FILTER];
+UINT16 custfltr::mnfct[MAX_CUST_FILTER];
+UINT16 custfltr::year[MAX_CUST_FILTER];
+UINT16 custfltr::screen[MAX_CUST_FILTER];
+
+// Custom filter
+UINT16 sw_custfltr::main = 0;
+UINT16 sw_custfltr::numother = 0;
+UINT16 sw_custfltr::other[MAX_CUST_FILTER];
+UINT16 sw_custfltr::mnfct[MAX_CUST_FILTER];
+UINT16 sw_custfltr::year[MAX_CUST_FILTER];
+UINT16 sw_custfltr::region[MAX_CUST_FILTER];
+UINT16 sw_custfltr::type[MAX_CUST_FILTER];
+UINT16 sw_custfltr::list[MAX_CUST_FILTER];
+
+char* chartrimcarriage(char str[])
+{
+ char *pstr = strrchr(str, '\n');
+ if (pstr)
+ str[pstr - str] = '\0';
+ pstr = strrchr(str, '\r');
+ if (pstr)
+ str[pstr - str] = '\0';
+ return str;
+}
+
+const char* strensure(const char* s)
+{
+ return s == nullptr ? "" : s;
+}
+
+//-------------------------------------------------
+// search a substring with even partial matching
+//-------------------------------------------------
+
+int fuzzy_substring(std::string s_needle, std::string s_haystack)
+{
+ if (s_needle.empty())
+ return s_haystack.size();
+ if (s_haystack.empty())
+ return s_needle.size();
+
+ strmakelower(s_needle);
+ strmakelower(s_haystack);
+
+ if (s_needle == s_haystack)
+ return 0;
+ if (s_haystack.find(s_needle) != std::string::npos)
+ return 0;
+
+ auto *row1 = global_alloc_array_clear<int>(s_haystack.size() + 2);
+ auto *row2 = global_alloc_array_clear<int>(s_haystack.size() + 2);
+
+ for (int i = 0; i < s_needle.size(); ++i)
+ {
+ row2[0] = i + 1;
+ for (int j = 0; j < s_haystack.size(); ++j)
+ {
+ int cost = (s_needle[i] == s_haystack[j]) ? 0 : 1;
+ row2[j + 1] = MIN(row1[j + 1] + 1, MIN(row2[j] + 1, row1[j] + cost));
+ }
+
+ int *tmp = row1;
+ row1 = row2;
+ row2 = tmp;
+ }
+
+ int *first, *smallest;
+ first = smallest = row1;
+ int *last = row1 + s_haystack.size();
+
+ while (++first != last)
+ if (*first < *smallest)
+ smallest = first;
+
+ int rv = *smallest;
+ global_free_array(row1);
+ global_free_array(row2);
+
+ return rv;
+}
+
+//-------------------------------------------------
+// set manufacturers
+//-------------------------------------------------
+
+void c_mnfct::set(const char *str)
+{
+ std::string name = getname(str);
+ if (std::find(ui.begin(), ui.end(), name) != ui.end())
+ return;
+
+ ui.push_back(name);
+}
+
+std::string c_mnfct::getname(const char *str)
+{
+ std::string name(str);
+ size_t found = name.find("(");
+
+ if (found != std::string::npos)
+ return (name.substr(0, found - 1));
+ else
+ return name;
+}
+
+//-------------------------------------------------
+// set years
+//-------------------------------------------------
+
+void c_year::set(const char *str)
+{
+ std::string name(str);
+ if (std::find(ui.begin(), ui.end(), name) != ui.end())
+ return;
+
+ ui.push_back(name);
+}
diff --git a/src/emu/ui/utils.h b/src/emu/ui/utils.h
new file mode 100644
index 00000000000..473ac5f32ea
--- /dev/null
+++ b/src/emu/ui/utils.h
@@ -0,0 +1,355 @@
+// license:BSD-3-Clause
+// copyright-holders:Dankan1890
+/***************************************************************************
+
+ ui/utils.h
+
+ Internal UI user interface.
+
+***************************************************************************/
+
+#pragma once
+
+#ifndef __UI_UTILS_H__
+#define __UI_UTILS_H__
+
+#include "osdepend.h"
+#include "render.h"
+#include "libjpeg/jpeglib.h"
+//#include <algorithm>
+//#include "drivenum.h"
+//#include <map>
+
+#define MAX_CHAR_INFO 256
+#define MAX_CUST_FILTER 8
+
+// GLOBAL ENUMERATORS
+enum
+{
+ FILTER_FIRST = 0,
+ FILTER_ALL = FILTER_FIRST,
+ FILTER_AVAILABLE,
+ FILTER_UNAVAILABLE,
+ FILTER_WORKING,
+ FILTER_NOT_MECHANICAL,
+ FILTER_CATEGORY,
+ FILTER_FAVORITE_GAME,
+ FILTER_BIOS,
+ FILTER_PARENT,
+ FILTER_CLONES,
+ FILTER_NOT_WORKING,
+ FILTER_MECHANICAL,
+ FILTER_MANUFACTURER,
+ FILTER_YEAR,
+ FILTER_SAVE,
+ FILTER_NOSAVE,
+ FILTER_CHD,
+ FILTER_NOCHD,
+ FILTER_SAMPLES,
+ FILTER_NOSAMPLES,
+ FILTER_STEREO,
+ FILTER_VERTICAL,
+ FILTER_HORIZONTAL,
+ FILTER_SCREEN,
+ FILTER_CUSTOM,
+ FILTER_LAST = FILTER_CUSTOM
+};
+
+enum
+{
+ FIRST_VIEW = 0,
+ SNAPSHOT_VIEW = FIRST_VIEW,
+ CABINETS_VIEW,
+ CPANELS_VIEW,
+ PCBS_VIEW,
+ FLYERS_VIEW,
+ TITLES_VIEW,
+ ENDS_VIEW,
+ ARTPREV_VIEW,
+ BOSSES_VIEW,
+ LOGOS_VIEW,
+ VERSUS_VIEW,
+ GAMEOVER_VIEW,
+ HOWTO_VIEW,
+ SCORES_VIEW,
+ SELECT_VIEW,
+ MARQUEES_VIEW,
+ LAST_VIEW = MARQUEES_VIEW
+};
+
+enum
+{
+ RP_FIRST = 0,
+ RP_IMAGES = RP_FIRST,
+ RP_INFOS,
+ RP_LAST = RP_INFOS
+};
+
+enum
+{
+ SHOW_PANELS = 0,
+ HIDE_LEFT_PANEL,
+ HIDE_RIGHT_PANEL,
+ HIDE_BOTH
+};
+
+enum
+{
+ UI_FIRST_LOAD = 0,
+ UI_GENERAL_LOAD = UI_FIRST_LOAD,
+ UI_HISTORY_LOAD,
+ UI_MAMEINFO_LOAD,
+ UI_SYSINFO_LOAD,
+ UI_MESSINFO_LOAD,
+ UI_COMMAND_LOAD,
+ UI_STORY_LOAD,
+ UI_LAST_LOAD = UI_STORY_LOAD
+};
+
+enum
+{
+ UI_SW_FIRST = 0,
+ UI_SW_ALL = UI_SW_FIRST,
+ UI_SW_AVAILABLE,
+ UI_SW_UNAVAILABLE,
+ UI_SW_PARENTS,
+ UI_SW_CLONES,
+ UI_SW_YEARS,
+ UI_SW_PUBLISHERS,
+ UI_SW_SUPPORTED,
+ UI_SW_PARTIAL_SUPPORTED,
+ UI_SW_UNSUPPORTED,
+ UI_SW_REGION,
+ UI_SW_TYPE,
+ UI_SW_LIST,
+ UI_SW_CUSTOM,
+ UI_SW_LAST = UI_SW_CUSTOM
+};
+
+enum
+{
+ HOVER_DAT_UP = -1000,
+ HOVER_DAT_DOWN,
+ HOVER_UI_LEFT,
+ HOVER_UI_RIGHT,
+ HOVER_ARROW_UP,
+ HOVER_ARROW_DOWN,
+ HOVER_B_FAV,
+ HOVER_B_EXPORT,
+ HOVER_B_HISTORY,
+ HOVER_B_MAMEINFO,
+ HOVER_B_COMMAND,
+ HOVER_B_FOLDERS,
+ HOVER_B_SETTINGS,
+ HOVER_RPANEL_ARROW,
+ HOVER_LPANEL_ARROW,
+ HOVER_FILTER_FIRST,
+ HOVER_FILTER_LAST = (HOVER_FILTER_FIRST) + 1 + FILTER_LAST,
+ HOVER_SW_FILTER_FIRST,
+ HOVER_SW_FILTER_LAST = (HOVER_SW_FILTER_FIRST) + 1 + UI_SW_LAST,
+ HOVER_RP_FIRST,
+ HOVER_RP_LAST = (HOVER_RP_FIRST) + 1 + RP_LAST
+};
+
+// GLOBAL STRUCTURES
+struct ui_software_info
+{
+ ui_software_info() {}
+ ui_software_info(std::string sname, std::string lname, std::string pname, std::string y, std::string pub,
+ UINT8 s, std::string pa, const game_driver *d, std::string li, std::string i, std::string is, UINT8 em,
+ std::string plong, std::string u, std::string de, bool av)
+ {
+ shortname = sname; longname = lname; parentname = pname; year = y; publisher = pub;
+ supported = s; part = pa; driver = d; listname = li; interface = i; instance = is; startempty = em;
+ parentlongname = plong; usage = u; devicetype = de; available = av;
+ }
+ std::string shortname;
+ std::string longname;
+ std::string parentname;
+ std::string year;
+ std::string publisher;
+ UINT8 supported = 0;
+ std::string part;
+ const game_driver *driver;
+ std::string listname;
+ std::string interface;
+ std::string instance;
+ UINT8 startempty = 0;
+ std::string parentlongname;
+ std::string usage;
+ std::string devicetype;
+ bool available = false;
+
+ bool operator==(const ui_software_info& r)
+ {
+ if (shortname == r.shortname && longname == r.longname && parentname == r.parentname
+ && year == r.year && publisher == r.publisher && supported == r.supported
+ && part == r.part && driver == r.driver && listname == r.listname
+ && interface == r.interface && instance == r.instance && startempty == r.startempty
+ && parentlongname == r.parentlongname && usage == r.usage && devicetype == r.devicetype)
+ return true;
+
+ return false;
+ }
+};
+
+// Manufacturers
+struct c_mnfct
+{
+ static void set(const char *str);
+ static std::string getname(const char *str);
+ static std::vector<std::string> ui;
+ static UINT16 actual;
+};
+
+// Years
+struct c_year
+{
+ static void set(const char *str);
+ static std::vector<std::string> ui;
+ static UINT16 actual;
+};
+
+// GLOBAL CLASS
+struct ui_globals
+{
+ static UINT8 curimage_view, curdats_view, cur_sw_dats_view, rpanel;
+ static bool switch_image, redraw_icon, default_image, reset;
+ static int visible_main_lines, visible_sw_lines;
+ static UINT16 panels_status;
+};
+
+#define main_struct(name) \
+struct name##_filters \
+{ \
+ static UINT16 actual; \
+ static const char *text[]; \
+ static size_t length; \
+};
+
+main_struct(main);
+main_struct(sw);
+main_struct(ume);
+main_struct(screen);
+
+// Custom filter
+struct custfltr
+{
+ static UINT16 main;
+ static UINT16 numother;
+ static UINT16 other[MAX_CUST_FILTER];
+ static UINT16 mnfct[MAX_CUST_FILTER];
+ static UINT16 screen[MAX_CUST_FILTER];
+ static UINT16 year[MAX_CUST_FILTER];
+};
+
+// Software custom filter
+struct sw_custfltr
+{
+ static UINT16 main;
+ static UINT16 numother;
+ static UINT16 other[MAX_CUST_FILTER];
+ static UINT16 mnfct[MAX_CUST_FILTER];
+ static UINT16 year[MAX_CUST_FILTER];
+ static UINT16 region[MAX_CUST_FILTER];
+ static UINT16 type[MAX_CUST_FILTER];
+ static UINT16 list[MAX_CUST_FILTER];
+};
+
+// GLOBAL FUNCTIONS
+
+// advanced search function
+int fuzzy_substring(std::string needle, std::string haystack);
+
+// trim carriage return
+char* chartrimcarriage(char str[]);
+
+const char* strensure(const char* s);
+
+// jpeg loader
+template <typename _T>
+void render_load_jpeg(_T &bitmap, emu_file &file, const char *dirname, const char *filename)
+{
+ // deallocate previous bitmap
+ bitmap.reset();
+
+ bitmap_format format = bitmap.format();
+
+ // define file's full name
+ std::string fname;
+
+ if (dirname == nullptr)
+ fname = filename;
+ else
+ fname.assign(dirname).append(PATH_SEPARATOR).append(filename);
+
+ file_error filerr = file.open(fname.c_str());
+
+ if (filerr != FILERR_NONE)
+ return;
+
+ // define standard JPEG structures
+ jpeg_decompress_struct cinfo;
+ jpeg_error_mgr jerr;
+ cinfo.err = jpeg_std_error(&jerr);
+ jpeg_create_decompress(&cinfo);
+
+ // allocates a buffer for the image
+ UINT64 jpg_size = file.size();
+ unsigned char *jpg_buffer = global_alloc_array(unsigned char, jpg_size + 100);
+
+ // read data from the file and set them in the buffer
+ file.read(jpg_buffer, jpg_size);
+ jpeg_mem_src(&cinfo, jpg_buffer, jpg_size);
+
+ // read JPEG header and start decompression
+ jpeg_read_header(&cinfo, TRUE);
+ jpeg_start_decompress(&cinfo);
+
+ // allocates the destination bitmap
+ int w = cinfo.output_width;
+ int h = cinfo.output_height;
+ int s = cinfo.output_components;
+ bitmap.allocate(w, h);
+
+ // allocates a buffer to receive the information and copy them into the bitmap
+ int row_stride = cinfo.output_width * cinfo.output_components;
+ JSAMPARRAY buffer = (JSAMPARRAY)malloc(sizeof(JSAMPROW));
+ buffer[0] = (JSAMPROW)malloc(sizeof(JSAMPLE) * row_stride);
+
+ while ( cinfo.output_scanline < cinfo.output_height )
+ {
+ int j = cinfo.output_scanline;
+ jpeg_read_scanlines(&cinfo, buffer, 1);
+
+ if (s == 1)
+ for (int i = 0; i < w; ++i)
+ if (format == BITMAP_FORMAT_ARGB32)
+ bitmap.pix32(j, i) = rgb_t(0xFF, buffer[0][i], buffer[0][i], buffer[0][i]);
+ else
+ bitmap.pix32(j, i) = rgb_t(buffer[0][i], buffer[0][i], buffer[0][i]);
+
+ else if (s == 3)
+ for (int i = 0; i < w; ++i)
+ if (format == BITMAP_FORMAT_ARGB32)
+ bitmap.pix32(j, i) = rgb_t(0xFF, buffer[0][i * s], buffer[0][i * s + 1], buffer[0][i * s + 2]);
+ else
+ bitmap.pix32(j, i) = rgb_t(buffer[0][i * s], buffer[0][i * s + 1], buffer[0][i * s + 2]);
+
+ else
+ {
+ osd_printf_info("Error! Cannot read JPEG data from %s file.\n", fname.c_str());
+ break;
+ }
+ }
+
+ // finish decompression and frees the memory
+ jpeg_finish_decompress(&cinfo);
+ jpeg_destroy_decompress(&cinfo);
+ file.close();
+ free(buffer[0]);
+ free(buffer);
+ global_free_array(jpg_buffer);
+}
+
+#endif /* __UI_UTILS_H__ */
diff --git a/src/emu/ui/videoopt.cpp b/src/emu/ui/videoopt.cpp
index e76c27305c8..aa3bc21dd5f 100644
--- a/src/emu/ui/videoopt.cpp
+++ b/src/emu/ui/videoopt.cpp
@@ -24,7 +24,7 @@ void ui_menu_video_targets::handle()
/* process the menu */
const ui_menu_event *menu_event = process(0);
if (menu_event != nullptr && menu_event->iptkey == IPT_UI_SELECT)
- ui_menu::stack_push(auto_alloc_clear(machine(), <ui_menu_video_options>(machine(), container, static_cast<render_target *>(menu_event->itemref))));
+ ui_menu::stack_push(global_alloc_clear<ui_menu_video_options>(machine(), container, static_cast<render_target *>(menu_event->itemref)));
}
diff --git a/src/emu/ui/viewgfx.cpp b/src/emu/ui/viewgfx.cpp
index 74d21da7585..326e67779c9 100644
--- a/src/emu/ui/viewgfx.cpp
+++ b/src/emu/ui/viewgfx.cpp
@@ -904,7 +904,7 @@ static void gfxset_draw_item(running_machine &machine, gfx_element &gfx, int ind
{
int width = (rotate & ORIENTATION_SWAP_XY) ? gfx.height() : gfx.width();
int height = (rotate & ORIENTATION_SWAP_XY) ? gfx.width() : gfx.height();
- const rgb_t *palette = gfx.palette()->palette()->entry_list_raw() + gfx.colorbase() + color * gfx.granularity();
+ const rgb_t *palette = gfx.palette().palette()->entry_list_raw() + gfx.colorbase() + color * gfx.granularity();
int x, y;
// loop over rows in the cell
diff --git a/src/emu/uiinput.cpp b/src/emu/uiinput.cpp
index 3f9b95021e7..c55038d3065 100644
--- a/src/emu/uiinput.cpp
+++ b/src/emu/uiinput.cpp
@@ -33,11 +33,11 @@ enum
//-------------------------------------------------
ui_input_manager::ui_input_manager(running_machine &machine)
- : m_machine(machine),
- m_current_mouse_target(nullptr),
- m_current_mouse_down(false),
- m_events_start(0),
- m_events_end(0)
+ : m_machine(machine),
+ m_current_mouse_target(nullptr),
+ m_current_mouse_down(false),
+ m_events_start(0),
+ m_events_end(0)
{
/* create the private data */
m_current_mouse_x = -1;
@@ -78,7 +78,6 @@ void ui_input_manager::frame_update()
bool ui_input_manager::push_event(ui_event evt)
{
-
/* some pre-processing (this is an icky place to do this stuff!) */
switch (evt.event_type)
{
@@ -241,8 +240,8 @@ g_profiler.stop();
}
/*-------------------------------------------------
- push_mouse_move_event - pushes a mouse
- move event to the specified render_target
+ push_mouse_move_event - pushes a mouse
+ move event to the specified render_target
-------------------------------------------------*/
void ui_input_manager::push_mouse_move_event(render_target* target, INT32 x, INT32 y)
@@ -256,8 +255,8 @@ void ui_input_manager::push_mouse_move_event(render_target* target, INT32 x, INT
}
/*-------------------------------------------------
- push_mouse_leave_event - pushes a
- mouse leave event to the specified render_target
+ push_mouse_leave_event - pushes a
+ mouse leave event to the specified render_target
-------------------------------------------------*/
void ui_input_manager::push_mouse_leave_event(render_target* target)
@@ -269,8 +268,8 @@ void ui_input_manager::push_mouse_leave_event(render_target* target)
}
/*-------------------------------------------------
- push_mouse_down_event - pushes a mouse
- down event to the specified render_target
+ push_mouse_down_event - pushes a mouse
+ down event to the specified render_target
-------------------------------------------------*/
void ui_input_manager::push_mouse_down_event(render_target* target, INT32 x, INT32 y)
@@ -284,8 +283,8 @@ void ui_input_manager::push_mouse_down_event(render_target* target, INT32 x, INT
}
/*-------------------------------------------------
- push_mouse_down_event - pushes a mouse
- down event to the specified render_target
+ push_mouse_down_event - pushes a mouse
+ down event to the specified render_target
-------------------------------------------------*/
void ui_input_manager::push_mouse_up_event(render_target* target, INT32 x, INT32 y)
@@ -299,9 +298,9 @@ void ui_input_manager::push_mouse_up_event(render_target* target, INT32 x, INT32
}
/*-------------------------------------------------
- push_mouse_double_click_event - pushes
- a mouse double-click event to the specified
- render_target
+ push_mouse_double_click_event - pushes
+ a mouse double-click event to the specified
+ render_target
-------------------------------------------------*/
void ui_input_manager::push_mouse_double_click_event(render_target* target, INT32 x, INT32 y)
{
@@ -314,8 +313,8 @@ void ui_input_manager::push_mouse_double_click_event(render_target* target, INT3
}
/*-------------------------------------------------
- push_char_event - pushes a char event
- to the specified render_target
+ push_char_event - pushes a char event
+ to the specified render_target
-------------------------------------------------*/
void ui_input_manager::push_char_event(render_target* target, unicode_char ch)
{
@@ -325,3 +324,30 @@ void ui_input_manager::push_char_event(render_target* target, unicode_char ch)
event.ch = ch;
push_event(event);
}
+
+/*-------------------------------------------------
+ push_mouse_wheel_event - pushes a mouse
+ wheel event to the specified render_target
+-------------------------------------------------*/
+
+void ui_input_manager::push_mouse_wheel_event(render_target *target, INT32 x, INT32 y, short delta, int ucNumLines)
+{
+ ui_event event = { UI_EVENT_NONE };
+ event.event_type = UI_EVENT_MOUSE_WHEEL;
+ event.target = target;
+ event.mouse_x = x;
+ event.mouse_y = y;
+ event.zdelta = delta;
+ event.num_lines = ucNumLines;
+ push_event(event);
+}
+
+/*-------------------------------------------------
+ mark_all_as_pressed - marks all buttons
+ as if they were already pressed once
+-------------------------------------------------*/
+void ui_input_manager::mark_all_as_pressed()
+{
+ for (int code = IPT_UI_FIRST + 1; code < IPT_UI_LAST; code++)
+ m_next_repeat[code] = osd_ticks();
+} \ No newline at end of file
diff --git a/src/emu/uiinput.h b/src/emu/uiinput.h
index e05cad56dc5..fecc61c0c1a 100644
--- a/src/emu/uiinput.h
+++ b/src/emu/uiinput.h
@@ -16,7 +16,7 @@
/***************************************************************************
- CONSTANTS
+ CONSTANTS
***************************************************************************/
#define EVENT_QUEUE_SIZE 128
@@ -33,6 +33,7 @@ enum ui_event_type
UI_EVENT_MOUSE_DOWN,
UI_EVENT_MOUSE_UP,
UI_EVENT_MOUSE_DOUBLE_CLICK,
+ UI_EVENT_MOUSE_WHEEL,
UI_EVENT_CHAR
};
@@ -44,6 +45,8 @@ struct ui_event
INT32 mouse_y;
input_item_id key;
unicode_char ch;
+ short zdelta;
+ int num_lines;
};
// ======================> ui_input_manager
@@ -85,6 +88,9 @@ public:
void push_mouse_up_event(render_target* target, INT32 x, INT32 y);
void push_mouse_double_click_event(render_target* target, INT32 x, INT32 y);
void push_char_event(render_target* target, unicode_char ch);
+ void push_mouse_wheel_event(render_target *target, INT32 x, INT32 y, short delta, int ucNumLines);
+
+ void mark_all_as_pressed();
private:
diff --git a/src/emu/validity.cpp b/src/emu/validity.cpp
index f1d685e7cd3..4acc8d991ad 100644
--- a/src/emu/validity.cpp
+++ b/src/emu/validity.cpp
@@ -184,10 +184,11 @@ void validity_checker::check_shared_source(const game_driver &driver)
//-------------------------------------------------
-// check_all - check all drivers
+// check_all_matching - check all drivers whose
+// names match the given string
//-------------------------------------------------
-bool validity_checker::check_all()
+bool validity_checker::check_all_matching(const char *string)
{
// start by checking core stuff
validate_begin();
@@ -210,7 +211,8 @@ bool validity_checker::check_all()
// then iterate over all drivers and check them
m_drivlist.reset();
while (m_drivlist.next())
- validate_one(m_drivlist.driver());
+ if (m_drivlist.matches(string, m_drivlist.driver().name))
+ validate_one(m_drivlist.driver());
// cleanup
validate_end();
@@ -968,16 +970,12 @@ void validity_checker::validate_devices()
device_iterator iter_find(m_current_config->root_device());
for (const device_t *device = iter_find.first(); device != nullptr; device = iter_find.next())
{
- device->findit(true);
- }
-
- // iterate over devices
- device_iterator iter(m_current_config->root_device());
- for (const device_t *device = iter.first(); device != nullptr; device = iter.next())
- {
// track the current device
m_current_device = device;
+ // validate auto-finders
+ device->findit(true);
+
// validate the device tag
validate_tag(device->basetag());
diff --git a/src/emu/validity.h b/src/emu/validity.h
index 5a9ea204f59..66eaffd533b 100644
--- a/src/emu/validity.h
+++ b/src/emu/validity.h
@@ -46,7 +46,7 @@ public:
// operations
void check_driver(const game_driver &driver);
void check_shared_source(const game_driver &driver);
- bool check_all();
+ bool check_all_matching(const char *string = "*");
// helpers for devices
void validate_tag(const char *tag);
diff --git a/src/emu/video.cpp b/src/emu/video.cpp
index d2e25e250be..d05a1b8327c 100644
--- a/src/emu/video.cpp
+++ b/src/emu/video.cpp
@@ -247,8 +247,9 @@ void video_manager::frame_update(bool debug)
if (phase == MACHINE_PHASE_RUNNING)
{
// reset partial updates if we're paused or if the debugger is active
- if (machine().first_screen() != nullptr && (machine().paused() || debug || debugger_within_instruction_hook(machine())))
- machine().first_screen()->reset_partial_updates();
+ screen_device *screen = machine().first_screen();
+ if (screen != nullptr && (machine().paused() || debug || debugger_within_instruction_hook(machine())))
+ screen->reset_partial_updates();
}
}
@@ -316,8 +317,8 @@ void video_manager::save_snapshot(screen_device *screen, emu_file &file)
png_add_text(&pnginfo, "System", text2.c_str());
// now do the actual work
- const rgb_t *palette = (screen !=nullptr && screen->palette() != nullptr) ? screen->palette()->palette()->entry_list_adjusted() : nullptr;
- int entries = (screen !=nullptr && screen->palette() != nullptr) ? screen->palette()->entries() : 0;
+ const rgb_t *palette = (screen != nullptr && screen->has_palette()) ? screen->palette().palette()->entry_list_adjusted() : nullptr;
+ int entries = (screen != nullptr && screen->has_palette()) ? screen->palette().entries() : 0;
png_error error = png_write_bitmap(file, &pnginfo, m_snap_bitmap, entries, palette);
if (error != PNGERR_NONE)
osd_printf_error("Error generating PNG for snapshot: png_error = %d\n", error);
@@ -380,9 +381,10 @@ void video_manager::begin_recording(const char *name, movie_format format)
m_avi_next_frame_time = machine().time();
// build up information about this new movie
+ screen_device *screen = machine().first_screen();
avi_movie_info info;
info.video_format = 0;
- info.video_timescale = 1000 * ((machine().first_screen() != nullptr) ? ATTOSECONDS_TO_HZ(machine().first_screen()->frame_period().attoseconds()) : screen_device::DEFAULT_FRAME_RATE);
+ info.video_timescale = 1000 * ((screen != nullptr) ? ATTOSECONDS_TO_HZ(screen->frame_period().attoseconds()) : screen_device::DEFAULT_FRAME_RATE);
info.video_sampletime = 1000;
info.video_numsamples = 0;
info.video_width = m_snap_bitmap.width();
@@ -448,7 +450,8 @@ void video_manager::begin_recording(const char *name, movie_format format)
if (filerr == FILERR_NONE)
{
// start the capture
- int rate = (machine().first_screen() != nullptr) ? ATTOSECONDS_TO_HZ(machine().first_screen()->frame_period().attoseconds()) : screen_device::DEFAULT_FRAME_RATE;
+ screen_device *screen = machine().first_screen();
+ int rate = (screen != nullptr) ? ATTOSECONDS_TO_HZ(screen->frame_period().attoseconds()) : screen_device::DEFAULT_FRAME_RATE;
png_error pngerr = mng_capture_start(*m_mng_file, m_snap_bitmap, rate);
if (pngerr != PNGERR_NONE)
{
@@ -581,7 +584,7 @@ void video_manager::postload()
// forward
//-------------------------------------------------
-inline int video_manager::effective_autoframeskip() const
+inline bool video_manager::effective_autoframeskip() const
{
// if we're fast forwarding or paused, autoframeskip is disabled
if (m_fastforward || machine().paused())
@@ -1037,13 +1040,14 @@ void video_manager::recompute_speed(const attotime &emutime)
// if we're past the "time-to-execute" requested, signal an exit
if (m_seconds_to_run != 0 && emutime.seconds() >= m_seconds_to_run)
{
- if (machine().first_screen() != nullptr)
+ screen_device *screen = machine().first_screen();
+ if (screen != nullptr)
{
// create a final screenshot
emu_file file(machine().options().snapshot_directory(), OPEN_FLAG_WRITE | OPEN_FLAG_CREATE | OPEN_FLAG_CREATE_PATHS);
file_error filerr = file.open(machine().basename(), PATH_SEPARATOR "final.png");
if (filerr == FILERR_NONE)
- save_snapshot(machine().first_screen(), file);
+ save_snapshot(screen, file);
}
//printf("Scheduled exit at %f\n", emutime.as_double());
// schedule our demise
@@ -1279,8 +1283,9 @@ void video_manager::record_frame()
}
// write the next frame
- const rgb_t *palette = (machine().first_screen() !=nullptr && machine().first_screen()->palette() != nullptr) ? machine().first_screen()->palette()->palette()->entry_list_adjusted() : nullptr;
- int entries = (machine().first_screen() !=nullptr && machine().first_screen()->palette() != nullptr) ? machine().first_screen()->palette()->entries() : 0;
+ screen_device *screen = machine().first_screen();
+ const rgb_t *palette = (screen != nullptr && screen->has_palette()) ? screen->palette().palette()->entry_list_adjusted() : nullptr;
+ int entries = (screen != nullptr && screen->has_palette()) ? screen->palette().entries() : 0;
png_error error = mng_capture_frame(*m_mng_file, &pnginfo, m_snap_bitmap, entries, palette);
png_free(&pnginfo);
if (error != PNGERR_NONE)
diff --git a/src/emu/video.h b/src/emu/video.h
index 4938cf67f34..aef70a57f15 100644
--- a/src/emu/video.h
+++ b/src/emu/video.h
@@ -100,7 +100,7 @@ private:
void postload();
// effective value helpers
- int effective_autoframeskip() const;
+ bool effective_autoframeskip() const;
int effective_frameskip() const;
bool effective_throttle() const;
diff --git a/src/ldplayer/ldplayer.cpp b/src/ldplayer/ldplayer.cpp
index 80f4e7d8259..bbd309dd0b9 100644
--- a/src/ldplayer/ldplayer.cpp
+++ b/src/ldplayer/ldplayer.cpp
@@ -83,9 +83,9 @@ public:
protected:
// device overrides
- virtual void device_timer(emu_timer &timer, device_timer_id id, int param, void *ptr);
- virtual void machine_start();
- virtual void machine_reset();
+ virtual void device_timer(emu_timer &timer, device_timer_id id, int param, void *ptr) override;
+ virtual void machine_start() override;
+ virtual void machine_reset() override;
// internal helpers
chd_file *get_disc();
@@ -150,12 +150,12 @@ public:
protected:
// device overrides
- virtual void device_timer(emu_timer &timer, device_timer_id id, int param, void *ptr);
- virtual void machine_start();
- virtual void machine_reset();
+ virtual void device_timer(emu_timer &timer, device_timer_id id, int param, void *ptr) override;
+ virtual void machine_start() override;
+ virtual void machine_reset() override;
// command execution hook
- virtual void execute_command(int command);
+ virtual void execute_command(int command) override;
// internal helpers
inline void add_command(UINT8 command);
@@ -189,7 +189,7 @@ protected:
required_device<pioneer_ldv1000_device> m_laserdisc;
// command execution hook
- virtual void execute_command(int command);
+ virtual void execute_command(int command) override;
};
@@ -229,7 +229,7 @@ chd_file *ldplayer_state::get_disc()
// try to open the CHD
- if (set_disk_handle(machine(), "laserdisc", fullpath.c_str()) == CHDERR_NONE)
+ if (machine().rom_load().set_disk_handle("laserdisc", fullpath.c_str()) == CHDERR_NONE)
{
m_filename.assign(dir->name);
found = TRUE;
@@ -243,7 +243,7 @@ chd_file *ldplayer_state::get_disc()
if (found == FALSE)
throw emu_fatalerror("No valid image file found!\n");
- return get_disk_handle(machine(), "laserdisc");
+ return machine().rom_load().get_disk_handle("laserdisc");
}
diff --git a/src/lib/util/corealloc.h b/src/lib/util/corealloc.h
index 0eab4b5123e..2c1df6dd46c 100644
--- a/src/lib/util/corealloc.h
+++ b/src/lib/util/corealloc.h
@@ -27,7 +27,9 @@
// global allocation helpers -- use these instead of new and delete
#define global_alloc(_type) new _type
+#define global_alloc_nothrow(_type) new (std::nothrow) _type
#define global_alloc_array(_type, _num) new _type[_num]
+#define global_alloc_array_nothrow(_type, _num) new (std::nothrow) _type[_num]
#define global_free(_ptr) do { delete _ptr; } while (0)
#define global_free_array(_ptr) do { delete[] _ptr; } while (0)
@@ -35,15 +37,15 @@
template<typename _Tp, typename... _Args>
inline _Tp* global_alloc_clear(_Args&&... __args)
-{
+{
unsigned char * ptr = new unsigned char[sizeof(_Tp)]; // allocate memory
memset(ptr, 0, sizeof(_Tp));
- return new(ptr) _Tp(std::forward<_Args>(__args)...);
+ return new(ptr) _Tp(std::forward<_Args>(__args)...);
}
template<typename _Tp>
inline _Tp* global_alloc_array_clear(size_t __num)
-{
+{
auto size = sizeof(_Tp) * __num;
unsigned char* ptr = new unsigned char[size]; // allocate memory
memset(ptr, 0, size);
diff --git a/src/lib/util/options.cpp b/src/lib/util/options.cpp
index d7ab454d063..830721127ac 100644
--- a/src/lib/util/options.cpp
+++ b/src/lib/util/options.cpp
@@ -58,7 +58,8 @@ core_options::entry::entry(const char *name, const char *description, UINT32 fla
m_seqid(0),
m_error_reported(false),
m_priority(OPTION_PRIORITY_DEFAULT),
- m_description(description)
+ m_description(description),
+ m_changed(false)
{
// copy in the name(s) as appropriate
if (name != nullptr)
@@ -615,6 +616,16 @@ bool core_options::exists(const char *name) const
}
//-------------------------------------------------
+// is_changed - return if option have been marked
+// changed
+//-------------------------------------------------
+
+bool core_options::is_changed(const char *name) const
+{
+ auto curentry = m_entrymap.find(name);
+ return (curentry != m_entrymap.end()) ? curentry->second->is_changed() : false;
+}
+//-------------------------------------------------
// set_value - set the raw option value
//-------------------------------------------------
@@ -656,6 +667,16 @@ void core_options::set_flag(const char *name, UINT32 mask, UINT32 flag)
curentry->second->set_flag(mask, flag);
}
+void core_options::mark_changed(const char* name)
+{
+ // find the entry first
+ auto curentry = m_entrymap.find(name);
+ if (curentry == m_entrymap.end())
+ {
+ return;
+ }
+ curentry->second->mark_changed();
+}
//-------------------------------------------------
// reset - reset the options state, removing
diff --git a/src/lib/util/options.h b/src/lib/util/options.h
index 1df89bed6c7..5edf64a9fcd 100644
--- a/src/lib/util/options.h
+++ b/src/lib/util/options.h
@@ -89,12 +89,14 @@ public:
bool is_internal() const { return m_flags & OPTION_FLAG_INTERNAL; }
bool has_range() const { return (!m_minimum.empty() && !m_maximum.empty()); }
int priority() const { return m_priority; }
+ bool is_changed() const { return m_changed; }
// setters
void set_value(const char *newvalue, int priority);
void set_default_value(const char *defvalue);
void set_description(const char *description);
void set_flag(UINT32 mask, UINT32 flag);
+ void mark_changed() { m_changed = true; }
void revert(int priority);
private:
@@ -110,6 +112,7 @@ public:
std::string m_defdata; // default data for this item
std::string m_minimum; // minimum value
std::string m_maximum; // maximum value
+ bool m_changed; // changed flag
};
// construction/destruction
@@ -157,6 +160,7 @@ public:
float float_value(const char *name) const { return atof(value(name)); }
UINT32 seqid(const char *name) const;
bool exists(const char *name) const;
+ bool is_changed(const char *name) const;
// setting
void set_command(const char *command);
@@ -164,6 +168,7 @@ public:
bool set_value(const char *name, int value, int priority, std::string &error_string);
bool set_value(const char *name, float value, int priority, std::string &error_string);
void set_flag(const char *name, UINT32 mask, UINT32 flags);
+ void mark_changed(const char *name);
// misc
static const char *unadorned(int x = 0) { return s_option_unadorned[MIN(x, MAX_UNADORNED_OPTIONS)]; }
diff --git a/src/mame/arcade.lst b/src/mame/arcade.lst
index 834f9673d8e..45f41a0882a 100644
--- a/src/mame/arcade.lst
+++ b/src/mame/arcade.lst
@@ -76,7 +76,9 @@ mspacmanbg // bootleg
mspacmanbgd // bootleg
mspacmanbcc // bootleg
mspacmanblt // bootleg
-clubpacm // Miky
+clubpacm // Miky SRL
+clubpacma // Miky SRL
+clubpacmb // Miky SRL
woodpeck // (c) 1981 Amenip (Palcom Queen River)
woodpeca // (c) 1981 Amenip Nova Games Ltd.
mspacmab // bootleg
@@ -2608,13 +2610,13 @@ optiger // 1998.09 E63 (c) 1998 Taito
taitotz
batlgear // E68 (c) 1999 Taito
pwrshovl // E74 (c) 1999 Taito
-pwrshovla //
+pwrshovla //
landhigh // E82 (c) 1999 Taito
batlgr2 // E87 (c) 2000 Taito (2.04J)
batlgr2a // E87 (c) 2000 Taito (2.01J)
styphp // E98 (c) 2000 Taito
raizpin // F14 (c) 2002 Taito
-raizpinj //
+raizpinj //
invqix // F34 (c) 2003 Taito Corporation
@@ -2715,7 +2717,7 @@ toto //
honeydol // (c) 1995 Barko Corp
twinadv // (c) 1995 Barko Corp
twinadvk // (c) 1995 Barko Corp
-multi96 // (c) 1996 Barko Corp
+multi96 // (c) 1996 Barko Corp
snowbro3 // (c) 2002 Syrmex
ballboy // bootleg
// SemiCom games on "SnowBros"-like hardware
@@ -3144,7 +3146,7 @@ daimakai // 12/1988 (c) 1988 (Japan)
daimakair // 12/1988 (c) 1988 (Japan)
strider // 3/1989 (c) 1989 (not explicitly stated but should be USA)
striderua // 3/1989 (c) 1989 (not explicitly stated but should be USA)
-strideruc // conversion
+strideruc // conversion
striderj // 3/1989 (c) 1989 (Japan)
striderjr // 3/1989 (c) 1989 (Japan)
dynwar // 4/1989 (c) 1989 (USA)
@@ -4192,6 +4194,7 @@ wfortunea // (c) 1989 GameTek
grmatch // (c) 1989 Yankee Game Technology
stratab // (c) 1990 Strata/Incredible Technologies
stratab1 // (c) 1990 Strata/Incredible Technologies
+stratabs // (c) 1990 Strata/Incredible Technologies
sstrike // (c) 1990 Strata/Incredible Technologies
gtg // (c) 1990 Strata/Incredible Technologies
gtgt // (c) 1990 Strata/Incredible Technologies
@@ -4837,7 +4840,7 @@ mwalku // 1990.08 Micheal Jackson's Moonwalker (US, FD1094+8751)
mwalkj // 1990.08 Micheal Jackson's Moonwalker (Japan, FD1094+8751)
mwalk // 1990.?? Micheal Jackson's Moonwalker (World, FD1094+8751)
lghost // 1990.?? Laser Ghost (World, FD1094)
-lghostj // 1990.12 Laser Ghost (Japan)
+lghostj // 1990.12 Laser Ghost (Japan)
lghostu // 1991.01 Laser Ghost (US, FD1094)
cltchitr // 1991.02 Clutch Hitter (US, FD1094)
cltchitrj // 1991.05 Clutch Hitter (Japan, FD1094)
@@ -5140,15 +5143,27 @@ shienryu // 1997.02 Shienryu (Warashi)
vmahjong // 1997.02 Virtual Mahjong (Micronet)
pclub2kc // 1997.02 Print Club Kome Kome Club
pclub2fc // 1997.04 Print Club 2 Felix The Cat
+pclub2pe //
+pclub2wb //
+pclub2pf //
+pclub26w //
+pclub27s //
+pclubyo2 //
groovef // 1997.05 Groove on Fight (Atlus)
nclubv3 // 1997.07 Name Club Ver. 3
+nclubv2 //
+nameclub //
pclb2elk // 1997.07 Print Club Custom
pclub2 // 1997.09 Print Club 2
thunt // 1997.09 Puzzle & Action Treasure Hunt (Sega (Deniam License))
thuntk
winterht // 1997.10 Winter Heat (Data East)
-pclb297w // 1997.10 Print Club 2 '97 Winter Ver
-pclub298 // 1997.10 Print Club 2 '98 Spring Ver
+prc297wi // 1997.10 Print Club 2 '97 Winter Ver
+prc297wia //
+prc298sp // 1997.10 Print Club 2 '98 Spring Ver
+prc298su //
+pclove //
+pclove2 //
cotton2 // 1997.11 Cotton 2 (Success)
hanagumi // 1997.11 Sakura Taisen Hanagumi Taisen Columns
findlove // 1997.12 Find Love (Daiki / FCF)
@@ -5165,7 +5180,7 @@ astrass // 1998.06 Astra Super Stars (Sunsoft)
myfairld // 1998.07 My Fair Lady (Micronet)
othellos // 1998.07 Othello Shiyouyo (Success)
pclubol // 1998.07 Print Club Olive
-pclb298a // 1998.08 Print Club 2 '98 Autumn Ver
+prc298au // 1998.08 Print Club 2 '98 Autumn Ver
cottonbm // 1998.09 Cotton Boomerang (Success)
stress // 1998.10 Stress Busters
elandore // 1998.11 Touryuu Densetsu Elandore (Sai-Mate)
@@ -5373,7 +5388,8 @@ tfrceacj // (c) 1990 Sega / Technosoft
tfrceacb // bootleg
twinsqua // (c) 1991 Sega
soniccar // (c) 1991 Sega
-sonicpop
+wwmarine // (c) 1992 Sega
+sonicpop // (c) 1993 Sega
ribbit // (c) 1991 Sega
tantr // (c) 1992 Sega
tantrkor // (c) 1992 Sega
@@ -5508,9 +5524,9 @@ dybbnao // 1998.12 Dynamite Baseball NAOMI
crzytaxi // 1999.02 Crazy Taxi
pstone // 1999.02 Power Stone
zombrvno // 1999.02 Zombie Revenge
-zombrvn // 1999.03 Zombie Revenge (Rev A)
airlbios // 1999.03 Airline Pilots (BIOS)
alpilota // 1999.03 Airline Pilots (Rev A)
+zombrvn // 1999.03 Zombie Revenge (Rev A)
ggram2 // 1999.04 Giant Gram: All Japan Pro Wrestling 2
// 1999.05 Taisen Puzzle Kurutto Stone
ringout // 1999.06 Ring Out 4x4
@@ -5540,14 +5556,13 @@ alpiltdx // 1999.?? Airline Pilots Deluxe (Rev B)
// 1999.?? Pocket Shooting
sambap // 1999.?? Samba de Amigo (prototype)
spawn // 1999.?? Spawn In the Demon's Hand
- // 1999.?? Tokio Bus Guide
-tokyobus // 1999.?? Tokio Bus Guide (Rev A)
+tokyobus // 1999.?? Tokyo Bus Guide (Rev A)
vtennisg // 1999.?? Virtua Tennis / Power Smash (GD-ROM)
-totdo // 1999.?? The Typing of the Dead
18wheelr // 2000.01 18 Wheeler Deluxe (Rev A)
18wheels // 2000.01 18 Wheeler (Standard)
18wheelu // 2000.01 18 Wheeler (Upright)
doa2m // 2000.01 Dead or Alive 2 Millennium
+totdo // 2000.01 The Typing of the Dead
totd // 2000.01 The Typing of the Dead (Rev A)
tduno2 // 2000.02 Touch de UNO! 2
virnba // 2000.02 Virtua NBA
@@ -5600,9 +5615,9 @@ gundmgd // 2001.03 Mobile Suit Gundam: Federation Vs. Zeon (GD-ROM)
gundmct // 2001.03 Mobile Suit Gundam: Federation Vs. Zeon (cartridge)
shaktmsp // 2001.04.04 Shakatto Tambourine Motto Norinori Shinkyoku Tsuika (2K1 SPR)
dygolf // 2001.04.27 Dynamic Golf / Virtua Golf (Rev A)
+cvsgd // 2001.05 Capcom Vs. SNK Millennium Fight 2000 Pro
monkeyba // 2001.05 Monkey Ball
zerogu2 // 2001.05 Zero Gunner 2
-cvsgd // 2001.06 Capcom Vs. SNK Millennium Fight 2000 Pro
crakndj2 // 2001.06 Crackin' DJ Part 2
hmgeo // 2001.06 Heavy Metal Geomatrix (Rev B)
wsbbgd // 2001.06 Super Major League / World Series Baseball
@@ -5645,11 +5660,11 @@ mtkob2 // 2003.02 MushiKing The King Of Beetle
ggxxrlo // 2003.02 Guilty Gear XX # Reload
ggxxrl // 2003.03 Guilty Gear XX # Reload (Rev A)
// 2003.03 Sega Network Taisen Mahjong MJ
-bdrdown // 2003.04 Border Down (Rev A)
shikgam2 // 2003.04 Shikigami No Shiro II / The Castle of Shikigami II
usagiym // 2003.06 Usagi Yamashiro Mahjong Hen
// 2003.07 Sega Network Taisen Mahjong MJ (Rev A)
oinori // 2003.08 Oinori-daimyoujin Matsuri
+bdrdown // 2003.09 Border Down (Rev A)
psyvar2 // 2003.11 Psyvariar 2 - The Will To Fabricate
puyofev // 2003.11 Puyo Puyo Fever
starhrsp // 2003.12.01 Star Horse Progress (satellite) (Rev A)
@@ -5659,7 +5674,7 @@ shootpl // 2003.?? Shootout Pool The Medal / Shootout Pool Prize (Rev A)
cfield // 2004.06 Chaos Field
tetkiwam // 2004.06 Tetris Kiwamemichi (Arcade TV Game List - P.88, Right, 11 from bottom)
trizeal // 2004.09 Trizeal
- // 2004.?? Dragon Treasure 2
+dragntr2 // 2004.?? Dragon Treasure 2 (Rev A)
kick4csh // 2004.?? Kick '4' Cash
shootplm // 2004.?? Shootout Pool The Medal Ver. B / Shootout Pool Prize Ver. B
// 2004.?? The Quiz Show
@@ -5672,8 +5687,8 @@ meltybld // 2005.08 Melty Blood Act Cadenza Ver. A (Rev C)
ggxxsla // 2005.09 Guilty Gear XX Slash (Rev A)
radirgyo // 2005.10 Radirgy
undefeat // 2005.10 Under Defeat
+dragntr3 // 2005.11 Dragon Treasure 3 (Rev A)
radirgy // 2005.12.04 Radirgy (Rev A)
- // 2005.?? Dragon Treasure 3 (Rev A)
// 2005.?? ExZeus
mushi2eo // 2005.?? Mushiking The King Of Beetles II ENG (Ver. 1.001)
mushik2e // 2005.?? Mushiking The King Of Beetles II ENG (Ver. 2.001)
@@ -5700,7 +5715,7 @@ pokasuka // 2007.07 Pokasuka Ghost!
sl2007 // 2007.07 Shooting Love
asndynmt // 2007.07 Dynamite Deka EX - Asian dynamite
rhytngk // 2007.09 Rhythm Tengoku
-ausfache // 2008.02 Akatsuki Denkou Senki Ausf.Achse
+ausfache // 2008.02.20 Akatsuki Blitzkampf Ausf. Achse
illvelo // 2008.06 Illvelo (Illmatic Envelope)
mamonoro // 2008.07 Mamoru-kun wa Norowarete Shimatta!
mbaao // 2008.09 Melty Blood Actress Again
@@ -5816,7 +5831,8 @@ fotns // 2005.12 Hokuto no Ken
mslug6 // 2006.02 Metal Slug 6
xtrmhnt2 // 2006.09 Extreme Hunting 2 Tournament Edition
claychal // 2008.11 Sega Clay Challenge
-basschal // 2009.02 Sega Bass Challenge
+basschalo // 2009.02 Sega Bass Challenge
+basschal // 2009.07 Sega Bass Challenge Version A
// Hikaru
hikaru // 2000.?? Hikaru BIOS
@@ -5941,7 +5957,7 @@ scg06nt // 2005.12 Sega Golf Club 2006: Next Tours (Rev A)
// 2006.11 Quest of D Oukoku no Syugosya Ver.3.01
// 2006.11 Mobile Suit Gundam 0079 Card Builder Ver.2.02
// 2007.03 Mobile Suit Gundam 0083 Card Builder
-mj3evo // 2007.06 Sega Network Taisen Mahjong MJ 3 Evolution (Rev B)
+mj3evo // 2007.06 Sega Network Taisen Mahjong MJ 3 Evolution (Rev B)
// 2007.10 Mobile Suit Gundam 0083 Card Builder Ryouyuu Gekitotsu
// 2007.11 Quest of D The Battle Kingdom Ver.4.00
// 2008.01 Quest of D The Battle Kingdom Ver.4.00b
@@ -6196,6 +6212,7 @@ ffantasybl // bootleg
secretag // (c) 1989 Data East Corporation (World)
secretagj // (c) 1989 Data East Corporation (Japan)
slyspy // (c) 1989 Data East USA (US)
+slyspy3 // (c) 1989 Data East USA (US)
slyspy2 // (c) 1989 Data East USA (US)
secretab // bootleg
midres // (c) 1989 Data East Corporation (World)
@@ -6350,6 +6367,7 @@ charlien // MBR (c) 1994 Mitchell
// MBV ??
// MBW ??
wcvol95 // MBX (c) 1993 Data East
+wcvol95x // ?
// MBY ??
backfire // MBZ (c) 1995
backfirea // MBZ (c) 1995
@@ -7676,13 +7694,14 @@ tnk3j // A5001 (c) 1985
athena // 'UP' (c) 1986
fitegolf // 'GU' (c) 1988
fitegolfu // 'GU' (c) 1988
+fitegolf2 //
countryc // A7004 'CC' (c) 1988
ikari // A5004 'IW' (c) 1986
ikaria // A5004 'IW' (c) 1986
ikarinc // A5004 'IW' (c) 1986
ikarijp // A5004 'IW' (c) 1986 (Japan)
ikarijpb // bootleg
-ikariram // bootleg
+ikariram // bootleg
victroad // A6002 (c) 1986
dogosoke // A6002 (c) 1986
dogosokb // bootleg
@@ -8238,7 +8257,7 @@ jackrabts // (c) 1984
mouser // UPL-83001 (c) 1983
mouserc // UPL-83001 (c) 1983
nova2001 // UPL-83005 (c) 1983
-nova2001h // hack?
+nova2001h // hack?
nova2001u // UPL-83005 (c) [1983] + Universal license
ninjakun // UPL-84003 (c) 1984 Taito Corporation
raiders5 // UPL-85004 (c) 1985
@@ -8406,6 +8425,7 @@ mk2chal // hack
jdreddp // (c) 1993 Midway
nbajam // (c) 1993 Midway
nbajamr2 // (c) 1993 Midway
+nbajamr1 // (c) 1993 Midway
nbajamte // (c) 1994 Midway
nbajamte1 // (c) 1994 Midway
nbajamte2 // (c) 1994 Midway
@@ -8790,6 +8810,7 @@ rdft2a // (c) 1997 Seibu Kaihatsu (Metrotainment license)
rdft2aa // (c) 1997 Seibu Kaihatsu (Dream Island license)
rdft2j // (c) 1997 Seibu Kaihatsu
rdft2ja // (c) 1997 Seibu Kaihatsu
+rdft2it // (c) 1997 Seibu Kaihatsu
rdft2t // (c) 1997 Seibu Kaihatsu
rdft2u // (c) 1997 Seibu Kaihatsu (Fabtek license)
rdft2us // (c) 1997 Seibu Kaihatsu (Fabtek license)
@@ -8832,6 +8853,7 @@ weststry // bootleg
skysmash // (c) 1990 Nihon System Inc.
legionna // (c) 1992 Tad (World)
legionnau // (c) 1992 Tad + Fabtek license (US)
+legionnaj // (c) 1992 Tad (Japan)
heatbrl // (c) 1992 Tad (World version 3)
heatbrl2 // (c) 1992 Tad (World version 2)
heatbrlo // (c) 1992 Tad (World)
@@ -8937,6 +8959,7 @@ edfu // (c) 1991 (North America)
edfbl // (c) 1991
64street // (c) 1991
64streetj // (c) 1991 (Japan)
+64streetja // (c) 1991 (Japan)
soldam // (c) 1992
soldamj // (c) 1992 (Japan)
bigstrik // (c) 1992
@@ -9155,7 +9178,8 @@ thoop // (c) 1992 - Ref 922804/1
squash // (c) 1992 - Ref 922804/2
wrally // (c) 1993 - Ref 930705
wrallya // (c) 1993 - Ref 930705
-wrallyb // (c) 1993 - Ref 930217
+wrallyb // (c) 1993 - Ref 930217
+wrallyat // (c) 1993 - Ref 930217
glass // (c) 1993 - Ref 931021
glass10 // (c) 1993 - Ref 931021
glass10a // (c) 1993 - Ref 931021 shows "Break Edition" on a real PCB
@@ -9172,7 +9196,8 @@ touchgon // (c) 1995 - Ref 950906
touchgoe // (c) 1995 - Ref 950510-1
wrally2 // (c) 1995 - Ref 950510
maniacsp // (c) 1996 - Ref 922804/2 - (prototype)
-maniacsq // (c) 1996 - Ref ??? - (unprotected)
+maniacsq // (c) 1996 - Ref 940411 - (unprotected)
+maniacsqa // (c) 1996 - Ref 940411
snowboar // (c) 1996 - Ref 960419/1
snowboara // (c) 1996 - Ref 960419/1
bang // (c) 1998 - Ref ???
@@ -9263,6 +9288,8 @@ oedfight // (c) 1994 Kaneko
bonkadv // (c) 1994 Kaneko
gtmr // (c) 1994 Kaneko
gtmra // (c) 1994 Kaneko
+gtmrb // (c) 1994 Kaneko
+gtmro // (c) 1994 Kaneko
gtmre // (c) 1994 Kaneko
gtmrusa // (c) 1994 Kaneko (US)
gtmr2 // (c) 1995 Kaneko
@@ -9574,6 +9601,7 @@ go2000 // (c) 2000 SA
gundealr // (c) 1990 Dooyong
gundealra // (c) 1990 Dooyong
gundealrt // (c) 1990 Tecmo
+gundealrbl // bootleg
yamyam // (c) 1990 Dooyong
yamyamk // (c) 1990 Dooyong
wiseguy // (c) 1990 Dooyong
@@ -9696,6 +9724,7 @@ trckydoca // (c) 1987
// Metro games
karatour // (c) 1992 Mitchell
+karatourj // (c) 1992 Mitchell
ladykill // (c) 1993 Yanyaka + Mitchell license - (Arcade TV Game List - P.101, Right, 2 from Bottom)
moegonta // (c) 1993 Yanyaka (Japan) (Arcade TV Game List - P.101, Right, 2 from Bottom)
pangpoms // (c) 1992
@@ -9842,8 +9871,9 @@ spec2kh // (c) 2000 Yonatech
// ESD games
// http://www.esdgame.co.kr/english/
-multchmp // (c) 1998 (World)
+multchmp // (c) 1999 (World)
multchmpk // (c) 1998 (Korea)
+multchmpa // (c) 1998 (World)
mchampdx // (c) 1999 ESD
mchampdxa // (c) 1999 ESD
mchampdxb // (c) 1999 ESD
@@ -10849,6 +10879,7 @@ strvmstr // (c) 1986 Enerdyne Technologies Inc
dorachan // (c) 1980 Craul Denshi
ladyfrog // (c) 1990 Mondial Games
toucheme
+touchemea
rabbit // (c) 1997 Electronic Arts
tmmjprd // (c) 1997 Media / Sonnet
tmpdoki // (c) 1998 Media Syouji
@@ -10891,6 +10922,7 @@ stuntair // (c) 1983 Nuova Videotron
// Success
tonton // (c) 199? Success / Taiyo Jidoki.
kurukuru // (c) 199? Success / Taiyo Jidoki.
+ppj // (c) 199? Success / Taiyo Jidoki.
othello // (c) 1984 Success.
sothello // (c) 1986 Success / Fujiwara.
kothello // (c) 1990 Success.
@@ -10947,7 +10979,8 @@ phrcrazea // (c) 1986 Merit
phrcrazeb // (c) 1986 Merit
phrcrazec // (c) 1986 Merit
phrcrazev // (c) 1986 Merit
-bigappg // (c) 1986 Merit
+bigappg // (c) 1986 Merit / Big Apple Games
+misdraw // (c) 1986 Merit / Big Apple Games
riviera // (c) 1987 Merit
rivieraa // (c) 1986 Merit
rivierab // (c) 1986 Merit
@@ -11202,6 +11235,7 @@ sgsafari // (c) 1996 New Impeuropex Corp.
musicsrt // (c) 1995 ABM Games
galaxi // (c) 2000 BRL S.R.L. Bologna
magjoker // (c) 2000 BRL S.R.L. Bologna
+lastfour // (c) 2001 BRL S.R.L. Bologna
dwarfd // (c) 198? Electro-Sports
dwarfda // (c) 198? Electro-Sports
quarterh // (c) 1983 Electro-Sports
@@ -11942,6 +11976,7 @@ pexmp030 // (c) 1997 IGT - International Game Technology
pexmp030a // (c) 1997 IGT - International Game Technology
// IGT Game King
+ms72c
gkigt4
gkigt4ms
gkigt43
@@ -12034,6 +12069,7 @@ tvgunhed // (c) 1989 Hudson / Toho Sunrise (Tourvision bootleg)
tvmrheli // (c) 1989 IREM Corp (Tourvision bootleg)
tvusapb // (c) 1989 Aicom (Tourvision bootleg)
tvvolfd // (c) 1989 Taito (Tourvision bootleg)
+tvdormon // (c) 1989 Hudson / Fujiko-Shogakukan-TV Asahi (Tourvision bootleg)
tvdunexp // (c) 1989 Hudson / Atlus (Tourvision bootleg)
tvwnshot // (c) 1989 Data East Corp. (Tourvision bootleg)
tvablast // (c) 1990 Hudson / Kaneko (Tourvision bootleg)
@@ -12179,6 +12215,7 @@ cfever1k // (c) 2000 High Video
girotutt // (c) 2000 High Video
nyjoker //
grancapi // (c) 2000 High Video
+galeone
magicbom // (c) 2000 High Video
// Sure games
@@ -13446,7 +13483,7 @@ tmspoker
kas89 // 1989, SFC S.R.L.
caspoker // 1987, PM / Beck Elektronik.
wildpkr // 199?, TAB Austria.
-tabpkr // 199?, TAB Austira
+tabpkr // 199?, TAB Austira
subhuntr // 1979 Model Racing
manohman // 199?, Merkur.
@@ -13523,6 +13560,7 @@ take5 // (c) 1975 Fun Games
bazooka // (c) 1976 PSE
bazookabr // (c) 1977 Taito do Brasil
dpatrol // (c) 1977 PSE
+dpatrola // (c) 1977 PSE / Telegames
//gametree // (c) 1978 PSE
vollyrmt // (c) 1973 Ramtek
hockyrmt // (c) 1973 Ramtek
@@ -32667,3 +32705,5 @@ clowndwn // Elwood Clown Roll Down
fi6845
fi8275
+l9nibble // unknown Nibble game.
+ \ No newline at end of file
diff --git a/src/mame/audio/carnival.cpp b/src/mame/audio/carnival.cpp
index 2dd3cc3acb0..0fde41c2967 100644
--- a/src/mame/audio/carnival.cpp
+++ b/src/mame/audio/carnival.cpp
@@ -1,79 +1,28 @@
-// license:???
-// copyright-holders:Peter J.C.Clare
-/*****************************************************************************/
-/* */
-/* (C) Copyright Peter J.C.Clare */
-/* */
-/*****************************************************************************/
-/* */
-/* */
-/* Module name: carnival.c */
-/* */
-/* Creation date: 15/03/98 Revision date: 09/01/99 */
-/* */
-/* Produced by: Peter J.C.Clare */
-/* */
-/* */
-/* Abstract: */
-/* */
-/* MAME sound & music driver for Sega/Gremlin Carnival. */
-/* */
-/*****************************************************************************/
-/* */
-/* Acknowledgements: */
-/* */
-/* Mike Coates, for the original Carnival MAME sound driver. */
-/* Virtu-Al, for the sound samples & hardware information. */
-/* The MAME Team, for the emulator framework. */
-/* */
-/*****************************************************************************/
-/* */
-/* Revision history */
-/* ================ */
-/* */
-/* Date Vsn. Initials Description */
-/* ~~~~ ~~~~ ~~~~~~~~ ~~~~~~~~~~~ */
-/* 03/20/2007 1.1 ZV Moved structures from driver to make */
-/* file more self contained. */
-/* */
-/*****************************************************************************/
+// license:BSD-3-Clause
+// copyright-holders:Zsolt Vasvari, hap
+/*
+ * Carnival audio routines
+ */
#include "emu.h"
#include "includes/vicdual.h"
-#define PSG_CLOCK (3579545 / 3) /* Hz */
-
-
/* output port 0x01 definitions - sound effect drive outputs */
-#define OUT_PORT_1_RIFLE_SHOT 0x01
+#define OUT_PORT_1_RIFLE 0x01
#define OUT_PORT_1_CLANG 0x02
-#define OUT_PORT_1_DUCK_1 0x04
-#define OUT_PORT_1_DUCK_2 0x08
-#define OUT_PORT_1_DUCK_3 0x10
-#define OUT_PORT_1_PIPE_HIT 0x20
-#define OUT_PORT_1_BONUS_1 0x40
-#define OUT_PORT_1_BONUS_2 0x80
-
+#define OUT_PORT_1_DUCK1 0x04
+#define OUT_PORT_1_DUCK2 0x08
+#define OUT_PORT_1_DUCK3 0x10
+#define OUT_PORT_1_PIPEHIT 0x20
+#define OUT_PORT_1_BONUS1 0x40
+#define OUT_PORT_1_BONUS2 0x80
/* output port 0x02 definitions - sound effect drive outputs */
#define OUT_PORT_2_BEAR 0x04
-#define OUT_PORT_2_MUSIC_T1 0x08
-#define OUT_PORT_2_MUSIC_RESET 0x10
#define OUT_PORT_2_RANKING 0x20
-/* music CPU port definitions */
-#define MUSIC_PORT2_PSG_BDIR 0x40 /* bit 6 on P2 */
-#define MUSIC_PORT2_PSG_BC1 0x80 /* bit 7 on P2 */
-
-
-#define PSG_BC_INACTIVE 0
-#define PSG_BC_READ MUSIC_PORT2_PSG_BC1
-#define PSG_BC_WRITE MUSIC_PORT2_PSG_BDIR
-#define PSG_BC_LATCH_ADDRESS ( MUSIC_PORT2_PSG_BDIR | MUSIC_PORT2_PSG_BC1 )
-
-
#define PLAY(samp,id,loop) samp->start( id, id, loop )
#define STOP(samp,id) samp->stop( id )
@@ -95,49 +44,38 @@ static const char *const carnival_sample_names[] =
nullptr
};
+
/* sample IDs - must match sample file name table above */
enum
{
SND_BEAR = 0,
- SND_BONUS_1,
- SND_BONUS_2,
+ SND_BONUS1,
+ SND_BONUS2,
SND_CLANG,
- SND_DUCK_1,
- SND_DUCK_2,
- SND_DUCK_3,
- SND_PIPE_HIT,
+ SND_DUCK1,
+ SND_DUCK2,
+ SND_DUCK3,
+ SND_PIPEHIT,
SND_RANKING,
- SND_RIFLE_SHOT
+ SND_RIFLE
};
+
WRITE8_MEMBER( vicdual_state::carnival_audio_1_w )
{
- static int port1State = 0;
int bitsChanged;
int bitsGoneHigh;
int bitsGoneLow;
-
- /* U64 74LS374 8 bit latch */
-
- /* bit 0: connector pin 36 - rifle shot */
- /* bit 1: connector pin 35 - clang */
- /* bit 2: connector pin 33 - duck #1 */
- /* bit 3: connector pin 34 - duck #2 */
- /* bit 4: connector pin 32 - duck #3 */
- /* bit 5: connector pin 31 - pipe hit */
- /* bit 6: connector pin 30 - bonus #1 */
- /* bit 7: connector pin 29 - bonus #2 */
-
- bitsChanged = port1State ^ data;
+ bitsChanged = m_port1State ^ data;
bitsGoneHigh = bitsChanged & data;
bitsGoneLow = bitsChanged & ~data;
- port1State = data;
+ m_port1State = data;
- if ( bitsGoneLow & OUT_PORT_1_RIFLE_SHOT )
+ if ( bitsGoneLow & OUT_PORT_1_RIFLE )
{
- PLAY( m_samples, SND_RIFLE_SHOT, 0 );
+ PLAY( m_samples, SND_RIFLE, 0 );
}
if ( bitsGoneLow & OUT_PORT_1_CLANG )
@@ -145,46 +83,46 @@ WRITE8_MEMBER( vicdual_state::carnival_audio_1_w )
PLAY( m_samples, SND_CLANG, 0 );
}
- if ( bitsGoneLow & OUT_PORT_1_DUCK_1 )
+ if ( bitsGoneLow & OUT_PORT_1_DUCK1 )
{
- PLAY( m_samples, SND_DUCK_1, 1 );
+ PLAY( m_samples, SND_DUCK1, 1 );
}
- if ( bitsGoneHigh & OUT_PORT_1_DUCK_1 )
+ if ( bitsGoneHigh & OUT_PORT_1_DUCK1 )
{
- STOP( m_samples, SND_DUCK_1 );
+ STOP( m_samples, SND_DUCK1 );
}
- if ( bitsGoneLow & OUT_PORT_1_DUCK_2 )
+ if ( bitsGoneLow & OUT_PORT_1_DUCK2 )
{
- PLAY( m_samples, SND_DUCK_2, 1 );
+ PLAY( m_samples, SND_DUCK2, 1 );
}
- if ( bitsGoneHigh & OUT_PORT_1_DUCK_2 )
+ if ( bitsGoneHigh & OUT_PORT_1_DUCK2 )
{
- STOP( m_samples, SND_DUCK_2 );
+ STOP( m_samples, SND_DUCK2 );
}
- if ( bitsGoneLow & OUT_PORT_1_DUCK_3 )
+ if ( bitsGoneLow & OUT_PORT_1_DUCK3 )
{
- PLAY( m_samples, SND_DUCK_3, 1 );
+ PLAY( m_samples, SND_DUCK3, 1 );
}
- if ( bitsGoneHigh & OUT_PORT_1_DUCK_3 )
+ if ( bitsGoneHigh & OUT_PORT_1_DUCK3 )
{
- STOP( m_samples, SND_DUCK_3 );
+ STOP( m_samples, SND_DUCK3 );
}
- if ( bitsGoneLow & OUT_PORT_1_PIPE_HIT )
+ if ( bitsGoneLow & OUT_PORT_1_PIPEHIT )
{
- PLAY( m_samples, SND_PIPE_HIT, 0 );
+ PLAY( m_samples, SND_PIPEHIT, 0 );
}
- if ( bitsGoneLow & OUT_PORT_1_BONUS_1 )
+ if ( bitsGoneLow & OUT_PORT_1_BONUS1 )
{
- PLAY( m_samples, SND_BONUS_1, 0 );
+ PLAY( m_samples, SND_BONUS1, 0 );
}
- if ( bitsGoneLow & OUT_PORT_1_BONUS_2 )
+ if ( bitsGoneLow & OUT_PORT_1_BONUS2 )
{
- PLAY( m_samples, SND_BONUS_2, 0 );
+ PLAY( m_samples, SND_BONUS2, 0 );
}
}
@@ -192,106 +130,91 @@ WRITE8_MEMBER( vicdual_state::carnival_audio_1_w )
WRITE8_MEMBER( vicdual_state::carnival_audio_2_w )
{
int bitsChanged;
- int bitsGoneHigh;
+ //int bitsGoneHigh;
int bitsGoneLow;
- /* U63 74LS374 8 bit latch */
-
- /* bit 0: connector pin 48 */
- /* bit 1: connector pin 47 */
- /* bit 2: connector pin 45 - bear */
- /* bit 3: connector pin 46 - Music !T1 input */
- /* bit 4: connector pin 44 - Music reset */
- /* bit 5: connector pin 43 - ranking */
- /* bit 6: connector pin 42 */
- /* bit 7: connector pin 41 */
-
bitsChanged = m_port2State ^ data;
- bitsGoneHigh = bitsChanged & data;
+ //bitsGoneHigh = bitsChanged & data;
bitsGoneLow = bitsChanged & ~data;
m_port2State = data;
if ( bitsGoneLow & OUT_PORT_2_BEAR )
+ {
PLAY( m_samples, SND_BEAR, 0 );
+ }
if ( bitsGoneLow & OUT_PORT_2_RANKING )
+ {
PLAY( m_samples, SND_RANKING, 0 );
+ }
- if ( bitsGoneHigh & OUT_PORT_2_MUSIC_RESET )
- /* reset output is no longer asserted active low */
- m_audiocpu->set_input_line(INPUT_LINE_RESET, PULSE_LINE );
+ // d4: music board MCU reset
+ m_audiocpu->set_input_line(INPUT_LINE_RESET, (data & 0x10) ? CLEAR_LINE : ASSERT_LINE);
}
-READ8_MEMBER( vicdual_state::carnival_music_port_t1_r )
+/* Music board */
+
+void vicdual_state::carnival_psg_latch(address_space &space)
{
- /* note: 8039 T1 signal is inverted on music board */
- return ( m_port2State & OUT_PORT_2_MUSIC_T1 ) ? 0 : 1;
+ if (m_psgBus & 1)
+ {
+ // BDIR W, BC1 selects address or data
+ if (m_psgBus & 2)
+ m_psg->address_w(space, 0, m_psgData);
+ else
+ m_psg->data_w(space, 0, m_psgData);
+ }
}
-
WRITE8_MEMBER( vicdual_state::carnival_music_port_1_w )
{
+ // P1: ay8912 d0-d7
m_psgData = data;
+ carnival_psg_latch(space);
}
-
WRITE8_MEMBER( vicdual_state::carnival_music_port_2_w )
{
- static int psgSelect = 0;
- int newSelect;
-
- newSelect = data & ( MUSIC_PORT2_PSG_BDIR | MUSIC_PORT2_PSG_BC1 );
- if ( psgSelect != newSelect )
- {
- psgSelect = newSelect;
-
- switch ( psgSelect )
- {
- case PSG_BC_INACTIVE:
- /* do nowt */
- break;
-
- case PSG_BC_READ:
- /* not very sensible for a write */
- break;
+ // P2 d6: AY8912 BDIR(R/W)
+ // P2 d7: AY8912 BC1
+ m_psgBus = data >> 6 & 3;
+ carnival_psg_latch(space);
+}
- case PSG_BC_WRITE:
- m_psg->data_w(space, 0, m_psgData);
- break;
- case PSG_BC_LATCH_ADDRESS:
- m_psg->address_w(space, 0, m_psgData);
- break;
- }
- }
+READ8_MEMBER( vicdual_state::carnival_music_port_t1_r )
+{
+ // T1: comms from audio port 2 d3
+ return ~m_port2State >> 3 & 1;
}
-static ADDRESS_MAP_START( carnival_audio_map, AS_PROGRAM, 8, vicdual_state )
- AM_RANGE(0x0000, 0x07ff) AM_ROM
+static ADDRESS_MAP_START( mboard_map, AS_PROGRAM, 8, vicdual_state )
+ AM_RANGE(0x0000, 0x03ff) AM_ROM
ADDRESS_MAP_END
-static ADDRESS_MAP_START( carnival_audio_io_map, AS_IO, 8, vicdual_state )
- AM_RANGE(MCS48_PORT_T1, MCS48_PORT_T1) AM_READ(carnival_music_port_t1_r)
+static ADDRESS_MAP_START( mboard_io_map, AS_IO, 8, vicdual_state )
AM_RANGE(MCS48_PORT_P1, MCS48_PORT_P1) AM_WRITE(carnival_music_port_1_w)
AM_RANGE(MCS48_PORT_P2, MCS48_PORT_P2) AM_WRITE(carnival_music_port_2_w)
+ AM_RANGE(MCS48_PORT_T1, MCS48_PORT_T1) AM_READ(carnival_music_port_t1_r)
ADDRESS_MAP_END
MACHINE_CONFIG_FRAGMENT( carnival_audio )
- MCFG_CPU_ADD("audiocpu", I8039, 3579545)
- MCFG_CPU_PROGRAM_MAP(carnival_audio_map)
- MCFG_CPU_IO_MAP(carnival_audio_io_map)
- MCFG_QUANTUM_TIME(attotime::from_hz(600))
+ /* music board */
+ MCFG_CPU_ADD("audiocpu", I8039, XTAL_3_579545MHz)
+ MCFG_CPU_PROGRAM_MAP(mboard_map)
+ MCFG_CPU_IO_MAP(mboard_io_map)
- MCFG_SOUND_ADD("psg", AY8910, PSG_CLOCK)
- MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.10)
+ MCFG_SOUND_ADD("psg", AY8912, XTAL_3_579545MHz/3)
+ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.25)
+ /* samples */
MCFG_SOUND_ADD("samples", SAMPLES, 0)
MCFG_SAMPLES_CHANNELS(10)
MCFG_SAMPLES_NAMES(carnival_sample_names)
- MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.25)
+ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.5)
MACHINE_CONFIG_END
diff --git a/src/mame/audio/cclimber.cpp b/src/mame/audio/cclimber.cpp
index 23ed02302b7..9f6e2e76755 100644
--- a/src/mame/audio/cclimber.cpp
+++ b/src/mame/audio/cclimber.cpp
@@ -12,9 +12,11 @@
SAMPLES_START_CB_MEMBER( cclimber_audio_device::sh_start )
{
- if (machine().root_device().memregion("samples")->base())
- m_sample_buf = std::make_unique<INT16[]>(2 * machine().root_device().memregion("samples")->bytes());
- save_pointer(NAME(m_sample_buf.get()), 2 * machine().root_device().memregion("samples")->bytes());
+ if (m_samples_region)
+ {
+ m_sample_buf = std::make_unique<INT16[]>(2 * m_samples_region.bytes());
+ save_pointer(NAME(m_sample_buf.get()), 2 * m_samples_region.bytes());
+ }
}
MACHINE_CONFIG_FRAGMENT( cclimber_audio )
@@ -49,7 +51,8 @@ cclimber_audio_device::cclimber_audio_device(const machine_config &mconfig, cons
m_sample_num(0),
m_sample_freq(0),
m_sample_volume(0),
- m_samples(*this, "samples")
+ m_samples(*this, "samples"),
+ m_samples_region(*this, "^samples")
{
}
@@ -102,21 +105,23 @@ WRITE8_MEMBER( cclimber_audio_device::sample_trigger_w )
void cclimber_audio_device::play_sample(int start,int freq,int volume)
{
int len;
- int romlen = machine().root_device().memregion("samples")->bytes();
- const UINT8 *rom = machine().root_device().memregion("samples")->base();
+ int romlen = m_samples_region.bytes();
- if (!rom) return;
+ if (m_samples_region == NULL)
+ {
+ return;
+ }
/* decode the rom samples */
len = 0;
- while (start + len < romlen && rom[start+len] != 0x70)
+ while (start + len < romlen && m_samples_region[start+len] != 0x70)
{
int sample;
- sample = (rom[start + len] & 0xf0) >> 4;
+ sample = (m_samples_region[start + len] & 0xf0) >> 4;
m_sample_buf[2*len] = SAMPLE_CONV4(sample) * volume / 31;
- sample = rom[start + len] & 0x0f;
+ sample = m_samples_region[start + len] & 0x0f;
m_sample_buf[2*len + 1] = SAMPLE_CONV4(sample) * volume / 31;
len++;
diff --git a/src/mame/audio/cclimber.h b/src/mame/audio/cclimber.h
index 6007aa0a831..65f1255e3d1 100644
--- a/src/mame/audio/cclimber.h
+++ b/src/mame/audio/cclimber.h
@@ -56,7 +56,8 @@ private:
int m_sample_num;
int m_sample_freq;
int m_sample_volume;
- required_device<samples_device> m_samples;
+ optional_device<samples_device> m_samples;
+ optional_region_ptr<UINT8> m_samples_region;
};
diff --git a/src/mame/audio/dcs.cpp b/src/mame/audio/dcs.cpp
index cad34e38130..f887d59011d 100644
--- a/src/mame/audio/dcs.cpp
+++ b/src/mame/audio/dcs.cpp
@@ -594,31 +594,32 @@ MACHINE_CONFIG_END
void dcs_audio_device::dcs_boot()
{
- UINT8 buffer[0x1000];
-// UINT32 max_banks;
- UINT16 *base;
- int i;
-
switch (m_rev)
{
/* rev 1/1.5: use the last set data bank to boot from */
case 1:
case 15:
-
+ {
/* determine the base */
-// max_banks = m_bootrom_words / 0x1000;
- base = m_bootrom + ((m_sounddata_bank * 0x1000) % m_bootrom_words);
+ // max_banks = m_bootrom_words / 0x1000;
+ UINT16* base = m_bootrom + ((m_sounddata_bank * 0x1000) % m_bootrom_words);
/* convert from 16-bit data to 8-bit data and boot */
- for (i = 0; i < 0x1000; i++)
+ UINT8 buffer[0x1000];
+ for (int i = 0; i < 0x1000; i++)
+ {
buffer[i] = base[i];
+ }
+ assert(m_internal_program_ram != NULL);
m_cpu->load_boot_data(buffer, m_internal_program_ram);
break;
+ }
/* rev 2: use the ROM page in the SDRC to boot from */
case 2:
-
+ {
/* determine the base */
+ UINT16* base;
if (m_bootrom == m_sounddata)
{
/* EPROM case: page is selected from the page register */
@@ -631,10 +632,15 @@ void dcs_audio_device::dcs_boot()
}
/* convert from 16-bit data to 8-bit data and boot */
- for (i = 0; i < 0x1000; i++)
+ UINT8 buffer[0x1000];
+ for (int i = 0; i < 0x1000; i++)
+ {
buffer[i] = base[i];
+ }
+ assert(m_internal_program_ram != NULL);
m_cpu->load_boot_data(buffer, m_internal_program_ram);
break;
+ }
/* rev 3/4: HALT the ADSP-2181 until program is downloaded via IDMA */
case 3:
@@ -665,7 +671,7 @@ TIMER_CALLBACK_MEMBER( dcs_audio_device::dcs_reset )
case 1:
case 15:
m_sounddata_bank = 0;
- membank("databank")->set_entry(0);
+ m_data_bank->set_entry(0);
break;
/* rev 2: reset the SDRC ASIC */
@@ -807,6 +813,9 @@ dcs_audio_device::dcs_audio_device(const machine_config &mconfig, device_type ty
m_sounddata_words(0),
m_sounddata_banks(0),
m_sounddata_bank(0),
+ m_data_bank(*this, "databank"),
+ m_rom_page(NULL),
+ m_dram_page(NULL),
m_auto_ack(0),
m_latch_control(0),
m_input_data(0),
@@ -845,8 +854,16 @@ void dcs_audio_device::device_start()
{
m_sram = nullptr;
- m_internal_program_ram = (UINT32 *)memshare("dcsint")->ptr();
- m_external_program_ram = (UINT32 *)memshare("dcsext")->ptr();
+ memory_share *internal_ram = memshare("dcsint");
+ if (internal_ram != NULL)
+ {
+ m_internal_program_ram = (UINT32 *)internal_ram->ptr();
+ }
+ memory_share *external_ram = memshare("dcsext");
+ if (external_ram != NULL)
+ {
+ m_external_program_ram = (UINT32 *)external_ram->ptr();
+ }
/* find the DCS CPU and the sound ROMs */
m_cpu = subdevice<adsp21xx_device>("dcs");
@@ -866,12 +883,12 @@ void dcs_audio_device::device_start()
if (m_rev == 1)
{
m_sounddata_banks = m_sounddata_words / 0x1000;
- membank("databank")->configure_entries(0, m_sounddata_banks, m_sounddata, 0x1000*2);
+ m_data_bank->configure_entries(0, m_sounddata_banks, m_sounddata, 0x1000*2);
}
else
{
m_sounddata_banks = m_sounddata_words / 0x800;
- membank("databank")->configure_entries(0, m_sounddata_banks, m_sounddata, 0x800*2);
+ m_data_bank->configure_entries(0, m_sounddata_banks, m_sounddata, 0x800*2);
}
/* create the timers */
@@ -891,8 +908,16 @@ void dcs2_audio_device::device_start()
{
int soundbank_words;
- m_internal_program_ram = (UINT32 *)memshare("dcsint")->ptr();
- m_external_program_ram = (UINT32 *)memshare("dcsext")->ptr();
+ memory_share *internal_ram = memshare("dcsint");
+ if (internal_ram != NULL)
+ {
+ m_internal_program_ram = (UINT32 *)internal_ram->ptr();
+ }
+ memory_share *external_ram = memshare("dcsext");
+ if (external_ram != NULL)
+ {
+ m_external_program_ram = (UINT32 *)external_ram->ptr();
+ }
/* find the DCS CPU and the sound ROMs */
m_cpu = subdevice<adsp21xx_device>("dcs2");
@@ -920,8 +945,12 @@ void dcs2_audio_device::device_start()
m_dmadac[1] = subdevice<dmadac_sound_device>("dac2");
/* always boot from the base of "dcs" */
- m_bootrom = (UINT16 *)machine().root_device().memregion("dcs")->base();
- m_bootrom_words = machine().root_device().memregion("dcs")->bytes() / 2;
+ memory_region *bootrom_region = machine().root_device().memregion("dcs");
+ if (bootrom_region != NULL)
+ {
+ m_bootrom = (UINT16 *)bootrom_region->base();
+ m_bootrom_words = bootrom_region->bytes() / 2;
+ }
/* supports both RAM and ROM variants */
if (m_dram_in_mb != 0)
@@ -937,7 +966,9 @@ void dcs2_audio_device::device_start()
}
m_sounddata_banks = m_sounddata_words / soundbank_words;
if (m_rev != 2)
- membank("databank")->configure_entries(0, m_sounddata_banks, m_sounddata, soundbank_words*2);
+ {
+ m_data_bank->configure_entries(0, m_sounddata_banks, m_sounddata, soundbank_words*2);
+ }
/* allocate memory for the SRAM */
m_sram = auto_alloc_array(machine(), UINT16, 0x8000*4/2);
@@ -982,12 +1013,14 @@ void dcs_audio_device::set_auto_ack(int state)
READ16_MEMBER( dcs_audio_device::dcs_dataram_r )
{
+ assert(m_external_program_ram != NULL);
return m_external_program_ram[offset] >> 8;
}
WRITE16_MEMBER( dcs_audio_device::dcs_dataram_w )
{
+ assert(m_external_program_ram != NULL);
UINT16 val = m_external_program_ram[offset] >> 8;
COMBINE_DATA(&val);
m_external_program_ram[offset] = (val << 8) | (m_external_program_ram[offset] & 0x0000ff);
@@ -1001,7 +1034,7 @@ WRITE16_MEMBER( dcs_audio_device::dcs_data_bank_select_w )
else
m_sounddata_bank = (m_sounddata_bank & 0xff00) | (data & 0xff);
- membank("databank")->set_entry(m_sounddata_bank % m_sounddata_banks);
+ m_data_bank->set_entry(m_sounddata_bank % m_sounddata_banks);
/* bit 11 = sound board led */
#if 0
@@ -1014,7 +1047,7 @@ WRITE16_MEMBER( dcs_audio_device::dcs_data_bank_select2_w )
{
m_sounddata_bank = (m_sounddata_bank & 0x00ff) | ((data & 0x01) << 8) | ((data & 0xfc) << 7);
- membank("databank")->set_entry(m_sounddata_bank % m_sounddata_banks);
+ m_data_bank->set_entry(m_sounddata_bank % m_sounddata_banks);
}
/*************************************
@@ -1034,15 +1067,21 @@ void dcs_audio_device::sdrc_update_bank_pointers()
{
/* ROM-based; use the memory page to select from ROM */
if (SDRC_ROM_MS == 1 && SDRC_ROM_ST != 3)
- membank("rompage")->set_base(&m_sounddata[(SDRC_EPM_PG * pagesize) % m_sounddata_words]);
+ {
+ m_rom_page->set_base(&m_sounddata[(SDRC_EPM_PG * pagesize) % m_sounddata_words]);
+ }
}
else
{
/* RAM-based; use the ROM page to select from ROM, and the memory page to select from RAM */
if (SDRC_ROM_MS == 1 && SDRC_ROM_ST != 3)
- membank("rompage")->set_base(&m_bootrom[(SDRC_ROM_PG * 4096 /*pagesize*/) % m_bootrom_words]);
+ {
+ m_rom_page->set_base(&m_bootrom[(SDRC_ROM_PG * 4096 /*pagesize*/) % m_bootrom_words]);
+ }
if (SDRC_DM_ST != 0)
- membank("drampage")->set_base(&m_sounddata[(SDRC_DM_PG * 1024) % m_sounddata_words]);
+ {
+ m_dram_page->set_base(&m_sounddata[(SDRC_DM_PG * 1024) % m_sounddata_words]);
+ }
}
}
}
@@ -1087,6 +1126,7 @@ void dcs_audio_device::sdrc_remap_memory()
int baseaddr = (SDRC_ROM_ST == 0) ? 0x0000 : (SDRC_ROM_ST == 1) ? 0x3000 : 0x3400;
int pagesize = (SDRC_ROM_SZ == 0 && SDRC_ROM_ST != 0) ? 4096 : 1024;
m_data->install_read_bank(baseaddr, baseaddr + pagesize - 1, "rompage");
+ m_rom_page = membank("rompage");
}
/* map the DRAM page as bank 26 */
@@ -1094,6 +1134,7 @@ void dcs_audio_device::sdrc_remap_memory()
{
int baseaddr = (SDRC_DM_ST == 1) ? 0x0000 : (SDRC_DM_ST == 2) ? 0x3000 : 0x3400;
m_data->install_readwrite_bank(baseaddr, baseaddr + 0x3ff, "drampage");
+ m_dram_page = membank("drampage");
}
/* update the bank pointers */
@@ -1285,7 +1326,7 @@ WRITE16_MEMBER( dcs_audio_device::dsio_w )
/* offset 2 controls RAM pages */
case 2:
dsio.reg[2] = data;
- membank("databank")->set_entry(DSIO_DM_PG % m_sounddata_banks);
+ m_data_bank->set_entry(DSIO_DM_PG % m_sounddata_banks);
break;
}
}
@@ -1352,7 +1393,7 @@ WRITE16_MEMBER( dcs_audio_device::denver_w )
/* offset 2 controls RAM pages */
case 2:
dsio.reg[2] = data;
- membank("databank")->set_entry(DENV_DM_PG % m_sounddata_banks);
+ m_data_bank->set_entry(DENV_DM_PG % m_sounddata_banks);
break;
/* offset 3 controls FIFO reset */
diff --git a/src/mame/audio/dcs.h b/src/mame/audio/dcs.h
index 7f84d5fed96..dd7eca582b6 100644
--- a/src/mame/audio/dcs.h
+++ b/src/mame/audio/dcs.h
@@ -165,6 +165,10 @@ protected:
UINT32 m_sounddata_banks;
UINT16 m_sounddata_bank;
+ optional_memory_bank m_data_bank;
+ memory_bank * m_rom_page;
+ memory_bank * m_dram_page;
+
/* I/O with the host */
UINT8 m_auto_ack;
UINT16 m_latch_control;
diff --git a/src/mame/audio/depthch.cpp b/src/mame/audio/depthch.cpp
index cdaae0ad108..d4a5bf5ca68 100644
--- a/src/mame/audio/depthch.cpp
+++ b/src/mame/audio/depthch.cpp
@@ -30,15 +30,6 @@ static const char *const depthch_sample_names[] =
};
-MACHINE_CONFIG_FRAGMENT( depthch_audio )
-
- MCFG_SOUND_ADD("samples", SAMPLES, 0)
- MCFG_SAMPLES_CHANNELS(4)
- MCFG_SAMPLES_NAMES(depthch_sample_names)
- MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.5)
-MACHINE_CONFIG_END
-
-
/* sample IDs - must match sample file name table above */
enum
{
@@ -51,17 +42,15 @@ enum
WRITE8_MEMBER( vicdual_state::depthch_audio_w )
{
- static int port1State = 0;
int bitsChanged;
int bitsGoneHigh;
int bitsGoneLow;
-
- bitsChanged = port1State ^ data;
+ bitsChanged = m_port1State ^ data;
bitsGoneHigh = bitsChanged & data;
bitsGoneLow = bitsChanged & ~data;
- port1State = data;
+ m_port1State = data;
if ( bitsGoneHigh & OUT_PORT_1_LONGEXPL )
{
@@ -87,3 +76,13 @@ WRITE8_MEMBER( vicdual_state::depthch_audio_w )
STOP( m_samples, SND_SONAR );
}
}
+
+
+MACHINE_CONFIG_FRAGMENT( depthch_audio )
+
+ /* samples */
+ MCFG_SOUND_ADD("samples", SAMPLES, 0)
+ MCFG_SAMPLES_CHANNELS(4)
+ MCFG_SAMPLES_NAMES(depthch_sample_names)
+ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.5)
+MACHINE_CONFIG_END
diff --git a/src/mame/audio/gottlieb.cpp b/src/mame/audio/gottlieb.cpp
index 6a5eb46f0e8..38b3fc013ea 100644
--- a/src/mame/audio/gottlieb.cpp
+++ b/src/mame/audio/gottlieb.cpp
@@ -328,7 +328,7 @@ MACHINE_CONFIG_END
INPUT_PORTS_START( gottlieb_sound_r0 )
PORT_START("SB0")
- PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_OTHER) PORT_NAME("Audio Diag") PORT_CODE(KEYCODE_0) PORT_CHANGED_MEMBER(DEVICE_SELF, gottlieb_sound_r0_device, audio_nmi, 1)
+ PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_OTHER) PORT_NAME("Audio Diag") PORT_CODE(KEYCODE_0) PORT_CHANGED_MEMBER(DEVICE_SELF, gottlieb_sound_r0_device, audio_nmi, nullptr)
PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_OTHER) PORT_NAME("Attract") PORT_CODE(KEYCODE_F1) PORT_TOGGLE
PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_OTHER) PORT_NAME("Music") PORT_CODE(KEYCODE_F2) PORT_TOGGLE
INPUT_PORTS_END
@@ -965,7 +965,7 @@ INPUT_PORTS_START( gottlieb_sound_r2 )
PORT_DIPNAME( 0x40, 0x40, "Sound Test" ) PORT_DIPLOCATION("SB2:7")
PORT_DIPSETTING( 0x40, DEF_STR( Off ) )
PORT_DIPSETTING( 0x00, DEF_STR( On ) )
- PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_SPECIAL ) PORT_CUSTOM_MEMBER(DEVICE_SELF, gottlieb_sound_r2_device, speech_drq_custom_r, NULL)
+ PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_SPECIAL ) PORT_CUSTOM_MEMBER(DEVICE_SELF, gottlieb_sound_r2_device, speech_drq_custom_r, nullptr)
INPUT_PORTS_END
diff --git a/src/mame/audio/invinco.cpp b/src/mame/audio/invinco.cpp
index 4aaed4c1f89..688cc5b9510 100644
--- a/src/mame/audio/invinco.cpp
+++ b/src/mame/audio/invinco.cpp
@@ -36,15 +36,6 @@ static const char *const invinco_sample_names[] =
};
-
-MACHINE_CONFIG_FRAGMENT( invinco_audio )
- MCFG_SOUND_ADD("samples", SAMPLES, 0)
- MCFG_SAMPLES_CHANNELS(8)
- MCFG_SAMPLES_NAMES(invinco_sample_names)
- MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.5)
-MACHINE_CONFIG_END
-
-
/* sample IDs - must match sample file name table above */
enum
{
@@ -61,17 +52,15 @@ enum
WRITE8_MEMBER( vicdual_state::invinco_audio_w )
{
- static int port2State = 0;
int bitsChanged;
//int bitsGoneHigh;
int bitsGoneLow;
-
- bitsChanged = port2State ^ data;
+ bitsChanged = m_port2State ^ data;
//bitsGoneHigh = bitsChanged & data;
bitsGoneLow = bitsChanged & ~data;
- port2State = data;
+ m_port2State = data;
if ( bitsGoneLow & OUT_PORT_2_SAUCER )
{
@@ -102,8 +91,14 @@ WRITE8_MEMBER( vicdual_state::invinco_audio_w )
{
PLAY( m_samples, SND_SHIPHIT, 0 );
}
-
-#if 0
- logerror("Went LO: %02X %04X\n", bitsGoneLow, space.device().safe_pc());
-#endif
}
+
+
+MACHINE_CONFIG_FRAGMENT( invinco_audio )
+
+ /* samples */
+ MCFG_SOUND_ADD("samples", SAMPLES, 0)
+ MCFG_SAMPLES_CHANNELS(8)
+ MCFG_SAMPLES_NAMES(invinco_sample_names)
+ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.5)
+MACHINE_CONFIG_END
diff --git a/src/mame/audio/m72.cpp b/src/mame/audio/m72.cpp
index 69566d713b8..2440b42ade5 100644
--- a/src/mame/audio/m72.cpp
+++ b/src/mame/audio/m72.cpp
@@ -49,12 +49,12 @@ Shisensho II 1993 Rev 3.34 M81 Yes
const device_type M72 = &device_creator<m72_audio_device>;
m72_audio_device::m72_audio_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock)
- : device_t(mconfig, M72, "Irem M72 Audio Custom", tag, owner, clock, "m72_audio", __FILE__),
- device_sound_interface(mconfig, *this),
- m_irqvector(0),
- m_sample_addr(0),
- m_samples(nullptr),
- m_samples_size(0)
+ : device_t(mconfig, M72, "Irem M72 Audio Custom", tag, owner, clock, "m72_audio", __FILE__)
+ , device_sound_interface(mconfig, *this)
+ , m_irqvector(0)
+ , m_sample_addr(0)
+ , m_samples(*this, "^samples")
+ , m_samples_size(0)
{
}
@@ -74,8 +74,7 @@ void m72_audio_device::device_config_complete()
void m72_audio_device::device_start()
{
- m_samples = machine().root_device().memregion("samples")->base();
- m_samples_size = machine().root_device().memregion("samples")->bytes();
+ m_samples_size = m_samples.bytes();
m_space = &machine().device("soundcpu")->memory().space(AS_IO);
m_dac = machine().device<dac_device>("dac");
diff --git a/src/mame/audio/m72.h b/src/mame/audio/m72.h
index 71ed62fa35d..4b8e96d4d52 100644
--- a/src/mame/audio/m72.h
+++ b/src/mame/audio/m72.h
@@ -51,7 +51,7 @@ private:
// internal state
UINT8 m_irqvector;
UINT32 m_sample_addr;
- UINT8 *m_samples;
+ optional_region_ptr<UINT8> m_samples;
UINT32 m_samples_size;
address_space *m_space;
dac_device *m_dac;
diff --git a/src/mame/audio/polyplay.cpp b/src/mame/audio/polyplay.cpp
index 3d68c601082..94340359c90 100644
--- a/src/mame/audio/polyplay.cpp
+++ b/src/mame/audio/polyplay.cpp
@@ -1,4 +1,4 @@
-// license:???
+// license:BSD-3-Clause
// copyright-holders:Martin Buchholz
/***************************************************************************
diff --git a/src/mame/audio/pulsar.cpp b/src/mame/audio/pulsar.cpp
index b17a4413feb..f6790efddf2 100644
--- a/src/mame/audio/pulsar.cpp
+++ b/src/mame/audio/pulsar.cpp
@@ -53,14 +53,6 @@ static const char *const pulsar_sample_names[] =
};
-MACHINE_CONFIG_FRAGMENT( pulsar_audio )
- MCFG_SOUND_ADD("samples", SAMPLES, 0)
- MCFG_SAMPLES_CHANNELS(12)
- MCFG_SAMPLES_NAMES(pulsar_sample_names)
- MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.5)
-MACHINE_CONFIG_END
-
-
/* sample IDs - must match sample file name table above */
enum
{
@@ -85,7 +77,6 @@ WRITE8_MEMBER( vicdual_state::pulsar_audio_1_w )
//int bitsGoneHigh;
int bitsGoneLow;
-
bitsChanged = m_port1State ^ data;
//bitsGoneHigh = bitsChanged & data;
bitsGoneLow = bitsChanged & ~data;
@@ -131,17 +122,15 @@ WRITE8_MEMBER( vicdual_state::pulsar_audio_1_w )
WRITE8_MEMBER( vicdual_state::pulsar_audio_2_w )
{
- static int port2State = 0;
int bitsChanged;
int bitsGoneHigh;
int bitsGoneLow;
-
- bitsChanged = port2State ^ data;
+ bitsChanged = m_port2State ^ data;
bitsGoneHigh = bitsChanged & data;
bitsGoneLow = bitsChanged & ~data;
- port2State = data;
+ m_port2State = data;
if ( bitsGoneLow & OUT_PORT_2_SIZZLE )
{
@@ -180,3 +169,13 @@ WRITE8_MEMBER( vicdual_state::pulsar_audio_2_w )
STOP( m_samples, SND_MOVMAZE );
}
}
+
+
+MACHINE_CONFIG_FRAGMENT( pulsar_audio )
+
+ /* samples */
+ MCFG_SOUND_ADD("samples", SAMPLES, 0)
+ MCFG_SAMPLES_CHANNELS(12)
+ MCFG_SAMPLES_NAMES(pulsar_sample_names)
+ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.5)
+MACHINE_CONFIG_END
diff --git a/src/mame/audio/qix.cpp b/src/mame/audio/qix.cpp
index 141b0d3b0a1..a7e0bb55a0b 100644
--- a/src/mame/audio/qix.cpp
+++ b/src/mame/audio/qix.cpp
@@ -1,5 +1,5 @@
-// license:???
-// copyright-holders:John Butler, Ed Mueller, Aaron Giles
+// license:BSD-3-Clause
+// copyright-holders:Derrick Renaud,Couriersud
/*************************************************************************
audio/qix.c
diff --git a/src/mame/audio/spiders.cpp b/src/mame/audio/spiders.cpp
index 91f35f3ffea..adfeda28361 100644
--- a/src/mame/audio/spiders.cpp
+++ b/src/mame/audio/spiders.cpp
@@ -1,5 +1,5 @@
// license:BSD-3-Clause
-// copyright-holders:Derrick Renaud
+// copyright-holders:Derrick Renaud,Hans Andersson
/***************************************************************************
Sigma Spiders hardware
diff --git a/src/mame/audio/sprint2.cpp b/src/mame/audio/sprint2.cpp
index 59a56dd93d1..f0f7df6925e 100644
--- a/src/mame/audio/sprint2.cpp
+++ b/src/mame/audio/sprint2.cpp
@@ -1,4 +1,4 @@
-// license:???
+// license:BSD-3-Clause
// copyright-holders:Hans Andersson
/*************************************************************************
diff --git a/src/mame/audio/tank8.cpp b/src/mame/audio/tank8.cpp
index 337c078e2cc..506bded19da 100644
--- a/src/mame/audio/tank8.cpp
+++ b/src/mame/audio/tank8.cpp
@@ -1,4 +1,4 @@
-// license:???
+// license:BSD-3-Clause
// copyright-holders:Hans Andersson
/*************************************************************************
diff --git a/src/mame/drivers/20pacgal.cpp b/src/mame/drivers/20pacgal.cpp
index eacbe306fc2..ddfa3b412af 100644
--- a/src/mame/drivers/20pacgal.cpp
+++ b/src/mame/drivers/20pacgal.cpp
@@ -140,21 +140,10 @@ WRITE8_MEMBER(_20pacgal_state::_20pacgal_coin_counter_w)
*
*************************************/
-void _20pacgal_state::set_bankptr()
-{
- if (m_game_selected == 0)
- {
- UINT8 *rom = memregion("maincpu")->base();
- membank("bank1")->set_base(rom + 0x08000);
- }
- else
- membank("bank1")->set_base(m_ram_48000);
-}
-
WRITE8_MEMBER(_20pacgal_state::ram_bank_select_w)
{
m_game_selected = data & 1;
- set_bankptr();
+ membank("bank1")->set_entry(m_game_selected);
}
WRITE8_MEMBER(_20pacgal_state::ram_48000_w)
@@ -374,7 +363,10 @@ void _20pacgal_state::common_save_state()
void _20pacgal_state::machine_start()
{
common_save_state();
- machine().save().register_postload(save_prepost_delegate(FUNC(_20pacgal_state::set_bankptr), this)); //currently not used by 25pacman
+
+ // membank currently used only by 20pacgal
+ membank("bank1")->configure_entry(0, memregion("maincpu")->base() + 0x08000);
+ membank("bank1")->configure_entry(1, m_ram_48000);
}
void _25pacman_state::machine_start()
@@ -442,7 +434,7 @@ MACHINE_CONFIG_END
*/
ROM_START( 25pacmano ) /* Revision 2.00 */
- ROM_REGION( 0x100000, "maincpu", 0 )
+ ROM_REGION( 0x40000, "maincpu", 0 )
ROM_LOAD( "pacman_25th_rev2.0.u13", 0x00000, 0x40000, CRC(99a52784) SHA1(6222c2eb686e65ba23ca376ff4392be1bc826a03) ) /* Label printed Rev 2.0, program says Rev 2.00 */
ROM_REGION( 0x8000, "proms", 0 ) /* palette */
@@ -455,7 +447,7 @@ ROM_END
ROM_START( 25pacman ) /* Revision 3.00 */
ROM_REGION( 0x40000, "flash", 0 )
ROM_LOAD( "pacman25ver3.u1", 0x00000, 0x40000, CRC(55b0076e) SHA1(4544cc193bdd22bfc88d096083ccc4069cac4607) ) /* program says Rev 3.00 */
- ROM_REGION( 0x100000, "maincpu", ROMREGION_ERASE00 )
+ ROM_REGION( 0x40000, "maincpu", ROMREGION_ERASE00 )
ROM_REGION( 0x8000, "proms", 0 ) /* palette */
// shouldn't be loading this! must be uploaded somewhere
@@ -467,7 +459,7 @@ ROM_END
*/
ROM_START( 20pacgal ) /* Version 1.08 */
- ROM_REGION( 0x100000, "maincpu", 0 )
+ ROM_REGION( 0x40000, "maincpu", 0 )
ROM_LOAD( "ms_pac-galaga_v1.08.u13", 0x00000, 0x40000, CRC(2ea16809) SHA1(27f041bdbb590917e9dcb70c21aa6b6d6c9f04fb) ) /* Also found labeled as "V1.08 HO" */
ROM_REGION( 0x8000, "proms", 0 ) /* palette */
@@ -475,7 +467,7 @@ ROM_START( 20pacgal ) /* Version 1.08 */
ROM_END
ROM_START( 20pacgalr4 ) /* Version 1.04 */
- ROM_REGION( 0x100000, "maincpu", 0 )
+ ROM_REGION( 0x40000, "maincpu", 0 )
ROM_LOAD( "ms_pac-galaga_v1.04.u13", 0x00000, 0x40000, CRC(6c474d2d) SHA1(5a150fc9d2ed0e908385b9f9d532aa33cf80dba4) )
ROM_REGION( 0x8000, "proms", 0 ) /* palette */
@@ -483,7 +475,7 @@ ROM_START( 20pacgalr4 ) /* Version 1.04 */
ROM_END
ROM_START( 20pacgalr3 ) /* Version 1.03 */
- ROM_REGION( 0x100000, "maincpu", 0 )
+ ROM_REGION( 0x40000, "maincpu", 0 )
ROM_LOAD( "ms_pac-galaga_v1.03.u13", 0x00000, 0x40000, CRC(e13dce63) SHA1(c8943f082883c423210fc3c97323222afb00f0a2) )
ROM_REGION( 0x8000, "proms", 0 ) /* palette */
@@ -491,7 +483,7 @@ ROM_START( 20pacgalr3 ) /* Version 1.03 */
ROM_END
ROM_START( 20pacgalr2 ) /* Version 1.02 */
- ROM_REGION( 0x100000, "maincpu", 0 )
+ ROM_REGION( 0x40000, "maincpu", 0 )
ROM_LOAD( "ms_pac-galaga_v1.02.u13", 0x00000, 0x40000, CRC(b939f805) SHA1(5fe9470601156dfc2d339c94fd8f0aa4db197760) )
ROM_REGION( 0x8000, "proms", 0 ) /* palette */
@@ -499,7 +491,7 @@ ROM_START( 20pacgalr2 ) /* Version 1.02 */
ROM_END
ROM_START( 20pacgalr1 ) /* Version 1.01 */
- ROM_REGION( 0x100000, "maincpu", 0 )
+ ROM_REGION( 0x40000, "maincpu", 0 )
ROM_LOAD( "ms_pac-galaga_v1.01.u13", 0x00000, 0x40000, CRC(77159582) SHA1(c05e005a941cbdc806dcd76b315069362c792a72) )
ROM_REGION( 0x8000, "proms", 0 ) /* palette */
@@ -507,7 +499,7 @@ ROM_START( 20pacgalr1 ) /* Version 1.01 */
ROM_END
ROM_START( 20pacgalr0 ) /* Version 1.00 */
- ROM_REGION( 0x100000, "maincpu", 0 )
+ ROM_REGION( 0x40000, "maincpu", 0 )
ROM_LOAD( "ms_pac-galaga_v1.0.u13", 0x00000, 0x40000, CRC(3c92a269) SHA1(a616d912393f4e49b95231d72eec48567f46fc00) ) /* Label printed V1.0, program says v1.00 */
ROM_REGION( 0x8000, "proms", 0 ) /* palette */
diff --git a/src/mame/drivers/40love.cpp b/src/mame/drivers/40love.cpp
index 473f01cc748..fe81b18233a 100644
--- a/src/mame/drivers/40love.cpp
+++ b/src/mame/drivers/40love.cpp
@@ -1,4 +1,4 @@
-// license:???
+// license:GPL-2.0+
// copyright-holders:Jarek Burczynski
/****************************************************************************
@@ -996,7 +996,7 @@ MACHINE_RESET_MEMBER(fortyl_state,common)
m_pix2[0] = 0;
m_pix2[1] = 0;
m_color_bank = false;
-
+
/* sound */
m_sound_nmi_enable = 0;
m_pending_nmi = 0;
diff --git a/src/mame/drivers/4enraya.cpp b/src/mame/drivers/4enraya.cpp
index 4e5d18abc21..c75536306f1 100644
--- a/src/mame/drivers/4enraya.cpp
+++ b/src/mame/drivers/4enraya.cpp
@@ -408,9 +408,6 @@ void _4enraya_state::machine_start()
save_item(NAME(m_videoram));
save_item(NAME(m_workram));
save_item(NAME(m_soundlatch));
-
- m_prom = memregion("pal_prom")->base();
- m_rom = memregion("maincpu")->base();
}
void _4enraya_state::machine_reset()
diff --git a/src/mame/drivers/8080bw.cpp b/src/mame/drivers/8080bw.cpp
index 23c7a6472b9..4dfeab5b92c 100644
--- a/src/mame/drivers/8080bw.cpp
+++ b/src/mame/drivers/8080bw.cpp
@@ -3274,26 +3274,10 @@ WRITE8_MEMBER(_8080bw_state::invmulti_eeprom_w)
WRITE8_MEMBER(_8080bw_state::invmulti_bank_w)
{
- m_invmulti_bank = data; //needed to restore the bankswitch post load
-
// d0, d4, d6: bank
int bank = (data & 1) | (data >> 3 & 2) | (data >> 4 & 4);
- membank("bank1")->set_base(memregion("maincpu")->base() + bank * 0x4000 + 0x0000);
- membank("bank2")->set_base(memregion("maincpu")->base() + bank * 0x4000 + 0x2000);
-}
-
-void _8080bw_state::invmulti_bankswitch_restore()
-{
- invmulti_bank_w(m_maincpu->space(AS_PROGRAM), 0, m_invmulti_bank);
-}
-
-MACHINE_RESET_MEMBER(_8080bw_state,invmulti)
-{
- m_invmulti_bank = 0;
-
- invmulti_bank_w(m_maincpu->space(AS_PROGRAM), 0, 0);
-
- MACHINE_RESET_CALL_MEMBER(mw8080bw);
+ membank("bank1")->set_entry(bank);
+ membank("bank2")->set_entry(bank);
}
MACHINE_CONFIG_DERIVED_CLASS( invmulti, invaders, _8080bw_state )
@@ -3304,7 +3288,7 @@ MACHINE_CONFIG_DERIVED_CLASS( invmulti, invaders, _8080bw_state )
MCFG_EEPROM_SERIAL_93C46_8BIT_ADD("eeprom")
- MCFG_MACHINE_RESET_OVERRIDE(_8080bw_state,invmulti)
+ MCFG_MACHINE_RESET_OVERRIDE(_8080bw_state, mw8080bw)
MACHINE_CONFIG_END
DRIVER_INIT_MEMBER(_8080bw_state,invmulti)
@@ -3317,8 +3301,10 @@ DRIVER_INIT_MEMBER(_8080bw_state,invmulti)
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);
- save_item(NAME(m_invmulti_bank));
- machine().save().register_postload(save_prepost_delegate(FUNC(_8080bw_state::invmulti_bankswitch_restore), this));
+ membank("bank1")->configure_entries(0, 8, memregion("maincpu")->base(), 0x4000);
+ membank("bank1")->set_entry(0);
+ membank("bank2")->configure_entries(0, 8, memregion("maincpu")->base() + 0x2000, 0x4000);
+ membank("bank2")->set_entry(0);
}
diff --git a/src/mame/drivers/a5105.cpp b/src/mame/drivers/a5105.cpp
index 44222bdb920..de95d2a33a6 100644
--- a/src/mame/drivers/a5105.cpp
+++ b/src/mame/drivers/a5105.cpp
@@ -484,7 +484,6 @@ void a5105_state::machine_reset()
{
address_space &space = m_maincpu->space(AS_PROGRAM);
a5105_ab_w(space, 0, 9); // turn motor off
- m_beep->set_frequency(500);
m_ram_base = (UINT8*)m_ram->pointer();
m_rom_base = (UINT8*)memregion("maincpu")->base();
@@ -575,7 +574,7 @@ static MACHINE_CONFIG_START( a5105, a5105_state )
MCFG_SPEAKER_STANDARD_MONO("mono")
MCFG_SOUND_WAVE_ADD(WAVE_TAG, "cassette")
MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.25)
- MCFG_SOUND_ADD("beeper", BEEP, 0)
+ MCFG_SOUND_ADD("beeper", BEEP, 500)
MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.50)
/* Devices */
diff --git a/src/mame/drivers/ace.cpp b/src/mame/drivers/ace.cpp
index 57d96585296..46b86ba5e09 100644
--- a/src/mame/drivers/ace.cpp
+++ b/src/mame/drivers/ace.cpp
@@ -1,4 +1,4 @@
-// license:???
+// license:GPL-2.0+
// copyright-holders:Jarek Burczynski
/****************************************************************************
diff --git a/src/mame/drivers/aerofgt.cpp b/src/mame/drivers/aerofgt.cpp
index 8cfd233520d..af333697ce9 100644
--- a/src/mame/drivers/aerofgt.cpp
+++ b/src/mame/drivers/aerofgt.cpp
@@ -1521,8 +1521,8 @@ static MACHINE_CONFIG_START( karatblzbl, aerofgt_state )
MCFG_CPU_ADD("audiocpu",Z80,8000000/2) /* 4 MHz ??? */
MCFG_CPU_PROGRAM_MAP(karatblzbl_sound_map)
-// MCFG_MACHINE_START_OVERRIDE(aerofgt_state,aerofgt)
-// MCFG_MACHINE_RESET_OVERRIDE(aerofgt_state,aerofgt)
+ MCFG_MACHINE_START_OVERRIDE(aerofgt_state,common)
+ MCFG_MACHINE_RESET_OVERRIDE(aerofgt_state,common)
/* video hardware */
MCFG_SCREEN_ADD("screen", RASTER)
@@ -1552,7 +1552,7 @@ static MACHINE_CONFIG_START( karatblzbl, aerofgt_state )
MCFG_VIDEO_START_OVERRIDE(aerofgt_state,karatblz)
/* sound hardware */
- MCFG_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker")
+ //MCFG_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker") // breaks savestate
// NEC D7759c + YM????
MACHINE_CONFIG_END
diff --git a/src/mame/drivers/aleck64.cpp b/src/mame/drivers/aleck64.cpp
index 26499c7b9b2..c86157b6e6a 100644
--- a/src/mame/drivers/aleck64.cpp
+++ b/src/mame/drivers/aleck64.cpp
@@ -184,15 +184,18 @@ public:
m_e90_pal(*this,"e90pal"),
m_dip_read_offset(0) { }
- optional_shared_ptr<UINT32> m_e90_vram;
- optional_shared_ptr<UINT32> m_e90_pal;
DECLARE_DRIVER_INIT(aleck64);
DECLARE_WRITE32_MEMBER(aleck_dips_w);
DECLARE_READ32_MEMBER(aleck_dips_r);
DECLARE_READ16_MEMBER(e90_prot_r);
DECLARE_WRITE16_MEMBER(e90_prot_w);
+
UINT32 screen_update_e90(screen_device &screen, bitmap_rgb32 &bitmap, const rectangle &cliprect);
+protected:
+ optional_shared_ptr<UINT32> m_e90_vram;
+ optional_shared_ptr<UINT32> m_e90_pal;
+
private:
UINT32 m_dip_read_offset;
};
diff --git a/src/mame/drivers/alg.cpp b/src/mame/drivers/alg.cpp
index 6cc10cfd788..17ca6b176e0 100644
--- a/src/mame/drivers/alg.cpp
+++ b/src/mame/drivers/alg.cpp
@@ -213,11 +213,11 @@ ADDRESS_MAP_END
static INPUT_PORTS_START( alg )
PORT_START("joy_0_dat") /* read by Amiga core */
- PORT_BIT( 0x0303, IP_ACTIVE_HIGH, IPT_SPECIAL ) PORT_CUSTOM_MEMBER(DEVICE_SELF, alg_state,amiga_joystick_convert, 0)
+ PORT_BIT( 0x0303, IP_ACTIVE_HIGH, IPT_SPECIAL ) PORT_CUSTOM_MEMBER(DEVICE_SELF, alg_state,amiga_joystick_convert, (void *)0)
PORT_BIT( 0xfcfc, IP_ACTIVE_HIGH, IPT_UNKNOWN )
PORT_START("joy_1_dat") /* read by Amiga core */
- PORT_BIT( 0x0303, IP_ACTIVE_HIGH, IPT_SPECIAL ) PORT_CUSTOM_MEMBER(DEVICE_SELF, alg_state,amiga_joystick_convert, 1)
+ PORT_BIT( 0x0303, IP_ACTIVE_HIGH, IPT_SPECIAL ) PORT_CUSTOM_MEMBER(DEVICE_SELF, alg_state,amiga_joystick_convert, (void *)1)
PORT_BIT( 0xfcfc, IP_ACTIVE_HIGH, IPT_UNKNOWN )
PORT_START("potgo") /* read by Amiga core */
diff --git a/src/mame/drivers/alphatro.cpp b/src/mame/drivers/alphatro.cpp
index a5a3968d8aa..77f72f939b3 100644
--- a/src/mame/drivers/alphatro.cpp
+++ b/src/mame/drivers/alphatro.cpp
@@ -396,7 +396,6 @@ void alphatro_state::machine_reset()
m_cassold = 0;
m_usart->write_rxd(0);
m_beep->set_state(0);
- m_beep->set_frequency(950); /* piezo-device needs to be measured */
}
PALETTE_INIT_MEMBER(alphatro_state, alphatro)
@@ -465,7 +464,7 @@ static MACHINE_CONFIG_START( alphatro, alphatro_state )
/* sound hardware */
MCFG_SPEAKER_STANDARD_MONO("mono")
- MCFG_SOUND_ADD("beeper", BEEP, 0)
+ MCFG_SOUND_ADD("beeper", BEEP, 950) /* piezo-device needs to be measured */
MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.00)
MCFG_SOUND_WAVE_ADD(WAVE_TAG, "cassette")
MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.25)
diff --git a/src/mame/drivers/alto2.cpp b/src/mame/drivers/alto2.cpp
index c2142b0c304..7f1884639a5 100644
--- a/src/mame/drivers/alto2.cpp
+++ b/src/mame/drivers/alto2.cpp
@@ -143,17 +143,17 @@ static INPUT_PORTS_START( alto2 )
PORT_KEY(A2_KEY_FR5, KEYCODE_F9, 0, 0, "FR5" ) //!< ADL right function key 5
PORT_START("mouseb0") // Mouse button 0
- PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_BUTTON1) PORT_NAME("Mouse RED (left)") PORT_PLAYER(1) PORT_CODE(MOUSECODE_BUTTON1) PORT_CHANGED_MEMBER( ":maincpu", alto2_cpu_device, mouse_button_0, 0 )
+ PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_BUTTON1) PORT_NAME("Mouse RED (left)") PORT_PLAYER(1) PORT_CODE(MOUSECODE_BUTTON1) PORT_CHANGED_MEMBER( ":maincpu", alto2_cpu_device, mouse_button_0, nullptr )
PORT_START("mouseb1") // Mouse button 1
- PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_BUTTON2) PORT_NAME("Mouse BLUE (right)") PORT_PLAYER(1) PORT_CODE(MOUSECODE_BUTTON2) PORT_CHANGED_MEMBER( ":maincpu", alto2_cpu_device, mouse_button_1, 0 )
+ PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_BUTTON2) PORT_NAME("Mouse BLUE (right)") PORT_PLAYER(1) PORT_CODE(MOUSECODE_BUTTON2) PORT_CHANGED_MEMBER( ":maincpu", alto2_cpu_device, mouse_button_1, nullptr )
PORT_START("mouseb2") // Mouse button 2
- PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_BUTTON3) PORT_NAME("Mouse YELLOW (middle)") PORT_PLAYER(1) PORT_CODE(MOUSECODE_BUTTON3) PORT_CHANGED_MEMBER( ":maincpu", alto2_cpu_device, mouse_button_2, 0 )
+ PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_BUTTON3) PORT_NAME("Mouse YELLOW (middle)") PORT_PLAYER(1) PORT_CODE(MOUSECODE_BUTTON3) PORT_CHANGED_MEMBER( ":maincpu", alto2_cpu_device, mouse_button_2, nullptr )
PORT_START("mousex") // Mouse - X AXIS
- PORT_BIT( 0xffff, 0x00, IPT_MOUSE_X) PORT_SENSITIVITY(100) PORT_KEYDELTA(1) PORT_CHANGED_MEMBER( ":maincpu", alto2_cpu_device, mouse_motion_x, 0 )
+ PORT_BIT( 0xffff, 0x00, IPT_MOUSE_X) PORT_SENSITIVITY(100) PORT_KEYDELTA(1) PORT_CHANGED_MEMBER( ":maincpu", alto2_cpu_device, mouse_motion_x, nullptr )
PORT_START("mousey") // Mouse - Y AXIS
- PORT_BIT( 0xffff, 0x00, IPT_MOUSE_Y) PORT_SENSITIVITY(100) PORT_KEYDELTA(1) PORT_CHANGED_MEMBER( ":maincpu", alto2_cpu_device, mouse_motion_y, 0 )
+ PORT_BIT( 0xffff, 0x00, IPT_MOUSE_Y) PORT_SENSITIVITY(100) PORT_KEYDELTA(1) PORT_CHANGED_MEMBER( ":maincpu", alto2_cpu_device, mouse_motion_y, nullptr )
PORT_START("CONFIG") /* Memory switch on AIM board */
PORT_CONFNAME( 0x01, 0x01, "Memory switch")
diff --git a/src/mame/drivers/amiga.cpp b/src/mame/drivers/amiga.cpp
index 847bc0e9c0d..edca3b6b9b9 100644
--- a/src/mame/drivers/amiga.cpp
+++ b/src/mame/drivers/amiga.cpp
@@ -1198,16 +1198,16 @@ static INPUT_PORTS_START( amiga )
PORT_CONFSETTING(0x20, DEF_STR(Joystick) )
PORT_START("cia_0_port_a")
- PORT_BIT(0x3f, IP_ACTIVE_HIGH, IPT_SPECIAL) PORT_CUSTOM_MEMBER(DEVICE_SELF, amiga_state, floppy_drive_status, 0)
+ PORT_BIT(0x3f, IP_ACTIVE_HIGH, IPT_SPECIAL) PORT_CUSTOM_MEMBER(DEVICE_SELF, amiga_state, floppy_drive_status, (void *)0)
PORT_BIT(0x40, IP_ACTIVE_LOW, IPT_BUTTON1) PORT_PLAYER(1)
PORT_BIT(0x80, IP_ACTIVE_LOW, IPT_BUTTON1) PORT_PLAYER(2)
PORT_START("joy_0_dat")
- PORT_BIT(0x0303, IP_ACTIVE_HIGH, IPT_SPECIAL) PORT_CUSTOM_MEMBER(DEVICE_SELF, amiga_state, amiga_joystick_convert, 0)
+ PORT_BIT(0x0303, IP_ACTIVE_HIGH, IPT_SPECIAL) PORT_CUSTOM_MEMBER(DEVICE_SELF, amiga_state, amiga_joystick_convert, (void *)0)
PORT_BIT(0xfcfc, IP_ACTIVE_HIGH, IPT_UNUSED)
PORT_START("joy_1_dat")
- PORT_BIT(0x0303, IP_ACTIVE_HIGH, IPT_SPECIAL) PORT_CUSTOM_MEMBER(DEVICE_SELF, amiga_state, amiga_joystick_convert, 1)
+ PORT_BIT(0x0303, IP_ACTIVE_HIGH, IPT_SPECIAL) PORT_CUSTOM_MEMBER(DEVICE_SELF, amiga_state, amiga_joystick_convert, (void *)1)
PORT_BIT(0xfcfc, IP_ACTIVE_HIGH, IPT_UNUSED)
PORT_START("potgo")
@@ -1248,19 +1248,19 @@ INPUT_PORTS_START( cd32 )
PORT_MODIFY("cia_0_port_a")
PORT_BIT( 0x3f, IP_ACTIVE_LOW, IPT_SPECIAL )
// this is the regular port for reading a single button joystick on the Amiga, many CD32 games require this to mirror the pad start button!
- PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_SPECIAL ) PORT_CUSTOM_MEMBER(DEVICE_SELF, cd32_state, cd32_sel_mirror_input, 0)
- PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_SPECIAL ) PORT_CUSTOM_MEMBER(DEVICE_SELF, cd32_state, cd32_sel_mirror_input, 1)
+ PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_SPECIAL ) PORT_CUSTOM_MEMBER(DEVICE_SELF, cd32_state, cd32_sel_mirror_input, (void *)0)
+ PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_SPECIAL ) PORT_CUSTOM_MEMBER(DEVICE_SELF, cd32_state, cd32_sel_mirror_input, (void *)1)
PORT_MODIFY("joy_0_dat")
- PORT_BIT( 0x0303, IP_ACTIVE_HIGH, IPT_SPECIAL ) PORT_CUSTOM_MEMBER(DEVICE_SELF, amiga_state, amiga_joystick_convert, 0)
+ PORT_BIT( 0x0303, IP_ACTIVE_HIGH, IPT_SPECIAL ) PORT_CUSTOM_MEMBER(DEVICE_SELF, amiga_state, amiga_joystick_convert, (void *)0)
PORT_BIT( 0xfcfc, IP_ACTIVE_HIGH, IPT_UNUSED )
PORT_MODIFY("joy_1_dat")
- PORT_BIT( 0x0303, IP_ACTIVE_HIGH, IPT_SPECIAL ) PORT_CUSTOM_MEMBER(DEVICE_SELF, amiga_state, amiga_joystick_convert, 1)
+ PORT_BIT( 0x0303, IP_ACTIVE_HIGH, IPT_SPECIAL ) PORT_CUSTOM_MEMBER(DEVICE_SELF, amiga_state, amiga_joystick_convert, (void *)1)
PORT_BIT( 0xfcfc, IP_ACTIVE_HIGH, IPT_UNUSED )
PORT_MODIFY("potgo")
- PORT_BIT( 0xff00, IP_ACTIVE_HIGH, IPT_SPECIAL ) PORT_CUSTOM_MEMBER(DEVICE_SELF, cd32_state, cd32_input, 0)
+ PORT_BIT( 0xff00, IP_ACTIVE_HIGH, IPT_SPECIAL ) PORT_CUSTOM_MEMBER(DEVICE_SELF, cd32_state, cd32_input, (void *)0)
PORT_BIT( 0x00ff, IP_ACTIVE_HIGH, IPT_UNUSED )
// CD32 '11' button pad (4 dpad directions + 7 buttons), not read directly
@@ -1668,6 +1668,7 @@ static MACHINE_CONFIG_DERIVED_CLASS( a1200, amiga_base, a1200_state )
MCFG_DEVICE_MODIFY("screen")
MCFG_SCREEN_UPDATE_DRIVER(amiga_state, screen_update_amiga_aga)
+ MCFG_SCREEN_NO_PALETTE
MCFG_DEVICE_REMOVE("palette")
@@ -1695,6 +1696,7 @@ static MACHINE_CONFIG_DERIVED_CLASS( a1200n, a1200, a1200_state )
MCFG_FRAGMENT_ADD(ntsc_video)
MCFG_DEVICE_MODIFY("screen")
MCFG_SCREEN_UPDATE_DRIVER(amiga_state, screen_update_amiga_aga)
+ MCFG_SCREEN_NO_PALETTE
MCFG_DEVICE_MODIFY("amiga")
MCFG_DEVICE_CLOCK(amiga_state::CLK_C1_NTSC)
MCFG_DEVICE_MODIFY("cia_0")
@@ -1719,6 +1721,7 @@ static MACHINE_CONFIG_DERIVED_CLASS( a4000, amiga_base, a4000_state )
MCFG_DEVICE_MODIFY("screen")
MCFG_SCREEN_UPDATE_DRIVER(amiga_state, screen_update_amiga_aga)
+ MCFG_SCREEN_NO_PALETTE
MCFG_DEVICE_REMOVE("palette")
@@ -1739,6 +1742,7 @@ static MACHINE_CONFIG_DERIVED_CLASS( a4000n, a4000, a4000_state )
MCFG_FRAGMENT_ADD(ntsc_video)
MCFG_DEVICE_MODIFY("screen")
MCFG_SCREEN_UPDATE_DRIVER(amiga_state, screen_update_amiga_aga)
+ MCFG_SCREEN_NO_PALETTE
MCFG_DEVICE_MODIFY("amiga")
MCFG_DEVICE_CLOCK(amiga_state::CLK_C1_NTSC)
MCFG_DEVICE_MODIFY("cia_0")
@@ -1763,6 +1767,7 @@ static MACHINE_CONFIG_DERIVED_CLASS( a400030n, a400030, a4000_state )
MCFG_FRAGMENT_ADD(ntsc_video)
MCFG_DEVICE_MODIFY("screen")
MCFG_SCREEN_UPDATE_DRIVER(amiga_state, screen_update_amiga_aga)
+ MCFG_SCREEN_NO_PALETTE
MCFG_DEVICE_MODIFY("amiga")
MCFG_DEVICE_CLOCK(amiga_state::CLK_C1_NTSC)
MCFG_DEVICE_MODIFY("cia_0")
@@ -1796,6 +1801,7 @@ static MACHINE_CONFIG_DERIVED_CLASS( cd32, amiga_base, cd32_state )
MCFG_DEVICE_MODIFY("screen")
MCFG_SCREEN_UPDATE_DRIVER(amiga_state, screen_update_amiga_aga)
+ MCFG_SCREEN_NO_PALETTE
MCFG_DEVICE_REMOVE("palette")
@@ -1822,6 +1828,7 @@ static MACHINE_CONFIG_DERIVED_CLASS( cd32n, cd32, cd32_state )
MCFG_FRAGMENT_ADD(ntsc_video)
MCFG_DEVICE_MODIFY("screen")
MCFG_SCREEN_UPDATE_DRIVER(amiga_state, screen_update_amiga_aga)
+ MCFG_SCREEN_NO_PALETTE
MCFG_DEVICE_MODIFY("amiga")
MCFG_DEVICE_CLOCK(amiga_state::CLK_C1_NTSC)
MCFG_DEVICE_MODIFY("cia_0")
@@ -1846,6 +1853,7 @@ static MACHINE_CONFIG_DERIVED_CLASS( a4000tn, a4000, a4000_state )
MCFG_FRAGMENT_ADD(ntsc_video)
MCFG_DEVICE_MODIFY("screen")
MCFG_SCREEN_UPDATE_DRIVER(amiga_state, screen_update_amiga_aga)
+ MCFG_SCREEN_NO_PALETTE
MCFG_DEVICE_MODIFY("amiga")
MCFG_DEVICE_CLOCK(amiga_state::CLK_C1_NTSC)
MCFG_DEVICE_MODIFY("cia_0")
diff --git a/src/mame/drivers/amust.cpp b/src/mame/drivers/amust.cpp
index 4c1848fc548..7f359feabcc 100644
--- a/src/mame/drivers/amust.cpp
+++ b/src/mame/drivers/amust.cpp
@@ -369,7 +369,6 @@ MACHINE_RESET_MEMBER( amust_state, amust )
m_p_videoram = memregion("videoram")->base();
membank("bankr0")->set_entry(0); // point at rom
membank("bankw0")->set_entry(0); // always write to ram
- m_beep->set_frequency(800);
address_space &space = m_maincpu->space(AS_PROGRAM);
space.write_byte(0x38, 0xed);
space.write_byte(0x39, 0x4d);
@@ -409,7 +408,7 @@ static MACHINE_CONFIG_START( amust, amust_state )
/* sound hardware */
MCFG_SPEAKER_STANDARD_MONO("mono")
- MCFG_SOUND_ADD("beeper", BEEP, 0)
+ MCFG_SOUND_ADD("beeper", BEEP, 800)
MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.50)
/* Devices */
diff --git a/src/mame/drivers/apollo.cpp b/src/mame/drivers/apollo.cpp
index ed229a55cc1..38b1368ca32 100644
--- a/src/mame/drivers/apollo.cpp
+++ b/src/mame/drivers/apollo.cpp
@@ -1053,7 +1053,7 @@ static MACHINE_CONFIG_START( dn3500, apollo_state )
/* keyboard beeper */
MCFG_SPEAKER_STANDARD_MONO("mono")
- MCFG_SOUND_ADD("beep", BEEP, 0)
+ MCFG_SOUND_ADD("beep", BEEP, 1000)
MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.00)
/* internal ram */
@@ -1077,7 +1077,7 @@ static MACHINE_CONFIG_START( dsp3500, apollo_state )
/* keyboard beeper */
MCFG_SPEAKER_STANDARD_MONO("mono")
- MCFG_SOUND_ADD("beep", BEEP, 0)
+ MCFG_SOUND_ADD("beep", BEEP, 1000)
MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.00)
/* internal ram */
@@ -1125,7 +1125,7 @@ static MACHINE_CONFIG_START( dsp3000, apollo_state )
/* keyboard beeper */
MCFG_SPEAKER_STANDARD_MONO("mono")
- MCFG_SOUND_ADD("beep", BEEP, 0)
+ MCFG_SOUND_ADD("beep", BEEP, 1000)
MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.00)
/* internal ram */
@@ -1171,7 +1171,7 @@ static MACHINE_CONFIG_START( dsp5500, apollo_state )
/* keyboard beeper */
MCFG_SPEAKER_STANDARD_MONO("mono")
- MCFG_SOUND_ADD("beep", BEEP, 0)
+ MCFG_SOUND_ADD("beep", BEEP, 1000)
MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.00)
/* terminal hardware */
diff --git a/src/mame/drivers/arcadecl.cpp b/src/mame/drivers/arcadecl.cpp
index dd261cac975..1e821db2466 100644
--- a/src/mame/drivers/arcadecl.cpp
+++ b/src/mame/drivers/arcadecl.cpp
@@ -131,7 +131,7 @@ WRITE16_MEMBER(arcadecl_state::latch_w)
if (ACCESSING_BITS_0_7)
{
m_oki->set_bank_base((data & 0x80) ? 0x40000 : 0x00000);
- set_oki6295_volume((data & 0x001f) * 100 / 0x1f);
+ m_oki->set_output_gain(ALL_OUTPUTS, (data & 0x001f) / 31.0f);
}
}
diff --git a/src/mame/drivers/aristmk5.cpp b/src/mame/drivers/aristmk5.cpp
index 882fd175d2a..02483949fea 100644
--- a/src/mame/drivers/aristmk5.cpp
+++ b/src/mame/drivers/aristmk5.cpp
@@ -1337,45 +1337,47 @@ ROM_END
* Game Drivers *
*************************/
+#define MACHINE_FLAGS MACHINE_NOT_WORKING|MACHINE_IMPERFECT_SOUND|MACHINE_IMPERFECT_GRAPHICS
+
// YEAR NAME PARENT MACHINE INPUT STATE INIT ROT COMPANY FULLNAME FLAGS
-GAME( 1995, aristmk5, 0, aristmk5, aristmk5, aristmk5_state, aristmk5, ROT0, "Aristocrat", "MKV Set/Clear Chips (USA)", MACHINE_NOT_WORKING|MACHINE_IS_BIOS_ROOT )
+GAME( 1995, aristmk5, 0, aristmk5, aristmk5, aristmk5_state, aristmk5, ROT0, "Aristocrat", "MKV Set/Clear Chips (USA)", MACHINE_FLAGS|MACHINE_IS_BIOS_ROOT )
// Dates listed below are for the combination (reel layout), not release dates
-GAME( 1995, enchfrst, 0, aristmk5, aristmk5, aristmk5_state, aristmk5, ROT0, "Aristocrat", "Enchanted Forest (0400122V, Local)", MACHINE_NOT_WORKING|MACHINE_IMPERFECT_SOUND ) // 570/3, E - 23/06/95
-GAME( 1995, swthrt2v, 0, aristmk5, aristmk5, aristmk5_state, aristmk5, ROT0, "Aristocrat", "Sweet Hearts II (01J01986, Venezuela)", MACHINE_NOT_WORKING|MACHINE_IMPERFECT_SOUND ) // 577/1, C - 07/09/95
-GAME( 1996, minemine, aristmk5, aristmk5_usa, aristmk5, aristmk5_state, aristmk5, ROT0, "Aristocrat", "Mine, Mine, Mine (Export)", MACHINE_NOT_WORKING|MACHINE_IMPERFECT_SOUND ) // 559/2, E - 14/02/96
-GAME( 1996, dolphntr, 0, aristmk5, aristmk5, aristmk5_state, aristmk5, ROT0, "Aristocrat", "Dolphin Treasure (0200424V, NSW/ACT)", MACHINE_NOT_WORKING|MACHINE_IMPERFECT_SOUND ) // 602/1, B - 06/12/96, Rev 3
-GAME( 1996, dolphtra, dolphntr, aristmk5, aristmk5, aristmk5_state, aristmk5, ROT0, "Aristocrat", "Dolphin Treasure (0100424V, NSW/ACT)", MACHINE_NOT_WORKING|MACHINE_IMPERFECT_SOUND ) // 602/1, B - 06/12/96, Rev 1.24.4.0
-GAME( 1996, dolphtre, aristmk5, aristmk5_usa, aristmk5, aristmk5_state, aristmk5, ROT0, "Aristocrat", "Dolphin Treasure (Export)", MACHINE_NOT_WORKING|MACHINE_IMPERFECT_SOUND ) // 602/1, B - 06/12/96
-GAME( 1996, cashcham, aristmk5, aristmk5_usa, aristmk5, aristmk5_state, aristmk5, ROT0, "Aristocrat", "Cash Chameleon (Export)", MACHINE_NOT_WORKING|MACHINE_IMPERFECT_SOUND ) // 603(a), B - 06/12/96
-GAME( 1997, enchfore, aristmk5, aristmk5_usa, aristmk5, aristmk5_state, aristmk5, ROT0, "Aristocrat", "Enchanted Forest (MV4033, Export, 94.97%)", MACHINE_NOT_WORKING|MACHINE_IMPERFECT_SOUND ) // MV4033, B - 10/02/97
-GAME( 1997, mgarden, aristmk5, aristmk5_usa, aristmk5, aristmk5_state, aristmk5, ROT0, "Aristocrat", "Magic Garden (AHG1211, Export, 88.26%)", MACHINE_NOT_WORKING|MACHINE_IMPERFECT_SOUND ) // MV4033, B - 10/02/97
-GAME( 1997, goldprmd, aristmk5, aristmk5_usa, aristmk5, aristmk5_state, aristmk5, ROT0, "Aristocrat", "Golden Pyramids (MV4091, USA)", MACHINE_NOT_WORKING|MACHINE_IMPERFECT_SOUND ) // MV4091, B - 13/05/97
-GAME( 1997, goldpyra, aristmk5, aristmk5_usa, aristmk5, aristmk5_state, aristmk5, ROT0, "Aristocrat", "Golden Pyramids (AHG1206-99, NSW/ACT, 87.928%)", MACHINE_NOT_WORKING|MACHINE_IMPERFECT_SOUND ) // 602/2, B - 13/05/97
-GAME( 1997, qotn, 0, aristmk5, aristmk5, aristmk5_state, aristmk5, ROT0, "Aristocrat", "Queen of the Nile (0200439V, NSW/ACT)", MACHINE_NOT_WORKING|MACHINE_IMPERFECT_SOUND ) // 602/4, B - 13/05/97
-GAME( 1997, qotna, aristmk5, aristmk5_usa, aristmk5, aristmk5_state, aristmk5, ROT0, "Aristocrat", "Queen of the Nile (MV4091, NSW/ACT)", MACHINE_NOT_WORKING|MACHINE_IMPERFECT_SOUND ) // MV4091, B - 13/05/97 (US-Export HW?)
-GAME( 1997, wldcougr, aristmk5, aristmk5_usa, aristmk5, aristmk5_state, aristmk5, ROT0, "Aristocrat", "Wild Cougar (Export)", MACHINE_NOT_WORKING|MACHINE_IMPERFECT_SOUND ) // 569/8, D - 19/05/97
-GAME( 1997, dmdtouch, 0, aristmk5, aristmk5, aristmk5_state, aristmk5, ROT0, "Aristocrat", "Diamond Touch (0400433V, Local)", MACHINE_NOT_WORKING|MACHINE_IMPERFECT_SOUND ) // 604, E - 30/06/97
-GAME( 1997, bumblbug, aristmk5, aristmk5_usa, aristmk5, aristmk5_state, aristmk5, ROT0, "Aristocrat", "Bumble Bugs (Export, 92.691%)", MACHINE_NOT_WORKING|MACHINE_IMPERFECT_SOUND ) // 593, D - 05/07/97
-GAME( 1997, pengpays, aristmk5, aristmk5_usa, aristmk5, aristmk5_state, aristmk5, ROT0, "Aristocrat", "Penguin Pays (Export)", MACHINE_NOT_WORKING|MACHINE_IMPERFECT_SOUND ) // 586/7(b) B - 14/07/97
-GAME( 1997, trpdlght, aristmk5, aristmk5_usa, aristmk5, aristmk5_state, aristmk5, ROT0, "Aristocrat", "Tropical Delight (PHG0625-02, Export, 92.25%)", MACHINE_NOT_WORKING|MACHINE_IMPERFECT_SOUND ) // 577/3, D - 24/09/97
-GAME( 1998, chickena, aristmk5, aristmk5_usa, aristmk5, aristmk5_state, aristmk5, ROT0, "Aristocrat", "Chicken (RHG0730, Export, 92.588%, touch)", MACHINE_NOT_WORKING|MACHINE_IMPERFECT_SOUND ) // 596, C - 23/02/98
-GAME( 1998, adonis, 0, aristmk5, aristmk5, aristmk5_state, aristmk5, ROT0, "Aristocrat", "Adonis (0200751V, NSW/ACT)", MACHINE_NOT_WORKING|MACHINE_IMPERFECT_SOUND ) // 602/9, A - 25/05/98, Rev 10
-GAME( 1998, adonisa, adonis, aristmk5, aristmk5, aristmk5_state, aristmk5, ROT0, "Aristocrat", "Adonis (0100751V, NSW/ACT)", MACHINE_NOT_WORKING|MACHINE_IMPERFECT_SOUND ) // 602/9, A - 25/05/98, Rev 9
-GAME( 1998, swheart2, aristmk5, aristmk5_usa, aristmk5, aristmk5_state, aristmk5, ROT0, "Aristocrat", "Sweet Hearts II (PHG0742, Export, 92.252%)", MACHINE_NOT_WORKING|MACHINE_IMPERFECT_SOUND ) // MV4061, A - 29/06/98
-GAME( 1998, reelrock, 0, aristmk5, aristmk5, aristmk5_state, aristmk5, ROT0, "Aristocrat", "Reelin-n-Rockin (0100779V, Local)", MACHINE_NOT_WORKING|MACHINE_IMPERFECT_SOUND ) // 628, A - 13/07/98
-GAME( 1998, thgamblr, aristmk5, aristmk5_usa, aristmk5, aristmk5_state, aristmk5, ROT0, "Aristocrat", "The Gambler (EHG0916, Export, 92.268%)", MACHINE_NOT_WORKING|MACHINE_IMPERFECT_SOUND ) // MV4084/1, A - 30/10/98
-GAME( 1998, indiandr, 0, aristmk5, aristmk5, aristmk5_state, aristmk5, ROT0, "Aristocrat", "Indian Dreaming (0100845V, Local)", MACHINE_NOT_WORKING|MACHINE_IMPERFECT_SOUND ) // 628/1, B - 15/12/98
-GAME( 1998, chariotc, 0, aristmk5, aristmk5, aristmk5_state, aristmk5, ROT0, "Aristocrat", "The Chariot Challenge (04J00714, NSW/ACT)", MACHINE_NOT_WORKING|MACHINE_IMPERFECT_SOUND ) // 630, A - 10/08/98, Rev 12
-GAME( 1999, wtiger, 0, aristmk5, aristmk5, aristmk5_state, aristmk5, ROT0, "Aristocrat", "White Tiger Classic (0200954V, NSW/ACT)", MACHINE_NOT_WORKING|MACHINE_IMPERFECT_SOUND ) // 638/1, B - 08/07/99
-GAME( 1999, bootsctn, aristmk5, aristmk5_usa, aristmk5, aristmk5_state, aristmk5, ROT0, "Aristocrat", "Boot Scootin' (Export, 92.767%)", MACHINE_NOT_WORKING|MACHINE_IMPERFECT_SOUND ) // MV4098, A - 25/08/99
-GAME( 2000, cuckoo, aristmk5, aristmk5_usa, aristmk5, aristmk5_state, aristmk5, ROT0, "Aristocrat", "Cuckoo (MV4104, Export)", MACHINE_NOT_WORKING|MACHINE_IMPERFECT_SOUND ) // MV4104, C - 02/02/00
-GAME( 2000, magicmsk, aristmk5, aristmk5_usa, aristmk5, aristmk5_state, aristmk5, ROT0, "Aristocrat", "Magic Mask (MV4115, Export, set 1)", MACHINE_NOT_WORKING|MACHINE_IMPERFECT_SOUND ) // MV4115, A - 09/05/00
-GAME( 2000, magicmska, magicmsk, aristmk5_usa, aristmk5, aristmk5_state, aristmk5, ROT0, "Aristocrat", "Magic Mask (MV4115, Export, set 2)", MACHINE_NOT_WORKING|MACHINE_IMPERFECT_SOUND ) // MV4115, A - 09/05/00
-GAME( 2000, margmgc, 0, aristmk5, aristmk5, aristmk5_state, aristmk5, ROT0, "Aristocrat", "Margarita Magic (01J00101, NSW/ACT)", MACHINE_NOT_WORKING|MACHINE_IMPERFECT_SOUND ) // JB005, A - 07/07/00
-GAME( 2000, marmagic, aristmk5, aristmk5_usa, aristmk5, aristmk5_state, aristmk5, ROT0, "Aristocrat", "Margarita Magic (EHG1559, NSW/ACT)", MACHINE_NOT_WORKING|MACHINE_IMPERFECT_SOUND ) // US003, A - 07/07/00
-GAME( 2001, prtygras, aristmk5, aristmk5_usa, aristmk5, aristmk5_state, aristmk5, ROT0, "Aristocrat", "Party Gras (MV4115/3, Export, touch)", MACHINE_NOT_WORKING|MACHINE_IMPERFECT_SOUND ) // MV4115/3, B - 06/02/01
-GAME( 2001, geishanz, 0, aristmk5, aristmk5, aristmk5_state, aristmk5, ROT0, "Aristocrat", "Geisha (0101408V, New Zealand)", MACHINE_NOT_WORKING|MACHINE_IMPERFECT_SOUND ) // MV4127, A - 05/03/01
-GAME( 2001, adonise, aristmk5, aristmk5_usa, aristmk5, aristmk5_state, aristmk5, ROT0, "Aristocrat", "Adonis (MV4124/1, Export)", MACHINE_NOT_WORKING|MACHINE_IMPERFECT_SOUND ) // MV4124/1, B - 31/07/01
-GAME( 2001, koalamnt, aristmk5, aristmk5_usa, aristmk5, aristmk5_state, aristmk5, ROT0, "Aristocrat", "Koala Mint (MV4137, Export)", MACHINE_NOT_WORKING|MACHINE_IMPERFECT_SOUND ) // MV4137, A - 12/09/01
-GAME( 2001, partygrs, aristmk5, aristmk5_usa, aristmk5, aristmk5_state, aristmk5, ROT0, "Aristocrat", "Party Gras (MV4115/6, Export)", MACHINE_NOT_WORKING|MACHINE_IMPERFECT_SOUND ) // MV4115/6, A - 10/11/01
+GAME( 1995, enchfrst, 0, aristmk5, aristmk5, aristmk5_state, aristmk5, ROT0, "Aristocrat", "Enchanted Forest (0400122V, Local)", MACHINE_FLAGS ) // 570/3, E - 23/06/95
+GAME( 1995, swthrt2v, 0, aristmk5, aristmk5, aristmk5_state, aristmk5, ROT0, "Aristocrat", "Sweet Hearts II (01J01986, Venezuela)", MACHINE_FLAGS ) // 577/1, C - 07/09/95
+GAME( 1996, minemine, aristmk5, aristmk5_usa, aristmk5, aristmk5_state, aristmk5, ROT0, "Aristocrat", "Mine, Mine, Mine (Export)", MACHINE_FLAGS ) // 559/2, E - 14/02/96
+GAME( 1996, dolphntr, 0, aristmk5, aristmk5, aristmk5_state, aristmk5, ROT0, "Aristocrat", "Dolphin Treasure (0200424V, NSW/ACT)", MACHINE_FLAGS ) // 602/1, B - 06/12/96, Rev 3
+GAME( 1996, dolphtra, dolphntr, aristmk5, aristmk5, aristmk5_state, aristmk5, ROT0, "Aristocrat", "Dolphin Treasure (0100424V, NSW/ACT)", MACHINE_FLAGS ) // 602/1, B - 06/12/96, Rev 1.24.4.0
+GAME( 1996, dolphtre, aristmk5, aristmk5_usa, aristmk5, aristmk5_state, aristmk5, ROT0, "Aristocrat", "Dolphin Treasure (Export)", MACHINE_FLAGS ) // 602/1, B - 06/12/96
+GAME( 1996, cashcham, aristmk5, aristmk5_usa, aristmk5, aristmk5_state, aristmk5, ROT0, "Aristocrat", "Cash Chameleon (Export)", MACHINE_FLAGS ) // 603(a), B - 06/12/96
+GAME( 1997, enchfore, aristmk5, aristmk5_usa, aristmk5, aristmk5_state, aristmk5, ROT0, "Aristocrat", "Enchanted Forest (MV4033, Export, 94.97%)", MACHINE_FLAGS ) // MV4033, B - 10/02/97
+GAME( 1997, mgarden, aristmk5, aristmk5_usa, aristmk5, aristmk5_state, aristmk5, ROT0, "Aristocrat", "Magic Garden (AHG1211, Export, 88.26%)", MACHINE_FLAGS ) // MV4033, B - 10/02/97
+GAME( 1997, goldprmd, aristmk5, aristmk5_usa, aristmk5, aristmk5_state, aristmk5, ROT0, "Aristocrat", "Golden Pyramids (MV4091, USA)", MACHINE_FLAGS ) // MV4091, B - 13/05/97
+GAME( 1997, goldpyra, aristmk5, aristmk5_usa, aristmk5, aristmk5_state, aristmk5, ROT0, "Aristocrat", "Golden Pyramids (AHG1206-99, NSW/ACT, 87.928%)", MACHINE_FLAGS ) // 602/2, B - 13/05/97
+GAME( 1997, qotn, 0, aristmk5, aristmk5, aristmk5_state, aristmk5, ROT0, "Aristocrat", "Queen of the Nile (0200439V, NSW/ACT)", MACHINE_FLAGS ) // 602/4, B - 13/05/97
+GAME( 1997, qotna, aristmk5, aristmk5_usa, aristmk5, aristmk5_state, aristmk5, ROT0, "Aristocrat", "Queen of the Nile (MV4091, NSW/ACT)", MACHINE_FLAGS ) // MV4091, B - 13/05/97 (US-Export HW?)
+GAME( 1997, wldcougr, aristmk5, aristmk5_usa, aristmk5, aristmk5_state, aristmk5, ROT0, "Aristocrat", "Wild Cougar (Export)", MACHINE_FLAGS ) // 569/8, D - 19/05/97
+GAME( 1997, dmdtouch, 0, aristmk5, aristmk5, aristmk5_state, aristmk5, ROT0, "Aristocrat", "Diamond Touch (0400433V, Local)", MACHINE_FLAGS ) // 604, E - 30/06/97
+GAME( 1997, bumblbug, aristmk5, aristmk5_usa, aristmk5, aristmk5_state, aristmk5, ROT0, "Aristocrat", "Bumble Bugs (Export, 92.691%)", MACHINE_FLAGS ) // 593, D - 05/07/97
+GAME( 1997, pengpays, aristmk5, aristmk5_usa, aristmk5, aristmk5_state, aristmk5, ROT0, "Aristocrat", "Penguin Pays (Export)", MACHINE_FLAGS ) // 586/7(b) B - 14/07/97
+GAME( 1997, trpdlght, aristmk5, aristmk5_usa, aristmk5, aristmk5_state, aristmk5, ROT0, "Aristocrat", "Tropical Delight (PHG0625-02, Export, 92.25%)", MACHINE_FLAGS ) // 577/3, D - 24/09/97
+GAME( 1998, chickena, aristmk5, aristmk5_usa, aristmk5, aristmk5_state, aristmk5, ROT0, "Aristocrat", "Chicken (RHG0730, Export, 92.588%, touch)", MACHINE_FLAGS ) // 596, C - 23/02/98
+GAME( 1998, adonis, 0, aristmk5, aristmk5, aristmk5_state, aristmk5, ROT0, "Aristocrat", "Adonis (0200751V, NSW/ACT)", MACHINE_FLAGS ) // 602/9, A - 25/05/98, Rev 10
+GAME( 1998, adonisa, adonis, aristmk5, aristmk5, aristmk5_state, aristmk5, ROT0, "Aristocrat", "Adonis (0100751V, NSW/ACT)", MACHINE_FLAGS ) // 602/9, A - 25/05/98, Rev 9
+GAME( 1998, swheart2, aristmk5, aristmk5_usa, aristmk5, aristmk5_state, aristmk5, ROT0, "Aristocrat", "Sweet Hearts II (PHG0742, Export, 92.252%)", MACHINE_FLAGS ) // MV4061, A - 29/06/98
+GAME( 1998, reelrock, 0, aristmk5, aristmk5, aristmk5_state, aristmk5, ROT0, "Aristocrat", "Reelin-n-Rockin (0100779V, Local)", MACHINE_FLAGS ) // 628, A - 13/07/98
+GAME( 1998, thgamblr, aristmk5, aristmk5_usa, aristmk5, aristmk5_state, aristmk5, ROT0, "Aristocrat", "The Gambler (EHG0916, Export, 92.268%)", MACHINE_FLAGS ) // MV4084/1, A - 30/10/98
+GAME( 1998, indiandr, 0, aristmk5, aristmk5, aristmk5_state, aristmk5, ROT0, "Aristocrat", "Indian Dreaming (0100845V, Local)", MACHINE_FLAGS ) // 628/1, B - 15/12/98
+GAME( 1998, chariotc, 0, aristmk5, aristmk5, aristmk5_state, aristmk5, ROT0, "Aristocrat", "The Chariot Challenge (04J00714, NSW/ACT)", MACHINE_FLAGS ) // 630, A - 10/08/98, Rev 12
+GAME( 1999, wtiger, 0, aristmk5, aristmk5, aristmk5_state, aristmk5, ROT0, "Aristocrat", "White Tiger Classic (0200954V, NSW/ACT)", MACHINE_FLAGS ) // 638/1, B - 08/07/99
+GAME( 1999, bootsctn, aristmk5, aristmk5_usa, aristmk5, aristmk5_state, aristmk5, ROT0, "Aristocrat", "Boot Scootin' (Export, 92.767%)", MACHINE_FLAGS ) // MV4098, A - 25/08/99
+GAME( 2000, cuckoo, aristmk5, aristmk5_usa, aristmk5, aristmk5_state, aristmk5, ROT0, "Aristocrat", "Cuckoo (MV4104, Export)", MACHINE_FLAGS ) // MV4104, C - 02/02/00
+GAME( 2000, magicmsk, aristmk5, aristmk5_usa, aristmk5, aristmk5_state, aristmk5, ROT0, "Aristocrat", "Magic Mask (MV4115, Export, set 1)", MACHINE_FLAGS ) // MV4115, A - 09/05/00
+GAME( 2000, magicmska, magicmsk, aristmk5_usa, aristmk5, aristmk5_state, aristmk5, ROT0, "Aristocrat", "Magic Mask (MV4115, Export, set 2)", MACHINE_FLAGS ) // MV4115, A - 09/05/00
+GAME( 2000, margmgc, 0, aristmk5, aristmk5, aristmk5_state, aristmk5, ROT0, "Aristocrat", "Margarita Magic (01J00101, NSW/ACT)", MACHINE_FLAGS ) // JB005, A - 07/07/00
+GAME( 2000, marmagic, aristmk5, aristmk5_usa, aristmk5, aristmk5_state, aristmk5, ROT0, "Aristocrat", "Margarita Magic (EHG1559, NSW/ACT)", MACHINE_FLAGS ) // US003, A - 07/07/00
+GAME( 2001, prtygras, aristmk5, aristmk5_usa, aristmk5, aristmk5_state, aristmk5, ROT0, "Aristocrat", "Party Gras (MV4115/3, Export, touch)", MACHINE_FLAGS ) // MV4115/3, B - 06/02/01
+GAME( 2001, geishanz, 0, aristmk5, aristmk5, aristmk5_state, aristmk5, ROT0, "Aristocrat", "Geisha (0101408V, New Zealand)", MACHINE_FLAGS ) // MV4127, A - 05/03/01
+GAME( 2001, adonise, aristmk5, aristmk5_usa, aristmk5, aristmk5_state, aristmk5, ROT0, "Aristocrat", "Adonis (MV4124/1, Export)", MACHINE_FLAGS ) // MV4124/1, B - 31/07/01
+GAME( 2001, koalamnt, aristmk5, aristmk5_usa, aristmk5, aristmk5_state, aristmk5, ROT0, "Aristocrat", "Koala Mint (MV4137, Export)", MACHINE_FLAGS ) // MV4137, A - 12/09/01
+GAME( 2001, partygrs, aristmk5, aristmk5_usa, aristmk5, aristmk5_state, aristmk5, ROT0, "Aristocrat", "Party Gras (MV4115/6, Export)", MACHINE_FLAGS ) // MV4115/6, A - 10/11/01
diff --git a/src/mame/drivers/arkanoid.cpp b/src/mame/drivers/arkanoid.cpp
index 3c8a1d25865..e4e33fcdea2 100644
--- a/src/mame/drivers/arkanoid.cpp
+++ b/src/mame/drivers/arkanoid.cpp
@@ -197,7 +197,7 @@ controller or home-made spinner built from a PC mouse will work but the player m
slowly and the game is unplayable. The Taito geared spinner moves the optical wheel *very*
fast to ensure the player moves fast enough to follow and return the ball easily. The ratio of
the control knob rotation to the optical wheel rotation is 1:20 so for one rotation of the
-control knob the optical wheel rotates 20 times.
+control knob the optical wheel rotates 20 times. The optical quadrature wheel has 24 slots.
Generally a half-turn of the control knob is enough to move the player across the full screen.
The spinner connections are....
@@ -900,7 +900,7 @@ ic45 = 74ls74
ic46 = 74ls08
ic87 = 74ls74
~VCC = 'pulled to vcc through a resistor'
-icxx.y = ic xx pin y
+icxx.y = ic xx pin y
+--------\_/--------+
GND -- = VSS(GND) -- | 1 28 | <- /RESET = <- ~VCC & ic32.9 (4Q) & ic26.13 (/reset2) & ic26.1 (/reset1)
~VCC & ic26.6 (/1Q) & ic9.10 (I1C) -> = /INT -> | 2 27 | <> PA7 = -> ic27.18 (8D)
@@ -1245,6 +1245,10 @@ GFXDECODE_END
void arkanoid_state::machine_start()
{
+ // allocate the MCU timer, even if we have no MCU, and set it to fire NEVER.
+ m_68705_timer = machine().scheduler().timer_alloc(timer_expired_delegate(FUNC(arkanoid_state::timer_68705_increment),this));
+ m_68705_timer->adjust(attotime::never);
+
save_item(NAME(m_gfxbank));
save_item(NAME(m_palettebank));
@@ -1283,8 +1287,8 @@ void arkanoid_state::machine_reset()
// the following 3 are all part of the 74ls74 at ic26 and are cleared on reset
m_z80HasWritten = 0;
m_68705HasWritten = 0;
- //if (m_bootleg_id == 0) m_mcu->set_input_line(M68705_IRQ_LINE, CLEAR_LINE); // arkatayt will crash if this line is uncommented, but without this line present, arkanoid will watchdog-reset itself as soon as a level starts after pressing f3/soft reset.
- // TODO: this can be better dealt with by having a separate machine_reset function for the mculess vs mcu sets.
+ if (m_mcu.found()) m_mcu->set_input_line(M68705_IRQ_LINE, CLEAR_LINE);
+ if (m_mcu.found()) m_68705_timer->adjust(attotime::from_hz(((XTAL_12MHz/4)/4)/(1<<7)));
m_port_a_in = 0;
m_port_a_out = 0;
@@ -1336,10 +1340,10 @@ static MACHINE_CONFIG_START( arkanoid, arkanoid_state )
MCFG_SPEAKER_STANDARD_MONO("mono")
MCFG_SOUND_ADD("aysnd", YM2149, XTAL_12MHz/4) /* YM2149 clock is 3mhz, pin 26 is low so final clock is 3mhz/2, handled inside the ay core */
- MCFG_AY8910_OUTPUT_TYPE(/*AY8910_SINGLE_OUTPUT |*/ YM2149_PIN26_LOW) // all outputs are tied together with no resistors, and pin 26 is low
+ MCFG_AY8910_OUTPUT_TYPE(AY8910_SINGLE_OUTPUT | YM2149_PIN26_LOW) // all outputs are tied together with no resistors, and pin 26 is low
MCFG_AY8910_PORT_A_READ_CB(IOPORT("UNUSED"))
MCFG_AY8910_PORT_B_READ_CB(IOPORT("DSW"))
- MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.33)
+ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.66)
MACHINE_CONFIG_END
@@ -1527,7 +1531,7 @@ ROM_START( arkanoiduo ) // V1.1 USA/Romstar
ROM_LOAD( "a75-07.ic24", 0x0000, 0x0200, CRC(0af8b289) SHA1(6bc589e8a609b4cf450aebedc8ce02d5d45c970f) ) /* Chip Silkscreen: "A75-07"; red component */
ROM_LOAD( "a75-08.ic23", 0x0200, 0x0200, CRC(abb002fb) SHA1(c14f56b8ef103600862e7930709d293b0aa97a73) ) /* Chip Silkscreen: "A75-08"; green component */
ROM_LOAD( "a75-09.ic22", 0x0400, 0x0200, CRC(a7c6c277) SHA1(adaa003dcd981576ea1cc5f697d709b2d6b2ea29) ) /* Chip Silkscreen: "A75-09"; blue component */
-
+
ROM_REGION( 0x8000, "altgfx", 0 )
ROM_LOAD( "a75__03(alternate).ic64", 0x00000, 0x8000, CRC(983d4485) SHA1(603a8798d1f531a70a527a5c6122f0ffd6adcfb6) ) // this was found on a legit v1.1 Romstar USA pcb with serial number 29342; the only difference seems to be the first 32 tiles are all 0xFF instead of 0x00. Those tiles don't seem to be used by the game at all. This is likely another incidence of "Taito forgot to clear programmer ram before burning a rom from a sparse s-record/ihex file"
ROM_END
diff --git a/src/mame/drivers/armedf.cpp b/src/mame/drivers/armedf.cpp
index 21c19d4d74f..e2a9dd65b3a 100644
--- a/src/mame/drivers/armedf.cpp
+++ b/src/mame/drivers/armedf.cpp
@@ -1265,6 +1265,10 @@ static MACHINE_CONFIG_START( terrafjb, armedf_state )
MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.80)
MACHINE_CONFIG_END
+static MACHINE_CONFIG_DERIVED( terrafb, terraf )
+ MCFG_DEVICE_REMOVE("nb1414m4")
+MACHINE_CONFIG_END
+
static MACHINE_CONFIG_START( kozure, armedf_state )
/* basic machine hardware */
@@ -2190,7 +2194,7 @@ GAME( 1987, terraf, 0, terraf, terraf, armedf_state, terrafu, RO
GAME( 1987, terrafu, terraf, terraf, terraf, armedf_state, terrafu, ROT0, "Nichibutsu USA", "Terra Force (US)", MACHINE_SUPPORTS_SAVE )
GAME( 1987, terrafj, terraf, terraf, terraf, armedf_state, terrafu, ROT0, "Nichibutsu Japan", "Terra Force (Japan)", MACHINE_SUPPORTS_SAVE )
GAME( 1987, terrafjb, terraf, terrafjb, terraf, armedf_state, terrafjb, ROT0, "bootleg", "Terra Force (Japan, bootleg with additional Z80)", MACHINE_SUPPORTS_SAVE )
-GAME( 1987, terrafb, terraf, terraf, terraf, armedf_state, terraf, ROT0, "bootleg", "Terra Force (Japan, bootleg set 2)", MACHINE_SUPPORTS_SAVE )
+GAME( 1987, terrafb, terraf, terrafb, terraf, armedf_state, terraf, ROT0, "bootleg", "Terra Force (Japan, bootleg set 2)", MACHINE_SUPPORTS_SAVE )
GAME( 1987, kozure, 0, kozure, kozure, armedf_state, kozure, ROT0, "Nichibutsu", "Kozure Ookami (Japan)", MACHINE_SUPPORTS_SAVE )
diff --git a/src/mame/drivers/arsystems.cpp b/src/mame/drivers/arsystems.cpp
index 3f179e9af70..2ff02959a48 100644
--- a/src/mame/drivers/arsystems.cpp
+++ b/src/mame/drivers/arsystems.cpp
@@ -62,9 +62,10 @@ class arcadia_amiga_state : public amiga_state
{
public:
arcadia_amiga_state(const machine_config &mconfig, device_type type, const char *tag)
- : amiga_state(mconfig, type, tag) { }
-
- UINT8 m_coin_counter[2];
+ : amiga_state(mconfig, type, tag)
+ , m_bios_region(*this, "user2")
+ {
+ }
DECLARE_WRITE16_MEMBER(arcadia_multibios_change_game);
DECLARE_CUSTOM_INPUT_MEMBER(coin_counter_r);
@@ -91,6 +92,10 @@ public:
protected:
virtual void machine_reset() override;
+
+ optional_memory_region m_bios_region;
+
+ UINT8 m_coin_counter[2];
};
@@ -238,15 +243,15 @@ static INPUT_PORTS_START( arcadia )
PORT_SERVICE_NO_TOGGLE( 0x02, IP_ACTIVE_LOW )
PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_START2 )
PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_START1 )
- PORT_BIT( 0x30, IP_ACTIVE_HIGH, IPT_SPECIAL ) PORT_CUSTOM_MEMBER(DEVICE_SELF, arcadia_amiga_state,coin_counter_r, 0)
- PORT_BIT( 0xc0, IP_ACTIVE_HIGH, IPT_SPECIAL ) PORT_CUSTOM_MEMBER(DEVICE_SELF, arcadia_amiga_state,coin_counter_r, 1)
+ PORT_BIT( 0x30, IP_ACTIVE_HIGH, IPT_SPECIAL ) PORT_CUSTOM_MEMBER(DEVICE_SELF, arcadia_amiga_state,coin_counter_r, (void *)0)
+ PORT_BIT( 0xc0, IP_ACTIVE_HIGH, IPT_SPECIAL ) PORT_CUSTOM_MEMBER(DEVICE_SELF, arcadia_amiga_state,coin_counter_r, (void *)1)
PORT_START("joy_0_dat")
- PORT_BIT( 0x0303, IP_ACTIVE_HIGH, IPT_SPECIAL ) PORT_CUSTOM_MEMBER(DEVICE_SELF, arcadia_amiga_state,amiga_joystick_convert, 0)
+ PORT_BIT( 0x0303, IP_ACTIVE_HIGH, IPT_SPECIAL ) PORT_CUSTOM_MEMBER(DEVICE_SELF, arcadia_amiga_state,amiga_joystick_convert, (void *)0)
PORT_BIT( 0xfcfc, IP_ACTIVE_HIGH, IPT_UNUSED )
PORT_START("joy_1_dat")
- PORT_BIT( 0x0303, IP_ACTIVE_HIGH, IPT_SPECIAL ) PORT_CUSTOM_MEMBER(DEVICE_SELF, arcadia_amiga_state,amiga_joystick_convert, 1)
+ PORT_BIT( 0x0303, IP_ACTIVE_HIGH, IPT_SPECIAL ) PORT_CUSTOM_MEMBER(DEVICE_SELF, arcadia_amiga_state,amiga_joystick_convert, (void *)1)
PORT_BIT( 0xfcfc, IP_ACTIVE_HIGH, IPT_UNUSED )
PORT_START("potgo")
@@ -922,12 +927,16 @@ DRIVER_INIT_MEMBER( arcadia_amiga_state, arcadia )
m_agnus_id = AGNUS_HR_NTSC;
m_denise_id = DENISE;
- /* OnePlay bios is encrypted, TenPlay is not */
- UINT16 *biosrom = (UINT16 *)memregion("user2")->base();
+ if (m_bios_region != NULL)
+ {
+ /* OnePlay bios is encrypted, TenPlay is not */
+ UINT16 *rom = (UINT16 *)m_bios_region->base();
- if (biosrom)
- if (biosrom[0] != 0x4afc)
+ if (rom[0] != 0x4afc)
+ {
generic_decode("user2", 6, 1, 0, 2, 3, 4, 5, 7);
+ }
+ }
}
diff --git a/src/mame/drivers/atarifb.cpp b/src/mame/drivers/atarifb.cpp
index 8349fdc7f7a..46b9bf81863 100644
--- a/src/mame/drivers/atarifb.cpp
+++ b/src/mame/drivers/atarifb.cpp
@@ -1,4 +1,4 @@
-// license:???
+// license:BSD-3-Clause
// copyright-holders:Mike Balfour, Patrick Lawrence, Brad Oliver
/***************************************************************************
diff --git a/src/mame/drivers/atarig1.cpp b/src/mame/drivers/atarig1.cpp
index a3ad029f96b..b060c183f77 100644
--- a/src/mame/drivers/atarig1.cpp
+++ b/src/mame/drivers/atarig1.cpp
@@ -428,8 +428,6 @@ static MACHINE_CONFIG_START( atarig1, atarig1_state )
MCFG_CPU_PROGRAM_MAP(main_map)
MCFG_DEVICE_VBLANK_INT_DRIVER("screen", atarigen_state, video_int_gen)
- MCFG_SLAPSTIC_ADD("slapstic")
-
MCFG_MACHINE_START_OVERRIDE(atarig1_state,atarig1)
MCFG_MACHINE_RESET_OVERRIDE(atarig1_state,atarig1)
@@ -461,12 +459,44 @@ static MACHINE_CONFIG_START( atarig1, atarig1_state )
MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.0)
MACHINE_CONFIG_END
+
static MACHINE_CONFIG_DERIVED( hydra, atarig1 )
MCFG_ATARIRLE_ADD("rle", modesc_hydra)
+ MCFG_SLAPSTIC_ADD("slapstic", 116)
+MACHINE_CONFIG_END
+
+
+static MACHINE_CONFIG_DERIVED( hydrap, hydra )
+ MCFG_DEVICE_REMOVE("slapstic")
MACHINE_CONFIG_END
+
+static MACHINE_CONFIG_DERIVED( pitfight9, atarig1 )
+ MCFG_ATARIRLE_ADD("rle", modesc_pitfight)
+ MCFG_SLAPSTIC_ADD("slapstic", 114)
+MACHINE_CONFIG_END
+
+
+static MACHINE_CONFIG_DERIVED( pitfight7, atarig1 )
+ MCFG_ATARIRLE_ADD("rle", modesc_pitfight)
+ MCFG_SLAPSTIC_ADD("slapstic", 112)
+MACHINE_CONFIG_END
+
+
static MACHINE_CONFIG_DERIVED( pitfight, atarig1 )
MCFG_ATARIRLE_ADD("rle", modesc_pitfight)
+ MCFG_SLAPSTIC_ADD("slapstic", 111)
+MACHINE_CONFIG_END
+
+
+static MACHINE_CONFIG_DERIVED( pitfightj, atarig1 )
+ MCFG_ATARIRLE_ADD("rle", modesc_pitfight)
+ MCFG_SLAPSTIC_ADD("slapstic", 113)
+MACHINE_CONFIG_END
+
+
+static MACHINE_CONFIG_DERIVED( pitfightb, atarig1 )
+ MCFG_ATARIRLE_ADD("rle", modesc_pitfight)
MACHINE_CONFIG_END
@@ -1198,28 +1228,30 @@ ROM_END
*
*************************************/
-void atarig1_state::init_common(offs_t slapstic_base, int slapstic, bool is_pitfight)
+DRIVER_INIT_MEMBER(atarig1_state,hydra)
{
- if (slapstic == -1)
- {
- pitfightb_cheap_slapstic_init();
- save_item(NAME(m_bslapstic_bank));
- save_item(NAME(m_bslapstic_primed));
- }
- else if (slapstic != 0)
- slapstic_configure(*m_maincpu, slapstic_base, 0, slapstic);
+ slapstic_configure(*m_maincpu, 0x078000, 0);
+ m_is_pitfight = 0;
+}
- m_is_pitfight = is_pitfight;
+DRIVER_INIT_MEMBER(atarig1_state,hydrap)
+{
+ m_is_pitfight = 0;
}
-DRIVER_INIT_MEMBER(atarig1_state,hydra) { init_common(0x078000, 116, 0); }
-DRIVER_INIT_MEMBER(atarig1_state,hydrap) { init_common(0x000000, 0, 0); }
+DRIVER_INIT_MEMBER(atarig1_state,pitfight)
+{
+ slapstic_configure(*m_maincpu, 0x038000, 0);
+ m_is_pitfight = 1;
+}
-DRIVER_INIT_MEMBER(atarig1_state,pitfight9) { init_common(0x038000, 114, 1); }
-DRIVER_INIT_MEMBER(atarig1_state,pitfight7) { init_common(0x038000, 112, 1); }
-DRIVER_INIT_MEMBER(atarig1_state,pitfight) { init_common(0x038000, 111, 1); }
-DRIVER_INIT_MEMBER(atarig1_state,pitfightj) { init_common(0x038000, 113, 1); }
-DRIVER_INIT_MEMBER(atarig1_state,pitfightb) { init_common(0x038000, -1, 1); }
+DRIVER_INIT_MEMBER(atarig1_state,pitfightb)
+{
+ pitfightb_cheap_slapstic_init();
+ save_item(NAME(m_bslapstic_bank));
+ save_item(NAME(m_bslapstic_primed));
+ m_is_pitfight = 1;
+}
/*************************************
@@ -1228,15 +1260,15 @@ DRIVER_INIT_MEMBER(atarig1_state,pitfightb) { init_common(0x038000, -1, 1); }
*
*************************************/
-GAME( 1990, hydra, 0, hydra, hydra, atarig1_state, hydra, ROT0, "Atari Games", "Hydra", MACHINE_SUPPORTS_SAVE )
-GAME( 1990, hydrap, hydra, hydra, hydra, atarig1_state, hydrap, ROT0, "Atari Games", "Hydra (prototype 5/14/90)", MACHINE_SUPPORTS_SAVE )
-GAME( 1990, hydrap2, hydra, hydra, hydra, atarig1_state, hydrap, ROT0, "Atari Games", "Hydra (prototype 5/25/90)", MACHINE_SUPPORTS_SAVE )
-
-GAME( 1990, pitfight, 0, pitfight, pitfight, atarig1_state, pitfight9, ROT0, "Atari Games", "Pit Fighter (rev 9)", MACHINE_SUPPORTS_SAVE )
-GAME( 1990, pitfight7, pitfight, pitfight, pitfight, atarig1_state, pitfight7, ROT0, "Atari Games", "Pit Fighter (rev 7)", MACHINE_SUPPORTS_SAVE )
-GAME( 1990, pitfight6, pitfight, pitfight, pitfight, atarig1_state, pitfightj, ROT0, "Atari Games", "Pit Fighter (rev 6)", MACHINE_SUPPORTS_SAVE )
-GAME( 1990, pitfight5, pitfight, pitfight, pitfight, atarig1_state, pitfight7, ROT0, "Atari Games", "Pit Fighter (rev 5)", MACHINE_SUPPORTS_SAVE )
-GAME( 1990, pitfight4, pitfight, pitfight, pitfight, atarig1_state, pitfight, ROT0, "Atari Games", "Pit Fighter (rev 4)", MACHINE_SUPPORTS_SAVE )
-GAME( 1990, pitfight3, pitfight, pitfight, pitfight, atarig1_state, pitfight, ROT0, "Atari Games", "Pit Fighter (rev 3)", MACHINE_SUPPORTS_SAVE )
-GAME( 1990, pitfightj, pitfight, pitfight, pitfightj, atarig1_state,pitfightj, ROT0, "Atari Games", "Pit Fighter (Japan, 2 players)", MACHINE_SUPPORTS_SAVE )
-GAME( 1990, pitfightb, pitfight, pitfight, pitfight, atarig1_state, pitfightb, ROT0, "bootleg", "Pit Fighter (bootleg)", MACHINE_SUPPORTS_SAVE )
+GAME( 1990, hydra, 0, hydra, hydra, atarig1_state, hydra, ROT0, "Atari Games", "Hydra", MACHINE_SUPPORTS_SAVE )
+GAME( 1990, hydrap, hydra, hydrap, hydra, atarig1_state, hydrap, ROT0, "Atari Games", "Hydra (prototype 5/14/90)", MACHINE_SUPPORTS_SAVE )
+GAME( 1990, hydrap2, hydra, hydrap, hydra, atarig1_state, hydrap, ROT0, "Atari Games", "Hydra (prototype 5/25/90)", MACHINE_SUPPORTS_SAVE )
+
+GAME( 1990, pitfight, 0, pitfight9, pitfight, atarig1_state, pitfight, ROT0, "Atari Games", "Pit Fighter (rev 9)", MACHINE_SUPPORTS_SAVE )
+GAME( 1990, pitfight7, pitfight, pitfight7, pitfight, atarig1_state, pitfight, ROT0, "Atari Games", "Pit Fighter (rev 7)", MACHINE_SUPPORTS_SAVE )
+GAME( 1990, pitfight6, pitfight, pitfightj, pitfight, atarig1_state, pitfight, ROT0, "Atari Games", "Pit Fighter (rev 6)", MACHINE_SUPPORTS_SAVE )
+GAME( 1990, pitfight5, pitfight, pitfight7, pitfight, atarig1_state, pitfight, ROT0, "Atari Games", "Pit Fighter (rev 5)", MACHINE_SUPPORTS_SAVE )
+GAME( 1990, pitfight4, pitfight, pitfight, pitfight, atarig1_state, pitfight, ROT0, "Atari Games", "Pit Fighter (rev 4)", MACHINE_SUPPORTS_SAVE )
+GAME( 1990, pitfight3, pitfight, pitfight, pitfight, atarig1_state, pitfight, ROT0, "Atari Games", "Pit Fighter (rev 3)", MACHINE_SUPPORTS_SAVE )
+GAME( 1990, pitfightj, pitfight, pitfightj, pitfightj, atarig1_state,pitfight, ROT0, "Atari Games", "Pit Fighter (Japan, 2 players)", MACHINE_SUPPORTS_SAVE )
+GAME( 1990, pitfightb, pitfight, pitfightb, pitfight, atarig1_state, pitfightb, ROT0, "bootleg", "Pit Fighter (bootleg)", MACHINE_SUPPORTS_SAVE )
diff --git a/src/mame/drivers/atarisy1.cpp b/src/mame/drivers/atarisy1.cpp
index bc643691371..faf9e1d9562 100644
--- a/src/mame/drivers/atarisy1.cpp
+++ b/src/mame/drivers/atarisy1.cpp
@@ -713,8 +713,6 @@ static MACHINE_CONFIG_START( atarisy1, atarisy1_state )
MCFG_CPU_PROGRAM_MAP(main_map)
MCFG_DEVICE_VBLANK_INT_DRIVER("screen", atarigen_state, video_int_gen)
- MCFG_SLAPSTIC_ADD("slapstic")
-
MCFG_CPU_ADD("audiocpu", M6502, ATARI_CLOCK_14MHz/8)
MCFG_CPU_PROGRAM_MAP(sound_map)
@@ -775,6 +773,30 @@ static MACHINE_CONFIG_START( atarisy1, atarisy1_state )
MCFG_VIA6522_WRITEPB_HANDLER(WRITE8(atarisy1_state, via_pb_w))
MACHINE_CONFIG_END
+static MACHINE_CONFIG_DERIVED( marble, atarisy1 )
+ MCFG_SLAPSTIC_ADD("slapstic", 103)
+MACHINE_CONFIG_END
+
+static MACHINE_CONFIG_DERIVED( peterpak, atarisy1 )
+ MCFG_SLAPSTIC_ADD("slapstic", 107)
+MACHINE_CONFIG_END
+
+static MACHINE_CONFIG_DERIVED( indytemp, atarisy1 )
+ MCFG_SLAPSTIC_ADD("slapstic", 105)
+MACHINE_CONFIG_END
+
+static MACHINE_CONFIG_DERIVED( roadrunn, atarisy1 )
+ MCFG_SLAPSTIC_ADD("slapstic", 108)
+MACHINE_CONFIG_END
+
+static MACHINE_CONFIG_DERIVED( roadb109, atarisy1 )
+ MCFG_SLAPSTIC_ADD("slapstic", 109)
+MACHINE_CONFIG_END
+
+static MACHINE_CONFIG_DERIVED( roadb110, atarisy1 )
+ MCFG_SLAPSTIC_ADD("slapstic", 110)
+MACHINE_CONFIG_END
+
/*************************************
@@ -2405,7 +2427,7 @@ ROM_END
DRIVER_INIT_MEMBER(atarisy1_state,marble)
{
- slapstic_configure(*m_maincpu, 0x080000, 0, 103);
+ slapstic_configure(*m_maincpu, 0x080000, 0);
m_joystick_type = 0; /* none */
m_trackball_type = 1; /* rotated */
@@ -2414,7 +2436,7 @@ DRIVER_INIT_MEMBER(atarisy1_state,marble)
DRIVER_INIT_MEMBER(atarisy1_state,peterpak)
{
- slapstic_configure(*m_maincpu, 0x080000, 0, 107);
+ slapstic_configure(*m_maincpu, 0x080000, 0);
m_joystick_type = 1; /* digital */
m_trackball_type = 0; /* none */
@@ -2423,7 +2445,7 @@ DRIVER_INIT_MEMBER(atarisy1_state,peterpak)
DRIVER_INIT_MEMBER(atarisy1_state,indytemp)
{
- slapstic_configure(*m_maincpu, 0x080000, 0, 105);
+ slapstic_configure(*m_maincpu, 0x080000, 0);
m_joystick_type = 1; /* digital */
m_trackball_type = 0; /* none */
@@ -2432,25 +2454,16 @@ DRIVER_INIT_MEMBER(atarisy1_state,indytemp)
DRIVER_INIT_MEMBER(atarisy1_state,roadrunn)
{
- slapstic_configure(*m_maincpu, 0x080000, 0, 108);
+ slapstic_configure(*m_maincpu, 0x080000, 0);
m_joystick_type = 2; /* analog */
m_trackball_type = 0; /* none */
}
-DRIVER_INIT_MEMBER(atarisy1_state,roadb109)
-{
- slapstic_configure(*m_maincpu, 0x080000, 0, 109);
-
- m_joystick_type = 3; /* pedal */
- m_trackball_type = 2; /* steering wheel */
-}
-
-
-DRIVER_INIT_MEMBER(atarisy1_state,roadb110)
+DRIVER_INIT_MEMBER(atarisy1_state,roadblst)
{
- slapstic_configure(*m_maincpu, 0x080000, 0, 110);
+ slapstic_configure(*m_maincpu, 0x080000, 0);
m_joystick_type = 3; /* pedal */
m_trackball_type = 2; /* steering wheel */
@@ -2464,35 +2477,35 @@ DRIVER_INIT_MEMBER(atarisy1_state,roadb110)
*
*************************************/
-GAME( 1984, atarisy1, 0, atarisy1, peterpak, atarisy1_state, peterpak, ROT0, "Atari Games", "Atari System 1 BIOS", MACHINE_IS_BIOS_ROOT )
-
-GAME( 1984, marble, atarisy1, atarisy1, marble, atarisy1_state, marble, ROT0, "Atari Games", "Marble Madness (set 1)", 0 )
-GAME( 1984, marble2, marble, atarisy1, marble, atarisy1_state, marble, ROT0, "Atari Games", "Marble Madness (set 2)", 0 )
-GAME( 1984, marble3, marble, atarisy1, marble, atarisy1_state, marble, ROT0, "Atari Games", "Marble Madness (set 3)", 0 )
-GAME( 1984, marble4, marble, atarisy1, marble, atarisy1_state, marble, ROT0, "Atari Games", "Marble Madness (set 4)", 0 )
-GAME( 1984, marble5, marble, atarisy1, marble, atarisy1_state, marble, ROT0, "Atari Games", "Marble Madness (set 5 - LSI Cartridge)", 0 )
-
-GAME( 1984, peterpak, atarisy1, atarisy1, peterpak, atarisy1_state, peterpak, ROT0, "Atari Games", "Peter Pack-Rat", 0 )
-
-GAME( 1985, indytemp, atarisy1, atarisy1, indytemp, atarisy1_state, indytemp, ROT0, "Atari Games", "Indiana Jones and the Temple of Doom (set 1)", 0 )
-GAME( 1985, indytemp2,indytemp, atarisy1, indytemp, atarisy1_state, indytemp, ROT0, "Atari Games", "Indiana Jones and the Temple of Doom (set 2)", 0 )
-GAME( 1985, indytemp3,indytemp, atarisy1, indytemp, atarisy1_state, indytemp, ROT0, "Atari Games", "Indiana Jones and the Temple of Doom (set 3)", 0 )
-GAME( 1985, indytemp4,indytemp, atarisy1, indytemp, atarisy1_state, indytemp, ROT0, "Atari Games", "Indiana Jones and the Temple of Doom (set 4)", 0 )
-GAME( 1985, indytempd,indytemp, atarisy1, indytemp, atarisy1_state, indytemp, ROT0, "Atari Games", "Indiana Jones and the Temple of Doom (German)", 0 )
-GAME( 1985, indytempc,indytemp, atarisy1, indytemc, atarisy1_state, indytemp, ROT0, "Atari Games", "Indiana Jones and the Temple of Doom (Cocktail)", MACHINE_IMPERFECT_GRAPHICS )
-
-GAME( 1985, roadrunn, atarisy1, atarisy1, roadrunn, atarisy1_state, roadrunn, ROT0, "Atari Games", "Road Runner (rev 2)", 0 )
-GAME( 1985, roadrunn2,roadrunn, atarisy1, roadrunn, atarisy1_state, roadrunn, ROT0, "Atari Games", "Road Runner (rev 1+)", 0 )
-GAME( 1985, roadrunn1,roadrunn, atarisy1, roadrunn, atarisy1_state, roadrunn, ROT0, "Atari Games", "Road Runner (rev 1)", 0 )
-
-GAME( 1987, roadblst, atarisy1, atarisy1, roadblst, atarisy1_state, roadb110, ROT0, "Atari Games", "Road Blasters (upright, rev 4)", 0 )
-GAME( 1987, roadblstg, roadblst, atarisy1, roadblst, atarisy1_state, roadb109, ROT0, "Atari Games", "Road Blasters (upright, German, rev 3)", 0 )
-GAME( 1987, roadblst3, roadblst, atarisy1, roadblst, atarisy1_state, roadb109, ROT0, "Atari Games", "Road Blasters (upright, rev 3)", 0 )
-GAME( 1987, roadblstg2, roadblst, atarisy1, roadblst, atarisy1_state, roadb110, ROT0, "Atari Games", "Road Blasters (upright, German, rev 2)", 0 )
-GAME( 1987, roadblst2, roadblst, atarisy1, roadblst, atarisy1_state, roadb110, ROT0, "Atari Games", "Road Blasters (upright, rev 2)", 0 )
-GAME( 1987, roadblstg1, roadblst, atarisy1, roadblst, atarisy1_state, roadb109, ROT0, "Atari Games", "Road Blasters (upright, German, rev 1)", 0 )
-GAME( 1987, roadblst1, roadblst, atarisy1, roadblst, atarisy1_state, roadb109, ROT0, "Atari Games", "Road Blasters (upright, rev 1)", 0 )
-GAME( 1987, roadblstc, roadblst, atarisy1, roadblst, atarisy1_state, roadb110, ROT0, "Atari Games", "Road Blasters (cockpit, rev 2)", 0 )
-GAME( 1987, roadblstcg, roadblst, atarisy1, roadblst, atarisy1_state, roadb109, ROT0, "Atari Games", "Road Blasters (cockpit, German, rev 1)", MACHINE_IMPERFECT_GRAPHICS )
-GAME( 1987, roadblstc1, roadblst, atarisy1, roadblst, atarisy1_state, roadb109, ROT0, "Atari Games", "Road Blasters (cockpit, rev 1)", MACHINE_IMPERFECT_GRAPHICS )
-GAME( 1987, roadblstgu, roadblst, atarisy1, roadblst, atarisy1_state, roadb109, ROT0, "Atari Games", "Road Blasters (upright, German, rev ?)", 0 )
+GAME( 1984, atarisy1, 0, peterpak, peterpak, atarisy1_state, peterpak, ROT0, "Atari Games", "Atari System 1 BIOS", MACHINE_IS_BIOS_ROOT )
+
+GAME( 1984, marble, atarisy1, marble, marble, atarisy1_state, marble, ROT0, "Atari Games", "Marble Madness (set 1)", 0 )
+GAME( 1984, marble2, marble, marble, marble, atarisy1_state, marble, ROT0, "Atari Games", "Marble Madness (set 2)", 0 )
+GAME( 1984, marble3, marble, marble, marble, atarisy1_state, marble, ROT0, "Atari Games", "Marble Madness (set 3)", 0 )
+GAME( 1984, marble4, marble, marble, marble, atarisy1_state, marble, ROT0, "Atari Games", "Marble Madness (set 4)", 0 )
+GAME( 1984, marble5, marble, marble, marble, atarisy1_state, marble, ROT0, "Atari Games", "Marble Madness (set 5 - LSI Cartridge)", 0 )
+
+GAME( 1984, peterpak, atarisy1, peterpak, peterpak, atarisy1_state, peterpak, ROT0, "Atari Games", "Peter Pack-Rat", 0 )
+
+GAME( 1985, indytemp, atarisy1, indytemp, indytemp, atarisy1_state, indytemp, ROT0, "Atari Games", "Indiana Jones and the Temple of Doom (set 1)", 0 )
+GAME( 1985, indytemp2,indytemp, indytemp, indytemp, atarisy1_state, indytemp, ROT0, "Atari Games", "Indiana Jones and the Temple of Doom (set 2)", 0 )
+GAME( 1985, indytemp3,indytemp, indytemp, indytemp, atarisy1_state, indytemp, ROT0, "Atari Games", "Indiana Jones and the Temple of Doom (set 3)", 0 )
+GAME( 1985, indytemp4,indytemp, indytemp, indytemp, atarisy1_state, indytemp, ROT0, "Atari Games", "Indiana Jones and the Temple of Doom (set 4)", 0 )
+GAME( 1985, indytempd,indytemp, indytemp, indytemp, atarisy1_state, indytemp, ROT0, "Atari Games", "Indiana Jones and the Temple of Doom (German)", 0 )
+GAME( 1985, indytempc,indytemp, indytemp, indytemc, atarisy1_state, indytemp, ROT0, "Atari Games", "Indiana Jones and the Temple of Doom (Cocktail)", MACHINE_IMPERFECT_GRAPHICS )
+
+GAME( 1985, roadrunn, atarisy1, roadrunn, roadrunn, atarisy1_state, roadrunn, ROT0, "Atari Games", "Road Runner (rev 2)", 0 )
+GAME( 1985, roadrunn2,roadrunn, roadrunn, roadrunn, atarisy1_state, roadrunn, ROT0, "Atari Games", "Road Runner (rev 1+)", 0 )
+GAME( 1985, roadrunn1,roadrunn, roadrunn, roadrunn, atarisy1_state, roadrunn, ROT0, "Atari Games", "Road Runner (rev 1)", 0 )
+
+GAME( 1987, roadblst, atarisy1, roadb110, roadblst, atarisy1_state, roadblst, ROT0, "Atari Games", "Road Blasters (upright, rev 4)", 0 )
+GAME( 1987, roadblstg, roadblst, roadb109, roadblst, atarisy1_state, roadblst, ROT0, "Atari Games", "Road Blasters (upright, German, rev 3)", 0 )
+GAME( 1987, roadblst3, roadblst, roadb109, roadblst, atarisy1_state, roadblst, ROT0, "Atari Games", "Road Blasters (upright, rev 3)", 0 )
+GAME( 1987, roadblstg2, roadblst, roadb110, roadblst, atarisy1_state, roadblst, ROT0, "Atari Games", "Road Blasters (upright, German, rev 2)", 0 )
+GAME( 1987, roadblst2, roadblst, roadb110, roadblst, atarisy1_state, roadblst, ROT0, "Atari Games", "Road Blasters (upright, rev 2)", 0 )
+GAME( 1987, roadblstg1, roadblst, roadb109, roadblst, atarisy1_state, roadblst, ROT0, "Atari Games", "Road Blasters (upright, German, rev 1)", 0 )
+GAME( 1987, roadblst1, roadblst, roadb109, roadblst, atarisy1_state, roadblst, ROT0, "Atari Games", "Road Blasters (upright, rev 1)", 0 )
+GAME( 1987, roadblstc, roadblst, roadb110, roadblst, atarisy1_state, roadblst, ROT0, "Atari Games", "Road Blasters (cockpit, rev 2)", 0 )
+GAME( 1987, roadblstcg, roadblst, roadb109, roadblst, atarisy1_state, roadblst, ROT0, "Atari Games", "Road Blasters (cockpit, German, rev 1)", MACHINE_IMPERFECT_GRAPHICS )
+GAME( 1987, roadblstc1, roadblst, roadb109, roadblst, atarisy1_state, roadblst, ROT0, "Atari Games", "Road Blasters (cockpit, rev 1)", MACHINE_IMPERFECT_GRAPHICS )
+GAME( 1987, roadblstgu, roadblst, roadb109, roadblst, atarisy1_state, roadblst, ROT0, "Atari Games", "Road Blasters (upright, German, rev ?)", 0 )
diff --git a/src/mame/drivers/atarisy2.cpp b/src/mame/drivers/atarisy2.cpp
index 539e86f5a05..72161c4ca03 100644
--- a/src/mame/drivers/atarisy2.cpp
+++ b/src/mame/drivers/atarisy2.cpp
@@ -127,9 +127,6 @@
#include "emu.h"
#include "includes/atarisy2.h"
-#include "sound/tms5220.h"
-#include "sound/2151intf.h"
-#include "sound/pokey.h"
#define MASTER_CLOCK XTAL_20MHz
@@ -328,7 +325,7 @@ READ8_MEMBER(atarisy2_state::switch_6502_r)
{
int result = ioport("1840")->read();
- if ((m_has_tms5220) && (machine().device<tms5220_device>("tms")->readyq_r() == 0))
+ if (m_tms5220.found() && (m_tms5220->readyq_r() == 0))
result &= ~0x04;
if (!(ioport("1801")->read() & 0x80)) result |= 0x10;
@@ -340,10 +337,10 @@ WRITE8_MEMBER(atarisy2_state::switch_6502_w)
{
output().set_led_value(0, data & 0x04);
output().set_led_value(1, data & 0x08);
- if (m_has_tms5220)
+ if (m_tms5220.found())
{
data = 12 | ((data >> 5) & 1);
- machine().device<tms5220_device>("tms")->set_frequency(MASTER_CLOCK/4 / (16 - data) / 2);
+ m_tms5220->set_frequency(MASTER_CLOCK/4 / (16 - data) / 2);
}
}
@@ -629,7 +626,7 @@ WRITE8_MEMBER(atarisy2_state::mixer_w)
if (!(data & 0x02)) rbott += 1.0/47;
if (!(data & 0x04)) rbott += 1.0/22;
gain = (rbott == 0) ? 1.0 : ((1.0/rbott) / (rtop + (1.0/rbott)));
- set_ym2151_volume(gain * 100);
+ m_ym2151->set_output_gain(ALL_OUTPUTS, gain);
/* bits 3-4 control the volume of the POKEYs, using 47k and 100k resistors */
rtop = 1.0/(1.0/100 + 1.0/100);
@@ -637,16 +634,20 @@ WRITE8_MEMBER(atarisy2_state::mixer_w)
if (!(data & 0x08)) rbott += 1.0/47;
if (!(data & 0x10)) rbott += 1.0/22;
gain = (rbott == 0) ? 1.0 : ((1.0/rbott) / (rtop + (1.0/rbott)));
- set_pokey_volume(gain * 100);
+ m_pokey1->set_output_gain(ALL_OUTPUTS, gain);
+ m_pokey2->set_output_gain(ALL_OUTPUTS, gain);
/* bits 5-7 control the volume of the TMS5220, using 22k, 47k, and 100k resistors */
- rtop = 1.0/(1.0/100 + 1.0/100);
- rbott = 0;
- if (!(data & 0x20)) rbott += 1.0/100;
- if (!(data & 0x40)) rbott += 1.0/47;
- if (!(data & 0x80)) rbott += 1.0/22;
- gain = (rbott == 0) ? 1.0 : ((1.0/rbott) / (rtop + (1.0/rbott)));
- set_tms5220_volume(gain * 100);
+ if (m_tms5220.found())
+ {
+ rtop = 1.0/(1.0/100 + 1.0/100);
+ rbott = 0;
+ if (!(data & 0x20)) rbott += 1.0/100;
+ if (!(data & 0x40)) rbott += 1.0/47;
+ if (!(data & 0x80)) rbott += 1.0/22;
+ gain = (rbott == 0) ? 1.0 : ((1.0/rbott) / (rtop + (1.0/rbott)));
+ m_tms5220->set_output_gain(ALL_OUTPUTS, gain);
+ }
}
@@ -664,9 +665,9 @@ WRITE8_MEMBER(atarisy2_state::sound_reset_w)
/* a large number of signals are reset when this happens */
m_soundcomm->reset();
machine().device("ymsnd")->reset();
- if (m_has_tms5220)
+ if (m_tms5220.found())
{
- machine().device("tms")->reset(); // technically what happens is the tms5220 gets a long stream of 0xFF written to it when sound_reset_state is 0 which halts the chip after a few frames, but this works just as well, even if it isn't exactly true to hardware... The hardware may not have worked either, the resistors to pull input to 0xFF are fighting against the ls263 gate holding the latched value to be sent to the chip.
+ m_tms5220->reset(); // technically what happens is the tms5220 gets a long stream of 0xFF written to it when sound_reset_state is 0 which halts the chip after a few frames, but this works just as well, even if it isn't exactly true to hardware... The hardware may not have worked either, the resistors to pull input to 0xFF are fighting against the ls263 gate holding the latched value to be sent to the chip.
}
mixer_w(space, 0, 0);
}
@@ -714,17 +715,17 @@ READ8_MEMBER(atarisy2_state::sound_6502_r)
WRITE8_MEMBER(atarisy2_state::tms5220_w)
{
- if (m_has_tms5220)
+ if (m_tms5220.found())
{
- machine().device<tms5220_device>("tms")->data_w(space, 0, data);
+ m_tms5220->data_w(space, 0, data);
}
}
WRITE8_MEMBER(atarisy2_state::tms5220_strobe_w)
{
- if (m_has_tms5220)
+ if (m_tms5220.found())
{
- machine().device<tms5220_device>("tms")->wsq_w(1-(offset & 1));
+ m_tms5220->wsq_w(1-(offset & 1));
}
}
@@ -1193,8 +1194,6 @@ static MACHINE_CONFIG_START( atarisy2, atarisy2_state )
MCFG_CPU_PROGRAM_MAP(sound_map)
MCFG_DEVICE_PERIODIC_INT_DEVICE("soundcomm", atari_sound_comm_device, sound_irq_gen, (double)MASTER_CLOCK/2/16/16/16/10)
- MCFG_SLAPSTIC_ADD("slapstic")
-
MCFG_MACHINE_START_OVERRIDE(atarisy2_state,atarisy2)
MCFG_MACHINE_RESET_OVERRIDE(atarisy2_state,atarisy2)
@@ -1240,15 +1239,42 @@ static MACHINE_CONFIG_START( atarisy2, atarisy2_state )
MACHINE_CONFIG_END
-static MACHINE_CONFIG_DERIVED( sprint, atarisy2 )
+static MACHINE_CONFIG_DERIVED( paperboy, atarisy2 )
+ MCFG_SLAPSTIC_ADD("slapstic", 105)
+MACHINE_CONFIG_END
+
+
+static MACHINE_CONFIG_DERIVED( 720, atarisy2 )
+ /* without the default EEPROM, 720 hangs at startup due to communication
+ issues with the sound CPU; temporarily increasing the sound CPU frequency
+ to ~2.2MHz "fixes" the problem */
+
+ MCFG_SLAPSTIC_ADD("slapstic", 107)
+MACHINE_CONFIG_END
- /* basic machine hardware */
+
+static MACHINE_CONFIG_DERIVED( ssprint, atarisy2 )
+ MCFG_SLAPSTIC_ADD("slapstic", 108)
+
+ /* sound hardware */
+ MCFG_DEVICE_REMOVE("tms")
+MACHINE_CONFIG_END
+
+
+static MACHINE_CONFIG_DERIVED( csprint, atarisy2 )
+ MCFG_SLAPSTIC_ADD("slapstic", 109)
/* sound hardware */
MCFG_DEVICE_REMOVE("tms")
MACHINE_CONFIG_END
+static MACHINE_CONFIG_DERIVED( apb, atarisy2 )
+ MCFG_SLAPSTIC_ADD("slapstic", 110)
+MACHINE_CONFIG_END
+
+
+
/*************************************
*
@@ -3131,7 +3157,7 @@ DRIVER_INIT_MEMBER(atarisy2_state,paperboy)
int i;
UINT8 *cpu1 = memregion("maincpu")->base();
- m_slapstic->slapstic_init(machine(), 105);
+ m_slapstic->slapstic_init();
/* expand the 16k program ROMs into full 64k chunks */
for (i = 0x10000; i < 0x90000; i += 0x20000)
@@ -3142,21 +3168,16 @@ DRIVER_INIT_MEMBER(atarisy2_state,paperboy)
}
m_pedal_count = 0;
- m_has_tms5220 = 1;
- machine().device<tms5220_device>("tms")->rsq_w(1); // /RS is tied high on sys2 hw
+ m_tms5220->rsq_w(1); // /RS is tied high on sys2 hw
}
DRIVER_INIT_MEMBER(atarisy2_state,720)
{
- /* without the default EEPROM, 720 hangs at startup due to communication
- issues with the sound CPU; temporarily increasing the sound CPU frequency
- to ~2.2MHz "fixes" the problem */
- m_slapstic->slapstic_init(machine(), 107);
+ m_slapstic->slapstic_init();
m_pedal_count = -1;
- m_has_tms5220 = 1;
- machine().device<tms5220_device>("tms")->rsq_w(1); // /RS is tied high on sys2 hw
+ m_tms5220->rsq_w(1); // /RS is tied high on sys2 hw
}
@@ -3165,14 +3186,13 @@ DRIVER_INIT_MEMBER(atarisy2_state,ssprint)
int i;
UINT8 *cpu1 = memregion("maincpu")->base();
- m_slapstic->slapstic_init(machine(), 108);
+ m_slapstic->slapstic_init();
/* expand the 32k program ROMs into full 64k chunks */
for (i = 0x10000; i < 0x90000; i += 0x20000)
memcpy(&cpu1[i + 0x10000], &cpu1[i], 0x10000);
m_pedal_count = 3;
- m_has_tms5220 = 0;
}
@@ -3181,24 +3201,22 @@ DRIVER_INIT_MEMBER(atarisy2_state,csprint)
int i;
UINT8 *cpu1 = memregion("maincpu")->base();
- m_slapstic->slapstic_init(machine(), 109);
+ m_slapstic->slapstic_init();
/* expand the 32k program ROMs into full 64k chunks */
for (i = 0x10000; i < 0x90000; i += 0x20000)
memcpy(&cpu1[i + 0x10000], &cpu1[i], 0x10000);
m_pedal_count = 2;
- m_has_tms5220 = 0;
}
DRIVER_INIT_MEMBER(atarisy2_state,apb)
{
- m_slapstic->slapstic_init(machine(), 110);
+ m_slapstic->slapstic_init();
m_pedal_count = 2;
- m_has_tms5220 = 1;
- machine().device<tms5220_device>("tms")->rsq_w(1); // /RS is tied high on sys2 hw
+ m_tms5220->rsq_w(1); // /RS is tied high on sys2 hw
}
@@ -3209,40 +3227,40 @@ DRIVER_INIT_MEMBER(atarisy2_state,apb)
*
*************************************/
-GAME( 1984, paperboy, 0, atarisy2, paperboy, atarisy2_state, paperboy, ROT0, "Atari Games", "Paperboy (rev 3)", MACHINE_SUPPORTS_SAVE )
-GAME( 1984, paperboyr2,paperboy, atarisy2, paperboy, atarisy2_state, paperboy, ROT0, "Atari Games", "Paperboy (rev 2)", MACHINE_SUPPORTS_SAVE )
-GAME( 1984, paperboyr1,paperboy, atarisy2, paperboy, atarisy2_state, paperboy, ROT0, "Atari Games", "Paperboy (rev 1)", MACHINE_SUPPORTS_SAVE )
-
-GAME( 1986, 720, 0, atarisy2, 720, atarisy2_state, 720, ROT0, "Atari Games", "720 Degrees (rev 4)", MACHINE_SUPPORTS_SAVE )
-GAME( 1986, 720r3, 720, atarisy2, 720, atarisy2_state, 720, ROT0, "Atari Games", "720 Degrees (rev 3)", MACHINE_SUPPORTS_SAVE )
-GAME( 1986, 720r2, 720, atarisy2, 720, atarisy2_state, 720, ROT0, "Atari Games", "720 Degrees (rev 2)", MACHINE_SUPPORTS_SAVE )
-GAME( 1986, 720r1, 720, atarisy2, 720, atarisy2_state, 720, ROT0, "Atari Games", "720 Degrees (rev 1)", MACHINE_SUPPORTS_SAVE )
-GAME( 1986, 720g, 720, atarisy2, 720, atarisy2_state, 720, ROT0, "Atari Games", "720 Degrees (German, rev 2)", MACHINE_SUPPORTS_SAVE )
-GAME( 1986, 720gr1, 720, atarisy2, 720, atarisy2_state, 720, ROT0, "Atari Games", "720 Degrees (German, rev 1)", MACHINE_SUPPORTS_SAVE )
-
-GAME( 1986, ssprint, 0, sprint, ssprint, atarisy2_state, ssprint, ROT0, "Atari Games", "Super Sprint (rev 4)", MACHINE_SUPPORTS_SAVE )
-GAME( 1986, ssprint3, ssprint, sprint, ssprint, atarisy2_state, ssprint, ROT0, "Atari Games", "Super Sprint (rev 3)", MACHINE_SUPPORTS_SAVE )
-GAME( 1986, ssprint1, ssprint, sprint, ssprint, atarisy2_state, ssprint, ROT0, "Atari Games", "Super Sprint (rev 1)", MACHINE_SUPPORTS_SAVE )
-GAME( 1986, ssprintg, ssprint, sprint, ssprint, atarisy2_state, ssprint, ROT0, "Atari Games", "Super Sprint (German, rev 2)", MACHINE_SUPPORTS_SAVE )
-GAME( 1986, ssprintg1,ssprint, sprint, ssprint, atarisy2_state, ssprint, ROT0, "Atari Games", "Super Sprint (German, rev 1)", MACHINE_SUPPORTS_SAVE )
-GAME( 1986, ssprintf, ssprint, sprint, ssprint, atarisy2_state, ssprint, ROT0, "Atari Games", "Super Sprint (French)", MACHINE_SUPPORTS_SAVE )
-GAME( 1986, ssprints, ssprint, sprint, ssprint, atarisy2_state, ssprint, ROT0, "Atari Games", "Super Sprint (Spanish)", MACHINE_SUPPORTS_SAVE )
-
-GAME( 1986, csprint, 0, sprint, csprint, atarisy2_state, csprint, ROT0, "Atari Games", "Championship Sprint (rev 3)", MACHINE_SUPPORTS_SAVE )
-GAME( 1986, csprint2, csprint, sprint, csprint, atarisy2_state, csprint, ROT0, "Atari Games", "Championship Sprint (rev 2)", MACHINE_SUPPORTS_SAVE )
-GAME( 1986, csprint1, csprint, sprint, csprint, atarisy2_state, csprint, ROT0, "Atari Games", "Championship Sprint (rev 1)", MACHINE_SUPPORTS_SAVE )
-GAME( 1986, csprintg, csprint, sprint, csprint, atarisy2_state, csprint, ROT0, "Atari Games", "Championship Sprint (German, rev 2)", MACHINE_SUPPORTS_SAVE )
-GAME( 1986, csprintg1,csprint, sprint, csprint, atarisy2_state, csprint, ROT0, "Atari Games", "Championship Sprint (German, rev 1)", MACHINE_SUPPORTS_SAVE )
-GAME( 1986, csprintf, csprint, sprint, csprint, atarisy2_state, csprint, ROT0, "Atari Games", "Championship Sprint (French)", MACHINE_SUPPORTS_SAVE )
-GAME( 1986, csprints, csprint, sprint, csprint, atarisy2_state, csprint, ROT0, "Atari Games", "Championship Sprint (Spanish, rev 2)", MACHINE_SUPPORTS_SAVE )
-GAME( 1986, csprints1,csprint, sprint, csprint, atarisy2_state, csprint, ROT0, "Atari Games", "Championship Sprint (Spanish, rev 1)", MACHINE_SUPPORTS_SAVE )
-
-GAME( 1987, apb, 0, atarisy2, apb, atarisy2_state, apb, ROT270, "Atari Games", "APB - All Points Bulletin (rev 7)", MACHINE_SUPPORTS_SAVE )
-GAME( 1987, apb6, apb, atarisy2, apb, atarisy2_state, apb, ROT270, "Atari Games", "APB - All Points Bulletin (rev 6)", MACHINE_SUPPORTS_SAVE )
-GAME( 1987, apb5, apb, atarisy2, apb, atarisy2_state, apb, ROT270, "Atari Games", "APB - All Points Bulletin (rev 5)", MACHINE_SUPPORTS_SAVE )
-GAME( 1987, apb4, apb, atarisy2, apb, atarisy2_state, apb, ROT270, "Atari Games", "APB - All Points Bulletin (rev 4)", MACHINE_SUPPORTS_SAVE )
-GAME( 1987, apb3, apb, atarisy2, apb, atarisy2_state, apb, ROT270, "Atari Games", "APB - All Points Bulletin (rev 3)", MACHINE_SUPPORTS_SAVE )
-GAME( 1987, apb2, apb, atarisy2, apb, atarisy2_state, apb, ROT270, "Atari Games", "APB - All Points Bulletin (rev 2)", MACHINE_SUPPORTS_SAVE )
-GAME( 1987, apb1, apb, atarisy2, apb, atarisy2_state, apb, ROT270, "Atari Games", "APB - All Points Bulletin (rev 1)", MACHINE_SUPPORTS_SAVE )
-GAME( 1987, apbg, apb, atarisy2, apb, atarisy2_state, apb, ROT270, "Atari Games", "APB - All Points Bulletin (German)", MACHINE_SUPPORTS_SAVE )
-GAME( 1987, apbf, apb, atarisy2, apb, atarisy2_state, apb, ROT270, "Atari Games", "APB - All Points Bulletin (French)", MACHINE_SUPPORTS_SAVE )
+GAME( 1984, paperboy, 0, paperboy, paperboy, atarisy2_state, paperboy, ROT0, "Atari Games", "Paperboy (rev 3)", MACHINE_SUPPORTS_SAVE )
+GAME( 1984, paperboyr2,paperboy, paperboy, paperboy, atarisy2_state, paperboy, ROT0, "Atari Games", "Paperboy (rev 2)", MACHINE_SUPPORTS_SAVE )
+GAME( 1984, paperboyr1,paperboy, paperboy, paperboy, atarisy2_state, paperboy, ROT0, "Atari Games", "Paperboy (rev 1)", MACHINE_SUPPORTS_SAVE )
+
+GAME( 1986, 720, 0, 720, 720, atarisy2_state, 720, ROT0, "Atari Games", "720 Degrees (rev 4)", MACHINE_SUPPORTS_SAVE )
+GAME( 1986, 720r3, 720, 720, 720, atarisy2_state, 720, ROT0, "Atari Games", "720 Degrees (rev 3)", MACHINE_SUPPORTS_SAVE )
+GAME( 1986, 720r2, 720, 720, 720, atarisy2_state, 720, ROT0, "Atari Games", "720 Degrees (rev 2)", MACHINE_SUPPORTS_SAVE )
+GAME( 1986, 720r1, 720, 720, 720, atarisy2_state, 720, ROT0, "Atari Games", "720 Degrees (rev 1)", MACHINE_SUPPORTS_SAVE )
+GAME( 1986, 720g, 720, 720, 720, atarisy2_state, 720, ROT0, "Atari Games", "720 Degrees (German, rev 2)", MACHINE_SUPPORTS_SAVE )
+GAME( 1986, 720gr1, 720, 720, 720, atarisy2_state, 720, ROT0, "Atari Games", "720 Degrees (German, rev 1)", MACHINE_SUPPORTS_SAVE )
+
+GAME( 1986, ssprint, 0, ssprint, ssprint, atarisy2_state, ssprint, ROT0, "Atari Games", "Super Sprint (rev 4)", MACHINE_SUPPORTS_SAVE )
+GAME( 1986, ssprint3, ssprint, ssprint, ssprint, atarisy2_state, ssprint, ROT0, "Atari Games", "Super Sprint (rev 3)", MACHINE_SUPPORTS_SAVE )
+GAME( 1986, ssprint1, ssprint, ssprint, ssprint, atarisy2_state, ssprint, ROT0, "Atari Games", "Super Sprint (rev 1)", MACHINE_SUPPORTS_SAVE )
+GAME( 1986, ssprintg, ssprint, ssprint, ssprint, atarisy2_state, ssprint, ROT0, "Atari Games", "Super Sprint (German, rev 2)", MACHINE_SUPPORTS_SAVE )
+GAME( 1986, ssprintg1,ssprint, ssprint, ssprint, atarisy2_state, ssprint, ROT0, "Atari Games", "Super Sprint (German, rev 1)", MACHINE_SUPPORTS_SAVE )
+GAME( 1986, ssprintf, ssprint, ssprint, ssprint, atarisy2_state, ssprint, ROT0, "Atari Games", "Super Sprint (French)", MACHINE_SUPPORTS_SAVE )
+GAME( 1986, ssprints, ssprint, ssprint, ssprint, atarisy2_state, ssprint, ROT0, "Atari Games", "Super Sprint (Spanish)", MACHINE_SUPPORTS_SAVE )
+
+GAME( 1986, csprint, 0, csprint, csprint, atarisy2_state, csprint, ROT0, "Atari Games", "Championship Sprint (rev 3)", MACHINE_SUPPORTS_SAVE )
+GAME( 1986, csprint2, csprint, csprint, csprint, atarisy2_state, csprint, ROT0, "Atari Games", "Championship Sprint (rev 2)", MACHINE_SUPPORTS_SAVE )
+GAME( 1986, csprint1, csprint, csprint, csprint, atarisy2_state, csprint, ROT0, "Atari Games", "Championship Sprint (rev 1)", MACHINE_SUPPORTS_SAVE )
+GAME( 1986, csprintg, csprint, csprint, csprint, atarisy2_state, csprint, ROT0, "Atari Games", "Championship Sprint (German, rev 2)", MACHINE_SUPPORTS_SAVE )
+GAME( 1986, csprintg1,csprint, csprint, csprint, atarisy2_state, csprint, ROT0, "Atari Games", "Championship Sprint (German, rev 1)", MACHINE_SUPPORTS_SAVE )
+GAME( 1986, csprintf, csprint, csprint, csprint, atarisy2_state, csprint, ROT0, "Atari Games", "Championship Sprint (French)", MACHINE_SUPPORTS_SAVE )
+GAME( 1986, csprints, csprint, csprint, csprint, atarisy2_state, csprint, ROT0, "Atari Games", "Championship Sprint (Spanish, rev 2)", MACHINE_SUPPORTS_SAVE )
+GAME( 1986, csprints1,csprint, csprint, csprint, atarisy2_state, csprint, ROT0, "Atari Games", "Championship Sprint (Spanish, rev 1)", MACHINE_SUPPORTS_SAVE )
+
+GAME( 1987, apb, 0, apb, apb, atarisy2_state, apb, ROT270, "Atari Games", "APB - All Points Bulletin (rev 7)", MACHINE_SUPPORTS_SAVE )
+GAME( 1987, apb6, apb, apb, apb, atarisy2_state, apb, ROT270, "Atari Games", "APB - All Points Bulletin (rev 6)", MACHINE_SUPPORTS_SAVE )
+GAME( 1987, apb5, apb, apb, apb, atarisy2_state, apb, ROT270, "Atari Games", "APB - All Points Bulletin (rev 5)", MACHINE_SUPPORTS_SAVE )
+GAME( 1987, apb4, apb, apb, apb, atarisy2_state, apb, ROT270, "Atari Games", "APB - All Points Bulletin (rev 4)", MACHINE_SUPPORTS_SAVE )
+GAME( 1987, apb3, apb, apb, apb, atarisy2_state, apb, ROT270, "Atari Games", "APB - All Points Bulletin (rev 3)", MACHINE_SUPPORTS_SAVE )
+GAME( 1987, apb2, apb, apb, apb, atarisy2_state, apb, ROT270, "Atari Games", "APB - All Points Bulletin (rev 2)", MACHINE_SUPPORTS_SAVE )
+GAME( 1987, apb1, apb, apb, apb, atarisy2_state, apb, ROT270, "Atari Games", "APB - All Points Bulletin (rev 1)", MACHINE_SUPPORTS_SAVE )
+GAME( 1987, apbg, apb, apb, apb, atarisy2_state, apb, ROT270, "Atari Games", "APB - All Points Bulletin (German)", MACHINE_SUPPORTS_SAVE )
+GAME( 1987, apbf, apb, apb, apb, atarisy2_state, apb, ROT270, "Atari Games", "APB - All Points Bulletin (French)", MACHINE_SUPPORTS_SAVE )
diff --git a/src/mame/drivers/atetris.cpp b/src/mame/drivers/atetris.cpp
index 61892668c33..a4f0365d896 100644
--- a/src/mame/drivers/atetris.cpp
+++ b/src/mame/drivers/atetris.cpp
@@ -330,7 +330,7 @@ static MACHINE_CONFIG_START( atetris, atetris_state )
MCFG_CPU_ADD("maincpu", M6502,MASTER_CLOCK/8)
MCFG_CPU_PROGRAM_MAP(main_map)
- MCFG_SLAPSTIC_ADD("slapstic")
+ MCFG_SLAPSTIC_ADD("slapstic", 101)
MCFG_NVRAM_ADD_1FILL("nvram")
@@ -367,7 +367,7 @@ static MACHINE_CONFIG_START( atetrisb2, atetris_state )
MCFG_CPU_ADD("maincpu", M6502,BOOTLEG_CLOCK/8)
MCFG_CPU_PROGRAM_MAP(atetrisb2_map)
- MCFG_SLAPSTIC_ADD("slapstic")
+ MCFG_SLAPSTIC_ADD("slapstic", 101)
MCFG_NVRAM_ADD_1FILL("nvram")
@@ -544,7 +544,7 @@ DRIVER_INIT_MEMBER(atetris_state,atetris)
{
UINT8 *rgn = memregion("maincpu")->base();
- m_slapstic_device->slapstic_init(machine(), 101);
+ m_slapstic_device->slapstic_init();
m_slapstic_source = &rgn[0x10000];
m_slapstic_base = &rgn[0x04000];
}
diff --git a/src/mame/drivers/atom.cpp b/src/mame/drivers/atom.cpp
index db5aa2fcddf..6952735fb9e 100644
--- a/src/mame/drivers/atom.cpp
+++ b/src/mame/drivers/atom.cpp
@@ -286,6 +286,22 @@ static ADDRESS_MAP_START( atombb_mem, AS_PROGRAM, 8, atom_state )
AM_RANGE(0xf000, 0xffff) AM_ROM AM_REGION(SY6502_TAG, 0)
ADDRESS_MAP_END
+/*-------------------------------------------------
+ ADDRESS_MAP( prophet2_mem )
+-------------------------------------------------*/
+
+//static ADDRESS_MAP_START( prophet2_mem, AS_PROGRAM, 8, atom_state )
+// AM_RANGE(0x0000, 0x09ff) AM_RAM
+// AM_RANGE(0x0a00, 0x7fff) AM_RAM
+// AM_RANGE(0x8000, 0x97ff) AM_RAM AM_SHARE("video_ram")
+// AM_RANGE(0x9800, 0x9fff) AM_RAM
+// AM_RANGE(0xb000, 0xb003) AM_MIRROR(0x3fc) AM_DEVREADWRITE(INS8255_TAG, i8255_device, read, write)
+//// AM_RANGE(0xb400, 0xb403) AM_DEVREADWRITE(MC6854_TAG, mc6854_device, read, write)
+//// AM_RANGE(0xb404, 0xb404) AM_READ_PORT("ECONET")
+// AM_RANGE(0xb800, 0xb80f) AM_MIRROR(0x3f0) AM_DEVREADWRITE(R6522_TAG, via6522_device, read, write)
+// AM_RANGE(0xc000, 0xffff) AM_ROM AM_REGION(SY6502_TAG, 0)
+//ADDRESS_MAP_END
+
/***************************************************************************
INPUT PORTS
***************************************************************************/
@@ -675,7 +691,7 @@ SLOT_INTERFACE_END
FLOPPY_FORMATS_MEMBER(atom_state::floppy_formats)
FLOPPY_ATOM_FORMAT
-FLOPPY_FORMATS_END
+FLOPPY_FORMATS_END0
/*-------------------------------------------------
MACHINE_DRIVER( atom )
@@ -715,7 +731,9 @@ static MACHINE_CONFIG_START( atom, atom_state )
MCFG_I8271_IRQ_CALLBACK(WRITELINE(atom_state, atom_8271_interrupt_callback))
MCFG_I8271_HDL_CALLBACK(WRITELINE(atom_state, motor_w))
MCFG_FLOPPY_DRIVE_ADD(I8271_TAG ":0", atom_floppies, "525sssd", atom_state::floppy_formats)
+ MCFG_FLOPPY_DRIVE_SOUND(true)
MCFG_FLOPPY_DRIVE_ADD(I8271_TAG ":1", atom_floppies, "525sssd", atom_state::floppy_formats)
+ MCFG_FLOPPY_DRIVE_SOUND(true)
MCFG_CENTRONICS_ADD(CENTRONICS_TAG, centronics_devices, "printer")
MCFG_CENTRONICS_ACK_HANDLER(DEVWRITELINE(R6522_TAG, via6522_device, write_ca1))
@@ -726,6 +744,7 @@ static MACHINE_CONFIG_START( atom, atom_state )
MCFG_CASSETTE_ADD("cassette")
MCFG_CASSETTE_FORMATS(atom_cassette_formats)
MCFG_CASSETTE_DEFAULT_STATE(CASSETTE_STOPPED | CASSETTE_MOTOR_ENABLED | CASSETTE_SPEAKER_MUTED)
+ MCFG_CASSETTE_INTERFACE("atom_cass")
MCFG_QUICKLOAD_ADD("quickload", atom_state, atom_atm, "atm", 0)
@@ -736,11 +755,14 @@ static MACHINE_CONFIG_START( atom, atom_state )
/* internal ram */
MCFG_RAM_ADD(RAM_TAG)
- MCFG_RAM_DEFAULT_SIZE("2K")
- MCFG_RAM_EXTRA_OPTIONS("4K,6K,8K,10K,12K,32K")
+ MCFG_RAM_DEFAULT_SIZE("32K")
+ MCFG_RAM_EXTRA_OPTIONS("2K,4K,6K,8K,10K,12K")
+ MCFG_RAM_DEFAULT_VALUE(0x00)
/* Software lists */
- MCFG_SOFTWARE_LIST_ADD("cart_list","atom")
+ MCFG_SOFTWARE_LIST_ADD("rom_list","atom_rom")
+ MCFG_SOFTWARE_LIST_ADD("cass_list","atom_cass")
+ MCFG_SOFTWARE_LIST_ADD("flop_list","atom_flop")
MACHINE_CONFIG_END
/*-------------------------------------------------
@@ -823,6 +845,7 @@ static MACHINE_CONFIG_START( atombb, atom_state )
MCFG_CASSETTE_ADD("cassette")
MCFG_CASSETTE_FORMATS(atom_cassette_formats)
MCFG_CASSETTE_DEFAULT_STATE(CASSETTE_STOPPED | CASSETTE_MOTOR_ENABLED | CASSETTE_SPEAKER_MUTED)
+ MCFG_CASSETTE_INTERFACE("atom_cass")
/* internal ram */
MCFG_RAM_ADD(RAM_TAG)
@@ -831,6 +854,42 @@ static MACHINE_CONFIG_START( atombb, atom_state )
MACHINE_CONFIG_END
+/*-------------------------------------------------
+ MACHINE_DRIVER( prophet2 )
+-------------------------------------------------*/
+
+//static MACHINE_CONFIG_DERIVED( prophet2, atom )
+// /* basic machine hardware */
+// MCFG_CPU_MODIFY(SY6502_TAG)
+// MCFG_CPU_PROGRAM_MAP(prophet2_mem)
+//
+// /* fdc */
+// MCFG_DEVICE_REMOVE(I8271_TAG)
+// MCFG_DEVICE_REMOVE(I8271_TAG ":0")
+// MCFG_DEVICE_REMOVE(I8271_TAG ":1")
+//
+// /* Software lists */
+// MCFG_SOFTWARE_LIST_REMOVE("flop_list")
+//MACHINE_CONFIG_END
+
+/*-------------------------------------------------
+ MACHINE_DRIVER( prophet3 )
+-------------------------------------------------*/
+
+//static MACHINE_CONFIG_DERIVED( prophet3, atom )
+//
+//MACHINE_CONFIG_END
+
+/*-------------------------------------------------
+ MACHINE_DRIVER( atommc )
+-------------------------------------------------*/
+
+//static MACHINE_CONFIG_DERIVED( atommc, atom )
+// /* Software lists */
+// MCFG_SOFTWARE_LIST_ADD("mmc_list","atom_mmc")
+// MCFG_SOFTWARE_LIST_REMOVE("flop_list")
+//MACHINE_CONFIG_END
+
/***************************************************************************
ROMS
***************************************************************************/
@@ -870,6 +929,21 @@ ROM_START( atombb )
ROM_LOAD( "bbcbasic.rom", 0x0000, 0x4000, CRC(79434781) SHA1(4a7393f3a45ea309f744441c16723e2ef447a281) )
ROM_END
+//#define rom_prophet2 rom_atom
+
+//#define rom_prophet3 rom_atom
+
+/*-------------------------------------------------
+ ROM( atommc )
+-------------------------------------------------*/
+
+//ROM_START( atommc )
+// ROM_REGION( 0x4000, SY6502_TAG, 0 )
+// ROM_LOAD( "abasic.ic20", 0x0000, 0x1000, CRC(289b7791) SHA1(0072c83458a9690a3ea1f6094f0f38cf8e96a445) )
+// ROM_CONTINUE( 0x3000, 0x1000 )
+// ROM_LOAD( "afloat.ic21", 0x1000, 0x1000, CRC(81d86af7) SHA1(ebcde5b36cb3a3344567cbba4c7b9fde015f4802) )
+// ROM_LOAD( "atommc2-2.9-a000.rom", 0x2000, 0x1000, CRC(ba73e36c) SHA1(ea9739e96f3283c90b5306288c796fc01144b771) )
+//ROM_END
DRIVER_INIT_MEMBER(atomeb_state, atomeb)
{
@@ -887,8 +961,10 @@ DRIVER_INIT_MEMBER(atomeb_state, atomeb)
SYSTEM DRIVERS
***************************************************************************/
-/* YEAR NAME PARENT COMPAT MACHINE INPUT INIT COMPANY FULLNAME */
-COMP( 1979, atom, 0, 0, atom, atom, driver_device, 0, "Acorn", "Atom" , 0)
-COMP( 1979, atomeb, atom, 0, atomeb, atom, atomeb_state, atomeb, "Acorn", "Atom with Eprom Box" , 0)
-COMP( 1979, atombb, atom, 0, atombb, atom, driver_device, 0, "Acorn", "Atom with BBC Basic" , 0)
-//COMP( 1983, prophet2, atom, 0, atom, atom, driver_device, 0, "Busicomputers", "Prophet 2" , 0)
+/* YEAR NAME PARENT COMPAT MACHINE INPUT CLASS INIT COMPANY FULLNAME FLAGS */
+COMP( 1979, atom, 0, 0, atom, atom, driver_device, 0, "Acorn", "Atom" , 0)
+COMP( 1979, atomeb, atom, 0, atomeb, atom, atomeb_state, atomeb, "Acorn", "Atom with Eprom Box" , 0)
+COMP( 1982, atombb, atom, 0, atombb, atom, driver_device, 0, "Acorn", "Atom with BBC Basic" , 0)
+//COMP( 1983, prophet2, atom, 0, prophet2, atom, driver_device, 0, "Busicomputers", "Prophet 2" , 0)
+//COMP( 1983, prophet3, atom, 0, prophet3, atom, driver_device, 0, "Busicomputers", "Prophet 3" , 0)
+//COMP( 2011, atommc, atom, 0, atommc, atom, driver_device, 0, "Acorn", "Atom with AtoMMC2" , 0)
diff --git a/src/mame/drivers/bagman.cpp b/src/mame/drivers/bagman.cpp
index fa953e17d33..8090f0cbc42 100644
--- a/src/mame/drivers/bagman.cpp
+++ b/src/mame/drivers/bagman.cpp
@@ -622,11 +622,11 @@ ROM_START( bagman )
ROM_LOAD( "c1_b01.bin", 0x0000, 0x1000, CRC(705193b2) SHA1(ca9cfd05f9195c2a38e8854012de51b6ee6bb403) )
ROM_LOAD( "f1_b03s.bin", 0x1000, 0x1000, CRC(dba1eda7) SHA1(26d877028b3a31dd671f9e667316c8a14780ca73) )
- ROM_REGION( 0x0060, "proms", 0 )
+ ROM_REGION( 0x0040, "proms", 0 )
ROM_LOAD( "p3.bin", 0x0000, 0x0020, CRC(2a855523) SHA1(91e032233fee397c90b7c1662934aca9e0671482) )
ROM_LOAD( "r3.bin", 0x0020, 0x0020, CRC(ae6f1019) SHA1(fd711882b670380cb4bd909c840ba06277b8fbe3) )
- ROM_REGION( 0x0060, "5110ctrl", 0)
+ ROM_REGION( 0x0020, "5110ctrl", 0)
ROM_LOAD( "r6.bin", 0x0000, 0x0020, CRC(c58a4f6a) SHA1(35ef244b3e94032df2610aa594ea5670b91e1449) ) /*state machine driving TMS5110*/
ROM_REGION( 0x2000, "tmsprom", 0 ) /* data for the TMS5110 speech chip */
@@ -651,11 +651,11 @@ ROM_START( bagnard )
ROM_LOAD( "bagnard.001", 0x0000, 0x1000, CRC(060b044c) SHA1(3121f07adb661663a2303085eea1b662968f8f98) )
ROM_LOAD( "bagnard.003", 0x1000, 0x1000, CRC(8043bc1a) SHA1(bd2f3dfe26cf8d987d9ecaa41eac4bdc4e16a692) )
- ROM_REGION( 0x0060, "proms", 0 )
+ ROM_REGION( 0x0040, "proms", 0 )
ROM_LOAD( "p3.bin", 0x0000, 0x0020, CRC(2a855523) SHA1(91e032233fee397c90b7c1662934aca9e0671482) )
ROM_LOAD( "r3.bin", 0x0020, 0x0020, CRC(ae6f1019) SHA1(fd711882b670380cb4bd909c840ba06277b8fbe3) )
- ROM_REGION( 0x0060, "5110ctrl", 0)
+ ROM_REGION( 0x0020, "5110ctrl", 0)
ROM_LOAD( "r6.bin", 0x0000, 0x0020, CRC(c58a4f6a) SHA1(35ef244b3e94032df2610aa594ea5670b91e1449) ) /*state machine driving TMS5110*/
ROM_REGION( 0x2000, "tmsprom", 0 ) /* data for the TMS5110 speech chip */
@@ -680,11 +680,11 @@ ROM_START( bagnarda )
ROM_LOAD( "bagman.001", 0x0000, 0x1000, CRC(1eb56acd) SHA1(f75f6709006e78417999d423d2078ed80eae73a2) )
ROM_LOAD( "bagman.003", 0x1000, 0x1000, CRC(0ad82a39) SHA1(30ac0ff5bc63934c3eb572c7c13df324757e5e44) )
- ROM_REGION( 0x0060, "proms", 0 )
+ ROM_REGION( 0x0040, "proms", 0 )
ROM_LOAD( "p3.bin", 0x0000, 0x0020, CRC(2a855523) SHA1(91e032233fee397c90b7c1662934aca9e0671482) )
ROM_LOAD( "r3.bin", 0x0020, 0x0020, CRC(ae6f1019) SHA1(fd711882b670380cb4bd909c840ba06277b8fbe3) )
- ROM_REGION( 0x0060, "5110ctrl", 0)
+ ROM_REGION( 0x0020, "5110ctrl", 0)
ROM_LOAD( "r6.bin", 0x0000, 0x0020, CRC(c58a4f6a) SHA1(35ef244b3e94032df2610aa594ea5670b91e1449) ) /*state machine driving TMS5110*/
ROM_REGION( 0x2000, "tmsprom", 0 ) /* data for the TMS5110 speech chip */
@@ -709,11 +709,11 @@ ROM_START( bagnardi ) // based on bagnard set with mods for license text
ROM_LOAD( "bagnardi_01.c1", 0x0000, 0x1000, CRC(060b044c) SHA1(3121f07adb661663a2303085eea1b662968f8f98) ) // == bagnard.001
ROM_LOAD( "bagnardi_03.f1", 0x1000, 0x1000, CRC(8043bc1a) SHA1(bd2f3dfe26cf8d987d9ecaa41eac4bdc4e16a692) ) // == bagnard.003
- ROM_REGION( 0x0060, "proms", 0 )
+ ROM_REGION( 0x0040, "proms", 0 )
ROM_LOAD( "p3.bin", 0x0000, 0x0020, CRC(2a855523) SHA1(91e032233fee397c90b7c1662934aca9e0671482) )
ROM_LOAD( "r3.bin", 0x0020, 0x0020, CRC(ae6f1019) SHA1(fd711882b670380cb4bd909c840ba06277b8fbe3) )
- ROM_REGION( 0x0060, "5110ctrl", 0)
+ ROM_REGION( 0x0020, "5110ctrl", 0)
ROM_LOAD( "r6.bin", 0x0000, 0x0020, CRC(c58a4f6a) SHA1(35ef244b3e94032df2610aa594ea5670b91e1449) ) /*state machine driving TMS5110*/
ROM_REGION( 0x2000, "tmsprom", 0 ) /* data for the TMS5110 speech chip */
@@ -739,11 +739,11 @@ ROM_START( bagmans )
ROM_LOAD( "a2_1c.bin", 0x0000, 0x1000, CRC(f3e11bd7) SHA1(43ee00ff777008c89f619eb183e7c5e63f6c7694) )
ROM_LOAD( "a2_1f.bin", 0x1000, 0x1000, CRC(d0f7105b) SHA1(fb382703850a4ded567706e02ebb7f3e22531b7c) )
- ROM_REGION( 0x0060, "proms", 0 )
+ ROM_REGION( 0x0040, "proms", 0 )
ROM_LOAD( "p3.bin", 0x0000, 0x0020, CRC(2a855523) SHA1(91e032233fee397c90b7c1662934aca9e0671482) )
ROM_LOAD( "r3.bin", 0x0020, 0x0020, CRC(ae6f1019) SHA1(fd711882b670380cb4bd909c840ba06277b8fbe3) )
- ROM_REGION( 0x0060, "5110ctrl", 0)
+ ROM_REGION( 0x0020, "5110ctrl", 0)
ROM_LOAD( "r6.bin", 0x0000, 0x0020, CRC(c58a4f6a) SHA1(35ef244b3e94032df2610aa594ea5670b91e1449) ) /*state machine driving TMS5110*/
ROM_REGION( 0x2000, "tmsprom", 0 ) /* data for the TMS5110 speech chip */
@@ -768,11 +768,11 @@ ROM_START( bagmans2 )
ROM_LOAD( "a2_1c.bin", 0x0000, 0x1000, CRC(f3e11bd7) SHA1(43ee00ff777008c89f619eb183e7c5e63f6c7694) )
ROM_LOAD( "a2_1f.bin", 0x1000, 0x1000, CRC(d0f7105b) SHA1(fb382703850a4ded567706e02ebb7f3e22531b7c) )
- ROM_REGION( 0x0060, "proms", 0 )
+ ROM_REGION( 0x0040, "proms", 0 )
ROM_LOAD( "p3.bin", 0x0000, 0x0020, CRC(2a855523) SHA1(91e032233fee397c90b7c1662934aca9e0671482) )
ROM_LOAD( "r3.bin", 0x0020, 0x0020, CRC(ae6f1019) SHA1(fd711882b670380cb4bd909c840ba06277b8fbe3) )
- ROM_REGION( 0x0060, "5110ctrl", 0)
+ ROM_REGION( 0x0020, "5110ctrl", 0)
ROM_LOAD( "r6.bin", 0x0000, 0x0020, CRC(c58a4f6a) SHA1(35ef244b3e94032df2610aa594ea5670b91e1449) ) /*state machine driving TMS5110*/
ROM_REGION( 0x2000, "tmsprom", 0 ) /* data for the TMS5110 speech chip */
@@ -809,11 +809,11 @@ ROM_START( sbagman )
ROM_LOAD( "1.1c", 0x0000, 0x1000, CRC(a046ff44) SHA1(af319cfb74e5efe435c26e971de13bd390f4b378) )
ROM_LOAD( "3.1f", 0x1000, 0x1000, CRC(a4422da4) SHA1(3aa55ca8c99566c1c9eb097b6d645c4216e09dfb) )
- ROM_REGION( 0x0060, "proms", 0 )
+ ROM_REGION( 0x0040, "proms", 0 )
ROM_LOAD( "p3.bin", 0x0000, 0x0020, CRC(2a855523) SHA1(91e032233fee397c90b7c1662934aca9e0671482) )
ROM_LOAD( "r3.bin", 0x0020, 0x0020, CRC(ae6f1019) SHA1(fd711882b670380cb4bd909c840ba06277b8fbe3) )
- ROM_REGION( 0x0060, "5110ctrl", 0)
+ ROM_REGION( 0x0020, "5110ctrl", 0)
ROM_LOAD( "r6.bin", 0x0000, 0x0020, CRC(c58a4f6a) SHA1(35ef244b3e94032df2610aa594ea5670b91e1449) ) /*state machine driving TMS5110*/
ROM_REGION( 0x2000, "tmsprom", 0 ) /* data for the TMS5110 speech chip */
@@ -848,11 +848,11 @@ ROM_START( sbagmans )
ROM_LOAD( "sbag_1c.bin", 0x0000, 0x1000, CRC(262f870a) SHA1(90877b869a7e927cfa4f9729ec3d6eac3a95dc8f) )
ROM_LOAD( "sbag_1f.bin", 0x1000, 0x1000, CRC(350ed0fb) SHA1(c7804e9618ebc88a1e3684a92a98d9a181441a1f) )
- ROM_REGION( 0x0060, "proms", 0 )
+ ROM_REGION( 0x0040, "proms", 0 )
ROM_LOAD( "p3.bin", 0x0000, 0x0020, CRC(2a855523) SHA1(91e032233fee397c90b7c1662934aca9e0671482) )
ROM_LOAD( "r3.bin", 0x0020, 0x0020, CRC(ae6f1019) SHA1(fd711882b670380cb4bd909c840ba06277b8fbe3) )
- ROM_REGION( 0x0060, "5110ctrl", 0)
+ ROM_REGION( 0x0020, "5110ctrl", 0)
ROM_LOAD( "r6.bin", 0x0000, 0x0020, CRC(c58a4f6a) SHA1(35ef244b3e94032df2610aa594ea5670b91e1449) ) /*state machine driving TMS5110*/
ROM_REGION( 0x2000, "tmsprom", 0 ) /* data for the TMS5110 speech chip */
diff --git a/src/mame/drivers/barata.cpp b/src/mame/drivers/barata.cpp
index 071928676f0..e4e2b974ca5 100644
--- a/src/mame/drivers/barata.cpp
+++ b/src/mame/drivers/barata.cpp
@@ -54,7 +54,7 @@ public:
DECLARE_WRITE8_MEMBER(port2_w);
DECLARE_READ8_MEMBER(port2_r);
void fpga_send(unsigned char cmd);
-
+
required_device<cpu_device> m_maincpu;
required_device<dac_device> m_dac;
private:
diff --git a/src/mame/drivers/batman.cpp b/src/mame/drivers/batman.cpp
index 00e1c69c5e6..69b0aae9e7a 100644
--- a/src/mame/drivers/batman.cpp
+++ b/src/mame/drivers/batman.cpp
@@ -76,7 +76,7 @@ WRITE16_MEMBER(batman_state::latch_w)
if ((oldword ^ m_latch_data) & 0x7000)
{
m_screen->update_partial(m_screen->vpos());
- m_vad->alpha()->mark_all_dirty();
+ m_vad->alpha().mark_all_dirty();
m_alpha_tile_bank = (m_latch_data >> 12) & 7;
}
}
diff --git a/src/mame/drivers/bbc.cpp b/src/mame/drivers/bbc.cpp
index e5dc2f9c022..1450a44a654 100644
--- a/src/mame/drivers/bbc.cpp
+++ b/src/mame/drivers/bbc.cpp
@@ -940,12 +940,13 @@ static MACHINE_CONFIG_DERIVED( bbcb, bbca )
MCFG_ECONET_SLOT_ADD("econet254", 254, econet_devices, NULL)
/* software lists */
- MCFG_SOFTWARE_LIST_ADD("cass_ls_b", "bbcb_cass")
- MCFG_SOFTWARE_LIST_ADD("flop_ls_b", "bbcb_flop")
- MCFG_SOFTWARE_LIST_ADD("flop_ls_b_orig", "bbcb_orig_flop")
- MCFG_SOFTWARE_LIST_ADD("flop_ls_z80", "bbc_z80_flop")
- MCFG_SOFTWARE_LIST_ADD("flop_ls_32016", "bbc_32016_flop")
- MCFG_SOFTWARE_LIST_ADD("flop_ls_68000", "bbc_68000_flop")
+ MCFG_SOFTWARE_LIST_ADD("cass_ls_b", "bbcb_cass")
+ MCFG_SOFTWARE_LIST_ADD("flop_ls_b", "bbcb_flop")
+ MCFG_SOFTWARE_LIST_ADD("flop_ls_b_orig", "bbcb_flop_orig")
+ MCFG_SOFTWARE_LIST_ADD("flop_ls_z80", "bbc_flop_z80")
+ MCFG_SOFTWARE_LIST_ADD("flop_ls_32016", "bbc_flop_32016")
+ MCFG_SOFTWARE_LIST_ADD("flop_ls_68000", "bbc_flop_68000")
+ MCFG_SOFTWARE_LIST_ADD("flop_ls_6502", "bbc_flop_6502")
MACHINE_CONFIG_END
@@ -970,7 +971,7 @@ MACHINE_CONFIG_END
static MACHINE_CONFIG_DERIVED( bbcb_de, bbcb )
/* software lists */
- MCFG_SOFTWARE_LIST_ADD("flop_ls_b_de", "bbcb_de_cass")
+ MCFG_SOFTWARE_LIST_ADD("flop_ls_b_de", "bbcb_cass_de")
MACHINE_CONFIG_END
@@ -982,7 +983,7 @@ static MACHINE_CONFIG_DERIVED( bbcb_us, bbcb )
MCFG_SCREEN_REFRESH_RATE(60)
/* software lists */
- MCFG_SOFTWARE_LIST_ADD("flop_ls_b_us", "bbcb_us_flop")
+ MCFG_SOFTWARE_LIST_ADD("flop_ls_b_us", "bbcb_flop_us")
MACHINE_CONFIG_END
@@ -1033,10 +1034,11 @@ static MACHINE_CONFIG_DERIVED( torchf, bbcb )
/* Add Torch Z80 Communicator co-processor */
/* software lists */
- MCFG_SOFTWARE_LIST_ADD("flop_ls_torch", "bbc_torch_flop")
+ MCFG_SOFTWARE_LIST_ADD("flop_ls_torch", "bbc_flop_torch")
MCFG_SOFTWARE_LIST_REMOVE("flop_ls_z80")
MCFG_SOFTWARE_LIST_REMOVE("flop_ls_32016")
MCFG_SOFTWARE_LIST_REMOVE("flop_ls_68000")
+ MCFG_SOFTWARE_LIST_REMOVE("flop_ls_6502")
MACHINE_CONFIG_END
@@ -1082,6 +1084,7 @@ static MACHINE_CONFIG_DERIVED( abc110, bbcbp )
MCFG_SOFTWARE_LIST_REMOVE("flop_ls_b_orig")
MCFG_SOFTWARE_LIST_REMOVE("flop_ls_32016")
MCFG_SOFTWARE_LIST_REMOVE("flop_ls_68000")
+ MCFG_SOFTWARE_LIST_REMOVE("flop_ls_6502")
MACHINE_CONFIG_END
@@ -1104,6 +1107,7 @@ static MACHINE_CONFIG_DERIVED( acw443, bbcbp )
MCFG_SOFTWARE_LIST_REMOVE("flop_ls_b_orig")
MCFG_SOFTWARE_LIST_REMOVE("flop_ls_z80")
MCFG_SOFTWARE_LIST_REMOVE("flop_ls_68000")
+ MCFG_SOFTWARE_LIST_REMOVE("flop_ls_6502")
MACHINE_CONFIG_END
@@ -1124,6 +1128,7 @@ static MACHINE_CONFIG_DERIVED( abc310, bbcbp )
MCFG_SOFTWARE_LIST_REMOVE("flop_ls_z80")
MCFG_SOFTWARE_LIST_REMOVE("flop_ls_32016")
MCFG_SOFTWARE_LIST_REMOVE("flop_ls_68000")
+ MCFG_SOFTWARE_LIST_REMOVE("flop_ls_6502")
MACHINE_CONFIG_END
@@ -1159,6 +1164,7 @@ static MACHINE_CONFIG_DERIVED( reutapm, bbcbp )
MCFG_SOFTWARE_LIST_REMOVE("flop_ls_z80")
MCFG_SOFTWARE_LIST_REMOVE("flop_ls_32016")
MCFG_SOFTWARE_LIST_REMOVE("flop_ls_68000")
+ MCFG_SOFTWARE_LIST_REMOVE("flop_ls_6502")
MACHINE_CONFIG_END
@@ -1240,13 +1246,13 @@ static MACHINE_CONFIG_START( bbcm, bbc_state )
MCFG_SOFTWARE_LIST_ADD("cass_ls_m", "bbcm_cass")
MCFG_SOFTWARE_LIST_ADD("flop_ls_m", "bbcm_flop")
MCFG_SOFTWARE_LIST_ADD("cart_ls_m", "bbcm_cart")
- MCFG_SOFTWARE_LIST_ADD("flop_ls_z80", "bbc_z80_flop")
- MCFG_SOFTWARE_LIST_ADD("flop_ls_32016", "bbc_32016_flop")
- MCFG_SOFTWARE_LIST_ADD("flop_ls_68000", "bbc_68000_flop")
- MCFG_SOFTWARE_LIST_COMPATIBLE_ADD("cass_ls_a", "bbca_cass")
- MCFG_SOFTWARE_LIST_COMPATIBLE_ADD("cass_ls_b", "bbcb_cass")
- MCFG_SOFTWARE_LIST_COMPATIBLE_ADD("flop_ls_b", "bbcb_flop")
- MCFG_SOFTWARE_LIST_COMPATIBLE_ADD("flop_ls_b_orig", "bbcb_orig_flop")
+ MCFG_SOFTWARE_LIST_ADD("flop_ls_z80", "bbc_flop_z80")
+ MCFG_SOFTWARE_LIST_ADD("flop_ls_32016", "bbc_flop_32016")
+ MCFG_SOFTWARE_LIST_ADD("flop_ls_68000", "bbc_flop_68000")
+ MCFG_SOFTWARE_LIST_COMPATIBLE_ADD("cass_ls_a", "bbca_cass")
+ MCFG_SOFTWARE_LIST_COMPATIBLE_ADD("cass_ls_b", "bbcb_cass")
+ MCFG_SOFTWARE_LIST_COMPATIBLE_ADD("flop_ls_b", "bbcb_flop")
+ MCFG_SOFTWARE_LIST_COMPATIBLE_ADD("flop_ls_b_orig", "bbcb_flop_orig")
/* acia */
MCFG_DEVICE_ADD("acia6850", ACIA6850, 0)
@@ -1308,7 +1314,7 @@ static MACHINE_CONFIG_DERIVED( bbcmt, bbcm )
/* Add 65C102 co-processor */
/* software lists */
- MCFG_SOFTWARE_LIST_ADD("flop_ls_65c102", "bbc_65c102_flop")
+ MCFG_SOFTWARE_LIST_ADD("flop_ls_65c102", "bbc_flop_65c102")
MACHINE_CONFIG_END
@@ -1360,7 +1366,7 @@ static MACHINE_CONFIG_DERIVED( bbcm512, bbcm )
/* Add Intel 80186 co-processor */
/* software lists */
- MCFG_SOFTWARE_LIST_ADD("flop_ls_80186", "bbc_80186_flop")
+ MCFG_SOFTWARE_LIST_ADD("flop_ls_80186", "bbc_flop_80186")
MACHINE_CONFIG_END
@@ -1369,7 +1375,7 @@ static MACHINE_CONFIG_DERIVED( bbcmarm, bbcm )
/* Add ARM co-processor */
/* software lists */
- MCFG_SOFTWARE_LIST_ADD("flop_ls_arm", "bbc_arm_flop")
+ MCFG_SOFTWARE_LIST_ADD("flop_ls_arm", "bbc_flop_arm")
MACHINE_CONFIG_END
@@ -1652,10 +1658,12 @@ ROM_START(torchf)
ROM_DEFAULT_BIOS("mcp120cbl")
ROM_SYSTEM_BIOS( 0, "mcp120cbl", "MCP120CBL" )
ROMX_LOAD("mcp120cbl.rom", 0x38000, 0x4000, CRC(851d0879) SHA1(2e54ef15692ba7dd9fcfd1ef0d660464a772b156), ROM_BIOS(1))
- ROM_SYSTEM_BIOS( 1, "mcp041cbl", "MCP041CBL" )
- ROMX_LOAD("mcp041cbl.rom", 0x38000, 0x4000, CRC(b36f07f4) SHA1(bd53f09bf73357845a6f97df1ee9e5aea5cdca90), ROM_BIOS(2))
- ROM_SYSTEM_BIOS( 2, "cpn071", "CPN71+" )
- ROMX_LOAD("cpn071.rom", 0x38000, 0x2000, CRC(fcb1bdc8) SHA1(756e22f6d76eb26206765f92c78c7152944102b6), ROM_BIOS(3))
+ ROM_SYSTEM_BIOS( 1, "mcp101ci", "MCP101CI" )
+ ROMX_LOAD("mcp101ci.rom", 0x38000, 0x4000, NO_DUMP, ROM_BIOS(2))
+ ROM_SYSTEM_BIOS( 2, "mcp041cbl", "MCP041CBL" )
+ ROMX_LOAD("mcp041cbl.rom", 0x38000, 0x4000, CRC(b36f07f4) SHA1(bd53f09bf73357845a6f97df1ee9e5aea5cdca90), ROM_BIOS(3))
+ ROM_SYSTEM_BIOS( 3, "cpn071", "CPN71+" )
+ ROMX_LOAD("cpn071.rom", 0x38000, 0x2000, CRC(fcb1bdc8) SHA1(756e22f6d76eb26206765f92c78c7152944102b6), ROM_BIOS(4))
ROM_RELOAD( 0x3a000, 0x2000 )
ROM_REGION(0x4000, "os", 0)
@@ -2095,8 +2103,8 @@ COMP ( 1983, bbcb_us, bbcb, 0, bbcb_us, bbcb, bbc_state, bbc, "
COMP ( 1984, bbcb1770, bbcb, 0, bbcb1770, bbcb, bbc_state, bbc, "Acorn", "BBC Micro Model B w/1770 FDC", MACHINE_IMPERFECT_GRAPHICS)
COMP ( 1985, bbcbp, 0, bbcb, bbcbp, bbcbp, bbc_state, bbc, "Acorn", "BBC Micro Model B+ 64K", MACHINE_IMPERFECT_GRAPHICS)
COMP ( 1985, bbcbp128, bbcbp, 0, bbcbp128, bbcbp, bbc_state, bbc, "Acorn", "BBC Micro Model B+ 128K", MACHINE_IMPERFECT_GRAPHICS)
-COMP ( 1985, acw443, bbcbp, 0, acw443, abc, bbc_state, bbc, "Acorn", "ABC 210/Cambridge Workstation", MACHINE_NOT_WORKING)
COMP ( 1985, abc110, bbcbp, 0, abc110, abc, bbc_state, bbc, "Acorn", "ABC 110", MACHINE_NOT_WORKING)
+COMP ( 1985, acw443, bbcbp, 0, acw443, abc, bbc_state, bbc, "Acorn", "ABC 210/Cambridge Workstation", MACHINE_NOT_WORKING)
COMP ( 1985, abc310, bbcbp, 0, abc310, abc, bbc_state, bbc, "Acorn", "ABC 310", MACHINE_NOT_WORKING)
COMP ( 1985, reutapm, bbcbp, 0, reutapm, bbcb, bbc_state, bbc, "Acorn", "Reuters APM", MACHINE_NO_SOUND_HW | MACHINE_NOT_WORKING)
COMP ( 1986, bbcm, 0, bbcb, bbcm, bbcm, bbc_state, bbc, "Acorn", "BBC Master 128", MACHINE_IMPERFECT_GRAPHICS)
diff --git a/src/mame/drivers/bbcbc.cpp b/src/mame/drivers/bbcbc.cpp
index 3c50df82697..c2d6d661d9f 100644
--- a/src/mame/drivers/bbcbc.cpp
+++ b/src/mame/drivers/bbcbc.cpp
@@ -160,5 +160,5 @@ ROM_END
***************************************************************************/
-/* YEAR NAME PARENT COMPAT MACHINE INPUT INIT COMPANY FULLNAME FLAGS */
-CONS(1985, bbcbc, 0, 0, bbcbc, bbcbc, driver_device, 0, "BBC", "Bridge Companion", MACHINE_NO_SOUND_HW )
+/* YEAR NAME PARENT COMPAT MACHINE INPUT CLASS INIT COMPANY FULLNAME FLAGS */
+CONS(1985, bbcbc, 0, 0, bbcbc, bbcbc, driver_device, 0, "BBC Enterprises Ltd.", "Bridge Companion", MACHINE_NO_SOUND_HW )
diff --git a/src/mame/drivers/berzerk.cpp b/src/mame/drivers/berzerk.cpp
index 93b55f7c5c0..14d87d7d4ff 100644
--- a/src/mame/drivers/berzerk.cpp
+++ b/src/mame/drivers/berzerk.cpp
@@ -31,7 +31,8 @@ public:
m_custom(*this, "exidy"),
m_screen(*this, "screen"),
m_videoram(*this, "videoram"),
- m_colorram(*this, "colorram") { }
+ m_colorram(*this, "colorram")
+ { }
required_device<cpu_device> m_maincpu;
required_device<s14001a_device> m_s14001a;
@@ -92,8 +93,6 @@ public:
};
-#define MONITOR_TYPE_PORT_TAG ("MONITOR_TYPE")
-
#define MASTER_CLOCK (XTAL_10MHz)
#define MAIN_CPU_CLOCK (MASTER_CLOCK / 4)
#define PIXEL_CLOCK (MASTER_CLOCK / 2)
@@ -370,9 +369,6 @@ void berzerk_state::machine_reset()
*
*************************************/
-#define NUM_PENS (0x10)
-
-
void berzerk_state::video_start()
{
m_ls181_10c->mode_w(1);
@@ -434,7 +430,7 @@ READ8_MEMBER(berzerk_state::intercept_v256_r)
vpos_to_vsync_chain_counter(m_screen->vpos(), &counter, &v256);
- return (!m_intercept << 7) | v256;
+ return (m_intercept^1) << 7 | v256;
}
@@ -443,10 +439,9 @@ void berzerk_state::get_pens(rgb_t *pens)
static const int resistances_wg[] = { 750, 0 };
static const int resistances_el[] = { static_cast<int>(1.0 / ((1.0 / 750.0) + (1.0 / 360.0))), 0 };
- int color;
double color_weights[2];
- if (ioport(MONITOR_TYPE_PORT_TAG)->read() == 0)
+ if (ioport("MONITOR_TYPE")->read() == 0)
compute_resistor_weights(0, 0xff, -1.0,
2, resistances_wg, color_weights, 0, 270,
2, resistances_wg, color_weights, 0, 270,
@@ -457,7 +452,7 @@ void berzerk_state::get_pens(rgb_t *pens)
2, resistances_el, color_weights, 0, 270,
2, resistances_el, color_weights, 0, 270);
- for (color = 0; color < NUM_PENS; color++)
+ for (int color = 0; color < 0x10; color++)
{
UINT8 r_bit = (color >> 0) & 0x01;
UINT8 g_bit = (color >> 1) & 0x01;
@@ -475,12 +470,10 @@ void berzerk_state::get_pens(rgb_t *pens)
UINT32 berzerk_state::screen_update(screen_device &screen, bitmap_rgb32 &bitmap, const rectangle &cliprect)
{
- rgb_t pens[NUM_PENS];
- offs_t offs;
-
+ rgb_t pens[0x10];
get_pens(pens);
- for (offs = 0; offs < m_videoram.bytes(); offs++)
+ for (int offs = 0; offs < m_videoram.bytes(); offs++)
{
int i;
@@ -522,8 +515,6 @@ UINT32 berzerk_state::screen_update(screen_device &screen, bitmap_rgb32 &bitmap,
WRITE8_MEMBER(berzerk_state::audio_w)
{
- int clock_divisor;
-
switch (offset)
{
/* offset 4 writes to the S14001A */
@@ -532,28 +523,26 @@ WRITE8_MEMBER(berzerk_state::audio_w)
{
/* write data to the S14001 */
case 0:
- /* only if not busy */
- if (!m_s14001a->bsy_r())
- {
- m_s14001a->reg_w(data & 0x3f);
+ m_s14001a->data_w(space, 0, data & 0x3f);
- /* clock the chip -- via a 555 timer */
- m_s14001a->rst_w(1);
- m_s14001a->rst_w(0);
- }
+ /* clock the chip -- via a 555 timer */
+ m_s14001a->start_w(1);
+ m_s14001a->start_w(0);
break;
case 1:
+ {
/* volume */
- m_s14001a->set_volume(((data & 0x38) >> 3) + 1);
+ m_s14001a->force_update();
+ m_s14001a->set_output_gain(0, ((data >> 3 & 0xf) + 1) / 16.0);
/* clock control - the first LS161 divides the clock by 9 to 16, the 2nd by 8,
giving a final clock from 19.5kHz to 34.7kHz */
- clock_divisor = 16 - (data & 0x07);
-
+ int clock_divisor = 16 - (data & 0x07);
m_s14001a->set_clock(S14001_CLOCK / clock_divisor / 8);
break;
+ }
default: break; /* 2 and 3 are not connected */
}
@@ -569,7 +558,6 @@ WRITE8_MEMBER(berzerk_state::audio_w)
default:
m_custom->sh6840_w(space, offset, data);
break;
-
}
}
@@ -580,7 +568,7 @@ READ8_MEMBER(berzerk_state::audio_r)
{
/* offset 4 reads from the S14001A */
case 4:
- return (!m_s14001a->bsy_r()) ? 0x40 : 0x00;
+ return (m_s14001a->busy_r()) ? 0xc0 : 0x40;
/* offset 6 is open bus */
case 6:
logerror("attempted read from berzerk audio reg 6 (sfxctrl)!\n");
@@ -720,7 +708,7 @@ static INPUT_PORTS_START( common ) // used on all games
PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_COIN1 )
/* fake port for monitor type */
- PORT_START(MONITOR_TYPE_PORT_TAG)
+ PORT_START("MONITOR_TYPE")
PORT_CONFNAME( 0x01, 0x00, "Monitor Type" )
PORT_CONFSETTING( 0x00, "Wells-Gardner" )
PORT_CONFSETTING( 0x01, "Electrohome" )
@@ -832,7 +820,6 @@ static INPUT_PORTS_START( frenzy )
/* Bit 0 does some more hardware tests. According to the manual, both bit 0 & 1 must be:
- ON for Signature Analysis (S.A.)
- OFF for game operation */
- //PORT_BIT( 0x03, IP_ACTIVE_HIGH, IPT_UNUSED ) // F2:1,2
PORT_DIPNAME( 0x03, 0x00, "Hardware Tests" ) PORT_DIPLOCATION("F2:1,2")
PORT_DIPSETTING( 0x00, DEF_STR( Off ) )
PORT_DIPSETTING( 0x01, "Color test" )
@@ -894,7 +881,7 @@ static INPUT_PORTS_START( frenzy )
PORT_START("F5")
PORT_DIPNAME( 0xff, 0x01, "Coins/Credit A" ) PORT_DIPLOCATION("F5:1,2,3,4,5,6,7,8")
- PORT_DIPSETTING( 0x00, "0 (invalid)" ) // Can't insert coins
+ PORT_DIPSETTING( 0x00, "0 (invalid)" ) // Can't insert coins
PORT_DIPSETTING( 0x01, "1" )
PORT_DIPSETTING( 0x02, "2" )
PORT_DIPSETTING( 0x03, "3" )
@@ -914,7 +901,7 @@ static INPUT_PORTS_START( frenzy )
PORT_START("F6")
PORT_DIPNAME( 0xff, 0x01, "Coins/Credit B" ) PORT_DIPLOCATION("F6:1,2,3,4,5,6,7,8")
- PORT_DIPSETTING( 0x00, "0 (invalid)" ) // Can't insert coins
+ PORT_DIPSETTING( 0x00, "0 (invalid)" ) // Can't insert coins
PORT_DIPSETTING( 0x01, "1" )
PORT_DIPSETTING( 0x02, "2" )
PORT_DIPSETTING( 0x03, "3" )
@@ -976,22 +963,22 @@ static INPUT_PORTS_START( moonwarp )
PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_BUTTON4 ) // Hyper flip button is common for both players in cocktail mode.
PORT_START("P1")
- //PORT_BIT( 0x1f, IP_ACTIVE_HIGH, IPT_SPECIAL ) // spinner/dial
+ PORT_BIT( 0x1f, IP_ACTIVE_HIGH, IPT_SPECIAL ) // spinner/dial
PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_BUTTON3 )
PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_BUTTON2 )
PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_BUTTON1 )
PORT_START("P1_DIAL")
- PORT_BIT( 0xff, 0x0, IPT_DIAL ) PORT_SENSITIVITY(25) PORT_KEYDELTA(4) PORT_RESET
+ PORT_BIT( 0xff, 0x00, IPT_DIAL ) PORT_SENSITIVITY(25) PORT_KEYDELTA(4) PORT_RESET
PORT_START("P2")
- //PORT_BIT( 0x1f, IP_ACTIVE_HIGH, IPT_SPECIAL ) PORT_COCKTAIL // spinner/dial
+ PORT_BIT( 0x1f, IP_ACTIVE_HIGH, IPT_SPECIAL ) // spinner/dial(cocktail)
PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_BUTTON3 ) PORT_COCKTAIL
PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_BUTTON2 ) PORT_COCKTAIL
PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_BUTTON1 ) PORT_COCKTAIL
PORT_START("P2_DIAL")
- PORT_BIT( 0xff, 0x0, IPT_DIAL ) PORT_SENSITIVITY(25) PORT_KEYDELTA(4) PORT_COCKTAIL PORT_RESET
+ PORT_BIT( 0xff, 0x00, IPT_DIAL ) PORT_SENSITIVITY(25) PORT_KEYDELTA(4) PORT_COCKTAIL PORT_RESET
PORT_START("F2")
PORT_DIPNAME( 0x03, 0x00, "Hardware Tests" ) PORT_DIPLOCATION("F2:1,2")
@@ -1104,7 +1091,6 @@ static INPUT_PORTS_START( moonwarp )
PORT_DIPSETTING( 0x40, DEF_STR( Easy ) )
PORT_DIPSETTING( 0x80, DEF_STR( Normal ) )
PORT_DIPSETTING( 0xc0, DEF_STR( Hard ) )
-
INPUT_PORTS_END
@@ -1127,7 +1113,6 @@ static MACHINE_CONFIG_START( berzerk, berzerk_state )
MCFG_TTL74181_ADD("ls181_12c")
/* video hardware */
-
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_RAW_PARAMS(PIXEL_CLOCK, HTOTAL, HBEND, HBSTART, VTOTAL, VBEND, VBSTART)
MCFG_SCREEN_UPDATE_DRIVER(berzerk_state, screen_update)
@@ -1135,10 +1120,10 @@ static MACHINE_CONFIG_START( berzerk, berzerk_state )
/* audio hardware */
MCFG_SPEAKER_STANDARD_MONO("mono")
- MCFG_SOUND_ADD("speech", S14001A, 0) /* placeholder - the clock is software controllable */
- MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.50)
+ MCFG_SOUND_ADD("speech", S14001A, S14001_CLOCK/16/8) /* placeholder - the clock is software controllable */
+ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.00)
MCFG_SOUND_ADD("exidy", EXIDY, 0)
- MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.50)
+ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.33)
MACHINE_CONFIG_END
@@ -1203,8 +1188,7 @@ ROM_START( berzerk )
ROM_LOAD( "berzerk_rc31_5d.rom3.5d", 0x2000, 0x0800, CRC(fcaefa95) SHA1(07f849aa39f1e3db938187ffde4a46a588156ddc) )
ROM_LOAD( "berzerk_rc31_6d.rom4.6d", 0x2800, 0x0800, CRC(1e35b9a0) SHA1(5a5e549ec0e4803ab2d1eac6b3e7171aedf28244) )
ROM_LOAD( "berzerk_rc31_5c.rom5.5c", 0x3000, 0x0800, CRC(c8c665e5) SHA1(e9eca4b119549e0061384abf52327c14b0d56624) )
- /* rom socket ROM6 at 3C is unpopulated */
- ROM_FILL( 0x3800, 0x0800, 0xff )
+ ROM_FILL( 0x3800, 0x0800, 0xff ) /* rom socket ROM6 at 3C is unpopulated */
ROM_REGION( 0x01000, "speech", 0 ) /* voice data */
ROM_LOAD( "berzerk_r_vo_1c.1c", 0x0000, 0x0800, CRC(2cfe825d) SHA1(f12fed8712f20fa8213f606c4049a8144bfea42e) ) /* VSU-1000 board */
@@ -1219,8 +1203,7 @@ ROM_START( berzerk1 )
ROM_LOAD( "rom3.5d", 0x2000, 0x0800, CRC(6a1936b4) SHA1(f1635e9d2f25514c35559d2a247c3bc4b4034c19) )
ROM_LOAD( "rom4.6d", 0x2800, 0x0800, CRC(fa5dce40) SHA1(b3a3ee52bf65bbb3a20f905d3e4ebdf6871dcb5d) )
ROM_LOAD( "rom5.5c", 0x3000, 0x0800, CRC(2579b9f4) SHA1(890f0237afbb194166eae88c98de81989f408548) )
- /* rom socket ROM6 at 3C is unpopulated */
- ROM_FILL( 0x3800, 0x0800, 0xff )
+ ROM_FILL( 0x3800, 0x0800, 0xff ) /* rom socket ROM6 at 3C is unpopulated */
ROM_REGION( 0x01000, "speech", 0 ) /* voice data */
ROM_LOAD( "berzerk_r_vo_1c.1c", 0x0000, 0x0800, CRC(2cfe825d) SHA1(f12fed8712f20fa8213f606c4049a8144bfea42e) ) /* VSU-1000 board */
@@ -1235,8 +1218,7 @@ ROM_START( berzerkf )
ROM_LOAD( "berzerk_rc31f_5d.rom3.5d", 0x2000, 0x0800, CRC(316192b5) SHA1(50f4ba2b59423a48c1d51fc6e4d9ea098d6f3743) )
ROM_LOAD( "berzerk_rc31f_6d.rom4.6d", 0x2800, 0x0800, CRC(cd51238c) SHA1(f0b65bdd1f225c151a93ea62812b4bb64969acac) )
ROM_LOAD( "berzerk_rc31f_5c.rom5.5c", 0x3000, 0x0800, CRC(563b13b6) SHA1(f8d137cd26535efe92780560d2f69f12d3f0fa42) )
- /* rom socket ROM6 at 3C is unpopulated */
- ROM_FILL( 0x3800, 0x0800, 0xff )
+ ROM_FILL( 0x3800, 0x0800, 0xff ) /* rom socket ROM6 at 3C is unpopulated */
ROM_REGION( 0x01000, "speech", 0 ) /* voice data */
ROM_LOAD( "berzerk_rvof_1c.1c", 0x0000, 0x0800, CRC(d7bfaca2) SHA1(b8c22db0f6e86d90f3c2ac9ff9e9d0ccff314919) ) /* VSU-1000 board */
@@ -1251,8 +1233,7 @@ ROM_START( berzerkg )
ROM_LOAD( "cpu rom 03.5d", 0x2000, 0x0800, CRC(e23239a9) SHA1(a0505efdee4cb1962243638c641e94983673f70f) )
ROM_LOAD( "cpu rom 04.6d", 0x2800, 0x0800, CRC(651b31b7) SHA1(890f424a5a73a95af642435c1b0cca78a9413aae) )
ROM_LOAD( "cpu rom 05.5c", 0x3000, 0x0800, CRC(8a403bba) SHA1(686a9b58a245df6c947d14991a2e4cbaf511e2ca) )
- /* rom socket ROM6 at 3C is unpopulated */
- ROM_FILL( 0x3800, 0x0800, 0xff )
+ ROM_FILL( 0x3800, 0x0800, 0xff ) /* rom socket ROM6 at 3C is unpopulated */
ROM_REGION( 0x01000, "speech", 0 ) /* voice data */
ROM_LOAD( "berzerk_rvog_1c.1c", 0x0000, 0x0800, CRC(fc1da15f) SHA1(f759a017d9e95acf0e1d35b16d8820acee7d7e3d) ) /* VSU-1000 board */
@@ -1267,8 +1248,7 @@ ROM_START( berzerks )
ROM_LOAD( "berzerk_rc32_5d.rom3.5d", 0x2000, 0x0800, CRC(e23239a9) SHA1(a0505efdee4cb1962243638c641e94983673f70f) ) /* Same as the German set */
ROM_LOAD( "berzerk_rc32_6d.rom4.6d", 0x2800, 0x0800, CRC(959efd86) SHA1(3401f86ed6202e8790cef00c73af29cc282d322e) )
ROM_LOAD( "berzerk_rc32s_5c.rom5.5c", 0x3000, 0x0800, CRC(9ad80e4e) SHA1(f79a86dd3dee5d53c2a60eda5b5181816bd73bc3) )
- /* rom socket ROM6 at 3C is unpopulated */
- ROM_FILL( 0x3800, 0x0800, 0xff )
+ ROM_FILL( 0x3800, 0x0800, 0xff ) /* rom socket ROM6 at 3C is unpopulated */
ROM_REGION( 0x01000, "speech", 0 ) /* voice data */
ROM_LOAD( "berzerk_rvos_1c.1c", 0x0000, 0x0800, CRC(0b51409c) SHA1(75333853a82029f080e3db61441ba6091c1aab55) ) /* VSU-1000 board */
diff --git a/src/mame/drivers/bfm_sc1.cpp b/src/mame/drivers/bfm_sc1.cpp
index ec06c83bc6c..49a4a89f6e7 100644
--- a/src/mame/drivers/bfm_sc1.cpp
+++ b/src/mame/drivers/bfm_sc1.cpp
@@ -1089,7 +1089,7 @@ static MACHINE_CONFIG_START( scorpion1, bfm_sc1_state )
MCFG_STEPPER_OPTIC_CALLBACK(WRITELINE(bfm_sc1_state, reel4_optic_cb))
MCFG_STARPOINT_48STEP_ADD("reel5")
MCFG_STEPPER_OPTIC_CALLBACK(WRITELINE(bfm_sc1_state, reel5_optic_cb))
-
+
MCFG_DEVICE_ADD("meters", METERS, 0)
MCFG_METERS_NUMBER(8)
MACHINE_CONFIG_END
diff --git a/src/mame/drivers/bfm_sc2.cpp b/src/mame/drivers/bfm_sc2.cpp
index eb423c68e54..38045b108ec 100644
--- a/src/mame/drivers/bfm_sc2.cpp
+++ b/src/mame/drivers/bfm_sc2.cpp
@@ -605,7 +605,7 @@ WRITE8_MEMBER(bfm_sc2_state::mmtr_w)
}
}
}
-
+
if ( data & 0x1F ) m_maincpu->set_input_line(M6809_FIRQ_LINE, ASSERT_LINE );
}
@@ -2284,11 +2284,10 @@ void bfm_sc2_state::sc2_common_init(int decrypt)
void bfm_sc2_state::adder2_common_init()
{
- UINT8 *pal;
-
- pal = memregion("proms")->base();
- if ( pal )
+ if (memregion("proms") != nullptr)
{
+ UINT8 *pal;
+ pal = memregion("proms")->base();
memcpy(m_key, pal, 8);
}
}
@@ -3657,7 +3656,7 @@ static MACHINE_CONFIG_START( scorpion2, bfm_sc2_state )
MCFG_STEPPER_OPTIC_CALLBACK(WRITELINE(bfm_sc2_state, reel4_optic_cb))
MCFG_STARPOINT_48STEP_ADD("reel5")
MCFG_STEPPER_OPTIC_CALLBACK(WRITELINE(bfm_sc2_state, reel5_optic_cb))
-
+
MCFG_FRAGMENT_ADD(_8meters)
MACHINE_CONFIG_END
@@ -3670,7 +3669,7 @@ MACHINE_CONFIG_END
static MACHINE_CONFIG_DERIVED( scorpion3, scorpion2 )
MCFG_CPU_MODIFY("maincpu")
MCFG_CPU_PROGRAM_MAP(memmap_no_vid)
-
+
MCFG_DEVICE_REMOVE("meters")
MCFG_FRAGMENT_ADD(_5meters)
MACHINE_CONFIG_END
@@ -3716,7 +3715,7 @@ static MACHINE_CONFIG_START( scorpion2_dm01, bfm_sc2_state )
MCFG_STEPPER_OPTIC_CALLBACK(WRITELINE(bfm_sc2_state, reel4_optic_cb))
MCFG_STARPOINT_48STEP_ADD("reel5")
MCFG_STEPPER_OPTIC_CALLBACK(WRITELINE(bfm_sc2_state, reel5_optic_cb))
-
+
MCFG_FRAGMENT_ADD( _8meters)
MACHINE_CONFIG_END
diff --git a/src/mame/drivers/bfm_sc4.cpp b/src/mame/drivers/bfm_sc4.cpp
index a610e0097b7..1d1d2a783fe 100644
--- a/src/mame/drivers/bfm_sc4.cpp
+++ b/src/mame/drivers/bfm_sc4.cpp
@@ -46,6 +46,8 @@
#include "bfm_sc4.lh"
#include "sc4_dmd.lh"
+#define MACHINE_FLAGS MACHINE_NOT_WORKING|MACHINE_CLICKABLE_ARTWORK
+#define MACHINE_FLAGS_NOSOUND MACHINE_FLAGS|MACHINE_NO_SOUND
bool compare_mbus(UINT16* rom)
{
@@ -23459,7 +23461,7 @@ ROM_END
/* Scorpion 4 */
-GAMEL( 200?, sc4tst ,0, sc4, sc4, sc4_state, sc4, ROT0, "BFM","Scorpion 4 Test Rig (Bellfruit) (Scorpion ?)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4tst ,0, sc4, sc4, sc4_state, sc4, ROT0, "BFM","Scorpion 4 Test Rig (Bellfruit) (Scorpion ?)", MACHINE_FLAGS, layout_bfm_sc4 )
DRIVER_INIT_MEMBER(sc4_state,sc4pstat)
{
@@ -23523,32 +23525,32 @@ INPUT_PORTS_END
// can't get past 'read meters'
// PR2516 PAYSTATIONV2.0 PAYSTATIONSND PAYSTATION
-GAMEL( 200?, sc4pstat ,0, sc4_4reel, sc4pstat, sc4_state, sc4pstat, ROT0, "QPS","Paystation (V2.0) (Qps) (Scorpion 4) (set 1)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4pstatb ,sc4pstat, sc4_4reel, sc4pstat, sc4_state, sc4pstat, ROT0, "QPS","Paystation (V2.0) (Qps) (Scorpion 4) (set 2)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4pstat ,0, sc4_4reel, sc4pstat, sc4_state, sc4pstat, ROT0, "QPS","Paystation (V2.0) (Qps) (Scorpion 4) (set 1)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4pstatb ,sc4pstat, sc4_4reel, sc4pstat, sc4_state, sc4pstat, ROT0, "QPS","Paystation (V2.0) (Qps) (Scorpion 4) (set 2)", MACHINE_FLAGS, layout_bfm_sc4 )
// PR2516 PAYSTATIONV2.1 PAYSTATIONSND PAYSTATION
-GAMEL( 200?, sc4pstata ,sc4pstat, sc4_4reel, sc4pstat, sc4_state, sc4pstat, ROT0, "QPS","Paystation (V2.1) (Qps) (Scorpion 4) (set 1)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4pstatc ,sc4pstat, sc4_4reel, sc4pstat, sc4_state, sc4pstat, ROT0, "QPS","Paystation (V2.1) (Qps) (Scorpion 4) (set 2)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4pstata ,sc4pstat, sc4_4reel, sc4pstat, sc4_state, sc4pstat, ROT0, "QPS","Paystation (V2.1) (Qps) (Scorpion 4) (set 1)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4pstatc ,sc4pstat, sc4_4reel, sc4pstat, sc4_state, sc4pstat, ROT0, "QPS","Paystation (V2.1) (Qps) (Scorpion 4) (set 2)", MACHINE_FLAGS, layout_bfm_sc4 )
// PR2516 PAYSTATIONV2.2 PAYSTATIONSND PAYSTATION
-GAMEL( 200?, sc4pstatd ,sc4pstat, sc4_4reel, sc4pstat, sc4_state, sc4pstat, ROT0, "QPS","Paystation (V2.2) (Qps) (Scorpion 4)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4pstatd ,sc4pstat, sc4_4reel, sc4pstat, sc4_state, sc4pstat, ROT0, "QPS","Paystation (V2.2) (Qps) (Scorpion 4)", MACHINE_FLAGS, layout_bfm_sc4 )
// PR2516 PAYSTATIONV2.3 PAYSTATIONSND PAYSTATION
-GAMEL( 200?, sc4pstate ,sc4pstat, sc4_4reel, sc4pstat, sc4_state, sc4pstat, ROT0, "QPS","Paystation (V2.3) (Qps) (Scorpion 4)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4pstate ,sc4pstat, sc4_4reel, sc4pstat, sc4_state, sc4pstat, ROT0, "QPS","Paystation (V2.3) (Qps) (Scorpion 4)", MACHINE_FLAGS, layout_bfm_sc4 )
// ones below can be 'played' (skip 'read meters' with cancel)
// PR2516 PAYSTATIONV4.0 PAYSTATIONSND PAYSTATION
-GAMEL( 200?, sc4pstath ,sc4pstat, sc4_4reel, sc4pstat, sc4_state, sc4pstat, ROT0, "QPS","Paystation (V4.0) (Qps) (Scorpion 4) (set 1)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4pstatm ,sc4pstat, sc4_4reel, sc4pstat, sc4_state, sc4pstat, ROT0, "QPS","Paystation (V4.0) (Qps) (Scorpion 4) (set 2)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4pstath ,sc4pstat, sc4_4reel, sc4pstat, sc4_state, sc4pstat, ROT0, "QPS","Paystation (V4.0) (Qps) (Scorpion 4) (set 1)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4pstatm ,sc4pstat, sc4_4reel, sc4pstat, sc4_state, sc4pstat, ROT0, "QPS","Paystation (V4.0) (Qps) (Scorpion 4) (set 2)", MACHINE_FLAGS, layout_bfm_sc4 )
// PR2516 PAYSTATIONV011 PAYSTATIONSND PAYSTATION
-GAMEL( 200?, sc4pstatf ,sc4pstat, sc4_4reel, sc4pstat, sc4_state, sc4pstat_mbus, ROT0, "QPS","Paystation (V011) (Qps) (Scorpion 4) (set 1)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4pstati ,sc4pstat, sc4_4reel, sc4pstat, sc4_state, sc4pstat_mbus, ROT0, "QPS","Paystation (V011) (Qps) (Scorpion 4) (set 2)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4pstatf ,sc4pstat, sc4_4reel, sc4pstat, sc4_state, sc4pstat_mbus, ROT0, "QPS","Paystation (V011) (Qps) (Scorpion 4) (set 1)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4pstati ,sc4pstat, sc4_4reel, sc4pstat, sc4_state, sc4pstat_mbus, ROT0, "QPS","Paystation (V011) (Qps) (Scorpion 4) (set 2)", MACHINE_FLAGS, layout_bfm_sc4 )
// PR2516 PAYSTATION 012 PAYSTATIONSND PAYSTATION
-GAMEL( 200?, sc4pstatn ,sc4pstat, sc4_4reel, sc4pstat, sc4_state, sc4pstat, ROT0, "QPS","Paystation (V012) (Qps) (Scorpion 4) (set 1)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4pstatp ,sc4pstat, sc4_4reel, sc4pstat, sc4_state, sc4pstat, ROT0, "QPS","Paystation (V012) (Qps) (Scorpion 4) (set 2)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4pstatn ,sc4pstat, sc4_4reel, sc4pstat, sc4_state, sc4pstat, ROT0, "QPS","Paystation (V012) (Qps) (Scorpion 4) (set 1)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4pstatp ,sc4pstat, sc4_4reel, sc4pstat, sc4_state, sc4pstat, ROT0, "QPS","Paystation (V012) (Qps) (Scorpion 4) (set 2)", MACHINE_FLAGS, layout_bfm_sc4 )
// PR2516 PAYSTATIONV041 PAYSTATIONSND PAYSTATION
-GAMEL( 200?, sc4pstatg ,sc4pstat, sc4_4reel, sc4pstat, sc4_state, sc4pstat_mbus, ROT0, "QPS","Paystation (V041) (Qps) (Scorpion 4) (set 1)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4pstatj ,sc4pstat, sc4_4reel, sc4pstat, sc4_state, sc4pstat_mbus, ROT0, "QPS","Paystation (V041) (Qps) (Scorpion 4) (set 2)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4pstatg ,sc4pstat, sc4_4reel, sc4pstat, sc4_state, sc4pstat_mbus, ROT0, "QPS","Paystation (V041) (Qps) (Scorpion 4) (set 1)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4pstatj ,sc4pstat, sc4_4reel, sc4pstat, sc4_state, sc4pstat_mbus, ROT0, "QPS","Paystation (V041) (Qps) (Scorpion 4) (set 2)", MACHINE_FLAGS, layout_bfm_sc4 )
// PR2516 PAYSTATION 042 PAYSTATIONSND PAYSTATION
-GAMEL( 200?, sc4pstato ,sc4pstat, sc4_4reel, sc4pstat, sc4_state, sc4pstat, ROT0, "QPS","Paystation (V042) (Qps) (Scorpion 4) (set 1)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4pstatq ,sc4pstat, sc4_4reel, sc4pstat, sc4_state, sc4pstat, ROT0, "QPS","Paystation (V042) (Qps) (Scorpion 4) (set 2)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4pstato ,sc4pstat, sc4_4reel, sc4pstat, sc4_state, sc4pstat, ROT0, "QPS","Paystation (V042) (Qps) (Scorpion 4) (set 1)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4pstatq ,sc4pstat, sc4_4reel, sc4pstat, sc4_state, sc4pstat, ROT0, "QPS","Paystation (V042) (Qps) (Scorpion 4) (set 2)", MACHINE_FLAGS, layout_bfm_sc4 )
DRIVER_INIT_MEMBER(sc4_state,sc4cvani)
@@ -23603,16 +23605,16 @@ INPUT_PORTS_START( sc4cvani ) // this structure is generated
INPUT_PORTS_END
// PR2052 CASHLVANIA VANIASND CASH'!'VANIA
-GAMEL( 200?, sc4cvani ,0, sc4_200_4rb, sc4cvani, sc4_state, sc4cvani, ROT0, "QPS","Cashvania (Qps) (Scorpion 4) (set 1)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4cvania ,sc4cvani, sc4_200_4rb, sc4cvani, sc4_state, sc4cvani, ROT0, "QPS","Cashvania (Qps) (Scorpion 4) (set 2)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4cvanib ,sc4cvani, sc4_200_4rb, sc4cvani, sc4_state, sc4cvani, ROT0, "QPS","Cashvania (Qps) (Scorpion 4) (set 3)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4cvanic ,sc4cvani, sc4_200_4rb, sc4cvani, sc4_state, sc4cvani, ROT0, "QPS","Cashvania (Qps) (Scorpion 4) (set 4)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4cvanid ,sc4cvani, sc4_200_4rb, sc4cvani, sc4_state, sc4cvani, ROT0, "QPS","Cashvania (Qps) (Scorpion 4) (set 5)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4cvanie ,sc4cvani, sc4_200_4rb, sc4cvani, sc4_state, sc4cvani, ROT0, "QPS","Cashvania (Qps) (Scorpion 4) (set 6)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4cvanif ,sc4cvani, sc4_200_4rb, sc4cvani, sc4_state, sc4cvani, ROT0, "QPS","Cashvania (Qps) (Scorpion 4) (set 7)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4cvanig ,sc4cvani, sc4_200_4rb, sc4cvani, sc4_state, sc4cvani, ROT0, "QPS","Cashvania (Qps) (Scorpion 4) (set 8)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4cvanih ,sc4cvani, sc4_200_4rb, sc4cvani, sc4_state, sc4cvani, ROT0, "QPS","Cashvania (Qps) (Scorpion 4) (set 9)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4cvanii ,sc4cvani, sc4_200_4rb, sc4cvani, sc4_state, sc4cvani, ROT0, "QPS","Cashvania (Qps) (Scorpion 4) (set 10)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4cvani ,0, sc4_200_4rb, sc4cvani, sc4_state, sc4cvani, ROT0, "QPS","Cashvania (Qps) (Scorpion 4) (set 1)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4cvania ,sc4cvani, sc4_200_4rb, sc4cvani, sc4_state, sc4cvani, ROT0, "QPS","Cashvania (Qps) (Scorpion 4) (set 2)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4cvanib ,sc4cvani, sc4_200_4rb, sc4cvani, sc4_state, sc4cvani, ROT0, "QPS","Cashvania (Qps) (Scorpion 4) (set 3)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4cvanic ,sc4cvani, sc4_200_4rb, sc4cvani, sc4_state, sc4cvani, ROT0, "QPS","Cashvania (Qps) (Scorpion 4) (set 4)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4cvanid ,sc4cvani, sc4_200_4rb, sc4cvani, sc4_state, sc4cvani, ROT0, "QPS","Cashvania (Qps) (Scorpion 4) (set 5)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4cvanie ,sc4cvani, sc4_200_4rb, sc4cvani, sc4_state, sc4cvani, ROT0, "QPS","Cashvania (Qps) (Scorpion 4) (set 6)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4cvanif ,sc4cvani, sc4_200_4rb, sc4cvani, sc4_state, sc4cvani, ROT0, "QPS","Cashvania (Qps) (Scorpion 4) (set 7)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4cvanig ,sc4cvani, sc4_200_4rb, sc4cvani, sc4_state, sc4cvani, ROT0, "QPS","Cashvania (Qps) (Scorpion 4) (set 8)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4cvanih ,sc4cvani, sc4_200_4rb, sc4cvani, sc4_state, sc4cvani, ROT0, "QPS","Cashvania (Qps) (Scorpion 4) (set 9)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4cvanii ,sc4cvani, sc4_200_4rb, sc4cvani, sc4_state, sc4cvani, ROT0, "QPS","Cashvania (Qps) (Scorpion 4) (set 10)", MACHINE_FLAGS, layout_bfm_sc4 )
DRIVER_INIT_MEMBER(sc4_state,sc4cvclb)
@@ -23676,16 +23678,16 @@ INPUT_PORTS_START( sc4cvclb ) // this structure is generated
INPUT_PORTS_END
// PRXXXX CLUBCASHLVANIA V1.0 CLUBVANIASND CLUB CASH!VANIA
-GAMEL( 200?, sc4cvclb ,0, sc4_200_4rb, sc4cvclb, sc4_state, sc4cvclb, ROT0, "QPS","Cashvania Club (V1.0) (Qps) (Scorpion 4) (set 1)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4cvclba ,sc4cvclb, sc4_200_4rb, sc4cvclb, sc4_state, sc4cvclb, ROT0, "QPS","Cashvania Club (V1.0) (Qps) (Scorpion 4) (set 2)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4cvclbc ,sc4cvclb, sc4_200_4rb, sc4cvclb, sc4_state, sc4cvclb, ROT0, "QPS","Cashvania Club (V1.0) (Qps) (Scorpion 4) (set 3)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4cvclbd ,sc4cvclb, sc4_200_4rb, sc4cvclb, sc4_state, sc4cvclb, ROT0, "QPS","Cashvania Club (V1.0) (Qps) (Scorpion 4) (set 4)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4cvclb ,0, sc4_200_4rb, sc4cvclb, sc4_state, sc4cvclb, ROT0, "QPS","Cashvania Club (V1.0) (Qps) (Scorpion 4) (set 1)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4cvclba ,sc4cvclb, sc4_200_4rb, sc4cvclb, sc4_state, sc4cvclb, ROT0, "QPS","Cashvania Club (V1.0) (Qps) (Scorpion 4) (set 2)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4cvclbc ,sc4cvclb, sc4_200_4rb, sc4cvclb, sc4_state, sc4cvclb, ROT0, "QPS","Cashvania Club (V1.0) (Qps) (Scorpion 4) (set 3)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4cvclbd ,sc4cvclb, sc4_200_4rb, sc4cvclb, sc4_state, sc4cvclb, ROT0, "QPS","Cashvania Club (V1.0) (Qps) (Scorpion 4) (set 4)", MACHINE_FLAGS, layout_bfm_sc4 )
// PRXXXX CLUBCASHLVANIA V2.0 CLUBVANIASND CLUB CASH!VANIA
-GAMEL( 200?, sc4cvclbb ,sc4cvclb, sc4_200_4rb, sc4cvclb, sc4_state, sc4cvclb, ROT0, "QPS","Cashvania Club (V2.0) (Qps) (Scorpion 4) (set 1)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4cvclbe ,sc4cvclb, sc4_200_4rb, sc4cvclb, sc4_state, sc4cvclb, ROT0, "QPS","Cashvania Club (V2.0) (Qps) (Scorpion 4) (set 2)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4cvclbb ,sc4cvclb, sc4_200_4rb, sc4cvclb, sc4_state, sc4cvclb, ROT0, "QPS","Cashvania Club (V2.0) (Qps) (Scorpion 4) (set 1)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4cvclbe ,sc4cvclb, sc4_200_4rb, sc4cvclb, sc4_state, sc4cvclb, ROT0, "QPS","Cashvania Club (V2.0) (Qps) (Scorpion 4) (set 2)", MACHINE_FLAGS, layout_bfm_sc4 )
// PRXXXX CLUBCASHLVANIA 411 CLUBVANIASND CLUB CASH!VANIA
-GAMEL( 200?, sc4cvclbf ,sc4cvclb, sc4_200_4rb, sc4cvclb, sc4_state, sc4cvclb_mbus, ROT0, "QPS","Cashvania Club (V411) (Qps) (Scorpion 4) (set 1)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4cvclbg ,sc4cvclb, sc4_200_4rb, sc4cvclb, sc4_state, sc4cvclb_mbus, ROT0, "QPS","Cashvania Club (V411) (Qps) (Scorpion 4) (set 2)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4cvclbf ,sc4cvclb, sc4_200_4rb, sc4cvclb, sc4_state, sc4cvclb_mbus, ROT0, "QPS","Cashvania Club (V411) (Qps) (Scorpion 4) (set 1)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4cvclbg ,sc4cvclb, sc4_200_4rb, sc4cvclb, sc4_state, sc4cvclb_mbus, ROT0, "QPS","Cashvania Club (V411) (Qps) (Scorpion 4) (set 2)", MACHINE_FLAGS, layout_bfm_sc4 )
@@ -23756,26 +23758,26 @@ INPUT_PORTS_END
// this was marked (and has the header) GRAND CASINO, and was paired with some (bad dumps) of 'Grand Casino' sound roms, but it actually
// appears to be a version of Grandslam and expects the Grandslam sounds
// PR7194 GRAND CASINO PR6934 SLM2 SOUNDS11 GRAND CASINO
-GAMEL( 200?, sc4gcclb ,0, sc4, sc4gcclbl, sc4_state, sc4gcclb, ROT0, "BFM","Grandslam Casino (Bellfruit) (Scorpion 4) (set 1)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4gcclba ,sc4gcclb, sc4, sc4gcclbl, sc4_state, sc4gcclb, ROT0, "BFM","Grandslam Casino (Bellfruit) (Scorpion 4) (set 2)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4gcclbb ,sc4gcclb, sc4, sc4gcclbl, sc4_state, sc4gcclb, ROT0, "BFM","Grandslam Casino (Bellfruit) (Scorpion 4) (set 3)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4gcclbc ,sc4gcclb, sc4, sc4gcclbl, sc4_state, sc4gcclb, ROT0, "BFM","Grandslam Casino (Bellfruit) (Scorpion 4) (set 4)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4gcclbd ,sc4gcclb, sc4, sc4gcclbl, sc4_state, sc4gcclb, ROT0, "BFM","Grandslam Casino (Bellfruit) (Scorpion 4) (set 5)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4gcclbe ,sc4gcclb, sc4, sc4gcclbl, sc4_state, sc4gcclb, ROT0, "BFM","Grandslam Casino (Bellfruit) (Scorpion 4) (set 6)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4gcclbf ,sc4gcclb, sc4, sc4gcclbl, sc4_state, sc4gcclb, ROT0, "BFM","Grandslam Casino (Bellfruit) (Scorpion 4) (set 7)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4gcclbg ,sc4gcclb, sc4, sc4gcclbl, sc4_state, sc4gcclb, ROT0, "BFM","Grandslam Casino (Bellfruit) (Scorpion 4) (set 8)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4gcclbh ,sc4gcclb, sc4, sc4gcclbl, sc4_state, sc4gcclb, ROT0, "BFM","Grandslam Casino (Bellfruit) (Scorpion 4) (set 9)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4gcclbi ,sc4gcclb, sc4, sc4gcclbl, sc4_state, sc4gcclb, ROT0, "BFM","Grandslam Casino (Bellfruit) (Scorpion 4) (set 10)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4gcclbj ,sc4gcclb, sc4, sc4gcclbl, sc4_state, sc4gcclb, ROT0, "BFM","Grandslam Casino (Bellfruit) (Scorpion 4) (set 11)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4gcclbk ,sc4gcclb, sc4, sc4gcclbl, sc4_state, sc4gcclb, ROT0, "BFM","Grandslam Casino (Bellfruit) (Scorpion 4) (set 12)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4gcclb ,0, sc4, sc4gcclbl, sc4_state, sc4gcclb, ROT0, "BFM","Grandslam Casino (Bellfruit) (Scorpion 4) (set 1)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4gcclba ,sc4gcclb, sc4, sc4gcclbl, sc4_state, sc4gcclb, ROT0, "BFM","Grandslam Casino (Bellfruit) (Scorpion 4) (set 2)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4gcclbb ,sc4gcclb, sc4, sc4gcclbl, sc4_state, sc4gcclb, ROT0, "BFM","Grandslam Casino (Bellfruit) (Scorpion 4) (set 3)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4gcclbc ,sc4gcclb, sc4, sc4gcclbl, sc4_state, sc4gcclb, ROT0, "BFM","Grandslam Casino (Bellfruit) (Scorpion 4) (set 4)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4gcclbd ,sc4gcclb, sc4, sc4gcclbl, sc4_state, sc4gcclb, ROT0, "BFM","Grandslam Casino (Bellfruit) (Scorpion 4) (set 5)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4gcclbe ,sc4gcclb, sc4, sc4gcclbl, sc4_state, sc4gcclb, ROT0, "BFM","Grandslam Casino (Bellfruit) (Scorpion 4) (set 6)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4gcclbf ,sc4gcclb, sc4, sc4gcclbl, sc4_state, sc4gcclb, ROT0, "BFM","Grandslam Casino (Bellfruit) (Scorpion 4) (set 7)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4gcclbg ,sc4gcclb, sc4, sc4gcclbl, sc4_state, sc4gcclb, ROT0, "BFM","Grandslam Casino (Bellfruit) (Scorpion 4) (set 8)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4gcclbh ,sc4gcclb, sc4, sc4gcclbl, sc4_state, sc4gcclb, ROT0, "BFM","Grandslam Casino (Bellfruit) (Scorpion 4) (set 9)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4gcclbi ,sc4gcclb, sc4, sc4gcclbl, sc4_state, sc4gcclb, ROT0, "BFM","Grandslam Casino (Bellfruit) (Scorpion 4) (set 10)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4gcclbj ,sc4gcclb, sc4, sc4gcclbl, sc4_state, sc4gcclb, ROT0, "BFM","Grandslam Casino (Bellfruit) (Scorpion 4) (set 11)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4gcclbk ,sc4gcclb, sc4, sc4gcclbl, sc4_state, sc4gcclb, ROT0, "BFM","Grandslam Casino (Bellfruit) (Scorpion 4) (set 12)", MACHINE_FLAGS, layout_bfm_sc4 )
// PR7194 GRAND CASINO PR6934 SLM2 SOUNDS11 GRAND CASINO GRAND CASINO CLUB
-GAMEL( 200?, sc4gcclbl ,sc4gcclb, sc4, sc4gcclbl, sc4_state, sc4gcclb_mbus, ROT0, "BFM","Grandslam Casino (Bellfruit) (Scorpion 4) (set 13)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4gcclbm ,sc4gcclb, sc4, sc4gcclbl, sc4_state, sc4gcclb_mbus, ROT0, "BFM","Grandslam Casino (Bellfruit) (Scorpion 4) (set 14)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4gcclbn ,sc4gcclb, sc4, sc4gcclbl, sc4_state, sc4gcclb_mbus, ROT0, "BFM","Grandslam Casino (Bellfruit) (Scorpion 4) (set 15)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4gcclbp ,sc4gcclb, sc4, sc4gcclbl, sc4_state, sc4gcclb_mbus, ROT0, "BFM","Grandslam Casino (Bellfruit) (Scorpion 4) (set 16)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4gcclbl ,sc4gcclb, sc4, sc4gcclbl, sc4_state, sc4gcclb_mbus, ROT0, "BFM","Grandslam Casino (Bellfruit) (Scorpion 4) (set 13)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4gcclbm ,sc4gcclb, sc4, sc4gcclbl, sc4_state, sc4gcclb_mbus, ROT0, "BFM","Grandslam Casino (Bellfruit) (Scorpion 4) (set 14)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4gcclbn ,sc4gcclb, sc4, sc4gcclbl, sc4_state, sc4gcclb_mbus, ROT0, "BFM","Grandslam Casino (Bellfruit) (Scorpion 4) (set 15)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4gcclbp ,sc4gcclb, sc4, sc4gcclbl, sc4_state, sc4gcclb_mbus, ROT0, "BFM","Grandslam Casino (Bellfruit) (Scorpion 4) (set 16)", MACHINE_FLAGS, layout_bfm_sc4 )
// PR7149 GRAND CASINO GRAND CASINO CLUB PR6934 SLM2 SOUNDS11 GRAND CASINO
-GAMEL( 200?, sc4gcclbo ,sc4gcclb, sc4, sc4gcclbl, sc4_state, sc4gcclb_mbus, ROT0, "BFM","Grandslam Casino (Bellfruit) (Scorpion 4) (set 17)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4gcclbq ,sc4gcclb, sc4, sc4gcclbl, sc4_state, sc4gcclb_mbus, ROT0, "BFM","Grandslam Casino (Bellfruit) (Scorpion 4) (set 18)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4gcclbo ,sc4gcclb, sc4, sc4gcclbl, sc4_state, sc4gcclb_mbus, ROT0, "BFM","Grandslam Casino (Bellfruit) (Scorpion 4) (set 17)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4gcclbq ,sc4gcclb, sc4, sc4gcclbl, sc4_state, sc4gcclb_mbus, ROT0, "BFM","Grandslam Casino (Bellfruit) (Scorpion 4) (set 18)", MACHINE_FLAGS, layout_bfm_sc4 )
DRIVER_INIT_MEMBER(sc4_state,sc4botn)
@@ -23829,8 +23831,8 @@ INPUT_PORTS_START( sc4botn ) // this structure is generated
INPUT_PORTS_END
// PR2538 BACK OF THE NET V011 BACKOFTHENETSND BACK OF THE NET
-GAMEL( 200?, sc4botn ,0, sc4_4reel, sc4botn, sc4_state, sc4botn, ROT0, "Qps","Back Of The Net (Qps) (Scorpion 4) (set 1, 011)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4botna ,sc4botn, sc4_4reel, sc4botn, sc4_state, sc4botn, ROT0, "Qps","Back Of The Net (Qps) (Scorpion 4) (set 2, 011)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4botn ,0, sc4_4reel, sc4botn, sc4_state, sc4botn, ROT0, "Qps","Back Of The Net (Qps) (Scorpion 4) (set 1, 011)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4botna ,sc4botn, sc4_4reel, sc4botn, sc4_state, sc4botn, ROT0, "Qps","Back Of The Net (Qps) (Scorpion 4) (set 2, 011)", MACHINE_FLAGS, layout_bfm_sc4 )
//fourth reel is tested strangely
@@ -23893,13 +23895,13 @@ INPUT_PORTS_END
// doesn't play
// PRXXXX CLUB BANKETY BANK VER1.0 CLUBBANKSND CLUB BANKETYBANK
-GAMEL( 200?, sc4bbclb ,0, sc4_200_std, sc4bbclb, sc4_state, sc4bbclb, ROT0, "Qps","Bankety Bank Club (V1.0) (Qps) (Scorpion 4)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4bbclb ,0, sc4_200_std, sc4bbclb, sc4_state, sc4bbclb, ROT0, "Qps","Bankety Bank Club (V1.0) (Qps) (Scorpion 4)", MACHINE_FLAGS, layout_bfm_sc4 )
// PRXXXX CLUB BANKETY BANK VER1.1 CLUBBANKSND CLUB BANKETYBANK
-GAMEL( 200?, sc4bbclba ,sc4bbclb, sc4_200_std, sc4bbclb, sc4_state, sc4bbclb, ROT0, "Qps","Bankety Bank Club (V1.1) (Qps) (Scorpion 4)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4bbclba ,sc4bbclb, sc4_200_std, sc4bbclb, sc4_state, sc4bbclb, ROT0, "Qps","Bankety Bank Club (V1.1) (Qps) (Scorpion 4)", MACHINE_FLAGS, layout_bfm_sc4 )
// can be played
// PRXXXX CLUB BANKETY BANK 411 CLUBBANKSND CLUB BANKETYBANK
-GAMEL( 200?, sc4bbclbb ,sc4bbclb, sc4_200_std, sc4bbclb, sc4_state, sc4bbclb_mbus, ROT0, "Qps","Bankety Bank Club (V411) (Qps) (Scorpion 4) (set 1)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4bbclbc ,sc4bbclb, sc4_200_std, sc4bbclb, sc4_state, sc4bbclb_mbus, ROT0, "Qps","Bankety Bank Club (V411) (Qps) (Scorpion 4) (set 2)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4bbclbb ,sc4bbclb, sc4_200_std, sc4bbclb, sc4_state, sc4bbclb_mbus, ROT0, "Qps","Bankety Bank Club (V411) (Qps) (Scorpion 4) (set 1)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4bbclbc ,sc4bbclb, sc4_200_std, sc4bbclb, sc4_state, sc4bbclb_mbus, ROT0, "Qps","Bankety Bank Club (V411) (Qps) (Scorpion 4) (set 2)", MACHINE_FLAGS, layout_bfm_sc4 )
DRIVER_INIT_MEMBER(sc4_state,sc4captn)
@@ -23955,14 +23957,14 @@ INPUT_PORTS_START( sc4captn ) // this structure is generated
INPUT_PORTS_END
// PR2013 CAPTAIN CASH CCASH SOUNDS CAPTAIN CASH
-GAMEL( 200?, sc4captn ,0, sc4_4reel, sc4captn, sc4_state, sc4captn, ROT0, "Qps","Captain Cash (Qps) (Scorpion 4) (set 1)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4captnb ,sc4captn, sc4_4reel, sc4captn, sc4_state, sc4captn, ROT0, "Qps","Captain Cash (Qps) (Scorpion 4) (set 2)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4captnc ,sc4captn, sc4_4reel, sc4captn, sc4_state, sc4captn, ROT0, "Qps","Captain Cash (Qps) (Scorpion 4) (set 3)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4captn ,0, sc4_4reel, sc4captn, sc4_state, sc4captn, ROT0, "Qps","Captain Cash (Qps) (Scorpion 4) (set 1)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4captnb ,sc4captn, sc4_4reel, sc4captn, sc4_state, sc4captn, ROT0, "Qps","Captain Cash (Qps) (Scorpion 4) (set 2)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4captnc ,sc4captn, sc4_4reel, sc4captn, sc4_state, sc4captn, ROT0, "Qps","Captain Cash (Qps) (Scorpion 4) (set 3)", MACHINE_FLAGS, layout_bfm_sc4 )
// PR9999 CAPTAIN CASH CCASH SOUNDS CAPTAIN CASH (invalid project number)
-GAMEL( 200?, sc4captna ,sc4captn, sc4_4reel, sc4captn, sc4_state, sc4captn, ROT0, "Qps","Captain Cash (Qps) (Scorpion 4) (set 4)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4captnd ,sc4captn, sc4_4reel, sc4captn, sc4_state, sc4captn, ROT0, "Qps","Captain Cash (Qps) (Scorpion 4) (set 5)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4captne ,sc4captn, sc4_4reel, sc4captn, sc4_state, sc4captn, ROT0, "Qps","Captain Cash (Qps) (Scorpion 4) (set 6)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4captnf ,sc4captn, sc4_4reel, sc4captn, sc4_state, sc4captn, ROT0, "Qps","Captain Cash (Qps) (Scorpion 4) (set 7)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4captna ,sc4captn, sc4_4reel, sc4captn, sc4_state, sc4captn, ROT0, "Qps","Captain Cash (Qps) (Scorpion 4) (set 4)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4captnd ,sc4captn, sc4_4reel, sc4captn, sc4_state, sc4captn, ROT0, "Qps","Captain Cash (Qps) (Scorpion 4) (set 5)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4captne ,sc4captn, sc4_4reel, sc4captn, sc4_state, sc4captn, ROT0, "Qps","Captain Cash (Qps) (Scorpion 4) (set 6)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4captnf ,sc4captn, sc4_4reel, sc4captn, sc4_state, sc4captn, ROT0, "Qps","Captain Cash (Qps) (Scorpion 4) (set 7)", MACHINE_FLAGS, layout_bfm_sc4 )
DRIVER_INIT_MEMBER(sc4_state,sc4cmous)
@@ -24017,11 +24019,11 @@ INPUT_PORTS_START( sc4cmous ) // this structure is generated
INPUT_PORTS_END
// PR2534 CASH AND MOUSE V041 CASHANDMOUSESND CASH AND MOUSE
-GAMEL( 200?, sc4cmous ,0, sc4_5reel, sc4cmous, sc4_state, sc4cmous, ROT0, "Qps","Cash & Mouse (V041) (Qps) (Scorpion 4) (set 1)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4cmousb ,sc4cmous, sc4_5reel, sc4cmous, sc4_state, sc4cmous, ROT0, "Qps","Cash & Mouse (V041) (Qps) (Scorpion 4) (set 2)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4cmous ,0, sc4_5reel, sc4cmous, sc4_state, sc4cmous, ROT0, "Qps","Cash & Mouse (V041) (Qps) (Scorpion 4) (set 1)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4cmousb ,sc4cmous, sc4_5reel, sc4cmous, sc4_state, sc4cmous, ROT0, "Qps","Cash & Mouse (V041) (Qps) (Scorpion 4) (set 2)", MACHINE_FLAGS, layout_bfm_sc4 )
// PR2534 CASH AND MOUSE V011 CASHANDMOUSESND CASH AND MOUSE
-GAMEL( 200?, sc4cmousa ,sc4cmous, sc4_5reel, sc4cmous, sc4_state, sc4cmous, ROT0, "Qps","Cash & Mouse (V011) (Qps) (Scorpion 4) (set 1)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4cmousc ,sc4cmous, sc4_5reel, sc4cmous, sc4_state, sc4cmous, ROT0, "Qps","Cash & Mouse (V011) (Qps) (Scorpion 4) (set 2)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4cmousa ,sc4cmous, sc4_5reel, sc4cmous, sc4_state, sc4cmous, ROT0, "Qps","Cash & Mouse (V011) (Qps) (Scorpion 4) (set 1)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4cmousc ,sc4cmous, sc4_5reel, sc4cmous, sc4_state, sc4cmous, ROT0, "Qps","Cash & Mouse (V011) (Qps) (Scorpion 4) (set 2)", MACHINE_FLAGS, layout_bfm_sc4 )
@@ -24082,31 +24084,31 @@ INPUT_PORTS_START( sc4cad ) // this structure is generated
INPUT_PORTS_END
// PR2528 CASH ADDER V1.0 CASHADDERSND CASH ADDER
-GAMEL( 200?, sc4cad ,0, sc4_5reel, sc4cad, sc4_state, sc4cad, ROT0, "Qps","Cash Adder (V1.0) (Qps) (Scorpion 4) (set 1)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4cada ,sc4cad, sc4_5reel, sc4cad, sc4_state, sc4cad, ROT0, "Qps","Cash Adder (V1.0) (Qps) (Scorpion 4) (set 2)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4cadf ,sc4cad, sc4_5reel, sc4cad, sc4_state, sc4cad, ROT0, "Qps","Cash Adder (V1.0) (Qps) (Scorpion 4) (set 3)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4cadg ,sc4cad, sc4_5reel, sc4cad, sc4_state, sc4cad, ROT0, "Qps","Cash Adder (V1.0) (Qps) (Scorpion 4) (set 4)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4cad ,0, sc4_5reel, sc4cad, sc4_state, sc4cad, ROT0, "Qps","Cash Adder (V1.0) (Qps) (Scorpion 4) (set 1)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4cada ,sc4cad, sc4_5reel, sc4cad, sc4_state, sc4cad, ROT0, "Qps","Cash Adder (V1.0) (Qps) (Scorpion 4) (set 2)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4cadf ,sc4cad, sc4_5reel, sc4cad, sc4_state, sc4cad, ROT0, "Qps","Cash Adder (V1.0) (Qps) (Scorpion 4) (set 3)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4cadg ,sc4cad, sc4_5reel, sc4cad, sc4_state, sc4cad, ROT0, "Qps","Cash Adder (V1.0) (Qps) (Scorpion 4) (set 4)", MACHINE_FLAGS, layout_bfm_sc4 )
// PR2528 CASH ADDER 011 CASHADDERSND CASH ADDER
-GAMEL( 200?, sc4cadb ,sc4cad, sc4_5reel, sc4cad, sc4_state, sc4cad_mbus, ROT0, "Qps","Cash Adder (V011) (Qps) (Scorpion 4) (set 1)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4cadh ,sc4cad, sc4_5reel, sc4cad, sc4_state, sc4cad_mbus, ROT0, "Qps","Cash Adder (V011) (Qps) (Scorpion 4) (set 2)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4cadb ,sc4cad, sc4_5reel, sc4cad, sc4_state, sc4cad_mbus, ROT0, "Qps","Cash Adder (V011) (Qps) (Scorpion 4) (set 1)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4cadh ,sc4cad, sc4_5reel, sc4cad, sc4_state, sc4cad_mbus, ROT0, "Qps","Cash Adder (V011) (Qps) (Scorpion 4) (set 2)", MACHINE_FLAGS, layout_bfm_sc4 )
// PR2528 CASH ADDER 041 CASHADDERSND CASH ADDER
-GAMEL( 200?, sc4cadc ,sc4cad, sc4_5reel, sc4cad, sc4_state, sc4cad_mbus, ROT0, "Qps","Cash Adder (V041) (Qps) (Scorpion 4) (set 1)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4cadi ,sc4cad, sc4_5reel, sc4cad, sc4_state, sc4cad_mbus, ROT0, "Qps","Cash Adder (V041) (Qps) (Scorpion 4) (set 2)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4cadc ,sc4cad, sc4_5reel, sc4cad, sc4_state, sc4cad_mbus, ROT0, "Qps","Cash Adder (V041) (Qps) (Scorpion 4) (set 1)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4cadi ,sc4cad, sc4_5reel, sc4cad, sc4_state, sc4cad_mbus, ROT0, "Qps","Cash Adder (V041) (Qps) (Scorpion 4) (set 2)", MACHINE_FLAGS, layout_bfm_sc4 )
// PR2528 CASH ADDER 012 CASHADDERSND CASH ADDER
-GAMEL( 200?, sc4cadd ,sc4cad, sc4_5reel, sc4cad, sc4_state, sc4cad, ROT0, "Qps","Cash Adder (V012) (Qps) (Scorpion 4) (set 1)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4cadj ,sc4cad, sc4_5reel, sc4cad, sc4_state, sc4cad, ROT0, "Qps","Cash Adder (V012) (Qps) (Scorpion 4) (set 2)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4cadd ,sc4cad, sc4_5reel, sc4cad, sc4_state, sc4cad, ROT0, "Qps","Cash Adder (V012) (Qps) (Scorpion 4) (set 1)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4cadj ,sc4cad, sc4_5reel, sc4cad, sc4_state, sc4cad, ROT0, "Qps","Cash Adder (V012) (Qps) (Scorpion 4) (set 2)", MACHINE_FLAGS, layout_bfm_sc4 )
// PR2528 CASH ADDER 042 CASHADDERSND CASH ADDER
-GAMEL( 200?, sc4cade ,sc4cad, sc4_5reel, sc4cad, sc4_state, sc4cad, ROT0, "Qps","Cash Adder (V042) (Qps) (Scorpion 4) (set 1)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4cadk ,sc4cad, sc4_5reel, sc4cad, sc4_state, sc4cad, ROT0, "Qps","Cash Adder (V042) (Qps) (Scorpion 4) (set 2)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4cade ,sc4cad, sc4_5reel, sc4cad, sc4_state, sc4cad, ROT0, "Qps","Cash Adder (V042) (Qps) (Scorpion 4) (set 1)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4cadk ,sc4cad, sc4_5reel, sc4cad, sc4_state, sc4cad, ROT0, "Qps","Cash Adder (V042) (Qps) (Scorpion 4) (set 2)", MACHINE_FLAGS, layout_bfm_sc4 )
// PR2528 CASH ADDER 013 CASHADDERSND CASH ADDER
-GAMEL( 200?, sc4cadl ,sc4cad, sc4_5reel, sc4cad, sc4_state, sc4cad, ROT0, "Qps","Cash Adder (V013) (Qps) (Scorpion 4) (set 1)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4cadm ,sc4cad, sc4_5reel, sc4cad, sc4_state, sc4cad, ROT0, "Qps","Cash Adder (V013) (Qps) (Scorpion 4) (set 2)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4cadl ,sc4cad, sc4_5reel, sc4cad, sc4_state, sc4cad, ROT0, "Qps","Cash Adder (V013) (Qps) (Scorpion 4) (set 1)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4cadm ,sc4cad, sc4_5reel, sc4cad, sc4_state, sc4cad, ROT0, "Qps","Cash Adder (V013) (Qps) (Scorpion 4) (set 2)", MACHINE_FLAGS, layout_bfm_sc4 )
// PR2528 CASH ADDER 014 CASHADDERSND CASH ADDER
-GAMEL( 200?, sc4cadn ,sc4cad, sc4_5reel, sc4cad, sc4_state, sc4cad, ROT0, "Qps","Cash Adder (V014) (Qps) (Scorpion 4) (set 1)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4cadp ,sc4cad, sc4_5reel, sc4cad, sc4_state, sc4cad, ROT0, "Qps","Cash Adder (V014) (Qps) (Scorpion 4) (set 2)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4cadn ,sc4cad, sc4_5reel, sc4cad, sc4_state, sc4cad, ROT0, "Qps","Cash Adder (V014) (Qps) (Scorpion 4) (set 1)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4cadp ,sc4cad, sc4_5reel, sc4cad, sc4_state, sc4cad, ROT0, "Qps","Cash Adder (V014) (Qps) (Scorpion 4) (set 2)", MACHINE_FLAGS, layout_bfm_sc4 )
// PR2528 CASH ADDER 043 CASHADDERSND CASH ADDER
-GAMEL( 200?, sc4cado ,sc4cad, sc4_5reel, sc4cad, sc4_state, sc4cad, ROT0, "Qps","Cash Adder (V043) (Qps) (Scorpion 4) (set 1)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4cadq ,sc4cad, sc4_5reel, sc4cad, sc4_state, sc4cad, ROT0, "Qps","Cash Adder (V043) (Qps) (Scorpion 4) (set 2)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4cado ,sc4cad, sc4_5reel, sc4cad, sc4_state, sc4cad, ROT0, "Qps","Cash Adder (V043) (Qps) (Scorpion 4) (set 1)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4cadq ,sc4cad, sc4_5reel, sc4cad, sc4_state, sc4cad, ROT0, "Qps","Cash Adder (V043) (Qps) (Scorpion 4) (set 2)", MACHINE_FLAGS, layout_bfm_sc4 )
DRIVER_INIT_MEMBER(sc4_state,sc4cadcl)
{
@@ -24162,8 +24164,8 @@ INPUT_PORTS_START( sc4cadcl ) // this structure is generated
INPUT_PORTS_END
// PRXXXX QPS155 CLUB CASH ADDER Version 411 CLUBCASHADDERSND CLUB CASH ADDER
-GAMEL( 200?, sc4cadcl ,0, sc4_5reel, sc4cadcl, sc4_state, sc4cadcl, ROT0, "Qps","Cash Adder Club (411) (Qps) (Scorpion 4) (set 1)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4cadcla ,sc4cadcl, sc4_5reel, sc4cadcl, sc4_state, sc4cadcl, ROT0, "Qps","Cash Adder Club (411) (Qps) (Scorpion 4) (set 2)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4cadcl ,0, sc4_5reel, sc4cadcl, sc4_state, sc4cadcl, ROT0, "Qps","Cash Adder Club (411) (Qps) (Scorpion 4) (set 1)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4cadcla ,sc4cadcl, sc4_5reel, sc4cadcl, sc4_state, sc4cadcl, ROT0, "Qps","Cash Adder Club (411) (Qps) (Scorpion 4) (set 2)", MACHINE_FLAGS, layout_bfm_sc4 )
DRIVER_INIT_MEMBER(sc4_state,sc4cr)
@@ -24222,15 +24224,15 @@ INPUT_PORTS_END
// PR2061 CASHRAKER RAKERSND CASHRAKER
-GAMEL( 200?, sc4cr ,0, sc4_4reel_alt, sc4cr, sc4_state, sc4cr, ROT0, "Qps","Cash Raker (Qps) (Scorpion 4) (set 1)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4cra ,sc4cr, sc4_4reel_alt, sc4cr, sc4_state, sc4cr, ROT0, "Qps","Cash Raker (Qps) (Scorpion 4) (set 2)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4crb ,sc4cr, sc4_4reel_alt, sc4cr, sc4_state, sc4cr, ROT0, "Qps","Cash Raker (Qps) (Scorpion 4) (set 3)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4cr ,0, sc4_4reel_alt, sc4cr, sc4_state, sc4cr, ROT0, "Qps","Cash Raker (Qps) (Scorpion 4) (set 1)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4cra ,sc4cr, sc4_4reel_alt, sc4cr, sc4_state, sc4cr, ROT0, "Qps","Cash Raker (Qps) (Scorpion 4) (set 2)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4crb ,sc4cr, sc4_4reel_alt, sc4cr, sc4_state, sc4cr, ROT0, "Qps","Cash Raker (Qps) (Scorpion 4) (set 3)", MACHINE_FLAGS, layout_bfm_sc4 )
// PR2061 CASHRAKER V2.1 RAKERSND CASHRAKER
-GAMEL( 200?, sc4crc ,sc4cr, sc4_4reel_alt, sc4cr, sc4_state, sc4cr, ROT0, "Qps","Cash Raker (V2.1) (Qps) (Scorpion 4) (set 1)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4cre ,sc4cr, sc4_4reel_alt, sc4cr, sc4_state, sc4cr, ROT0, "Qps","Cash Raker (V2.1) (Qps) (Scorpion 4) (set 2)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4crc ,sc4cr, sc4_4reel_alt, sc4cr, sc4_state, sc4cr, ROT0, "Qps","Cash Raker (V2.1) (Qps) (Scorpion 4) (set 1)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4cre ,sc4cr, sc4_4reel_alt, sc4cr, sc4_state, sc4cr, ROT0, "Qps","Cash Raker (V2.1) (Qps) (Scorpion 4) (set 2)", MACHINE_FLAGS, layout_bfm_sc4 )
// PR2061 CASHRAKER V2.2 RAKERSND CASHRAKER
-GAMEL( 200?, sc4crd ,sc4cr, sc4_4reel_alt, sc4cr, sc4_state, sc4cr, ROT0, "Qps","Cash Raker (V2.2) (Qps) (Scorpion 4) (set 1)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4crf ,sc4cr, sc4_4reel_alt, sc4cr, sc4_state, sc4cr, ROT0, "Qps","Cash Raker (V2.2) (Qps) (Scorpion 4) (set 2)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4crd ,sc4cr, sc4_4reel_alt, sc4cr, sc4_state, sc4cr, ROT0, "Qps","Cash Raker (V2.2) (Qps) (Scorpion 4) (set 1)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4crf ,sc4cr, sc4_4reel_alt, sc4cr, sc4_state, sc4cr, ROT0, "Qps","Cash Raker (V2.2) (Qps) (Scorpion 4) (set 2)", MACHINE_FLAGS, layout_bfm_sc4 )
@@ -24293,16 +24295,16 @@ INPUT_PORTS_START( sc4crcl ) // this structure is generated
INPUT_PORTS_END
// PR???? CLUB CASHRAKER V1.0 CLUBRAKERSND CLUB CASHRAKER
-GAMEL( 200?, sc4crcl ,0, sc4_5reel, sc4crcl, sc4_state, sc4crcl, ROT0, "Qps","Cash Raker Club (V1.0) (Qps) (Scorpion 4) (set 1)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4crclb ,sc4crcl, sc4_5reel, sc4crcl, sc4_state, sc4crcl, ROT0, "Qps","Cash Raker Club (V1.0) (Qps) (Scorpion 4) (set 2)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4crcl ,0, sc4_5reel, sc4crcl, sc4_state, sc4crcl, ROT0, "Qps","Cash Raker Club (V1.0) (Qps) (Scorpion 4) (set 1)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4crclb ,sc4crcl, sc4_5reel, sc4crcl, sc4_state, sc4crcl, ROT0, "Qps","Cash Raker Club (V1.0) (Qps) (Scorpion 4) (set 2)", MACHINE_FLAGS, layout_bfm_sc4 )
// PR???? CLUB CASHRAKER V1.1 CLUBRAKERSND CLUB CASHRAKER
-GAMEL( 200?, sc4crcla ,sc4crcl, sc4_5reel, sc4crcl, sc4_state, sc4crcl, ROT0, "Qps","Cash Raker Club (V1.1) (Qps) (Scorpion 4) (set 1)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4crclc ,sc4crcl, sc4_5reel, sc4crcl, sc4_state, sc4crcl, ROT0, "Qps","Cash Raker Club (V1.1) (Qps) (Scorpion 4) (set 2)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4crcla ,sc4crcl, sc4_5reel, sc4crcl, sc4_state, sc4crcl, ROT0, "Qps","Cash Raker Club (V1.1) (Qps) (Scorpion 4) (set 1)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4crclc ,sc4crcl, sc4_5reel, sc4crcl, sc4_state, sc4crcl, ROT0, "Qps","Cash Raker Club (V1.1) (Qps) (Scorpion 4) (set 2)", MACHINE_FLAGS, layout_bfm_sc4 )
// PR???? CLUB CASHRAKER V1.3 CLUBRAKERSND CLUB CASHRAKER
-GAMEL( 200?, sc4crcld ,sc4crcl, sc4_5reel, sc4crcl, sc4_state, sc4crcl, ROT0, "Qps","Cash Raker Club (V1.3) (Qps) (Scorpion 4)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4crcld ,sc4crcl, sc4_5reel, sc4crcl, sc4_state, sc4crcl, ROT0, "Qps","Cash Raker Club (V1.3) (Qps) (Scorpion 4)", MACHINE_FLAGS, layout_bfm_sc4 )
// PR???? CLUB CASHRAKER 411 CLUBRAKERSND CLUB CASHRAKER
-GAMEL( 200?, sc4crcle ,sc4crcl, sc4_5reel, sc4crcl, sc4_state, sc4crcl_mbus, ROT0, "Qps","Cash Raker Club (411) (Qps) (Scorpion 4) (set 1)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4crclf ,sc4crcl, sc4_5reel, sc4crcl, sc4_state, sc4crcl_mbus, ROT0, "Qps","Cash Raker Club (411) (Qps) (Scorpion 4) (set 2)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4crcle ,sc4crcl, sc4_5reel, sc4crcl, sc4_state, sc4crcl_mbus, ROT0, "Qps","Cash Raker Club (411) (Qps) (Scorpion 4) (set 1)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4crclf ,sc4crcl, sc4_5reel, sc4crcl, sc4_state, sc4crcl_mbus, ROT0, "Qps","Cash Raker Club (411) (Qps) (Scorpion 4) (set 2)", MACHINE_FLAGS, layout_bfm_sc4 )
DRIVER_INIT_MEMBER(sc4_state,sc4cashm)
@@ -24351,12 +24353,12 @@ INPUT_PORTS_START( sc4cashm ) // this structure is generated
INPUT_PORTS_END
// PR2008 CASHANOVA CASH SOUNDS
-GAMEL( 200?, sc4cashm ,0, sc4_4reel, sc4cashm, sc4_state, sc4cashm, ROT0, "Mazooma","Cashanova (Mazooma) (Scorpion 4) (set 1)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4cashma ,sc4cashm, sc4_4reel, sc4cashm, sc4_state, sc4cashm, ROT0, "Mazooma","Cashanova (Mazooma) (Scorpion 4) (set 2)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4cashmb ,sc4cashm, sc4_4reel, sc4cashm, sc4_state, sc4cashm, ROT0, "Mazooma","Cashanova (Mazooma) (Scorpion 4) (set 3)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4cashmc ,sc4cashm, sc4_4reel, sc4cashm, sc4_state, sc4cashm, ROT0, "Mazooma","Cashanova (Mazooma) (Scorpion 4) (set 4)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4cashmd ,sc4cashm, sc4_4reel, sc4cashm, sc4_state, sc4cashm, ROT0, "Mazooma","Cashanova (Mazooma) (Scorpion 4) (set 5)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4cashme ,sc4cashm, sc4_4reel, sc4cashm, sc4_state, sc4cashm, ROT0, "Mazooma","Cashanova (Mazooma) (Scorpion 4) (set 6)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4cashm ,0, sc4_4reel, sc4cashm, sc4_state, sc4cashm, ROT0, "Mazooma","Cashanova (Mazooma) (Scorpion 4) (set 1)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4cashma ,sc4cashm, sc4_4reel, sc4cashm, sc4_state, sc4cashm, ROT0, "Mazooma","Cashanova (Mazooma) (Scorpion 4) (set 2)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4cashmb ,sc4cashm, sc4_4reel, sc4cashm, sc4_state, sc4cashm, ROT0, "Mazooma","Cashanova (Mazooma) (Scorpion 4) (set 3)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4cashmc ,sc4cashm, sc4_4reel, sc4cashm, sc4_state, sc4cashm, ROT0, "Mazooma","Cashanova (Mazooma) (Scorpion 4) (set 4)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4cashmd ,sc4cashm, sc4_4reel, sc4cashm, sc4_state, sc4cashm, ROT0, "Mazooma","Cashanova (Mazooma) (Scorpion 4) (set 5)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4cashme ,sc4cashm, sc4_4reel, sc4cashm, sc4_state, sc4cashm, ROT0, "Mazooma","Cashanova (Mazooma) (Scorpion 4) (set 6)", MACHINE_FLAGS, layout_bfm_sc4 )
@@ -24434,15 +24436,15 @@ INPUT_PORTS_END
// this seems to need all the units connected to function
// PR2360 CASINO KING X BARKX SOUNDS 8 KING X
-GAMEL( 200?, sc4ckx ,0, sc4_3reel_200, sc4, sc4_state, sc4ckxtb, ROT0, "Mazooma","Casino King X (Mazooma) (Scorpion 4) (Top Box, set 1)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 ) // Top Box
-GAMEL( 200?, sc4ckxd ,sc4ckx, sc4_3reel_200, sc4, sc4_state, sc4ckxtb, ROT0, "Mazooma","Casino King X (Mazooma) (Scorpion 4) (Top Box, set 2)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 ) // Top Box
+GAMEL( 200?, sc4ckx ,0, sc4_3reel_200, sc4, sc4_state, sc4ckxtb, ROT0, "Mazooma","Casino King X (Mazooma) (Scorpion 4) (Top Box, set 1)", MACHINE_FLAGS, layout_bfm_sc4 ) // Top Box
+GAMEL( 200?, sc4ckxd ,sc4ckx, sc4_3reel_200, sc4, sc4_state, sc4ckxtb, ROT0, "Mazooma","Casino King X (Mazooma) (Scorpion 4) (Top Box, set 2)", MACHINE_FLAGS, layout_bfm_sc4 ) // Top Box
// PR2360 CASINO KING X KING X MAZ BARKX SOUNDS KING X 3P
-GAMEL( 200?, sc4ckxa ,sc4ckx, sc4_3reel_200, sc4ckxg, sc4_state, sc4ckx3p, ROT0, "Mazooma","Casino King X (Mazooma) (Scorpion 4) (Base, set 1)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4ckxb ,sc4ckx, sc4_3reel_200, sc4ckxg, sc4_state, sc4ckx3p, ROT0, "Mazooma","Casino King X (Mazooma) (Scorpion 4) (Base, set 2)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4ckxc ,sc4ckx, sc4_3reel_200, sc4ckxg, sc4_state, sc4ckx3p, ROT0, "Mazooma","Casino King X (Mazooma) (Scorpion 4) (Base, set 3)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4ckxe ,sc4ckx, sc4_3reel_200, sc4ckxg, sc4_state, sc4ckx3p, ROT0, "Mazooma","Casino King X (Mazooma) (Scorpion 4) (Base, set 4)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4ckxf ,sc4ckx, sc4_3reel_200, sc4ckxg, sc4_state, sc4ckx3p, ROT0, "Mazooma","Casino King X (Mazooma) (Scorpion 4) (Base, set 5)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4ckxg ,sc4ckx, sc4_3reel_200, sc4ckxg, sc4_state, sc4ckx3p, ROT0, "Mazooma","Casino King X (Mazooma) (Scorpion 4) (Base, set 6)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4ckxa ,sc4ckx, sc4_3reel_200, sc4ckxg, sc4_state, sc4ckx3p, ROT0, "Mazooma","Casino King X (Mazooma) (Scorpion 4) (Base, set 1)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4ckxb ,sc4ckx, sc4_3reel_200, sc4ckxg, sc4_state, sc4ckx3p, ROT0, "Mazooma","Casino King X (Mazooma) (Scorpion 4) (Base, set 2)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4ckxc ,sc4ckx, sc4_3reel_200, sc4ckxg, sc4_state, sc4ckx3p, ROT0, "Mazooma","Casino King X (Mazooma) (Scorpion 4) (Base, set 3)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4ckxe ,sc4ckx, sc4_3reel_200, sc4ckxg, sc4_state, sc4ckx3p, ROT0, "Mazooma","Casino King X (Mazooma) (Scorpion 4) (Base, set 4)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4ckxf ,sc4ckx, sc4_3reel_200, sc4ckxg, sc4_state, sc4ckx3p, ROT0, "Mazooma","Casino King X (Mazooma) (Scorpion 4) (Base, set 5)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4ckxg ,sc4ckx, sc4_3reel_200, sc4ckxg, sc4_state, sc4ckx3p, ROT0, "Mazooma","Casino King X (Mazooma) (Scorpion 4) (Base, set 6)", MACHINE_FLAGS, layout_bfm_sc4 )
DRIVER_INIT_MEMBER(sc4_state,sc4chick)
@@ -24491,7 +24493,7 @@ INPUT_PORTS_START( sc4chick ) // this structure is generated
INPUT_PORTS_END
// PR7060CASINO CHICKEN DALES TTTWO SOUNDS CHICKEN DALES
-GAMEL( 200?, sc4chick ,0, sc4_3reel, sc4chick, sc4_state, sc4chick, ROT0, "Mazooma","Chickendales (Mazooma) (Scorpion 4)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4chick ,0, sc4_3reel, sc4chick, sc4_state, sc4chick, ROT0, "Mazooma","Chickendales (Mazooma) (Scorpion 4)", MACHINE_FLAGS, layout_bfm_sc4 )
DRIVER_INIT_MEMBER(sc4_state,sc4ccogs)
@@ -24546,7 +24548,7 @@ INPUT_PORTS_START( sc4ccogs ) // this structure is generated
INPUT_PORTS_END
// PR2522 CLEVERCOGS V1.0 CLEVERCOGSSND CLEVER COGS
-GAMEL( 200?, sc4ccogs ,0, sc4_4reel, sc4ccogs, sc4_state, sc4ccogs, ROT0, "Qps","Clever Cogs (Qps) (Scorpion 4)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4ccogs ,0, sc4_4reel, sc4ccogs, sc4_state, sc4ccogs, ROT0, "Qps","Clever Cogs (Qps) (Scorpion 4)", MACHINE_FLAGS, layout_bfm_sc4 )
@@ -24621,29 +24623,29 @@ INPUT_PORTS_START( sc4cclime ) // this structure is generated
INPUT_PORTS_END
// PR1129 CASINO CRAZY CLIMBER PR1129 CRAZY CLIMBER SOUNDS11
-GAMEL( 200?, sc4cclim ,0, sc4_3reel, sc4cclime, sc4_state, sc4cclim, ROT0, "BFM","Casino Crazy Climber (Bellfruit) (Scorpion 4) (set 1)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4cclima ,sc4cclim, sc4_3reel, sc4cclime, sc4_state, sc4cclim, ROT0, "BFM","Casino Crazy Climber (Bellfruit) (Scorpion 4) (set 2)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4cclimb ,sc4cclim, sc4_3reel, sc4cclime, sc4_state, sc4cclim, ROT0, "BFM","Casino Crazy Climber (Bellfruit) (Scorpion 4) (set 3)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4cclimc ,sc4cclim, sc4_3reel, sc4cclime, sc4_state, sc4cclim, ROT0, "BFM","Casino Crazy Climber (Bellfruit) (Scorpion 4) (set 4)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4cclimd ,sc4cclim, sc4_3reel, sc4cclime, sc4_state, sc4cclim, ROT0, "BFM","Casino Crazy Climber (Bellfruit) (Scorpion 4) (set 5)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4cclimh ,sc4cclim, sc4_3reel, sc4cclime, sc4_state, sc4cclim, ROT0, "BFM","Casino Crazy Climber (Bellfruit) (Scorpion 4) (set 6)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4cclimi ,sc4cclim, sc4_3reel, sc4cclime, sc4_state, sc4cclim, ROT0, "BFM","Casino Crazy Climber (Bellfruit) (Scorpion 4) (set 7)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4cclimm ,sc4cclim, sc4_3reel, sc4cclime, sc4_state, sc4cclim, ROT0, "BFM","Casino Crazy Climber (Bellfruit) (Scorpion 4) (set 8)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4cclimn ,sc4cclim, sc4_3reel, sc4cclime, sc4_state, sc4cclim, ROT0, "BFM","Casino Crazy Climber (Bellfruit) (Scorpion 4) (set 9)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4cclimo ,sc4cclim, sc4_3reel, sc4cclime, sc4_state, sc4cclim, ROT0, "BFM","Casino Crazy Climber (Bellfruit) (Scorpion 4) (set 10)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4cclimp ,sc4cclim, sc4_3reel, sc4cclime, sc4_state, sc4cclim, ROT0, "BFM","Casino Crazy Climber (Bellfruit) (Scorpion 4) (set 11)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4cclims ,sc4cclim, sc4_3reel, sc4cclime, sc4_state, sc4cclim, ROT0, "BFM","Casino Crazy Climber (Bellfruit) (Scorpion 4) (set 12)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4cclim ,0, sc4_3reel, sc4cclime, sc4_state, sc4cclim, ROT0, "BFM","Casino Crazy Climber (Bellfruit) (Scorpion 4) (set 1)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4cclima ,sc4cclim, sc4_3reel, sc4cclime, sc4_state, sc4cclim, ROT0, "BFM","Casino Crazy Climber (Bellfruit) (Scorpion 4) (set 2)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4cclimb ,sc4cclim, sc4_3reel, sc4cclime, sc4_state, sc4cclim, ROT0, "BFM","Casino Crazy Climber (Bellfruit) (Scorpion 4) (set 3)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4cclimc ,sc4cclim, sc4_3reel, sc4cclime, sc4_state, sc4cclim, ROT0, "BFM","Casino Crazy Climber (Bellfruit) (Scorpion 4) (set 4)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4cclimd ,sc4cclim, sc4_3reel, sc4cclime, sc4_state, sc4cclim, ROT0, "BFM","Casino Crazy Climber (Bellfruit) (Scorpion 4) (set 5)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4cclimh ,sc4cclim, sc4_3reel, sc4cclime, sc4_state, sc4cclim, ROT0, "BFM","Casino Crazy Climber (Bellfruit) (Scorpion 4) (set 6)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4cclimi ,sc4cclim, sc4_3reel, sc4cclime, sc4_state, sc4cclim, ROT0, "BFM","Casino Crazy Climber (Bellfruit) (Scorpion 4) (set 7)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4cclimm ,sc4cclim, sc4_3reel, sc4cclime, sc4_state, sc4cclim, ROT0, "BFM","Casino Crazy Climber (Bellfruit) (Scorpion 4) (set 8)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4cclimn ,sc4cclim, sc4_3reel, sc4cclime, sc4_state, sc4cclim, ROT0, "BFM","Casino Crazy Climber (Bellfruit) (Scorpion 4) (set 9)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4cclimo ,sc4cclim, sc4_3reel, sc4cclime, sc4_state, sc4cclim, ROT0, "BFM","Casino Crazy Climber (Bellfruit) (Scorpion 4) (set 10)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4cclimp ,sc4cclim, sc4_3reel, sc4cclime, sc4_state, sc4cclim, ROT0, "BFM","Casino Crazy Climber (Bellfruit) (Scorpion 4) (set 11)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4cclims ,sc4cclim, sc4_3reel, sc4cclime, sc4_state, sc4cclim, ROT0, "BFM","Casino Crazy Climber (Bellfruit) (Scorpion 4) (set 12)", MACHINE_FLAGS, layout_bfm_sc4 )
// PR1129 CASINO CRAZY CLIMBER CRAZY CLIMBER S.SITE PR1129 CRAZY CLIMBER SOUNDS11
-GAMEL( 200?, sc4cclime ,sc4cclim, sc4_3reel, sc4cclime, sc4_state, sc4cclim_mbus, ROT0, "BFM","Casino Crazy Climber (Bellfruit) (Scorpion 4) (set 13)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4cclimf ,sc4cclim, sc4_3reel, sc4cclime, sc4_state, sc4cclim_mbus, ROT0, "BFM","Casino Crazy Climber (Bellfruit) (Scorpion 4) (set 14)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4cclimg ,sc4cclim, sc4_3reel, sc4cclime, sc4_state, sc4cclim_mbus, ROT0, "BFM","Casino Crazy Climber (Bellfruit) (Scorpion 4) (set 15)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4cclimj ,sc4cclim, sc4_3reel, sc4cclime, sc4_state, sc4cclim_mbus, ROT0, "BFM","Casino Crazy Climber (Bellfruit) (Scorpion 4) (set 16)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4cclimk ,sc4cclim, sc4_3reel, sc4cclime, sc4_state, sc4cclim_mbus, ROT0, "BFM","Casino Crazy Climber (Bellfruit) (Scorpion 4) (set 17)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4ccliml ,sc4cclim, sc4_3reel, sc4cclime, sc4_state, sc4cclim_mbus, ROT0, "BFM","Casino Crazy Climber (Bellfruit) (Scorpion 4) (set 18)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4cclimq ,sc4cclim, sc4_3reel, sc4cclime, sc4_state, sc4cclim_mbus, ROT0, "BFM","Casino Crazy Climber (Bellfruit) (Scorpion 4) (set 19)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4cclimr ,sc4cclim, sc4_3reel, sc4cclime, sc4_state, sc4cclim_mbus, ROT0, "BFM","Casino Crazy Climber (Bellfruit) (Scorpion 4) (set 20)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4cclimt ,sc4cclim, sc4_3reel, sc4cclime, sc4_state, sc4cclim_mbus, ROT0, "BFM","Casino Crazy Climber (Bellfruit) (Scorpion 4) (set 21)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4cclimu ,sc4cclim, sc4_3reel, sc4cclime, sc4_state, sc4cclim_mbus, ROT0, "BFM","Casino Crazy Climber (Bellfruit) (Scorpion 4) (set 22)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4cclime ,sc4cclim, sc4_3reel, sc4cclime, sc4_state, sc4cclim_mbus, ROT0, "BFM","Casino Crazy Climber (Bellfruit) (Scorpion 4) (set 13)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4cclimf ,sc4cclim, sc4_3reel, sc4cclime, sc4_state, sc4cclim_mbus, ROT0, "BFM","Casino Crazy Climber (Bellfruit) (Scorpion 4) (set 14)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4cclimg ,sc4cclim, sc4_3reel, sc4cclime, sc4_state, sc4cclim_mbus, ROT0, "BFM","Casino Crazy Climber (Bellfruit) (Scorpion 4) (set 15)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4cclimj ,sc4cclim, sc4_3reel, sc4cclime, sc4_state, sc4cclim_mbus, ROT0, "BFM","Casino Crazy Climber (Bellfruit) (Scorpion 4) (set 16)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4cclimk ,sc4cclim, sc4_3reel, sc4cclime, sc4_state, sc4cclim_mbus, ROT0, "BFM","Casino Crazy Climber (Bellfruit) (Scorpion 4) (set 17)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4ccliml ,sc4cclim, sc4_3reel, sc4cclime, sc4_state, sc4cclim_mbus, ROT0, "BFM","Casino Crazy Climber (Bellfruit) (Scorpion 4) (set 18)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4cclimq ,sc4cclim, sc4_3reel, sc4cclime, sc4_state, sc4cclim_mbus, ROT0, "BFM","Casino Crazy Climber (Bellfruit) (Scorpion 4) (set 19)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4cclimr ,sc4cclim, sc4_3reel, sc4cclime, sc4_state, sc4cclim_mbus, ROT0, "BFM","Casino Crazy Climber (Bellfruit) (Scorpion 4) (set 20)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4cclimt ,sc4cclim, sc4_3reel, sc4cclime, sc4_state, sc4cclim_mbus, ROT0, "BFM","Casino Crazy Climber (Bellfruit) (Scorpion 4) (set 21)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4cclimu ,sc4cclim, sc4_3reel, sc4cclime, sc4_state, sc4cclim_mbus, ROT0, "BFM","Casino Crazy Climber (Bellfruit) (Scorpion 4) (set 22)", MACHINE_FLAGS, layout_bfm_sc4 )
@@ -24710,36 +24712,36 @@ INPUT_PORTS_END
// PR6813 CRAZY FRUITS PR6813 CRAZY FRUITS SOUNDS11
// these 3 have a unique attract style
-GAMEL( 200?, sc4cfqps ,0, sc4_4reel, sc4cfqpsf, sc4_state, sc4cfqps, ROT0, "Qps","Crazy Fruits (PR6813, CRFR) (Qps) (Scorpion 4) (set 1)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4cfqpsb ,sc4cfqps, sc4_4reel, sc4cfqpsf, sc4_state, sc4cfqps, ROT0, "Qps","Crazy Fruits (PR6813, CRFR) (Qps) (Scorpion 4) (set 2)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4cfqpsd ,sc4cfqps, sc4_4reel, sc4cfqpsf, sc4_state, sc4cfqps, ROT0, "Qps","Crazy Fruits (PR6813, CRFR) (Qps) (Scorpion 4) (set 3)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4cfqps ,0, sc4_4reel, sc4cfqpsf, sc4_state, sc4cfqps, ROT0, "Qps","Crazy Fruits (PR6813, CRFR) (Qps) (Scorpion 4) (set 1)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4cfqpsb ,sc4cfqps, sc4_4reel, sc4cfqpsf, sc4_state, sc4cfqps, ROT0, "Qps","Crazy Fruits (PR6813, CRFR) (Qps) (Scorpion 4) (set 2)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4cfqpsd ,sc4cfqps, sc4_4reel, sc4cfqpsf, sc4_state, sc4cfqps, ROT0, "Qps","Crazy Fruits (PR6813, CRFR) (Qps) (Scorpion 4) (set 3)", MACHINE_FLAGS, layout_bfm_sc4 )
// the attract style changes below
-GAMEL( 200?, sc4cfqpsa ,sc4cfqps, sc4_4reel, sc4cfqpsf, sc4_state, sc4cfqps, ROT0, "Qps","Crazy Fruits (PR6813, CRFR) (Qps) (Scorpion 4) (set 4)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4cfqpsk ,sc4cfqps, sc4_4reel, sc4cfqpsf, sc4_state, sc4cfqps, ROT0, "Qps","Crazy Fruits (PR6813, CCAS) (Qps) (Scorpion 4) (set 1)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 ) // why are these 2 CCAS? a mistake? or different version?
-GAMEL( 200?, sc4czfrc ,sc4cfqps, sc4_4reel, sc4cfqpsf, sc4_state, sc4cfqps, ROT0, "Qps","Crazy Fruits (PR6813, CCAS) (Qps) (Scorpion 4) (set 2)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4czfrb ,sc4cfqps, sc4_4reel, sc4cfqpsf, sc4_state, sc4cfqps, ROT0, "BFM","Crazy Fruits (PR6813, CRFR) (BFM) (Scorpion 4) (set 1)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4czfre ,sc4cfqps, sc4_4reel, sc4cfqpsf, sc4_state, sc4cfqps, ROT0, "BFM","Crazy Fruits (PR6813, CRFR) (BFM) (Scorpion 4) (set 2)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4czfrg ,sc4cfqps, sc4_4reel, sc4cfqpsf, sc4_state, sc4cfqps, ROT0, "BFM","Crazy Fruits (PR6813, CRFR) (BFM) (Scorpion 4) (set 3)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4czfrh ,sc4cfqps, sc4_4reel, sc4cfqpsf, sc4_state, sc4cfqps, ROT0, "BFM","Crazy Fruits (PR6813, CRFR) (BFM) (Scorpion 4) (set 4)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4czfrj ,sc4cfqps, sc4_4reel, sc4cfqpsf, sc4_state, sc4cfqps, ROT0, "BFM","Crazy Fruits (PR6813, CRFR) (BFM) (Scorpion 4) (set 5)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4czfrk ,sc4cfqps, sc4_4reel, sc4cfqpsf, sc4_state, sc4cfqps, ROT0, "BFM","Crazy Fruits (PR6813, CRFR) (BFM) (Scorpion 4) (set 6)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4czfrf ,sc4cfqps, sc4_4reel, sc4cfqpsf, sc4_state, sc4cfqps, ROT0, "BFM / Whitbread","Crazy Fruits (PR6813, CRFR) (BFM + Whitbread) (Scorpion 4) (set 1)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4czfri ,sc4cfqps, sc4_4reel, sc4cfqpsf, sc4_state, sc4cfqps, ROT0, "BFM / Whitbread","Crazy Fruits (PR6813, CRFR) (BFM + Whitbread) (Scorpion 4) (set 2)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4cfqpsa ,sc4cfqps, sc4_4reel, sc4cfqpsf, sc4_state, sc4cfqps, ROT0, "Qps","Crazy Fruits (PR6813, CRFR) (Qps) (Scorpion 4) (set 4)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4cfqpsk ,sc4cfqps, sc4_4reel, sc4cfqpsf, sc4_state, sc4cfqps, ROT0, "Qps","Crazy Fruits (PR6813, CCAS) (Qps) (Scorpion 4) (set 1)", MACHINE_FLAGS, layout_bfm_sc4 ) // why are these 2 CCAS? a mistake? or different version?
+GAMEL( 200?, sc4czfrc ,sc4cfqps, sc4_4reel, sc4cfqpsf, sc4_state, sc4cfqps, ROT0, "Qps","Crazy Fruits (PR6813, CCAS) (Qps) (Scorpion 4) (set 2)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4czfrb ,sc4cfqps, sc4_4reel, sc4cfqpsf, sc4_state, sc4cfqps, ROT0, "BFM","Crazy Fruits (PR6813, CRFR) (BFM) (Scorpion 4) (set 1)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4czfre ,sc4cfqps, sc4_4reel, sc4cfqpsf, sc4_state, sc4cfqps, ROT0, "BFM","Crazy Fruits (PR6813, CRFR) (BFM) (Scorpion 4) (set 2)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4czfrg ,sc4cfqps, sc4_4reel, sc4cfqpsf, sc4_state, sc4cfqps, ROT0, "BFM","Crazy Fruits (PR6813, CRFR) (BFM) (Scorpion 4) (set 3)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4czfrh ,sc4cfqps, sc4_4reel, sc4cfqpsf, sc4_state, sc4cfqps, ROT0, "BFM","Crazy Fruits (PR6813, CRFR) (BFM) (Scorpion 4) (set 4)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4czfrj ,sc4cfqps, sc4_4reel, sc4cfqpsf, sc4_state, sc4cfqps, ROT0, "BFM","Crazy Fruits (PR6813, CRFR) (BFM) (Scorpion 4) (set 5)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4czfrk ,sc4cfqps, sc4_4reel, sc4cfqpsf, sc4_state, sc4cfqps, ROT0, "BFM","Crazy Fruits (PR6813, CRFR) (BFM) (Scorpion 4) (set 6)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4czfrf ,sc4cfqps, sc4_4reel, sc4cfqpsf, sc4_state, sc4cfqps, ROT0, "BFM / Whitbread","Crazy Fruits (PR6813, CRFR) (BFM + Whitbread) (Scorpion 4) (set 1)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4czfri ,sc4cfqps, sc4_4reel, sc4cfqpsf, sc4_state, sc4cfqps, ROT0, "BFM / Whitbread","Crazy Fruits (PR6813, CRFR) (BFM + Whitbread) (Scorpion 4) (set 2)", MACHINE_FLAGS, layout_bfm_sc4 )
// PR2521 CRAZY FRUITS V1.0 PR6813 CRAZY FRUITS SOUNDS11
-GAMEL( 200?, sc4cfqpsc ,sc4cfqps, sc4_4reel, sc4cfqpsf, sc4_state, sc4cfqps, ROT0, "Qps","Crazy Fruits V1.0 (PR2521, ECRZ) (Qps) (Scorpion 4) (set 1)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4cfqpse ,sc4cfqps, sc4_4reel, sc4cfqpsf, sc4_state, sc4cfqps, ROT0, "Qps","Crazy Fruits V1.0 (PR2521, ECRZ) (Qps) (Scorpion 4) (set 2)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4cfqpsc ,sc4cfqps, sc4_4reel, sc4cfqpsf, sc4_state, sc4cfqps, ROT0, "Qps","Crazy Fruits V1.0 (PR2521, ECRZ) (Qps) (Scorpion 4) (set 1)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4cfqpse ,sc4cfqps, sc4_4reel, sc4cfqpsf, sc4_state, sc4cfqps, ROT0, "Qps","Crazy Fruits V1.0 (PR2521, ECRZ) (Qps) (Scorpion 4) (set 2)", MACHINE_FLAGS, layout_bfm_sc4 )
// 4 sets below use reels 1,2,3,5 instead of 1,2,3,4 ?!
-GAMEL( 200?, sc4cfqpsf ,sc4cfqps, sc4_4reel_alt, sc4cfqpsf, sc4_state, sc4cfqps_alt, ROT0, "Qps","Crazy Fruits V1.0 (PR2521, ECRZ) (Qps) (Scorpion 4) (set 3)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4cfqpsg ,sc4cfqps, sc4_4reel_alt, sc4cfqpsf, sc4_state, sc4cfqps_alt, ROT0, "Qps","Crazy Fruits V1.0 (PR2521, ECRZ) (Qps) (Scorpion 4) (set 4)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4cfqpsh ,sc4cfqps, sc4_4reel_alt, sc4cfqpsf, sc4_state, sc4cfqps_alt, ROT0, "Qps","Crazy Fruits V1.0 (PR2521, ECRZ) (Qps) (Scorpion 4) (set 5)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4cfqpsi ,sc4cfqps, sc4_4reel_alt, sc4cfqpsf, sc4_state, sc4cfqps_alt, ROT0, "Qps","Crazy Fruits V1.0 (PR2521, ECRZ) (Qps) (Scorpion 4) (set 6)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4cfqpsf ,sc4cfqps, sc4_4reel_alt, sc4cfqpsf, sc4_state, sc4cfqps_alt, ROT0, "Qps","Crazy Fruits V1.0 (PR2521, ECRZ) (Qps) (Scorpion 4) (set 3)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4cfqpsg ,sc4cfqps, sc4_4reel_alt, sc4cfqpsf, sc4_state, sc4cfqps_alt, ROT0, "Qps","Crazy Fruits V1.0 (PR2521, ECRZ) (Qps) (Scorpion 4) (set 4)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4cfqpsh ,sc4cfqps, sc4_4reel_alt, sc4cfqpsf, sc4_state, sc4cfqps_alt, ROT0, "Qps","Crazy Fruits V1.0 (PR2521, ECRZ) (Qps) (Scorpion 4) (set 5)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4cfqpsi ,sc4cfqps, sc4_4reel_alt, sc4cfqpsf, sc4_state, sc4cfqps_alt, ROT0, "Qps","Crazy Fruits V1.0 (PR2521, ECRZ) (Qps) (Scorpion 4) (set 6)", MACHINE_FLAGS, layout_bfm_sc4 )
// PR4613 CRAZY FRUITS SP98 PR6813 CRAZY FRUITS SOUNDS11
-GAMEL( 200?, sc4cfqpsj ,sc4cfqps, sc4_4reel, sc4cfqpsf, sc4_state, sc4cfqps, ROT0, "Qps","Crazy Fruits SP98 (PR4613) (Qps) (Scorpion 4)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4cfqpsl ,sc4cfqps, sc4_4reel, sc4cfqpsf, sc4_state, sc4cfqps, ROT0, "BFM","Crazy Fruits SP98 (PR4613) (BFM) (Scorpion 4) (set 1)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4cfqpsn ,sc4cfqps, sc4_4reel, sc4cfqpsf, sc4_state, sc4cfqps, ROT0, "BFM","Crazy Fruits SP98 (PR4613) (BFM) (Scorpion 4) (set 2)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4cfqpsp ,sc4cfqps, sc4_4reel, sc4cfqpsf, sc4_state, sc4cfqps, ROT0, "BFM","Crazy Fruits SP98 (PR4613) (BFM) (Scorpion 4) (set 3)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4cfqpsm ,sc4cfqps, sc4_4reel, sc4cfqpsf, sc4_state, sc4cfqps, ROT0, "BFM / Whitbread","Crazy Fruits SP98 (PR4613) (BFM / Whitbread) (Scorpion 4) (set 1)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4cfqpso ,sc4cfqps, sc4_4reel, sc4cfqpsf, sc4_state, sc4cfqps, ROT0, "BFM / Whitbread","Crazy Fruits SP98 (PR4613) (BFM / Whitbread) (Scorpion 4) (set 2)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4cfqpsj ,sc4cfqps, sc4_4reel, sc4cfqpsf, sc4_state, sc4cfqps, ROT0, "Qps","Crazy Fruits SP98 (PR4613) (Qps) (Scorpion 4)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4cfqpsl ,sc4cfqps, sc4_4reel, sc4cfqpsf, sc4_state, sc4cfqps, ROT0, "BFM","Crazy Fruits SP98 (PR4613) (BFM) (Scorpion 4) (set 1)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4cfqpsn ,sc4cfqps, sc4_4reel, sc4cfqpsf, sc4_state, sc4cfqps, ROT0, "BFM","Crazy Fruits SP98 (PR4613) (BFM) (Scorpion 4) (set 2)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4cfqpsp ,sc4cfqps, sc4_4reel, sc4cfqpsf, sc4_state, sc4cfqps, ROT0, "BFM","Crazy Fruits SP98 (PR4613) (BFM) (Scorpion 4) (set 3)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4cfqpsm ,sc4cfqps, sc4_4reel, sc4cfqpsf, sc4_state, sc4cfqps, ROT0, "BFM / Whitbread","Crazy Fruits SP98 (PR4613) (BFM / Whitbread) (Scorpion 4) (set 1)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4cfqpso ,sc4cfqps, sc4_4reel, sc4cfqpsf, sc4_state, sc4cfqps, ROT0, "BFM / Whitbread","Crazy Fruits SP98 (PR4613) (BFM / Whitbread) (Scorpion 4) (set 2)", MACHINE_FLAGS, layout_bfm_sc4 )
@@ -24814,31 +24816,31 @@ INPUT_PORTS_START( sc4crzkyi ) // this structure is generated
INPUT_PORTS_END
// PR1128 CASINO CRAZY KEYS PR1128 CRAZY KEYS SOUNDS11
-GAMEL( 200?, sc4crzky ,0, sc4_3reel, sc4crzkyi, sc4_state, sc4crzky, ROT0, "BFM","Casino Crazy Keys (Bellfruit) (Scorpion 4) (set 1)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4crzkya ,sc4crzky, sc4_3reel, sc4crzkyi, sc4_state, sc4crzky, ROT0, "BFM","Casino Crazy Keys (Bellfruit) (Scorpion 4) (set 2)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4crzkyb ,sc4crzky, sc4_3reel, sc4crzkyi, sc4_state, sc4crzky, ROT0, "BFM","Casino Crazy Keys (Bellfruit) (Scorpion 4) (set 3)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4crzkyc ,sc4crzky, sc4_3reel, sc4crzkyi, sc4_state, sc4crzky, ROT0, "BFM","Casino Crazy Keys (Bellfruit) (Scorpion 4) (set 4)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4crzkyd ,sc4crzky, sc4_3reel, sc4crzkyi, sc4_state, sc4crzky, ROT0, "BFM","Casino Crazy Keys (Bellfruit) (Scorpion 4) (set 5)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4crzkye ,sc4crzky, sc4_3reel, sc4crzkyi, sc4_state, sc4crzky, ROT0, "BFM","Casino Crazy Keys (Bellfruit) (Scorpion 4) (set 6)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4crzkyf ,sc4crzky, sc4_3reel, sc4crzkyi, sc4_state, sc4crzky, ROT0, "BFM","Casino Crazy Keys (Bellfruit) (Scorpion 4) (set 7)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4crzkyg ,sc4crzky, sc4_3reel, sc4crzkyi, sc4_state, sc4crzky, ROT0, "BFM","Casino Crazy Keys (Bellfruit) (Scorpion 4) (set 8)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 ) // incomplete pairing
-GAMEL( 200?, sc4crzkyh ,sc4crzky, sc4_3reel, sc4crzkyi, sc4_state, sc4crzky, ROT0, "BFM","Casino Crazy Keys (Bellfruit) (Scorpion 4) (set 9)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4crzkyl ,sc4crzky, sc4_3reel, sc4crzkyi, sc4_state, sc4crzky, ROT0, "BFM","Casino Crazy Keys (Bellfruit) (Scorpion 4) (set 10)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4crzkym ,sc4crzky, sc4_3reel, sc4crzkyi, sc4_state, sc4crzky, ROT0, "BFM","Casino Crazy Keys (Bellfruit) (Scorpion 4) (set 11)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4crzkyn ,sc4crzky, sc4_3reel, sc4crzkyi, sc4_state, sc4crzky, ROT0, "BFM","Casino Crazy Keys (Bellfruit) (Scorpion 4) (set 12)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4crzkyt ,sc4crzky, sc4_3reel, sc4crzkyi, sc4_state, sc4crzky, ROT0, "BFM","Casino Crazy Keys (Bellfruit) (Scorpion 4) (set 13)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4crzkyu ,sc4crzky, sc4_3reel, sc4crzkyi, sc4_state, sc4crzky, ROT0, "BFM","Casino Crazy Keys (Bellfruit) (Scorpion 4) (set 14)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4crzky ,0, sc4_3reel, sc4crzkyi, sc4_state, sc4crzky, ROT0, "BFM","Casino Crazy Keys (Bellfruit) (Scorpion 4) (set 1)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4crzkya ,sc4crzky, sc4_3reel, sc4crzkyi, sc4_state, sc4crzky, ROT0, "BFM","Casino Crazy Keys (Bellfruit) (Scorpion 4) (set 2)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4crzkyb ,sc4crzky, sc4_3reel, sc4crzkyi, sc4_state, sc4crzky, ROT0, "BFM","Casino Crazy Keys (Bellfruit) (Scorpion 4) (set 3)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4crzkyc ,sc4crzky, sc4_3reel, sc4crzkyi, sc4_state, sc4crzky, ROT0, "BFM","Casino Crazy Keys (Bellfruit) (Scorpion 4) (set 4)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4crzkyd ,sc4crzky, sc4_3reel, sc4crzkyi, sc4_state, sc4crzky, ROT0, "BFM","Casino Crazy Keys (Bellfruit) (Scorpion 4) (set 5)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4crzkye ,sc4crzky, sc4_3reel, sc4crzkyi, sc4_state, sc4crzky, ROT0, "BFM","Casino Crazy Keys (Bellfruit) (Scorpion 4) (set 6)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4crzkyf ,sc4crzky, sc4_3reel, sc4crzkyi, sc4_state, sc4crzky, ROT0, "BFM","Casino Crazy Keys (Bellfruit) (Scorpion 4) (set 7)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4crzkyg ,sc4crzky, sc4_3reel, sc4crzkyi, sc4_state, sc4crzky, ROT0, "BFM","Casino Crazy Keys (Bellfruit) (Scorpion 4) (set 8)", MACHINE_FLAGS, layout_bfm_sc4 ) // incomplete pairing
+GAMEL( 200?, sc4crzkyh ,sc4crzky, sc4_3reel, sc4crzkyi, sc4_state, sc4crzky, ROT0, "BFM","Casino Crazy Keys (Bellfruit) (Scorpion 4) (set 9)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4crzkyl ,sc4crzky, sc4_3reel, sc4crzkyi, sc4_state, sc4crzky, ROT0, "BFM","Casino Crazy Keys (Bellfruit) (Scorpion 4) (set 10)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4crzkym ,sc4crzky, sc4_3reel, sc4crzkyi, sc4_state, sc4crzky, ROT0, "BFM","Casino Crazy Keys (Bellfruit) (Scorpion 4) (set 11)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4crzkyn ,sc4crzky, sc4_3reel, sc4crzkyi, sc4_state, sc4crzky, ROT0, "BFM","Casino Crazy Keys (Bellfruit) (Scorpion 4) (set 12)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4crzkyt ,sc4crzky, sc4_3reel, sc4crzkyi, sc4_state, sc4crzky, ROT0, "BFM","Casino Crazy Keys (Bellfruit) (Scorpion 4) (set 13)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4crzkyu ,sc4crzky, sc4_3reel, sc4crzkyi, sc4_state, sc4crzky, ROT0, "BFM","Casino Crazy Keys (Bellfruit) (Scorpion 4) (set 14)", MACHINE_FLAGS, layout_bfm_sc4 )
// PR1128 CASINO CRAZY KEYS CRAZY KEYS ARCADE PR1128 CRAZY KEYS SOUNDS11
-GAMEL( 200?, sc4crzkyi ,sc4crzky, sc4_3reel, sc4crzkyi, sc4_state, sc4crzky_mbus, ROT0, "BFM","Casino Crazy Keys Arcade (Bellfruit) (Scorpion 4) (set 1)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4crzkyj ,sc4crzky, sc4_3reel, sc4crzkyi, sc4_state, sc4crzky_mbus, ROT0, "BFM","Casino Crazy Keys Arcade (Bellfruit) (Scorpion 4) (set 2)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4crzkyk ,sc4crzky, sc4_3reel, sc4crzkyi, sc4_state, sc4crzky_mbus, ROT0, "BFM","Casino Crazy Keys Arcade (Bellfruit) (Scorpion 4) (set 3)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4crzkyo ,sc4crzky, sc4_3reel, sc4crzkyi, sc4_state, sc4crzky_mbus, ROT0, "BFM","Casino Crazy Keys Arcade (Bellfruit) (Scorpion 4) (set 4)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4crzkyp ,sc4crzky, sc4_3reel, sc4crzkyi, sc4_state, sc4crzky_mbus, ROT0, "BFM","Casino Crazy Keys Arcade (Bellfruit) (Scorpion 4) (set 5)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4crzkyq ,sc4crzky, sc4_3reel, sc4crzkyi, sc4_state, sc4crzky_mbus, ROT0, "BFM","Casino Crazy Keys Arcade (Bellfruit) (Scorpion 4) (set 6)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4crzkyr ,sc4crzky, sc4_3reel, sc4crzkyi, sc4_state, sc4crzky_mbus, ROT0, "BFM","Casino Crazy Keys Arcade (Bellfruit) (Scorpion 4) (set 7)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4crzkys ,sc4crzky, sc4_3reel, sc4crzkyi, sc4_state, sc4crzky_mbus, ROT0, "BFM","Casino Crazy Keys Arcade (Bellfruit) (Scorpion 4) (set 8)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4crzkyv ,sc4crzky, sc4_3reel, sc4crzkyi, sc4_state, sc4crzky_mbus, ROT0, "BFM","Casino Crazy Keys Arcade (Bellfruit) (Scorpion 4) (set 9)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4crzkyw ,sc4crzky, sc4_3reel, sc4crzkyi, sc4_state, sc4crzky_mbus, ROT0, "BFM","Casino Crazy Keys Arcade (Bellfruit) (Scorpion 4) (set 10)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4crzkyi ,sc4crzky, sc4_3reel, sc4crzkyi, sc4_state, sc4crzky_mbus, ROT0, "BFM","Casino Crazy Keys Arcade (Bellfruit) (Scorpion 4) (set 1)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4crzkyj ,sc4crzky, sc4_3reel, sc4crzkyi, sc4_state, sc4crzky_mbus, ROT0, "BFM","Casino Crazy Keys Arcade (Bellfruit) (Scorpion 4) (set 2)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4crzkyk ,sc4crzky, sc4_3reel, sc4crzkyi, sc4_state, sc4crzky_mbus, ROT0, "BFM","Casino Crazy Keys Arcade (Bellfruit) (Scorpion 4) (set 3)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4crzkyo ,sc4crzky, sc4_3reel, sc4crzkyi, sc4_state, sc4crzky_mbus, ROT0, "BFM","Casino Crazy Keys Arcade (Bellfruit) (Scorpion 4) (set 4)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4crzkyp ,sc4crzky, sc4_3reel, sc4crzkyi, sc4_state, sc4crzky_mbus, ROT0, "BFM","Casino Crazy Keys Arcade (Bellfruit) (Scorpion 4) (set 5)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4crzkyq ,sc4crzky, sc4_3reel, sc4crzkyi, sc4_state, sc4crzky_mbus, ROT0, "BFM","Casino Crazy Keys Arcade (Bellfruit) (Scorpion 4) (set 6)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4crzkyr ,sc4crzky, sc4_3reel, sc4crzkyi, sc4_state, sc4crzky_mbus, ROT0, "BFM","Casino Crazy Keys Arcade (Bellfruit) (Scorpion 4) (set 7)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4crzkys ,sc4crzky, sc4_3reel, sc4crzkyi, sc4_state, sc4crzky_mbus, ROT0, "BFM","Casino Crazy Keys Arcade (Bellfruit) (Scorpion 4) (set 8)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4crzkyv ,sc4crzky, sc4_3reel, sc4crzkyi, sc4_state, sc4crzky_mbus, ROT0, "BFM","Casino Crazy Keys Arcade (Bellfruit) (Scorpion 4) (set 9)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4crzkyw ,sc4crzky, sc4_3reel, sc4crzkyi, sc4_state, sc4crzky_mbus, ROT0, "BFM","Casino Crazy Keys Arcade (Bellfruit) (Scorpion 4) (set 10)", MACHINE_FLAGS, layout_bfm_sc4 )
@@ -24893,10 +24895,10 @@ INPUT_PORTS_START( sc4deepi ) // this structure is generated
INPUT_PORTS_END
// PR2099 DEEP IMPACT DIMP SOUNDS DEEP IMPACT
-GAMEL( 200?, sc4deepi ,0, sc4_5reel, sc4deepi, sc4_state, sc4deepi, ROT0, "Mazooma","Deep Impact (Mazooma) (Scorpion 4) (set 1)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4deepia ,sc4deepi, sc4_5reel, sc4deepi, sc4_state, sc4deepi, ROT0, "Mazooma","Deep Impact (Mazooma) (Scorpion 4) (set 2)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4deepib ,sc4deepi, sc4_5reel, sc4deepi, sc4_state, sc4deepi, ROT0, "Mazooma","Deep Impact (Mazooma) (Scorpion 4) (set 3)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4deepid ,sc4deepi, sc4_5reel, sc4deepi, sc4_state, sc4deepi, ROT0, "Mazooma","Deep Impact (Mazooma) (Scorpion 4) (set 4)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4deepi ,0, sc4_5reel, sc4deepi, sc4_state, sc4deepi, ROT0, "Mazooma","Deep Impact (Mazooma) (Scorpion 4) (set 1)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4deepia ,sc4deepi, sc4_5reel, sc4deepi, sc4_state, sc4deepi, ROT0, "Mazooma","Deep Impact (Mazooma) (Scorpion 4) (set 2)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4deepib ,sc4deepi, sc4_5reel, sc4deepi, sc4_state, sc4deepi, ROT0, "Mazooma","Deep Impact (Mazooma) (Scorpion 4) (set 3)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4deepid ,sc4deepi, sc4_5reel, sc4deepi, sc4_state, sc4deepi, ROT0, "Mazooma","Deep Impact (Mazooma) (Scorpion 4) (set 4)", MACHINE_FLAGS, layout_bfm_sc4 )
@@ -24942,13 +24944,13 @@ INPUT_PORTS_START( sc4dblfr ) // this structure is generated
INPUT_PORTS_END
// PR7060 DOUBLE FRENZY DFRZYSND
-GAMEL( 200?, sc4dblfr ,0, sc4_200_4r, sc4dblfr, sc4_state, sc4dblfr, ROT0, "Qps","Double Frenzy (PR7060) (Qps) (Scorpion 4) (set 1)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4dblfra ,sc4dblfr, sc4_200_4r, sc4dblfr, sc4_state, sc4dblfr, ROT0, "Qps","Double Frenzy (PR7060) (Qps) (Scorpion 4) (set 2)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4dblfrb ,sc4dblfr, sc4_200_4r, sc4dblfr, sc4_state, sc4dblfr, ROT0, "Qps","Double Frenzy (PR7060) (Qps) (Scorpion 4) (set 3)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4dblfrc ,sc4dblfr, sc4_200_4r, sc4dblfr, sc4_state, sc4dblfr, ROT0, "Qps","Double Frenzy (PR7060) (Qps) (Scorpion 4) (set 4)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4dblfr ,0, sc4_200_4r, sc4dblfr, sc4_state, sc4dblfr, ROT0, "Qps","Double Frenzy (PR7060) (Qps) (Scorpion 4) (set 1)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4dblfra ,sc4dblfr, sc4_200_4r, sc4dblfr, sc4_state, sc4dblfr, ROT0, "Qps","Double Frenzy (PR7060) (Qps) (Scorpion 4) (set 2)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4dblfrb ,sc4dblfr, sc4_200_4r, sc4dblfr, sc4_state, sc4dblfr, ROT0, "Qps","Double Frenzy (PR7060) (Qps) (Scorpion 4) (set 3)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4dblfrc ,sc4dblfr, sc4_200_4r, sc4dblfr, sc4_state, sc4dblfr, ROT0, "Qps","Double Frenzy (PR7060) (Qps) (Scorpion 4) (set 4)", MACHINE_FLAGS, layout_bfm_sc4 )
// PR2276 DOUBLE FRENZY 212 DFRZYSND
-GAMEL( 200?, sc4dblfrd ,sc4dblfr, sc4_200_4r, sc4dblfr, sc4_state, sc4dblfr, ROT0, "Qps","Double Frenzy (PR2276) (212) (Qps) (Scorpion 4) (set 1)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4dblfre ,sc4dblfr, sc4_200_4r, sc4dblfr, sc4_state, sc4dblfr, ROT0, "Qps","Double Frenzy (PR2276) (212) (Qps) (Scorpion 4) (set 2)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4dblfrd ,sc4dblfr, sc4_200_4r, sc4dblfr, sc4_state, sc4dblfr, ROT0, "Qps","Double Frenzy (PR2276) (212) (Qps) (Scorpion 4) (set 1)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4dblfre ,sc4dblfr, sc4_200_4r, sc4dblfr, sc4_state, sc4dblfr, ROT0, "Qps","Double Frenzy (PR2276) (212) (Qps) (Scorpion 4) (set 2)", MACHINE_FLAGS, layout_bfm_sc4 )
DRIVER_INIT_MEMBER(sc4_state,sc4darw)
{
@@ -25002,10 +25004,10 @@ INPUT_PORTS_START( sc4darw ) // this structure is generated
INPUT_PORTS_END
// PR2026 DOUGH AND ARROW DOUGHSND DOUGH AND ARROW
-GAMEL( 200?, sc4darw ,0, sc4_4reel_alt, sc4darw, sc4_state, sc4darw, ROT0, "Qps","Dough & Arrow (Qps) (Scorpion 4) (set 1)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4darwa ,sc4darw, sc4_4reel_alt, sc4darw, sc4_state, sc4darw, ROT0, "Qps","Dough & Arrow (Qps) (Scorpion 4) (set 2)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4darwb ,sc4darw, sc4_4reel_alt, sc4darw, sc4_state, sc4darw, ROT0, "Qps","Dough & Arrow (Qps) (Scorpion 4) (set 3)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4darwc ,sc4darw, sc4_4reel_alt, sc4darw, sc4_state, sc4darw, ROT0, "Qps","Dough & Arrow (Qps) (Scorpion 4) (set 4)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4darw ,0, sc4_4reel_alt, sc4darw, sc4_state, sc4darw, ROT0, "Qps","Dough & Arrow (Qps) (Scorpion 4) (set 1)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4darwa ,sc4darw, sc4_4reel_alt, sc4darw, sc4_state, sc4darw, ROT0, "Qps","Dough & Arrow (Qps) (Scorpion 4) (set 2)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4darwb ,sc4darw, sc4_4reel_alt, sc4darw, sc4_state, sc4darw, ROT0, "Qps","Dough & Arrow (Qps) (Scorpion 4) (set 3)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4darwc ,sc4darw, sc4_4reel_alt, sc4darw, sc4_state, sc4darw, ROT0, "Qps","Dough & Arrow (Qps) (Scorpion 4) (set 4)", MACHINE_FLAGS, layout_bfm_sc4 )
DRIVER_INIT_MEMBER(sc4_state,sc4duckq)
@@ -25057,8 +25059,8 @@ INPUT_PORTS_START( sc4duckq ) // this structure is generated
INPUT_PORTS_END
// PR2519 THEDUCKSOFHAZZARD V1.0 DUCKSOFHAZZARDSND DUCKS OF HAZZARD
-GAMEL( 200?, sc4duckq ,0, sc4_4reel_alt, sc4duckq, sc4_state, sc4duckq, ROT0, "Qps","Ducks Of Hazzard (Qps) (Scorpion 4) (set 1)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4duckqa ,sc4duckq, sc4_4reel_alt, sc4duckq, sc4_state, sc4duckq, ROT0, "Qps","Ducks Of Hazzard (Qps) (Scorpion 4) (set 2)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4duckq ,0, sc4_4reel_alt, sc4duckq, sc4_state, sc4duckq, ROT0, "Qps","Ducks Of Hazzard (Qps) (Scorpion 4) (set 1)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4duckqa ,sc4duckq, sc4_4reel_alt, sc4duckq, sc4_state, sc4duckq, ROT0, "Qps","Ducks Of Hazzard (Qps) (Scorpion 4) (set 2)", MACHINE_FLAGS, layout_bfm_sc4 )
DRIVER_INIT_MEMBER(sc4_state,sc4eascs)
@@ -25124,18 +25126,18 @@ INPUT_PORTS_START( sc4eascs ) // this structure is generated
INPUT_PORTS_END
// PR1326 CASINO EASY STREAK PR1326 EASY STREAK SOUNDS11 (actually expects PR1326_CAS_EASY_STREAK_SOUNDS11 ? )
-GAMEL( 200?, sc4eascs ,0, sc4_3reel, sc4eascs, sc4_state, sc4eascs, ROT0, "BFM","Casino Easy Streak (Bellfruit) (Scorpion 4) (set 1)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4eascsa ,sc4eascs, sc4_3reel, sc4eascs, sc4_state, sc4eascs, ROT0, "BFM","Casino Easy Streak (Bellfruit) (Scorpion 4) (set 2)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4eascsb ,sc4eascs, sc4_3reel, sc4eascs, sc4_state, sc4eascs, ROT0, "BFM","Casino Easy Streak (Bellfruit) (Scorpion 4) (set 3)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4eascsc ,sc4eascs, sc4_3reel, sc4eascs, sc4_state, sc4eascs, ROT0, "BFM","Casino Easy Streak (Bellfruit) (Scorpion 4) (set 4)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4eascsd ,sc4eascs, sc4_3reel, sc4eascs, sc4_state, sc4eascs, ROT0, "BFM","Casino Easy Streak (Bellfruit) (Scorpion 4) (set 5)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4eascse ,sc4eascs, sc4_3reel, sc4eascs, sc4_state, sc4eascs, ROT0, "BFM","Casino Easy Streak (Bellfruit) (Scorpion 4) (set 6)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4eascsf ,sc4eascs, sc4_3reel, sc4eascs, sc4_state, sc4eascs, ROT0, "BFM","Casino Easy Streak (Bellfruit) (Scorpion 4) (set 7)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4eascsg ,sc4eascs, sc4_3reel, sc4eascs, sc4_state, sc4eascs, ROT0, "BFM","Casino Easy Streak (Bellfruit) (Scorpion 4) (set 8)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4eascsh ,sc4eascs, sc4_3reel, sc4eascs, sc4_state, sc4eascs, ROT0, "BFM","Casino Easy Streak (Bellfruit) (Scorpion 4) (set 9)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4eascsi ,sc4eascs, sc4_3reel, sc4eascs, sc4_state, sc4eascs, ROT0, "BFM","Casino Easy Streak (Bellfruit) (Scorpion 4) (set 10)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4eascsj ,sc4eascs, sc4_3reel, sc4eascs, sc4_state, sc4eascs, ROT0, "BFM","Casino Easy Streak (Bellfruit) (Scorpion 4) (set 11)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4eascsk ,sc4eascs, sc4_3reel, sc4eascs, sc4_state, sc4eascs, ROT0, "BFM","Casino Easy Streak (Bellfruit) (Scorpion 4) (set 12)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4eascs ,0, sc4_3reel, sc4eascs, sc4_state, sc4eascs, ROT0, "BFM","Casino Easy Streak (Bellfruit) (Scorpion 4) (set 1)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4eascsa ,sc4eascs, sc4_3reel, sc4eascs, sc4_state, sc4eascs, ROT0, "BFM","Casino Easy Streak (Bellfruit) (Scorpion 4) (set 2)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4eascsb ,sc4eascs, sc4_3reel, sc4eascs, sc4_state, sc4eascs, ROT0, "BFM","Casino Easy Streak (Bellfruit) (Scorpion 4) (set 3)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4eascsc ,sc4eascs, sc4_3reel, sc4eascs, sc4_state, sc4eascs, ROT0, "BFM","Casino Easy Streak (Bellfruit) (Scorpion 4) (set 4)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4eascsd ,sc4eascs, sc4_3reel, sc4eascs, sc4_state, sc4eascs, ROT0, "BFM","Casino Easy Streak (Bellfruit) (Scorpion 4) (set 5)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4eascse ,sc4eascs, sc4_3reel, sc4eascs, sc4_state, sc4eascs, ROT0, "BFM","Casino Easy Streak (Bellfruit) (Scorpion 4) (set 6)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4eascsf ,sc4eascs, sc4_3reel, sc4eascs, sc4_state, sc4eascs, ROT0, "BFM","Casino Easy Streak (Bellfruit) (Scorpion 4) (set 7)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4eascsg ,sc4eascs, sc4_3reel, sc4eascs, sc4_state, sc4eascs, ROT0, "BFM","Casino Easy Streak (Bellfruit) (Scorpion 4) (set 8)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4eascsh ,sc4eascs, sc4_3reel, sc4eascs, sc4_state, sc4eascs, ROT0, "BFM","Casino Easy Streak (Bellfruit) (Scorpion 4) (set 9)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4eascsi ,sc4eascs, sc4_3reel, sc4eascs, sc4_state, sc4eascs, ROT0, "BFM","Casino Easy Streak (Bellfruit) (Scorpion 4) (set 10)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4eascsj ,sc4eascs, sc4_3reel, sc4eascs, sc4_state, sc4eascs, ROT0, "BFM","Casino Easy Streak (Bellfruit) (Scorpion 4) (set 11)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4eascsk ,sc4eascs, sc4_3reel, sc4eascs, sc4_state, sc4eascs, ROT0, "BFM","Casino Easy Streak (Bellfruit) (Scorpion 4) (set 12)", MACHINE_FLAGS, layout_bfm_sc4 )
DRIVER_INIT_MEMBER(sc4_state,sc4fastf)
@@ -25195,10 +25197,10 @@ INPUT_PORTS_START( sc4fastf ) // this structure is generated
INPUT_PORTS_END
// PR2071 FAST 'N' FURIOUS FNF SOUNDS FAST 'N' FURIOUS
-GAMEL( 200?, sc4fastf ,0, sc4_200_4rb, sc4fastf, sc4_state, sc4fastf, ROT0, "Mazooma","Fast 'n' Furious (Mazooma) (Scorpion 4) (set 1)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4fastfa ,sc4fastf, sc4_200_4rb, sc4fastf, sc4_state, sc4fastf, ROT0, "Mazooma","Fast 'n' Furious (Mazooma) (Scorpion 4) (set 2)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4fastfb ,sc4fastf, sc4_200_4rb, sc4fastf, sc4_state, sc4fastf, ROT0, "Mazooma","Fast 'n' Furious (Mazooma) (Scorpion 4) (set 3)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4fastfc ,sc4fastf, sc4_200_4rb, sc4fastf, sc4_state, sc4fastf, ROT0, "Mazooma","Fast 'n' Furious (Mazooma) (Scorpion 4) (set 4)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4fastf ,0, sc4_200_4rb, sc4fastf, sc4_state, sc4fastf, ROT0, "Mazooma","Fast 'n' Furious (Mazooma) (Scorpion 4) (set 1)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4fastfa ,sc4fastf, sc4_200_4rb, sc4fastf, sc4_state, sc4fastf, ROT0, "Mazooma","Fast 'n' Furious (Mazooma) (Scorpion 4) (set 2)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4fastfb ,sc4fastf, sc4_200_4rb, sc4fastf, sc4_state, sc4fastf, ROT0, "Mazooma","Fast 'n' Furious (Mazooma) (Scorpion 4) (set 3)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4fastfc ,sc4fastf, sc4_200_4rb, sc4fastf, sc4_state, sc4fastf, ROT0, "Mazooma","Fast 'n' Furious (Mazooma) (Scorpion 4) (set 4)", MACHINE_FLAGS, layout_bfm_sc4 )
DRIVER_INIT_MEMBER(sc4_state,sc4ffru)
@@ -25255,12 +25257,12 @@ INPUT_PORTS_START( sc4ffru ) // this structure is generated
INPUT_PORTS_END
// PR7070 FAST FRUIT FFRUIT SOUNDS FAST FRUIT
-GAMEL( 200?, sc4ffru ,0, sc4_4reel, sc4ffru, sc4_state, sc4ffru, ROT0, "Qps / Mazooma","Fast Fruit (Qps / Mazooma) (Scorpion 4) (set 1)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 ) // has 'MAZ' game code in roms
-GAMEL( 200?, sc4ffrub ,sc4ffru, sc4_4reel, sc4ffru, sc4_state, sc4ffru, ROT0, "Qps / Mazooma","Fast Fruit (Qps / Mazooma) (Scorpion 4) (set 2)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 ) // has 'MAZ' game code in roms
-GAMEL( 200?, sc4ffrua ,sc4ffru, sc4_4reel, sc4ffru, sc4_state, sc4ffru, ROT0, "Qps","Fast Fruit (Qps) (Scorpion 4) (set 1)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4ffruc ,sc4ffru, sc4_4reel, sc4ffru, sc4_state, sc4ffru, ROT0, "Qps","Fast Fruit (Qps) (Scorpion 4) (set 2)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4ffrud ,sc4ffru, sc4_4reel, sc4ffru, sc4_state, sc4ffru, ROT0, "Qps","Fast Fruit (Qps) (Scorpion 4) (set 3)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4ffrue ,sc4ffru, sc4_4reel, sc4ffru, sc4_state, sc4ffru, ROT0, "Qps","Fast Fruit (Qps) (Scorpion 4) (set 4)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4ffru ,0, sc4_4reel, sc4ffru, sc4_state, sc4ffru, ROT0, "Qps / Mazooma","Fast Fruit (Qps / Mazooma) (Scorpion 4) (set 1)", MACHINE_FLAGS, layout_bfm_sc4 ) // has 'MAZ' game code in roms
+GAMEL( 200?, sc4ffrub ,sc4ffru, sc4_4reel, sc4ffru, sc4_state, sc4ffru, ROT0, "Qps / Mazooma","Fast Fruit (Qps / Mazooma) (Scorpion 4) (set 2)", MACHINE_FLAGS, layout_bfm_sc4 ) // has 'MAZ' game code in roms
+GAMEL( 200?, sc4ffrua ,sc4ffru, sc4_4reel, sc4ffru, sc4_state, sc4ffru, ROT0, "Qps","Fast Fruit (Qps) (Scorpion 4) (set 1)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4ffruc ,sc4ffru, sc4_4reel, sc4ffru, sc4_state, sc4ffru, ROT0, "Qps","Fast Fruit (Qps) (Scorpion 4) (set 2)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4ffrud ,sc4ffru, sc4_4reel, sc4ffru, sc4_state, sc4ffru, ROT0, "Qps","Fast Fruit (Qps) (Scorpion 4) (set 3)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4ffrue ,sc4ffru, sc4_4reel, sc4ffru, sc4_state, sc4ffru, ROT0, "Qps","Fast Fruit (Qps) (Scorpion 4) (set 4)", MACHINE_FLAGS, layout_bfm_sc4 )
DRIVER_INIT_MEMBER(sc4_state,sc4fire)
@@ -25311,8 +25313,8 @@ INPUT_PORTS_START( sc4fire ) // this structure is generated
INPUT_PORTS_END
// PR2082 FIRE POWER FPOW SOUNDS FIRE POWER
-GAMEL( 200?, sc4fire ,0, sc4_4reel_alt, sc4fire, sc4_state, sc4fire, ROT0, "Mazooma","Firepower (Mazooma) (Scorpion 4) (set 1)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4firea ,sc4fire, sc4_4reel_alt, sc4fire, sc4_state, sc4fire, ROT0, "Mazooma","Firepower (Mazooma) (Scorpion 4) (set 2)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4fire ,0, sc4_4reel_alt, sc4fire, sc4_state, sc4fire, ROT0, "Mazooma","Firepower (Mazooma) (Scorpion 4) (set 1)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4firea ,sc4fire, sc4_4reel_alt, sc4fire, sc4_state, sc4fire, ROT0, "Mazooma","Firepower (Mazooma) (Scorpion 4) (set 2)", MACHINE_FLAGS, layout_bfm_sc4 )
DRIVER_INIT_MEMBER(sc4_state,sc4frenz)
@@ -25381,12 +25383,12 @@ INPUT_PORTS_START( sc4frenz ) // this structure is generated
INPUT_PORTS_END
// PR1101 FRUIT FRENZY PR1101 FRUIT FRENZY SOUNDS11
-GAMEL( 200?, sc4frenz ,0, sc4_4reel_alt, sc4frenz, sc4_state, sc4frenz, ROT0, "BFM","Fruit Frenzy (Bellfruit) (Scorpion 4) (set 1)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4frenza ,sc4frenz, sc4_4reel_alt, sc4frenz, sc4_state, sc4frenz, ROT0, "BFM","Fruit Frenzy (Bellfruit) (Scorpion 4) (set 2)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4frenzb ,sc4frenz, sc4_4reel_alt, sc4frenz, sc4_state, sc4frenz, ROT0, "BFM","Fruit Frenzy (Bellfruit) (Scorpion 4) (set 3)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4frenzc ,sc4frenz, sc4_4reel_alt, sc4frenz, sc4_state, sc4frenz, ROT0, "BFM","Fruit Frenzy (Bellfruit) (Scorpion 4) (set 4)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4frenzd ,sc4frenz, sc4_4reel_alt, sc4frenz, sc4_state, sc4frenz, ROT0, "BFM","Fruit Frenzy (Bellfruit) (Scorpion 4) (set 5)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4frenze ,sc4frenz, sc4_4reel_alt, sc4frenz, sc4_state, sc4frenz, ROT0, "BFM","Fruit Frenzy (Bellfruit) (Scorpion 4) (set 6)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4frenz ,0, sc4_4reel_alt, sc4frenz, sc4_state, sc4frenz, ROT0, "BFM","Fruit Frenzy (Bellfruit) (Scorpion 4) (set 1)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4frenza ,sc4frenz, sc4_4reel_alt, sc4frenz, sc4_state, sc4frenz, ROT0, "BFM","Fruit Frenzy (Bellfruit) (Scorpion 4) (set 2)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4frenzb ,sc4frenz, sc4_4reel_alt, sc4frenz, sc4_state, sc4frenz, ROT0, "BFM","Fruit Frenzy (Bellfruit) (Scorpion 4) (set 3)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4frenzc ,sc4frenz, sc4_4reel_alt, sc4frenz, sc4_state, sc4frenz, ROT0, "BFM","Fruit Frenzy (Bellfruit) (Scorpion 4) (set 4)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4frenzd ,sc4frenz, sc4_4reel_alt, sc4frenz, sc4_state, sc4frenz, ROT0, "BFM","Fruit Frenzy (Bellfruit) (Scorpion 4) (set 5)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4frenze ,sc4frenz, sc4_4reel_alt, sc4frenz, sc4_state, sc4frenz, ROT0, "BFM","Fruit Frenzy (Bellfruit) (Scorpion 4) (set 6)", MACHINE_FLAGS, layout_bfm_sc4 )
DRIVER_INIT_MEMBER(sc4_state,sc4ftopi)
{
@@ -25439,19 +25441,19 @@ INPUT_PORTS_START( sc4ftopi ) // this structure is generated
INPUT_PORTS_END
// PR2027 FRUITOPIA FRUITOPIASND FRUITOPIA
-GAMEL( 200?, sc4ftopi ,0, sc4_4reel_alt, sc4ftopi, sc4_state, sc4ftopi, ROT0, "Qps","Fruitopia (Qps) (Scorpion 4) (set 1)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4ftopia ,sc4ftopi, sc4_4reel_alt, sc4ftopi, sc4_state, sc4ftopi, ROT0, "Qps","Fruitopia (Qps) (Scorpion 4) (set 2)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4ftopib ,sc4ftopi, sc4_4reel_alt, sc4ftopi, sc4_state, sc4ftopi, ROT0, "Qps","Fruitopia (Qps) (Scorpion 4) (set 3)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4ftopic ,sc4ftopi, sc4_4reel_alt, sc4ftopi, sc4_state, sc4ftopi, ROT0, "Qps","Fruitopia (Qps) (Scorpion 4) (set 4)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4ftopi ,0, sc4_4reel_alt, sc4ftopi, sc4_state, sc4ftopi, ROT0, "Qps","Fruitopia (Qps) (Scorpion 4) (set 1)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4ftopia ,sc4ftopi, sc4_4reel_alt, sc4ftopi, sc4_state, sc4ftopi, ROT0, "Qps","Fruitopia (Qps) (Scorpion 4) (set 2)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4ftopib ,sc4ftopi, sc4_4reel_alt, sc4ftopi, sc4_state, sc4ftopi, ROT0, "Qps","Fruitopia (Qps) (Scorpion 4) (set 3)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4ftopic ,sc4ftopi, sc4_4reel_alt, sc4ftopi, sc4_state, sc4ftopi, ROT0, "Qps","Fruitopia (Qps) (Scorpion 4) (set 4)", MACHINE_FLAGS, layout_bfm_sc4 )
// PR2027 FRUITOPIA_17/04/03 V1.1 FRUITOPIASND FRUITOPIA
-GAMEL( 200?, sc4ftopif ,sc4ftopi, sc4_4reel_alt, sc4ftopi, sc4_state, sc4ftopi, ROT0, "Qps","Fruitopia (V1.1) (Qps) (Scorpion 4) (set 1)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4ftopii ,sc4ftopi, sc4_4reel_alt, sc4ftopi, sc4_state, sc4ftopi, ROT0, "Qps","Fruitopia (V1.1) (Qps) (Scorpion 4) (set 2)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4ftopif ,sc4ftopi, sc4_4reel_alt, sc4ftopi, sc4_state, sc4ftopi, ROT0, "Qps","Fruitopia (V1.1) (Qps) (Scorpion 4) (set 1)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4ftopii ,sc4ftopi, sc4_4reel_alt, sc4ftopi, sc4_state, sc4ftopi, ROT0, "Qps","Fruitopia (V1.1) (Qps) (Scorpion 4) (set 2)", MACHINE_FLAGS, layout_bfm_sc4 )
// PR2027 FRUITOPIA V2.1 FRUITOPIASND FRUITOPIA
-GAMEL( 200?, sc4ftopid ,sc4ftopi, sc4_4reel_alt, sc4ftopi, sc4_state, sc4ftopi, ROT0, "Qps","Fruitopia (V2.1) (Qps) (Scorpion 4) (set 1)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4ftopig ,sc4ftopi, sc4_4reel_alt, sc4ftopi, sc4_state, sc4ftopi, ROT0, "Qps","Fruitopia (V2.1) (Qps) (Scorpion 4) (set 2)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4ftopid ,sc4ftopi, sc4_4reel_alt, sc4ftopi, sc4_state, sc4ftopi, ROT0, "Qps","Fruitopia (V2.1) (Qps) (Scorpion 4) (set 1)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4ftopig ,sc4ftopi, sc4_4reel_alt, sc4ftopi, sc4_state, sc4ftopi, ROT0, "Qps","Fruitopia (V2.1) (Qps) (Scorpion 4) (set 2)", MACHINE_FLAGS, layout_bfm_sc4 )
// PR2027 FRUITOPIA V2.2 FRUITOPIASND FRUITOPIA
-GAMEL( 200?, sc4ftopie ,sc4ftopi, sc4_4reel_alt, sc4ftopi, sc4_state, sc4ftopi, ROT0, "Qps","Fruitopia (V2.2) (Qps) (Scorpion 4) (set 1)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4ftopih ,sc4ftopi, sc4_4reel_alt, sc4ftopi, sc4_state, sc4ftopi, ROT0, "Qps","Fruitopia (V2.2) (Qps) (Scorpion 4) (set 2)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4ftopie ,sc4ftopi, sc4_4reel_alt, sc4ftopi, sc4_state, sc4ftopi, ROT0, "Qps","Fruitopia (V2.2) (Qps) (Scorpion 4) (set 1)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4ftopih ,sc4ftopi, sc4_4reel_alt, sc4ftopi, sc4_state, sc4ftopi, ROT0, "Qps","Fruitopia (V2.2) (Qps) (Scorpion 4) (set 2)", MACHINE_FLAGS, layout_bfm_sc4 )
DRIVER_INIT_MEMBER(sc4_state,sc4fullt)
{
@@ -25506,20 +25508,20 @@ INPUT_PORTS_START( sc4fullt ) // this structure is generated
INPUT_PORTS_END
// PR2537 FULL THROTTLE 011 FULLTHROTTLESND FULL THROTTLE
-GAMEL( 200?, sc4fullt ,0, sc4_5reel, sc4fullt, sc4_state, sc4fullt, ROT0, "Qps","Full Throttle (011) (Qps) (Scorpion 4) (set 1)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4fulltb ,sc4fullt, sc4_5reel, sc4fullt, sc4_state, sc4fullt, ROT0, "Qps","Full Throttle (011) (Qps) (Scorpion 4) (set 2)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4fullt ,0, sc4_5reel, sc4fullt, sc4_state, sc4fullt, ROT0, "Qps","Full Throttle (011) (Qps) (Scorpion 4) (set 1)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4fulltb ,sc4fullt, sc4_5reel, sc4fullt, sc4_state, sc4fullt, ROT0, "Qps","Full Throttle (011) (Qps) (Scorpion 4) (set 2)", MACHINE_FLAGS, layout_bfm_sc4 )
// PR2537 FULL THROTTLE 041 FULLTHROTTLESND FULL THROTTLE
-GAMEL( 200?, sc4fullta ,sc4fullt, sc4_5reel, sc4fullt, sc4_state, sc4fullt, ROT0, "Qps","Full Throttle (041) (Qps) (Scorpion 4) (set 1)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4fulltc ,sc4fullt, sc4_5reel, sc4fullt, sc4_state, sc4fullt, ROT0, "Qps","Full Throttle (041) (Qps) (Scorpion 4) (set 2)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4fullta ,sc4fullt, sc4_5reel, sc4fullt, sc4_state, sc4fullt, ROT0, "Qps","Full Throttle (041) (Qps) (Scorpion 4) (set 1)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4fulltc ,sc4fullt, sc4_5reel, sc4fullt, sc4_state, sc4fullt, ROT0, "Qps","Full Throttle (041) (Qps) (Scorpion 4) (set 2)", MACHINE_FLAGS, layout_bfm_sc4 )
// PR2537 FULL THROTTLE 012 FULLTHROTTLESND FULL THROTTLE
-GAMEL( 200?, sc4fulltd ,sc4fullt, sc4_5reel, sc4fullt, sc4_state, sc4fullt, ROT0, "Qps","Full Throttle (012) (Qps) (Scorpion 4) (set 1)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4fulltg ,sc4fullt, sc4_5reel, sc4fullt, sc4_state, sc4fullt, ROT0, "Qps","Full Throttle (012) (Qps) (Scorpion 4) (set 2)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4fulltd ,sc4fullt, sc4_5reel, sc4fullt, sc4_state, sc4fullt, ROT0, "Qps","Full Throttle (012) (Qps) (Scorpion 4) (set 1)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4fulltg ,sc4fullt, sc4_5reel, sc4fullt, sc4_state, sc4fullt, ROT0, "Qps","Full Throttle (012) (Qps) (Scorpion 4) (set 2)", MACHINE_FLAGS, layout_bfm_sc4 )
// PR2537 FULL THROTTLE 042 FULLTHROTTLESND FULL THROTTLE
-GAMEL( 200?, sc4fullte ,sc4fullt, sc4_5reel, sc4fullt, sc4_state, sc4fullt, ROT0, "Qps","Full Throttle (042) (Qps) (Scorpion 4) (set 1)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4fullth ,sc4fullt, sc4_5reel, sc4fullt, sc4_state, sc4fullt, ROT0, "Qps","Full Throttle (042) (Qps) (Scorpion 4) (set 2)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4fullte ,sc4fullt, sc4_5reel, sc4fullt, sc4_state, sc4fullt, ROT0, "Qps","Full Throttle (042) (Qps) (Scorpion 4) (set 1)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4fullth ,sc4fullt, sc4_5reel, sc4fullt, sc4_state, sc4fullt, ROT0, "Qps","Full Throttle (042) (Qps) (Scorpion 4) (set 2)", MACHINE_FLAGS, layout_bfm_sc4 )
// R2537 FULL THROTTLE 013 FULLTHROTTLESND FULL THROTTLE
-GAMEL( 200?, sc4fulltf ,sc4fullt, sc4_5reel, sc4fullt, sc4_state, sc4fullt, ROT0, "Qps","Full Throttle (013) (Qps) (Scorpion 4) (set 1)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4fullti ,sc4fullt, sc4_5reel, sc4fullt, sc4_state, sc4fullt, ROT0, "Qps","Full Throttle (013) (Qps) (Scorpion 4) (set 2)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4fulltf ,sc4fullt, sc4_5reel, sc4fullt, sc4_state, sc4fullt, ROT0, "Qps","Full Throttle (013) (Qps) (Scorpion 4) (set 1)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4fullti ,sc4fullt, sc4_5reel, sc4fullt, sc4_state, sc4fullt, ROT0, "Qps","Full Throttle (013) (Qps) (Scorpion 4) (set 2)", MACHINE_FLAGS, layout_bfm_sc4 )
DRIVER_INIT_MEMBER(sc4_state,sc4ziggy)
@@ -25580,14 +25582,14 @@ INPUT_PORTS_START( sc4ziggy ) // this structure is generated
INPUT_PORTS_END
// PR2162 GETTIN' ZIGGY ZIGY SOUNDS GETTIN' ZIGGY
-GAMEL( 200?, sc4ziggy ,0, sc4_200_4ra, sc4ziggy, sc4_state, sc4ziggy, ROT0, "Mazooma","Gettin Ziggy With It (Mazooma) (Scorpion 4) (set 1)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4ziggya ,sc4ziggy, sc4_200_4ra, sc4ziggy, sc4_state, sc4ziggy, ROT0, "Mazooma","Gettin Ziggy With It (Mazooma) (Scorpion 4) (set 2)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4ziggyb ,sc4ziggy, sc4_200_4ra, sc4ziggy, sc4_state, sc4ziggy, ROT0, "Mazooma","Gettin Ziggy With It (Mazooma) (Scorpion 4) (set 3)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4ziggyc ,sc4ziggy, sc4_200_4ra, sc4ziggy, sc4_state, sc4ziggy, ROT0, "Mazooma","Gettin Ziggy With It (Mazooma) (Scorpion 4) (set 4)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4ziggyd ,sc4ziggy, sc4_200_4ra, sc4ziggy, sc4_state, sc4ziggy, ROT0, "Mazooma","Gettin Ziggy With It (Mazooma) (Scorpion 4) (set 5)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4ziggye ,sc4ziggy, sc4_200_4ra, sc4ziggy, sc4_state, sc4ziggy, ROT0, "Mazooma","Gettin Ziggy With It (Mazooma) (Scorpion 4) (set 6)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4ziggyf ,sc4ziggy, sc4_200_4ra, sc4ziggy, sc4_state, sc4ziggy, ROT0, "Mazooma","Gettin Ziggy With It (Mazooma) (Scorpion 4) (set 7)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4ziggyg ,sc4ziggy, sc4_200_4ra, sc4ziggy, sc4_state, sc4ziggy, ROT0, "Mazooma","Gettin Ziggy With It (Mazooma) (Scorpion 4) (set 8)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4ziggy ,0, sc4_200_4ra, sc4ziggy, sc4_state, sc4ziggy, ROT0, "Mazooma","Gettin Ziggy With It (Mazooma) (Scorpion 4) (set 1)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4ziggya ,sc4ziggy, sc4_200_4ra, sc4ziggy, sc4_state, sc4ziggy, ROT0, "Mazooma","Gettin Ziggy With It (Mazooma) (Scorpion 4) (set 2)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4ziggyb ,sc4ziggy, sc4_200_4ra, sc4ziggy, sc4_state, sc4ziggy, ROT0, "Mazooma","Gettin Ziggy With It (Mazooma) (Scorpion 4) (set 3)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4ziggyc ,sc4ziggy, sc4_200_4ra, sc4ziggy, sc4_state, sc4ziggy, ROT0, "Mazooma","Gettin Ziggy With It (Mazooma) (Scorpion 4) (set 4)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4ziggyd ,sc4ziggy, sc4_200_4ra, sc4ziggy, sc4_state, sc4ziggy, ROT0, "Mazooma","Gettin Ziggy With It (Mazooma) (Scorpion 4) (set 5)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4ziggye ,sc4ziggy, sc4_200_4ra, sc4ziggy, sc4_state, sc4ziggy, ROT0, "Mazooma","Gettin Ziggy With It (Mazooma) (Scorpion 4) (set 6)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4ziggyf ,sc4ziggy, sc4_200_4ra, sc4ziggy, sc4_state, sc4ziggy, ROT0, "Mazooma","Gettin Ziggy With It (Mazooma) (Scorpion 4) (set 7)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4ziggyg ,sc4ziggy, sc4_200_4ra, sc4ziggy, sc4_state, sc4ziggy, ROT0, "Mazooma","Gettin Ziggy With It (Mazooma) (Scorpion 4) (set 8)", MACHINE_FLAGS, layout_bfm_sc4 )
DRIVER_INIT_MEMBER(sc4_state,sc4gldcl)
{
@@ -25653,8 +25655,8 @@ INPUT_PORTS_START( sc4gldcl ) // this structure is generated
INPUT_PORTS_END
// PR2292 CLUB GLADIATOR CLUB GLADIATOR CLUB CLUB GLAD SOUNDS CLUB GLADIATOR
-GAMEL( 200?, sc4gldcl ,0, sc4_5reel, sc4gldcl, sc4_state, sc4gldcl, ROT0, "QPS","Gladiator Club (Mazooma) (Scorpion 4) (set 1)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4gldcla ,sc4gldcl, sc4_5reel, sc4gldcl, sc4_state, sc4gldcl, ROT0, "QPS","Gladiator Club (Mazooma) (Scorpion 4) (set 2)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4gldcl ,0, sc4_5reel, sc4gldcl, sc4_state, sc4gldcl, ROT0, "QPS","Gladiator Club (Mazooma) (Scorpion 4) (set 1)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4gldcla ,sc4gldcl, sc4_5reel, sc4gldcl, sc4_state, sc4gldcl, ROT0, "QPS","Gladiator Club (Mazooma) (Scorpion 4) (set 2)", MACHINE_FLAGS, layout_bfm_sc4 )
@@ -25724,16 +25726,16 @@ INPUT_PORTS_START( sc4ghost ) // this structure is generated
INPUT_PORTS_END
// PR7090 GOLDEN GHOST GOLDEN GHOST MAZ GHOST SOUNDS GOLDEN GHOST
-GAMEL( 200?, sc4ghost ,0, sc4_3reel_200, sc4ghost, sc4_state, sc4ghost, ROT0, "Mazooma","Golden Ghost (Mazooma) (Scorpion 4) (set 1)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4ghostb ,sc4ghost, sc4_3reel_200, sc4ghost, sc4_state, sc4ghost, ROT0, "Mazooma","Golden Ghost (Mazooma) (Scorpion 4) (set 2)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4ghostc ,sc4ghost, sc4_3reel_200, sc4ghost, sc4_state, sc4ghost, ROT0, "Mazooma","Golden Ghost (Mazooma) (Scorpion 4) (set 3)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4ghoste ,sc4ghost, sc4_3reel_200, sc4ghost, sc4_state, sc4ghost, ROT0, "Mazooma","Golden Ghost (Mazooma) (Scorpion 4) (set 4)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4ghostf ,sc4ghost, sc4_3reel_200, sc4ghost, sc4_state, sc4ghost, ROT0, "Mazooma","Golden Ghost (Mazooma) (Scorpion 4) (set 5)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4ghostg ,sc4ghost, sc4_3reel_200, sc4ghost, sc4_state, sc4ghost, ROT0, "Mazooma","Golden Ghost (Mazooma) (Scorpion 4) (set 6)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4ghost ,0, sc4_3reel_200, sc4ghost, sc4_state, sc4ghost, ROT0, "Mazooma","Golden Ghost (Mazooma) (Scorpion 4) (set 1)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4ghostb ,sc4ghost, sc4_3reel_200, sc4ghost, sc4_state, sc4ghost, ROT0, "Mazooma","Golden Ghost (Mazooma) (Scorpion 4) (set 2)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4ghostc ,sc4ghost, sc4_3reel_200, sc4ghost, sc4_state, sc4ghost, ROT0, "Mazooma","Golden Ghost (Mazooma) (Scorpion 4) (set 3)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4ghoste ,sc4ghost, sc4_3reel_200, sc4ghost, sc4_state, sc4ghost, ROT0, "Mazooma","Golden Ghost (Mazooma) (Scorpion 4) (set 4)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4ghostf ,sc4ghost, sc4_3reel_200, sc4ghost, sc4_state, sc4ghost, ROT0, "Mazooma","Golden Ghost (Mazooma) (Scorpion 4) (set 5)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4ghostg ,sc4ghost, sc4_3reel_200, sc4ghost, sc4_state, sc4ghost, ROT0, "Mazooma","Golden Ghost (Mazooma) (Scorpion 4) (set 6)", MACHINE_FLAGS, layout_bfm_sc4 )
// PR7090 GOLD GHOST TRIPLE GHOST SOUNDS 8 GOLDEN GHOST
-GAMEL( 200?, sc4ghosta ,sc4ghost, sc4_3reel, sc4ghost, sc4_state, sc4ghosttb, ROT0, "Mazooma","Golden Ghost (Mazooma) (Scorpion 4) (Top Box, set 1)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4ghostd ,sc4ghost, sc4_3reel, sc4ghost, sc4_state, sc4ghosttb, ROT0, "Mazooma","Golden Ghost (Mazooma) (Scorpion 4) (Top Box, set 2)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4ghosth ,sc4ghost, sc4_3reel, sc4ghost, sc4_state, sc4ghosttb, ROT0, "Mazooma","Golden Ghost (Mazooma) (Scorpion 4) (Top Box, set 3)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4ghosta ,sc4ghost, sc4_3reel, sc4ghost, sc4_state, sc4ghosttb, ROT0, "Mazooma","Golden Ghost (Mazooma) (Scorpion 4) (Top Box, set 1)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4ghostd ,sc4ghost, sc4_3reel, sc4ghost, sc4_state, sc4ghosttb, ROT0, "Mazooma","Golden Ghost (Mazooma) (Scorpion 4) (Top Box, set 2)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4ghosth ,sc4ghost, sc4_3reel, sc4ghost, sc4_state, sc4ghosttb, ROT0, "Mazooma","Golden Ghost (Mazooma) (Scorpion 4) (Top Box, set 3)", MACHINE_FLAGS, layout_bfm_sc4 )
@@ -25794,26 +25796,26 @@ INPUT_PORTS_START( sc4ggrid ) // this structure is generated
INPUT_PORTS_END
// PR2518 GOLDEN GRID V1.0 GOLDENGRIDSND GOLDEN GRID
-GAMEL( 200?, sc4ggrid ,0, sc4_4reel, sc4ggrid, sc4_state, sc4ggrid, ROT0, "Qps","Golden Grid (V1.0) (Qps) (Scorpion 4) (set 1)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4ggrida ,sc4ggrid, sc4_4reel, sc4ggrid, sc4_state, sc4ggrid, ROT0, "Qps","Golden Grid (V1.0) (Qps) (Scorpion 4) (set 2)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4ggride ,sc4ggrid, sc4_4reel, sc4ggrid, sc4_state, sc4ggrid, ROT0, "Qps","Golden Grid (V1.0) (Qps) (Scorpion 4) (set 3)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4ggridf ,sc4ggrid, sc4_4reel, sc4ggrid, sc4_state, sc4ggrid, ROT0, "Qps","Golden Grid (V1.0) (Qps) (Scorpion 4) (set 4)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4ggrid ,0, sc4_4reel, sc4ggrid, sc4_state, sc4ggrid, ROT0, "Qps","Golden Grid (V1.0) (Qps) (Scorpion 4) (set 1)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4ggrida ,sc4ggrid, sc4_4reel, sc4ggrid, sc4_state, sc4ggrid, ROT0, "Qps","Golden Grid (V1.0) (Qps) (Scorpion 4) (set 2)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4ggride ,sc4ggrid, sc4_4reel, sc4ggrid, sc4_state, sc4ggrid, ROT0, "Qps","Golden Grid (V1.0) (Qps) (Scorpion 4) (set 3)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4ggridf ,sc4ggrid, sc4_4reel, sc4ggrid, sc4_state, sc4ggrid, ROT0, "Qps","Golden Grid (V1.0) (Qps) (Scorpion 4) (set 4)", MACHINE_FLAGS, layout_bfm_sc4 )
// PR2518 GOLDEN GRID V1.1 GOLDENGRIDSND GOLDEN GRID
-GAMEL( 200?, sc4ggridb ,sc4ggrid, sc4_4reel, sc4ggrid, sc4_state, sc4ggrid, ROT0, "Qps","Golden Grid (V1.1) (Qps) (Scorpion 4) (set 1)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4ggridc ,sc4ggrid, sc4_4reel, sc4ggrid, sc4_state, sc4ggrid, ROT0, "Qps","Golden Grid (V1.1) (Qps) (Scorpion 4) (set 2)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4ggridg ,sc4ggrid, sc4_4reel, sc4ggrid, sc4_state, sc4ggrid, ROT0, "Qps","Golden Grid (V1.1) (Qps) (Scorpion 4) (set 3)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4ggridh ,sc4ggrid, sc4_4reel, sc4ggrid, sc4_state, sc4ggrid, ROT0, "Qps","Golden Grid (V1.1) (Qps) (Scorpion 4) (set 4)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4ggridb ,sc4ggrid, sc4_4reel, sc4ggrid, sc4_state, sc4ggrid, ROT0, "Qps","Golden Grid (V1.1) (Qps) (Scorpion 4) (set 1)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4ggridc ,sc4ggrid, sc4_4reel, sc4ggrid, sc4_state, sc4ggrid, ROT0, "Qps","Golden Grid (V1.1) (Qps) (Scorpion 4) (set 2)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4ggridg ,sc4ggrid, sc4_4reel, sc4ggrid, sc4_state, sc4ggrid, ROT0, "Qps","Golden Grid (V1.1) (Qps) (Scorpion 4) (set 3)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4ggridh ,sc4ggrid, sc4_4reel, sc4ggrid, sc4_state, sc4ggrid, ROT0, "Qps","Golden Grid (V1.1) (Qps) (Scorpion 4) (set 4)", MACHINE_FLAGS, layout_bfm_sc4 )
// PR2518 GOLDEN GRID V1.3 GOLDENGRIDSND GOLDEN GRID
-GAMEL( 200?, sc4ggridd ,sc4ggrid, sc4_4reel, sc4ggrid, sc4_state, sc4ggrid, ROT0, "Qps","Golden Grid (V1.3) (Qps) (Scorpion 4)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4ggridd ,sc4ggrid, sc4_4reel, sc4ggrid, sc4_state, sc4ggrid, ROT0, "Qps","Golden Grid (V1.3) (Qps) (Scorpion 4)", MACHINE_FLAGS, layout_bfm_sc4 )
// PR2518 GOLDEN GRID V011 GOLDENGRIDSND GOLDEN GRID
-GAMEL( 200?, sc4ggridi ,sc4ggrid, sc4_4reel, sc4ggrid, sc4_state, sc4ggrid_mbus, ROT0, "Qps","Golden Grid (V011) (Scorpion 4) (set 1)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4ggridk ,sc4ggrid, sc4_4reel, sc4ggrid, sc4_state, sc4ggrid_mbus, ROT0, "Qps","Golden Grid (V011) (Scorpion 4) (set 2)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4ggridi ,sc4ggrid, sc4_4reel, sc4ggrid, sc4_state, sc4ggrid_mbus, ROT0, "Qps","Golden Grid (V011) (Scorpion 4) (set 1)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4ggridk ,sc4ggrid, sc4_4reel, sc4ggrid, sc4_state, sc4ggrid_mbus, ROT0, "Qps","Golden Grid (V011) (Scorpion 4) (set 2)", MACHINE_FLAGS, layout_bfm_sc4 )
// PR2518 GOLDEN GRID V041 GOLDENGRIDSND GOLDEN GRID
-GAMEL( 200?, sc4ggridj ,sc4ggrid, sc4_4reel, sc4ggrid, sc4_state, sc4ggrid_mbus, ROT0, "Qps","Golden Grid (V041) (Qps) (Scorpion 4) (set 1)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4ggridl ,sc4ggrid, sc4_4reel, sc4ggrid, sc4_state, sc4ggrid_mbus, ROT0, "Qps","Golden Grid (V041) (Qps) (Scorpion 4) (set 2)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4ggridj ,sc4ggrid, sc4_4reel, sc4ggrid, sc4_state, sc4ggrid_mbus, ROT0, "Qps","Golden Grid (V041) (Qps) (Scorpion 4) (set 1)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4ggridl ,sc4ggrid, sc4_4reel, sc4ggrid, sc4_state, sc4ggrid_mbus, ROT0, "Qps","Golden Grid (V041) (Qps) (Scorpion 4) (set 2)", MACHINE_FLAGS, layout_bfm_sc4 )
// PR2518 GOLDEN GRID V012 GOLDENGRIDSND GOLDEN GRID
-GAMEL( 200?, sc4ggridm ,sc4ggrid, sc4_4reel, sc4ggrid, sc4_state, sc4ggrid_mbus, ROT0, "Qps","Golden Grid (V012) (Qps) (Scorpion 4) (set 1)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4ggridn ,sc4ggrid, sc4_4reel, sc4ggrid, sc4_state, sc4ggrid_mbus, ROT0, "Qps","Golden Grid (V012) (Qps) (Scorpion 4) (set 2)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4ggridm ,sc4ggrid, sc4_4reel, sc4ggrid, sc4_state, sc4ggrid_mbus, ROT0, "Qps","Golden Grid (V012) (Qps) (Scorpion 4) (set 1)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4ggridn ,sc4ggrid, sc4_4reel, sc4ggrid, sc4_state, sc4ggrid_mbus, ROT0, "Qps","Golden Grid (V012) (Qps) (Scorpion 4) (set 2)", MACHINE_FLAGS, layout_bfm_sc4 )
DRIVER_INIT_MEMBER(sc4_state,sc4ggcl)
@@ -25874,13 +25876,13 @@ INPUT_PORTS_START( sc4ggcl ) // this structure is generated
INPUT_PORTS_END
// PR???? CLUB GOLDEN GRID V1.0 CLUBGOLDENGRIDSND CLUB GOLDEN GRID
-GAMEL( 200?, sc4ggcl ,0, sc4_5reel, sc4ggcl, sc4_state, sc4ggcl, ROT0, "Qps","Golden Grid Club (V1.0) (Qps) (Scorpion 4)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4ggcl ,0, sc4_5reel, sc4ggcl, sc4_state, sc4ggcl, ROT0, "Qps","Golden Grid Club (V1.0) (Qps) (Scorpion 4)", MACHINE_FLAGS, layout_bfm_sc4 )
// PR???? CLUB GOLDEN GRID 411 CLUBGOLDENGRIDSND CLUB GOLDEN GRID
-GAMEL( 200?, sc4ggcla ,sc4ggcl, sc4_5reel, sc4ggcl, sc4_state, sc4ggcl_mbus, ROT0, "Qps","Golden Grid Club (V411) (Qps) (Scorpion 4) (set 1)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4ggclb ,sc4ggcl, sc4_5reel, sc4ggcl, sc4_state, sc4ggcl_mbus, ROT0, "Qps","Golden Grid Club (V411) (Qps) (Scorpion 4) (set 2)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4ggcla ,sc4ggcl, sc4_5reel, sc4ggcl, sc4_state, sc4ggcl_mbus, ROT0, "Qps","Golden Grid Club (V411) (Qps) (Scorpion 4) (set 1)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4ggclb ,sc4ggcl, sc4_5reel, sc4ggcl, sc4_state, sc4ggcl_mbus, ROT0, "Qps","Golden Grid Club (V411) (Qps) (Scorpion 4) (set 2)", MACHINE_FLAGS, layout_bfm_sc4 )
// PR???? CLUB GOLDEN GRID 412 CLUBGOLDENGRIDSND CLUB GOLDEN GRID
-GAMEL( 200?, sc4ggclc ,sc4ggcl, sc4_5reel, sc4ggcl, sc4_state, sc4ggcl_mbus, ROT0, "Qps","Golden Grid Club (V412) (Qps) (Scorpion 4) (set 1)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4ggcld ,sc4ggcl, sc4_5reel, sc4ggcl, sc4_state, sc4ggcl_mbus, ROT0, "Qps","Golden Grid Club (V412) (Qps) (Scorpion 4) (set 2)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4ggclc ,sc4ggcl, sc4_5reel, sc4ggcl, sc4_state, sc4ggcl_mbus, ROT0, "Qps","Golden Grid Club (V412) (Qps) (Scorpion 4) (set 1)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4ggcld ,sc4ggcl, sc4_5reel, sc4ggcl, sc4_state, sc4ggcl_mbus, ROT0, "Qps","Golden Grid Club (V412) (Qps) (Scorpion 4) (set 2)", MACHINE_FLAGS, layout_bfm_sc4 )
@@ -26004,15 +26006,15 @@ INPUT_PORTS_END
// the dot matrix calls these 'classic crazy fruits' was it not shown or is Golden Winner a subtitle?
// PR1431 GOLDEN WINNER PR1431 GOLDEN WINNER SND11
-GAMEL( 200?, sc4goldw ,0, sc4_3reel, sc4goldw, sc4_state, sc4goldw, ROT0, "BFM","Golden Winner (Bellfruit) (Scorpion 4) (set 1)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4goldwa ,sc4goldw, sc4_3reel, sc4goldw, sc4_state, sc4goldw, ROT0, "BFM","Golden Winner (Bellfruit) (Scorpion 4) (set 2)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4goldwb ,sc4goldw, sc4_3reel, sc4goldw, sc4_state, sc4goldw, ROT0, "BFM","Golden Winner (Bellfruit) (Scorpion 4) (set 3)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4goldwc ,sc4goldw, sc4_3reel, sc4goldw, sc4_state, sc4goldw, ROT0, "BFM","Golden Winner (Bellfruit) (Scorpion 4) (set 4)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4goldw ,0, sc4_3reel, sc4goldw, sc4_state, sc4goldw, ROT0, "BFM","Golden Winner (Bellfruit) (Scorpion 4) (set 1)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4goldwa ,sc4goldw, sc4_3reel, sc4goldw, sc4_state, sc4goldw, ROT0, "BFM","Golden Winner (Bellfruit) (Scorpion 4) (set 2)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4goldwb ,sc4goldw, sc4_3reel, sc4goldw, sc4_state, sc4goldw, ROT0, "BFM","Golden Winner (Bellfruit) (Scorpion 4) (set 3)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4goldwc ,sc4goldw, sc4_3reel, sc4goldw, sc4_state, sc4goldw, ROT0, "BFM","Golden Winner (Bellfruit) (Scorpion 4) (set 4)", MACHINE_FLAGS, layout_bfm_sc4 )
// PR1437 GOLDEN WINNER PR1436 TRIPLE CASINO SOUNDS11 // these show init comms
-GAMEL( 200?, sc4goldwd ,sc4goldw, sc4, sc4goldwd, sc4_state, sc4, ROT0, "BFM","Golden Winner (Bellfruit) (Scorpion 4) (set 5)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4goldwe ,sc4goldw, sc4, sc4goldwd, sc4_state, sc4, ROT0, "BFM","Golden Winner (Bellfruit) (Scorpion 4) (set 6)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4goldwf ,sc4goldw, sc4, sc4goldwd, sc4_state, sc4, ROT0, "BFM","Golden Winner (Bellfruit) (Scorpion 4) (set 7)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4goldwg ,sc4goldw, sc4, sc4goldwd, sc4_state, sc4, ROT0, "BFM","Golden Winner (Bellfruit) (Scorpion 4) (set 8)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4goldwd ,sc4goldw, sc4, sc4goldwd, sc4_state, sc4, ROT0, "BFM","Golden Winner (Bellfruit) (Scorpion 4) (set 5)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4goldwe ,sc4goldw, sc4, sc4goldwd, sc4_state, sc4, ROT0, "BFM","Golden Winner (Bellfruit) (Scorpion 4) (set 6)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4goldwf ,sc4goldw, sc4, sc4goldwd, sc4_state, sc4, ROT0, "BFM","Golden Winner (Bellfruit) (Scorpion 4) (set 7)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4goldwg ,sc4goldw, sc4, sc4goldwd, sc4_state, sc4, ROT0, "BFM","Golden Winner (Bellfruit) (Scorpion 4) (set 8)", MACHINE_FLAGS, layout_bfm_sc4 )
INPUT_PORTS_START( sc4ggdlx ) // this structure is generated
PORT_INCLUDE( sc4_base )
@@ -26059,16 +26061,16 @@ INPUT_PORTS_END
// GGDX
// these were in the golden game sets
// PR2201 GOLDEN X GOLDEN GAME MAZ GXDX SOUNDS GOLDEN GAME DLX
-GAMEL( 200?, sc4ggdlx ,0, sc4, sc4ggdlx, sc4_state, sc4ggame, ROT0, "Mazooma","Golden Game Deluxe (Mazooma) (PR2201) (Scorpion 4) (GGDX, set 1)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4ggdlxc ,sc4ggdlx, sc4, sc4ggdlx, sc4_state, sc4ggame, ROT0, "Mazooma","Golden Game Deluxe (Mazooma) (PR2201) (Scorpion 4) (GGDX, set 2)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )// ^^
+GAMEL( 200?, sc4ggdlx ,0, sc4, sc4ggdlx, sc4_state, sc4ggame, ROT0, "Mazooma","Golden Game Deluxe (Mazooma) (PR2201) (Scorpion 4) (GGDX, set 1)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4ggdlxc ,sc4ggdlx, sc4, sc4ggdlx, sc4_state, sc4ggame, ROT0, "Mazooma","Golden Game Deluxe (Mazooma) (PR2201) (Scorpion 4) (GGDX, set 2)", MACHINE_FLAGS, layout_bfm_sc4 )// ^^
// PR2201 GOLDEN X GOLDEN GAME DLX MAZ GXDX SOUNDS GOLDEN X
-GAMEL( 200?, sc4ggdlxa ,sc4ggdlx, sc4, sc4ggdlx, sc4_state, sc4ggame, ROT0, "Mazooma","Golden Game Deluxe (Mazooma) (PR2201) (Scorpion 4) (GGDX, set 3)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4ggdlxb ,sc4ggdlx, sc4, sc4ggdlx, sc4_state, sc4ggame, ROT0, "Mazooma","Golden Game Deluxe (Mazooma) (PR2201) (Scorpion 4) (GGDX, set 4)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )// ^^
-GAMEL( 200?, sc4ggdlxd ,sc4ggdlx, sc4, sc4ggdlx, sc4_state, sc4ggame, ROT0, "Mazooma","Golden Game Deluxe (Mazooma) (PR2201) (Scorpion 4) (GGDX, set 5)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )// ^^
-GAMEL( 200?, sc4ggdlxe ,sc4ggdlx, sc4, sc4ggdlx, sc4_state, sc4ggame, ROT0, "Mazooma","Golden Game Deluxe (Mazooma) (PR2201) (Scorpion 4) (GGDX, set 6)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )// ^^
+GAMEL( 200?, sc4ggdlxa ,sc4ggdlx, sc4, sc4ggdlx, sc4_state, sc4ggame, ROT0, "Mazooma","Golden Game Deluxe (Mazooma) (PR2201) (Scorpion 4) (GGDX, set 3)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4ggdlxb ,sc4ggdlx, sc4, sc4ggdlx, sc4_state, sc4ggame, ROT0, "Mazooma","Golden Game Deluxe (Mazooma) (PR2201) (Scorpion 4) (GGDX, set 4)", MACHINE_FLAGS, layout_bfm_sc4 )// ^^
+GAMEL( 200?, sc4ggdlxd ,sc4ggdlx, sc4, sc4ggdlx, sc4_state, sc4ggame, ROT0, "Mazooma","Golden Game Deluxe (Mazooma) (PR2201) (Scorpion 4) (GGDX, set 5)", MACHINE_FLAGS, layout_bfm_sc4 )// ^^
+GAMEL( 200?, sc4ggdlxe ,sc4ggdlx, sc4, sc4ggdlx, sc4_state, sc4ggame, ROT0, "Mazooma","Golden Game Deluxe (Mazooma) (PR2201) (Scorpion 4) (GGDX, set 6)", MACHINE_FLAGS, layout_bfm_sc4 )// ^^
// PR2201 GOLDEN GAME DELUXE GOLDEN GAME MAZ GXDX SOUNDS GOLDEN GAME DLX
-GAMEL( 200?, sc4ggdlxf ,sc4ggdlx, sc4, sc4ggdlx, sc4_state, sc4ggame, ROT0, "Mazooma","Golden Game Deluxe (Mazooma) (PR2201) (Scorpion 4) (GGDX, set 7)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4ggdlxg ,sc4ggdlx, sc4, sc4ggdlx, sc4_state, sc4ggame, ROT0, "Mazooma","Golden Game Deluxe (Mazooma) (PR2201) (Scorpion 4) (GGDX, set 8)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )// ^^
+GAMEL( 200?, sc4ggdlxf ,sc4ggdlx, sc4, sc4ggdlx, sc4_state, sc4ggame, ROT0, "Mazooma","Golden Game Deluxe (Mazooma) (PR2201) (Scorpion 4) (GGDX, set 7)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4ggdlxg ,sc4ggdlx, sc4, sc4ggdlx, sc4_state, sc4ggame, ROT0, "Mazooma","Golden Game Deluxe (Mazooma) (PR2201) (Scorpion 4) (GGDX, set 8)", MACHINE_FLAGS, layout_bfm_sc4 )// ^^
@@ -26139,8 +26141,8 @@ INPUT_PORTS_START( sc4greed ) // this structure is generated
INPUT_PORTS_END
// PR1401 AWP GREEDY GONZALEZ PR1401 GREEDY GONZ SOUNDS11
-GAMEL( 200?, sc4greed ,0, sc4_4reel_alt, sc4greed, sc4_state, sc4greed, ROT0, "BFM","Greedy Gonzalez (Bellfruit) (Scorpion 4) (set 1)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4greeda ,sc4greed, sc4_4reel_alt, sc4greed, sc4_state, sc4greed, ROT0, "BFM","Greedy Gonzalez (Bellfruit) (Scorpion 4) (set 2)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4greed ,0, sc4_4reel_alt, sc4greed, sc4_state, sc4greed, ROT0, "BFM","Greedy Gonzalez (Bellfruit) (Scorpion 4) (set 1)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4greeda ,sc4greed, sc4_4reel_alt, sc4greed, sc4_state, sc4greed, ROT0, "BFM","Greedy Gonzalez (Bellfruit) (Scorpion 4) (set 2)", MACHINE_FLAGS, layout_bfm_sc4 )
DRIVER_INIT_MEMBER(sc4_state,sc4hf)
@@ -26205,14 +26207,14 @@ INPUT_PORTS_START( sc4hf ) // this structure is generated
INPUT_PORTS_END
//PR1011 HAPPY FRUITS PR1011 HAPPY FRUITS SOUNDS11
-GAMEL( 200?, sc4hf ,0, sc4_4reel, sc4hf, sc4_state, sc4hf, ROT0, "BFM","Happy Fruits (Bellfruit) (Scorpion 4) (set 1)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4hfa ,sc4hf, sc4_4reel, sc4hf, sc4_state, sc4hf, ROT0, "BFM","Happy Fruits (Bellfruit) (Scorpion 4) (set 2)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4hfb ,sc4hf, sc4_4reel, sc4hf, sc4_state, sc4hf, ROT0, "BFM","Happy Fruits (Bellfruit) (Scorpion 4) (set 3)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4hfc ,sc4hf, sc4_4reel, sc4hf, sc4_state, sc4hf, ROT0, "BFM","Happy Fruits (Bellfruit) (Scorpion 4) (set 4)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4hfd ,sc4hf, sc4_4reel, sc4hf, sc4_state, sc4hf, ROT0, "BFM","Happy Fruits (Bellfruit) (Scorpion 4) (set 5)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4hfe ,sc4hf, sc4_4reel, sc4hf, sc4_state, sc4hf, ROT0, "BFM","Happy Fruits (Bellfruit) (Scorpion 4) (set 6)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4hff ,sc4hf, sc4_4reel, sc4hf, sc4_state, sc4hf, ROT0, "BFM","Happy Fruits (Bellfruit) (Scorpion 4) (set 7)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4hfg ,sc4hf, sc4_4reel, sc4hf, sc4_state, sc4hf, ROT0, "BFM","Happy Fruits (Bellfruit) (Scorpion 4) (set 8)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4hf ,0, sc4_4reel, sc4hf, sc4_state, sc4hf, ROT0, "BFM","Happy Fruits (Bellfruit) (Scorpion 4) (set 1)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4hfa ,sc4hf, sc4_4reel, sc4hf, sc4_state, sc4hf, ROT0, "BFM","Happy Fruits (Bellfruit) (Scorpion 4) (set 2)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4hfb ,sc4hf, sc4_4reel, sc4hf, sc4_state, sc4hf, ROT0, "BFM","Happy Fruits (Bellfruit) (Scorpion 4) (set 3)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4hfc ,sc4hf, sc4_4reel, sc4hf, sc4_state, sc4hf, ROT0, "BFM","Happy Fruits (Bellfruit) (Scorpion 4) (set 4)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4hfd ,sc4hf, sc4_4reel, sc4hf, sc4_state, sc4hf, ROT0, "BFM","Happy Fruits (Bellfruit) (Scorpion 4) (set 5)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4hfe ,sc4hf, sc4_4reel, sc4hf, sc4_state, sc4hf, ROT0, "BFM","Happy Fruits (Bellfruit) (Scorpion 4) (set 6)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4hff ,sc4hf, sc4_4reel, sc4hf, sc4_state, sc4hf, ROT0, "BFM","Happy Fruits (Bellfruit) (Scorpion 4) (set 7)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4hfg ,sc4hf, sc4_4reel, sc4hf, sc4_state, sc4hf, ROT0, "BFM","Happy Fruits (Bellfruit) (Scorpion 4) (set 8)", MACHINE_FLAGS, layout_bfm_sc4 )
DRIVER_INIT_MEMBER(sc4_state,sc4himi)
@@ -26263,18 +26265,18 @@ INPUT_PORTS_START( sc4himi ) // this structure is generated
INPUT_PORTS_END
// PR2999 HIGH 'N' MIGHTY MITY SOUNDS HIGH 'N' MIGHTY
-GAMEL( 200?, sc4himi ,0, sc4_4reel_alt, sc4himi, sc4_state, sc4himi, ROT0, "Mazooma","High 'n' Mighty (PR2999) (Mazooma) (Scorpion 4) (set 1)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4himic ,sc4himi, sc4_4reel_alt, sc4himi, sc4_state, sc4himi, ROT0, "Mazooma","High 'n' Mighty (PR2999) (Mazooma) (Scorpion 4) (set 2)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4himif ,sc4himi, sc4_4reel_alt, sc4himi, sc4_state, sc4himi, ROT0, "Mazooma","High 'n' Mighty (PR2999) (Mazooma) (Scorpion 4) (set 3)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4himig ,sc4himi, sc4_4reel_alt, sc4himi, sc4_state, sc4himi, ROT0, "Mazooma","High 'n' Mighty (PR2999) (Mazooma) (Scorpion 4) (set 4)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4himih ,sc4himi, sc4_4reel_alt, sc4himi, sc4_state, sc4himi, ROT0, "Mazooma","High 'n' Mighty (PR2999) (Mazooma) (Scorpion 4) (set 5)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4himii ,sc4himi, sc4_4reel_alt, sc4himi, sc4_state, sc4himi, ROT0, "Mazooma","High 'n' Mighty (PR2999) (Mazooma) (Scorpion 4) (set 6)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4himi ,0, sc4_4reel_alt, sc4himi, sc4_state, sc4himi, ROT0, "Mazooma","High 'n' Mighty (PR2999) (Mazooma) (Scorpion 4) (set 1)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4himic ,sc4himi, sc4_4reel_alt, sc4himi, sc4_state, sc4himi, ROT0, "Mazooma","High 'n' Mighty (PR2999) (Mazooma) (Scorpion 4) (set 2)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4himif ,sc4himi, sc4_4reel_alt, sc4himi, sc4_state, sc4himi, ROT0, "Mazooma","High 'n' Mighty (PR2999) (Mazooma) (Scorpion 4) (set 3)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4himig ,sc4himi, sc4_4reel_alt, sc4himi, sc4_state, sc4himi, ROT0, "Mazooma","High 'n' Mighty (PR2999) (Mazooma) (Scorpion 4) (set 4)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4himih ,sc4himi, sc4_4reel_alt, sc4himi, sc4_state, sc4himi, ROT0, "Mazooma","High 'n' Mighty (PR2999) (Mazooma) (Scorpion 4) (set 5)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4himii ,sc4himi, sc4_4reel_alt, sc4himi, sc4_state, sc4himi, ROT0, "Mazooma","High 'n' Mighty (PR2999) (Mazooma) (Scorpion 4) (set 6)", MACHINE_FLAGS, layout_bfm_sc4 )
// PR2119 HIGH 'N' MIGHTY MITY SOUNDS HIGH 'N' MIGHTY
-GAMEL( 200?, sc4himia ,sc4himi, sc4_4reel_alt, sc4himi, sc4_state, sc4himi, ROT0, "Mazooma","High 'n' Mighty (PR2119) (Mazooma) (Scorpion 4) (set 1)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4himie ,sc4himi, sc4_4reel_alt, sc4himi, sc4_state, sc4himi, ROT0, "Mazooma","High 'n' Mighty (PR2119) (Mazooma) (Scorpion 4) (set 2)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4himia ,sc4himi, sc4_4reel_alt, sc4himi, sc4_state, sc4himi, ROT0, "Mazooma","High 'n' Mighty (PR2119) (Mazooma) (Scorpion 4) (set 1)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4himie ,sc4himi, sc4_4reel_alt, sc4himi, sc4_state, sc4himi, ROT0, "Mazooma","High 'n' Mighty (PR2119) (Mazooma) (Scorpion 4) (set 2)", MACHINE_FLAGS, layout_bfm_sc4 )
// PR2067 HIGH 'N' MIGHTY MITY SOUNDS HIGH 'N' MIGHTY
-GAMEL( 200?, sc4himib ,sc4himi, sc4_4reel_alt, sc4himi, sc4_state, sc4himi, ROT0, "Mazooma","High 'n' Mighty (PR2067) (Mazooma) (Scorpion 4) (set 1)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4himid ,sc4himi, sc4_4reel_alt, sc4himi, sc4_state, sc4himi, ROT0, "Mazooma","High 'n' Mighty (PR2067) (Mazooma) (Scorpion 4) (set 2)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4himib ,sc4himi, sc4_4reel_alt, sc4himi, sc4_state, sc4himi, ROT0, "Mazooma","High 'n' Mighty (PR2067) (Mazooma) (Scorpion 4) (set 1)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4himid ,sc4himi, sc4_4reel_alt, sc4himi, sc4_state, sc4himi, ROT0, "Mazooma","High 'n' Mighty (PR2067) (Mazooma) (Scorpion 4) (set 2)", MACHINE_FLAGS, layout_bfm_sc4 )
@@ -26341,14 +26343,14 @@ INPUT_PORTS_START( sc4hi5 ) // this structure is generated
INPUT_PORTS_END
// PR1003 HIGH FIVE PR1003 HIGH FIVE SOUNDS11
-GAMEL( 200?, sc4hi5 ,0, sc4_4reel, sc4hi5, sc4_state, sc4hi5, ROT0, "BFM","High 5 (Bellfruit) (Scorpion 4) (set 1)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4hi5b ,sc4hi5, sc4_4reel, sc4hi5, sc4_state, sc4hi5, ROT0, "BFM","High 5 (Bellfruit) (Scorpion 4) (set 2)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4hi5d ,sc4hi5, sc4_4reel, sc4hi5, sc4_state, sc4hi5, ROT0, "BFM","High 5 (Bellfruit) (Scorpion 4) (set 3)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4hi5f ,sc4hi5, sc4_4reel, sc4hi5, sc4_state, sc4hi5, ROT0, "BFM","High 5 (Bellfruit) (Scorpion 4) (set 4)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4hi5a ,sc4hi5, sc4_4reel, sc4hi5, sc4_state, sc4hi5, ROT0, "BFM / Whitbread","High 5 (Bellfruit / Whitbread) (Scorpion 4) (set 1)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4hi5c ,sc4hi5, sc4_4reel, sc4hi5, sc4_state, sc4hi5, ROT0, "BFM / Whitbread","High 5 (Bellfruit / Whitbread) (Scorpion 4) (set 2)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4hi5e ,sc4hi5, sc4_4reel, sc4hi5, sc4_state, sc4hi5, ROT0, "BFM / Whitbread","High 5 (Bellfruit / Whitbread) (Scorpion 4) (set 3)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4hi5g ,sc4hi5, sc4_4reel, sc4hi5, sc4_state, sc4hi5, ROT0, "BFM / Whitbread","High 5 (Bellfruit / Whitbread) (Scorpion 4) (set 4)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4hi5 ,0, sc4_4reel, sc4hi5, sc4_state, sc4hi5, ROT0, "BFM","High 5 (Bellfruit) (Scorpion 4) (set 1)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4hi5b ,sc4hi5, sc4_4reel, sc4hi5, sc4_state, sc4hi5, ROT0, "BFM","High 5 (Bellfruit) (Scorpion 4) (set 2)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4hi5d ,sc4hi5, sc4_4reel, sc4hi5, sc4_state, sc4hi5, ROT0, "BFM","High 5 (Bellfruit) (Scorpion 4) (set 3)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4hi5f ,sc4hi5, sc4_4reel, sc4hi5, sc4_state, sc4hi5, ROT0, "BFM","High 5 (Bellfruit) (Scorpion 4) (set 4)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4hi5a ,sc4hi5, sc4_4reel, sc4hi5, sc4_state, sc4hi5, ROT0, "BFM / Whitbread","High 5 (Bellfruit / Whitbread) (Scorpion 4) (set 1)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4hi5c ,sc4hi5, sc4_4reel, sc4hi5, sc4_state, sc4hi5, ROT0, "BFM / Whitbread","High 5 (Bellfruit / Whitbread) (Scorpion 4) (set 2)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4hi5e ,sc4hi5, sc4_4reel, sc4hi5, sc4_state, sc4hi5, ROT0, "BFM / Whitbread","High 5 (Bellfruit / Whitbread) (Scorpion 4) (set 3)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4hi5g ,sc4hi5, sc4_4reel, sc4hi5, sc4_state, sc4hi5, ROT0, "BFM / Whitbread","High 5 (Bellfruit / Whitbread) (Scorpion 4) (set 4)", MACHINE_FLAGS, layout_bfm_sc4 )
DRIVER_INIT_MEMBER(sc4_state,sc4sprng)
@@ -26403,7 +26405,7 @@ INPUT_PORTS_START( sc4sprng ) // this structure is generated
INPUT_PORTS_END
// PR2066 HIGHLY SPRUNG HIGH SOUNDS HIGHLY SPRUNG
-GAMEL( 200?, sc4sprng ,0, sc4_4reel_alt, sc4sprng, sc4_state, sc4sprng, ROT0, "Mazooma","Highly Sprung (Mazooma) (Scorpion 4)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4sprng ,0, sc4_4reel_alt, sc4sprng, sc4_state, sc4sprng, ROT0, "Mazooma","Highly Sprung (Mazooma) (Scorpion 4)", MACHINE_FLAGS, layout_bfm_sc4 )
DRIVER_INIT_MEMBER(sc4_state,sc4hilo)
@@ -26482,18 +26484,18 @@ INPUT_PORTS_START( sc4hilo ) // this structure is generated
INPUT_PORTS_END
// PR1013 HILOWATHA PR1013 HILOWATHA SOUNDS11
-GAMEL( 200?, sc4hilo ,0, sc4_200_4ra, sc4hilo, sc4_state, sc4hilo, ROT0, "BFM","Hilowatha (Bellfruit) (Scorpion 4) (set 1)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4hiloa ,sc4hilo, sc4_200_4ra, sc4hilo, sc4_state, sc4hilo, ROT0, "BFM","Hilowatha (Bellfruit) (Scorpion 4) (set 2)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4hilob ,sc4hilo, sc4_200_4ra, sc4hilo, sc4_state, sc4hilo, ROT0, "BFM","Hilowatha (Bellfruit) (Scorpion 4) (set 3)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4hiloc ,sc4hilo, sc4_200_4ra, sc4hilo, sc4_state, sc4hilo, ROT0, "BFM","Hilowatha (Bellfruit) (Scorpion 4) (set 4)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4hilod ,sc4hilo, sc4_200_4ra, sc4hilo, sc4_state, sc4hilo, ROT0, "BFM","Hilowatha (Bellfruit) (Scorpion 4) (set 5)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4hiloe ,sc4hilo, sc4_200_4ra, sc4hilo, sc4_state, sc4hilo, ROT0, "BFM","Hilowatha (Bellfruit) (Scorpion 4) (set 6)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4hilof ,sc4hilo, sc4_200_4ra, sc4hilo, sc4_state, sc4hilo, ROT0, "BFM","Hilowatha (Bellfruit) (Scorpion 4) (set 7)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4hilog ,sc4hilo, sc4_200_4ra, sc4hilo, sc4_state, sc4hilo, ROT0, "BFM","Hilowatha (Bellfruit) (Scorpion 4) (set 8)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4hiloh ,sc4hilo, sc4_200_4ra, sc4hilo, sc4_state, sc4hilo, ROT0, "BFM","Hilowatha (Bellfruit) (Scorpion 4) (set 9)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4hiloi ,sc4hilo, sc4_200_4ra, sc4hilo, sc4_state, sc4hilo, ROT0, "BFM","Hilowatha (Bellfruit) (Scorpion 4) (set 10)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4hiloj ,sc4hilo, sc4_200_4ra, sc4hilo, sc4_state, sc4hilo, ROT0, "BFM","Hilowatha (Bellfruit) (Scorpion 4) (set 11)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4hilok ,sc4hilo, sc4_200_4ra, sc4hilo, sc4_state, sc4hilo, ROT0, "BFM","Hilowatha (Bellfruit) (Scorpion 4) (set 12)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4hilo ,0, sc4_200_4ra, sc4hilo, sc4_state, sc4hilo, ROT0, "BFM","Hilowatha (Bellfruit) (Scorpion 4) (set 1)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4hiloa ,sc4hilo, sc4_200_4ra, sc4hilo, sc4_state, sc4hilo, ROT0, "BFM","Hilowatha (Bellfruit) (Scorpion 4) (set 2)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4hilob ,sc4hilo, sc4_200_4ra, sc4hilo, sc4_state, sc4hilo, ROT0, "BFM","Hilowatha (Bellfruit) (Scorpion 4) (set 3)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4hiloc ,sc4hilo, sc4_200_4ra, sc4hilo, sc4_state, sc4hilo, ROT0, "BFM","Hilowatha (Bellfruit) (Scorpion 4) (set 4)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4hilod ,sc4hilo, sc4_200_4ra, sc4hilo, sc4_state, sc4hilo, ROT0, "BFM","Hilowatha (Bellfruit) (Scorpion 4) (set 5)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4hiloe ,sc4hilo, sc4_200_4ra, sc4hilo, sc4_state, sc4hilo, ROT0, "BFM","Hilowatha (Bellfruit) (Scorpion 4) (set 6)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4hilof ,sc4hilo, sc4_200_4ra, sc4hilo, sc4_state, sc4hilo, ROT0, "BFM","Hilowatha (Bellfruit) (Scorpion 4) (set 7)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4hilog ,sc4hilo, sc4_200_4ra, sc4hilo, sc4_state, sc4hilo, ROT0, "BFM","Hilowatha (Bellfruit) (Scorpion 4) (set 8)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4hiloh ,sc4hilo, sc4_200_4ra, sc4hilo, sc4_state, sc4hilo, ROT0, "BFM","Hilowatha (Bellfruit) (Scorpion 4) (set 9)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4hiloi ,sc4hilo, sc4_200_4ra, sc4hilo, sc4_state, sc4hilo, ROT0, "BFM","Hilowatha (Bellfruit) (Scorpion 4) (set 10)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4hiloj ,sc4hilo, sc4_200_4ra, sc4hilo, sc4_state, sc4hilo, ROT0, "BFM","Hilowatha (Bellfruit) (Scorpion 4) (set 11)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4hilok ,sc4hilo, sc4_200_4ra, sc4hilo, sc4_state, sc4hilo, ROT0, "BFM","Hilowatha (Bellfruit) (Scorpion 4) (set 12)", MACHINE_FLAGS, layout_bfm_sc4 )
@@ -26574,12 +26576,12 @@ INPUT_PORTS_START( sc4hitsh ) // this structure is generated
INPUT_PORTS_END
// PR1112 HIT SHOT PR1112 HIT SHOT SOUNDS11
-GAMEL( 200?, sc4hitsh ,0, sc4_200_4rb, sc4hitsh, sc4_state, sc4hitsh, ROT0, "BFM","Hit Shot (Bellfruit) (Scorpion 4) (set 1)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4hitsha ,sc4hitsh, sc4_200_4rb, sc4hitsh, sc4_state, sc4hitsh, ROT0, "BFM","Hit Shot (Bellfruit) (Scorpion 4) (set 2)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4hitshb ,sc4hitsh, sc4_200_4rb, sc4hitsh, sc4_state, sc4hitsh, ROT0, "BFM","Hit Shot (Bellfruit) (Scorpion 4) (set 3)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4hitshc ,sc4hitsh, sc4_200_4rb, sc4hitsh, sc4_state, sc4hitsh, ROT0, "BFM","Hit Shot (Bellfruit) (Scorpion 4) (set 4)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4hitshd ,sc4hitsh, sc4_200_4rb, sc4hitsh, sc4_state, sc4hitsh, ROT0, "BFM","Hit Shot (Bellfruit) (Scorpion 4) (set 5)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4hitshe ,sc4hitsh, sc4_200_4rb, sc4hitsh, sc4_state, sc4hitsh, ROT0, "BFM","Hit Shot (Bellfruit) (Scorpion 4) (set 6)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4hitsh ,0, sc4_200_4rb, sc4hitsh, sc4_state, sc4hitsh, ROT0, "BFM","Hit Shot (Bellfruit) (Scorpion 4) (set 1)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4hitsha ,sc4hitsh, sc4_200_4rb, sc4hitsh, sc4_state, sc4hitsh, ROT0, "BFM","Hit Shot (Bellfruit) (Scorpion 4) (set 2)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4hitshb ,sc4hitsh, sc4_200_4rb, sc4hitsh, sc4_state, sc4hitsh, ROT0, "BFM","Hit Shot (Bellfruit) (Scorpion 4) (set 3)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4hitshc ,sc4hitsh, sc4_200_4rb, sc4hitsh, sc4_state, sc4hitsh, ROT0, "BFM","Hit Shot (Bellfruit) (Scorpion 4) (set 4)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4hitshd ,sc4hitsh, sc4_200_4rb, sc4hitsh, sc4_state, sc4hitsh, ROT0, "BFM","Hit Shot (Bellfruit) (Scorpion 4) (set 5)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4hitshe ,sc4hitsh, sc4_200_4rb, sc4hitsh, sc4_state, sc4hitsh, ROT0, "BFM","Hit Shot (Bellfruit) (Scorpion 4) (set 6)", MACHINE_FLAGS, layout_bfm_sc4 )
DRIVER_INIT_MEMBER(sc4_state,sc4h6cl)
{
@@ -26647,10 +26649,10 @@ INPUT_PORTS_START( sc4h6cl ) // this structure is generated
INPUT_PORTS_END
// PR1759 CLUB HOT SIX HOT SIX CLUB PR1759 HOSX SOUNDS11
-GAMEL( 200?, sc4h6cl ,0, sc4, sc4h6cl, sc4_state, sc4h6cl, ROT0, "BFM","Hot Six Club (Bellfruit) (Scorpion 4) (set 1)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4h6cla ,sc4h6cl, sc4, sc4h6cl, sc4_state, sc4h6cl, ROT0, "BFM","Hot Six Club (Bellfruit) (Scorpion 4) (set 2)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4h6clb ,sc4h6cl, sc4, sc4h6cl, sc4_state, sc4h6cl, ROT0, "BFM","Hot Six Club (Bellfruit) (Scorpion 4) (set 3)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4h6clc ,sc4h6cl, sc4, sc4h6cl, sc4_state, sc4h6cl, ROT0, "BFM","Hot Six Club (Bellfruit) (Scorpion 4) (set 4)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4h6cl ,0, sc4, sc4h6cl, sc4_state, sc4h6cl, ROT0, "BFM","Hot Six Club (Bellfruit) (Scorpion 4) (set 1)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4h6cla ,sc4h6cl, sc4, sc4h6cl, sc4_state, sc4h6cl, ROT0, "BFM","Hot Six Club (Bellfruit) (Scorpion 4) (set 2)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4h6clb ,sc4h6cl, sc4, sc4h6cl, sc4_state, sc4h6cl, ROT0, "BFM","Hot Six Club (Bellfruit) (Scorpion 4) (set 3)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4h6clc ,sc4h6cl, sc4, sc4h6cl, sc4_state, sc4h6cl, ROT0, "BFM","Hot Six Club (Bellfruit) (Scorpion 4) (set 4)", MACHINE_FLAGS, layout_bfm_sc4 )
@@ -26716,7 +26718,7 @@ INPUT_PORTS_START( sc4ijclb ) // this structure is generated
INPUT_PORTS_END
// PR2403 CLUB ITALIAN JOB CLUB ITALIAN JOB CLUB CLUB ITJB SOUNDS
-GAMEL( 200?, sc4ijclb ,0, sc4, sc4ijclb, sc4_state, sc4ijclb, ROT0, "Mazooma","Italian Job Club (Mazooma) (Scorpion 4)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4ijclb ,0, sc4, sc4ijclb, sc4_state, sc4ijclb, ROT0, "Mazooma","Italian Job Club (Mazooma) (Scorpion 4)", MACHINE_FLAGS, layout_bfm_sc4 )
DRIVER_INIT_MEMBER(sc4_state,sc4jack)
{
@@ -26771,14 +26773,14 @@ INPUT_PORTS_START( sc4jack ) // this structure is generated
INPUT_PORTS_END
// PR2078 JACK THE KIPPER JKIP SOUNDS JACK THE KIPPER
-GAMEL( 200?, sc4jack ,0, sc4_200_5ra, sc4jack, sc4_state, sc4jack, ROT0, "Mazooma","Jack The Kipper (Mazooma) (Scorpion 4) (set 1)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4jacka ,sc4jack, sc4_200_5ra, sc4jack, sc4_state, sc4jack, ROT0, "Mazooma","Jack The Kipper (Mazooma) (Scorpion 4) (set 2)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4jackb ,sc4jack, sc4_200_5ra, sc4jack, sc4_state, sc4jack, ROT0, "Mazooma","Jack The Kipper (Mazooma) (Scorpion 4) (set 3)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4jackc ,sc4jack, sc4_200_5ra, sc4jack, sc4_state, sc4jack, ROT0, "Mazooma","Jack The Kipper (Mazooma) (Scorpion 4) (set 4)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4jackd ,sc4jack, sc4_200_5ra, sc4jack, sc4_state, sc4jack, ROT0, "Mazooma","Jack The Kipper (Mazooma) (Scorpion 4) (set 5)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4jacke ,sc4jack, sc4_200_5ra, sc4jack, sc4_state, sc4jack, ROT0, "Mazooma","Jack The Kipper (Mazooma) (Scorpion 4) (set 6)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4jackf ,sc4jack, sc4_200_5ra, sc4jack, sc4_state, sc4jack, ROT0, "Mazooma","Jack The Kipper (Mazooma) (Scorpion 4) (set 7)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4jackg ,sc4jack, sc4_200_5ra, sc4jack, sc4_state, sc4jack, ROT0, "Mazooma","Jack The Kipper (Mazooma) (Scorpion 4) (set 8)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4jack ,0, sc4_200_5ra, sc4jack, sc4_state, sc4jack, ROT0, "Mazooma","Jack The Kipper (Mazooma) (Scorpion 4) (set 1)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4jacka ,sc4jack, sc4_200_5ra, sc4jack, sc4_state, sc4jack, ROT0, "Mazooma","Jack The Kipper (Mazooma) (Scorpion 4) (set 2)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4jackb ,sc4jack, sc4_200_5ra, sc4jack, sc4_state, sc4jack, ROT0, "Mazooma","Jack The Kipper (Mazooma) (Scorpion 4) (set 3)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4jackc ,sc4jack, sc4_200_5ra, sc4jack, sc4_state, sc4jack, ROT0, "Mazooma","Jack The Kipper (Mazooma) (Scorpion 4) (set 4)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4jackd ,sc4jack, sc4_200_5ra, sc4jack, sc4_state, sc4jack, ROT0, "Mazooma","Jack The Kipper (Mazooma) (Scorpion 4) (set 5)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4jacke ,sc4jack, sc4_200_5ra, sc4jack, sc4_state, sc4jack, ROT0, "Mazooma","Jack The Kipper (Mazooma) (Scorpion 4) (set 6)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4jackf ,sc4jack, sc4_200_5ra, sc4jack, sc4_state, sc4jack, ROT0, "Mazooma","Jack The Kipper (Mazooma) (Scorpion 4) (set 7)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4jackg ,sc4jack, sc4_200_5ra, sc4jack, sc4_state, sc4jack, ROT0, "Mazooma","Jack The Kipper (Mazooma) (Scorpion 4) (set 8)", MACHINE_FLAGS, layout_bfm_sc4 )
@@ -26850,16 +26852,16 @@ INPUT_PORTS_START( sc4jjunc ) // this structure is generated
INPUT_PORTS_END
// PR1304 JACKPOT JUNCTION PR1304 JACKPOT JUNCTION SOUNDS11
-GAMEL( 2002, sc4jjunc ,0, sc4, sc4jjunc, sc4_state, sc4jjunc, ROT0, "BFM","Jackpot Junction (Bellfruit) (Scorpion 4) (set 1)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 2002, sc4jjunca ,sc4jjunc, sc4, sc4jjunc, sc4_state, sc4jjunc, ROT0, "BFM","Jackpot Junction (Bellfruit) (Scorpion 4) (set 2)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 2002, sc4jjuncb ,sc4jjunc, sc4, sc4jjunc, sc4_state, sc4jjunc, ROT0, "BFM","Jackpot Junction (Bellfruit) (Scorpion 4) (set 3)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 2002, sc4jjuncc ,sc4jjunc, sc4, sc4jjunc, sc4_state, sc4jjunc, ROT0, "BFM","Jackpot Junction (Bellfruit) (Scorpion 4) (set 4)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 2002, sc4jjuncd ,sc4jjunc, sc4, sc4jjunc, sc4_state, sc4jjunc, ROT0, "BFM","Jackpot Junction (Bellfruit) (Scorpion 4) (set 5)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 2002, sc4jjunce ,sc4jjunc, sc4, sc4jjunc, sc4_state, sc4jjunc, ROT0, "BFM","Jackpot Junction (Bellfruit) (Scorpion 4) (set 6)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 2002, sc4jjuncf ,sc4jjunc, sc4, sc4jjunc, sc4_state, sc4jjunc, ROT0, "BFM","Jackpot Junction (Bellfruit) (Scorpion 4) (set 7)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 2002, sc4jjuncg ,sc4jjunc, sc4, sc4jjunc, sc4_state, sc4jjunc, ROT0, "BFM","Jackpot Junction (Bellfruit) (Scorpion 4) (set 8)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 2002, sc4jjunch ,sc4jjunc, sc4, sc4jjunc, sc4_state, sc4jjunc, ROT0, "BFM","Jackpot Junction (Bellfruit) (Scorpion 4) (set 9)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 2002, sc4jjunci ,sc4jjunc, sc4, sc4jjunc, sc4_state, sc4jjunc, ROT0, "BFM","Jackpot Junction (Bellfruit) (Scorpion 4) (set 10)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 2002, sc4jjunc ,0, sc4, sc4jjunc, sc4_state, sc4jjunc, ROT0, "BFM","Jackpot Junction (Bellfruit) (Scorpion 4) (set 1)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 2002, sc4jjunca ,sc4jjunc, sc4, sc4jjunc, sc4_state, sc4jjunc, ROT0, "BFM","Jackpot Junction (Bellfruit) (Scorpion 4) (set 2)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 2002, sc4jjuncb ,sc4jjunc, sc4, sc4jjunc, sc4_state, sc4jjunc, ROT0, "BFM","Jackpot Junction (Bellfruit) (Scorpion 4) (set 3)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 2002, sc4jjuncc ,sc4jjunc, sc4, sc4jjunc, sc4_state, sc4jjunc, ROT0, "BFM","Jackpot Junction (Bellfruit) (Scorpion 4) (set 4)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 2002, sc4jjuncd ,sc4jjunc, sc4, sc4jjunc, sc4_state, sc4jjunc, ROT0, "BFM","Jackpot Junction (Bellfruit) (Scorpion 4) (set 5)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 2002, sc4jjunce ,sc4jjunc, sc4, sc4jjunc, sc4_state, sc4jjunc, ROT0, "BFM","Jackpot Junction (Bellfruit) (Scorpion 4) (set 6)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 2002, sc4jjuncf ,sc4jjunc, sc4, sc4jjunc, sc4_state, sc4jjunc, ROT0, "BFM","Jackpot Junction (Bellfruit) (Scorpion 4) (set 7)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 2002, sc4jjuncg ,sc4jjunc, sc4, sc4jjunc, sc4_state, sc4jjunc, ROT0, "BFM","Jackpot Junction (Bellfruit) (Scorpion 4) (set 8)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 2002, sc4jjunch ,sc4jjunc, sc4, sc4jjunc, sc4_state, sc4jjunc, ROT0, "BFM","Jackpot Junction (Bellfruit) (Scorpion 4) (set 9)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 2002, sc4jjunci ,sc4jjunc, sc4, sc4jjunc, sc4_state, sc4jjunc, ROT0, "BFM","Jackpot Junction (Bellfruit) (Scorpion 4) (set 10)", MACHINE_FLAGS, layout_bfm_sc4 )
//should R6 have a reel?
@@ -26936,14 +26938,14 @@ INPUT_PORTS_END
// REEL7 ERR 27 (where does reel 7 connect?!)
// PR1422 CLUB JACKPOT JUNCTION PR1422 JACKPOT JUNCTION SOUNDS11
-GAMEL( 200?, sc4jjucl ,0, sc4_5reel, sc4jjucl, sc4_state, sc4jjucl, ROT0, "BFM","Jackpot Junction Club (Bellfruit) (Scorpion 4) (set 1)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4jjuclb ,sc4jjucl, sc4_5reel, sc4jjucl, sc4_state, sc4jjucl, ROT0, "BFM","Jackpot Junction Club (Bellfruit) (Scorpion 4) (set 2)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4jjucl ,0, sc4_5reel, sc4jjucl, sc4_state, sc4jjucl, ROT0, "BFM","Jackpot Junction Club (Bellfruit) (Scorpion 4) (set 1)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4jjuclb ,sc4jjucl, sc4_5reel, sc4jjucl, sc4_state, sc4jjucl, ROT0, "BFM","Jackpot Junction Club (Bellfruit) (Scorpion 4) (set 2)", MACHINE_FLAGS, layout_bfm_sc4 )
// PR1422 CLUB JACKPOT JUNCTION JACKPOT JUNCTION CLUB PR1422 JACKPOT JUNCTION SOUNDS11
-GAMEL( 200?, sc4jjucld ,sc4jjucl, sc4_5reel, sc4jjucl, sc4_state, sc4jjucl_mbus, ROT0, "BFM","Jackpot Junction Club (Bellfruit) (Scorpion 4) (set 3)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4jjucle ,sc4jjucl, sc4_5reel, sc4jjucl, sc4_state, sc4jjucl_mbus, ROT0, "BFM","Jackpot Junction Club (Bellfruit) (Scorpion 4) (set 4)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4jjucld ,sc4jjucl, sc4_5reel, sc4jjucl, sc4_state, sc4jjucl_mbus, ROT0, "BFM","Jackpot Junction Club (Bellfruit) (Scorpion 4) (set 3)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4jjucle ,sc4jjucl, sc4_5reel, sc4jjucl, sc4_state, sc4jjucl_mbus, ROT0, "BFM","Jackpot Junction Club (Bellfruit) (Scorpion 4) (set 4)", MACHINE_FLAGS, layout_bfm_sc4 )
// PR1422 CLUB JACKPOT JUNCTION FERRY PR1422 JACKPOT JUNCTION SOUNDS11
-GAMEL( 200?, sc4jjucla ,sc4jjucl, sc4_5reel, sc4jjucl, sc4_state, sc4jjucl, ROT0, "BFM","Jackpot Junction Club (Ferry) (Bellfruit) (Scorpion 4) (set 1)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4jjuclc ,sc4jjucl, sc4_5reel, sc4jjucl, sc4_state, sc4jjucl, ROT0, "BFM","Jackpot Junction Club (Ferry) (Bellfruit) (Scorpion 4) (set 2)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4jjucla ,sc4jjucl, sc4_5reel, sc4jjucl, sc4_state, sc4jjucl, ROT0, "BFM","Jackpot Junction Club (Ferry) (Bellfruit) (Scorpion 4) (set 1)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4jjuclc ,sc4jjucl, sc4_5reel, sc4jjucl, sc4_state, sc4jjucl, ROT0, "BFM","Jackpot Junction Club (Ferry) (Bellfruit) (Scorpion 4) (set 2)", MACHINE_FLAGS, layout_bfm_sc4 )
DRIVER_INIT_MEMBER(sc4_state,sc4jolly)
@@ -27002,8 +27004,8 @@ INPUT_PORTS_START( sc4jolly ) // this structure is generated
INPUT_PORTS_END
// PR2054 JOLLY JOUSTINGV2.0 JJOLLSND JOLLY JOUSTING
-GAMEL( 200?, sc4jolly ,0, sc4_200_5r, sc4jolly, sc4_state, sc4jolly, ROT0, "Qps","Jolly Jousting (Qps) (Scorpion 4) (set 1)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4jollya ,sc4jolly, sc4_200_5r, sc4jolly, sc4_state, sc4jolly, ROT0, "Qps","Jolly Jousting (Qps) (Scorpion 4) (set 2)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4jolly ,0, sc4_200_5r, sc4jolly, sc4_state, sc4jolly, ROT0, "Qps","Jolly Jousting (Qps) (Scorpion 4) (set 1)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4jollya ,sc4jolly, sc4_200_5r, sc4jolly, sc4_state, sc4jolly, ROT0, "Qps","Jolly Jousting (Qps) (Scorpion 4) (set 2)", MACHINE_FLAGS, layout_bfm_sc4 )
@@ -27064,20 +27066,20 @@ INPUT_PORTS_START( sc4juicy ) // this structure is generated
INPUT_PORTS_END
// PR1136 JUICY JACKPOTS 65% FERRY PR1136 JUICY JACKPOTS SOUNDS11
-GAMEL( 200?, sc4juicy ,0, sc4_5reel, sc4juicy, sc4_state, sc4juicy, ROT0, "BFM","Juicy Jackpots Club (PR1136) (65% Ferry) (Bellfruit) (Scorpion 4) (set 1)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4juicyb ,sc4juicy, sc4_5reel, sc4juicy, sc4_state, sc4juicy, ROT0, "BFM","Juicy Jackpots Club (PR1136) (65% Ferry) (Bellfruit) (Scorpion 4) (set 2)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4juicy ,0, sc4_5reel, sc4juicy, sc4_state, sc4juicy, ROT0, "BFM","Juicy Jackpots Club (PR1136) (65% Ferry) (Bellfruit) (Scorpion 4) (set 1)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4juicyb ,sc4juicy, sc4_5reel, sc4juicy, sc4_state, sc4juicy, ROT0, "BFM","Juicy Jackpots Club (PR1136) (65% Ferry) (Bellfruit) (Scorpion 4) (set 2)", MACHINE_FLAGS, layout_bfm_sc4 )
// PR1136 JUICY JACKPOTS PR1136 JUICY JACKPOTS SOUNDS11
-GAMEL( 200?, sc4juicyd ,sc4juicy, sc4_5reel, sc4juicy, sc4_state, sc4juicy, ROT0, "BFM","Juicy Jackpots Club (PR1136) (Bellfruit) (Scorpion 4) (set 1)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4juicye ,sc4juicy, sc4_5reel, sc4juicy, sc4_state, sc4juicy, ROT0, "BFM","Juicy Jackpots Club (PR1136) (Bellfruit) (Scorpion 4) (set 2)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4juicyf ,sc4juicy, sc4_5reel, sc4juicy, sc4_state, sc4juicy, ROT0, "BFM","Juicy Jackpots Club (PR1136) (Bellfruit) (Scorpion 4) (set 3)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4juicyg ,sc4juicy, sc4_5reel, sc4juicy, sc4_state, sc4juicy, ROT0, "BFM","Juicy Jackpots Club (PR1136) (Bellfruit) (Scorpion 4) (set 4)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4juicyd ,sc4juicy, sc4_5reel, sc4juicy, sc4_state, sc4juicy, ROT0, "BFM","Juicy Jackpots Club (PR1136) (Bellfruit) (Scorpion 4) (set 1)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4juicye ,sc4juicy, sc4_5reel, sc4juicy, sc4_state, sc4juicy, ROT0, "BFM","Juicy Jackpots Club (PR1136) (Bellfruit) (Scorpion 4) (set 2)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4juicyf ,sc4juicy, sc4_5reel, sc4juicy, sc4_state, sc4juicy, ROT0, "BFM","Juicy Jackpots Club (PR1136) (Bellfruit) (Scorpion 4) (set 3)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4juicyg ,sc4juicy, sc4_5reel, sc4juicy, sc4_state, sc4juicy, ROT0, "BFM","Juicy Jackpots Club (PR1136) (Bellfruit) (Scorpion 4) (set 4)", MACHINE_FLAGS, layout_bfm_sc4 )
// PR1136 JUICY JACKPOTS JUICY JACKPOTS CLUB PR1136 JUICY JACKPOTS SOUNDS11
-GAMEL( 200?, sc4juicyi ,sc4juicy, sc4_5reel, sc4juicy, sc4_state, sc4juicy_mbus, ROT0, "BFM","Juicy Jackpots Club (PR1136) (Bellfruit) (Scorpion 4) (311 Club, set 1)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4juicyj ,sc4juicy, sc4_5reel, sc4juicy, sc4_state, sc4juicy_mbus, ROT0, "BFM","Juicy Jackpots Club (PR1136) (Bellfruit) (Scorpion 4) (311 Club, set 2)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4juicyi ,sc4juicy, sc4_5reel, sc4juicy, sc4_state, sc4juicy_mbus, ROT0, "BFM","Juicy Jackpots Club (PR1136) (Bellfruit) (Scorpion 4) (311 Club, set 1)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4juicyj ,sc4juicy, sc4_5reel, sc4juicy, sc4_state, sc4juicy_mbus, ROT0, "BFM","Juicy Jackpots Club (PR1136) (Bellfruit) (Scorpion 4) (311 Club, set 2)", MACHINE_FLAGS, layout_bfm_sc4 )
// this has a different (wrong?) product ID and issues with the VFD even during startup, maybe a buggy release?
// PR1123 JUICY JACKPOTS PR1136 JUICY JACKPOTS SOUNDS11
-GAMEL( 200?, sc4juicya ,sc4juicy, sc4_5reel, sc4juicy, sc4_state, sc4juicy, ROT0, "BFM","Juicy Jackpots Club (PR1123) (Bellfruit) (Scorpion 4) (set 1)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4juicyc ,sc4juicy, sc4_5reel, sc4juicy, sc4_state, sc4juicy, ROT0, "BFM","Juicy Jackpots Club (PR1123) (Bellfruit) (Scorpion 4) (set 2)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4juicya ,sc4juicy, sc4_5reel, sc4juicy, sc4_state, sc4juicy, ROT0, "BFM","Juicy Jackpots Club (PR1123) (Bellfruit) (Scorpion 4) (set 1)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4juicyc ,sc4juicy, sc4_5reel, sc4juicy, sc4_state, sc4juicy, ROT0, "BFM","Juicy Jackpots Club (PR1123) (Bellfruit) (Scorpion 4) (set 2)", MACHINE_FLAGS, layout_bfm_sc4 )
DRIVER_INIT_MEMBER(sc4_state,sc4kalei)
@@ -27133,14 +27135,14 @@ INPUT_PORTS_START( sc4kalei ) // this structure is generated
INPUT_PORTS_END
// PR2538 KALEIDOSCOPE 011 KALEIDOSCOPESND KALEIDOSCOPE
-GAMEL( 200?, sc4kalei ,0, sc4_4reel_alt, sc4kalei, sc4_state, sc4kalei, ROT0, "Qps","Kaleidoscope (011) (Qps) (Scorpion 4) (set 1)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4kaleib ,sc4kalei, sc4_4reel_alt, sc4kalei, sc4_state, sc4kalei, ROT0, "Qps","Kaleidoscope (011) (Qps) (Scorpion 4) (set 3)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4kalei ,0, sc4_4reel_alt, sc4kalei, sc4_state, sc4kalei, ROT0, "Qps","Kaleidoscope (011) (Qps) (Scorpion 4) (set 1)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4kaleib ,sc4kalei, sc4_4reel_alt, sc4kalei, sc4_state, sc4kalei, ROT0, "Qps","Kaleidoscope (011) (Qps) (Scorpion 4) (set 3)", MACHINE_FLAGS, layout_bfm_sc4 )
// PR2538 KALEIDOSCOPE 041 KALEIDOSCOPESND KALEIDOSCOPE
-GAMEL( 200?, sc4kaleia ,sc4kalei, sc4_4reel_alt, sc4kalei, sc4_state, sc4kalei, ROT0, "Qps","Kaleidoscope (041) (Qps) (Scorpion 4) (set 2)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4kaleic ,sc4kalei, sc4_4reel_alt, sc4kalei, sc4_state, sc4kalei, ROT0, "Qps","Kaleidoscope (041) (Qps) (Scorpion 4) (set 4)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4kaleia ,sc4kalei, sc4_4reel_alt, sc4kalei, sc4_state, sc4kalei, ROT0, "Qps","Kaleidoscope (041) (Qps) (Scorpion 4) (set 2)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4kaleic ,sc4kalei, sc4_4reel_alt, sc4kalei, sc4_state, sc4kalei, ROT0, "Qps","Kaleidoscope (041) (Qps) (Scorpion 4) (set 4)", MACHINE_FLAGS, layout_bfm_sc4 )
// PR2538 KALEIDOSCOPE 051 KALEIDOSCOPESND KALEIDOSCOPE
-GAMEL( 200?, sc4kaleid ,sc4kalei, sc4_4reel_alt, sc4kalei, sc4_state, sc4kalei, ROT0, "Qps","Kaleidoscope (051) (Qps) (Scorpion 4) (set 1)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4kaleie ,sc4kalei, sc4_4reel_alt, sc4kalei, sc4_state, sc4kalei, ROT0, "Qps","Kaleidoscope (051) (Qps) (Scorpion 4) (set 2)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4kaleid ,sc4kalei, sc4_4reel_alt, sc4kalei, sc4_state, sc4kalei, ROT0, "Qps","Kaleidoscope (051) (Qps) (Scorpion 4) (set 1)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4kaleie ,sc4kalei, sc4_4reel_alt, sc4kalei, sc4_state, sc4kalei, ROT0, "Qps","Kaleidoscope (051) (Qps) (Scorpion 4) (set 2)", MACHINE_FLAGS, layout_bfm_sc4 )
DRIVER_INIT_MEMBER(sc4_state,sc4lir)
@@ -27193,16 +27195,16 @@ INPUT_PORTS_START( sc4lir ) // this structure is generated
INPUT_PORTS_END
// PR1001 LET IT ROLL PR1001 LETITROLL SOUNDS11
-GAMEL( 200?, sc4lir ,0, sc4_4reel, sc4lir, sc4_state, sc4lir, ROT0, "BFM","Let It Roll (Bellfruit) (Scorpion 4) (set 1)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4lira ,sc4lir, sc4_4reel, sc4lir, sc4_state, sc4lir, ROT0, "BFM","Let It Roll (Bellfruit) (Scorpion 4) (set 2)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4lirb ,sc4lir, sc4_4reel, sc4lir, sc4_state, sc4lir, ROT0, "BFM","Let It Roll (Bellfruit) (Scorpion 4) (set 3)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4lirc ,sc4lir, sc4_4reel, sc4lir, sc4_state, sc4lir, ROT0, "BFM","Let It Roll (Bellfruit) (Scorpion 4) (set 4)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4lird ,sc4lir, sc4_4reel, sc4lir, sc4_state, sc4lir, ROT0, "BFM","Let It Roll (Bellfruit) (Scorpion 4) (set 5)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4lire ,sc4lir, sc4_4reel, sc4lir, sc4_state, sc4lir, ROT0, "BFM","Let It Roll (Bellfruit) (Scorpion 4) (set 6)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4lirf ,sc4lir, sc4_4reel, sc4lir, sc4_state, sc4lir, ROT0, "BFM","Let It Roll (Bellfruit) (Scorpion 4) (set 7)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4lirg ,sc4lir, sc4_4reel, sc4lir, sc4_state, sc4lir, ROT0, "BFM","Let It Roll (Bellfruit) (Scorpion 4) (set 8)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4lirh ,sc4lir, sc4_4reel, sc4lir, sc4_state, sc4lir, ROT0, "BFM","Let It Roll (Bellfruit) (Scorpion 4) (set 9)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4liri ,sc4lir, sc4_4reel, sc4lir, sc4_state, sc4lir, ROT0, "BFM","Let It Roll (Bellfruit) (Scorpion 4) (set 10)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4lir ,0, sc4_4reel, sc4lir, sc4_state, sc4lir, ROT0, "BFM","Let It Roll (Bellfruit) (Scorpion 4) (set 1)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4lira ,sc4lir, sc4_4reel, sc4lir, sc4_state, sc4lir, ROT0, "BFM","Let It Roll (Bellfruit) (Scorpion 4) (set 2)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4lirb ,sc4lir, sc4_4reel, sc4lir, sc4_state, sc4lir, ROT0, "BFM","Let It Roll (Bellfruit) (Scorpion 4) (set 3)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4lirc ,sc4lir, sc4_4reel, sc4lir, sc4_state, sc4lir, ROT0, "BFM","Let It Roll (Bellfruit) (Scorpion 4) (set 4)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4lird ,sc4lir, sc4_4reel, sc4lir, sc4_state, sc4lir, ROT0, "BFM","Let It Roll (Bellfruit) (Scorpion 4) (set 5)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4lire ,sc4lir, sc4_4reel, sc4lir, sc4_state, sc4lir, ROT0, "BFM","Let It Roll (Bellfruit) (Scorpion 4) (set 6)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4lirf ,sc4lir, sc4_4reel, sc4lir, sc4_state, sc4lir, ROT0, "BFM","Let It Roll (Bellfruit) (Scorpion 4) (set 7)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4lirg ,sc4lir, sc4_4reel, sc4lir, sc4_state, sc4lir, ROT0, "BFM","Let It Roll (Bellfruit) (Scorpion 4) (set 8)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4lirh ,sc4lir, sc4_4reel, sc4lir, sc4_state, sc4lir, ROT0, "BFM","Let It Roll (Bellfruit) (Scorpion 4) (set 9)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4liri ,sc4lir, sc4_4reel, sc4lir, sc4_state, sc4lir, ROT0, "BFM","Let It Roll (Bellfruit) (Scorpion 4) (set 10)", MACHINE_FLAGS, layout_bfm_sc4 )
@@ -27270,7 +27272,7 @@ INPUT_PORTS_START( sc4ldvcl ) // this structure is generated
INPUT_PORTS_END
// PR2421 LITTLEDEVIL CLUB LITTLEDEVIL CLUB CLILDEV SOUNDS CLUB LITTLEDEVIL
-GAMEL( 200?, sc4ldvcl ,0, sc4_5reel, sc4ldvcl, sc4_state, sc4ldvcl, ROT0, "Mazooma","Little Devil Club (Mazooma) (Scorpion 4)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4ldvcl ,0, sc4_5reel, sc4ldvcl, sc4_state, sc4ldvcl, ROT0, "Mazooma","Little Devil Club (Mazooma) (Scorpion 4)", MACHINE_FLAGS, layout_bfm_sc4 )
DRIVER_INIT_MEMBER(sc4_state,sc4lockb)
{
@@ -27340,14 +27342,14 @@ INPUT_PORTS_START( sc4lockb ) // this structure is generated
INPUT_PORTS_END
// PR1108 LOCKBUSTER PR1108 LOCKBUSTER SOUNDS11
-GAMEL( 200?, sc4lockb ,0, sc4_4reel_alt, sc4lockb, sc4_state, sc4lockb, ROT0, "BFM","Lock Buster (Bellfruit) (Scorpion 4) (set 1)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4lockba ,sc4lockb, sc4_4reel_alt, sc4lockb, sc4_state, sc4lockb, ROT0, "BFM","Lock Buster (Bellfruit) (Scorpion 4) (set 2)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4lockbb ,sc4lockb, sc4_4reel_alt, sc4lockb, sc4_state, sc4lockb, ROT0, "BFM","Lock Buster (Bellfruit) (Scorpion 4) (set 3)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4lockbc ,sc4lockb, sc4_4reel_alt, sc4lockb, sc4_state, sc4lockb, ROT0, "BFM","Lock Buster (Bellfruit) (Scorpion 4) (set 4)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4lockbd ,sc4lockb, sc4_4reel_alt, sc4lockb, sc4_state, sc4lockb, ROT0, "BFM","Lock Buster (Bellfruit) (Scorpion 4) (set 5)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4lockbe ,sc4lockb, sc4_4reel_alt, sc4lockb, sc4_state, sc4lockb, ROT0, "BFM","Lock Buster (Bellfruit) (Scorpion 4) (set 6)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4lockbf ,sc4lockb, sc4_4reel_alt, sc4lockb, sc4_state, sc4lockb, ROT0, "BFM","Lock Buster (Bellfruit) (Scorpion 4) (set 7)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4lockbg ,sc4lockb, sc4_4reel_alt, sc4lockb, sc4_state, sc4lockb, ROT0, "BFM","Lock Buster (Bellfruit) (Scorpion 4) (set 8)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4lockb ,0, sc4_4reel_alt, sc4lockb, sc4_state, sc4lockb, ROT0, "BFM","Lock Buster (Bellfruit) (Scorpion 4) (set 1)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4lockba ,sc4lockb, sc4_4reel_alt, sc4lockb, sc4_state, sc4lockb, ROT0, "BFM","Lock Buster (Bellfruit) (Scorpion 4) (set 2)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4lockbb ,sc4lockb, sc4_4reel_alt, sc4lockb, sc4_state, sc4lockb, ROT0, "BFM","Lock Buster (Bellfruit) (Scorpion 4) (set 3)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4lockbc ,sc4lockb, sc4_4reel_alt, sc4lockb, sc4_state, sc4lockb, ROT0, "BFM","Lock Buster (Bellfruit) (Scorpion 4) (set 4)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4lockbd ,sc4lockb, sc4_4reel_alt, sc4lockb, sc4_state, sc4lockb, ROT0, "BFM","Lock Buster (Bellfruit) (Scorpion 4) (set 5)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4lockbe ,sc4lockb, sc4_4reel_alt, sc4lockb, sc4_state, sc4lockb, ROT0, "BFM","Lock Buster (Bellfruit) (Scorpion 4) (set 6)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4lockbf ,sc4lockb, sc4_4reel_alt, sc4lockb, sc4_state, sc4lockb, ROT0, "BFM","Lock Buster (Bellfruit) (Scorpion 4) (set 7)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4lockbg ,sc4lockb, sc4_4reel_alt, sc4lockb, sc4_state, sc4lockb, ROT0, "BFM","Lock Buster (Bellfruit) (Scorpion 4) (set 8)", MACHINE_FLAGS, layout_bfm_sc4 )
@@ -27420,19 +27422,19 @@ INPUT_PORTS_START( sc4lkbcl ) // this structure is generated
INPUT_PORTS_END
// PR1321 CLUB LOCKBUSTER PR1321 CLUB LOCKBUSTER SOUNDS11
-GAMEL( 200?, sc4lkbcl ,0, sc4_5reel, sc4lkbcl, sc4_state, sc4lkbcl, ROT0, "BFM","Lock Buster Club (Bellfruit) (Scorpion 4) (set 1)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4lkbclb ,sc4lkbcl, sc4_5reel, sc4lkbcl, sc4_state, sc4lkbcl, ROT0, "BFM","Lock Buster Club (Bellfruit) (Scorpion 4) (set 2)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4lkbcle ,sc4lkbcl, sc4_5reel, sc4lkbcl, sc4_state, sc4lkbcl, ROT0, "BFM","Lock Buster Club (Bellfruit) (Scorpion 4) (set 3)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4lkbclg ,sc4lkbcl, sc4_5reel, sc4lkbcl, sc4_state, sc4lkbcl, ROT0, "BFM","Lock Buster Club (Bellfruit) (Scorpion 4) (set 4)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4lkbcl ,0, sc4_5reel, sc4lkbcl, sc4_state, sc4lkbcl, ROT0, "BFM","Lock Buster Club (Bellfruit) (Scorpion 4) (set 1)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4lkbclb ,sc4lkbcl, sc4_5reel, sc4lkbcl, sc4_state, sc4lkbcl, ROT0, "BFM","Lock Buster Club (Bellfruit) (Scorpion 4) (set 2)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4lkbcle ,sc4lkbcl, sc4_5reel, sc4lkbcl, sc4_state, sc4lkbcl, ROT0, "BFM","Lock Buster Club (Bellfruit) (Scorpion 4) (set 3)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4lkbclg ,sc4lkbcl, sc4_5reel, sc4lkbcl, sc4_state, sc4lkbcl, ROT0, "BFM","Lock Buster Club (Bellfruit) (Scorpion 4) (set 4)", MACHINE_FLAGS, layout_bfm_sc4 )
// PR1321 CLUB LOCKBUSTER CLUB LOCKBUSTER CLUB PR1321 CLUB LOCKBUSTER SOUNDS11
-GAMEL( 200?, sc4lkbclh ,sc4lkbcl, sc4_5reel, sc4lkbcl, sc4_state, sc4lkbcl_mbus, ROT0, "BFM","Lock Buster Club (Bellfruit) (Scorpion 4) (311 Club, set 1)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4lkbcli ,sc4lkbcl, sc4_5reel, sc4lkbcl, sc4_state, sc4lkbcl_mbus, ROT0, "BFM","Lock Buster Club (Bellfruit) (Scorpion 4) (311 Club, set 2)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4lkbclh ,sc4lkbcl, sc4_5reel, sc4lkbcl, sc4_state, sc4lkbcl_mbus, ROT0, "BFM","Lock Buster Club (Bellfruit) (Scorpion 4) (311 Club, set 1)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4lkbcli ,sc4lkbcl, sc4_5reel, sc4lkbcl, sc4_state, sc4lkbcl_mbus, ROT0, "BFM","Lock Buster Club (Bellfruit) (Scorpion 4) (311 Club, set 2)", MACHINE_FLAGS, layout_bfm_sc4 )
// PR1321 CLUB LOCKBUSTER EURO PR1321 CLUB LOCKBUSTER SOUNDS11
-GAMEL( 200?, sc4lkbcla ,sc4lkbcl, sc4_5reel, sc4lkbcl, sc4_state, sc4lkbcl, ROT0, "BFM","Lock Buster Club (Euro) (Bellfruit) (Scorpion 4) (set 1)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4lkbclc ,sc4lkbcl, sc4_5reel, sc4lkbcl, sc4_state, sc4lkbcl, ROT0, "BFM","Lock Buster Club (Euro) (Bellfruit) (Scorpion 4) (set 2)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4lkbcla ,sc4lkbcl, sc4_5reel, sc4lkbcl, sc4_state, sc4lkbcl, ROT0, "BFM","Lock Buster Club (Euro) (Bellfruit) (Scorpion 4) (set 1)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4lkbclc ,sc4lkbcl, sc4_5reel, sc4lkbcl, sc4_state, sc4lkbcl, ROT0, "BFM","Lock Buster Club (Euro) (Bellfruit) (Scorpion 4) (set 2)", MACHINE_FLAGS, layout_bfm_sc4 )
// PR1321 CLUB LOCKBUSTER FERRY PR1321 CLUB LOCKBUSTER SOUNDS11
-GAMEL( 200?, sc4lkbcld ,sc4lkbcl, sc4_5reel, sc4lkbcl, sc4_state, sc4lkbcl, ROT0, "BFM","Lock Buster Club (Ferry) (Bellfruit) (Scorpion 4) (set 1)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4lkbclf ,sc4lkbcl, sc4_5reel, sc4lkbcl, sc4_state, sc4lkbcl, ROT0, "BFM","Lock Buster Club (Ferry) (Bellfruit) (Scorpion 4) (set 2)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4lkbcld ,sc4lkbcl, sc4_5reel, sc4lkbcl, sc4_state, sc4lkbcl, ROT0, "BFM","Lock Buster Club (Ferry) (Bellfruit) (Scorpion 4) (set 1)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4lkbclf ,sc4lkbcl, sc4_5reel, sc4lkbcl, sc4_state, sc4lkbcl, ROT0, "BFM","Lock Buster Club (Ferry) (Bellfruit) (Scorpion 4) (set 2)", MACHINE_FLAGS, layout_bfm_sc4 )
@@ -27503,17 +27505,17 @@ INPUT_PORTS_START( sc4lotrf ) // this structure is generated
INPUT_PORTS_END
// PR1115 LORD OF THE RINGS PR1115 L O T RINGS SOUNDS11
-GAMEL( 200?, sc4lotrf ,0, sc4_4reel_alt, sc4lotrf, sc4_state, sc4lotrf, ROT0, "BFM","Lord Of The Rings - The Fellowship Of The Ring (Bellfruit) (Scorpion 4) (set 1)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4lotrfa ,sc4lotrf, sc4_4reel_alt, sc4lotrf, sc4_state, sc4lotrf, ROT0, "BFM","Lord Of The Rings - The Fellowship Of The Ring (Bellfruit) (Scorpion 4) (set 2)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4lotrf ,0, sc4_4reel_alt, sc4lotrf, sc4_state, sc4lotrf, ROT0, "BFM","Lord Of The Rings - The Fellowship Of The Ring (Bellfruit) (Scorpion 4) (set 1)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4lotrfa ,sc4lotrf, sc4_4reel_alt, sc4lotrf, sc4_state, sc4lotrf, ROT0, "BFM","Lord Of The Rings - The Fellowship Of The Ring (Bellfruit) (Scorpion 4) (set 2)", MACHINE_FLAGS, layout_bfm_sc4 )
// PR1115 LORD OF THE RINGS ISS 2 PR1115 L O T RINGS SOUNDS11
-GAMEL( 200?, sc4lotrfb ,sc4lotrf, sc4_4reel_alt, sc4lotrf, sc4_state, sc4lotrf, ROT0, "BFM","Lord Of The Rings - The Fellowship Of The Ring (Bellfruit) (Scorpion 4) (set 3)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4lotrfc ,sc4lotrf, sc4_4reel_alt, sc4lotrf, sc4_state, sc4lotrf, ROT0, "BFM","Lord Of The Rings - The Fellowship Of The Ring (Bellfruit) (Scorpion 4) (set 4)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4lotrfd ,sc4lotrf, sc4_4reel_alt, sc4lotrf, sc4_state, sc4lotrf, ROT0, "BFM","Lord Of The Rings - The Fellowship Of The Ring (Bellfruit) (Scorpion 4) (set 5)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4lotrfe ,sc4lotrf, sc4_4reel_alt, sc4lotrf, sc4_state, sc4lotrf, ROT0, "BFM","Lord Of The Rings - The Fellowship Of The Ring (Bellfruit) (Scorpion 4) (set 6)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4lotrff ,sc4lotrf, sc4_4reel_alt, sc4lotrf, sc4_state, sc4lotrf, ROT0, "BFM","Lord Of The Rings - The Fellowship Of The Ring (Bellfruit) (Scorpion 4) (set 7)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4lotrfg ,sc4lotrf, sc4_4reel_alt, sc4lotrf, sc4_state, sc4lotrf, ROT0, "BFM","Lord Of The Rings - The Fellowship Of The Ring (Bellfruit) (Scorpion 4) (set 8)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4lotrt ,sc4lotrf, sc4_4reel_alt, sc4lotrf, sc4_state, sc4lotrf, ROT0, "BFM","Lord Of The Rings - The Fellowship Of The Ring (Bellfruit) (Scorpion 4) (set 9)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 ) // these were marked LOTR Trilogy and paired with different (wrong, now oprhaned, sound roms)
-GAMEL( 200?, sc4lotrta ,sc4lotrf, sc4_4reel_alt, sc4lotrf, sc4_state, sc4lotrf, ROT0, "BFM","Lord Of The Rings - The Fellowship Of The Ring (Bellfruit) (Scorpion 4) (set 10)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4lotrfb ,sc4lotrf, sc4_4reel_alt, sc4lotrf, sc4_state, sc4lotrf, ROT0, "BFM","Lord Of The Rings - The Fellowship Of The Ring (Bellfruit) (Scorpion 4) (set 3)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4lotrfc ,sc4lotrf, sc4_4reel_alt, sc4lotrf, sc4_state, sc4lotrf, ROT0, "BFM","Lord Of The Rings - The Fellowship Of The Ring (Bellfruit) (Scorpion 4) (set 4)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4lotrfd ,sc4lotrf, sc4_4reel_alt, sc4lotrf, sc4_state, sc4lotrf, ROT0, "BFM","Lord Of The Rings - The Fellowship Of The Ring (Bellfruit) (Scorpion 4) (set 5)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4lotrfe ,sc4lotrf, sc4_4reel_alt, sc4lotrf, sc4_state, sc4lotrf, ROT0, "BFM","Lord Of The Rings - The Fellowship Of The Ring (Bellfruit) (Scorpion 4) (set 6)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4lotrff ,sc4lotrf, sc4_4reel_alt, sc4lotrf, sc4_state, sc4lotrf, ROT0, "BFM","Lord Of The Rings - The Fellowship Of The Ring (Bellfruit) (Scorpion 4) (set 7)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4lotrfg ,sc4lotrf, sc4_4reel_alt, sc4lotrf, sc4_state, sc4lotrf, ROT0, "BFM","Lord Of The Rings - The Fellowship Of The Ring (Bellfruit) (Scorpion 4) (set 8)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4lotrt ,sc4lotrf, sc4_4reel_alt, sc4lotrf, sc4_state, sc4lotrf, ROT0, "BFM","Lord Of The Rings - The Fellowship Of The Ring (Bellfruit) (Scorpion 4) (set 9)", MACHINE_FLAGS, layout_bfm_sc4 ) // these were marked LOTR Trilogy and paired with different (wrong, now oprhaned, sound roms)
+GAMEL( 200?, sc4lotrta ,sc4lotrf, sc4_4reel_alt, sc4lotrf, sc4_state, sc4lotrf, ROT0, "BFM","Lord Of The Rings - The Fellowship Of The Ring (Bellfruit) (Scorpion 4) (set 10)", MACHINE_FLAGS, layout_bfm_sc4 )
@@ -27591,21 +27593,21 @@ INPUT_PORTS_END
// PR1315 TWO TOWERS PR1313 TWO TOWERS SOUNDS11
-GAMEL( 200?, sc4lotr2 ,0, sc4_200_5r, sc4lotr2, sc4_state, sc4lotr2, ROT0, "BFM","Lord Of The Rings - The Two Towers (Bellfruit) (Scorpion 4) (set 1)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4lotr2a ,sc4lotr2, sc4_200_5r, sc4lotr2, sc4_state, sc4lotr2, ROT0, "BFM","Lord Of The Rings - The Two Towers (Bellfruit) (Scorpion 4) (set 2)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4lotr2b ,sc4lotr2, sc4_200_5r, sc4lotr2, sc4_state, sc4lotr2, ROT0, "BFM","Lord Of The Rings - The Two Towers (Bellfruit) (Scorpion 4) (set 3)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4lotr2c ,sc4lotr2, sc4_200_5r, sc4lotr2, sc4_state, sc4lotr2, ROT0, "BFM","Lord Of The Rings - The Two Towers (Bellfruit) (Scorpion 4) (set 4)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4lotr2d ,sc4lotr2, sc4_200_5r, sc4lotr2, sc4_state, sc4lotr2, ROT0, "BFM","Lord Of The Rings - The Two Towers (Bellfruit) (Scorpion 4) (set 5)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4lotr2e ,sc4lotr2, sc4_200_5r, sc4lotr2, sc4_state, sc4lotr2, ROT0, "BFM","Lord Of The Rings - The Two Towers (Bellfruit) (Scorpion 4) (set 6)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4lotr2j ,sc4lotr2, sc4_200_5r, sc4lotr2, sc4_state, sc4lotr2, ROT0, "BFM","Lord Of The Rings - The Two Towers (Bellfruit) (Scorpion 4) (set 7)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4lotr2k ,sc4lotr2, sc4_200_5r, sc4lotr2, sc4_state, sc4lotr2, ROT0, "BFM","Lord Of The Rings - The Two Towers (Bellfruit) (Scorpion 4) (set 8)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4lotr2l ,sc4lotr2, sc4_200_5r, sc4lotr2, sc4_state, sc4lotr2, ROT0, "BFM","Lord Of The Rings - The Two Towers (Bellfruit) (Scorpion 4) (set 9)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4lotr2m ,sc4lotr2, sc4_200_5r, sc4lotr2, sc4_state, sc4lotr2, ROT0, "BFM","Lord Of The Rings - The Two Towers (Bellfruit) (Scorpion 4) (set 10)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4lotr2 ,0, sc4_200_5r, sc4lotr2, sc4_state, sc4lotr2, ROT0, "BFM","Lord Of The Rings - The Two Towers (Bellfruit) (Scorpion 4) (set 1)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4lotr2a ,sc4lotr2, sc4_200_5r, sc4lotr2, sc4_state, sc4lotr2, ROT0, "BFM","Lord Of The Rings - The Two Towers (Bellfruit) (Scorpion 4) (set 2)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4lotr2b ,sc4lotr2, sc4_200_5r, sc4lotr2, sc4_state, sc4lotr2, ROT0, "BFM","Lord Of The Rings - The Two Towers (Bellfruit) (Scorpion 4) (set 3)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4lotr2c ,sc4lotr2, sc4_200_5r, sc4lotr2, sc4_state, sc4lotr2, ROT0, "BFM","Lord Of The Rings - The Two Towers (Bellfruit) (Scorpion 4) (set 4)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4lotr2d ,sc4lotr2, sc4_200_5r, sc4lotr2, sc4_state, sc4lotr2, ROT0, "BFM","Lord Of The Rings - The Two Towers (Bellfruit) (Scorpion 4) (set 5)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4lotr2e ,sc4lotr2, sc4_200_5r, sc4lotr2, sc4_state, sc4lotr2, ROT0, "BFM","Lord Of The Rings - The Two Towers (Bellfruit) (Scorpion 4) (set 6)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4lotr2j ,sc4lotr2, sc4_200_5r, sc4lotr2, sc4_state, sc4lotr2, ROT0, "BFM","Lord Of The Rings - The Two Towers (Bellfruit) (Scorpion 4) (set 7)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4lotr2k ,sc4lotr2, sc4_200_5r, sc4lotr2, sc4_state, sc4lotr2, ROT0, "BFM","Lord Of The Rings - The Two Towers (Bellfruit) (Scorpion 4) (set 8)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4lotr2l ,sc4lotr2, sc4_200_5r, sc4lotr2, sc4_state, sc4lotr2, ROT0, "BFM","Lord Of The Rings - The Two Towers (Bellfruit) (Scorpion 4) (set 9)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4lotr2m ,sc4lotr2, sc4_200_5r, sc4lotr2, sc4_state, sc4lotr2, ROT0, "BFM","Lord Of The Rings - The Two Towers (Bellfruit) (Scorpion 4) (set 10)", MACHINE_FLAGS, layout_bfm_sc4 )
// PR1315 TWO TOWERS PR1313 TWO TOWERS SOUNDS11 TWO TOWERS S.SITE
-GAMEL( 200?, sc4lotr2f ,sc4lotr2, sc4_200_5r, sc4lotr2, sc4_state, sc4lotr2_mbus, ROT0, "BFM","Lord Of The Rings - The Two Towers (Bellfruit) (Scorpion 4) (set 11)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4lotr2g ,sc4lotr2, sc4_200_5r, sc4lotr2, sc4_state, sc4lotr2_mbus, ROT0, "BFM","Lord Of The Rings - The Two Towers (Bellfruit) (Scorpion 4) (set 12)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4lotr2h ,sc4lotr2, sc4_200_5r, sc4lotr2, sc4_state, sc4lotr2_mbus, ROT0, "BFM","Lord Of The Rings - The Two Towers (Bellfruit) (Scorpion 4) (set 13)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4lotr2i ,sc4lotr2, sc4_200_5r, sc4lotr2, sc4_state, sc4lotr2_mbus, ROT0, "BFM","Lord Of The Rings - The Two Towers (Bellfruit) (Scorpion 4) (set 14)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4lotr2f ,sc4lotr2, sc4_200_5r, sc4lotr2, sc4_state, sc4lotr2_mbus, ROT0, "BFM","Lord Of The Rings - The Two Towers (Bellfruit) (Scorpion 4) (set 11)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4lotr2g ,sc4lotr2, sc4_200_5r, sc4lotr2, sc4_state, sc4lotr2_mbus, ROT0, "BFM","Lord Of The Rings - The Two Towers (Bellfruit) (Scorpion 4) (set 12)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4lotr2h ,sc4lotr2, sc4_200_5r, sc4lotr2, sc4_state, sc4lotr2_mbus, ROT0, "BFM","Lord Of The Rings - The Two Towers (Bellfruit) (Scorpion 4) (set 13)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4lotr2i ,sc4lotr2, sc4_200_5r, sc4lotr2, sc4_state, sc4lotr2_mbus, ROT0, "BFM","Lord Of The Rings - The Two Towers (Bellfruit) (Scorpion 4) (set 14)", MACHINE_FLAGS, layout_bfm_sc4 )
DRIVER_INIT_MEMBER(sc4_state,sc4ltr2c)
@@ -27677,19 +27679,19 @@ INPUT_PORTS_START( sc4ltr2c ) // this structure is generated
INPUT_PORTS_END
// PR1420 CLUB LOTR TWO TOWERS PR1420 CLUB TWOTOWERS SOUNDS11
-GAMEL( 200?, sc4ltr2c ,0, sc4_200_std, sc4ltr2c, sc4_state, sc4ltr2c, ROT0, "BFM","Lord Of The Rings - The Two Towers Club (Bellfruit) (Scorpion 4) (set 1)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4ltr2ca ,sc4ltr2c, sc4_200_std, sc4ltr2c, sc4_state, sc4ltr2c, ROT0, "BFM","Lord Of The Rings - The Two Towers Club (Bellfruit) (Scorpion 4) (set 2)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4ltr2cb ,sc4ltr2c, sc4_200_std, sc4ltr2c, sc4_state, sc4ltr2c, ROT0, "BFM","Lord Of The Rings - The Two Towers Club (Bellfruit) (Scorpion 4) (set 3)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4ltr2cc ,sc4ltr2c, sc4_200_std, sc4ltr2c, sc4_state, sc4ltr2c, ROT0, "BFM","Lord Of The Rings - The Two Towers Club (Bellfruit) (Scorpion 4) (set 4)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4ltr2cd ,sc4ltr2c, sc4_200_std, sc4ltr2c, sc4_state, sc4ltr2c, ROT0, "BFM","Lord Of The Rings - The Two Towers Club (Bellfruit) (Scorpion 4) (set 5)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4ltr2ce ,sc4ltr2c, sc4_200_std, sc4ltr2c, sc4_state, sc4ltr2c, ROT0, "BFM","Lord Of The Rings - The Two Towers Club (Bellfruit) (Scorpion 4) (set 6)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4ltr2cf ,sc4ltr2c, sc4_200_std, sc4ltr2c, sc4_state, sc4ltr2c, ROT0, "BFM","Lord Of The Rings - The Two Towers Club (Bellfruit) (Scorpion 4) (set 7)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4ltr2cg ,sc4ltr2c, sc4_200_std, sc4ltr2c, sc4_state, sc4ltr2c, ROT0, "BFM","Lord Of The Rings - The Two Towers Club (Bellfruit) (Scorpion 4) (set 8)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4ltr2c ,0, sc4_200_std, sc4ltr2c, sc4_state, sc4ltr2c, ROT0, "BFM","Lord Of The Rings - The Two Towers Club (Bellfruit) (Scorpion 4) (set 1)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4ltr2ca ,sc4ltr2c, sc4_200_std, sc4ltr2c, sc4_state, sc4ltr2c, ROT0, "BFM","Lord Of The Rings - The Two Towers Club (Bellfruit) (Scorpion 4) (set 2)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4ltr2cb ,sc4ltr2c, sc4_200_std, sc4ltr2c, sc4_state, sc4ltr2c, ROT0, "BFM","Lord Of The Rings - The Two Towers Club (Bellfruit) (Scorpion 4) (set 3)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4ltr2cc ,sc4ltr2c, sc4_200_std, sc4ltr2c, sc4_state, sc4ltr2c, ROT0, "BFM","Lord Of The Rings - The Two Towers Club (Bellfruit) (Scorpion 4) (set 4)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4ltr2cd ,sc4ltr2c, sc4_200_std, sc4ltr2c, sc4_state, sc4ltr2c, ROT0, "BFM","Lord Of The Rings - The Two Towers Club (Bellfruit) (Scorpion 4) (set 5)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4ltr2ce ,sc4ltr2c, sc4_200_std, sc4ltr2c, sc4_state, sc4ltr2c, ROT0, "BFM","Lord Of The Rings - The Two Towers Club (Bellfruit) (Scorpion 4) (set 6)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4ltr2cf ,sc4ltr2c, sc4_200_std, sc4ltr2c, sc4_state, sc4ltr2c, ROT0, "BFM","Lord Of The Rings - The Two Towers Club (Bellfruit) (Scorpion 4) (set 7)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4ltr2cg ,sc4ltr2c, sc4_200_std, sc4ltr2c, sc4_state, sc4ltr2c, ROT0, "BFM","Lord Of The Rings - The Two Towers Club (Bellfruit) (Scorpion 4) (set 8)", MACHINE_FLAGS, layout_bfm_sc4 )
// PR1420 CLUB LOTR TWO TOWERS PR1420 CLUB TWOTOWERS SOUNDS11 CLUB TWO TOWERS
-GAMEL( 200?, sc4ltr2ch ,sc4ltr2c, sc4_200_std, sc4ltr2c, sc4_state, sc4ltr2c_mbus, ROT0, "BFM","Lord Of The Rings - The Two Towers Club (Bellfruit) (Scorpion 4) (set 9)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4ltr2ci ,sc4ltr2c, sc4_200_std, sc4ltr2c, sc4_state, sc4ltr2c_mbus, ROT0, "BFM","Lord Of The Rings - The Two Towers Club (Bellfruit) (Scorpion 4) (set 10)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4ltr2cj ,sc4ltr2c, sc4_200_std, sc4ltr2c, sc4_state, sc4ltr2c_mbus, ROT0, "BFM","Lord Of The Rings - The Two Towers Club (Bellfruit) (Scorpion 4) (set 11)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4ltr2ck ,sc4ltr2c, sc4_200_std, sc4ltr2c, sc4_state, sc4ltr2c_mbus, ROT0, "BFM","Lord Of The Rings - The Two Towers Club (Bellfruit) (Scorpion 4) (set 12)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4ltr2ch ,sc4ltr2c, sc4_200_std, sc4ltr2c, sc4_state, sc4ltr2c_mbus, ROT0, "BFM","Lord Of The Rings - The Two Towers Club (Bellfruit) (Scorpion 4) (set 9)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4ltr2ci ,sc4ltr2c, sc4_200_std, sc4ltr2c, sc4_state, sc4ltr2c_mbus, ROT0, "BFM","Lord Of The Rings - The Two Towers Club (Bellfruit) (Scorpion 4) (set 10)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4ltr2cj ,sc4ltr2c, sc4_200_std, sc4ltr2c, sc4_state, sc4ltr2c_mbus, ROT0, "BFM","Lord Of The Rings - The Two Towers Club (Bellfruit) (Scorpion 4) (set 11)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4ltr2ck ,sc4ltr2c, sc4_200_std, sc4ltr2c, sc4_state, sc4ltr2c_mbus, ROT0, "BFM","Lord Of The Rings - The Two Towers Club (Bellfruit) (Scorpion 4) (set 12)", MACHINE_FLAGS, layout_bfm_sc4 )
DRIVER_INIT_MEMBER(sc4_state,sc4magic)
{
@@ -27741,10 +27743,10 @@ INPUT_PORTS_START( sc4magic ) // this structure is generated
INPUT_PORTS_END
// PR2520 MAGIC POUND ABOUT V1.0 MAGICPOUNDABOUTSND MAGIC POUNDABOUT
-GAMEL( 200?, sc4magic ,0, sc4_4reel, sc4magic, sc4_state, sc4magic, ROT0, "Qps","Magic Poundabout (Qps) (Scorpion 4) (set 1)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4magica ,sc4magic, sc4_4reel, sc4magic, sc4_state, sc4magic, ROT0, "Qps","Magic Poundabout (Qps) (Scorpion 4) (set 2)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4magicb ,sc4magic, sc4_4reel, sc4magic, sc4_state, sc4magic, ROT0, "Qps","Magic Poundabout (Qps) (Scorpion 4) (set 3)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4magicc ,sc4magic, sc4_4reel, sc4magic, sc4_state, sc4magic, ROT0, "Qps","Magic Poundabout (Qps) (Scorpion 4) (set 4)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4magic ,0, sc4_4reel, sc4magic, sc4_state, sc4magic, ROT0, "Qps","Magic Poundabout (Qps) (Scorpion 4) (set 1)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4magica ,sc4magic, sc4_4reel, sc4magic, sc4_state, sc4magic, ROT0, "Qps","Magic Poundabout (Qps) (Scorpion 4) (set 2)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4magicb ,sc4magic, sc4_4reel, sc4magic, sc4_state, sc4magic, ROT0, "Qps","Magic Poundabout (Qps) (Scorpion 4) (set 3)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4magicc ,sc4magic, sc4_4reel, sc4magic, sc4_state, sc4magic, ROT0, "Qps","Magic Poundabout (Qps) (Scorpion 4) (set 4)", MACHINE_FLAGS, layout_bfm_sc4 )
DRIVER_INIT_MEMBER(sc4_state,sc4maxim)
@@ -27799,14 +27801,14 @@ INPUT_PORTS_START( sc4maxim ) // this structure is generated
INPUT_PORTS_END
// PR2019 MAXIMUS CASH MAX SOUNDS MAXIMUS CASH
-GAMEL( 200?, sc4maxim ,0, sc4_4reel, sc4maxim, sc4_state, sc4maxim, ROT0, "Mazooma","Maximus Cash (Mazooma) (Scorpion 4) (set 1)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4maxima ,sc4maxim, sc4_4reel, sc4maxim, sc4_state, sc4maxim, ROT0, "Mazooma","Maximus Cash (Mazooma) (Scorpion 4) (set 2)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4maximb ,sc4maxim, sc4_4reel, sc4maxim, sc4_state, sc4maxim, ROT0, "Mazooma","Maximus Cash (Mazooma) (Scorpion 4) (set 3)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4maximc ,sc4maxim, sc4_4reel, sc4maxim, sc4_state, sc4maxim, ROT0, "Mazooma","Maximus Cash (Mazooma) (Scorpion 4) (set 4)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4maximd ,sc4maxim, sc4_4reel, sc4maxim, sc4_state, sc4maxim, ROT0, "Mazooma","Maximus Cash (Mazooma) (Scorpion 4) (set 5)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4maxime ,sc4maxim, sc4_4reel, sc4maxim, sc4_state, sc4maxim, ROT0, "Mazooma","Maximus Cash (Mazooma) (Scorpion 4) (set 6)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4maximf ,sc4maxim, sc4_4reel, sc4maxim, sc4_state, sc4maxim, ROT0, "Mazooma","Maximus Cash (Mazooma) (Scorpion 4) (set 7)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4maximg ,sc4maxim, sc4_4reel, sc4maxim, sc4_state, sc4maxim, ROT0, "Mazooma","Maximus Cash (Mazooma) (Scorpion 4) (set 8)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4maxim ,0, sc4_4reel, sc4maxim, sc4_state, sc4maxim, ROT0, "Mazooma","Maximus Cash (Mazooma) (Scorpion 4) (set 1)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4maxima ,sc4maxim, sc4_4reel, sc4maxim, sc4_state, sc4maxim, ROT0, "Mazooma","Maximus Cash (Mazooma) (Scorpion 4) (set 2)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4maximb ,sc4maxim, sc4_4reel, sc4maxim, sc4_state, sc4maxim, ROT0, "Mazooma","Maximus Cash (Mazooma) (Scorpion 4) (set 3)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4maximc ,sc4maxim, sc4_4reel, sc4maxim, sc4_state, sc4maxim, ROT0, "Mazooma","Maximus Cash (Mazooma) (Scorpion 4) (set 4)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4maximd ,sc4maxim, sc4_4reel, sc4maxim, sc4_state, sc4maxim, ROT0, "Mazooma","Maximus Cash (Mazooma) (Scorpion 4) (set 5)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4maxime ,sc4maxim, sc4_4reel, sc4maxim, sc4_state, sc4maxim, ROT0, "Mazooma","Maximus Cash (Mazooma) (Scorpion 4) (set 6)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4maximf ,sc4maxim, sc4_4reel, sc4maxim, sc4_state, sc4maxim, ROT0, "Mazooma","Maximus Cash (Mazooma) (Scorpion 4) (set 7)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4maximg ,sc4maxim, sc4_4reel, sc4maxim, sc4_state, sc4maxim, ROT0, "Mazooma","Maximus Cash (Mazooma) (Scorpion 4) (set 8)", MACHINE_FLAGS, layout_bfm_sc4 )
DRIVER_INIT_MEMBER(sc4_state,sc4monob)
@@ -27859,20 +27861,20 @@ INPUT_PORTS_START( sc4monob ) // this structure is generated
INPUT_PORTS_END
// PR2121 MONOPOLY MPLY SOUNDS MONOPOLY
-GAMEL( 200?, sc4monob ,0, sc4_4reel_alt, sc4monob, sc4_state, sc4monob, ROT0, "BFM","Monopoly (Bellfruit) (Scorpion 4) (set 1)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4monoba ,sc4monob, sc4_4reel_alt, sc4monob, sc4_state, sc4monob, ROT0, "BFM","Monopoly (Bellfruit) (Scorpion 4) (set 2)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4monobb ,sc4monob, sc4_4reel_alt, sc4monob, sc4_state, sc4monob, ROT0, "BFM","Monopoly (Bellfruit) (Scorpion 4) (set 3)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4monobc ,sc4monob, sc4_4reel_alt, sc4monob, sc4_state, sc4monob, ROT0, "BFM","Monopoly (Bellfruit) (Scorpion 4) (set 4)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4monobd ,sc4monob, sc4_4reel_alt, sc4monob, sc4_state, sc4monob, ROT0, "BFM","Monopoly (Bellfruit) (Scorpion 4) (set 5)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4monobe ,sc4monob, sc4_4reel_alt, sc4monob, sc4_state, sc4monob, ROT0, "BFM","Monopoly (Bellfruit) (Scorpion 4) (set 6)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4monobf ,sc4monob, sc4_4reel_alt, sc4monob, sc4_state, sc4monob, ROT0, "BFM","Monopoly (Bellfruit) (Scorpion 4) (set 7)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4monobg ,sc4monob, sc4_4reel_alt, sc4monob, sc4_state, sc4monob, ROT0, "BFM","Monopoly (Bellfruit) (Scorpion 4) (set 8)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4monobh ,sc4monob, sc4_4reel_alt, sc4monob, sc4_state, sc4monob, ROT0, "BFM","Monopoly (Bellfruit) (Scorpion 4) (set 9)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4monobi ,sc4monob, sc4_4reel_alt, sc4monob, sc4_state, sc4monob, ROT0, "BFM","Monopoly (Bellfruit) (Scorpion 4) (set 10)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4monobj ,sc4monob, sc4_4reel_alt, sc4monob, sc4_state, sc4monob, ROT0, "BFM","Monopoly (Bellfruit) (Scorpion 4) (set 11)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4monobk ,sc4monob, sc4_4reel_alt, sc4monob, sc4_state, sc4monob, ROT0, "BFM","Monopoly (Bellfruit) (Scorpion 4) (set 12)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4monobl ,sc4monob, sc4_4reel_alt, sc4monob, sc4_state, sc4monob, ROT0, "BFM","Monopoly (Bellfruit) (Scorpion 4) (set 13)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4monobm ,sc4monob, sc4_4reel_alt, sc4monob, sc4_state, sc4monob, ROT0, "BFM","Monopoly (Bellfruit) (Scorpion 4) (set 14)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4monob ,0, sc4_4reel_alt, sc4monob, sc4_state, sc4monob, ROT0, "BFM","Monopoly (Bellfruit) (Scorpion 4) (set 1)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4monoba ,sc4monob, sc4_4reel_alt, sc4monob, sc4_state, sc4monob, ROT0, "BFM","Monopoly (Bellfruit) (Scorpion 4) (set 2)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4monobb ,sc4monob, sc4_4reel_alt, sc4monob, sc4_state, sc4monob, ROT0, "BFM","Monopoly (Bellfruit) (Scorpion 4) (set 3)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4monobc ,sc4monob, sc4_4reel_alt, sc4monob, sc4_state, sc4monob, ROT0, "BFM","Monopoly (Bellfruit) (Scorpion 4) (set 4)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4monobd ,sc4monob, sc4_4reel_alt, sc4monob, sc4_state, sc4monob, ROT0, "BFM","Monopoly (Bellfruit) (Scorpion 4) (set 5)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4monobe ,sc4monob, sc4_4reel_alt, sc4monob, sc4_state, sc4monob, ROT0, "BFM","Monopoly (Bellfruit) (Scorpion 4) (set 6)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4monobf ,sc4monob, sc4_4reel_alt, sc4monob, sc4_state, sc4monob, ROT0, "BFM","Monopoly (Bellfruit) (Scorpion 4) (set 7)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4monobg ,sc4monob, sc4_4reel_alt, sc4monob, sc4_state, sc4monob, ROT0, "BFM","Monopoly (Bellfruit) (Scorpion 4) (set 8)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4monobh ,sc4monob, sc4_4reel_alt, sc4monob, sc4_state, sc4monob, ROT0, "BFM","Monopoly (Bellfruit) (Scorpion 4) (set 9)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4monobi ,sc4monob, sc4_4reel_alt, sc4monob, sc4_state, sc4monob, ROT0, "BFM","Monopoly (Bellfruit) (Scorpion 4) (set 10)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4monobj ,sc4monob, sc4_4reel_alt, sc4monob, sc4_state, sc4monob, ROT0, "BFM","Monopoly (Bellfruit) (Scorpion 4) (set 11)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4monobk ,sc4monob, sc4_4reel_alt, sc4monob, sc4_state, sc4monob, ROT0, "BFM","Monopoly (Bellfruit) (Scorpion 4) (set 12)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4monobl ,sc4monob, sc4_4reel_alt, sc4monob, sc4_state, sc4monob, ROT0, "BFM","Monopoly (Bellfruit) (Scorpion 4) (set 13)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4monobm ,sc4monob, sc4_4reel_alt, sc4monob, sc4_state, sc4monob, ROT0, "BFM","Monopoly (Bellfruit) (Scorpion 4) (set 14)", MACHINE_FLAGS, layout_bfm_sc4 )
@@ -27927,17 +27929,17 @@ INPUT_PORTS_END
// So which Top Box roms should thse use? Why do some play without one?
// Waits for Top Box
-GAMEL( 200?, sc4mondxd ,sc4mondx, sc4_3reel_200, sc4mondx, sc4_state, sc4mondx, ROT0, "Mazooma","Monopoly Deluxe (PR2202, MPDX 1.1) (Mazooma) (Scorpion 4) (set 1)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )// PR2202 MONOPOLY DELUXE MONOPOLY DELUXE MAZ MONOPOLY TRIPLE
-GAMEL( 200?, sc4mondxg ,sc4mondx, sc4_3reel_200, sc4mondx, sc4_state, sc4mondx, ROT0, "Mazooma","Monopoly Deluxe (PR2202, MPDX 1.1) (Mazooma) (Scorpion 4) (set 2)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )// ^^
+GAMEL( 200?, sc4mondxd ,sc4mondx, sc4_3reel_200, sc4mondx, sc4_state, sc4mondx, ROT0, "Mazooma","Monopoly Deluxe (PR2202, MPDX 1.1) (Mazooma) (Scorpion 4) (set 1)", MACHINE_FLAGS, layout_bfm_sc4 )// PR2202 MONOPOLY DELUXE MONOPOLY DELUXE MAZ MONOPOLY TRIPLE
+GAMEL( 200?, sc4mondxg ,sc4mondx, sc4_3reel_200, sc4mondx, sc4_state, sc4mondx, ROT0, "Mazooma","Monopoly Deluxe (PR2202, MPDX 1.1) (Mazooma) (Scorpion 4) (set 2)", MACHINE_FLAGS, layout_bfm_sc4 )// ^^
// Plays without Top Box
-GAMEL( 200?, sc4mondxe ,sc4mondx, sc4_3reel_200, sc4mondx, sc4_state, sc4mondx, ROT0, "Mazooma","Monopoly Deluxe (PR2202, MPDX 1.1) (Mazooma) (Scorpion 4) (set 3)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )// PR2202 MONOPOLY MONOPOLY TRIPLE MAZ MONOPOLY DELUXE
-GAMEL( 200?, sc4mondxf ,sc4mondx, sc4_3reel_200, sc4mondx, sc4_state, sc4mondx, ROT0, "Mazooma","Monopoly Deluxe (PR2202, MPDX 1.1) (Mazooma) (Scorpion 4) (set 4)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )// ^^
+GAMEL( 200?, sc4mondxe ,sc4mondx, sc4_3reel_200, sc4mondx, sc4_state, sc4mondx, ROT0, "Mazooma","Monopoly Deluxe (PR2202, MPDX 1.1) (Mazooma) (Scorpion 4) (set 3)", MACHINE_FLAGS, layout_bfm_sc4 )// PR2202 MONOPOLY MONOPOLY TRIPLE MAZ MONOPOLY DELUXE
+GAMEL( 200?, sc4mondxf ,sc4mondx, sc4_3reel_200, sc4mondx, sc4_state, sc4mondx, ROT0, "Mazooma","Monopoly Deluxe (PR2202, MPDX 1.1) (Mazooma) (Scorpion 4) (set 4)", MACHINE_FLAGS, layout_bfm_sc4 )// ^^
// Waits for Top Box
-GAMEL( 200?, sc4mondx ,0, sc4_3reel_200, sc4mondx, sc4_state, sc4mondx, ROT0, "Mazooma","Monopoly Deluxe (PR2202, MPDX 1.0) (Mazooma) (Scorpion 4) (set 1)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )// PR2202 MONOPOLY DELUXE MONOPOLY DELUXE MAZ MPDX SOUNDS MONOPOLY
-GAMEL( 200?, sc4mondxa ,sc4mondx, sc4_3reel_200, sc4mondx, sc4_state, sc4mondx, ROT0, "Mazooma","Monopoly Deluxe (PR2202, MPDX 1.0) (Mazooma) (Scorpion 4) (set 2)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )// ^^
+GAMEL( 200?, sc4mondx ,0, sc4_3reel_200, sc4mondx, sc4_state, sc4mondx, ROT0, "Mazooma","Monopoly Deluxe (PR2202, MPDX 1.0) (Mazooma) (Scorpion 4) (set 1)", MACHINE_FLAGS, layout_bfm_sc4 )// PR2202 MONOPOLY DELUXE MONOPOLY DELUXE MAZ MPDX SOUNDS MONOPOLY
+GAMEL( 200?, sc4mondxa ,sc4mondx, sc4_3reel_200, sc4mondx, sc4_state, sc4mondx, ROT0, "Mazooma","Monopoly Deluxe (PR2202, MPDX 1.0) (Mazooma) (Scorpion 4) (set 2)", MACHINE_FLAGS, layout_bfm_sc4 )// ^^
// Plays without Top Box
-GAMEL( 200?, sc4mondxb ,sc4mondx, sc4_3reel_200, sc4mondx, sc4_state, sc4mondx, ROT0, "Mazooma","Monopoly Deluxe (PR2202, MPDX 1.0) (Mazooma) (Scorpion 4) (set 3)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )// ^^
-GAMEL( 200?, sc4mondxc ,sc4mondx, sc4_3reel_200, sc4mondx, sc4_state, sc4mondx, ROT0, "Mazooma","Monopoly Deluxe (PR2202, MPDX 1.0) (Mazooma) (Scorpion 4) (set 4)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )// ^^
+GAMEL( 200?, sc4mondxb ,sc4mondx, sc4_3reel_200, sc4mondx, sc4_state, sc4mondx, ROT0, "Mazooma","Monopoly Deluxe (PR2202, MPDX 1.0) (Mazooma) (Scorpion 4) (set 3)", MACHINE_FLAGS, layout_bfm_sc4 )// ^^
+GAMEL( 200?, sc4mondxc ,sc4mondx, sc4_3reel_200, sc4mondx, sc4_state, sc4mondx, ROT0, "Mazooma","Monopoly Deluxe (PR2202, MPDX 1.0) (Mazooma) (Scorpion 4) (set 4)", MACHINE_FLAGS, layout_bfm_sc4 )// ^^
@@ -27995,16 +27997,16 @@ DRIVER_INIT_MEMBER(sc4_state,sc4mont)
// PR2510 MONTEGO PAY LOWTECHSND MONTEGO PAY
-GAMEL( 200?, sc4mont ,0, sc4, sc4mont, sc4_state, sc4mont, ROT0, "Qps","Montego Pay (Qps) (Scorpion 4) (set 1)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4monta ,sc4mont, sc4, sc4mont, sc4_state, sc4mont, ROT0, "Qps","Montego Pay (Qps) (Scorpion 4) (set 2)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4montb ,sc4mont, sc4, sc4mont, sc4_state, sc4mont, ROT0, "Qps","Montego Pay (Qps) (Scorpion 4) (set 3)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4montc ,sc4mont, sc4, sc4mont, sc4_state, sc4mont, ROT0, "Qps","Montego Pay (Qps) (Scorpion 4) (set 4)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4montd ,sc4mont, sc4, sc4mont, sc4_state, sc4mont, ROT0, "Qps","Montego Pay (Qps) (Scorpion 4) (set 5)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4monte ,sc4mont, sc4, sc4mont, sc4_state, sc4mont, ROT0, "Qps","Montego Pay (Qps) (Scorpion 4) (set 6)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4montf ,sc4mont, sc4, sc4mont, sc4_state, sc4mont, ROT0, "Qps","Montego Pay (Qps) (Scorpion 4) (set 7)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4montg ,sc4mont, sc4, sc4mont, sc4_state, sc4mont, ROT0, "Qps","Montego Pay (Qps) (Scorpion 4) (set 8)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4month ,sc4mont, sc4, sc4mont, sc4_state, sc4mont, ROT0, "Qps","Montego Pay (Qps) (Scorpion 4) (set 9)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4monti ,sc4mont, sc4, sc4mont, sc4_state, sc4mont, ROT0, "Qps","Montego Pay (Qps) (Scorpion 4) (set 10)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4mont ,0, sc4, sc4mont, sc4_state, sc4mont, ROT0, "Qps","Montego Pay (Qps) (Scorpion 4) (set 1)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4monta ,sc4mont, sc4, sc4mont, sc4_state, sc4mont, ROT0, "Qps","Montego Pay (Qps) (Scorpion 4) (set 2)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4montb ,sc4mont, sc4, sc4mont, sc4_state, sc4mont, ROT0, "Qps","Montego Pay (Qps) (Scorpion 4) (set 3)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4montc ,sc4mont, sc4, sc4mont, sc4_state, sc4mont, ROT0, "Qps","Montego Pay (Qps) (Scorpion 4) (set 4)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4montd ,sc4mont, sc4, sc4mont, sc4_state, sc4mont, ROT0, "Qps","Montego Pay (Qps) (Scorpion 4) (set 5)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4monte ,sc4mont, sc4, sc4mont, sc4_state, sc4mont, ROT0, "Qps","Montego Pay (Qps) (Scorpion 4) (set 6)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4montf ,sc4mont, sc4, sc4mont, sc4_state, sc4mont, ROT0, "Qps","Montego Pay (Qps) (Scorpion 4) (set 7)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4montg ,sc4mont, sc4, sc4mont, sc4_state, sc4mont, ROT0, "Qps","Montego Pay (Qps) (Scorpion 4) (set 8)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4month ,sc4mont, sc4, sc4mont, sc4_state, sc4mont, ROT0, "Qps","Montego Pay (Qps) (Scorpion 4) (set 9)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4monti ,sc4mont, sc4, sc4mont, sc4_state, sc4mont, ROT0, "Qps","Montego Pay (Qps) (Scorpion 4) (set 10)", MACHINE_FLAGS, layout_bfm_sc4 )
@@ -28064,9 +28066,9 @@ INPUT_PORTS_START( sc4mou ) // this structure is generated
INPUT_PORTS_END
// PR2523 MOVE ON UP V1.0 MOVEONUPSND MOVE ON UP
-GAMEL( 200?, sc4mou ,0, sc4_4reel_alt, sc4mou, sc4_state, sc4mou, ROT0, "Qps","Move On Up (Qps) (Scorpion 4) (set 1)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4moua ,sc4mou, sc4_4reel_alt, sc4mou, sc4_state, sc4mou, ROT0, "Qps","Move On Up (Qps) (Scorpion 4) (set 2)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4moub ,sc4mou, sc4_4reel_alt, sc4mou, sc4_state, sc4mou, ROT0, "Qps","Move On Up (Qps) (Scorpion 4) (set 3)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4mou ,0, sc4_4reel_alt, sc4mou, sc4_state, sc4mou, ROT0, "Qps","Move On Up (Qps) (Scorpion 4) (set 1)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4moua ,sc4mou, sc4_4reel_alt, sc4mou, sc4_state, sc4mou, ROT0, "Qps","Move On Up (Qps) (Scorpion 4) (set 2)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4moub ,sc4mou, sc4_4reel_alt, sc4mou, sc4_state, sc4mou, ROT0, "Qps","Move On Up (Qps) (Scorpion 4) (set 3)", MACHINE_FLAGS, layout_bfm_sc4 )
DRIVER_INIT_MEMBER(sc4_state,sc4nmtj)
@@ -28127,11 +28129,11 @@ INPUT_PORTS_START( sc4nmtj ) // this structure is generated
INPUT_PORTS_END
// PR2171 NEVER MIND JPS NMTJ SOUNDS NEVER MIND JPS
-GAMEL( 200?, sc4nmtj ,0, sc4_200_4ra, sc4nmtj, sc4_state, sc4nmtj, ROT0, "Mazooma","Never Mind The Jackpots (Mazooma) (Scorpion 4) (011)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4nmtja ,sc4nmtj, sc4_200_4ra, sc4nmtj, sc4_state, sc4nmtj, ROT0, "Mazooma","Never Mind The Jackpots (Mazooma) (Scorpion 4) (014, set 1)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4nmtjc ,sc4nmtj, sc4_200_4ra, sc4nmtj, sc4_state, sc4nmtj, ROT0, "Mazooma","Never Mind The Jackpots (Mazooma) (Scorpion 4) (014, set 2)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4nmtjb ,sc4nmtj, sc4_200_4ra, sc4nmtj, sc4_state, sc4nmtj, ROT0, "Mazooma","Never Mind The Jackpots (Mazooma) (Scorpion 4) (044, set 1)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4nmtjd ,sc4nmtj, sc4_200_4ra, sc4nmtj, sc4_state, sc4nmtj, ROT0, "Mazooma","Never Mind The Jackpots (Mazooma) (Scorpion 4) (044, set 2)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4nmtj ,0, sc4_200_4ra, sc4nmtj, sc4_state, sc4nmtj, ROT0, "Mazooma","Never Mind The Jackpots (Mazooma) (Scorpion 4) (011)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4nmtja ,sc4nmtj, sc4_200_4ra, sc4nmtj, sc4_state, sc4nmtj, ROT0, "Mazooma","Never Mind The Jackpots (Mazooma) (Scorpion 4) (014, set 1)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4nmtjc ,sc4nmtj, sc4_200_4ra, sc4nmtj, sc4_state, sc4nmtj, ROT0, "Mazooma","Never Mind The Jackpots (Mazooma) (Scorpion 4) (014, set 2)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4nmtjb ,sc4nmtj, sc4_200_4ra, sc4nmtj, sc4_state, sc4nmtj, ROT0, "Mazooma","Never Mind The Jackpots (Mazooma) (Scorpion 4) (044, set 1)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4nmtjd ,sc4nmtj, sc4_200_4ra, sc4nmtj, sc4_state, sc4nmtj, ROT0, "Mazooma","Never Mind The Jackpots (Mazooma) (Scorpion 4) (044, set 2)", MACHINE_FLAGS, layout_bfm_sc4 )
DRIVER_INIT_MEMBER(sc4_state,sc4oyf)
@@ -28203,8 +28205,8 @@ INPUT_PORTS_START( sc4oyf ) // this structure is generated
INPUT_PORTS_END
// PR1310 AWP OFF YOUR FACE PR1310 OFF YOUR FACE SOUNDS11
-GAMEL( 200?, sc4oyf ,0, sc4_4reel_alt, sc4oyf, sc4_state, sc4oyf, ROT0, "BFM","Off Your Face (Bellfruit) (Scorpion 4) (set 1)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4oyfa ,sc4oyf, sc4_4reel_alt, sc4oyf, sc4_state, sc4oyf, ROT0, "BFM","Off Your Face (Bellfruit) (Scorpion 4) (set 2)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4oyf ,0, sc4_4reel_alt, sc4oyf, sc4_state, sc4oyf, ROT0, "BFM","Off Your Face (Bellfruit) (Scorpion 4) (set 1)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4oyfa ,sc4oyf, sc4_4reel_alt, sc4oyf, sc4_state, sc4oyf, ROT0, "BFM","Off Your Face (Bellfruit) (Scorpion 4) (set 2)", MACHINE_FLAGS, layout_bfm_sc4 )
@@ -28276,8 +28278,8 @@ INPUT_PORTS_START( sc4opses ) // this structure is generated
INPUT_PORTS_END
// PR1106 OPEN SESAME PR1106 OPEN SESAME SOUNDS11
-GAMEL( 200?, sc4opses ,0, sc4_200_5r, sc4opses, sc4_state, sc4opses, ROT0, "BFM","Open Sesame (Bellfruit) (Scorpion 4) (set 1)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4opsesa ,sc4opses, sc4_200_5r, sc4opses, sc4_state, sc4opses, ROT0, "BFM","Open Sesame (Bellfruit) (Scorpion 4) (set 2)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4opses ,0, sc4_200_5r, sc4opses, sc4_state, sc4opses, ROT0, "BFM","Open Sesame (Bellfruit) (Scorpion 4) (set 1)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4opsesa ,sc4opses, sc4_200_5r, sc4opses, sc4_state, sc4opses, ROT0, "BFM","Open Sesame (Bellfruit) (Scorpion 4) (set 2)", MACHINE_FLAGS, layout_bfm_sc4 )
DRIVER_INIT_MEMBER(sc4_state,sc4paccl)
@@ -28334,10 +28336,10 @@ INPUT_PORTS_START( sc4paccl ) // this structure is generated
INPUT_PORTS_END
// PR2018 PACMAN CLUB CLUB PACMAN SOUNDS PACMAN C L U B
-GAMEL( 200?, sc4paccl ,0, sc4_5reel, sc4paccl, sc4_state, sc4paccl, ROT0, "Mazooma","Pac Man Club (PR2018, CPAC) (Mazooma) (Scorpion 4) (set 1)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4paccla ,sc4paccl, sc4_5reel, sc4paccl, sc4_state, sc4paccl, ROT0, "Mazooma","Pac Man Club (PR2018, CPAC) (Mazooma) (Scorpion 4) (set 2)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4pacclb ,sc4paccl, sc4_5reel, sc4paccl, sc4_state, sc4paccl, ROT0, "Mazooma","Pac Man Club (PR2018, CPAC) (Mazooma) (Scorpion 4) (set 3)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4pacclc ,sc4paccl, sc4_5reel, sc4paccl, sc4_state, sc4paccl, ROT0, "Mazooma","Pac Man Club (PR2018, CPAC) (Mazooma) (Scorpion 4) (set 4)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4paccl ,0, sc4_5reel, sc4paccl, sc4_state, sc4paccl, ROT0, "Mazooma","Pac Man Club (PR2018, CPAC) (Mazooma) (Scorpion 4) (set 1)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4paccla ,sc4paccl, sc4_5reel, sc4paccl, sc4_state, sc4paccl, ROT0, "Mazooma","Pac Man Club (PR2018, CPAC) (Mazooma) (Scorpion 4) (set 2)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4pacclb ,sc4paccl, sc4_5reel, sc4paccl, sc4_state, sc4paccl, ROT0, "Mazooma","Pac Man Club (PR2018, CPAC) (Mazooma) (Scorpion 4) (set 3)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4pacclc ,sc4paccl, sc4_5reel, sc4paccl, sc4_state, sc4paccl, ROT0, "Mazooma","Pac Man Club (PR2018, CPAC) (Mazooma) (Scorpion 4) (set 4)", MACHINE_FLAGS, layout_bfm_sc4 )
// REEL 4 ERR 24 (what type should be here??)
@@ -28395,8 +28397,8 @@ INPUT_PORTS_END
// REEL 4 ERR 24
// PR2031 PACMANIA ANIA SOUNDS PACMANIA
-GAMEL( 200?, sc4pmani ,0, sc4_200_4rb, sc4pmani, sc4_state, sc4pmani, ROT0, "Mazooma","Pac Mania (PR2031, ANIA) (Mazooma) (Scorpion 4) (set 1)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4pmania ,sc4pmani, sc4_200_4rb, sc4pmani, sc4_state, sc4pmani, ROT0, "Mazooma","Pac Mania (PR2031, ANIA) (Mazooma) (Scorpion 4) (set 2)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4pmani ,0, sc4_200_4rb, sc4pmani, sc4_state, sc4pmani, ROT0, "Mazooma","Pac Mania (PR2031, ANIA) (Mazooma) (Scorpion 4) (set 1)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4pmania ,sc4pmani, sc4_200_4rb, sc4pmani, sc4_state, sc4pmani, ROT0, "Mazooma","Pac Mania (PR2031, ANIA) (Mazooma) (Scorpion 4) (set 2)", MACHINE_FLAGS, layout_bfm_sc4 )
DRIVER_INIT_MEMBER(sc4_state,sc4pgold)
@@ -28467,12 +28469,12 @@ INPUT_PORTS_START( sc4pgold ) // this structure is generated
INPUT_PORTS_END
// PR1012 PHARAOH'S GOLD PR1012 PHARAOHS GOLD SOUNDS11
-GAMEL( 200?, sc4pgold ,0, sc4_200_5r, sc4pgold, sc4_state, sc4pgold, ROT0, "BFM","Pharaoh's Gold (Bellfruit) (Scorpion 4) (set 1)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4pgolda ,sc4pgold, sc4_200_5r, sc4pgold, sc4_state, sc4pgold, ROT0, "BFM","Pharaoh's Gold (Bellfruit) (Scorpion 4) (set 2)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4pgoldb ,sc4pgold, sc4_200_5r, sc4pgold, sc4_state, sc4pgold, ROT0, "BFM","Pharaoh's Gold (Bellfruit) (Scorpion 4) (set 3)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4pgoldc ,sc4pgold, sc4_200_5r, sc4pgold, sc4_state, sc4pgold, ROT0, "BFM","Pharaoh's Gold (Bellfruit) (Scorpion 4) (set 4)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4pgoldd ,sc4pgold, sc4_200_5r, sc4pgold, sc4_state, sc4pgold, ROT0, "BFM","Pharaoh's Gold (Bellfruit) (Scorpion 4) (set 5)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4pgoldf ,sc4pgold, sc4_200_5r, sc4pgold, sc4_state, sc4pgold, ROT0, "BFM","Pharaoh's Gold (Bellfruit) (Scorpion 4) (set 6)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4pgold ,0, sc4_200_5r, sc4pgold, sc4_state, sc4pgold, ROT0, "BFM","Pharaoh's Gold (Bellfruit) (Scorpion 4) (set 1)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4pgolda ,sc4pgold, sc4_200_5r, sc4pgold, sc4_state, sc4pgold, ROT0, "BFM","Pharaoh's Gold (Bellfruit) (Scorpion 4) (set 2)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4pgoldb ,sc4pgold, sc4_200_5r, sc4pgold, sc4_state, sc4pgold, ROT0, "BFM","Pharaoh's Gold (Bellfruit) (Scorpion 4) (set 3)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4pgoldc ,sc4pgold, sc4_200_5r, sc4pgold, sc4_state, sc4pgold, ROT0, "BFM","Pharaoh's Gold (Bellfruit) (Scorpion 4) (set 4)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4pgoldd ,sc4pgold, sc4_200_5r, sc4pgold, sc4_state, sc4pgold, ROT0, "BFM","Pharaoh's Gold (Bellfruit) (Scorpion 4) (set 5)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4pgoldf ,sc4pgold, sc4_200_5r, sc4pgold, sc4_state, sc4pgold, ROT0, "BFM","Pharaoh's Gold (Bellfruit) (Scorpion 4) (set 6)", MACHINE_FLAGS, layout_bfm_sc4 )
@@ -28532,11 +28534,11 @@ INPUT_PORTS_START( sc4ppclb ) // this structure is generated
INPUT_PORTS_END
// PR2236 CLUB PINK PANTHER 411 CLUBPINKPANTHERSND CLUB PINKPANTHER
-GAMEL( 200?, sc4ppclb ,0, sc4, sc4ppclb, sc4_state, sc4ppclb, ROT0, "Qps","Pink Panther Club (411) (Qps) (Scorpion 4) (set 1)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 ) // also in a set marked 'Pink Pannther Think Pink'
-GAMEL( 200?, sc4ppclbb ,sc4ppclb, sc4, sc4ppclb, sc4_state, sc4ppclb, ROT0, "Qps","Pink Panther Club (411) (Qps) (Scorpion 4) (set 2)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4ppclb ,0, sc4, sc4ppclb, sc4_state, sc4ppclb, ROT0, "Qps","Pink Panther Club (411) (Qps) (Scorpion 4) (set 1)", MACHINE_FLAGS, layout_bfm_sc4 ) // also in a set marked 'Pink Pannther Think Pink'
+GAMEL( 200?, sc4ppclbb ,sc4ppclb, sc4, sc4ppclb, sc4_state, sc4ppclb, ROT0, "Qps","Pink Panther Club (411) (Qps) (Scorpion 4) (set 2)", MACHINE_FLAGS, layout_bfm_sc4 )
// PR2236 CLUB PINK PANTHER 412 CLUBPINKPANTHERSND CLUB PINKPANTHER
-GAMEL( 200?, sc4ppclba ,sc4ppclb, sc4, sc4ppclb, sc4_state, sc4ppclb, ROT0, "Qps","Pink Panther Club (412) (Qps) (Scorpion 4) (set 1)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4ppclbc ,sc4ppclb, sc4, sc4ppclb, sc4_state, sc4ppclb, ROT0, "Qps","Pink Panther Club (412) (Qps) (Scorpion 4) (set 2)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4ppclba ,sc4ppclb, sc4, sc4ppclb, sc4_state, sc4ppclb, ROT0, "Qps","Pink Panther Club (412) (Qps) (Scorpion 4) (set 1)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4ppclbc ,sc4ppclb, sc4, sc4ppclb, sc4_state, sc4ppclb, ROT0, "Qps","Pink Panther Club (412) (Qps) (Scorpion 4) (set 2)", MACHINE_FLAGS, layout_bfm_sc4 )
DRIVER_INIT_MEMBER(sc4_state,sc4pipe)
@@ -28592,8 +28594,8 @@ INPUT_PORTS_START( sc4pipe ) // this structure is generated
INPUT_PORTS_END
// PR2110 PIPING HOT PIPE SOUNDS PIPING HOT
-GAMEL( 200?, sc4pipe ,0, sc4_4reel_alt, sc4pipe, sc4_state, sc4pipe, ROT0, "Mazooma","Piping Hot (Mazooma) (Scorpion 4) (set 1)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4pipea ,sc4pipe, sc4_4reel_alt, sc4pipe, sc4_state, sc4pipe, ROT0, "Mazooma","Piping Hot (Mazooma) (Scorpion 4) (set 2)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4pipe ,0, sc4_4reel_alt, sc4pipe, sc4_state, sc4pipe, ROT0, "Mazooma","Piping Hot (Mazooma) (Scorpion 4) (set 1)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4pipea ,sc4pipe, sc4_4reel_alt, sc4pipe, sc4_state, sc4pipe, ROT0, "Mazooma","Piping Hot (Mazooma) (Scorpion 4) (set 2)", MACHINE_FLAGS, layout_bfm_sc4 )
DRIVER_INIT_MEMBER(sc4_state,sc4plumb)
{
@@ -28647,14 +28649,14 @@ INPUT_PORTS_START( sc4plumb ) // this structure is generated
INPUT_PORTS_END
// QPS142 CLUB PLUMB CRAZY 413 CLUBPLUMBCRAZYSND CLUB PLUMB CRAZY
-GAMEL( 200?, sc4plumb ,0, sc4_5reel, sc4plumb, sc4_state, sc4plumb, ROT0, "Qps","Plumb Crazy Club (413) (Qps) (Scorpion 4) (set 1)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4plumba ,sc4plumb, sc4_5reel, sc4plumb, sc4_state, sc4plumb, ROT0, "Qps","Plumb Crazy Club (413) (Qps) (Scorpion 4) (set 2)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4plumb ,0, sc4_5reel, sc4plumb, sc4_state, sc4plumb, ROT0, "Qps","Plumb Crazy Club (413) (Qps) (Scorpion 4) (set 1)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4plumba ,sc4plumb, sc4_5reel, sc4plumb, sc4_state, sc4plumb, ROT0, "Qps","Plumb Crazy Club (413) (Qps) (Scorpion 4) (set 2)", MACHINE_FLAGS, layout_bfm_sc4 )
// QPS142 CLUB PLUMB CRAZY 411 CLUBPLUMBCRAZYSND CLUB PLUMB CRAZY
-GAMEL( 200?, sc4plumbb ,sc4plumb, sc4_5reel, sc4plumb, sc4_state, sc4plumb, ROT0, "Qps","Plumb Crazy Club (411) (Qps) (Scorpion 4) (set 1)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4plumbc ,sc4plumb, sc4_5reel, sc4plumb, sc4_state, sc4plumb, ROT0, "Qps","Plumb Crazy Club (411) (Qps) (Scorpion 4) (set 2)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4plumbb ,sc4plumb, sc4_5reel, sc4plumb, sc4_state, sc4plumb, ROT0, "Qps","Plumb Crazy Club (411) (Qps) (Scorpion 4) (set 1)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4plumbc ,sc4plumb, sc4_5reel, sc4plumb, sc4_state, sc4plumb, ROT0, "Qps","Plumb Crazy Club (411) (Qps) (Scorpion 4) (set 2)", MACHINE_FLAGS, layout_bfm_sc4 )
// QPS142 CLUB PLUMB CRAZY 412 CLUBPLUMBCRAZYSND CLUB PLUMB CRAZY
-GAMEL( 200?, sc4plumbd ,sc4plumb, sc4_5reel, sc4plumb, sc4_state, sc4plumb, ROT0, "Qps","Plumb Crazy Club (412) (Qps) (Scorpion 4) (set 1)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4plumbe ,sc4plumb, sc4_5reel, sc4plumb, sc4_state, sc4plumb, ROT0, "Qps","Plumb Crazy Club (412) (Qps) (Scorpion 4) (set 2)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4plumbd ,sc4plumb, sc4_5reel, sc4plumb, sc4_state, sc4plumb, ROT0, "Qps","Plumb Crazy Club (412) (Qps) (Scorpion 4) (set 1)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4plumbe ,sc4plumb, sc4_5reel, sc4plumb, sc4_state, sc4plumb, ROT0, "Qps","Plumb Crazy Club (412) (Qps) (Scorpion 4) (set 2)", MACHINE_FLAGS, layout_bfm_sc4 )
DRIVER_INIT_MEMBER(sc4_state,sc4polic)
@@ -28704,11 +28706,11 @@ INPUT_PORTS_START( sc4polic ) // this structure is generated
INPUT_PORTS_END
// PR2514 POLICE SQUID V1.0 POLICESQUIDSND POLICE SQUID
-GAMEL( 200?, sc4polic ,0, sc4_5reel, sc4polic, sc4_state, sc4polic, ROT0, "Qps","Police Squid (V1.0) (Qps) (Scorpion 4) (set 1)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4policb ,sc4polic, sc4_5reel, sc4polic, sc4_state, sc4polic, ROT0, "Qps","Police Squid (V1.0) (Qps) (Scorpion 4) (set 2)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4polic ,0, sc4_5reel, sc4polic, sc4_state, sc4polic, ROT0, "Qps","Police Squid (V1.0) (Qps) (Scorpion 4) (set 1)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4policb ,sc4polic, sc4_5reel, sc4polic, sc4_state, sc4polic, ROT0, "Qps","Police Squid (V1.0) (Qps) (Scorpion 4) (set 2)", MACHINE_FLAGS, layout_bfm_sc4 )
// PR2514 POLICE SQUID V2.0 POLICESQUIDSND POLICE SQUID
-GAMEL( 200?, sc4polica ,sc4polic, sc4_5reel, sc4polic, sc4_state, sc4polic, ROT0, "Qps","Police Squid (V2.0) (Qps) (Scorpion 4) (set 1)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4policc ,sc4polic, sc4_5reel, sc4polic, sc4_state, sc4polic, ROT0, "Qps","Police Squid (V2.0) (Qps) (Scorpion 4) (set 2)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4polica ,sc4polic, sc4_5reel, sc4polic, sc4_state, sc4polic, ROT0, "Qps","Police Squid (V2.0) (Qps) (Scorpion 4) (set 1)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4policc ,sc4polic, sc4_5reel, sc4polic, sc4_state, sc4polic, ROT0, "Qps","Police Squid (V2.0) (Qps) (Scorpion 4) (set 2)", MACHINE_FLAGS, layout_bfm_sc4 )
@@ -28761,8 +28763,8 @@ INPUT_PORTS_START( sc4potsh ) // this structure is generated
INPUT_PORTS_END
// QPS143 POT SHOT V1.0 POTSHOTSND POT SHOT
-GAMEL( 200?, sc4potsh ,0, sc4_4reel, sc4potsh, sc4_state, sc4potsh, ROT0, "Qps","Pot Shot (Qps) (Scorpion 4) (set 1)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4potsha ,sc4potsh, sc4_4reel, sc4potsh, sc4_state, sc4potsh, ROT0, "Qps","Pot Shot (Qps) (Scorpion 4) (set 2)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4potsh ,0, sc4_4reel, sc4potsh, sc4_state, sc4potsh, ROT0, "Qps","Pot Shot (Qps) (Scorpion 4) (set 1)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4potsha ,sc4potsh, sc4_4reel, sc4potsh, sc4_state, sc4potsh, ROT0, "Qps","Pot Shot (Qps) (Scorpion 4) (set 2)", MACHINE_FLAGS, layout_bfm_sc4 )
DRIVER_INIT_MEMBER(sc4_state,sc4pogbl)
@@ -28826,12 +28828,12 @@ INPUT_PORTS_START( sc4pogbl ) // this structure is generated
INPUT_PORTS_END
// PR3083 CLUB POTS OF GOLD POTS OF GOLD CLUB PR3082 C POTS OF GOLD SOUNDS11 POTS OF GOLD
-GAMEL( 200?, sc4pogbl ,0, sc4_5reel, sc4pogbl, sc4_state, sc4pogbl, ROT0, "BFM","Pots Of Gold Club (Bellfruit) (Scorpion 4) (set 1)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4pogbla ,sc4pogbl, sc4_5reel, sc4pogbl, sc4_state, sc4pogbl, ROT0, "BFM","Pots Of Gold Club (Bellfruit) (Scorpion 4) (set 2)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4pogblb ,sc4pogbl, sc4_5reel, sc4pogbl, sc4_state, sc4pogbl, ROT0, "BFM","Pots Of Gold Club (Bellfruit) (Scorpion 4) (set 3)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4pogblc ,sc4pogbl, sc4_5reel, sc4pogbl, sc4_state, sc4pogbl, ROT0, "BFM","Pots Of Gold Club (Bellfruit) (Scorpion 4) (set 4)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4pogbld ,sc4pogbl, sc4_5reel, sc4pogbl, sc4_state, sc4pogbl, ROT0, "BFM","Pots Of Gold Club (Bellfruit) (Scorpion 4) (set 5)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4pogble ,sc4pogbl, sc4_5reel, sc4pogbl, sc4_state, sc4pogbl, ROT0, "BFM","Pots Of Gold Club (Bellfruit) (Scorpion 4) (set 6)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4pogbl ,0, sc4_5reel, sc4pogbl, sc4_state, sc4pogbl, ROT0, "BFM","Pots Of Gold Club (Bellfruit) (Scorpion 4) (set 1)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4pogbla ,sc4pogbl, sc4_5reel, sc4pogbl, sc4_state, sc4pogbl, ROT0, "BFM","Pots Of Gold Club (Bellfruit) (Scorpion 4) (set 2)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4pogblb ,sc4pogbl, sc4_5reel, sc4pogbl, sc4_state, sc4pogbl, ROT0, "BFM","Pots Of Gold Club (Bellfruit) (Scorpion 4) (set 3)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4pogblc ,sc4pogbl, sc4_5reel, sc4pogbl, sc4_state, sc4pogbl, ROT0, "BFM","Pots Of Gold Club (Bellfruit) (Scorpion 4) (set 4)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4pogbld ,sc4pogbl, sc4_5reel, sc4pogbl, sc4_state, sc4pogbl, ROT0, "BFM","Pots Of Gold Club (Bellfruit) (Scorpion 4) (set 5)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4pogble ,sc4pogbl, sc4_5reel, sc4pogbl, sc4_state, sc4pogbl, ROT0, "BFM","Pots Of Gold Club (Bellfruit) (Scorpion 4) (set 6)", MACHINE_FLAGS, layout_bfm_sc4 )
DRIVER_INIT_MEMBER(sc4_state,sc4pwrsg)
{
@@ -28883,10 +28885,10 @@ INPUT_PORTS_START( sc4pwrsg ) // this structure is generated
INPUT_PORTS_END
// PR2053 POWERSURGE SURGESND POWERSURGE
-GAMEL( 200?, sc4pwrsg ,0, sc4_200_5r, sc4pwrsg, sc4_state, sc4pwrsg, ROT0, "Qps","Power Surge (Qps) (Scorpion 4) (set 1)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4pwrsga ,sc4pwrsg, sc4_200_5r, sc4pwrsg, sc4_state, sc4pwrsg, ROT0, "Qps","Power Surge (Qps) (Scorpion 4) (set 2)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4pwrsgb ,sc4pwrsg, sc4_200_5r, sc4pwrsg, sc4_state, sc4pwrsg, ROT0, "Qps","Power Surge (Qps) (Scorpion 4) (set 3)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4pwrsgc ,sc4pwrsg, sc4_200_5r, sc4pwrsg, sc4_state, sc4pwrsg, ROT0, "Qps","Power Surge (Qps) (Scorpion 4) (set 4)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4pwrsg ,0, sc4_200_5r, sc4pwrsg, sc4_state, sc4pwrsg, ROT0, "Qps","Power Surge (Qps) (Scorpion 4) (set 1)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4pwrsga ,sc4pwrsg, sc4_200_5r, sc4pwrsg, sc4_state, sc4pwrsg, ROT0, "Qps","Power Surge (Qps) (Scorpion 4) (set 2)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4pwrsgb ,sc4pwrsg, sc4_200_5r, sc4pwrsg, sc4_state, sc4pwrsg, ROT0, "Qps","Power Surge (Qps) (Scorpion 4) (set 3)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4pwrsgc ,sc4pwrsg, sc4_200_5r, sc4pwrsg, sc4_state, sc4pwrsg, ROT0, "Qps","Power Surge (Qps) (Scorpion 4) (set 4)", MACHINE_FLAGS, layout_bfm_sc4 )
DRIVER_INIT_MEMBER(sc4_state,sc4pir)
@@ -28957,14 +28959,14 @@ INPUT_PORTS_START( sc4pir ) // this structure is generated
INPUT_PORTS_END
// PR1303 THE PRIZE IS RIGHT PR1303 T PRIZE I R SOUNDS11
-GAMEL( 200?, sc4pir ,0, sc4_200_5r, sc4pir, sc4_state, sc4pir, ROT0, "BFM","The Prize Is Right (Bellfruit) (Scorpion 4) (set 1)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4pira ,sc4pir, sc4_200_5r, sc4pir, sc4_state, sc4pir, ROT0, "BFM","The Prize Is Right (Bellfruit) (Scorpion 4) (set 2)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4pirb ,sc4pir, sc4_200_5r, sc4pir, sc4_state, sc4pir, ROT0, "BFM","The Prize Is Right (Bellfruit) (Scorpion 4) (set 3)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4pirc ,sc4pir, sc4_200_5r, sc4pir, sc4_state, sc4pir, ROT0, "BFM","The Prize Is Right (Bellfruit) (Scorpion 4) (set 4)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4pird ,sc4pir, sc4_200_5r, sc4pir, sc4_state, sc4pir, ROT0, "BFM","The Prize Is Right (Bellfruit) (Scorpion 4) (set 5)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4pire ,sc4pir, sc4_200_5r, sc4pir, sc4_state, sc4pir, ROT0, "BFM","The Prize Is Right (Bellfruit) (Scorpion 4) (set 6)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4pirf ,sc4pir, sc4_200_5r, sc4pir, sc4_state, sc4pir, ROT0, "BFM","The Prize Is Right (Bellfruit) (Scorpion 4) (set 7)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4pirg ,sc4pir, sc4_200_5r, sc4pir, sc4_state, sc4pir, ROT0, "BFM","The Prize Is Right (Bellfruit) (Scorpion 4) (set 8)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4pir ,0, sc4_200_5r, sc4pir, sc4_state, sc4pir, ROT0, "BFM","The Prize Is Right (Bellfruit) (Scorpion 4) (set 1)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4pira ,sc4pir, sc4_200_5r, sc4pir, sc4_state, sc4pir, ROT0, "BFM","The Prize Is Right (Bellfruit) (Scorpion 4) (set 2)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4pirb ,sc4pir, sc4_200_5r, sc4pir, sc4_state, sc4pir, ROT0, "BFM","The Prize Is Right (Bellfruit) (Scorpion 4) (set 3)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4pirc ,sc4pir, sc4_200_5r, sc4pir, sc4_state, sc4pir, ROT0, "BFM","The Prize Is Right (Bellfruit) (Scorpion 4) (set 4)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4pird ,sc4pir, sc4_200_5r, sc4pir, sc4_state, sc4pir, ROT0, "BFM","The Prize Is Right (Bellfruit) (Scorpion 4) (set 5)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4pire ,sc4pir, sc4_200_5r, sc4pir, sc4_state, sc4pir, ROT0, "BFM","The Prize Is Right (Bellfruit) (Scorpion 4) (set 6)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4pirf ,sc4pir, sc4_200_5r, sc4pir, sc4_state, sc4pir, ROT0, "BFM","The Prize Is Right (Bellfruit) (Scorpion 4) (set 7)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4pirg ,sc4pir, sc4_200_5r, sc4pir, sc4_state, sc4pir, ROT0, "BFM","The Prize Is Right (Bellfruit) (Scorpion 4) (set 8)", MACHINE_FLAGS, layout_bfm_sc4 )
DRIVER_INIT_MEMBER(sc4_state,sc4qmodo)
@@ -29011,11 +29013,11 @@ INPUT_PORTS_START( sc4qmodo ) // this structure is generated
INPUT_PORTS_END
// QUAZZI MO' DOUGH..........QUAZZSND....... (no standard header)
-GAMEL( 200?, sc4qmodo , 0, sc4_4reel, sc4qmodo, sc4_state, sc4qmodo, ROT0, "Qps","Quazzi Mo' Dough (Qps) (Scorpion 4) (set 1)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4qmodoa ,sc4qmodo, sc4_4reel, sc4qmodo, sc4_state, sc4qmodo, ROT0, "Qps","Quazzi Mo' Dough (Qps) (Scorpion 4) (set 2)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4qmodob ,sc4qmodo, sc4_4reel, sc4qmodo, sc4_state, sc4qmodo, ROT0, "Qps","Quazzi Mo' Dough (Qps) (Scorpion 4) (set 3)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4qmodoc ,sc4qmodo, sc4_4reel, sc4qmodo, sc4_state, sc4qmodo, ROT0, "Qps","Quazzi Mo' Dough (Qps) (Scorpion 4) (set 4)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4qmodod ,sc4qmodo, sc4_4reel, sc4qmodo, sc4_state, sc4qmodo, ROT0, "Qps","Quazzi Mo' Dough (Qps) (Scorpion 4) (set 5)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4qmodo , 0, sc4_4reel, sc4qmodo, sc4_state, sc4qmodo, ROT0, "Qps","Quazzi Mo' Dough (Qps) (Scorpion 4) (set 1)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4qmodoa ,sc4qmodo, sc4_4reel, sc4qmodo, sc4_state, sc4qmodo, ROT0, "Qps","Quazzi Mo' Dough (Qps) (Scorpion 4) (set 2)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4qmodob ,sc4qmodo, sc4_4reel, sc4qmodo, sc4_state, sc4qmodo, ROT0, "Qps","Quazzi Mo' Dough (Qps) (Scorpion 4) (set 3)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4qmodoc ,sc4qmodo, sc4_4reel, sc4qmodo, sc4_state, sc4qmodo, ROT0, "Qps","Quazzi Mo' Dough (Qps) (Scorpion 4) (set 4)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4qmodod ,sc4qmodo, sc4_4reel, sc4qmodo, sc4_state, sc4qmodo, ROT0, "Qps","Quazzi Mo' Dough (Qps) (Scorpion 4) (set 5)", MACHINE_FLAGS, layout_bfm_sc4 )
@@ -29069,10 +29071,10 @@ INPUT_PORTS_START( sc4quidr ) // this structure is generated
// 0x0010 - "hopdmp" // standard input (expected here)
INPUT_PORTS_END
-GAMEL( 200?, sc4quidr ,0, sc4_4reel, sc4quidr, sc4_state, sc4quidr, ROT0, "Qps","Quid Rock (Qps) (Scorpion 4) (set 1)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4quidra ,sc4quidr, sc4_4reel, sc4quidr, sc4_state, sc4quidr, ROT0, "Qps","Quid Rock (Qps) (Scorpion 4) (set 2)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4quidrb ,sc4quidr, sc4_4reel, sc4quidr, sc4_state, sc4quidr, ROT0, "Qps","Quid Rock (Qps) (Scorpion 4) (set 3)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4quidrc ,sc4quidr, sc4_4reel, sc4quidr, sc4_state, sc4quidr, ROT0, "Qps","Quid Rock (Qps) (Scorpion 4) (set 4)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4quidr ,0, sc4_4reel, sc4quidr, sc4_state, sc4quidr, ROT0, "Qps","Quid Rock (Qps) (Scorpion 4) (set 1)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4quidra ,sc4quidr, sc4_4reel, sc4quidr, sc4_state, sc4quidr, ROT0, "Qps","Quid Rock (Qps) (Scorpion 4) (set 2)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4quidrb ,sc4quidr, sc4_4reel, sc4quidr, sc4_state, sc4quidr, ROT0, "Qps","Quid Rock (Qps) (Scorpion 4) (set 3)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4quidrc ,sc4quidr, sc4_4reel, sc4quidr, sc4_state, sc4quidr, ROT0, "Qps","Quid Rock (Qps) (Scorpion 4) (set 4)", MACHINE_FLAGS, layout_bfm_sc4 )
DRIVER_INIT_MEMBER(sc4_state,sc4rdrag)
@@ -29127,11 +29129,11 @@ INPUT_PORTS_START( sc4rdrag ) // this structure is generated
INPUT_PORTS_END
// PR2542 RED DRAGON 011 REDDRAGONSND RED DRAGON
-GAMEL( 200?, sc4rdrag ,0, sc4_5reel, sc4rdrag, sc4_state, sc4rdrag, ROT0, "Qps","Red Dragon (011) (Qps) (Scorpion 4) (set 1)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4rdraga ,sc4rdrag, sc4_5reel, sc4rdrag, sc4_state, sc4rdrag, ROT0, "Qps","Red Dragon (011) (Qps) (Scorpion 4) (set 2)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4rdrag ,0, sc4_5reel, sc4rdrag, sc4_state, sc4rdrag, ROT0, "Qps","Red Dragon (011) (Qps) (Scorpion 4) (set 1)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4rdraga ,sc4rdrag, sc4_5reel, sc4rdrag, sc4_state, sc4rdrag, ROT0, "Qps","Red Dragon (011) (Qps) (Scorpion 4) (set 2)", MACHINE_FLAGS, layout_bfm_sc4 )
// PR2542 RED DRAGON 021 REDDRAGONSND RED DRAGON
-GAMEL( 200?, sc4rdragc ,sc4rdrag, sc4_5reel, sc4rdrag, sc4_state, sc4rdrag, ROT0, "Qps","Red Dragon (021) (Qps) (Scorpion 4) (set 1)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4rdragf ,sc4rdrag, sc4_5reel, sc4rdrag, sc4_state, sc4rdrag, ROT0, "Qps","Red Dragon (021) (Qps) (Scorpion 4) (set 2)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4rdragc ,sc4rdrag, sc4_5reel, sc4rdrag, sc4_state, sc4rdrag, ROT0, "Qps","Red Dragon (021) (Qps) (Scorpion 4) (set 1)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4rdragf ,sc4rdrag, sc4_5reel, sc4rdrag, sc4_state, sc4rdrag, ROT0, "Qps","Red Dragon (021) (Qps) (Scorpion 4) (set 2)", MACHINE_FLAGS, layout_bfm_sc4 )
DRIVER_INIT_MEMBER(sc4_state,sc4rdrcl)
@@ -29187,10 +29189,10 @@ INPUT_PORTS_START( sc4rdrcl ) // this structure is generated
INPUT_PORTS_END
// QPS160 CLUB RED DRAGON 411 CLUBREDDRAGONSND CLUB RED DRAGON
-GAMEL( 200?, sc4rdrcl ,0, sc4_5reel, sc4rdrcl, sc4_state, sc4rdrcl, ROT0, "Qps","Red Dragon Club (411) (Qps) (Scorpion 4) (set 1)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4rdrclb ,sc4rdrcl, sc4_5reel, sc4rdrcl, sc4_state, sc4rdrcl, ROT0, "Qps","Red Dragon Club (411) (Qps) (Scorpion 4) (set 2)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4rdrcl ,0, sc4_5reel, sc4rdrcl, sc4_state, sc4rdrcl, ROT0, "Qps","Red Dragon Club (411) (Qps) (Scorpion 4) (set 1)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4rdrclb ,sc4rdrcl, sc4_5reel, sc4rdrcl, sc4_state, sc4rdrcl, ROT0, "Qps","Red Dragon Club (411) (Qps) (Scorpion 4) (set 2)", MACHINE_FLAGS, layout_bfm_sc4 )
// QPS160 CLUB RED DRAGON 412 CLUBREDDRAGONSND CLUB RED DRAGON
-GAMEL( 200?, sc4rdrcla ,sc4rdrcl, sc4_5reel, sc4rdrcl, sc4_state, sc4rdrcl, ROT0, "Qps","Red Dragon Club (412) (Qps) (Scorpion 4)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4rdrcla ,sc4rdrcl, sc4_5reel, sc4rdrcl, sc4_state, sc4rdrcl, ROT0, "Qps","Red Dragon Club (412) (Qps) (Scorpion 4)", MACHINE_FLAGS, layout_bfm_sc4 )
DRIVER_INIT_MEMBER(sc4_state,sc4relcz)
@@ -29261,10 +29263,10 @@ INPUT_PORTS_START( sc4relcz ) // this structure is generated
INPUT_PORTS_END
// PR1015 REELY CRAZY PR1015 REELY CRAZY SOUNDS11
-GAMEL( 200?, sc4relcz ,0, sc4_4reel, sc4relcz, sc4_state, sc4relcz, ROT0, "BFM","Reely Crazy (Bellfruit) (Scorpion 4) (set 1)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4relcza ,sc4relcz, sc4_4reel, sc4relcz, sc4_state, sc4relcz, ROT0, "BFM","Reely Crazy (Bellfruit) (Scorpion 4) (set 2)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4relczb ,sc4relcz, sc4_4reel, sc4relcz, sc4_state, sc4relcz, ROT0, "BFM","Reely Crazy (Bellfruit) (Scorpion 4) (set 3)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4relczc ,sc4relcz, sc4_4reel, sc4relcz, sc4_state, sc4relcz, ROT0, "BFM","Reely Crazy (Bellfruit) (Scorpion 4) (set 4)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4relcz ,0, sc4_4reel, sc4relcz, sc4_state, sc4relcz, ROT0, "BFM","Reely Crazy (Bellfruit) (Scorpion 4) (set 1)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4relcza ,sc4relcz, sc4_4reel, sc4relcz, sc4_state, sc4relcz, ROT0, "BFM","Reely Crazy (Bellfruit) (Scorpion 4) (set 2)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4relczb ,sc4relcz, sc4_4reel, sc4relcz, sc4_state, sc4relcz, ROT0, "BFM","Reely Crazy (Bellfruit) (Scorpion 4) (set 3)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4relczc ,sc4relcz, sc4_4reel, sc4relcz, sc4_state, sc4relcz, ROT0, "BFM","Reely Crazy (Bellfruit) (Scorpion 4) (set 4)", MACHINE_FLAGS, layout_bfm_sc4 )
DRIVER_INIT_MEMBER(sc4_state,sc4rotc)
@@ -29319,11 +29321,11 @@ INPUT_PORTS_START( sc4rotc ) // this structure is generated
INPUT_PORTS_END
// PR2132 RETURN OF THE COUNT ROTC SOUNDS THE COUNT
-GAMEL( 200?, sc4rotc ,0, sc4_4reel_alt, sc4rotc, sc4_state, sc4rotc, ROT0, "Mazooma","Return Of The Count (Mazooma) (Scorpion 4) (set 1)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4rotca ,sc4rotc, sc4_4reel_alt, sc4rotc, sc4_state, sc4rotc, ROT0, "Mazooma","Return Of The Count (Mazooma) (Scorpion 4) (set 2)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4rotcb ,sc4rotc, sc4_4reel_alt, sc4rotc, sc4_state, sc4rotc, ROT0, "Mazooma","Return Of The Count (Mazooma) (Scorpion 4) (set 3)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4rotcc ,sc4rotc, sc4_4reel_alt, sc4rotc, sc4_state, sc4rotc, ROT0, "Mazooma","Return Of The Count (Mazooma) (Scorpion 4) (set 4)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4rotcd ,sc4rotc, sc4_4reel_alt, sc4rotc, sc4_state, sc4rotc, ROT0, "Mazooma","Return Of The Count (Mazooma) (Scorpion 4) (set 5)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4rotc ,0, sc4_4reel_alt, sc4rotc, sc4_state, sc4rotc, ROT0, "Mazooma","Return Of The Count (Mazooma) (Scorpion 4) (set 1)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4rotca ,sc4rotc, sc4_4reel_alt, sc4rotc, sc4_state, sc4rotc, ROT0, "Mazooma","Return Of The Count (Mazooma) (Scorpion 4) (set 2)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4rotcb ,sc4rotc, sc4_4reel_alt, sc4rotc, sc4_state, sc4rotc, ROT0, "Mazooma","Return Of The Count (Mazooma) (Scorpion 4) (set 3)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4rotcc ,sc4rotc, sc4_4reel_alt, sc4rotc, sc4_state, sc4rotc, ROT0, "Mazooma","Return Of The Count (Mazooma) (Scorpion 4) (set 4)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4rotcd ,sc4rotc, sc4_4reel_alt, sc4rotc, sc4_state, sc4rotc, ROT0, "Mazooma","Return Of The Count (Mazooma) (Scorpion 4) (set 5)", MACHINE_FLAGS, layout_bfm_sc4 )
DRIVER_INIT_MEMBER(sc4_state,sc4rttt)
@@ -29380,12 +29382,12 @@ INPUT_PORTS_START( sc4rttt ) // this structure is generated
INPUT_PORTS_END
// PR2089 RISE TO THE TOP RISE SOUNDS RISE TO THE TOP
-GAMEL( 200?, sc4rttt ,0, sc4_4reel_alt, sc4rttt, sc4_state, sc4rttt, ROT0, "Mazooma","Rise To The Top (Mazooma) (Scorpion 4) (set 1)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4rttta ,sc4rttt, sc4_4reel_alt, sc4rttt, sc4_state, sc4rttt, ROT0, "Mazooma","Rise To The Top (Mazooma) (Scorpion 4) (set 2)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4rtttb ,sc4rttt, sc4_4reel_alt, sc4rttt, sc4_state, sc4rttt_mbus, ROT0, "Mazooma","Rise To The Top (Mazooma) (Scorpion 4) (set 3)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4rtttc ,sc4rttt, sc4_4reel_alt, sc4rttt, sc4_state, sc4rttt_mbus, ROT0, "Mazooma","Rise To The Top (Mazooma) (Scorpion 4) (set 4)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4rtttd ,sc4rttt, sc4_4reel_alt, sc4rttt, sc4_state, sc4rttt_mbus, ROT0, "Mazooma","Rise To The Top (Mazooma) (Scorpion 4) (set 5)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4rttte ,sc4rttt, sc4_4reel_alt, sc4rttt, sc4_state, sc4rttt_mbus, ROT0, "Mazooma","Rise To The Top (Mazooma) (Scorpion 4) (set 6)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4rttt ,0, sc4_4reel_alt, sc4rttt, sc4_state, sc4rttt, ROT0, "Mazooma","Rise To The Top (Mazooma) (Scorpion 4) (set 1)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4rttta ,sc4rttt, sc4_4reel_alt, sc4rttt, sc4_state, sc4rttt, ROT0, "Mazooma","Rise To The Top (Mazooma) (Scorpion 4) (set 2)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4rtttb ,sc4rttt, sc4_4reel_alt, sc4rttt, sc4_state, sc4rttt_mbus, ROT0, "Mazooma","Rise To The Top (Mazooma) (Scorpion 4) (set 3)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4rtttc ,sc4rttt, sc4_4reel_alt, sc4rttt, sc4_state, sc4rttt_mbus, ROT0, "Mazooma","Rise To The Top (Mazooma) (Scorpion 4) (set 4)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4rtttd ,sc4rttt, sc4_4reel_alt, sc4rttt, sc4_state, sc4rttt_mbus, ROT0, "Mazooma","Rise To The Top (Mazooma) (Scorpion 4) (set 5)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4rttte ,sc4rttt, sc4_4reel_alt, sc4rttt, sc4_state, sc4rttt_mbus, ROT0, "Mazooma","Rise To The Top (Mazooma) (Scorpion 4) (set 6)", MACHINE_FLAGS, layout_bfm_sc4 )
DRIVER_INIT_MEMBER(sc4_state,sc4roksc)
{
@@ -29439,11 +29441,11 @@ INPUT_PORTS_START( sc4roksc ) // this structure is generated
INPUT_PORTS_END
// PR2527 ROCKET SCIENCE V1.1 ROCKETSCIENCESND ROCKET SCIENCE
-GAMEL( 200?, sc4roksc ,0, sc4_4reel_alt, sc4roksc, sc4_state, sc4roksc, ROT0, "Qps","Rocket Science (V1.1) (Qps) (Scorpion 4) (set 1)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4rokscb ,sc4roksc, sc4_4reel_alt, sc4roksc, sc4_state, sc4roksc, ROT0, "Qps","Rocket Science (V1.1) (Qps) (Scorpion 4) (set 2)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4roksc ,0, sc4_4reel_alt, sc4roksc, sc4_state, sc4roksc, ROT0, "Qps","Rocket Science (V1.1) (Qps) (Scorpion 4) (set 1)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4rokscb ,sc4roksc, sc4_4reel_alt, sc4roksc, sc4_state, sc4roksc, ROT0, "Qps","Rocket Science (V1.1) (Qps) (Scorpion 4) (set 2)", MACHINE_FLAGS, layout_bfm_sc4 )
// PR2527 ROCKET SCIENCE 011 ROCKETSCIENCESND ROCKET SCIENCE
-GAMEL( 200?, sc4roksca ,sc4roksc, sc4_4reel_alt, sc4roksc, sc4_state, sc4roksc, ROT0, "Qps","Rocket Science (011) (Qps) (Scorpion 4) (set 1)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4rokscc ,sc4roksc, sc4_4reel_alt, sc4roksc, sc4_state, sc4roksc, ROT0, "Qps","Rocket Science (011) (Qps) (Scorpion 4) (set 2)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4roksca ,sc4roksc, sc4_4reel_alt, sc4roksc, sc4_state, sc4roksc, ROT0, "Qps","Rocket Science (011) (Qps) (Scorpion 4) (set 1)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4rokscc ,sc4roksc, sc4_4reel_alt, sc4roksc, sc4_state, sc4roksc, ROT0, "Qps","Rocket Science (011) (Qps) (Scorpion 4) (set 2)", MACHINE_FLAGS, layout_bfm_sc4 )
DRIVER_INIT_MEMBER(sc4_state,sc4blast)
{
@@ -29498,14 +29500,14 @@ INPUT_PORTS_END
// only starts 2nd time (requires valid ram?)
// PR2539 BLAST OFF011 ROCKETSCIENCESND BLAST OFF
-GAMEL( 200?, sc4blast ,0, sc4_4reel_alt, sc4blast, sc4_state, sc4blast, ROT0, "Qps","Blast Off (011) (Qps) (Scorpion 4) (set 1)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4blastb ,sc4blast, sc4_4reel_alt, sc4blast, sc4_state, sc4blast, ROT0, "Qps","Blast Off (011) (Qps) (Scorpion 4) (set 2)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4blast ,0, sc4_4reel_alt, sc4blast, sc4_state, sc4blast, ROT0, "Qps","Blast Off (011) (Qps) (Scorpion 4) (set 1)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4blastb ,sc4blast, sc4_4reel_alt, sc4blast, sc4_state, sc4blast, ROT0, "Qps","Blast Off (011) (Qps) (Scorpion 4) (set 2)", MACHINE_FLAGS, layout_bfm_sc4 )
// PR2539 BLAST OFF041 ROCKETSCIENCESND BLAST OFF
-GAMEL( 200?, sc4blasta ,sc4blast, sc4_4reel_alt, sc4blast, sc4_state, sc4blast, ROT0, "Qps","Blast Off (041) (Qps) (Scorpion 4) (set 1)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4blastc ,sc4blast, sc4_4reel_alt, sc4blast, sc4_state, sc4blast, ROT0, "Qps","Blast Off (041) (Qps) (Scorpion 4) (set 2)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4blasta ,sc4blast, sc4_4reel_alt, sc4blast, sc4_state, sc4blast, ROT0, "Qps","Blast Off (041) (Qps) (Scorpion 4) (set 1)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4blastc ,sc4blast, sc4_4reel_alt, sc4blast, sc4_state, sc4blast, ROT0, "Qps","Blast Off (041) (Qps) (Scorpion 4) (set 2)", MACHINE_FLAGS, layout_bfm_sc4 )
// PR2539 BLAST OFF 042 ROCKETSCIENCESND BLAST OFF
-GAMEL( 200?, sc4blastd ,sc4blast, sc4_4reel_alt, sc4blast, sc4_state, sc4blast, ROT0, "Qps","Blast Off (042) (Qps) (Scorpion 4) (set 1)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4blaste ,sc4blast, sc4_4reel_alt, sc4blast, sc4_state, sc4blast, ROT0, "Qps","Blast Off (042) (Qps) (Scorpion 4) (set 2)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4blastd ,sc4blast, sc4_4reel_alt, sc4blast, sc4_state, sc4blast, ROT0, "Qps","Blast Off (042) (Qps) (Scorpion 4) (set 1)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4blaste ,sc4blast, sc4_4reel_alt, sc4blast, sc4_state, sc4blast, ROT0, "Qps","Blast Off (042) (Qps) (Scorpion 4) (set 2)", MACHINE_FLAGS, layout_bfm_sc4 )
@@ -29562,17 +29564,17 @@ INPUT_PORTS_END
// PR2060 ROGAN DOSH ROGANSND ROGAN DOSH
-GAMEL( 200?, sc4rogds ,0, sc4_200_4ra, sc4rogds, sc4_state, sc4rogds, ROT0, "Qps","Rogan Dosh (Qps) (Scorpion 4) (set 1)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4rogdsa ,sc4rogds, sc4_200_4ra, sc4rogds, sc4_state, sc4rogds, ROT0, "Qps","Rogan Dosh (Qps) (Scorpion 4) (set 2)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4rogdsb ,sc4rogds, sc4_200_4ra, sc4rogds, sc4_state, sc4rogds, ROT0, "Qps","Rogan Dosh (Qps) (Scorpion 4) (set 3)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4rogdsc ,sc4rogds, sc4_200_4ra, sc4rogds, sc4_state, sc4rogds, ROT0, "Qps","Rogan Dosh (Qps) (Scorpion 4) (set 4)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4rogds ,0, sc4_200_4ra, sc4rogds, sc4_state, sc4rogds, ROT0, "Qps","Rogan Dosh (Qps) (Scorpion 4) (set 1)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4rogdsa ,sc4rogds, sc4_200_4ra, sc4rogds, sc4_state, sc4rogds, ROT0, "Qps","Rogan Dosh (Qps) (Scorpion 4) (set 2)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4rogdsb ,sc4rogds, sc4_200_4ra, sc4rogds, sc4_state, sc4rogds, ROT0, "Qps","Rogan Dosh (Qps) (Scorpion 4) (set 3)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4rogdsc ,sc4rogds, sc4_200_4ra, sc4rogds, sc4_state, sc4rogds, ROT0, "Qps","Rogan Dosh (Qps) (Scorpion 4) (set 4)", MACHINE_FLAGS, layout_bfm_sc4 )
// PR2060 ROGAN DOSH V1.6 ROGANSND ROGAN DOSH
-GAMEL( 200?, sc4rogdse ,sc4rogds, sc4_200_4ra, sc4rogds, sc4_state, sc4rogds, ROT0, "Qps","Rogan Dosh (v1.6) (Qps) (Scorpion 4)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4rogdse ,sc4rogds, sc4_200_4ra, sc4rogds, sc4_state, sc4rogds, ROT0, "Qps","Rogan Dosh (v1.6) (Qps) (Scorpion 4)", MACHINE_FLAGS, layout_bfm_sc4 )
// PR2060 ROGAN DOSH V2.0 ROGANSND ROGAN DOSH
-GAMEL( 200?, sc4rogdsd ,sc4rogds, sc4_200_4ra, sc4rogds, sc4_state, sc4rogds, ROT0, "Qps","Rogan Dosh (v2.0) (Qps) (Scorpion 4) (set 1)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4rogdsf ,sc4rogds, sc4_200_4ra, sc4rogds, sc4_state, sc4rogds, ROT0, "Qps","Rogan Dosh (v2.0) (Qps) (Scorpion 4) (set 2)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4rogdsd ,sc4rogds, sc4_200_4ra, sc4rogds, sc4_state, sc4rogds, ROT0, "Qps","Rogan Dosh (v2.0) (Qps) (Scorpion 4) (set 1)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4rogdsf ,sc4rogds, sc4_200_4ra, sc4rogds, sc4_state, sc4rogds, ROT0, "Qps","Rogan Dosh (v2.0) (Qps) (Scorpion 4) (set 2)", MACHINE_FLAGS, layout_bfm_sc4 )
// PR2060 ROGAN DOSH V2.1 ROGANSND ROGAN DOSH
-GAMEL( 200?, sc4rogdsg ,sc4rogds, sc4_200_4ra, sc4rogds, sc4_state, sc4rogds, ROT0, "Qps","Rogan Dosh (v2.1) (Qps) (Scorpion 4)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4rogdsg ,sc4rogds, sc4_200_4ra, sc4rogds, sc4_state, sc4rogds, ROT0, "Qps","Rogan Dosh (v2.1) (Qps) (Scorpion 4)", MACHINE_FLAGS, layout_bfm_sc4 )
@@ -29632,11 +29634,11 @@ INPUT_PORTS_END
// PR2034 ROLLING THUNDER ROL SOUNDS ROLLING THUNDER
-GAMEL( 200?, sc4rt ,0, sc4_200_4ra, sc4rt, sc4_state, sc4rt, ROT0, "Mazooma","Rolling Thunder (Mazooma) (Scorpion 4) (set 1)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4rta ,sc4rt, sc4_200_4ra, sc4rt, sc4_state, sc4rt, ROT0, "Mazooma","Rolling Thunder (Mazooma) (Scorpion 4) (set 2)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4rtb ,sc4rt, sc4_200_4ra, sc4rt, sc4_state, sc4rt, ROT0, "Mazooma","Rolling Thunder (Mazooma) (Scorpion 4) (set 3)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4rtc ,sc4rt, sc4_200_4ra, sc4rt, sc4_state, sc4rt, ROT0, "Mazooma","Rolling Thunder (Mazooma) (Scorpion 4) (set 4)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4rtd ,sc4rt, sc4_200_4ra, sc4rt, sc4_state, sc4rt, ROT0, "Mazooma","Rolling Thunder (Mazooma) (Scorpion 4) (set 5)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4rt ,0, sc4_200_4ra, sc4rt, sc4_state, sc4rt, ROT0, "Mazooma","Rolling Thunder (Mazooma) (Scorpion 4) (set 1)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4rta ,sc4rt, sc4_200_4ra, sc4rt, sc4_state, sc4rt, ROT0, "Mazooma","Rolling Thunder (Mazooma) (Scorpion 4) (set 2)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4rtb ,sc4rt, sc4_200_4ra, sc4rt, sc4_state, sc4rt, ROT0, "Mazooma","Rolling Thunder (Mazooma) (Scorpion 4) (set 3)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4rtc ,sc4rt, sc4_200_4ra, sc4rt, sc4_state, sc4rt, ROT0, "Mazooma","Rolling Thunder (Mazooma) (Scorpion 4) (set 4)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4rtd ,sc4rt, sc4_200_4ra, sc4rt, sc4_state, sc4rt, ROT0, "Mazooma","Rolling Thunder (Mazooma) (Scorpion 4) (set 5)", MACHINE_FLAGS, layout_bfm_sc4 )
@@ -29691,10 +29693,10 @@ INPUT_PORTS_END
// missing sound roms, doesn't play, same game code and sound ident as Rolling Thunder?
// PR2034 BANK ROLL ROL SOUNDS BANK ROLL
-GAMEL( 200?, sc4broll ,0, sc4_200_4ra, sc4broll, sc4_state, sc4, ROT0, "Mazooma","Bank Roll (Mazooma) (Scorpion 4) (set 1)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4brolla ,sc4broll, sc4_200_4ra, sc4broll, sc4_state, sc4, ROT0, "Mazooma","Bank Roll (Mazooma) (Scorpion 4) (set 2)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4brollb ,sc4broll, sc4_200_4ra, sc4broll, sc4_state, sc4, ROT0, "Mazooma","Bank Roll (Mazooma) (Scorpion 4) (set 3)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4brollc ,sc4broll, sc4_200_4ra, sc4broll, sc4_state, sc4, ROT0, "Mazooma","Bank Roll (Mazooma) (Scorpion 4) (set 4)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4broll ,0, sc4_200_4ra, sc4broll, sc4_state, sc4, ROT0, "Mazooma","Bank Roll (Mazooma) (Scorpion 4) (set 1)", MACHINE_FLAGS_NOSOUND, layout_bfm_sc4 )
+GAMEL( 200?, sc4brolla ,sc4broll, sc4_200_4ra, sc4broll, sc4_state, sc4, ROT0, "Mazooma","Bank Roll (Mazooma) (Scorpion 4) (set 2)", MACHINE_FLAGS_NOSOUND, layout_bfm_sc4 )
+GAMEL( 200?, sc4brollb ,sc4broll, sc4_200_4ra, sc4broll, sc4_state, sc4, ROT0, "Mazooma","Bank Roll (Mazooma) (Scorpion 4) (set 3)", MACHINE_FLAGS_NOSOUND, layout_bfm_sc4 )
+GAMEL( 200?, sc4brollc ,sc4broll, sc4_200_4ra, sc4broll, sc4_state, sc4, ROT0, "Mazooma","Bank Roll (Mazooma) (Scorpion 4) (set 4)", MACHINE_FLAGS_NOSOUND, layout_bfm_sc4 )
@@ -29767,10 +29769,10 @@ INPUT_PORTS_START( sc4rbank ) // this structure is generated
INPUT_PORTS_END
// PR1111 ROYAL BANKER PR1111 ROYLEBANKER SOUNDS11
-GAMEL( 200?, sc4rbank ,0, sc4_200_5r, sc4rbank, sc4_state, sc4rbank, ROT0, "BFM","Royle Banker (Bellfruit) (Scorpion 4) (set 1)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4rbanka ,sc4rbank, sc4_200_5r, sc4rbank, sc4_state, sc4rbank, ROT0, "BFM","Royle Banker (Bellfruit) (Scorpion 4) (set 2)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4rbankb ,sc4rbank, sc4_200_5r, sc4rbank, sc4_state, sc4rbank, ROT0, "BFM","Royle Banker (Bellfruit) (Scorpion 4) (set 3)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4rbankc ,sc4rbank, sc4_200_5r, sc4rbank, sc4_state, sc4rbank, ROT0, "BFM","Royle Banker (Bellfruit) (Scorpion 4) (set 4)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4rbank ,0, sc4_200_5r, sc4rbank, sc4_state, sc4rbank, ROT0, "BFM","Royle Banker (Bellfruit) (Scorpion 4) (set 1)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4rbanka ,sc4rbank, sc4_200_5r, sc4rbank, sc4_state, sc4rbank, ROT0, "BFM","Royle Banker (Bellfruit) (Scorpion 4) (set 2)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4rbankb ,sc4rbank, sc4_200_5r, sc4rbank, sc4_state, sc4rbank, ROT0, "BFM","Royle Banker (Bellfruit) (Scorpion 4) (set 3)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4rbankc ,sc4rbank, sc4_200_5r, sc4rbank, sc4_state, sc4rbank, ROT0, "BFM","Royle Banker (Bellfruit) (Scorpion 4) (set 4)", MACHINE_FLAGS, layout_bfm_sc4 )
DRIVER_INIT_MEMBER(sc4_state,sc4royle)
@@ -29849,21 +29851,21 @@ INPUT_PORTS_START( sc4royle ) // this structure is generated
INPUT_PORTS_END
// PR1102 ROYLEFAMILY PR1102 ROYLEFAMILY SOUNDS11
-GAMEL( 200?, sc4royle ,0, sc4_200_4ra, sc4royle, sc4_state, sc4royle, ROT0, "BFM","Royle Family (Bellfruit) (Scorpion 4) (set 1)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4roylea ,sc4royle, sc4_200_4ra, sc4royle, sc4_state, sc4royle, ROT0, "BFM","Royle Family (Bellfruit) (Scorpion 4) (set 2)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4royleb ,sc4royle, sc4_200_4ra, sc4royle, sc4_state, sc4royle, ROT0, "BFM","Royle Family (Bellfruit) (Scorpion 4) (set 3)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4roylec ,sc4royle, sc4_200_4ra, sc4royle, sc4_state, sc4royle, ROT0, "BFM","Royle Family (Bellfruit) (Scorpion 4) (set 4)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4royled ,sc4royle, sc4_200_4ra, sc4royle, sc4_state, sc4royle, ROT0, "BFM","Royle Family (Bellfruit) (Scorpion 4) (set 5)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4roylee ,sc4royle, sc4_200_4ra, sc4royle, sc4_state, sc4royle, ROT0, "BFM","Royle Family (Bellfruit) (Scorpion 4) (set 6)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4royleh ,sc4royle, sc4_200_4ra, sc4royle, sc4_state, sc4royle, ROT0, "BFM","Royle Family (Bellfruit) (Scorpion 4) (set 7)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4roylei ,sc4royle, sc4_200_4ra, sc4royle, sc4_state, sc4royle, ROT0, "BFM","Royle Family (Bellfruit) (Scorpion 4) (set 8)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4royle ,0, sc4_200_4ra, sc4royle, sc4_state, sc4royle, ROT0, "BFM","Royle Family (Bellfruit) (Scorpion 4) (set 1)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4roylea ,sc4royle, sc4_200_4ra, sc4royle, sc4_state, sc4royle, ROT0, "BFM","Royle Family (Bellfruit) (Scorpion 4) (set 2)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4royleb ,sc4royle, sc4_200_4ra, sc4royle, sc4_state, sc4royle, ROT0, "BFM","Royle Family (Bellfruit) (Scorpion 4) (set 3)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4roylec ,sc4royle, sc4_200_4ra, sc4royle, sc4_state, sc4royle, ROT0, "BFM","Royle Family (Bellfruit) (Scorpion 4) (set 4)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4royled ,sc4royle, sc4_200_4ra, sc4royle, sc4_state, sc4royle, ROT0, "BFM","Royle Family (Bellfruit) (Scorpion 4) (set 5)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4roylee ,sc4royle, sc4_200_4ra, sc4royle, sc4_state, sc4royle, ROT0, "BFM","Royle Family (Bellfruit) (Scorpion 4) (set 6)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4royleh ,sc4royle, sc4_200_4ra, sc4royle, sc4_state, sc4royle, ROT0, "BFM","Royle Family (Bellfruit) (Scorpion 4) (set 7)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4roylei ,sc4royle, sc4_200_4ra, sc4royle, sc4_state, sc4royle, ROT0, "BFM","Royle Family (Bellfruit) (Scorpion 4) (set 8)", MACHINE_FLAGS, layout_bfm_sc4 )
// PR1102 ROYLEFAMILY REV2 PR1102 ROYLEFAMILY SOUNDS11
-GAMEL( 200?, sc4roylef ,sc4royle, sc4_200_4ra, sc4royle, sc4_state, sc4royle, ROT0, "BFM","Royle Family (REV 2) (Bellfruit) (Scorpion 4) (set 1)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4royleg ,sc4royle, sc4_200_4ra, sc4royle, sc4_state, sc4royle, ROT0, "BFM","Royle Family (REV 2) (Bellfruit) (Scorpion 4) (set 2)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4roylej ,sc4royle, sc4_200_4ra, sc4royle, sc4_state, sc4royle, ROT0, "BFM","Royle Family (REV 2) (Bellfruit) (Scorpion 4) (set 3)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4roylek ,sc4royle, sc4_200_4ra, sc4royle, sc4_state, sc4royle, ROT0, "BFM","Royle Family (REV 2) (Bellfruit) (Scorpion 4) (set 4)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4roylel ,sc4royle, sc4_200_4ra, sc4royle, sc4_state, sc4royle, ROT0, "BFM","Royle Family (REV 2) (Bellfruit) (Scorpion 4) (set 5)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4roylem ,sc4royle, sc4_200_4ra, sc4royle, sc4_state, sc4royle, ROT0, "BFM","Royle Family (REV 2) (Bellfruit) (Scorpion 4) (set 6)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4roylef ,sc4royle, sc4_200_4ra, sc4royle, sc4_state, sc4royle, ROT0, "BFM","Royle Family (REV 2) (Bellfruit) (Scorpion 4) (set 1)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4royleg ,sc4royle, sc4_200_4ra, sc4royle, sc4_state, sc4royle, ROT0, "BFM","Royle Family (REV 2) (Bellfruit) (Scorpion 4) (set 2)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4roylej ,sc4royle, sc4_200_4ra, sc4royle, sc4_state, sc4royle, ROT0, "BFM","Royle Family (REV 2) (Bellfruit) (Scorpion 4) (set 3)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4roylek ,sc4royle, sc4_200_4ra, sc4royle, sc4_state, sc4royle, ROT0, "BFM","Royle Family (REV 2) (Bellfruit) (Scorpion 4) (set 4)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4roylel ,sc4royle, sc4_200_4ra, sc4royle, sc4_state, sc4royle, ROT0, "BFM","Royle Family (REV 2) (Bellfruit) (Scorpion 4) (set 5)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4roylem ,sc4royle, sc4_200_4ra, sc4royle, sc4_state, sc4royle, ROT0, "BFM","Royle Family (REV 2) (Bellfruit) (Scorpion 4) (set 6)", MACHINE_FLAGS, layout_bfm_sc4 )
DRIVER_INIT_MEMBER(sc4_state,sc4sidsp)
@@ -29917,10 +29919,10 @@ INPUT_PORTS_START( sc4sidsp ) // this structure is generated
INPUT_PORTS_END
// PR2117 SIDE SPLITTER SSPT SOUNDS SIDE SPLITTER
-GAMEL( 200?, sc4sidsp ,0, sc4_4reel_alt, sc4sidsp, sc4_state, sc4sidsp, ROT0, "Mazooma","Side Splitter (Mazooma) (Scorpion 4) (set 1)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4sidspa ,sc4sidsp, sc4_4reel_alt, sc4sidsp, sc4_state, sc4sidsp, ROT0, "Mazooma","Side Splitter (Mazooma) (Scorpion 4) (set 2)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4sidspb ,sc4sidsp, sc4_4reel_alt, sc4sidsp, sc4_state, sc4sidsp, ROT0, "Mazooma","Side Splitter (Mazooma) (Scorpion 4) (set 3)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4sidspc ,sc4sidsp, sc4_4reel_alt, sc4sidsp, sc4_state, sc4sidsp, ROT0, "Mazooma","Side Splitter (Mazooma) (Scorpion 4) (set 4)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4sidsp ,0, sc4_4reel_alt, sc4sidsp, sc4_state, sc4sidsp, ROT0, "Mazooma","Side Splitter (Mazooma) (Scorpion 4) (set 1)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4sidspa ,sc4sidsp, sc4_4reel_alt, sc4sidsp, sc4_state, sc4sidsp, ROT0, "Mazooma","Side Splitter (Mazooma) (Scorpion 4) (set 2)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4sidspb ,sc4sidsp, sc4_4reel_alt, sc4sidsp, sc4_state, sc4sidsp, ROT0, "Mazooma","Side Splitter (Mazooma) (Scorpion 4) (set 3)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4sidspc ,sc4sidsp, sc4_4reel_alt, sc4sidsp, sc4_state, sc4sidsp, ROT0, "Mazooma","Side Splitter (Mazooma) (Scorpion 4) (set 4)", MACHINE_FLAGS, layout_bfm_sc4 )
DRIVER_INIT_MEMBER(sc4_state,sc4srr)
@@ -29991,10 +29993,10 @@ INPUT_PORTS_END
// PR1105 SNAKE RATTLE 'N' ROLL PR1105 SNAKERR SOUNDS11
-GAMEL( 200?, sc4srr ,0, sc4_4reel_alt, sc4srr, sc4_state, sc4srr, ROT0, "BFM","Snake Rattle 'n' Roll (Bellfruit) (Scorpion 4) (set 1)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4srra ,sc4srr, sc4_4reel_alt, sc4srr, sc4_state, sc4srr, ROT0, "BFM","Snake Rattle 'n' Roll (Bellfruit) (Scorpion 4) (set 2)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4srrb ,sc4srr, sc4_4reel_alt, sc4srr, sc4_state, sc4srr, ROT0, "BFM","Snake Rattle 'n' Roll (Bellfruit) (Scorpion 4) (set 3)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4srrc ,sc4srr, sc4_4reel_alt, sc4srr, sc4_state, sc4srr, ROT0, "BFM","Snake Rattle 'n' Roll (Bellfruit) (Scorpion 4) (set 4)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4srr ,0, sc4_4reel_alt, sc4srr, sc4_state, sc4srr, ROT0, "BFM","Snake Rattle 'n' Roll (Bellfruit) (Scorpion 4) (set 1)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4srra ,sc4srr, sc4_4reel_alt, sc4srr, sc4_state, sc4srr, ROT0, "BFM","Snake Rattle 'n' Roll (Bellfruit) (Scorpion 4) (set 2)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4srrb ,sc4srr, sc4_4reel_alt, sc4srr, sc4_state, sc4srr, ROT0, "BFM","Snake Rattle 'n' Roll (Bellfruit) (Scorpion 4) (set 3)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4srrc ,sc4srr, sc4_4reel_alt, sc4srr, sc4_state, sc4srr, ROT0, "BFM","Snake Rattle 'n' Roll (Bellfruit) (Scorpion 4) (set 4)", MACHINE_FLAGS, layout_bfm_sc4 )
DRIVER_INIT_MEMBER(sc4_state,sc4slc)
@@ -30066,22 +30068,22 @@ INPUT_PORTS_START( sc4slc ) // this structure is generated
INPUT_PORTS_END
// PR1423 CLUB SNAKES N LADDERS PR1423 CSNK SOUNDS11 SNAKES N LADDERS
-GAMEL( 2003, sc4slc ,0, sc4_5reel, sc4slc, sc4_state, sc4slc, ROT0, "BFM","Snakes & Ladders Club (Bellfruit) (Scorpion 4) (set 1)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 2003, sc4slcb ,sc4slc, sc4_5reel, sc4slc, sc4_state, sc4slc, ROT0, "BFM","Snakes & Ladders Club (Bellfruit) (Scorpion 4) (set 2)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 2003, sc4slcc ,sc4slc, sc4_5reel, sc4slc, sc4_state, sc4slc, ROT0, "BFM","Snakes & Ladders Club (Bellfruit) (Scorpion 4) (set 3)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 2003, sc4slce ,sc4slc, sc4_5reel, sc4slc, sc4_state, sc4slc, ROT0, "BFM","Snakes & Ladders Club (Bellfruit) (Scorpion 4) (set 4)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 2003, sc4slci ,sc4slc, sc4_5reel, sc4slc, sc4_state, sc4slc, ROT0, "BFM","Snakes & Ladders Club (Bellfruit) (Scorpion 4) (set 5)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 2003, sc4slcm ,sc4slc, sc4_5reel, sc4slc, sc4_state, sc4slc, ROT0, "BFM","Snakes & Ladders Club (Bellfruit) (Scorpion 4) (set 6)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 2003, sc4slcn ,sc4slc, sc4_5reel, sc4slc, sc4_state, sc4slc, ROT0, "BFM","Snakes & Ladders Club (Bellfruit) (Scorpion 4) (set 7)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 2003, sc4slc ,0, sc4_5reel, sc4slc, sc4_state, sc4slc, ROT0, "BFM","Snakes & Ladders Club (Bellfruit) (Scorpion 4) (set 1)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 2003, sc4slcb ,sc4slc, sc4_5reel, sc4slc, sc4_state, sc4slc, ROT0, "BFM","Snakes & Ladders Club (Bellfruit) (Scorpion 4) (set 2)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 2003, sc4slcc ,sc4slc, sc4_5reel, sc4slc, sc4_state, sc4slc, ROT0, "BFM","Snakes & Ladders Club (Bellfruit) (Scorpion 4) (set 3)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 2003, sc4slce ,sc4slc, sc4_5reel, sc4slc, sc4_state, sc4slc, ROT0, "BFM","Snakes & Ladders Club (Bellfruit) (Scorpion 4) (set 4)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 2003, sc4slci ,sc4slc, sc4_5reel, sc4slc, sc4_state, sc4slc, ROT0, "BFM","Snakes & Ladders Club (Bellfruit) (Scorpion 4) (set 5)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 2003, sc4slcm ,sc4slc, sc4_5reel, sc4slc, sc4_state, sc4slc, ROT0, "BFM","Snakes & Ladders Club (Bellfruit) (Scorpion 4) (set 6)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 2003, sc4slcn ,sc4slc, sc4_5reel, sc4slc, sc4_state, sc4slc, ROT0, "BFM","Snakes & Ladders Club (Bellfruit) (Scorpion 4) (set 7)", MACHINE_FLAGS, layout_bfm_sc4 )
// PR1423 CLUB SNAKES N LADDERS SNAKES N LADDERS CLUB PR1423 CSNK SOUNDS11 SNAKES N LADDERS
-GAMEL( 2003, sc4slca ,sc4slc, sc4_5reel, sc4slc, sc4_state, sc4slc_mbus, ROT0, "BFM","Snakes & Ladders Club (Bellfruit) (Scorpion 4) (set 8)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 2003, sc4slcd ,sc4slc, sc4_5reel, sc4slc, sc4_state, sc4slc_mbus, ROT0, "BFM","Snakes & Ladders Club (Bellfruit) (Scorpion 4) (set 9)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 2003, sc4slcf ,sc4slc, sc4_5reel, sc4slc, sc4_state, sc4slc_mbus, ROT0, "BFM","Snakes & Ladders Club (Bellfruit) (Scorpion 4) (set 10)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 2003, sc4slcg ,sc4slc, sc4_5reel, sc4slc, sc4_state, sc4slc_mbus, ROT0, "BFM","Snakes & Ladders Club (Bellfruit) (Scorpion 4) (set 11)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 2003, sc4slcj ,sc4slc, sc4_5reel, sc4slc, sc4_state, sc4slc_mbus, ROT0, "BFM","Snakes & Ladders Club (Bellfruit) (Scorpion 4) (set 13)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 2003, sc4slck ,sc4slc, sc4_5reel, sc4slc, sc4_state, sc4slc_mbus, ROT0, "BFM","Snakes & Ladders Club (Bellfruit) (Scorpion 4) (set 14)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 2003, sc4slcl ,sc4slc, sc4_5reel, sc4slc, sc4_state, sc4slc, ROT0, "BFM","Snakes & Ladders Club (Bellfruit) (Scorpion 4) (set 15)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 2003, sc4slch ,sc4slc, sc4_5reel, sc4slc, sc4_state, sc4slc, ROT0, "BFM","Snakes & Ladders Club (Bellfruit) (Scorpion 4) (set 12)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 2003, sc4slca ,sc4slc, sc4_5reel, sc4slc, sc4_state, sc4slc_mbus, ROT0, "BFM","Snakes & Ladders Club (Bellfruit) (Scorpion 4) (set 8)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 2003, sc4slcd ,sc4slc, sc4_5reel, sc4slc, sc4_state, sc4slc_mbus, ROT0, "BFM","Snakes & Ladders Club (Bellfruit) (Scorpion 4) (set 9)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 2003, sc4slcf ,sc4slc, sc4_5reel, sc4slc, sc4_state, sc4slc_mbus, ROT0, "BFM","Snakes & Ladders Club (Bellfruit) (Scorpion 4) (set 10)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 2003, sc4slcg ,sc4slc, sc4_5reel, sc4slc, sc4_state, sc4slc_mbus, ROT0, "BFM","Snakes & Ladders Club (Bellfruit) (Scorpion 4) (set 11)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 2003, sc4slcj ,sc4slc, sc4_5reel, sc4slc, sc4_state, sc4slc_mbus, ROT0, "BFM","Snakes & Ladders Club (Bellfruit) (Scorpion 4) (set 13)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 2003, sc4slck ,sc4slc, sc4_5reel, sc4slc, sc4_state, sc4slc_mbus, ROT0, "BFM","Snakes & Ladders Club (Bellfruit) (Scorpion 4) (set 14)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 2003, sc4slcl ,sc4slc, sc4_5reel, sc4slc, sc4_state, sc4slc, ROT0, "BFM","Snakes & Ladders Club (Bellfruit) (Scorpion 4) (set 15)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 2003, sc4slch ,sc4slc, sc4_5reel, sc4slc, sc4_state, sc4slc, ROT0, "BFM","Snakes & Ladders Club (Bellfruit) (Scorpion 4) (set 12)", MACHINE_FLAGS, layout_bfm_sc4 )
@@ -30158,10 +30160,10 @@ INPUT_PORTS_START( sc4solgl ) // this structure is generated
INPUT_PORTS_END
// PR1010 SOLID GOLD PR1010 SOLID GOLD SOUNDS11
-GAMEL( 200?, sc4solgl ,0, sc4_200_4ra, sc4solgl, sc4_state, sc4solgl, ROT0, "BFM","Solid Gold (Bellfruit) (Scorpion 4) (set 1)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4solgla ,sc4solgl, sc4_200_4ra, sc4solgl, sc4_state, sc4solgl, ROT0, "BFM","Solid Gold (Bellfruit) (Scorpion 4) (set 2)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4solglb ,sc4solgl, sc4_200_4ra, sc4solgl, sc4_state, sc4solgl, ROT0, "BFM","Solid Gold (Bellfruit) (Scorpion 4) (set 3)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4solglc ,sc4solgl, sc4_200_4ra, sc4solgl, sc4_state, sc4solgl, ROT0, "BFM","Solid Gold (Bellfruit) (Scorpion 4) (set 4)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4solgl ,0, sc4_200_4ra, sc4solgl, sc4_state, sc4solgl, ROT0, "BFM","Solid Gold (Bellfruit) (Scorpion 4) (set 1)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4solgla ,sc4solgl, sc4_200_4ra, sc4solgl, sc4_state, sc4solgl, ROT0, "BFM","Solid Gold (Bellfruit) (Scorpion 4) (set 2)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4solglb ,sc4solgl, sc4_200_4ra, sc4solgl, sc4_state, sc4solgl, ROT0, "BFM","Solid Gold (Bellfruit) (Scorpion 4) (set 3)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4solglc ,sc4solgl, sc4_200_4ra, sc4solgl, sc4_state, sc4solgl, ROT0, "BFM","Solid Gold (Bellfruit) (Scorpion 4) (set 4)", MACHINE_FLAGS, layout_bfm_sc4 )
DRIVER_INIT_MEMBER(sc4_state,sc4sace)
@@ -30214,8 +30216,8 @@ INPUT_PORTS_END
// PR2509 SPACE ACE V2.2 SPACESND SPACE ACE
-GAMEL( 200?, sc4sace ,0, sc4_4reel_alt, sc4sace, sc4_state, sc4sace, ROT0, "Qps","Space Ace (Qps) (Scorpion 4) (set 1)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4sacea ,sc4sace, sc4_4reel_alt, sc4sace, sc4_state, sc4sace, ROT0, "Qps","Space Ace (Qps) (Scorpion 4) (set 2)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4sace ,0, sc4_4reel_alt, sc4sace, sc4_state, sc4sace, ROT0, "Qps","Space Ace (Qps) (Scorpion 4) (set 1)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4sacea ,sc4sace, sc4_4reel_alt, sc4sace, sc4_state, sc4sace, ROT0, "Qps","Space Ace (Qps) (Scorpion 4) (set 2)", MACHINE_FLAGS, layout_bfm_sc4 )
@@ -30268,8 +30270,8 @@ INPUT_PORTS_START( sc4sbust ) // this structure is generated
INPUT_PORTS_END
// PR2506 SPACEBUSTER BUSTERSND SPACEBUSTER
-GAMEL( 200?, sc4sbust ,0, sc4_4reel_alt, sc4sbust, sc4_state, sc4sbust, ROT0, "Qps","Space Buster (Qps) (Scorpion 4) (set 1)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4sbusta ,sc4sbust, sc4_4reel_alt, sc4sbust, sc4_state, sc4sbust, ROT0, "Qps","Space Buster (Qps) (Scorpion 4) (set 2)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4sbust ,0, sc4_4reel_alt, sc4sbust, sc4_state, sc4sbust, ROT0, "Qps","Space Buster (Qps) (Scorpion 4) (set 1)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4sbusta ,sc4sbust, sc4_4reel_alt, sc4sbust, sc4_state, sc4sbust, ROT0, "Qps","Space Buster (Qps) (Scorpion 4) (set 2)", MACHINE_FLAGS, layout_bfm_sc4 )
@@ -30327,17 +30329,17 @@ INPUT_PORTS_START( sc4stirc ) // this structure is generated
INPUT_PORTS_END
// PR2005 STIR CRAZY STIR SOUNDS STIR CRAZY
-GAMEL( 200?, sc4stirc ,0, sc4_4reel, sc4stirc, sc4_state, sc4stirc, ROT0, "Mazooma","Stir Crazy (Mazooma) (Scorpion 4) (set 1)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4stirca ,sc4stirc, sc4_4reel, sc4stirc, sc4_state, sc4stirc, ROT0, "Mazooma","Stir Crazy (Mazooma) (Scorpion 4) (set 2)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4stircb ,sc4stirc, sc4_4reel, sc4stirc, sc4_state, sc4stirc, ROT0, "Mazooma","Stir Crazy (Mazooma) (Scorpion 4) (set 3)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4stircc ,sc4stirc, sc4_4reel, sc4stirc, sc4_state, sc4stirc, ROT0, "Mazooma","Stir Crazy (Mazooma) (Scorpion 4) (set 4)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4stircd ,sc4stirc, sc4_4reel, sc4stirc, sc4_state, sc4stirc, ROT0, "Mazooma","Stir Crazy (Mazooma) (Scorpion 4) (set 5)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4stirce ,sc4stirc, sc4_4reel, sc4stirc, sc4_state, sc4stirc, ROT0, "Mazooma","Stir Crazy (Mazooma) (Scorpion 4) (set 6)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4stircf ,sc4stirc, sc4_4reel, sc4stirc, sc4_state, sc4stirc, ROT0, "Mazooma","Stir Crazy (Mazooma) (Scorpion 4) (set 7)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4stircg ,sc4stirc, sc4_4reel, sc4stirc, sc4_state, sc4stirc, ROT0, "Mazooma","Stir Crazy (Mazooma) (Scorpion 4) (set 8)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4stirch ,sc4stirc, sc4_4reel, sc4stirc, sc4_state, sc4stirc, ROT0, "Mazooma","Stir Crazy (Mazooma) (Scorpion 4) (set 9)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4stirci ,sc4stirc, sc4_4reel, sc4stirc, sc4_state, sc4stirc, ROT0, "Mazooma","Stir Crazy (Mazooma) (Scorpion 4) (set 10)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4stircj ,sc4stirc, sc4_4reel, sc4stirc, sc4_state, sc4stirc, ROT0, "Mazooma","Stir Crazy (Mazooma) (Scorpion 4) (set 11)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4stirc ,0, sc4_4reel, sc4stirc, sc4_state, sc4stirc, ROT0, "Mazooma","Stir Crazy (Mazooma) (Scorpion 4) (set 1)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4stirca ,sc4stirc, sc4_4reel, sc4stirc, sc4_state, sc4stirc, ROT0, "Mazooma","Stir Crazy (Mazooma) (Scorpion 4) (set 2)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4stircb ,sc4stirc, sc4_4reel, sc4stirc, sc4_state, sc4stirc, ROT0, "Mazooma","Stir Crazy (Mazooma) (Scorpion 4) (set 3)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4stircc ,sc4stirc, sc4_4reel, sc4stirc, sc4_state, sc4stirc, ROT0, "Mazooma","Stir Crazy (Mazooma) (Scorpion 4) (set 4)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4stircd ,sc4stirc, sc4_4reel, sc4stirc, sc4_state, sc4stirc, ROT0, "Mazooma","Stir Crazy (Mazooma) (Scorpion 4) (set 5)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4stirce ,sc4stirc, sc4_4reel, sc4stirc, sc4_state, sc4stirc, ROT0, "Mazooma","Stir Crazy (Mazooma) (Scorpion 4) (set 6)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4stircf ,sc4stirc, sc4_4reel, sc4stirc, sc4_state, sc4stirc, ROT0, "Mazooma","Stir Crazy (Mazooma) (Scorpion 4) (set 7)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4stircg ,sc4stirc, sc4_4reel, sc4stirc, sc4_state, sc4stirc, ROT0, "Mazooma","Stir Crazy (Mazooma) (Scorpion 4) (set 8)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4stirch ,sc4stirc, sc4_4reel, sc4stirc, sc4_state, sc4stirc, ROT0, "Mazooma","Stir Crazy (Mazooma) (Scorpion 4) (set 9)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4stirci ,sc4stirc, sc4_4reel, sc4stirc, sc4_state, sc4stirc, ROT0, "Mazooma","Stir Crazy (Mazooma) (Scorpion 4) (set 10)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4stircj ,sc4stirc, sc4_4reel, sc4stirc, sc4_state, sc4stirc, ROT0, "Mazooma","Stir Crazy (Mazooma) (Scorpion 4) (set 11)", MACHINE_FLAGS, layout_bfm_sc4 )
@@ -30398,9 +30400,9 @@ INPUT_PORTS_START( sc4sahed ) // this structure is generated
INPUT_PORTS_END
// PRxxxx STREAKS AHEAD V1.0 STREAKSSND STREAKS AHEAD
-GAMEL( 200?, sc4sahed ,0, sc4_200_4rb, sc4sahed, sc4_state, sc4sahed, ROT0, "Qps","Streaks Ahead (Qps) (Scorpion 4) (set 1)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4saheda ,sc4sahed, sc4_200_4rb, sc4sahed, sc4_state, sc4sahed, ROT0, "Qps","Streaks Ahead (Qps) (Scorpion 4) (set 2)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4sahedb ,sc4sahed, sc4_200_4rb, sc4sahed, sc4_state, sc4sahed, ROT0, "Qps","Streaks Ahead (Qps) (Scorpion 4) (set 3)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4sahed ,0, sc4_200_4rb, sc4sahed, sc4_state, sc4sahed, ROT0, "Qps","Streaks Ahead (Qps) (Scorpion 4) (set 1)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4saheda ,sc4sahed, sc4_200_4rb, sc4sahed, sc4_state, sc4sahed, ROT0, "Qps","Streaks Ahead (Qps) (Scorpion 4) (set 2)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4sahedb ,sc4sahed, sc4_200_4rb, sc4sahed, sc4_state, sc4sahed, ROT0, "Qps","Streaks Ahead (Qps) (Scorpion 4) (set 3)", MACHINE_FLAGS, layout_bfm_sc4 )
DRIVER_INIT_MEMBER(sc4_state,sc4strx)
@@ -30471,10 +30473,10 @@ INPUT_PORTS_END
// PR1114 STRIKE X PR1114 STRIKX SOUNDS11
-GAMEL( 200?, sc4strx ,0, sc4_4reel_alt, sc4strx, sc4_state, sc4strx, ROT0, "BFM","Strike X (Bellfruit) (Scorpion 4) (set 1)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4strxa ,sc4strx, sc4_4reel_alt, sc4strx, sc4_state, sc4strx, ROT0, "BFM","Strike X (Bellfruit) (Scorpion 4) (set 2)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4strxb ,sc4strx, sc4_4reel_alt, sc4strx, sc4_state, sc4strx, ROT0, "BFM","Strike X (Bellfruit) (Scorpion 4) (set 3)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4strxc ,sc4strx, sc4_4reel_alt, sc4strx, sc4_state, sc4strx, ROT0, "BFM","Strike X (Bellfruit) (Scorpion 4) (set 4)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4strx ,0, sc4_4reel_alt, sc4strx, sc4_state, sc4strx, ROT0, "BFM","Strike X (Bellfruit) (Scorpion 4) (set 1)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4strxa ,sc4strx, sc4_4reel_alt, sc4strx, sc4_state, sc4strx, ROT0, "BFM","Strike X (Bellfruit) (Scorpion 4) (set 2)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4strxb ,sc4strx, sc4_4reel_alt, sc4strx, sc4_state, sc4strx, ROT0, "BFM","Strike X (Bellfruit) (Scorpion 4) (set 3)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4strxc ,sc4strx, sc4_4reel_alt, sc4strx, sc4_state, sc4strx, ROT0, "BFM","Strike X (Bellfruit) (Scorpion 4) (set 4)", MACHINE_FLAGS, layout_bfm_sc4 )
@@ -30543,10 +30545,10 @@ INPUT_PORTS_START( sc4suscl ) // this structure is generated
INPUT_PORTS_END
// PR2357 CLUB SUITS U SIR SUITS U SIR CLUB CLUB SUIT SOUNDS
-GAMEL( 200?, sc4suscl ,0, sc4_5reel, sc4suscl, sc4_state, sc4suscl, ROT0, "Qps","Suits U Sir Club (Qps) (Scorpion 4) (set 1)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4susclb ,sc4suscl, sc4_5reel, sc4suscl, sc4_state, sc4suscl, ROT0, "Qps","Suits U Sir Club (Qps) (Scorpion 4) (set 2)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4susclc ,sc4suscl, sc4_5reel, sc4suscl, sc4_state, sc4suscl_mbus, ROT0, "Qps","Suits U Sir Club (Qps) (Scorpion 4) (set 3)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4suscla ,sc4suscl, sc4_5reel, sc4suscl, sc4_state, sc4suscl_mbus, ROT0, "Qps","Suits U Sir Club (Qps) (Scorpion 4) (set 4)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4suscl ,0, sc4_5reel, sc4suscl, sc4_state, sc4suscl, ROT0, "Qps","Suits U Sir Club (Qps) (Scorpion 4) (set 1)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4susclb ,sc4suscl, sc4_5reel, sc4suscl, sc4_state, sc4suscl, ROT0, "Qps","Suits U Sir Club (Qps) (Scorpion 4) (set 2)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4susclc ,sc4suscl, sc4_5reel, sc4suscl, sc4_state, sc4suscl_mbus, ROT0, "Qps","Suits U Sir Club (Qps) (Scorpion 4) (set 3)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4suscla ,sc4suscl, sc4_5reel, sc4suscl, sc4_state, sc4suscl_mbus, ROT0, "Qps","Suits U Sir Club (Qps) (Scorpion 4) (set 4)", MACHINE_FLAGS, layout_bfm_sc4 )
@@ -30610,17 +30612,17 @@ INPUT_PORTS_END
// PR2515 TAE KWON DOUGH TAEKWONSND TAE KWON DOUGH
-GAMEL( 200?, sc4taekw ,0, sc4_200_4rb, sc4taekw, sc4_state, sc4taekw, ROT0, "Qps","Tae Kwon Dough (Qps) (Scorpion 4) (set 1)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4taekwa ,sc4taekw, sc4_200_4rb, sc4taekw, sc4_state, sc4taekw, ROT0, "Qps","Tae Kwon Dough (Qps) (Scorpion 4) (set 2)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4taekwb ,sc4taekw, sc4_200_4rb, sc4taekw, sc4_state, sc4taekw, ROT0, "Qps","Tae Kwon Dough (Qps) (Scorpion 4) (set 3)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4taekwg ,sc4taekw, sc4_200_4rb, sc4taekw, sc4_state, sc4taekw, ROT0, "Qps","Tae Kwon Dough (Qps) (Scorpion 4) (set 4)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4taekwh ,sc4taekw, sc4_200_4rb, sc4taekw, sc4_state, sc4taekw, ROT0, "Qps","Tae Kwon Dough (Qps) (Scorpion 4) (set 5)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4taekwi ,sc4taekw, sc4_200_4rb, sc4taekw, sc4_state, sc4taekw, ROT0, "Qps","Tae Kwon Dough (Qps) (Scorpion 4) (set 6)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4taekwj ,sc4taekw, sc4_200_4rb, sc4taekw, sc4_state, sc4taekw, ROT0, "Qps","Tae Kwon Dough (Qps) (Scorpion 4) (set 7)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4taekwc ,sc4taekw, sc4_200_4rb, sc4taekw, sc4_state, sc4taekw_mbus, ROT0, "Qps","Tae Kwon Dough (Qps) (Scorpion 4) (set 8)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4taekwd ,sc4taekw, sc4_200_4rb, sc4taekw, sc4_state, sc4taekw_mbus, ROT0, "Qps","Tae Kwon Dough (Qps) (Scorpion 4) (set 9)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4taekwe ,sc4taekw, sc4_200_4rb, sc4taekw, sc4_state, sc4taekw_mbus, ROT0, "Qps","Tae Kwon Dough (Qps) (Scorpion 4) (set 10)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4taekwf ,sc4taekw, sc4_200_4rb, sc4taekw, sc4_state, sc4taekw_mbus, ROT0, "Qps","Tae Kwon Dough (Qps) (Scorpion 4) (set 11)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4taekw ,0, sc4_200_4rb, sc4taekw, sc4_state, sc4taekw, ROT0, "Qps","Tae Kwon Dough (Qps) (Scorpion 4) (set 1)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4taekwa ,sc4taekw, sc4_200_4rb, sc4taekw, sc4_state, sc4taekw, ROT0, "Qps","Tae Kwon Dough (Qps) (Scorpion 4) (set 2)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4taekwb ,sc4taekw, sc4_200_4rb, sc4taekw, sc4_state, sc4taekw, ROT0, "Qps","Tae Kwon Dough (Qps) (Scorpion 4) (set 3)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4taekwg ,sc4taekw, sc4_200_4rb, sc4taekw, sc4_state, sc4taekw, ROT0, "Qps","Tae Kwon Dough (Qps) (Scorpion 4) (set 4)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4taekwh ,sc4taekw, sc4_200_4rb, sc4taekw, sc4_state, sc4taekw, ROT0, "Qps","Tae Kwon Dough (Qps) (Scorpion 4) (set 5)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4taekwi ,sc4taekw, sc4_200_4rb, sc4taekw, sc4_state, sc4taekw, ROT0, "Qps","Tae Kwon Dough (Qps) (Scorpion 4) (set 6)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4taekwj ,sc4taekw, sc4_200_4rb, sc4taekw, sc4_state, sc4taekw, ROT0, "Qps","Tae Kwon Dough (Qps) (Scorpion 4) (set 7)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4taekwc ,sc4taekw, sc4_200_4rb, sc4taekw, sc4_state, sc4taekw_mbus, ROT0, "Qps","Tae Kwon Dough (Qps) (Scorpion 4) (set 8)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4taekwd ,sc4taekw, sc4_200_4rb, sc4taekw, sc4_state, sc4taekw_mbus, ROT0, "Qps","Tae Kwon Dough (Qps) (Scorpion 4) (set 9)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4taekwe ,sc4taekw, sc4_200_4rb, sc4taekw, sc4_state, sc4taekw_mbus, ROT0, "Qps","Tae Kwon Dough (Qps) (Scorpion 4) (set 10)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4taekwf ,sc4taekw, sc4_200_4rb, sc4taekw, sc4_state, sc4taekw_mbus, ROT0, "Qps","Tae Kwon Dough (Qps) (Scorpion 4) (set 11)", MACHINE_FLAGS, layout_bfm_sc4 )
@@ -30693,8 +30695,8 @@ INPUT_PORTS_START( sc4taknt ) // this structure is generated
INPUT_PORTS_END
// PR1302 AWP TAKE NOTE PR1302 TAKE NOTE SOUNDS11
-GAMEL( 200?, sc4taknt ,0, sc4_4reel_alt, sc4taknt, sc4_state, sc4taknt, ROT0, "BFM","Take Note (Bellfruit) (Scorpion 4) (set 1)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4taknta ,sc4taknt, sc4_4reel_alt, sc4taknt, sc4_state, sc4taknt, ROT0, "BFM","Take Note (Bellfruit) (Scorpion 4) (set 2)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4taknt ,0, sc4_4reel_alt, sc4taknt, sc4_state, sc4taknt, ROT0, "BFM","Take Note (Bellfruit) (Scorpion 4) (set 1)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4taknta ,sc4taknt, sc4_4reel_alt, sc4taknt, sc4_state, sc4taknt, ROT0, "BFM","Take Note (Bellfruit) (Scorpion 4) (set 2)", MACHINE_FLAGS, layout_bfm_sc4 )
DRIVER_INIT_MEMBER(sc4_state,sc4takcl)
{
@@ -30763,20 +30765,20 @@ INPUT_PORTS_START( sc4takcl ) // this structure is generated
INPUT_PORTS_END
// PR1323 CLUB TAKE NOTE PR1323 CNOT SOUNDS11
-GAMEL( 200?, sc4takcl ,0, sc4_5reel, sc4takcl, sc4_state, sc4takcl, ROT0, "BFM","Take Note Club (Bellfruit) (Scorpion 4) (set 1)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4takcld ,sc4takcl, sc4_5reel, sc4takcl, sc4_state, sc4takcl, ROT0, "BFM","Take Note Club (Bellfruit) (Scorpion 4) (set 2)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4takcli ,sc4takcl, sc4_5reel, sc4takcl, sc4_state, sc4takcl, ROT0, "BFM","Take Note Club (Bellfruit) (Scorpion 4) (set 3)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4takclj ,sc4takcl, sc4_5reel, sc4takcl, sc4_state, sc4takcl, ROT0, "BFM","Take Note Club (Bellfruit) (Scorpion 4) (set 4)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4takcl ,0, sc4_5reel, sc4takcl, sc4_state, sc4takcl, ROT0, "BFM","Take Note Club (Bellfruit) (Scorpion 4) (set 1)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4takcld ,sc4takcl, sc4_5reel, sc4takcl, sc4_state, sc4takcl, ROT0, "BFM","Take Note Club (Bellfruit) (Scorpion 4) (set 2)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4takcli ,sc4takcl, sc4_5reel, sc4takcl, sc4_state, sc4takcl, ROT0, "BFM","Take Note Club (Bellfruit) (Scorpion 4) (set 3)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4takclj ,sc4takcl, sc4_5reel, sc4takcl, sc4_state, sc4takcl, ROT0, "BFM","Take Note Club (Bellfruit) (Scorpion 4) (set 4)", MACHINE_FLAGS, layout_bfm_sc4 )
// PR1323 CLUB TAKE NOTE CLUB TAKE NOTE CLUB PR1323 CNOT SOUNDS11
-GAMEL( 200?, sc4takclg ,sc4takcl, sc4_5reel, sc4takcl, sc4_state, sc4takcl_mbus, ROT0, "BFM","Take Note Club (Bellfruit) (Scorpion 4) (set 5)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4takclh ,sc4takcl, sc4_5reel, sc4takcl, sc4_state, sc4takcl_mbus, ROT0, "BFM","Take Note Club (Bellfruit) (Scorpion 4) (set 6)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4takclg ,sc4takcl, sc4_5reel, sc4takcl, sc4_state, sc4takcl_mbus, ROT0, "BFM","Take Note Club (Bellfruit) (Scorpion 4) (set 5)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4takclh ,sc4takcl, sc4_5reel, sc4takcl, sc4_state, sc4takcl_mbus, ROT0, "BFM","Take Note Club (Bellfruit) (Scorpion 4) (set 6)", MACHINE_FLAGS, layout_bfm_sc4 )
// PR1323 CLUB TAKE NOTE 500 PR1323 CNOT SOUNDS11
-GAMEL( 200?, sc4takcla ,sc4takcl, sc4_5reel, sc4takcl, sc4_state, sc4takcl, ROT0, "BFM","Take Note Club 500 (Bellfruit) (Scorpion 4)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4takcla ,sc4takcl, sc4_5reel, sc4takcl, sc4_state, sc4takcl, ROT0, "BFM","Take Note Club 500 (Bellfruit) (Scorpion 4)", MACHINE_FLAGS, layout_bfm_sc4 )
// PR1323 CLUB TAKE NOTE FERRY PR1323 CNOT SOUNDS11
-GAMEL( 200?, sc4takclb ,sc4takcl, sc4_5reel, sc4takcl, sc4_state, sc4takcl, ROT0, "BFM","Take Note Club (Ferry) (Bellfruit) (Scorpion 4) (set 1)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4takclc ,sc4takcl, sc4_5reel, sc4takcl, sc4_state, sc4takcl, ROT0, "BFM","Take Note Club (Ferry) (Bellfruit) (Scorpion 4) (set 2)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4takcle ,sc4takcl, sc4_5reel, sc4takcl, sc4_state, sc4takcl, ROT0, "BFM","Take Note Club (Ferry) (Bellfruit) (Scorpion 4) (set 3)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4takclf ,sc4takcl, sc4_5reel, sc4takcl, sc4_state, sc4takcl, ROT0, "BFM","Take Note Club (Ferry) (Bellfruit) (Scorpion 4) (set 4)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4takclb ,sc4takcl, sc4_5reel, sc4takcl, sc4_state, sc4takcl, ROT0, "BFM","Take Note Club (Ferry) (Bellfruit) (Scorpion 4) (set 1)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4takclc ,sc4takcl, sc4_5reel, sc4takcl, sc4_state, sc4takcl, ROT0, "BFM","Take Note Club (Ferry) (Bellfruit) (Scorpion 4) (set 2)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4takcle ,sc4takcl, sc4_5reel, sc4takcl, sc4_state, sc4takcl, ROT0, "BFM","Take Note Club (Ferry) (Bellfruit) (Scorpion 4) (set 3)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4takclf ,sc4takcl, sc4_5reel, sc4takcl, sc4_state, sc4takcl, ROT0, "BFM","Take Note Club (Ferry) (Bellfruit) (Scorpion 4) (set 4)", MACHINE_FLAGS, layout_bfm_sc4 )
DRIVER_INIT_MEMBER(sc4_state,sc4tetri)
{
@@ -30825,18 +30827,18 @@ INPUT_PORTS_END
// PR7077 TETRIS TETR SOUNDS
-GAMEL( 200?, sc4tetri ,0, sc4_4reel, sc4tetri, sc4_state, sc4tetri, ROT0, "Mazooma","Tetris (Mazooma) (Scorpion 4) (set 1)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4tetria ,sc4tetri, sc4_4reel, sc4tetri, sc4_state, sc4tetri, ROT0, "Mazooma","Tetris (Mazooma) (Scorpion 4) (set 2)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4tetrib ,sc4tetri, sc4_4reel, sc4tetri, sc4_state, sc4tetri, ROT0, "Mazooma","Tetris (Mazooma) (Scorpion 4) (set 3)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4tetric ,sc4tetri, sc4_4reel, sc4tetri, sc4_state, sc4tetri, ROT0, "Mazooma","Tetris (Mazooma) (Scorpion 4) (set 4)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4tetrid ,sc4tetri, sc4_4reel, sc4tetri, sc4_state, sc4tetri, ROT0, "Mazooma","Tetris (Mazooma) (Scorpion 4) (set 5)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4tetrie ,sc4tetri, sc4_4reel, sc4tetri, sc4_state, sc4tetri, ROT0, "Mazooma","Tetris (Mazooma) (Scorpion 4) (set 6)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4tetrif ,sc4tetri, sc4_4reel, sc4tetri, sc4_state, sc4tetri, ROT0, "Mazooma","Tetris (Mazooma) (Scorpion 4) (set 7)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4tetrig ,sc4tetri, sc4_4reel, sc4tetri, sc4_state, sc4tetri, ROT0, "Mazooma","Tetris (Mazooma) (Scorpion 4) (set 8)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4tetrih ,sc4tetri, sc4_4reel, sc4tetri, sc4_state, sc4tetri, ROT0, "Mazooma","Tetris (Mazooma) (Scorpion 4) (set 9)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4tetrii ,sc4tetri, sc4_4reel, sc4tetri, sc4_state, sc4tetri, ROT0, "Mazooma","Tetris (Mazooma) (Scorpion 4) (set 10)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4tetrij ,sc4tetri, sc4_4reel, sc4tetri, sc4_state, sc4tetri, ROT0, "Mazooma","Tetris (Mazooma) (Scorpion 4) (set 11)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4tetrik ,sc4tetri, sc4_4reel, sc4tetri, sc4_state, sc4tetri, ROT0, "Mazooma","Tetris (Mazooma) (Scorpion 4) (set 12)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4tetri ,0, sc4_4reel, sc4tetri, sc4_state, sc4tetri, ROT0, "Mazooma","Tetris (Mazooma) (Scorpion 4) (set 1)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4tetria ,sc4tetri, sc4_4reel, sc4tetri, sc4_state, sc4tetri, ROT0, "Mazooma","Tetris (Mazooma) (Scorpion 4) (set 2)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4tetrib ,sc4tetri, sc4_4reel, sc4tetri, sc4_state, sc4tetri, ROT0, "Mazooma","Tetris (Mazooma) (Scorpion 4) (set 3)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4tetric ,sc4tetri, sc4_4reel, sc4tetri, sc4_state, sc4tetri, ROT0, "Mazooma","Tetris (Mazooma) (Scorpion 4) (set 4)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4tetrid ,sc4tetri, sc4_4reel, sc4tetri, sc4_state, sc4tetri, ROT0, "Mazooma","Tetris (Mazooma) (Scorpion 4) (set 5)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4tetrie ,sc4tetri, sc4_4reel, sc4tetri, sc4_state, sc4tetri, ROT0, "Mazooma","Tetris (Mazooma) (Scorpion 4) (set 6)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4tetrif ,sc4tetri, sc4_4reel, sc4tetri, sc4_state, sc4tetri, ROT0, "Mazooma","Tetris (Mazooma) (Scorpion 4) (set 7)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4tetrig ,sc4tetri, sc4_4reel, sc4tetri, sc4_state, sc4tetri, ROT0, "Mazooma","Tetris (Mazooma) (Scorpion 4) (set 8)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4tetrih ,sc4tetri, sc4_4reel, sc4tetri, sc4_state, sc4tetri, ROT0, "Mazooma","Tetris (Mazooma) (Scorpion 4) (set 9)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4tetrii ,sc4tetri, sc4_4reel, sc4tetri, sc4_state, sc4tetri, ROT0, "Mazooma","Tetris (Mazooma) (Scorpion 4) (set 10)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4tetrij ,sc4tetri, sc4_4reel, sc4tetri, sc4_state, sc4tetri, ROT0, "Mazooma","Tetris (Mazooma) (Scorpion 4) (set 11)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4tetrik ,sc4tetri, sc4_4reel, sc4tetri, sc4_state, sc4tetri, ROT0, "Mazooma","Tetris (Mazooma) (Scorpion 4) (set 12)", MACHINE_FLAGS, layout_bfm_sc4 )
DRIVER_INIT_MEMBER(sc4_state,sc4tbana)
@@ -30906,8 +30908,8 @@ INPUT_PORTS_START( sc4tbana ) // this structure is generated
INPUT_PORTS_END
// PR1110 TOP BANANA PR1110 TOP BANANA SOUNDS11
-GAMEL( 200?, sc4tbana ,0, sc4_200_5rb, sc4tbana, sc4_state, sc4tbana, ROT0, "BFM","Top Banana (Bellfruit) (Scorpion 4) (set 1)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4tbanaa ,sc4tbana, sc4_200_5rb, sc4tbana, sc4_state, sc4tbana, ROT0, "BFM","Top Banana (Bellfruit) (Scorpion 4) (set 2)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4tbana ,0, sc4_200_5rb, sc4tbana, sc4_state, sc4tbana, ROT0, "BFM","Top Banana (Bellfruit) (Scorpion 4) (set 1)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4tbanaa ,sc4tbana, sc4_200_5rb, sc4tbana, sc4_state, sc4tbana, ROT0, "BFM","Top Banana (Bellfruit) (Scorpion 4) (set 2)", MACHINE_FLAGS, layout_bfm_sc4 )
// REEL 4 ERR 24 (what should be here?)
@@ -30960,14 +30962,14 @@ INPUT_PORTS_END
// REEL 4 ERR 24
// PR7062 TOP GEARS GEARS SOUNDS TOP GEARS
-GAMEL( 200?, sc4tgear ,0, sc4_4reel, sc4tgear, sc4_state, sc4tgear, ROT0, "Mazooma","Top Gears (Mazooma) (Scorpion 4) (set 1)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4tgeara ,sc4tgear, sc4_4reel, sc4tgear, sc4_state, sc4tgear, ROT0, "Mazooma","Top Gears (Mazooma) (Scorpion 4) (set 2)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4tgearb ,sc4tgear, sc4_4reel, sc4tgear, sc4_state, sc4tgear, ROT0, "Mazooma","Top Gears (Mazooma) (Scorpion 4) (set 3)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4tgearc ,sc4tgear, sc4_4reel, sc4tgear, sc4_state, sc4tgear, ROT0, "Mazooma","Top Gears (Mazooma) (Scorpion 4) (set 4)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4tgeard ,sc4tgear, sc4_4reel, sc4tgear, sc4_state, sc4tgear, ROT0, "Mazooma","Top Gears (Mazooma) (Scorpion 4) (set 5)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4tgeare ,sc4tgear, sc4_4reel, sc4tgear, sc4_state, sc4tgear, ROT0, "Mazooma","Top Gears (Mazooma) (Scorpion 4) (set 6)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4tgearf ,sc4tgear, sc4_4reel, sc4tgear, sc4_state, sc4tgear, ROT0, "Mazooma","Top Gears (Mazooma) (Scorpion 4) (set 7)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4tgearg ,sc4tgear, sc4_4reel, sc4tgear, sc4_state, sc4tgear, ROT0, "Mazooma","Top Gears (Mazooma) (Scorpion 4) (set 8)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4tgear ,0, sc4_4reel, sc4tgear, sc4_state, sc4tgear, ROT0, "Mazooma","Top Gears (Mazooma) (Scorpion 4) (set 1)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4tgeara ,sc4tgear, sc4_4reel, sc4tgear, sc4_state, sc4tgear, ROT0, "Mazooma","Top Gears (Mazooma) (Scorpion 4) (set 2)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4tgearb ,sc4tgear, sc4_4reel, sc4tgear, sc4_state, sc4tgear, ROT0, "Mazooma","Top Gears (Mazooma) (Scorpion 4) (set 3)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4tgearc ,sc4tgear, sc4_4reel, sc4tgear, sc4_state, sc4tgear, ROT0, "Mazooma","Top Gears (Mazooma) (Scorpion 4) (set 4)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4tgeard ,sc4tgear, sc4_4reel, sc4tgear, sc4_state, sc4tgear, ROT0, "Mazooma","Top Gears (Mazooma) (Scorpion 4) (set 5)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4tgeare ,sc4tgear, sc4_4reel, sc4tgear, sc4_state, sc4tgear, ROT0, "Mazooma","Top Gears (Mazooma) (Scorpion 4) (set 6)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4tgearf ,sc4tgear, sc4_4reel, sc4tgear, sc4_state, sc4tgear, ROT0, "Mazooma","Top Gears (Mazooma) (Scorpion 4) (set 7)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4tgearg ,sc4tgear, sc4_4reel, sc4tgear, sc4_state, sc4tgear, ROT0, "Mazooma","Top Gears (Mazooma) (Scorpion 4) (set 8)", MACHINE_FLAGS, layout_bfm_sc4 )
@@ -31021,7 +31023,7 @@ INPUT_PORTS_START( sc4tload ) // this structure is generated
INPUT_PORTS_END
// PR2112 TOP LOADER LOAD SOUNDS TOP LOADER
-GAMEL( 200?, sc4tload ,0, sc4_4reel_alt, sc4tload, sc4_state, sc4tload, ROT0, "Mazooma","Top Loader (Mazooma) (Scorpion 4)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4tload ,0, sc4_4reel_alt, sc4tload, sc4_state, sc4tload, ROT0, "Mazooma","Top Loader (Mazooma) (Scorpion 4)", MACHINE_FLAGS, layout_bfm_sc4 )
@@ -31102,10 +31104,10 @@ INPUT_PORTS_START( sc4ttomb ) // this structure is generated
INPUT_PORTS_END
// PR1305 TREASURE TOMB PR1305 TRES TOMB SOUNDS11 / HIT SHOT
-GAMEL( 200?, sc4ttomb ,0, sc4_200_4rb, sc4ttomb, sc4_state, sc4ttomb, ROT0, "BFM","Treasure Tomb (Bellfruit) (Scorpion 4) (set 1)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4ttomba ,sc4ttomb, sc4_200_4rb, sc4ttomb, sc4_state, sc4ttomb, ROT0, "BFM","Treasure Tomb (Bellfruit) (Scorpion 4) (set 2)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4ttombb ,sc4ttomb, sc4_200_4rb, sc4ttomb, sc4_state, sc4ttomb, ROT0, "BFM","Treasure Tomb (Bellfruit) (Scorpion 4) (set 3)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4ttombc ,sc4ttomb, sc4_200_4rb, sc4ttomb, sc4_state, sc4ttomb, ROT0, "BFM","Treasure Tomb (Bellfruit) (Scorpion 4) (set 4)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4ttomb ,0, sc4_200_4rb, sc4ttomb, sc4_state, sc4ttomb, ROT0, "BFM","Treasure Tomb (Bellfruit) (Scorpion 4) (set 1)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4ttomba ,sc4ttomb, sc4_200_4rb, sc4ttomb, sc4_state, sc4ttomb, ROT0, "BFM","Treasure Tomb (Bellfruit) (Scorpion 4) (set 2)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4ttombb ,sc4ttomb, sc4_200_4rb, sc4ttomb, sc4_state, sc4ttomb, ROT0, "BFM","Treasure Tomb (Bellfruit) (Scorpion 4) (set 3)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4ttombc ,sc4ttomb, sc4_200_4rb, sc4ttomb, sc4_state, sc4ttomb, ROT0, "BFM","Treasure Tomb (Bellfruit) (Scorpion 4) (set 4)", MACHINE_FLAGS, layout_bfm_sc4 )
@@ -31155,8 +31157,8 @@ INPUT_PORTS_START( sc4tridn ) // this structure is generated
INPUT_PORTS_END
// PR2103 THE TRIDENT TRID SOUNDS THE TRIDENT
-GAMEL( 200?, sc4tridn ,0, sc4_5reel, sc4tridn, sc4_state, sc4tridn, ROT0, "Mazooma","The Trident (Mazooma) (Scorpion 4) (set 1)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4tridna ,sc4tridn, sc4_5reel, sc4tridn, sc4_state, sc4tridn, ROT0, "Mazooma","The Trident (Mazooma) (Scorpion 4) (set 2)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4tridn ,0, sc4_5reel, sc4tridn, sc4_state, sc4tridn, ROT0, "Mazooma","The Trident (Mazooma) (Scorpion 4) (set 1)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4tridna ,sc4tridn, sc4_5reel, sc4tridn, sc4_state, sc4tridn, ROT0, "Mazooma","The Trident (Mazooma) (Scorpion 4) (set 2)", MACHINE_FLAGS, layout_bfm_sc4 )
@@ -31237,17 +31239,17 @@ INPUT_PORTS_START( sc4vrgcl ) // this structure is generated
INPUT_PORTS_END
// PR1037 CLUB VERY RICH GEEZER PR1037 RICH SOUNDS11 VERY RICH GEEZER
-GAMEL( 200?, sc4vrgcl ,0, sc4_200_5rb, sc4vrgcl, sc4_state, sc4vrgcl, ROT0, "BFM","Very Rich Geezer Club (Bellfruit) (Scorpion 4) (set 1)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4vrgcla ,sc4vrgcl, sc4_200_5rb, sc4vrgcl, sc4_state, sc4vrgcl, ROT0, "BFM","Very Rich Geezer Club (Bellfruit) (Scorpion 4) (set 2)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4vrgclb ,sc4vrgcl, sc4_200_5rb, sc4vrgcl, sc4_state, sc4vrgcl, ROT0, "BFM","Very Rich Geezer Club (Bellfruit) (Scorpion 4) (set 3)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4vrgclc ,sc4vrgcl, sc4_200_5rb, sc4vrgcl, sc4_state, sc4vrgcl, ROT0, "BFM","Very Rich Geezer Club (Bellfruit) (Scorpion 4) (set 4)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4vrgcld ,sc4vrgcl, sc4_200_5rb, sc4vrgcl, sc4_state, sc4vrgcl, ROT0, "BFM","Very Rich Geezer Club (Bellfruit) (Scorpion 4) (set 5)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4vrgcle ,sc4vrgcl, sc4_200_5rb, sc4vrgcl, sc4_state, sc4vrgcl, ROT0, "BFM","Very Rich Geezer Club (Bellfruit) (Scorpion 4) (set 6)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4vrgclf ,sc4vrgcl, sc4_200_5rb, sc4vrgcl, sc4_state, sc4vrgcl, ROT0, "BFM","Very Rich Geezer Club (Bellfruit) (Scorpion 4) (set 7)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4vrgclg ,sc4vrgcl, sc4_200_5rb, sc4vrgcl, sc4_state, sc4vrgcl, ROT0, "BFM","Very Rich Geezer Club (Bellfruit) (Scorpion 4) (set 8)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4vrgcl ,0, sc4_200_5rb, sc4vrgcl, sc4_state, sc4vrgcl, ROT0, "BFM","Very Rich Geezer Club (Bellfruit) (Scorpion 4) (set 1)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4vrgcla ,sc4vrgcl, sc4_200_5rb, sc4vrgcl, sc4_state, sc4vrgcl, ROT0, "BFM","Very Rich Geezer Club (Bellfruit) (Scorpion 4) (set 2)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4vrgclb ,sc4vrgcl, sc4_200_5rb, sc4vrgcl, sc4_state, sc4vrgcl, ROT0, "BFM","Very Rich Geezer Club (Bellfruit) (Scorpion 4) (set 3)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4vrgclc ,sc4vrgcl, sc4_200_5rb, sc4vrgcl, sc4_state, sc4vrgcl, ROT0, "BFM","Very Rich Geezer Club (Bellfruit) (Scorpion 4) (set 4)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4vrgcld ,sc4vrgcl, sc4_200_5rb, sc4vrgcl, sc4_state, sc4vrgcl, ROT0, "BFM","Very Rich Geezer Club (Bellfruit) (Scorpion 4) (set 5)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4vrgcle ,sc4vrgcl, sc4_200_5rb, sc4vrgcl, sc4_state, sc4vrgcl, ROT0, "BFM","Very Rich Geezer Club (Bellfruit) (Scorpion 4) (set 6)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4vrgclf ,sc4vrgcl, sc4_200_5rb, sc4vrgcl, sc4_state, sc4vrgcl, ROT0, "BFM","Very Rich Geezer Club (Bellfruit) (Scorpion 4) (set 7)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4vrgclg ,sc4vrgcl, sc4_200_5rb, sc4vrgcl, sc4_state, sc4vrgcl, ROT0, "BFM","Very Rich Geezer Club (Bellfruit) (Scorpion 4) (set 8)", MACHINE_FLAGS, layout_bfm_sc4 )
// PR1037 CLUB VERY RICH GEEZER VERY RICH GEEZER CLUB PR1037 RICH SOUNDS11 VERY RICH GEEZER
-GAMEL( 200?, sc4vrgclh ,sc4vrgcl, sc4_200_5rb, sc4vrgcl, sc4_state, sc4vrgcl_mbus, ROT0, "BFM","Very Rich Geezer Club (Bellfruit) (Scorpion 4) (set 9)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4vrgcli ,sc4vrgcl, sc4_200_5rb, sc4vrgcl, sc4_state, sc4vrgcl_mbus, ROT0, "BFM","Very Rich Geezer Club (Bellfruit) (Scorpion 4) (set 10)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4vrgclh ,sc4vrgcl, sc4_200_5rb, sc4vrgcl, sc4_state, sc4vrgcl_mbus, ROT0, "BFM","Very Rich Geezer Club (Bellfruit) (Scorpion 4) (set 9)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4vrgcli ,sc4vrgcl, sc4_200_5rb, sc4vrgcl, sc4_state, sc4vrgcl_mbus, ROT0, "BFM","Very Rich Geezer Club (Bellfruit) (Scorpion 4) (set 10)", MACHINE_FLAGS, layout_bfm_sc4 )
DRIVER_INIT_MEMBER(sc4_state,sc4leg)
@@ -31320,16 +31322,16 @@ INPUT_PORTS_START( sc4leg ) // this structure is generated
INPUT_PORTS_END
// PR7120 WHO WANTS TO BE A LEGIONNAIRE PR7120 LEGIONNAIRE SOUNDS11
-GAMEL( 200?, sc4leg ,0, sc4_200_5rb, sc4leg, sc4_state, sc4leg, ROT0, "BFM","Who Wants To Be A Legionnaire (Bellfruit) (Scorpion 4) (set 1)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4lega ,sc4leg, sc4_200_5rb, sc4leg, sc4_state, sc4leg, ROT0, "BFM","Who Wants To Be A Legionnaire (Bellfruit) (Scorpion 4) (set 2)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4legb ,sc4leg, sc4_200_5rb, sc4leg, sc4_state, sc4leg, ROT0, "BFM","Who Wants To Be A Legionnaire (Bellfruit) (Scorpion 4) (set 3)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4legc ,sc4leg, sc4_200_5rb, sc4leg, sc4_state, sc4leg, ROT0, "BFM","Who Wants To Be A Legionnaire (Bellfruit) (Scorpion 4) (set 4)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4legd ,sc4leg, sc4_200_5rb, sc4leg, sc4_state, sc4leg, ROT0, "BFM","Who Wants To Be A Legionnaire (Bellfruit) (Scorpion 4) (set 5)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4lege ,sc4leg, sc4_200_5rb, sc4leg, sc4_state, sc4leg, ROT0, "BFM","Who Wants To Be A Legionnaire (Bellfruit) (Scorpion 4) (set 6)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4legf ,sc4leg, sc4_200_5rb, sc4leg, sc4_state, sc4leg, ROT0, "BFM","Who Wants To Be A Legionnaire (Bellfruit) (Scorpion 4) (set 7)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4legg ,sc4leg, sc4_200_5rb, sc4leg, sc4_state, sc4leg, ROT0, "BFM","Who Wants To Be A Legionnaire (Bellfruit) (Scorpion 4) (set 8)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4leg ,0, sc4_200_5rb, sc4leg, sc4_state, sc4leg, ROT0, "BFM","Who Wants To Be A Legionnaire (Bellfruit) (Scorpion 4) (set 1)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4lega ,sc4leg, sc4_200_5rb, sc4leg, sc4_state, sc4leg, ROT0, "BFM","Who Wants To Be A Legionnaire (Bellfruit) (Scorpion 4) (set 2)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4legb ,sc4leg, sc4_200_5rb, sc4leg, sc4_state, sc4leg, ROT0, "BFM","Who Wants To Be A Legionnaire (Bellfruit) (Scorpion 4) (set 3)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4legc ,sc4leg, sc4_200_5rb, sc4leg, sc4_state, sc4leg, ROT0, "BFM","Who Wants To Be A Legionnaire (Bellfruit) (Scorpion 4) (set 4)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4legd ,sc4leg, sc4_200_5rb, sc4leg, sc4_state, sc4leg, ROT0, "BFM","Who Wants To Be A Legionnaire (Bellfruit) (Scorpion 4) (set 5)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4lege ,sc4leg, sc4_200_5rb, sc4leg, sc4_state, sc4leg, ROT0, "BFM","Who Wants To Be A Legionnaire (Bellfruit) (Scorpion 4) (set 6)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4legf ,sc4leg, sc4_200_5rb, sc4leg, sc4_state, sc4leg, ROT0, "BFM","Who Wants To Be A Legionnaire (Bellfruit) (Scorpion 4) (set 7)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4legg ,sc4leg, sc4_200_5rb, sc4leg, sc4_state, sc4leg, ROT0, "BFM","Who Wants To Be A Legionnaire (Bellfruit) (Scorpion 4) (set 8)", MACHINE_FLAGS, layout_bfm_sc4 )
-GAMEL( 200?, sc4legh ,sc4leg, sc4_200_5rb, sc4leg, sc4_state, sc4leg, ROT0, "BFM","Who Wants To Be A Legionnaire (Bellfruit) (Scorpion 4) (set 9)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 ) // doesn't do anything?
+GAMEL( 200?, sc4legh ,sc4leg, sc4_200_5rb, sc4leg, sc4_state, sc4leg, ROT0, "BFM","Who Wants To Be A Legionnaire (Bellfruit) (Scorpion 4) (set 9)", MACHINE_FLAGS, layout_bfm_sc4 ) // doesn't do anything?
DRIVER_INIT_MEMBER(sc4_state,sc4cleg)
@@ -31405,14 +31407,14 @@ INPUT_PORTS_START( sc4legcb ) // this structure is generated
INPUT_PORTS_END
// PR1038 CLUB WHO WANTS TO BE A LEGIONNAIRE PR1038 CLUB WWTBAL SOUNDS11
-GAMEL( 200?, sc4legcb ,0, sc4_200_std, sc4legcb, sc4_state, sc4cleg, ROT0, "BFM","Who Wants To Be A Legionnaire Club (Bellfruit) (Scorpion 4) (set 1)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4legcba ,sc4legcb, sc4_200_std, sc4legcb, sc4_state, sc4cleg, ROT0, "BFM","Who Wants To Be A Legionnaire Club (Bellfruit) (Scorpion 4) (set 2)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4legcbb ,sc4legcb, sc4_200_std, sc4legcb, sc4_state, sc4cleg, ROT0, "BFM","Who Wants To Be A Legionnaire Club (Bellfruit) (Scorpion 4) (set 3)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4legcbc ,sc4legcb, sc4_200_std, sc4legcb, sc4_state, sc4cleg, ROT0, "BFM","Who Wants To Be A Legionnaire Club (Bellfruit) (Scorpion 4) (set 4)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4legcb ,0, sc4_200_std, sc4legcb, sc4_state, sc4cleg, ROT0, "BFM","Who Wants To Be A Legionnaire Club (Bellfruit) (Scorpion 4) (set 1)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4legcba ,sc4legcb, sc4_200_std, sc4legcb, sc4_state, sc4cleg, ROT0, "BFM","Who Wants To Be A Legionnaire Club (Bellfruit) (Scorpion 4) (set 2)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4legcbb ,sc4legcb, sc4_200_std, sc4legcb, sc4_state, sc4cleg, ROT0, "BFM","Who Wants To Be A Legionnaire Club (Bellfruit) (Scorpion 4) (set 3)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4legcbc ,sc4legcb, sc4_200_std, sc4legcb, sc4_state, sc4cleg, ROT0, "BFM","Who Wants To Be A Legionnaire Club (Bellfruit) (Scorpion 4) (set 4)", MACHINE_FLAGS, layout_bfm_sc4 )
// Alarms through startup, doesn't start game
// PR1038 CLUB WHO WANTS TO BE A LEGIONNAIRE WWTB LEGIONNAIRE CLUB PR1038 CLUB WWTBAL SOUNDS11
-GAMEL( 200?, sc4legcbd ,sc4legcb, sc4_200_std, sc4legcb, sc4_state, sc4cleg_mbus, ROT0, "BFM","Who Wants To Be A Legionnaire Club (Bellfruit) (Scorpion 4) (set 5)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4legcbe ,sc4legcb, sc4_200_std, sc4legcb, sc4_state, sc4cleg_mbus, ROT0, "BFM","Who Wants To Be A Legionnaire Club (Bellfruit) (Scorpion 4) (set 6)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4legcbd ,sc4legcb, sc4_200_std, sc4legcb, sc4_state, sc4cleg_mbus, ROT0, "BFM","Who Wants To Be A Legionnaire Club (Bellfruit) (Scorpion 4) (set 5)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4legcbe ,sc4legcb, sc4_200_std, sc4legcb, sc4_state, sc4cleg_mbus, ROT0, "BFM","Who Wants To Be A Legionnaire Club (Bellfruit) (Scorpion 4) (set 6)", MACHINE_FLAGS, layout_bfm_sc4 )
DRIVER_INIT_MEMBER(sc4_state,sc4wspin)
@@ -31462,11 +31464,11 @@ INPUT_PORTS_START( sc4wspin ) // this structure is generated
INPUT_PORTS_END
// QPS162 WIN SPINNER Arcade Version 011 WINSPINNERSND WIN SPINNER
-GAMEL( 200?, sc4wspin ,0, sc4_200_4rb, sc4wspin, sc4_state, sc4wspin, ROT0, "Qps","Win Spinner Arcade (011) (Qps) (Scorpion 4) (set 1)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4wspinc ,sc4wspin, sc4_200_4rb, sc4wspin, sc4_state, sc4wspin, ROT0, "Qps","Win Spinner Arcade (011) (Qps) (Scorpion 4) (set 2)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4wspin ,0, sc4_200_4rb, sc4wspin, sc4_state, sc4wspin, ROT0, "Qps","Win Spinner Arcade (011) (Qps) (Scorpion 4) (set 1)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4wspinc ,sc4wspin, sc4_200_4rb, sc4wspin, sc4_state, sc4wspin, ROT0, "Qps","Win Spinner Arcade (011) (Qps) (Scorpion 4) (set 2)", MACHINE_FLAGS, layout_bfm_sc4 )
// QPS162 WIN SPINNER SP Arcade Version 011 WINSPINNERSND WIN SPINNER
-GAMEL( 200?, sc4wspinb ,sc4wspin, sc4_200_4rb, sc4wspin, sc4_state, sc4wspin, ROT0, "Qps","Win Spinner SP Arcade (011) (Qps) (Scorpion 4) (set 1)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4wspind ,sc4wspin, sc4_200_4rb, sc4wspin, sc4_state, sc4wspin, ROT0, "Qps","Win Spinner SP Arcade (011) (Qps) (Scorpion 4) (set 2)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4wspinb ,sc4wspin, sc4_200_4rb, sc4wspin, sc4_state, sc4wspin, ROT0, "Qps","Win Spinner SP Arcade (011) (Qps) (Scorpion 4) (set 1)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4wspind ,sc4wspin, sc4_200_4rb, sc4wspin, sc4_state, sc4wspin, ROT0, "Qps","Win Spinner SP Arcade (011) (Qps) (Scorpion 4) (set 2)", MACHINE_FLAGS, layout_bfm_sc4 )
DRIVER_INIT_MEMBER(sc4_state,sc4wwys)
@@ -31542,8 +31544,8 @@ INPUT_PORTS_START( sc4wwys ) // this structure is generated
INPUT_PORTS_END
// PR1301 WIN WHEN YOUR SPINNING PR1301 WIN W Y S SOUNDS11
-GAMEL( 200?, sc4wwys ,0, sc4_200_5ra, sc4wwys, sc4_state, sc4wwys, ROT0, "BFM","Win When Your Spinning (Bellfruit) (Scorpion 4) (set 1)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4wwysa ,sc4wwys, sc4_200_5ra, sc4wwys, sc4_state, sc4wwys, ROT0, "BFM","Win When Your Spinning (Bellfruit) (Scorpion 4) (set 2)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4wwys ,0, sc4_200_5ra, sc4wwys, sc4_state, sc4wwys, ROT0, "BFM","Win When Your Spinning (Bellfruit) (Scorpion 4) (set 1)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4wwysa ,sc4wwys, sc4_200_5ra, sc4wwys, sc4_state, sc4wwys, ROT0, "BFM","Win When Your Spinning (Bellfruit) (Scorpion 4) (set 2)", MACHINE_FLAGS, layout_bfm_sc4 )
DRIVER_INIT_MEMBER(sc4_state,sc4winsptb)
@@ -31600,47 +31602,47 @@ INPUT_PORTS_START( sc4winspa ) // this structure is generated
INPUT_PORTS_END
// PR2526 WINNING SPIN TOP BOX WINNINGSPINSND WINNING SPIN
-GAMEL( 200?, sc4winsp ,0, sc4_3reel, sc4, sc4_state, sc4winsptb, ROT0, "Qps","Winning Spin Top Box (PR2526, WSPT) (Qps) (Scorpion 4) (set 1)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4winsp ,0, sc4_3reel, sc4, sc4_state, sc4winsptb, ROT0, "Qps","Winning Spin Top Box (PR2526, WSPT) (Qps) (Scorpion 4) (set 1)", MACHINE_FLAGS, layout_bfm_sc4 )
// PR2526 WINNING SPIN TOP BOX WINNINGSPINSND WINNING SPIN
-GAMEL( 200?, sc4winsp0 ,sc4winsp, sc4_3reel, sc4, sc4_state, sc4winsptb, ROT0, "Qps","Winning Spin Top Box (PR2526, WSPT) (Qps) (Scorpion 4) (set 2)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 ) // was in a Win Spinner set, but probably belongs here
+GAMEL( 200?, sc4winsp0 ,sc4winsp, sc4_3reel, sc4, sc4_state, sc4winsptb, ROT0, "Qps","Winning Spin Top Box (PR2526, WSPT) (Qps) (Scorpion 4) (set 2)", MACHINE_FLAGS, layout_bfm_sc4 ) // was in a Win Spinner set, but probably belongs here
// PR2546 WINNING SPIN Bingo Version011 WINNINGSPINSND WINNING SPIN
-GAMEL( 200?, sc4winspa ,sc4winsp, sc4_200_4r, sc4winspa, sc4_state, sc4winsp, ROT0, "Qps","Winning Spin (Bingo V011) (Qps) (Scorpion 4) (set 1)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4winsph ,sc4winsp, sc4_200_4r, sc4winspa, sc4_state, sc4winsp, ROT0, "Qps","Winning Spin (Bingo V011) (Qps) (Scorpion 4) (set 2)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4winspa ,sc4winsp, sc4_200_4r, sc4winspa, sc4_state, sc4winsp, ROT0, "Qps","Winning Spin (Bingo V011) (Qps) (Scorpion 4) (set 1)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4winsph ,sc4winsp, sc4_200_4r, sc4winspa, sc4_state, sc4winsp, ROT0, "Qps","Winning Spin (Bingo V011) (Qps) (Scorpion 4) (set 2)", MACHINE_FLAGS, layout_bfm_sc4 )
// PR2546 WINNING SPIN Bingo Version 012 WINNINGSPINSND WINNING SPIN
-GAMEL( 200?, sc4winspe ,sc4winsp, sc4_200_4r, sc4winspa, sc4_state, sc4winsp, ROT0, "Qps","Winning Spin (Bingo V012) (Qps) (Scorpion 4) (set 1)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4winspl ,sc4winsp, sc4_200_4r, sc4winspa, sc4_state, sc4winsp, ROT0, "Qps","Winning Spin (Bingo V012) (Qps) (Scorpion 4) (set 2)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4winspq ,sc4winsp, sc4_200_4r, sc4winspa, sc4_state, sc4winsp, ROT0, "Qps","Winning Spin (Bingo V012) (Qps) (Scorpion 4) (set 3)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4winspw ,sc4winsp, sc4_200_4r, sc4winspa, sc4_state, sc4winsp, ROT0, "Qps","Winning Spin (Bingo V012) (Qps) (Scorpion 4) (set 4)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4winspe ,sc4winsp, sc4_200_4r, sc4winspa, sc4_state, sc4winsp, ROT0, "Qps","Winning Spin (Bingo V012) (Qps) (Scorpion 4) (set 1)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4winspl ,sc4winsp, sc4_200_4r, sc4winspa, sc4_state, sc4winsp, ROT0, "Qps","Winning Spin (Bingo V012) (Qps) (Scorpion 4) (set 2)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4winspq ,sc4winsp, sc4_200_4r, sc4winspa, sc4_state, sc4winsp, ROT0, "Qps","Winning Spin (Bingo V012) (Qps) (Scorpion 4) (set 3)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4winspw ,sc4winsp, sc4_200_4r, sc4winspa, sc4_state, sc4winsp, ROT0, "Qps","Winning Spin (Bingo V012) (Qps) (Scorpion 4) (set 4)", MACHINE_FLAGS, layout_bfm_sc4 )
// PR2546 WINNING SPIN Arcade Version011 WINNINGSPINSND WINNING SPIN
-GAMEL( 200?, sc4winspd ,sc4winsp, sc4_200_4r, sc4winspa, sc4_state, sc4winsp, ROT0, "Qps","Winning Spin (Arcade V011) (Qps) (Scorpion 4) (set 1)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4winspk ,sc4winsp, sc4_200_4r, sc4winspa, sc4_state, sc4winsp, ROT0, "Qps","Winning Spin (Arcade V011) (Qps) (Scorpion 4) (set 2)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4winspd ,sc4winsp, sc4_200_4r, sc4winspa, sc4_state, sc4winsp, ROT0, "Qps","Winning Spin (Arcade V011) (Qps) (Scorpion 4) (set 1)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4winspk ,sc4winsp, sc4_200_4r, sc4winspa, sc4_state, sc4winsp, ROT0, "Qps","Winning Spin (Arcade V011) (Qps) (Scorpion 4) (set 2)", MACHINE_FLAGS, layout_bfm_sc4 )
// PR2546 WINNING SPIN Arcade Version 012 WINNINGSPINSND WINNING SPIN
-GAMEL( 200?, sc4winspt ,sc4winsp, sc4_200_4r, sc4winspa, sc4_state, sc4winsp, ROT0, "Qps","Winning Spin (Arcade V012) (Qps) (Scorpion 4) (set 1)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4winspz ,sc4winsp, sc4_200_4r, sc4winspa, sc4_state, sc4winsp, ROT0, "Qps","Winning Spin (Arcade V012) (Qps) (Scorpion 4) (set 2)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4winspt ,sc4winsp, sc4_200_4r, sc4winspa, sc4_state, sc4winsp, ROT0, "Qps","Winning Spin (Arcade V012) (Qps) (Scorpion 4) (set 1)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4winspz ,sc4winsp, sc4_200_4r, sc4winspa, sc4_state, sc4winsp, ROT0, "Qps","Winning Spin (Arcade V012) (Qps) (Scorpion 4) (set 2)", MACHINE_FLAGS, layout_bfm_sc4 )
// PR2546 WINNING SPIN Version 021 WINNINGSPINSND WINNING SPIN
-GAMEL( 200?, sc4winspb ,sc4winsp, sc4_200_4r, sc4winspa, sc4_state, sc4winsp, ROT0, "Qps","Winning Spin (V021) (Qps) (Scorpion 4) (set 1)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4winspi ,sc4winsp, sc4_200_4r, sc4winspa, sc4_state, sc4winsp, ROT0, "Qps","Winning Spin (V021) (Qps) (Scorpion 4) (set 2)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4winspb ,sc4winsp, sc4_200_4r, sc4winspa, sc4_state, sc4winsp, ROT0, "Qps","Winning Spin (V021) (Qps) (Scorpion 4) (set 1)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4winspi ,sc4winsp, sc4_200_4r, sc4winspa, sc4_state, sc4winsp, ROT0, "Qps","Winning Spin (V021) (Qps) (Scorpion 4) (set 2)", MACHINE_FLAGS, layout_bfm_sc4 )
// PR2546 WINNING SPIN Version 022 WINNINGSPINSND WINNING SPIN
-GAMEL( 200?, sc4winspf ,sc4winsp, sc4_200_4r, sc4winspa, sc4_state, sc4winsp, ROT0, "Qps","Winning Spin (V022) (Qps) (Scorpion 4) (set 1)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4winspm ,sc4winsp, sc4_200_4r, sc4winspa, sc4_state, sc4winsp, ROT0, "Qps","Winning Spin (V022) (Qps) (Scorpion 4) (set 2)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4winspr ,sc4winsp, sc4_200_4r, sc4winspa, sc4_state, sc4winsp, ROT0, "Qps","Winning Spin (V022) (Qps) (Scorpion 4) (set 3)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4winspx ,sc4winsp, sc4_200_4r, sc4winspa, sc4_state, sc4winsp, ROT0, "Qps","Winning Spin (V022) (Qps) (Scorpion 4) (set 4)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4winspf ,sc4winsp, sc4_200_4r, sc4winspa, sc4_state, sc4winsp, ROT0, "Qps","Winning Spin (V022) (Qps) (Scorpion 4) (set 1)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4winspm ,sc4winsp, sc4_200_4r, sc4winspa, sc4_state, sc4winsp, ROT0, "Qps","Winning Spin (V022) (Qps) (Scorpion 4) (set 2)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4winspr ,sc4winsp, sc4_200_4r, sc4winspa, sc4_state, sc4winsp, ROT0, "Qps","Winning Spin (V022) (Qps) (Scorpion 4) (set 3)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4winspx ,sc4winsp, sc4_200_4r, sc4winspa, sc4_state, sc4winsp, ROT0, "Qps","Winning Spin (V022) (Qps) (Scorpion 4) (set 4)", MACHINE_FLAGS, layout_bfm_sc4 )
// PR2546 WINNING SPIN Version 031 WINNINGSPINSND WINNING SPIN
-GAMEL( 200?, sc4winspc ,sc4winsp, sc4_200_4r, sc4winspa, sc4_state, sc4winsp, ROT0, "Qps","Winning Spin (V031) (Qps) (Scorpion 4) (set 1)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4winspj ,sc4winsp, sc4_200_4r, sc4winspa, sc4_state, sc4winsp, ROT0, "Qps","Winning Spin (V031) (Qps) (Scorpion 4) (set 2)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4winspc ,sc4winsp, sc4_200_4r, sc4winspa, sc4_state, sc4winsp, ROT0, "Qps","Winning Spin (V031) (Qps) (Scorpion 4) (set 1)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4winspj ,sc4winsp, sc4_200_4r, sc4winspa, sc4_state, sc4winsp, ROT0, "Qps","Winning Spin (V031) (Qps) (Scorpion 4) (set 2)", MACHINE_FLAGS, layout_bfm_sc4 )
// PR2546 WINNING SPIN Version 032 WINNINGSPINSND WINNING SPIN
-GAMEL( 200?, sc4winspg ,sc4winsp, sc4_200_4r, sc4winspa, sc4_state, sc4winsp, ROT0, "Qps","Winning Spin (V032) (Qps) (Scorpion 4) (set 1)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4winspn ,sc4winsp, sc4_200_4r, sc4winspa, sc4_state, sc4winsp, ROT0, "Qps","Winning Spin (V032) (Qps) (Scorpion 4) (set 2)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4winsps ,sc4winsp, sc4_200_4r, sc4winspa, sc4_state, sc4winsp, ROT0, "Qps","Winning Spin (V032) (Qps) (Scorpion 4) (set 3)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4winspy ,sc4winsp, sc4_200_4r, sc4winspa, sc4_state, sc4winsp, ROT0, "Qps","Winning Spin (V032) (Qps) (Scorpion 4) (set 4)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4winspg ,sc4winsp, sc4_200_4r, sc4winspa, sc4_state, sc4winsp, ROT0, "Qps","Winning Spin (V032) (Qps) (Scorpion 4) (set 1)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4winspn ,sc4winsp, sc4_200_4r, sc4winspa, sc4_state, sc4winsp, ROT0, "Qps","Winning Spin (V032) (Qps) (Scorpion 4) (set 2)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4winsps ,sc4winsp, sc4_200_4r, sc4winspa, sc4_state, sc4winsp, ROT0, "Qps","Winning Spin (V032) (Qps) (Scorpion 4) (set 3)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4winspy ,sc4winsp, sc4_200_4r, sc4winspa, sc4_state, sc4winsp, ROT0, "Qps","Winning Spin (V032) (Qps) (Scorpion 4) (set 4)", MACHINE_FLAGS, layout_bfm_sc4 )
// PR2546 WINNING SPIN Arcade Version 061 WINNINGSPINSND WINNING SPIN
// these can be booted
-GAMEL( 200?, sc4winspo ,sc4winsp, sc4_200_4r, sc4winspa, sc4_state, sc4winsp, ROT0, "Qps","Winning Spin (Arcade V061) (Qps) (Scorpion 4) (set 1)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4winspu ,sc4winsp, sc4_200_4r, sc4winspa, sc4_state, sc4winsp, ROT0, "Qps","Winning Spin (Arcade V061) (Qps) (Scorpion 4) (set 2)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4winspo ,sc4winsp, sc4_200_4r, sc4winspa, sc4_state, sc4winsp, ROT0, "Qps","Winning Spin (Arcade V061) (Qps) (Scorpion 4) (set 1)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4winspu ,sc4winsp, sc4_200_4r, sc4winspa, sc4_state, sc4winsp, ROT0, "Qps","Winning Spin (Arcade V061) (Qps) (Scorpion 4) (set 2)", MACHINE_FLAGS, layout_bfm_sc4 )
// PR2546 WINNING SPIN Arcade Version 062 WINNINGSPINSND WINNING SPIN
// these can be booted
-GAMEL( 200?, sc4winspp ,sc4winsp, sc4_200_4r, sc4winspa, sc4_state, sc4winsp, ROT0, "Qps","Winning Spin (Arcade V062) (Qps) (Scorpion 4) (set 1)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4winspv ,sc4winsp, sc4_200_4r, sc4winspa, sc4_state, sc4winsp, ROT0, "Qps","Winning Spin (Arcade V062) (Qps) (Scorpion 4) (set 2)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4winspp ,sc4winsp, sc4_200_4r, sc4winspa, sc4_state, sc4winsp, ROT0, "Qps","Winning Spin (Arcade V062) (Qps) (Scorpion 4) (set 1)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4winspv ,sc4winsp, sc4_200_4r, sc4winspa, sc4_state, sc4winsp, ROT0, "Qps","Winning Spin (Arcade V062) (Qps) (Scorpion 4) (set 2)", MACHINE_FLAGS, layout_bfm_sc4 )
DRIVER_INIT_MEMBER(sc4_state,sc4wondw)
@@ -31708,8 +31710,8 @@ INPUT_PORTS_START( sc4wondw ) // this structure is generated
INPUT_PORTS_END
// PR1318 WONDER WHEEL PR1314 WONDER WHEEL SOUNDS11
-GAMEL( 200?, sc4wondw ,0, sc4_200_5ra, sc4wondw, sc4_state, sc4wondw, ROT0, "BFM","Wonder Wheel (Bellfruit) (Scorpion 4) (set 1)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4wondwa ,sc4wondw, sc4_200_5ra, sc4wondw, sc4_state, sc4wondw, ROT0, "BFM","Wonder Wheel (Bellfruit) (Scorpion 4) (set 2)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4wondw ,0, sc4_200_5ra, sc4wondw, sc4_state, sc4wondw, ROT0, "BFM","Wonder Wheel (Bellfruit) (Scorpion 4) (set 1)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4wondwa ,sc4wondw, sc4_200_5ra, sc4wondw, sc4_state, sc4wondw, ROT0, "BFM","Wonder Wheel (Bellfruit) (Scorpion 4) (set 2)", MACHINE_FLAGS, layout_bfm_sc4 )
DRIVER_INIT_MEMBER(sc4_state,sc4xmark)
{
@@ -31788,8 +31790,8 @@ INPUT_PORTS_START( sc4xmark ) // this structure is generated
INPUT_PORTS_END
// PR1116 X MARKS THE SPOT PR1116 X MARKS THE SPOT SOUNDS11
-GAMEL( 200?, sc4xmark ,0, sc4_200_4rb, sc4xmark, sc4_state, sc4xmark, ROT0, "BFM","X Marks The Spot (Bellfruit) (Scorpion 4) (set 1)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4xmarka ,sc4xmark, sc4_200_4rb, sc4xmark, sc4_state, sc4xmark, ROT0, "BFM","X Marks The Spot (Bellfruit) (Scorpion 4) (set 2)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4xmark ,0, sc4_200_4rb, sc4xmark, sc4_state, sc4xmark, ROT0, "BFM","X Marks The Spot (Bellfruit) (Scorpion 4) (set 1)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4xmarka ,sc4xmark, sc4_200_4rb, sc4xmark, sc4_state, sc4xmark, ROT0, "BFM","X Marks The Spot (Bellfruit) (Scorpion 4) (set 2)", MACHINE_FLAGS, layout_bfm_sc4 )
@@ -31853,14 +31855,14 @@ INPUT_PORTS_START( sc4blokq ) // this structure is generated
INPUT_PORTS_END
// PR2025 BLOCK BUSTER BUSTERSND BLOCK BUSTER
-GAMEL( 200?, sc4blokq ,0, sc4_200_4ra, sc4blokq, sc4_state, sc4blokq, ROT0, "Qps","Blockbuster (Qps) (Scorpion 4) (set 1)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4blokqa ,sc4blokq, sc4_200_4ra, sc4blokq, sc4_state, sc4blokq, ROT0, "Qps","Blockbuster (Qps) (Scorpion 4) (set 2)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4blokqb ,sc4blokq, sc4_200_4ra, sc4blokq, sc4_state, sc4blokq, ROT0, "Qps","Blockbuster (Qps) (Scorpion 4) (set 3)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4blokqc ,sc4blokq, sc4_200_4ra, sc4blokq, sc4_state, sc4blokq, ROT0, "Qps","Blockbuster (Qps) (Scorpion 4) (set 4)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4blokqd ,sc4blokq, sc4_200_4ra, sc4blokq, sc4_state, sc4blokq, ROT0, "Qps","Blockbuster (Qps) (Scorpion 4) (set 5)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4blokqe ,sc4blokq, sc4_200_4ra, sc4blokq, sc4_state, sc4blokq, ROT0, "Qps","Blockbuster (Qps) (Scorpion 4) (set 6)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4blokq ,0, sc4_200_4ra, sc4blokq, sc4_state, sc4blokq, ROT0, "Qps","Blockbuster (Qps) (Scorpion 4) (set 1)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4blokqa ,sc4blokq, sc4_200_4ra, sc4blokq, sc4_state, sc4blokq, ROT0, "Qps","Blockbuster (Qps) (Scorpion 4) (set 2)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4blokqb ,sc4blokq, sc4_200_4ra, sc4blokq, sc4_state, sc4blokq, ROT0, "Qps","Blockbuster (Qps) (Scorpion 4) (set 3)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4blokqc ,sc4blokq, sc4_200_4ra, sc4blokq, sc4_state, sc4blokq, ROT0, "Qps","Blockbuster (Qps) (Scorpion 4) (set 4)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4blokqd ,sc4blokq, sc4_200_4ra, sc4blokq, sc4_state, sc4blokq, ROT0, "Qps","Blockbuster (Qps) (Scorpion 4) (set 5)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4blokqe ,sc4blokq, sc4_200_4ra, sc4blokq, sc4_state, sc4blokq, ROT0, "Qps","Blockbuster (Qps) (Scorpion 4) (set 6)", MACHINE_FLAGS, layout_bfm_sc4 )
// PR2025 BLOCK BUSTER BUSTERSND BLOCK BUSTER (same as sc4blokq ?)
-GAMEL( 200?, sc4bbust ,sc4blokq, sc4_200_4ra, sc4blokq, sc4_state, sc4blokq, ROT0, "Mazooma","Blockbuster (Mazooma) (Scorpion 4)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4bbust ,sc4blokq, sc4_200_4ra, sc4blokq, sc4_state, sc4blokq, ROT0, "Mazooma","Blockbuster (Mazooma) (Scorpion 4)", MACHINE_FLAGS, layout_bfm_sc4 )
@@ -31920,8 +31922,8 @@ INPUT_PORTS_START( sc4onup ) // this structure is generated
INPUT_PORTS_END
// PR2076 ON THE UP HYPE SOUNDS ON THE UP
-GAMEL( 200?, sc4onup ,0, sc4_200_5r, sc4onup, sc4_state, sc4onup, ROT0, "BFM","On The Up (Mazooma) (Scorpion 4) (set 1)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4onupa ,sc4onup, sc4_200_5r, sc4onup, sc4_state, sc4onup, ROT0, "BFM","On The Up (Mazooma) (Scorpion 4) (set 2)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4onup ,0, sc4_200_5r, sc4onup, sc4_state, sc4onup, ROT0, "BFM","On The Up (Mazooma) (Scorpion 4) (set 1)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4onupa ,sc4onup, sc4_200_5r, sc4onup, sc4_state, sc4onup, ROT0, "BFM","On The Up (Mazooma) (Scorpion 4) (set 2)", MACHINE_FLAGS, layout_bfm_sc4 )
DRIVER_INIT_MEMBER(sc4_state,sc4hyper)
@@ -31979,8 +31981,8 @@ INPUT_PORTS_START( sc4hyper ) // this structure is generated
INPUT_PORTS_END
// PR2053 HYPERACTIVEL HYPE SOUNDS HYPERACTIVE
-GAMEL( 200?, sc4hyper ,0, sc4_5reel, sc4hyper, sc4_state, sc4hyper, ROT0, "Mazooma","Hyperactive (Mazooma) (Scorpion 4) (set 1)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4hypera ,sc4hyper, sc4_5reel, sc4hyper, sc4_state, sc4hyper, ROT0, "Mazooma","Hyperactive (Mazooma) (Scorpion 4) (set 2)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4hyper ,0, sc4_5reel, sc4hyper, sc4_state, sc4hyper, ROT0, "Mazooma","Hyperactive (Mazooma) (Scorpion 4) (set 1)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4hypera ,sc4hyper, sc4_5reel, sc4hyper, sc4_state, sc4hyper, ROT0, "Mazooma","Hyperactive (Mazooma) (Scorpion 4) (set 2)", MACHINE_FLAGS, layout_bfm_sc4 )
DRIVER_INIT_MEMBER(sc4_state,sc4pglcl)
@@ -32035,15 +32037,15 @@ INPUT_PORTS_START( sc4pglcl ) // this structure is generated
INPUT_PORTS_END
// PR1623 PHARAOHS GOLD PHARAOHS GOLD CLUB PR1623 CLASS PHAR GOLD SOUNDS11
-GAMEL( 200?, sc4pglcl ,0, sc4_5reel, sc4pglcl, sc4_state, sc4pglcl, ROT0, "BFM","Pharaoh's Gold Club (Bellfruit) (Scorpion 4) (set 1)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 ) // PAY UNIT ERR 17
-GAMEL( 200?, sc4pglcla ,sc4pglcl, sc4_5reel, sc4pglcl, sc4_state, sc4pglcl, ROT0, "BFM","Pharaoh's Gold Club (Bellfruit) (Scorpion 4) (set 2)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4pglclb ,sc4pglcl, sc4_5reel, sc4pglcl, sc4_state, sc4pglcl, ROT0, "BFM","Pharaoh's Gold Club (Bellfruit) (Scorpion 4) (set 3)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4pglclc ,sc4pglcl, sc4_5reel, sc4pglcl, sc4_state, sc4pglcl, ROT0, "BFM","Pharaoh's Gold Club (Bellfruit) (Scorpion 4) (set 4)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4pglcld ,sc4pglcl, sc4_5reel, sc4pglcl, sc4_state, sc4pglcl, ROT0, "BFM","Pharaoh's Gold Club (Bellfruit) (Scorpion 4) (set 5)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4pglcle ,sc4pglcl, sc4_5reel, sc4pglcl, sc4_state, sc4pglcl, ROT0, "BFM","Pharaoh's Gold Club (Bellfruit) (Scorpion 4) (set 6)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4pglclf ,sc4pglcl, sc4_5reel, sc4pglcl, sc4_state, sc4pglcl, ROT0, "BFM","Pharaoh's Gold Club (Bellfruit) (Scorpion 4) (set 7)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4pglclg ,sc4pglcl, sc4_5reel, sc4pglcl, sc4_state, sc4pglcl, ROT0, "BFM","Pharaoh's Gold Club (Bellfruit) (Scorpion 4) (set 8)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4pglclh ,sc4pglcl, sc4_5reel, sc4pglcl, sc4_state, sc4pglcl, ROT0, "BFM","Pharaoh's Gold Club (Bellfruit) (Scorpion 4) (set 9)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4pglcl ,0, sc4_5reel, sc4pglcl, sc4_state, sc4pglcl, ROT0, "BFM","Pharaoh's Gold Club (Bellfruit) (Scorpion 4) (set 1)", MACHINE_FLAGS, layout_bfm_sc4 ) // PAY UNIT ERR 17
+GAMEL( 200?, sc4pglcla ,sc4pglcl, sc4_5reel, sc4pglcl, sc4_state, sc4pglcl, ROT0, "BFM","Pharaoh's Gold Club (Bellfruit) (Scorpion 4) (set 2)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4pglclb ,sc4pglcl, sc4_5reel, sc4pglcl, sc4_state, sc4pglcl, ROT0, "BFM","Pharaoh's Gold Club (Bellfruit) (Scorpion 4) (set 3)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4pglclc ,sc4pglcl, sc4_5reel, sc4pglcl, sc4_state, sc4pglcl, ROT0, "BFM","Pharaoh's Gold Club (Bellfruit) (Scorpion 4) (set 4)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4pglcld ,sc4pglcl, sc4_5reel, sc4pglcl, sc4_state, sc4pglcl, ROT0, "BFM","Pharaoh's Gold Club (Bellfruit) (Scorpion 4) (set 5)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4pglcle ,sc4pglcl, sc4_5reel, sc4pglcl, sc4_state, sc4pglcl, ROT0, "BFM","Pharaoh's Gold Club (Bellfruit) (Scorpion 4) (set 6)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4pglclf ,sc4pglcl, sc4_5reel, sc4pglcl, sc4_state, sc4pglcl, ROT0, "BFM","Pharaoh's Gold Club (Bellfruit) (Scorpion 4) (set 7)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4pglclg ,sc4pglcl, sc4_5reel, sc4pglcl, sc4_state, sc4pglcl, ROT0, "BFM","Pharaoh's Gold Club (Bellfruit) (Scorpion 4) (set 8)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4pglclh ,sc4pglcl, sc4_5reel, sc4pglcl, sc4_state, sc4pglcl, ROT0, "BFM","Pharaoh's Gold Club (Bellfruit) (Scorpion 4) (set 9)", MACHINE_FLAGS, layout_bfm_sc4 )
DRIVER_INIT_MEMBER(sc4_state,sc4po8)
{
@@ -32102,26 +32104,26 @@ INPUT_PORTS_START( sc4po8 ) // this structure is generated
INPUT_PORTS_END
// PR2530 PIECES OF EIGHT V1.0 PIECESOFEIGHTSND PIECES OF EIGHT
-GAMEL( 200?, sc4po8 ,0, sc4_4reel, sc4po8, sc4_state, sc4po8, ROT0, "Qps","Pieces Of Eight (V1.0) (Qps) (Scorpion 4) (set 1)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4po8e ,sc4po8, sc4_4reel, sc4po8, sc4_state, sc4po8, ROT0, "Qps","Pieces Of Eight (V1.0) (Qps) (Scorpion 4) (set 2)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4po8f ,sc4po8, sc4_4reel, sc4po8, sc4_state, sc4po8, ROT0, "Qps","Pieces Of Eight (V1.0) (Qps) (Scorpion 4) (set 3)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4po8 ,0, sc4_4reel, sc4po8, sc4_state, sc4po8, ROT0, "Qps","Pieces Of Eight (V1.0) (Qps) (Scorpion 4) (set 1)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4po8e ,sc4po8, sc4_4reel, sc4po8, sc4_state, sc4po8, ROT0, "Qps","Pieces Of Eight (V1.0) (Qps) (Scorpion 4) (set 2)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4po8f ,sc4po8, sc4_4reel, sc4po8, sc4_state, sc4po8, ROT0, "Qps","Pieces Of Eight (V1.0) (Qps) (Scorpion 4) (set 3)", MACHINE_FLAGS, layout_bfm_sc4 )
// PR2530 PIECES OF EIGHT V1.1 PIECESOFEIGHTSND PIECES OF EIGHT
-GAMEL( 200?, sc4po8a ,sc4po8, sc4_4reel, sc4po8, sc4_state, sc4po8, ROT0, "Qps","Pieces Of Eight (V1.1) (Qps) (Scorpion 4) (set 1)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4po8b ,sc4po8, sc4_4reel, sc4po8, sc4_state, sc4po8, ROT0, "Qps","Pieces Of Eight (V1.1) (Qps) (Scorpion 4) (set 2)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4po8g ,sc4po8, sc4_4reel, sc4po8, sc4_state, sc4po8, ROT0, "Qps","Pieces Of Eight (V1.1) (Qps) (Scorpion 4) (set 3)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4po8h ,sc4po8, sc4_4reel, sc4po8, sc4_state, sc4po8, ROT0, "Qps","Pieces Of Eight (V1.1) (Qps) (Scorpion 4) (set 4)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4po8a ,sc4po8, sc4_4reel, sc4po8, sc4_state, sc4po8, ROT0, "Qps","Pieces Of Eight (V1.1) (Qps) (Scorpion 4) (set 1)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4po8b ,sc4po8, sc4_4reel, sc4po8, sc4_state, sc4po8, ROT0, "Qps","Pieces Of Eight (V1.1) (Qps) (Scorpion 4) (set 2)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4po8g ,sc4po8, sc4_4reel, sc4po8, sc4_state, sc4po8, ROT0, "Qps","Pieces Of Eight (V1.1) (Qps) (Scorpion 4) (set 3)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4po8h ,sc4po8, sc4_4reel, sc4po8, sc4_state, sc4po8, ROT0, "Qps","Pieces Of Eight (V1.1) (Qps) (Scorpion 4) (set 4)", MACHINE_FLAGS, layout_bfm_sc4 )
// PR2530 PIECES OF EIGHT 011 PIECESOFEIGHTSND PIECES OF EIGHT
-GAMEL( 200?, sc4po8c ,sc4po8, sc4_4reel, sc4po8, sc4_state, sc4po8_mbus, ROT0, "Qps","Pieces Of Eight (011) (Qps) (Scorpion 4) (set 1)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4po8m ,sc4po8, sc4_4reel, sc4po8, sc4_state, sc4po8_mbus, ROT0, "QPS","Pieces Of Eight (011) (Qps) (Scorpion 4) (set 2)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4po8c ,sc4po8, sc4_4reel, sc4po8, sc4_state, sc4po8_mbus, ROT0, "Qps","Pieces Of Eight (011) (Qps) (Scorpion 4) (set 1)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4po8m ,sc4po8, sc4_4reel, sc4po8, sc4_state, sc4po8_mbus, ROT0, "QPS","Pieces Of Eight (011) (Qps) (Scorpion 4) (set 2)", MACHINE_FLAGS, layout_bfm_sc4 )
// PR2530 PIECES OF EIGHT 012 PIECESOFEIGHTSND PIECES OF EIGHT
-GAMEL( 200?, sc4po8i ,sc4po8, sc4_4reel, sc4po8, sc4_state, sc4po8, ROT0, "Qps","Pieces Of Eight (012) (Qps) (Scorpion 4) (set 1)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4po8k ,sc4po8, sc4_4reel, sc4po8, sc4_state, sc4po8, ROT0, "Qps","Pieces Of Eight (012) (Qps) (Scorpion 4) (set 2)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4po8i ,sc4po8, sc4_4reel, sc4po8, sc4_state, sc4po8, ROT0, "Qps","Pieces Of Eight (012) (Qps) (Scorpion 4) (set 1)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4po8k ,sc4po8, sc4_4reel, sc4po8, sc4_state, sc4po8, ROT0, "Qps","Pieces Of Eight (012) (Qps) (Scorpion 4) (set 2)", MACHINE_FLAGS, layout_bfm_sc4 )
// PR2530 PIECES OF EIGHT 041 PIECESOFEIGHTSND PIECES OF EIGHT
-GAMEL( 200?, sc4po8d ,sc4po8, sc4_4reel, sc4po8, sc4_state, sc4po8_mbus, ROT0, "Qps","Pieces Of Eight (041) (Qps) (Scorpion 4) (set 1)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4po8n ,sc4po8, sc4_4reel, sc4po8, sc4_state, sc4po8_mbus, ROT0, "QPS","Pieces Of Eight (041) (Qps) (Scorpion 4) (set 2)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4po8d ,sc4po8, sc4_4reel, sc4po8, sc4_state, sc4po8_mbus, ROT0, "Qps","Pieces Of Eight (041) (Qps) (Scorpion 4) (set 1)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4po8n ,sc4po8, sc4_4reel, sc4po8, sc4_state, sc4po8_mbus, ROT0, "QPS","Pieces Of Eight (041) (Qps) (Scorpion 4) (set 2)", MACHINE_FLAGS, layout_bfm_sc4 )
// PR2530 PIECES OF EIGHT 042 PIECESOFEIGHTSND PIECES OF EIGHT
-GAMEL( 200?, sc4po8j ,sc4po8, sc4_4reel, sc4po8, sc4_state, sc4po8, ROT0, "Qps","Pieces Of Eight (042) (Qps) (Scorpion 4) (set 1)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4po8l ,sc4po8, sc4_4reel, sc4po8, sc4_state, sc4po8, ROT0, "Qps","Pieces Of Eight (042) (Qps) (Scorpion 4) (set 2)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4po8j ,sc4po8, sc4_4reel, sc4po8, sc4_state, sc4po8, ROT0, "Qps","Pieces Of Eight (042) (Qps) (Scorpion 4) (set 1)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4po8l ,sc4po8, sc4_4reel, sc4po8, sc4_state, sc4po8, ROT0, "Qps","Pieces Of Eight (042) (Qps) (Scorpion 4) (set 2)", MACHINE_FLAGS, layout_bfm_sc4 )
@@ -32197,16 +32199,16 @@ INPUT_PORTS_START( sc4adjb ) // this structure is generated
INPUT_PORTS_END
// PR3039 AWP ANT N DECS JIGGY BANK S4 PR3009 JIGGY BANK SOUNDS11 JIGGY BANK S.SITE
-GAMEL( 200?, sc4adjb ,0, sc4_5reel_alt, sc4adjb, sc4_state, sc4adjb, ROT0, "BFM","Ant & Dec's Jiggy Bank (Bellfruit) (Scorpion 4) (set 1)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4adjba ,sc4adjb, sc4_5reel_alt, sc4adjb, sc4_state, sc4adjb, ROT0, "BFM","Ant & Dec's Jiggy Bank (Bellfruit) (Scorpion 4) (Set 2)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4adjbb ,sc4adjb, sc4_5reel_alt, sc4adjb, sc4_state, sc4adjb, ROT0, "BFM","Ant & Dec's Jiggy Bank (Bellfruit) (Scorpion 4) (Set 3)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4adjbc ,sc4adjb, sc4_5reel_alt, sc4adjb, sc4_state, sc4adjb, ROT0, "BFM","Ant & Dec's Jiggy Bank (Bellfruit) (Scorpion 4) (Set 4)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4adjbd ,sc4adjb, sc4_5reel_alt, sc4adjb, sc4_state, sc4adjb, ROT0, "BFM","Ant & Dec's Jiggy Bank (Bellfruit) (Scorpion 4) (Set 5)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4adjbe ,sc4adjb, sc4_5reel_alt, sc4adjb, sc4_state, sc4adjb, ROT0, "BFM","Ant & Dec's Jiggy Bank (Bellfruit) (Scorpion 4) (Set 6)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4adjbf ,sc4adjb, sc4_5reel_alt, sc4adjb, sc4_state, sc4adjb, ROT0, "BFM","Ant & Dec's Jiggy Bank (Bellfruit) (Scorpion 4) (Set 7)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4adjbg ,sc4adjb, sc4_5reel_alt, sc4adjb, sc4_state, sc4adjb, ROT0, "BFM","Ant & Dec's Jiggy Bank (Bellfruit) (Scorpion 4) (Set 8)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4adjbh ,sc4adjb, sc4_5reel_alt, sc4adjb, sc4_state, sc4adjb, ROT0, "BFM","Ant & Dec's Jiggy Bank (Bellfruit) (Scorpion 4) (Set 9)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4adjbi ,sc4adjb, sc4_5reel_alt, sc4adjb, sc4_state, sc4adjb, ROT0, "BFM","Ant & Dec's Jiggy Bank (Bellfruit) (Scorpion 4) (Set 10)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4adjb ,0, sc4_5reel_alt, sc4adjb, sc4_state, sc4adjb, ROT0, "BFM","Ant & Dec's Jiggy Bank (Bellfruit) (Scorpion 4) (set 1)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4adjba ,sc4adjb, sc4_5reel_alt, sc4adjb, sc4_state, sc4adjb, ROT0, "BFM","Ant & Dec's Jiggy Bank (Bellfruit) (Scorpion 4) (Set 2)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4adjbb ,sc4adjb, sc4_5reel_alt, sc4adjb, sc4_state, sc4adjb, ROT0, "BFM","Ant & Dec's Jiggy Bank (Bellfruit) (Scorpion 4) (Set 3)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4adjbc ,sc4adjb, sc4_5reel_alt, sc4adjb, sc4_state, sc4adjb, ROT0, "BFM","Ant & Dec's Jiggy Bank (Bellfruit) (Scorpion 4) (Set 4)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4adjbd ,sc4adjb, sc4_5reel_alt, sc4adjb, sc4_state, sc4adjb, ROT0, "BFM","Ant & Dec's Jiggy Bank (Bellfruit) (Scorpion 4) (Set 5)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4adjbe ,sc4adjb, sc4_5reel_alt, sc4adjb, sc4_state, sc4adjb, ROT0, "BFM","Ant & Dec's Jiggy Bank (Bellfruit) (Scorpion 4) (Set 6)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4adjbf ,sc4adjb, sc4_5reel_alt, sc4adjb, sc4_state, sc4adjb, ROT0, "BFM","Ant & Dec's Jiggy Bank (Bellfruit) (Scorpion 4) (Set 7)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4adjbg ,sc4adjb, sc4_5reel_alt, sc4adjb, sc4_state, sc4adjb, ROT0, "BFM","Ant & Dec's Jiggy Bank (Bellfruit) (Scorpion 4) (Set 8)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4adjbh ,sc4adjb, sc4_5reel_alt, sc4adjb, sc4_state, sc4adjb, ROT0, "BFM","Ant & Dec's Jiggy Bank (Bellfruit) (Scorpion 4) (Set 9)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4adjbi ,sc4adjb, sc4_5reel_alt, sc4adjb, sc4_state, sc4adjb, ROT0, "BFM","Ant & Dec's Jiggy Bank (Bellfruit) (Scorpion 4) (Set 10)", MACHINE_FLAGS, layout_bfm_sc4 )
DRIVER_INIT_MEMBER(sc4_state,sc4adwta)
@@ -32279,8 +32281,8 @@ INPUT_PORTS_START( sc4adwta ) // this structure is generated
INPUT_PORTS_END
// PR1940 AWP ANT N DECS WTAD S4 PR1940 ADSNT SHOWTIME SOUNDS11 ANTNDECSWTAD S.SITE
-GAMEL( 200?, sc4adwta ,0, sc4_5reel, sc4adwta, sc4_state, sc4adwta, ROT0, "BFM","Ant & Dec's Saturday Night Takeaway Win The Ads (Bellfruit) (Scorpion 4) (set 1)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4adwtaa ,sc4adwta, sc4_5reel, sc4adwta, sc4_state, sc4adwta, ROT0, "BFM","Ant & Dec's Saturday Night Takeaway Win The Ads (Bellfruit) (Scorpion 4) (set 2)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4adwta ,0, sc4_5reel, sc4adwta, sc4_state, sc4adwta, ROT0, "BFM","Ant & Dec's Saturday Night Takeaway Win The Ads (Bellfruit) (Scorpion 4) (set 1)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4adwtaa ,sc4adwta, sc4_5reel, sc4adwta, sc4_state, sc4adwta, ROT0, "BFM","Ant & Dec's Saturday Night Takeaway Win The Ads (Bellfruit) (Scorpion 4) (set 2)", MACHINE_FLAGS, layout_bfm_sc4 )
DRIVER_INIT_MEMBER(sc4_state,sc4a40)
@@ -32336,10 +32338,10 @@ INPUT_PORTS_START( sc4a40 ) // this structure is generated
INPUT_PORTS_END
// PR2200 AROUND THE BOARD AROU SOUNDS AROUND THE BOARD
-GAMEL( 200?, sc4a40 ,0, sc4_5reel, sc4a40, sc4_state, sc4a40, ROT0, "Mazooma","Around The Board In 40 Days (Mazooma) (Scorpion 4) (set 1)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4a40a ,sc4a40, sc4_5reel, sc4a40, sc4_state, sc4a40, ROT0, "Mazooma","Around The Board In 40 Days (Mazooma) (Scorpion 4) (set 2)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4a40b ,sc4a40, sc4_5reel, sc4a40, sc4_state, sc4a40, ROT0, "Mazooma","Around The Board In 40 Days (Mazooma) (Scorpion 4) (set 3)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4a40c ,sc4a40, sc4_5reel, sc4a40, sc4_state, sc4a40, ROT0, "Mazooma","Around The Board In 40 Days (Mazooma) (Scorpion 4) (set 4)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4a40 ,0, sc4_5reel, sc4a40, sc4_state, sc4a40, ROT0, "Mazooma","Around The Board In 40 Days (Mazooma) (Scorpion 4) (set 1)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4a40a ,sc4a40, sc4_5reel, sc4a40, sc4_state, sc4a40, ROT0, "Mazooma","Around The Board In 40 Days (Mazooma) (Scorpion 4) (set 2)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4a40b ,sc4a40, sc4_5reel, sc4a40, sc4_state, sc4a40, ROT0, "Mazooma","Around The Board In 40 Days (Mazooma) (Scorpion 4) (set 3)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4a40c ,sc4a40, sc4_5reel, sc4a40, sc4_state, sc4a40, ROT0, "Mazooma","Around The Board In 40 Days (Mazooma) (Scorpion 4) (set 4)", MACHINE_FLAGS, layout_bfm_sc4 )
DRIVER_INIT_MEMBER(sc4_state,sc4a40cl)
{
@@ -32404,10 +32406,10 @@ INPUT_PORTS_START( sc4a40cl ) // this structure is generated
INPUT_PORTS_END
// PR2154 CLUB AROUND BOAR CLB AROUND BOARD CLUB AROU SOUNDS
-GAMEL( 200?, sc4a40cl ,0, sc4_5reel, sc4a40cl, sc4_state, sc4a40cl, ROT0, "Mazooma","Around The Board In 40 Days Club (Mazooma) (Scorpion 4) (set 1)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4a40cla ,sc4a40cl, sc4_5reel, sc4a40cl, sc4_state, sc4a40cl, ROT0, "Mazooma","Around The Board In 40 Days Club (Mazooma) (Scorpion 4) (set 2)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4a40clb ,sc4a40cl, sc4_5reel, sc4a40cl, sc4_state, sc4a40cl, ROT0, "Mazooma","Around The Board In 40 Days Club (Mazooma) (Scorpion 4) (set 3)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4a40clc ,sc4a40cl, sc4_5reel, sc4a40cl, sc4_state, sc4a40cl, ROT0, "Mazooma","Around The Board In 40 Days Club (Mazooma) (Scorpion 4) (set 4)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4a40cl ,0, sc4_5reel, sc4a40cl, sc4_state, sc4a40cl, ROT0, "Mazooma","Around The Board In 40 Days Club (Mazooma) (Scorpion 4) (set 1)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4a40cla ,sc4a40cl, sc4_5reel, sc4a40cl, sc4_state, sc4a40cl, ROT0, "Mazooma","Around The Board In 40 Days Club (Mazooma) (Scorpion 4) (set 2)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4a40clb ,sc4a40cl, sc4_5reel, sc4a40cl, sc4_state, sc4a40cl, ROT0, "Mazooma","Around The Board In 40 Days Club (Mazooma) (Scorpion 4) (set 3)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4a40clc ,sc4a40cl, sc4_5reel, sc4a40cl, sc4_state, sc4a40cl, ROT0, "Mazooma","Around The Board In 40 Days Club (Mazooma) (Scorpion 4) (set 4)", MACHINE_FLAGS, layout_bfm_sc4 )
DRIVER_INIT_MEMBER(sc4_state,sc4bantm)
@@ -32483,10 +32485,10 @@ INPUT_PORTS_START( sc4bantm ) // this structure is generated
INPUT_PORTS_END
// PR2301 BANTAM OF THE OPERA BANTAM SOUNDS BANTAMOFTHEOPERA
-GAMEL( 200?, sc4bantm ,0, sc4_200_4ra, sc4bantm, sc4_state, sc4bantm, ROT0, "Mazooma","Bantam Of The Opera (Mazooma) (Scorpion 4) (set 1)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4bantma ,sc4bantm, sc4_200_4ra, sc4bantm, sc4_state, sc4bantm, ROT0, "Mazooma","Bantam Of The Opera (Mazooma) (Scorpion 4) (set 2)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4bantmb ,sc4bantm, sc4_200_4ra, sc4bantm, sc4_state, sc4bantm, ROT0, "Mazooma","Bantam Of The Opera (Mazooma) (Scorpion 4) (set 3)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4bantmc ,sc4bantm, sc4_200_4ra, sc4bantm, sc4_state, sc4bantm, ROT0, "Mazooma","Bantam Of The Opera (Mazooma) (Scorpion 4) (set 4)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4bantm ,0, sc4_200_4ra, sc4bantm, sc4_state, sc4bantm, ROT0, "Mazooma","Bantam Of The Opera (Mazooma) (Scorpion 4) (set 1)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4bantma ,sc4bantm, sc4_200_4ra, sc4bantm, sc4_state, sc4bantm, ROT0, "Mazooma","Bantam Of The Opera (Mazooma) (Scorpion 4) (set 2)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4bantmb ,sc4bantm, sc4_200_4ra, sc4bantm, sc4_state, sc4bantm, ROT0, "Mazooma","Bantam Of The Opera (Mazooma) (Scorpion 4) (set 3)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4bantmc ,sc4bantm, sc4_200_4ra, sc4bantm, sc4_state, sc4bantm, ROT0, "Mazooma","Bantam Of The Opera (Mazooma) (Scorpion 4) (set 4)", MACHINE_FLAGS, layout_bfm_sc4 )
@@ -32608,14 +32610,14 @@ INPUT_PORTS_START( sc4bar7b ) // this structure is generated
INPUT_PORTS_END
// PR1433 BAR7S PR1433 BAR SEVENS SOUNDS11
-GAMEL( 200?, sc4bar7 ,0, sc4_3reel, sc4bar7, sc4_state, sc4bar7, ROT0, "BFM","Bar 7's (PR1433) (Bellfruit) (Scorpion 4) (set 1)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4bar7a ,sc4bar7, sc4_3reel, sc4bar7, sc4_state, sc4bar7, ROT0, "BFM","Bar 7's (PR1433) (Bellfruit) (Scorpion 4) (set 2)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4bar7 ,0, sc4_3reel, sc4bar7, sc4_state, sc4bar7, ROT0, "BFM","Bar 7's (PR1433) (Bellfruit) (Scorpion 4) (set 1)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4bar7a ,sc4bar7, sc4_3reel, sc4bar7, sc4_state, sc4bar7, ROT0, "BFM","Bar 7's (PR1433) (Bellfruit) (Scorpion 4) (set 2)", MACHINE_FLAGS, layout_bfm_sc4 )
// INIT COMMS (optional top box for above maybe?)
// PR1438 BAR7S PR1436 TRIPLE CASINO SOUNDS11
-GAMEL( 200?, sc4bar7b ,sc4bar7, sc4_3reel, sc4bar7b, sc4_state, sc4, ROT0, "BFM","Bar 7's (PR1438) (Bellfruit) (Scorpion 4) (Top Box?, set 1)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4bar7c ,sc4bar7, sc4_3reel, sc4bar7b, sc4_state, sc4, ROT0, "BFM","Bar 7's (PR1438) (Bellfruit) (Scorpion 4) (Top Box?, set 2)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4bar7d ,sc4bar7, sc4_3reel, sc4bar7b, sc4_state, sc4, ROT0, "BFM","Bar 7's (PR1438) (Bellfruit) (Scorpion 4) (Top Box?, set 3)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4bar7e ,sc4bar7, sc4_3reel, sc4bar7b, sc4_state, sc4, ROT0, "BFM","Bar 7's (PR1438) (Bellfruit) (Scorpion 4) (Top Box?, set 4)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4bar7b ,sc4bar7, sc4_3reel, sc4bar7b, sc4_state, sc4, ROT0, "BFM","Bar 7's (PR1438) (Bellfruit) (Scorpion 4) (Top Box?, set 1)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4bar7c ,sc4bar7, sc4_3reel, sc4bar7b, sc4_state, sc4, ROT0, "BFM","Bar 7's (PR1438) (Bellfruit) (Scorpion 4) (Top Box?, set 2)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4bar7d ,sc4bar7, sc4_3reel, sc4bar7b, sc4_state, sc4, ROT0, "BFM","Bar 7's (PR1438) (Bellfruit) (Scorpion 4) (Top Box?, set 3)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4bar7e ,sc4bar7, sc4_3reel, sc4bar7b, sc4_state, sc4, ROT0, "BFM","Bar 7's (PR1438) (Bellfruit) (Scorpion 4) (Top Box?, set 4)", MACHINE_FLAGS, layout_bfm_sc4 )
DRIVER_INIT_MEMBER(sc4_state,sc4batl)
@@ -32686,8 +32688,8 @@ INPUT_PORTS_START( sc4batl ) // this structure is generated
INPUT_PORTS_END
// PR1724 AWP BATTLESHIPS AND CRUISERS S4 PR1704 B AND C SOUNDS11 BATTLESHIPSCRUIS S.SITE
-GAMEL( 200?, sc4batl ,0, sc4, sc4batl, sc4_state, sc4batl, ROT0, "BFM","Battleships & Cruisers (Bellfruit) (Scorpion 4) (set 1)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4batla ,sc4batl, sc4, sc4batl, sc4_state, sc4batl, ROT0, "BFM","Battleships & Cruisers (Bellfruit) (Scorpion 4) (set 2)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4batl ,0, sc4, sc4batl, sc4_state, sc4batl, ROT0, "BFM","Battleships & Cruisers (Bellfruit) (Scorpion 4) (set 1)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4batla ,sc4batl, sc4, sc4batl, sc4_state, sc4batl, ROT0, "BFM","Battleships & Cruisers (Bellfruit) (Scorpion 4) (set 2)", MACHINE_FLAGS, layout_bfm_sc4 )
@@ -32760,10 +32762,10 @@ INPUT_PORTS_START( sc4bull ) // this structure is generated
INPUT_PORTS_END
// PR1722 AWP BULLSEYE SCORP4 PR1702 BULLSEYE SOUNDS11 BULLSEYE S.SITE
-GAMEL( 200?, sc4bull ,0, sc4_200_4ra, sc4bull, sc4_state, sc4bull, ROT0, "BFM","Bullseye (Bellfruit) (Scorpion 4) (set 1)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4bulla ,sc4bull, sc4_200_4ra, sc4bull, sc4_state, sc4bull, ROT0, "BFM","Bullseye (Bellfruit) (Scorpion 4) (set 2)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4bullb ,sc4bull, sc4_200_4ra, sc4bull, sc4_state, sc4bull, ROT0, "BFM","Bullseye (Bellfruit) (Scorpion 4) (set 3)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4bullc ,sc4bull, sc4_200_4ra, sc4bull, sc4_state, sc4bull, ROT0, "BFM","Bullseye (Bellfruit) (Scorpion 4) (set 4)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4bull ,0, sc4_200_4ra, sc4bull, sc4_state, sc4bull, ROT0, "BFM","Bullseye (Bellfruit) (Scorpion 4) (set 1)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4bulla ,sc4bull, sc4_200_4ra, sc4bull, sc4_state, sc4bull, ROT0, "BFM","Bullseye (Bellfruit) (Scorpion 4) (set 2)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4bullb ,sc4bull, sc4_200_4ra, sc4bull, sc4_state, sc4bull, ROT0, "BFM","Bullseye (Bellfruit) (Scorpion 4) (set 3)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4bullc ,sc4bull, sc4_200_4ra, sc4bull, sc4_state, sc4bull, ROT0, "BFM","Bullseye (Bellfruit) (Scorpion 4) (set 4)", MACHINE_FLAGS, layout_bfm_sc4 )
DRIVER_INIT_MEMBER(sc4_state,sc4bullcs)
@@ -32834,10 +32836,10 @@ INPUT_PORTS_START( sc4bulcs ) // this structure is generated
INPUT_PORTS_END
// PR1740 AWP BULLSEYE CLASSIC SCORP4 PR1702 BULLSEYE SOUNDS11 BULLSEYE CLASSIC S.SITE
-GAMEL( 200?, sc4bulcs ,0, sc4_200_4ra, sc4bulcs, sc4_state, sc4bullcs, ROT0, "BFM","Bullseye Classic (Bellfruit) (Scorpion 4) (set 1)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4bulcsa ,sc4bulcs, sc4_200_4ra, sc4bulcs, sc4_state, sc4bullcs, ROT0, "BFM","Bullseye Classic (Bellfruit) (Scorpion 4) (set 2)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4bulcsb ,sc4bulcs, sc4_200_4ra, sc4bulcs, sc4_state, sc4bullcs, ROT0, "BFM","Bullseye Classic (Bellfruit) (Scorpion 4) (set 3)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4bulcsc ,sc4bulcs, sc4_200_4ra, sc4bulcs, sc4_state, sc4bullcs, ROT0, "BFM","Bullseye Classic (Bellfruit) (Scorpion 4) (set 4)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4bulcs ,0, sc4_200_4ra, sc4bulcs, sc4_state, sc4bullcs, ROT0, "BFM","Bullseye Classic (Bellfruit) (Scorpion 4) (set 1)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4bulcsa ,sc4bulcs, sc4_200_4ra, sc4bulcs, sc4_state, sc4bullcs, ROT0, "BFM","Bullseye Classic (Bellfruit) (Scorpion 4) (set 2)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4bulcsb ,sc4bulcs, sc4_200_4ra, sc4bulcs, sc4_state, sc4bullcs, ROT0, "BFM","Bullseye Classic (Bellfruit) (Scorpion 4) (set 3)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4bulcsc ,sc4bulcs, sc4_200_4ra, sc4bulcs, sc4_state, sc4bullcs, ROT0, "BFM","Bullseye Classic (Bellfruit) (Scorpion 4) (set 4)", MACHINE_FLAGS, layout_bfm_sc4 )
DRIVER_INIT_MEMBER(sc4_state,sc4butch)
@@ -32912,14 +32914,14 @@ INPUT_PORTS_START( sc4butch ) // this structure is generated
INPUT_PORTS_END
// PR1930 AWP BUTCH CASHIDY AND THE SUNDANCE QUID S4 PR1910 B C AND THE S Q SOUNDS11 BUTCH N SUNDANCE S.SITE
-GAMEL( 200?, sc4butch ,0, sc4_4reel_alt, sc4butch, sc4_state, sc4butch, ROT0, "BFM","Butch Cashidy & The Sundance Quid (Bellfruit) (Scorpion 4) (set 1)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4butcha ,sc4butch, sc4_4reel_alt, sc4butch, sc4_state, sc4butch, ROT0, "BFM","Butch Cashidy & The Sundance Quid (Bellfruit) (Scorpion 4) (set 2)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4butchb ,sc4butch, sc4_4reel_alt, sc4butch, sc4_state, sc4butch, ROT0, "BFM","Butch Cashidy & The Sundance Quid (Bellfruit) (Scorpion 4) (set 3)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4butchc ,sc4butch, sc4_4reel_alt, sc4butch, sc4_state, sc4butch, ROT0, "BFM","Butch Cashidy & The Sundance Quid (Bellfruit) (Scorpion 4) (set 4)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4butchd ,sc4butch, sc4_4reel_alt, sc4butch, sc4_state, sc4butch, ROT0, "BFM","Butch Cashidy & The Sundance Quid (Bellfruit) (Scorpion 4) (set 5)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4butche ,sc4butch, sc4_4reel_alt, sc4butch, sc4_state, sc4butch, ROT0, "BFM","Butch Cashidy & The Sundance Quid (Bellfruit) (Scorpion 4) (set 6)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4butchf ,sc4butch, sc4_4reel_alt, sc4butch, sc4_state, sc4butch, ROT0, "BFM","Butch Cashidy & The Sundance Quid (Bellfruit) (Scorpion 4) (set 7)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4butchg ,sc4butch, sc4_4reel_alt, sc4butch, sc4_state, sc4butch, ROT0, "BFM","Butch Cashidy & The Sundance Quid (Bellfruit) (Scorpion 4) (set 8)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4butch ,0, sc4_4reel_alt, sc4butch, sc4_state, sc4butch, ROT0, "BFM","Butch Cashidy & The Sundance Quid (Bellfruit) (Scorpion 4) (set 1)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4butcha ,sc4butch, sc4_4reel_alt, sc4butch, sc4_state, sc4butch, ROT0, "BFM","Butch Cashidy & The Sundance Quid (Bellfruit) (Scorpion 4) (set 2)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4butchb ,sc4butch, sc4_4reel_alt, sc4butch, sc4_state, sc4butch, ROT0, "BFM","Butch Cashidy & The Sundance Quid (Bellfruit) (Scorpion 4) (set 3)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4butchc ,sc4butch, sc4_4reel_alt, sc4butch, sc4_state, sc4butch, ROT0, "BFM","Butch Cashidy & The Sundance Quid (Bellfruit) (Scorpion 4) (set 4)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4butchd ,sc4butch, sc4_4reel_alt, sc4butch, sc4_state, sc4butch, ROT0, "BFM","Butch Cashidy & The Sundance Quid (Bellfruit) (Scorpion 4) (set 5)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4butche ,sc4butch, sc4_4reel_alt, sc4butch, sc4_state, sc4butch, ROT0, "BFM","Butch Cashidy & The Sundance Quid (Bellfruit) (Scorpion 4) (set 6)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4butchf ,sc4butch, sc4_4reel_alt, sc4butch, sc4_state, sc4butch, ROT0, "BFM","Butch Cashidy & The Sundance Quid (Bellfruit) (Scorpion 4) (set 7)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4butchg ,sc4butch, sc4_4reel_alt, sc4butch, sc4_state, sc4butch, ROT0, "BFM","Butch Cashidy & The Sundance Quid (Bellfruit) (Scorpion 4) (set 8)", MACHINE_FLAGS, layout_bfm_sc4 )
//was sc4_200_4ra, but that spins forever, so wrong
@@ -32981,20 +32983,20 @@ INPUT_PORTS_START( sc4cabin ) // this structure is generated
INPUT_PORTS_END
// PR2209 CABIN FEVER CABF SOUNDS CABIN FEVER
-GAMEL( 200?, sc4cabin ,0, sc4, sc4cabin, sc4_state, sc4cabin, ROT0, "Mazooma","Cabin Fever (Mazooma) (Scorpion 4) (set 1)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4cabina ,sc4cabin, sc4, sc4cabin, sc4_state, sc4cabin, ROT0, "Mazooma","Cabin Fever (Mazooma) (Scorpion 4) (set 2)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4cabinb ,sc4cabin, sc4, sc4cabin, sc4_state, sc4cabin, ROT0, "Mazooma","Cabin Fever (Mazooma) (Scorpion 4) (set 3)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4cabinc ,sc4cabin, sc4, sc4cabin, sc4_state, sc4cabin, ROT0, "Mazooma","Cabin Fever (Mazooma) (Scorpion 4) (set 4)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4cabind ,sc4cabin, sc4, sc4cabin, sc4_state, sc4cabin, ROT0, "Mazooma","Cabin Fever (Mazooma) (Scorpion 4) (set 5)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4cabine ,sc4cabin, sc4, sc4cabin, sc4_state, sc4cabin, ROT0, "Mazooma","Cabin Fever (Mazooma) (Scorpion 4) (set 6)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4cabinf ,sc4cabin, sc4, sc4cabin, sc4_state, sc4cabin, ROT0, "Mazooma","Cabin Fever (Mazooma) (Scorpion 4) (set 7)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4cabing ,sc4cabin, sc4, sc4cabin, sc4_state, sc4cabin, ROT0, "Mazooma","Cabin Fever (Mazooma) (Scorpion 4) (set 8)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4cabinh ,sc4cabin, sc4, sc4cabin, sc4_state, sc4cabin, ROT0, "Mazooma","Cabin Fever (Mazooma) (Scorpion 4) (set 9)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4cabini ,sc4cabin, sc4, sc4cabin, sc4_state, sc4cabin, ROT0, "Mazooma","Cabin Fever (Mazooma) (Scorpion 4) (set 10)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4cabinj ,sc4cabin, sc4, sc4cabin, sc4_state, sc4cabin, ROT0, "Mazooma","Cabin Fever (Mazooma) (Scorpion 4) (set 11)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4cabink ,sc4cabin, sc4, sc4cabin, sc4_state, sc4cabin, ROT0, "Mazooma","Cabin Fever (Mazooma) (Scorpion 4) (set 12)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4cabinl ,sc4cabin, sc4, sc4cabin, sc4_state, sc4cabin, ROT0, "Mazooma","Cabin Fever (Mazooma) (Scorpion 4) (set 13)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4cabinm ,sc4cabin, sc4, sc4cabin, sc4_state, sc4cabin, ROT0, "Mazooma","Cabin Fever (Mazooma) (Scorpion 4) (set 14)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4cabin ,0, sc4, sc4cabin, sc4_state, sc4cabin, ROT0, "Mazooma","Cabin Fever (Mazooma) (Scorpion 4) (set 1)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4cabina ,sc4cabin, sc4, sc4cabin, sc4_state, sc4cabin, ROT0, "Mazooma","Cabin Fever (Mazooma) (Scorpion 4) (set 2)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4cabinb ,sc4cabin, sc4, sc4cabin, sc4_state, sc4cabin, ROT0, "Mazooma","Cabin Fever (Mazooma) (Scorpion 4) (set 3)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4cabinc ,sc4cabin, sc4, sc4cabin, sc4_state, sc4cabin, ROT0, "Mazooma","Cabin Fever (Mazooma) (Scorpion 4) (set 4)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4cabind ,sc4cabin, sc4, sc4cabin, sc4_state, sc4cabin, ROT0, "Mazooma","Cabin Fever (Mazooma) (Scorpion 4) (set 5)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4cabine ,sc4cabin, sc4, sc4cabin, sc4_state, sc4cabin, ROT0, "Mazooma","Cabin Fever (Mazooma) (Scorpion 4) (set 6)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4cabinf ,sc4cabin, sc4, sc4cabin, sc4_state, sc4cabin, ROT0, "Mazooma","Cabin Fever (Mazooma) (Scorpion 4) (set 7)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4cabing ,sc4cabin, sc4, sc4cabin, sc4_state, sc4cabin, ROT0, "Mazooma","Cabin Fever (Mazooma) (Scorpion 4) (set 8)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4cabinh ,sc4cabin, sc4, sc4cabin, sc4_state, sc4cabin, ROT0, "Mazooma","Cabin Fever (Mazooma) (Scorpion 4) (set 9)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4cabini ,sc4cabin, sc4, sc4cabin, sc4_state, sc4cabin, ROT0, "Mazooma","Cabin Fever (Mazooma) (Scorpion 4) (set 10)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4cabinj ,sc4cabin, sc4, sc4cabin, sc4_state, sc4cabin, ROT0, "Mazooma","Cabin Fever (Mazooma) (Scorpion 4) (set 11)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4cabink ,sc4cabin, sc4, sc4cabin, sc4_state, sc4cabin, ROT0, "Mazooma","Cabin Fever (Mazooma) (Scorpion 4) (set 12)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4cabinl ,sc4cabin, sc4, sc4cabin, sc4_state, sc4cabin, ROT0, "Mazooma","Cabin Fever (Mazooma) (Scorpion 4) (set 13)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4cabinm ,sc4cabin, sc4, sc4cabin, sc4_state, sc4cabin, ROT0, "Mazooma","Cabin Fever (Mazooma) (Scorpion 4) (set 14)", MACHINE_FLAGS, layout_bfm_sc4 )
DRIVER_INIT_MEMBER(sc4_state,sc4cari)
@@ -33056,12 +33058,12 @@ INPUT_PORTS_START( sc4cari ) // this structure is generated
INPUT_PORTS_END
// PR2326 CARIBBEAN CASH CABC SOUNDS CARIBBEAN CASH
-GAMEL( 200?, sc4cari ,0, sc4_200_4ra, sc4cari, sc4_state, sc4cari, ROT0, "Mazooma","Caribbean Cash (PR2326) (Mazooma) (Scorpion 4) (set 1)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4caria ,sc4cari, sc4_200_4ra, sc4cari, sc4_state, sc4cari, ROT0, "Mazooma","Caribbean Cash (PR2326) (Mazooma) (Scorpion 4) (set 2)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4carib ,sc4cari, sc4_200_4ra, sc4cari, sc4_state, sc4cari, ROT0, "Mazooma","Caribbean Cash (PR2326) (Mazooma) (Scorpion 4) (set 3)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4caric ,sc4cari, sc4_200_4ra, sc4cari, sc4_state, sc4cari, ROT0, "Mazooma","Caribbean Cash (PR2326) (Mazooma) (Scorpion 4) (set 4)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4carid ,sc4cari, sc4_200_4ra, sc4cari, sc4_state, sc4cari, ROT0, "Mazooma","Caribbean Cash (PR2326) (Mazooma) (Scorpion 4) (set 5)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4carie ,sc4cari, sc4_200_4ra, sc4cari, sc4_state, sc4cari, ROT0, "Mazooma","Caribbean Cash (PR2326) (Mazooma) (Scorpion 4) (set 6)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4cari ,0, sc4_200_4ra, sc4cari, sc4_state, sc4cari, ROT0, "Mazooma","Caribbean Cash (PR2326) (Mazooma) (Scorpion 4) (set 1)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4caria ,sc4cari, sc4_200_4ra, sc4cari, sc4_state, sc4cari, ROT0, "Mazooma","Caribbean Cash (PR2326) (Mazooma) (Scorpion 4) (set 2)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4carib ,sc4cari, sc4_200_4ra, sc4cari, sc4_state, sc4cari, ROT0, "Mazooma","Caribbean Cash (PR2326) (Mazooma) (Scorpion 4) (set 3)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4caric ,sc4cari, sc4_200_4ra, sc4cari, sc4_state, sc4cari, ROT0, "Mazooma","Caribbean Cash (PR2326) (Mazooma) (Scorpion 4) (set 4)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4carid ,sc4cari, sc4_200_4ra, sc4cari, sc4_state, sc4cari, ROT0, "Mazooma","Caribbean Cash (PR2326) (Mazooma) (Scorpion 4) (set 5)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4carie ,sc4cari, sc4_200_4ra, sc4cari, sc4_state, sc4cari, ROT0, "Mazooma","Caribbean Cash (PR2326) (Mazooma) (Scorpion 4) (set 6)", MACHINE_FLAGS, layout_bfm_sc4 )
DRIVER_INIT_MEMBER(sc4_state,sc4cariq)
@@ -33119,14 +33121,14 @@ INPUT_PORTS_START( sc4cariq ) // this structure is generated
INPUT_PORTS_END
// these lack identification strings, and it's not the same game as above
-GAMEL( 200?, sc4cariq ,0, sc4_4reel, sc4cariq, sc4_state, sc4cariq, ROT0, "Qps","Caribbean Cash (Qps) (Scorpion 4) (set 1)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4cariqa ,sc4cariq, sc4_4reel, sc4cariq, sc4_state, sc4cariq, ROT0, "Qps","Caribbean Cash (Qps) (Scorpion 4) (set 2)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4cariqb ,sc4cariq, sc4_4reel, sc4cariq, sc4_state, sc4cariq, ROT0, "Qps","Caribbean Cash (Qps) (Scorpion 4) (set 3)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4cariqc ,sc4cariq, sc4_4reel, sc4cariq, sc4_state, sc4cariq, ROT0, "Qps","Caribbean Cash (Qps) (Scorpion 4) (set 4)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4cariqd ,sc4cariq, sc4_4reel, sc4cariq, sc4_state, sc4cariq, ROT0, "Qps","Caribbean Cash (Qps) (Scorpion 4) (set 5)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4cariqe ,sc4cariq, sc4_4reel, sc4cariq, sc4_state, sc4cariq, ROT0, "Qps","Caribbean Cash (Qps) (Scorpion 4) (set 6)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4cariqf ,sc4cariq, sc4_4reel, sc4cariq, sc4_state, sc4cariq, ROT0, "Qps","Caribbean Cash (Qps) (Scorpion 4) (set 7)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4cariqg ,sc4cariq, sc4_4reel, sc4cariq, sc4_state, sc4cariq, ROT0, "Qps","Caribbean Cash (Qps) (Scorpion 4) (set 8)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4cariq ,0, sc4_4reel, sc4cariq, sc4_state, sc4cariq, ROT0, "Qps","Caribbean Cash (Qps) (Scorpion 4) (set 1)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4cariqa ,sc4cariq, sc4_4reel, sc4cariq, sc4_state, sc4cariq, ROT0, "Qps","Caribbean Cash (Qps) (Scorpion 4) (set 2)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4cariqb ,sc4cariq, sc4_4reel, sc4cariq, sc4_state, sc4cariq, ROT0, "Qps","Caribbean Cash (Qps) (Scorpion 4) (set 3)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4cariqc ,sc4cariq, sc4_4reel, sc4cariq, sc4_state, sc4cariq, ROT0, "Qps","Caribbean Cash (Qps) (Scorpion 4) (set 4)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4cariqd ,sc4cariq, sc4_4reel, sc4cariq, sc4_state, sc4cariq, ROT0, "Qps","Caribbean Cash (Qps) (Scorpion 4) (set 5)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4cariqe ,sc4cariq, sc4_4reel, sc4cariq, sc4_state, sc4cariq, ROT0, "Qps","Caribbean Cash (Qps) (Scorpion 4) (set 6)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4cariqf ,sc4cariq, sc4_4reel, sc4cariq, sc4_state, sc4cariq, ROT0, "Qps","Caribbean Cash (Qps) (Scorpion 4) (set 7)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4cariqg ,sc4cariq, sc4_4reel, sc4cariq, sc4_state, sc4cariq, ROT0, "Qps","Caribbean Cash (Qps) (Scorpion 4) (set 8)", MACHINE_FLAGS, layout_bfm_sc4 )
DRIVER_INIT_MEMBER(sc4_state,sc4cblas)
@@ -33199,8 +33201,8 @@ INPUT_PORTS_START( sc4cblas ) // this structure is generated
INPUT_PORTS_END
// PR1683 BLAS14
-GAMEL( 200?, sc4cblas ,0, sc4_4reel_alt, sc4cblas, sc4_state, sc4cblas, ROT0, "Voodoo Games","Cash Blast (Voodoo Games) (Scorpion 4) (set 1)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4cblasa ,sc4cblas, sc4_4reel_alt, sc4cblas, sc4_state, sc4cblas, ROT0, "Voodoo Games","Cash Blast (Voodoo Games) (Scorpion 4) (set 2)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4cblas ,0, sc4_4reel_alt, sc4cblas, sc4_state, sc4cblas, ROT0, "Voodoo Games","Cash Blast (Voodoo Games) (Scorpion 4) (set 1)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4cblasa ,sc4cblas, sc4_4reel_alt, sc4cblas, sc4_state, sc4cblas, ROT0, "Voodoo Games","Cash Blast (Voodoo Games) (Scorpion 4) (set 2)", MACHINE_FLAGS, layout_bfm_sc4 )
@@ -33267,12 +33269,12 @@ INPUT_PORTS_START( sc4casxt ) // this structure is generated
INPUT_PORTS_END
// PR2338 XTRAVAGANZA XTRV SOUNDS XTRAVAGANZA
-GAMEL( 200?, sc4casxt ,0, sc4_3reel_200_48, sc4casxt, sc4_state, sc4casxt, ROT0, "Mazooma","Casino Xtravaganza (Mazooma) (Scorpion 4) (set 1)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4casxta ,sc4casxt, sc4_3reel_200_48, sc4casxt, sc4_state, sc4casxt, ROT0, "Mazooma","Casino Xtravaganza (Mazooma) (Scorpion 4) (set 2)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4casxtb ,sc4casxt, sc4_3reel_200_48, sc4casxt, sc4_state, sc4casxt, ROT0, "Mazooma","Casino Xtravaganza (Mazooma) (Scorpion 4) (set 3)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4casxtc ,sc4casxt, sc4_3reel_200_48, sc4casxt, sc4_state, sc4casxt, ROT0, "Mazooma","Casino Xtravaganza (Mazooma) (Scorpion 4) (set 4)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4casxtd ,sc4casxt, sc4_3reel_200_48, sc4casxt, sc4_state, sc4casxt, ROT0, "Mazooma","Casino Xtravaganza (Mazooma) (Scorpion 4) (set 5)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4casxte ,sc4casxt, sc4_3reel_200_48, sc4casxt, sc4_state, sc4casxt, ROT0, "Mazooma","Casino Xtravaganza (Mazooma) (Scorpion 4) (set 6)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4casxt ,0, sc4_3reel_200_48, sc4casxt, sc4_state, sc4casxt, ROT0, "Mazooma","Casino Xtravaganza (Mazooma) (Scorpion 4) (set 1)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4casxta ,sc4casxt, sc4_3reel_200_48, sc4casxt, sc4_state, sc4casxt, ROT0, "Mazooma","Casino Xtravaganza (Mazooma) (Scorpion 4) (set 2)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4casxtb ,sc4casxt, sc4_3reel_200_48, sc4casxt, sc4_state, sc4casxt, ROT0, "Mazooma","Casino Xtravaganza (Mazooma) (Scorpion 4) (set 3)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4casxtc ,sc4casxt, sc4_3reel_200_48, sc4casxt, sc4_state, sc4casxt, ROT0, "Mazooma","Casino Xtravaganza (Mazooma) (Scorpion 4) (set 4)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4casxtd ,sc4casxt, sc4_3reel_200_48, sc4casxt, sc4_state, sc4casxt, ROT0, "Mazooma","Casino Xtravaganza (Mazooma) (Scorpion 4) (set 5)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4casxte ,sc4casxt, sc4_3reel_200_48, sc4casxt, sc4_state, sc4casxt, ROT0, "Mazooma","Casino Xtravaganza (Mazooma) (Scorpion 4) (set 6)", MACHINE_FLAGS, layout_bfm_sc4 )
DRIVER_INIT_MEMBER(sc4_state,sc4chavi)
@@ -33338,14 +33340,14 @@ INPUT_PORTS_START( sc4chavi ) // this structure is generated
INPUT_PORTS_END
// PR1731 AWP CHAV IT SCORP4 PR1711 CHAV IT SOUNDS11 CHAV IT S.SITE
-GAMEL( 200?, sc4chavi ,0, sc4, sc4chavi, sc4_state, sc4chavi, ROT0, "BFM","Chav It (Bellfruit) (Scorpion 4) (set 1)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4chavia ,sc4chavi, sc4, sc4chavi, sc4_state, sc4chavi, ROT0, "BFM","Chav It (Bellfruit) (Scorpion 4) (set 2)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4chavib ,sc4chavi, sc4, sc4chavi, sc4_state, sc4chavi, ROT0, "BFM","Chav It (Bellfruit) (Scorpion 4) (set 3)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4chavic ,sc4chavi, sc4, sc4chavi, sc4_state, sc4chavi, ROT0, "BFM","Chav It (Bellfruit) (Scorpion 4) (set 4)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4chavid ,sc4chavi, sc4, sc4chavi, sc4_state, sc4chavi, ROT0, "BFM","Chav It (Bellfruit) (Scorpion 4) (set 5)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4chavie ,sc4chavi, sc4, sc4chavi, sc4_state, sc4chavi, ROT0, "BFM","Chav It (Bellfruit) (Scorpion 4) (set 6)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4chavif ,sc4chavi, sc4, sc4chavi, sc4_state, sc4chavi, ROT0, "BFM","Chav It (Bellfruit) (Scorpion 4) (set 7)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4chavig ,sc4chavi, sc4, sc4chavi, sc4_state, sc4chavi, ROT0, "BFM","Chav It (Bellfruit) (Scorpion 4) (set 8)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4chavi ,0, sc4, sc4chavi, sc4_state, sc4chavi, ROT0, "BFM","Chav It (Bellfruit) (Scorpion 4) (set 1)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4chavia ,sc4chavi, sc4, sc4chavi, sc4_state, sc4chavi, ROT0, "BFM","Chav It (Bellfruit) (Scorpion 4) (set 2)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4chavib ,sc4chavi, sc4, sc4chavi, sc4_state, sc4chavi, ROT0, "BFM","Chav It (Bellfruit) (Scorpion 4) (set 3)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4chavic ,sc4chavi, sc4, sc4chavi, sc4_state, sc4chavi, ROT0, "BFM","Chav It (Bellfruit) (Scorpion 4) (set 4)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4chavid ,sc4chavi, sc4, sc4chavi, sc4_state, sc4chavi, ROT0, "BFM","Chav It (Bellfruit) (Scorpion 4) (set 5)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4chavie ,sc4chavi, sc4, sc4chavi, sc4_state, sc4chavi, ROT0, "BFM","Chav It (Bellfruit) (Scorpion 4) (set 6)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4chavif ,sc4chavi, sc4, sc4chavi, sc4_state, sc4chavi, ROT0, "BFM","Chav It (Bellfruit) (Scorpion 4) (set 7)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4chavig ,sc4chavi, sc4, sc4chavi, sc4_state, sc4chavi, ROT0, "BFM","Chav It (Bellfruit) (Scorpion 4) (set 8)", MACHINE_FLAGS, layout_bfm_sc4 )
DRIVER_INIT_MEMBER(sc4_state,sc4chavy)
@@ -33402,14 +33404,14 @@ INPUT_PORTS_START( sc4chavy ) // this structure is generated
INPUT_PORTS_END
// PR2305 CHAVVY CHASE CHVY SOUNDS
-GAMEL( 200?, sc4chavy ,0, sc4_5reel_alt, sc4chavy, sc4_state, sc4chavy, ROT0, "Mazooma","Chavy Chase (Mazooma) (Scorpion 4) (set 1)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4chavya ,sc4chavy, sc4_5reel_alt, sc4chavy, sc4_state, sc4chavy, ROT0, "Mazooma","Chavy Chase (Mazooma) (Scorpion 4) (set 2)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4chavyb ,sc4chavy, sc4_5reel_alt, sc4chavy, sc4_state, sc4chavy, ROT0, "Mazooma","Chavy Chase (Mazooma) (Scorpion 4) (set 3)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4chavyc ,sc4chavy, sc4_5reel_alt, sc4chavy, sc4_state, sc4chavy, ROT0, "Mazooma","Chavy Chase (Mazooma) (Scorpion 4) (set 4)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4chavyd ,sc4chavy, sc4_5reel_alt, sc4chavy, sc4_state, sc4chavy, ROT0, "Mazooma","Chavy Chase (Mazooma) (Scorpion 4) (set 5)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4chavye ,sc4chavy, sc4_5reel_alt, sc4chavy, sc4_state, sc4chavy, ROT0, "Mazooma","Chavy Chase (Mazooma) (Scorpion 4) (set 6)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4chavyf ,sc4chavy, sc4_5reel_alt, sc4chavy, sc4_state, sc4chavy, ROT0, "Mazooma","Chavy Chase (Mazooma) (Scorpion 4) (set 7)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4chavyg ,sc4chavy, sc4_5reel_alt, sc4chavy, sc4_state, sc4chavy, ROT0, "Mazooma","Chavy Chase (Mazooma) (Scorpion 4) (set 8)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4chavy ,0, sc4_5reel_alt, sc4chavy, sc4_state, sc4chavy, ROT0, "Mazooma","Chavy Chase (Mazooma) (Scorpion 4) (set 1)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4chavya ,sc4chavy, sc4_5reel_alt, sc4chavy, sc4_state, sc4chavy, ROT0, "Mazooma","Chavy Chase (Mazooma) (Scorpion 4) (set 2)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4chavyb ,sc4chavy, sc4_5reel_alt, sc4chavy, sc4_state, sc4chavy, ROT0, "Mazooma","Chavy Chase (Mazooma) (Scorpion 4) (set 3)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4chavyc ,sc4chavy, sc4_5reel_alt, sc4chavy, sc4_state, sc4chavy, ROT0, "Mazooma","Chavy Chase (Mazooma) (Scorpion 4) (set 4)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4chavyd ,sc4chavy, sc4_5reel_alt, sc4chavy, sc4_state, sc4chavy, ROT0, "Mazooma","Chavy Chase (Mazooma) (Scorpion 4) (set 5)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4chavye ,sc4chavy, sc4_5reel_alt, sc4chavy, sc4_state, sc4chavy, ROT0, "Mazooma","Chavy Chase (Mazooma) (Scorpion 4) (set 6)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4chavyf ,sc4chavy, sc4_5reel_alt, sc4chavy, sc4_state, sc4chavy, ROT0, "Mazooma","Chavy Chase (Mazooma) (Scorpion 4) (set 7)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4chavyg ,sc4chavy, sc4_5reel_alt, sc4chavy, sc4_state, sc4chavy, ROT0, "Mazooma","Chavy Chase (Mazooma) (Scorpion 4) (set 8)", MACHINE_FLAGS, layout_bfm_sc4 )
DRIVER_INIT_MEMBER(sc4_state,sc4cmani)
@@ -33489,8 +33491,8 @@ INPUT_PORTS_START( sc4cmani ) // this structure is generated
INPUT_PORTS_END
// PR1308 COLOUR MANIA PR1308 COLOUR MAN SOUNDS11
-GAMEL( 200?, sc4cmani ,0, sc4_200_4rb, sc4cmani, sc4_state, sc4cmani, ROT0, "BFM","Colour Mania (Bellfruit) (Scorpion 4) (set 1)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4cmania ,sc4cmani, sc4_200_4rb, sc4cmani, sc4_state, sc4cmani, ROT0, "BFM","Colour Mania (Bellfruit) (Scorpion 4) (set 2)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4cmani ,0, sc4_200_4rb, sc4cmani, sc4_state, sc4cmani, ROT0, "BFM","Colour Mania (Bellfruit) (Scorpion 4) (set 1)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4cmania ,sc4cmani, sc4_200_4rb, sc4cmani, sc4_state, sc4cmani, ROT0, "BFM","Colour Mania (Bellfruit) (Scorpion 4) (set 2)", MACHINE_FLAGS, layout_bfm_sc4 )
DRIVER_INIT_MEMBER(sc4_state,sc4ctl)
@@ -33562,12 +33564,12 @@ INPUT_PORTS_END
// PR1109 AWP COP THE LOT PR1109 CTLOT SOUNDS11
-GAMEL( 200?, sc4ctl ,0, sc4_200_5r, sc4ctl, sc4_state, sc4ctl, ROT0, "BFM","Cop The Lot (Bellfruit) (Scorpion 4) (set 1)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4ctla ,sc4ctl, sc4_200_5r, sc4ctl, sc4_state, sc4ctl, ROT0, "BFM","Cop The Lot (Bellfruit) (Scorpion 4) (set 2)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4ctlb ,sc4ctl, sc4_200_5r, sc4ctl, sc4_state, sc4ctl, ROT0, "BFM","Cop The Lot (Bellfruit) (Scorpion 4) (set 3)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4ctlc ,sc4ctl, sc4_200_5r, sc4ctl, sc4_state, sc4ctl, ROT0, "BFM","Cop The Lot (Bellfruit) (Scorpion 4) (set 4)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4ctld ,sc4ctl, sc4_200_5r, sc4ctl, sc4_state, sc4ctl, ROT0, "BFM","Cop The Lot (Bellfruit) (Scorpion 4) (set 5)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4ctle ,sc4ctl, sc4_200_5r, sc4ctl, sc4_state, sc4ctl, ROT0, "BFM","Cop The Lot (Bellfruit) (Scorpion 4) (set 6)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4ctl ,0, sc4_200_5r, sc4ctl, sc4_state, sc4ctl, ROT0, "BFM","Cop The Lot (Bellfruit) (Scorpion 4) (set 1)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4ctla ,sc4ctl, sc4_200_5r, sc4ctl, sc4_state, sc4ctl, ROT0, "BFM","Cop The Lot (Bellfruit) (Scorpion 4) (set 2)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4ctlb ,sc4ctl, sc4_200_5r, sc4ctl, sc4_state, sc4ctl, ROT0, "BFM","Cop The Lot (Bellfruit) (Scorpion 4) (set 3)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4ctlc ,sc4ctl, sc4_200_5r, sc4ctl, sc4_state, sc4ctl, ROT0, "BFM","Cop The Lot (Bellfruit) (Scorpion 4) (set 4)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4ctld ,sc4ctl, sc4_200_5r, sc4ctl, sc4_state, sc4ctl, ROT0, "BFM","Cop The Lot (Bellfruit) (Scorpion 4) (set 5)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4ctle ,sc4ctl, sc4_200_5r, sc4ctl, sc4_state, sc4ctl, ROT0, "BFM","Cop The Lot (Bellfruit) (Scorpion 4) (set 6)", MACHINE_FLAGS, layout_bfm_sc4 )
INPUT_PORTS_START( sc4crsc ) // this structure is generated
@@ -33634,14 +33636,14 @@ INPUT_PORTS_START( sc4crsc ) // this structure is generated
INPUT_PORTS_END
// PR3035 AWP COPS AND ROBBERS SAFE CRACKER S4 PR3005 SAFE CRACKER SOUNDS11 SAFE CRACKER S.SITE
-GAMEL( 200?, sc4crsc ,0, sc4, sc4crsc, sc4_state, sc4mbus, ROT0, "BFM","Cops 'n' Robbers Safe Cracker (Bellfruit) (Scorpion 4) (set 1)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4crsca ,sc4crsc, sc4, sc4crsc, sc4_state, sc4mbus, ROT0, "BFM","Cops 'n' Robbers Safe Cracker (Bellfruit) (Scorpion 4) (set 2)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4crscb ,sc4crsc, sc4, sc4crsc, sc4_state, sc4mbus, ROT0, "BFM","Cops 'n' Robbers Safe Cracker (Bellfruit) (Scorpion 4) (set 3)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4crscc ,sc4crsc, sc4, sc4crsc, sc4_state, sc4mbus, ROT0, "BFM","Cops 'n' Robbers Safe Cracker (Bellfruit) (Scorpion 4) (set 4)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4crscd ,sc4crsc, sc4, sc4crsc, sc4_state, sc4mbus, ROT0, "BFM","Cops 'n' Robbers Safe Cracker (Bellfruit) (Scorpion 4) (set 5)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4crsce ,sc4crsc, sc4, sc4crsc, sc4_state, sc4mbus, ROT0, "BFM","Cops 'n' Robbers Safe Cracker (Bellfruit) (Scorpion 4) (set 6)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4crscf ,sc4crsc, sc4, sc4crsc, sc4_state, sc4mbus, ROT0, "BFM","Cops 'n' Robbers Safe Cracker (Bellfruit) (Scorpion 4) (set 7)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4crscg ,sc4crsc, sc4, sc4crsc, sc4_state, sc4mbus, ROT0, "BFM","Cops 'n' Robbers Safe Cracker (Bellfruit) (Scorpion 4) (set 8)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4crsc ,0, sc4, sc4crsc, sc4_state, sc4mbus, ROT0, "BFM","Cops 'n' Robbers Safe Cracker (Bellfruit) (Scorpion 4) (set 1)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4crsca ,sc4crsc, sc4, sc4crsc, sc4_state, sc4mbus, ROT0, "BFM","Cops 'n' Robbers Safe Cracker (Bellfruit) (Scorpion 4) (set 2)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4crscb ,sc4crsc, sc4, sc4crsc, sc4_state, sc4mbus, ROT0, "BFM","Cops 'n' Robbers Safe Cracker (Bellfruit) (Scorpion 4) (set 3)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4crscc ,sc4crsc, sc4, sc4crsc, sc4_state, sc4mbus, ROT0, "BFM","Cops 'n' Robbers Safe Cracker (Bellfruit) (Scorpion 4) (set 4)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4crscd ,sc4crsc, sc4, sc4crsc, sc4_state, sc4mbus, ROT0, "BFM","Cops 'n' Robbers Safe Cracker (Bellfruit) (Scorpion 4) (set 5)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4crsce ,sc4crsc, sc4, sc4crsc, sc4_state, sc4mbus, ROT0, "BFM","Cops 'n' Robbers Safe Cracker (Bellfruit) (Scorpion 4) (set 6)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4crscf ,sc4crsc, sc4, sc4crsc, sc4_state, sc4mbus, ROT0, "BFM","Cops 'n' Robbers Safe Cracker (Bellfruit) (Scorpion 4) (set 7)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4crscg ,sc4crsc, sc4, sc4crsc, sc4_state, sc4mbus, ROT0, "BFM","Cops 'n' Robbers Safe Cracker (Bellfruit) (Scorpion 4) (set 8)", MACHINE_FLAGS, layout_bfm_sc4 )
DRIVER_INIT_MEMBER(sc4_state,sc4coro)
@@ -33701,14 +33703,14 @@ INPUT_PORTS_START( sc4coro ) // this structure is generated
INPUT_PORTS_END
// PR2252 CORONATION ST CORRY SOUNDS CORONATION ST
-GAMEL( 200?, sc4coro ,0, sc4_4reel_alt, sc4coro, sc4_state, sc4coro, ROT0, "Mazooma","Coronation Street (PR2252) (Mazooma) (Scorpion 4) (set 1)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4coroa ,sc4coro, sc4_4reel_alt, sc4coro, sc4_state, sc4coro, ROT0, "Mazooma","Coronation Street (PR2252) (Mazooma) (Scorpion 4) (set 2)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4corof ,sc4coro, sc4_4reel_alt, sc4coro, sc4_state, sc4coro, ROT0, "Mazooma","Coronation Street (PR2252) (Mazooma) (Scorpion 4) (set 3)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4corog ,sc4coro, sc4_4reel_alt, sc4coro, sc4_state, sc4coro, ROT0, "Mazooma","Coronation Street (PR2252) (Mazooma) (Scorpion 4) (set 4)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4coroj ,sc4coro, sc4_4reel_alt, sc4coro, sc4_state, sc4coro, ROT0, "Mazooma","Coronation Street (PR2252) (Mazooma) (Scorpion 4) (set 5)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4corok ,sc4coro, sc4_4reel_alt, sc4coro, sc4_state, sc4coro, ROT0, "Mazooma","Coronation Street (PR2252) (Mazooma) (Scorpion 4) (set 6)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4corol ,sc4coro, sc4_4reel_alt, sc4coro, sc4_state, sc4coro, ROT0, "Mazooma","Coronation Street (PR2252) (Mazooma) (Scorpion 4) (set 7)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4corom ,sc4coro, sc4_4reel_alt, sc4coro, sc4_state, sc4coro, ROT0, "Mazooma","Coronation Street (PR2252) (Mazooma) (Scorpion 4) (set 8)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4coro ,0, sc4_4reel_alt, sc4coro, sc4_state, sc4coro, ROT0, "Mazooma","Coronation Street (PR2252) (Mazooma) (Scorpion 4) (set 1)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4coroa ,sc4coro, sc4_4reel_alt, sc4coro, sc4_state, sc4coro, ROT0, "Mazooma","Coronation Street (PR2252) (Mazooma) (Scorpion 4) (set 2)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4corof ,sc4coro, sc4_4reel_alt, sc4coro, sc4_state, sc4coro, ROT0, "Mazooma","Coronation Street (PR2252) (Mazooma) (Scorpion 4) (set 3)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4corog ,sc4coro, sc4_4reel_alt, sc4coro, sc4_state, sc4coro, ROT0, "Mazooma","Coronation Street (PR2252) (Mazooma) (Scorpion 4) (set 4)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4coroj ,sc4coro, sc4_4reel_alt, sc4coro, sc4_state, sc4coro, ROT0, "Mazooma","Coronation Street (PR2252) (Mazooma) (Scorpion 4) (set 5)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4corok ,sc4coro, sc4_4reel_alt, sc4coro, sc4_state, sc4coro, ROT0, "Mazooma","Coronation Street (PR2252) (Mazooma) (Scorpion 4) (set 6)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4corol ,sc4coro, sc4_4reel_alt, sc4coro, sc4_state, sc4coro, ROT0, "Mazooma","Coronation Street (PR2252) (Mazooma) (Scorpion 4) (set 7)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4corom ,sc4coro, sc4_4reel_alt, sc4coro, sc4_state, sc4coro, ROT0, "Mazooma","Coronation Street (PR2252) (Mazooma) (Scorpion 4) (set 8)", MACHINE_FLAGS, layout_bfm_sc4 )
DRIVER_INIT_MEMBER(sc4_state,sc4corod)
@@ -33826,16 +33828,16 @@ INPUT_PORTS_END
// PR2249 CORONATION ST Arcade Version 012 COROST_TRIPLE SOUNDS CORONATION ST
// PAY UINT ERR 17
-GAMEL( 200?, sc4coroc ,0, sc4, sc4coroc, sc4_state, sc4, ROT0, "Mazooma","Coronation Street Triple (Arcade Version 012) (PR2249) (Mazooma) (Scorpion 4) (set 1)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4coroh ,sc4coroc, sc4, sc4coroc, sc4_state, sc4, ROT0, "Mazooma","Coronation Street Triple (Arcade Version 012) (PR2249) (Mazooma) (Scorpion 4) (set 2)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4coroc ,0, sc4, sc4coroc, sc4_state, sc4, ROT0, "Mazooma","Coronation Street Triple (Arcade Version 012) (PR2249) (Mazooma) (Scorpion 4) (set 1)", MACHINE_FLAGS_NOSOUND, layout_bfm_sc4 )
+GAMEL( 200?, sc4coroh ,sc4coroc, sc4, sc4coroc, sc4_state, sc4, ROT0, "Mazooma","Coronation Street Triple (Arcade Version 012) (PR2249) (Mazooma) (Scorpion 4) (set 2)", MACHINE_FLAGS_NOSOUND, layout_bfm_sc4 )
// P_2_4_ _O_O_A_I_N_S_ _i_g_ _e_s_o_ _1_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _O_O_T_T_I_L_ _O_N_S_ _ _ _ _ _ _ _C_R_N_T_O_ _S_ _ _ _
-GAMEL( 200?, sc4coron ,sc4coroc, sc4, sc4coroc, sc4_state, sc4, ROT0, "Mazooma","Coronation Street Triple (Bingo Version ?1) (PR2?4?) (Mazooma) (Scorpion 4)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 ) // incomplete pair, was in 'show me the money' set 'Bingo Version' is a guess
+GAMEL( 200?, sc4coron ,sc4coroc, sc4, sc4coroc, sc4_state, sc4, ROT0, "Mazooma","Coronation Street Triple (Bingo Version ?1) (PR2?4?) (Mazooma) (Scorpion 4)", MACHINE_FLAGS, layout_bfm_sc4 ) // incomplete pair, was in 'show me the money' set 'Bingo Version' is a guess
// PR2249 CORONATION STREET CORS MAZ COROST_TRIPLE SOUNDS
-GAMEL( 200?, sc4corod ,sc4coroc, sc4_4reel, sc4corod, sc4_state, sc4corod, ROT0, "Mazooma","Coronation Street Triple (PR2249) (Mazooma) (Scorpion 4) (set 1)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4coroi ,sc4coroc, sc4_4reel, sc4corod, sc4_state, sc4corod, ROT0, "Mazooma","Coronation Street Triple (PR2249) (Mazooma) (Scorpion 4) (set 2)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4corod ,sc4coroc, sc4_4reel, sc4corod, sc4_state, sc4corod, ROT0, "Mazooma","Coronation Street Triple (PR2249) (Mazooma) (Scorpion 4) (set 1)", MACHINE_FLAGS_NOSOUND, layout_bfm_sc4 )
+GAMEL( 200?, sc4coroi ,sc4coroc, sc4_4reel, sc4corod, sc4_state, sc4corod, ROT0, "Mazooma","Coronation Street Triple (PR2249) (Mazooma) (Scorpion 4) (set 2)", MACHINE_FLAGS_NOSOUND, layout_bfm_sc4 )
// PR2526 CORONATION ST TOP BOX COROST_TRIPLE SOUNDS CORONATION ST
-GAMEL( 200?, sc4corotb ,sc4coroc, sc4_4reel_alt, sc4, sc4_state, sc4corotb, ROT0, "Mazooma","Coronation Street Triple Top Box (PR2526, CSTB) (Mazooma) (Scorpion 4) (Top Box, set 1)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4corotba ,sc4coroc, sc4_4reel_alt, sc4, sc4_state, sc4corotb, ROT0, "Mazooma","Coronation Street Triple Top Box (PR2526, CSTB) (Mazooma) (Scorpion 4) (Top Box, set 2)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4corotb ,sc4coroc, sc4_4reel_alt, sc4, sc4_state, sc4corotb, ROT0, "Mazooma","Coronation Street Triple Top Box (PR2526, CSTB) (Mazooma) (Scorpion 4) (Top Box, set 1)", MACHINE_FLAGS_NOSOUND, layout_bfm_sc4 )
+GAMEL( 200?, sc4corotba ,sc4coroc, sc4_4reel_alt, sc4, sc4_state, sc4corotb, ROT0, "Mazooma","Coronation Street Triple Top Box (PR2526, CSTB) (Mazooma) (Scorpion 4) (Top Box, set 2)", MACHINE_FLAGS_NOSOUND, layout_bfm_sc4 )
DRIVER_INIT_MEMBER(sc4_state,sc4corcl)
{
@@ -33905,8 +33907,8 @@ INPUT_PORTS_START( sc4corcl ) // this structure is generated
INPUT_PORTS_END
// PR2383 CLUBCORONATIONSTREET CLUBCORONATIONST CLUB CCORO SOUNDS CLUB CORO ST
-GAMEL( 200?, sc4corcl ,0, sc4_5reel, sc4corcl, sc4_state, sc4corcl, ROT0, "Mazooma","Coronation Street Club (Mazooma) (Scorpion 4) (set 1)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4corcla ,sc4corcl, sc4_5reel, sc4corcl, sc4_state, sc4corcl, ROT0, "Mazooma","Coronation Street Club (Mazooma) (Scorpion 4) (set 2)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4corcl ,0, sc4_5reel, sc4corcl, sc4_state, sc4corcl, ROT0, "Mazooma","Coronation Street Club (Mazooma) (Scorpion 4) (set 1)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4corcla ,sc4corcl, sc4_5reel, sc4corcl, sc4_state, sc4corcl, ROT0, "Mazooma","Coronation Street Club (Mazooma) (Scorpion 4) (set 2)", MACHINE_FLAGS, layout_bfm_sc4 )
DRIVER_INIT_MEMBER(sc4_state,sc4count)
@@ -33975,8 +33977,8 @@ INPUT_PORTS_START( sc4count ) // this structure is generated
INPUT_PORTS_END
// PR1929 AWP COUNTDOWN S4 PR1909 COUNTDOWN SOUNDS11 COUNTDOWN S.SITE
-GAMEL( 200?, sc4count ,0, sc4_200_5ra, sc4count, sc4_state, sc4count, ROT0, "BFM","Countdown (Bellfruit) (Scorpion 4) (set 1)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4counta ,sc4count, sc4_200_5ra, sc4count, sc4_state, sc4count, ROT0, "BFM","Countdown (Bellfruit) (Scorpion 4) (set 2)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4count ,0, sc4_200_5ra, sc4count, sc4_state, sc4count, ROT0, "BFM","Countdown (Bellfruit) (Scorpion 4) (set 1)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4counta ,sc4count, sc4_200_5ra, sc4count, sc4_state, sc4count, ROT0, "BFM","Countdown (Bellfruit) (Scorpion 4) (set 2)", MACHINE_FLAGS, layout_bfm_sc4 )
@@ -34065,22 +34067,22 @@ INPUT_PORTS_START( sc4dnd35 )
INPUT_PORTS_END
// PR1927 AWP DEAL OR NO DEAL S4 PR1907 DEAL OR NO DEAL SOUNDS11
-GAMEL( 200?, sc4dnd ,0, sc4, sc4dnd25, sc4_state, sc4dnd, ROT0, "BFM","Deal Or No Deal (Bellfruit) (Scorpion 4) (DONL016, set 1)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_sc4dnd ) // DONL 016
-GAMEL( 200?, sc4dndb ,sc4dnd, sc4, sc4dnd25, sc4_state, sc4dnd, ROT0, "BFM","Deal Or No Deal (Bellfruit) (Scorpion 4) (DONL016, set 2)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_sc4dnd ) // DONL 016
-GAMEL( 200?, sc4dnde ,sc4dnd, sc4, sc4dnd25, sc4_state, sc4dnd, ROT0, "BFM","Deal Or No Deal (Bellfruit) (Scorpion 4) (DONL017, set 1)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_sc4dnd ) // DONL 017
-GAMEL( 200?, sc4dndh ,sc4dnd, sc4, sc4dnd25, sc4_state, sc4dnd, ROT0, "BFM","Deal Or No Deal (Bellfruit) (Scorpion 4) (DONL017, set 2)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_sc4dnd ) // DONL 017
-GAMEL( 200?, sc4dndf ,sc4dnd, sc4, sc4dnd25, sc4_state, sc4dnd, ROT0, "BFM","Deal Or No Deal (Bellfruit) (Scorpion 4) (DONL018, set 1)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_sc4dnd ) // DONL 018
-GAMEL( 200?, sc4dndi ,sc4dnd, sc4, sc4dnd25, sc4_state, sc4dnd, ROT0, "BFM","Deal Or No Deal (Bellfruit) (Scorpion 4) (DONL018, set 2)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_sc4dnd )// DONL 018
-GAMEL( 200?, sc4dndd ,sc4dnd, sc4, sc4dnd35, sc4_state, sc4dnd, ROT0, "BFM","Deal Or No Deal (Bellfruit) (Scorpion 4) (DONL402, set 1)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_sc4dnd ) // DONL 402
-GAMEL( 200?, sc4dndg ,sc4dnd, sc4, sc4dnd35, sc4_state, sc4dnd, ROT0, "BFM","Deal Or No Deal (Bellfruit) (Scorpion 4) (DONL402, set 2)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_sc4dnd ) // DONL 402
-GAMEL( 200?, sc4dndj ,sc4dnd, sc4, sc4dnd35, sc4_state, sc4dnd, ROT0, "BFM","Deal Or No Deal (Bellfruit) (Scorpion 4) (DONL406, set 1)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_sc4dnd )// DONL 406
-GAMEL( 200?, sc4dndl ,sc4dnd, sc4, sc4dnd35, sc4_state, sc4dnd, ROT0, "BFM","Deal Or No Deal (Bellfruit) (Scorpion 4) (DONL406, set 2)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_sc4dnd )// DONL 406
-GAMEL( 200?, sc4dndc ,sc4dnd, sc4, sc4dnd35, sc4_state, sc4dnd, ROT0, "BFM","Deal Or No Deal (Bellfruit) (Scorpion 4) (DONL422, set 1)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_sc4dnd ) // DONL 422
-GAMEL( 200?, sc4dnda ,sc4dnd, sc4, sc4dnd35, sc4_state, sc4dnd, ROT0, "BFM","Deal Or No Deal (Bellfruit) (Scorpion 4) (DONL422, set 2)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_sc4dnd ) // DONL 422, incomplete pairing
-GAMEL( 200?, sc4dndn ,sc4dnd, sc4, sc4dnd35, sc4_state, sc4dnd, ROT0, "BFM","Deal Or No Deal (Bellfruit) (Scorpion 4) (DONL424, set 1)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_sc4dnd )// DONL 424
-GAMEL( 200?, sc4dndo ,sc4dnd, sc4, sc4dnd35, sc4_state, sc4dnd, ROT0, "BFM","Deal Or No Deal (Bellfruit) (Scorpion 4) (DONL424, set 2)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_sc4dnd )// DONL 424
-GAMEL( 200?, sc4dndk ,sc4dnd, sc4, sc4dnd35, sc4_state, sc4dnd, ROT0, "BFM","Deal Or No Deal (Bellfruit) (Scorpion 4) (DONL428, set 1)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_sc4dnd )// DONL 428
-GAMEL( 200?, sc4dndm ,sc4dnd, sc4, sc4dnd35, sc4_state, sc4dnd, ROT0, "BFM","Deal Or No Deal (Bellfruit) (Scorpion 4) (DONL428, set 2)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_sc4dnd )// DONL 428
+GAMEL( 200?, sc4dnd ,0, sc4, sc4dnd25, sc4_state, sc4dnd, ROT0, "BFM","Deal Or No Deal (Bellfruit) (Scorpion 4) (DONL016, set 1)", MACHINE_FLAGS, layout_sc4dnd ) // DONL 016
+GAMEL( 200?, sc4dndb ,sc4dnd, sc4, sc4dnd25, sc4_state, sc4dnd, ROT0, "BFM","Deal Or No Deal (Bellfruit) (Scorpion 4) (DONL016, set 2)", MACHINE_FLAGS, layout_sc4dnd ) // DONL 016
+GAMEL( 200?, sc4dnde ,sc4dnd, sc4, sc4dnd25, sc4_state, sc4dnd, ROT0, "BFM","Deal Or No Deal (Bellfruit) (Scorpion 4) (DONL017, set 1)", MACHINE_FLAGS, layout_sc4dnd ) // DONL 017
+GAMEL( 200?, sc4dndh ,sc4dnd, sc4, sc4dnd25, sc4_state, sc4dnd, ROT0, "BFM","Deal Or No Deal (Bellfruit) (Scorpion 4) (DONL017, set 2)", MACHINE_FLAGS, layout_sc4dnd ) // DONL 017
+GAMEL( 200?, sc4dndf ,sc4dnd, sc4, sc4dnd25, sc4_state, sc4dnd, ROT0, "BFM","Deal Or No Deal (Bellfruit) (Scorpion 4) (DONL018, set 1)", MACHINE_FLAGS, layout_sc4dnd ) // DONL 018
+GAMEL( 200?, sc4dndi ,sc4dnd, sc4, sc4dnd25, sc4_state, sc4dnd, ROT0, "BFM","Deal Or No Deal (Bellfruit) (Scorpion 4) (DONL018, set 2)", MACHINE_FLAGS, layout_sc4dnd )// DONL 018
+GAMEL( 200?, sc4dndd ,sc4dnd, sc4, sc4dnd35, sc4_state, sc4dnd, ROT0, "BFM","Deal Or No Deal (Bellfruit) (Scorpion 4) (DONL402, set 1)", MACHINE_FLAGS, layout_sc4dnd ) // DONL 402
+GAMEL( 200?, sc4dndg ,sc4dnd, sc4, sc4dnd35, sc4_state, sc4dnd, ROT0, "BFM","Deal Or No Deal (Bellfruit) (Scorpion 4) (DONL402, set 2)", MACHINE_FLAGS, layout_sc4dnd ) // DONL 402
+GAMEL( 200?, sc4dndj ,sc4dnd, sc4, sc4dnd35, sc4_state, sc4dnd, ROT0, "BFM","Deal Or No Deal (Bellfruit) (Scorpion 4) (DONL406, set 1)", MACHINE_FLAGS, layout_sc4dnd )// DONL 406
+GAMEL( 200?, sc4dndl ,sc4dnd, sc4, sc4dnd35, sc4_state, sc4dnd, ROT0, "BFM","Deal Or No Deal (Bellfruit) (Scorpion 4) (DONL406, set 2)", MACHINE_FLAGS, layout_sc4dnd )// DONL 406
+GAMEL( 200?, sc4dndc ,sc4dnd, sc4, sc4dnd35, sc4_state, sc4dnd, ROT0, "BFM","Deal Or No Deal (Bellfruit) (Scorpion 4) (DONL422, set 1)", MACHINE_FLAGS, layout_sc4dnd ) // DONL 422
+GAMEL( 200?, sc4dnda ,sc4dnd, sc4, sc4dnd35, sc4_state, sc4dnd, ROT0, "BFM","Deal Or No Deal (Bellfruit) (Scorpion 4) (DONL422, set 2)", MACHINE_FLAGS, layout_sc4dnd ) // DONL 422, incomplete pairing
+GAMEL( 200?, sc4dndn ,sc4dnd, sc4, sc4dnd35, sc4_state, sc4dnd, ROT0, "BFM","Deal Or No Deal (Bellfruit) (Scorpion 4) (DONL424, set 1)", MACHINE_FLAGS, layout_sc4dnd )// DONL 424
+GAMEL( 200?, sc4dndo ,sc4dnd, sc4, sc4dnd35, sc4_state, sc4dnd, ROT0, "BFM","Deal Or No Deal (Bellfruit) (Scorpion 4) (DONL424, set 2)", MACHINE_FLAGS, layout_sc4dnd )// DONL 424
+GAMEL( 200?, sc4dndk ,sc4dnd, sc4, sc4dnd35, sc4_state, sc4dnd, ROT0, "BFM","Deal Or No Deal (Bellfruit) (Scorpion 4) (DONL428, set 1)", MACHINE_FLAGS, layout_sc4dnd )// DONL 428
+GAMEL( 200?, sc4dndm ,sc4dnd, sc4, sc4dnd35, sc4_state, sc4dnd, ROT0, "BFM","Deal Or No Deal (Bellfruit) (Scorpion 4) (DONL428, set 2)", MACHINE_FLAGS, layout_sc4dnd )// DONL 428
DRIVER_INIT_MEMBER(sc4_state,sc4dndcs)
@@ -34158,12 +34160,12 @@ INPUT_PORTS_START( sc4dndcs5 )
INPUT_PORTS_END
// PR1967 AWP CLASSIC DEAL OR NO DEAL S4 PR1907 DEAL OR NO DEAL SOUNDS11
-GAMEL( 200?, sc4dndcs ,0, sc4, sc4dndcs5, sc4_state, sc4dndcs, ROT0, "BFM","Deal Or No Deal Classic (Bellfruit) (Scorpion 4) (CLDD211, set 1)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 ) // CLDD 211
-GAMEL( 200?, sc4dndcsb ,sc4dndcs, sc4, sc4dndcs5, sc4_state, sc4dndcs, ROT0, "BFM","Deal Or No Deal Classic (Bellfruit) (Scorpion 4) (CLDD211, set 2)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 ) // CLDD 211
-GAMEL( 200?, sc4dndcsa ,sc4dndcs, sc4, sc4dndcs5, sc4_state, sc4dndcs, ROT0, "BFM","Deal Or No Deal Classic (Bellfruit) (Scorpion 4) (CLDD212, set 1)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 ) // CLDD 212
-GAMEL( 200?, sc4dndcsc ,sc4dndcs, sc4, sc4dndcs5, sc4_state, sc4dndcs, ROT0, "BFM","Deal Or No Deal Classic (Bellfruit) (Scorpion 4) (CLDD212, set 2)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 ) // CLDD 212
-GAMEL( 200?, sc4dndcsd ,sc4dndcs, sc4, sc4dndcs5, sc4_state, sc4dndcs, ROT0, "BFM","Deal Or No Deal Classic (Bellfruit) (Scorpion 4) (CLDD215, set 1)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 ) // CLDD 215
-GAMEL( 200?, sc4dndcse ,sc4dndcs, sc4, sc4dndcs5, sc4_state, sc4dndcs, ROT0, "BFM","Deal Or No Deal Classic (Bellfruit) (Scorpion 4) (CLDD215, set 2)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 ) // CLDD 215
+GAMEL( 200?, sc4dndcs ,0, sc4, sc4dndcs5, sc4_state, sc4dndcs, ROT0, "BFM","Deal Or No Deal Classic (Bellfruit) (Scorpion 4) (CLDD211, set 1)", MACHINE_FLAGS, layout_bfm_sc4 ) // CLDD 211
+GAMEL( 200?, sc4dndcsb ,sc4dndcs, sc4, sc4dndcs5, sc4_state, sc4dndcs, ROT0, "BFM","Deal Or No Deal Classic (Bellfruit) (Scorpion 4) (CLDD211, set 2)", MACHINE_FLAGS, layout_bfm_sc4 ) // CLDD 211
+GAMEL( 200?, sc4dndcsa ,sc4dndcs, sc4, sc4dndcs5, sc4_state, sc4dndcs, ROT0, "BFM","Deal Or No Deal Classic (Bellfruit) (Scorpion 4) (CLDD212, set 1)", MACHINE_FLAGS, layout_bfm_sc4 ) // CLDD 212
+GAMEL( 200?, sc4dndcsc ,sc4dndcs, sc4, sc4dndcs5, sc4_state, sc4dndcs, ROT0, "BFM","Deal Or No Deal Classic (Bellfruit) (Scorpion 4) (CLDD212, set 2)", MACHINE_FLAGS, layout_bfm_sc4 ) // CLDD 212
+GAMEL( 200?, sc4dndcsd ,sc4dndcs, sc4, sc4dndcs5, sc4_state, sc4dndcs, ROT0, "BFM","Deal Or No Deal Classic (Bellfruit) (Scorpion 4) (CLDD215, set 1)", MACHINE_FLAGS, layout_bfm_sc4 ) // CLDD 215
+GAMEL( 200?, sc4dndcse ,sc4dndcs, sc4, sc4dndcs5, sc4_state, sc4dndcs, ROT0, "BFM","Deal Or No Deal Classic (Bellfruit) (Scorpion 4) (CLDD215, set 2)", MACHINE_FLAGS, layout_bfm_sc4 ) // CLDD 215
DRIVER_INIT_MEMBER(sc4_state,sc4dndbb)
@@ -34254,16 +34256,16 @@ INPUT_PORTS_END
// PR3229 AWP DEAL OR NO DEAL BREAK THE BANK SCORP4 PR3209 BREAK THE BANK SOUNDS11
-GAMEL( 200?, sc4dndbb ,0, sc4_5reel_alt, sc4dndbb35, sc4_state, sc4dndbb, ROT0, "BFM","Deal Or No Deal Break The Bank (Bellfruit) (Scorpion 4) (CRBE471, set 1)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 ) // CRBE 471
-GAMEL( 200?, sc4dndbbb ,sc4dndbb, sc4_5reel_alt, sc4dndbb35, sc4_state, sc4dndbb, ROT0, "BFM","Deal Or No Deal Break The Bank (Bellfruit) (Scorpion 4) (CRBE471, set 2)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 ) // CRBE 471
-GAMEL( 200?, sc4dndbba ,sc4dndbb, sc4_5reel_alt, sc4dndbb35, sc4_state, sc4dndbb, ROT0, "BFM","Deal Or No Deal Break The Bank (Bellfruit) (Scorpion 4) (CRBE472, set 1)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 ) // CRBE 472
-GAMEL( 200?, sc4dndbbc ,sc4dndbb, sc4_5reel_alt, sc4dndbb35, sc4_state, sc4dndbb, ROT0, "BFM","Deal Or No Deal Break The Bank (Bellfruit) (Scorpion 4) (CRBE472, set 2)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 ) // CRBE 472
-GAMEL( 200?, sc4dndbbd ,sc4dndbb, sc4_5reel_alt, sc4dndbb35, sc4_state, sc4dndbb, ROT0, "BFM","Deal Or No Deal Break The Bank (Bellfruit) (Scorpion 4) (CRBE473, set 1)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 ) // CRBE 473
-GAMEL( 200?, sc4dndbbg ,sc4dndbb, sc4_5reel_alt, sc4dndbb35, sc4_state, sc4dndbb, ROT0, "BFM","Deal Or No Deal Break The Bank (Bellfruit) (Scorpion 4) (CRBE473, set 2)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 ) // CRBE 473
-GAMEL( 200?, sc4dndbbe ,sc4dndbb, sc4_5reel_alt, sc4dndbb70, sc4_state, sc4dndbb, ROT0, "BFM","Deal Or No Deal Break The Bank (Bellfruit) (Scorpion 4) (CRBE571, set 1)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 ) // CRBE 571
-GAMEL( 200?, sc4dndbbh ,sc4dndbb, sc4_5reel_alt, sc4dndbb70, sc4_state, sc4dndbb, ROT0, "BFM","Deal Or No Deal Break The Bank (Bellfruit) (Scorpion 4) (CRBE571, set 2)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 ) // CRBE 571
-GAMEL( 200?, sc4dndbbf ,sc4dndbb, sc4_5reel_alt, sc4dndbb70, sc4_state, sc4dndbb, ROT0, "BFM","Deal Or No Deal Break The Bank (Bellfruit) (Scorpion 4) (CRBE572, set 1)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 ) // CRBE 572
-GAMEL( 200?, sc4dndbbi ,sc4dndbb, sc4_5reel_alt, sc4dndbb70, sc4_state, sc4dndbb, ROT0, "BFM","Deal Or No Deal Break The Bank (Bellfruit) (Scorpion 4) (CRBE572, set 2)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )// CRBE 572
+GAMEL( 200?, sc4dndbb ,0, sc4_5reel_alt, sc4dndbb35, sc4_state, sc4dndbb, ROT0, "BFM","Deal Or No Deal Break The Bank (Bellfruit) (Scorpion 4) (CRBE471, set 1)", MACHINE_FLAGS, layout_bfm_sc4 ) // CRBE 471
+GAMEL( 200?, sc4dndbbb ,sc4dndbb, sc4_5reel_alt, sc4dndbb35, sc4_state, sc4dndbb, ROT0, "BFM","Deal Or No Deal Break The Bank (Bellfruit) (Scorpion 4) (CRBE471, set 2)", MACHINE_FLAGS, layout_bfm_sc4 ) // CRBE 471
+GAMEL( 200?, sc4dndbba ,sc4dndbb, sc4_5reel_alt, sc4dndbb35, sc4_state, sc4dndbb, ROT0, "BFM","Deal Or No Deal Break The Bank (Bellfruit) (Scorpion 4) (CRBE472, set 1)", MACHINE_FLAGS, layout_bfm_sc4 ) // CRBE 472
+GAMEL( 200?, sc4dndbbc ,sc4dndbb, sc4_5reel_alt, sc4dndbb35, sc4_state, sc4dndbb, ROT0, "BFM","Deal Or No Deal Break The Bank (Bellfruit) (Scorpion 4) (CRBE472, set 2)", MACHINE_FLAGS, layout_bfm_sc4 ) // CRBE 472
+GAMEL( 200?, sc4dndbbd ,sc4dndbb, sc4_5reel_alt, sc4dndbb35, sc4_state, sc4dndbb, ROT0, "BFM","Deal Or No Deal Break The Bank (Bellfruit) (Scorpion 4) (CRBE473, set 1)", MACHINE_FLAGS, layout_bfm_sc4 ) // CRBE 473
+GAMEL( 200?, sc4dndbbg ,sc4dndbb, sc4_5reel_alt, sc4dndbb35, sc4_state, sc4dndbb, ROT0, "BFM","Deal Or No Deal Break The Bank (Bellfruit) (Scorpion 4) (CRBE473, set 2)", MACHINE_FLAGS, layout_bfm_sc4 ) // CRBE 473
+GAMEL( 200?, sc4dndbbe ,sc4dndbb, sc4_5reel_alt, sc4dndbb70, sc4_state, sc4dndbb, ROT0, "BFM","Deal Or No Deal Break The Bank (Bellfruit) (Scorpion 4) (CRBE571, set 1)", MACHINE_FLAGS, layout_bfm_sc4 ) // CRBE 571
+GAMEL( 200?, sc4dndbbh ,sc4dndbb, sc4_5reel_alt, sc4dndbb70, sc4_state, sc4dndbb, ROT0, "BFM","Deal Or No Deal Break The Bank (Bellfruit) (Scorpion 4) (CRBE571, set 2)", MACHINE_FLAGS, layout_bfm_sc4 ) // CRBE 571
+GAMEL( 200?, sc4dndbbf ,sc4dndbb, sc4_5reel_alt, sc4dndbb70, sc4_state, sc4dndbb, ROT0, "BFM","Deal Or No Deal Break The Bank (Bellfruit) (Scorpion 4) (CRBE572, set 1)", MACHINE_FLAGS, layout_bfm_sc4 ) // CRBE 572
+GAMEL( 200?, sc4dndbbi ,sc4dndbb, sc4_5reel_alt, sc4dndbb70, sc4_state, sc4dndbb, ROT0, "BFM","Deal Or No Deal Break The Bank (Bellfruit) (Scorpion 4) (CRBE572, set 2)", MACHINE_FLAGS, layout_bfm_sc4 )// CRBE 572
@@ -34347,14 +34349,14 @@ INPUT_PORTS_START( sc4dndcl500 )
INPUT_PORTS_END
// PR1949 CLUB DEAL OR NO DEAL DEAL OR NO DEAL CLUB PR1949 DEAL O N D SOUNDS11
-GAMEL( 200?, sc4dndclc ,sc4dndcl, sc4, sc4dndcl, sc4_state, sc4dndcl, ROT0, "BFM","Deal Or No Deal Club (Bellfruit) (Scorpion 4) (DNDL181, set 1)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 ) // DNDL 181 CLUB $500 (no key req?)
-GAMEL( 200?, sc4dndclg ,sc4dndcl, sc4, sc4dndcl, sc4_state, sc4dndcl, ROT0, "BFM","Deal Or No Deal Club (Bellfruit) (Scorpion 4) (DNDL181, set 2)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 ) // DNDL 181 CLUB $500 (no key req?)
-GAMEL( 200?, sc4dndcla ,sc4dndcl, sc4, sc4dndcl500, sc4_state, sc4dndcl, ROT0, "BFM","Deal Or No Deal Club (Bellfruit) (Scorpion 4) (DNDL212, set 1)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 ) // DNDL 212 CLUB ?500
-GAMEL( 200?, sc4dndcle ,sc4dndcl, sc4, sc4dndcl500, sc4_state, sc4dndcl, ROT0, "BFM","Deal Or No Deal Club (Bellfruit) (Scorpion 4) (DNDL212, set 2)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 ) // DNDL 212 CLUB ?500
-GAMEL( 200?, sc4dndcl ,0, sc4, sc4dndcl250, sc4_state, sc4dndcl, ROT0, "BFM","Deal Or No Deal Club (Bellfruit) (Scorpion 4) (DNDL313, set 1)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 ) // DNDL 313 CLUB ?250
-GAMEL( 200?, sc4dndcld ,sc4dndcl, sc4, sc4dndcl250, sc4_state, sc4dndcl, ROT0, "BFM","Deal Or No Deal Club (Bellfruit) (Scorpion 4) (DNDL313, set 2)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 ) // DNDL 313 CLUB ?250
-GAMEL( 200?, sc4dndclb ,sc4dndcl, sc4, sc4dndcl250, sc4_state, sc4dndcl, ROT0, "BFM","Deal Or No Deal Club (Bellfruit) (Scorpion 4) (DNDL391, set 1)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 ) // DNDL 391 CLUB ?250
-GAMEL( 200?, sc4dndclf ,sc4dndcl, sc4, sc4dndcl250, sc4_state, sc4dndcl, ROT0, "BFM","Deal Or No Deal Club (Bellfruit) (Scorpion 4) (DNDL391, set 2)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 ) // DNDL 391 CLUB ?250
+GAMEL( 200?, sc4dndclc ,sc4dndcl, sc4, sc4dndcl, sc4_state, sc4dndcl, ROT0, "BFM","Deal Or No Deal Club (Bellfruit) (Scorpion 4) (DNDL181, set 1)", MACHINE_FLAGS, layout_bfm_sc4 ) // DNDL 181 CLUB $500 (no key req?)
+GAMEL( 200?, sc4dndclg ,sc4dndcl, sc4, sc4dndcl, sc4_state, sc4dndcl, ROT0, "BFM","Deal Or No Deal Club (Bellfruit) (Scorpion 4) (DNDL181, set 2)", MACHINE_FLAGS, layout_bfm_sc4 ) // DNDL 181 CLUB $500 (no key req?)
+GAMEL( 200?, sc4dndcla ,sc4dndcl, sc4, sc4dndcl500, sc4_state, sc4dndcl, ROT0, "BFM","Deal Or No Deal Club (Bellfruit) (Scorpion 4) (DNDL212, set 1)", MACHINE_FLAGS, layout_bfm_sc4 ) // DNDL 212 CLUB ?500
+GAMEL( 200?, sc4dndcle ,sc4dndcl, sc4, sc4dndcl500, sc4_state, sc4dndcl, ROT0, "BFM","Deal Or No Deal Club (Bellfruit) (Scorpion 4) (DNDL212, set 2)", MACHINE_FLAGS, layout_bfm_sc4 ) // DNDL 212 CLUB ?500
+GAMEL( 200?, sc4dndcl ,0, sc4, sc4dndcl250, sc4_state, sc4dndcl, ROT0, "BFM","Deal Or No Deal Club (Bellfruit) (Scorpion 4) (DNDL313, set 1)", MACHINE_FLAGS, layout_bfm_sc4 ) // DNDL 313 CLUB ?250
+GAMEL( 200?, sc4dndcld ,sc4dndcl, sc4, sc4dndcl250, sc4_state, sc4dndcl, ROT0, "BFM","Deal Or No Deal Club (Bellfruit) (Scorpion 4) (DNDL313, set 2)", MACHINE_FLAGS, layout_bfm_sc4 ) // DNDL 313 CLUB ?250
+GAMEL( 200?, sc4dndclb ,sc4dndcl, sc4, sc4dndcl250, sc4_state, sc4dndcl, ROT0, "BFM","Deal Or No Deal Club (Bellfruit) (Scorpion 4) (DNDL391, set 1)", MACHINE_FLAGS, layout_bfm_sc4 ) // DNDL 391 CLUB ?250
+GAMEL( 200?, sc4dndclf ,sc4dndcl, sc4, sc4dndcl250, sc4_state, sc4dndcl, ROT0, "BFM","Deal Or No Deal Club (Bellfruit) (Scorpion 4) (DNDL391, set 2)", MACHINE_FLAGS, layout_bfm_sc4 ) // DNDL 391 CLUB ?250
DRIVER_INIT_MEMBER(sc4_state,sc4dnddd)
@@ -34441,14 +34443,14 @@ INPUT_PORTS_END
// PR3235 AWP DEAL OR NO DEAL DOUBLE S4 PR3215 DOND DOUBLE SOUNDS11 DOUBLE DOND S.SITE
-GAMEL( 200?, sc4dnddd ,0, sc4_5reel_alt, sc4dnddd35, sc4_state, sc4dnddd, ROT0, "BFM","Deal Or No Deal Double Deal Or No Deal (Bellfruit) (Scorpion 4) (DDNO471, set 1)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 ) // DDNO 471
-GAMEL( 200?, sc4dndddd ,sc4dnddd, sc4_5reel_alt, sc4dnddd35, sc4_state, sc4dnddd, ROT0, "BFM","Deal Or No Deal Double Deal Or No Deal (Bellfruit) (Scorpion 4) (DDNO471, set 2)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 ) // DDNO 471
-GAMEL( 200?, sc4dnddda ,sc4dnddd, sc4_5reel_alt, sc4dnddd70, sc4_state, sc4dnddd, ROT0, "BFM","Deal Or No Deal Double Deal Or No Deal (Bellfruit) (Scorpion 4) (DDNO571, set 1)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 ) // DDNO 571
-GAMEL( 200?, sc4dnddde ,sc4dnddd, sc4_5reel_alt, sc4dnddd70, sc4_state, sc4dnddd, ROT0, "BFM","Deal Or No Deal Double Deal Or No Deal (Bellfruit) (Scorpion 4) (DDNO571, set 2)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 ) // DDNO 571
-GAMEL( 200?, sc4dndddb ,sc4dnddd, sc4_5reel_alt, sc4dnddd70, sc4_state, sc4dnddd, ROT0, "BFM","Deal Or No Deal Double Deal Or No Deal (Bellfruit) (Scorpion 4) (DDNO572, set 1)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 ) // DDNO 572
-GAMEL( 200?, sc4dndddf ,sc4dnddd, sc4_5reel_alt, sc4dnddd70, sc4_state, sc4dnddd, ROT0, "BFM","Deal Or No Deal Double Deal Or No Deal (Bellfruit) (Scorpion 4) (DDNO572, set 2)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 ) // DDNO 572
-GAMEL( 200?, sc4dndddc ,sc4dnddd, sc4_5reel_alt, sc4dnddd70, sc4_state, sc4dnddd, ROT0, "BFM","Deal Or No Deal Double Deal Or No Deal (Bellfruit) (Scorpion 4) (DDNO573, set 1)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 ) // DDNO 573
-GAMEL( 200?, sc4dndddg ,sc4dnddd, sc4_5reel_alt, sc4dnddd70, sc4_state, sc4dnddd, ROT0, "BFM","Deal Or No Deal Double Deal Or No Deal (Bellfruit) (Scorpion 4) (DDNO573, set 2)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 ) // DDNO 573
+GAMEL( 200?, sc4dnddd ,0, sc4_5reel_alt, sc4dnddd35, sc4_state, sc4dnddd, ROT0, "BFM","Deal Or No Deal Double Deal Or No Deal (Bellfruit) (Scorpion 4) (DDNO471, set 1)", MACHINE_FLAGS, layout_bfm_sc4 ) // DDNO 471
+GAMEL( 200?, sc4dndddd ,sc4dnddd, sc4_5reel_alt, sc4dnddd35, sc4_state, sc4dnddd, ROT0, "BFM","Deal Or No Deal Double Deal Or No Deal (Bellfruit) (Scorpion 4) (DDNO471, set 2)", MACHINE_FLAGS, layout_bfm_sc4 ) // DDNO 471
+GAMEL( 200?, sc4dnddda ,sc4dnddd, sc4_5reel_alt, sc4dnddd70, sc4_state, sc4dnddd, ROT0, "BFM","Deal Or No Deal Double Deal Or No Deal (Bellfruit) (Scorpion 4) (DDNO571, set 1)", MACHINE_FLAGS, layout_bfm_sc4 ) // DDNO 571
+GAMEL( 200?, sc4dnddde ,sc4dnddd, sc4_5reel_alt, sc4dnddd70, sc4_state, sc4dnddd, ROT0, "BFM","Deal Or No Deal Double Deal Or No Deal (Bellfruit) (Scorpion 4) (DDNO571, set 2)", MACHINE_FLAGS, layout_bfm_sc4 ) // DDNO 571
+GAMEL( 200?, sc4dndddb ,sc4dnddd, sc4_5reel_alt, sc4dnddd70, sc4_state, sc4dnddd, ROT0, "BFM","Deal Or No Deal Double Deal Or No Deal (Bellfruit) (Scorpion 4) (DDNO572, set 1)", MACHINE_FLAGS, layout_bfm_sc4 ) // DDNO 572
+GAMEL( 200?, sc4dndddf ,sc4dnddd, sc4_5reel_alt, sc4dnddd70, sc4_state, sc4dnddd, ROT0, "BFM","Deal Or No Deal Double Deal Or No Deal (Bellfruit) (Scorpion 4) (DDNO572, set 2)", MACHINE_FLAGS, layout_bfm_sc4 ) // DDNO 572
+GAMEL( 200?, sc4dndddc ,sc4dnddd, sc4_5reel_alt, sc4dnddd70, sc4_state, sc4dnddd, ROT0, "BFM","Deal Or No Deal Double Deal Or No Deal (Bellfruit) (Scorpion 4) (DDNO573, set 1)", MACHINE_FLAGS, layout_bfm_sc4 ) // DDNO 573
+GAMEL( 200?, sc4dndddg ,sc4dnddd, sc4_5reel_alt, sc4dnddd70, sc4_state, sc4dnddd, ROT0, "BFM","Deal Or No Deal Double Deal Or No Deal (Bellfruit) (Scorpion 4) (DDNO573, set 2)", MACHINE_FLAGS, layout_bfm_sc4 ) // DDNO 573
@@ -34536,19 +34538,19 @@ INPUT_PORTS_START( sc4dndhf70 )
INPUT_PORTS_END
// PR3038 DEAL OR NO DEAL HALL OF FAME SCORP4 PR3008 HALL OF FAME SOUNDS11 HALL OF FAME S.SITE
-GAMEL( 200?, sc4dndhff ,sc4dndhf, sc4_5reel_alt, sc4dndhf35, sc4_state, sc4dndhf, ROT0, "BFM","Deal Or No Deal Hall Of Fame (Bellfruit) (Scorpion 4) (DNHA471, set 1)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 ) // DNHA 471
-GAMEL( 200?, sc4dndhfh ,sc4dndhf, sc4_5reel_alt, sc4dndhf35, sc4_state, sc4dndhf, ROT0, "BFM","Deal Or No Deal Hall Of Fame (Bellfruit) (Scorpion 4) (DNHA471, set 2)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 ) // DNHA 471
-GAMEL( 200?, sc4dndhfg ,sc4dndhf, sc4_5reel_alt, sc4dndhf35, sc4_state, sc4dndhf, ROT0, "BFM","Deal Or No Deal Hall Of Fame (Bellfruit) (Scorpion 4) (DNHA472, set 1)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 ) // DNHA 472
-GAMEL( 200?, sc4dndhfi ,sc4dndhf, sc4_5reel_alt, sc4dndhf35, sc4_state, sc4dndhf, ROT0, "BFM","Deal Or No Deal Hall Of Fame (Bellfruit) (Scorpion 4) (DNHA472, set 2)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 ) // DNHA 472
-GAMEL( 200?, sc4dndhf ,0, sc4_5reel_alt, sc4dndhf35, sc4_state, sc4dndhf, ROT0, "BFM","Deal Or No Deal Hall Of Fame (Bellfruit) (Scorpion 4) (DNHA473, set 1)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 ) // DNHA 473
-GAMEL( 200?, sc4dndhfa ,sc4dndhf, sc4_5reel_alt, sc4dndhf35, sc4_state, sc4dndhf, ROT0, "BFM","Deal Or No Deal Hall Of Fame (Bellfruit) (Scorpion 4) (DNHA473, set 2)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 ) // DNHA 473
-GAMEL( 200?, sc4dndhfj ,sc4dndhf, sc4_5reel_alt, sc4dndhf35, sc4_state, sc4dndhf, ROT0, "BFM","Deal Or No Deal Hall Of Fame (Bellfruit) (Scorpion 4) (DNHA476)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 ) // DNHA 476
-GAMEL( 200?, sc4dndhfb ,sc4dndhf, sc4_5reel_alt, sc4dndhf35, sc4_state, sc4dndhf, ROT0, "BFM","Deal Or No Deal Hall Of Fame (Bellfruit) (Scorpion 4) (DNHA477, set 1)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 ) // DNHA 477
-GAMEL( 200?, sc4dndhfd ,sc4dndhf, sc4_5reel_alt, sc4dndhf35, sc4_state, sc4dndhf, ROT0, "BFM","Deal Or No Deal Hall Of Fame (Bellfruit) (Scorpion 4) (DNHA477, set 2)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 ) // DNHA 477
-GAMEL( 200?, sc4dndhfc ,sc4dndhf, sc4_5reel_alt, sc4dndhf70, sc4_state, sc4dndhf, ROT0, "BFM","Deal Or No Deal Hall Of Fame (Bellfruit) (Scorpion 4) (DNHA571, set 1)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 ) // DNHA 571
-GAMEL( 200?, sc4dndhfe ,sc4dndhf, sc4_5reel_alt, sc4dndhf70, sc4_state, sc4dndhf, ROT0, "BFM","Deal Or No Deal Hall Of Fame (Bellfruit) (Scorpion 4) (DNHA571, set 2)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 ) // DNHA 571
-GAMEL( 200?, sc4dndhfk ,sc4dndhf, sc4_5reel_alt, sc4dndhf70, sc4_state, sc4dndhf, ROT0, "BFM","Deal Or No Deal Hall Of Fame (Bellfruit) (Scorpion 4) (DNHA572, set 1, bad?)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 ) // error 51 (bad rom?)
-GAMEL( 200?, sc4dndhfl ,sc4dndhf, sc4_5reel_alt, sc4dndhf70, sc4_state, sc4dndhf, ROT0, "BFM","Deal Or No Deal Hall Of Fame (Bellfruit) (Scorpion 4) (DNHA572, set 2, bad?)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 ) // error 51 (bad rom?)
+GAMEL( 200?, sc4dndhff ,sc4dndhf, sc4_5reel_alt, sc4dndhf35, sc4_state, sc4dndhf, ROT0, "BFM","Deal Or No Deal Hall Of Fame (Bellfruit) (Scorpion 4) (DNHA471, set 1)", MACHINE_FLAGS, layout_bfm_sc4 ) // DNHA 471
+GAMEL( 200?, sc4dndhfh ,sc4dndhf, sc4_5reel_alt, sc4dndhf35, sc4_state, sc4dndhf, ROT0, "BFM","Deal Or No Deal Hall Of Fame (Bellfruit) (Scorpion 4) (DNHA471, set 2)", MACHINE_FLAGS, layout_bfm_sc4 ) // DNHA 471
+GAMEL( 200?, sc4dndhfg ,sc4dndhf, sc4_5reel_alt, sc4dndhf35, sc4_state, sc4dndhf, ROT0, "BFM","Deal Or No Deal Hall Of Fame (Bellfruit) (Scorpion 4) (DNHA472, set 1)", MACHINE_FLAGS, layout_bfm_sc4 ) // DNHA 472
+GAMEL( 200?, sc4dndhfi ,sc4dndhf, sc4_5reel_alt, sc4dndhf35, sc4_state, sc4dndhf, ROT0, "BFM","Deal Or No Deal Hall Of Fame (Bellfruit) (Scorpion 4) (DNHA472, set 2)", MACHINE_FLAGS, layout_bfm_sc4 ) // DNHA 472
+GAMEL( 200?, sc4dndhf ,0, sc4_5reel_alt, sc4dndhf35, sc4_state, sc4dndhf, ROT0, "BFM","Deal Or No Deal Hall Of Fame (Bellfruit) (Scorpion 4) (DNHA473, set 1)", MACHINE_FLAGS, layout_bfm_sc4 ) // DNHA 473
+GAMEL( 200?, sc4dndhfa ,sc4dndhf, sc4_5reel_alt, sc4dndhf35, sc4_state, sc4dndhf, ROT0, "BFM","Deal Or No Deal Hall Of Fame (Bellfruit) (Scorpion 4) (DNHA473, set 2)", MACHINE_FLAGS, layout_bfm_sc4 ) // DNHA 473
+GAMEL( 200?, sc4dndhfj ,sc4dndhf, sc4_5reel_alt, sc4dndhf35, sc4_state, sc4dndhf, ROT0, "BFM","Deal Or No Deal Hall Of Fame (Bellfruit) (Scorpion 4) (DNHA476)", MACHINE_FLAGS, layout_bfm_sc4 ) // DNHA 476
+GAMEL( 200?, sc4dndhfb ,sc4dndhf, sc4_5reel_alt, sc4dndhf35, sc4_state, sc4dndhf, ROT0, "BFM","Deal Or No Deal Hall Of Fame (Bellfruit) (Scorpion 4) (DNHA477, set 1)", MACHINE_FLAGS, layout_bfm_sc4 ) // DNHA 477
+GAMEL( 200?, sc4dndhfd ,sc4dndhf, sc4_5reel_alt, sc4dndhf35, sc4_state, sc4dndhf, ROT0, "BFM","Deal Or No Deal Hall Of Fame (Bellfruit) (Scorpion 4) (DNHA477, set 2)", MACHINE_FLAGS, layout_bfm_sc4 ) // DNHA 477
+GAMEL( 200?, sc4dndhfc ,sc4dndhf, sc4_5reel_alt, sc4dndhf70, sc4_state, sc4dndhf, ROT0, "BFM","Deal Or No Deal Hall Of Fame (Bellfruit) (Scorpion 4) (DNHA571, set 1)", MACHINE_FLAGS, layout_bfm_sc4 ) // DNHA 571
+GAMEL( 200?, sc4dndhfe ,sc4dndhf, sc4_5reel_alt, sc4dndhf70, sc4_state, sc4dndhf, ROT0, "BFM","Deal Or No Deal Hall Of Fame (Bellfruit) (Scorpion 4) (DNHA571, set 2)", MACHINE_FLAGS, layout_bfm_sc4 ) // DNHA 571
+GAMEL( 200?, sc4dndhfk ,sc4dndhf, sc4_5reel_alt, sc4dndhf70, sc4_state, sc4dndhf, ROT0, "BFM","Deal Or No Deal Hall Of Fame (Bellfruit) (Scorpion 4) (DNHA572, set 1, bad?)", MACHINE_FLAGS, layout_bfm_sc4 ) // error 51 (bad rom?)
+GAMEL( 200?, sc4dndhfl ,sc4dndhf, sc4_5reel_alt, sc4dndhf70, sc4_state, sc4dndhf, ROT0, "BFM","Deal Or No Deal Hall Of Fame (Bellfruit) (Scorpion 4) (DNHA572, set 2, bad?)", MACHINE_FLAGS, layout_bfm_sc4 ) // error 51 (bad rom?)
DRIVER_INIT_MEMBER(sc4_state,sc4dndys)
{
@@ -34645,10 +34647,10 @@ INPUT_PORTS_END
// PR3227 AWP DEAL OR NO DEAL ITS YOUR SHOW SCORP4 PR3207 ITS YOUR SHOW SOUNDS11 ITS YOUR SHOW S.SITE
-GAMEL( 200?, sc4dndys ,0, sc4_200_5rc, sc4dndys70, sc4_state, sc4dndys, ROT0, "BFM","Deal Or No Deal It's Your Show (Bellfruit) (Scorpion 4) (DOBO571, set 1)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 ) // DOBO 571
-GAMEL( 200?, sc4dndysb ,sc4dndys, sc4_200_5rc, sc4dndys70, sc4_state, sc4dndys, ROT0, "BFM","Deal Or No Deal It's Your Show (Bellfruit) (Scorpion 4) (DOBO571, set 2)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 ) // DOBO 571
-GAMEL( 200?, sc4dndysa ,sc4dndys, sc4_200_5rc, sc4dndys35, sc4_state, sc4dndys, ROT0, "BFM","Deal Or No Deal It's Your Show (Bellfruit) (Scorpion 4) (DOBO474, set 1)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 ) // DOBO 474
-GAMEL( 200?, sc4dndysc ,sc4dndys, sc4_200_5rc, sc4dndys35, sc4_state, sc4dndys, ROT0, "BFM","Deal Or No Deal It's Your Show (Bellfruit) (Scorpion 4) (DOBO474, set 2)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 ) // DOBO 474
+GAMEL( 200?, sc4dndys ,0, sc4_200_5rc, sc4dndys70, sc4_state, sc4dndys, ROT0, "BFM","Deal Or No Deal It's Your Show (Bellfruit) (Scorpion 4) (DOBO571, set 1)", MACHINE_FLAGS, layout_bfm_sc4 ) // DOBO 571
+GAMEL( 200?, sc4dndysb ,sc4dndys, sc4_200_5rc, sc4dndys70, sc4_state, sc4dndys, ROT0, "BFM","Deal Or No Deal It's Your Show (Bellfruit) (Scorpion 4) (DOBO571, set 2)", MACHINE_FLAGS, layout_bfm_sc4 ) // DOBO 571
+GAMEL( 200?, sc4dndysa ,sc4dndys, sc4_200_5rc, sc4dndys35, sc4_state, sc4dndys, ROT0, "BFM","Deal Or No Deal It's Your Show (Bellfruit) (Scorpion 4) (DOBO474, set 1)", MACHINE_FLAGS, layout_bfm_sc4 ) // DOBO 474
+GAMEL( 200?, sc4dndysc ,sc4dndys, sc4_200_5rc, sc4dndys35, sc4_state, sc4dndys, ROT0, "BFM","Deal Or No Deal It's Your Show (Bellfruit) (Scorpion 4) (DOBO474, set 2)", MACHINE_FLAGS, layout_bfm_sc4 ) // DOBO 474
DRIVER_INIT_MEMBER(sc4_state,sc4dndlp)
{
@@ -34737,12 +34739,12 @@ INPUT_PORTS_END
// PR3212 AWP DEAL OR NO DEAL LETS PLAY DEAL OR NO DEAL SCORP4 PR3212 LETS PLAY DOND SOUNDS11 LETS PLAY DOND S.SITE
-GAMEL( 200?, sc4dndlp ,0, sc4_5reel, sc4dndlp70, sc4_state, sc4dndlp, ROT0, "BFM","Deal Or No Deal Let's Play Deal Or No Deal (Bellfruit) (Scorpion 4) (LPDN571, set 1)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )// LPDN 571
-GAMEL( 200?, sc4dndlpc ,sc4dndlp, sc4_5reel, sc4dndlp70, sc4_state, sc4dndlp, ROT0, "BFM","Deal Or No Deal Let's Play Deal Or No Deal (Bellfruit) (Scorpion 4) (LPDN571, set 2)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )// LPDN 571
-GAMEL( 200?, sc4dndlpa ,sc4dndlp, sc4_5reel, sc4dndlp70, sc4_state, sc4dndlp, ROT0, "BFM","Deal Or No Deal Let's Play Deal Or No Deal (Bellfruit) (Scorpion 4) (LPDN572, set 1)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )// LPDN 572
-GAMEL( 200?, sc4dndlpd ,sc4dndlp, sc4_5reel, sc4dndlp70, sc4_state, sc4dndlp, ROT0, "BFM","Deal Or No Deal Let's Play Deal Or No Deal (Bellfruit) (Scorpion 4) (LPDN572, set 2)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )// LPDN 572
-GAMEL( 200?, sc4dndlpb ,sc4dndlp, sc4_5reel, sc4dndlp70, sc4_state, sc4dndlp, ROT0, "BFM","Deal Or No Deal Let's Play Deal Or No Deal (Bellfruit) (Scorpion 4) (LPDN573, set 1)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )// LPDN 573
-GAMEL( 200?, sc4dndlpe ,sc4dndlp, sc4_5reel, sc4dndlp70, sc4_state, sc4dndlp, ROT0, "BFM","Deal Or No Deal Let's Play Deal Or No Deal (Bellfruit) (Scorpion 4) (LPDN573, set 2)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )// LPDN 573
+GAMEL( 200?, sc4dndlp ,0, sc4_5reel, sc4dndlp70, sc4_state, sc4dndlp, ROT0, "BFM","Deal Or No Deal Let's Play Deal Or No Deal (Bellfruit) (Scorpion 4) (LPDN571, set 1)", MACHINE_FLAGS, layout_bfm_sc4 )// LPDN 571
+GAMEL( 200?, sc4dndlpc ,sc4dndlp, sc4_5reel, sc4dndlp70, sc4_state, sc4dndlp, ROT0, "BFM","Deal Or No Deal Let's Play Deal Or No Deal (Bellfruit) (Scorpion 4) (LPDN571, set 2)", MACHINE_FLAGS, layout_bfm_sc4 )// LPDN 571
+GAMEL( 200?, sc4dndlpa ,sc4dndlp, sc4_5reel, sc4dndlp70, sc4_state, sc4dndlp, ROT0, "BFM","Deal Or No Deal Let's Play Deal Or No Deal (Bellfruit) (Scorpion 4) (LPDN572, set 1)", MACHINE_FLAGS, layout_bfm_sc4 )// LPDN 572
+GAMEL( 200?, sc4dndlpd ,sc4dndlp, sc4_5reel, sc4dndlp70, sc4_state, sc4dndlp, ROT0, "BFM","Deal Or No Deal Let's Play Deal Or No Deal (Bellfruit) (Scorpion 4) (LPDN572, set 2)", MACHINE_FLAGS, layout_bfm_sc4 )// LPDN 572
+GAMEL( 200?, sc4dndlpb ,sc4dndlp, sc4_5reel, sc4dndlp70, sc4_state, sc4dndlp, ROT0, "BFM","Deal Or No Deal Let's Play Deal Or No Deal (Bellfruit) (Scorpion 4) (LPDN573, set 1)", MACHINE_FLAGS, layout_bfm_sc4 )// LPDN 573
+GAMEL( 200?, sc4dndlpe ,sc4dndlp, sc4_5reel, sc4dndlp70, sc4_state, sc4dndlp, ROT0, "BFM","Deal Or No Deal Let's Play Deal Or No Deal (Bellfruit) (Scorpion 4) (LPDN573, set 2)", MACHINE_FLAGS, layout_bfm_sc4 )// LPDN 573
DRIVER_INIT_MEMBER(sc4_state,sc4dndra)
{
@@ -34830,12 +34832,12 @@ INPUT_PORTS_START( sc4dndra70 )
INPUT_PORTS_END
// PR3221 AWP DEAL OR NO DEAL RED ALERT SCORP4 PR3201 DOND RED ALERT SOUNDS11 RED ALERT S.SITE
-GAMEL( 200?, sc4dndra ,0, sc4_5reel_alt, sc4dndra35, sc4_state, sc4dndra, ROT0, "BFM","Deal Or No Deal Red Alert (Bellfruit) (Scorpion 4) (REDT471, set 1)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 ) // REDT 471
-GAMEL( 200?, sc4dndraa ,sc4dndra, sc4_5reel_alt, sc4dndra35, sc4_state, sc4dndra, ROT0, "BFM","Deal Or No Deal Red Alert (Bellfruit) (Scorpion 4) (REDT471, set 2)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 ) // REDT 471
-GAMEL( 200?, sc4dndrab ,sc4dndra, sc4_5reel_alt, sc4dndra35, sc4_state, sc4dndra, ROT0, "BFM","Deal Or No Deal Red Alert (Bellfruit) (Scorpion 4) (REDT474, set 1)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 ) // REDT 474
-GAMEL( 200?, sc4dndrad ,sc4dndra, sc4_5reel_alt, sc4dndra35, sc4_state, sc4dndra, ROT0, "BFM","Deal Or No Deal Red Alert (Bellfruit) (Scorpion 4) (REDT474, set 2)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 ) // REDT 474
-GAMEL( 200?, sc4dndrac ,sc4dndra, sc4_5reel_alt, sc4dndra70, sc4_state, sc4dndra, ROT0, "BFM","Deal Or No Deal Red Alert (Bellfruit) (Scorpion 4) (REDT572, set 1)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 ) // REDT 572
-GAMEL( 200?, sc4dndrae ,sc4dndra, sc4_5reel_alt, sc4dndra70, sc4_state, sc4dndra, ROT0, "BFM","Deal Or No Deal Red Alert (Bellfruit) (Scorpion 4) (REDT572, set 2)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 ) // REDT 572
+GAMEL( 200?, sc4dndra ,0, sc4_5reel_alt, sc4dndra35, sc4_state, sc4dndra, ROT0, "BFM","Deal Or No Deal Red Alert (Bellfruit) (Scorpion 4) (REDT471, set 1)", MACHINE_FLAGS, layout_bfm_sc4 ) // REDT 471
+GAMEL( 200?, sc4dndraa ,sc4dndra, sc4_5reel_alt, sc4dndra35, sc4_state, sc4dndra, ROT0, "BFM","Deal Or No Deal Red Alert (Bellfruit) (Scorpion 4) (REDT471, set 2)", MACHINE_FLAGS, layout_bfm_sc4 ) // REDT 471
+GAMEL( 200?, sc4dndrab ,sc4dndra, sc4_5reel_alt, sc4dndra35, sc4_state, sc4dndra, ROT0, "BFM","Deal Or No Deal Red Alert (Bellfruit) (Scorpion 4) (REDT474, set 1)", MACHINE_FLAGS, layout_bfm_sc4 ) // REDT 474
+GAMEL( 200?, sc4dndrad ,sc4dndra, sc4_5reel_alt, sc4dndra35, sc4_state, sc4dndra, ROT0, "BFM","Deal Or No Deal Red Alert (Bellfruit) (Scorpion 4) (REDT474, set 2)", MACHINE_FLAGS, layout_bfm_sc4 ) // REDT 474
+GAMEL( 200?, sc4dndrac ,sc4dndra, sc4_5reel_alt, sc4dndra70, sc4_state, sc4dndra, ROT0, "BFM","Deal Or No Deal Red Alert (Bellfruit) (Scorpion 4) (REDT572, set 1)", MACHINE_FLAGS, layout_bfm_sc4 ) // REDT 572
+GAMEL( 200?, sc4dndrae ,sc4dndra, sc4_5reel_alt, sc4dndra70, sc4_state, sc4dndra, ROT0, "BFM","Deal Or No Deal Red Alert (Bellfruit) (Scorpion 4) (REDT572, set 2)", MACHINE_FLAGS, layout_bfm_sc4 ) // REDT 572
DRIVER_INIT_MEMBER(sc4_state,sc4dndbd)
@@ -34926,12 +34928,12 @@ INPUT_PORTS_END
// PR3230 AWP DEAL OR NO DEAL THE BIG DEAL SCORP4 PR3210 THE BIG DEAL SOUNDS11 THE BIG DEAL S.SITE
-GAMEL( 200?, sc4dndbd ,0, sc4_5reel, sc4dndbd35, sc4_state, sc4dndbd, ROT0, "BFM","Deal Or No Deal The Big Deal (Bellfruit) (Scorpion 4) (BGDA471, set 1)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 ) // BGDA 471
-GAMEL( 200?, sc4dndbda ,sc4dndbd, sc4_5reel, sc4dndbd35, sc4_state, sc4dndbd, ROT0, "BFM","Deal Or No Deal The Big Deal (Bellfruit) (Scorpion 4) (BGDA471, set 2)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 ) // BGDA 471
-GAMEL( 200?, sc4dndbdb ,sc4dndbd, sc4_5reel, sc4dndbd35, sc4_state, sc4dndbd, ROT0, "BFM","Deal Or No Deal The Big Deal (Bellfruit) (Scorpion 4) (BGDA472, set 1)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 ) // BGDA 472
-GAMEL( 200?, sc4dndbdd ,sc4dndbd, sc4_5reel, sc4dndbd35, sc4_state, sc4dndbd, ROT0, "BFM","Deal Or No Deal The Big Deal (Bellfruit) (Scorpion 4) (BGDA472, set 2)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 ) // BGDA 472
-GAMEL( 200?, sc4dndbdc ,sc4dndbd, sc4_5reel, sc4dndbd70, sc4_state, sc4dndbd, ROT0, "BFM","Deal Or No Deal The Big Deal (Bellfruit) (Scorpion 4) (BGDA571, set 1)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 ) // BGDA 571
-GAMEL( 200?, sc4dndbde ,sc4dndbd, sc4_5reel, sc4dndbd70, sc4_state, sc4dndbd, ROT0, "BFM","Deal Or No Deal The Big Deal (Bellfruit) (Scorpion 4) (BGDA571, set 2)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 ) // BGDA 571
+GAMEL( 200?, sc4dndbd ,0, sc4_5reel, sc4dndbd35, sc4_state, sc4dndbd, ROT0, "BFM","Deal Or No Deal The Big Deal (Bellfruit) (Scorpion 4) (BGDA471, set 1)", MACHINE_FLAGS, layout_bfm_sc4 ) // BGDA 471
+GAMEL( 200?, sc4dndbda ,sc4dndbd, sc4_5reel, sc4dndbd35, sc4_state, sc4dndbd, ROT0, "BFM","Deal Or No Deal The Big Deal (Bellfruit) (Scorpion 4) (BGDA471, set 2)", MACHINE_FLAGS, layout_bfm_sc4 ) // BGDA 471
+GAMEL( 200?, sc4dndbdb ,sc4dndbd, sc4_5reel, sc4dndbd35, sc4_state, sc4dndbd, ROT0, "BFM","Deal Or No Deal The Big Deal (Bellfruit) (Scorpion 4) (BGDA472, set 1)", MACHINE_FLAGS, layout_bfm_sc4 ) // BGDA 472
+GAMEL( 200?, sc4dndbdd ,sc4dndbd, sc4_5reel, sc4dndbd35, sc4_state, sc4dndbd, ROT0, "BFM","Deal Or No Deal The Big Deal (Bellfruit) (Scorpion 4) (BGDA472, set 2)", MACHINE_FLAGS, layout_bfm_sc4 ) // BGDA 472
+GAMEL( 200?, sc4dndbdc ,sc4dndbd, sc4_5reel, sc4dndbd70, sc4_state, sc4dndbd, ROT0, "BFM","Deal Or No Deal The Big Deal (Bellfruit) (Scorpion 4) (BGDA571, set 1)", MACHINE_FLAGS, layout_bfm_sc4 ) // BGDA 571
+GAMEL( 200?, sc4dndbde ,sc4dndbd, sc4_5reel, sc4dndbd70, sc4_state, sc4dndbd, ROT0, "BFM","Deal Or No Deal The Big Deal (Bellfruit) (Scorpion 4) (BGDA571, set 2)", MACHINE_FLAGS, layout_bfm_sc4 ) // BGDA 571
DRIVER_INIT_MEMBER(sc4_state,sc4dndbr)
@@ -35019,14 +35021,14 @@ INPUT_PORTS_END
// PR3041 AWP DEAL OR NO DEAL THE BIG REDS S4 PR3011 THE BIG REDS SOUNDS11 THE BIG REDS S.SITE
-GAMEL( 200?, sc4dndbr ,0, sc4_5reel_alt, sc4dndbr35, sc4_state, sc4dndbr, ROT0, "BFM","Deal Or No Deal The Big Reds (Bellfruit) (Scorpion 4) (BIGD471, set 1)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 ) // BIGD 471
-GAMEL( 200?, sc4dndbrb ,sc4dndbr, sc4_5reel_alt, sc4dndbr35, sc4_state, sc4dndbr, ROT0, "BFM","Deal Or No Deal The Big Reds (Bellfruit) (Scorpion 4) (BIGD471, set 2)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 ) // BIGD 471
-GAMEL( 200?, sc4dndbra ,sc4dndbr, sc4_5reel_alt, sc4dndbr35, sc4_state, sc4dndbr, ROT0, "BFM","Deal Or No Deal The Big Reds (Bellfruit) (Scorpion 4) (BIGD472, set 1)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 ) // BIGD 472
-GAMEL( 200?, sc4dndbrc ,sc4dndbr, sc4_5reel_alt, sc4dndbr35, sc4_state, sc4dndbr, ROT0, "BFM","Deal Or No Deal The Big Reds (Bellfruit) (Scorpion 4) (BIGD472, set 2)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 ) // BIGD 472
-GAMEL( 200?, sc4dndbrd ,sc4dndbr, sc4_5reel_alt, sc4dndbr35, sc4_state, sc4dndbr, ROT0, "BFM","Deal Or No Deal The Big Reds (Bellfruit) (Scorpion 4) (BIGD475, set 1)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 ) // BIGD 475
-GAMEL( 200?, sc4dndbrf ,sc4dndbr, sc4_5reel_alt, sc4dndbr35, sc4_state, sc4dndbr, ROT0, "BFM","Deal Or No Deal The Big Reds (Bellfruit) (Scorpion 4) (BIGD475, set 2)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 ) // BIGD 475
-GAMEL( 200?, sc4dndbre ,sc4dndbr, sc4_5reel_alt, sc4dndbr70, sc4_state, sc4dndbr, ROT0, "BFM","Deal Or No Deal The Big Reds (Bellfruit) (Scorpion 4) (BIGD571, set 1)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 ) // BIGD 571
-GAMEL( 200?, sc4dndbrg ,sc4dndbr, sc4_5reel_alt, sc4dndbr70, sc4_state, sc4dndbr, ROT0, "BFM","Deal Or No Deal The Big Reds (Bellfruit) (Scorpion 4) (BIGD571, set 2)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 ) // BIGD 571
+GAMEL( 200?, sc4dndbr ,0, sc4_5reel_alt, sc4dndbr35, sc4_state, sc4dndbr, ROT0, "BFM","Deal Or No Deal The Big Reds (Bellfruit) (Scorpion 4) (BIGD471, set 1)", MACHINE_FLAGS, layout_bfm_sc4 ) // BIGD 471
+GAMEL( 200?, sc4dndbrb ,sc4dndbr, sc4_5reel_alt, sc4dndbr35, sc4_state, sc4dndbr, ROT0, "BFM","Deal Or No Deal The Big Reds (Bellfruit) (Scorpion 4) (BIGD471, set 2)", MACHINE_FLAGS, layout_bfm_sc4 ) // BIGD 471
+GAMEL( 200?, sc4dndbra ,sc4dndbr, sc4_5reel_alt, sc4dndbr35, sc4_state, sc4dndbr, ROT0, "BFM","Deal Or No Deal The Big Reds (Bellfruit) (Scorpion 4) (BIGD472, set 1)", MACHINE_FLAGS, layout_bfm_sc4 ) // BIGD 472
+GAMEL( 200?, sc4dndbrc ,sc4dndbr, sc4_5reel_alt, sc4dndbr35, sc4_state, sc4dndbr, ROT0, "BFM","Deal Or No Deal The Big Reds (Bellfruit) (Scorpion 4) (BIGD472, set 2)", MACHINE_FLAGS, layout_bfm_sc4 ) // BIGD 472
+GAMEL( 200?, sc4dndbrd ,sc4dndbr, sc4_5reel_alt, sc4dndbr35, sc4_state, sc4dndbr, ROT0, "BFM","Deal Or No Deal The Big Reds (Bellfruit) (Scorpion 4) (BIGD475, set 1)", MACHINE_FLAGS, layout_bfm_sc4 ) // BIGD 475
+GAMEL( 200?, sc4dndbrf ,sc4dndbr, sc4_5reel_alt, sc4dndbr35, sc4_state, sc4dndbr, ROT0, "BFM","Deal Or No Deal The Big Reds (Bellfruit) (Scorpion 4) (BIGD475, set 2)", MACHINE_FLAGS, layout_bfm_sc4 ) // BIGD 475
+GAMEL( 200?, sc4dndbre ,sc4dndbr, sc4_5reel_alt, sc4dndbr70, sc4_state, sc4dndbr, ROT0, "BFM","Deal Or No Deal The Big Reds (Bellfruit) (Scorpion 4) (BIGD571, set 1)", MACHINE_FLAGS, layout_bfm_sc4 ) // BIGD 571
+GAMEL( 200?, sc4dndbrg ,sc4dndbr, sc4_5reel_alt, sc4dndbr70, sc4_state, sc4dndbr, ROT0, "BFM","Deal Or No Deal The Big Reds (Bellfruit) (Scorpion 4) (BIGD571, set 2)", MACHINE_FLAGS, layout_bfm_sc4 ) // BIGD 571
DRIVER_INIT_MEMBER(sc4_state,sc4dndcc)
@@ -35117,13 +35119,13 @@ INPUT_PORTS_END
// PR3047 AWP DEAL OR NO DEAL THE CRAZY CHAIR SCORP4 PR3017 CRAZY CHAIR SOUNDS11 CRAZY CHAIR S.SITE
-GAMEL( 200?, sc4dndcc ,0, sc4_5reel, sc4dndcc35, sc4_state, sc4dndcc, ROT0, "BFM","Deal Or No Deal The Crazy Chair (Bellfruit) (Scorpion 4) (CRZR471, set 1)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 ) // CRZR 471
-GAMEL( 200?, sc4dndccb ,sc4dndcc, sc4_5reel, sc4dndcc35, sc4_state, sc4dndcc, ROT0, "BFM","Deal Or No Deal The Crazy Chair (Bellfruit) (Scorpion 4) (CRZR471, set 2)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 ) // CRZR 471, incomplete pairing
-GAMEL( 200?, sc4dndcca ,sc4dndcc, sc4_5reel, sc4dndcc35, sc4_state, sc4dndcc, ROT0, "BFM","Deal Or No Deal The Crazy Chair (Bellfruit) (Scorpion 4) (CRZR474)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 ) // CRZR 474
-GAMEL( 200?, sc4dndccc ,sc4dndcc, sc4_5reel, sc4dndcc35, sc4_state, sc4dndcc, ROT0, "BFM","Deal Or No Deal The Crazy Chair (Bellfruit) (Scorpion 4) (CRZR475, set 1)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 ) // CRZR 475
-GAMEL( 200?, sc4dndcce ,sc4dndcc, sc4_5reel, sc4dndcc35, sc4_state, sc4dndcc, ROT0, "BFM","Deal Or No Deal The Crazy Chair (Bellfruit) (Scorpion 4) (CRZR475, set 2)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 ) // CRZR 475
-GAMEL( 200?, sc4dndccd ,sc4dndcc, sc4_5reel, sc4dndcc70, sc4_state, sc4dndcc, ROT0, "BFM","Deal Or No Deal The Crazy Chair (Bellfruit) (Scorpion 4) (CRZR571, set 1)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 ) // CRZR 571
-GAMEL( 200?, sc4dndccf ,sc4dndcc, sc4_5reel, sc4dndcc70, sc4_state, sc4dndcc, ROT0, "BFM","Deal Or No Deal The Crazy Chair (Bellfruit) (Scorpion 4) (CRZR571, set 2)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 ) // CRZR 571
+GAMEL( 200?, sc4dndcc ,0, sc4_5reel, sc4dndcc35, sc4_state, sc4dndcc, ROT0, "BFM","Deal Or No Deal The Crazy Chair (Bellfruit) (Scorpion 4) (CRZR471, set 1)", MACHINE_FLAGS, layout_bfm_sc4 ) // CRZR 471
+GAMEL( 200?, sc4dndccb ,sc4dndcc, sc4_5reel, sc4dndcc35, sc4_state, sc4dndcc, ROT0, "BFM","Deal Or No Deal The Crazy Chair (Bellfruit) (Scorpion 4) (CRZR471, set 2)", MACHINE_FLAGS, layout_bfm_sc4 ) // CRZR 471, incomplete pairing
+GAMEL( 200?, sc4dndcca ,sc4dndcc, sc4_5reel, sc4dndcc35, sc4_state, sc4dndcc, ROT0, "BFM","Deal Or No Deal The Crazy Chair (Bellfruit) (Scorpion 4) (CRZR474)", MACHINE_FLAGS, layout_bfm_sc4 ) // CRZR 474
+GAMEL( 200?, sc4dndccc ,sc4dndcc, sc4_5reel, sc4dndcc35, sc4_state, sc4dndcc, ROT0, "BFM","Deal Or No Deal The Crazy Chair (Bellfruit) (Scorpion 4) (CRZR475, set 1)", MACHINE_FLAGS, layout_bfm_sc4 ) // CRZR 475
+GAMEL( 200?, sc4dndcce ,sc4dndcc, sc4_5reel, sc4dndcc35, sc4_state, sc4dndcc, ROT0, "BFM","Deal Or No Deal The Crazy Chair (Bellfruit) (Scorpion 4) (CRZR475, set 2)", MACHINE_FLAGS, layout_bfm_sc4 ) // CRZR 475
+GAMEL( 200?, sc4dndccd ,sc4dndcc, sc4_5reel, sc4dndcc70, sc4_state, sc4dndcc, ROT0, "BFM","Deal Or No Deal The Crazy Chair (Bellfruit) (Scorpion 4) (CRZR571, set 1)", MACHINE_FLAGS, layout_bfm_sc4 ) // CRZR 571
+GAMEL( 200?, sc4dndccf ,sc4dndcc, sc4_5reel, sc4dndcc70, sc4_state, sc4dndcc, ROT0, "BFM","Deal Or No Deal The Crazy Chair (Bellfruit) (Scorpion 4) (CRZR571, set 2)", MACHINE_FLAGS, layout_bfm_sc4 ) // CRZR 571
DRIVER_INIT_MEMBER(sc4_state,sc4dnddw)
{
@@ -35212,14 +35214,14 @@ INPUT_PORTS_START( sc4dnddw70 )
INPUT_PORTS_END
// PR3043 AWP THE DEAL WHEEL S4 PR3202 THE DEAL WHEEL SOUNDS11 THE DEAL WHEEL S.SITE
-GAMEL( 200?, sc4dnddw ,0, sc4_200_5ra, sc4dnddw35, sc4_state, sc4dnddw, ROT0, "BFM","Deal Or No Deal The Deal Wheel (Bellfruit) (Scorpion 4) (DOFN471, set 1)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_sc4dnddw ) // DOFN 471
-GAMEL( 200?, sc4dnddwb ,sc4dnddw, sc4_200_5ra, sc4dnddw35, sc4_state, sc4dnddw, ROT0, "BFM","Deal Or No Deal The Deal Wheel (Bellfruit) (Scorpion 4) (DOFN471, set 2)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_sc4dnddw ) // DOFN 471
-GAMEL( 200?, sc4dnddwa ,sc4dnddw, sc4_200_5ra, sc4dnddw35, sc4_state, sc4dnddw, ROT0, "BFM","Deal Or No Deal The Deal Wheel (Bellfruit) (Scorpion 4) (DOFN473, set 1)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_sc4dnddw ) // DOFN 473
-GAMEL( 200?, sc4dnddwc ,sc4dnddw, sc4_200_5ra, sc4dnddw35, sc4_state, sc4dnddw, ROT0, "BFM","Deal Or No Deal The Deal Wheel (Bellfruit) (Scorpion 4) (DOFN473, set 2)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_sc4dnddw ) // DOFN 473
-GAMEL( 200?, sc4dnddwd ,sc4dnddw, sc4_200_5ra, sc4dnddw35, sc4_state, sc4dnddw, ROT0, "BFM","Deal Or No Deal The Deal Wheel (Bellfruit) (Scorpion 4) (DOFN475, set 1)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_sc4dnddw ) // DOFN 475
-GAMEL( 200?, sc4dnddwf ,sc4dnddw, sc4_200_5ra, sc4dnddw35, sc4_state, sc4dnddw, ROT0, "BFM","Deal Or No Deal The Deal Wheel (Bellfruit) (Scorpion 4) (DOFN475, set 2)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_sc4dnddw ) // DOFN 475
-GAMEL( 200?, sc4dnddwe ,sc4dnddw, sc4_200_5ra, sc4dnddw70, sc4_state, sc4dnddw, ROT0, "BFM","Deal Or No Deal The Deal Wheel (Bellfruit) (Scorpion 4) (DOFN572, set 1)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_sc4dnddw ) // DOFN 572
-GAMEL( 200?, sc4dnddwg ,sc4dnddw, sc4_200_5ra, sc4dnddw70, sc4_state, sc4dnddw, ROT0, "BFM","Deal Or No Deal The Deal Wheel (Bellfruit) (Scorpion 4) (DOFN572, set 2)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_sc4dnddw ) // DOFN 572
+GAMEL( 200?, sc4dnddw ,0, sc4_200_5ra, sc4dnddw35, sc4_state, sc4dnddw, ROT0, "BFM","Deal Or No Deal The Deal Wheel (Bellfruit) (Scorpion 4) (DOFN471, set 1)", MACHINE_FLAGS, layout_sc4dnddw ) // DOFN 471
+GAMEL( 200?, sc4dnddwb ,sc4dnddw, sc4_200_5ra, sc4dnddw35, sc4_state, sc4dnddw, ROT0, "BFM","Deal Or No Deal The Deal Wheel (Bellfruit) (Scorpion 4) (DOFN471, set 2)", MACHINE_FLAGS, layout_sc4dnddw ) // DOFN 471
+GAMEL( 200?, sc4dnddwa ,sc4dnddw, sc4_200_5ra, sc4dnddw35, sc4_state, sc4dnddw, ROT0, "BFM","Deal Or No Deal The Deal Wheel (Bellfruit) (Scorpion 4) (DOFN473, set 1)", MACHINE_FLAGS, layout_sc4dnddw ) // DOFN 473
+GAMEL( 200?, sc4dnddwc ,sc4dnddw, sc4_200_5ra, sc4dnddw35, sc4_state, sc4dnddw, ROT0, "BFM","Deal Or No Deal The Deal Wheel (Bellfruit) (Scorpion 4) (DOFN473, set 2)", MACHINE_FLAGS, layout_sc4dnddw ) // DOFN 473
+GAMEL( 200?, sc4dnddwd ,sc4dnddw, sc4_200_5ra, sc4dnddw35, sc4_state, sc4dnddw, ROT0, "BFM","Deal Or No Deal The Deal Wheel (Bellfruit) (Scorpion 4) (DOFN475, set 1)", MACHINE_FLAGS, layout_sc4dnddw ) // DOFN 475
+GAMEL( 200?, sc4dnddwf ,sc4dnddw, sc4_200_5ra, sc4dnddw35, sc4_state, sc4dnddw, ROT0, "BFM","Deal Or No Deal The Deal Wheel (Bellfruit) (Scorpion 4) (DOFN475, set 2)", MACHINE_FLAGS, layout_sc4dnddw ) // DOFN 475
+GAMEL( 200?, sc4dnddwe ,sc4dnddw, sc4_200_5ra, sc4dnddw70, sc4_state, sc4dnddw, ROT0, "BFM","Deal Or No Deal The Deal Wheel (Bellfruit) (Scorpion 4) (DOFN572, set 1)", MACHINE_FLAGS, layout_sc4dnddw ) // DOFN 572
+GAMEL( 200?, sc4dnddwg ,sc4dnddw, sc4_200_5ra, sc4dnddw70, sc4_state, sc4dnddw, ROT0, "BFM","Deal Or No Deal The Deal Wheel (Bellfruit) (Scorpion 4) (DOFN572, set 2)", MACHINE_FLAGS, layout_sc4dnddw ) // DOFN 572
DRIVER_INIT_MEMBER(sc4_state,sc4dnddf)
{
@@ -35305,12 +35307,12 @@ INPUT_PORTS_START( sc4dnddf70 )
INPUT_PORTS_END
// PR3044 AWP DEAL OR NO DEAL THE DREAM FACTORY SCORP4 PR3014 DREAM FACTORY SOUNDS11 DREAM FACTORY S.SITE
-GAMEL( 200?, sc4dnddf ,0, sc4_200_alt, sc4dnddf35, sc4_state, sc4dnddf, ROT0, "BFM","Deal Or No Deal The Dream Factory (Bellfruit) (Scorpion 4) (TDFC471, set 1)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 ) // TDFC 471
-GAMEL( 200?, sc4dnddfa ,sc4dnddf, sc4_200_alt, sc4dnddf35, sc4_state, sc4dnddf, ROT0, "BFM","Deal Or No Deal The Dream Factory (Bellfruit) (Scorpion 4) (TDFC471, set 2)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 ) // TDFC 471, incomplete pairing
-GAMEL( 200?, sc4dnddfb ,sc4dnddf, sc4_200_alt, sc4dnddf35, sc4_state, sc4dnddf, ROT0, "BFM","Deal Or No Deal The Dream Factory (Bellfruit) (Scorpion 4) (TDFC475, set 1)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 ) // TDFC 475
-GAMEL( 200?, sc4dnddfd ,sc4dnddf, sc4_200_alt, sc4dnddf35, sc4_state, sc4dnddf, ROT0, "BFM","Deal Or No Deal The Dream Factory (Bellfruit) (Scorpion 4) (TDFC475, set 2)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 ) // TDFC 475
-GAMEL( 200?, sc4dnddfc ,sc4dnddf, sc4_200_alt, sc4dnddf70, sc4_state, sc4dnddf, ROT0, "BFM","Deal Or No Deal The Dream Factory (Bellfruit) (Scorpion 4) (TDFC571, set 1)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 ) // TDFC 571
-GAMEL( 200?, sc4dnddfe ,sc4dnddf, sc4_200_alt, sc4dnddf70, sc4_state, sc4dnddf, ROT0, "BFM","Deal Or No Deal The Dream Factory (Bellfruit) (Scorpion 4) (TDFC571, set 2)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 ) // TDFC 571
+GAMEL( 200?, sc4dnddf ,0, sc4_200_alt, sc4dnddf35, sc4_state, sc4dnddf, ROT0, "BFM","Deal Or No Deal The Dream Factory (Bellfruit) (Scorpion 4) (TDFC471, set 1)", MACHINE_FLAGS, layout_bfm_sc4 ) // TDFC 471
+GAMEL( 200?, sc4dnddfa ,sc4dnddf, sc4_200_alt, sc4dnddf35, sc4_state, sc4dnddf, ROT0, "BFM","Deal Or No Deal The Dream Factory (Bellfruit) (Scorpion 4) (TDFC471, set 2)", MACHINE_FLAGS, layout_bfm_sc4 ) // TDFC 471, incomplete pairing
+GAMEL( 200?, sc4dnddfb ,sc4dnddf, sc4_200_alt, sc4dnddf35, sc4_state, sc4dnddf, ROT0, "BFM","Deal Or No Deal The Dream Factory (Bellfruit) (Scorpion 4) (TDFC475, set 1)", MACHINE_FLAGS, layout_bfm_sc4 ) // TDFC 475
+GAMEL( 200?, sc4dnddfd ,sc4dnddf, sc4_200_alt, sc4dnddf35, sc4_state, sc4dnddf, ROT0, "BFM","Deal Or No Deal The Dream Factory (Bellfruit) (Scorpion 4) (TDFC475, set 2)", MACHINE_FLAGS, layout_bfm_sc4 ) // TDFC 475
+GAMEL( 200?, sc4dnddfc ,sc4dnddf, sc4_200_alt, sc4dnddf70, sc4_state, sc4dnddf, ROT0, "BFM","Deal Or No Deal The Dream Factory (Bellfruit) (Scorpion 4) (TDFC571, set 1)", MACHINE_FLAGS, layout_bfm_sc4 ) // TDFC 571
+GAMEL( 200?, sc4dnddfe ,sc4dnddf, sc4_200_alt, sc4dnddf70, sc4_state, sc4dnddf, ROT0, "BFM","Deal Or No Deal The Dream Factory (Bellfruit) (Scorpion 4) (TDFC571, set 2)", MACHINE_FLAGS, layout_bfm_sc4 ) // TDFC 571
DRIVER_INIT_MEMBER(sc4_state,sc4dndpg)
@@ -35401,12 +35403,12 @@ INPUT_PORTS_END
// PR3240 AWP DEAL OR NO DEAL THE PERFECT GAME SCORP4 PR3220 DOND PERFECT SOUNDS11 THE PERFECT GAME S.SITE
-GAMEL( 200?, sc4dndpg ,0, sc4_5reel, sc4dndpg35, sc4_state, sc4dndpg, ROT0, "BFM","Deal Or No Deal The Perfect Game (Bellfruit) (Scorpion 4) (TPBG471, set 1)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 ) // TPGB 471
-GAMEL( 200?, sc4dndpgc ,sc4dndpg, sc4_5reel, sc4dndpg35, sc4_state, sc4dndpg, ROT0, "BFM","Deal Or No Deal The Perfect Game (Bellfruit) (Scorpion 4) (TPBG471, set 2)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 ) // TPBG 471
-GAMEL( 200?, sc4dndpga ,sc4dndpg, sc4_5reel, sc4dndpg70, sc4_state, sc4dndpg, ROT0, "BFM","Deal Or No Deal The Perfect Game (Bellfruit) (Scorpion 4) (TPBG571, set 1)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 ) // TPGB 571
-GAMEL( 200?, sc4dndpgd ,sc4dndpg, sc4_5reel, sc4dndpg70, sc4_state, sc4dndpg, ROT0, "BFM","Deal Or No Deal The Perfect Game (Bellfruit) (Scorpion 4) (TPGB571, set 2)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 ) // TPGB 571
-GAMEL( 200?, sc4dndpgb ,sc4dndpg, sc4_5reel, sc4dndpg70, sc4_state, sc4dndpg, ROT0, "BFM","Deal Or No Deal The Perfect Game (Bellfruit) (Scorpion 4) (TPBG572, set 1)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 ) // TPGB 572
-GAMEL( 200?, sc4dndpge ,sc4dndpg, sc4_5reel, sc4dndpg70, sc4_state, sc4dndpg, ROT0, "BFM","Deal Or No Deal The Perfect Game (Bellfruit) (Scorpion 4) (TPGB572, set 2)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 ) // TPGB 572
+GAMEL( 200?, sc4dndpg ,0, sc4_5reel, sc4dndpg35, sc4_state, sc4dndpg, ROT0, "BFM","Deal Or No Deal The Perfect Game (Bellfruit) (Scorpion 4) (TPBG471, set 1)", MACHINE_FLAGS, layout_bfm_sc4 ) // TPGB 471
+GAMEL( 200?, sc4dndpgc ,sc4dndpg, sc4_5reel, sc4dndpg35, sc4_state, sc4dndpg, ROT0, "BFM","Deal Or No Deal The Perfect Game (Bellfruit) (Scorpion 4) (TPBG471, set 2)", MACHINE_FLAGS, layout_bfm_sc4 ) // TPBG 471
+GAMEL( 200?, sc4dndpga ,sc4dndpg, sc4_5reel, sc4dndpg70, sc4_state, sc4dndpg, ROT0, "BFM","Deal Or No Deal The Perfect Game (Bellfruit) (Scorpion 4) (TPBG571, set 1)", MACHINE_FLAGS, layout_bfm_sc4 ) // TPGB 571
+GAMEL( 200?, sc4dndpgd ,sc4dndpg, sc4_5reel, sc4dndpg70, sc4_state, sc4dndpg, ROT0, "BFM","Deal Or No Deal The Perfect Game (Bellfruit) (Scorpion 4) (TPGB571, set 2)", MACHINE_FLAGS, layout_bfm_sc4 ) // TPGB 571
+GAMEL( 200?, sc4dndpgb ,sc4dndpg, sc4_5reel, sc4dndpg70, sc4_state, sc4dndpg, ROT0, "BFM","Deal Or No Deal The Perfect Game (Bellfruit) (Scorpion 4) (TPBG572, set 1)", MACHINE_FLAGS, layout_bfm_sc4 ) // TPGB 572
+GAMEL( 200?, sc4dndpge ,sc4dndpg, sc4_5reel, sc4dndpg70, sc4_state, sc4dndpg, ROT0, "BFM","Deal Or No Deal The Perfect Game (Bellfruit) (Scorpion 4) (TPGB572, set 2)", MACHINE_FLAGS, layout_bfm_sc4 ) // TPGB 572
DRIVER_INIT_MEMBER(sc4_state,sc4dndtp)
@@ -35483,20 +35485,20 @@ INPUT_PORTS_START( sc4dndtp35 )
INPUT_PORTS_END
// PR3033 AWP DOND THE POWER 5 SCORP4 PR3033 POWER FIVE SOUNDS11 DOND THE POWER 5 S.SITE
-GAMEL( 200?, sc4dndtp ,0, sc4_5reel, sc4dndtp35, sc4_state, sc4dndtp, ROT0, "BFM","Deal Or No Deal The Power 5 (Bellfruit) (Scorpion 4) (TPRV411, set 1)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_sc4dndtp ) // TPRV 411
-GAMEL( 200?, sc4dndtpe ,sc4dndtp, sc4_5reel, sc4dndtp35, sc4_state, sc4dndtp, ROT0, "BFM","Deal Or No Deal The Power 5 (Bellfruit) (Scorpion 4) (TPRV411, set 2)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_sc4dndtp ) // TPRV 411
-GAMEL( 200?, sc4dndtpa ,sc4dndtp, sc4_5reel, sc4dndtp35, sc4_state, sc4dndtp, ROT0, "BFM","Deal Or No Deal The Power 5 (Bellfruit) (Scorpion 4) (TPRV412, set 1)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_sc4dndtp ) // TPRV 412
-GAMEL( 200?, sc4dndtpf ,sc4dndtp, sc4_5reel, sc4dndtp35, sc4_state, sc4dndtp, ROT0, "BFM","Deal Or No Deal The Power 5 (Bellfruit) (Scorpion 4) (TPRV412, set 2)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_sc4dndtp ) // TPRV 412
-GAMEL( 200?, sc4dndtpb ,sc4dndtp, sc4_5reel, sc4dndtp35, sc4_state, sc4dndtp, ROT0, "BFM","Deal Or No Deal The Power 5 (Bellfruit) (Scorpion 4) (TPRV413, set 1)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_sc4dndtp ) // TPRV 413
-GAMEL( 200?, sc4dndtpg ,sc4dndtp, sc4_5reel, sc4dndtp35, sc4_state, sc4dndtp, ROT0, "BFM","Deal Or No Deal The Power 5 (Bellfruit) (Scorpion 4) (TPRV413, set 2)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_sc4dndtp ) // TPRV 413
-GAMEL( 200?, sc4dndtpc ,sc4dndtp, sc4_5reel, sc4dndtp35, sc4_state, sc4dndtp, ROT0, "BFM","Deal Or No Deal The Power 5 (Bellfruit) (Scorpion 4) (TPRV414, set 1, bad)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_sc4dndtp ) // TPRV 414 EEPROM error (bad rom?) (botched release?)
-GAMEL( 200?, sc4dndtph ,sc4dndtp, sc4_5reel, sc4dndtp35, sc4_state, sc4dndtp, ROT0, "BFM","Deal Or No Deal The Power 5 (Bellfruit) (Scorpion 4) (TPRV414, set 2, bad)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_sc4dndtp ) // TPRV 414 EEPROM error (bad rom?) (botched release?)
-GAMEL( 200?, sc4dndtpd ,sc4dndtp, sc4_5reel, sc4dndtp35, sc4_state, sc4dndtp, ROT0, "BFM","Deal Or No Deal The Power 5 (Bellfruit) (Scorpion 4) (TPRV415, set 1)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_sc4dndtp ) // TPRV 415
-GAMEL( 200?, sc4dndtpi ,sc4dndtp, sc4_5reel, sc4dndtp35, sc4_state, sc4dndtp, ROT0, "BFM","Deal Or No Deal The Power 5 (Bellfruit) (Scorpion 4) (TPRV415, set 2)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_sc4dndtp )// TPRV 415
-GAMEL( 200?, sc4dndtpl ,sc4dndtp, sc4_5reel, sc4dndtp35, sc4_state, sc4dndtp, ROT0, "BFM","Deal Or No Deal The Power 5 (Bellfruit) (Scorpion 4) (TPRV416, set 1)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_sc4dndtp )// TPRV 416
-GAMEL( 200?, sc4dndtpm ,sc4dndtp, sc4_5reel, sc4dndtp35, sc4_state, sc4dndtp, ROT0, "BFM","Deal Or No Deal The Power 5 (Bellfruit) (Scorpion 4) (TPRV416, set 2)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_sc4dndtp )// TPRV 416
-GAMEL( 200?, sc4dndtpj ,sc4dndtp, sc4_5reel, sc4dndtp35, sc4_state, sc4dndtp, ROT0, "BFM","Deal Or No Deal The Power 5 (Bellfruit) (Scorpion 4) (TPRV41A, set 1)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_sc4dndtp )// TPRV 41A
-GAMEL( 200?, sc4dndtpk ,sc4dndtp, sc4_5reel, sc4dndtp35, sc4_state, sc4dndtp, ROT0, "BFM","Deal Or No Deal The Power 5 (Bellfruit) (Scorpion 4) (TPRV41A, set 2)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_sc4dndtp )// TPRV 41A
+GAMEL( 200?, sc4dndtp ,0, sc4_5reel, sc4dndtp35, sc4_state, sc4dndtp, ROT0, "BFM","Deal Or No Deal The Power 5 (Bellfruit) (Scorpion 4) (TPRV411, set 1)", MACHINE_FLAGS, layout_sc4dndtp ) // TPRV 411
+GAMEL( 200?, sc4dndtpe ,sc4dndtp, sc4_5reel, sc4dndtp35, sc4_state, sc4dndtp, ROT0, "BFM","Deal Or No Deal The Power 5 (Bellfruit) (Scorpion 4) (TPRV411, set 2)", MACHINE_FLAGS, layout_sc4dndtp ) // TPRV 411
+GAMEL( 200?, sc4dndtpa ,sc4dndtp, sc4_5reel, sc4dndtp35, sc4_state, sc4dndtp, ROT0, "BFM","Deal Or No Deal The Power 5 (Bellfruit) (Scorpion 4) (TPRV412, set 1)", MACHINE_FLAGS, layout_sc4dndtp ) // TPRV 412
+GAMEL( 200?, sc4dndtpf ,sc4dndtp, sc4_5reel, sc4dndtp35, sc4_state, sc4dndtp, ROT0, "BFM","Deal Or No Deal The Power 5 (Bellfruit) (Scorpion 4) (TPRV412, set 2)", MACHINE_FLAGS, layout_sc4dndtp ) // TPRV 412
+GAMEL( 200?, sc4dndtpb ,sc4dndtp, sc4_5reel, sc4dndtp35, sc4_state, sc4dndtp, ROT0, "BFM","Deal Or No Deal The Power 5 (Bellfruit) (Scorpion 4) (TPRV413, set 1)", MACHINE_FLAGS, layout_sc4dndtp ) // TPRV 413
+GAMEL( 200?, sc4dndtpg ,sc4dndtp, sc4_5reel, sc4dndtp35, sc4_state, sc4dndtp, ROT0, "BFM","Deal Or No Deal The Power 5 (Bellfruit) (Scorpion 4) (TPRV413, set 2)", MACHINE_FLAGS, layout_sc4dndtp ) // TPRV 413
+GAMEL( 200?, sc4dndtpc ,sc4dndtp, sc4_5reel, sc4dndtp35, sc4_state, sc4dndtp, ROT0, "BFM","Deal Or No Deal The Power 5 (Bellfruit) (Scorpion 4) (TPRV414, set 1, bad)", MACHINE_FLAGS, layout_sc4dndtp ) // TPRV 414 EEPROM error (bad rom?) (botched release?)
+GAMEL( 200?, sc4dndtph ,sc4dndtp, sc4_5reel, sc4dndtp35, sc4_state, sc4dndtp, ROT0, "BFM","Deal Or No Deal The Power 5 (Bellfruit) (Scorpion 4) (TPRV414, set 2, bad)", MACHINE_FLAGS, layout_sc4dndtp ) // TPRV 414 EEPROM error (bad rom?) (botched release?)
+GAMEL( 200?, sc4dndtpd ,sc4dndtp, sc4_5reel, sc4dndtp35, sc4_state, sc4dndtp, ROT0, "BFM","Deal Or No Deal The Power 5 (Bellfruit) (Scorpion 4) (TPRV415, set 1)", MACHINE_FLAGS, layout_sc4dndtp ) // TPRV 415
+GAMEL( 200?, sc4dndtpi ,sc4dndtp, sc4_5reel, sc4dndtp35, sc4_state, sc4dndtp, ROT0, "BFM","Deal Or No Deal The Power 5 (Bellfruit) (Scorpion 4) (TPRV415, set 2)", MACHINE_FLAGS, layout_sc4dndtp )// TPRV 415
+GAMEL( 200?, sc4dndtpl ,sc4dndtp, sc4_5reel, sc4dndtp35, sc4_state, sc4dndtp, ROT0, "BFM","Deal Or No Deal The Power 5 (Bellfruit) (Scorpion 4) (TPRV416, set 1)", MACHINE_FLAGS, layout_sc4dndtp )// TPRV 416
+GAMEL( 200?, sc4dndtpm ,sc4dndtp, sc4_5reel, sc4dndtp35, sc4_state, sc4dndtp, ROT0, "BFM","Deal Or No Deal The Power 5 (Bellfruit) (Scorpion 4) (TPRV416, set 2)", MACHINE_FLAGS, layout_sc4dndtp )// TPRV 416
+GAMEL( 200?, sc4dndtpj ,sc4dndtp, sc4_5reel, sc4dndtp35, sc4_state, sc4dndtp, ROT0, "BFM","Deal Or No Deal The Power 5 (Bellfruit) (Scorpion 4) (TPRV41A, set 1)", MACHINE_FLAGS, layout_sc4dndtp )// TPRV 41A
+GAMEL( 200?, sc4dndtpk ,sc4dndtp, sc4_5reel, sc4dndtp35, sc4_state, sc4dndtp, ROT0, "BFM","Deal Or No Deal The Power 5 (Bellfruit) (Scorpion 4) (TPRV41A, set 2)", MACHINE_FLAGS, layout_sc4dndtp )// TPRV 41A
@@ -35584,12 +35586,12 @@ INPUT_PORTS_END
// PR3006 AWP DEAL OR NO DEAL THE WALK OF WEALTH SCORP4 PR3006 WALK OF WEALTH SOUNDS11 WALK OF WEALTH S.SITE
-GAMEL( 200?, sc4dndww ,0, sc4, sc4dndww35, sc4_state, sc4dndww, ROT0, "BFM","Deal Or No Deal The Walk Of Wealth (Bellfruit) (Scorpion 4) (TWOH411, set 1)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 ) // TWOH 411
-GAMEL( 200?, sc4dndwwb ,sc4dndww, sc4, sc4dndww35, sc4_state, sc4dndww, ROT0, "BFM","Deal Or No Deal The Walk Of Wealth (Bellfruit) (Scorpion 4) (TWOH411, set 2)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 ) // TWOH 411
-GAMEL( 200?, sc4dndwwa ,sc4dndww, sc4, sc4dndww35, sc4_state, sc4dndww, ROT0, "BFM","Deal Or No Deal The Walk Of Wealth (Bellfruit) (Scorpion 4) (TWOH412, set 1)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 ) // TWOH 412
-GAMEL( 200?, sc4dndwwe ,sc4dndww, sc4, sc4dndww35, sc4_state, sc4dndww, ROT0, "BFM","Deal Or No Deal The Walk Of Wealth (Bellfruit) (Scorpion 4) (TWOH412, set 2)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 ) // TWOH 412
-GAMEL( 200?, sc4dndwwc ,sc4dndww, sc4, sc4dndww35, sc4_state, sc4dndww, ROT0, "BFM","Deal Or No Deal The Walk Of Wealth (Bellfruit) (Scorpion 4) (TWOH415, set 1)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 ) // TWOH 415
-GAMEL( 200?, sc4dndwwd ,sc4dndww, sc4, sc4dndww35, sc4_state, sc4dndww, ROT0, "BFM","Deal Or No Deal The Walk Of Wealth (Bellfruit) (Scorpion 4) (TWOH415, set 2)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 ) // TWOH 415
+GAMEL( 200?, sc4dndww ,0, sc4, sc4dndww35, sc4_state, sc4dndww, ROT0, "BFM","Deal Or No Deal The Walk Of Wealth (Bellfruit) (Scorpion 4) (TWOH411, set 1)", MACHINE_FLAGS, layout_bfm_sc4 ) // TWOH 411
+GAMEL( 200?, sc4dndwwb ,sc4dndww, sc4, sc4dndww35, sc4_state, sc4dndww, ROT0, "BFM","Deal Or No Deal The Walk Of Wealth (Bellfruit) (Scorpion 4) (TWOH411, set 2)", MACHINE_FLAGS, layout_bfm_sc4 ) // TWOH 411
+GAMEL( 200?, sc4dndwwa ,sc4dndww, sc4, sc4dndww35, sc4_state, sc4dndww, ROT0, "BFM","Deal Or No Deal The Walk Of Wealth (Bellfruit) (Scorpion 4) (TWOH412, set 1)", MACHINE_FLAGS, layout_bfm_sc4 ) // TWOH 412
+GAMEL( 200?, sc4dndwwe ,sc4dndww, sc4, sc4dndww35, sc4_state, sc4dndww, ROT0, "BFM","Deal Or No Deal The Walk Of Wealth (Bellfruit) (Scorpion 4) (TWOH412, set 2)", MACHINE_FLAGS, layout_bfm_sc4 ) // TWOH 412
+GAMEL( 200?, sc4dndwwc ,sc4dndww, sc4, sc4dndww35, sc4_state, sc4dndww, ROT0, "BFM","Deal Or No Deal The Walk Of Wealth (Bellfruit) (Scorpion 4) (TWOH415, set 1)", MACHINE_FLAGS, layout_bfm_sc4 ) // TWOH 415
+GAMEL( 200?, sc4dndwwd ,sc4dndww, sc4, sc4dndww35, sc4_state, sc4dndww, ROT0, "BFM","Deal Or No Deal The Walk Of Wealth (Bellfruit) (Scorpion 4) (TWOH415, set 2)", MACHINE_FLAGS, layout_bfm_sc4 ) // TWOH 415
DRIVER_INIT_MEMBER(sc4_state,sc4dndcw)
{
@@ -35674,10 +35676,10 @@ INPUT_PORTS_END
// PR3027 AWP CLASSIC DEAL OR NO DEAL THE WALK OF WEALTH SCORP4 PR3006 WALK OF WEALTH SOUNDS11 WALK OF WEALTH S.SITE
-GAMEL( 200?, sc4dndcw ,0, sc4, sc4dndcw5, sc4_state, sc4dndcw, ROT0, "BFM","Deal Or No Deal The Walk Of Wealth Classic (Bellfruit) (Scorpion 4) (CWOH271, set 1)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 ) // CWOH 271
-GAMEL( 200?, sc4dndcwb ,sc4dndcw, sc4, sc4dndcw5, sc4_state, sc4dndcw, ROT0, "BFM","Deal Or No Deal The Walk Of Wealth Classic (Bellfruit) (Scorpion 4) (CWOH271, set 2)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 ) // CWOH 271
-GAMEL( 200?, sc4dndcwa ,sc4dndcw, sc4, sc4dndcw5, sc4_state, sc4dndcw, ROT0, "BFM","Deal Or No Deal The Walk Of Wealth Classic (Bellfruit) (Scorpion 4) (CWOH272, set 1)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 ) // CWOH 272
-GAMEL( 200?, sc4dndcwc ,sc4dndcw, sc4, sc4dndcw5, sc4_state, sc4dndcw, ROT0, "BFM","Deal Or No Deal The Walk Of Wealth Classic (Bellfruit) (Scorpion 4) (CWOH272, set 2)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 ) // CWOH 272
+GAMEL( 200?, sc4dndcw ,0, sc4, sc4dndcw5, sc4_state, sc4dndcw, ROT0, "BFM","Deal Or No Deal The Walk Of Wealth Classic (Bellfruit) (Scorpion 4) (CWOH271, set 1)", MACHINE_FLAGS, layout_bfm_sc4 ) // CWOH 271
+GAMEL( 200?, sc4dndcwb ,sc4dndcw, sc4, sc4dndcw5, sc4_state, sc4dndcw, ROT0, "BFM","Deal Or No Deal The Walk Of Wealth Classic (Bellfruit) (Scorpion 4) (CWOH271, set 2)", MACHINE_FLAGS, layout_bfm_sc4 ) // CWOH 271
+GAMEL( 200?, sc4dndcwa ,sc4dndcw, sc4, sc4dndcw5, sc4_state, sc4dndcw, ROT0, "BFM","Deal Or No Deal The Walk Of Wealth Classic (Bellfruit) (Scorpion 4) (CWOH272, set 1)", MACHINE_FLAGS, layout_bfm_sc4 ) // CWOH 272
+GAMEL( 200?, sc4dndcwc ,sc4dndcw, sc4, sc4dndcw5, sc4_state, sc4dndcw, ROT0, "BFM","Deal Or No Deal The Walk Of Wealth Classic (Bellfruit) (Scorpion 4) (CWOH272, set 2)", MACHINE_FLAGS, layout_bfm_sc4 ) // CWOH 272
DRIVER_INIT_MEMBER(sc4_state,sc4dndtr)
@@ -35758,8 +35760,8 @@ INPUT_PORTS_END
// PR3329 DOND THINK RED S4 PR3304 THINK RED SOUNDS11 THINK RED S.SITE
-GAMEL( 200?, sc4dndtr ,0, sc4_5reel_alt, sc4dndtr70, sc4_state, sc4dndtr, ROT0, "BFM","Deal Or No Deal Think Red (Bellfruit) (Scorpion 4) (THRE571, set 1)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 ) // THRE 571
-GAMEL( 200?, sc4dndtra ,sc4dndtr, sc4_5reel_alt, sc4dndtr70, sc4_state, sc4dndtr, ROT0, "BFM","Deal Or No Deal Think Red (Bellfruit) (Scorpion 4) (THRE571, set 2)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 ) // THRE 571
+GAMEL( 200?, sc4dndtr ,0, sc4_5reel_alt, sc4dndtr70, sc4_state, sc4dndtr, ROT0, "BFM","Deal Or No Deal Think Red (Bellfruit) (Scorpion 4) (THRE571, set 1)", MACHINE_FLAGS, layout_bfm_sc4 ) // THRE 571
+GAMEL( 200?, sc4dndtra ,sc4dndtr, sc4_5reel_alt, sc4dndtr70, sc4_state, sc4dndtr, ROT0, "BFM","Deal Or No Deal Think Red (Bellfruit) (Scorpion 4) (THRE571, set 2)", MACHINE_FLAGS, layout_bfm_sc4 ) // THRE 571
DRIVER_INIT_MEMBER(sc4_state,sc4dndwb)
{
@@ -35844,14 +35846,14 @@ INPUT_PORTS_START( sc4dndwb35 )
INPUT_PORTS_END
// PR1982 AWP DEAL OR NO DEAL WHATS IN YOUR BOX SCORP4 PR1962 WHATS IN Y BOX SOUNDS11 WHATS IN YOUR BX S.SITE
-GAMEL( 200?, sc4dndwb ,0, sc4_200_5ra, sc4dndwb35, sc4_state, sc4dndwb, ROT0, "BFM","Deal Or No Deal What's In Your Box (Bellfruit) (Scorpion 4) (WIYX412, set 1)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 ) // WIYX 412
-GAMEL( 200?, sc4dndwbb ,sc4dndwb, sc4_200_5ra, sc4dndwb35, sc4_state, sc4dndwb, ROT0, "BFM","Deal Or No Deal What's In Your Box (Bellfruit) (Scorpion 4) (WIYX412, set 2)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 ) // WIYX 412
-GAMEL( 200?, sc4dndwba ,sc4dndwb, sc4_200_5ra, sc4dndwb35, sc4_state, sc4dndwb, ROT0, "BFM","Deal Or No Deal What's In Your Box (Bellfruit) (Scorpion 4) (WIYX414, set 1)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 ) // WIYX 414
-GAMEL( 200?, sc4dndwbc ,sc4dndwb, sc4_200_5ra, sc4dndwb35, sc4_state, sc4dndwb, ROT0, "BFM","Deal Or No Deal What's In Your Box (Bellfruit) (Scorpion 4) (WIYX414, set 2)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 ) // WIYX 414
-GAMEL( 200?, sc4dndwbd ,sc4dndwb, sc4_200_5ra, sc4dndwb35, sc4_state, sc4dndwb, ROT0, "BFM","Deal Or No Deal What's In Your Box (Bellfruit) (Scorpion 4) (WIYX415, set 1)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 ) // WIYX 415
-GAMEL( 200?, sc4dndwbe ,sc4dndwb, sc4_200_5ra, sc4dndwb35, sc4_state, sc4dndwb, ROT0, "BFM","Deal Or No Deal What's In Your Box (Bellfruit) (Scorpion 4) (WIYX415, set 2)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 ) // WIYX 415
-GAMEL( 200?, sc4dndwbf ,sc4dndwb, sc4_200_5ra, sc4dndwb35, sc4_state, sc4dndwb, ROT0, "BFM","Deal Or No Deal What's In Your Box (Bellfruit) (Scorpion 4) (WIYX419, set 1)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 ) // WIYX 419
-GAMEL( 200?, sc4dndwbg ,sc4dndwb, sc4_200_5ra, sc4dndwb35, sc4_state, sc4dndwb, ROT0, "BFM","Deal Or No Deal What's In Your Box (Bellfruit) (Scorpion 4) (WIYX419, set 2)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 ) // WIYX 419
+GAMEL( 200?, sc4dndwb ,0, sc4_200_5ra, sc4dndwb35, sc4_state, sc4dndwb, ROT0, "BFM","Deal Or No Deal What's In Your Box (Bellfruit) (Scorpion 4) (WIYX412, set 1)", MACHINE_FLAGS, layout_bfm_sc4 ) // WIYX 412
+GAMEL( 200?, sc4dndwbb ,sc4dndwb, sc4_200_5ra, sc4dndwb35, sc4_state, sc4dndwb, ROT0, "BFM","Deal Or No Deal What's In Your Box (Bellfruit) (Scorpion 4) (WIYX412, set 2)", MACHINE_FLAGS, layout_bfm_sc4 ) // WIYX 412
+GAMEL( 200?, sc4dndwba ,sc4dndwb, sc4_200_5ra, sc4dndwb35, sc4_state, sc4dndwb, ROT0, "BFM","Deal Or No Deal What's In Your Box (Bellfruit) (Scorpion 4) (WIYX414, set 1)", MACHINE_FLAGS, layout_bfm_sc4 ) // WIYX 414
+GAMEL( 200?, sc4dndwbc ,sc4dndwb, sc4_200_5ra, sc4dndwb35, sc4_state, sc4dndwb, ROT0, "BFM","Deal Or No Deal What's In Your Box (Bellfruit) (Scorpion 4) (WIYX414, set 2)", MACHINE_FLAGS, layout_bfm_sc4 ) // WIYX 414
+GAMEL( 200?, sc4dndwbd ,sc4dndwb, sc4_200_5ra, sc4dndwb35, sc4_state, sc4dndwb, ROT0, "BFM","Deal Or No Deal What's In Your Box (Bellfruit) (Scorpion 4) (WIYX415, set 1)", MACHINE_FLAGS, layout_bfm_sc4 ) // WIYX 415
+GAMEL( 200?, sc4dndwbe ,sc4dndwb, sc4_200_5ra, sc4dndwb35, sc4_state, sc4dndwb, ROT0, "BFM","Deal Or No Deal What's In Your Box (Bellfruit) (Scorpion 4) (WIYX415, set 2)", MACHINE_FLAGS, layout_bfm_sc4 ) // WIYX 415
+GAMEL( 200?, sc4dndwbf ,sc4dndwb, sc4_200_5ra, sc4dndwb35, sc4_state, sc4dndwb, ROT0, "BFM","Deal Or No Deal What's In Your Box (Bellfruit) (Scorpion 4) (WIYX419, set 1)", MACHINE_FLAGS, layout_bfm_sc4 ) // WIYX 419
+GAMEL( 200?, sc4dndwbg ,sc4dndwb, sc4_200_5ra, sc4dndwb35, sc4_state, sc4dndwb, ROT0, "BFM","Deal Or No Deal What's In Your Box (Bellfruit) (Scorpion 4) (WIYX419, set 2)", MACHINE_FLAGS, layout_bfm_sc4 ) // WIYX 419
DRIVER_INIT_MEMBER(sc4_state,sc4dndbe)
{
@@ -35936,20 +35938,20 @@ INPUT_PORTS_START( sc4dndbe35 )
INPUT_PORTS_END
// PR1935 AWP DEAL OR NO DEAL BEAT THE BANKER S4 PR1915 BEAT THE BANKER SOUNDS11 BEAT THE BANKER S.SITE
-GAMEL( 200?, sc4dndbe ,0, sc4_5reel_alt, sc4dndbe25, sc4_state, sc4dndbe, ROT0, "BFM","Deal Or No Deal Beat The Banker (Bellfruit) (Scorpion 4) (DBTK012, set 1)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 ) // DBTK 012
-GAMEL( 200?, sc4dndbec ,sc4dndbe, sc4_5reel_alt, sc4dndbe25, sc4_state, sc4dndbe, ROT0, "BFM","Deal Or No Deal Beat The Banker (Bellfruit) (Scorpion 4) (DBTK012, set 2)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 ) // DBTK 012
-GAMEL( 200?, sc4dndbeg ,sc4dndbe, sc4_5reel_alt, sc4dndbe25, sc4_state, sc4dndbe, ROT0, "BFM","Deal Or No Deal Beat The Banker (Bellfruit) (Scorpion 4) (DBTK013, set 1)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 ) // DBTK 013
-GAMEL( 200?, sc4dndbek ,sc4dndbe, sc4_5reel_alt, sc4dndbe25, sc4_state, sc4dndbe, ROT0, "BFM","Deal Or No Deal Beat The Banker (Bellfruit) (Scorpion 4) (DBTK013, set 2)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 ) // DBTK 013
-GAMEL( 200?, sc4dndbeh ,sc4dndbe, sc4_5reel_alt, sc4dndbe25, sc4_state, sc4dndbe, ROT0, "BFM","Deal Or No Deal Beat The Banker (Bellfruit) (Scorpion 4) (DBTK014, set 1)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 ) // DBTK 014
-GAMEL( 200?, sc4dndbel ,sc4dndbe, sc4_5reel_alt, sc4dndbe25, sc4_state, sc4dndbe, ROT0, "BFM","Deal Or No Deal Beat The Banker (Bellfruit) (Scorpion 4) (DBTK014, set 2)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 ) // DBTK 014
-GAMEL( 200?, sc4dndbeb ,sc4dndbe, sc4_5reel_alt, sc4dndbe35, sc4_state, sc4dndbe, ROT0, "BFM","Deal Or No Deal Beat The Banker (Bellfruit) (Scorpion 4) (DBTK422, set 1)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 ) // DBTK 422
-GAMEL( 200?, sc4dndbed ,sc4dndbe, sc4_5reel_alt, sc4dndbe35, sc4_state, sc4dndbe, ROT0, "BFM","Deal Or No Deal Beat The Banker (Bellfruit) (Scorpion 4) (DBTK422, set 2)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 ) // DBTK 422
-GAMEL( 200?, sc4dndbee ,sc4dndbe, sc4_5reel_alt, sc4dndbe35, sc4_state, sc4dndbe, ROT0, "BFM","Deal Or No Deal Beat The Banker (Bellfruit) (Scorpion 4) (DBTK423, set 1)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 ) // DBTK 423
-GAMEL( 200?, sc4dndbei ,sc4dndbe, sc4_5reel_alt, sc4dndbe35, sc4_state, sc4dndbe, ROT0, "BFM","Deal Or No Deal Beat The Banker (Bellfruit) (Scorpion 4) (DBTK423, set 2)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 ) // DBTK 423
-GAMEL( 200?, sc4dndbef ,sc4dndbe, sc4_5reel_alt, sc4dndbe35, sc4_state, sc4dndbe, ROT0, "BFM","Deal Or No Deal Beat The Banker (Bellfruit) (Scorpion 4) (DBTK425, set 1)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 ) // DBTK 425
-GAMEL( 200?, sc4dndbej ,sc4dndbe, sc4_5reel_alt, sc4dndbe35, sc4_state, sc4dndbe, ROT0, "BFM","Deal Or No Deal Beat The Banker (Bellfruit) (Scorpion 4) (DBTK425, set 2)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 ) // DBTK 425
-GAMEL( 200?, sc4dndbem ,sc4dndbe, sc4_5reel_alt, sc4dndbe35, sc4_state, sc4dndbe, ROT0, "BFM","Deal Or No Deal Beat The Banker (Bellfruit) (Scorpion 4) (DBTK426, set 1)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 ) // DBTK 426
-GAMEL( 200?, sc4dndben ,sc4dndbe, sc4_5reel_alt, sc4dndbe35, sc4_state, sc4dndbe, ROT0, "BFM","Deal Or No Deal Beat The Banker (Bellfruit) (Scorpion 4) (DBTK426, set 2)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 ) // DBTK 426
+GAMEL( 200?, sc4dndbe ,0, sc4_5reel_alt, sc4dndbe25, sc4_state, sc4dndbe, ROT0, "BFM","Deal Or No Deal Beat The Banker (Bellfruit) (Scorpion 4) (DBTK012, set 1)", MACHINE_FLAGS, layout_bfm_sc4 ) // DBTK 012
+GAMEL( 200?, sc4dndbec ,sc4dndbe, sc4_5reel_alt, sc4dndbe25, sc4_state, sc4dndbe, ROT0, "BFM","Deal Or No Deal Beat The Banker (Bellfruit) (Scorpion 4) (DBTK012, set 2)", MACHINE_FLAGS, layout_bfm_sc4 ) // DBTK 012
+GAMEL( 200?, sc4dndbeg ,sc4dndbe, sc4_5reel_alt, sc4dndbe25, sc4_state, sc4dndbe, ROT0, "BFM","Deal Or No Deal Beat The Banker (Bellfruit) (Scorpion 4) (DBTK013, set 1)", MACHINE_FLAGS, layout_bfm_sc4 ) // DBTK 013
+GAMEL( 200?, sc4dndbek ,sc4dndbe, sc4_5reel_alt, sc4dndbe25, sc4_state, sc4dndbe, ROT0, "BFM","Deal Or No Deal Beat The Banker (Bellfruit) (Scorpion 4) (DBTK013, set 2)", MACHINE_FLAGS, layout_bfm_sc4 ) // DBTK 013
+GAMEL( 200?, sc4dndbeh ,sc4dndbe, sc4_5reel_alt, sc4dndbe25, sc4_state, sc4dndbe, ROT0, "BFM","Deal Or No Deal Beat The Banker (Bellfruit) (Scorpion 4) (DBTK014, set 1)", MACHINE_FLAGS, layout_bfm_sc4 ) // DBTK 014
+GAMEL( 200?, sc4dndbel ,sc4dndbe, sc4_5reel_alt, sc4dndbe25, sc4_state, sc4dndbe, ROT0, "BFM","Deal Or No Deal Beat The Banker (Bellfruit) (Scorpion 4) (DBTK014, set 2)", MACHINE_FLAGS, layout_bfm_sc4 ) // DBTK 014
+GAMEL( 200?, sc4dndbeb ,sc4dndbe, sc4_5reel_alt, sc4dndbe35, sc4_state, sc4dndbe, ROT0, "BFM","Deal Or No Deal Beat The Banker (Bellfruit) (Scorpion 4) (DBTK422, set 1)", MACHINE_FLAGS, layout_bfm_sc4 ) // DBTK 422
+GAMEL( 200?, sc4dndbed ,sc4dndbe, sc4_5reel_alt, sc4dndbe35, sc4_state, sc4dndbe, ROT0, "BFM","Deal Or No Deal Beat The Banker (Bellfruit) (Scorpion 4) (DBTK422, set 2)", MACHINE_FLAGS, layout_bfm_sc4 ) // DBTK 422
+GAMEL( 200?, sc4dndbee ,sc4dndbe, sc4_5reel_alt, sc4dndbe35, sc4_state, sc4dndbe, ROT0, "BFM","Deal Or No Deal Beat The Banker (Bellfruit) (Scorpion 4) (DBTK423, set 1)", MACHINE_FLAGS, layout_bfm_sc4 ) // DBTK 423
+GAMEL( 200?, sc4dndbei ,sc4dndbe, sc4_5reel_alt, sc4dndbe35, sc4_state, sc4dndbe, ROT0, "BFM","Deal Or No Deal Beat The Banker (Bellfruit) (Scorpion 4) (DBTK423, set 2)", MACHINE_FLAGS, layout_bfm_sc4 ) // DBTK 423
+GAMEL( 200?, sc4dndbef ,sc4dndbe, sc4_5reel_alt, sc4dndbe35, sc4_state, sc4dndbe, ROT0, "BFM","Deal Or No Deal Beat The Banker (Bellfruit) (Scorpion 4) (DBTK425, set 1)", MACHINE_FLAGS, layout_bfm_sc4 ) // DBTK 425
+GAMEL( 200?, sc4dndbej ,sc4dndbe, sc4_5reel_alt, sc4dndbe35, sc4_state, sc4dndbe, ROT0, "BFM","Deal Or No Deal Beat The Banker (Bellfruit) (Scorpion 4) (DBTK425, set 2)", MACHINE_FLAGS, layout_bfm_sc4 ) // DBTK 425
+GAMEL( 200?, sc4dndbem ,sc4dndbe, sc4_5reel_alt, sc4dndbe35, sc4_state, sc4dndbe, ROT0, "BFM","Deal Or No Deal Beat The Banker (Bellfruit) (Scorpion 4) (DBTK426, set 1)", MACHINE_FLAGS, layout_bfm_sc4 ) // DBTK 426
+GAMEL( 200?, sc4dndben ,sc4dndbe, sc4_5reel_alt, sc4dndbe35, sc4_state, sc4dndbe, ROT0, "BFM","Deal Or No Deal Beat The Banker (Bellfruit) (Scorpion 4) (DBTK426, set 2)", MACHINE_FLAGS, layout_bfm_sc4 ) // DBTK 426
DRIVER_INIT_MEMBER(sc4_state,sc4dndbc)
@@ -36034,8 +36036,8 @@ INPUT_PORTS_END
// PR3337 AWP DEAL OR NO DEAL BOX CLEVER SCORP4 PR3312 DOND BOXCLEVER SOUNDS11 BOX CLEVER S.SITE
-GAMEL( 200?, sc4dndbc ,0, sc4_5reel, sc4dndbc70, sc4_state, sc4dndbc, ROT0, "BFM","Deal Or No Deal Box Clever (Bellfruit) (Scorpion 4) (BOXR571, set 1)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 ) // BOXR 571
-GAMEL( 200?, sc4dndbca ,sc4dndbc, sc4_5reel, sc4dndbc70, sc4_state, sc4dndbc, ROT0, "BFM","Deal Or No Deal Box Clever (Bellfruit) (Scorpion 4) (BOXR571, set 2)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 ) // BOXR 571
+GAMEL( 200?, sc4dndbc ,0, sc4_5reel, sc4dndbc70, sc4_state, sc4dndbc, ROT0, "BFM","Deal Or No Deal Box Clever (Bellfruit) (Scorpion 4) (BOXR571, set 1)", MACHINE_FLAGS, layout_bfm_sc4 ) // BOXR 571
+GAMEL( 200?, sc4dndbca ,sc4dndbc, sc4_5reel, sc4dndbc70, sc4_state, sc4dndbc, ROT0, "BFM","Deal Or No Deal Box Clever (Bellfruit) (Scorpion 4) (BOXR571, set 2)", MACHINE_FLAGS, layout_bfm_sc4 ) // BOXR 571
DRIVER_INIT_MEMBER(sc4_state,sc4dmine)
@@ -36106,12 +36108,12 @@ INPUT_PORTS_START( sc4dmine ) // this structure is generated
INPUT_PORTS_END
// PR1307 AWP DIAMOND MINE PR1307 DIAM MINE SOUNDS11
-GAMEL( 200?, sc4dmine ,0, sc4_5reel, sc4dmine, sc4_state, sc4dmine, ROT0, "BFM","Diamond Mine (Bellfruit) (Scorpion 4) (set 1)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4dminea ,sc4dmine, sc4_5reel, sc4dmine, sc4_state, sc4dmine, ROT0, "BFM","Diamond Mine (Bellfruit) (Scorpion 4) (set 2)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4dmineb ,sc4dmine, sc4_5reel, sc4dmine, sc4_state, sc4dmine, ROT0, "BFM","Diamond Mine (Bellfruit) (Scorpion 4) (set 3)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4dminec ,sc4dmine, sc4_5reel, sc4dmine, sc4_state, sc4dmine, ROT0, "BFM","Diamond Mine (Bellfruit) (Scorpion 4) (set 4)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4dmined ,sc4dmine, sc4_5reel, sc4dmine, sc4_state, sc4dmine, ROT0, "BFM","Diamond Mine (Bellfruit) (Scorpion 4) (set 5)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4dminee ,sc4dmine, sc4_5reel, sc4dmine, sc4_state, sc4dmine, ROT0, "BFM","Diamond Mine (Bellfruit) (Scorpion 4) (set 6)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4dmine ,0, sc4_5reel, sc4dmine, sc4_state, sc4dmine, ROT0, "BFM","Diamond Mine (Bellfruit) (Scorpion 4) (set 1)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4dminea ,sc4dmine, sc4_5reel, sc4dmine, sc4_state, sc4dmine, ROT0, "BFM","Diamond Mine (Bellfruit) (Scorpion 4) (set 2)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4dmineb ,sc4dmine, sc4_5reel, sc4dmine, sc4_state, sc4dmine, ROT0, "BFM","Diamond Mine (Bellfruit) (Scorpion 4) (set 3)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4dminec ,sc4dmine, sc4_5reel, sc4dmine, sc4_state, sc4dmine, ROT0, "BFM","Diamond Mine (Bellfruit) (Scorpion 4) (set 4)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4dmined ,sc4dmine, sc4_5reel, sc4dmine, sc4_state, sc4dmine, ROT0, "BFM","Diamond Mine (Bellfruit) (Scorpion 4) (set 5)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4dminee ,sc4dmine, sc4_5reel, sc4dmine, sc4_state, sc4dmine, ROT0, "BFM","Diamond Mine (Bellfruit) (Scorpion 4) (set 6)", MACHINE_FLAGS, layout_bfm_sc4 )
@@ -36191,23 +36193,23 @@ INPUT_PORTS_END
// saw a crash on exit with this game, why?
// PR1309 AWP DOCTOR DOSH PR1309 DOCTOR DOSH SOUNDS11
-GAMEL( 200?, sc4ddosh ,0, sc4_200_4r, sc4ddosh, sc4_state, sc4ddosh, ROT0, "BFM","Doctor Dosh (Bellfruit) (Scorpion 4) (set 1)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4ddosha ,sc4ddosh, sc4_200_4r, sc4ddosh, sc4_state, sc4ddosh, ROT0, "BFM","Doctor Dosh (Bellfruit) (Scorpion 4) (set 2)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4ddoshb ,sc4ddosh, sc4_200_4r, sc4ddosh, sc4_state, sc4ddosh, ROT0, "BFM","Doctor Dosh (Bellfruit) (Scorpion 4) (set 3)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4ddoshc ,sc4ddosh, sc4_200_4r, sc4ddosh, sc4_state, sc4ddosh, ROT0, "BFM","Doctor Dosh (Bellfruit) (Scorpion 4) (set 4)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4ddoshd ,sc4ddosh, sc4_200_4r, sc4ddosh, sc4_state, sc4ddosh, ROT0, "BFM","Doctor Dosh (Bellfruit) (Scorpion 4) (set 5)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4ddoshe ,sc4ddosh, sc4_200_4r, sc4ddosh, sc4_state, sc4ddosh, ROT0, "BFM","Doctor Dosh (Bellfruit) (Scorpion 4) (set 6)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4ddoshl ,sc4ddosh, sc4_200_4r, sc4ddosh, sc4_state, sc4ddosh, ROT0, "BFM","Doctor Dosh (Bellfruit) (Scorpion 4) (set 7)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4ddoshm ,sc4ddosh, sc4_200_4r, sc4ddosh, sc4_state, sc4ddosh, ROT0, "BFM","Doctor Dosh (Bellfruit) (Scorpion 4) (set 8)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4ddoshn ,sc4ddosh, sc4_200_4r, sc4ddosh, sc4_state, sc4ddosh, ROT0, "BFM","Doctor Dosh (Bellfruit) (Scorpion 4) (set 9)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4ddosho ,sc4ddosh, sc4_200_4r, sc4ddosh, sc4_state, sc4ddosh, ROT0, "BFM","Doctor Dosh (Bellfruit) (Scorpion 4) (set 10)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4ddosh ,0, sc4_200_4r, sc4ddosh, sc4_state, sc4ddosh, ROT0, "BFM","Doctor Dosh (Bellfruit) (Scorpion 4) (set 1)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4ddosha ,sc4ddosh, sc4_200_4r, sc4ddosh, sc4_state, sc4ddosh, ROT0, "BFM","Doctor Dosh (Bellfruit) (Scorpion 4) (set 2)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4ddoshb ,sc4ddosh, sc4_200_4r, sc4ddosh, sc4_state, sc4ddosh, ROT0, "BFM","Doctor Dosh (Bellfruit) (Scorpion 4) (set 3)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4ddoshc ,sc4ddosh, sc4_200_4r, sc4ddosh, sc4_state, sc4ddosh, ROT0, "BFM","Doctor Dosh (Bellfruit) (Scorpion 4) (set 4)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4ddoshd ,sc4ddosh, sc4_200_4r, sc4ddosh, sc4_state, sc4ddosh, ROT0, "BFM","Doctor Dosh (Bellfruit) (Scorpion 4) (set 5)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4ddoshe ,sc4ddosh, sc4_200_4r, sc4ddosh, sc4_state, sc4ddosh, ROT0, "BFM","Doctor Dosh (Bellfruit) (Scorpion 4) (set 6)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4ddoshl ,sc4ddosh, sc4_200_4r, sc4ddosh, sc4_state, sc4ddosh, ROT0, "BFM","Doctor Dosh (Bellfruit) (Scorpion 4) (set 7)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4ddoshm ,sc4ddosh, sc4_200_4r, sc4ddosh, sc4_state, sc4ddosh, ROT0, "BFM","Doctor Dosh (Bellfruit) (Scorpion 4) (set 8)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4ddoshn ,sc4ddosh, sc4_200_4r, sc4ddosh, sc4_state, sc4ddosh, ROT0, "BFM","Doctor Dosh (Bellfruit) (Scorpion 4) (set 9)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4ddosho ,sc4ddosh, sc4_200_4r, sc4ddosh, sc4_state, sc4ddosh, ROT0, "BFM","Doctor Dosh (Bellfruit) (Scorpion 4) (set 10)", MACHINE_FLAGS, layout_bfm_sc4 )
// PR1309 AWP DOCTOR DOSH PR1309 DOCTOR DOSH SOUNDS11 DOCTOR DOSH S.SITE
-GAMEL( 200?, sc4ddoshf ,sc4ddosh, sc4_200_4r, sc4ddosh, sc4_state, sc4ddosh_mbus, ROT0, "BFM","Doctor Dosh (Bellfruit) (Scorpion 4) (set 11)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4ddoshg ,sc4ddosh, sc4_200_4r, sc4ddosh, sc4_state, sc4ddosh_mbus, ROT0, "BFM","Doctor Dosh (Bellfruit) (Scorpion 4) (set 12)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4ddoshh ,sc4ddosh, sc4_200_4r, sc4ddosh, sc4_state, sc4ddosh_mbus, ROT0, "BFM","Doctor Dosh (Bellfruit) (Scorpion 4) (set 13)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4ddoshi ,sc4ddosh, sc4_200_4r, sc4ddosh, sc4_state, sc4ddosh_mbus, ROT0, "BFM","Doctor Dosh (Bellfruit) (Scorpion 4) (set 14)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4ddoshj ,sc4ddosh, sc4_200_4r, sc4ddosh, sc4_state, sc4ddosh_mbus, ROT0, "BFM","Doctor Dosh (Bellfruit) (Scorpion 4) (set 15)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4ddoshk ,sc4ddosh, sc4_200_4r, sc4ddosh, sc4_state, sc4ddosh_mbus, ROT0, "BFM","Doctor Dosh (Bellfruit) (Scorpion 4) (set 16)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4ddoshf ,sc4ddosh, sc4_200_4r, sc4ddosh, sc4_state, sc4ddosh_mbus, ROT0, "BFM","Doctor Dosh (Bellfruit) (Scorpion 4) (set 11)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4ddoshg ,sc4ddosh, sc4_200_4r, sc4ddosh, sc4_state, sc4ddosh_mbus, ROT0, "BFM","Doctor Dosh (Bellfruit) (Scorpion 4) (set 12)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4ddoshh ,sc4ddosh, sc4_200_4r, sc4ddosh, sc4_state, sc4ddosh_mbus, ROT0, "BFM","Doctor Dosh (Bellfruit) (Scorpion 4) (set 13)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4ddoshi ,sc4ddosh, sc4_200_4r, sc4ddosh, sc4_state, sc4ddosh_mbus, ROT0, "BFM","Doctor Dosh (Bellfruit) (Scorpion 4) (set 14)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4ddoshj ,sc4ddosh, sc4_200_4r, sc4ddosh, sc4_state, sc4ddosh_mbus, ROT0, "BFM","Doctor Dosh (Bellfruit) (Scorpion 4) (set 15)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4ddoshk ,sc4ddosh, sc4_200_4r, sc4ddosh, sc4_state, sc4ddosh_mbus, ROT0, "BFM","Doctor Dosh (Bellfruit) (Scorpion 4) (set 16)", MACHINE_FLAGS, layout_bfm_sc4 )
INPUT_PORTS_START( sc4dhh ) // this structure is generated
PORT_INCLUDE( sc4_base )
@@ -36277,12 +36279,12 @@ INPUT_PORTS_END
// board positions & steppa feature don't light anything, investigate (might only be a problem in demo mode?)
// PR1736 AWP DOUGH HO HO S4 PR1716 DOUGH HO HO SOUNDS11 DOUGH HO HO S.SITE
-GAMEL( 200?, sc4dhh ,0, sc4, sc4dhh, sc4_state, sc4mbus, ROT0, "BFM","Dough Ho Ho (Bellfruit) (Scorpion 4) (set 1)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4dhha ,sc4dhh, sc4, sc4dhh, sc4_state, sc4mbus, ROT0, "BFM","Dough Ho Ho (Bellfruit) (Scorpion 4) (set 2)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4dhhb ,sc4dhh, sc4, sc4dhh, sc4_state, sc4mbus, ROT0, "BFM","Dough Ho Ho (Bellfruit) (Scorpion 4) (set 3)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4dhhc ,sc4dhh, sc4, sc4dhh, sc4_state, sc4mbus, ROT0, "BFM","Dough Ho Ho (Bellfruit) (Scorpion 4) (set 4)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4dhhd ,sc4dhh, sc4, sc4dhh, sc4_state, sc4mbus, ROT0, "BFM","Dough Ho Ho (Bellfruit) (Scorpion 4) (set 5)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4dhhe ,sc4dhh, sc4, sc4dhh, sc4_state, sc4mbus, ROT0, "BFM","Dough Ho Ho (Bellfruit) (Scorpion 4) (set 6)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4dhh ,0, sc4, sc4dhh, sc4_state, sc4mbus, ROT0, "BFM","Dough Ho Ho (Bellfruit) (Scorpion 4) (set 1)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4dhha ,sc4dhh, sc4, sc4dhh, sc4_state, sc4mbus, ROT0, "BFM","Dough Ho Ho (Bellfruit) (Scorpion 4) (set 2)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4dhhb ,sc4dhh, sc4, sc4dhh, sc4_state, sc4mbus, ROT0, "BFM","Dough Ho Ho (Bellfruit) (Scorpion 4) (set 3)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4dhhc ,sc4dhh, sc4, sc4dhh, sc4_state, sc4mbus, ROT0, "BFM","Dough Ho Ho (Bellfruit) (Scorpion 4) (set 4)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4dhhd ,sc4dhh, sc4, sc4dhh, sc4_state, sc4mbus, ROT0, "BFM","Dough Ho Ho (Bellfruit) (Scorpion 4) (set 5)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4dhhe ,sc4dhh, sc4, sc4dhh, sc4_state, sc4mbus, ROT0, "BFM","Dough Ho Ho (Bellfruit) (Scorpion 4) (set 6)", MACHINE_FLAGS, layout_bfm_sc4 )
DRIVER_INIT_MEMBER(sc4_state,sc4dough)
{
@@ -36353,8 +36355,8 @@ INPUT_PORTS_START( sc4dough ) // this structure is generated
INPUT_PORTS_END
// PR1615 AWP DOUGH SELECTA SCORP4 PR1615 DOUGH SELECTA SOUNDS11 DOUGH SELECTA S.SITE
-GAMEL( 200?, sc4dough ,0, sc4_4reel_alt, sc4dough, sc4_state, sc4dough, ROT0, "BFM","Dough Selecta (Bellfruit) (Scorpion 4) (set 1)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4dougha ,sc4dough, sc4_4reel_alt, sc4dough, sc4_state, sc4dough, ROT0, "BFM","Dough Selecta (Bellfruit) (Scorpion 4) (set 2)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4dough ,0, sc4_4reel_alt, sc4dough, sc4_state, sc4dough, ROT0, "BFM","Dough Selecta (Bellfruit) (Scorpion 4) (set 1)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4dougha ,sc4dough, sc4_4reel_alt, sc4dough, sc4_state, sc4dough, ROT0, "BFM","Dough Selecta (Bellfruit) (Scorpion 4) (set 2)", MACHINE_FLAGS, layout_bfm_sc4 )
DRIVER_INIT_MEMBER(sc4_state,sc4emmer)
@@ -36424,10 +36426,10 @@ INPUT_PORTS_START( sc4emmer ) // this structure is generated
INPUT_PORTS_END
// PR2313 EMMERDALE EMMR SOUNDS EMMERDALE
-GAMEL( 200?, sc4emmer ,0, sc4_4reel_alt, sc4emmer, sc4_state, sc4emmer, ROT0, "Mazooma","Emmerdale (Mazooma) (Scorpion 4) (set 1)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4emmera ,sc4emmer, sc4_4reel_alt, sc4emmer, sc4_state, sc4emmer, ROT0, "Mazooma","Emmerdale (Mazooma) (Scorpion 4) (set 2)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4emmerb ,sc4emmer, sc4_4reel_alt, sc4emmer, sc4_state, sc4emmer, ROT0, "Mazooma","Emmerdale (Mazooma) (Scorpion 4) (set 3)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4emmerc ,sc4emmer, sc4_4reel_alt, sc4emmer, sc4_state, sc4emmer, ROT0, "Mazooma","Emmerdale (Mazooma) (Scorpion 4) (set 4)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4emmer ,0, sc4_4reel_alt, sc4emmer, sc4_state, sc4emmer, ROT0, "Mazooma","Emmerdale (Mazooma) (Scorpion 4) (set 1)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4emmera ,sc4emmer, sc4_4reel_alt, sc4emmer, sc4_state, sc4emmer, ROT0, "Mazooma","Emmerdale (Mazooma) (Scorpion 4) (set 2)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4emmerb ,sc4emmer, sc4_4reel_alt, sc4emmer, sc4_state, sc4emmer, ROT0, "Mazooma","Emmerdale (Mazooma) (Scorpion 4) (set 3)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4emmerc ,sc4emmer, sc4_4reel_alt, sc4emmer, sc4_state, sc4emmer, ROT0, "Mazooma","Emmerdale (Mazooma) (Scorpion 4) (set 4)", MACHINE_FLAGS, layout_bfm_sc4 )
DRIVER_INIT_MEMBER(sc4_state,sc4evol)
{
@@ -36479,14 +36481,14 @@ INPUT_PORTS_START( sc4evol ) // this structure is generated
INPUT_PORTS_END
// PR2135 EVOLUTION EVOL SOUNDS EVOLUTION
-GAMEL( 200?, sc4evol ,0, sc4_4reel_alt, sc4evol, sc4_state, sc4evol, ROT0, "Qps","Evolution (Qps) (Scorpion 4) (set 1)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4evola ,sc4evol, sc4_4reel_alt, sc4evol, sc4_state, sc4evol, ROT0, "Qps","Evolution (Qps) (Scorpion 4) (set 2)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4evolb ,sc4evol, sc4_4reel_alt, sc4evol, sc4_state, sc4evol, ROT0, "Qps","Evolution (Qps) (Scorpion 4) (set 3)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4evolc ,sc4evol, sc4_4reel_alt, sc4evol, sc4_state, sc4evol, ROT0, "Qps","Evolution (Qps) (Scorpion 4) (set 4)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4evold ,sc4evol, sc4_4reel_alt, sc4evol, sc4_state, sc4evol, ROT0, "Qps","Evolution (Qps) (Scorpion 4) (set 5)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4evole ,sc4evol, sc4_4reel_alt, sc4evol, sc4_state, sc4evol, ROT0, "Qps","Evolution (Qps) (Scorpion 4) (set 6)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4evolf ,sc4evol, sc4_4reel_alt, sc4evol, sc4_state, sc4evol, ROT0, "Qps","Evolution (Qps) (Scorpion 4) (set 7)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4evolg ,sc4evol, sc4_4reel_alt, sc4evol, sc4_state, sc4evol, ROT0, "Qps","Evolution (Qps) (Scorpion 4) (set 8)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4evol ,0, sc4_4reel_alt, sc4evol, sc4_state, sc4evol, ROT0, "Qps","Evolution (Qps) (Scorpion 4) (set 1)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4evola ,sc4evol, sc4_4reel_alt, sc4evol, sc4_state, sc4evol, ROT0, "Qps","Evolution (Qps) (Scorpion 4) (set 2)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4evolb ,sc4evol, sc4_4reel_alt, sc4evol, sc4_state, sc4evol, ROT0, "Qps","Evolution (Qps) (Scorpion 4) (set 3)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4evolc ,sc4evol, sc4_4reel_alt, sc4evol, sc4_state, sc4evol, ROT0, "Qps","Evolution (Qps) (Scorpion 4) (set 4)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4evold ,sc4evol, sc4_4reel_alt, sc4evol, sc4_state, sc4evol, ROT0, "Qps","Evolution (Qps) (Scorpion 4) (set 5)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4evole ,sc4evol, sc4_4reel_alt, sc4evol, sc4_state, sc4evol, ROT0, "Qps","Evolution (Qps) (Scorpion 4) (set 6)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4evolf ,sc4evol, sc4_4reel_alt, sc4evol, sc4_state, sc4evol, ROT0, "Qps","Evolution (Qps) (Scorpion 4) (set 7)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4evolg ,sc4evol, sc4_4reel_alt, sc4evol, sc4_state, sc4evol, ROT0, "Qps","Evolution (Qps) (Scorpion 4) (set 8)", MACHINE_FLAGS, layout_bfm_sc4 )
DRIVER_INIT_MEMBER(sc4_state,sc4fguy)
{
@@ -36572,12 +36574,12 @@ INPUT_PORTS_START( sc4fguy70 )
INPUT_PORTS_END
// PR3233 AWP FAMILY GUY S4 PR3213 FAMILY GUY SOUNDS11 FAMILY GUY S.SITE
-GAMEL( 200?, sc4fguy ,0, sc4_5reel_alt, sc4fguy35, sc4_state, sc4fguy, ROT0, "BFM","Family Guy (Bellfruit) (Scorpion 4) (set 1)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 ) // FAMY 471
-GAMEL( 200?, sc4fguyb ,sc4fguy, sc4_5reel_alt, sc4fguy35, sc4_state, sc4fguy, ROT0, "BFM","Family Guy (Bellfruit) (Scorpion 4) (set 3)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 ) // FAMY 471
-GAMEL( 200?, sc4fguya ,sc4fguy, sc4_5reel_alt, sc4fguy70, sc4_state, sc4fguy, ROT0, "BFM","Family Guy (Bellfruit) (Scorpion 4) (set 2)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 ) // FAMY 572
-GAMEL( 200?, sc4fguyc ,sc4fguy, sc4_5reel_alt, sc4fguy70, sc4_state, sc4fguy, ROT0, "BFM","Family Guy (Bellfruit) (Scorpion 4) (set 4)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 ) // FAMY 572
-GAMEL( 200?, sc4fguyd ,sc4fguy, sc4_5reel_alt, sc4fguy, sc4_state, sc4fguy, ROT0, "BFM","Family Guy (Bellfruit) (Scorpion 4) (set 5)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4fguye ,sc4fguy, sc4_5reel_alt, sc4fguy, sc4_state, sc4fguy, ROT0, "BFM","Family Guy (Bellfruit) (Scorpion 4) (set 6)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4fguy ,0, sc4_5reel_alt, sc4fguy35, sc4_state, sc4fguy, ROT0, "BFM","Family Guy (Bellfruit) (Scorpion 4) (set 1)", MACHINE_FLAGS, layout_bfm_sc4 ) // FAMY 471
+GAMEL( 200?, sc4fguyb ,sc4fguy, sc4_5reel_alt, sc4fguy35, sc4_state, sc4fguy, ROT0, "BFM","Family Guy (Bellfruit) (Scorpion 4) (set 3)", MACHINE_FLAGS, layout_bfm_sc4 ) // FAMY 471
+GAMEL( 200?, sc4fguya ,sc4fguy, sc4_5reel_alt, sc4fguy70, sc4_state, sc4fguy, ROT0, "BFM","Family Guy (Bellfruit) (Scorpion 4) (set 2)", MACHINE_FLAGS, layout_bfm_sc4 ) // FAMY 572
+GAMEL( 200?, sc4fguyc ,sc4fguy, sc4_5reel_alt, sc4fguy70, sc4_state, sc4fguy, ROT0, "BFM","Family Guy (Bellfruit) (Scorpion 4) (set 4)", MACHINE_FLAGS, layout_bfm_sc4 ) // FAMY 572
+GAMEL( 200?, sc4fguyd ,sc4fguy, sc4_5reel_alt, sc4fguy, sc4_state, sc4fguy, ROT0, "BFM","Family Guy (Bellfruit) (Scorpion 4) (set 5)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4fguye ,sc4fguy, sc4_5reel_alt, sc4fguy, sc4_state, sc4fguy, ROT0, "BFM","Family Guy (Bellfruit) (Scorpion 4) (set 6)", MACHINE_FLAGS, layout_bfm_sc4 )
DRIVER_INIT_MEMBER(sc4_state,sc4fbspn)
{
@@ -36643,10 +36645,10 @@ INPUT_PORTS_START( sc4fbspn ) // this structure is generated
INPUT_PORTS_END
// PR1721 AWP FAT BOY SPIN SCORP4 PR1701 FAT BOY SPIN SOUNDS11 FAT BOY SPIN S.SITE
-GAMEL( 200?, sc4fbspn ,0, sc4_5reel, sc4fbspn, sc4_state, sc4fbspn, ROT0, "BFM","Fat Boy Spin (Bellfruit) (Scorpion 4) (set 1)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4fbspna ,sc4fbspn, sc4_5reel, sc4fbspn, sc4_state, sc4fbspn, ROT0, "BFM","Fat Boy Spin (Bellfruit) (Scorpion 4) (set 2)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4fbspnb ,sc4fbspn, sc4_5reel, sc4fbspn, sc4_state, sc4fbspn, ROT0, "BFM","Fat Boy Spin (Bellfruit) (Scorpion 4) (set 3)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4fbspnc ,sc4fbspn, sc4_5reel, sc4fbspn, sc4_state, sc4fbspn, ROT0, "BFM","Fat Boy Spin (Bellfruit) (Scorpion 4) (set 4)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4fbspn ,0, sc4_5reel, sc4fbspn, sc4_state, sc4fbspn, ROT0, "BFM","Fat Boy Spin (Bellfruit) (Scorpion 4) (set 1)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4fbspna ,sc4fbspn, sc4_5reel, sc4fbspn, sc4_state, sc4fbspn, ROT0, "BFM","Fat Boy Spin (Bellfruit) (Scorpion 4) (set 2)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4fbspnb ,sc4fbspn, sc4_5reel, sc4fbspn, sc4_state, sc4fbspn, ROT0, "BFM","Fat Boy Spin (Bellfruit) (Scorpion 4) (set 3)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4fbspnc ,sc4fbspn, sc4_5reel, sc4fbspn, sc4_state, sc4fbspn, ROT0, "BFM","Fat Boy Spin (Bellfruit) (Scorpion 4) (set 4)", MACHINE_FLAGS, layout_bfm_sc4 )
@@ -36716,10 +36718,10 @@ INPUT_PORTS_START( sc4fmj ) // this structure is generated
INPUT_PORTS_END
// PR2328 FULL METAL JACKPOT FULLM SOUNDS F METAL JACKPOT
-GAMEL( 200?, sc4fmj ,0, sc4_4reel_alt, sc4fmj, sc4_state, sc4fmj, ROT0, "QPS / Mazooma","Full Metal Jackpot (Mazooma) (Scorpion 4) (set 1)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4fmja ,sc4fmj, sc4_4reel_alt, sc4fmj, sc4_state, sc4fmj, ROT0, "QPS / Mazooma","Full Metal Jackpot (Mazooma) (Scorpion 4) (set 2)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4fmjb ,sc4fmj, sc4_4reel_alt, sc4fmj, sc4_state, sc4fmj, ROT0, "QPS / Mazooma","Full Metal Jackpot (Mazooma) (Scorpion 4) (set 3)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4fmjc ,sc4fmj, sc4_4reel_alt, sc4fmj, sc4_state, sc4fmj, ROT0, "QPS / Mazooma","Full Metal Jackpot (Mazooma) (Scorpion 4) (set 4)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4fmj ,0, sc4_4reel_alt, sc4fmj, sc4_state, sc4fmj, ROT0, "QPS / Mazooma","Full Metal Jackpot (Mazooma) (Scorpion 4) (set 1)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4fmja ,sc4fmj, sc4_4reel_alt, sc4fmj, sc4_state, sc4fmj, ROT0, "QPS / Mazooma","Full Metal Jackpot (Mazooma) (Scorpion 4) (set 2)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4fmjb ,sc4fmj, sc4_4reel_alt, sc4fmj, sc4_state, sc4fmj, ROT0, "QPS / Mazooma","Full Metal Jackpot (Mazooma) (Scorpion 4) (set 3)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4fmjc ,sc4fmj, sc4_4reel_alt, sc4fmj, sc4_state, sc4fmj, ROT0, "QPS / Mazooma","Full Metal Jackpot (Mazooma) (Scorpion 4) (set 4)", MACHINE_FLAGS, layout_bfm_sc4 )
@@ -36791,14 +36793,14 @@ INPUT_PORTS_START( sc4gd ) // this structure is generated
INPUT_PORTS_END
// PR1016 GOLD DIGGER PR1016 GOLD DIGGER SOUNDS11
-GAMEL( 200?, sc4gd ,0, sc4_200_4r, sc4gd, sc4_state, sc4gd, ROT0, "BFM","Gold Digger (Bellfruit) (Scorpion 4) (set 1)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4gda ,sc4gd, sc4_200_4r, sc4gd, sc4_state, sc4gd, ROT0, "BFM","Gold Digger (Bellfruit) (Scorpion 4) (set 2)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4gdb ,sc4gd, sc4_200_4r, sc4gd, sc4_state, sc4gd, ROT0, "BFM","Gold Digger (Bellfruit) (Scorpion 4) (set 3)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4gdc ,sc4gd, sc4_200_4r, sc4gd, sc4_state, sc4gd, ROT0, "BFM","Gold Digger (Bellfruit) (Scorpion 4) (set 4)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4gdd ,sc4gd, sc4_200_4r, sc4gd, sc4_state, sc4gd, ROT0, "BFM","Gold Digger (Bellfruit) (Scorpion 4) (set 5)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4gde ,sc4gd, sc4_200_4r, sc4gd, sc4_state, sc4gd, ROT0, "BFM","Gold Digger (Bellfruit) (Scorpion 4) (set 6)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4gdf ,sc4gd, sc4_200_4r, sc4gd, sc4_state, sc4gd, ROT0, "BFM","Gold Digger (Bellfruit) (Scorpion 4) (set 7)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4gdg ,sc4gd, sc4_200_4r, sc4gd, sc4_state, sc4gd, ROT0, "BFM","Gold Digger (Bellfruit) (Scorpion 4) (set 8)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4gd ,0, sc4_200_4r, sc4gd, sc4_state, sc4gd, ROT0, "BFM","Gold Digger (Bellfruit) (Scorpion 4) (set 1)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4gda ,sc4gd, sc4_200_4r, sc4gd, sc4_state, sc4gd, ROT0, "BFM","Gold Digger (Bellfruit) (Scorpion 4) (set 2)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4gdb ,sc4gd, sc4_200_4r, sc4gd, sc4_state, sc4gd, ROT0, "BFM","Gold Digger (Bellfruit) (Scorpion 4) (set 3)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4gdc ,sc4gd, sc4_200_4r, sc4gd, sc4_state, sc4gd, ROT0, "BFM","Gold Digger (Bellfruit) (Scorpion 4) (set 4)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4gdd ,sc4gd, sc4_200_4r, sc4gd, sc4_state, sc4gd, ROT0, "BFM","Gold Digger (Bellfruit) (Scorpion 4) (set 5)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4gde ,sc4gd, sc4_200_4r, sc4gd, sc4_state, sc4gd, ROT0, "BFM","Gold Digger (Bellfruit) (Scorpion 4) (set 6)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4gdf ,sc4gd, sc4_200_4r, sc4gd, sc4_state, sc4gd, ROT0, "BFM","Gold Digger (Bellfruit) (Scorpion 4) (set 7)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4gdg ,sc4gd, sc4_200_4r, sc4gd, sc4_state, sc4gd, ROT0, "BFM","Gold Digger (Bellfruit) (Scorpion 4) (set 8)", MACHINE_FLAGS, layout_bfm_sc4 )
DRIVER_INIT_MEMBER(sc4_state,sc4gdclb)
{
@@ -36861,18 +36863,18 @@ INPUT_PORTS_START( sc4gdclb ) // this structure is generated
INPUT_PORTS_END
// PR1137 CLUB GOLD DIGGER PR1137 GOLDD CL SOUNDS11
-GAMEL( 200?, sc4gdclb ,0, sc4_200_std, sc4gdclb, sc4_state, sc4gdclb, ROT0, "BFM","Gold Digger Club (Bellfruit) (Scorpion 4) (set 1)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4gdclba ,sc4gdclb, sc4_200_std, sc4gdclb, sc4_state, sc4gdclb, ROT0, "BFM","Gold Digger Club (Bellfruit) (Scorpion 4) (set 2)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4gdclbb ,sc4gdclb, sc4_200_std, sc4gdclb, sc4_state, sc4gdclb, ROT0, "BFM","Gold Digger Club (Bellfruit) (Scorpion 4) (set 3)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4gdclbc ,sc4gdclb, sc4_200_std, sc4gdclb, sc4_state, sc4gdclb, ROT0, "BFM","Gold Digger Club (Bellfruit) (Scorpion 4) (set 4)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4gdclbd ,sc4gdclb, sc4_200_std, sc4gdclb, sc4_state, sc4gdclb, ROT0, "BFM","Gold Digger Club (Bellfruit) (Scorpion 4) (set 5)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4gdclbe ,sc4gdclb, sc4_200_std, sc4gdclb, sc4_state, sc4gdclb, ROT0, "BFM","Gold Digger Club (Bellfruit) (Scorpion 4) (set 6)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4gdclbf ,sc4gdclb, sc4_200_std, sc4gdclb, sc4_state, sc4gdclb, ROT0, "BFM","Gold Digger Club (Bellfruit) (Scorpion 4) (set 7)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4gdclbg ,sc4gdclb, sc4_200_std, sc4gdclb, sc4_state, sc4gdclb, ROT0, "BFM","Gold Digger Club (Bellfruit) (Scorpion 4) (set 8)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4gdclbh ,sc4gdclb, sc4_200_std, sc4gdclb, sc4_state, sc4gdclb, ROT0, "BFM","Gold Digger Club (Bellfruit) (Scorpion 4) (set 9)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4gdclbi ,sc4gdclb, sc4_200_std, sc4gdclb, sc4_state, sc4gdclb, ROT0, "BFM","Gold Digger Club (Bellfruit) (Scorpion 4) (set 10)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4gdclbj ,sc4gdclb, sc4_200_std, sc4gdclb, sc4_state, sc4gdclb, ROT0, "BFM","Gold Digger Club (Bellfruit) (Scorpion 4) (set 11)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4gdclbk ,sc4gdclb, sc4_200_std, sc4gdclb, sc4_state, sc4gdclb, ROT0, "BFM","Gold Digger Club (Bellfruit) (Scorpion 4) (set 12)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4gdclb ,0, sc4_200_std, sc4gdclb, sc4_state, sc4gdclb, ROT0, "BFM","Gold Digger Club (Bellfruit) (Scorpion 4) (set 1)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4gdclba ,sc4gdclb, sc4_200_std, sc4gdclb, sc4_state, sc4gdclb, ROT0, "BFM","Gold Digger Club (Bellfruit) (Scorpion 4) (set 2)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4gdclbb ,sc4gdclb, sc4_200_std, sc4gdclb, sc4_state, sc4gdclb, ROT0, "BFM","Gold Digger Club (Bellfruit) (Scorpion 4) (set 3)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4gdclbc ,sc4gdclb, sc4_200_std, sc4gdclb, sc4_state, sc4gdclb, ROT0, "BFM","Gold Digger Club (Bellfruit) (Scorpion 4) (set 4)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4gdclbd ,sc4gdclb, sc4_200_std, sc4gdclb, sc4_state, sc4gdclb, ROT0, "BFM","Gold Digger Club (Bellfruit) (Scorpion 4) (set 5)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4gdclbe ,sc4gdclb, sc4_200_std, sc4gdclb, sc4_state, sc4gdclb, ROT0, "BFM","Gold Digger Club (Bellfruit) (Scorpion 4) (set 6)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4gdclbf ,sc4gdclb, sc4_200_std, sc4gdclb, sc4_state, sc4gdclb, ROT0, "BFM","Gold Digger Club (Bellfruit) (Scorpion 4) (set 7)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4gdclbg ,sc4gdclb, sc4_200_std, sc4gdclb, sc4_state, sc4gdclb, ROT0, "BFM","Gold Digger Club (Bellfruit) (Scorpion 4) (set 8)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4gdclbh ,sc4gdclb, sc4_200_std, sc4gdclb, sc4_state, sc4gdclb, ROT0, "BFM","Gold Digger Club (Bellfruit) (Scorpion 4) (set 9)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4gdclbi ,sc4gdclb, sc4_200_std, sc4gdclb, sc4_state, sc4gdclb, ROT0, "BFM","Gold Digger Club (Bellfruit) (Scorpion 4) (set 10)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4gdclbj ,sc4gdclb, sc4_200_std, sc4gdclb, sc4_state, sc4gdclb, ROT0, "BFM","Gold Digger Club (Bellfruit) (Scorpion 4) (set 11)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4gdclbk ,sc4gdclb, sc4_200_std, sc4gdclb, sc4_state, sc4gdclb, ROT0, "BFM","Gold Digger Club (Bellfruit) (Scorpion 4) (set 12)", MACHINE_FLAGS, layout_bfm_sc4 )
DRIVER_INIT_MEMBER(sc4_state,sc4gball)
@@ -36941,10 +36943,10 @@ INPUT_PORTS_END
// this is a football themed game... completely different to golden balls casino
// PR1604 AWP GOLDEN BALLS PR1604 GOLDEN BALLS SOUNDS12 GOLDEN BALLS S.SITE
-GAMEL( 200?, sc4gball ,0, sc4_4reel_alt, sc4gball, sc4_state, sc4gball, ROT0, "BFM","Golden Balls (Bellfruit) (Scorpion 4) (set 1)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4gballa ,sc4gball, sc4_4reel_alt, sc4gball, sc4_state, sc4gball, ROT0, "BFM","Golden Balls (Bellfruit) (Scorpion 4) (set 2)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4gballb ,sc4gball, sc4_4reel_alt, sc4gball, sc4_state, sc4gball, ROT0, "BFM","Golden Balls (Bellfruit) (Scorpion 4) (set 3)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4gballc ,sc4gball, sc4_4reel_alt, sc4gball, sc4_state, sc4gball, ROT0, "BFM","Golden Balls (Bellfruit) (Scorpion 4) (set 4)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4gball ,0, sc4_4reel_alt, sc4gball, sc4_state, sc4gball, ROT0, "BFM","Golden Balls (Bellfruit) (Scorpion 4) (set 1)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4gballa ,sc4gball, sc4_4reel_alt, sc4gball, sc4_state, sc4gball, ROT0, "BFM","Golden Balls (Bellfruit) (Scorpion 4) (set 2)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4gballb ,sc4gball, sc4_4reel_alt, sc4gball, sc4_state, sc4gball, ROT0, "BFM","Golden Balls (Bellfruit) (Scorpion 4) (set 3)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4gballc ,sc4gball, sc4_4reel_alt, sc4gball, sc4_state, sc4gball, ROT0, "BFM","Golden Balls (Bellfruit) (Scorpion 4) (set 4)", MACHINE_FLAGS, layout_bfm_sc4 )
DRIVER_INIT_MEMBER(sc4_state,sc4gunp)
@@ -37017,14 +37019,14 @@ INPUT_PORTS_START( sc4gunp ) // this structure is generated
INPUT_PORTS_END
// PR3046 AWP THE GUNPOWDER SLOT S4 PR3016 GUNPOWDER SLOT SOUNDS11 GUNPOWDER SLOT S.SITE
-GAMEL( 200?, sc4gunp ,0, sc4_5reel_alt, sc4gunp, sc4_state, sc4gunp, ROT0, "BFM","Gunpowder Slot (Bellfruit) (Scorpion 4) (set 1)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4gunpa ,sc4gunp, sc4_5reel_alt, sc4gunp, sc4_state, sc4gunp, ROT0, "BFM","Gunpowder Slot (Bellfruit) (Scorpion 4) (set 2)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4gunpb ,sc4gunp, sc4_5reel_alt, sc4gunp, sc4_state, sc4gunp, ROT0, "BFM","Gunpowder Slot (Bellfruit) (Scorpion 4) (set 3)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4gunpc ,sc4gunp, sc4_5reel_alt, sc4gunp, sc4_state, sc4gunp, ROT0, "BFM","Gunpowder Slot (Bellfruit) (Scorpion 4) (set 4)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4gunpd ,sc4gunp, sc4_5reel_alt, sc4gunp, sc4_state, sc4gunp, ROT0, "BFM","Gunpowder Slot (Bellfruit) (Scorpion 4) (set 5)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4gunpe ,sc4gunp, sc4_5reel_alt, sc4gunp, sc4_state, sc4gunp, ROT0, "BFM","Gunpowder Slot (Bellfruit) (Scorpion 4) (set 6)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4gunpf ,sc4gunp, sc4_5reel_alt, sc4gunp, sc4_state, sc4gunp, ROT0, "BFM","Gunpowder Slot (Bellfruit) (Scorpion 4) (set 7)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4gunpg ,sc4gunp, sc4_5reel_alt, sc4gunp, sc4_state, sc4gunp, ROT0, "BFM","Gunpowder Slot (Bellfruit) (Scorpion 4) (set 8)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4gunp ,0, sc4_5reel_alt, sc4gunp, sc4_state, sc4gunp, ROT0, "BFM","Gunpowder Slot (Bellfruit) (Scorpion 4) (set 1)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4gunpa ,sc4gunp, sc4_5reel_alt, sc4gunp, sc4_state, sc4gunp, ROT0, "BFM","Gunpowder Slot (Bellfruit) (Scorpion 4) (set 2)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4gunpb ,sc4gunp, sc4_5reel_alt, sc4gunp, sc4_state, sc4gunp, ROT0, "BFM","Gunpowder Slot (Bellfruit) (Scorpion 4) (set 3)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4gunpc ,sc4gunp, sc4_5reel_alt, sc4gunp, sc4_state, sc4gunp, ROT0, "BFM","Gunpowder Slot (Bellfruit) (Scorpion 4) (set 4)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4gunpd ,sc4gunp, sc4_5reel_alt, sc4gunp, sc4_state, sc4gunp, ROT0, "BFM","Gunpowder Slot (Bellfruit) (Scorpion 4) (set 5)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4gunpe ,sc4gunp, sc4_5reel_alt, sc4gunp, sc4_state, sc4gunp, ROT0, "BFM","Gunpowder Slot (Bellfruit) (Scorpion 4) (set 6)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4gunpf ,sc4gunp, sc4_5reel_alt, sc4gunp, sc4_state, sc4gunp, ROT0, "BFM","Gunpowder Slot (Bellfruit) (Scorpion 4) (set 7)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4gunpg ,sc4gunp, sc4_5reel_alt, sc4gunp, sc4_state, sc4gunp, ROT0, "BFM","Gunpowder Slot (Bellfruit) (Scorpion 4) (set 8)", MACHINE_FLAGS, layout_bfm_sc4 )
DRIVER_INIT_MEMBER(sc4_state,sc4hapnt)
{
@@ -37088,12 +37090,12 @@ INPUT_PORTS_START( sc4hapnt ) // this structure is generated
INPUT_PORTS_END
// PR1306 AWP HAPPY NOTES PR1306 HAPPY NOTES SOUNDS11
-GAMEL( 200?, sc4hapnt ,0, sc4_4reel_alt, sc4hapnt, sc4_state, sc4hapnt, ROT0, "BFM","Happy Notes (Bellfruit) (Scorpion 4) (set 1)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4hapnta ,sc4hapnt, sc4_4reel_alt, sc4hapnt, sc4_state, sc4hapnt, ROT0, "BFM","Happy Notes (Bellfruit) (Scorpion 4) (set 2)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4hapntb ,sc4hapnt, sc4_4reel_alt, sc4hapnt, sc4_state, sc4hapnt, ROT0, "BFM","Happy Notes (Bellfruit) (Scorpion 4) (set 3)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4hapntc ,sc4hapnt, sc4_4reel_alt, sc4hapnt, sc4_state, sc4hapnt, ROT0, "BFM","Happy Notes (Bellfruit) (Scorpion 4) (set 4)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4hapntd ,sc4hapnt, sc4_4reel_alt, sc4hapnt, sc4_state, sc4hapnt, ROT0, "BFM","Happy Notes (Bellfruit) (Scorpion 4) (set 5)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4hapnte ,sc4hapnt, sc4_4reel_alt, sc4hapnt, sc4_state, sc4hapnt, ROT0, "BFM","Happy Notes (Bellfruit) (Scorpion 4) (set 6)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4hapnt ,0, sc4_4reel_alt, sc4hapnt, sc4_state, sc4hapnt, ROT0, "BFM","Happy Notes (Bellfruit) (Scorpion 4) (set 1)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4hapnta ,sc4hapnt, sc4_4reel_alt, sc4hapnt, sc4_state, sc4hapnt, ROT0, "BFM","Happy Notes (Bellfruit) (Scorpion 4) (set 2)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4hapntb ,sc4hapnt, sc4_4reel_alt, sc4hapnt, sc4_state, sc4hapnt, ROT0, "BFM","Happy Notes (Bellfruit) (Scorpion 4) (set 3)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4hapntc ,sc4hapnt, sc4_4reel_alt, sc4hapnt, sc4_state, sc4hapnt, ROT0, "BFM","Happy Notes (Bellfruit) (Scorpion 4) (set 4)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4hapntd ,sc4hapnt, sc4_4reel_alt, sc4hapnt, sc4_state, sc4hapnt, ROT0, "BFM","Happy Notes (Bellfruit) (Scorpion 4) (set 5)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4hapnte ,sc4hapnt, sc4_4reel_alt, sc4hapnt, sc4_state, sc4hapnt, ROT0, "BFM","Happy Notes (Bellfruit) (Scorpion 4) (set 6)", MACHINE_FLAGS, layout_bfm_sc4 )
INPUT_PORTS_START( sc4hellb ) // this structure is generated
@@ -37156,18 +37158,18 @@ INPUT_PORTS_START( sc4hellb ) // this structure is generated
INPUT_PORTS_END
// PR1419 AWP HELLS BELLS PR1402 HELLS BELLS SOUNDS11
-GAMEL( 200?, sc4hellb ,0, sc4, sc4hellb, sc4_state, sc4, ROT0, "BFM","Hells Bells (PR1419) (Bellfruit) (Scorpion 4) (set 1)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4hellbb ,sc4hellb, sc4, sc4hellb, sc4_state, sc4, ROT0, "BFM","Hells Bells (PR1419) (Bellfruit) (Scorpion 4) (set 2)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4hellbc ,sc4hellb, sc4, sc4hellb, sc4_state, sc4, ROT0, "BFM","Hells Bells (PR1419) (Bellfruit) (Scorpion 4) (set 3)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4hellbd ,sc4hellb, sc4, sc4hellb, sc4_state, sc4, ROT0, "BFM","Hells Bells (PR1419) (Bellfruit) (Scorpion 4) (set 4)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4hellbe ,sc4hellb, sc4, sc4hellb, sc4_state, sc4, ROT0, "BFM","Hells Bells (PR1419) (Bellfruit) (Scorpion 4) (set 5)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4hellbf ,sc4hellb, sc4, sc4hellb, sc4_state, sc4, ROT0, "BFM","Hells Bells (PR1419) (Bellfruit) (Scorpion 4) (set 6)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4hellb ,0, sc4, sc4hellb, sc4_state, sc4, ROT0, "BFM","Hells Bells (PR1419) (Bellfruit) (Scorpion 4) (set 1)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4hellbb ,sc4hellb, sc4, sc4hellb, sc4_state, sc4, ROT0, "BFM","Hells Bells (PR1419) (Bellfruit) (Scorpion 4) (set 2)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4hellbc ,sc4hellb, sc4, sc4hellb, sc4_state, sc4, ROT0, "BFM","Hells Bells (PR1419) (Bellfruit) (Scorpion 4) (set 3)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4hellbd ,sc4hellb, sc4, sc4hellb, sc4_state, sc4, ROT0, "BFM","Hells Bells (PR1419) (Bellfruit) (Scorpion 4) (set 4)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4hellbe ,sc4hellb, sc4, sc4hellb, sc4_state, sc4, ROT0, "BFM","Hells Bells (PR1419) (Bellfruit) (Scorpion 4) (set 5)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4hellbf ,sc4hellb, sc4, sc4hellb, sc4_state, sc4, ROT0, "BFM","Hells Bells (PR1419) (Bellfruit) (Scorpion 4) (set 6)", MACHINE_FLAGS, layout_bfm_sc4 )
// PAY UINT ERR 17
// PR1419 AWP HELLS BELLS PR1402 HELLS BELLS SOUNDS11 HELLS BELLS S.SITE
-GAMEL( 200?, sc4hellbg ,sc4hellb, sc4, sc4hellb, sc4_state, sc4mbus, ROT0, "BFM","Hells Bells (PR1419) (Bellfruit) (Scorpion 4) (set 7)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4hellbh ,sc4hellb, sc4, sc4hellb, sc4_state, sc4mbus, ROT0, "BFM","Hells Bells (PR1419) (Bellfruit) (Scorpion 4) (set 8)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4hellbi ,sc4hellb, sc4, sc4hellb, sc4_state, sc4mbus, ROT0, "BFM","Hells Bells (PR1419) (Bellfruit) (Scorpion 4) (set 9)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4hellbj ,sc4hellb, sc4, sc4hellb, sc4_state, sc4mbus, ROT0, "BFM","Hells Bells (PR1419) (Bellfruit) (Scorpion 4) (set 10)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4hellbg ,sc4hellb, sc4, sc4hellb, sc4_state, sc4mbus, ROT0, "BFM","Hells Bells (PR1419) (Bellfruit) (Scorpion 4) (set 7)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4hellbh ,sc4hellb, sc4, sc4hellb, sc4_state, sc4mbus, ROT0, "BFM","Hells Bells (PR1419) (Bellfruit) (Scorpion 4) (set 8)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4hellbi ,sc4hellb, sc4, sc4hellb, sc4_state, sc4mbus, ROT0, "BFM","Hells Bells (PR1419) (Bellfruit) (Scorpion 4) (set 9)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4hellbj ,sc4hellb, sc4, sc4hellb, sc4_state, sc4mbus, ROT0, "BFM","Hells Bells (PR1419) (Bellfruit) (Scorpion 4) (set 10)", MACHINE_FLAGS, layout_bfm_sc4 )
// seem to be issues with reel 4
DRIVER_INIT_MEMBER(sc4_state,sc4hill)
@@ -37244,8 +37246,8 @@ INPUT_PORTS_START( sc4hill ) // this structure is generated
INPUT_PORTS_END
// PR1643 AWP HILLBILLIONAIRE SCORP4 PR1613 HILLBILLIONAIRE SOUNDS11 HILLBILLIONAIRE S.SITE
-GAMEL( 200?, sc4hill ,0, sc4, sc4hill, sc4_state, sc4hill, ROT0, "BFM","Hill Billionaire (Bellfruit) (Scorpion 4) (set 1)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4hilla ,sc4hill, sc4, sc4hill, sc4_state, sc4hill, ROT0, "BFM","Hill Billionaire (Bellfruit) (Scorpion 4) (set 2)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4hill ,0, sc4, sc4hill, sc4_state, sc4hill, ROT0, "BFM","Hill Billionaire (Bellfruit) (Scorpion 4) (set 1)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4hilla ,sc4hill, sc4, sc4hill, sc4_state, sc4hill, ROT0, "BFM","Hill Billionaire (Bellfruit) (Scorpion 4) (set 2)", MACHINE_FLAGS, layout_bfm_sc4 )
@@ -37307,14 +37309,14 @@ INPUT_PORTS_START( sc4hiss ) // this structure is generated
INPUT_PORTS_END
// PR2176 HISSING QUID VIPA SOUNDS HISSING QUID
-GAMEL( 200?, sc4hiss ,0, sc4_200_4r, sc4hiss, sc4_state, sc4hiss, ROT0, "Qps","Hissing Quid (Qps) (Scorpion 4) (set 1)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4hissa ,sc4hiss, sc4_200_4r, sc4hiss, sc4_state, sc4hiss, ROT0, "Qps","Hissing Quid (Qps) (Scorpion 4) (set 2)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4hissb ,sc4hiss, sc4_200_4r, sc4hiss, sc4_state, sc4hiss, ROT0, "Qps","Hissing Quid (Qps) (Scorpion 4) (set 3)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4hissc ,sc4hiss, sc4_200_4r, sc4hiss, sc4_state, sc4hiss, ROT0, "Qps","Hissing Quid (Qps) (Scorpion 4) (set 4)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4hissd ,sc4hiss, sc4_200_4r, sc4hiss, sc4_state, sc4hiss, ROT0, "Qps","Hissing Quid (Qps) (Scorpion 4) (set 5)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4hisse ,sc4hiss, sc4_200_4r, sc4hiss, sc4_state, sc4hiss, ROT0, "Qps","Hissing Quid (Qps) (Scorpion 4) (set 6)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4hissf ,sc4hiss, sc4_200_4r, sc4hiss, sc4_state, sc4hiss, ROT0, "Qps","Hissing Quid (Qps) (Scorpion 4) (set 7)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4hissg ,sc4hiss, sc4_200_4r, sc4hiss, sc4_state, sc4hiss, ROT0, "Qps","Hissing Quid (Qps) (Scorpion 4) (set 8)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4hiss ,0, sc4_200_4r, sc4hiss, sc4_state, sc4hiss, ROT0, "Qps","Hissing Quid (Qps) (Scorpion 4) (set 1)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4hissa ,sc4hiss, sc4_200_4r, sc4hiss, sc4_state, sc4hiss, ROT0, "Qps","Hissing Quid (Qps) (Scorpion 4) (set 2)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4hissb ,sc4hiss, sc4_200_4r, sc4hiss, sc4_state, sc4hiss, ROT0, "Qps","Hissing Quid (Qps) (Scorpion 4) (set 3)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4hissc ,sc4hiss, sc4_200_4r, sc4hiss, sc4_state, sc4hiss, ROT0, "Qps","Hissing Quid (Qps) (Scorpion 4) (set 4)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4hissd ,sc4hiss, sc4_200_4r, sc4hiss, sc4_state, sc4hiss, ROT0, "Qps","Hissing Quid (Qps) (Scorpion 4) (set 5)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4hisse ,sc4hiss, sc4_200_4r, sc4hiss, sc4_state, sc4hiss, ROT0, "Qps","Hissing Quid (Qps) (Scorpion 4) (set 6)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4hissf ,sc4hiss, sc4_200_4r, sc4hiss, sc4_state, sc4hiss, ROT0, "Qps","Hissing Quid (Qps) (Scorpion 4) (set 7)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4hissg ,sc4hiss, sc4_200_4r, sc4hiss, sc4_state, sc4hiss, ROT0, "Qps","Hissing Quid (Qps) (Scorpion 4) (set 8)", MACHINE_FLAGS, layout_bfm_sc4 )
@@ -37389,8 +37391,8 @@ INPUT_PORTS_START( sc4hotrd ) // this structure is generated
INPUT_PORTS_END
// PR1733 AWP HOT ROD SCORP4 PR1713 HOT ROD SOUNDS11 HOT ROD S.SITE
-GAMEL( 200?, sc4hotrd ,0, sc4_4reel, sc4hotrd, sc4_state, sc4hotrd, ROT0, "BFM","Hot Rod (Bellfruit) (Scorpion 4) (set 1)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4hotrda ,sc4hotrd, sc4_4reel, sc4hotrd, sc4_state, sc4hotrd, ROT0, "BFM","Hot Rod (Bellfruit) (Scorpion 4) (set 2)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4hotrd ,0, sc4_4reel, sc4hotrd, sc4_state, sc4hotrd, ROT0, "BFM","Hot Rod (Bellfruit) (Scorpion 4) (set 1)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4hotrda ,sc4hotrd, sc4_4reel, sc4hotrd, sc4_state, sc4hotrd, ROT0, "BFM","Hot Rod (Bellfruit) (Scorpion 4) (set 2)", MACHINE_FLAGS, layout_bfm_sc4 )
DRIVER_INIT_MEMBER(sc4_state,sc4hotsh)
@@ -37467,8 +37469,8 @@ INPUT_PORTS_START( sc4hotsh ) // this structure is generated
INPUT_PORTS_END
// PR3231 AWP HOT SHOT SCORP4 PR3211 HOT SHOT SOUNDS11 HOT SHOT S.SITE
-GAMEL( 200?, sc4hotsh ,0, sc4, sc4hotsh, sc4_state, sc4hotsh, ROT0, "BFM","Hot Shot (Bellfruit) (Scorpion 4) (set 1)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4hotsha ,sc4hotsh, sc4, sc4hotsh, sc4_state, sc4hotsh, ROT0, "BFM","Hot Shot (Bellfruit) (Scorpion 4) (set 2)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4hotsh ,0, sc4, sc4hotsh, sc4_state, sc4hotsh, ROT0, "BFM","Hot Shot (Bellfruit) (Scorpion 4) (set 1)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4hotsha ,sc4hotsh, sc4, sc4hotsh, sc4_state, sc4hotsh, ROT0, "BFM","Hot Shot (Bellfruit) (Scorpion 4) (set 2)", MACHINE_FLAGS, layout_bfm_sc4 )
DRIVER_INIT_MEMBER(sc4_state,sc4hotwd)
@@ -37538,14 +37540,14 @@ INPUT_PORTS_START( sc4hotwd ) // this structure is generated
INPUT_PORTS_END
// PR1311 HOT WAD PR1311 HOT WAD SOUNDS11
-GAMEL( 200?, sc4hotwd ,0, sc4_4reel_alt, sc4hotwd, sc4_state, sc4hotwd, ROT0, "BFM","Hot Wad (Bellfruit) (Scorpion 4) (set 1)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4hotwda ,sc4hotwd, sc4_4reel_alt, sc4hotwd, sc4_state, sc4hotwd, ROT0, "BFM","Hot Wad (Bellfruit) (Scorpion 4) (set 2)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4hotwd ,0, sc4_4reel_alt, sc4hotwd, sc4_state, sc4hotwd, ROT0, "BFM","Hot Wad (Bellfruit) (Scorpion 4) (set 1)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4hotwda ,sc4hotwd, sc4_4reel_alt, sc4hotwd, sc4_state, sc4hotwd, ROT0, "BFM","Hot Wad (Bellfruit) (Scorpion 4) (set 2)", MACHINE_FLAGS, layout_bfm_sc4 )
// PAY UNIT ERR 17
// PR1311 HOT WAD PR1311 HOT WAD SOUNDS11 2 HOT WAD S.SITE
-GAMEL( 200?, sc4hotwdb ,sc4hotwd, sc4_4reel_alt, sc4hotwd, sc4_state, sc4hotwd, ROT0, "BFM","Hot Wad (Bellfruit) (Scorpion 4) (set 3)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4hotwdc ,sc4hotwd, sc4_4reel_alt, sc4hotwd, sc4_state, sc4hotwd, ROT0, "BFM","Hot Wad (Bellfruit) (Scorpion 4) (set 4)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4hotwdd ,sc4hotwd, sc4_4reel_alt, sc4hotwd, sc4_state, sc4hotwd, ROT0, "BFM","Hot Wad (Bellfruit) (Scorpion 4) (set 5)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4hotwde ,sc4hotwd, sc4_4reel_alt, sc4hotwd, sc4_state, sc4hotwd, ROT0, "BFM","Hot Wad (Bellfruit) (Scorpion 4) (set 6)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4hotwdb ,sc4hotwd, sc4_4reel_alt, sc4hotwd, sc4_state, sc4hotwd, ROT0, "BFM","Hot Wad (Bellfruit) (Scorpion 4) (set 3)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4hotwdc ,sc4hotwd, sc4_4reel_alt, sc4hotwd, sc4_state, sc4hotwd, ROT0, "BFM","Hot Wad (Bellfruit) (Scorpion 4) (set 4)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4hotwdd ,sc4hotwd, sc4_4reel_alt, sc4hotwd, sc4_state, sc4hotwd, ROT0, "BFM","Hot Wad (Bellfruit) (Scorpion 4) (set 5)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4hotwde ,sc4hotwd, sc4_4reel_alt, sc4hotwd, sc4_state, sc4hotwd, ROT0, "BFM","Hot Wad (Bellfruit) (Scorpion 4) (set 6)", MACHINE_FLAGS, layout_bfm_sc4 )
DRIVER_INIT_MEMBER(sc4_state,sc4celeb)
@@ -37615,11 +37617,11 @@ INPUT_PORTS_START( sc4celeb ) // this structure is generated
INPUT_PORTS_END
// PR1603 AWP IM A CELEBRITY PR1603 IM A CELEB SOUNDS11 IM A CELEBRITY S.SITE
-GAMEL( 200?, sc4celeb ,0, sc4_4reel_alt, sc4celeb, sc4_state, sc4celeb, ROT0, "BFM","I'm A Celebrity (Bellfruit) (Scorpion 4) (set 1)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4celeba ,sc4celeb, sc4_4reel_alt, sc4celeb, sc4_state, sc4celeb, ROT0, "BFM","I'm A Celebrity (Bellfruit) (Scorpion 4) (set 2)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4celebb ,sc4celeb, sc4_4reel_alt, sc4celeb, sc4_state, sc4celeb, ROT0, "BFM","I'm A Celebrity (Bellfruit) (Scorpion 4) (set 3)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4celebc ,sc4celeb, sc4_4reel_alt, sc4celeb, sc4_state, sc4celeb, ROT0, "BFM","I'm A Celebrity (Bellfruit) (Scorpion 4) (set 4)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4celebd ,sc4celeb, sc4_4reel_alt, sc4celeb, sc4_state, sc4celeb, ROT0, "BFM","I'm A Celebrity (Bellfruit) (Scorpion 4) (set 5)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4celeb ,0, sc4_4reel_alt, sc4celeb, sc4_state, sc4celeb, ROT0, "BFM","I'm A Celebrity (Bellfruit) (Scorpion 4) (set 1)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4celeba ,sc4celeb, sc4_4reel_alt, sc4celeb, sc4_state, sc4celeb, ROT0, "BFM","I'm A Celebrity (Bellfruit) (Scorpion 4) (set 2)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4celebb ,sc4celeb, sc4_4reel_alt, sc4celeb, sc4_state, sc4celeb, ROT0, "BFM","I'm A Celebrity (Bellfruit) (Scorpion 4) (set 3)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4celebc ,sc4celeb, sc4_4reel_alt, sc4celeb, sc4_state, sc4celeb, ROT0, "BFM","I'm A Celebrity (Bellfruit) (Scorpion 4) (set 4)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4celebd ,sc4celeb, sc4_4reel_alt, sc4celeb, sc4_state, sc4celeb, ROT0, "BFM","I'm A Celebrity (Bellfruit) (Scorpion 4) (set 5)", MACHINE_FLAGS, layout_bfm_sc4 )
DRIVER_INIT_MEMBER(sc4_state,sc4inspn)
@@ -37672,8 +37674,8 @@ INPUT_PORTS_START( sc4inspn ) // this structure is generated
INPUT_PORTS_END
// PR2555 INNER SPIN V013 INNERSPINSND INNER SPIN
-GAMEL( 200?, sc4inspn ,0, sc4_200_5ra, sc4inspn, sc4_state, sc4inspn, ROT0, "Mazooma","Inner Spin (Mazooma) (Scorpion 4) (set 1)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4inspna ,sc4inspn, sc4_200_5ra, sc4inspn, sc4_state, sc4inspn, ROT0, "Mazooma","Inner Spin (Mazooma) (Scorpion 4) (set 2)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4inspn ,0, sc4_200_5ra, sc4inspn, sc4_state, sc4inspn, ROT0, "Mazooma","Inner Spin (Mazooma) (Scorpion 4) (set 1)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4inspna ,sc4inspn, sc4_200_5ra, sc4inspn, sc4_state, sc4inspn, ROT0, "Mazooma","Inner Spin (Mazooma) (Scorpion 4) (set 2)", MACHINE_FLAGS, layout_bfm_sc4 )
@@ -37747,20 +37749,20 @@ INPUT_PORTS_END
// PR2366 AWP THE ITALIAN JOB S4 PR2366 THE ITALIAN JOB SOUNDS11 ITALIAN JOB S.SITE
-GAMEL( 200?, sc4ijob ,0, sc4_5reel_alt, sc4ijob, sc4_state, sc4ijob, ROT0, "Mazooma","Italian Job (Mazooma) (Scorpion 4) (set 1)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4ijoba ,sc4ijob, sc4_5reel_alt, sc4ijob, sc4_state, sc4ijob, ROT0, "Mazooma","Italian Job (Mazooma) (Scorpion 4) (set 2)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4ijobb ,sc4ijob, sc4_5reel_alt, sc4ijob, sc4_state, sc4ijob, ROT0, "Mazooma","Italian Job (Mazooma) (Scorpion 4) (set 3)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4ijobc ,sc4ijob, sc4_5reel_alt, sc4ijob, sc4_state, sc4ijob, ROT0, "Mazooma","Italian Job (Mazooma) (Scorpion 4) (set 4)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4ijobd ,sc4ijob, sc4_5reel_alt, sc4ijob, sc4_state, sc4ijob, ROT0, "Mazooma","Italian Job (Mazooma) (Scorpion 4) (set 5)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4ijobe ,sc4ijob, sc4_5reel_alt, sc4ijob, sc4_state, sc4ijob, ROT0, "Mazooma","Italian Job (Mazooma) (Scorpion 4) (set 6)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4ijobf ,sc4ijob, sc4_5reel_alt, sc4ijob, sc4_state, sc4ijob, ROT0, "Mazooma","Italian Job (Mazooma) (Scorpion 4) (set 7)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4ijobg ,sc4ijob, sc4_5reel_alt, sc4ijob, sc4_state, sc4ijob, ROT0, "Mazooma","Italian Job (Mazooma) (Scorpion 4) (set 8)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4ijobh ,sc4ijob, sc4_5reel_alt, sc4ijob, sc4_state, sc4ijob, ROT0, "Mazooma","Italian Job (Mazooma) (Scorpion 4) (set 9)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4ijobi ,sc4ijob, sc4_5reel_alt, sc4ijob, sc4_state, sc4ijob, ROT0, "Mazooma","Italian Job (Mazooma) (Scorpion 4) (set 10)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4ijobj ,sc4ijob, sc4_5reel_alt, sc4ijob, sc4_state, sc4ijob, ROT0, "Mazooma","Italian Job (Mazooma) (Scorpion 4) (set 11)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4ijobk ,sc4ijob, sc4_5reel_alt, sc4ijob, sc4_state, sc4ijob, ROT0, "Mazooma","Italian Job (Mazooma) (Scorpion 4) (set 12)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4ijobl ,sc4ijob, sc4_5reel_alt, sc4ijob, sc4_state, sc4ijob, ROT0, "Mazooma","Italian Job (Mazooma) (Scorpion 4) (set 13)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4ijobm ,sc4ijob, sc4_5reel_alt, sc4ijob, sc4_state, sc4ijob, ROT0, "Mazooma","Italian Job (Mazooma) (Scorpion 4) (set 14)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4ijob ,0, sc4_5reel_alt, sc4ijob, sc4_state, sc4ijob, ROT0, "Mazooma","Italian Job (Mazooma) (Scorpion 4) (set 1)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4ijoba ,sc4ijob, sc4_5reel_alt, sc4ijob, sc4_state, sc4ijob, ROT0, "Mazooma","Italian Job (Mazooma) (Scorpion 4) (set 2)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4ijobb ,sc4ijob, sc4_5reel_alt, sc4ijob, sc4_state, sc4ijob, ROT0, "Mazooma","Italian Job (Mazooma) (Scorpion 4) (set 3)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4ijobc ,sc4ijob, sc4_5reel_alt, sc4ijob, sc4_state, sc4ijob, ROT0, "Mazooma","Italian Job (Mazooma) (Scorpion 4) (set 4)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4ijobd ,sc4ijob, sc4_5reel_alt, sc4ijob, sc4_state, sc4ijob, ROT0, "Mazooma","Italian Job (Mazooma) (Scorpion 4) (set 5)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4ijobe ,sc4ijob, sc4_5reel_alt, sc4ijob, sc4_state, sc4ijob, ROT0, "Mazooma","Italian Job (Mazooma) (Scorpion 4) (set 6)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4ijobf ,sc4ijob, sc4_5reel_alt, sc4ijob, sc4_state, sc4ijob, ROT0, "Mazooma","Italian Job (Mazooma) (Scorpion 4) (set 7)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4ijobg ,sc4ijob, sc4_5reel_alt, sc4ijob, sc4_state, sc4ijob, ROT0, "Mazooma","Italian Job (Mazooma) (Scorpion 4) (set 8)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4ijobh ,sc4ijob, sc4_5reel_alt, sc4ijob, sc4_state, sc4ijob, ROT0, "Mazooma","Italian Job (Mazooma) (Scorpion 4) (set 9)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4ijobi ,sc4ijob, sc4_5reel_alt, sc4ijob, sc4_state, sc4ijob, ROT0, "Mazooma","Italian Job (Mazooma) (Scorpion 4) (set 10)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4ijobj ,sc4ijob, sc4_5reel_alt, sc4ijob, sc4_state, sc4ijob, ROT0, "Mazooma","Italian Job (Mazooma) (Scorpion 4) (set 11)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4ijobk ,sc4ijob, sc4_5reel_alt, sc4ijob, sc4_state, sc4ijob, ROT0, "Mazooma","Italian Job (Mazooma) (Scorpion 4) (set 12)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4ijobl ,sc4ijob, sc4_5reel_alt, sc4ijob, sc4_state, sc4ijob, ROT0, "Mazooma","Italian Job (Mazooma) (Scorpion 4) (set 13)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4ijobm ,sc4ijob, sc4_5reel_alt, sc4ijob, sc4_state, sc4ijob, ROT0, "Mazooma","Italian Job (Mazooma) (Scorpion 4) (set 14)", MACHINE_FLAGS, layout_bfm_sc4 )
DRIVER_INIT_MEMBER(sc4_state,sc4ldvl)
@@ -37831,10 +37833,10 @@ INPUT_PORTS_START( sc4ldvl ) // this structure is generated
INPUT_PORTS_END
// PR2376 LITTLE DEVIL LDEVIL SOUNDS LITTLE DEVIL
-GAMEL( 200?, sc4ldvl ,0, sc4_4reel_alt, sc4ldvl, sc4_state, sc4ldvl, ROT0, "Mazooma","Little Devil (Mazooma) (Scorpion 4) (set 1)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4ldvla ,sc4ldvl, sc4_4reel_alt, sc4ldvl, sc4_state, sc4ldvl, ROT0, "Mazooma","Little Devil (Mazooma) (Scorpion 4) (set 2)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4ldvlb ,sc4ldvl, sc4_4reel_alt, sc4ldvl, sc4_state, sc4ldvl, ROT0, "Mazooma","Little Devil (Mazooma) (Scorpion 4) (set 3)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4ldvlc ,sc4ldvl, sc4_4reel_alt, sc4ldvl, sc4_state, sc4ldvl, ROT0, "Mazooma","Little Devil (Mazooma) (Scorpion 4) (set 4)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4ldvl ,0, sc4_4reel_alt, sc4ldvl, sc4_state, sc4ldvl, ROT0, "Mazooma","Little Devil (Mazooma) (Scorpion 4) (set 1)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4ldvla ,sc4ldvl, sc4_4reel_alt, sc4ldvl, sc4_state, sc4ldvl, ROT0, "Mazooma","Little Devil (Mazooma) (Scorpion 4) (set 2)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4ldvlb ,sc4ldvl, sc4_4reel_alt, sc4ldvl, sc4_state, sc4ldvl, ROT0, "Mazooma","Little Devil (Mazooma) (Scorpion 4) (set 3)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4ldvlc ,sc4ldvl, sc4_4reel_alt, sc4ldvl, sc4_state, sc4ldvl, ROT0, "Mazooma","Little Devil (Mazooma) (Scorpion 4) (set 4)", MACHINE_FLAGS, layout_bfm_sc4 )
@@ -37903,13 +37905,13 @@ INPUT_PORTS_START( sc4lotrr ) // this structure is generated
INPUT_PORTS_END
// PR1427 AWP RETURN OF THE KING PR1413 RETURN OF THE SOUNDS11 RETURN OF KING S.SITE
-GAMEL( 200?, sc4lotrr ,0, sc4_4reel_alt, sc4lotrr, sc4_state, sc4lotrr, ROT0, "BFM","Lord Of The Rings - Return Of The King (Bellfruit) (Scorpion 4) (set 1)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4lotrra ,sc4lotrr, sc4_4reel_alt, sc4lotrr, sc4_state, sc4lotrr, ROT0, "BFM","Lord Of The Rings - Return Of The King (Bellfruit) (Scorpion 4) (set 2)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4lotrrb ,sc4lotrr, sc4_4reel_alt, sc4lotrr, sc4_state, sc4lotrr, ROT0, "BFM","Lord Of The Rings - Return Of The King (Bellfruit) (Scorpion 4) (set 3)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4lotrrc ,sc4lotrr, sc4_4reel_alt, sc4lotrr, sc4_state, sc4lotrr, ROT0, "BFM","Lord Of The Rings - Return Of The King (Bellfruit) (Scorpion 4) (set 4)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4lotrr ,0, sc4_4reel_alt, sc4lotrr, sc4_state, sc4lotrr, ROT0, "BFM","Lord Of The Rings - Return Of The King (Bellfruit) (Scorpion 4) (set 1)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4lotrra ,sc4lotrr, sc4_4reel_alt, sc4lotrr, sc4_state, sc4lotrr, ROT0, "BFM","Lord Of The Rings - Return Of The King (Bellfruit) (Scorpion 4) (set 2)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4lotrrb ,sc4lotrr, sc4_4reel_alt, sc4lotrr, sc4_state, sc4lotrr, ROT0, "BFM","Lord Of The Rings - Return Of The King (Bellfruit) (Scorpion 4) (set 3)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4lotrrc ,sc4lotrr, sc4_4reel_alt, sc4lotrr, sc4_state, sc4lotrr, ROT0, "BFM","Lord Of The Rings - Return Of The King (Bellfruit) (Scorpion 4) (set 4)", MACHINE_FLAGS, layout_bfm_sc4 )
// PAY UNIT ERR 17
-GAMEL( 200?, sc4lotrrd ,sc4lotrr, sc4_4reel_alt, sc4lotrr, sc4_state, sc4lotrr, ROT0, "BFM","Lord Of The Rings - Return Of The King (Bellfruit) (Scorpion 4) (set 5)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4lotrre ,sc4lotrr, sc4_4reel_alt, sc4lotrr, sc4_state, sc4lotrr, ROT0, "BFM","Lord Of The Rings - Return Of The King (Bellfruit) (Scorpion 4) (set 6)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4lotrrd ,sc4lotrr, sc4_4reel_alt, sc4lotrr, sc4_state, sc4lotrr, ROT0, "BFM","Lord Of The Rings - Return Of The King (Bellfruit) (Scorpion 4) (set 5)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4lotrre ,sc4lotrr, sc4_4reel_alt, sc4lotrr, sc4_state, sc4lotrr, ROT0, "BFM","Lord Of The Rings - Return Of The King (Bellfruit) (Scorpion 4) (set 6)", MACHINE_FLAGS, layout_bfm_sc4 )
DRIVER_INIT_MEMBER(sc4_state,sc4manic)
{
@@ -37979,14 +37981,14 @@ INPUT_PORTS_START( sc4manic ) // this structure is generated
INPUT_PORTS_END
// PR3034 AWP MANIC MINER SCORP4 PR3004 MANIC MINER SOUNDS11 MANIC MINER S.SITE
-GAMEL( 200?, sc4manic ,0, sc4_200_5ra, sc4manic, sc4_state, sc4manic, ROT0, "BFM","Manic Miner (Bellfruit) (Scorpion 4) (set 1)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4manica ,sc4manic, sc4_200_5ra, sc4manic, sc4_state, sc4manic, ROT0, "BFM","Manic Miner (Bellfruit) (Scorpion 4) (set 2)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4manicb ,sc4manic, sc4_200_5ra, sc4manic, sc4_state, sc4manic, ROT0, "BFM","Manic Miner (Bellfruit) (Scorpion 4) (set 5)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4manicc ,sc4manic, sc4_200_5ra, sc4manic, sc4_state, sc4manic, ROT0, "BFM","Manic Miner (Bellfruit) (Scorpion 4) (set 6)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4manicd ,sc4manic, sc4_200_5ra, sc4manic, sc4_state, sc4manic, ROT0, "BFM","Manic Miner (Bellfruit) (Scorpion 4) (set 7)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4manice ,sc4manic, sc4_200_5ra, sc4manic, sc4_state, sc4manic, ROT0, "BFM","Manic Miner (Bellfruit) (Scorpion 4) (set 8)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4manicf ,sc4manic, sc4_200_5ra, sc4manic, sc4_state, sc4manic, ROT0, "BFM","Manic Miner (Bellfruit) (Scorpion 4) (set 9)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4manicg ,sc4manic, sc4_200_5ra, sc4manic, sc4_state, sc4manic, ROT0, "BFM","Manic Miner (Bellfruit) (Scorpion 4) (set 10)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4manic ,0, sc4_200_5ra, sc4manic, sc4_state, sc4manic, ROT0, "BFM","Manic Miner (Bellfruit) (Scorpion 4) (set 1)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4manica ,sc4manic, sc4_200_5ra, sc4manic, sc4_state, sc4manic, ROT0, "BFM","Manic Miner (Bellfruit) (Scorpion 4) (set 2)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4manicb ,sc4manic, sc4_200_5ra, sc4manic, sc4_state, sc4manic, ROT0, "BFM","Manic Miner (Bellfruit) (Scorpion 4) (set 5)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4manicc ,sc4manic, sc4_200_5ra, sc4manic, sc4_state, sc4manic, ROT0, "BFM","Manic Miner (Bellfruit) (Scorpion 4) (set 6)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4manicd ,sc4manic, sc4_200_5ra, sc4manic, sc4_state, sc4manic, ROT0, "BFM","Manic Miner (Bellfruit) (Scorpion 4) (set 7)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4manice ,sc4manic, sc4_200_5ra, sc4manic, sc4_state, sc4manic, ROT0, "BFM","Manic Miner (Bellfruit) (Scorpion 4) (set 8)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4manicf ,sc4manic, sc4_200_5ra, sc4manic, sc4_state, sc4manic, ROT0, "BFM","Manic Miner (Bellfruit) (Scorpion 4) (set 9)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4manicg ,sc4manic, sc4_200_5ra, sc4manic, sc4_state, sc4manic, ROT0, "BFM","Manic Miner (Bellfruit) (Scorpion 4) (set 10)", MACHINE_FLAGS, layout_bfm_sc4 )
DRIVER_INIT_MEMBER(sc4_state,sc4mmm)
{
@@ -38057,14 +38059,14 @@ INPUT_PORTS_END
// PR2282 MENTALMONEYMONSTERS MMMO SOUNDS MONEY MONSTERS
-GAMEL( 200?, sc4mmm ,0, sc4_4reel_alt, sc4mmm, sc4_state, sc4mmm, ROT0, "Mazooma","Mental Money Monsters (Mazooma) (Scorpion 4) (set 1)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4mmma ,sc4mmm, sc4_4reel_alt, sc4mmm, sc4_state, sc4mmm, ROT0, "Mazooma","Mental Money Monsters (Mazooma) (Scorpion 4) (set 2)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4mmmb ,sc4mmm, sc4_4reel_alt, sc4mmm, sc4_state, sc4mmm, ROT0, "Mazooma","Mental Money Monsters (Mazooma) (Scorpion 4) (set 3)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4mmmc ,sc4mmm, sc4_4reel_alt, sc4mmm, sc4_state, sc4mmm, ROT0, "Mazooma","Mental Money Monsters (Mazooma) (Scorpion 4) (set 4)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4mmmd ,sc4mmm, sc4_4reel_alt, sc4mmm, sc4_state, sc4mmm, ROT0, "Mazooma","Mental Money Monsters (Mazooma) (Scorpion 4) (set 5)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4mmme ,sc4mmm, sc4_4reel_alt, sc4mmm, sc4_state, sc4mmm, ROT0, "Mazooma","Mental Money Monsters (Mazooma) (Scorpion 4) (set 6)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4mmmf ,sc4mmm, sc4_4reel_alt, sc4mmm, sc4_state, sc4mmm, ROT0, "Mazooma","Mental Money Monsters (Mazooma) (Scorpion 4) (set 7)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4mmmg ,sc4mmm, sc4_4reel_alt, sc4mmm, sc4_state, sc4mmm, ROT0, "Mazooma","Mental Money Monsters (Mazooma) (Scorpion 4) (set 8)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4mmm ,0, sc4_4reel_alt, sc4mmm, sc4_state, sc4mmm, ROT0, "Mazooma","Mental Money Monsters (Mazooma) (Scorpion 4) (set 1)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4mmma ,sc4mmm, sc4_4reel_alt, sc4mmm, sc4_state, sc4mmm, ROT0, "Mazooma","Mental Money Monsters (Mazooma) (Scorpion 4) (set 2)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4mmmb ,sc4mmm, sc4_4reel_alt, sc4mmm, sc4_state, sc4mmm, ROT0, "Mazooma","Mental Money Monsters (Mazooma) (Scorpion 4) (set 3)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4mmmc ,sc4mmm, sc4_4reel_alt, sc4mmm, sc4_state, sc4mmm, ROT0, "Mazooma","Mental Money Monsters (Mazooma) (Scorpion 4) (set 4)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4mmmd ,sc4mmm, sc4_4reel_alt, sc4mmm, sc4_state, sc4mmm, ROT0, "Mazooma","Mental Money Monsters (Mazooma) (Scorpion 4) (set 5)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4mmme ,sc4mmm, sc4_4reel_alt, sc4mmm, sc4_state, sc4mmm, ROT0, "Mazooma","Mental Money Monsters (Mazooma) (Scorpion 4) (set 6)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4mmmf ,sc4mmm, sc4_4reel_alt, sc4mmm, sc4_state, sc4mmm, ROT0, "Mazooma","Mental Money Monsters (Mazooma) (Scorpion 4) (set 7)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4mmmg ,sc4mmm, sc4_4reel_alt, sc4mmm, sc4_state, sc4mmm, ROT0, "Mazooma","Mental Money Monsters (Mazooma) (Scorpion 4) (set 8)", MACHINE_FLAGS, layout_bfm_sc4 )
DRIVER_INIT_MEMBER(sc4_state,sc4mmad)
{
@@ -38127,15 +38129,15 @@ INPUT_PORTS_START( sc4mmad ) // this structure is generated
INPUT_PORTS_END
// PR2533 MONEY MADNESS MONM SOUNDS MONEY MADNESS
-GAMEL( 200?, sc4mmad ,0, sc4_200_5rc, sc4mmad, sc4_state, sc4mmad, ROT0, "Mazooma","Money Madness (PR2533) (Mazooma) (Scorpion 4) (set 1)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4mmada ,sc4mmad, sc4_200_5rc, sc4mmad, sc4_state, sc4mmad, ROT0, "Mazooma","Money Madness (PR2533) (Mazooma) (Scorpion 4) (set 2)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4mmadb ,sc4mmad, sc4_200_5rc, sc4mmad, sc4_state, sc4mmad, ROT0, "Mazooma","Money Madness (PR2533) (Mazooma) (Scorpion 4) (set 3)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4mmadc ,sc4mmad, sc4_200_5rc, sc4mmad, sc4_state, sc4mmad, ROT0, "Mazooma","Money Madness (PR2533) (Mazooma) (Scorpion 4) (set 4)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4mmad ,0, sc4_200_5rc, sc4mmad, sc4_state, sc4mmad, ROT0, "Mazooma","Money Madness (PR2533) (Mazooma) (Scorpion 4) (set 1)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4mmada ,sc4mmad, sc4_200_5rc, sc4mmad, sc4_state, sc4mmad, ROT0, "Mazooma","Money Madness (PR2533) (Mazooma) (Scorpion 4) (set 2)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4mmadb ,sc4mmad, sc4_200_5rc, sc4mmad, sc4_state, sc4mmad, ROT0, "Mazooma","Money Madness (PR2533) (Mazooma) (Scorpion 4) (set 3)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4mmadc ,sc4mmad, sc4_200_5rc, sc4mmad, sc4_state, sc4mmad, ROT0, "Mazooma","Money Madness (PR2533) (Mazooma) (Scorpion 4) (set 4)", MACHINE_FLAGS, layout_bfm_sc4 )
// PR0000 MONEY MADNESS MONM SOUNDS MONEY MADNESS (did Mazooma mess up this release? it has an invalid project code of PR0000, and 3 of the sets are missing their other half)
-GAMEL( 200?, sc4mmadd ,sc4mmad, sc4_200_5rc, sc4mmad, sc4_state, sc4mmad, ROT0, "Mazooma","Money Madness (PR0000) (Mazooma) (Scorpion 4) (set 5)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4mmade ,sc4mmad, sc4_200_5rc, sc4mmad, sc4_state, sc4mmad, ROT0, "Mazooma","Money Madness (PR0000) (Mazooma) (Scorpion 4) (set 6)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 ) // incomplete pairing
-GAMEL( 200?, sc4mmadf ,sc4mmad, sc4_200_5rc, sc4mmad, sc4_state, sc4mmad, ROT0, "Mazooma","Money Madness (PR0000) (Mazooma) (Scorpion 4) (set 7)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 ) // incomplete pairing
-GAMEL( 200?, sc4mmadg ,sc4mmad, sc4_200_5rc, sc4mmad, sc4_state, sc4mmad, ROT0, "Mazooma","Money Madness (PR0000) (Mazooma) (Scorpion 4) (set 8)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 ) // incomplete pairing
+GAMEL( 200?, sc4mmadd ,sc4mmad, sc4_200_5rc, sc4mmad, sc4_state, sc4mmad, ROT0, "Mazooma","Money Madness (PR0000) (Mazooma) (Scorpion 4) (set 5)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4mmade ,sc4mmad, sc4_200_5rc, sc4mmad, sc4_state, sc4mmad, ROT0, "Mazooma","Money Madness (PR0000) (Mazooma) (Scorpion 4) (set 6)", MACHINE_FLAGS, layout_bfm_sc4 ) // incomplete pairing
+GAMEL( 200?, sc4mmadf ,sc4mmad, sc4_200_5rc, sc4mmad, sc4_state, sc4mmad, ROT0, "Mazooma","Money Madness (PR0000) (Mazooma) (Scorpion 4) (set 7)", MACHINE_FLAGS, layout_bfm_sc4 ) // incomplete pairing
+GAMEL( 200?, sc4mmadg ,sc4mmad, sc4_200_5rc, sc4mmad, sc4_state, sc4mmad, ROT0, "Mazooma","Money Madness (PR0000) (Mazooma) (Scorpion 4) (set 8)", MACHINE_FLAGS, layout_bfm_sc4 ) // incomplete pairing
@@ -38209,8 +38211,8 @@ INPUT_PORTS_START( sc4mdm ) // this structure is generated
INPUT_PORTS_END
// PR3333 AWP MONOPOLY DOUBLE MONEY S4 PR3308 MPOLY D MONEY SOUNDS11 DOUBLE MONEY S.SITE
-GAMEL( 200?, sc4mdm ,0, sc4_5reel_alt, sc4mdm, sc4_state, sc4mdm, ROT0, "BFM","Monopoly Double Money (Bellfruit) (Scorpion 4) (set 1)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4mdma ,sc4mdm, sc4_5reel_alt, sc4mdm, sc4_state, sc4mdm, ROT0, "BFM","Monopoly Double Money (Bellfruit) (Scorpion 4) (set 2)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4mdm ,0, sc4_5reel_alt, sc4mdm, sc4_state, sc4mdm, ROT0, "BFM","Monopoly Double Money (Bellfruit) (Scorpion 4) (set 1)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4mdma ,sc4mdm, sc4_5reel_alt, sc4mdm, sc4_state, sc4mdm, ROT0, "BFM","Monopoly Double Money (Bellfruit) (Scorpion 4) (set 2)", MACHINE_FLAGS, layout_bfm_sc4 )
DRIVER_INIT_MEMBER(sc4_state,sc4mhn)
{
@@ -38285,8 +38287,8 @@ INPUT_PORTS_START( sc4mhn ) // this structure is generated
INPUT_PORTS_END
// PR2380 MONOPOLY HERE AND NOW MR2R SOUNDS NITH
-GAMEL( 200?, sc4mhn ,0, sc4_200_4r, sc4mhn, sc4_state, sc4mhn, ROT0, "Mazooma","Monopoly Here & Now (Mazooma) (Scorpion 4) (set 1)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4mhna ,sc4mhn, sc4_200_4r, sc4mhn, sc4_state, sc4mhn, ROT0, "Mazooma","Monopoly Here & Now (Mazooma) (Scorpion 4) (set 2)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4mhn ,0, sc4_200_4r, sc4mhn, sc4_state, sc4mhn, ROT0, "Mazooma","Monopoly Here & Now (Mazooma) (Scorpion 4) (set 1)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4mhna ,sc4mhn, sc4_200_4r, sc4mhn, sc4_state, sc4mhn, ROT0, "Mazooma","Monopoly Here & Now (Mazooma) (Scorpion 4) (set 2)", MACHINE_FLAGS, layout_bfm_sc4 )
DRIVER_INIT_MEMBER(sc4_state,sc4mhp)
@@ -38358,22 +38360,22 @@ INPUT_PORTS_START( sc4mhp ) // this structure is generated
INPUT_PORTS_END
// PR2345 AWP MONOPOLY HOT PROPERTY S4 PR2345 HOT PROPERTY SOUNDS11 HOT PROPERTY S.SITE
-GAMEL( 200?, sc4mhp ,0, sc4_5reel_alt, sc4mhp, sc4_state, sc4mhp, ROT0, "BFM","Monopoly Hot Property (Bellfruit) (Scorpion 4) (set 1)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 ) // 471
-GAMEL( 200?, sc4mhpa ,sc4mhp, sc4_5reel_alt, sc4mhp, sc4_state, sc4mhp, ROT0, "BFM","Monopoly Hot Property (Bellfruit) (Scorpion 4) (set 2)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 ) // 472
-GAMEL( 200?, sc4mhpb ,sc4mhp, sc4_5reel_alt, sc4mhp, sc4_state, sc4mhp, ROT0, "BFM","Monopoly Hot Property (Bellfruit) (Scorpion 4) (set 3)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 ) // 271
-GAMEL( 200?, sc4mhpc ,sc4mhp, sc4_5reel_alt, sc4mhp, sc4_state, sc4mhp, ROT0, "BFM","Monopoly Hot Property (Bellfruit) (Scorpion 4) (set 4)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 ) // 471
-GAMEL( 200?, sc4mhpd ,sc4mhp, sc4_5reel_alt, sc4mhp, sc4_state, sc4mhp, ROT0, "BFM","Monopoly Hot Property (Bellfruit) (Scorpion 4) (set 5)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 ) // 472
-GAMEL( 200?, sc4mhpe ,sc4mhp, sc4_5reel_alt, sc4mhp, sc4_state, sc4mhp, ROT0, "BFM","Monopoly Hot Property (Bellfruit) (Scorpion 4) (set 6)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 ) // 271
-GAMEL( 200?, sc4mhpf ,sc4mhp, sc4_5reel_alt, sc4mhp, sc4_state, sc4mhp, ROT0, "BFM","Monopoly Hot Property (Bellfruit) (Scorpion 4) (set 7)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 ) // 475
-GAMEL( 200?, sc4mhpg ,sc4mhp, sc4_5reel_alt, sc4mhp, sc4_state, sc4mhp, ROT0, "BFM","Monopoly Hot Property (Bellfruit) (Scorpion 4) (set 8)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 ) // 571
-GAMEL( 200?, sc4mhph ,sc4mhp, sc4_5reel_alt, sc4mhp, sc4_state, sc4mhp, ROT0, "BFM","Monopoly Hot Property (Bellfruit) (Scorpion 4) (set 9)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 ) // 572
-GAMEL( 200?, sc4mhpi ,sc4mhp, sc4_5reel_alt, sc4mhp, sc4_state, sc4mhp, ROT0, "BFM","Monopoly Hot Property (Bellfruit) (Scorpion 4) (set 10)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 ) // 475
-GAMEL( 200?, sc4mhpj ,sc4mhp, sc4_5reel_alt, sc4mhp, sc4_state, sc4mhp, ROT0, "BFM","Monopoly Hot Property (Bellfruit) (Scorpion 4) (set 11)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 ) // 571
-GAMEL( 200?, sc4mhpk ,sc4mhp, sc4_5reel_alt, sc4mhp, sc4_state, sc4mhp, ROT0, "BFM","Monopoly Hot Property (Bellfruit) (Scorpion 4) (set 12)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 ) // 572
-GAMEL( 200?, sc4mhpl ,sc4mhp, sc4_5reel_alt, sc4mhp, sc4_state, sc4mhp, ROT0, "BFM","Monopoly Hot Property (Bellfruit) (Scorpion 4) (set 13)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 ) // 411
-GAMEL( 200?, sc4mhpm ,sc4mhp, sc4_5reel_alt, sc4mhp, sc4_state, sc4mhp, ROT0, "BFM","Monopoly Hot Property (Bellfruit) (Scorpion 4) (set 14)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 ) // 272
-GAMEL( 200?, sc4mhpn ,sc4mhp, sc4_5reel_alt, sc4mhp, sc4_state, sc4mhp, ROT0, "BFM","Monopoly Hot Property (Bellfruit) (Scorpion 4) (set 15)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 ) // 272
-GAMEL( 200?, sc4mhpo ,sc4mhp, sc4_5reel_alt, sc4mhp, sc4_state, sc4mhp, ROT0, "BFM","Monopoly Hot Property (Bellfruit) (Scorpion 4) (set 16)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4mhp ,0, sc4_5reel_alt, sc4mhp, sc4_state, sc4mhp, ROT0, "BFM","Monopoly Hot Property (Bellfruit) (Scorpion 4) (set 1)", MACHINE_FLAGS, layout_bfm_sc4 ) // 471
+GAMEL( 200?, sc4mhpa ,sc4mhp, sc4_5reel_alt, sc4mhp, sc4_state, sc4mhp, ROT0, "BFM","Monopoly Hot Property (Bellfruit) (Scorpion 4) (set 2)", MACHINE_FLAGS, layout_bfm_sc4 ) // 472
+GAMEL( 200?, sc4mhpb ,sc4mhp, sc4_5reel_alt, sc4mhp, sc4_state, sc4mhp, ROT0, "BFM","Monopoly Hot Property (Bellfruit) (Scorpion 4) (set 3)", MACHINE_FLAGS, layout_bfm_sc4 ) // 271
+GAMEL( 200?, sc4mhpc ,sc4mhp, sc4_5reel_alt, sc4mhp, sc4_state, sc4mhp, ROT0, "BFM","Monopoly Hot Property (Bellfruit) (Scorpion 4) (set 4)", MACHINE_FLAGS, layout_bfm_sc4 ) // 471
+GAMEL( 200?, sc4mhpd ,sc4mhp, sc4_5reel_alt, sc4mhp, sc4_state, sc4mhp, ROT0, "BFM","Monopoly Hot Property (Bellfruit) (Scorpion 4) (set 5)", MACHINE_FLAGS, layout_bfm_sc4 ) // 472
+GAMEL( 200?, sc4mhpe ,sc4mhp, sc4_5reel_alt, sc4mhp, sc4_state, sc4mhp, ROT0, "BFM","Monopoly Hot Property (Bellfruit) (Scorpion 4) (set 6)", MACHINE_FLAGS, layout_bfm_sc4 ) // 271
+GAMEL( 200?, sc4mhpf ,sc4mhp, sc4_5reel_alt, sc4mhp, sc4_state, sc4mhp, ROT0, "BFM","Monopoly Hot Property (Bellfruit) (Scorpion 4) (set 7)", MACHINE_FLAGS, layout_bfm_sc4 ) // 475
+GAMEL( 200?, sc4mhpg ,sc4mhp, sc4_5reel_alt, sc4mhp, sc4_state, sc4mhp, ROT0, "BFM","Monopoly Hot Property (Bellfruit) (Scorpion 4) (set 8)", MACHINE_FLAGS, layout_bfm_sc4 ) // 571
+GAMEL( 200?, sc4mhph ,sc4mhp, sc4_5reel_alt, sc4mhp, sc4_state, sc4mhp, ROT0, "BFM","Monopoly Hot Property (Bellfruit) (Scorpion 4) (set 9)", MACHINE_FLAGS, layout_bfm_sc4 ) // 572
+GAMEL( 200?, sc4mhpi ,sc4mhp, sc4_5reel_alt, sc4mhp, sc4_state, sc4mhp, ROT0, "BFM","Monopoly Hot Property (Bellfruit) (Scorpion 4) (set 10)", MACHINE_FLAGS, layout_bfm_sc4 ) // 475
+GAMEL( 200?, sc4mhpj ,sc4mhp, sc4_5reel_alt, sc4mhp, sc4_state, sc4mhp, ROT0, "BFM","Monopoly Hot Property (Bellfruit) (Scorpion 4) (set 11)", MACHINE_FLAGS, layout_bfm_sc4 ) // 571
+GAMEL( 200?, sc4mhpk ,sc4mhp, sc4_5reel_alt, sc4mhp, sc4_state, sc4mhp, ROT0, "BFM","Monopoly Hot Property (Bellfruit) (Scorpion 4) (set 12)", MACHINE_FLAGS, layout_bfm_sc4 ) // 572
+GAMEL( 200?, sc4mhpl ,sc4mhp, sc4_5reel_alt, sc4mhp, sc4_state, sc4mhp, ROT0, "BFM","Monopoly Hot Property (Bellfruit) (Scorpion 4) (set 13)", MACHINE_FLAGS, layout_bfm_sc4 ) // 411
+GAMEL( 200?, sc4mhpm ,sc4mhp, sc4_5reel_alt, sc4mhp, sc4_state, sc4mhp, ROT0, "BFM","Monopoly Hot Property (Bellfruit) (Scorpion 4) (set 14)", MACHINE_FLAGS, layout_bfm_sc4 ) // 272
+GAMEL( 200?, sc4mhpn ,sc4mhp, sc4_5reel_alt, sc4mhp, sc4_state, sc4mhp, ROT0, "BFM","Monopoly Hot Property (Bellfruit) (Scorpion 4) (set 15)", MACHINE_FLAGS, layout_bfm_sc4 ) // 272
+GAMEL( 200?, sc4mhpo ,sc4mhp, sc4_5reel_alt, sc4mhp, sc4_state, sc4mhp, ROT0, "BFM","Monopoly Hot Property (Bellfruit) (Scorpion 4) (set 16)", MACHINE_FLAGS, layout_bfm_sc4 )
DRIVER_INIT_MEMBER(sc4_state,sc4mmb)
{
@@ -38440,8 +38442,8 @@ INPUT_PORTS_START( sc4mmb ) // this structure is generated
INPUT_PORTS_END
// PR1931 AWP MONOLOLY MONEY BAGS SCORP4 PR1911 MPOLY MONEYBAGS SOUNDS11 MONEYBAGS S.SITE
-GAMEL( 200?, sc4mmb ,0, sc4_4reel_alt, sc4mmb, sc4_state, sc4mmb, ROT0, "BFM","Monopoly Money Bags (Bellfruit) (Scorpion 4) (set 1)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4mmba ,sc4mmb, sc4_4reel_alt, sc4mmb, sc4_state, sc4mmb, ROT0, "BFM","Monopoly Money Bags (Bellfruit) (Scorpion 4) (set 2)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4mmb ,0, sc4_4reel_alt, sc4mmb, sc4_state, sc4mmb, ROT0, "BFM","Monopoly Money Bags (Bellfruit) (Scorpion 4) (set 1)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4mmba ,sc4mmb, sc4_4reel_alt, sc4mmb, sc4_state, sc4mmb, ROT0, "BFM","Monopoly Money Bags (Bellfruit) (Scorpion 4) (set 2)", MACHINE_FLAGS, layout_bfm_sc4 )
DRIVER_INIT_MEMBER(sc4_state,sc4mrh)
{
@@ -38506,12 +38508,12 @@ INPUT_PORTS_START( sc4mrh ) // this structure is generated
INPUT_PORTS_END
// PR2363 RED HOT MONOP MONOPOLY ARCADE MONO SOUNDS MONOPOLY
-GAMEL( 200?, sc4mrh ,0, sc4_3reel_200_48, sc4mrh, sc4_state, sc4mrh, ROT0, "Mazooma","Monopoly Red Hot (Mazooma) (Scorpion 4) (set 1)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4mrha ,sc4mrh, sc4_3reel_200_48, sc4mrh, sc4_state, sc4mrh, ROT0, "Mazooma","Monopoly Red Hot (Mazooma) (Scorpion 4) (set 2)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4mrhb ,sc4mrh, sc4_3reel_200_48, sc4mrh, sc4_state, sc4mrh, ROT0, "Mazooma","Monopoly Red Hot (Mazooma) (Scorpion 4) (set 3)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4mrhc ,sc4mrh, sc4_3reel_200_48, sc4mrh, sc4_state, sc4mrh, ROT0, "Mazooma","Monopoly Red Hot (Mazooma) (Scorpion 4) (set 4)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4mrhd ,sc4mrh, sc4_3reel_200_48, sc4mrh, sc4_state, sc4mrh, ROT0, "Mazooma","Monopoly Red Hot (Mazooma) (Scorpion 4) (set 5)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4mrhe ,sc4mrh, sc4_3reel_200_48, sc4mrh, sc4_state, sc4mrh, ROT0, "Mazooma","Monopoly Red Hot (Mazooma) (Scorpion 4) (set 6)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4mrh ,0, sc4_3reel_200_48, sc4mrh, sc4_state, sc4mrh, ROT0, "Mazooma","Monopoly Red Hot (Mazooma) (Scorpion 4) (set 1)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4mrha ,sc4mrh, sc4_3reel_200_48, sc4mrh, sc4_state, sc4mrh, ROT0, "Mazooma","Monopoly Red Hot (Mazooma) (Scorpion 4) (set 2)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4mrhb ,sc4mrh, sc4_3reel_200_48, sc4mrh, sc4_state, sc4mrh, ROT0, "Mazooma","Monopoly Red Hot (Mazooma) (Scorpion 4) (set 3)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4mrhc ,sc4mrh, sc4_3reel_200_48, sc4mrh, sc4_state, sc4mrh, ROT0, "Mazooma","Monopoly Red Hot (Mazooma) (Scorpion 4) (set 4)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4mrhd ,sc4mrh, sc4_3reel_200_48, sc4mrh, sc4_state, sc4mrh, ROT0, "Mazooma","Monopoly Red Hot (Mazooma) (Scorpion 4) (set 5)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4mrhe ,sc4mrh, sc4_3reel_200_48, sc4mrh, sc4_state, sc4mrh, ROT0, "Mazooma","Monopoly Red Hot (Mazooma) (Scorpion 4) (set 6)", MACHINE_FLAGS, layout_bfm_sc4 )
DRIVER_INIT_MEMBER(sc4_state,sc4mr2r)
@@ -38582,12 +38584,12 @@ INPUT_PORTS_START( sc4mr2r ) // this structure is generated
INPUT_PORTS_END
// PR2329 MONOPOLY ROAD TO RICHES MR2R SOUNDS ROAD TO RICHES
-GAMEL( 200?, sc4mr2r ,0, sc4_4reel_alt, sc4mr2r, sc4_state, sc4mr2r, ROT0, "Mazooma","Monopoly Road To Riches (Mazooma) (Scorpion 4) (set 1)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4mr2ra ,sc4mr2r, sc4_4reel_alt, sc4mr2r, sc4_state, sc4mr2r, ROT0, "Mazooma","Monopoly Road To Riches (Mazooma) (Scorpion 4) (set 2)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4mr2rb ,sc4mr2r, sc4_4reel_alt, sc4mr2r, sc4_state, sc4mr2r, ROT0, "Mazooma","Monopoly Road To Riches (Mazooma) (Scorpion 4) (set 3)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4mr2rc ,sc4mr2r, sc4_4reel_alt, sc4mr2r, sc4_state, sc4mr2r, ROT0, "Mazooma","Monopoly Road To Riches (Mazooma) (Scorpion 4) (set 4)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4mr2rd ,sc4mr2r, sc4_4reel_alt, sc4mr2r, sc4_state, sc4mr2r, ROT0, "Mazooma","Monopoly Road To Riches (Mazooma) (Scorpion 4) (set 5)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4mr2re ,sc4mr2r, sc4_4reel_alt, sc4mr2r, sc4_state, sc4mr2r, ROT0, "Mazooma","Monopoly Road To Riches (Mazooma) (Scorpion 4) (set 6)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4mr2r ,0, sc4_4reel_alt, sc4mr2r, sc4_state, sc4mr2r, ROT0, "Mazooma","Monopoly Road To Riches (Mazooma) (Scorpion 4) (set 1)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4mr2ra ,sc4mr2r, sc4_4reel_alt, sc4mr2r, sc4_state, sc4mr2r, ROT0, "Mazooma","Monopoly Road To Riches (Mazooma) (Scorpion 4) (set 2)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4mr2rb ,sc4mr2r, sc4_4reel_alt, sc4mr2r, sc4_state, sc4mr2r, ROT0, "Mazooma","Monopoly Road To Riches (Mazooma) (Scorpion 4) (set 3)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4mr2rc ,sc4mr2r, sc4_4reel_alt, sc4mr2r, sc4_state, sc4mr2r, ROT0, "Mazooma","Monopoly Road To Riches (Mazooma) (Scorpion 4) (set 4)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4mr2rd ,sc4mr2r, sc4_4reel_alt, sc4mr2r, sc4_state, sc4mr2r, ROT0, "Mazooma","Monopoly Road To Riches (Mazooma) (Scorpion 4) (set 5)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4mr2re ,sc4mr2r, sc4_4reel_alt, sc4mr2r, sc4_state, sc4mr2r, ROT0, "Mazooma","Monopoly Road To Riches (Mazooma) (Scorpion 4) (set 6)", MACHINE_FLAGS, layout_bfm_sc4 )
DRIVER_INIT_MEMBER(sc4_state,sc4nmare)
@@ -38661,10 +38663,10 @@ INPUT_PORTS_START( sc4nmare ) // this structure is generated
INPUT_PORTS_END
// PR3032 AWP NIGHTMARE ON ELM STREET S4 PR3002 ELM STREET SOUNDS11 NIGHTMARE ELM ST S.SITE
-GAMEL( 200?, sc4nmare ,0, sc4_5reel, sc4nmare, sc4_state, sc4nmare, ROT0, "BFM","A Nightmare On Elm Street (Bellfruit) (Scorpion 4) (set 1)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4nmarea ,sc4nmare, sc4_5reel, sc4nmare, sc4_state, sc4nmare, ROT0, "BFM","A Nightmare On Elm Street (Bellfruit) (Scorpion 4) (set 2)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4nmareb ,sc4nmare, sc4_5reel, sc4nmare, sc4_state, sc4nmare, ROT0, "BFM","A Nightmare On Elm Street (Bellfruit) (Scorpion 4) (set 3)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4nmarec ,sc4nmare, sc4_5reel, sc4nmare, sc4_state, sc4nmare, ROT0, "BFM","A Nightmare On Elm Street (Bellfruit) (Scorpion 4) (set 4)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4nmare ,0, sc4_5reel, sc4nmare, sc4_state, sc4nmare, ROT0, "BFM","A Nightmare On Elm Street (Bellfruit) (Scorpion 4) (set 1)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4nmarea ,sc4nmare, sc4_5reel, sc4nmare, sc4_state, sc4nmare, ROT0, "BFM","A Nightmare On Elm Street (Bellfruit) (Scorpion 4) (set 2)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4nmareb ,sc4nmare, sc4_5reel, sc4nmare, sc4_state, sc4nmare, ROT0, "BFM","A Nightmare On Elm Street (Bellfruit) (Scorpion 4) (set 3)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4nmarec ,sc4nmare, sc4_5reel, sc4nmare, sc4_state, sc4nmare, ROT0, "BFM","A Nightmare On Elm Street (Bellfruit) (Scorpion 4) (set 4)", MACHINE_FLAGS, layout_bfm_sc4 )
DRIVER_INIT_MEMBER(sc4_state,sc4potp)
@@ -38735,8 +38737,8 @@ INPUT_PORTS_START( sc4potp ) // this structure is generated
INPUT_PORTS_END
// PR1612 PICK OF THE PACK PR1612 PICK OF THE PACK SOUNDS11 PICK OF THE PACK S.SITE
-GAMEL( 200?, sc4potp ,0, sc4_4reel_alt, sc4potp, sc4_state, sc4potp, ROT0, "BFM","Pick Of The Pack (Bellfruit) (Scorpion 4) (set 1)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4potpa ,sc4potp, sc4_4reel_alt, sc4potp, sc4_state, sc4potp, ROT0, "BFM","Pick Of The Pack (Bellfruit) (Scorpion 4) (set 2)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4potp ,0, sc4_4reel_alt, sc4potp, sc4_state, sc4potp, ROT0, "BFM","Pick Of The Pack (Bellfruit) (Scorpion 4) (set 1)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4potpa ,sc4potp, sc4_4reel_alt, sc4potp, sc4_state, sc4potp, ROT0, "BFM","Pick Of The Pack (Bellfruit) (Scorpion 4) (set 2)", MACHINE_FLAGS, layout_bfm_sc4 )
INPUT_PORTS_START( sc4ppcr ) // this structure is generated
@@ -38795,18 +38797,18 @@ INPUT_PORTS_START( sc4ppcr ) // this structure is generated
INPUT_PORTS_END
// PR2279 PINK PANTHER CLOUSEAUS REVENGE REVENGE QPS REVENGE SOUNDS
-GAMEL( 200?, sc4ppcr ,0, sc4, sc4ppcr, sc4_state, sc4, ROT0, "Mazooma","Pink Panther Clouseau's Revenge (Mazooma) (Scorpion 4) (set 1)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4ppcra ,sc4ppcr, sc4, sc4ppcr, sc4_state, sc4, ROT0, "Mazooma","Pink Panther Clouseau's Revenge (Mazooma) (Scorpion 4) (set 2)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4ppcrb ,sc4ppcr, sc4, sc4ppcr, sc4_state, sc4, ROT0, "Mazooma","Pink Panther Clouseau's Revenge (Mazooma) (Scorpion 4) (set 3)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4ppcrd ,sc4ppcr, sc4, sc4ppcr, sc4_state, sc4, ROT0, "Mazooma","Pink Panther Clouseau's Revenge (Mazooma) (Scorpion 4) (set 4)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4ppcre ,sc4ppcr, sc4, sc4ppcr, sc4_state, sc4, ROT0, "Mazooma","Pink Panther Clouseau's Revenge (Mazooma) (Scorpion 4) (set 5)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4ppcrf ,sc4ppcr, sc4, sc4ppcr, sc4_state, sc4, ROT0, "Mazooma","Pink Panther Clouseau's Revenge (Mazooma) (Scorpion 4) (set 6)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4ppcrg ,sc4ppcr, sc4, sc4ppcr, sc4_state, sc4, ROT0, "Mazooma","Pink Panther Clouseau's Revenge (Mazooma) (Scorpion 4) (set 7)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4ppcrh ,sc4ppcr, sc4, sc4ppcr, sc4_state, sc4, ROT0, "Mazooma","Pink Panther Clouseau's Revenge (Mazooma) (Scorpion 4) (set 8)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4ppcri ,sc4ppcr, sc4, sc4ppcr, sc4_state, sc4, ROT0, "Mazooma","Pink Panther Clouseau's Revenge (Mazooma) (Scorpion 4) (set 9)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4ppcrj ,sc4ppcr, sc4, sc4ppcr, sc4_state, sc4, ROT0, "Mazooma","Pink Panther Clouseau's Revenge (Mazooma) (Scorpion 4) (set 10)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4ppcr ,0, sc4, sc4ppcr, sc4_state, sc4, ROT0, "Mazooma","Pink Panther Clouseau's Revenge (Mazooma) (Scorpion 4) (set 1)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4ppcra ,sc4ppcr, sc4, sc4ppcr, sc4_state, sc4, ROT0, "Mazooma","Pink Panther Clouseau's Revenge (Mazooma) (Scorpion 4) (set 2)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4ppcrb ,sc4ppcr, sc4, sc4ppcr, sc4_state, sc4, ROT0, "Mazooma","Pink Panther Clouseau's Revenge (Mazooma) (Scorpion 4) (set 3)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4ppcrd ,sc4ppcr, sc4, sc4ppcr, sc4_state, sc4, ROT0, "Mazooma","Pink Panther Clouseau's Revenge (Mazooma) (Scorpion 4) (set 4)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4ppcre ,sc4ppcr, sc4, sc4ppcr, sc4_state, sc4, ROT0, "Mazooma","Pink Panther Clouseau's Revenge (Mazooma) (Scorpion 4) (set 5)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4ppcrf ,sc4ppcr, sc4, sc4ppcr, sc4_state, sc4, ROT0, "Mazooma","Pink Panther Clouseau's Revenge (Mazooma) (Scorpion 4) (set 6)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4ppcrg ,sc4ppcr, sc4, sc4ppcr, sc4_state, sc4, ROT0, "Mazooma","Pink Panther Clouseau's Revenge (Mazooma) (Scorpion 4) (set 7)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4ppcrh ,sc4ppcr, sc4, sc4ppcr, sc4_state, sc4, ROT0, "Mazooma","Pink Panther Clouseau's Revenge (Mazooma) (Scorpion 4) (set 8)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4ppcri ,sc4ppcr, sc4, sc4ppcr, sc4_state, sc4, ROT0, "Mazooma","Pink Panther Clouseau's Revenge (Mazooma) (Scorpion 4) (set 9)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4ppcrj ,sc4ppcr, sc4, sc4ppcr, sc4_state, sc4, ROT0, "Mazooma","Pink Panther Clouseau's Revenge (Mazooma) (Scorpion 4) (set 10)", MACHINE_FLAGS, layout_bfm_sc4 )
// PR2279 CLOUSEAU TOP BOX COROST_TRIPLE SOUNDS REVENGE TIME
-GAMEL( 200?, sc4ppcrtb ,sc4ppcr, sc4, sc4, sc4_state, sc4, ROT0, "Mazooma","Pink Panther Clouseau's Revenge Top Box (Mazooma) (Scorpion 4)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4ppcrtb ,sc4ppcr, sc4, sc4, sc4_state, sc4, ROT0, "Mazooma","Pink Panther Clouseau's Revenge Top Box (Mazooma) (Scorpion 4)", MACHINE_FLAGS, layout_bfm_sc4 )
DRIVER_INIT_MEMBER(sc4_state,sc4ppctc)
@@ -38885,14 +38887,14 @@ INPUT_PORTS_START( sc4ppctc ) // this structure is generated
INPUT_PORTS_END
// PR2407 AWP PINK PANTHER CRACK THE CODE SCORP4 PR2407 CRACK THE CODE SOUNDS11 CRACK THE CODE S.SITE
-GAMEL( 200?, sc4ppctc ,0, sc4, sc4ppctc, sc4_state, sc4ppctc, ROT0, "BFM","Pink Panther Crack The Code (Bellfruit) (Scorpion 4) (set 1)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4ppctca ,sc4ppctc, sc4, sc4ppctc, sc4_state, sc4ppctc, ROT0, "BFM","Pink Panther Crack The Code (Bellfruit) (Scorpion 4) (set 2)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4ppctcb ,sc4ppctc, sc4, sc4ppctc, sc4_state, sc4ppctc, ROT0, "BFM","Pink Panther Crack The Code (Bellfruit) (Scorpion 4) (set 3)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4ppctcc ,sc4ppctc, sc4, sc4ppctc, sc4_state, sc4ppctc, ROT0, "BFM","Pink Panther Crack The Code (Bellfruit) (Scorpion 4) (set 4)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4ppctcd ,sc4ppctc, sc4, sc4ppctc, sc4_state, sc4ppctc, ROT0, "BFM","Pink Panther Crack The Code (Bellfruit) (Scorpion 4) (set 5)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4ppctce ,sc4ppctc, sc4, sc4ppctc, sc4_state, sc4ppctc, ROT0, "BFM","Pink Panther Crack The Code (Bellfruit) (Scorpion 4) (set 6)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4ppctcf ,sc4ppctc, sc4, sc4ppctc, sc4_state, sc4ppctc, ROT0, "BFM","Pink Panther Crack The Code (Bellfruit) (Scorpion 4) (set 7)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4ppctcg ,sc4ppctc, sc4, sc4ppctc, sc4_state, sc4ppctc, ROT0, "BFM","Pink Panther Crack The Code (Bellfruit) (Scorpion 4) (set 8)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4ppctc ,0, sc4, sc4ppctc, sc4_state, sc4ppctc, ROT0, "BFM","Pink Panther Crack The Code (Bellfruit) (Scorpion 4) (set 1)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4ppctca ,sc4ppctc, sc4, sc4ppctc, sc4_state, sc4ppctc, ROT0, "BFM","Pink Panther Crack The Code (Bellfruit) (Scorpion 4) (set 2)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4ppctcb ,sc4ppctc, sc4, sc4ppctc, sc4_state, sc4ppctc, ROT0, "BFM","Pink Panther Crack The Code (Bellfruit) (Scorpion 4) (set 3)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4ppctcc ,sc4ppctc, sc4, sc4ppctc, sc4_state, sc4ppctc, ROT0, "BFM","Pink Panther Crack The Code (Bellfruit) (Scorpion 4) (set 4)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4ppctcd ,sc4ppctc, sc4, sc4ppctc, sc4_state, sc4ppctc, ROT0, "BFM","Pink Panther Crack The Code (Bellfruit) (Scorpion 4) (set 5)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4ppctce ,sc4ppctc, sc4, sc4ppctc, sc4_state, sc4ppctc, ROT0, "BFM","Pink Panther Crack The Code (Bellfruit) (Scorpion 4) (set 6)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4ppctcf ,sc4ppctc, sc4, sc4ppctc, sc4_state, sc4ppctc, ROT0, "BFM","Pink Panther Crack The Code (Bellfruit) (Scorpion 4) (set 7)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4ppctcg ,sc4ppctc, sc4, sc4ppctc, sc4_state, sc4ppctc, ROT0, "BFM","Pink Panther Crack The Code (Bellfruit) (Scorpion 4) (set 8)", MACHINE_FLAGS, layout_bfm_sc4 )
INPUT_PORTS_START( sc4ppdym ) // this structure is generated
@@ -38952,17 +38954,17 @@ INPUT_PORTS_START( sc4ppdym ) // this structure is generated
INPUT_PORTS_END
// PR2330 PINK PANTHER DYM PINK PANTHER DYM QPS DYMT SOUNDS PINK PANTHER DYM -
-GAMEL( 200?, sc4ppdym ,0, sc4, sc4ppdym, sc4_state, sc4, ROT0, "Mazooma","Pink Panther Double Your Money (Mazooma) (Scorpion 4) (set 1)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4ppdymb ,sc4ppdym, sc4, sc4ppdym, sc4_state, sc4, ROT0, "Mazooma","Pink Panther Double Your Money (Mazooma) (Scorpion 4) (set 2)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4ppdymc ,sc4ppdym, sc4, sc4ppdym, sc4_state, sc4, ROT0, "Mazooma","Pink Panther Double Your Money (Mazooma) (Scorpion 4) (set 3)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4ppdymd ,sc4ppdym, sc4, sc4ppdym, sc4_state, sc4, ROT0, "Mazooma","Pink Panther Double Your Money (Mazooma) (Scorpion 4) (set 4)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4ppdymf ,sc4ppdym, sc4, sc4ppdym, sc4_state, sc4, ROT0, "Mazooma","Pink Panther Double Your Money (Mazooma) (Scorpion 4) (set 5)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4ppdymg ,sc4ppdym, sc4, sc4ppdym, sc4_state, sc4, ROT0, "Mazooma","Pink Panther Double Your Money (Mazooma) (Scorpion 4) (set 6)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4ppdymh ,sc4ppdym, sc4, sc4ppdym, sc4_state, sc4, ROT0, "Mazooma","Pink Panther Double Your Money (Mazooma) (Scorpion 4) (set 7)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4ppdymi ,sc4ppdym, sc4, sc4ppdym, sc4_state, sc4, ROT0, "Mazooma","Pink Panther Double Your Money (Mazooma) (Scorpion 4) (set 8)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4ppdym ,0, sc4, sc4ppdym, sc4_state, sc4, ROT0, "Mazooma","Pink Panther Double Your Money (Mazooma) (Scorpion 4) (set 1)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4ppdymb ,sc4ppdym, sc4, sc4ppdym, sc4_state, sc4, ROT0, "Mazooma","Pink Panther Double Your Money (Mazooma) (Scorpion 4) (set 2)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4ppdymc ,sc4ppdym, sc4, sc4ppdym, sc4_state, sc4, ROT0, "Mazooma","Pink Panther Double Your Money (Mazooma) (Scorpion 4) (set 3)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4ppdymd ,sc4ppdym, sc4, sc4ppdym, sc4_state, sc4, ROT0, "Mazooma","Pink Panther Double Your Money (Mazooma) (Scorpion 4) (set 4)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4ppdymf ,sc4ppdym, sc4, sc4ppdym, sc4_state, sc4, ROT0, "Mazooma","Pink Panther Double Your Money (Mazooma) (Scorpion 4) (set 5)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4ppdymg ,sc4ppdym, sc4, sc4ppdym, sc4_state, sc4, ROT0, "Mazooma","Pink Panther Double Your Money (Mazooma) (Scorpion 4) (set 6)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4ppdymh ,sc4ppdym, sc4, sc4ppdym, sc4_state, sc4, ROT0, "Mazooma","Pink Panther Double Your Money (Mazooma) (Scorpion 4) (set 7)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4ppdymi ,sc4ppdym, sc4, sc4ppdym, sc4_state, sc4, ROT0, "Mazooma","Pink Panther Double Your Money (Mazooma) (Scorpion 4) (set 8)", MACHINE_FLAGS, layout_bfm_sc4 )
// PR2333 PINK PANTHER TOP BOX DYMT SOUNDS ALL YOUR BASE
-GAMEL( 200?, sc4ppdymtb ,sc4ppdym, sc4, sc4, sc4_state, sc4, ROT0, "Mazooma","Pink Panther Double Your Money Top Box (Mazooma) (Scorpion 4) (set 1)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4ppdymtba ,sc4ppdym, sc4, sc4, sc4_state, sc4, ROT0, "Mazooma","Pink Panther Double Your Money Top Box (Mazooma) (Scorpion 4) (set 2)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4ppdymtb ,sc4ppdym, sc4, sc4, sc4_state, sc4, ROT0, "Mazooma","Pink Panther Double Your Money Top Box (Mazooma) (Scorpion 4) (set 1)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4ppdymtba ,sc4ppdym, sc4, sc4, sc4_state, sc4, ROT0, "Mazooma","Pink Panther Double Your Money Top Box (Mazooma) (Scorpion 4) (set 2)", MACHINE_FLAGS, layout_bfm_sc4 )
DRIVER_INIT_MEMBER(sc4_state,sc4pony)
{
@@ -39031,12 +39033,12 @@ INPUT_PORTS_START( sc4pony ) // this structure is generated
INPUT_PORTS_END
// PR1408 PONY EXPRESS PR1408 PONY EXPRESS SOUNDS11 PONY EXPRESS S.SITE
-GAMEL( 200?, sc4pony ,0, sc4_200_5r, sc4pony, sc4_state, sc4pony, ROT0, "BFM","Pony Express (Bellfruit) (Scorpion 4) (set 1)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4ponya ,sc4pony, sc4_200_5r, sc4pony, sc4_state, sc4pony, ROT0, "BFM","Pony Express (Bellfruit) (Scorpion 4) (set 2)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4ponyb ,sc4pony, sc4_200_5r, sc4pony, sc4_state, sc4pony, ROT0, "BFM","Pony Express (Bellfruit) (Scorpion 4) (set 3)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4ponyc ,sc4pony, sc4_200_5r, sc4pony, sc4_state, sc4pony, ROT0, "BFM","Pony Express (Bellfruit) (Scorpion 4) (set 4)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4ponyd ,sc4pony, sc4_200_5r, sc4pony, sc4_state, sc4pony, ROT0, "BFM","Pony Express (Bellfruit) (Scorpion 4) (set 5)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4ponye ,sc4pony, sc4_200_5r, sc4pony, sc4_state, sc4pony, ROT0, "BFM","Pony Express (Bellfruit) (Scorpion 4) (set 6)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 ) // incomplete pairing
+GAMEL( 200?, sc4pony ,0, sc4_200_5r, sc4pony, sc4_state, sc4pony, ROT0, "BFM","Pony Express (Bellfruit) (Scorpion 4) (set 1)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4ponya ,sc4pony, sc4_200_5r, sc4pony, sc4_state, sc4pony, ROT0, "BFM","Pony Express (Bellfruit) (Scorpion 4) (set 2)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4ponyb ,sc4pony, sc4_200_5r, sc4pony, sc4_state, sc4pony, ROT0, "BFM","Pony Express (Bellfruit) (Scorpion 4) (set 3)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4ponyc ,sc4pony, sc4_200_5r, sc4pony, sc4_state, sc4pony, ROT0, "BFM","Pony Express (Bellfruit) (Scorpion 4) (set 4)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4ponyd ,sc4pony, sc4_200_5r, sc4pony, sc4_state, sc4pony, ROT0, "BFM","Pony Express (Bellfruit) (Scorpion 4) (set 5)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4ponye ,sc4pony, sc4_200_5r, sc4pony, sc4_state, sc4pony, ROT0, "BFM","Pony Express (Bellfruit) (Scorpion 4) (set 6)", MACHINE_FLAGS, layout_bfm_sc4 ) // incomplete pairing
DRIVER_INIT_MEMBER(sc4_state,sc4popey)
@@ -39108,12 +39110,12 @@ INPUT_PORTS_START( sc4popey ) // this structure is generated
INPUT_PORTS_END
// PR2417 AWP POPEYE S4 PR2417 POPEYE SOUNDS11 POPEYE S.SITE
-GAMEL( 200?, sc4popey ,0, sc4_5reel_alt, sc4popey, sc4_state, sc4popey, ROT0, "Mazooma","Popeye (Mazooma) (Scorpion 4) (set 1)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4popeya ,sc4popey, sc4_5reel_alt, sc4popey, sc4_state, sc4popey, ROT0, "Mazooma","Popeye (Mazooma) (Scorpion 4) (set 2)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4popeyb ,sc4popey, sc4_5reel_alt, sc4popey, sc4_state, sc4popey, ROT0, "Mazooma","Popeye (Mazooma) (Scorpion 4) (set 3)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4popeyc ,sc4popey, sc4_5reel_alt, sc4popey, sc4_state, sc4popey, ROT0, "Mazooma","Popeye (Mazooma) (Scorpion 4) (set 4)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4popeyd ,sc4popey, sc4_5reel_alt, sc4popey, sc4_state, sc4popey, ROT0, "Mazooma","Popeye (Mazooma) (Scorpion 4) (set 5)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4popeye ,sc4popey, sc4_5reel_alt, sc4popey, sc4_state, sc4popey, ROT0, "Mazooma","Popeye (Mazooma) (Scorpion 4) (set 6)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4popey ,0, sc4_5reel_alt, sc4popey, sc4_state, sc4popey, ROT0, "Mazooma","Popeye (Mazooma) (Scorpion 4) (set 1)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4popeya ,sc4popey, sc4_5reel_alt, sc4popey, sc4_state, sc4popey, ROT0, "Mazooma","Popeye (Mazooma) (Scorpion 4) (set 2)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4popeyb ,sc4popey, sc4_5reel_alt, sc4popey, sc4_state, sc4popey, ROT0, "Mazooma","Popeye (Mazooma) (Scorpion 4) (set 3)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4popeyc ,sc4popey, sc4_5reel_alt, sc4popey, sc4_state, sc4popey, ROT0, "Mazooma","Popeye (Mazooma) (Scorpion 4) (set 4)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4popeyd ,sc4popey, sc4_5reel_alt, sc4popey, sc4_state, sc4popey, ROT0, "Mazooma","Popeye (Mazooma) (Scorpion 4) (set 5)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4popeye ,sc4popey, sc4_5reel_alt, sc4popey, sc4_state, sc4popey, ROT0, "Mazooma","Popeye (Mazooma) (Scorpion 4) (set 6)", MACHINE_FLAGS, layout_bfm_sc4 )
DRIVER_INIT_MEMBER(sc4_state,sc4pwrbl)
@@ -39195,8 +39197,8 @@ INPUT_PORTS_END
// sequel to gamball, mechanical?
// PR1614 AWP POWERBALL POWERBALL S.SITE PR1614 POWERBALL SOUNDS11
-GAMEL( 200?, sc4pwrbl ,0, sc4_4reel, sc4pwrbl, sc4_state, sc4pwrbl, ROT0, "BFM","Powerball (Bellfruit) (Scorpion 4) (set 1)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4pwrbla ,sc4pwrbl, sc4_4reel, sc4pwrbl, sc4_state, sc4pwrbl, ROT0, "BFM","Powerball (Bellfruit) (Scorpion 4) (set 2)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4pwrbl ,0, sc4_4reel, sc4pwrbl, sc4_state, sc4pwrbl, ROT0, "BFM","Powerball (Bellfruit) (Scorpion 4) (set 1)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4pwrbla ,sc4pwrbl, sc4_4reel, sc4pwrbl, sc4_state, sc4pwrbl, ROT0, "BFM","Powerball (Bellfruit) (Scorpion 4) (set 2)", MACHINE_FLAGS, layout_bfm_sc4 )
DRIVER_INIT_MEMBER(sc4_state,sc4quidv)
{
@@ -39264,10 +39266,10 @@ INPUT_PORTS_START( sc4quidv ) // this structure is generated
INPUT_PORTS_END
// PR2342 QUID VICIOUS QUIDV SOUNDS QUID VICIOUS
-GAMEL( 200?, sc4quidv ,0, sc4_4reel_alt, sc4quidv, sc4_state, sc4quidv, ROT0, "Mazooma","Quid Vicious (Mazooma) (Scorpion 4) (set 1)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4quidva ,sc4quidv, sc4_4reel_alt, sc4quidv, sc4_state, sc4quidv, ROT0, "Mazooma","Quid Vicious (Mazooma) (Scorpion 4) (set 2)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4quidvb ,sc4quidv, sc4_4reel_alt, sc4quidv, sc4_state, sc4quidv, ROT0, "Mazooma","Quid Vicious (Mazooma) (Scorpion 4) (set 3)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4quidvc ,sc4quidv, sc4_4reel_alt, sc4quidv, sc4_state, sc4quidv, ROT0, "Mazooma","Quid Vicious (Mazooma) (Scorpion 4) (set 4)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4quidv ,0, sc4_4reel_alt, sc4quidv, sc4_state, sc4quidv, ROT0, "Mazooma","Quid Vicious (Mazooma) (Scorpion 4) (set 1)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4quidva ,sc4quidv, sc4_4reel_alt, sc4quidv, sc4_state, sc4quidv, ROT0, "Mazooma","Quid Vicious (Mazooma) (Scorpion 4) (set 2)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4quidvb ,sc4quidv, sc4_4reel_alt, sc4quidv, sc4_state, sc4quidv, ROT0, "Mazooma","Quid Vicious (Mazooma) (Scorpion 4) (set 3)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4quidvc ,sc4quidv, sc4_4reel_alt, sc4quidv, sc4_state, sc4quidv, ROT0, "Mazooma","Quid Vicious (Mazooma) (Scorpion 4) (set 4)", MACHINE_FLAGS, layout_bfm_sc4 )
DRIVER_INIT_MEMBER(sc4_state,sc4rhxcs)
{
@@ -39332,12 +39334,12 @@ INPUT_PORTS_START( sc4rhxcs ) // this structure is generated
INPUT_PORTS_END
// PR2364 CASINO RED HOT X RED HOT X CRHX SOUNDS RED HOT X
-GAMEL( 200?, sc4rhxcs ,0, sc4_3reel_200_48, sc4rhxcs, sc4_state, sc4rhxcs, ROT0, "Mazooma","Red Hot X Casino (Mazooma) (Scorpion 4) (set 1)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4rhxcsa ,sc4rhxcs, sc4_3reel_200_48, sc4rhxcs, sc4_state, sc4rhxcs, ROT0, "Mazooma","Red Hot X Casino (Mazooma) (Scorpion 4) (set 2)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4rhxcsb ,sc4rhxcs, sc4_3reel_200_48, sc4rhxcs, sc4_state, sc4rhxcs, ROT0, "Mazooma","Red Hot X Casino (Mazooma) (Scorpion 4) (set 3)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4rhxcsc ,sc4rhxcs, sc4_3reel_200_48, sc4rhxcs, sc4_state, sc4rhxcs, ROT0, "Mazooma","Red Hot X Casino (Mazooma) (Scorpion 4) (set 4)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4rhxcsd ,sc4rhxcs, sc4_3reel_200_48, sc4rhxcs, sc4_state, sc4rhxcs, ROT0, "Mazooma","Red Hot X Casino (Mazooma) (Scorpion 4) (set 5)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4rhxcse ,sc4rhxcs, sc4_3reel_200_48, sc4rhxcs, sc4_state, sc4rhxcs, ROT0, "Mazooma","Red Hot X Casino (Mazooma) (Scorpion 4) (set 6)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4rhxcs ,0, sc4_3reel_200_48, sc4rhxcs, sc4_state, sc4rhxcs, ROT0, "Mazooma","Red Hot X Casino (Mazooma) (Scorpion 4) (set 1)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4rhxcsa ,sc4rhxcs, sc4_3reel_200_48, sc4rhxcs, sc4_state, sc4rhxcs, ROT0, "Mazooma","Red Hot X Casino (Mazooma) (Scorpion 4) (set 2)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4rhxcsb ,sc4rhxcs, sc4_3reel_200_48, sc4rhxcs, sc4_state, sc4rhxcs, ROT0, "Mazooma","Red Hot X Casino (Mazooma) (Scorpion 4) (set 3)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4rhxcsc ,sc4rhxcs, sc4_3reel_200_48, sc4rhxcs, sc4_state, sc4rhxcs, ROT0, "Mazooma","Red Hot X Casino (Mazooma) (Scorpion 4) (set 4)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4rhxcsd ,sc4rhxcs, sc4_3reel_200_48, sc4rhxcs, sc4_state, sc4rhxcs, ROT0, "Mazooma","Red Hot X Casino (Mazooma) (Scorpion 4) (set 5)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4rhxcse ,sc4rhxcs, sc4_3reel_200_48, sc4rhxcs, sc4_state, sc4rhxcs, ROT0, "Mazooma","Red Hot X Casino (Mazooma) (Scorpion 4) (set 6)", MACHINE_FLAGS, layout_bfm_sc4 )
@@ -39398,10 +39400,10 @@ INPUT_PORTS_END
// PR2557 RED SQUARE REDS SOUNDS RED SQUARE
-GAMEL( 200?, sc4redsq ,0, sc4_4reel, sc4redsq, sc4_state, sc4redsq, ROT0, "Mazooma","Red Square (Mazooma) (Scorpion 4) (set 1)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4redsqa ,sc4redsq, sc4_4reel, sc4redsq, sc4_state, sc4redsq, ROT0, "Mazooma","Red Square (Mazooma) (Scorpion 4) (set 2)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4redsqb ,sc4redsq, sc4_4reel, sc4redsq, sc4_state, sc4redsq, ROT0, "Mazooma","Red Square (Mazooma) (Scorpion 4) (set 3)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4redsqc ,sc4redsq, sc4_4reel, sc4redsq, sc4_state, sc4redsq, ROT0, "Mazooma","Red Square (Mazooma) (Scorpion 4) (set 4)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4redsq ,0, sc4_4reel, sc4redsq, sc4_state, sc4redsq, ROT0, "Mazooma","Red Square (Mazooma) (Scorpion 4) (set 1)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4redsqa ,sc4redsq, sc4_4reel, sc4redsq, sc4_state, sc4redsq, ROT0, "Mazooma","Red Square (Mazooma) (Scorpion 4) (set 2)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4redsqb ,sc4redsq, sc4_4reel, sc4redsq, sc4_state, sc4redsq, ROT0, "Mazooma","Red Square (Mazooma) (Scorpion 4) (set 3)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4redsqc ,sc4redsq, sc4_4reel, sc4redsq, sc4_state, sc4redsq, ROT0, "Mazooma","Red Square (Mazooma) (Scorpion 4) (set 4)", MACHINE_FLAGS, layout_bfm_sc4 )
@@ -39468,14 +39470,14 @@ INPUT_PORTS_START( sc4rosts ) // this structure is generated
INPUT_PORTS_END
// PR3256 CLUB RONNIE O SULLIVANS TOURNAMENT SCORP4 RONNIE OSULLIVAN CLUB PR3256 RONNIE O SOUNDS11 RONNIE SULLIVAN
-GAMEL( 200?, sc4rosts ,0, sc4_5reel, sc4rosts, sc4_state, sc4rosts, ROT0, "BFM","Ronnie O'Sullivan's Tournament Snooker (Bellfruit) (Scorpion 4) (set 1)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4rostsa ,sc4rosts, sc4_5reel, sc4rosts, sc4_state, sc4rosts, ROT0, "BFM","Ronnie O'Sullivan's Tournament Snooker (Bellfruit) (Scorpion 4) (set 2)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4rostsb ,sc4rosts, sc4_5reel, sc4rosts, sc4_state, sc4rosts, ROT0, "BFM","Ronnie O'Sullivan's Tournament Snooker (Bellfruit) (Scorpion 4) (set 3)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4rostsc ,sc4rosts, sc4_5reel, sc4rosts, sc4_state, sc4rosts, ROT0, "BFM","Ronnie O'Sullivan's Tournament Snooker (Bellfruit) (Scorpion 4) (set 4)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4rostsd ,sc4rosts, sc4_5reel, sc4rosts, sc4_state, sc4rosts, ROT0, "BFM","Ronnie O'Sullivan's Tournament Snooker (Bellfruit) (Scorpion 4) (set 5)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4rostse ,sc4rosts, sc4_5reel, sc4rosts, sc4_state, sc4rosts, ROT0, "BFM","Ronnie O'Sullivan's Tournament Snooker (Bellfruit) (Scorpion 4) (set 6)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4rostsf ,sc4rosts, sc4_5reel, sc4rosts, sc4_state, sc4rosts, ROT0, "BFM","Ronnie O'Sullivan's Tournament Snooker (Bellfruit) (Scorpion 4) (set 7)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4rostsg ,sc4rosts, sc4_5reel, sc4rosts, sc4_state, sc4rosts, ROT0, "BFM","Ronnie O'Sullivan's Tournament Snooker (Bellfruit) (Scorpion 4) (set 8)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4rosts ,0, sc4_5reel, sc4rosts, sc4_state, sc4rosts, ROT0, "BFM","Ronnie O'Sullivan's Tournament Snooker (Bellfruit) (Scorpion 4) (set 1)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4rostsa ,sc4rosts, sc4_5reel, sc4rosts, sc4_state, sc4rosts, ROT0, "BFM","Ronnie O'Sullivan's Tournament Snooker (Bellfruit) (Scorpion 4) (set 2)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4rostsb ,sc4rosts, sc4_5reel, sc4rosts, sc4_state, sc4rosts, ROT0, "BFM","Ronnie O'Sullivan's Tournament Snooker (Bellfruit) (Scorpion 4) (set 3)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4rostsc ,sc4rosts, sc4_5reel, sc4rosts, sc4_state, sc4rosts, ROT0, "BFM","Ronnie O'Sullivan's Tournament Snooker (Bellfruit) (Scorpion 4) (set 4)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4rostsd ,sc4rosts, sc4_5reel, sc4rosts, sc4_state, sc4rosts, ROT0, "BFM","Ronnie O'Sullivan's Tournament Snooker (Bellfruit) (Scorpion 4) (set 5)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4rostse ,sc4rosts, sc4_5reel, sc4rosts, sc4_state, sc4rosts, ROT0, "BFM","Ronnie O'Sullivan's Tournament Snooker (Bellfruit) (Scorpion 4) (set 6)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4rostsf ,sc4rosts, sc4_5reel, sc4rosts, sc4_state, sc4rosts, ROT0, "BFM","Ronnie O'Sullivan's Tournament Snooker (Bellfruit) (Scorpion 4) (set 7)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4rostsg ,sc4rosts, sc4_5reel, sc4rosts, sc4_state, sc4rosts, ROT0, "BFM","Ronnie O'Sullivan's Tournament Snooker (Bellfruit) (Scorpion 4) (set 8)", MACHINE_FLAGS, layout_bfm_sc4 )
DRIVER_INIT_MEMBER(sc4_state,sc4rovrt)
@@ -39551,12 +39553,12 @@ INPUT_PORTS_START( sc4rovrt ) // this structure is generated
INPUT_PORTS_END
// PR2311 ROVERS RETURN ROVERS RETURN SOUNDS ROVERS RETURN
-GAMEL( 200?, sc4rovrt ,0, sc4_200_4ra, sc4rovrt, sc4_state, sc4rovrt, ROT0, "Mazooma","Rovers Return (Mazooma) (Scorpion 4) (set 1)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4rovrta ,sc4rovrt, sc4_200_4ra, sc4rovrt, sc4_state, sc4rovrt, ROT0, "Mazooma","Rovers Return (Mazooma) (Scorpion 4) (set 2)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4rovrtb ,sc4rovrt, sc4_200_4ra, sc4rovrt, sc4_state, sc4rovrt, ROT0, "Mazooma","Rovers Return (Mazooma) (Scorpion 4) (set 3)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4rovrtc ,sc4rovrt, sc4_200_4ra, sc4rovrt, sc4_state, sc4rovrt, ROT0, "Mazooma","Rovers Return (Mazooma) (Scorpion 4) (set 4)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4rovrtd ,sc4rovrt, sc4_200_4ra, sc4rovrt, sc4_state, sc4rovrt, ROT0, "Mazooma","Rovers Return (Mazooma) (Scorpion 4) (set 5)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4rovrte ,sc4rovrt, sc4_200_4ra, sc4rovrt, sc4_state, sc4rovrt, ROT0, "Mazooma","Rovers Return (Mazooma) (Scorpion 4) (set 6)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4rovrt ,0, sc4_200_4ra, sc4rovrt, sc4_state, sc4rovrt, ROT0, "Mazooma","Rovers Return (Mazooma) (Scorpion 4) (set 1)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4rovrta ,sc4rovrt, sc4_200_4ra, sc4rovrt, sc4_state, sc4rovrt, ROT0, "Mazooma","Rovers Return (Mazooma) (Scorpion 4) (set 2)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4rovrtb ,sc4rovrt, sc4_200_4ra, sc4rovrt, sc4_state, sc4rovrt, ROT0, "Mazooma","Rovers Return (Mazooma) (Scorpion 4) (set 3)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4rovrtc ,sc4rovrt, sc4_200_4ra, sc4rovrt, sc4_state, sc4rovrt, ROT0, "Mazooma","Rovers Return (Mazooma) (Scorpion 4) (set 4)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4rovrtd ,sc4rovrt, sc4_200_4ra, sc4rovrt, sc4_state, sc4rovrt, ROT0, "Mazooma","Rovers Return (Mazooma) (Scorpion 4) (set 5)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4rovrte ,sc4rovrt, sc4_200_4ra, sc4rovrt, sc4_state, sc4rovrt, ROT0, "Mazooma","Rovers Return (Mazooma) (Scorpion 4) (set 6)", MACHINE_FLAGS, layout_bfm_sc4 )
DRIVER_INIT_MEMBER(sc4_state,sc4showt)
{
@@ -39629,13 +39631,13 @@ INPUT_PORTS_START( sc4showt ) // this structure is generated
INPUT_PORTS_END
// PR3043 AWP SHOW TIME S4 PR3013 SHOWTIME SOUNDS11 SHOW TIME S.SITE
-GAMEL( 200?, sc4showt ,0, sc4_200_5rc, sc4showt, sc4_state, sc4showt, ROT0, "BFM","Showtime (Bellfruit) (Scorpion 4) (set 1)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4showta ,sc4showt, sc4_200_5rc, sc4showt, sc4_state, sc4showt, ROT0, "BFM","Showtime (Bellfruit) (Scorpion 4) (set 2)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4showtb ,sc4showt, sc4_200_5rc, sc4showt, sc4_state, sc4showt, ROT0, "BFM","Showtime (Bellfruit) (Scorpion 4) (set 3)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4showtc ,sc4showt, sc4_200_5rc, sc4showt, sc4_state, sc4showt, ROT0, "BFM","Showtime (Bellfruit) (Scorpion 4) (set 4)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4showtd ,sc4showt, sc4_200_5rc, sc4showt, sc4_state, sc4showt, ROT0, "BFM","Showtime (Bellfruit) (Scorpion 4) (set 5)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4showte ,sc4showt, sc4_200_5rc, sc4showt, sc4_state, sc4showt, ROT0, "BFM","Showtime (Bellfruit) (Scorpion 4) (set 6)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4showtf ,sc4showt, sc4_200_5rc, sc4showt, sc4_state, sc4showt, ROT0, "BFM","Showtime (Bellfruit) (Scorpion 4) (set 7)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4showt ,0, sc4_200_5rc, sc4showt, sc4_state, sc4showt, ROT0, "BFM","Showtime (Bellfruit) (Scorpion 4) (set 1)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4showta ,sc4showt, sc4_200_5rc, sc4showt, sc4_state, sc4showt, ROT0, "BFM","Showtime (Bellfruit) (Scorpion 4) (set 2)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4showtb ,sc4showt, sc4_200_5rc, sc4showt, sc4_state, sc4showt, ROT0, "BFM","Showtime (Bellfruit) (Scorpion 4) (set 3)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4showtc ,sc4showt, sc4_200_5rc, sc4showt, sc4_state, sc4showt, ROT0, "BFM","Showtime (Bellfruit) (Scorpion 4) (set 4)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4showtd ,sc4showt, sc4_200_5rc, sc4showt, sc4_state, sc4showt, ROT0, "BFM","Showtime (Bellfruit) (Scorpion 4) (set 5)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4showte ,sc4showt, sc4_200_5rc, sc4showt, sc4_state, sc4showt, ROT0, "BFM","Showtime (Bellfruit) (Scorpion 4) (set 6)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4showtf ,sc4showt, sc4_200_5rc, sc4showt, sc4_state, sc4showt, ROT0, "BFM","Showtime (Bellfruit) (Scorpion 4) (set 7)", MACHINE_FLAGS, layout_bfm_sc4 )
DRIVER_INIT_MEMBER(sc4_state,sc4spice)
@@ -39698,10 +39700,10 @@ INPUT_PORTS_START( sc4spice ) // this structure is generated
INPUT_PORTS_END
// PR1921 AWP SPICE IT UP SCORP4 PR1901 SPICE IT UP SOUNDS11 SPICE IT UP S.SITE
-GAMEL( 200?, sc4spice ,0, sc4_4reel_alt, sc4spice, sc4_state, sc4spice, ROT0, "BFM","Spice It Up (Bellfruit) (Scorpion 4) (set 1)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4spicea ,sc4spice, sc4_4reel_alt, sc4spice, sc4_state, sc4spice, ROT0, "BFM","Spice It Up (Bellfruit) (Scorpion 4) (set 2)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4spiceb ,sc4spice, sc4_4reel_alt, sc4spice, sc4_state, sc4spice, ROT0, "BFM","Spice It Up (Bellfruit) (Scorpion 4) (set 3)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4spicec ,sc4spice, sc4_4reel_alt, sc4spice, sc4_state, sc4spice, ROT0, "BFM","Spice It Up (Bellfruit) (Scorpion 4) (set 4)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4spice ,0, sc4_4reel_alt, sc4spice, sc4_state, sc4spice, ROT0, "BFM","Spice It Up (Bellfruit) (Scorpion 4) (set 1)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4spicea ,sc4spice, sc4_4reel_alt, sc4spice, sc4_state, sc4spice, ROT0, "BFM","Spice It Up (Bellfruit) (Scorpion 4) (set 2)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4spiceb ,sc4spice, sc4_4reel_alt, sc4spice, sc4_state, sc4spice, ROT0, "BFM","Spice It Up (Bellfruit) (Scorpion 4) (set 3)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4spicec ,sc4spice, sc4_4reel_alt, sc4spice, sc4_state, sc4spice, ROT0, "BFM","Spice It Up (Bellfruit) (Scorpion 4) (set 4)", MACHINE_FLAGS, layout_bfm_sc4 )
DRIVER_INIT_MEMBER(sc4_state,sc4sus)
{
@@ -39769,14 +39771,14 @@ INPUT_PORTS_START( sc4sus ) // this structure is generated
INPUT_PORTS_END
// PR2255 SUITUSIR SUIT SOUNDS SUITS U SIR
-GAMEL( 200?, sc4sus ,0, sc4_4reel_alt, sc4sus, sc4_state, sc4sus, ROT0, "Qps","Suits U Sir (Qps) (Scorpion 4) (set 1)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4susc ,sc4sus, sc4_4reel_alt, sc4sus, sc4_state, sc4sus, ROT0, "Qps","Suits U Sir (Qps) (Scorpion 4) (set 2)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4susf ,sc4sus, sc4_4reel_alt, sc4sus, sc4_state, sc4sus, ROT0, "Qps","Suits U Sir (Qps) (Scorpion 4) (set 3)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4susg ,sc4sus, sc4_4reel_alt, sc4sus, sc4_state, sc4sus, ROT0, "Qps","Suits U Sir (Qps) (Scorpion 4) (set 4)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4sush ,sc4sus, sc4_4reel_alt, sc4sus, sc4_state, sc4sus, ROT0, "Qps","Suits U Sir (Qps) (Scorpion 4) (set 5)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4susi ,sc4sus, sc4_4reel_alt, sc4sus, sc4_state, sc4sus, ROT0, "Qps","Suits U Sir (Qps) (Scorpion 4) (set 6)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4susj ,sc4sus, sc4_4reel_alt, sc4sus, sc4_state, sc4sus, ROT0, "Qps","Suits U Sir (Qps) (Scorpion 4) (set 7)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4susk ,sc4sus, sc4_4reel_alt, sc4sus, sc4_state, sc4sus, ROT0, "Qps","Suits U Sir (Qps) (Scorpion 4) (set 8)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4sus ,0, sc4_4reel_alt, sc4sus, sc4_state, sc4sus, ROT0, "Qps","Suits U Sir (Qps) (Scorpion 4) (set 1)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4susc ,sc4sus, sc4_4reel_alt, sc4sus, sc4_state, sc4sus, ROT0, "Qps","Suits U Sir (Qps) (Scorpion 4) (set 2)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4susf ,sc4sus, sc4_4reel_alt, sc4sus, sc4_state, sc4sus, ROT0, "Qps","Suits U Sir (Qps) (Scorpion 4) (set 3)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4susg ,sc4sus, sc4_4reel_alt, sc4sus, sc4_state, sc4sus, ROT0, "Qps","Suits U Sir (Qps) (Scorpion 4) (set 4)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4sush ,sc4sus, sc4_4reel_alt, sc4sus, sc4_state, sc4sus, ROT0, "Qps","Suits U Sir (Qps) (Scorpion 4) (set 5)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4susi ,sc4sus, sc4_4reel_alt, sc4sus, sc4_state, sc4sus, ROT0, "Qps","Suits U Sir (Qps) (Scorpion 4) (set 6)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4susj ,sc4sus, sc4_4reel_alt, sc4sus, sc4_state, sc4sus, ROT0, "Qps","Suits U Sir (Qps) (Scorpion 4) (set 7)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4susk ,sc4sus, sc4_4reel_alt, sc4sus, sc4_state, sc4sus, ROT0, "Qps","Suits U Sir (Qps) (Scorpion 4) (set 8)", MACHINE_FLAGS, layout_bfm_sc4 )
DRIVER_INIT_MEMBER(sc4_state,sc4sslam)
@@ -39838,8 +39840,8 @@ INPUT_PORTS_START( sc4sslam ) // this structure is generated
INPUT_PORTS_END
// PR3081 CLUB SUPER SLAM SUPER SLAM CLUB PR3080 SUPER SLAM SOUNDS11
-GAMEL( 200?, sc4sslam ,0, sc4_5reel, sc4sslam, sc4_state, sc4sslam, ROT0, "BFM","Super Slam (Bellfruit) (Scorpion 4) (set 1)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4sslama ,sc4sslam, sc4_5reel, sc4sslam, sc4_state, sc4sslam, ROT0, "BFM","Super Slam (Bellfruit) (Scorpion 4) (set 2)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4sslam ,0, sc4_5reel, sc4sslam, sc4_state, sc4sslam, ROT0, "BFM","Super Slam (Bellfruit) (Scorpion 4) (set 1)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4sslama ,sc4sslam, sc4_5reel, sc4sslam, sc4_state, sc4sslam, ROT0, "BFM","Super Slam (Bellfruit) (Scorpion 4) (set 2)", MACHINE_FLAGS, layout_bfm_sc4 )
// reel setup NOT correct, this will spin forever on some things
@@ -39909,10 +39911,10 @@ INPUT_PORTS_START( sc4swbak ) // this structure is generated
INPUT_PORTS_END
// PR2235 SWITCHBACK SWBK SOUNDS SWITCHBACK
-GAMEL( 200?, sc4swbak ,0, sc4_200_5ra, sc4swbak, sc4_state, sc4swbak, ROT0, "QPS","Switch Back (Mazooma) (Scorpion 4) (set 1)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4swbaka ,sc4swbak, sc4_200_5ra, sc4swbak, sc4_state, sc4swbak, ROT0, "QPS","Switch Back (Mazooma) (Scorpion 4) (set 2)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4swbakb ,sc4swbak, sc4_200_5ra, sc4swbak, sc4_state, sc4swbak, ROT0, "QPS","Switch Back (Mazooma) (Scorpion 4) (set 3)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4swbakc ,sc4swbak, sc4_200_5ra, sc4swbak, sc4_state, sc4swbak, ROT0, "QPS","Switch Back (Mazooma) (Scorpion 4) (set 4)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4swbak ,0, sc4_200_5ra, sc4swbak, sc4_state, sc4swbak, ROT0, "QPS","Switch Back (Mazooma) (Scorpion 4) (set 1)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4swbaka ,sc4swbak, sc4_200_5ra, sc4swbak, sc4_state, sc4swbak, ROT0, "QPS","Switch Back (Mazooma) (Scorpion 4) (set 2)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4swbakb ,sc4swbak, sc4_200_5ra, sc4swbak, sc4_state, sc4swbak, ROT0, "QPS","Switch Back (Mazooma) (Scorpion 4) (set 3)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4swbakc ,sc4swbak, sc4_200_5ra, sc4swbak, sc4_state, sc4swbak, ROT0, "QPS","Switch Back (Mazooma) (Scorpion 4) (set 4)", MACHINE_FLAGS, layout_bfm_sc4 )
DRIVER_INIT_MEMBER(sc4_state,sc4ttpie)
@@ -39981,15 +39983,15 @@ INPUT_PORTS_START( sc4ttpie ) // this structure is generated
INPUT_PORTS_END
// PR1714 AWP TAKE THE PIECE S4 PR1714 TAKE THE PIECE SOUNDS11 TAKETHEPIECE S.SITE
-GAMEL( 200?, sc4ttpie ,0, sc4_5reel, sc4ttpie, sc4_state, sc4ttpie, ROT0, "BFM","Take The Piece (Bellfruit) (PR1714) (Scorpion 4) (set 1)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4ttpiec ,sc4ttpie, sc4_5reel, sc4ttpie, sc4_state, sc4ttpie, ROT0, "BFM","Take The Piece (Bellfruit) (PR1714) (Scorpion 4) (set 2)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4ttpie ,0, sc4_5reel, sc4ttpie, sc4_state, sc4ttpie, ROT0, "BFM","Take The Piece (Bellfruit) (PR1714) (Scorpion 4) (set 1)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4ttpiec ,sc4ttpie, sc4_5reel, sc4ttpie, sc4_state, sc4ttpie, ROT0, "BFM","Take The Piece (Bellfruit) (PR1714) (Scorpion 4) (set 2)", MACHINE_FLAGS, layout_bfm_sc4 )
// PR1734 AWP TAKE THE PIECE S4 PR1714 TAKE THE PIECE SOUNDS11 TAKETHEPIECE S.SITE
-GAMEL( 200?, sc4ttpiea ,sc4ttpie, sc4_5reel, sc4ttpie, sc4_state, sc4ttpie, ROT0, "BFM","Take The Piece (Bellfruit) (PR1734) (Scorpion 4) (set 1)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4ttpieb ,sc4ttpie, sc4_5reel, sc4ttpie, sc4_state, sc4ttpie, ROT0, "BFM","Take The Piece (Bellfruit) (PR1734) (Scorpion 4) (set 2)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4ttpied ,sc4ttpie, sc4_5reel, sc4ttpie, sc4_state, sc4ttpie, ROT0, "BFM","Take The Piece (Bellfruit) (PR1734) (Scorpion 4) (set 3)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4ttpiee ,sc4ttpie, sc4_5reel, sc4ttpie, sc4_state, sc4ttpie, ROT0, "BFM","Take The Piece (Bellfruit) (PR1734) (Scorpion 4) (set 4)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4ttpief ,sc4ttpie, sc4_5reel, sc4ttpie, sc4_state, sc4ttpie, ROT0, "BFM","Take The Piece (Bellfruit) (PR1734) (Scorpion 4) (set 5)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4ttpieg ,sc4ttpie, sc4_5reel, sc4ttpie, sc4_state, sc4ttpie, ROT0, "BFM","Take The Piece (Bellfruit) (PR1734) (Scorpion 4) (set 6)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4ttpiea ,sc4ttpie, sc4_5reel, sc4ttpie, sc4_state, sc4ttpie, ROT0, "BFM","Take The Piece (Bellfruit) (PR1734) (Scorpion 4) (set 1)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4ttpieb ,sc4ttpie, sc4_5reel, sc4ttpie, sc4_state, sc4ttpie, ROT0, "BFM","Take The Piece (Bellfruit) (PR1734) (Scorpion 4) (set 2)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4ttpied ,sc4ttpie, sc4_5reel, sc4ttpie, sc4_state, sc4ttpie, ROT0, "BFM","Take The Piece (Bellfruit) (PR1734) (Scorpion 4) (set 3)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4ttpiee ,sc4ttpie, sc4_5reel, sc4ttpie, sc4_state, sc4ttpie, ROT0, "BFM","Take The Piece (Bellfruit) (PR1734) (Scorpion 4) (set 4)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4ttpief ,sc4ttpie, sc4_5reel, sc4ttpie, sc4_state, sc4ttpie, ROT0, "BFM","Take The Piece (Bellfruit) (PR1734) (Scorpion 4) (set 5)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4ttpieg ,sc4ttpie, sc4_5reel, sc4ttpie, sc4_state, sc4ttpie, ROT0, "BFM","Take The Piece (Bellfruit) (PR1734) (Scorpion 4) (set 6)", MACHINE_FLAGS, layout_bfm_sc4 )
DRIVER_INIT_MEMBER(sc4_state,sc4typ)
@@ -40062,10 +40064,10 @@ INPUT_PORTS_START( sc4typ ) // this structure is generated
INPUT_PORTS_END
// PR3031 AWP TAKE YOUR PICK S4 PR3001 TAKE YOUR PICK SOUNDS11 TAKE YOUR PICK S.SITE
-GAMEL( 200?, sc4typ ,0, sc4, sc4typ, sc4_state, sc4typ, ROT0, "BFM","Take Your Pick (Bellfruit) (Scorpion 4) (set 1)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4typa ,sc4typ, sc4, sc4typ, sc4_state, sc4typ, ROT0, "BFM","Take Your Pick (Bellfruit) (Scorpion 4) (set 2)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4typb ,sc4typ, sc4, sc4typ, sc4_state, sc4typ, ROT0, "BFM","Take Your Pick (Bellfruit) (Scorpion 4) (set 3)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4typc ,sc4typ, sc4, sc4typ, sc4_state, sc4typ, ROT0, "BFM","Take Your Pick (Bellfruit) (Scorpion 4) (set 4)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4typ ,0, sc4, sc4typ, sc4_state, sc4typ, ROT0, "BFM","Take Your Pick (Bellfruit) (Scorpion 4) (set 1)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4typa ,sc4typ, sc4, sc4typ, sc4_state, sc4typ, ROT0, "BFM","Take Your Pick (Bellfruit) (Scorpion 4) (set 2)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4typb ,sc4typ, sc4, sc4typ, sc4_state, sc4typ, ROT0, "BFM","Take Your Pick (Bellfruit) (Scorpion 4) (set 3)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4typc ,sc4typ, sc4, sc4typ, sc4_state, sc4typ, ROT0, "BFM","Take Your Pick (Bellfruit) (Scorpion 4) (set 4)", MACHINE_FLAGS, layout_bfm_sc4 )
DRIVER_INIT_MEMBER(sc4_state,sc4trail)
{
@@ -40119,10 +40121,10 @@ INPUT_PORTS_START( sc4trail ) // this structure is generated
INPUT_PORTS_END
// PR2170 TRAIL BLAZER TRAB SOUNDS TRAIL BLAZER
-GAMEL( 200?, sc4trail ,0, sc4_4reel_alt, sc4trail, sc4_state, sc4trail, ROT0, "Mazooma","Trailblazer (Mazooma) (Scorpion 4) (set 1)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4traila ,sc4trail, sc4_4reel_alt, sc4trail, sc4_state, sc4trail, ROT0, "Mazooma","Trailblazer (Mazooma) (Scorpion 4) (set 2)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4trailb ,sc4trail, sc4_4reel_alt, sc4trail, sc4_state, sc4trail, ROT0, "Mazooma","Trailblazer (Mazooma) (Scorpion 4) (set 3)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4trailc ,sc4trail, sc4_4reel_alt, sc4trail, sc4_state, sc4trail, ROT0, "Mazooma","Trailblazer (Mazooma) (Scorpion 4) (set 4)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4trail ,0, sc4_4reel_alt, sc4trail, sc4_state, sc4trail, ROT0, "Mazooma","Trailblazer (Mazooma) (Scorpion 4) (set 1)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4traila ,sc4trail, sc4_4reel_alt, sc4trail, sc4_state, sc4trail, ROT0, "Mazooma","Trailblazer (Mazooma) (Scorpion 4) (set 2)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4trailb ,sc4trail, sc4_4reel_alt, sc4trail, sc4_state, sc4trail, ROT0, "Mazooma","Trailblazer (Mazooma) (Scorpion 4) (set 3)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4trailc ,sc4trail, sc4_4reel_alt, sc4trail, sc4_state, sc4trail, ROT0, "Mazooma","Trailblazer (Mazooma) (Scorpion 4) (set 4)", MACHINE_FLAGS, layout_bfm_sc4 )
@@ -40194,13 +40196,13 @@ INPUT_PORTS_START( sc4bpb ) // this structure is generated
INPUT_PORTS_END
// PR1728 AWP BULLY'S PRIZE BOARD PR1708 B PRIZE BOARD SOUNDS11 BULLYSPRIZEBOARD S.SITE
-GAMEL( 200?, sc4bpb ,0, sc4_5reel, sc4bpb, sc4_state, sc4bpb, ROT0, "BFM","Bully's Prize Board (Bellfruit) (Scorpion 4) (set 1)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4bpbc ,sc4bpb, sc4_5reel, sc4bpb, sc4_state, sc4bpb, ROT0, "BFM","Bully's Prize Board (Bellfruit) (Scorpion 4) (set 2)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4bpb ,0, sc4_5reel, sc4bpb, sc4_state, sc4bpb, ROT0, "BFM","Bully's Prize Board (Bellfruit) (Scorpion 4) (set 1)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4bpbc ,sc4bpb, sc4_5reel, sc4bpb, sc4_state, sc4bpb, ROT0, "BFM","Bully's Prize Board (Bellfruit) (Scorpion 4) (set 2)", MACHINE_FLAGS, layout_bfm_sc4 )
// PR1728 AWP BULLY'S PRIZE BOARD S4 PR1708 B PRIZE BOARD SOUNDS11 BULLYSPRIZEBOARD S.SITE
-GAMEL( 200?, sc4bpba ,sc4bpb, sc4_5reel, sc4bpb, sc4_state, sc4bpb, ROT0, "BFM","Bully's Prize Board (Bellfruit) (Scorpion 4) (set 3)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4bpbb ,sc4bpb, sc4_5reel, sc4bpb, sc4_state, sc4bpb, ROT0, "BFM","Bully's Prize Board (Bellfruit) (Scorpion 4) (set 4)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4bpbd ,sc4bpb, sc4_5reel, sc4bpb, sc4_state, sc4bpb, ROT0, "BFM","Bully's Prize Board (Bellfruit) (Scorpion 4) (set 5)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4bpbe ,sc4bpb, sc4_5reel, sc4bpb, sc4_state, sc4bpb, ROT0, "BFM","Bully's Prize Board (Bellfruit) (Scorpion 4) (set 6)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4bpba ,sc4bpb, sc4_5reel, sc4bpb, sc4_state, sc4bpb, ROT0, "BFM","Bully's Prize Board (Bellfruit) (Scorpion 4) (set 3)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4bpbb ,sc4bpb, sc4_5reel, sc4bpb, sc4_state, sc4bpb, ROT0, "BFM","Bully's Prize Board (Bellfruit) (Scorpion 4) (set 4)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4bpbd ,sc4bpb, sc4_5reel, sc4bpb, sc4_state, sc4bpb, ROT0, "BFM","Bully's Prize Board (Bellfruit) (Scorpion 4) (set 5)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4bpbe ,sc4bpb, sc4_5reel, sc4bpb, sc4_state, sc4bpb, ROT0, "BFM","Bully's Prize Board (Bellfruit) (Scorpion 4) (set 6)", MACHINE_FLAGS, layout_bfm_sc4 )
DRIVER_INIT_MEMBER(sc4_state,sc4bsp)
@@ -40271,15 +40273,15 @@ INPUT_PORTS_START( sc4bsp ) // this structure is generated
INPUT_PORTS_END
// PR3040 AWP BULLYS STAR PRIZE SCORP4 PR3012 BULLYS STAR P SOUNDS11 BULLYS STARPRIZE S.SITE
-GAMEL( 200?, sc4bsp ,0, sc4_200_5ra, sc4bsp, sc4_state, sc4bsp, ROT0, "BFM","Bully's Star Prize (PR3040) (Bellfruit) (Scorpion 4) (set 1)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4bspa ,sc4bsp, sc4_200_5ra, sc4bsp, sc4_state, sc4bsp, ROT0, "BFM","Bully's Star Prize (PR3040) (Bellfruit) (Scorpion 4) (set 2)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4bspb ,sc4bsp, sc4_200_5ra, sc4bsp, sc4_state, sc4bsp, ROT0, "BFM","Bully's Star Prize (PR3040) (Bellfruit) (Scorpion 4) (set 3)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4bspc ,sc4bsp, sc4_200_5ra, sc4bsp, sc4_state, sc4bsp, ROT0, "BFM","Bully's Star Prize (PR3040) (Bellfruit) (Scorpion 4) (set 4)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4bspd ,sc4bsp, sc4_200_5ra, sc4bsp, sc4_state, sc4bsp, ROT0, "BFM","Bully's Star Prize (PR3040) (Bellfruit) (Scorpion 4) (set 5)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4bspg ,sc4bsp, sc4_200_5ra, sc4bsp, sc4_state, sc4bsp, ROT0, "BFM","Bully's Star Prize (PR3040) (Bellfruit) (Scorpion 4) (set 6)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4bsp ,0, sc4_200_5ra, sc4bsp, sc4_state, sc4bsp, ROT0, "BFM","Bully's Star Prize (PR3040) (Bellfruit) (Scorpion 4) (set 1)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4bspa ,sc4bsp, sc4_200_5ra, sc4bsp, sc4_state, sc4bsp, ROT0, "BFM","Bully's Star Prize (PR3040) (Bellfruit) (Scorpion 4) (set 2)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4bspb ,sc4bsp, sc4_200_5ra, sc4bsp, sc4_state, sc4bsp, ROT0, "BFM","Bully's Star Prize (PR3040) (Bellfruit) (Scorpion 4) (set 3)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4bspc ,sc4bsp, sc4_200_5ra, sc4bsp, sc4_state, sc4bsp, ROT0, "BFM","Bully's Star Prize (PR3040) (Bellfruit) (Scorpion 4) (set 4)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4bspd ,sc4bsp, sc4_200_5ra, sc4bsp, sc4_state, sc4bsp, ROT0, "BFM","Bully's Star Prize (PR3040) (Bellfruit) (Scorpion 4) (set 5)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4bspg ,sc4bsp, sc4_200_5ra, sc4bsp, sc4_state, sc4bsp, ROT0, "BFM","Bully's Star Prize (PR3040) (Bellfruit) (Scorpion 4) (set 6)", MACHINE_FLAGS, layout_bfm_sc4 )
// PR3042 AWP BULLYS STAR PRIZE SCORP4 PR3012 BULLYS STAR P SOUNDS11 BULLYS STARPRIZE S.SITE
-GAMEL( 200?, sc4bspe ,sc4bsp, sc4_200_5ra, sc4bsp, sc4_state, sc4bsp, ROT0, "BFM","Bully's Star Prize (PR3042) (Bellfruit) (Scorpion 4) (set 1)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4bspf ,sc4bsp, sc4_200_5ra, sc4bsp, sc4_state, sc4bsp, ROT0, "BFM","Bully's Star Prize (PR3042) (Bellfruit) (Scorpion 4) (set 2)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4bspe ,sc4bsp, sc4_200_5ra, sc4bsp, sc4_state, sc4bsp, ROT0, "BFM","Bully's Star Prize (PR3042) (Bellfruit) (Scorpion 4) (set 1)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4bspf ,sc4bsp, sc4_200_5ra, sc4bsp, sc4_state, sc4bsp, ROT0, "BFM","Bully's Star Prize (PR3042) (Bellfruit) (Scorpion 4) (set 2)", MACHINE_FLAGS, layout_bfm_sc4 )
DRIVER_INIT_MEMBER(sc4_state,sc4chain)
@@ -40356,10 +40358,10 @@ INPUT_PORTS_START( sc4chain ) // this structure is generated
INPUT_PORTS_END
// PR1316 AWP CHAIN REACTION PR1312 CHAIN REACT SOUNDS11
-GAMEL( 200?, sc4chain ,0, sc4_5reel_alt, sc4chain, sc4_state, sc4chain, ROT0, "BFM","Chain Reaction (Bellfruit) (Scorpion 4) (set 1)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4chaina ,sc4chain, sc4_5reel_alt, sc4chain, sc4_state, sc4chain, ROT0, "BFM","Chain Reaction (Bellfruit) (Scorpion 4) (set 2)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4chainb ,sc4chain, sc4_5reel_alt, sc4chain, sc4_state, sc4chain, ROT0, "BFM","Chain Reaction (Bellfruit) (Scorpion 4) (set 3)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4chainc ,sc4chain, sc4_5reel_alt, sc4chain, sc4_state, sc4chain, ROT0, "BFM","Chain Reaction (Bellfruit) (Scorpion 4) (set 4)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4chain ,0, sc4_5reel_alt, sc4chain, sc4_state, sc4chain, ROT0, "BFM","Chain Reaction (Bellfruit) (Scorpion 4) (set 1)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4chaina ,sc4chain, sc4_5reel_alt, sc4chain, sc4_state, sc4chain, ROT0, "BFM","Chain Reaction (Bellfruit) (Scorpion 4) (set 2)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4chainb ,sc4chain, sc4_5reel_alt, sc4chain, sc4_state, sc4chain, ROT0, "BFM","Chain Reaction (Bellfruit) (Scorpion 4) (set 3)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4chainc ,sc4chain, sc4_5reel_alt, sc4chain, sc4_state, sc4chain, ROT0, "BFM","Chain Reaction (Bellfruit) (Scorpion 4) (set 4)", MACHINE_FLAGS, layout_bfm_sc4 )
DRIVER_INIT_MEMBER(sc4_state,sc4clown)
@@ -40435,14 +40437,14 @@ INPUT_PORTS_START( sc4clown ) // this structure is generated
INPUT_PORTS_END
// PR1727 AWP CLOWN AROUND SCORP4 PR1707 CLOWN AROUND SOUNDS11 CLOWN AROUND S.SITE
-GAMEL( 200?, sc4clown ,0, sc4_200_5rc, sc4clown, sc4_state, sc4clown, ROT0, "BFM","Clown Around (Bellfruit) (Scorpion 4) (set 1)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4clowna ,sc4clown, sc4_200_5rc, sc4clown, sc4_state, sc4clown, ROT0, "BFM","Clown Around (Bellfruit) (Scorpion 4) (set 2)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4clownb ,sc4clown, sc4_200_5rc, sc4clown, sc4_state, sc4clown, ROT0, "BFM","Clown Around (Bellfruit) (Scorpion 4) (set 3)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4clownc ,sc4clown, sc4_200_5rc, sc4clown, sc4_state, sc4clown, ROT0, "BFM","Clown Around (Bellfruit) (Scorpion 4) (set 4)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4clownd ,sc4clown, sc4_200_5rc, sc4clown, sc4_state, sc4clown, ROT0, "BFM","Clown Around (Bellfruit) (Scorpion 4) (set 5)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4clowne ,sc4clown, sc4_200_5rc, sc4clown, sc4_state, sc4clown, ROT0, "BFM","Clown Around (Bellfruit) (Scorpion 4) (set 6)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4clownf ,sc4clown, sc4_200_5rc, sc4clown, sc4_state, sc4clown, ROT0, "BFM","Clown Around (Bellfruit) (Scorpion 4) (set 7)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4clowng ,sc4clown, sc4_200_5rc, sc4clown, sc4_state, sc4clown, ROT0, "BFM","Clown Around (Bellfruit) (Scorpion 4) (set 8)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4clown ,0, sc4_200_5rc, sc4clown, sc4_state, sc4clown, ROT0, "BFM","Clown Around (Bellfruit) (Scorpion 4) (set 1)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4clowna ,sc4clown, sc4_200_5rc, sc4clown, sc4_state, sc4clown, ROT0, "BFM","Clown Around (Bellfruit) (Scorpion 4) (set 2)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4clownb ,sc4clown, sc4_200_5rc, sc4clown, sc4_state, sc4clown, ROT0, "BFM","Clown Around (Bellfruit) (Scorpion 4) (set 3)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4clownc ,sc4clown, sc4_200_5rc, sc4clown, sc4_state, sc4clown, ROT0, "BFM","Clown Around (Bellfruit) (Scorpion 4) (set 4)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4clownd ,sc4clown, sc4_200_5rc, sc4clown, sc4_state, sc4clown, ROT0, "BFM","Clown Around (Bellfruit) (Scorpion 4) (set 5)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4clowne ,sc4clown, sc4_200_5rc, sc4clown, sc4_state, sc4clown, ROT0, "BFM","Clown Around (Bellfruit) (Scorpion 4) (set 6)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4clownf ,sc4clown, sc4_200_5rc, sc4clown, sc4_state, sc4clown, ROT0, "BFM","Clown Around (Bellfruit) (Scorpion 4) (set 7)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4clowng ,sc4clown, sc4_200_5rc, sc4clown, sc4_state, sc4clown, ROT0, "BFM","Clown Around (Bellfruit) (Scorpion 4) (set 8)", MACHINE_FLAGS, layout_bfm_sc4 )
INPUT_PORTS_START( sc4mowow ) // this structure is generated
PORT_INCLUDE( sc4_base )
@@ -40492,16 +40494,16 @@ INPUT_PORTS_START( sc4mowow ) // this structure is generated
INPUT_PORTS_END
/* wrong sound roms */
-GAMEL( 200?, sc4mowow ,0, sc4, sc4mowow, sc4_state, sc4, ROT0, "Mazooma","Monopoly Wheel Of Wealth (Mazooma) (PR2118) (Scorpion 4) (set 1)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 ) // PR2118 MONOPOLY WOTW WOTW SOUNDS MONOPOLY WOTW 8P
-GAMEL( 200?, sc4mowowa ,sc4mowow, sc4, sc4mowow, sc4_state, sc4, ROT0, "Mazooma","Monopoly Wheel Of Wealth (Mazooma) (PR2118) (Scorpion 4) (set 2)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 ) // ^^
-GAMEL( 200?, sc4mowowb ,sc4mowow, sc4, sc4mowow, sc4_state, sc4, ROT0, "Mazooma","Monopoly Wheel Of Wealth (Mazooma) (PR2118) (Scorpion 4) (set 3)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 ) // ^^
-GAMEL( 200?, sc4mowowc ,sc4mowow, sc4, sc4mowow, sc4_state, sc4, ROT0, "Mazooma","Monopoly Wheel Of Wealth (Mazooma) (PR2118) (Scorpion 4) (set 4)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 ) // ^^
+GAMEL( 200?, sc4mowow ,0, sc4, sc4mowow, sc4_state, sc4, ROT0, "Mazooma","Monopoly Wheel Of Wealth (Mazooma) (PR2118) (Scorpion 4) (set 1)", MACHINE_FLAGS, layout_bfm_sc4 ) // PR2118 MONOPOLY WOTW WOTW SOUNDS MONOPOLY WOTW 8P
+GAMEL( 200?, sc4mowowa ,sc4mowow, sc4, sc4mowow, sc4_state, sc4, ROT0, "Mazooma","Monopoly Wheel Of Wealth (Mazooma) (PR2118) (Scorpion 4) (set 2)", MACHINE_FLAGS, layout_bfm_sc4 ) // ^^
+GAMEL( 200?, sc4mowowb ,sc4mowow, sc4, sc4mowow, sc4_state, sc4, ROT0, "Mazooma","Monopoly Wheel Of Wealth (Mazooma) (PR2118) (Scorpion 4) (set 3)", MACHINE_FLAGS, layout_bfm_sc4 ) // ^^
+GAMEL( 200?, sc4mowowc ,sc4mowow, sc4, sc4mowow, sc4_state, sc4, ROT0, "Mazooma","Monopoly Wheel Of Wealth (Mazooma) (PR2118) (Scorpion 4) (set 4)", MACHINE_FLAGS, layout_bfm_sc4 ) // ^^
-GAMEL( 200?, sc4mwwtb ,0, sc4, sc4, sc4_state, sc4, ROT0, "Mazooma","Monopoly Wheel Of Wealth (Mazooma) (PR2389, Top Box) (Scorpion 4) (set 1)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 ) // PR2389 WHEEL OF WEALTH WOWT SOUNDS WHEEL OF WEAL
-GAMEL( 200?, sc4mwwtba ,sc4mwwtb, sc4, sc4, sc4_state, sc4, ROT0, "Mazooma","Monopoly Wheel Of Wealth (Mazooma) (PR2389, Top Box) (Scorpion 4) (set 2)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 ) // ^^
-GAMEL( 200?, sc4mwwtbb ,sc4mwwtb, sc4, sc4, sc4_state, sc4, ROT0, "Mazooma","Monopoly Wheel Of Wealth (Mazooma) (PR2389, Top Box) (Scorpion 4) (set 3)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 ) // ^^
-GAMEL( 200?, sc4mwwtbc ,sc4mwwtb, sc4, sc4, sc4_state, sc4, ROT0, "Mazooma","Monopoly Wheel Of Wealth (Mazooma) (PR2389, Top Box) (Scorpion 4) (set 4)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )// ^^
-GAMEL( 200?, sc4mwwtbd ,sc4mwwtb, sc4, sc4, sc4_state, sc4, ROT0, "Mazooma","Monopoly Wheel Of Wealth (Mazooma) (PR2389, Top Box) (Scorpion 4) (set 5)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )// ^^
+GAMEL( 200?, sc4mwwtb ,0, sc4, sc4, sc4_state, sc4, ROT0, "Mazooma","Monopoly Wheel Of Wealth (Mazooma) (PR2389, Top Box) (Scorpion 4) (set 1)", MACHINE_FLAGS, layout_bfm_sc4 ) // PR2389 WHEEL OF WEALTH WOWT SOUNDS WHEEL OF WEAL
+GAMEL( 200?, sc4mwwtba ,sc4mwwtb, sc4, sc4, sc4_state, sc4, ROT0, "Mazooma","Monopoly Wheel Of Wealth (Mazooma) (PR2389, Top Box) (Scorpion 4) (set 2)", MACHINE_FLAGS, layout_bfm_sc4 ) // ^^
+GAMEL( 200?, sc4mwwtbb ,sc4mwwtb, sc4, sc4, sc4_state, sc4, ROT0, "Mazooma","Monopoly Wheel Of Wealth (Mazooma) (PR2389, Top Box) (Scorpion 4) (set 3)", MACHINE_FLAGS, layout_bfm_sc4 ) // ^^
+GAMEL( 200?, sc4mwwtbc ,sc4mwwtb, sc4, sc4, sc4_state, sc4, ROT0, "Mazooma","Monopoly Wheel Of Wealth (Mazooma) (PR2389, Top Box) (Scorpion 4) (set 4)", MACHINE_FLAGS, layout_bfm_sc4 )// ^^
+GAMEL( 200?, sc4mwwtbd ,sc4mwwtb, sc4, sc4, sc4_state, sc4, ROT0, "Mazooma","Monopoly Wheel Of Wealth (Mazooma) (PR2389, Top Box) (Scorpion 4) (set 5)", MACHINE_FLAGS, layout_bfm_sc4 )// ^^
DRIVER_INIT_MEMBER(sc4_state,sc4bwow)
@@ -40571,8 +40573,8 @@ INPUT_PORTS_START( sc4bwow ) // this structure is generated
// 0x0010 - "hopdmp" // standard input (expected here)
INPUT_PORTS_END
-GAMEL( 200?, sc4bwow ,0, sc4_200_5ra, sc4bwow, sc4_state, sc4bwow, ROT0, "BFM","Wheel Of Wealth (Bellfruit) (PR1726) (Scorpion 4) (WHEL013, set 1)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 ) // PR1726 AWP WHEEL OF WEALTH PR1706 WHEEL OF WEALTH SOUNDS11 WHEEL OF WEALTH S.SITE
-GAMEL( 200?, sc4bwowa ,sc4bwow, sc4_200_5ra, sc4bwow, sc4_state, sc4bwow, ROT0, "BFM","Wheel Of Wealth (Bellfruit) (PR1726) (Scorpion 4) (WHEL013, set 2)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 ) // ^^
+GAMEL( 200?, sc4bwow ,0, sc4_200_5ra, sc4bwow, sc4_state, sc4bwow, ROT0, "BFM","Wheel Of Wealth (Bellfruit) (PR1726) (Scorpion 4) (WHEL013, set 1)", MACHINE_FLAGS, layout_bfm_sc4 ) // PR1726 AWP WHEEL OF WEALTH PR1706 WHEEL OF WEALTH SOUNDS11 WHEEL OF WEALTH S.SITE
+GAMEL( 200?, sc4bwowa ,sc4bwow, sc4_200_5ra, sc4bwow, sc4_state, sc4bwow, ROT0, "BFM","Wheel Of Wealth (Bellfruit) (PR1726) (Scorpion 4) (WHEL013, set 2)", MACHINE_FLAGS, layout_bfm_sc4 ) // ^^
DRIVER_INIT_MEMBER(sc4_state,sc4nunsm)
@@ -40634,16 +40636,16 @@ INPUT_PORTS_START( sc4nunsm ) // this structure is generated
INPUT_PORTS_END
// PR2166 NUN N ROSES NANR SOUNDS NUNS N ROSES
-GAMEL( 200?, sc4nunsm ,0, sc4_200_4ra, sc4nunsm, sc4_state, sc4nunsm, ROT0, "Mazooma","Nuns 'n' Roses (Mazooma) (Scorpion 4) (set 1)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4nunsmb ,sc4nunsm, sc4_200_4ra, sc4nunsm, sc4_state, sc4nunsm, ROT0, "Mazooma","Nuns 'n' Roses (Mazooma) (Scorpion 4) (set 2)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4nunsmc ,sc4nunsm, sc4_200_4ra, sc4nunsm, sc4_state, sc4nunsm, ROT0, "Mazooma","Nuns 'n' Roses (Mazooma) (Scorpion 4) (set 3)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4nunsmd ,sc4nunsm, sc4_200_4ra, sc4nunsm, sc4_state, sc4nunsm, ROT0, "Mazooma","Nuns 'n' Roses (Mazooma) (Scorpion 4) (set 4)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4nunsme ,sc4nunsm, sc4_200_4ra, sc4nunsm, sc4_state, sc4nunsm, ROT0, "Mazooma","Nuns 'n' Roses (Mazooma) (Scorpion 4) (set 5)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4nunsmf ,sc4nunsm, sc4_200_4ra, sc4nunsm, sc4_state, sc4nunsm, ROT0, "Mazooma","Nuns 'n' Roses (Mazooma) (Scorpion 4) (set 6)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4nunsmg ,sc4nunsm, sc4_200_4ra, sc4nunsm, sc4_state, sc4nunsm, ROT0, "Mazooma","Nuns 'n' Roses (Mazooma) (Scorpion 4) (set 7)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4nunsmh ,sc4nunsm, sc4_200_4ra, sc4nunsm, sc4_state, sc4nunsm, ROT0, "Mazooma","Nuns 'n' Roses (Mazooma) (Scorpion 4) (set 8)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4nunsmi ,sc4nunsm, sc4_200_4ra, sc4nunsm, sc4_state, sc4nunsm, ROT0, "Mazooma","Nuns 'n' Roses (Mazooma) (Scorpion 4) (set 9)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4nunsmj ,sc4nunsm, sc4_200_4ra, sc4nunsm, sc4_state, sc4nunsm, ROT0, "Mazooma","Nuns 'n' Roses (Mazooma) (Scorpion 4) (set 10)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4nunsm ,0, sc4_200_4ra, sc4nunsm, sc4_state, sc4nunsm, ROT0, "Mazooma","Nuns 'n' Roses (Mazooma) (Scorpion 4) (set 1)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4nunsmb ,sc4nunsm, sc4_200_4ra, sc4nunsm, sc4_state, sc4nunsm, ROT0, "Mazooma","Nuns 'n' Roses (Mazooma) (Scorpion 4) (set 2)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4nunsmc ,sc4nunsm, sc4_200_4ra, sc4nunsm, sc4_state, sc4nunsm, ROT0, "Mazooma","Nuns 'n' Roses (Mazooma) (Scorpion 4) (set 3)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4nunsmd ,sc4nunsm, sc4_200_4ra, sc4nunsm, sc4_state, sc4nunsm, ROT0, "Mazooma","Nuns 'n' Roses (Mazooma) (Scorpion 4) (set 4)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4nunsme ,sc4nunsm, sc4_200_4ra, sc4nunsm, sc4_state, sc4nunsm, ROT0, "Mazooma","Nuns 'n' Roses (Mazooma) (Scorpion 4) (set 5)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4nunsmf ,sc4nunsm, sc4_200_4ra, sc4nunsm, sc4_state, sc4nunsm, ROT0, "Mazooma","Nuns 'n' Roses (Mazooma) (Scorpion 4) (set 6)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4nunsmg ,sc4nunsm, sc4_200_4ra, sc4nunsm, sc4_state, sc4nunsm, ROT0, "Mazooma","Nuns 'n' Roses (Mazooma) (Scorpion 4) (set 7)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4nunsmh ,sc4nunsm, sc4_200_4ra, sc4nunsm, sc4_state, sc4nunsm, ROT0, "Mazooma","Nuns 'n' Roses (Mazooma) (Scorpion 4) (set 8)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4nunsmi ,sc4nunsm, sc4_200_4ra, sc4nunsm, sc4_state, sc4nunsm, ROT0, "Mazooma","Nuns 'n' Roses (Mazooma) (Scorpion 4) (set 9)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4nunsmj ,sc4nunsm, sc4_200_4ra, sc4nunsm, sc4_state, sc4nunsm, ROT0, "Mazooma","Nuns 'n' Roses (Mazooma) (Scorpion 4) (set 10)", MACHINE_FLAGS, layout_bfm_sc4 )
DRIVER_INIT_MEMBER(sc4_state,sc4acesh)
@@ -40695,10 +40697,10 @@ INPUT_PORTS_START( sc4acesh ) // this structure is generated
INPUT_PORTS_END
// PR2070 ACES HIGH ACEHI SOUNDS ACES HIGH
-GAMEL( 200?, sc4acesh ,0, sc4_200_5rc, sc4acesh, sc4_state, sc4acesh, ROT0, "Mazooma","Aces High (Mazooma) (Scorpion 4) (set 1)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4acesha ,sc4acesh, sc4_200_5rc, sc4acesh, sc4_state, sc4acesh, ROT0, "Mazooma","Aces High (Mazooma) (Scorpion 4) (set 2)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4aceshb ,sc4acesh, sc4_200_5rc, sc4acesh, sc4_state, sc4acesh, ROT0, "Mazooma","Aces High (Mazooma) (Scorpion 4) (set 3)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4aceshc ,sc4acesh, sc4_200_5rc, sc4acesh, sc4_state, sc4acesh, ROT0, "Mazooma","Aces High (Mazooma) (Scorpion 4) (set 4)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4acesh ,0, sc4_200_5rc, sc4acesh, sc4_state, sc4acesh, ROT0, "Mazooma","Aces High (Mazooma) (Scorpion 4) (set 1)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4acesha ,sc4acesh, sc4_200_5rc, sc4acesh, sc4_state, sc4acesh, ROT0, "Mazooma","Aces High (Mazooma) (Scorpion 4) (set 2)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4aceshb ,sc4acesh, sc4_200_5rc, sc4acesh, sc4_state, sc4acesh, ROT0, "Mazooma","Aces High (Mazooma) (Scorpion 4) (set 3)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4aceshc ,sc4acesh, sc4_200_5rc, sc4acesh, sc4_state, sc4acesh, ROT0, "Mazooma","Aces High (Mazooma) (Scorpion 4) (set 4)", MACHINE_FLAGS, layout_bfm_sc4 )
DRIVER_INIT_MEMBER(sc4_state,sc4bed)
@@ -40757,12 +40759,12 @@ INPUT_PORTS_START( sc4bed ) // this structure is generated
INPUT_PORTS_END
// PR2094 BEDAZZLED BEDZ SOUNDS BEDAZZLED
-GAMEL( 200?, sc4bed ,0, sc4_4reel_alt, sc4bed, sc4_state, sc4bed, ROT0, "Mazooma","Bedazzled (Mazooma) (Scorpion 4) (set 1)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4beda ,sc4bed, sc4_4reel_alt, sc4bed, sc4_state, sc4bed, ROT0, "Mazooma","Bedazzled (Mazooma) (Scorpion 4) (set 2)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4bedb ,sc4bed, sc4_4reel_alt, sc4bed, sc4_state, sc4bed, ROT0, "Mazooma","Bedazzled (Mazooma) (Scorpion 4) (set 3)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4bedc ,sc4bed, sc4_4reel_alt, sc4bed, sc4_state, sc4bed, ROT0, "Mazooma","Bedazzled (Mazooma) (Scorpion 4) (set 4)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4bedd ,sc4bed, sc4_4reel_alt, sc4bed, sc4_state, sc4bed, ROT0, "Mazooma","Bedazzled (Mazooma) (Scorpion 4) (set 5)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4bede ,sc4bed, sc4_4reel_alt, sc4bed, sc4_state, sc4bed, ROT0, "Mazooma","Bedazzled (Mazooma) (Scorpion 4) (set 6)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4bed ,0, sc4_4reel_alt, sc4bed, sc4_state, sc4bed, ROT0, "Mazooma","Bedazzled (Mazooma) (Scorpion 4) (set 1)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4beda ,sc4bed, sc4_4reel_alt, sc4bed, sc4_state, sc4bed, ROT0, "Mazooma","Bedazzled (Mazooma) (Scorpion 4) (set 2)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4bedb ,sc4bed, sc4_4reel_alt, sc4bed, sc4_state, sc4bed, ROT0, "Mazooma","Bedazzled (Mazooma) (Scorpion 4) (set 3)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4bedc ,sc4bed, sc4_4reel_alt, sc4bed, sc4_state, sc4bed, ROT0, "Mazooma","Bedazzled (Mazooma) (Scorpion 4) (set 4)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4bedd ,sc4bed, sc4_4reel_alt, sc4bed, sc4_state, sc4bed, ROT0, "Mazooma","Bedazzled (Mazooma) (Scorpion 4) (set 5)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4bede ,sc4bed, sc4_4reel_alt, sc4bed, sc4_state, sc4bed, ROT0, "Mazooma","Bedazzled (Mazooma) (Scorpion 4) (set 6)", MACHINE_FLAGS, layout_bfm_sc4 )
DRIVER_INIT_MEMBER(sc4_state,sc4bedcl)
@@ -40829,12 +40831,12 @@ INPUT_PORTS_START( sc4bedcl ) // this structure is generated
INPUT_PORTS_END
// PR2102 CLUB BEDAZZLED CBED SOUNDS CLUB BEDAZZLED
-GAMEL( 200?, sc4bedcl ,0, sc4_5reel, sc4bedcl, sc4_state, sc4bedcl, ROT0, "Mazooma","Bedazzled Club (Mazooma) (Scorpion 4) (set 1)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4bedcl ,0, sc4_5reel, sc4bedcl, sc4_state, sc4bedcl, ROT0, "Mazooma","Bedazzled Club (Mazooma) (Scorpion 4) (set 1)", MACHINE_FLAGS, layout_bfm_sc4 )
// PR2102 CLUB BEDAZZLED CLUB BEDAZZLED CLUB CBED SOUNDS CLUB BEDAZZLED
-GAMEL( 200?, sc4bedcla ,sc4bedcl, sc4_5reel, sc4bedcl, sc4_state, sc4bedcl, ROT0, "Mazooma","Bedazzled Club (Mazooma) (Scorpion 4) (set 2)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4bedclb ,sc4bedcl, sc4_5reel, sc4bedcl, sc4_state, sc4bedcl, ROT0, "Mazooma","Bedazzled Club (Mazooma) (Scorpion 4) (set 3)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4bedclc ,sc4bedcl, sc4_5reel, sc4bedcl, sc4_state, sc4bedcl, ROT0, "Mazooma","Bedazzled Club (Mazooma) (Scorpion 4) (set 4)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4bedcld ,sc4bedcl, sc4_5reel, sc4bedcl, sc4_state, sc4bedcl, ROT0, "Mazooma","Bedazzled Club (Mazooma) (Scorpion 4) (set 5)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4bedcla ,sc4bedcl, sc4_5reel, sc4bedcl, sc4_state, sc4bedcl, ROT0, "Mazooma","Bedazzled Club (Mazooma) (Scorpion 4) (set 2)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4bedclb ,sc4bedcl, sc4_5reel, sc4bedcl, sc4_state, sc4bedcl, ROT0, "Mazooma","Bedazzled Club (Mazooma) (Scorpion 4) (set 3)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4bedclc ,sc4bedcl, sc4_5reel, sc4bedcl, sc4_state, sc4bedcl, ROT0, "Mazooma","Bedazzled Club (Mazooma) (Scorpion 4) (set 4)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4bedcld ,sc4bedcl, sc4_5reel, sc4bedcl, sc4_state, sc4bedcl, ROT0, "Mazooma","Bedazzled Club (Mazooma) (Scorpion 4) (set 5)", MACHINE_FLAGS, layout_bfm_sc4 )
DRIVER_INIT_MEMBER(sc4_state,sc4bblas)
{
@@ -40891,13 +40893,13 @@ INPUT_PORTS_START( sc4bblas ) // this structure is generated
INPUT_PORTS_END
// PR2083 BIG BLASTER BBST SOUNDS BIG BLASTER
-GAMEL( 200?, sc4bblas ,0, sc4_4reel_alt, sc4bblas, sc4_state, sc4bblas, ROT0, "Mazooma","Big Blaster (Mazooma) (Scorpion 4) (set 1)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4bblasa ,sc4bblas, sc4_4reel_alt, sc4bblas, sc4_state, sc4bblas, ROT0, "Mazooma","Big Blaster (Mazooma) (Scorpion 4) (set 2)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4bblasb ,sc4bblas, sc4_4reel_alt, sc4bblas, sc4_state, sc4bblas, ROT0, "Mazooma","Big Blaster (Mazooma) (Scorpion 4) (set 3)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4bblasc ,sc4bblas, sc4_4reel_alt, sc4bblas, sc4_state, sc4bblas_mbus, ROT0, "Mazooma","Big Blaster (Mazooma) (Scorpion 4) (set 4)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4bblasd ,sc4bblas, sc4_4reel_alt, sc4bblas, sc4_state, sc4bblas_mbus, ROT0, "Mazooma","Big Blaster (Mazooma) (Scorpion 4) (set 5)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4bblase ,sc4bblas, sc4_4reel_alt, sc4bblas, sc4_state, sc4bblas_mbus, ROT0, "Mazooma","Big Blaster (Mazooma) (Scorpion 4) (set 6)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4bblasf ,sc4bblas, sc4_4reel_alt, sc4bblas, sc4_state, sc4bblas_mbus, ROT0, "Mazooma","Big Blaster (Mazooma) (Scorpion 4) (set 7)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4bblas ,0, sc4_4reel_alt, sc4bblas, sc4_state, sc4bblas, ROT0, "Mazooma","Big Blaster (Mazooma) (Scorpion 4) (set 1)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4bblasa ,sc4bblas, sc4_4reel_alt, sc4bblas, sc4_state, sc4bblas, ROT0, "Mazooma","Big Blaster (Mazooma) (Scorpion 4) (set 2)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4bblasb ,sc4bblas, sc4_4reel_alt, sc4bblas, sc4_state, sc4bblas, ROT0, "Mazooma","Big Blaster (Mazooma) (Scorpion 4) (set 3)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4bblasc ,sc4bblas, sc4_4reel_alt, sc4bblas, sc4_state, sc4bblas_mbus, ROT0, "Mazooma","Big Blaster (Mazooma) (Scorpion 4) (set 4)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4bblasd ,sc4bblas, sc4_4reel_alt, sc4bblas, sc4_state, sc4bblas_mbus, ROT0, "Mazooma","Big Blaster (Mazooma) (Scorpion 4) (set 5)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4bblase ,sc4bblas, sc4_4reel_alt, sc4bblas, sc4_state, sc4bblas_mbus, ROT0, "Mazooma","Big Blaster (Mazooma) (Scorpion 4) (set 6)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4bblasf ,sc4bblas, sc4_4reel_alt, sc4bblas, sc4_state, sc4bblas_mbus, ROT0, "Mazooma","Big Blaster (Mazooma) (Scorpion 4) (set 7)", MACHINE_FLAGS, layout_bfm_sc4 )
DRIVER_INIT_MEMBER(sc4_state,sc4bankb)
{
@@ -40950,11 +40952,11 @@ INPUT_PORTS_START( sc4bankb ) // this structure is generated
INPUT_PORTS_END
// PR???? BANKETYBANK V1.0 BANKETYBANKSND BANKETY BANK
-GAMEL( 200?, sc4bankb ,0, sc4_200_5r, sc4bankb, sc4_state, sc4bankb, ROT0, "Qps","Bankety Bank (Qps) (Scorpion 4) (set 1)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4bankba ,sc4bankb, sc4_200_5r, sc4bankb, sc4_state, sc4bankb, ROT0, "Qps","Bankety Bank (Qps) (Scorpion 4) (set 2)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4bankb ,0, sc4_200_5r, sc4bankb, sc4_state, sc4bankb, ROT0, "Qps","Bankety Bank (Qps) (Scorpion 4) (set 1)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4bankba ,sc4bankb, sc4_200_5r, sc4bankb, sc4_state, sc4bankb, ROT0, "Qps","Bankety Bank (Qps) (Scorpion 4) (set 2)", MACHINE_FLAGS, layout_bfm_sc4 )
// PR???? BANKETYBANK 011 BANKETYBANKSND BANKETY BANK
-GAMEL( 200?, sc4bb ,sc4bankb, sc4_200_5r, sc4bankb, sc4_state, sc4bankb, ROT0, "Qps","Bankety Bank (Qps) (Scorpion 4) (set 3)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4bba ,sc4bankb, sc4_200_5r, sc4bankb, sc4_state, sc4bankb, ROT0, "Qps","Bankety Bank (Qps) (Scorpion 4) (set 4)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4bb ,sc4bankb, sc4_200_5r, sc4bankb, sc4_state, sc4bankb, ROT0, "Qps","Bankety Bank (Qps) (Scorpion 4) (set 3)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4bba ,sc4bankb, sc4_200_5r, sc4bankb, sc4_state, sc4bankb, ROT0, "Qps","Bankety Bank (Qps) (Scorpion 4) (set 4)", MACHINE_FLAGS, layout_bfm_sc4 )
DRIVER_INIT_MEMBER(sc4_state,sc4bobcl)
{
@@ -41024,8 +41026,8 @@ INPUT_PORTS_START( sc4bobcl ) // this structure is generated
INPUT_PORTS_END
// PR2298 CLUB BOBBY DAZZLER CLUB BOB DAZZLER CLUB CLUBBOBD SOUNDS
-GAMEL( 200?, sc4bobcl ,0, sc4_5reel, sc4bobcl, sc4_state, sc4bobcl, ROT0, "Mazooma","Bobby Dazzler Club (Mazooma) (Scorpion 4) (set 1)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4bobcla ,sc4bobcl, sc4_5reel, sc4bobcl, sc4_state, sc4bobcl, ROT0, "Mazooma","Bobby Dazzler Club (Mazooma) (Scorpion 4) (set 2)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4bobcl ,0, sc4_5reel, sc4bobcl, sc4_state, sc4bobcl, ROT0, "Mazooma","Bobby Dazzler Club (Mazooma) (Scorpion 4) (set 1)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4bobcla ,sc4bobcl, sc4_5reel, sc4bobcl, sc4_state, sc4bobcl, ROT0, "Mazooma","Bobby Dazzler Club (Mazooma) (Scorpion 4) (set 2)", MACHINE_FLAGS, layout_bfm_sc4 )
DRIVER_INIT_MEMBER(sc4_state,sc4brksp)
{
@@ -41080,8 +41082,8 @@ INPUT_PORTS_START( sc4brksp ) // this structure is generated
INPUT_PORTS_END
// PR2033 BREAK THE SPELL SPELL SOUNDS BREAK THE SPELL
-GAMEL( 200?, sc4brksp ,0, sc4_5reel, sc4brksp, sc4_state, sc4brksp, ROT0, "Mazooma","Break The Spell (Mazooma) (Scorpion 4) (set 1)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4brkspa ,sc4brksp, sc4_5reel, sc4brksp, sc4_state, sc4brksp, ROT0, "Mazooma","Break The Spell (Mazooma) (Scorpion 4) (set 2)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4brksp ,0, sc4_5reel, sc4brksp, sc4_state, sc4brksp, ROT0, "Mazooma","Break The Spell (Mazooma) (Scorpion 4) (set 1)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4brkspa ,sc4brksp, sc4_5reel, sc4brksp, sc4_state, sc4brksp, ROT0, "Mazooma","Break The Spell (Mazooma) (Scorpion 4) (set 2)", MACHINE_FLAGS, layout_bfm_sc4 )
DRIVER_INIT_MEMBER(sc4_state,sc4bulcl)
{
@@ -41147,16 +41149,16 @@ INPUT_PORTS_START( sc4bulcl ) // this structure is generated
INPUT_PORTS_END
// PR1753 CLUB BULLSEYE BULLSEYE CLUB PR1751 BULLSEYE SOUNDS11 BULLSYE
-GAMEL( 200?, sc4bulcl ,0, sc4_5reel, sc4bulcl, sc4_state, sc4bulcl, ROT0, "BFM","Bullseye Club (Bellfruit) (Scorpion 4) (set 1)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4bulcla ,sc4bulcl, sc4_5reel, sc4bulcl, sc4_state, sc4bulcl, ROT0, "BFM","Bullseye Club (Bellfruit) (Scorpion 4) (set 2)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4bulclb ,sc4bulcl, sc4_5reel, sc4bulcl, sc4_state, sc4bulcl, ROT0, "BFM","Bullseye Club (Bellfruit) (Scorpion 4) (set 3)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4bulclc ,sc4bulcl, sc4_5reel, sc4bulcl, sc4_state, sc4bulcl, ROT0, "BFM","Bullseye Club (Bellfruit) (Scorpion 4) (set 4)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4bulcld ,sc4bulcl, sc4_5reel, sc4bulcl, sc4_state, sc4bulcl, ROT0, "BFM","Bullseye Club (Bellfruit) (Scorpion 4) (set 5)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4bulcle ,sc4bulcl, sc4_5reel, sc4bulcl, sc4_state, sc4bulcl, ROT0, "BFM","Bullseye Club (Bellfruit) (Scorpion 4) (set 6)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4bulclf ,sc4bulcl, sc4_5reel, sc4bulcl, sc4_state, sc4bulcl, ROT0, "BFM","Bullseye Club (Bellfruit) (Scorpion 4) (set 7)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4bulclg ,sc4bulcl, sc4_5reel, sc4bulcl, sc4_state, sc4bulcl, ROT0, "BFM","Bullseye Club (Bellfruit) (Scorpion 4) (set 8)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4bulclh ,sc4bulcl, sc4_5reel, sc4bulcl, sc4_state, sc4bulcl, ROT0, "BFM","Bullseye Club (Bellfruit) (Scorpion 4) (set 9)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4bulcli ,sc4bulcl, sc4_5reel, sc4bulcl, sc4_state, sc4bulcl, ROT0, "BFM","Bullseye Club (Bellfruit) (Scorpion 4) (set 10)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4bulcl ,0, sc4_5reel, sc4bulcl, sc4_state, sc4bulcl, ROT0, "BFM","Bullseye Club (Bellfruit) (Scorpion 4) (set 1)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4bulcla ,sc4bulcl, sc4_5reel, sc4bulcl, sc4_state, sc4bulcl, ROT0, "BFM","Bullseye Club (Bellfruit) (Scorpion 4) (set 2)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4bulclb ,sc4bulcl, sc4_5reel, sc4bulcl, sc4_state, sc4bulcl, ROT0, "BFM","Bullseye Club (Bellfruit) (Scorpion 4) (set 3)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4bulclc ,sc4bulcl, sc4_5reel, sc4bulcl, sc4_state, sc4bulcl, ROT0, "BFM","Bullseye Club (Bellfruit) (Scorpion 4) (set 4)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4bulcld ,sc4bulcl, sc4_5reel, sc4bulcl, sc4_state, sc4bulcl, ROT0, "BFM","Bullseye Club (Bellfruit) (Scorpion 4) (set 5)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4bulcle ,sc4bulcl, sc4_5reel, sc4bulcl, sc4_state, sc4bulcl, ROT0, "BFM","Bullseye Club (Bellfruit) (Scorpion 4) (set 6)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4bulclf ,sc4bulcl, sc4_5reel, sc4bulcl, sc4_state, sc4bulcl, ROT0, "BFM","Bullseye Club (Bellfruit) (Scorpion 4) (set 7)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4bulclg ,sc4bulcl, sc4_5reel, sc4bulcl, sc4_state, sc4bulcl, ROT0, "BFM","Bullseye Club (Bellfruit) (Scorpion 4) (set 8)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4bulclh ,sc4bulcl, sc4_5reel, sc4bulcl, sc4_state, sc4bulcl, ROT0, "BFM","Bullseye Club (Bellfruit) (Scorpion 4) (set 9)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4bulcli ,sc4bulcl, sc4_5reel, sc4bulcl, sc4_state, sc4bulcl, ROT0, "BFM","Bullseye Club (Bellfruit) (Scorpion 4) (set 10)", MACHINE_FLAGS, layout_bfm_sc4 )
DRIVER_INIT_MEMBER(sc4_state,sc4carry)
{
@@ -41222,8 +41224,8 @@ INPUT_PORTS_START( sc4carry ) // this structure is generated
INPUT_PORTS_END
// PR1113 CARRY ON WINNING PR1113 CARRY ON WINNING SOUNDS11
-GAMEL( 200?, sc4carry ,0, sc4_4reel_alt, sc4carry, sc4_state, sc4carry, ROT0, "BFM","Carry On Winning (Bellfruit) (Scorpion 4) (set 1)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4carrya ,sc4carry, sc4_4reel_alt, sc4carry, sc4_state, sc4carry, ROT0, "BFM","Carry On Winning (Bellfruit) (Scorpion 4) (set 2)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4carry ,0, sc4_4reel_alt, sc4carry, sc4_state, sc4carry, ROT0, "BFM","Carry On Winning (Bellfruit) (Scorpion 4) (set 1)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4carrya ,sc4carry, sc4_4reel_alt, sc4carry, sc4_state, sc4carry, ROT0, "BFM","Carry On Winning (Bellfruit) (Scorpion 4) (set 2)", MACHINE_FLAGS, layout_bfm_sc4 )
INPUT_PORTS_START( sc4cbaz ) // this structure is generated
PORT_INCLUDE( sc4_base )
@@ -41285,20 +41287,20 @@ INPUT_PORTS_START( sc4cbaz ) // this structure is generated
INPUT_PORTS_END
// PR1349 CLUB CASH BAZAAR PR1349 CLUB CASH BAZAAR SOUNDS11
-GAMEL( 200?, sc4cbaz ,0, sc4, sc4cbaz, sc4_state, sc4, ROT0, "BFM","Cash Bazaar Club (Bellfruit) (Scorpion 4) (set 1)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4cbaza ,sc4cbaz, sc4, sc4cbaz, sc4_state, sc4, ROT0, "BFM","Cash Bazaar Club (Bellfruit) (Scorpion 4) (set 2)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4cbazb ,sc4cbaz, sc4, sc4cbaz, sc4_state, sc4, ROT0, "BFM","Cash Bazaar Club (Bellfruit) (Scorpion 4) (set 3)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4cbazc ,sc4cbaz, sc4, sc4cbaz, sc4_state, sc4, ROT0, "BFM","Cash Bazaar Club (Bellfruit) (Scorpion 4) (set 4)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4cbazd ,sc4cbaz, sc4, sc4cbaz, sc4_state, sc4, ROT0, "BFM","Cash Bazaar Club (Bellfruit) (Scorpion 4) (set 5)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4cbaze ,sc4cbaz, sc4, sc4cbaz, sc4_state, sc4, ROT0, "BFM","Cash Bazaar Club (Bellfruit) (Scorpion 4) (set 6)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4cbazf ,sc4cbaz, sc4, sc4cbaz, sc4_state, sc4, ROT0, "BFM","Cash Bazaar Club (Bellfruit) (Scorpion 4) (set 7)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4cbazg ,sc4cbaz, sc4, sc4cbaz, sc4_state, sc4, ROT0, "BFM","Cash Bazaar Club (Bellfruit) (Scorpion 4) (set 8)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4cbazh ,sc4cbaz, sc4, sc4cbaz, sc4_state, sc4, ROT0, "BFM","Cash Bazaar Club (Bellfruit) (Scorpion 4) (set 9)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4cbazi ,sc4cbaz, sc4, sc4cbaz, sc4_state, sc4, ROT0, "BFM","Cash Bazaar Club (Bellfruit) (Scorpion 4) (set 10)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4cbaz ,0, sc4, sc4cbaz, sc4_state, sc4, ROT0, "BFM","Cash Bazaar Club (Bellfruit) (Scorpion 4) (set 1)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4cbaza ,sc4cbaz, sc4, sc4cbaz, sc4_state, sc4, ROT0, "BFM","Cash Bazaar Club (Bellfruit) (Scorpion 4) (set 2)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4cbazb ,sc4cbaz, sc4, sc4cbaz, sc4_state, sc4, ROT0, "BFM","Cash Bazaar Club (Bellfruit) (Scorpion 4) (set 3)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4cbazc ,sc4cbaz, sc4, sc4cbaz, sc4_state, sc4, ROT0, "BFM","Cash Bazaar Club (Bellfruit) (Scorpion 4) (set 4)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4cbazd ,sc4cbaz, sc4, sc4cbaz, sc4_state, sc4, ROT0, "BFM","Cash Bazaar Club (Bellfruit) (Scorpion 4) (set 5)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4cbaze ,sc4cbaz, sc4, sc4cbaz, sc4_state, sc4, ROT0, "BFM","Cash Bazaar Club (Bellfruit) (Scorpion 4) (set 6)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4cbazf ,sc4cbaz, sc4, sc4cbaz, sc4_state, sc4, ROT0, "BFM","Cash Bazaar Club (Bellfruit) (Scorpion 4) (set 7)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4cbazg ,sc4cbaz, sc4, sc4cbaz, sc4_state, sc4, ROT0, "BFM","Cash Bazaar Club (Bellfruit) (Scorpion 4) (set 8)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4cbazh ,sc4cbaz, sc4, sc4cbaz, sc4_state, sc4, ROT0, "BFM","Cash Bazaar Club (Bellfruit) (Scorpion 4) (set 9)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4cbazi ,sc4cbaz, sc4, sc4cbaz, sc4_state, sc4, ROT0, "BFM","Cash Bazaar Club (Bellfruit) (Scorpion 4) (set 10)", MACHINE_FLAGS, layout_bfm_sc4 )
// These alarm through startup and don't boot, are they missing something like a DMD?
// PR1349 CLUB CASH BAZAAR CLUB CASH BAZAAR CLUB PR1349 CLUB CASH BAZAAR SOUNDS11
-GAMEL( 200?, sc4cbazj ,sc4cbaz, sc4, sc4cbaz, sc4_state, sc4mbus, ROT0, "BFM","Cash Bazaar Club (Bellfruit) (Scorpion 4) (set 11)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4cbazk ,sc4cbaz, sc4, sc4cbaz, sc4_state, sc4mbus, ROT0, "BFM","Cash Bazaar Club (Bellfruit) (Scorpion 4) (set 12)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4cbazj ,sc4cbaz, sc4, sc4cbaz, sc4_state, sc4mbus, ROT0, "BFM","Cash Bazaar Club (Bellfruit) (Scorpion 4) (set 11)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4cbazk ,sc4cbaz, sc4, sc4cbaz, sc4_state, sc4mbus, ROT0, "BFM","Cash Bazaar Club (Bellfruit) (Scorpion 4) (set 12)", MACHINE_FLAGS, layout_bfm_sc4 )
@@ -41349,14 +41351,14 @@ INPUT_PORTS_START( sc4clash ) // this structure is generated
INPUT_PORTS_END
// PR2118 CASH ON THE LASH COTL SOUNDS CASH ON THE LASH
-GAMEL( 200?, sc4clash ,0, sc4, sc4clash, sc4_state, sc4mbus, ROT0, "Mazooma","Cash On The Lash (Mazooma) (Scorpion 4) (set 1)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4clasha ,sc4clash, sc4, sc4clash, sc4_state, sc4mbus, ROT0, "Mazooma","Cash On The Lash (Mazooma) (Scorpion 4) (set 2)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4clashb ,sc4clash, sc4, sc4clash, sc4_state, sc4mbus, ROT0, "Mazooma","Cash On The Lash (Mazooma) (Scorpion 4) (set 3)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4clashc ,sc4clash, sc4, sc4clash, sc4_state, sc4mbus, ROT0, "Mazooma","Cash On The Lash (Mazooma) (Scorpion 4) (set 4)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4clashd ,sc4clash, sc4, sc4clash, sc4_state, sc4, ROT0, "Mazooma","Cash On The Lash (Mazooma) (Scorpion 4) (set 5)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4clashe ,sc4clash, sc4, sc4clash, sc4_state, sc4, ROT0, "Mazooma","Cash On The Lash (Mazooma) (Scorpion 4) (set 6)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4clashf ,sc4clash, sc4, sc4clash, sc4_state, sc4, ROT0, "Mazooma","Cash On The Lash (Mazooma) (Scorpion 4) (set 7)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4clashg ,sc4clash, sc4, sc4clash, sc4_state, sc4, ROT0, "Mazooma","Cash On The Lash (Mazooma) (Scorpion 4) (set 8)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4clash ,0, sc4, sc4clash, sc4_state, sc4mbus, ROT0, "Mazooma","Cash On The Lash (Mazooma) (Scorpion 4) (set 1)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4clasha ,sc4clash, sc4, sc4clash, sc4_state, sc4mbus, ROT0, "Mazooma","Cash On The Lash (Mazooma) (Scorpion 4) (set 2)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4clashb ,sc4clash, sc4, sc4clash, sc4_state, sc4mbus, ROT0, "Mazooma","Cash On The Lash (Mazooma) (Scorpion 4) (set 3)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4clashc ,sc4clash, sc4, sc4clash, sc4_state, sc4mbus, ROT0, "Mazooma","Cash On The Lash (Mazooma) (Scorpion 4) (set 4)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4clashd ,sc4clash, sc4, sc4clash, sc4_state, sc4, ROT0, "Mazooma","Cash On The Lash (Mazooma) (Scorpion 4) (set 5)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4clashe ,sc4clash, sc4, sc4clash, sc4_state, sc4, ROT0, "Mazooma","Cash On The Lash (Mazooma) (Scorpion 4) (set 6)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4clashf ,sc4clash, sc4, sc4clash, sc4_state, sc4, ROT0, "Mazooma","Cash On The Lash (Mazooma) (Scorpion 4) (set 7)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4clashg ,sc4clash, sc4, sc4clash, sc4_state, sc4, ROT0, "Mazooma","Cash On The Lash (Mazooma) (Scorpion 4) (set 8)", MACHINE_FLAGS, layout_bfm_sc4 )
INPUT_PORTS_START( sc4cckey ) // this structure is generated
@@ -41416,22 +41418,22 @@ INPUT_PORTS_START( sc4cckey ) // this structure is generated
INPUT_PORTS_END
// PR1426 CASINO CRAZY FRUITS GOLD PR1426 CRAZY F GOLD SOUNDS11 CRAZY FRUIT GOLD S.SITE (set was marked as Casino Crazy Keys)
-GAMEL( 200?, sc4cckey ,0, sc4, sc4cckey, sc4_state, sc4, ROT0, "BFM","Casino Crazy Fruits Gold (Bellfruit) (Scorpion 4) (set 1)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4cckeya ,sc4cckey, sc4, sc4cckey, sc4_state, sc4, ROT0, "BFM","Casino Crazy Fruits Gold (Bellfruit) (Scorpion 4) (set 2)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4cckeyb ,sc4cckey, sc4, sc4cckey, sc4_state, sc4, ROT0, "BFM","Casino Crazy Fruits Gold (Bellfruit) (Scorpion 4) (set 3)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4cckeyc ,sc4cckey, sc4, sc4cckey, sc4_state, sc4, ROT0, "BFM","Casino Crazy Fruits Gold (Bellfruit) (Scorpion 4) (set 4)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4cckeyd ,sc4cckey, sc4, sc4cckey, sc4_state, sc4, ROT0, "BFM","Casino Crazy Fruits Gold (Bellfruit) (Scorpion 4) (set 5)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4cckeye ,sc4cckey, sc4, sc4cckey, sc4_state, sc4, ROT0, "BFM","Casino Crazy Fruits Gold (Bellfruit) (Scorpion 4) (set 6)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4cckeyf ,sc4cckey, sc4, sc4cckey, sc4_state, sc4, ROT0, "BFM","Casino Crazy Fruits Gold (Bellfruit) (Scorpion 4) (set 7)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4cckeyg ,sc4cckey, sc4, sc4cckey, sc4_state, sc4, ROT0, "BFM","Casino Crazy Fruits Gold (Bellfruit) (Scorpion 4) (set 8)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4cckeyh ,sc4cckey, sc4, sc4cckey, sc4_state, sc4, ROT0, "BFM","Casino Crazy Fruits Gold (Bellfruit) (Scorpion 4) (set 9)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4cckeyj ,sc4cckey, sc4, sc4cckey, sc4_state, sc4, ROT0, "BFM","Casino Crazy Fruits Gold (Bellfruit) (Scorpion 4) (set 10)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4cckeyi ,sc4cckey, sc4, sc4cckey, sc4_state, sc4mbus, ROT0, "BFM","Casino Crazy Fruits Gold (Bellfruit) (Scorpion 4) (set 11)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4cckeyk ,sc4cckey, sc4, sc4cckey, sc4_state, sc4mbus, ROT0, "BFM","Casino Crazy Fruits Gold (Bellfruit) (Scorpion 4) (set 12)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4cckeyl ,sc4cckey, sc4, sc4cckey, sc4_state, sc4mbus, ROT0, "BFM","Casino Crazy Fruits Gold (Bellfruit) (Scorpion 4) (set 13)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4cckeym ,sc4cckey, sc4, sc4cckey, sc4_state, sc4mbus, ROT0, "BFM","Casino Crazy Fruits Gold (Bellfruit) (Scorpion 4) (set 14)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4cckeyn ,sc4cckey, sc4, sc4cckey, sc4_state, sc4mbus, ROT0, "BFM","Casino Crazy Fruits Gold (Bellfruit) (Scorpion 4) (set 15)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4cckeyo ,sc4cckey, sc4, sc4cckey, sc4_state, sc4mbus, ROT0, "BFM","Casino Crazy Fruits Gold (Bellfruit) (Scorpion 4) (set 16)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4cckey ,0, sc4, sc4cckey, sc4_state, sc4, ROT0, "BFM","Casino Crazy Fruits Gold (Bellfruit) (Scorpion 4) (set 1)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4cckeya ,sc4cckey, sc4, sc4cckey, sc4_state, sc4, ROT0, "BFM","Casino Crazy Fruits Gold (Bellfruit) (Scorpion 4) (set 2)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4cckeyb ,sc4cckey, sc4, sc4cckey, sc4_state, sc4, ROT0, "BFM","Casino Crazy Fruits Gold (Bellfruit) (Scorpion 4) (set 3)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4cckeyc ,sc4cckey, sc4, sc4cckey, sc4_state, sc4, ROT0, "BFM","Casino Crazy Fruits Gold (Bellfruit) (Scorpion 4) (set 4)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4cckeyd ,sc4cckey, sc4, sc4cckey, sc4_state, sc4, ROT0, "BFM","Casino Crazy Fruits Gold (Bellfruit) (Scorpion 4) (set 5)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4cckeye ,sc4cckey, sc4, sc4cckey, sc4_state, sc4, ROT0, "BFM","Casino Crazy Fruits Gold (Bellfruit) (Scorpion 4) (set 6)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4cckeyf ,sc4cckey, sc4, sc4cckey, sc4_state, sc4, ROT0, "BFM","Casino Crazy Fruits Gold (Bellfruit) (Scorpion 4) (set 7)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4cckeyg ,sc4cckey, sc4, sc4cckey, sc4_state, sc4, ROT0, "BFM","Casino Crazy Fruits Gold (Bellfruit) (Scorpion 4) (set 8)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4cckeyh ,sc4cckey, sc4, sc4cckey, sc4_state, sc4, ROT0, "BFM","Casino Crazy Fruits Gold (Bellfruit) (Scorpion 4) (set 9)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4cckeyj ,sc4cckey, sc4, sc4cckey, sc4_state, sc4, ROT0, "BFM","Casino Crazy Fruits Gold (Bellfruit) (Scorpion 4) (set 10)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4cckeyi ,sc4cckey, sc4, sc4cckey, sc4_state, sc4mbus, ROT0, "BFM","Casino Crazy Fruits Gold (Bellfruit) (Scorpion 4) (set 11)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4cckeyk ,sc4cckey, sc4, sc4cckey, sc4_state, sc4mbus, ROT0, "BFM","Casino Crazy Fruits Gold (Bellfruit) (Scorpion 4) (set 12)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4cckeyl ,sc4cckey, sc4, sc4cckey, sc4_state, sc4mbus, ROT0, "BFM","Casino Crazy Fruits Gold (Bellfruit) (Scorpion 4) (set 13)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4cckeym ,sc4cckey, sc4, sc4cckey, sc4_state, sc4mbus, ROT0, "BFM","Casino Crazy Fruits Gold (Bellfruit) (Scorpion 4) (set 14)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4cckeyn ,sc4cckey, sc4, sc4cckey, sc4_state, sc4mbus, ROT0, "BFM","Casino Crazy Fruits Gold (Bellfruit) (Scorpion 4) (set 15)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4cckeyo ,sc4cckey, sc4, sc4cckey, sc4_state, sc4mbus, ROT0, "BFM","Casino Crazy Fruits Gold (Bellfruit) (Scorpion 4) (set 16)", MACHINE_FLAGS, layout_bfm_sc4 )
DRIVER_INIT_MEMBER(sc4_state,sc4clclo)
{
@@ -41497,7 +41499,7 @@ INPUT_PORTS_START( sc4clclo ) // this structure is generated
INPUT_PORTS_END
// PR2383 CLUBCLOUSEAU CLUBCLOUSEAU CLUB CCLOU SOUNDS CLUB CLOSEAU
-GAMEL( 200?, sc4clclo ,0, sc4_5reel, sc4clclo, sc4_state, sc4clclo, ROT0, "QPS","Club Clouseau (QPS) (Scorpion 4)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4clclo ,0, sc4_5reel, sc4clclo, sc4_state, sc4clclo, ROT0, "QPS","Club Clouseau (QPS) (Scorpion 4)", MACHINE_FLAGS, layout_bfm_sc4 )
DRIVER_INIT_MEMBER(sc4_state,sc4cjcl)
@@ -41567,13 +41569,13 @@ INPUT_PORTS_START( sc4cjcl ) // this structure is generated
INPUT_PORTS_END
// PR1621 CLUB COOL JEWELS PR1621 COOL SOUNDS11 CLUB COOL JEWELS CLUB
-GAMEL( 200?, sc4cjcl ,0, sc4_5reel, sc4cjcl, sc4_state, sc4cjcl, ROT0, "BFM","Cool Jewels Club (Bellfruit) (Scorpion 4) (set 1)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4cjcla ,sc4cjcl, sc4_5reel, sc4cjcl, sc4_state, sc4cjcl, ROT0, "BFM","Cool Jewels Club (Bellfruit) (Scorpion 4) (set 2)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4cjclb ,sc4cjcl, sc4_5reel, sc4cjcl, sc4_state, sc4cjcl, ROT0, "BFM","Cool Jewels Club (Bellfruit) (Scorpion 4) (set 3)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4cjclc ,sc4cjcl, sc4_5reel, sc4cjcl, sc4_state, sc4cjcl, ROT0, "BFM","Cool Jewels Club (Bellfruit) (Scorpion 4) (set 4)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4cjcld ,sc4cjcl, sc4_5reel, sc4cjcl, sc4_state, sc4cjcl, ROT0, "BFM","Cool Jewels Club (Bellfruit) (Scorpion 4) (set 5)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4cjcle ,sc4cjcl, sc4_5reel, sc4cjcl, sc4_state, sc4cjcl, ROT0, "BFM","Cool Jewels Club (Bellfruit) (Scorpion 4) (set 6)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4cjclf ,sc4cjcl, sc4_5reel, sc4cjcl, sc4_state, sc4cjcl, ROT0, "BFM","Cool Jewels Club (Bellfruit) (Scorpion 4) (set 7)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4cjcl ,0, sc4_5reel, sc4cjcl, sc4_state, sc4cjcl, ROT0, "BFM","Cool Jewels Club (Bellfruit) (Scorpion 4) (set 1)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4cjcla ,sc4cjcl, sc4_5reel, sc4cjcl, sc4_state, sc4cjcl, ROT0, "BFM","Cool Jewels Club (Bellfruit) (Scorpion 4) (set 2)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4cjclb ,sc4cjcl, sc4_5reel, sc4cjcl, sc4_state, sc4cjcl, ROT0, "BFM","Cool Jewels Club (Bellfruit) (Scorpion 4) (set 3)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4cjclc ,sc4cjcl, sc4_5reel, sc4cjcl, sc4_state, sc4cjcl, ROT0, "BFM","Cool Jewels Club (Bellfruit) (Scorpion 4) (set 4)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4cjcld ,sc4cjcl, sc4_5reel, sc4cjcl, sc4_state, sc4cjcl, ROT0, "BFM","Cool Jewels Club (Bellfruit) (Scorpion 4) (set 5)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4cjcle ,sc4cjcl, sc4_5reel, sc4cjcl, sc4_state, sc4cjcl, ROT0, "BFM","Cool Jewels Club (Bellfruit) (Scorpion 4) (set 6)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4cjclf ,sc4cjcl, sc4_5reel, sc4cjcl, sc4_state, sc4cjcl, ROT0, "BFM","Cool Jewels Club (Bellfruit) (Scorpion 4) (set 7)", MACHINE_FLAGS, layout_bfm_sc4 )
INPUT_PORTS_START( sc4crcp ) // this structure is generated
@@ -41634,16 +41636,16 @@ INPUT_PORTS_START( sc4crcp ) // this structure is generated
INPUT_PORTS_END
// PR3241 CLUB COPS AND ROBBERS PLATINUM SCORP4 COPS & ROBRS PLT CLUB PR3241 C N R PLATINUM SOUNDS11 COPS AND ROBBERS
-GAMEL( 200?, sc4crcp ,0, sc4, sc4crcp, sc4_state, sc4mbus, ROT0, "BFM","Cops 'n' Robbers Club Platinum (Bellfruit) (Scorpion 4) (set 1)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4crcpa ,sc4crcp, sc4, sc4crcp, sc4_state, sc4mbus, ROT0, "BFM","Cops 'n' Robbers Club Platinum (Bellfruit) (Scorpion 4) (set 2)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4crcpc ,sc4crcp, sc4, sc4crcp, sc4_state, sc4mbus, ROT0, "BFM","Cops 'n' Robbers Club Platinum (Bellfruit) (Scorpion 4) (set 3)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4crcpd ,sc4crcp, sc4, sc4crcp, sc4_state, sc4mbus, ROT0, "BFM","Cops 'n' Robbers Club Platinum (Bellfruit) (Scorpion 4) (set 4)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4crcpe ,sc4crcp, sc4, sc4crcp, sc4_state, sc4mbus, ROT0, "BFM","Cops 'n' Robbers Club Platinum (Bellfruit) (Scorpion 4) (set 5)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4crcpf ,sc4crcp, sc4, sc4crcp, sc4_state, sc4mbus, ROT0, "BFM","Cops 'n' Robbers Club Platinum (Bellfruit) (Scorpion 4) (set 6)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4crcpg ,sc4crcp, sc4, sc4crcp, sc4_state, sc4mbus, ROT0, "BFM","Cops 'n' Robbers Club Platinum (Bellfruit) (Scorpion 4) (set 7)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4crcph ,sc4crcp, sc4, sc4crcp, sc4_state, sc4mbus, ROT0, "BFM","Cops 'n' Robbers Club Platinum (Bellfruit) (Scorpion 4) (set 8)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4crcpi ,sc4crcp, sc4, sc4crcp, sc4_state, sc4mbus, ROT0, "BFM","Cops 'n' Robbers Club Platinum (Bellfruit) (Scorpion 4) (set 9)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4crcpj ,sc4crcp, sc4, sc4crcp, sc4_state, sc4mbus, ROT0, "BFM","Cops 'n' Robbers Club Platinum (Bellfruit) (Scorpion 4) (set 10)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4crcp ,0, sc4, sc4crcp, sc4_state, sc4mbus, ROT0, "BFM","Cops 'n' Robbers Club Platinum (Bellfruit) (Scorpion 4) (set 1)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4crcpa ,sc4crcp, sc4, sc4crcp, sc4_state, sc4mbus, ROT0, "BFM","Cops 'n' Robbers Club Platinum (Bellfruit) (Scorpion 4) (set 2)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4crcpc ,sc4crcp, sc4, sc4crcp, sc4_state, sc4mbus, ROT0, "BFM","Cops 'n' Robbers Club Platinum (Bellfruit) (Scorpion 4) (set 3)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4crcpd ,sc4crcp, sc4, sc4crcp, sc4_state, sc4mbus, ROT0, "BFM","Cops 'n' Robbers Club Platinum (Bellfruit) (Scorpion 4) (set 4)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4crcpe ,sc4crcp, sc4, sc4crcp, sc4_state, sc4mbus, ROT0, "BFM","Cops 'n' Robbers Club Platinum (Bellfruit) (Scorpion 4) (set 5)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4crcpf ,sc4crcp, sc4, sc4crcp, sc4_state, sc4mbus, ROT0, "BFM","Cops 'n' Robbers Club Platinum (Bellfruit) (Scorpion 4) (set 6)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4crcpg ,sc4crcp, sc4, sc4crcp, sc4_state, sc4mbus, ROT0, "BFM","Cops 'n' Robbers Club Platinum (Bellfruit) (Scorpion 4) (set 7)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4crcph ,sc4crcp, sc4, sc4crcp, sc4_state, sc4mbus, ROT0, "BFM","Cops 'n' Robbers Club Platinum (Bellfruit) (Scorpion 4) (set 8)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4crcpi ,sc4crcp, sc4, sc4crcp, sc4_state, sc4mbus, ROT0, "BFM","Cops 'n' Robbers Club Platinum (Bellfruit) (Scorpion 4) (set 9)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4crcpj ,sc4crcp, sc4, sc4crcp, sc4_state, sc4mbus, ROT0, "BFM","Cops 'n' Robbers Club Platinum (Bellfruit) (Scorpion 4) (set 10)", MACHINE_FLAGS, layout_bfm_sc4 )
INPUT_PORTS_START( sc4crgc ) // this structure is generated
PORT_INCLUDE( sc4_base )
@@ -41703,32 +41705,32 @@ INPUT_PORTS_START( sc4crgc ) // this structure is generated
INPUT_PORTS_END
// PR1348 CLUB COPS AND ROBBERS GOLD PR1348 CCRG SOUNDS11 COPS AND ROBBERS
-GAMEL( 2003, sc4crgc ,0, sc4, sc4crgc, sc4_state, sc4, ROT0, "BFM","Cops 'n' Robbers Gold Club (Bellfruit) (Scorpion 4) (set 1)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 2003, sc4crgca ,sc4crgc, sc4, sc4crgc, sc4_state, sc4, ROT0, "BFM","Cops 'n' Robbers Gold Club (Bellfruit) (Scorpion 4) (set 2)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 2003, sc4crgcb ,sc4crgc, sc4, sc4crgc, sc4_state, sc4, ROT0, "BFM","Cops 'n' Robbers Gold Club (Bellfruit) (Scorpion 4) (set 3)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 2003, sc4crgcc ,sc4crgc, sc4, sc4crgc, sc4_state, sc4, ROT0, "BFM","Cops 'n' Robbers Gold Club (Bellfruit) (Scorpion 4) (set 4)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 2003, sc4crgcd ,sc4crgc, sc4, sc4crgc, sc4_state, sc4, ROT0, "BFM","Cops 'n' Robbers Gold Club (Bellfruit) (Scorpion 4) (set 5)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 2003, sc4crgce ,sc4crgc, sc4, sc4crgc, sc4_state, sc4, ROT0, "BFM","Cops 'n' Robbers Gold Club (Bellfruit) (Scorpion 4) (set 6)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 2003, sc4crgcf ,sc4crgc, sc4, sc4crgc, sc4_state, sc4, ROT0, "BFM","Cops 'n' Robbers Gold Club (Bellfruit) (Scorpion 4) (set 7)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 2003, sc4crgcg ,sc4crgc, sc4, sc4crgc, sc4_state, sc4, ROT0, "BFM","Cops 'n' Robbers Gold Club (Bellfruit) (Scorpion 4) (set 8)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 2003, sc4crgch ,sc4crgc, sc4, sc4crgc, sc4_state, sc4, ROT0, "BFM","Cops 'n' Robbers Gold Club (Bellfruit) (Scorpion 4) (set 9)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 2003, sc4crgci ,sc4crgc, sc4, sc4crgc, sc4_state, sc4, ROT0, "BFM","Cops 'n' Robbers Gold Club (Bellfruit) (Scorpion 4) (set 10)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 2003, sc4crgcj ,sc4crgc, sc4, sc4crgc, sc4_state, sc4, ROT0, "BFM","Cops 'n' Robbers Gold Club (Bellfruit) (Scorpion 4) (set 11)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 2003, sc4crgck ,sc4crgc, sc4, sc4crgc, sc4_state, sc4, ROT0, "BFM","Cops 'n' Robbers Gold Club (Bellfruit) (Scorpion 4) (set 12)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 2003, sc4crgcl ,sc4crgc, sc4, sc4crgc, sc4_state, sc4, ROT0, "BFM","Cops 'n' Robbers Gold Club (Bellfruit) (Scorpion 4) (set 13)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 2003, sc4crgcm ,sc4crgc, sc4, sc4crgc, sc4_state, sc4, ROT0, "BFM","Cops 'n' Robbers Gold Club (Bellfruit) (Scorpion 4) (set 14)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 2003, sc4crgco ,sc4crgc, sc4, sc4crgc, sc4_state, sc4, ROT0, "BFM","Cops 'n' Robbers Gold Club (Bellfruit) (Scorpion 4) (set 15)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 2003, sc4crgcq ,sc4crgc, sc4, sc4crgc, sc4_state, sc4, ROT0, "BFM","Cops 'n' Robbers Gold Club (Bellfruit) (Scorpion 4) (set 16)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 2003, sc4crgct ,sc4crgc, sc4, sc4crgc, sc4_state, sc4, ROT0, "BFM","Cops 'n' Robbers Gold Club (Bellfruit) (Scorpion 4) (set 17)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 2003, sc4crgcw ,sc4crgc, sc4, sc4crgc, sc4_state, sc4, ROT0, "BFM","Cops 'n' Robbers Gold Club (Bellfruit) (Scorpion 4) (set 18)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 2003, sc4crgc ,0, sc4, sc4crgc, sc4_state, sc4, ROT0, "BFM","Cops 'n' Robbers Gold Club (Bellfruit) (Scorpion 4) (set 1)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 2003, sc4crgca ,sc4crgc, sc4, sc4crgc, sc4_state, sc4, ROT0, "BFM","Cops 'n' Robbers Gold Club (Bellfruit) (Scorpion 4) (set 2)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 2003, sc4crgcb ,sc4crgc, sc4, sc4crgc, sc4_state, sc4, ROT0, "BFM","Cops 'n' Robbers Gold Club (Bellfruit) (Scorpion 4) (set 3)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 2003, sc4crgcc ,sc4crgc, sc4, sc4crgc, sc4_state, sc4, ROT0, "BFM","Cops 'n' Robbers Gold Club (Bellfruit) (Scorpion 4) (set 4)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 2003, sc4crgcd ,sc4crgc, sc4, sc4crgc, sc4_state, sc4, ROT0, "BFM","Cops 'n' Robbers Gold Club (Bellfruit) (Scorpion 4) (set 5)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 2003, sc4crgce ,sc4crgc, sc4, sc4crgc, sc4_state, sc4, ROT0, "BFM","Cops 'n' Robbers Gold Club (Bellfruit) (Scorpion 4) (set 6)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 2003, sc4crgcf ,sc4crgc, sc4, sc4crgc, sc4_state, sc4, ROT0, "BFM","Cops 'n' Robbers Gold Club (Bellfruit) (Scorpion 4) (set 7)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 2003, sc4crgcg ,sc4crgc, sc4, sc4crgc, sc4_state, sc4, ROT0, "BFM","Cops 'n' Robbers Gold Club (Bellfruit) (Scorpion 4) (set 8)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 2003, sc4crgch ,sc4crgc, sc4, sc4crgc, sc4_state, sc4, ROT0, "BFM","Cops 'n' Robbers Gold Club (Bellfruit) (Scorpion 4) (set 9)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 2003, sc4crgci ,sc4crgc, sc4, sc4crgc, sc4_state, sc4, ROT0, "BFM","Cops 'n' Robbers Gold Club (Bellfruit) (Scorpion 4) (set 10)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 2003, sc4crgcj ,sc4crgc, sc4, sc4crgc, sc4_state, sc4, ROT0, "BFM","Cops 'n' Robbers Gold Club (Bellfruit) (Scorpion 4) (set 11)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 2003, sc4crgck ,sc4crgc, sc4, sc4crgc, sc4_state, sc4, ROT0, "BFM","Cops 'n' Robbers Gold Club (Bellfruit) (Scorpion 4) (set 12)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 2003, sc4crgcl ,sc4crgc, sc4, sc4crgc, sc4_state, sc4, ROT0, "BFM","Cops 'n' Robbers Gold Club (Bellfruit) (Scorpion 4) (set 13)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 2003, sc4crgcm ,sc4crgc, sc4, sc4crgc, sc4_state, sc4, ROT0, "BFM","Cops 'n' Robbers Gold Club (Bellfruit) (Scorpion 4) (set 14)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 2003, sc4crgco ,sc4crgc, sc4, sc4crgc, sc4_state, sc4, ROT0, "BFM","Cops 'n' Robbers Gold Club (Bellfruit) (Scorpion 4) (set 15)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 2003, sc4crgcq ,sc4crgc, sc4, sc4crgc, sc4_state, sc4, ROT0, "BFM","Cops 'n' Robbers Gold Club (Bellfruit) (Scorpion 4) (set 16)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 2003, sc4crgct ,sc4crgc, sc4, sc4crgc, sc4_state, sc4, ROT0, "BFM","Cops 'n' Robbers Gold Club (Bellfruit) (Scorpion 4) (set 17)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 2003, sc4crgcw ,sc4crgc, sc4, sc4crgc, sc4_state, sc4, ROT0, "BFM","Cops 'n' Robbers Gold Club (Bellfruit) (Scorpion 4) (set 18)", MACHINE_FLAGS, layout_bfm_sc4 )
// PR1348 CLUB COPS AND ROBBERS GOLD COPS & ROBRS GLD CLUB PR1348 CCRG SOUNDS11 COPS AND ROBBERS
-GAMEL( 2003, sc4crgcr ,sc4crgc, sc4, sc4crgc, sc4_state, sc4, ROT0, "BFM","Cops 'n' Robbers Gold Club (Bellfruit) (Scorpion 4) (set 21)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 2003, sc4crgcu ,sc4crgc, sc4, sc4crgc, sc4_state, sc4, ROT0, "BFM","Cops 'n' Robbers Gold Club (Bellfruit) (Scorpion 4) (set 22)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 2003, sc4crgcn ,sc4crgc, sc4, sc4crgc, sc4_state, sc4mbus, ROT0, "BFM","Cops 'n' Robbers Gold Club (Bellfruit) (Scorpion 4) (set 19)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 2003, sc4crgcp ,sc4crgc, sc4, sc4crgc, sc4_state, sc4mbus, ROT0, "BFM","Cops 'n' Robbers Gold Club (Bellfruit) (Scorpion 4) (set 20)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 2003, sc4crgcr ,sc4crgc, sc4, sc4crgc, sc4_state, sc4, ROT0, "BFM","Cops 'n' Robbers Gold Club (Bellfruit) (Scorpion 4) (set 21)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 2003, sc4crgcu ,sc4crgc, sc4, sc4crgc, sc4_state, sc4, ROT0, "BFM","Cops 'n' Robbers Gold Club (Bellfruit) (Scorpion 4) (set 22)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 2003, sc4crgcn ,sc4crgc, sc4, sc4crgc, sc4_state, sc4mbus, ROT0, "BFM","Cops 'n' Robbers Gold Club (Bellfruit) (Scorpion 4) (set 19)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 2003, sc4crgcp ,sc4crgc, sc4, sc4crgc, sc4_state, sc4mbus, ROT0, "BFM","Cops 'n' Robbers Gold Club (Bellfruit) (Scorpion 4) (set 20)", MACHINE_FLAGS, layout_bfm_sc4 )
// PR1348 !500 CLUB COPS AND ROBBERS GOLD COPS & ROBRS GLD CLUB PR1348 CCRG SOUNDS11 COPS AND ROBBERS
-GAMEL( 2003, sc4crgcs ,sc4crgc, sc4, sc4crgc, sc4_state, sc4mbus, ROT0, "BFM","Cops 'n' Robbers Gold Club (Bellfruit) (Scorpion 4) (set 23)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 2003, sc4crgcv ,sc4crgc, sc4, sc4crgc, sc4_state, sc4mbus, ROT0, "BFM","Cops 'n' Robbers Gold Club (Bellfruit) (Scorpion 4) (set 24)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 2003, sc4crgcs ,sc4crgc, sc4, sc4crgc, sc4_state, sc4mbus, ROT0, "BFM","Cops 'n' Robbers Gold Club (Bellfruit) (Scorpion 4) (set 23)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 2003, sc4crgcv ,sc4crgc, sc4, sc4crgc, sc4_state, sc4mbus, ROT0, "BFM","Cops 'n' Robbers Gold Club (Bellfruit) (Scorpion 4) (set 24)", MACHINE_FLAGS, layout_bfm_sc4 )
@@ -41795,12 +41797,12 @@ INPUT_PORTS_START( sc4cfcla ) // this structure is generated
INPUT_PORTS_END
// PR1396 CLASSIC CRAZY FRUITS PR1396 CLSIC CRAZY FRUITS SND11
-GAMEL( 200?, sc4cfcla ,0, sc4_3reel, sc4cfcla, sc4_state, sc4cfcla, ROT0, "BFM","Crazy Fruits Classic (Bellfruit) (Scorpion 4) (set 1)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4cfclab ,sc4cfcla, sc4_3reel, sc4cfcla, sc4_state, sc4cfcla, ROT0, "BFM","Crazy Fruits Classic (Bellfruit) (Scorpion 4) (set 2)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4cfclac ,sc4cfcla, sc4_3reel, sc4cfcla, sc4_state, sc4cfcla, ROT0, "BFM","Crazy Fruits Classic (Bellfruit) (Scorpion 4) (set 3)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4cfclad ,sc4cfcla, sc4_3reel, sc4cfcla, sc4_state, sc4cfcla, ROT0, "BFM","Crazy Fruits Classic (Bellfruit) (Scorpion 4) (set 4)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4cfclae ,sc4cfcla, sc4_3reel, sc4cfcla, sc4_state, sc4cfcla, ROT0, "BFM","Crazy Fruits Classic (Bellfruit) (Scorpion 4) (set 5)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4cfclaf ,sc4cfcla, sc4_3reel, sc4cfcla, sc4_state, sc4cfcla, ROT0, "BFM","Crazy Fruits Classic (Bellfruit) (Scorpion 4) (set 6)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4cfcla ,0, sc4_3reel, sc4cfcla, sc4_state, sc4cfcla, ROT0, "BFM","Crazy Fruits Classic (Bellfruit) (Scorpion 4) (set 1)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4cfclab ,sc4cfcla, sc4_3reel, sc4cfcla, sc4_state, sc4cfcla, ROT0, "BFM","Crazy Fruits Classic (Bellfruit) (Scorpion 4) (set 2)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4cfclac ,sc4cfcla, sc4_3reel, sc4cfcla, sc4_state, sc4cfcla, ROT0, "BFM","Crazy Fruits Classic (Bellfruit) (Scorpion 4) (set 3)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4cfclad ,sc4cfcla, sc4_3reel, sc4cfcla, sc4_state, sc4cfcla, ROT0, "BFM","Crazy Fruits Classic (Bellfruit) (Scorpion 4) (set 4)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4cfclae ,sc4cfcla, sc4_3reel, sc4cfcla, sc4_state, sc4cfcla, ROT0, "BFM","Crazy Fruits Classic (Bellfruit) (Scorpion 4) (set 5)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4cfclaf ,sc4cfcla, sc4_3reel, sc4cfcla, sc4_state, sc4cfcla, ROT0, "BFM","Crazy Fruits Classic (Bellfruit) (Scorpion 4) (set 6)", MACHINE_FLAGS, layout_bfm_sc4 )
DRIVER_INIT_MEMBER(sc4_state,sc4cfdu)
@@ -41865,10 +41867,10 @@ INPUT_PORTS_START( sc4cfdu ) // this structure is generated
INPUT_PORTS_END
// PR1107 CRAZY FRUITS DOWNUNDER PR1107 DOWN UNDER SOUNDS11
-GAMEL( 200?, sc4cfdu ,0, sc4_4reel_alt, sc4cfdu, sc4_state, sc4cfdu, ROT0, "BFM","Crazy Fruits Down Under (Bellfruit) (Scorpion 4) (set 1)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4cfdua ,sc4cfdu, sc4_4reel_alt, sc4cfdu, sc4_state, sc4cfdu, ROT0, "BFM","Crazy Fruits Down Under (Bellfruit) (Scorpion 4) (set 2)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4cfdub ,sc4cfdu, sc4_4reel_alt, sc4cfdu, sc4_state, sc4cfdu, ROT0, "BFM","Crazy Fruits Down Under (Bellfruit) (Scorpion 4) (set 3)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4cfduc ,sc4cfdu, sc4_4reel_alt, sc4cfdu, sc4_state, sc4cfdu, ROT0, "BFM","Crazy Fruits Down Under (Bellfruit) (Scorpion 4) (set 4)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4cfdu ,0, sc4_4reel_alt, sc4cfdu, sc4_state, sc4cfdu, ROT0, "BFM","Crazy Fruits Down Under (Bellfruit) (Scorpion 4) (set 1)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4cfdua ,sc4cfdu, sc4_4reel_alt, sc4cfdu, sc4_state, sc4cfdu, ROT0, "BFM","Crazy Fruits Down Under (Bellfruit) (Scorpion 4) (set 2)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4cfdub ,sc4cfdu, sc4_4reel_alt, sc4cfdu, sc4_state, sc4cfdu, ROT0, "BFM","Crazy Fruits Down Under (Bellfruit) (Scorpion 4) (set 3)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4cfduc ,sc4cfdu, sc4_4reel_alt, sc4cfdu, sc4_state, sc4cfdu, ROT0, "BFM","Crazy Fruits Down Under (Bellfruit) (Scorpion 4) (set 4)", MACHINE_FLAGS, layout_bfm_sc4 )
DRIVER_INIT_MEMBER(sc4_state,sc4cfgcl)
@@ -41938,10 +41940,10 @@ INPUT_PORTS_START( sc4cfgcl ) // this structure is generated
INPUT_PORTS_END
// PR1620 CLUB CRAZY FRUITS GOLD PR1620 CRAZY SOUNDS11 CRAZY FRUITS CLUB
-GAMEL( 200?, sc4cfgcl ,0, sc4_5reel, sc4cfgcl, sc4_state, sc4cfgcl, ROT0, "BFM","Crazy Fruits Gold Club (Bellfruit) (Scorpion 4) (set 1)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4cfgcla ,sc4cfgcl, sc4_5reel, sc4cfgcl, sc4_state, sc4cfgcl, ROT0, "BFM","Crazy Fruits Gold Club (Bellfruit) (Scorpion 4) (set 2)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4cfgclb ,sc4cfgcl, sc4_5reel, sc4cfgcl, sc4_state, sc4cfgcl, ROT0, "BFM","Crazy Fruits Gold Club (Bellfruit) (Scorpion 4) (set 3)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4cfgclc ,sc4cfgcl, sc4_5reel, sc4cfgcl, sc4_state, sc4cfgcl, ROT0, "BFM","Crazy Fruits Gold Club (Bellfruit) (Scorpion 4) (set 4)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4cfgcl ,0, sc4_5reel, sc4cfgcl, sc4_state, sc4cfgcl, ROT0, "BFM","Crazy Fruits Gold Club (Bellfruit) (Scorpion 4) (set 1)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4cfgcla ,sc4cfgcl, sc4_5reel, sc4cfgcl, sc4_state, sc4cfgcl, ROT0, "BFM","Crazy Fruits Gold Club (Bellfruit) (Scorpion 4) (set 2)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4cfgclb ,sc4cfgcl, sc4_5reel, sc4cfgcl, sc4_state, sc4cfgcl, ROT0, "BFM","Crazy Fruits Gold Club (Bellfruit) (Scorpion 4) (set 3)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4cfgclc ,sc4cfgcl, sc4_5reel, sc4cfgcl, sc4_state, sc4cfgcl, ROT0, "BFM","Crazy Fruits Gold Club (Bellfruit) (Scorpion 4) (set 4)", MACHINE_FLAGS, layout_bfm_sc4 )
DRIVER_INIT_MEMBER(sc4_state,sc4derby)
@@ -42012,12 +42014,12 @@ INPUT_PORTS_START( sc4derby ) // this structure is generated
INPUT_PORTS_END
// PR1006 DEMOLITION DERBY PR1006 DEMDERBY SOUNDS11
-GAMEL( 200?, sc4derby ,0, sc4_200_5r, sc4derby, sc4_state, sc4derby, ROT0, "BFM","Demolition Derby (Bellfruit) (Scorpion 4) (set 1)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4derbya ,sc4derby, sc4_200_5r, sc4derby, sc4_state, sc4derby, ROT0, "BFM","Demolition Derby (Bellfruit) (Scorpion 4) (set 2)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4derbyb ,sc4derby, sc4_200_5r, sc4derby, sc4_state, sc4derby, ROT0, "BFM","Demolition Derby (Bellfruit) (Scorpion 4) (set 3)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4derbyc ,sc4derby, sc4_200_5r, sc4derby, sc4_state, sc4derby, ROT0, "BFM","Demolition Derby (Bellfruit) (Scorpion 4) (set 4)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4derbyd ,sc4derby, sc4_200_5r, sc4derby, sc4_state, sc4derby, ROT0, "BFM","Demolition Derby (Bellfruit) (Scorpion 4) (set 5)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4derbye ,sc4derby, sc4_200_5r, sc4derby, sc4_state, sc4derby, ROT0, "BFM","Demolition Derby (Bellfruit) (Scorpion 4) (set 6)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4derby ,0, sc4_200_5r, sc4derby, sc4_state, sc4derby, ROT0, "BFM","Demolition Derby (Bellfruit) (Scorpion 4) (set 1)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4derbya ,sc4derby, sc4_200_5r, sc4derby, sc4_state, sc4derby, ROT0, "BFM","Demolition Derby (Bellfruit) (Scorpion 4) (set 2)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4derbyb ,sc4derby, sc4_200_5r, sc4derby, sc4_state, sc4derby, ROT0, "BFM","Demolition Derby (Bellfruit) (Scorpion 4) (set 3)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4derbyc ,sc4derby, sc4_200_5r, sc4derby, sc4_state, sc4derby, ROT0, "BFM","Demolition Derby (Bellfruit) (Scorpion 4) (set 4)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4derbyd ,sc4derby, sc4_200_5r, sc4derby, sc4_state, sc4derby, ROT0, "BFM","Demolition Derby (Bellfruit) (Scorpion 4) (set 5)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4derbye ,sc4derby, sc4_200_5r, sc4derby, sc4_state, sc4derby, ROT0, "BFM","Demolition Derby (Bellfruit) (Scorpion 4) (set 6)", MACHINE_FLAGS, layout_bfm_sc4 )
INPUT_PORTS_START( sc4dbldm ) // this structure is generated
PORT_INCLUDE( sc4_base )
@@ -42069,7 +42071,7 @@ INPUT_PORTS_START( sc4dbldm ) // this structure is generated
INPUT_PORTS_END
// PR2558 DOUBLE DIAMOND 011 DOUBLEDIAMONDSND DOUBLE DIAMOND
-GAMEL( 200?, sc4dbldm ,0, sc4, sc4dbldm, sc4_state, sc4, ROT0, "Qps","Double Diamond (Qps) (Scorpion 4)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4dbldm ,0, sc4, sc4dbldm, sc4_state, sc4, ROT0, "Qps","Double Diamond (Qps) (Scorpion 4)", MACHINE_FLAGS, layout_bfm_sc4 )
INPUT_PORTS_START( sc4dyna ) // this structure is generated
PORT_INCLUDE( sc4_base )
@@ -42116,8 +42118,8 @@ INPUT_PORTS_START( sc4dyna ) // this structure is generated
INPUT_PORTS_END
// PR1104 DYNAMITE PR1104 DYNAMITE SOUNDS11
-GAMEL( 200?, sc4dyna ,0, sc4, sc4dyna, sc4_state, sc4, ROT0, "BFM","Dynamite (Bellfruit) (Scorpion 4) (set 1)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4dynaa ,sc4dyna, sc4, sc4dyna, sc4_state, sc4, ROT0, "BFM","Dynamite (Bellfruit) (Scorpion 4) (set 2)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4dyna ,0, sc4, sc4dyna, sc4_state, sc4, ROT0, "BFM","Dynamite (Bellfruit) (Scorpion 4) (set 1)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4dynaa ,sc4dyna, sc4, sc4dyna, sc4_state, sc4, ROT0, "BFM","Dynamite (Bellfruit) (Scorpion 4) (set 2)", MACHINE_FLAGS, layout_bfm_sc4 )
INPUT_PORTS_START( sc4easy ) // this structure is generated
PORT_INCLUDE( sc4_base )
@@ -42182,13 +42184,13 @@ INPUT_PORTS_START( sc4easy ) // this structure is generated
INPUT_PORTS_END
// PR1017 EASY STREAK PR1017 EASY STREAK SOUNDS11 EASY STREAK
-GAMEL( 200?, sc4easy ,0, sc4, sc4easy, sc4_state, sc4, ROT0, "BFM","Easy Streak (Bellfruit) (Scorpion 4) (set 1)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4easya ,sc4easy, sc4, sc4easy, sc4_state, sc4, ROT0, "BFM","Easy Streak (Bellfruit) (Scorpion 4) (set 2)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4easyb ,sc4easy, sc4, sc4easy, sc4_state, sc4, ROT0, "BFM","Easy Streak (Bellfruit) (Scorpion 4) (set 3)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4easyc ,sc4easy, sc4, sc4easy, sc4_state, sc4, ROT0, "BFM","Easy Streak (Bellfruit) (Scorpion 4) (set 4)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4easyd ,sc4easy, sc4, sc4easy, sc4_state, sc4, ROT0, "BFM","Easy Streak (Bellfruit) (Scorpion 4) (set 5)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4easye ,sc4easy, sc4, sc4easy, sc4_state, sc4, ROT0, "BFM","Easy Streak (Bellfruit) (Scorpion 4) (set 6)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4easyf ,sc4easy, sc4, sc4easy, sc4_state, sc4, ROT0, "BFM","Easy Streak (Bellfruit) (Scorpion 4) (set 11)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4easy ,0, sc4, sc4easy, sc4_state, sc4, ROT0, "BFM","Easy Streak (Bellfruit) (Scorpion 4) (set 1)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4easya ,sc4easy, sc4, sc4easy, sc4_state, sc4, ROT0, "BFM","Easy Streak (Bellfruit) (Scorpion 4) (set 2)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4easyb ,sc4easy, sc4, sc4easy, sc4_state, sc4, ROT0, "BFM","Easy Streak (Bellfruit) (Scorpion 4) (set 3)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4easyc ,sc4easy, sc4, sc4easy, sc4_state, sc4, ROT0, "BFM","Easy Streak (Bellfruit) (Scorpion 4) (set 4)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4easyd ,sc4easy, sc4, sc4easy, sc4_state, sc4, ROT0, "BFM","Easy Streak (Bellfruit) (Scorpion 4) (set 5)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4easye ,sc4easy, sc4, sc4easy, sc4_state, sc4, ROT0, "BFM","Easy Streak (Bellfruit) (Scorpion 4) (set 6)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4easyf ,sc4easy, sc4, sc4easy, sc4_state, sc4, ROT0, "BFM","Easy Streak (Bellfruit) (Scorpion 4) (set 11)", MACHINE_FLAGS, layout_bfm_sc4 )
INPUT_PORTS_START( sc4clbmn ) // this structure is generated
PORT_INCLUDE( sc4_base )
@@ -42250,10 +42252,10 @@ INPUT_PORTS_START( sc4clbmn ) // this structure is generated
INPUT_PORTS_END
//PROJECT NUMBER PR1955 CLUB MONEYBAGS MONEY BAGS CLUB PR1955 C M MONEYBAGS SOUNDS11 DEAL OR NO DEAL 5-10-20 10-20-30 20-30-50 30-50-100
-GAMEL( 200?, sc4clbmn ,0, sc4, sc4clbmn, sc4_state, sc4mbus, ROT0, "BFM","Club Moneybags (Bellfruit) (Scorpion 4) (set 1)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4clbmna ,sc4clbmn, sc4, sc4clbmn, sc4_state, sc4mbus, ROT0, "BFM","Club Moneybags (Bellfruit) (Scorpion 4) (set 2)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4clbmnb ,sc4clbmn, sc4, sc4clbmn, sc4_state, sc4mbus, ROT0, "BFM","Club Moneybags (Bellfruit) (Scorpion 4) (set 3)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4clbmnc ,sc4clbmn, sc4, sc4clbmn, sc4_state, sc4mbus, ROT0, "BFM","Club Moneybags (Bellfruit) (Scorpion 4) (set 4)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4clbmn ,0, sc4, sc4clbmn, sc4_state, sc4mbus, ROT0, "BFM","Club Moneybags (Bellfruit) (Scorpion 4) (set 1)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4clbmna ,sc4clbmn, sc4, sc4clbmn, sc4_state, sc4mbus, ROT0, "BFM","Club Moneybags (Bellfruit) (Scorpion 4) (set 2)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4clbmnb ,sc4clbmn, sc4, sc4clbmn, sc4_state, sc4mbus, ROT0, "BFM","Club Moneybags (Bellfruit) (Scorpion 4) (set 3)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4clbmnc ,sc4clbmn, sc4, sc4clbmn, sc4_state, sc4mbus, ROT0, "BFM","Club Moneybags (Bellfruit) (Scorpion 4) (set 4)", MACHINE_FLAGS, layout_bfm_sc4 )
DRIVER_INIT_MEMBER(sc4_state,sc4boomb)
@@ -42325,8 +42327,8 @@ INPUT_PORTS_START( sc4boomb ) // this structure is generated
INPUT_PORTS_END
//PROJECT NUMBER PR3332 AWP MONOPOLY BOOM OR BUST S4 PR3307 MPOLY BOOM OR B SOUNDS11 BOOM OR BUST S.SITE
-GAMEL( 200?, sc4boomb ,0, sc4_5reel_alt, sc4boomb, sc4_state, sc4boomb, ROT0, "BFM","Monopoly Boom Or Bust (Bellfruit) (Scorpion 4) (set 1)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4boomba ,sc4boomb, sc4_5reel_alt, sc4boomb, sc4_state, sc4boomb, ROT0, "BFM","Monopoly Boom Or Bust (Bellfruit) (Scorpion 4) (set 2)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4boomb ,0, sc4_5reel_alt, sc4boomb, sc4_state, sc4boomb, ROT0, "BFM","Monopoly Boom Or Bust (Bellfruit) (Scorpion 4) (set 1)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4boomba ,sc4boomb, sc4_5reel_alt, sc4boomb, sc4_state, sc4boomb, ROT0, "BFM","Monopoly Boom Or Bust (Bellfruit) (Scorpion 4) (set 2)", MACHINE_FLAGS, layout_bfm_sc4 )
DRIVER_INIT_MEMBER(sc4_state,sc4fever)
@@ -42399,16 +42401,16 @@ INPUT_PORTS_END
// we have FEVER SOUNDS12 but it accepts those?
// PR1007 FEVER PR1007 FEVER SOUNDS11
-GAMEL( 200?, sc4fever ,0, sc4_200_alta, sc4fever, sc4_state, sc4fever, ROT0, "BFM","Fever (PR1007) (Bellfruit) (Scorpion 4) (set 1)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4fevera ,sc4fever, sc4_200_alta, sc4fever, sc4_state, sc4fever, ROT0, "BFM","Fever (PR1007) (Bellfruit) (Scorpion 4) (set 2)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4feverb ,sc4fever, sc4_200_alta, sc4fever, sc4_state, sc4fever, ROT0, "BFM","Fever (PR1007) (Bellfruit) (Scorpion 4) (set 3)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4feverc ,sc4fever, sc4_200_alta, sc4fever, sc4_state, sc4fever, ROT0, "BFM","Fever (PR1007) (Bellfruit) (Scorpion 4) (set 4)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4feverd ,sc4fever, sc4_200_alta, sc4fever, sc4_state, sc4fever, ROT0, "BFM","Fever (PR1007) (Bellfruit) (Scorpion 4) (set 5)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4fevere ,sc4fever, sc4_200_alta, sc4fever, sc4_state, sc4fever, ROT0, "BFM","Fever (PR1007) (Bellfruit) (Scorpion 4) (set 6)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4feverf ,sc4fever, sc4_200_alta, sc4fever, sc4_state, sc4fever, ROT0, "BFM","Fever (PR1007) (Bellfruit) (Scorpion 4) (set 7)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4feverg ,sc4fever, sc4_200_alta, sc4fever, sc4_state, sc4fever, ROT0, "BFM","Fever (PR1007) (Bellfruit) (Scorpion 4) (set 8)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4feverh ,sc4fever, sc4_200_alta, sc4fever, sc4_state, sc4fever, ROT0, "BFM","Fever (PR1007) (Bellfruit) (Scorpion 4) (set 9)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4feverk ,sc4fever, sc4_200_alta, sc4fever, sc4_state, sc4fever, ROT0, "BFM","Fever (PR1007) (Bellfruit) (Scorpion 4) (set 10)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4fever ,0, sc4_200_alta, sc4fever, sc4_state, sc4fever, ROT0, "BFM","Fever (PR1007) (Bellfruit) (Scorpion 4) (set 1)", MACHINE_FLAGS_NOSOUND, layout_bfm_sc4 )
+GAMEL( 200?, sc4fevera ,sc4fever, sc4_200_alta, sc4fever, sc4_state, sc4fever, ROT0, "BFM","Fever (PR1007) (Bellfruit) (Scorpion 4) (set 2)", MACHINE_FLAGS_NOSOUND, layout_bfm_sc4 )
+GAMEL( 200?, sc4feverb ,sc4fever, sc4_200_alta, sc4fever, sc4_state, sc4fever, ROT0, "BFM","Fever (PR1007) (Bellfruit) (Scorpion 4) (set 3)", MACHINE_FLAGS_NOSOUND, layout_bfm_sc4 )
+GAMEL( 200?, sc4feverc ,sc4fever, sc4_200_alta, sc4fever, sc4_state, sc4fever, ROT0, "BFM","Fever (PR1007) (Bellfruit) (Scorpion 4) (set 4)", MACHINE_FLAGS_NOSOUND, layout_bfm_sc4 )
+GAMEL( 200?, sc4feverd ,sc4fever, sc4_200_alta, sc4fever, sc4_state, sc4fever, ROT0, "BFM","Fever (PR1007) (Bellfruit) (Scorpion 4) (set 5)", MACHINE_FLAGS_NOSOUND, layout_bfm_sc4 )
+GAMEL( 200?, sc4fevere ,sc4fever, sc4_200_alta, sc4fever, sc4_state, sc4fever, ROT0, "BFM","Fever (PR1007) (Bellfruit) (Scorpion 4) (set 6)", MACHINE_FLAGS_NOSOUND, layout_bfm_sc4 )
+GAMEL( 200?, sc4feverf ,sc4fever, sc4_200_alta, sc4fever, sc4_state, sc4fever, ROT0, "BFM","Fever (PR1007) (Bellfruit) (Scorpion 4) (set 7)", MACHINE_FLAGS_NOSOUND, layout_bfm_sc4 )
+GAMEL( 200?, sc4feverg ,sc4fever, sc4_200_alta, sc4fever, sc4_state, sc4fever, ROT0, "BFM","Fever (PR1007) (Bellfruit) (Scorpion 4) (set 8)", MACHINE_FLAGS_NOSOUND, layout_bfm_sc4 )
+GAMEL( 200?, sc4feverh ,sc4fever, sc4_200_alta, sc4fever, sc4_state, sc4fever, ROT0, "BFM","Fever (PR1007) (Bellfruit) (Scorpion 4) (set 9)", MACHINE_FLAGS_NOSOUND, layout_bfm_sc4 )
+GAMEL( 200?, sc4feverk ,sc4fever, sc4_200_alta, sc4fever, sc4_state, sc4fever, ROT0, "BFM","Fever (PR1007) (Bellfruit) (Scorpion 4) (set 10)", MACHINE_FLAGS_NOSOUND, layout_bfm_sc4 )
@@ -42474,8 +42476,8 @@ INPUT_PORTS_START( sc4aztec ) // this structure is generated
// 0x0010 - "boekho" // standard input (expected here)
INPUT_PORTS_END
-GAMEL( 200?, sc4aztec ,0, sc4, sc4aztec, sc4_state, sc4aztec, ROT0, "BFG / Eurocoin","Aztec Casino (Dutch) (Bellfruit) (Scorpion 4)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )// PR1225 AZTEC CASINO
-GAMEL( 200?, sc4azteca ,sc4aztec, sc4, sc4, sc4_state, sc4aztec, ROT0, "BFG / Eurocoin","Aztec (Dutch) (Bellfruit) (Scorpion 4)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 ) // PR1215 AZTEC EURO
+GAMEL( 200?, sc4aztec ,0, sc4, sc4aztec, sc4_state, sc4aztec, ROT0, "BFG / Eurocoin","Aztec Casino (Dutch) (Bellfruit) (Scorpion 4)", MACHINE_FLAGS, layout_bfm_sc4 )// PR1225 AZTEC CASINO
+GAMEL( 200?, sc4azteca ,sc4aztec, sc4, sc4, sc4_state, sc4aztec, ROT0, "BFG / Eurocoin","Aztec (Dutch) (Bellfruit) (Scorpion 4)", MACHINE_FLAGS, layout_bfm_sc4 ) // PR1215 AZTEC EURO
DRIVER_INIT_MEMBER(sc4_state,sc4helrd)
@@ -42538,8 +42540,8 @@ INPUT_PORTS_START( sc4helrd ) // this structure is generated
INPUT_PORTS_END
// PR1254 HELLRAISER ART12 95004326 HELLRAISER PR1254
-GAMEL( 200?, sc4helrd ,0, sc4_4reel, sc4helrd, sc4_state, sc4helrd, ROT0, "BFM","Hellraiser (Dutch) (Bellfruit) (Scorpion 4) (set 1)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4helrs ,sc4helrd, sc4_4reel, sc4helrd, sc4_state, sc4helrd, ROT0, "BFM","Hellraiser (Dutch) (Bellfruit) (Scorpion 4) (set 2)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4helrd ,0, sc4_4reel, sc4helrd, sc4_state, sc4helrd, ROT0, "BFM","Hellraiser (Dutch) (Bellfruit) (Scorpion 4) (set 1)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4helrs ,sc4helrd, sc4_4reel, sc4helrd, sc4_state, sc4helrd, ROT0, "BFM","Hellraiser (Dutch) (Bellfruit) (Scorpion 4) (set 2)", MACHINE_FLAGS, layout_bfm_sc4 )
DRIVER_INIT_MEMBER(sc4_state,sc4heatw)
@@ -42601,7 +42603,7 @@ INPUT_PORTS_START( sc4heatw ) // this structure is generated
INPUT_PORTS_END
// PR1216 HEATWAVE ART 12 95004287 HEATWAVE PR1156
-GAMEL( 200?, sc4heatw ,0, sc4, sc4heatw, sc4_state, sc4heatw, ROT0, "BFM","Heatwave (Dutch) (Bellfruit) (Scorpion 4)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4heatw ,0, sc4, sc4heatw, sc4_state, sc4heatw, ROT0, "BFM","Heatwave (Dutch) (Bellfruit) (Scorpion 4)", MACHINE_FLAGS, layout_bfm_sc4 )
@@ -42666,7 +42668,7 @@ INPUT_PORTS_START( sc4colos ) // this structure is generated
INPUT_PORTS_END
// PR1208 COLOSSUS 95004235 COLOSSUS PR7155 COLOSSUS
-GAMEL( 200?, sc4colos ,0, sc4, sc4colos, sc4_state, sc4colos, ROT0, "BFM","Colossus (Dutch) (Bellfruit) (Scorpion 4)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4colos ,0, sc4, sc4colos, sc4_state, sc4colos, ROT0, "BFM","Colossus (Dutch) (Bellfruit) (Scorpion 4)", MACHINE_FLAGS, layout_bfm_sc4 )
DRIVER_INIT_MEMBER(sc4_state,sc4fevdt)
{
@@ -42727,9 +42729,9 @@ INPUT_PORTS_START( sc4fevdt ) // this structure is generated
INPUT_PORTS_END
// PR1202 FEVER 95004239 FEVER PR7157
-GAMEL( 200?, sc4fevdt ,0, sc4, sc4fevdt, sc4_state, sc4fevdt, ROT0, "BFM","Fever (PR1202) (Dutch) (Bellfruit) (Scorpion 4) (set 1)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4fevdta ,sc4fevdt, sc4, sc4fevdt, sc4_state, sc4fevdt, ROT0, "BFM","Fever (PR1202) (Dutch) (Bellfruit) (Scorpion 4) (set 2)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4fevdtb ,sc4fevdt, sc4, sc4fevdt, sc4_state, sc4fevdt, ROT0, "BFM","Fever (PR1202) (Dutch) (Bellfruit) (Scorpion 4) (set 3)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4fevdt ,0, sc4, sc4fevdt, sc4_state, sc4fevdt, ROT0, "BFM","Fever (PR1202) (Dutch) (Bellfruit) (Scorpion 4) (set 1)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4fevdta ,sc4fevdt, sc4, sc4fevdt, sc4_state, sc4fevdt, ROT0, "BFM","Fever (PR1202) (Dutch) (Bellfruit) (Scorpion 4) (set 2)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4fevdtb ,sc4fevdt, sc4, sc4fevdt, sc4_state, sc4fevdt, ROT0, "BFM","Fever (PR1202) (Dutch) (Bellfruit) (Scorpion 4) (set 3)", MACHINE_FLAGS, layout_bfm_sc4 )
DRIVER_INIT_MEMBER(sc4_state,sc4fevnx)
@@ -42792,8 +42794,8 @@ INPUT_PORTS_START( sc4fevnx ) // this structure is generated
INPUT_PORTS_END
// PR1216 FEVER ART12 95004318 FEVER T N PR1251
-GAMEL( 200?, sc4fevnx ,0, sc4, sc4fevnx, sc4_state, sc4fevnx, ROT0, "BFM","Fever The Next (Dutch) (Bellfruit) (Scorpion 4) (set 1)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4fevnxa ,sc4fevnx, sc4, sc4fevnx, sc4_state, sc4fevnx, ROT0, "BFM","Fever The Next (Dutch) (Bellfruit) (Scorpion 4) (set 2)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4fevnx ,0, sc4, sc4fevnx, sc4_state, sc4fevnx, ROT0, "BFM","Fever The Next (Dutch) (Bellfruit) (Scorpion 4) (set 1)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4fevnxa ,sc4fevnx, sc4, sc4fevnx, sc4_state, sc4fevnx, ROT0, "BFM","Fever The Next (Dutch) (Bellfruit) (Scorpion 4) (set 2)", MACHINE_FLAGS, layout_bfm_sc4 )
DRIVER_INIT_MEMBER(sc4_state,sc4game)
{
@@ -42903,8 +42905,8 @@ INPUT_PORTS_START( sc4game ) // this structure is generated
// 0x0010 - "boekho" // standard input (expected here)
INPUT_PORTS_END
-GAMEL( 200?, sc4gamcs ,0, sc4_3reel, sc4gamcs, sc4_state, sc4game, ROT0, "BFM","The Game Casino (Dutch) (Bellfruit) (Scorpion 4)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 ) // PR1224 THE GAME CASINO 95004285 THEGAME PR1153
-GAMEL( 200?, sc4game ,sc4gamcs, sc4_3reel, sc4game, sc4_state, sc4game, ROT0, "BFM","The Game (Dutch) (Bellfruit) (Scorpion 4)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 ) // PR1213 THE GAME 95004285 THEGAME PR1153
+GAMEL( 200?, sc4gamcs ,0, sc4_3reel, sc4gamcs, sc4_state, sc4game, ROT0, "BFM","The Game Casino (Dutch) (Bellfruit) (Scorpion 4)", MACHINE_FLAGS, layout_bfm_sc4 ) // PR1224 THE GAME CASINO 95004285 THEGAME PR1153
+GAMEL( 200?, sc4game ,sc4gamcs, sc4_3reel, sc4game, sc4_state, sc4game, ROT0, "BFM","The Game (Dutch) (Bellfruit) (Scorpion 4)", MACHINE_FLAGS, layout_bfm_sc4 ) // PR1213 THE GAME 95004285 THEGAME PR1153
DRIVER_INIT_MEMBER(sc4_state,sc4goud)
{
@@ -42975,7 +42977,7 @@ INPUT_PORTS_END
// PR1211 GOUDKOORTS 95004288 GOUDKOORTS PR1151
-GAMEL( 200?, sc4goud ,0, sc4_200_5r, sc4goud, sc4_state, sc4goud, ROT0, "BFM","Goudkoorts (Dutch) (Bellfruit) (Scorpion 4)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4goud ,0, sc4_200_5r, sc4goud, sc4_state, sc4goud, ROT0, "BFM","Goudkoorts (Dutch) (Bellfruit) (Scorpion 4)", MACHINE_FLAGS, layout_bfm_sc4 )
DRIVER_INIT_MEMBER(sc4_state,sc4lasv)
{
@@ -43027,8 +43029,8 @@ INPUT_PORTS_START( sc4lasv ) // this structure is generated
INPUT_PORTS_END
// PR1209 LAS VEGAS 95004261 LASVEGAS PR7159
-GAMEL( 200?, sc4lasv ,0, sc4, sc4lasv, sc4_state, sc4lasv, ROT0, "BFM","Las Vegas (Dutch) (Bellfruit) (Scorpion 4) (set 1)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4lasva ,sc4lasv, sc4, sc4lasv, sc4_state, sc4lasv, ROT0, "BFM","Las Vegas (Dutch) (Bellfruit) (Scorpion 4) (set 2)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4lasv ,0, sc4, sc4lasv, sc4_state, sc4lasv, ROT0, "BFM","Las Vegas (Dutch) (Bellfruit) (Scorpion 4) (set 1)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4lasva ,sc4lasv, sc4, sc4lasv, sc4_state, sc4lasv, ROT0, "BFM","Las Vegas (Dutch) (Bellfruit) (Scorpion 4) (set 2)", MACHINE_FLAGS, layout_bfm_sc4 )
DRIVER_INIT_MEMBER(sc4_state,sc4miljo)
{
@@ -43142,8 +43144,8 @@ INPUT_PORTS_START( sc4milja ) // this structure is generated
// 0x0010 - "boekho" // standard input (expected here)
INPUT_PORTS_END
-GAMEL( 200?, sc4miljo ,0, sc4, sc4miljo, sc4_state, sc4miljo, ROT0, "BFM","Miljonairs (Dutch) (Bellfruit) (Scorpion 4) (set 1)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 ) // PR1217 MILJONAIRSART12 95004305 MILJONAIRE PR1157
-GAMEL( 200?, sc4milja ,sc4miljo, sc4, sc4milja, sc4_state, sc4miljo, ROT0, "BFM","Miljonairs Arcade (Dutch) (Bellfruit) (Scorpion 4)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 ) // PR1223 MILJONAIRS 95004305 MILJONAIRE PR1157
+GAMEL( 200?, sc4miljo ,0, sc4, sc4miljo, sc4_state, sc4miljo, ROT0, "BFM","Miljonairs (Dutch) (Bellfruit) (Scorpion 4) (set 1)", MACHINE_FLAGS, layout_bfm_sc4 ) // PR1217 MILJONAIRSART12 95004305 MILJONAIRE PR1157
+GAMEL( 200?, sc4milja ,sc4miljo, sc4, sc4milja, sc4_state, sc4miljo, ROT0, "BFM","Miljonairs Arcade (Dutch) (Bellfruit) (Scorpion 4)", MACHINE_FLAGS, layout_bfm_sc4 ) // PR1223 MILJONAIRS 95004305 MILJONAIRE PR1157
DRIVER_INIT_MEMBER(sc4_state,sc4paytm)
{
@@ -43205,7 +43207,7 @@ INPUT_PORTS_START( sc4paytm ) // this structure is generated
INPUT_PORTS_END
// PR1205 PAY TIME 95004224 PAYTIME PR7156 PAY TIME
-GAMEL( 200?, sc4paytm ,0, sc4, sc4paytm, sc4_state, sc4paytm, ROT0, "BFM","Pay Time (Dutch) (Bellfruit) (Scorpion 4)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4paytm ,0, sc4, sc4paytm, sc4_state, sc4paytm, ROT0, "BFM","Pay Time (Dutch) (Bellfruit) (Scorpion 4)", MACHINE_FLAGS, layout_bfm_sc4 )
DRIVER_INIT_MEMBER(sc4_state,sc4pglcs)
@@ -43263,9 +43265,9 @@ INPUT_PORTS_START( sc4pglcs ) // this structure is generated
INPUT_PORTS_END
// PR1261 PHARAOH'S GOLD 95004316 CAS PHAR GOLD PR1261
-GAMEL( 200?, sc4pglcs ,0, sc4_3reel, sc4pglcs, sc4_state, sc4pglcs, ROT0, "BFM","Pharaoh's Gold Casino (Dutch) (Bellfruit) (Scorpion 4) (set 1)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4pglcsa ,sc4pglcs, sc4_3reel, sc4pglcs, sc4_state, sc4pglcs, ROT0, "BFM","Pharaoh's Gold Casino (Dutch) (Bellfruit) (Scorpion 4) (set 2)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4pglcsb ,sc4pglcs, sc4_3reel, sc4pglcs, sc4_state, sc4pglcs, ROT0, "BFM","Pharaoh's Gold Casino (Dutch) (Bellfruit) (Scorpion 4) (set 3)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4pglcs ,0, sc4_3reel, sc4pglcs, sc4_state, sc4pglcs, ROT0, "BFM","Pharaoh's Gold Casino (Dutch) (Bellfruit) (Scorpion 4) (set 1)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4pglcsa ,sc4pglcs, sc4_3reel, sc4pglcs, sc4_state, sc4pglcs, ROT0, "BFM","Pharaoh's Gold Casino (Dutch) (Bellfruit) (Scorpion 4) (set 2)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4pglcsb ,sc4pglcs, sc4_3reel, sc4pglcs, sc4_state, sc4pglcs, ROT0, "BFM","Pharaoh's Gold Casino (Dutch) (Bellfruit) (Scorpion 4) (set 3)", MACHINE_FLAGS, layout_bfm_sc4 )
DRIVER_INIT_MEMBER(sc4_state,sc4redad)
@@ -43328,8 +43330,8 @@ INPUT_PORTS_START( sc4redad ) // this structure is generated
INPUT_PORTS_END
// PR1206 RED ALERT 95004266 REDALERT PR1051
-GAMEL( 200?, sc4redad ,0, sc4, sc4redad, sc4_state, sc4redad, ROT0, "BFM","Red Alert (Dutch) (Bellfruit) (Scorpion 4) (set 1)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4redada ,sc4redad, sc4, sc4redad, sc4_state, sc4redad, ROT0, "BFM","Red Alert (Dutch) (Bellfruit) (Scorpion 4) (set 2)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4redad ,0, sc4, sc4redad, sc4_state, sc4redad, ROT0, "BFM","Red Alert (Dutch) (Bellfruit) (Scorpion 4) (set 1)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4redada ,sc4redad, sc4, sc4redad, sc4_state, sc4redad, ROT0, "BFM","Red Alert (Dutch) (Bellfruit) (Scorpion 4) (set 2)", MACHINE_FLAGS, layout_bfm_sc4 )
DRIVER_INIT_MEMBER(sc4_state,sc4rvlnx)
@@ -43390,7 +43392,7 @@ INPUT_PORTS_START( sc4rvlnx ) // this structure is generated
INPUT_PORTS_END
// PR1252 REVOLUTION NEXT 95004320 REVOLUTIONTN PR1252
-GAMEL( 200?, sc4rvlnx ,0, sc4_200_5r, sc4rvlnx, sc4_state, sc4rvlnx, ROT0, "BFM","Revolution The Next (Dutch) (Bellfruit) (Scorpion 4)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4rvlnx ,0, sc4_200_5r, sc4rvlnx, sc4_state, sc4rvlnx, ROT0, "BFM","Revolution The Next (Dutch) (Bellfruit) (Scorpion 4)", MACHINE_FLAGS, layout_bfm_sc4 )
DRIVER_INIT_MEMBER(sc4_state,sc4rvl)
{
@@ -43453,7 +43455,7 @@ INPUT_PORTS_START( sc4rvl ) // this structure is generated
INPUT_PORTS_END
// PR1203 REVOLUTION 95004259 REVOLUTION PR7158
-GAMEL( 200?, sc4rvl ,0, sc4_200_5r, sc4rvl, sc4_state, sc4rvl, ROT0, "BFM","Revolution (Dutch) (Bellfruit) (Scorpion 4)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4rvl ,0, sc4_200_5r, sc4rvl, sc4_state, sc4rvl, ROT0, "BFM","Revolution (Dutch) (Bellfruit) (Scorpion 4)", MACHINE_FLAGS, layout_bfm_sc4 )
DRIVER_INIT_MEMBER(sc4_state,sc4rio)
{
@@ -43515,7 +43517,7 @@ INPUT_PORTS_START( sc4rio ) // this structure is generated
INPUT_PORTS_END
// PR1222 RIO GRANDE 95004309 RIO GRANDE SOUNDS11
-GAMEL( 200?, sc4rio ,0, sc4, sc4rio, sc4_state, sc4rio, ROT0, "BFM","Rio Grande (Dutch) (Bellfruit) (Scorpion 4)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4rio ,0, sc4, sc4rio, sc4_state, sc4rio, ROT0, "BFM","Rio Grande (Dutch) (Bellfruit) (Scorpion 4)", MACHINE_FLAGS, layout_bfm_sc4 )
DRIVER_INIT_MEMBER(sc4_state,sc4strbr)
@@ -43633,12 +43635,12 @@ INPUT_PORTS_START( sc4strbra ) // this structure is generated
INPUT_PORTS_END
// PR1219 STARS 'N BARS 95004290 STARSNBARS PR1159
-GAMEL( 200?, sc4strbr ,0, sc4, sc4strbr, sc4_state, sc4strbr, ROT0, "BFM","Stars 'n' Bars (PR1219) (Dutch) (Bellfruit) (Scorpion 4) (set 1)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4strbrb ,sc4strbr, sc4, sc4strbr, sc4_state, sc4strbr, ROT0, "BFM","Stars 'n' Bars (PR1219) (Dutch) (Bellfruit) (Scorpion 4) (set 2)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4strbr ,0, sc4, sc4strbr, sc4_state, sc4strbr, ROT0, "BFM","Stars 'n' Bars (PR1219) (Dutch) (Bellfruit) (Scorpion 4) (set 1)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4strbrb ,sc4strbr, sc4, sc4strbr, sc4_state, sc4strbr, ROT0, "BFM","Stars 'n' Bars (PR1219) (Dutch) (Bellfruit) (Scorpion 4) (set 2)", MACHINE_FLAGS, layout_bfm_sc4 )
// PR1263 SNBA ART13 STARS 'N' BARS ARCADE - ART13 95004290 STARSNBARS PR1159
-GAMEL( 200?, sc4strbra ,sc4strbr, sc4, sc4strbra, sc4_state, sc4strbr, ROT0, "BFM","Stars 'n' Bars Arcade (PR1263) (Dutch) (Bellfruit) (Scorpion 4) (set 1)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4strbrc ,sc4strbr, sc4, sc4strbra, sc4_state, sc4strbr, ROT0, "BFM","Stars 'n' Bars Arcade (PR1263) (Dutch) (Bellfruit) (Scorpion 4) (set 2)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4strbrd ,sc4strbr, sc4, sc4strbra, sc4_state, sc4strbr, ROT0, "BFM","Stars 'n' Bars Arcade (PR1263) (Dutch) (Bellfruit) (Scorpion 4) (set 3)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4strbra ,sc4strbr, sc4, sc4strbra, sc4_state, sc4strbr, ROT0, "BFM","Stars 'n' Bars Arcade (PR1263) (Dutch) (Bellfruit) (Scorpion 4) (set 1)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4strbrc ,sc4strbr, sc4, sc4strbra, sc4_state, sc4strbr, ROT0, "BFM","Stars 'n' Bars Arcade (PR1263) (Dutch) (Bellfruit) (Scorpion 4) (set 2)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4strbrd ,sc4strbr, sc4, sc4strbra, sc4_state, sc4strbr, ROT0, "BFM","Stars 'n' Bars Arcade (PR1263) (Dutch) (Bellfruit) (Scorpion 4) (set 3)", MACHINE_FLAGS, layout_bfm_sc4 )
DRIVER_INIT_MEMBER(sc4_state,sc4twilt)
@@ -43702,7 +43704,7 @@ INPUT_PORTS_START( sc4twilt ) // this structure is generated
INPUT_PORTS_END
// PR1214 TWILIGHT 95004299 TWILIGHT PR1154
-GAMEL( 200?, sc4twilt ,0, sc4_4reel, sc4twilt, sc4_state, sc4twilt, ROT0, "BFM","Twilight (Dutch) (Bellfruit) (Scorpion 4)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4twilt ,0, sc4_4reel, sc4twilt, sc4_state, sc4twilt, ROT0, "BFM","Twilight (Dutch) (Bellfruit) (Scorpion 4)", MACHINE_FLAGS, layout_bfm_sc4 )
DRIVER_INIT_MEMBER(sc4_state,sc4monsp)
@@ -43765,7 +43767,7 @@ INPUT_PORTS_START( sc4monsp ) // this structure is generated
INPUT_PORTS_END
// PR1218 MONEY SPINNER ART12 95004291 MONEYSPINNER PR1158
-GAMEL( 200?, sc4monsp ,0, sc4_200_5r, sc4monsp, sc4_state, sc4monsp, ROT0, "BFM","Money Spinner (Dutch) (Bellfruit) (Scorpion 4)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4monsp ,0, sc4_200_5r, sc4monsp, sc4_state, sc4monsp, ROT0, "BFM","Money Spinner (Dutch) (Bellfruit) (Scorpion 4)", MACHINE_FLAGS, layout_bfm_sc4 )
@@ -43831,7 +43833,7 @@ INPUT_PORTS_END
// PR1227 4PLAY ART13 95004313 4PLAY PR1227
-GAMEL( 200?, sc4ivply ,0, sc4_4reel, sc4ivply, sc4_state, sc4ivply, ROT0, "BFM","4 Play (Dutch) (Bellfruit) (Scorpion 4)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4ivply ,0, sc4_4reel, sc4ivply, sc4_state, sc4ivply, ROT0, "BFM","4 Play (Dutch) (Bellfruit) (Scorpion 4)", MACHINE_FLAGS, layout_bfm_sc4 )
DRIVER_INIT_MEMBER(sc4_state,sc4ccc)
@@ -43896,7 +43898,7 @@ INPUT_PORTS_START( sc4ccc ) // this structure is generated
INPUT_PORTS_END
// PR1221 CRISSCROSSCRAZY ART13 95004282 CRISSCROSS PR1161
-GAMEL( 200?, sc4ccc ,0, sc4_4reel, sc4ccc, sc4_state, sc4ccc, ROT0, "BFM","Criss Cross Crazy (Dutch) (Bellfruit) (Scorpion 4)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4ccc ,0, sc4_4reel, sc4ccc, sc4_state, sc4ccc, ROT0, "BFM","Criss Cross Crazy (Dutch) (Bellfruit) (Scorpion 4)", MACHINE_FLAGS, layout_bfm_sc4 )
DRIVER_INIT_MEMBER(sc4_state,sc4valqp)
@@ -43958,7 +43960,7 @@ INPUT_PORTS_START( sc4valqp ) // this structure is generated
INPUT_PORTS_END
// PR2040E VALHALLA...PR2040 SOUNDS V1.... (non-standard header)
-GAMEL( 200?, sc4valqp ,0, sc4_3reel, sc4valqp, sc4_state, sc4valqp, ROT0, "Qps / Eurocoin","Valhalla (Dutch) (Qps) (Scorpion 4)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4valqp ,0, sc4_3reel, sc4valqp, sc4_state, sc4valqp, ROT0, "Qps / Eurocoin","Valhalla (Dutch) (Qps) (Scorpion 4)", MACHINE_FLAGS, layout_bfm_sc4 )
DRIVER_INIT_MEMBER(sc4_state,sc4winxp)
@@ -44021,7 +44023,7 @@ INPUT_PORTS_START( sc4winxp ) // this structure is generated
INPUT_PORTS_END
// PR1207 WIN XPLOSION 95004265 WINXPLOSION PR1053
-GAMEL( 200?, sc4winxp ,0, sc4_4reel, sc4winxp, sc4_state, sc4winxp, ROT0, "BFM","Win X-plosion (Dutch) (Bellfruit) (Scorpion 4)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4winxp ,0, sc4_4reel, sc4winxp, sc4_state, sc4winxp, ROT0, "BFM","Win X-plosion (Dutch) (Bellfruit) (Scorpion 4)", MACHINE_FLAGS, layout_bfm_sc4 )
DRIVER_INIT_MEMBER(sc4_state,sc4xcash)
@@ -44079,7 +44081,7 @@ INPUT_PORTS_START( sc4xcash ) // this structure is generated
INPUT_PORTS_END
// PR1264 XTRA CASH ART13 XTRA CASH CASINO (LOTECH) - ART13 95004321 XTRACASH PR1264
-GAMEL( 200?, sc4xcash ,0, sc4_3reel, sc4xcash, sc4_state, sc4xcash, ROT0, "BFM","Xtra Cash Casino (Dutch) (Bellfruit) (Scorpion 4)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4xcash ,0, sc4_3reel, sc4xcash, sc4_state, sc4xcash, ROT0, "BFM","Xtra Cash Casino (Dutch) (Bellfruit) (Scorpion 4)", MACHINE_FLAGS, layout_bfm_sc4 )
DRIVER_INIT_MEMBER(sc4_state,sc4helld)
{
@@ -44141,7 +44143,7 @@ INPUT_PORTS_START( sc4helld ) // this structure is generated
INPUT_PORTS_END
// PR1201 HELLS BELLS 95004211 HELLS BELLS PR6945 HELLS BELLS (non english?)
-GAMEL( 200?, sc4helld ,0, sc4_3reel, sc4helld, sc4_state, sc4helld, ROT0, "BFM / Eurocoin","Hells Bells (PR1201) (Dutch) (Bellfruit) (Scorpion 4)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4helld ,0, sc4_3reel, sc4helld, sc4_state, sc4helld, ROT0, "BFM / Eurocoin","Hells Bells (PR1201) (Dutch) (Bellfruit) (Scorpion 4)", MACHINE_FLAGS, layout_bfm_sc4 )
DRIVER_INIT_MEMBER(sc4_state,sc4cashn)
{
@@ -44202,7 +44204,7 @@ INPUT_PORTS_END
// PR2038E Dutch12 Cashanova (not a standard string)
-GAMEL( 200?, sc4cashn ,0, sc4_3reel, sc4cashn, sc4_state, sc4cashn, ROT0, "Mazooma / Eurocoin","Cashanova (Dutch) (Mazooma / Eurocoin) (Scorpion 4)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4cashn ,0, sc4_3reel, sc4cashn, sc4_state, sc4cashn, ROT0, "Mazooma / Eurocoin","Cashanova (Dutch) (Mazooma / Eurocoin) (Scorpion 4)", MACHINE_FLAGS, layout_bfm_sc4 )
DRIVER_INIT_MEMBER(sc4_state,sc4czfra)
@@ -44266,7 +44268,7 @@ INPUT_PORTS_START( sc4czfra ) // this structure is generated
INPUT_PORTS_END
// PR1212 CRAZY FRUITS PR1152 CRAZY FRUITS SOUNDS11
-GAMEL( 200?, sc4czfra ,0, sc4_5reel, sc4czfra, sc4_state, sc4czfra, ROT0, "BFM","Crazy Fruits (Dutch) (PR1212, CRAZ) (Bellfruit) (Scorpion 4)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4czfra ,0, sc4_5reel, sc4czfra, sc4_state, sc4czfra, ROT0, "BFM","Crazy Fruits (Dutch) (PR1212, CRAZ) (Bellfruit) (Scorpion 4)", MACHINE_FLAGS, layout_bfm_sc4 )
@@ -44339,8 +44341,8 @@ INPUT_PORTS_END
// PAY UNIT ERR 17
// PR1611 AWP ANT AND DECS PR1611 ANT AND DECS SOUNDS11 ANT AND DECS S.SITE
-GAMEL( 200?, sc4adsnt ,0, sc4, sc4adsnt, sc4_state, sc4, ROT0, "BFM","Ant & Dec's Saturday Night Takeaway (Bellfruit) (Scorpion 4) (set 1)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4adsnta ,sc4adsnt, sc4, sc4adsnt, sc4_state, sc4, ROT0, "BFM","Ant & Dec's Saturday Night Takeaway (Bellfruit) (Scorpion 4) (set 2)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4adsnt ,0, sc4, sc4adsnt, sc4_state, sc4, ROT0, "BFM","Ant & Dec's Saturday Night Takeaway (Bellfruit) (Scorpion 4) (set 1)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4adsnta ,sc4adsnt, sc4, sc4adsnt, sc4_state, sc4, ROT0, "BFM","Ant & Dec's Saturday Night Takeaway (Bellfruit) (Scorpion 4) (set 2)", MACHINE_FLAGS, layout_bfm_sc4 )
INPUT_PORTS_START( sc4slad ) // this structure is generated
PORT_INCLUDE( sc4_base )
@@ -44400,15 +44402,15 @@ INPUT_PORTS_END
// PAY UNIT ERR 17
// PR1411 AWP SNAKES AND LADDERS PR1411 SNAKES A L SOUNDS11 SNAKES & LADDERS S.SITE
-GAMEL( 200?, sc4slad ,0, sc4, sc4slad, sc4_state, sc4, ROT0, "BFM","Snakes & Ladders (Bellfruit) (Scorpion 4) (set 1)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4slada ,sc4slad, sc4, sc4slad, sc4_state, sc4, ROT0, "BFM","Snakes & Ladders (Bellfruit) (Scorpion 4) (set 2)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4sladb ,sc4slad, sc4, sc4slad, sc4_state, sc4, ROT0, "BFM","Snakes & Ladders (Bellfruit) (Scorpion 4) (set 3)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4sladc ,sc4slad, sc4, sc4slad, sc4_state, sc4, ROT0, "BFM","Snakes & Ladders (Bellfruit) (Scorpion 4) (set 4)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4sladd ,sc4slad, sc4, sc4slad, sc4_state, sc4, ROT0, "BFM","Snakes & Ladders (Bellfruit) (Scorpion 4) (set 5)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4slade ,sc4slad, sc4, sc4slad, sc4_state, sc4, ROT0, "BFM","Snakes & Ladders (Bellfruit) (Scorpion 4) (set 6)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4sladf ,sc4slad, sc4, sc4slad, sc4_state, sc4, ROT0, "BFM","Snakes & Ladders (Bellfruit) (Scorpion 4) (set 7)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4sladg ,sc4slad, sc4, sc4slad, sc4_state, sc4, ROT0, "BFM","Snakes & Ladders (Bellfruit) (Scorpion 4) (set 8)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4sladh ,sc4slad, sc4, sc4slad, sc4_state, sc4, ROT0, "BFM","Snakes & Ladders (Bellfruit) (Scorpion 4) (set 9)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4slad ,0, sc4, sc4slad, sc4_state, sc4, ROT0, "BFM","Snakes & Ladders (Bellfruit) (Scorpion 4) (set 1)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4slada ,sc4slad, sc4, sc4slad, sc4_state, sc4, ROT0, "BFM","Snakes & Ladders (Bellfruit) (Scorpion 4) (set 2)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4sladb ,sc4slad, sc4, sc4slad, sc4_state, sc4, ROT0, "BFM","Snakes & Ladders (Bellfruit) (Scorpion 4) (set 3)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4sladc ,sc4slad, sc4, sc4slad, sc4_state, sc4, ROT0, "BFM","Snakes & Ladders (Bellfruit) (Scorpion 4) (set 4)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4sladd ,sc4slad, sc4, sc4slad, sc4_state, sc4, ROT0, "BFM","Snakes & Ladders (Bellfruit) (Scorpion 4) (set 5)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4slade ,sc4slad, sc4, sc4slad, sc4_state, sc4, ROT0, "BFM","Snakes & Ladders (Bellfruit) (Scorpion 4) (set 6)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4sladf ,sc4slad, sc4, sc4slad, sc4_state, sc4, ROT0, "BFM","Snakes & Ladders (Bellfruit) (Scorpion 4) (set 7)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4sladg ,sc4slad, sc4, sc4slad, sc4_state, sc4, ROT0, "BFM","Snakes & Ladders (Bellfruit) (Scorpion 4) (set 8)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4sladh ,sc4slad, sc4, sc4slad, sc4_state, sc4, ROT0, "BFM","Snakes & Ladders (Bellfruit) (Scorpion 4) (set 9)", MACHINE_FLAGS, layout_bfm_sc4 )
INPUT_PORTS_START( sc4magci ) // this structure is generated
PORT_INCLUDE( sc4_base )
@@ -44453,37 +44455,37 @@ INPUT_PORTS_END
// PAY UNIT ERR 17
// PR2535 MAGIC CIRCLE STANDARD 011 MAGICSND
-GAMEL( 200?, sc4magci ,0, sc4, sc4magci, sc4_state, sc4, ROT0, "Qps","Magic Circle (011) (Qps) (Scorpion 4) (set 1)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4magcik ,sc4magci, sc4, sc4magci, sc4_state, sc4, ROT0, "Qps","Magic Circle (011) (Qps) (Scorpion 4) (set 2)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4magci ,0, sc4, sc4magci, sc4_state, sc4, ROT0, "Qps","Magic Circle (011) (Qps) (Scorpion 4) (set 1)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4magcik ,sc4magci, sc4, sc4magci, sc4_state, sc4, ROT0, "Qps","Magic Circle (011) (Qps) (Scorpion 4) (set 2)", MACHINE_FLAGS, layout_bfm_sc4 )
// PR2535 MAGIC CIRCLE STANDARD 021 MAGICSND
-GAMEL( 200?, sc4magcia ,sc4magci, sc4, sc4magci, sc4_state, sc4, ROT0, "Qps","Magic Circle (021) (Qps) (Scorpion 4) (set 1)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4magcil ,sc4magci, sc4, sc4magci, sc4_state, sc4, ROT0, "Qps","Magic Circle (021) (Qps) (Scorpion 4) (set 2)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4magcia ,sc4magci, sc4, sc4magci, sc4_state, sc4, ROT0, "Qps","Magic Circle (021) (Qps) (Scorpion 4) (set 1)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4magcil ,sc4magci, sc4, sc4magci, sc4_state, sc4, ROT0, "Qps","Magic Circle (021) (Qps) (Scorpion 4) (set 2)", MACHINE_FLAGS, layout_bfm_sc4 )
// PR2535 MAGIC CIRCLE STANDARD 031 MAGICSND
-GAMEL( 200?, sc4magcib ,sc4magci, sc4, sc4magci, sc4_state, sc4, ROT0, "Qps","Magic Circle (031) (Qps) (Scorpion 4) (set 1)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4magcim ,sc4magci, sc4, sc4magci, sc4_state, sc4, ROT0, "Qps","Magic Circle (031) (Qps) (Scorpion 4) (set 2)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4magcib ,sc4magci, sc4, sc4magci, sc4_state, sc4, ROT0, "Qps","Magic Circle (031) (Qps) (Scorpion 4) (set 1)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4magcim ,sc4magci, sc4, sc4magci, sc4_state, sc4, ROT0, "Qps","Magic Circle (031) (Qps) (Scorpion 4) (set 2)", MACHINE_FLAGS, layout_bfm_sc4 )
// PR2535 MAGIC CIRCLE STANDARD 012 MAGICSND
-GAMEL( 200?, sc4magcic ,sc4magci, sc4, sc4magci, sc4_state, sc4, ROT0, "Qps","Magic Circle (012) (Qps) (Scorpion 4) (set 1)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4magcin ,sc4magci, sc4, sc4magci, sc4_state, sc4, ROT0, "Qps","Magic Circle (012) (Qps) (Scorpion 4) (set 2)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4magcid ,sc4magci, sc4, sc4magci, sc4_state, sc4, ROT0, "Qps","Magic Circle (012) (Qps) (Scorpion 4) (set 3)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4magcio ,sc4magci, sc4, sc4magci, sc4_state, sc4, ROT0, "Qps","Magic Circle (012) (Qps) (Scorpion 4) (set 4)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4magcic ,sc4magci, sc4, sc4magci, sc4_state, sc4, ROT0, "Qps","Magic Circle (012) (Qps) (Scorpion 4) (set 1)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4magcin ,sc4magci, sc4, sc4magci, sc4_state, sc4, ROT0, "Qps","Magic Circle (012) (Qps) (Scorpion 4) (set 2)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4magcid ,sc4magci, sc4, sc4magci, sc4_state, sc4, ROT0, "Qps","Magic Circle (012) (Qps) (Scorpion 4) (set 3)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4magcio ,sc4magci, sc4, sc4magci, sc4_state, sc4, ROT0, "Qps","Magic Circle (012) (Qps) (Scorpion 4) (set 4)", MACHINE_FLAGS, layout_bfm_sc4 )
//P R2535 MAGIC CIRCLE STANDARD 022 MAGICSND
-GAMEL( 200?, sc4magcie ,sc4magci, sc4, sc4magci, sc4_state, sc4, ROT0, "Qps","Magic Circle (022) (Qps) (Scorpion 4) (set 1)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4magcip ,sc4magci, sc4, sc4magci, sc4_state, sc4, ROT0, "Qps","Magic Circle (022) (Qps) (Scorpion 4) (set 2)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4magcie ,sc4magci, sc4, sc4magci, sc4_state, sc4, ROT0, "Qps","Magic Circle (022) (Qps) (Scorpion 4) (set 1)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4magcip ,sc4magci, sc4, sc4magci, sc4_state, sc4, ROT0, "Qps","Magic Circle (022) (Qps) (Scorpion 4) (set 2)", MACHINE_FLAGS, layout_bfm_sc4 )
// PR2535 MAGIC CIRCLE STANDARD 032 MAGICSND
-GAMEL( 200?, sc4magcif ,sc4magci, sc4, sc4magci, sc4_state, sc4, ROT0, "Qps","Magic Circle (032) (Qps) (Scorpion 4) (set 1)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4magciq ,sc4magci, sc4, sc4magci, sc4_state, sc4, ROT0, "Qps","Magic Circle (032) (Qps) (Scorpion 4) (set 2)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4magcif ,sc4magci, sc4, sc4magci, sc4_state, sc4, ROT0, "Qps","Magic Circle (032) (Qps) (Scorpion 4) (set 1)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4magciq ,sc4magci, sc4, sc4magci, sc4_state, sc4, ROT0, "Qps","Magic Circle (032) (Qps) (Scorpion 4) (set 2)", MACHINE_FLAGS, layout_bfm_sc4 )
// PR2535 MAGIC CIRCLE STANDARD 013 MAGICSND
-GAMEL( 200?, sc4magcig ,sc4magci, sc4, sc4magci, sc4_state, sc4, ROT0, "Qps","Magic Circle (013) (Qps) (Scorpion 4) (set 1)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4magcir ,sc4magci, sc4, sc4magci, sc4_state, sc4, ROT0, "Qps","Magic Circle (013) (Qps) (Scorpion 4) (set 2)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4magcig ,sc4magci, sc4, sc4magci, sc4_state, sc4, ROT0, "Qps","Magic Circle (013) (Qps) (Scorpion 4) (set 1)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4magcir ,sc4magci, sc4, sc4magci, sc4_state, sc4, ROT0, "Qps","Magic Circle (013) (Qps) (Scorpion 4) (set 2)", MACHINE_FLAGS, layout_bfm_sc4 )
// PR2535 MAGIC CIRCLE STANDARD 014 MAGICSND
-GAMEL( 200?, sc4magcih ,sc4magci, sc4, sc4magci, sc4_state, sc4, ROT0, "Qps","Magic Circle (014) (Qps) (Scorpion 4) (set 1)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4magcis ,sc4magci, sc4, sc4magci, sc4_state, sc4, ROT0, "Qps","Magic Circle (014) (Qps) (Scorpion 4) (set 2)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4magcih ,sc4magci, sc4, sc4magci, sc4_state, sc4, ROT0, "Qps","Magic Circle (014) (Qps) (Scorpion 4) (set 1)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4magcis ,sc4magci, sc4, sc4magci, sc4_state, sc4, ROT0, "Qps","Magic Circle (014) (Qps) (Scorpion 4) (set 2)", MACHINE_FLAGS, layout_bfm_sc4 )
// PR2535 MAGIC CIRCLE STANDARD 024 MAGICSND
-GAMEL( 200?, sc4magcii ,sc4magci, sc4, sc4magci, sc4_state, sc4, ROT0, "Qps","Magic Circle (024) (Qps) (Scorpion 4) (set 1)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4magcit ,sc4magci, sc4, sc4magci, sc4_state, sc4, ROT0, "Qps","Magic Circle (024) (Qps) (Scorpion 4) (set 2)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4magcii ,sc4magci, sc4, sc4magci, sc4_state, sc4, ROT0, "Qps","Magic Circle (024) (Qps) (Scorpion 4) (set 1)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4magcit ,sc4magci, sc4, sc4magci, sc4_state, sc4, ROT0, "Qps","Magic Circle (024) (Qps) (Scorpion 4) (set 2)", MACHINE_FLAGS, layout_bfm_sc4 )
// PR2535 MAGIC CIRCLE STANDARD 034 MAGICSND
-GAMEL( 200?, sc4magcij ,sc4magci, sc4, sc4magci, sc4_state, sc4, ROT0, "Qps","Magic Circle (034) (Qps) (Scorpion 4) (set 1)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4magciu ,sc4magci, sc4, sc4magci, sc4_state, sc4, ROT0, "Qps","Magic Circle (034) (Qps) (Scorpion 4) (set 2)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4magcij ,sc4magci, sc4, sc4magci, sc4_state, sc4, ROT0, "Qps","Magic Circle (034) (Qps) (Scorpion 4) (set 1)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4magciu ,sc4magci, sc4, sc4magci, sc4_state, sc4, ROT0, "Qps","Magic Circle (034) (Qps) (Scorpion 4) (set 2)", MACHINE_FLAGS, layout_bfm_sc4 )
INPUT_PORTS_START( sc4dcrls ) // this structure is generated
PORT_INCLUDE( sc4_base )
@@ -44528,23 +44530,23 @@ INPUT_PORTS_END
// PAY UNIT ERR 17
// PR2544 DOUBLE CRAZY REELS 021 DCRZYSND
-GAMEL( 200?, sc4dcrls ,0, sc4, sc4dcrls, sc4_state, sc4, ROT0, "Mazooma","Double Crazy Reels (021) (Mazooma) (Scorpion 4) (set 1)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4dcrlsf ,sc4dcrls, sc4, sc4dcrls, sc4_state, sc4, ROT0, "Mazooma","Double Crazy Reels (021) (Mazooma) (Scorpion 4) (set 2)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4dcrls ,0, sc4, sc4dcrls, sc4_state, sc4, ROT0, "Mazooma","Double Crazy Reels (021) (Mazooma) (Scorpion 4) (set 1)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4dcrlsf ,sc4dcrls, sc4, sc4dcrls, sc4_state, sc4, ROT0, "Mazooma","Double Crazy Reels (021) (Mazooma) (Scorpion 4) (set 2)", MACHINE_FLAGS, layout_bfm_sc4 )
// PR2544 DOUBLE CRAZY REELS 031 DCRZYSND
-GAMEL( 200?, sc4dcrlsa ,sc4dcrls, sc4, sc4dcrls, sc4_state, sc4, ROT0, "Mazooma","Double Crazy Reels (031) (Mazooma) (Scorpion 4) (set 1)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4dcrlsg ,sc4dcrls, sc4, sc4dcrls, sc4_state, sc4, ROT0, "Mazooma","Double Crazy Reels (031) (Mazooma) (Scorpion 4) (set 2)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4dcrlsa ,sc4dcrls, sc4, sc4dcrls, sc4_state, sc4, ROT0, "Mazooma","Double Crazy Reels (031) (Mazooma) (Scorpion 4) (set 1)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4dcrlsg ,sc4dcrls, sc4, sc4dcrls, sc4_state, sc4, ROT0, "Mazooma","Double Crazy Reels (031) (Mazooma) (Scorpion 4) (set 2)", MACHINE_FLAGS, layout_bfm_sc4 )
// PR2544 DOUBLE CRAZY REELS 022 DCRZYSND
-GAMEL( 200?, sc4dcrlsb ,sc4dcrls, sc4, sc4dcrls, sc4_state, sc4, ROT0, "Mazooma","Double Crazy Reels (022) (Mazooma) (Scorpion 4) (set 1)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4dcrlsh ,sc4dcrls, sc4, sc4dcrls, sc4_state, sc4, ROT0, "Mazooma","Double Crazy Reels (022) (Mazooma) (Scorpion 4) (set 2)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4dcrlsb ,sc4dcrls, sc4, sc4dcrls, sc4_state, sc4, ROT0, "Mazooma","Double Crazy Reels (022) (Mazooma) (Scorpion 4) (set 1)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4dcrlsh ,sc4dcrls, sc4, sc4dcrls, sc4_state, sc4, ROT0, "Mazooma","Double Crazy Reels (022) (Mazooma) (Scorpion 4) (set 2)", MACHINE_FLAGS, layout_bfm_sc4 )
// PR2544 DOUBLE CRAZY REELS 032 DCRZYSND
-GAMEL( 200?, sc4dcrlsc ,sc4dcrls, sc4, sc4dcrls, sc4_state, sc4, ROT0, "Mazooma","Double Crazy Reels (032) (Mazooma) (Scorpion 4) (set 1)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4dcrlsi ,sc4dcrls, sc4, sc4dcrls, sc4_state, sc4, ROT0, "Mazooma","Double Crazy Reels (032) (Mazooma) (Scorpion 4) (set 2)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4dcrlsc ,sc4dcrls, sc4, sc4dcrls, sc4_state, sc4, ROT0, "Mazooma","Double Crazy Reels (032) (Mazooma) (Scorpion 4) (set 1)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4dcrlsi ,sc4dcrls, sc4, sc4dcrls, sc4_state, sc4, ROT0, "Mazooma","Double Crazy Reels (032) (Mazooma) (Scorpion 4) (set 2)", MACHINE_FLAGS, layout_bfm_sc4 )
// PR2544 DOUBLE CRAZY REELS 023 DCRZYSND
-GAMEL( 200?, sc4dcrlsd ,sc4dcrls, sc4, sc4dcrls, sc4_state, sc4, ROT0, "Mazooma","Double Crazy Reels (023) (Mazooma) (Scorpion 4) (set 1)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4dcrlsj ,sc4dcrls, sc4, sc4dcrls, sc4_state, sc4, ROT0, "Mazooma","Double Crazy Reels (023) (Mazooma) (Scorpion 4) (set 2)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4dcrlsd ,sc4dcrls, sc4, sc4dcrls, sc4_state, sc4, ROT0, "Mazooma","Double Crazy Reels (023) (Mazooma) (Scorpion 4) (set 1)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4dcrlsj ,sc4dcrls, sc4, sc4dcrls, sc4_state, sc4, ROT0, "Mazooma","Double Crazy Reels (023) (Mazooma) (Scorpion 4) (set 2)", MACHINE_FLAGS, layout_bfm_sc4 )
// PR2544 DOUBLE CRAZY REELS 033 DCRZYSND
-GAMEL( 200?, sc4dcrlse ,sc4dcrls, sc4, sc4dcrls, sc4_state, sc4, ROT0, "Mazooma","Double Crazy Reels (033) (Mazooma) (Scorpion 4) (set 1)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4dcrlsk ,sc4dcrls, sc4, sc4dcrls, sc4_state, sc4, ROT0, "Mazooma","Double Crazy Reels (033) (Mazooma) (Scorpion 4) (set 2)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4dcrlse ,sc4dcrls, sc4, sc4dcrls, sc4_state, sc4, ROT0, "Mazooma","Double Crazy Reels (033) (Mazooma) (Scorpion 4) (set 1)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4dcrlsk ,sc4dcrls, sc4, sc4dcrls, sc4_state, sc4, ROT0, "Mazooma","Double Crazy Reels (033) (Mazooma) (Scorpion 4) (set 2)", MACHINE_FLAGS, layout_bfm_sc4 )
INPUT_PORTS_START( sc4gshot ) // this structure is generated
PORT_INCLUDE( sc4_base )
@@ -44589,11 +44591,11 @@ INPUT_PORTS_END
// PAY UNIT ERR 17
// PR2564 GOLDEN SHOT Standard Version GOLDENSHOTLOTECHSND
-GAMEL( 200?, sc4gshot ,0, sc4, sc4gshot, sc4_state, sc4, ROT0, "Qps","Golden Shot (Qps) (Scorpion 4) (set 1)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4gshotb ,sc4gshot, sc4, sc4gshot, sc4_state, sc4, ROT0, "Qps","Golden Shot (Qps) (Scorpion 4) (set 2)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4gshot ,0, sc4, sc4gshot, sc4_state, sc4, ROT0, "Qps","Golden Shot (Qps) (Scorpion 4) (set 1)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4gshotb ,sc4gshot, sc4, sc4gshot, sc4_state, sc4, ROT0, "Qps","Golden Shot (Qps) (Scorpion 4) (set 2)", MACHINE_FLAGS, layout_bfm_sc4 )
// PR2564 GOLDEN SHOT Arcade Version GOLDENSHOTLOTECHSND
-GAMEL( 200?, sc4gshota ,sc4gshot, sc4, sc4gshot, sc4_state, sc4, ROT0, "Qps","Golden Shot Arcade (Qps) (Scorpion 4) (set 1)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4gshotc ,sc4gshot, sc4, sc4gshot, sc4_state, sc4, ROT0, "Qps","Golden Shot Arcade (Qps) (Scorpion 4) (set 2)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4gshota ,sc4gshot, sc4, sc4gshot, sc4_state, sc4, ROT0, "Qps","Golden Shot Arcade (Qps) (Scorpion 4) (set 1)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4gshotc ,sc4gshot, sc4, sc4gshot, sc4_state, sc4, ROT0, "Qps","Golden Shot Arcade (Qps) (Scorpion 4) (set 2)", MACHINE_FLAGS, layout_bfm_sc4 )
INPUT_PORTS_START( sc4cj ) // this structure is generated
PORT_INCLUDE( sc4_base )
@@ -44660,11 +44662,11 @@ INPUT_PORTS_END
// PAY UNIT ERR 17
// PR1416 COOL JEWELS PR1416 COOL JEWELS SOUNDS11 COOL JEWELS S.SITE
-GAMEL( 200?, sc4cj ,0, sc4, sc4cj, sc4_state, sc4, ROT0, "BFM","Cool Jewels (Bellfruit) (Scorpion 4) (set 1)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4cja ,sc4cj, sc4, sc4cj, sc4_state, sc4, ROT0, "BFM","Cool Jewels (Bellfruit) (Scorpion 4) (set 2)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4cjb ,sc4cj, sc4, sc4cj, sc4_state, sc4, ROT0, "BFM","Cool Jewels (Bellfruit) (Scorpion 4) (set 3)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4cjc ,sc4cj, sc4, sc4cj, sc4_state, sc4, ROT0, "BFM","Cool Jewels (Bellfruit) (Scorpion 4) (set 4)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4cjd ,sc4cj, sc4, sc4cj, sc4_state, sc4, ROT0, "BFM","Cool Jewels (Bellfruit) (Scorpion 4) (set 5)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 ) // incomplete pairing
+GAMEL( 200?, sc4cj ,0, sc4, sc4cj, sc4_state, sc4, ROT0, "BFM","Cool Jewels (Bellfruit) (Scorpion 4) (set 1)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4cja ,sc4cj, sc4, sc4cj, sc4_state, sc4, ROT0, "BFM","Cool Jewels (Bellfruit) (Scorpion 4) (set 2)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4cjb ,sc4cj, sc4, sc4cj, sc4_state, sc4, ROT0, "BFM","Cool Jewels (Bellfruit) (Scorpion 4) (set 3)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4cjc ,sc4cj, sc4, sc4cj, sc4_state, sc4, ROT0, "BFM","Cool Jewels (Bellfruit) (Scorpion 4) (set 4)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4cjd ,sc4cj, sc4, sc4cj, sc4_state, sc4, ROT0, "BFM","Cool Jewels (Bellfruit) (Scorpion 4) (set 5)", MACHINE_FLAGS, layout_bfm_sc4 ) // incomplete pairing
INPUT_PORTS_START( sc4crnjw ) // this structure is generated
PORT_INCLUDE( sc4_base )
@@ -44733,8 +44735,8 @@ INPUT_PORTS_END
// PAY UNIT ERROR 17
// PR1638 AWP CROWN JEWELS PR1608 CROWN JEWELS SOUNDS11 CROWN JEWELS S.SITE
-GAMEL( 200?, sc4crnjw ,0, sc4, sc4crnjw, sc4_state, sc4, ROT0, "BFM","Crown Jewels (Bellfruit) (Scorpion 4) (set 1)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4crnjwa ,sc4crnjw, sc4, sc4crnjw, sc4_state, sc4, ROT0, "BFM","Crown Jewels (Bellfruit) (Scorpion 4) (set 2)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4crnjw ,0, sc4, sc4crnjw, sc4_state, sc4, ROT0, "BFM","Crown Jewels (Bellfruit) (Scorpion 4) (set 1)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4crnjwa ,sc4crnjw, sc4, sc4crnjw, sc4_state, sc4, ROT0, "BFM","Crown Jewels (Bellfruit) (Scorpion 4) (set 2)", MACHINE_FLAGS, layout_bfm_sc4 )
INPUT_PORTS_START( sc4jjok ) // this structure is generated
PORT_INCLUDE( sc4_base )
@@ -44805,8 +44807,8 @@ INPUT_PORTS_END
// PAY UNIT ERR 17
// PR1609 JACKPOT JOKERS PR1609 JACKPOT JOKERS SOUNDS11 JACKPOT JOKERS S.SITE
-GAMEL( 200?, sc4jjok ,0, sc4, sc4jjok, sc4_state, sc4, ROT0, "BFM","Jackpot Jokers (Bellfruit) (Scorpion 4) (set 1)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4jjoka ,sc4jjok, sc4, sc4jjok, sc4_state, sc4, ROT0, "BFM","Jackpot Jokers (Bellfruit) (Scorpion 4) (set 2)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4jjok ,0, sc4, sc4jjok, sc4_state, sc4, ROT0, "BFM","Jackpot Jokers (Bellfruit) (Scorpion 4) (set 1)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4jjoka ,sc4jjok, sc4, sc4jjok, sc4_state, sc4, ROT0, "BFM","Jackpot Jokers (Bellfruit) (Scorpion 4) (set 2)", MACHINE_FLAGS, layout_bfm_sc4 )
INPUT_PORTS_START( sc4copsr ) // this structure is generated
@@ -44867,16 +44869,16 @@ INPUT_PORTS_END
// PAY UNIT ERR 17
// PR1412 AWP COPS AND ROBBERS PR1412 COPS AND ROBBERS SOUNDS11 COPS AND ROBBERS S.SITE
-GAMEL( 200?, sc4copsr ,0, sc4, sc4copsr, sc4_state, sc4, ROT0, "BFM","Cops 'n' Robbers (Bellfruit) (Scorpion 4) (set 1)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4copsra ,sc4copsr, sc4, sc4copsr, sc4_state, sc4, ROT0, "BFM","Cops 'n' Robbers (Bellfruit) (Scorpion 4) (set 2)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4copsrb ,sc4copsr, sc4, sc4copsr, sc4_state, sc4, ROT0, "BFM","Cops 'n' Robbers (Bellfruit) (Scorpion 4) (set 3)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4copsrc ,sc4copsr, sc4, sc4copsr, sc4_state, sc4, ROT0, "BFM","Cops 'n' Robbers (Bellfruit) (Scorpion 4) (set 4)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4copsrd ,sc4copsr, sc4, sc4copsr, sc4_state, sc4, ROT0, "BFM","Cops 'n' Robbers (Bellfruit) (Scorpion 4) (set 5)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4copsre ,sc4copsr, sc4, sc4copsr, sc4_state, sc4, ROT0, "BFM","Cops 'n' Robbers (Bellfruit) (Scorpion 4) (set 6)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4copsrf ,sc4copsr, sc4, sc4copsr, sc4_state, sc4, ROT0, "BFM","Cops 'n' Robbers (Bellfruit) (Scorpion 4) (set 7)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4copsrg ,sc4copsr, sc4, sc4copsr, sc4_state, sc4, ROT0, "BFM","Cops 'n' Robbers (Bellfruit) (Scorpion 4) (set 8)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4copsrh ,sc4copsr, sc4, sc4copsr, sc4_state, sc4, ROT0, "BFM","Cops 'n' Robbers (Bellfruit) (Scorpion 4) (set 9)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4copsri ,sc4copsr, sc4, sc4copsr, sc4_state, sc4, ROT0, "BFM","Cops 'n' Robbers (Bellfruit) (Scorpion 4) (set 10)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4copsr ,0, sc4, sc4copsr, sc4_state, sc4, ROT0, "BFM","Cops 'n' Robbers (Bellfruit) (Scorpion 4) (set 1)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4copsra ,sc4copsr, sc4, sc4copsr, sc4_state, sc4, ROT0, "BFM","Cops 'n' Robbers (Bellfruit) (Scorpion 4) (set 2)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4copsrb ,sc4copsr, sc4, sc4copsr, sc4_state, sc4, ROT0, "BFM","Cops 'n' Robbers (Bellfruit) (Scorpion 4) (set 3)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4copsrc ,sc4copsr, sc4, sc4copsr, sc4_state, sc4, ROT0, "BFM","Cops 'n' Robbers (Bellfruit) (Scorpion 4) (set 4)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4copsrd ,sc4copsr, sc4, sc4copsr, sc4_state, sc4, ROT0, "BFM","Cops 'n' Robbers (Bellfruit) (Scorpion 4) (set 5)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4copsre ,sc4copsr, sc4, sc4copsr, sc4_state, sc4, ROT0, "BFM","Cops 'n' Robbers (Bellfruit) (Scorpion 4) (set 6)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4copsrf ,sc4copsr, sc4, sc4copsr, sc4_state, sc4, ROT0, "BFM","Cops 'n' Robbers (Bellfruit) (Scorpion 4) (set 7)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4copsrg ,sc4copsr, sc4, sc4copsr, sc4_state, sc4, ROT0, "BFM","Cops 'n' Robbers (Bellfruit) (Scorpion 4) (set 8)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4copsrh ,sc4copsr, sc4, sc4copsr, sc4_state, sc4, ROT0, "BFM","Cops 'n' Robbers (Bellfruit) (Scorpion 4) (set 9)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4copsri ,sc4copsr, sc4, sc4copsr, sc4_state, sc4, ROT0, "BFM","Cops 'n' Robbers (Bellfruit) (Scorpion 4) (set 10)", MACHINE_FLAGS, layout_bfm_sc4 )
INPUT_PORTS_START( sc4druby ) // this structure is generated
PORT_INCLUDE( sc4_base )
@@ -44936,11 +44938,11 @@ INPUT_PORTS_END
// gives an 'init comms' countdown
// PR1439 DIAMONDS & RUBIES PR1436 TRIPLE CASINO SOUNDS11
-GAMEL( 200?, sc4druby ,0, sc4, sc4druby, sc4_state, sc4, ROT0, "BFM","Diamonds & Rubies (Bellfruit) (Scorpion 4) (Top Box?, set 1)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4drubya ,sc4druby, sc4, sc4druby, sc4_state, sc4, ROT0, "BFM","Diamonds & Rubies (Bellfruit) (Scorpion 4) (Top Box?, set 2)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4drubyb ,sc4druby, sc4, sc4druby, sc4_state, sc4, ROT0, "BFM","Diamonds & Rubies (Bellfruit) (Scorpion 4) (Top Box?, set 3)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 ) // incomplete pairing
-GAMEL( 200?, sc4drubyc ,sc4druby, sc4, sc4druby, sc4_state, sc4, ROT0, "BFM","Diamonds & Rubies (Bellfruit) (Scorpion 4) (Top Box?, set 4)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4drubyd ,sc4druby, sc4, sc4druby, sc4_state, sc4, ROT0, "BFM","Diamonds & Rubies (Bellfruit) (Scorpion 4) (Top Box?, set 5)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4druby ,0, sc4, sc4druby, sc4_state, sc4, ROT0, "BFM","Diamonds & Rubies (Bellfruit) (Scorpion 4) (Top Box?, set 1)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4drubya ,sc4druby, sc4, sc4druby, sc4_state, sc4, ROT0, "BFM","Diamonds & Rubies (Bellfruit) (Scorpion 4) (Top Box?, set 2)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4drubyb ,sc4druby, sc4, sc4druby, sc4_state, sc4, ROT0, "BFM","Diamonds & Rubies (Bellfruit) (Scorpion 4) (Top Box?, set 3)", MACHINE_FLAGS, layout_bfm_sc4 ) // incomplete pairing
+GAMEL( 200?, sc4drubyc ,sc4druby, sc4, sc4druby, sc4_state, sc4, ROT0, "BFM","Diamonds & Rubies (Bellfruit) (Scorpion 4) (Top Box?, set 4)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4drubyd ,sc4druby, sc4, sc4druby, sc4_state, sc4, ROT0, "BFM","Diamonds & Rubies (Bellfruit) (Scorpion 4) (Top Box?, set 5)", MACHINE_FLAGS, layout_bfm_sc4 )
/****************************************************************************************************************************************************************************************************************/
@@ -45013,12 +45015,12 @@ INPUT_PORTS_END
// missing sound roms
// PR2540 ABRACADABRA ABRA SOUNDS ABRACADABRA
-GAMEL( 200?, sc4abra ,0, sc4_200_4r, sc4abra, sc4_state, sc4abra, ROT0, "Qps","Abracadabra (Qps) (Scorpion 4) (set 1, 041)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4abraa ,sc4abra, sc4_200_4r, sc4abra, sc4_state, sc4abra, ROT0, "Qps","Abracadabra (Qps) (Scorpion 4) (set 2, 041)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4abrab ,sc4abra, sc4_200_4r, sc4abra, sc4_state, sc4abra, ROT0, "Qps","Abracadabra (Qps) (Scorpion 4) (set 3, 044)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4abrac ,sc4abra, sc4_200_4r, sc4abra, sc4_state, sc4abra, ROT0, "Qps","Abracadabra (Qps) (Scorpion 4) (set 4, 044)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4abrad ,sc4abra, sc4_200_4r, sc4abra, sc4_state, sc4abra, ROT0, "Qps","Abracadabra (Qps) (Scorpion 4) (set 5, 014)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4abrae ,sc4abra, sc4_200_4r, sc4abra, sc4_state, sc4abra, ROT0, "Qps","Abracadabra (Qps) (Scorpion 4) (set 6, 014)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4abra ,0, sc4_200_4r, sc4abra, sc4_state, sc4abra, ROT0, "Qps","Abracadabra (Qps) (Scorpion 4) (set 1, 041)", MACHINE_FLAGS_NOSOUND, layout_bfm_sc4 )
+GAMEL( 200?, sc4abraa ,sc4abra, sc4_200_4r, sc4abra, sc4_state, sc4abra, ROT0, "Qps","Abracadabra (Qps) (Scorpion 4) (set 2, 041)", MACHINE_FLAGS_NOSOUND, layout_bfm_sc4 )
+GAMEL( 200?, sc4abrab ,sc4abra, sc4_200_4r, sc4abra, sc4_state, sc4abra, ROT0, "Qps","Abracadabra (Qps) (Scorpion 4) (set 3, 044)", MACHINE_FLAGS_NOSOUND, layout_bfm_sc4 )
+GAMEL( 200?, sc4abrac ,sc4abra, sc4_200_4r, sc4abra, sc4_state, sc4abra, ROT0, "Qps","Abracadabra (Qps) (Scorpion 4) (set 4, 044)", MACHINE_FLAGS_NOSOUND, layout_bfm_sc4 )
+GAMEL( 200?, sc4abrad ,sc4abra, sc4_200_4r, sc4abra, sc4_state, sc4abra, ROT0, "Qps","Abracadabra (Qps) (Scorpion 4) (set 5, 014)", MACHINE_FLAGS_NOSOUND, layout_bfm_sc4 )
+GAMEL( 200?, sc4abrae ,sc4abra, sc4_200_4r, sc4abra, sc4_state, sc4abra, ROT0, "Qps","Abracadabra (Qps) (Scorpion 4) (set 6, 014)", MACHINE_FLAGS_NOSOUND, layout_bfm_sc4 )
INPUT_PORTS_START( sc4alad ) // this structure is generated
@@ -45063,8 +45065,8 @@ INPUT_PORTS_END
// bad / missing sound roms
// PR7068 ALADDIN'S CAVE CAVE SOUNDS
-GAMEL( 200?, sc4alad ,0, sc4, sc4alad, sc4_state, sc4, ROT0, "Mazooma","Aladdin's Cave (Mazooma) (Scorpion 4) (set 1)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4alada ,sc4alad, sc4, sc4alad, sc4_state, sc4, ROT0, "Mazooma","Aladdin's Cave (Mazooma) (Scorpion 4) (set 2)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4alad ,0, sc4, sc4alad, sc4_state, sc4, ROT0, "Mazooma","Aladdin's Cave (Mazooma) (Scorpion 4) (set 1)", MACHINE_FLAGS_NOSOUND, layout_bfm_sc4 )
+GAMEL( 200?, sc4alada ,sc4alad, sc4, sc4alad, sc4_state, sc4, ROT0, "Mazooma","Aladdin's Cave (Mazooma) (Scorpion 4) (set 2)", MACHINE_FLAGS_NOSOUND, layout_bfm_sc4 )
@@ -45121,8 +45123,8 @@ INPUT_PORTS_END
// missing sound roms, doesn't play
// PR2501 BIG DEAL BIGDEALSND BIG DEAL
-GAMEL( 200?, sc4bigdl ,0, sc4_200_5r, sc4bigdl, sc4_state, sc4bigdl, ROT0, "Qps","Big Deal (Qps) (Scorpion 4) (set 1)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4bigdla ,sc4bigdl, sc4_200_5r, sc4bigdl, sc4_state, sc4bigdl, ROT0, "Qps","Big Deal (Qps) (Scorpion 4) (set 2)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4bigdl ,0, sc4_200_5r, sc4bigdl, sc4_state, sc4bigdl, ROT0, "Qps","Big Deal (Qps) (Scorpion 4) (set 1)", MACHINE_FLAGS_NOSOUND, layout_bfm_sc4 )
+GAMEL( 200?, sc4bigdla ,sc4bigdl, sc4_200_5r, sc4bigdl, sc4_state, sc4bigdl, ROT0, "Qps","Big Deal (Qps) (Scorpion 4) (set 2)", MACHINE_FLAGS_NOSOUND, layout_bfm_sc4 )
@@ -45188,11 +45190,11 @@ INPUT_PORTS_END
// no sound roms
// PR7038 CASH CONNEXION MTOM SOUNDS
-GAMEL( 200?, sc4cconx ,0, sc4_4reel, sc4, sc4_state, sc4cconx, ROT0, "Mazooma","Cash Connexion (Mazooma) (Scorpion 4) (set 1)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4cconxa ,sc4cconx, sc4_4reel, sc4, sc4_state, sc4cconx, ROT0, "Mazooma","Cash Connexion (Mazooma) (Scorpion 4) (set 2)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4cconxb ,sc4cconx, sc4_4reel, sc4, sc4_state, sc4cconx, ROT0, "Mazooma","Cash Connexion (Mazooma) (Scorpion 4) (set 3)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4cconxc ,sc4cconx, sc4_4reel, sc4, sc4_state, sc4cconx, ROT0, "Mazooma","Cash Connexion (Mazooma) (Scorpion 4) (set 4)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4cconxd ,sc4cconx, sc4_200_4r, sc4cconxd, sc4_state, sc4cconxd, ROT0, "Mazooma","Cash Connexion (Mazooma) (Scorpion 4) (set 5)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 ) // this one won't init without a 200 step reel
+GAMEL( 200?, sc4cconx ,0, sc4_4reel, sc4, sc4_state, sc4cconx, ROT0, "Mazooma","Cash Connexion (Mazooma) (Scorpion 4) (set 1)", MACHINE_FLAGS_NOSOUND, layout_bfm_sc4 )
+GAMEL( 200?, sc4cconxa ,sc4cconx, sc4_4reel, sc4, sc4_state, sc4cconx, ROT0, "Mazooma","Cash Connexion (Mazooma) (Scorpion 4) (set 2)", MACHINE_FLAGS_NOSOUND, layout_bfm_sc4 )
+GAMEL( 200?, sc4cconxb ,sc4cconx, sc4_4reel, sc4, sc4_state, sc4cconx, ROT0, "Mazooma","Cash Connexion (Mazooma) (Scorpion 4) (set 3)", MACHINE_FLAGS_NOSOUND, layout_bfm_sc4 )
+GAMEL( 200?, sc4cconxc ,sc4cconx, sc4_4reel, sc4, sc4_state, sc4cconx, ROT0, "Mazooma","Cash Connexion (Mazooma) (Scorpion 4) (set 4)", MACHINE_FLAGS_NOSOUND, layout_bfm_sc4 )
+GAMEL( 200?, sc4cconxd ,sc4cconx, sc4_200_4r, sc4cconxd, sc4_state, sc4cconxd, ROT0, "Mazooma","Cash Connexion (Mazooma) (Scorpion 4) (set 5)", MACHINE_FLAGS_NOSOUND, layout_bfm_sc4 ) // this one won't init without a 200 step reel
DRIVER_INIT_MEMBER(sc4_state,sc4ccrus)
{
@@ -45252,9 +45254,9 @@ INPUT_PORTS_END
// no sound roms (probably doesn't want cashanova, but check)
// PR2006 CASH CRUSADERS CASH SOUNDS CASH CRUSADERS
-GAMEL( 200?, sc4ccrus ,0, sc4_4reel, sc4ccrus, sc4_state, sc4ccrus, ROT0, "Mazooma","Cash Crusaders (Mazooma) (Scorpion 4) (set 1)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4ccrusa ,sc4ccrus, sc4_4reel, sc4ccrus, sc4_state, sc4ccrus, ROT0, "Mazooma","Cash Crusaders (Mazooma) (Scorpion 4) (set 2)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4ccrusb ,sc4ccrus, sc4_4reel, sc4ccrus, sc4_state, sc4ccrus, ROT0, "Mazooma","Cash Crusaders (Mazooma) (Scorpion 4) (set 3)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4ccrus ,0, sc4_4reel, sc4ccrus, sc4_state, sc4ccrus, ROT0, "Mazooma","Cash Crusaders (Mazooma) (Scorpion 4) (set 1)", MACHINE_FLAGS_NOSOUND, layout_bfm_sc4 )
+GAMEL( 200?, sc4ccrusa ,sc4ccrus, sc4_4reel, sc4ccrus, sc4_state, sc4ccrus, ROT0, "Mazooma","Cash Crusaders (Mazooma) (Scorpion 4) (set 2)", MACHINE_FLAGS_NOSOUND, layout_bfm_sc4 )
+GAMEL( 200?, sc4ccrusb ,sc4ccrus, sc4_4reel, sc4ccrus, sc4_state, sc4ccrus, ROT0, "Mazooma","Cash Crusaders (Mazooma) (Scorpion 4) (set 3)", MACHINE_FLAGS_NOSOUND, layout_bfm_sc4 )
@@ -45315,16 +45317,16 @@ INPUT_PORTS_START( sc4jjc ) // this structure is generated
INPUT_PORTS_END
// PR2152 JUMPIN JACK CASH JACK SOUNDS JUMPIN JACK CASH
-GAMEL( 200?, sc4jjc ,0, sc4_200_4ra, sc4jjc, sc4_state, sc4jjc, ROT0, "Mazooma","Jumping Jack Cash (Mazooma) (Scorpion 4) (set 1)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4jjca ,sc4jjc, sc4_200_4ra, sc4jjc, sc4_state, sc4jjc, ROT0, "Mazooma","Jumping Jack Cash (Mazooma) (Scorpion 4) (set 2)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4jjcb ,sc4jjc, sc4_200_4ra, sc4jjc, sc4_state, sc4jjc, ROT0, "Mazooma","Jumping Jack Cash (Mazooma) (Scorpion 4) (set 3)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4jjcc ,sc4jjc, sc4_200_4ra, sc4jjc, sc4_state, sc4jjc, ROT0, "Mazooma","Jumping Jack Cash (Mazooma) (Scorpion 4) (set 4)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4jjcd ,sc4jjc, sc4_200_4ra, sc4jjc, sc4_state, sc4jjc, ROT0, "Mazooma","Jumping Jack Cash (Mazooma) (Scorpion 4) (set 5)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4jjce ,sc4jjc, sc4_200_4ra, sc4jjc, sc4_state, sc4jjc, ROT0, "Mazooma","Jumping Jack Cash (Mazooma) (Scorpion 4) (set 6)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4jjcf ,sc4jjc, sc4_200_4ra, sc4jjc, sc4_state, sc4jjc, ROT0, "Mazooma","Jumping Jack Cash (Mazooma) (Scorpion 4) (set 7)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4jjcg ,sc4jjc, sc4_200_4ra, sc4jjc, sc4_state, sc4jjc, ROT0, "Mazooma","Jumping Jack Cash (Mazooma) (Scorpion 4) (set 8)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4jjch ,sc4jjc, sc4_200_4ra, sc4jjc, sc4_state, sc4jjc, ROT0, "Mazooma","Jumping Jack Cash (Mazooma) (Scorpion 4) (set 9)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4jjci ,sc4jjc, sc4_200_4ra, sc4jjc, sc4_state, sc4jjc, ROT0, "Mazooma","Jumping Jack Cash (Mazooma) (Scorpion 4) (set 10)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4jjc ,0, sc4_200_4ra, sc4jjc, sc4_state, sc4jjc, ROT0, "Mazooma","Jumping Jack Cash (Mazooma) (Scorpion 4) (set 1)", MACHINE_FLAGS_NOSOUND, layout_bfm_sc4 )
+GAMEL( 200?, sc4jjca ,sc4jjc, sc4_200_4ra, sc4jjc, sc4_state, sc4jjc, ROT0, "Mazooma","Jumping Jack Cash (Mazooma) (Scorpion 4) (set 2)", MACHINE_FLAGS_NOSOUND, layout_bfm_sc4 )
+GAMEL( 200?, sc4jjcb ,sc4jjc, sc4_200_4ra, sc4jjc, sc4_state, sc4jjc, ROT0, "Mazooma","Jumping Jack Cash (Mazooma) (Scorpion 4) (set 3)", MACHINE_FLAGS_NOSOUND, layout_bfm_sc4 )
+GAMEL( 200?, sc4jjcc ,sc4jjc, sc4_200_4ra, sc4jjc, sc4_state, sc4jjc, ROT0, "Mazooma","Jumping Jack Cash (Mazooma) (Scorpion 4) (set 4)", MACHINE_FLAGS_NOSOUND, layout_bfm_sc4 )
+GAMEL( 200?, sc4jjcd ,sc4jjc, sc4_200_4ra, sc4jjc, sc4_state, sc4jjc, ROT0, "Mazooma","Jumping Jack Cash (Mazooma) (Scorpion 4) (set 5)", MACHINE_FLAGS_NOSOUND, layout_bfm_sc4 )
+GAMEL( 200?, sc4jjce ,sc4jjc, sc4_200_4ra, sc4jjc, sc4_state, sc4jjc, ROT0, "Mazooma","Jumping Jack Cash (Mazooma) (Scorpion 4) (set 6)", MACHINE_FLAGS_NOSOUND, layout_bfm_sc4 )
+GAMEL( 200?, sc4jjcf ,sc4jjc, sc4_200_4ra, sc4jjc, sc4_state, sc4jjc, ROT0, "Mazooma","Jumping Jack Cash (Mazooma) (Scorpion 4) (set 7)", MACHINE_FLAGS_NOSOUND, layout_bfm_sc4 )
+GAMEL( 200?, sc4jjcg ,sc4jjc, sc4_200_4ra, sc4jjc, sc4_state, sc4jjc, ROT0, "Mazooma","Jumping Jack Cash (Mazooma) (Scorpion 4) (set 8)", MACHINE_FLAGS_NOSOUND, layout_bfm_sc4 )
+GAMEL( 200?, sc4jjch ,sc4jjc, sc4_200_4ra, sc4jjc, sc4_state, sc4jjc, ROT0, "Mazooma","Jumping Jack Cash (Mazooma) (Scorpion 4) (set 9)", MACHINE_FLAGS_NOSOUND, layout_bfm_sc4 )
+GAMEL( 200?, sc4jjci ,sc4jjc, sc4_200_4ra, sc4jjc, sc4_state, sc4jjc, ROT0, "Mazooma","Jumping Jack Cash (Mazooma) (Scorpion 4) (set 10)", MACHINE_FLAGS_NOSOUND, layout_bfm_sc4 )
INPUT_PORTS_START( sc4kkong ) // this structure is generated
@@ -45375,17 +45377,17 @@ INPUT_PORTS_START( sc4kkong ) // this structure is generated
INPUT_PORTS_END
// PR2161 KING KONG CASH 000 KKCSH SOUNDS KING KONG CASH
-GAMEL( 200?, sc4kkong ,0, sc4, sc4kkong, sc4_state, sc4, ROT0, "Mazooma","King Kong Cash (Mazooma) (Scorpion 4) (set 1)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4kkonga ,sc4kkong, sc4, sc4kkong, sc4_state, sc4, ROT0, "Mazooma","King Kong Cash (Mazooma) (Scorpion 4) (set 2)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4kkongb ,sc4kkong, sc4, sc4kkong, sc4_state, sc4, ROT0, "Mazooma","King Kong Cash (Mazooma) (Scorpion 4) (set 3)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4kkongc ,sc4kkong, sc4, sc4kkong, sc4_state, sc4, ROT0, "Mazooma","King Kong Cash (Mazooma) (Scorpion 4) (set 4)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4kkongd ,sc4kkong, sc4, sc4kkong, sc4_state, sc4, ROT0, "Mazooma","King Kong Cash (Mazooma) (Scorpion 4) (set 5)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4kkonge ,sc4kkong, sc4, sc4kkong, sc4_state, sc4, ROT0, "Mazooma","King Kong Cash (Mazooma) (Scorpion 4) (set 6)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4kkongf ,sc4kkong, sc4, sc4kkong, sc4_state, sc4, ROT0, "Mazooma","King Kong Cash (Mazooma) (Scorpion 4) (set 7)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4kkongg ,sc4kkong, sc4, sc4kkong, sc4_state, sc4, ROT0, "Mazooma","King Kong Cash (Mazooma) (Scorpion 4) (set 8)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4kkongh ,sc4kkong, sc4, sc4kkong, sc4_state, sc4, ROT0, "Mazooma","King Kong Cash (Mazooma) (Scorpion 4) (set 9)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4kkongi ,sc4kkong, sc4, sc4kkong, sc4_state, sc4, ROT0, "Mazooma","King Kong Cash (Mazooma) (Scorpion 4) (set 10)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4kkongj ,sc4kkong, sc4, sc4kkong, sc4_state, sc4, ROT0, "Mazooma","King Kong Cash (Mazooma) (Scorpion 4) (set 11)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4kkong ,0, sc4, sc4kkong, sc4_state, sc4, ROT0, "Mazooma","King Kong Cash (Mazooma) (Scorpion 4) (set 1)", MACHINE_FLAGS_NOSOUND, layout_bfm_sc4 )
+GAMEL( 200?, sc4kkonga ,sc4kkong, sc4, sc4kkong, sc4_state, sc4, ROT0, "Mazooma","King Kong Cash (Mazooma) (Scorpion 4) (set 2)", MACHINE_FLAGS_NOSOUND, layout_bfm_sc4 )
+GAMEL( 200?, sc4kkongb ,sc4kkong, sc4, sc4kkong, sc4_state, sc4, ROT0, "Mazooma","King Kong Cash (Mazooma) (Scorpion 4) (set 3)", MACHINE_FLAGS_NOSOUND, layout_bfm_sc4 )
+GAMEL( 200?, sc4kkongc ,sc4kkong, sc4, sc4kkong, sc4_state, sc4, ROT0, "Mazooma","King Kong Cash (Mazooma) (Scorpion 4) (set 4)", MACHINE_FLAGS_NOSOUND, layout_bfm_sc4 )
+GAMEL( 200?, sc4kkongd ,sc4kkong, sc4, sc4kkong, sc4_state, sc4, ROT0, "Mazooma","King Kong Cash (Mazooma) (Scorpion 4) (set 5)", MACHINE_FLAGS_NOSOUND, layout_bfm_sc4 )
+GAMEL( 200?, sc4kkonge ,sc4kkong, sc4, sc4kkong, sc4_state, sc4, ROT0, "Mazooma","King Kong Cash (Mazooma) (Scorpion 4) (set 6)", MACHINE_FLAGS_NOSOUND, layout_bfm_sc4 )
+GAMEL( 200?, sc4kkongf ,sc4kkong, sc4, sc4kkong, sc4_state, sc4, ROT0, "Mazooma","King Kong Cash (Mazooma) (Scorpion 4) (set 7)", MACHINE_FLAGS_NOSOUND, layout_bfm_sc4 )
+GAMEL( 200?, sc4kkongg ,sc4kkong, sc4, sc4kkong, sc4_state, sc4, ROT0, "Mazooma","King Kong Cash (Mazooma) (Scorpion 4) (set 8)", MACHINE_FLAGS_NOSOUND, layout_bfm_sc4 )
+GAMEL( 200?, sc4kkongh ,sc4kkong, sc4, sc4kkong, sc4_state, sc4, ROT0, "Mazooma","King Kong Cash (Mazooma) (Scorpion 4) (set 9)", MACHINE_FLAGS_NOSOUND, layout_bfm_sc4 )
+GAMEL( 200?, sc4kkongi ,sc4kkong, sc4, sc4kkong, sc4_state, sc4, ROT0, "Mazooma","King Kong Cash (Mazooma) (Scorpion 4) (set 10)", MACHINE_FLAGS_NOSOUND, layout_bfm_sc4 )
+GAMEL( 200?, sc4kkongj ,sc4kkong, sc4, sc4kkong, sc4_state, sc4, ROT0, "Mazooma","King Kong Cash (Mazooma) (Scorpion 4) (set 11)", MACHINE_FLAGS_NOSOUND, layout_bfm_sc4 )
DRIVER_INIT_MEMBER(sc4_state,sc4knok)
@@ -45442,8 +45444,8 @@ INPUT_PORTS_END
// PR7061 KNOCKOUT KOUT SOUNDS
-GAMEL( 200?, sc4knok ,0, sc4_4reel, sc4knok, sc4_state, sc4knok, ROT0, "Mazooma","Knockout (PR7061, KOUT) (Mazooma) (Scorpion 4) (set 1)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4knoka ,sc4knok, sc4_4reel, sc4knok, sc4_state, sc4knok, ROT0, "Mazooma","Knockout (PR7061, KOUT) (Mazooma) (Scorpion 4) (set 2)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4knok ,0, sc4_4reel, sc4knok, sc4_state, sc4knok, ROT0, "Mazooma","Knockout (PR7061, KOUT) (Mazooma) (Scorpion 4) (set 1)", MACHINE_FLAGS_NOSOUND, layout_bfm_sc4 )
+GAMEL( 200?, sc4knoka ,sc4knok, sc4_4reel, sc4knok, sc4_state, sc4knok, ROT0, "Mazooma","Knockout (PR7061, KOUT) (Mazooma) (Scorpion 4) (set 2)", MACHINE_FLAGS_NOSOUND, layout_bfm_sc4 )
INPUT_PORTS_START( sc4knokb ) // this structure is generated
@@ -45491,8 +45493,8 @@ INPUT_PORTS_END
// This is a different game
// PR2057 KNOCK OUT PKOT SOUNDS KNOCK OUT
-GAMEL( 200?, sc4knokb ,0, sc4_200_5r, sc4knokb, sc4_state, sc4knokb, ROT0, "Mazooma","Knock Out (PR2057, PKOT) (Mazooma) (Scorpion 4) (set 1)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4knokc ,sc4knokb, sc4_200_5r, sc4knokb, sc4_state, sc4knokb, ROT0, "Mazooma","Knock Out (PR2057, PKOT) (Mazooma) (Scorpion 4) (set 2)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4knokb ,0, sc4_200_5r, sc4knokb, sc4_state, sc4knokb, ROT0, "Mazooma","Knock Out (PR2057, PKOT) (Mazooma) (Scorpion 4) (set 1)", MACHINE_FLAGS_NOSOUND, layout_bfm_sc4 )
+GAMEL( 200?, sc4knokc ,sc4knokb, sc4_200_5r, sc4knokb, sc4_state, sc4knokb, ROT0, "Mazooma","Knock Out (PR2057, PKOT) (Mazooma) (Scorpion 4) (set 2)", MACHINE_FLAGS_NOSOUND, layout_bfm_sc4 )
DRIVER_INIT_MEMBER(sc4_state,sc4maxcc)
@@ -45565,10 +45567,10 @@ INPUT_PORTS_START( sc4maxcc ) // this structure is generated
INPUT_PORTS_END
// PR2130 CLUB MAXIMUS CASH MAXIMUS CASH CLUB CMAX SOUNDS MAXIMUS CASH
-GAMEL( 200?, sc4maxcc ,0, sc4_200_5r, sc4maxcc, sc4_state, sc4maxcc, ROT0, "Mazooma","Maximus Cash Club (Mazooma) (Scorpion 4) (set 1)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4maxcca ,sc4maxcc, sc4_200_5r, sc4maxcc, sc4_state, sc4maxcc, ROT0, "Mazooma","Maximus Cash Club (Mazooma) (Scorpion 4) (set 2)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4maxccb ,sc4maxcc, sc4_200_5r, sc4maxcc, sc4_state, sc4maxcc, ROT0, "Mazooma","Maximus Cash Club (Mazooma) (Scorpion 4) (set 3)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4maxccc ,sc4maxcc, sc4_200_5r, sc4maxcc, sc4_state, sc4maxcc, ROT0, "Mazooma","Maximus Cash Club (Mazooma) (Scorpion 4) (set 4)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4maxcc ,0, sc4_200_5r, sc4maxcc, sc4_state, sc4maxcc, ROT0, "Mazooma","Maximus Cash Club (Mazooma) (Scorpion 4) (set 1)", MACHINE_FLAGS_NOSOUND, layout_bfm_sc4 )
+GAMEL( 200?, sc4maxcca ,sc4maxcc, sc4_200_5r, sc4maxcc, sc4_state, sc4maxcc, ROT0, "Mazooma","Maximus Cash Club (Mazooma) (Scorpion 4) (set 2)", MACHINE_FLAGS_NOSOUND, layout_bfm_sc4 )
+GAMEL( 200?, sc4maxccb ,sc4maxcc, sc4_200_5r, sc4maxcc, sc4_state, sc4maxcc, ROT0, "Mazooma","Maximus Cash Club (Mazooma) (Scorpion 4) (set 3)", MACHINE_FLAGS_NOSOUND, layout_bfm_sc4 )
+GAMEL( 200?, sc4maxccc ,sc4maxcc, sc4_200_5r, sc4maxcc, sc4_state, sc4maxcc, ROT0, "Mazooma","Maximus Cash Club (Mazooma) (Scorpion 4) (set 4)", MACHINE_FLAGS_NOSOUND, layout_bfm_sc4 )
DRIVER_INIT_MEMBER(sc4_state,sc4wadzl)
@@ -45625,8 +45627,8 @@ INPUT_PORTS_START( sc4wadzl ) // this structure is generated
INPUT_PORTS_END
// PR2052 WADZILLA WADZ SOUNDS WADZILLA
-GAMEL( 200?, sc4wadzl ,0, sc4_200_5r, sc4wadzl, sc4_state, sc4wadzl, ROT0, "Mazooma","Wadzilla (Mazooma) (Scorpion 4) (set 1)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4wadzla ,sc4wadzl, sc4_200_5r, sc4wadzl, sc4_state, sc4wadzl, ROT0, "Mazooma","Wadzilla (Mazooma) (Scorpion 4) (set 2)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4wadzl ,0, sc4_200_5r, sc4wadzl, sc4_state, sc4wadzl, ROT0, "Mazooma","Wadzilla (Mazooma) (Scorpion 4) (set 1)", MACHINE_FLAGS_NOSOUND, layout_bfm_sc4 )
+GAMEL( 200?, sc4wadzla ,sc4wadzl, sc4_200_5r, sc4wadzl, sc4_state, sc4wadzl, ROT0, "Mazooma","Wadzilla (Mazooma) (Scorpion 4) (set 2)", MACHINE_FLAGS_NOSOUND, layout_bfm_sc4 )
INPUT_PORTS_START( sc4s16 ) // this structure is generated
@@ -45676,8 +45678,8 @@ INPUT_PORTS_END
// RNG ERR 99
// PR21xx SECTION 16 SECT SOUNDS SECTION 16
-GAMEL( 200?, sc4s16 ,0, sc4, sc4s16, sc4_state, sc4, ROT0, "Mazooma","Section 16 (Mazooma) (Scorpion 4) (set 1)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4s16a ,sc4s16, sc4, sc4s16, sc4_state, sc4, ROT0, "Mazooma","Section 16 (Mazooma) (Scorpion 4) (set 2)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4s16 ,0, sc4, sc4s16, sc4_state, sc4, ROT0, "Mazooma","Section 16 (Mazooma) (Scorpion 4) (set 1)", MACHINE_FLAGS_NOSOUND, layout_bfm_sc4 )
+GAMEL( 200?, sc4s16a ,sc4s16, sc4, sc4s16, sc4_state, sc4, ROT0, "Mazooma","Section 16 (Mazooma) (Scorpion 4) (set 2)", MACHINE_FLAGS_NOSOUND, layout_bfm_sc4 )
INPUT_PORTS_START( sc4bob ) // this structure is generated
@@ -45732,16 +45734,16 @@ INPUT_PORTS_START( sc4bob ) // this structure is generated
INPUT_PORTS_END
// PR2170 BOBBY DAZZLER BOBD SOUNDS BOBBY DAZZLER
-GAMEL( 200?, sc4bob ,0, sc4, sc4bob, sc4_state, sc4, ROT0, "Mazooma","Bobby Dazzler (Mazooma) (Scorpion 4) (set 1)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4boba ,sc4bob, sc4, sc4bob, sc4_state, sc4, ROT0, "Mazooma","Bobby Dazzler (Mazooma) (Scorpion 4) (set 2)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4bobb ,sc4bob, sc4, sc4bob, sc4_state, sc4, ROT0, "Mazooma","Bobby Dazzler (Mazooma) (Scorpion 4) (set 3)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4bobc ,sc4bob, sc4, sc4bob, sc4_state, sc4, ROT0, "Mazooma","Bobby Dazzler (Mazooma) (Scorpion 4) (set 4)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4bobd ,sc4bob, sc4, sc4bob, sc4_state, sc4, ROT0, "Mazooma","Bobby Dazzler (Mazooma) (Scorpion 4) (set 5)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4bobe ,sc4bob, sc4, sc4bob, sc4_state, sc4, ROT0, "Mazooma","Bobby Dazzler (Mazooma) (Scorpion 4) (set 6)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4bobf ,sc4bob, sc4, sc4bob, sc4_state, sc4, ROT0, "Mazooma","Bobby Dazzler (Mazooma) (Scorpion 4) (set 7)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4bobg ,sc4bob, sc4, sc4bob, sc4_state, sc4, ROT0, "Mazooma","Bobby Dazzler (Mazooma) (Scorpion 4) (set 8)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4bobh ,sc4bob, sc4, sc4bob, sc4_state, sc4, ROT0, "Mazooma","Bobby Dazzler (Mazooma) (Scorpion 4) (set 9)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4bobi ,sc4bob, sc4, sc4bob, sc4_state, sc4, ROT0, "Mazooma","Bobby Dazzler (Mazooma) (Scorpion 4) (set 10)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4bob ,0, sc4, sc4bob, sc4_state, sc4, ROT0, "Mazooma","Bobby Dazzler (Mazooma) (Scorpion 4) (set 1)", MACHINE_FLAGS_NOSOUND, layout_bfm_sc4 )
+GAMEL( 200?, sc4boba ,sc4bob, sc4, sc4bob, sc4_state, sc4, ROT0, "Mazooma","Bobby Dazzler (Mazooma) (Scorpion 4) (set 2)", MACHINE_FLAGS_NOSOUND, layout_bfm_sc4 )
+GAMEL( 200?, sc4bobb ,sc4bob, sc4, sc4bob, sc4_state, sc4, ROT0, "Mazooma","Bobby Dazzler (Mazooma) (Scorpion 4) (set 3)", MACHINE_FLAGS_NOSOUND, layout_bfm_sc4 )
+GAMEL( 200?, sc4bobc ,sc4bob, sc4, sc4bob, sc4_state, sc4, ROT0, "Mazooma","Bobby Dazzler (Mazooma) (Scorpion 4) (set 4)", MACHINE_FLAGS_NOSOUND, layout_bfm_sc4 )
+GAMEL( 200?, sc4bobd ,sc4bob, sc4, sc4bob, sc4_state, sc4, ROT0, "Mazooma","Bobby Dazzler (Mazooma) (Scorpion 4) (set 5)", MACHINE_FLAGS_NOSOUND, layout_bfm_sc4 )
+GAMEL( 200?, sc4bobe ,sc4bob, sc4, sc4bob, sc4_state, sc4, ROT0, "Mazooma","Bobby Dazzler (Mazooma) (Scorpion 4) (set 6)", MACHINE_FLAGS_NOSOUND, layout_bfm_sc4 )
+GAMEL( 200?, sc4bobf ,sc4bob, sc4, sc4bob, sc4_state, sc4, ROT0, "Mazooma","Bobby Dazzler (Mazooma) (Scorpion 4) (set 7)", MACHINE_FLAGS_NOSOUND, layout_bfm_sc4 )
+GAMEL( 200?, sc4bobg ,sc4bob, sc4, sc4bob, sc4_state, sc4, ROT0, "Mazooma","Bobby Dazzler (Mazooma) (Scorpion 4) (set 8)", MACHINE_FLAGS_NOSOUND, layout_bfm_sc4 )
+GAMEL( 200?, sc4bobh ,sc4bob, sc4, sc4bob, sc4_state, sc4, ROT0, "Mazooma","Bobby Dazzler (Mazooma) (Scorpion 4) (set 9)", MACHINE_FLAGS_NOSOUND, layout_bfm_sc4 )
+GAMEL( 200?, sc4bobi ,sc4bob, sc4, sc4bob, sc4_state, sc4, ROT0, "Mazooma","Bobby Dazzler (Mazooma) (Scorpion 4) (set 10)", MACHINE_FLAGS_NOSOUND, layout_bfm_sc4 )
INPUT_PORTS_START( sc4clue ) // this structure is generated
PORT_INCLUDE( sc4_base )
@@ -45807,14 +45809,14 @@ INPUT_PORTS_START( sc4clue ) // this structure is generated
INPUT_PORTS_END
// PR2230 CLUEDO CLUE SOUNDS CLUEDO
-GAMEL( 200?, sc4clue ,0, sc4, sc4clue, sc4_state, sc4, ROT0, "Mazooma","Cluedo (Mazooma) (Scorpion 4) (set 1)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4cluea ,sc4clue, sc4, sc4clue, sc4_state, sc4, ROT0, "Mazooma","Cluedo (Mazooma) (Scorpion 4) (set 2)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4clueb ,sc4clue, sc4, sc4clue, sc4_state, sc4, ROT0, "Mazooma","Cluedo (Mazooma) (Scorpion 4) (set 3)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4cluec ,sc4clue, sc4, sc4clue, sc4_state, sc4, ROT0, "Mazooma","Cluedo (Mazooma) (Scorpion 4) (set 4)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4clued ,sc4clue, sc4, sc4clue, sc4_state, sc4, ROT0, "Mazooma","Cluedo (Mazooma) (Scorpion 4) (set 5)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4cluee ,sc4clue, sc4, sc4clue, sc4_state, sc4, ROT0, "Mazooma","Cluedo (Mazooma) (Scorpion 4) (set 6)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4cluef ,sc4clue, sc4, sc4clue, sc4_state, sc4, ROT0, "Mazooma","Cluedo (Mazooma) (Scorpion 4) (set 7)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4clueg ,sc4clue, sc4, sc4clue, sc4_state, sc4, ROT0, "Mazooma","Cluedo (Mazooma) (Scorpion 4) (set 8)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4clue ,0, sc4, sc4clue, sc4_state, sc4, ROT0, "Mazooma","Cluedo (Mazooma) (Scorpion 4) (set 1)", MACHINE_FLAGS_NOSOUND, layout_bfm_sc4 )
+GAMEL( 200?, sc4cluea ,sc4clue, sc4, sc4clue, sc4_state, sc4, ROT0, "Mazooma","Cluedo (Mazooma) (Scorpion 4) (set 2)", MACHINE_FLAGS_NOSOUND, layout_bfm_sc4 )
+GAMEL( 200?, sc4clueb ,sc4clue, sc4, sc4clue, sc4_state, sc4, ROT0, "Mazooma","Cluedo (Mazooma) (Scorpion 4) (set 3)", MACHINE_FLAGS_NOSOUND, layout_bfm_sc4 )
+GAMEL( 200?, sc4cluec ,sc4clue, sc4, sc4clue, sc4_state, sc4, ROT0, "Mazooma","Cluedo (Mazooma) (Scorpion 4) (set 4)", MACHINE_FLAGS_NOSOUND, layout_bfm_sc4 )
+GAMEL( 200?, sc4clued ,sc4clue, sc4, sc4clue, sc4_state, sc4, ROT0, "Mazooma","Cluedo (Mazooma) (Scorpion 4) (set 5)", MACHINE_FLAGS_NOSOUND, layout_bfm_sc4 )
+GAMEL( 200?, sc4cluee ,sc4clue, sc4, sc4clue, sc4_state, sc4, ROT0, "Mazooma","Cluedo (Mazooma) (Scorpion 4) (set 6)", MACHINE_FLAGS_NOSOUND, layout_bfm_sc4 )
+GAMEL( 200?, sc4cluef ,sc4clue, sc4, sc4clue, sc4_state, sc4, ROT0, "Mazooma","Cluedo (Mazooma) (Scorpion 4) (set 7)", MACHINE_FLAGS_NOSOUND, layout_bfm_sc4 )
+GAMEL( 200?, sc4clueg ,sc4clue, sc4, sc4clue, sc4_state, sc4, ROT0, "Mazooma","Cluedo (Mazooma) (Scorpion 4) (set 8)", MACHINE_FLAGS_NOSOUND, layout_bfm_sc4 )
INPUT_PORTS_START( sc4ducks ) // this structure is generated
PORT_INCLUDE( sc4_base )
@@ -45862,10 +45864,10 @@ INPUT_PORTS_START( sc4ducks ) // this structure is generated
INPUT_PORTS_END
// PR2118 DUCKS OF HAZZARD DUCKSOFHAZZARDSND DUCKS OF HAZZARD
-GAMEL( 200?, sc4ducks ,0, sc4, sc4ducks, sc4_state, sc4, ROT0, "Mazooma","Ducks Of Hazzard (Mazooma) (Scorpion 4) (set 1)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4ducksa ,sc4ducks, sc4, sc4ducks, sc4_state, sc4, ROT0, "Mazooma","Ducks Of Hazzard (Mazooma) (Scorpion 4) (set 2)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4ducksb ,sc4ducks, sc4, sc4ducks, sc4_state, sc4, ROT0, "Mazooma","Ducks Of Hazzard (Mazooma) (Scorpion 4) (set 3)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4ducksc ,sc4ducks, sc4, sc4ducks, sc4_state, sc4, ROT0, "Mazooma","Ducks Of Hazzard (Mazooma) (Scorpion 4) (set 4)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4ducks ,0, sc4, sc4ducks, sc4_state, sc4, ROT0, "Mazooma","Ducks Of Hazzard (Mazooma) (Scorpion 4) (set 1)", MACHINE_FLAGS_NOSOUND, layout_bfm_sc4 )
+GAMEL( 200?, sc4ducksa ,sc4ducks, sc4, sc4ducks, sc4_state, sc4, ROT0, "Mazooma","Ducks Of Hazzard (Mazooma) (Scorpion 4) (set 2)", MACHINE_FLAGS_NOSOUND, layout_bfm_sc4 )
+GAMEL( 200?, sc4ducksb ,sc4ducks, sc4, sc4ducks, sc4_state, sc4, ROT0, "Mazooma","Ducks Of Hazzard (Mazooma) (Scorpion 4) (set 3)", MACHINE_FLAGS_NOSOUND, layout_bfm_sc4 )
+GAMEL( 200?, sc4ducksc ,sc4ducks, sc4, sc4ducks, sc4_state, sc4, ROT0, "Mazooma","Ducks Of Hazzard (Mazooma) (Scorpion 4) (set 4)", MACHINE_FLAGS_NOSOUND, layout_bfm_sc4 )
DRIVER_INIT_MEMBER(sc4_state,sc4glad)
{
@@ -45937,14 +45939,14 @@ INPUT_PORTS_START( sc4glad ) // this structure is generated
INPUT_PORTS_END
// PR2255 GLADIATOR GLAD SOUNDS GLADIATOR
-GAMEL( 200?, sc4glad ,0, sc4_200_4rb, sc4glad, sc4_state, sc4glad, ROT0, "QPS / Mazooma","Gladiator (Mazooma) (Scorpion 4) (set 1)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4glada ,sc4glad, sc4_200_4rb, sc4glad, sc4_state, sc4glad, ROT0, "QPS / Mazooma","Gladiator (Mazooma) (Scorpion 4) (set 2)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4gladb ,sc4glad, sc4_200_4rb, sc4glad, sc4_state, sc4glad, ROT0, "QPS / Mazooma","Gladiator (Mazooma) (Scorpion 4) (set 3)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4gladc ,sc4glad, sc4_200_4rb, sc4glad, sc4_state, sc4glad, ROT0, "QPS / Mazooma","Gladiator (Mazooma) (Scorpion 4) (set 4)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4gladd ,sc4glad, sc4_200_4rb, sc4glad, sc4_state, sc4glad, ROT0, "QPS / Mazooma","Gladiator (Mazooma) (Scorpion 4) (set 5)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4glade ,sc4glad, sc4_200_4rb, sc4glad, sc4_state, sc4glad, ROT0, "QPS / Mazooma","Gladiator (Mazooma) (Scorpion 4) (set 6)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4gladf ,sc4glad, sc4_200_4rb, sc4glad, sc4_state, sc4glad, ROT0, "QPS / Mazooma","Gladiator (Mazooma) (Scorpion 4) (set 7)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4gladg ,sc4glad, sc4_200_4rb, sc4glad, sc4_state, sc4glad, ROT0, "QPS / Mazooma","Gladiator (Mazooma) (Scorpion 4) (set 8)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4glad ,0, sc4_200_4rb, sc4glad, sc4_state, sc4glad, ROT0, "QPS / Mazooma","Gladiator (Mazooma) (Scorpion 4) (set 1)", MACHINE_FLAGS_NOSOUND, layout_bfm_sc4 )
+GAMEL( 200?, sc4glada ,sc4glad, sc4_200_4rb, sc4glad, sc4_state, sc4glad, ROT0, "QPS / Mazooma","Gladiator (Mazooma) (Scorpion 4) (set 2)", MACHINE_FLAGS_NOSOUND, layout_bfm_sc4 )
+GAMEL( 200?, sc4gladb ,sc4glad, sc4_200_4rb, sc4glad, sc4_state, sc4glad, ROT0, "QPS / Mazooma","Gladiator (Mazooma) (Scorpion 4) (set 3)", MACHINE_FLAGS_NOSOUND, layout_bfm_sc4 )
+GAMEL( 200?, sc4gladc ,sc4glad, sc4_200_4rb, sc4glad, sc4_state, sc4glad, ROT0, "QPS / Mazooma","Gladiator (Mazooma) (Scorpion 4) (set 4)", MACHINE_FLAGS_NOSOUND, layout_bfm_sc4 )
+GAMEL( 200?, sc4gladd ,sc4glad, sc4_200_4rb, sc4glad, sc4_state, sc4glad, ROT0, "QPS / Mazooma","Gladiator (Mazooma) (Scorpion 4) (set 5)", MACHINE_FLAGS_NOSOUND, layout_bfm_sc4 )
+GAMEL( 200?, sc4glade ,sc4glad, sc4_200_4rb, sc4glad, sc4_state, sc4glad, ROT0, "QPS / Mazooma","Gladiator (Mazooma) (Scorpion 4) (set 6)", MACHINE_FLAGS_NOSOUND, layout_bfm_sc4 )
+GAMEL( 200?, sc4gladf ,sc4glad, sc4_200_4rb, sc4glad, sc4_state, sc4glad, ROT0, "QPS / Mazooma","Gladiator (Mazooma) (Scorpion 4) (set 7)", MACHINE_FLAGS_NOSOUND, layout_bfm_sc4 )
+GAMEL( 200?, sc4gladg ,sc4glad, sc4_200_4rb, sc4glad, sc4_state, sc4glad, ROT0, "QPS / Mazooma","Gladiator (Mazooma) (Scorpion 4) (set 8)", MACHINE_FLAGS_NOSOUND, layout_bfm_sc4 )
INPUT_PORTS_START( sc4hotdg ) // this structure is generated
@@ -46006,10 +46008,10 @@ INPUT_PORTS_START( sc4hotdg ) // this structure is generated
INPUT_PORTS_END
// PR1936 AWP HOT DOG SCORP4 PR1916 HOT DOG SOUNDS11 HOT DOG S.SITE
-GAMEL( 200?, sc4hotdg ,0, sc4, sc4hotdg, sc4_state, sc4mbus, ROT0, "BFM","Hot Dog (Bellfruit) (Scorpion 4) (set 1)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4hotdga ,sc4hotdg, sc4, sc4hotdg, sc4_state, sc4mbus, ROT0, "BFM","Hot Dog (Bellfruit) (Scorpion 4) (set 2)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 ) // incomplete pairing
-GAMEL( 200?, sc4hotdgb ,sc4hotdg, sc4, sc4hotdg, sc4_state, sc4mbus, ROT0, "BFM","Hot Dog (Bellfruit) (Scorpion 4) (set 3)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4hotdgc ,sc4hotdg, sc4, sc4hotdg, sc4_state, sc4mbus, ROT0, "BFM","Hot Dog (Bellfruit) (Scorpion 4) (set 4)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4hotdg ,0, sc4, sc4hotdg, sc4_state, sc4mbus, ROT0, "BFM","Hot Dog (Bellfruit) (Scorpion 4) (set 1)", MACHINE_FLAGS_NOSOUND, layout_bfm_sc4 )
+GAMEL( 200?, sc4hotdga ,sc4hotdg, sc4, sc4hotdg, sc4_state, sc4mbus, ROT0, "BFM","Hot Dog (Bellfruit) (Scorpion 4) (set 2)", MACHINE_FLAGS_NOSOUND, layout_bfm_sc4 ) // incomplete pairing
+GAMEL( 200?, sc4hotdgb ,sc4hotdg, sc4, sc4hotdg, sc4_state, sc4mbus, ROT0, "BFM","Hot Dog (Bellfruit) (Scorpion 4) (set 3)", MACHINE_FLAGS_NOSOUND, layout_bfm_sc4 )
+GAMEL( 200?, sc4hotdgc ,sc4hotdg, sc4, sc4hotdg, sc4_state, sc4mbus, ROT0, "BFM","Hot Dog (Bellfruit) (Scorpion 4) (set 4)", MACHINE_FLAGS_NOSOUND, layout_bfm_sc4 )
DRIVER_INIT_MEMBER(sc4_state,sc4pp)
{
@@ -46085,11 +46087,11 @@ INPUT_PORTS_END
// doesn't like any of the sound roms we have
// PR2562 PINK PANTHER PINK SOUNDS PINK PANTHER
-GAMEL( 200?, sc4pp ,0, sc4_200_4ra, sc4pp, sc4_state, sc4pp, ROT0, "Mazooma","Pink Panther (Mazooma) (Scorpion 4) (set 1)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4ppa ,sc4pp, sc4_200_4ra, sc4pp, sc4_state, sc4pp, ROT0, "Mazooma","Pink Panther (Mazooma) (Scorpion 4) (set 2)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4ppb ,sc4pp, sc4_200_4ra, sc4pp, sc4_state, sc4pp, ROT0, "Mazooma","Pink Panther (Mazooma) (Scorpion 4) (set 3)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4ppc ,sc4pp, sc4_200_4ra, sc4pp, sc4_state, sc4pp, ROT0, "Mazooma","Pink Panther (Mazooma) (Scorpion 4) (set 4)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4ppd ,sc4pp, sc4_200_4ra, sc4pp, sc4_state, sc4pp, ROT0, "Mazooma","Pink Panther (Mazooma) (Scorpion 4) (set 5)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4pp ,0, sc4_200_4ra, sc4pp, sc4_state, sc4pp, ROT0, "Mazooma","Pink Panther (Mazooma) (Scorpion 4) (set 1)", MACHINE_FLAGS_NOSOUND, layout_bfm_sc4 )
+GAMEL( 200?, sc4ppa ,sc4pp, sc4_200_4ra, sc4pp, sc4_state, sc4pp, ROT0, "Mazooma","Pink Panther (Mazooma) (Scorpion 4) (set 2)", MACHINE_FLAGS_NOSOUND, layout_bfm_sc4 )
+GAMEL( 200?, sc4ppb ,sc4pp, sc4_200_4ra, sc4pp, sc4_state, sc4pp, ROT0, "Mazooma","Pink Panther (Mazooma) (Scorpion 4) (set 3)", MACHINE_FLAGS_NOSOUND, layout_bfm_sc4 )
+GAMEL( 200?, sc4ppc ,sc4pp, sc4_200_4ra, sc4pp, sc4_state, sc4pp, ROT0, "Mazooma","Pink Panther (Mazooma) (Scorpion 4) (set 4)", MACHINE_FLAGS_NOSOUND, layout_bfm_sc4 )
+GAMEL( 200?, sc4ppd ,sc4pp, sc4_200_4ra, sc4pp, sc4_state, sc4pp, ROT0, "Mazooma","Pink Panther (Mazooma) (Scorpion 4) (set 5)", MACHINE_FLAGS_NOSOUND, layout_bfm_sc4 )
INPUT_PORTS_START( sc4ppsag ) // this structure is generated
@@ -46145,16 +46147,16 @@ INPUT_PORTS_START( sc4ppsag ) // this structure is generated
INPUT_PORTS_END
// PR2303 STRIKES AGAIN PPSA SOUNDS STRIKES AGAIN
-GAMEL( 200?, sc4ppsag ,0, sc4, sc4ppsag, sc4_state, sc4, ROT0, "Mazooma","Pink Panther Strikes Again (Mazooma) (Scorpion 4) (set 1)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4ppsaga ,sc4ppsag, sc4, sc4ppsag, sc4_state, sc4, ROT0, "Mazooma","Pink Panther Strikes Again (Mazooma) (Scorpion 4) (set 2)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4ppsagb ,sc4ppsag, sc4, sc4ppsag, sc4_state, sc4, ROT0, "Mazooma","Pink Panther Strikes Again (Mazooma) (Scorpion 4) (set 3)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4ppsagc ,sc4ppsag, sc4, sc4ppsag, sc4_state, sc4, ROT0, "Mazooma","Pink Panther Strikes Again (Mazooma) (Scorpion 4) (set 4)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4ppsagd ,sc4ppsag, sc4, sc4ppsag, sc4_state, sc4, ROT0, "Mazooma","Pink Panther Strikes Again (Mazooma) (Scorpion 4) (set 5)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4ppsage ,sc4ppsag, sc4, sc4ppsag, sc4_state, sc4, ROT0, "Mazooma","Pink Panther Strikes Again (Mazooma) (Scorpion 4) (set 6)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4ppsagf ,sc4ppsag, sc4, sc4ppsag, sc4_state, sc4, ROT0, "Mazooma","Pink Panther Strikes Again (Mazooma) (Scorpion 4) (set 7)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4ppsagg ,sc4ppsag, sc4, sc4ppsag, sc4_state, sc4, ROT0, "Mazooma","Pink Panther Strikes Again (Mazooma) (Scorpion 4) (set 8)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4ppsagh ,sc4ppsag, sc4, sc4ppsag, sc4_state, sc4, ROT0, "Mazooma","Pink Panther Strikes Again (Mazooma) (Scorpion 4) (set 9)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4ppsagi ,sc4ppsag, sc4, sc4ppsag, sc4_state, sc4, ROT0, "Mazooma","Pink Panther Strikes Again (Mazooma) (Scorpion 4) (set 10)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4ppsag ,0, sc4, sc4ppsag, sc4_state, sc4, ROT0, "Mazooma","Pink Panther Strikes Again (Mazooma) (Scorpion 4) (set 1)", MACHINE_FLAGS_NOSOUND, layout_bfm_sc4 )
+GAMEL( 200?, sc4ppsaga ,sc4ppsag, sc4, sc4ppsag, sc4_state, sc4, ROT0, "Mazooma","Pink Panther Strikes Again (Mazooma) (Scorpion 4) (set 2)", MACHINE_FLAGS_NOSOUND, layout_bfm_sc4 )
+GAMEL( 200?, sc4ppsagb ,sc4ppsag, sc4, sc4ppsag, sc4_state, sc4, ROT0, "Mazooma","Pink Panther Strikes Again (Mazooma) (Scorpion 4) (set 3)", MACHINE_FLAGS_NOSOUND, layout_bfm_sc4 )
+GAMEL( 200?, sc4ppsagc ,sc4ppsag, sc4, sc4ppsag, sc4_state, sc4, ROT0, "Mazooma","Pink Panther Strikes Again (Mazooma) (Scorpion 4) (set 4)", MACHINE_FLAGS_NOSOUND, layout_bfm_sc4 )
+GAMEL( 200?, sc4ppsagd ,sc4ppsag, sc4, sc4ppsag, sc4_state, sc4, ROT0, "Mazooma","Pink Panther Strikes Again (Mazooma) (Scorpion 4) (set 5)", MACHINE_FLAGS_NOSOUND, layout_bfm_sc4 )
+GAMEL( 200?, sc4ppsage ,sc4ppsag, sc4, sc4ppsag, sc4_state, sc4, ROT0, "Mazooma","Pink Panther Strikes Again (Mazooma) (Scorpion 4) (set 6)", MACHINE_FLAGS_NOSOUND, layout_bfm_sc4 )
+GAMEL( 200?, sc4ppsagf ,sc4ppsag, sc4, sc4ppsag, sc4_state, sc4, ROT0, "Mazooma","Pink Panther Strikes Again (Mazooma) (Scorpion 4) (set 7)", MACHINE_FLAGS_NOSOUND, layout_bfm_sc4 )
+GAMEL( 200?, sc4ppsagg ,sc4ppsag, sc4, sc4ppsag, sc4_state, sc4, ROT0, "Mazooma","Pink Panther Strikes Again (Mazooma) (Scorpion 4) (set 8)", MACHINE_FLAGS_NOSOUND, layout_bfm_sc4 )
+GAMEL( 200?, sc4ppsagh ,sc4ppsag, sc4, sc4ppsag, sc4_state, sc4, ROT0, "Mazooma","Pink Panther Strikes Again (Mazooma) (Scorpion 4) (set 9)", MACHINE_FLAGS_NOSOUND, layout_bfm_sc4 )
+GAMEL( 200?, sc4ppsagi ,sc4ppsag, sc4, sc4ppsag, sc4_state, sc4, ROT0, "Mazooma","Pink Panther Strikes Again (Mazooma) (Scorpion 4) (set 10)", MACHINE_FLAGS_NOSOUND, layout_bfm_sc4 )
INPUT_PORTS_START( sc4pog ) // this structure is generated
PORT_INCLUDE( sc4_base )
@@ -46222,16 +46224,16 @@ INPUT_PORTS_START( sc4pog ) // this structure is generated
INPUT_PORTS_END
// PR1938 AWP POTS OF GOLD SCORP4 PR1918 POTS OF GOLD SOUNDS11 POTS OF GOLD S.SITE
-GAMEL( 200?, sc4pog ,0, sc4, sc4pog, sc4_state, sc4mbus, ROT0, "BFM","Pots Of Gold (Bellfruit) (Scorpion 4) (set 1)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4poga ,sc4pog, sc4, sc4pog, sc4_state, sc4mbus, ROT0, "BFM","Pots Of Gold (Bellfruit) (Scorpion 4) (set 2)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4pogb ,sc4pog, sc4, sc4pog, sc4_state, sc4mbus, ROT0, "BFM","Pots Of Gold (Bellfruit) (Scorpion 4) (set 3)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4pogc ,sc4pog, sc4, sc4pog, sc4_state, sc4mbus, ROT0, "BFM","Pots Of Gold (Bellfruit) (Scorpion 4) (set 4)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4pogd ,sc4pog, sc4, sc4pog, sc4_state, sc4mbus, ROT0, "BFM","Pots Of Gold (Bellfruit) (Scorpion 4) (set 5)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4poge ,sc4pog, sc4, sc4pog, sc4_state, sc4mbus, ROT0, "BFM","Pots Of Gold (Bellfruit) (Scorpion 4) (set 6)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4pogf ,sc4pog, sc4, sc4pog, sc4_state, sc4mbus, ROT0, "BFM","Pots Of Gold (Bellfruit) (Scorpion 4) (set 7)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4pogg ,sc4pog, sc4, sc4pog, sc4_state, sc4mbus, ROT0, "BFM","Pots Of Gold (Bellfruit) (Scorpion 4) (set 8)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4pogh ,sc4pog, sc4, sc4pog, sc4_state, sc4mbus, ROT0, "BFM","Pots Of Gold (Bellfruit) (Scorpion 4) (set 9)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4pogi ,sc4pog, sc4, sc4pog, sc4_state, sc4mbus, ROT0, "BFM","Pots Of Gold (Bellfruit) (Scorpion 4) (set 10)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4pog ,0, sc4, sc4pog, sc4_state, sc4mbus, ROT0, "BFM","Pots Of Gold (Bellfruit) (Scorpion 4) (set 1)", MACHINE_FLAGS_NOSOUND, layout_bfm_sc4 )
+GAMEL( 200?, sc4poga ,sc4pog, sc4, sc4pog, sc4_state, sc4mbus, ROT0, "BFM","Pots Of Gold (Bellfruit) (Scorpion 4) (set 2)", MACHINE_FLAGS_NOSOUND, layout_bfm_sc4 )
+GAMEL( 200?, sc4pogb ,sc4pog, sc4, sc4pog, sc4_state, sc4mbus, ROT0, "BFM","Pots Of Gold (Bellfruit) (Scorpion 4) (set 3)", MACHINE_FLAGS_NOSOUND, layout_bfm_sc4 )
+GAMEL( 200?, sc4pogc ,sc4pog, sc4, sc4pog, sc4_state, sc4mbus, ROT0, "BFM","Pots Of Gold (Bellfruit) (Scorpion 4) (set 4)", MACHINE_FLAGS_NOSOUND, layout_bfm_sc4 )
+GAMEL( 200?, sc4pogd ,sc4pog, sc4, sc4pog, sc4_state, sc4mbus, ROT0, "BFM","Pots Of Gold (Bellfruit) (Scorpion 4) (set 5)", MACHINE_FLAGS_NOSOUND, layout_bfm_sc4 )
+GAMEL( 200?, sc4poge ,sc4pog, sc4, sc4pog, sc4_state, sc4mbus, ROT0, "BFM","Pots Of Gold (Bellfruit) (Scorpion 4) (set 6)", MACHINE_FLAGS_NOSOUND, layout_bfm_sc4 )
+GAMEL( 200?, sc4pogf ,sc4pog, sc4, sc4pog, sc4_state, sc4mbus, ROT0, "BFM","Pots Of Gold (Bellfruit) (Scorpion 4) (set 7)", MACHINE_FLAGS_NOSOUND, layout_bfm_sc4 )
+GAMEL( 200?, sc4pogg ,sc4pog, sc4, sc4pog, sc4_state, sc4mbus, ROT0, "BFM","Pots Of Gold (Bellfruit) (Scorpion 4) (set 8)", MACHINE_FLAGS_NOSOUND, layout_bfm_sc4 )
+GAMEL( 200?, sc4pogh ,sc4pog, sc4, sc4pog, sc4_state, sc4mbus, ROT0, "BFM","Pots Of Gold (Bellfruit) (Scorpion 4) (set 9)", MACHINE_FLAGS_NOSOUND, layout_bfm_sc4 )
+GAMEL( 200?, sc4pogi ,sc4pog, sc4, sc4pog, sc4_state, sc4mbus, ROT0, "BFM","Pots Of Gold (Bellfruit) (Scorpion 4) (set 10)", MACHINE_FLAGS_NOSOUND, layout_bfm_sc4 )
INPUT_PORTS_START( sc4pwrpl ) // this structure is generated
PORT_INCLUDE( sc4_base )
@@ -46281,10 +46283,10 @@ INPUT_PORTS_START( sc4pwrpl ) // this structure is generated
INPUT_PORTS_END
// PR2272 POWER PLAY PPLY SOUNDS
-GAMEL( 200?, sc4pwrpl ,0, sc4, sc4pwrpl, sc4_state, sc4, ROT0, "Mazooma","Power Play (Mazooma) (Scorpion 4) (set 1)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4pwrpla ,sc4pwrpl, sc4, sc4pwrpl, sc4_state, sc4, ROT0, "Mazooma","Power Play (Mazooma) (Scorpion 4) (set 2)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4pwrplb ,sc4pwrpl, sc4, sc4pwrpl, sc4_state, sc4, ROT0, "Mazooma","Power Play (Mazooma) (Scorpion 4) (set 3)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4pwrplc ,sc4pwrpl, sc4, sc4pwrpl, sc4_state, sc4, ROT0, "Mazooma","Power Play (Mazooma) (Scorpion 4) (set 4)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4pwrpl ,0, sc4, sc4pwrpl, sc4_state, sc4, ROT0, "Mazooma","Power Play (Mazooma) (Scorpion 4) (set 1)", MACHINE_FLAGS_NOSOUND, layout_bfm_sc4 )
+GAMEL( 200?, sc4pwrpla ,sc4pwrpl, sc4, sc4pwrpl, sc4_state, sc4, ROT0, "Mazooma","Power Play (Mazooma) (Scorpion 4) (set 2)", MACHINE_FLAGS_NOSOUND, layout_bfm_sc4 )
+GAMEL( 200?, sc4pwrplb ,sc4pwrpl, sc4, sc4pwrpl, sc4_state, sc4, ROT0, "Mazooma","Power Play (Mazooma) (Scorpion 4) (set 3)", MACHINE_FLAGS_NOSOUND, layout_bfm_sc4 )
+GAMEL( 200?, sc4pwrplc ,sc4pwrpl, sc4, sc4pwrpl, sc4_state, sc4, ROT0, "Mazooma","Power Play (Mazooma) (Scorpion 4) (set 4)", MACHINE_FLAGS_NOSOUND, layout_bfm_sc4 )
DRIVER_INIT_MEMBER(sc4_state,sc4swywm)
@@ -46341,14 +46343,14 @@ INPUT_PORTS_END
// PR2232 SPIN WHEN YOU'RE WINNING SPIN SOUNDS
-GAMEL( 200?, sc4swywm ,0, sc4_200_5ra, sc4swywm, sc4_state, sc4swywm, ROT0, "Mazooma","Spin When Your Winning (Mazooma) (Scorpion 4) (set 1)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4swywma ,sc4swywm, sc4_200_5ra, sc4swywm, sc4_state, sc4swywm, ROT0, "Mazooma","Spin When Your Winning (Mazooma) (Scorpion 4) (set 2)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4swywmb ,sc4swywm, sc4_200_5ra, sc4swywm, sc4_state, sc4swywm, ROT0, "Mazooma","Spin When Your Winning (Mazooma) (Scorpion 4) (set 3)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4swywmc ,sc4swywm, sc4_200_5ra, sc4swywm, sc4_state, sc4swywm, ROT0, "Mazooma","Spin When Your Winning (Mazooma) (Scorpion 4) (set 4)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4swywmd ,sc4swywm, sc4_200_5ra, sc4swywm, sc4_state, sc4swywm, ROT0, "Mazooma","Spin When Your Winning (Mazooma) (Scorpion 4) (set 5)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4swywme ,sc4swywm, sc4_200_5ra, sc4swywm, sc4_state, sc4swywm, ROT0, "Mazooma","Spin When Your Winning (Mazooma) (Scorpion 4) (set 6)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4swywmf ,sc4swywm, sc4_200_5ra, sc4swywm, sc4_state, sc4swywm, ROT0, "Mazooma","Spin When Your Winning (Mazooma) (Scorpion 4) (set 7)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4swywmg ,sc4swywm, sc4_200_5ra, sc4swywm, sc4_state, sc4swywm, ROT0, "Mazooma","Spin When Your Winning (Mazooma) (Scorpion 4) (set 8)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4swywm ,0, sc4_200_5ra, sc4swywm, sc4_state, sc4swywm, ROT0, "Mazooma","Spin When Your Winning (Mazooma) (Scorpion 4) (set 1)", MACHINE_FLAGS_NOSOUND, layout_bfm_sc4 )
+GAMEL( 200?, sc4swywma ,sc4swywm, sc4_200_5ra, sc4swywm, sc4_state, sc4swywm, ROT0, "Mazooma","Spin When Your Winning (Mazooma) (Scorpion 4) (set 2)", MACHINE_FLAGS_NOSOUND, layout_bfm_sc4 )
+GAMEL( 200?, sc4swywmb ,sc4swywm, sc4_200_5ra, sc4swywm, sc4_state, sc4swywm, ROT0, "Mazooma","Spin When Your Winning (Mazooma) (Scorpion 4) (set 3)", MACHINE_FLAGS_NOSOUND, layout_bfm_sc4 )
+GAMEL( 200?, sc4swywmc ,sc4swywm, sc4_200_5ra, sc4swywm, sc4_state, sc4swywm, ROT0, "Mazooma","Spin When Your Winning (Mazooma) (Scorpion 4) (set 4)", MACHINE_FLAGS_NOSOUND, layout_bfm_sc4 )
+GAMEL( 200?, sc4swywmd ,sc4swywm, sc4_200_5ra, sc4swywm, sc4_state, sc4swywm, ROT0, "Mazooma","Spin When Your Winning (Mazooma) (Scorpion 4) (set 5)", MACHINE_FLAGS_NOSOUND, layout_bfm_sc4 )
+GAMEL( 200?, sc4swywme ,sc4swywm, sc4_200_5ra, sc4swywm, sc4_state, sc4swywm, ROT0, "Mazooma","Spin When Your Winning (Mazooma) (Scorpion 4) (set 6)", MACHINE_FLAGS_NOSOUND, layout_bfm_sc4 )
+GAMEL( 200?, sc4swywmf ,sc4swywm, sc4_200_5ra, sc4swywm, sc4_state, sc4swywm, ROT0, "Mazooma","Spin When Your Winning (Mazooma) (Scorpion 4) (set 7)", MACHINE_FLAGS_NOSOUND, layout_bfm_sc4 )
+GAMEL( 200?, sc4swywmg ,sc4swywm, sc4_200_5ra, sc4swywm, sc4_state, sc4swywm, ROT0, "Mazooma","Spin When Your Winning (Mazooma) (Scorpion 4) (set 8)", MACHINE_FLAGS_NOSOUND, layout_bfm_sc4 )
DRIVER_INIT_MEMBER(sc4_state,sc4sumit)
{
@@ -46423,10 +46425,10 @@ INPUT_PORTS_START( sc4sumit ) // this structure is generated
INPUT_PORTS_END
// PR2176 SUMMIT UP SUMMIT SOUNDS SUMMIT UP (was in the Suits U Sir set)
-GAMEL( 200?, sc4sumit ,0, sc4_200_4ra, sc4sumit, sc4_state, sc4sumit, ROT0, "Mazooma","Summit Up (Mazooma) (Scorpion 4) (set 1)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4sumita ,sc4sus, sc4_200_4ra, sc4sumit, sc4_state, sc4sumit, ROT0, "Mazooma","Summit Up (Mazooma) (Scorpion 4) (set 2)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4sumitb ,sc4sus, sc4_200_4ra, sc4sumit, sc4_state, sc4sumit, ROT0, "Mazooma","Summit Up (Mazooma) (Scorpion 4) (set 3)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4sumitc ,sc4sus, sc4_200_4ra, sc4sumit, sc4_state, sc4sumit, ROT0, "Mazooma","Summit Up (Mazooma) (Scorpion 4) (set 4)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4sumit ,0, sc4_200_4ra, sc4sumit, sc4_state, sc4sumit, ROT0, "Mazooma","Summit Up (Mazooma) (Scorpion 4) (set 1)", MACHINE_FLAGS_NOSOUND, layout_bfm_sc4 )
+GAMEL( 200?, sc4sumita ,sc4sus, sc4_200_4ra, sc4sumit, sc4_state, sc4sumit, ROT0, "Mazooma","Summit Up (Mazooma) (Scorpion 4) (set 2)", MACHINE_FLAGS_NOSOUND, layout_bfm_sc4 )
+GAMEL( 200?, sc4sumitb ,sc4sus, sc4_200_4ra, sc4sumit, sc4_state, sc4sumit, ROT0, "Mazooma","Summit Up (Mazooma) (Scorpion 4) (set 3)", MACHINE_FLAGS_NOSOUND, layout_bfm_sc4 )
+GAMEL( 200?, sc4sumitc ,sc4sus, sc4_200_4ra, sc4sumit, sc4_state, sc4sumit, ROT0, "Mazooma","Summit Up (Mazooma) (Scorpion 4) (set 4)", MACHINE_FLAGS_NOSOUND, layout_bfm_sc4 )
INPUT_PORTS_START( sc4tpsht ) // this structure is generated
PORT_INCLUDE( sc4_base )
@@ -46475,14 +46477,14 @@ INPUT_PORTS_START( sc4tpsht ) // this structure is generated
INPUT_PORTS_END
// PR2211 TOP OF THE SHOTS TOTS SOUNDS TOP OF THE SHOTS
-GAMEL( 200?, sc4tpsht ,0, sc4, sc4tpsht, sc4_state, sc4, ROT0, "Mazooma","Top Of The Shots (Mazooma) (Scorpion 4) (set 1)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4tpshta ,sc4tpsht, sc4, sc4tpsht, sc4_state, sc4, ROT0, "Mazooma","Top Of The Shots (Mazooma) (Scorpion 4) (set 2)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4tpshtb ,sc4tpsht, sc4, sc4tpsht, sc4_state, sc4, ROT0, "Mazooma","Top Of The Shots (Mazooma) (Scorpion 4) (set 3)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4tpshtc ,sc4tpsht, sc4, sc4tpsht, sc4_state, sc4, ROT0, "Mazooma","Top Of The Shots (Mazooma) (Scorpion 4) (set 4)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4tpshtd ,sc4tpsht, sc4, sc4tpsht, sc4_state, sc4, ROT0, "Mazooma","Top Of The Shots (Mazooma) (Scorpion 4) (set 5)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4tpshte ,sc4tpsht, sc4, sc4tpsht, sc4_state, sc4, ROT0, "Mazooma","Top Of The Shots (Mazooma) (Scorpion 4) (set 6)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4tpshtf ,sc4tpsht, sc4, sc4tpsht, sc4_state, sc4, ROT0, "Mazooma","Top Of The Shots (Mazooma) (Scorpion 4) (set 7)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4tpshtg ,sc4tpsht, sc4, sc4tpsht, sc4_state, sc4, ROT0, "Mazooma","Top Of The Shots (Mazooma) (Scorpion 4) (set 8)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4tpsht ,0, sc4, sc4tpsht, sc4_state, sc4, ROT0, "Mazooma","Top Of The Shots (Mazooma) (Scorpion 4) (set 1)", MACHINE_FLAGS_NOSOUND, layout_bfm_sc4 )
+GAMEL( 200?, sc4tpshta ,sc4tpsht, sc4, sc4tpsht, sc4_state, sc4, ROT0, "Mazooma","Top Of The Shots (Mazooma) (Scorpion 4) (set 2)", MACHINE_FLAGS_NOSOUND, layout_bfm_sc4 )
+GAMEL( 200?, sc4tpshtb ,sc4tpsht, sc4, sc4tpsht, sc4_state, sc4, ROT0, "Mazooma","Top Of The Shots (Mazooma) (Scorpion 4) (set 3)", MACHINE_FLAGS_NOSOUND, layout_bfm_sc4 )
+GAMEL( 200?, sc4tpshtc ,sc4tpsht, sc4, sc4tpsht, sc4_state, sc4, ROT0, "Mazooma","Top Of The Shots (Mazooma) (Scorpion 4) (set 4)", MACHINE_FLAGS_NOSOUND, layout_bfm_sc4 )
+GAMEL( 200?, sc4tpshtd ,sc4tpsht, sc4, sc4tpsht, sc4_state, sc4, ROT0, "Mazooma","Top Of The Shots (Mazooma) (Scorpion 4) (set 5)", MACHINE_FLAGS_NOSOUND, layout_bfm_sc4 )
+GAMEL( 200?, sc4tpshte ,sc4tpsht, sc4, sc4tpsht, sc4_state, sc4, ROT0, "Mazooma","Top Of The Shots (Mazooma) (Scorpion 4) (set 6)", MACHINE_FLAGS_NOSOUND, layout_bfm_sc4 )
+GAMEL( 200?, sc4tpshtf ,sc4tpsht, sc4, sc4tpsht, sc4_state, sc4, ROT0, "Mazooma","Top Of The Shots (Mazooma) (Scorpion 4) (set 7)", MACHINE_FLAGS_NOSOUND, layout_bfm_sc4 )
+GAMEL( 200?, sc4tpshtg ,sc4tpsht, sc4, sc4tpsht, sc4_state, sc4, ROT0, "Mazooma","Top Of The Shots (Mazooma) (Scorpion 4) (set 8)", MACHINE_FLAGS_NOSOUND, layout_bfm_sc4 )
INPUT_PORTS_START( sc4adren ) // this structure is generated
@@ -46531,10 +46533,10 @@ INPUT_PORTS_END
// does not want the 'COTL SOUNDS' from Cash On The Lash
// PR2118 ADRENALIN COTL SOUNDS ADRENALIN
-GAMEL( 200?, sc4adren ,0, sc4, sc4adren, sc4_state, sc4, ROT0, "Mazooma","Adrenalin (Mazooma) (Scorpion 4) (set 1)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4adrena ,sc4adren, sc4, sc4adren, sc4_state, sc4, ROT0, "Mazooma","Adrenalin (Mazooma) (Scorpion 4) (set 2)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4adrenb ,sc4adren, sc4, sc4adren, sc4_state, sc4, ROT0, "Mazooma","Adrenalin (Mazooma) (Scorpion 4) (set 3)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4adrenc ,sc4adren, sc4, sc4adren, sc4_state, sc4, ROT0, "Mazooma","Adrenalin (Mazooma) (Scorpion 4) (set 4)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4adren ,0, sc4, sc4adren, sc4_state, sc4, ROT0, "Mazooma","Adrenalin (Mazooma) (Scorpion 4) (set 1)", MACHINE_FLAGS_NOSOUND, layout_bfm_sc4 )
+GAMEL( 200?, sc4adrena ,sc4adren, sc4, sc4adren, sc4_state, sc4, ROT0, "Mazooma","Adrenalin (Mazooma) (Scorpion 4) (set 2)", MACHINE_FLAGS_NOSOUND, layout_bfm_sc4 )
+GAMEL( 200?, sc4adrenb ,sc4adren, sc4, sc4adren, sc4_state, sc4, ROT0, "Mazooma","Adrenalin (Mazooma) (Scorpion 4) (set 3)", MACHINE_FLAGS_NOSOUND, layout_bfm_sc4 )
+GAMEL( 200?, sc4adrenc ,sc4adren, sc4, sc4adren, sc4_state, sc4, ROT0, "Mazooma","Adrenalin (Mazooma) (Scorpion 4) (set 4)", MACHINE_FLAGS_NOSOUND, layout_bfm_sc4 )
INPUT_PORTS_START( sc4bingb ) // this structure is generated
@@ -46589,8 +46591,8 @@ INPUT_PORTS_END
// check if Side Splitter sound is correct
// RNG ERROR 99
// PR21xx BINGO BELLE SSPT SOUNDS BINGO BELLE
-GAMEL( 200?, sc4bingb ,0, sc4, sc4bingb, sc4_state, sc4, ROT0, "Mazooma","Bingo Belle (Mazooma) (Scorpion 4) (set 1)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4bingba ,sc4bingb, sc4, sc4bingb, sc4_state, sc4, ROT0, "Mazooma","Bingo Belle (Mazooma) (Scorpion 4) (set 2)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4bingb ,0, sc4, sc4bingb, sc4_state, sc4, ROT0, "Mazooma","Bingo Belle (Mazooma) (Scorpion 4) (set 1)", MACHINE_FLAGS_NOSOUND, layout_bfm_sc4 )
+GAMEL( 200?, sc4bingba ,sc4bingb, sc4, sc4bingb, sc4_state, sc4, ROT0, "Mazooma","Bingo Belle (Mazooma) (Scorpion 4) (set 2)", MACHINE_FLAGS_NOSOUND, layout_bfm_sc4 )
INPUT_PORTS_START( sc4cerup ) // this structure is generated
PORT_INCLUDE( sc4_base )
@@ -46641,7 +46643,7 @@ INPUT_PORTS_END
// PR2020 CASH ERUPTION ERUP SOUNDS CASH ERUPTION
-GAMEL( 200?, sc4cerup ,0, sc4, sc4cerup, sc4_state, sc4, ROT0, "Mazooma","Cash Eruption (Mazooma) (Scorpion 4)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4cerup ,0, sc4, sc4cerup, sc4_state, sc4, ROT0, "Mazooma","Cash Eruption (Mazooma) (Scorpion 4)", MACHINE_FLAGS_NOSOUND, layout_bfm_sc4 )
INPUT_PORTS_START( sc4cexpl ) // this structure is generated
PORT_INCLUDE( sc4_base )
@@ -46693,22 +46695,22 @@ INPUT_PORTS_START( sc4cexpl ) // this structure is generated
INPUT_PORTS_END
// PR2076 CASH EXPLOSION CEXP SOUNDS CASH EXPLSION
-GAMEL( 200?, sc4cexpl ,0, sc4, sc4cexpl, sc4_state, sc4, ROT0, "Mazooma","Cash Explosion (PR2076) (Mazooma) (Scorpion 4) (set 1)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4cexpla ,sc4cexpl, sc4, sc4cexpl, sc4_state, sc4, ROT0, "Mazooma","Cash Explosion (PR2076) (Mazooma) (Scorpion 4) (set 2)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4cexplb ,sc4cexpl, sc4, sc4cexpl, sc4_state, sc4, ROT0, "Mazooma","Cash Explosion (PR2076) (Mazooma) (Scorpion 4) (set 3)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4cexplc ,sc4cexpl, sc4, sc4cexpl, sc4_state, sc4, ROT0, "Mazooma","Cash Explosion (PR2076) (Mazooma) (Scorpion 4) (set 4)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4cexplf ,sc4cexpl, sc4, sc4cexpl, sc4_state, sc4, ROT0, "Mazooma","Cash Explosion (PR2076) (Mazooma) (Scorpion 4) (set 5)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4cexplg ,sc4cexpl, sc4, sc4cexpl, sc4_state, sc4, ROT0, "Mazooma","Cash Explosion (PR2076) (Mazooma) (Scorpion 4) (set 6)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4cexpl ,0, sc4, sc4cexpl, sc4_state, sc4, ROT0, "Mazooma","Cash Explosion (PR2076) (Mazooma) (Scorpion 4) (set 1)", MACHINE_FLAGS_NOSOUND, layout_bfm_sc4 )
+GAMEL( 200?, sc4cexpla ,sc4cexpl, sc4, sc4cexpl, sc4_state, sc4, ROT0, "Mazooma","Cash Explosion (PR2076) (Mazooma) (Scorpion 4) (set 2)", MACHINE_FLAGS_NOSOUND, layout_bfm_sc4 )
+GAMEL( 200?, sc4cexplb ,sc4cexpl, sc4, sc4cexpl, sc4_state, sc4, ROT0, "Mazooma","Cash Explosion (PR2076) (Mazooma) (Scorpion 4) (set 3)", MACHINE_FLAGS_NOSOUND, layout_bfm_sc4 )
+GAMEL( 200?, sc4cexplc ,sc4cexpl, sc4, sc4cexpl, sc4_state, sc4, ROT0, "Mazooma","Cash Explosion (PR2076) (Mazooma) (Scorpion 4) (set 4)", MACHINE_FLAGS_NOSOUND, layout_bfm_sc4 )
+GAMEL( 200?, sc4cexplf ,sc4cexpl, sc4, sc4cexpl, sc4_state, sc4, ROT0, "Mazooma","Cash Explosion (PR2076) (Mazooma) (Scorpion 4) (set 5)", MACHINE_FLAGS_NOSOUND, layout_bfm_sc4 )
+GAMEL( 200?, sc4cexplg ,sc4cexpl, sc4, sc4cexpl, sc4_state, sc4, ROT0, "Mazooma","Cash Explosion (PR2076) (Mazooma) (Scorpion 4) (set 6)", MACHINE_FLAGS_NOSOUND, layout_bfm_sc4 )
// PR2120 CASH EXPLOSION CEXP SOUNDS CASH EXPLSION
-GAMEL( 200?, sc4cexpld ,sc4cexpl, sc4, sc4cexpl, sc4_state, sc4, ROT0, "Mazooma","Cash Explosion (PR2120) (Mazooma) (Scorpion 4) (set 1)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4cexple ,sc4cexpl, sc4, sc4cexpl, sc4_state, sc4, ROT0, "Mazooma","Cash Explosion (PR2120) (Mazooma) (Scorpion 4) (set 2)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4cexpld ,sc4cexpl, sc4, sc4cexpl, sc4_state, sc4, ROT0, "Mazooma","Cash Explosion (PR2120) (Mazooma) (Scorpion 4) (set 1)", MACHINE_FLAGS_NOSOUND, layout_bfm_sc4 )
+GAMEL( 200?, sc4cexple ,sc4cexpl, sc4, sc4cexpl, sc4_state, sc4, ROT0, "Mazooma","Cash Explosion (PR2120) (Mazooma) (Scorpion 4) (set 2)", MACHINE_FLAGS_NOSOUND, layout_bfm_sc4 )
// PR2062 CASINO ROYALE CROY SOUNDS CASINO ROYALE
-GAMEL( 200?, sc4casry ,0, sc4, sc4, sc4_state, sc4, ROT0, "Mazooma","Casino Royale (PR2062) (Mazooma) (Scorpion 4) (set 1)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4casryc ,sc4casry, sc4, sc4, sc4_state, sc4, ROT0, "Mazooma","Casino Royale (PR2062) (Mazooma) (Scorpion 4) (set 2)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4casry ,0, sc4, sc4, sc4_state, sc4, ROT0, "Mazooma","Casino Royale (PR2062) (Mazooma) (Scorpion 4) (set 1)", MACHINE_FLAGS_NOSOUND, layout_bfm_sc4 )
+GAMEL( 200?, sc4casryc ,sc4casry, sc4, sc4, sc4_state, sc4, ROT0, "Mazooma","Casino Royale (PR2062) (Mazooma) (Scorpion 4) (set 2)", MACHINE_FLAGS_NOSOUND, layout_bfm_sc4 )
// PR2075 CASINO ROYALE DUCRV46 CROY CROY SOUNDS CASINO ROYALE (Jumping Bean copyright?)
-GAMEL( 200?, sc4casryd ,sc4casry, sc4, sc4, sc4_state, sc4, ROT0, "Mazooma","Casino Royale (PR2075) (Mazooma) (Scorpion 4) (set 1)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4casrye ,sc4casry, sc4, sc4, sc4_state, sc4, ROT0, "Mazooma","Casino Royale (PR2075) (Mazooma) (Scorpion 4) (set 2)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4casryd ,sc4casry, sc4, sc4, sc4_state, sc4, ROT0, "Mazooma","Casino Royale (PR2075) (Mazooma) (Scorpion 4) (set 1)", MACHINE_FLAGS_NOSOUND, layout_bfm_sc4 )
+GAMEL( 200?, sc4casrye ,sc4casry, sc4, sc4, sc4_state, sc4, ROT0, "Mazooma","Casino Royale (PR2075) (Mazooma) (Scorpion 4) (set 2)", MACHINE_FLAGS_NOSOUND, layout_bfm_sc4 )
// I guess this isn't a fruit machine
INPUT_PORTS_START( sc4casrya ) // this structure is generated
@@ -46753,8 +46755,8 @@ INPUT_PORTS_START( sc4casrya ) // this structure is generated
INPUT_PORTS_END
// PR2073, CZECH CASINO ROYALE.......................CROY SOUNDS... (not standard header)
-GAMEL( 200?, sc4casrya ,sc4casry, sc4, sc4casrya, sc4_state, sc4, ROT0, "Mazooma","Casino Royale (PR2073) (Czech) (Mazooma) (Scorpion 4) (set 1)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4casryb ,sc4casry, sc4, sc4casrya, sc4_state, sc4, ROT0, "Mazooma","Casino Royale (PR2073) (Czech) (Mazooma) (Scorpion 4) (set 2)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4casrya ,sc4casry, sc4, sc4casrya, sc4_state, sc4, ROT0, "Mazooma","Casino Royale (PR2073) (Czech) (Mazooma) (Scorpion 4) (set 1)", MACHINE_FLAGS_NOSOUND, layout_bfm_sc4 )
+GAMEL( 200?, sc4casryb ,sc4casry, sc4, sc4casrya, sc4_state, sc4, ROT0, "Mazooma","Casino Royale (PR2073) (Czech) (Mazooma) (Scorpion 4) (set 2)", MACHINE_FLAGS_NOSOUND, layout_bfm_sc4 )
INPUT_PORTS_START( sc4clucl ) // this structure is generated
PORT_INCLUDE( sc4_base )
@@ -46814,8 +46816,8 @@ INPUT_PORTS_START( sc4clucl ) // this structure is generated
INPUT_PORTS_END
// PR2237 CLUB CLUEDO CLUB CLUEDO CLUB CCLU SOUNDS CLUB CLUEDO
-GAMEL( 200?, sc4clucl ,0, sc4, sc4clucl, sc4_state, sc4, ROT0, "Mazooma","Cluedo Club (Mazooma) (Scorpion 4) (set 1)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4clucla ,sc4clucl, sc4, sc4clucl, sc4_state, sc4, ROT0, "Mazooma","Cluedo Club (Mazooma) (Scorpion 4) (set 2)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4clucl ,0, sc4, sc4clucl, sc4_state, sc4, ROT0, "Mazooma","Cluedo Club (Mazooma) (Scorpion 4) (set 1)", MACHINE_FLAGS_NOSOUND, layout_bfm_sc4 )
+GAMEL( 200?, sc4clucla ,sc4clucl, sc4, sc4clucl, sc4_state, sc4, ROT0, "Mazooma","Cluedo Club (Mazooma) (Scorpion 4) (set 2)", MACHINE_FLAGS_NOSOUND, layout_bfm_sc4 )
INPUT_PORTS_START( sc4cyc ) // this structure is generated
PORT_INCLUDE( sc4_base )
@@ -46881,11 +46883,11 @@ INPUT_PORTS_END
// half size sound rom, or missing a rom
// PR2058 COUNT YER CASH PR2058 COUNT YER CASH SOUNDS11
-GAMEL( 200?, sc4cyc ,0, sc4, sc4cyc, sc4_state, sc4, ROT0, "Mazooma","Count Yer Cash (Mazooma) (Scorpion 4) (set 1)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4cyca ,sc4cyc, sc4, sc4cyc, sc4_state, sc4, ROT0, "Mazooma","Count Yer Cash (Mazooma) (Scorpion 4) (set 2)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4cycb ,sc4cyc, sc4, sc4cyc, sc4_state, sc4, ROT0, "Mazooma","Count Yer Cash (Mazooma) (Scorpion 4) (set 3)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4cycc ,sc4cyc, sc4, sc4cyc, sc4_state, sc4, ROT0, "Mazooma","Count Yer Cash (Mazooma) (Scorpion 4) (set 4)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4cycd ,sc4cyc, sc4, sc4cyc, sc4_state, sc4, ROT0, "Mazooma","Count Yer Cash (Mazooma) (Scorpion 4) (set 5)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4cyc ,0, sc4, sc4cyc, sc4_state, sc4, ROT0, "Mazooma","Count Yer Cash (Mazooma) (Scorpion 4) (set 1)", MACHINE_FLAGS_NOSOUND, layout_bfm_sc4 )
+GAMEL( 200?, sc4cyca ,sc4cyc, sc4, sc4cyc, sc4_state, sc4, ROT0, "Mazooma","Count Yer Cash (Mazooma) (Scorpion 4) (set 2)", MACHINE_FLAGS_NOSOUND, layout_bfm_sc4 )
+GAMEL( 200?, sc4cycb ,sc4cyc, sc4, sc4cyc, sc4_state, sc4, ROT0, "Mazooma","Count Yer Cash (Mazooma) (Scorpion 4) (set 3)", MACHINE_FLAGS_NOSOUND, layout_bfm_sc4 )
+GAMEL( 200?, sc4cycc ,sc4cyc, sc4, sc4cyc, sc4_state, sc4, ROT0, "Mazooma","Count Yer Cash (Mazooma) (Scorpion 4) (set 4)", MACHINE_FLAGS_NOSOUND, layout_bfm_sc4 )
+GAMEL( 200?, sc4cycd ,sc4cyc, sc4, sc4cyc, sc4_state, sc4, ROT0, "Mazooma","Count Yer Cash (Mazooma) (Scorpion 4) (set 5)", MACHINE_FLAGS_NOSOUND, layout_bfm_sc4 )
INPUT_PORTS_START( sc4cyccl ) // this structure is generated
PORT_INCLUDE( sc4_base )
@@ -46951,10 +46953,10 @@ INPUT_PORTS_END
// half size sound rom, or missing a rom
// PR2092 CLUB COUNT YER CASH COUNT YER CASH CLUB CLCC SOUNDS
-GAMEL( 200?, sc4cyccl ,0, sc4, sc4cyccl, sc4_state, sc4, ROT0, "Mazooma","Count Yer Cash Club (Mazooma) (Scorpion 4) (set 1)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4cyccla ,sc4cyccl, sc4, sc4cyccl, sc4_state, sc4, ROT0, "Mazooma","Count Yer Cash Club (Mazooma) (Scorpion 4) (set 2)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4cycclb ,sc4cyccl, sc4, sc4cyccl, sc4_state, sc4, ROT0, "Mazooma","Count Yer Cash Club (Mazooma) (Scorpion 4) (set 3)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4cycclc ,sc4cyccl, sc4, sc4cyccl, sc4_state, sc4, ROT0, "Mazooma","Count Yer Cash Club (Mazooma) (Scorpion 4) (set 4)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4cyccl ,0, sc4, sc4cyccl, sc4_state, sc4, ROT0, "Mazooma","Count Yer Cash Club (Mazooma) (Scorpion 4) (set 1)", MACHINE_FLAGS_NOSOUND, layout_bfm_sc4 )
+GAMEL( 200?, sc4cyccla ,sc4cyccl, sc4, sc4cyccl, sc4_state, sc4, ROT0, "Mazooma","Count Yer Cash Club (Mazooma) (Scorpion 4) (set 2)", MACHINE_FLAGS_NOSOUND, layout_bfm_sc4 )
+GAMEL( 200?, sc4cycclb ,sc4cyccl, sc4, sc4cyccl, sc4_state, sc4, ROT0, "Mazooma","Count Yer Cash Club (Mazooma) (Scorpion 4) (set 3)", MACHINE_FLAGS_NOSOUND, layout_bfm_sc4 )
+GAMEL( 200?, sc4cycclc ,sc4cyccl, sc4, sc4cyccl, sc4_state, sc4, ROT0, "Mazooma","Count Yer Cash Club (Mazooma) (Scorpion 4) (set 4)", MACHINE_FLAGS_NOSOUND, layout_bfm_sc4 )
INPUT_PORTS_START( sc4supst ) // this structure is generated
PORT_INCLUDE( sc4_base )
@@ -46998,8 +47000,8 @@ INPUT_PORTS_START( sc4supst ) // this structure is generated
INPUT_PORTS_END
// PR2206 STREAKX STRX SOUNDS SUPER STREAX
-GAMEL( 200?, sc4supst ,0, sc4, sc4supst, sc4_state, sc4, ROT0, "Mazooma","Super Streax (Mazooma) (Scorpion 4) (set 1)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4supsta ,sc4supst, sc4, sc4supst, sc4_state, sc4, ROT0, "Mazooma","Super Streax (Mazooma) (Scorpion 4) (set 2)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4supst ,0, sc4, sc4supst, sc4_state, sc4, ROT0, "Mazooma","Super Streax (Mazooma) (Scorpion 4) (set 1)", MACHINE_FLAGS_NOSOUND, layout_bfm_sc4 )
+GAMEL( 200?, sc4supsta ,sc4supst, sc4, sc4supst, sc4_state, sc4, ROT0, "Mazooma","Super Streax (Mazooma) (Scorpion 4) (set 2)", MACHINE_FLAGS_NOSOUND, layout_bfm_sc4 )
INPUT_PORTS_START( sc4sf ) // this structure is generated
PORT_INCLUDE( sc4_base )
@@ -47049,11 +47051,11 @@ INPUT_PORTS_START( sc4sf ) // this structure is generated
INPUT_PORTS_END
// NUMBER PR2024 STREET FIGHTER STRF SOUNDS STREET FIGHTER
-GAMEL( 200?, sc4sf ,0, sc4, sc4sf, sc4_state, sc4, ROT0, "Mazooma","Street Fighter (Mazooma) (Scorpion 4) (set 1)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4sfa ,sc4sf, sc4, sc4sf, sc4_state, sc4, ROT0, "Mazooma","Street Fighter (Mazooma) (Scorpion 4) (set 2)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4sfb ,sc4sf, sc4, sc4sf, sc4_state, sc4, ROT0, "Mazooma","Street Fighter (Mazooma) (Scorpion 4) (set 3)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4sfc ,sc4sf, sc4, sc4sf, sc4_state, sc4, ROT0, "Mazooma","Street Fighter (Mazooma) (Scorpion 4) (set 4)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4sfd ,sc4sf, sc4, sc4sf, sc4_state, sc4, ROT0, "Mazooma","Street Fighter (Mazooma) (Scorpion 4) (set 5)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4sf ,0, sc4, sc4sf, sc4_state, sc4, ROT0, "Mazooma","Street Fighter (Mazooma) (Scorpion 4) (set 1)", MACHINE_FLAGS_NOSOUND, layout_bfm_sc4 )
+GAMEL( 200?, sc4sfa ,sc4sf, sc4, sc4sf, sc4_state, sc4, ROT0, "Mazooma","Street Fighter (Mazooma) (Scorpion 4) (set 2)", MACHINE_FLAGS_NOSOUND, layout_bfm_sc4 )
+GAMEL( 200?, sc4sfb ,sc4sf, sc4, sc4sf, sc4_state, sc4, ROT0, "Mazooma","Street Fighter (Mazooma) (Scorpion 4) (set 3)", MACHINE_FLAGS_NOSOUND, layout_bfm_sc4 )
+GAMEL( 200?, sc4sfc ,sc4sf, sc4, sc4sf, sc4_state, sc4, ROT0, "Mazooma","Street Fighter (Mazooma) (Scorpion 4) (set 4)", MACHINE_FLAGS_NOSOUND, layout_bfm_sc4 )
+GAMEL( 200?, sc4sfd ,sc4sf, sc4, sc4sf, sc4_state, sc4, ROT0, "Mazooma","Street Fighter (Mazooma) (Scorpion 4) (set 5)", MACHINE_FLAGS_NOSOUND, layout_bfm_sc4 )
INPUT_PORTS_START( sc4hyde ) // this structure is generated
PORT_INCLUDE( sc4_base )
@@ -47106,10 +47108,10 @@ INPUT_PORTS_START( sc4hyde ) // this structure is generated
INPUT_PORTS_END
// PR2036 HYDE & STREAK HYDE SOUNDS HYDE & STREAK
-GAMEL( 200?, sc4hyde ,0, sc4, sc4hyde, sc4_state, sc4, ROT0, "Mazooma","Hyde & Streak (Mazooma) (Scorpion 4) (set 1)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4hydea ,sc4hyde, sc4, sc4hyde, sc4_state, sc4, ROT0, "Mazooma","Hyde & Streak (Mazooma) (Scorpion 4) (set 2)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4hydeb ,sc4hyde, sc4, sc4hyde, sc4_state, sc4, ROT0, "Mazooma","Hyde & Streak (Mazooma) (Scorpion 4) (set 3)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4hydec ,sc4hyde, sc4, sc4hyde, sc4_state, sc4, ROT0, "Mazooma","Hyde & Streak (Mazooma) (Scorpion 4) (set 4)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4hyde ,0, sc4, sc4hyde, sc4_state, sc4, ROT0, "Mazooma","Hyde & Streak (Mazooma) (Scorpion 4) (set 1)", MACHINE_FLAGS_NOSOUND, layout_bfm_sc4 )
+GAMEL( 200?, sc4hydea ,sc4hyde, sc4, sc4hyde, sc4_state, sc4, ROT0, "Mazooma","Hyde & Streak (Mazooma) (Scorpion 4) (set 2)", MACHINE_FLAGS_NOSOUND, layout_bfm_sc4 )
+GAMEL( 200?, sc4hydeb ,sc4hyde, sc4, sc4hyde, sc4_state, sc4, ROT0, "Mazooma","Hyde & Streak (Mazooma) (Scorpion 4) (set 3)", MACHINE_FLAGS_NOSOUND, layout_bfm_sc4 )
+GAMEL( 200?, sc4hydec ,sc4hyde, sc4, sc4hyde, sc4_state, sc4, ROT0, "Mazooma","Hyde & Streak (Mazooma) (Scorpion 4) (set 4)", MACHINE_FLAGS_NOSOUND, layout_bfm_sc4 )
INPUT_PORTS_START( sc4rtclb ) // this structure is generated
PORT_INCLUDE( sc4_base )
@@ -47176,19 +47178,19 @@ INPUT_PORTS_START( sc4rtclb ) // this structure is generated
INPUT_PORTS_END
// PR2051 CLUB ROLLING THUNDER CLRT SOUNDS ROLLING THUNDER
-GAMEL( 200?, sc4rtclb ,0, sc4, sc4rtclb, sc4_state, sc4, ROT0, "Mazooma","Rolling Thunder Club (Mazooma) (Scorpion 4) (set 1)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4rtclba ,sc4rtclb, sc4, sc4rtclb, sc4_state, sc4, ROT0, "Mazooma","Rolling Thunder Club (Mazooma) (Scorpion 4) (set 2)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4rtclb ,0, sc4, sc4rtclb, sc4_state, sc4, ROT0, "Mazooma","Rolling Thunder Club (Mazooma) (Scorpion 4) (set 1)", MACHINE_FLAGS_NOSOUND, layout_bfm_sc4 )
+GAMEL( 200?, sc4rtclba ,sc4rtclb, sc4, sc4rtclb, sc4_state, sc4, ROT0, "Mazooma","Rolling Thunder Club (Mazooma) (Scorpion 4) (set 2)", MACHINE_FLAGS_NOSOUND, layout_bfm_sc4 )
// doesn't like the sound roms we have (WILDJACK SOUNDS)
// PR0000 WILD JACKPOTS WJPT SOUNDS WILD JACKPOTS
-GAMEL( 200?, sc4wldjk ,0, sc4, sc4, sc4_state, sc4, ROT0, "Mazooma","Wild Jackpots (Mazooma) (Scorpion 4) (set 1)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4wldjka ,sc4wldjk, sc4, sc4, sc4_state, sc4, ROT0, "Mazooma","Wild Jackpots (Mazooma) (Scorpion 4) (set 2)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4wldjkb ,sc4wldjk, sc4, sc4, sc4_state, sc4, ROT0, "Mazooma","Wild Jackpots (Mazooma) (Scorpion 4) (set 3)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4wldjkc ,sc4wldjk, sc4, sc4, sc4_state, sc4, ROT0, "Mazooma","Wild Jackpots (Mazooma) (Scorpion 4) (set 4)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4wldjkd ,sc4wldjk, sc4, sc4, sc4_state, sc4, ROT0, "Mazooma","Wild Jackpots (Mazooma) (Scorpion 4) (set 5)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4wldjke ,sc4wldjk, sc4, sc4, sc4_state, sc4, ROT0, "Mazooma","Wild Jackpots (Mazooma) (Scorpion 4) (set 6)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4wldjkf ,sc4wldjk, sc4, sc4, sc4_state, sc4, ROT0, "Mazooma","Wild Jackpots (Mazooma) (Scorpion 4) (set 7)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4wldjkg ,sc4wldjk, sc4, sc4, sc4_state, sc4, ROT0, "Mazooma","Wild Jackpots (Mazooma) (Scorpion 4) (set 8)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4wldjk ,0, sc4, sc4, sc4_state, sc4, ROT0, "Mazooma","Wild Jackpots (Mazooma) (Scorpion 4) (set 1)", MACHINE_FLAGS_NOSOUND, layout_bfm_sc4 )
+GAMEL( 200?, sc4wldjka ,sc4wldjk, sc4, sc4, sc4_state, sc4, ROT0, "Mazooma","Wild Jackpots (Mazooma) (Scorpion 4) (set 2)", MACHINE_FLAGS_NOSOUND, layout_bfm_sc4 )
+GAMEL( 200?, sc4wldjkb ,sc4wldjk, sc4, sc4, sc4_state, sc4, ROT0, "Mazooma","Wild Jackpots (Mazooma) (Scorpion 4) (set 3)", MACHINE_FLAGS_NOSOUND, layout_bfm_sc4 )
+GAMEL( 200?, sc4wldjkc ,sc4wldjk, sc4, sc4, sc4_state, sc4, ROT0, "Mazooma","Wild Jackpots (Mazooma) (Scorpion 4) (set 4)", MACHINE_FLAGS_NOSOUND, layout_bfm_sc4 )
+GAMEL( 200?, sc4wldjkd ,sc4wldjk, sc4, sc4, sc4_state, sc4, ROT0, "Mazooma","Wild Jackpots (Mazooma) (Scorpion 4) (set 5)", MACHINE_FLAGS_NOSOUND, layout_bfm_sc4 )
+GAMEL( 200?, sc4wldjke ,sc4wldjk, sc4, sc4, sc4_state, sc4, ROT0, "Mazooma","Wild Jackpots (Mazooma) (Scorpion 4) (set 6)", MACHINE_FLAGS_NOSOUND, layout_bfm_sc4 )
+GAMEL( 200?, sc4wldjkf ,sc4wldjk, sc4, sc4, sc4_state, sc4, ROT0, "Mazooma","Wild Jackpots (Mazooma) (Scorpion 4) (set 7)", MACHINE_FLAGS_NOSOUND, layout_bfm_sc4 )
+GAMEL( 200?, sc4wldjkg ,sc4wldjk, sc4, sc4, sc4_state, sc4, ROT0, "Mazooma","Wild Jackpots (Mazooma) (Scorpion 4) (set 8)", MACHINE_FLAGS_NOSOUND, layout_bfm_sc4 )
// only sc4jive has this structure intact
INPUT_PORTS_START( sc4jive ) // this structure is generated
@@ -47239,12 +47241,12 @@ INPUT_PORTS_START( sc4jive ) // this structure is generated
INPUT_PORTS_END
// PR2096 JIVE MONEY JIVE SOUNDS JIVE MONEY
-GAMEL( 200?, sc4jive ,0, sc4, sc4jive, sc4_state, sc4, ROT0, "Mazooma","Jive Money (PR2096) (Mazooma) (Scorpion 4)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4jive ,0, sc4, sc4jive, sc4_state, sc4, ROT0, "Mazooma","Jive Money (PR2096) (Mazooma) (Scorpion 4)", MACHINE_FLAGS_NOSOUND, layout_bfm_sc4 )
// PR2160 JIVE MONEY JMON SOUNDS JIVE MONEY
-GAMEL( 200?, sc4jivea ,sc4jive, sc4, sc4jive, sc4_state, sc4, ROT0, "Mazooma","Jive Money (PR2160) (Mazooma) (Scorpion 4) (set 1)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4jiveb ,sc4jive, sc4, sc4jive, sc4_state, sc4, ROT0, "Mazooma","Jive Money (PR2160) (Mazooma) (Scorpion 4) (set 2)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4jivec ,sc4jive, sc4, sc4jive, sc4_state, sc4, ROT0, "Mazooma","Jive Money (PR2160) (Mazooma) (Scorpion 4) (set 3)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4jived ,sc4jive, sc4, sc4jive, sc4_state, sc4, ROT0, "Mazooma","Jive Money (PR2160) (Mazooma) (Scorpion 4) (set 4)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4jivea ,sc4jive, sc4, sc4jive, sc4_state, sc4, ROT0, "Mazooma","Jive Money (PR2160) (Mazooma) (Scorpion 4) (set 1)", MACHINE_FLAGS_NOSOUND, layout_bfm_sc4 )
+GAMEL( 200?, sc4jiveb ,sc4jive, sc4, sc4jive, sc4_state, sc4, ROT0, "Mazooma","Jive Money (PR2160) (Mazooma) (Scorpion 4) (set 2)", MACHINE_FLAGS_NOSOUND, layout_bfm_sc4 )
+GAMEL( 200?, sc4jivec ,sc4jive, sc4, sc4jive, sc4_state, sc4, ROT0, "Mazooma","Jive Money (PR2160) (Mazooma) (Scorpion 4) (set 3)", MACHINE_FLAGS_NOSOUND, layout_bfm_sc4 )
+GAMEL( 200?, sc4jived ,sc4jive, sc4, sc4jive, sc4_state, sc4, ROT0, "Mazooma","Jive Money (PR2160) (Mazooma) (Scorpion 4) (set 4)", MACHINE_FLAGS_NOSOUND, layout_bfm_sc4 )
INPUT_PORTS_START( sc4mclb ) // this structure is generated
PORT_INCLUDE( sc4_base )
@@ -47305,12 +47307,12 @@ INPUT_PORTS_END
// no sound roms
// PR2164 CLUB MONOPOLY CLB MONOPOLY WOW CLUB CWOW SOUNDS CLUB MONOPOLOY
-GAMEL( 200?, sc4mclb ,0, sc4, sc4mclb, sc4_state, sc4, ROT0, "Mazooma","Monopoly Club (Mazooma) (Scorpion 4) (set 1)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4mclba ,sc4mclb, sc4, sc4mclb, sc4_state, sc4, ROT0, "Mazooma","Monopoly Club (Mazooma) (Scorpion 4) (set 2)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4mclbb ,sc4mclb, sc4, sc4mclb, sc4_state, sc4, ROT0, "Mazooma","Monopoly Club (Mazooma) (Scorpion 4) (set 3)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4mclbc ,sc4mclb, sc4, sc4mclb, sc4_state, sc4, ROT0, "Mazooma","Monopoly Club (Mazooma) (Scorpion 4) (set 4)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4mclbd ,sc4mclb, sc4, sc4mclb, sc4_state, sc4, ROT0, "Mazooma","Monopoly Club (Mazooma) (Scorpion 4) (set 5)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4mclbe ,sc4mclb, sc4, sc4mclb, sc4_state, sc4, ROT0, "Mazooma","Monopoly Club (Mazooma) (Scorpion 4) (set 6)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4mclb ,0, sc4, sc4mclb, sc4_state, sc4, ROT0, "Mazooma","Monopoly Club (Mazooma) (Scorpion 4) (set 1)", MACHINE_FLAGS_NOSOUND, layout_bfm_sc4 )
+GAMEL( 200?, sc4mclba ,sc4mclb, sc4, sc4mclb, sc4_state, sc4, ROT0, "Mazooma","Monopoly Club (Mazooma) (Scorpion 4) (set 2)", MACHINE_FLAGS_NOSOUND, layout_bfm_sc4 )
+GAMEL( 200?, sc4mclbb ,sc4mclb, sc4, sc4mclb, sc4_state, sc4, ROT0, "Mazooma","Monopoly Club (Mazooma) (Scorpion 4) (set 3)", MACHINE_FLAGS_NOSOUND, layout_bfm_sc4 )
+GAMEL( 200?, sc4mclbc ,sc4mclb, sc4, sc4mclb, sc4_state, sc4, ROT0, "Mazooma","Monopoly Club (Mazooma) (Scorpion 4) (set 4)", MACHINE_FLAGS_NOSOUND, layout_bfm_sc4 )
+GAMEL( 200?, sc4mclbd ,sc4mclb, sc4, sc4mclb, sc4_state, sc4, ROT0, "Mazooma","Monopoly Club (Mazooma) (Scorpion 4) (set 5)", MACHINE_FLAGS_NOSOUND, layout_bfm_sc4 )
+GAMEL( 200?, sc4mclbe ,sc4mclb, sc4, sc4mclb, sc4_state, sc4, ROT0, "Mazooma","Monopoly Club (Mazooma) (Scorpion 4) (set 6)", MACHINE_FLAGS_NOSOUND, layout_bfm_sc4 )
INPUT_PORTS_START( sc4monot ) // this structure is generated
@@ -47353,10 +47355,10 @@ INPUT_PORTS_START( sc4monot ) // this structure is generated
// 0x0010 - "deflt" // standard input (expected here)
INPUT_PORTS_END
-GAMEL( 200?, sc4monot ,0, sc4, sc4monot, sc4_state, sc4, ROT0, "Mazooma","Monopoly TTT (PR2133) (Mazooma) (Scorpion 4) (set 1)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 ) // PR2133MONOPOLY TTT MONOPOLY TTT MAZ MONL SOUNDS MONOPOLY
-GAMEL( 200?, sc4monota ,sc4monot, sc4, sc4monot, sc4_state, sc4, ROT0, "Mazooma","Monopoly TTT (PR2133) (Mazooma) (Scorpion 4) (set 2)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 ) // ^^
-GAMEL( 200?, sc4monotb ,sc4monot, sc4, sc4monot, sc4_state, sc4, ROT0, "Mazooma","Monopoly TTT (PR2133) (Mazooma) (Scorpion 4) (set 3)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 ) // ^^
-GAMEL( 200?, sc4monotc ,sc4monot, sc4, sc4monot, sc4_state, sc4, ROT0, "Mazooma","Monopoly TTT (PR2133) (Mazooma) (Scorpion 4) (set 4)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 ) // PR2133MONOPOLY TTT MONOPOLY TTT ARCADE MONL SOUNDS MONOPOLY
+GAMEL( 200?, sc4monot ,0, sc4, sc4monot, sc4_state, sc4, ROT0, "Mazooma","Monopoly TTT (PR2133) (Mazooma) (Scorpion 4) (set 1)", MACHINE_FLAGS_NOSOUND, layout_bfm_sc4 ) // PR2133MONOPOLY TTT MONOPOLY TTT MAZ MONL SOUNDS MONOPOLY
+GAMEL( 200?, sc4monota ,sc4monot, sc4, sc4monot, sc4_state, sc4, ROT0, "Mazooma","Monopoly TTT (PR2133) (Mazooma) (Scorpion 4) (set 2)", MACHINE_FLAGS_NOSOUND, layout_bfm_sc4 ) // ^^
+GAMEL( 200?, sc4monotb ,sc4monot, sc4, sc4monot, sc4_state, sc4, ROT0, "Mazooma","Monopoly TTT (PR2133) (Mazooma) (Scorpion 4) (set 3)", MACHINE_FLAGS_NOSOUND, layout_bfm_sc4 ) // ^^
+GAMEL( 200?, sc4monotc ,sc4monot, sc4, sc4monot, sc4_state, sc4, ROT0, "Mazooma","Monopoly TTT (PR2133) (Mazooma) (Scorpion 4) (set 4)", MACHINE_FLAGS_NOSOUND, layout_bfm_sc4 ) // PR2133MONOPOLY TTT MONOPOLY TTT ARCADE MONL SOUNDS MONOPOLY
INPUT_PORTS_START( sc4r2r ) // this structure is generated
PORT_INCLUDE( sc4_base )
@@ -47410,10 +47412,10 @@ INPUT_PORTS_START( sc4r2r ) // this structure is generated
INPUT_PORTS_END
// PR2037 REEL TO REEL RTOR SOUNDS REEL 2 REEL
-GAMEL( 200?, sc4r2r ,0, sc4, sc4r2r, sc4_state, sc4, ROT0, "Mazooma","Reel To Reel (Mazooma) (Scorpion 4) (set 1)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4r2ra ,sc4r2r, sc4, sc4r2r, sc4_state, sc4, ROT0, "Mazooma","Reel To Reel (Mazooma) (Scorpion 4) (set 2)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4r2rb ,sc4r2r, sc4, sc4r2r, sc4_state, sc4, ROT0, "Mazooma","Reel To Reel (Mazooma) (Scorpion 4) (set 3)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4r2rc ,sc4r2r, sc4, sc4r2r, sc4_state, sc4, ROT0, "Mazooma","Reel To Reel (Mazooma) (Scorpion 4) (set 4)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4r2r ,0, sc4, sc4r2r, sc4_state, sc4, ROT0, "Mazooma","Reel To Reel (Mazooma) (Scorpion 4) (set 1)", MACHINE_FLAGS_NOSOUND, layout_bfm_sc4 )
+GAMEL( 200?, sc4r2ra ,sc4r2r, sc4, sc4r2r, sc4_state, sc4, ROT0, "Mazooma","Reel To Reel (Mazooma) (Scorpion 4) (set 2)", MACHINE_FLAGS_NOSOUND, layout_bfm_sc4 )
+GAMEL( 200?, sc4r2rb ,sc4r2r, sc4, sc4r2r, sc4_state, sc4, ROT0, "Mazooma","Reel To Reel (Mazooma) (Scorpion 4) (set 3)", MACHINE_FLAGS_NOSOUND, layout_bfm_sc4 )
+GAMEL( 200?, sc4r2rc ,sc4r2r, sc4, sc4r2r, sc4_state, sc4, ROT0, "Mazooma","Reel To Reel (Mazooma) (Scorpion 4) (set 4)", MACHINE_FLAGS_NOSOUND, layout_bfm_sc4 )
INPUT_PORTS_START( sc4revo ) // this structure is generated
PORT_INCLUDE( sc4_base )
@@ -47466,12 +47468,12 @@ INPUT_PORTS_START( sc4revo ) // this structure is generated
INPUT_PORTS_END
// PR2020 REVOLVER REV SOUNDS REVOLVER
-GAMEL( 200?, sc4revo ,0, sc4, sc4revo, sc4_state, sc4, ROT0, "Mazooma","Revolver (Mazooma) (Scorpion 4) (set 1)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4revoa ,sc4revo, sc4, sc4revo, sc4_state, sc4, ROT0, "Mazooma","Revolver (Mazooma) (Scorpion 4) (set 2)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4revob ,sc4revo, sc4, sc4revo, sc4_state, sc4, ROT0, "Mazooma","Revolver (Mazooma) (Scorpion 4) (set 3)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4revoc ,sc4revo, sc4, sc4revo, sc4_state, sc4, ROT0, "Mazooma","Revolver (Mazooma) (Scorpion 4) (set 4)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4revod ,sc4revo, sc4, sc4revo, sc4_state, sc4, ROT0, "Mazooma","Revolver (Mazooma) (Scorpion 4) (set 5)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4revoe ,sc4revo, sc4, sc4revo, sc4_state, sc4, ROT0, "Mazooma","Revolver (Mazooma) (Scorpion 4) (set 6)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4revo ,0, sc4, sc4revo, sc4_state, sc4, ROT0, "Mazooma","Revolver (Mazooma) (Scorpion 4) (set 1)", MACHINE_FLAGS_NOSOUND, layout_bfm_sc4 )
+GAMEL( 200?, sc4revoa ,sc4revo, sc4, sc4revo, sc4_state, sc4, ROT0, "Mazooma","Revolver (Mazooma) (Scorpion 4) (set 2)", MACHINE_FLAGS_NOSOUND, layout_bfm_sc4 )
+GAMEL( 200?, sc4revob ,sc4revo, sc4, sc4revo, sc4_state, sc4, ROT0, "Mazooma","Revolver (Mazooma) (Scorpion 4) (set 3)", MACHINE_FLAGS_NOSOUND, layout_bfm_sc4 )
+GAMEL( 200?, sc4revoc ,sc4revo, sc4, sc4revo, sc4_state, sc4, ROT0, "Mazooma","Revolver (Mazooma) (Scorpion 4) (set 4)", MACHINE_FLAGS_NOSOUND, layout_bfm_sc4 )
+GAMEL( 200?, sc4revod ,sc4revo, sc4, sc4revo, sc4_state, sc4, ROT0, "Mazooma","Revolver (Mazooma) (Scorpion 4) (set 5)", MACHINE_FLAGS_NOSOUND, layout_bfm_sc4 )
+GAMEL( 200?, sc4revoe ,sc4revo, sc4, sc4revo, sc4_state, sc4, ROT0, "Mazooma","Revolver (Mazooma) (Scorpion 4) (set 6)", MACHINE_FLAGS_NOSOUND, layout_bfm_sc4 )
INPUT_PORTS_START( sc4slih ) // this structure is generated
PORT_INCLUDE( sc4_base )
@@ -47521,12 +47523,12 @@ INPUT_PORTS_END
// half size sound roms
// PR2145 SOME LIKE IT HOT SLIH SOUNDS SOME LIKE IT HOT
-GAMEL( 200?, sc4slih ,0, sc4, sc4slih, sc4_state, sc4, ROT0, "Mazooma","Some Like It Hot (Mazooma) (Scorpion 4) (set 1)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4sliha ,sc4slih, sc4, sc4slih, sc4_state, sc4, ROT0, "Mazooma","Some Like It Hot (Mazooma) (Scorpion 4) (set 2)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4slihb ,sc4slih, sc4, sc4slih, sc4_state, sc4, ROT0, "Mazooma","Some Like It Hot (Mazooma) (Scorpion 4) (set 3)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4slihc ,sc4slih, sc4, sc4slih, sc4_state, sc4, ROT0, "Mazooma","Some Like It Hot (Mazooma) (Scorpion 4) (set 4)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4slihd ,sc4slih, sc4, sc4slih, sc4_state, sc4, ROT0, "Mazooma","Some Like It Hot (Mazooma) (Scorpion 4) (set 5)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4slihe ,sc4slih, sc4, sc4slih, sc4_state, sc4, ROT0, "Mazooma","Some Like It Hot (Mazooma) (Scorpion 4) (set 6)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4slih ,0, sc4, sc4slih, sc4_state, sc4, ROT0, "Mazooma","Some Like It Hot (Mazooma) (Scorpion 4) (set 1)", MACHINE_FLAGS_NOSOUND, layout_bfm_sc4 )
+GAMEL( 200?, sc4sliha ,sc4slih, sc4, sc4slih, sc4_state, sc4, ROT0, "Mazooma","Some Like It Hot (Mazooma) (Scorpion 4) (set 2)", MACHINE_FLAGS_NOSOUND, layout_bfm_sc4 )
+GAMEL( 200?, sc4slihb ,sc4slih, sc4, sc4slih, sc4_state, sc4, ROT0, "Mazooma","Some Like It Hot (Mazooma) (Scorpion 4) (set 3)", MACHINE_FLAGS_NOSOUND, layout_bfm_sc4 )
+GAMEL( 200?, sc4slihc ,sc4slih, sc4, sc4slih, sc4_state, sc4, ROT0, "Mazooma","Some Like It Hot (Mazooma) (Scorpion 4) (set 4)", MACHINE_FLAGS_NOSOUND, layout_bfm_sc4 )
+GAMEL( 200?, sc4slihd ,sc4slih, sc4, sc4slih, sc4_state, sc4, ROT0, "Mazooma","Some Like It Hot (Mazooma) (Scorpion 4) (set 5)", MACHINE_FLAGS_NOSOUND, layout_bfm_sc4 )
+GAMEL( 200?, sc4slihe ,sc4slih, sc4, sc4slih, sc4_state, sc4, ROT0, "Mazooma","Some Like It Hot (Mazooma) (Scorpion 4) (set 6)", MACHINE_FLAGS_NOSOUND, layout_bfm_sc4 )
INPUT_PORTS_START( sc4gcb ) // this structure is generated
PORT_INCLUDE( sc4_base )
@@ -47581,17 +47583,17 @@ INPUT_PORTS_END
// no sound roms
// PR2125 GRAND BLASTER CASH GRAN SOUNDS GRAND BLASTER
-GAMEL( 200?, sc4gcb ,0, sc4, sc4gcb, sc4_state, sc4, ROT0, "Mazooma","Grand Blaster Cash (Mazooma) (Scorpion 4) (set 1)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4gcba ,sc4gcb, sc4, sc4gcb, sc4_state, sc4, ROT0, "Mazooma","Grand Blaster Cash (Mazooma) (Scorpion 4) (set 2)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4gcbb ,sc4gcb, sc4, sc4gcb, sc4_state, sc4, ROT0, "Mazooma","Grand Blaster Cash (Mazooma) (Scorpion 4) (set 3)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4gcbc ,sc4gcb, sc4, sc4gcb, sc4_state, sc4, ROT0, "Mazooma","Grand Blaster Cash (Mazooma) (Scorpion 4) (set 4)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4gcbd ,sc4gcb, sc4, sc4gcb, sc4_state, sc4, ROT0, "Mazooma","Grand Blaster Cash (Mazooma) (Scorpion 4) (set 5)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4gcbe ,sc4gcb, sc4, sc4gcb, sc4_state, sc4, ROT0, "Mazooma","Grand Blaster Cash (Mazooma) (Scorpion 4) (set 6)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4gcbf ,sc4gcb, sc4, sc4gcb, sc4_state, sc4, ROT0, "Mazooma","Grand Blaster Cash (Mazooma) (Scorpion 4) (set 7)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4gcbg ,sc4gcb, sc4, sc4gcb, sc4_state, sc4, ROT0, "Mazooma","Grand Blaster Cash (Mazooma) (Scorpion 4) (set 8)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4gcbh ,sc4gcb, sc4, sc4gcb, sc4_state, sc4, ROT0, "Mazooma","Grand Blaster Cash (Mazooma) (Scorpion 4) (set 9)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4gcbi ,sc4gcb, sc4, sc4gcb, sc4_state, sc4, ROT0, "Mazooma","Grand Blaster Cash (Mazooma) (Scorpion 4) (set 10)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4gcbj ,sc4gcb, sc4, sc4gcb, sc4_state, sc4, ROT0, "Mazooma","Grand Blaster Cash (Mazooma) (Scorpion 4) (set 11)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4gcb ,0, sc4, sc4gcb, sc4_state, sc4, ROT0, "Mazooma","Grand Blaster Cash (Mazooma) (Scorpion 4) (set 1)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4gcba ,sc4gcb, sc4, sc4gcb, sc4_state, sc4, ROT0, "Mazooma","Grand Blaster Cash (Mazooma) (Scorpion 4) (set 2)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4gcbb ,sc4gcb, sc4, sc4gcb, sc4_state, sc4, ROT0, "Mazooma","Grand Blaster Cash (Mazooma) (Scorpion 4) (set 3)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4gcbc ,sc4gcb, sc4, sc4gcb, sc4_state, sc4, ROT0, "Mazooma","Grand Blaster Cash (Mazooma) (Scorpion 4) (set 4)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4gcbd ,sc4gcb, sc4, sc4gcb, sc4_state, sc4, ROT0, "Mazooma","Grand Blaster Cash (Mazooma) (Scorpion 4) (set 5)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4gcbe ,sc4gcb, sc4, sc4gcb, sc4_state, sc4, ROT0, "Mazooma","Grand Blaster Cash (Mazooma) (Scorpion 4) (set 6)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4gcbf ,sc4gcb, sc4, sc4gcb, sc4_state, sc4, ROT0, "Mazooma","Grand Blaster Cash (Mazooma) (Scorpion 4) (set 7)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4gcbg ,sc4gcb, sc4, sc4gcb, sc4_state, sc4, ROT0, "Mazooma","Grand Blaster Cash (Mazooma) (Scorpion 4) (set 8)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4gcbh ,sc4gcb, sc4, sc4gcb, sc4_state, sc4, ROT0, "Mazooma","Grand Blaster Cash (Mazooma) (Scorpion 4) (set 9)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4gcbi ,sc4gcb, sc4, sc4gcb, sc4_state, sc4, ROT0, "Mazooma","Grand Blaster Cash (Mazooma) (Scorpion 4) (set 10)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4gcbj ,sc4gcb, sc4, sc4gcb, sc4_state, sc4, ROT0, "Mazooma","Grand Blaster Cash (Mazooma) (Scorpion 4) (set 11)", MACHINE_FLAGS, layout_bfm_sc4 )
/****************************************************************************************************************************************************************************************************************/
@@ -47614,12 +47616,12 @@ DRIVER_INIT_MEMBER(sc4_state,sc4spark)
// PR6912 SOUTH PARK PR6912 SOUTH PARK SOUNDS11 SOUTH PARK
-GAMEL( 200?, sc4spark ,0, sc4_4reel, sc4, sc4_state, sc4spark, ROT0, "BFM","South Park (BFM) (Scorpion 4) (set 1)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4sparka ,sc4spark, sc4_4reel, sc4, sc4_state, sc4spark, ROT0, "BFM","South Park (BFM) (Scorpion 4) (set 2)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4sparkb ,sc4spark, sc4_4reel, sc4, sc4_state, sc4spark, ROT0, "BFM","South Park (BFM) (Scorpion 4) (set 3)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4sparkc ,sc4spark, sc4_4reel, sc4, sc4_state, sc4spark, ROT0, "BFM","South Park (BFM) (Scorpion 4) (set 4)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4sparkd ,sc4spark, sc4_4reel, sc4, sc4_state, sc4spark, ROT0, "BFM","South Park (BFM) (Scorpion 4) (set 5)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4sparke ,sc4spark, sc4_4reel, sc4, sc4_state, sc4spark, ROT0, "BFM","South Park (BFM) (Scorpion 4) (set 6)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4spark ,0, sc4_4reel, sc4, sc4_state, sc4spark, ROT0, "BFM","South Park (BFM) (Scorpion 4) (set 1)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4sparka ,sc4spark, sc4_4reel, sc4, sc4_state, sc4spark, ROT0, "BFM","South Park (BFM) (Scorpion 4) (set 2)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4sparkb ,sc4spark, sc4_4reel, sc4, sc4_state, sc4spark, ROT0, "BFM","South Park (BFM) (Scorpion 4) (set 3)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4sparkc ,sc4spark, sc4_4reel, sc4, sc4_state, sc4spark, ROT0, "BFM","South Park (BFM) (Scorpion 4) (set 4)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4sparkd ,sc4spark, sc4_4reel, sc4, sc4_state, sc4spark, ROT0, "BFM","South Park (BFM) (Scorpion 4) (set 5)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4sparke ,sc4spark, sc4_4reel, sc4, sc4_state, sc4spark, ROT0, "BFM","South Park (BFM) (Scorpion 4) (set 6)", MACHINE_FLAGS, layout_bfm_sc4 )
@@ -47630,10 +47632,10 @@ DRIVER_INIT_MEMBER(sc4_state,sc4brkfs)
// PR6910 BIG BREAKFAST PR6910 BRKF SOUNDS11 BIG BREAKFAST
-GAMEL( 200?, sc4brkfs ,0, sc4_4reel, sc4, sc4_state, sc4brkfs, ROT0, "BFM","The Big Breakfast (BFM) (Scorpion 4) (set 1)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4brkfsa ,sc4brkfs, sc4_4reel, sc4, sc4_state, sc4brkfs, ROT0, "BFM","The Big Breakfast (BFM) (Scorpion 4) (set 2)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4brkfsb ,sc4brkfs, sc4_4reel, sc4, sc4_state, sc4brkfs, ROT0, "BFM","The Big Breakfast (BFM) (Scorpion 4) (set 3)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4brkfsc ,sc4brkfs, sc4_4reel, sc4, sc4_state, sc4brkfs, ROT0, "BFM","The Big Breakfast (BFM) (Scorpion 4) (set 4)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4brkfs ,0, sc4_4reel, sc4, sc4_state, sc4brkfs, ROT0, "BFM","The Big Breakfast (BFM) (Scorpion 4) (set 1)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4brkfsa ,sc4brkfs, sc4_4reel, sc4, sc4_state, sc4brkfs, ROT0, "BFM","The Big Breakfast (BFM) (Scorpion 4) (set 2)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4brkfsb ,sc4brkfs, sc4_4reel, sc4, sc4_state, sc4brkfs, ROT0, "BFM","The Big Breakfast (BFM) (Scorpion 4) (set 3)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4brkfsc ,sc4brkfs, sc4_4reel, sc4, sc4_state, sc4brkfs, ROT0, "BFM","The Big Breakfast (BFM) (Scorpion 4) (set 4)", MACHINE_FLAGS, layout_bfm_sc4 )
@@ -47643,13 +47645,13 @@ DRIVER_INIT_MEMBER(sc4_state,sc4gslam)
}
// PR6934 GRAND SLAM PR6934 SLM2 SOUNDS11 GRAND SLAM
-GAMEL( 200?, sc4gslam ,0, sc4, sc4, sc4_state, sc4gslam, ROT0, "BFM","Grandslam Club (BFM) (Scorpion 4) (set 1)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4gslama ,sc4gslam, sc4, sc4, sc4_state, sc4gslam, ROT0, "BFM","Grandslam Club (BFM) (Scorpion 4) (set 2)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4gslamb ,sc4gslam, sc4, sc4, sc4_state, sc4gslam, ROT0, "BFM","Grandslam Club (BFM) (Scorpion 4) (set 3)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4gslamc ,sc4gslam, sc4, sc4, sc4_state, sc4gslam, ROT0, "BFM","Grandslam Club (BFM) (Scorpion 4) (set 4)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4gslamd ,sc4gslam, sc4, sc4, sc4_state, sc4gslam, ROT0, "BFM","Grandslam Club (BFM) (Scorpion 4) (set 5)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4gslame ,sc4gslam, sc4, sc4, sc4_state, sc4gslam, ROT0, "BFM","Grandslam Club (BFM) (Scorpion 4) (set 6)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4gslamf ,sc4gslam, sc4, sc4, sc4_state, sc4gslam, ROT0, "BFM","Grandslam Club (BFM) (Scorpion 4) (set 7)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4gslam ,0, sc4, sc4, sc4_state, sc4gslam, ROT0, "BFM","Grandslam Club (BFM) (Scorpion 4) (set 1)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4gslama ,sc4gslam, sc4, sc4, sc4_state, sc4gslam, ROT0, "BFM","Grandslam Club (BFM) (Scorpion 4) (set 2)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4gslamb ,sc4gslam, sc4, sc4, sc4_state, sc4gslam, ROT0, "BFM","Grandslam Club (BFM) (Scorpion 4) (set 3)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4gslamc ,sc4gslam, sc4, sc4, sc4_state, sc4gslam, ROT0, "BFM","Grandslam Club (BFM) (Scorpion 4) (set 4)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4gslamd ,sc4gslam, sc4, sc4, sc4_state, sc4gslam, ROT0, "BFM","Grandslam Club (BFM) (Scorpion 4) (set 5)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4gslame ,sc4gslam, sc4, sc4, sc4_state, sc4gslam, ROT0, "BFM","Grandslam Club (BFM) (Scorpion 4) (set 6)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4gslamf ,sc4gslam, sc4, sc4, sc4_state, sc4gslam, ROT0, "BFM","Grandslam Club (BFM) (Scorpion 4) (set 7)", MACHINE_FLAGS, layout_bfm_sc4 )
@@ -47661,10 +47663,10 @@ DRIVER_INIT_MEMBER(sc4_state,sc4canca)
}
// PR7017CASINO CAN CAN CASH PR7017,Casino CAN CAN CASH, LINE SOUNDS CAN CAN CASH
-GAMEL( 200?, sc4canca ,0, sc4_4reel, sc4, sc4_state, sc4canca, ROT0, "Mazooma","Can Can Cash Casino (Mazooma) (Scorpion 4) (set 1)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4cancaa ,sc4canca, sc4_4reel, sc4, sc4_state, sc4canca, ROT0, "Mazooma","Can Can Cash Casino (Mazooma) (Scorpion 4) (set 2)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4cancab ,sc4canca, sc4_4reel, sc4, sc4_state, sc4canca, ROT0, "Mazooma","Can Can Cash Casino (Mazooma) (Scorpion 4) (set 3)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4cancac ,sc4canca, sc4_4reel, sc4, sc4_state, sc4canca, ROT0, "Mazooma","Can Can Cash Casino (Mazooma) (Scorpion 4) (set 4)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4canca ,0, sc4_4reel, sc4, sc4_state, sc4canca, ROT0, "Mazooma","Can Can Cash Casino (Mazooma) (Scorpion 4) (set 1)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4cancaa ,sc4canca, sc4_4reel, sc4, sc4_state, sc4canca, ROT0, "Mazooma","Can Can Cash Casino (Mazooma) (Scorpion 4) (set 2)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4cancab ,sc4canca, sc4_4reel, sc4, sc4_state, sc4canca, ROT0, "Mazooma","Can Can Cash Casino (Mazooma) (Scorpion 4) (set 3)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4cancac ,sc4canca, sc4_4reel, sc4, sc4_state, sc4canca, ROT0, "Mazooma","Can Can Cash Casino (Mazooma) (Scorpion 4) (set 4)", MACHINE_FLAGS, layout_bfm_sc4 )
@@ -47674,17 +47676,17 @@ DRIVER_INIT_MEMBER(sc4_state,sc4hotpr)
}
// PR6911 HOT PROPERTY PR6911 HOT PROPERTY SOUNDS11 HOT PROPERTY
-GAMEL( 200?, sc4hotpr ,0, sc4_4reel, sc4, sc4_state, sc4hotpr, ROT0, "BFM", "Hot Property (Bellfruit) (Scorpion 4) (set 1)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4hotprb ,sc4hotpr, sc4_4reel, sc4, sc4_state, sc4hotpr, ROT0, "BFM", "Hot Property (Bellfruit) (Scorpion 4) (set 2)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4hotprd ,sc4hotpr, sc4_4reel, sc4, sc4_state, sc4hotpr, ROT0, "BFM", "Hot Property (Bellfruit) (Scorpion 4) (set 3)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4hotpre ,sc4hotpr, sc4_4reel, sc4, sc4_state, sc4hotpr, ROT0, "BFM", "Hot Property (Bellfruit) (Scorpion 4) (set 4)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4hotpra ,sc4hotpr, sc4_4reel, sc4, sc4_state, sc4hotpr, ROT0, "BFM / Whitbread", "Hot Property (Bellfruit) (Scorpion 4) (Whitbread, set 1)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4hotprc ,sc4hotpr, sc4_4reel, sc4, sc4_state, sc4hotpr, ROT0, "BFM / Whitbread", "Hot Property (Bellfruit) (Scorpion 4) (Whitbread, set 2)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4hotpr ,0, sc4_4reel, sc4, sc4_state, sc4hotpr, ROT0, "BFM", "Hot Property (Bellfruit) (Scorpion 4) (set 1)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4hotprb ,sc4hotpr, sc4_4reel, sc4, sc4_state, sc4hotpr, ROT0, "BFM", "Hot Property (Bellfruit) (Scorpion 4) (set 2)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4hotprd ,sc4hotpr, sc4_4reel, sc4, sc4_state, sc4hotpr, ROT0, "BFM", "Hot Property (Bellfruit) (Scorpion 4) (set 3)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4hotpre ,sc4hotpr, sc4_4reel, sc4, sc4_state, sc4hotpr, ROT0, "BFM", "Hot Property (Bellfruit) (Scorpion 4) (set 4)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4hotpra ,sc4hotpr, sc4_4reel, sc4, sc4_state, sc4hotpr, ROT0, "BFM / Whitbread", "Hot Property (Bellfruit) (Scorpion 4) (Whitbread, set 1)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4hotprc ,sc4hotpr, sc4_4reel, sc4, sc4_state, sc4hotpr, ROT0, "BFM / Whitbread", "Hot Property (Bellfruit) (Scorpion 4) (Whitbread, set 2)", MACHINE_FLAGS, layout_bfm_sc4 )
// is this some kind of reworked / licensed version of Hot Property?
// PR6911 HOT PROPERTY PR6911 HOT PROPERTY SOUNDS11 $$ CASH 'N' BURN
-GAMEL( 200?, sc4cburn ,sc4hotpr, sc4_4reel, sc4, sc4_state, sc4hotpr, ROT0, "Qps","Cash 'n' Burn (Qps) (Scorpion 4) (set 1)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4cburn ,sc4hotpr, sc4_4reel, sc4, sc4_state, sc4hotpr, ROT0, "Qps","Cash 'n' Burn (Qps) (Scorpion 4) (set 1)", MACHINE_FLAGS, layout_bfm_sc4 )
// PR6911 HOT PROPERTY V4.0 PR6911 HOT PROPERTY SOUNDS11 $ CASH 'N' BURN
-GAMEL( 200?, sc4cburna ,sc4hotpr, sc4_4reel, sc4, sc4_state, sc4hotpr, ROT0, "Qps","Cash 'n' Burn (Qps) (Scorpion 4) (set 2)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4cburna ,sc4hotpr, sc4_4reel, sc4, sc4_state, sc4hotpr, ROT0, "Qps","Cash 'n' Burn (Qps) (Scorpion 4) (set 2)", MACHINE_FLAGS, layout_bfm_sc4 )
@@ -47696,17 +47698,17 @@ DRIVER_INIT_MEMBER(sc4_state,sc4cnfr)
// PR6815 CASH N FRUIT PR6815 CASH N FRUIT SOUNDS11
-GAMEL( 200?, sc4cnfr ,0, sc4_4reel, sc4, sc4_state, sc4cnfr, ROT0, "BFM","Cash 'n' Fruit (Bellfruit) (Scorpion 4) (set 1)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4cnfra ,sc4cnfr, sc4_4reel, sc4, sc4_state, sc4cnfr, ROT0, "BFM","Cash 'n' Fruit (Bellfruit) (Scorpion 4) (set 2)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4cnfrb ,sc4cnfr, sc4_4reel, sc4, sc4_state, sc4cnfr, ROT0, "BFM","Cash 'n' Fruit (Bellfruit) (Scorpion 4) (set 3)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4cnfre ,sc4cnfr, sc4_4reel, sc4, sc4_state, sc4cnfr, ROT0, "BFM","Cash 'n' Fruit (Bellfruit) (Scorpion 4) (set 4)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4cnfrf ,sc4cnfr, sc4_4reel, sc4, sc4_state, sc4cnfr, ROT0, "BFM","Cash 'n' Fruit (Bellfruit) (Scorpion 4) (set 5)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4cnfrg ,sc4cnfr, sc4_4reel, sc4, sc4_state, sc4cnfr, ROT0, "BFM","Cash 'n' Fruit (Bellfruit) (Scorpion 4) (set 6)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4cnfr ,0, sc4_4reel, sc4, sc4_state, sc4cnfr, ROT0, "BFM","Cash 'n' Fruit (Bellfruit) (Scorpion 4) (set 1)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4cnfra ,sc4cnfr, sc4_4reel, sc4, sc4_state, sc4cnfr, ROT0, "BFM","Cash 'n' Fruit (Bellfruit) (Scorpion 4) (set 2)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4cnfrb ,sc4cnfr, sc4_4reel, sc4, sc4_state, sc4cnfr, ROT0, "BFM","Cash 'n' Fruit (Bellfruit) (Scorpion 4) (set 3)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4cnfre ,sc4cnfr, sc4_4reel, sc4, sc4_state, sc4cnfr, ROT0, "BFM","Cash 'n' Fruit (Bellfruit) (Scorpion 4) (set 4)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4cnfrf ,sc4cnfr, sc4_4reel, sc4, sc4_state, sc4cnfr, ROT0, "BFM","Cash 'n' Fruit (Bellfruit) (Scorpion 4) (set 5)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4cnfrg ,sc4cnfr, sc4_4reel, sc4, sc4_state, sc4cnfr, ROT0, "BFM","Cash 'n' Fruit (Bellfruit) (Scorpion 4) (set 6)", MACHINE_FLAGS, layout_bfm_sc4 )
// PR4615 CASH N FRUIT S+P98 PR6815 CASH N FRUIT SOUNDS11
-GAMEL( 200?, sc4cnfrc ,sc4cnfr, sc4_4reel, sc4, sc4_state, sc4cnfr, ROT0, "BFM","Cash 'n' Fruit S+P98 (Bellfruit) (Scorpion 4) (set 1)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4cnfrd ,sc4cnfr, sc4_4reel, sc4, sc4_state, sc4cnfr, ROT0, "BFM","Cash 'n' Fruit S+P98 (Bellfruit) (Scorpion 4) (set 2)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4cnfrh ,sc4cnfr, sc4_4reel, sc4, sc4_state, sc4cnfr, ROT0, "BFM","Cash 'n' Fruit S+P98 (Bellfruit) (Scorpion 4) (set 3)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4cnfri ,sc4cnfr, sc4_4reel, sc4, sc4_state, sc4cnfr, ROT0, "BFM","Cash 'n' Fruit S+P98 (Bellfruit) (Scorpion 4) (set 4)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4cnfrc ,sc4cnfr, sc4_4reel, sc4, sc4_state, sc4cnfr, ROT0, "BFM","Cash 'n' Fruit S+P98 (Bellfruit) (Scorpion 4) (set 1)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4cnfrd ,sc4cnfr, sc4_4reel, sc4, sc4_state, sc4cnfr, ROT0, "BFM","Cash 'n' Fruit S+P98 (Bellfruit) (Scorpion 4) (set 2)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4cnfrh ,sc4cnfr, sc4_4reel, sc4, sc4_state, sc4cnfr, ROT0, "BFM","Cash 'n' Fruit S+P98 (Bellfruit) (Scorpion 4) (set 3)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4cnfri ,sc4cnfr, sc4_4reel, sc4, sc4_state, sc4cnfr, ROT0, "BFM","Cash 'n' Fruit S+P98 (Bellfruit) (Scorpion 4) (set 4)", MACHINE_FLAGS, layout_bfm_sc4 )
@@ -47716,10 +47718,10 @@ DRIVER_INIT_MEMBER(sc4_state,sc4cla7)
}
// PR2111 CLASSIC 7'S CLASS SOUNDS CLASSIC 7'S
-GAMEL( 200?, sc4cla7 ,0, sc4_200_altb, sc4, sc4_state, sc4cla7, ROT0, "Mazooma","Classic 7s (Mazooma) (Scorpion 4) (set 1)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4cla7a ,sc4cla7, sc4_200_altb, sc4, sc4_state, sc4cla7, ROT0, "Mazooma","Classic 7s (Mazooma) (Scorpion 4) (set 2)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4cla7b ,sc4cla7, sc4_200_altb, sc4, sc4_state, sc4cla7, ROT0, "Mazooma","Classic 7s (Mazooma) (Scorpion 4) (set 3)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4cla7c ,sc4cla7, sc4_200_altb, sc4, sc4_state, sc4cla7, ROT0, "Mazooma","Classic 7s (Mazooma) (Scorpion 4) (set 4)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4cla7 ,0, sc4_200_altb, sc4, sc4_state, sc4cla7, ROT0, "Mazooma","Classic 7s (Mazooma) (Scorpion 4) (set 1)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4cla7a ,sc4cla7, sc4_200_altb, sc4, sc4_state, sc4cla7, ROT0, "Mazooma","Classic 7s (Mazooma) (Scorpion 4) (set 2)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4cla7b ,sc4cla7, sc4_200_altb, sc4, sc4_state, sc4cla7, ROT0, "Mazooma","Classic 7s (Mazooma) (Scorpion 4) (set 3)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4cla7c ,sc4cla7, sc4_200_altb, sc4, sc4_state, sc4cla7, ROT0, "Mazooma","Classic 7s (Mazooma) (Scorpion 4) (set 4)", MACHINE_FLAGS, layout_bfm_sc4 )
DRIVER_INIT_MEMBER(sc4_state,sc4cclas)
@@ -47733,40 +47735,40 @@ DRIVER_INIT_MEMBER(sc4_state,sc4cclas_mbus)
}
// PR7148 CLUB CLASS PR7148 CLUB CLASS SOUNDS11 CLUB CLASS
-GAMEL( 200?, sc4cclas ,0, sc4, sc4, sc4_state, sc4cclas, ROT0, "BFM","Club Class (Bellfruit) (Scorpion 4) (set 1)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4cclasa ,sc4cclas, sc4, sc4, sc4_state, sc4cclas, ROT0, "BFM","Club Class (Bellfruit) (Scorpion 4) (set 2)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4cclasb ,sc4cclas, sc4, sc4, sc4_state, sc4cclas, ROT0, "BFM","Club Class (Bellfruit) (Scorpion 4) (set 3)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4cclasc ,sc4cclas, sc4, sc4, sc4_state, sc4cclas, ROT0, "BFM","Club Class (Bellfruit) (Scorpion 4) (set 4)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4cclasd ,sc4cclas, sc4, sc4, sc4_state, sc4cclas, ROT0, "BFM","Club Class (Bellfruit) (Scorpion 4) (set 5)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4cclasf ,sc4cclas, sc4, sc4, sc4_state, sc4cclas, ROT0, "BFM","Club Class (Bellfruit) (Scorpion 4) (set 6)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4cclasi ,sc4cclas, sc4, sc4, sc4_state, sc4cclas, ROT0, "BFM","Club Class (Bellfruit) (Scorpion 4) (set 7)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4cclasj ,sc4cclas, sc4, sc4, sc4_state, sc4cclas, ROT0, "BFM","Club Class (Bellfruit) (Scorpion 4) (set 8)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4cclask ,sc4cclas, sc4, sc4, sc4_state, sc4cclas, ROT0, "BFM","Club Class (Bellfruit) (Scorpion 4) (set 9)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4cclasl ,sc4cclas, sc4, sc4, sc4_state, sc4cclas, ROT0, "BFM","Club Class (Bellfruit) (Scorpion 4) (set 10)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4cclasm ,sc4cclas, sc4, sc4, sc4_state, sc4cclas, ROT0, "BFM","Club Class (Bellfruit) (Scorpion 4) (set 11)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4cclasn ,sc4cclas, sc4, sc4, sc4_state, sc4cclas, ROT0, "BFM","Club Class (Bellfruit) (Scorpion 4) (set 12)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4cclaso ,sc4cclas, sc4, sc4, sc4_state, sc4cclas, ROT0, "BFM","Club Class (Bellfruit) (Scorpion 4) (set 13)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4cclasq ,sc4cclas, sc4, sc4, sc4_state, sc4cclas, ROT0, "BFM","Club Class (Bellfruit) (Scorpion 4) (set 14)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4cclasr ,sc4cclas, sc4, sc4, sc4_state, sc4cclas, ROT0, "BFM","Club Class (Bellfruit) (Scorpion 4) (set 15)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4cclass ,sc4cclas, sc4, sc4, sc4_state, sc4cclas, ROT0, "BFM","Club Class (Bellfruit) (Scorpion 4) (set 16)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4cclast ,sc4cclas, sc4, sc4, sc4_state, sc4cclas, ROT0, "BFM","Club Class (Bellfruit) (Scorpion 4) (set 17)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4cclasu ,sc4cclas, sc4, sc4, sc4_state, sc4cclas, ROT0, "BFM","Club Class (Bellfruit) (Scorpion 4) (set 18)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4cclasv ,sc4cclas, sc4, sc4, sc4_state, sc4cclas, ROT0, "BFM","Club Class (Bellfruit) (Scorpion 4) (set 19)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4cclasw ,sc4cclas, sc4, sc4, sc4_state, sc4cclas, ROT0, "BFM","Club Class (Bellfruit) (Scorpion 4) (set 20)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4cclas ,0, sc4, sc4, sc4_state, sc4cclas, ROT0, "BFM","Club Class (Bellfruit) (Scorpion 4) (set 1)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4cclasa ,sc4cclas, sc4, sc4, sc4_state, sc4cclas, ROT0, "BFM","Club Class (Bellfruit) (Scorpion 4) (set 2)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4cclasb ,sc4cclas, sc4, sc4, sc4_state, sc4cclas, ROT0, "BFM","Club Class (Bellfruit) (Scorpion 4) (set 3)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4cclasc ,sc4cclas, sc4, sc4, sc4_state, sc4cclas, ROT0, "BFM","Club Class (Bellfruit) (Scorpion 4) (set 4)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4cclasd ,sc4cclas, sc4, sc4, sc4_state, sc4cclas, ROT0, "BFM","Club Class (Bellfruit) (Scorpion 4) (set 5)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4cclasf ,sc4cclas, sc4, sc4, sc4_state, sc4cclas, ROT0, "BFM","Club Class (Bellfruit) (Scorpion 4) (set 6)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4cclasi ,sc4cclas, sc4, sc4, sc4_state, sc4cclas, ROT0, "BFM","Club Class (Bellfruit) (Scorpion 4) (set 7)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4cclasj ,sc4cclas, sc4, sc4, sc4_state, sc4cclas, ROT0, "BFM","Club Class (Bellfruit) (Scorpion 4) (set 8)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4cclask ,sc4cclas, sc4, sc4, sc4_state, sc4cclas, ROT0, "BFM","Club Class (Bellfruit) (Scorpion 4) (set 9)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4cclasl ,sc4cclas, sc4, sc4, sc4_state, sc4cclas, ROT0, "BFM","Club Class (Bellfruit) (Scorpion 4) (set 10)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4cclasm ,sc4cclas, sc4, sc4, sc4_state, sc4cclas, ROT0, "BFM","Club Class (Bellfruit) (Scorpion 4) (set 11)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4cclasn ,sc4cclas, sc4, sc4, sc4_state, sc4cclas, ROT0, "BFM","Club Class (Bellfruit) (Scorpion 4) (set 12)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4cclaso ,sc4cclas, sc4, sc4, sc4_state, sc4cclas, ROT0, "BFM","Club Class (Bellfruit) (Scorpion 4) (set 13)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4cclasq ,sc4cclas, sc4, sc4, sc4_state, sc4cclas, ROT0, "BFM","Club Class (Bellfruit) (Scorpion 4) (set 14)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4cclasr ,sc4cclas, sc4, sc4, sc4_state, sc4cclas, ROT0, "BFM","Club Class (Bellfruit) (Scorpion 4) (set 15)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4cclass ,sc4cclas, sc4, sc4, sc4_state, sc4cclas, ROT0, "BFM","Club Class (Bellfruit) (Scorpion 4) (set 16)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4cclast ,sc4cclas, sc4, sc4, sc4_state, sc4cclas, ROT0, "BFM","Club Class (Bellfruit) (Scorpion 4) (set 17)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4cclasu ,sc4cclas, sc4, sc4, sc4_state, sc4cclas, ROT0, "BFM","Club Class (Bellfruit) (Scorpion 4) (set 18)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4cclasv ,sc4cclas, sc4, sc4, sc4_state, sc4cclas, ROT0, "BFM","Club Class (Bellfruit) (Scorpion 4) (set 19)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4cclasw ,sc4cclas, sc4, sc4, sc4_state, sc4cclas, ROT0, "BFM","Club Class (Bellfruit) (Scorpion 4) (set 20)", MACHINE_FLAGS, layout_bfm_sc4 )
// PR7148 CLUB CLASS CLUB CLASS CLUB PR7148 CLUB CLASS SOUNDS11 CLUB CLASS
-GAMEL( 200?, sc4cclasx ,sc4cclas, sc4, sc4, sc4_state, sc4cclas_mbus, ROT0, "BFM","Club Class (Bellfruit) (Scorpion 4) (set 21)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4cclasy ,sc4cclas, sc4, sc4, sc4_state, sc4cclas_mbus, ROT0, "BFM","Club Class (Bellfruit) (Scorpion 4) (set 22)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4cclasz ,sc4cclas, sc4, sc4, sc4_state, sc4cclas_mbus, ROT0, "BFM","Club Class (Bellfruit) (Scorpion 4) (set 23)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4cclas0 ,sc4cclas, sc4, sc4, sc4_state, sc4cclas_mbus, ROT0, "BFM","Club Class (Bellfruit) (Scorpion 4) (set 24)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4cclas1 ,sc4cclas, sc4, sc4, sc4_state, sc4cclas_mbus, ROT0, "BFM","Club Class (Bellfruit) (Scorpion 4) (set 25)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4cclas2 ,sc4cclas, sc4, sc4, sc4_state, sc4cclas_mbus, ROT0, "BFM","Club Class (Bellfruit) (Scorpion 4) (set 26)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4cclas3 ,sc4cclas, sc4, sc4, sc4_state, sc4cclas_mbus, ROT0, "BFM","Club Class (Bellfruit) (Scorpion 4) (set 27)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4cclas4 ,sc4cclas, sc4, sc4, sc4_state, sc4cclas_mbus, ROT0, "BFM","Club Class (Bellfruit) (Scorpion 4) (set 28)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4cclasx ,sc4cclas, sc4, sc4, sc4_state, sc4cclas_mbus, ROT0, "BFM","Club Class (Bellfruit) (Scorpion 4) (set 21)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4cclasy ,sc4cclas, sc4, sc4, sc4_state, sc4cclas_mbus, ROT0, "BFM","Club Class (Bellfruit) (Scorpion 4) (set 22)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4cclasz ,sc4cclas, sc4, sc4, sc4_state, sc4cclas_mbus, ROT0, "BFM","Club Class (Bellfruit) (Scorpion 4) (set 23)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4cclas0 ,sc4cclas, sc4, sc4, sc4_state, sc4cclas_mbus, ROT0, "BFM","Club Class (Bellfruit) (Scorpion 4) (set 24)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4cclas1 ,sc4cclas, sc4, sc4, sc4_state, sc4cclas_mbus, ROT0, "BFM","Club Class (Bellfruit) (Scorpion 4) (set 25)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4cclas2 ,sc4cclas, sc4, sc4, sc4_state, sc4cclas_mbus, ROT0, "BFM","Club Class (Bellfruit) (Scorpion 4) (set 26)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4cclas3 ,sc4cclas, sc4, sc4, sc4_state, sc4cclas_mbus, ROT0, "BFM","Club Class (Bellfruit) (Scorpion 4) (set 27)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4cclas4 ,sc4cclas, sc4, sc4, sc4_state, sc4cclas_mbus, ROT0, "BFM","Club Class (Bellfruit) (Scorpion 4) (set 28)", MACHINE_FLAGS, layout_bfm_sc4 )
// PR7148 CLUB CLASS 65% FERRY PR7148 CLUB CLASS SOUNDS11 CLUB CLASS
-GAMEL( 200?, sc4cclase ,sc4cclas, sc4, sc4, sc4_state, sc4cclas, ROT0, "BFM","Club Class (65% Ferry) (Bellfruit) (Scorpion 4) (set 1)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4cclasg ,sc4cclas, sc4, sc4, sc4_state, sc4cclas, ROT0, "BFM","Club Class (65% Ferry) (Bellfruit) (Scorpion 4) (set 2)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4cclash ,sc4cclas, sc4, sc4, sc4_state, sc4cclas, ROT0, "BFM","Club Class (65% Ferry) (Bellfruit) (Scorpion 4) (set 3)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4cclasp ,sc4cclas, sc4, sc4, sc4_state, sc4cclas, ROT0, "BFM","Club Class (65% Ferry) (Bellfruit) (Scorpion 4) (set 4)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4cclase ,sc4cclas, sc4, sc4, sc4_state, sc4cclas, ROT0, "BFM","Club Class (65% Ferry) (Bellfruit) (Scorpion 4) (set 1)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4cclasg ,sc4cclas, sc4, sc4, sc4_state, sc4cclas, ROT0, "BFM","Club Class (65% Ferry) (Bellfruit) (Scorpion 4) (set 2)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4cclash ,sc4cclas, sc4, sc4, sc4_state, sc4cclas, ROT0, "BFM","Club Class (65% Ferry) (Bellfruit) (Scorpion 4) (set 3)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4cclasp ,sc4cclas, sc4, sc4, sc4_state, sc4cclas, ROT0, "BFM","Club Class (65% Ferry) (Bellfruit) (Scorpion 4) (set 4)", MACHINE_FLAGS, layout_bfm_sc4 )
DRIVER_INIT_MEMBER(sc4_state,sc4crcc)
@@ -47776,12 +47778,12 @@ DRIVER_INIT_MEMBER(sc4_state,sc4crcc)
// PR6837 CLASSIC CLUB COPS AND ROBBERS PR6837 COPS SOUNDS11 COPS AND ROBBERS
-GAMEL( 200?, sc4crcc ,0, sc4dmd, sc4, sc4_state, sc4crcc, ROT0, "BFM","Cops 'n' Robbers Club Classic (Bellfruit) (Scorpion 4) (set 1)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_sc4_dmd )
-GAMEL( 200?, sc4crcca ,sc4crcc, sc4dmd, sc4, sc4_state, sc4crcc, ROT0, "BFM","Cops 'n' Robbers Club Classic (Bellfruit) (Scorpion 4) (set 2)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_sc4_dmd )
+GAMEL( 200?, sc4crcc ,0, sc4dmd, sc4, sc4_state, sc4crcc, ROT0, "BFM","Cops 'n' Robbers Club Classic (Bellfruit) (Scorpion 4) (set 1)", MACHINE_FLAGS, layout_sc4_dmd )
+GAMEL( 200?, sc4crcca ,sc4crcc, sc4dmd, sc4, sc4_state, sc4crcc, ROT0, "BFM","Cops 'n' Robbers Club Classic (Bellfruit) (Scorpion 4) (set 2)", MACHINE_FLAGS, layout_sc4_dmd )
// PR6837 CLASSIC CLUB COPS AND ROBBERS 65% PR6837 COPS SOUNDS11
// the roms are a weird size, and the code is invalid, bad dumps? can they be fixed?
-GAMEL( 200?, sc4crccb ,sc4crcc, sc4dmd, sc4, sc4_state, sc4crcc, ROT0, "BFM","Cops 'n' Robbers Club Classic (65%) (Bellfruit) (Scorpion 4) (set 1)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_sc4_dmd )
-GAMEL( 200?, sc4crccc ,sc4crcc, sc4dmd, sc4, sc4_state, sc4crcc, ROT0, "BFM","Cops 'n' Robbers Club Classic (65%) (Bellfruit) (Scorpion 4) (set 2)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_sc4_dmd )
+GAMEL( 200?, sc4crccb ,sc4crcc, sc4dmd, sc4, sc4_state, sc4crcc, ROT0, "BFM","Cops 'n' Robbers Club Classic (65%) (Bellfruit) (Scorpion 4) (set 1)", MACHINE_FLAGS, layout_sc4_dmd )
+GAMEL( 200?, sc4crccc ,sc4crcc, sc4dmd, sc4, sc4_state, sc4crcc, ROT0, "BFM","Cops 'n' Robbers Club Classic (65%) (Bellfruit) (Scorpion 4) (set 2)", MACHINE_FLAGS, layout_sc4_dmd )
@@ -47793,9 +47795,9 @@ DRIVER_INIT_MEMBER(sc4_state,sc4czfr)
// the unusual sound rom numbering suggests a non-English market version, although the startup messages are in English
// PR6982 CRAZY FRUITS 1.02 95004150 CRAZY FRUITS PR6982 CRAZY FRUITS
-GAMEL( 200?, sc4czfr ,0, sc4_4reel, sc4, sc4_state, sc4czfr, ROT0, "BFM","Crazy Fruits (Germany?) (PR6982, GCRF, 1.02) (Bellfruit) (Scorpion 4)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 ) // German set?
+GAMEL( 200?, sc4czfr ,0, sc4_4reel, sc4, sc4_state, sc4czfr, ROT0, "BFM","Crazy Fruits (Germany?) (PR6982, GCRF, 1.02) (Bellfruit) (Scorpion 4)", MACHINE_FLAGS, layout_bfm_sc4 ) // German set?
// P_6_8_ _R_Z_ _R_I_S_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _5_0_1_0_C_A_Y_F_U_T_ _R_9_2_ _
-GAMEL( 200?, sc4czfrd ,sc4czfr, sc4_4reel, sc4, sc4_state, sc4czfr, ROT0, "BFM","Crazy Fruits (Germany?) (PR6982, GCRF) (Bellfruit) (Scorpion 4)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 ) // incomplete pairing (in 'up for it' set)
+GAMEL( 200?, sc4czfrd ,sc4czfr, sc4_4reel, sc4, sc4_state, sc4czfr, ROT0, "BFM","Crazy Fruits (Germany?) (PR6982, GCRF) (Bellfruit) (Scorpion 4)", MACHINE_FLAGS, layout_bfm_sc4 ) // incomplete pairing (in 'up for it' set)
DRIVER_INIT_MEMBER(sc4_state,sc4cfcas)
@@ -47809,58 +47811,58 @@ DRIVER_INIT_MEMBER(sc4_state,sc4cfcas_mbus)
}
// PR6923 CASINO CRAZY FRUITS PR6923 CRAZY FRUITS SOUNDS11
-GAMEL( 200?, sc4cfcas ,0, sc4_3reel, sc4, sc4_state, sc4cfcas, ROT0, "BFM","Casino Crazy Fruits (Bellfruit) (Scorpion 4) (set 1)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4cfcasa ,sc4cfcas, sc4_3reel, sc4, sc4_state, sc4cfcas, ROT0, "BFM","Casino Crazy Fruits (Bellfruit) (Scorpion 4) (set 2)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4cfcasb ,sc4cfcas, sc4_3reel, sc4, sc4_state, sc4cfcas, ROT0, "BFM","Casino Crazy Fruits (Bellfruit) (Scorpion 4) (set 3)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4cfcase ,sc4cfcas, sc4_3reel, sc4, sc4_state, sc4cfcas, ROT0, "BFM","Casino Crazy Fruits (Bellfruit) (Scorpion 4) (set 4)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4cfcasf ,sc4cfcas, sc4_3reel, sc4, sc4_state, sc4cfcas, ROT0, "BFM","Casino Crazy Fruits (Bellfruit) (Scorpion 4) (set 5)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4cfcask ,sc4cfcas, sc4_3reel, sc4, sc4_state, sc4cfcas, ROT0, "BFM","Casino Crazy Fruits (Bellfruit) (Scorpion 4) (set 6)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4cfcasm ,sc4cfcas, sc4_3reel, sc4, sc4_state, sc4cfcas, ROT0, "BFM","Casino Crazy Fruits (Bellfruit) (Scorpion 4) (set 7)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4cfcasp ,sc4cfcas, sc4_3reel, sc4, sc4_state, sc4cfcas, ROT0, "BFM","Casino Crazy Fruits (Bellfruit) (Scorpion 4) (set 8)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4cfcasq ,sc4cfcas, sc4_3reel, sc4, sc4_state, sc4cfcas, ROT0, "BFM","Casino Crazy Fruits (Bellfruit) (Scorpion 4) (set 9)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4cfcass ,sc4cfcas, sc4_3reel, sc4, sc4_state, sc4cfcas, ROT0, "BFM","Casino Crazy Fruits (Bellfruit) (Scorpion 4) (set 10)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4cfcast ,sc4cfcas, sc4_3reel, sc4, sc4_state, sc4cfcas, ROT0, "BFM","Casino Crazy Fruits (Bellfruit) (Scorpion 4) (set 11)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4cfcasu ,sc4cfcas, sc4_3reel, sc4, sc4_state, sc4cfcas, ROT0, "BFM","Casino Crazy Fruits (Bellfruit) (Scorpion 4) (set 12)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4cfcasv ,sc4cfcas, sc4_3reel, sc4, sc4_state, sc4cfcas, ROT0, "BFM","Casino Crazy Fruits (Bellfruit) (Scorpion 4) (set 13)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4cfcasw ,sc4cfcas, sc4_3reel, sc4, sc4_state, sc4cfcas, ROT0, "BFM","Casino Crazy Fruits (Bellfruit) (Scorpion 4) (set 14)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4cfcasx ,sc4cfcas, sc4_3reel, sc4, sc4_state, sc4cfcas, ROT0, "BFM","Casino Crazy Fruits (Bellfruit) (Scorpion 4) (set 15)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4cfcasy ,sc4cfcas, sc4_3reel, sc4, sc4_state, sc4cfcas, ROT0, "BFM","Casino Crazy Fruits (Bellfruit) (Scorpion 4) (set 16)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4cfcasz ,sc4cfcas, sc4_3reel, sc4, sc4_state, sc4cfcas, ROT0, "BFM","Casino Crazy Fruits (Bellfruit) (Scorpion 4) (set 17)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4cfcas0 ,sc4cfcas, sc4_3reel, sc4, sc4_state, sc4cfcas, ROT0, "BFM","Casino Crazy Fruits (Bellfruit) (Scorpion 4) (set 18)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4cfcas1 ,sc4cfcas, sc4_3reel, sc4, sc4_state, sc4cfcas, ROT0, "BFM","Casino Crazy Fruits (Bellfruit) (Scorpion 4) (set 19)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4cfcas2 ,sc4cfcas, sc4_3reel, sc4, sc4_state, sc4cfcas, ROT0, "BFM","Casino Crazy Fruits (Bellfruit) (Scorpion 4) (set 20)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4cfcas6 ,sc4cfcas, sc4_3reel, sc4, sc4_state, sc4cfcas, ROT0, "BFM","Casino Crazy Fruits (Bellfruit) (Scorpion 4) (set 21)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4cfcas7 ,sc4cfcas, sc4_3reel, sc4, sc4_state, sc4cfcas, ROT0, "BFM","Casino Crazy Fruits (Bellfruit) (Scorpion 4) (set 22)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4cfcas8 ,sc4cfcas, sc4_3reel, sc4, sc4_state, sc4cfcas, ROT0, "BFM","Casino Crazy Fruits (Bellfruit) (Scorpion 4) (set 23)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4cfcasaa ,sc4cfcas, sc4_3reel, sc4, sc4_state, sc4cfcas, ROT0, "BFM","Casino Crazy Fruits (Bellfruit) (Scorpion 4) (set 24)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4cfcasaf ,sc4cfcas, sc4_3reel, sc4, sc4_state, sc4cfcas, ROT0, "BFM","Casino Crazy Fruits (Bellfruit) (Scorpion 4) (set 25)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4cfcasag ,sc4cfcas, sc4_3reel, sc4, sc4_state, sc4cfcas, ROT0, "BFM","Casino Crazy Fruits (Bellfruit) (Scorpion 4) (set 26)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4cfcasah ,sc4cfcas, sc4_3reel, sc4, sc4_state, sc4cfcas, ROT0, "BFM","Casino Crazy Fruits (Bellfruit) (Scorpion 4) (set 27)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4cfcasai ,sc4cfcas, sc4_3reel, sc4, sc4_state, sc4cfcas, ROT0, "BFM","Casino Crazy Fruits (Bellfruit) (Scorpion 4) (set 28)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4cfcasaj ,sc4cfcas, sc4_3reel, sc4, sc4_state, sc4cfcas, ROT0, "BFM","Casino Crazy Fruits (Bellfruit) (Scorpion 4) (set 29)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4cfcasak ,sc4cfcas, sc4_3reel, sc4, sc4_state, sc4cfcas, ROT0, "BFM","Casino Crazy Fruits (Bellfruit) (Scorpion 4) (set 30)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4cfcasal ,sc4cfcas, sc4_3reel, sc4, sc4_state, sc4cfcas, ROT0, "BFM","Casino Crazy Fruits (Bellfruit) (Scorpion 4) (set 31)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4cfcasam ,sc4cfcas, sc4_3reel, sc4, sc4_state, sc4cfcas, ROT0, "BFM","Casino Crazy Fruits (Bellfruit) (Scorpion 4) (set 32)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4cfcas ,0, sc4_3reel, sc4, sc4_state, sc4cfcas, ROT0, "BFM","Casino Crazy Fruits (Bellfruit) (Scorpion 4) (set 1)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4cfcasa ,sc4cfcas, sc4_3reel, sc4, sc4_state, sc4cfcas, ROT0, "BFM","Casino Crazy Fruits (Bellfruit) (Scorpion 4) (set 2)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4cfcasb ,sc4cfcas, sc4_3reel, sc4, sc4_state, sc4cfcas, ROT0, "BFM","Casino Crazy Fruits (Bellfruit) (Scorpion 4) (set 3)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4cfcase ,sc4cfcas, sc4_3reel, sc4, sc4_state, sc4cfcas, ROT0, "BFM","Casino Crazy Fruits (Bellfruit) (Scorpion 4) (set 4)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4cfcasf ,sc4cfcas, sc4_3reel, sc4, sc4_state, sc4cfcas, ROT0, "BFM","Casino Crazy Fruits (Bellfruit) (Scorpion 4) (set 5)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4cfcask ,sc4cfcas, sc4_3reel, sc4, sc4_state, sc4cfcas, ROT0, "BFM","Casino Crazy Fruits (Bellfruit) (Scorpion 4) (set 6)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4cfcasm ,sc4cfcas, sc4_3reel, sc4, sc4_state, sc4cfcas, ROT0, "BFM","Casino Crazy Fruits (Bellfruit) (Scorpion 4) (set 7)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4cfcasp ,sc4cfcas, sc4_3reel, sc4, sc4_state, sc4cfcas, ROT0, "BFM","Casino Crazy Fruits (Bellfruit) (Scorpion 4) (set 8)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4cfcasq ,sc4cfcas, sc4_3reel, sc4, sc4_state, sc4cfcas, ROT0, "BFM","Casino Crazy Fruits (Bellfruit) (Scorpion 4) (set 9)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4cfcass ,sc4cfcas, sc4_3reel, sc4, sc4_state, sc4cfcas, ROT0, "BFM","Casino Crazy Fruits (Bellfruit) (Scorpion 4) (set 10)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4cfcast ,sc4cfcas, sc4_3reel, sc4, sc4_state, sc4cfcas, ROT0, "BFM","Casino Crazy Fruits (Bellfruit) (Scorpion 4) (set 11)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4cfcasu ,sc4cfcas, sc4_3reel, sc4, sc4_state, sc4cfcas, ROT0, "BFM","Casino Crazy Fruits (Bellfruit) (Scorpion 4) (set 12)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4cfcasv ,sc4cfcas, sc4_3reel, sc4, sc4_state, sc4cfcas, ROT0, "BFM","Casino Crazy Fruits (Bellfruit) (Scorpion 4) (set 13)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4cfcasw ,sc4cfcas, sc4_3reel, sc4, sc4_state, sc4cfcas, ROT0, "BFM","Casino Crazy Fruits (Bellfruit) (Scorpion 4) (set 14)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4cfcasx ,sc4cfcas, sc4_3reel, sc4, sc4_state, sc4cfcas, ROT0, "BFM","Casino Crazy Fruits (Bellfruit) (Scorpion 4) (set 15)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4cfcasy ,sc4cfcas, sc4_3reel, sc4, sc4_state, sc4cfcas, ROT0, "BFM","Casino Crazy Fruits (Bellfruit) (Scorpion 4) (set 16)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4cfcasz ,sc4cfcas, sc4_3reel, sc4, sc4_state, sc4cfcas, ROT0, "BFM","Casino Crazy Fruits (Bellfruit) (Scorpion 4) (set 17)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4cfcas0 ,sc4cfcas, sc4_3reel, sc4, sc4_state, sc4cfcas, ROT0, "BFM","Casino Crazy Fruits (Bellfruit) (Scorpion 4) (set 18)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4cfcas1 ,sc4cfcas, sc4_3reel, sc4, sc4_state, sc4cfcas, ROT0, "BFM","Casino Crazy Fruits (Bellfruit) (Scorpion 4) (set 19)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4cfcas2 ,sc4cfcas, sc4_3reel, sc4, sc4_state, sc4cfcas, ROT0, "BFM","Casino Crazy Fruits (Bellfruit) (Scorpion 4) (set 20)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4cfcas6 ,sc4cfcas, sc4_3reel, sc4, sc4_state, sc4cfcas, ROT0, "BFM","Casino Crazy Fruits (Bellfruit) (Scorpion 4) (set 21)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4cfcas7 ,sc4cfcas, sc4_3reel, sc4, sc4_state, sc4cfcas, ROT0, "BFM","Casino Crazy Fruits (Bellfruit) (Scorpion 4) (set 22)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4cfcas8 ,sc4cfcas, sc4_3reel, sc4, sc4_state, sc4cfcas, ROT0, "BFM","Casino Crazy Fruits (Bellfruit) (Scorpion 4) (set 23)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4cfcasaa ,sc4cfcas, sc4_3reel, sc4, sc4_state, sc4cfcas, ROT0, "BFM","Casino Crazy Fruits (Bellfruit) (Scorpion 4) (set 24)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4cfcasaf ,sc4cfcas, sc4_3reel, sc4, sc4_state, sc4cfcas, ROT0, "BFM","Casino Crazy Fruits (Bellfruit) (Scorpion 4) (set 25)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4cfcasag ,sc4cfcas, sc4_3reel, sc4, sc4_state, sc4cfcas, ROT0, "BFM","Casino Crazy Fruits (Bellfruit) (Scorpion 4) (set 26)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4cfcasah ,sc4cfcas, sc4_3reel, sc4, sc4_state, sc4cfcas, ROT0, "BFM","Casino Crazy Fruits (Bellfruit) (Scorpion 4) (set 27)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4cfcasai ,sc4cfcas, sc4_3reel, sc4, sc4_state, sc4cfcas, ROT0, "BFM","Casino Crazy Fruits (Bellfruit) (Scorpion 4) (set 28)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4cfcasaj ,sc4cfcas, sc4_3reel, sc4, sc4_state, sc4cfcas, ROT0, "BFM","Casino Crazy Fruits (Bellfruit) (Scorpion 4) (set 29)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4cfcasak ,sc4cfcas, sc4_3reel, sc4, sc4_state, sc4cfcas, ROT0, "BFM","Casino Crazy Fruits (Bellfruit) (Scorpion 4) (set 30)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4cfcasal ,sc4cfcas, sc4_3reel, sc4, sc4_state, sc4cfcas, ROT0, "BFM","Casino Crazy Fruits (Bellfruit) (Scorpion 4) (set 31)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4cfcasam ,sc4cfcas, sc4_3reel, sc4, sc4_state, sc4cfcas, ROT0, "BFM","Casino Crazy Fruits (Bellfruit) (Scorpion 4) (set 32)", MACHINE_FLAGS, layout_bfm_sc4 )
// OK
-GAMEL( 200?, sc4cfcasr ,sc4cfcas, sc4_3reel, sc4, sc4_state, sc4cfcas_mbus, ROT0, "BFM","Casino Crazy Fruits (ZYPF) (Bellfruit) (Scorpion 4) (set 1)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4cfcasl ,sc4cfcas, sc4_3reel, sc4, sc4_state, sc4cfcas_mbus, ROT0, "BFM","Casino Crazy Fruits (ZYPF) (Bellfruit) (Scorpion 4) (set 2)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4cfcasi ,sc4cfcas, sc4_3reel, sc4, sc4_state, sc4cfcas_mbus, ROT0, "BFM","Casino Crazy Fruits (ZYFR) (Bellfruit) (Scorpion 4) (set 1)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4cfcasj ,sc4cfcas, sc4_3reel, sc4, sc4_state, sc4cfcas_mbus, ROT0, "BFM","Casino Crazy Fruits (ZYFR) (Bellfruit) (Scorpion 4) (set 2)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4cfcasn ,sc4cfcas, sc4_3reel, sc4, sc4_state, sc4cfcas_mbus, ROT0, "BFM","Casino Crazy Fruits (ZYFR) (Bellfruit) (Scorpion 4) (set 3)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4cfcaso ,sc4cfcas, sc4_3reel, sc4, sc4_state, sc4cfcas_mbus, ROT0, "BFM","Casino Crazy Fruits (ZYFR) (Bellfruit) (Scorpion 4) (set 4)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4cfcasr ,sc4cfcas, sc4_3reel, sc4, sc4_state, sc4cfcas_mbus, ROT0, "BFM","Casino Crazy Fruits (ZYPF) (Bellfruit) (Scorpion 4) (set 1)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4cfcasl ,sc4cfcas, sc4_3reel, sc4, sc4_state, sc4cfcas_mbus, ROT0, "BFM","Casino Crazy Fruits (ZYPF) (Bellfruit) (Scorpion 4) (set 2)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4cfcasi ,sc4cfcas, sc4_3reel, sc4, sc4_state, sc4cfcas_mbus, ROT0, "BFM","Casino Crazy Fruits (ZYFR) (Bellfruit) (Scorpion 4) (set 1)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4cfcasj ,sc4cfcas, sc4_3reel, sc4, sc4_state, sc4cfcas_mbus, ROT0, "BFM","Casino Crazy Fruits (ZYFR) (Bellfruit) (Scorpion 4) (set 2)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4cfcasn ,sc4cfcas, sc4_3reel, sc4, sc4_state, sc4cfcas_mbus, ROT0, "BFM","Casino Crazy Fruits (ZYFR) (Bellfruit) (Scorpion 4) (set 3)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4cfcaso ,sc4cfcas, sc4_3reel, sc4, sc4_state, sc4cfcas_mbus, ROT0, "BFM","Casino Crazy Fruits (ZYFR) (Bellfruit) (Scorpion 4) (set 4)", MACHINE_FLAGS, layout_bfm_sc4 )
// PAY UNIT ERR 17
-GAMEL( 200?, sc4cfcasc ,sc4cfcas, sc4_3reel, sc4, sc4_state, sc4cfcas_mbus, ROT0, "BFM","Casino Crazy Fruits (ZYFR) (Bellfruit) (Scorpion 4) (set 5)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4cfcasd ,sc4cfcas, sc4_3reel, sc4, sc4_state, sc4cfcas_mbus, ROT0, "BFM","Casino Crazy Fruits (ZYFR) (Bellfruit) (Scorpion 4) (set 6)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4cfcasg ,sc4cfcas, sc4_3reel, sc4, sc4_state, sc4cfcas_mbus, ROT0, "BFM","Casino Crazy Fruits (ZYFR) (Bellfruit) (Scorpion 4) (set 7)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4cfcash ,sc4cfcas, sc4_3reel, sc4, sc4_state, sc4cfcas_mbus, ROT0, "BFM","Casino Crazy Fruits (ZYFR) (Bellfruit) (Scorpion 4) (set 8)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4cfcas3 ,sc4cfcas, sc4_3reel, sc4, sc4_state, sc4cfcas_mbus, ROT0, "BFM","Casino Crazy Fruits (ZYFR) (Bellfruit) (Scorpion 4) (set 9)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4cfcas9 ,sc4cfcas, sc4_3reel, sc4, sc4_state, sc4cfcas_mbus, ROT0, "BFM","Casino Crazy Fruits (ZYFR) (Bellfruit) (Scorpion 4) (set 10)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4cfcasab ,sc4cfcas, sc4_3reel, sc4, sc4_state, sc4cfcas_mbus, ROT0, "BFM","Casino Crazy Fruits (ZYFR) (Bellfruit) (Scorpion 4) (set 11)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4cfcasac ,sc4cfcas, sc4_3reel, sc4, sc4_state, sc4cfcas_mbus, ROT0, "BFM","Casino Crazy Fruits (ZYFR) (Bellfruit) (Scorpion 4) (set 12)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4cfcas4 ,sc4cfcas, sc4_3reel, sc4, sc4_state, sc4cfcas_mbus, ROT0, "BFM","Casino Crazy Fruits (CCFR) (Bellfruit) (Scorpion 4) (set 1)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4cfcas5 ,sc4cfcas, sc4_3reel, sc4, sc4_state, sc4cfcas_mbus, ROT0, "BFM","Casino Crazy Fruits (CCFR) (Bellfruit) (Scorpion 4) (set 2)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4cfcasad ,sc4cfcas, sc4_3reel, sc4, sc4_state, sc4cfcas_mbus, ROT0, "BFM","Casino Crazy Fruits (CCFR) (Bellfruit) (Scorpion 4) (set 3)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4cfcasae ,sc4cfcas, sc4_3reel, sc4, sc4_state, sc4cfcas_mbus, ROT0, "BFM","Casino Crazy Fruits (CCFR) (Bellfruit) (Scorpion 4) (set 4)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4cfcasc ,sc4cfcas, sc4_3reel, sc4, sc4_state, sc4cfcas_mbus, ROT0, "BFM","Casino Crazy Fruits (ZYFR) (Bellfruit) (Scorpion 4) (set 5)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4cfcasd ,sc4cfcas, sc4_3reel, sc4, sc4_state, sc4cfcas_mbus, ROT0, "BFM","Casino Crazy Fruits (ZYFR) (Bellfruit) (Scorpion 4) (set 6)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4cfcasg ,sc4cfcas, sc4_3reel, sc4, sc4_state, sc4cfcas_mbus, ROT0, "BFM","Casino Crazy Fruits (ZYFR) (Bellfruit) (Scorpion 4) (set 7)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4cfcash ,sc4cfcas, sc4_3reel, sc4, sc4_state, sc4cfcas_mbus, ROT0, "BFM","Casino Crazy Fruits (ZYFR) (Bellfruit) (Scorpion 4) (set 8)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4cfcas3 ,sc4cfcas, sc4_3reel, sc4, sc4_state, sc4cfcas_mbus, ROT0, "BFM","Casino Crazy Fruits (ZYFR) (Bellfruit) (Scorpion 4) (set 9)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4cfcas9 ,sc4cfcas, sc4_3reel, sc4, sc4_state, sc4cfcas_mbus, ROT0, "BFM","Casino Crazy Fruits (ZYFR) (Bellfruit) (Scorpion 4) (set 10)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4cfcasab ,sc4cfcas, sc4_3reel, sc4, sc4_state, sc4cfcas_mbus, ROT0, "BFM","Casino Crazy Fruits (ZYFR) (Bellfruit) (Scorpion 4) (set 11)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4cfcasac ,sc4cfcas, sc4_3reel, sc4, sc4_state, sc4cfcas_mbus, ROT0, "BFM","Casino Crazy Fruits (ZYFR) (Bellfruit) (Scorpion 4) (set 12)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4cfcas4 ,sc4cfcas, sc4_3reel, sc4, sc4_state, sc4cfcas_mbus, ROT0, "BFM","Casino Crazy Fruits (CCFR) (Bellfruit) (Scorpion 4) (set 1)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4cfcas5 ,sc4cfcas, sc4_3reel, sc4, sc4_state, sc4cfcas_mbus, ROT0, "BFM","Casino Crazy Fruits (CCFR) (Bellfruit) (Scorpion 4) (set 2)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4cfcasad ,sc4cfcas, sc4_3reel, sc4, sc4_state, sc4cfcas_mbus, ROT0, "BFM","Casino Crazy Fruits (CCFR) (Bellfruit) (Scorpion 4) (set 3)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4cfcasae ,sc4cfcas, sc4_3reel, sc4, sc4_state, sc4cfcas_mbus, ROT0, "BFM","Casino Crazy Fruits (CCFR) (Bellfruit) (Scorpion 4) (set 4)", MACHINE_FLAGS, layout_bfm_sc4 )
@@ -47870,52 +47872,52 @@ DRIVER_INIT_MEMBER(sc4_state,sc4cfclb)
}
// PR6931 CLUB CRAZY FRUITS PR6931 CRZY SOUNDS11
-GAMEL( 200?, sc4cfclb ,0, sc4_5reel, sc4, sc4_state, sc4cfclb, ROT0, "BFM","Crazy Fruits Club (Bellfruit) (Scorpion 4) (set 1)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4cfclba ,sc4cfclb, sc4_5reel, sc4, sc4_state, sc4cfclb, ROT0, "BFM","Crazy Fruits Club (Bellfruit) (Scorpion 4) (set 2)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4cfclbb ,sc4cfclb, sc4_5reel, sc4, sc4_state, sc4cfclb, ROT0, "BFM","Crazy Fruits Club (Bellfruit) (Scorpion 4) (set 3)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4cfclb ,0, sc4_5reel, sc4, sc4_state, sc4cfclb, ROT0, "BFM","Crazy Fruits Club (Bellfruit) (Scorpion 4) (set 1)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4cfclba ,sc4cfclb, sc4_5reel, sc4, sc4_state, sc4cfclb, ROT0, "BFM","Crazy Fruits Club (Bellfruit) (Scorpion 4) (set 2)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4cfclbb ,sc4cfclb, sc4_5reel, sc4, sc4_state, sc4cfclb, ROT0, "BFM","Crazy Fruits Club (Bellfruit) (Scorpion 4) (set 3)", MACHINE_FLAGS, layout_bfm_sc4 )
// PR7141 CRAZY GANG PR7141 CRAZY GANG SOUNDS11 CRAZY GANG
-GAMEL( 200?, sc4crzgn ,0, sc4, sc4, sc4_state, sc4, ROT0, "BFM","Crazy Gang (Bellfruit) (Scorpion 4) (set 1, Top Box)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 ) // Top Box
-GAMEL( 200?, sc4crzgnb ,sc4crzgn, sc4, sc4, sc4_state, sc4, ROT0, "BFM","Crazy Gang (Bellfruit) (Scorpion 4) (set 2, Top Box)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 ) // Top Box
-GAMEL( 200?, sc4crzgng ,sc4crzgn, sc4, sc4, sc4_state, sc4, ROT0, "BFM","Crazy Gang (Bellfruit) (Scorpion 4) (set 3, Top Box)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 ) // Top Box
-GAMEL( 200?, sc4crzgnj ,sc4crzgn, sc4, sc4, sc4_state, sc4, ROT0, "BFM","Crazy Gang (Bellfruit) (Scorpion 4) (set 4, Top Box)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 ) // Top Box
+GAMEL( 200?, sc4crzgn ,0, sc4, sc4, sc4_state, sc4, ROT0, "BFM","Crazy Gang (Bellfruit) (Scorpion 4) (set 1, Top Box)", MACHINE_FLAGS, layout_bfm_sc4 ) // Top Box
+GAMEL( 200?, sc4crzgnb ,sc4crzgn, sc4, sc4, sc4_state, sc4, ROT0, "BFM","Crazy Gang (Bellfruit) (Scorpion 4) (set 2, Top Box)", MACHINE_FLAGS, layout_bfm_sc4 ) // Top Box
+GAMEL( 200?, sc4crzgng ,sc4crzgn, sc4, sc4, sc4_state, sc4, ROT0, "BFM","Crazy Gang (Bellfruit) (Scorpion 4) (set 3, Top Box)", MACHINE_FLAGS, layout_bfm_sc4 ) // Top Box
+GAMEL( 200?, sc4crzgnj ,sc4crzgn, sc4, sc4, sc4_state, sc4, ROT0, "BFM","Crazy Gang (Bellfruit) (Scorpion 4) (set 4, Top Box)", MACHINE_FLAGS, layout_bfm_sc4 ) // Top Box
// none of these do anything with the reels, probably waiting for the Top Box?
-GAMEL( 200?, sc4crzgna ,sc4crzgn, sc4, sc4, sc4_state, sc4, ROT0, "BFM","Crazy Gang (Bellfruit) (Scorpion 4) (set 1)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4crzgnc ,sc4crzgn, sc4, sc4, sc4_state, sc4, ROT0, "BFM","Crazy Gang (Bellfruit) (Scorpion 4) (set 2)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4crzgnd ,sc4crzgn, sc4, sc4, sc4_state, sc4, ROT0, "BFM","Crazy Gang (Bellfruit) (Scorpion 4) (set 3)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4crzgne ,sc4crzgn, sc4, sc4, sc4_state, sc4, ROT0, "BFM","Crazy Gang (Bellfruit) (Scorpion 4) (set 4)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4crzgnf ,sc4crzgn, sc4, sc4, sc4_state, sc4, ROT0, "BFM","Crazy Gang (Bellfruit) (Scorpion 4) (set 5)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4crzgnh ,sc4crzgn, sc4, sc4, sc4_state, sc4, ROT0, "BFM","Crazy Gang (Bellfruit) (Scorpion 4) (set 6)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4crzgni ,sc4crzgn, sc4, sc4, sc4_state, sc4, ROT0, "BFM","Crazy Gang (Bellfruit) (Scorpion 4) (set 7)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4crzgnk ,sc4crzgn, sc4, sc4, sc4_state, sc4, ROT0, "BFM","Crazy Gang (Bellfruit) (Scorpion 4) (set 8)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4crzgnl ,sc4crzgn, sc4, sc4, sc4_state, sc4, ROT0, "BFM","Crazy Gang (Bellfruit) (Scorpion 4) (set 9)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4crzgnm ,sc4crzgn, sc4, sc4, sc4_state, sc4, ROT0, "BFM","Crazy Gang (Bellfruit) (Scorpion 4) (set 10)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4crzgnn ,sc4crzgn, sc4, sc4, sc4_state, sc4, ROT0, "BFM","Crazy Gang (Bellfruit) (Scorpion 4) (set 11)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4crzgno ,sc4crzgn, sc4, sc4, sc4_state, sc4, ROT0, "BFM","Crazy Gang (Bellfruit) (Scorpion 4) (set 12)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4crzgnp ,sc4crzgn, sc4, sc4, sc4_state, sc4, ROT0, "BFM","Crazy Gang (Bellfruit) (Scorpion 4) (set 13)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4crzgnq ,sc4crzgn, sc4, sc4, sc4_state, sc4, ROT0, "BFM","Crazy Gang (Bellfruit) (Scorpion 4) (set 14)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4crzgnx ,sc4crzgn, sc4, sc4, sc4_state, sc4, ROT0, "BFM","Crazy Gang (Bellfruit) (Scorpion 4) (set 15)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 ) // incomplete pairing
-GAMEL( 200?, sc4crzgny ,sc4crzgn, sc4, sc4, sc4_state, sc4, ROT0, "BFM","Crazy Gang (Bellfruit) (Scorpion 4) (set 16)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4crzgnz ,sc4crzgn, sc4, sc4, sc4_state, sc4, ROT0, "BFM","Crazy Gang (Bellfruit) (Scorpion 4) (set 17)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4crzgn0 ,sc4crzgn, sc4, sc4, sc4_state, sc4, ROT0, "BFM","Crazy Gang (Bellfruit) (Scorpion 4) (set 18)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4crzgn1 ,sc4crzgn, sc4, sc4, sc4_state, sc4, ROT0, "BFM","Crazy Gang (Bellfruit) (Scorpion 4) (set 19)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4crzgn2 ,sc4crzgn, sc4, sc4, sc4_state, sc4, ROT0, "BFM","Crazy Gang (Bellfruit) (Scorpion 4) (set 20)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4crzgna ,sc4crzgn, sc4, sc4, sc4_state, sc4, ROT0, "BFM","Crazy Gang (Bellfruit) (Scorpion 4) (set 1)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4crzgnc ,sc4crzgn, sc4, sc4, sc4_state, sc4, ROT0, "BFM","Crazy Gang (Bellfruit) (Scorpion 4) (set 2)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4crzgnd ,sc4crzgn, sc4, sc4, sc4_state, sc4, ROT0, "BFM","Crazy Gang (Bellfruit) (Scorpion 4) (set 3)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4crzgne ,sc4crzgn, sc4, sc4, sc4_state, sc4, ROT0, "BFM","Crazy Gang (Bellfruit) (Scorpion 4) (set 4)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4crzgnf ,sc4crzgn, sc4, sc4, sc4_state, sc4, ROT0, "BFM","Crazy Gang (Bellfruit) (Scorpion 4) (set 5)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4crzgnh ,sc4crzgn, sc4, sc4, sc4_state, sc4, ROT0, "BFM","Crazy Gang (Bellfruit) (Scorpion 4) (set 6)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4crzgni ,sc4crzgn, sc4, sc4, sc4_state, sc4, ROT0, "BFM","Crazy Gang (Bellfruit) (Scorpion 4) (set 7)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4crzgnk ,sc4crzgn, sc4, sc4, sc4_state, sc4, ROT0, "BFM","Crazy Gang (Bellfruit) (Scorpion 4) (set 8)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4crzgnl ,sc4crzgn, sc4, sc4, sc4_state, sc4, ROT0, "BFM","Crazy Gang (Bellfruit) (Scorpion 4) (set 9)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4crzgnm ,sc4crzgn, sc4, sc4, sc4_state, sc4, ROT0, "BFM","Crazy Gang (Bellfruit) (Scorpion 4) (set 10)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4crzgnn ,sc4crzgn, sc4, sc4, sc4_state, sc4, ROT0, "BFM","Crazy Gang (Bellfruit) (Scorpion 4) (set 11)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4crzgno ,sc4crzgn, sc4, sc4, sc4_state, sc4, ROT0, "BFM","Crazy Gang (Bellfruit) (Scorpion 4) (set 12)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4crzgnp ,sc4crzgn, sc4, sc4, sc4_state, sc4, ROT0, "BFM","Crazy Gang (Bellfruit) (Scorpion 4) (set 13)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4crzgnq ,sc4crzgn, sc4, sc4, sc4_state, sc4, ROT0, "BFM","Crazy Gang (Bellfruit) (Scorpion 4) (set 14)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4crzgnx ,sc4crzgn, sc4, sc4, sc4_state, sc4, ROT0, "BFM","Crazy Gang (Bellfruit) (Scorpion 4) (set 15)", MACHINE_FLAGS, layout_bfm_sc4 ) // incomplete pairing
+GAMEL( 200?, sc4crzgny ,sc4crzgn, sc4, sc4, sc4_state, sc4, ROT0, "BFM","Crazy Gang (Bellfruit) (Scorpion 4) (set 16)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4crzgnz ,sc4crzgn, sc4, sc4, sc4_state, sc4, ROT0, "BFM","Crazy Gang (Bellfruit) (Scorpion 4) (set 17)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4crzgn0 ,sc4crzgn, sc4, sc4, sc4_state, sc4, ROT0, "BFM","Crazy Gang (Bellfruit) (Scorpion 4) (set 18)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4crzgn1 ,sc4crzgn, sc4, sc4, sc4_state, sc4, ROT0, "BFM","Crazy Gang (Bellfruit) (Scorpion 4) (set 19)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4crzgn2 ,sc4crzgn, sc4, sc4, sc4_state, sc4, ROT0, "BFM","Crazy Gang (Bellfruit) (Scorpion 4) (set 20)", MACHINE_FLAGS, layout_bfm_sc4 )
// NUMBER PR7141 CRAZY GANG PR7141 CRAZY GANG SOUNDS11 CRAZY GANG ARCADE
-GAMEL( 200?, sc4crzgnr ,sc4crzgn, sc4, sc4, sc4_state, sc4, ROT0, "BFM","Crazy Gang Arcade (Bellfruit) (Scorpion 4) (set 1)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4crzgns ,sc4crzgn, sc4, sc4, sc4_state, sc4, ROT0, "BFM","Crazy Gang Arcade (Bellfruit) (Scorpion 4) (set 2)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4crzgnt ,sc4crzgn, sc4, sc4, sc4_state, sc4, ROT0, "BFM","Crazy Gang Arcade (Bellfruit) (Scorpion 4) (set 3)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4crzgnu ,sc4crzgn, sc4, sc4, sc4_state, sc4, ROT0, "BFM","Crazy Gang Arcade (Bellfruit) (Scorpion 4) (set 4)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4crzgnv ,sc4crzgn, sc4, sc4, sc4_state, sc4, ROT0, "BFM","Crazy Gang Arcade (Bellfruit) (Scorpion 4) (set 5)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4crzgnw ,sc4crzgn, sc4, sc4, sc4_state, sc4, ROT0, "BFM","Crazy Gang Arcade (Bellfruit) (Scorpion 4) (set 6)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4crzgn3 ,sc4crzgn, sc4, sc4, sc4_state, sc4, ROT0, "BFM","Crazy Gang Arcade (Bellfruit) (Scorpion 4) (set 7)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4crzgn4 ,sc4crzgn, sc4, sc4, sc4_state, sc4, ROT0, "BFM","Crazy Gang Arcade (Bellfruit) (Scorpion 4) (set 8)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4crzgn5 ,sc4crzgn, sc4, sc4, sc4_state, sc4, ROT0, "BFM","Crazy Gang Arcade (Bellfruit) (Scorpion 4) (set 9)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4crzgn6 ,sc4crzgn, sc4, sc4, sc4_state, sc4, ROT0, "BFM","Crazy Gang Arcade (Bellfruit) (Scorpion 4) (set 10)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4crzgn7 ,sc4crzgn, sc4, sc4, sc4_state, sc4, ROT0, "BFM","Crazy Gang Arcade (Bellfruit) (Scorpion 4) (set 11)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4crzgn8 ,sc4crzgn, sc4, sc4, sc4_state, sc4, ROT0, "BFM","Crazy Gang Arcade (Bellfruit) (Scorpion 4) (set 12)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4crzgnr ,sc4crzgn, sc4, sc4, sc4_state, sc4, ROT0, "BFM","Crazy Gang Arcade (Bellfruit) (Scorpion 4) (set 1)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4crzgns ,sc4crzgn, sc4, sc4, sc4_state, sc4, ROT0, "BFM","Crazy Gang Arcade (Bellfruit) (Scorpion 4) (set 2)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4crzgnt ,sc4crzgn, sc4, sc4, sc4_state, sc4, ROT0, "BFM","Crazy Gang Arcade (Bellfruit) (Scorpion 4) (set 3)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4crzgnu ,sc4crzgn, sc4, sc4, sc4_state, sc4, ROT0, "BFM","Crazy Gang Arcade (Bellfruit) (Scorpion 4) (set 4)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4crzgnv ,sc4crzgn, sc4, sc4, sc4_state, sc4, ROT0, "BFM","Crazy Gang Arcade (Bellfruit) (Scorpion 4) (set 5)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4crzgnw ,sc4crzgn, sc4, sc4, sc4_state, sc4, ROT0, "BFM","Crazy Gang Arcade (Bellfruit) (Scorpion 4) (set 6)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4crzgn3 ,sc4crzgn, sc4, sc4, sc4_state, sc4, ROT0, "BFM","Crazy Gang Arcade (Bellfruit) (Scorpion 4) (set 7)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4crzgn4 ,sc4crzgn, sc4, sc4, sc4_state, sc4, ROT0, "BFM","Crazy Gang Arcade (Bellfruit) (Scorpion 4) (set 8)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4crzgn5 ,sc4crzgn, sc4, sc4, sc4_state, sc4, ROT0, "BFM","Crazy Gang Arcade (Bellfruit) (Scorpion 4) (set 9)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4crzgn6 ,sc4crzgn, sc4, sc4, sc4_state, sc4, ROT0, "BFM","Crazy Gang Arcade (Bellfruit) (Scorpion 4) (set 10)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4crzgn7 ,sc4crzgn, sc4, sc4, sc4_state, sc4, ROT0, "BFM","Crazy Gang Arcade (Bellfruit) (Scorpion 4) (set 11)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4crzgn8 ,sc4crzgn, sc4, sc4, sc4_state, sc4, ROT0, "BFM","Crazy Gang Arcade (Bellfruit) (Scorpion 4) (set 12)", MACHINE_FLAGS, layout_bfm_sc4 )
@@ -47927,12 +47929,12 @@ DRIVER_INIT_MEMBER(sc4_state,sc4cccsh)
// SWP, different buttons to most games, no reels
// PR7023 CRISS CROSS CASH CCC SOUNDS
-GAMEL( 200?, sc4cccsh ,0, sc4_no_reels, sc4, sc4_state, sc4cccsh, ROT0, "Mazooma","Criss Cross Cash (Mazooma) (Scorpion 4) (set 1)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4cccsha ,sc4cccsh, sc4_no_reels, sc4, sc4_state, sc4cccsh, ROT0, "Mazooma","Criss Cross Cash (Mazooma) (Scorpion 4) (set 2)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4cccshb ,sc4cccsh, sc4_no_reels, sc4, sc4_state, sc4cccsh, ROT0, "Mazooma","Criss Cross Cash (Mazooma) (Scorpion 4) (set 3)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4cccshc ,sc4cccsh, sc4_no_reels, sc4, sc4_state, sc4cccsh, ROT0, "Mazooma","Criss Cross Cash (Mazooma) (Scorpion 4) (set 4)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4cccshd ,sc4cccsh, sc4_no_reels, sc4, sc4_state, sc4cccsh, ROT0, "Mazooma","Criss Cross Cash (Mazooma) (Scorpion 4) (set 5)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4cccshe ,sc4cccsh, sc4_no_reels, sc4, sc4_state, sc4cccsh, ROT0, "Mazooma","Criss Cross Cash (Mazooma) (Scorpion 4) (set 6)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4cccsh ,0, sc4_no_reels, sc4, sc4_state, sc4cccsh, ROT0, "Mazooma","Criss Cross Cash (Mazooma) (Scorpion 4) (set 1)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4cccsha ,sc4cccsh, sc4_no_reels, sc4, sc4_state, sc4cccsh, ROT0, "Mazooma","Criss Cross Cash (Mazooma) (Scorpion 4) (set 2)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4cccshb ,sc4cccsh, sc4_no_reels, sc4, sc4_state, sc4cccsh, ROT0, "Mazooma","Criss Cross Cash (Mazooma) (Scorpion 4) (set 3)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4cccshc ,sc4cccsh, sc4_no_reels, sc4, sc4_state, sc4cccsh, ROT0, "Mazooma","Criss Cross Cash (Mazooma) (Scorpion 4) (set 4)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4cccshd ,sc4cccsh, sc4_no_reels, sc4, sc4_state, sc4cccsh, ROT0, "Mazooma","Criss Cross Cash (Mazooma) (Scorpion 4) (set 5)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4cccshe ,sc4cccsh, sc4_no_reels, sc4, sc4_state, sc4cccsh, ROT0, "Mazooma","Criss Cross Cash (Mazooma) (Scorpion 4) (set 6)", MACHINE_FLAGS, layout_bfm_sc4 )
DRIVER_INIT_MEMBER(sc4_state,sc4daylt)
@@ -47943,21 +47945,21 @@ DRIVER_INIT_MEMBER(sc4_state,sc4daylt)
// PR6801 DAYLIGHT ROBBERY PR6801 DAYLIGHT SOUNDS
-GAMEL( 200?, sc4daylt ,0, sc4_4reel_200, sc4, sc4_state, sc4daylt, ROT0, "BFM","Daylight Robbery (Bellfruit) (Scorpion 4) (set 1)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4daylta ,sc4daylt, sc4_4reel_200, sc4, sc4_state, sc4daylt, ROT0, "BFM","Daylight Robbery (Bellfruit) (Scorpion 4) (set 2)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4dayltb ,sc4daylt, sc4_4reel_200, sc4, sc4_state, sc4daylt, ROT0, "BFM","Daylight Robbery (Bellfruit) (Scorpion 4) (set 3)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4dayltc ,sc4daylt, sc4_4reel_200, sc4, sc4_state, sc4daylt, ROT0, "BFM","Daylight Robbery (Bellfruit) (Scorpion 4) (set 4)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4dayltg ,sc4daylt, sc4_4reel_200, sc4, sc4_state, sc4daylt, ROT0, "BFM","Daylight Robbery (Bellfruit) (Scorpion 4) (set 5)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4daylth ,sc4daylt, sc4_4reel_200, sc4, sc4_state, sc4daylt, ROT0, "BFM","Daylight Robbery (Bellfruit) (Scorpion 4) (set 6)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4daylti ,sc4daylt, sc4_4reel_200, sc4, sc4_state, sc4daylt, ROT0, "BFM","Daylight Robbery (Bellfruit) (Scorpion 4) (set 7)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4dayltj ,sc4daylt, sc4_4reel_200, sc4, sc4_state, sc4daylt, ROT0, "BFM","Daylight Robbery (Bellfruit) (Scorpion 4) (set 8)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4daylt ,0, sc4_4reel_200, sc4, sc4_state, sc4daylt, ROT0, "BFM","Daylight Robbery (Bellfruit) (Scorpion 4) (set 1)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4daylta ,sc4daylt, sc4_4reel_200, sc4, sc4_state, sc4daylt, ROT0, "BFM","Daylight Robbery (Bellfruit) (Scorpion 4) (set 2)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4dayltb ,sc4daylt, sc4_4reel_200, sc4, sc4_state, sc4daylt, ROT0, "BFM","Daylight Robbery (Bellfruit) (Scorpion 4) (set 3)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4dayltc ,sc4daylt, sc4_4reel_200, sc4, sc4_state, sc4daylt, ROT0, "BFM","Daylight Robbery (Bellfruit) (Scorpion 4) (set 4)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4dayltg ,sc4daylt, sc4_4reel_200, sc4, sc4_state, sc4daylt, ROT0, "BFM","Daylight Robbery (Bellfruit) (Scorpion 4) (set 5)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4daylth ,sc4daylt, sc4_4reel_200, sc4, sc4_state, sc4daylt, ROT0, "BFM","Daylight Robbery (Bellfruit) (Scorpion 4) (set 6)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4daylti ,sc4daylt, sc4_4reel_200, sc4, sc4_state, sc4daylt, ROT0, "BFM","Daylight Robbery (Bellfruit) (Scorpion 4) (set 7)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4dayltj ,sc4daylt, sc4_4reel_200, sc4, sc4_state, sc4daylt, ROT0, "BFM","Daylight Robbery (Bellfruit) (Scorpion 4) (set 8)", MACHINE_FLAGS, layout_bfm_sc4 )
// PR4601 DAYLIGHT ROBBERY SP98 PR6801 DAYLIGHT SOUNDS
-GAMEL( 200?, sc4dayltd ,sc4daylt, sc4_4reel_200, sc4, sc4_state, sc4daylt, ROT0, "BFM","Daylight Robbery SP98 (Bellfruit) (Scorpion 4) (set 1)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4daylte ,sc4daylt, sc4_4reel_200, sc4, sc4_state, sc4daylt, ROT0, "BFM","Daylight Robbery SP98 (Bellfruit) (Scorpion 4) (set 2)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4dayltf ,sc4daylt, sc4_4reel_200, sc4, sc4_state, sc4daylt, ROT0, "BFM","Daylight Robbery SP98 (Bellfruit) (Scorpion 4) (set 3)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4dayltk ,sc4daylt, sc4_4reel_200, sc4, sc4_state, sc4daylt, ROT0, "BFM","Daylight Robbery SP98 (Bellfruit) (Scorpion 4) (set 4)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4dayltl ,sc4daylt, sc4_4reel_200, sc4, sc4_state, sc4daylt, ROT0, "BFM","Daylight Robbery SP98 (Bellfruit) (Scorpion 4) (set 5)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4dayltm ,sc4daylt, sc4_4reel_200, sc4, sc4_state, sc4daylt, ROT0, "BFM","Daylight Robbery SP98 (Bellfruit) (Scorpion 4) (set 6)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4dayltd ,sc4daylt, sc4_4reel_200, sc4, sc4_state, sc4daylt, ROT0, "BFM","Daylight Robbery SP98 (Bellfruit) (Scorpion 4) (set 1)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4daylte ,sc4daylt, sc4_4reel_200, sc4, sc4_state, sc4daylt, ROT0, "BFM","Daylight Robbery SP98 (Bellfruit) (Scorpion 4) (set 2)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4dayltf ,sc4daylt, sc4_4reel_200, sc4, sc4_state, sc4daylt, ROT0, "BFM","Daylight Robbery SP98 (Bellfruit) (Scorpion 4) (set 3)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4dayltk ,sc4daylt, sc4_4reel_200, sc4, sc4_state, sc4daylt, ROT0, "BFM","Daylight Robbery SP98 (Bellfruit) (Scorpion 4) (set 4)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4dayltl ,sc4daylt, sc4_4reel_200, sc4, sc4_state, sc4daylt, ROT0, "BFM","Daylight Robbery SP98 (Bellfruit) (Scorpion 4) (set 5)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4dayltm ,sc4daylt, sc4_4reel_200, sc4, sc4_state, sc4daylt, ROT0, "BFM","Daylight Robbery SP98 (Bellfruit) (Scorpion 4) (set 6)", MACHINE_FLAGS, layout_bfm_sc4 )
@@ -47968,11 +47970,11 @@ DRIVER_INIT_MEMBER(sc4_state,sc4disco)
}
// PR7048 DISCO INFERNO DISCO SOUNDS DISCO INFERNO
-GAMEL( 200?, sc4disco ,0, sc4_200_4r, sc4, sc4_state, sc4disco, ROT0, "Mazooma","Disco Inferno (Mazooma) (Scorpion 4) (set 1)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4discob ,sc4disco, sc4_200_4r, sc4, sc4_state, sc4disco, ROT0, "Mazooma","Disco Inferno (Mazooma) (Scorpion 4) (set 2)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4discoa ,sc4disco, sc4_200_4r, sc4, sc4_state, sc4disco, ROT0, "Mazooma","Disco Inferno (Mazooma) (Scorpion 4) (set 3)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4discoc ,sc4disco, sc4_200_4r, sc4, sc4_state, sc4disco, ROT0, "Mazooma","Disco Inferno (Mazooma) (Scorpion 4) (set 4)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4discod ,sc4disco, sc4_200_4r, sc4, sc4_state, sc4disco, ROT0, "Mazooma","Disco Inferno (Mazooma) (Scorpion 4) (set 5)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4disco ,0, sc4_200_4r, sc4, sc4_state, sc4disco, ROT0, "Mazooma","Disco Inferno (Mazooma) (Scorpion 4) (set 1)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4discob ,sc4disco, sc4_200_4r, sc4, sc4_state, sc4disco, ROT0, "Mazooma","Disco Inferno (Mazooma) (Scorpion 4) (set 2)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4discoa ,sc4disco, sc4_200_4r, sc4, sc4_state, sc4disco, ROT0, "Mazooma","Disco Inferno (Mazooma) (Scorpion 4) (set 3)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4discoc ,sc4disco, sc4_200_4r, sc4, sc4_state, sc4disco, ROT0, "Mazooma","Disco Inferno (Mazooma) (Scorpion 4) (set 4)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4discod ,sc4disco, sc4_200_4r, sc4, sc4_state, sc4disco, ROT0, "Mazooma","Disco Inferno (Mazooma) (Scorpion 4) (set 5)", MACHINE_FLAGS, layout_bfm_sc4 )
@@ -47983,9 +47985,9 @@ DRIVER_INIT_MEMBER(sc4_state,sc4sstep)
// SUPER STEP..........................................................................................SUPERSTEPSND. (non-standard header)
-GAMEL( 200?, sc4sstep ,0, sc4, sc4, sc4_state, sc4sstep, ROT0, "Qps","Super Step (Qps) (Scorpion 4) (set 1)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 ) // Dough & Arrow clone? Super Step in header
-GAMEL( 200?, sc4sstepa ,sc4sstep, sc4, sc4, sc4_state, sc4sstep, ROT0, "Qps","Super Step (Qps) (Scorpion 4) (set 2)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 ) // Dough & Arrow clone? Super Step in header
-GAMEL( 200?, sc4sstepb ,sc4sstep, sc4, sc4, sc4_state, sc4sstep, ROT0, "Qps / 21 Casino","Super Step (Qps / 21 Casino) (Scorpion 4)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 ) // This one contains 21-Casino and Super Step strings
+GAMEL( 200?, sc4sstep ,0, sc4, sc4, sc4_state, sc4sstep, ROT0, "Qps","Super Step (Qps) (Scorpion 4) (set 1)", MACHINE_FLAGS, layout_bfm_sc4 ) // Dough & Arrow clone? Super Step in header
+GAMEL( 200?, sc4sstepa ,sc4sstep, sc4, sc4, sc4_state, sc4sstep, ROT0, "Qps","Super Step (Qps) (Scorpion 4) (set 2)", MACHINE_FLAGS, layout_bfm_sc4 ) // Dough & Arrow clone? Super Step in header
+GAMEL( 200?, sc4sstepb ,sc4sstep, sc4, sc4, sc4_state, sc4sstep, ROT0, "Qps / 21 Casino","Super Step (Qps / 21 Casino) (Scorpion 4)", MACHINE_FLAGS, layout_bfm_sc4 ) // This one contains 21-Casino and Super Step strings
@@ -47995,19 +47997,19 @@ DRIVER_INIT_MEMBER(sc4_state,sc4fpitc)
}
// PR7119 FEVER_PITCH PR7119 FEVER PITCH SOUNDS11
-GAMEL( 200?, sc4fpitc ,0, sc4_4reel, sc4, sc4_state, sc4fpitc, ROT0, "BFM","Fever Pitch (Bellfruit) (Scorpion 4) (set 1)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4fpitca ,sc4fpitc, sc4_4reel, sc4, sc4_state, sc4fpitc, ROT0, "BFM","Fever Pitch (Bellfruit) (Scorpion 4) (set 2)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4fpitcb ,sc4fpitc, sc4_4reel, sc4, sc4_state, sc4fpitc, ROT0, "BFM","Fever Pitch (Bellfruit) (Scorpion 4) (set 3)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4fpitcd ,sc4fpitc, sc4_4reel, sc4, sc4_state, sc4fpitc, ROT0, "BFM","Fever Pitch (Bellfruit) (Scorpion 4) (set 4)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4fpitce ,sc4fpitc, sc4_4reel, sc4, sc4_state, sc4fpitc, ROT0, "BFM","Fever Pitch (Bellfruit) (Scorpion 4) (set 5)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4fpitcf ,sc4fpitc, sc4_4reel, sc4, sc4_state, sc4fpitc, ROT0, "BFM","Fever Pitch (Bellfruit) (Scorpion 4) (set 6)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4fpitch ,sc4fpitc, sc4_4reel, sc4, sc4_state, sc4fpitc, ROT0, "BFM","Fever Pitch (Bellfruit) (Scorpion 4) (set 7)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4fpitci ,sc4fpitc, sc4_4reel, sc4, sc4_state, sc4fpitc, ROT0, "BFM","Fever Pitch (Bellfruit) (Scorpion 4) (set 8)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4fpitcj ,sc4fpitc, sc4_4reel, sc4, sc4_state, sc4fpitc, ROT0, "BFM","Fever Pitch (Bellfruit) (Scorpion 4) (set 9)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4fpitck ,sc4fpitc, sc4_4reel, sc4, sc4_state, sc4fpitc, ROT0, "BFM","Fever Pitch (Bellfruit) (Scorpion 4) (set 10)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4fpitc ,0, sc4_4reel, sc4, sc4_state, sc4fpitc, ROT0, "BFM","Fever Pitch (Bellfruit) (Scorpion 4) (set 1)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4fpitca ,sc4fpitc, sc4_4reel, sc4, sc4_state, sc4fpitc, ROT0, "BFM","Fever Pitch (Bellfruit) (Scorpion 4) (set 2)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4fpitcb ,sc4fpitc, sc4_4reel, sc4, sc4_state, sc4fpitc, ROT0, "BFM","Fever Pitch (Bellfruit) (Scorpion 4) (set 3)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4fpitcd ,sc4fpitc, sc4_4reel, sc4, sc4_state, sc4fpitc, ROT0, "BFM","Fever Pitch (Bellfruit) (Scorpion 4) (set 4)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4fpitce ,sc4fpitc, sc4_4reel, sc4, sc4_state, sc4fpitc, ROT0, "BFM","Fever Pitch (Bellfruit) (Scorpion 4) (set 5)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4fpitcf ,sc4fpitc, sc4_4reel, sc4, sc4_state, sc4fpitc, ROT0, "BFM","Fever Pitch (Bellfruit) (Scorpion 4) (set 6)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4fpitch ,sc4fpitc, sc4_4reel, sc4, sc4_state, sc4fpitc, ROT0, "BFM","Fever Pitch (Bellfruit) (Scorpion 4) (set 7)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4fpitci ,sc4fpitc, sc4_4reel, sc4, sc4_state, sc4fpitc, ROT0, "BFM","Fever Pitch (Bellfruit) (Scorpion 4) (set 8)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4fpitcj ,sc4fpitc, sc4_4reel, sc4, sc4_state, sc4fpitc, ROT0, "BFM","Fever Pitch (Bellfruit) (Scorpion 4) (set 9)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4fpitck ,sc4fpitc, sc4_4reel, sc4, sc4_state, sc4fpitc, ROT0, "BFM","Fever Pitch (Bellfruit) (Scorpion 4) (set 10)", MACHINE_FLAGS, layout_bfm_sc4 )
// these 2 fail to show anything
-GAMEL( 200?, sc4fpitcc ,sc4fpitc, sc4_4reel, sc4, sc4_state, sc4fpitc, ROT0, "BFM","Fever Pitch (Bellfruit) (Scorpion 4) (set 11)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4fpitcg ,sc4fpitc, sc4_4reel, sc4, sc4_state, sc4fpitc, ROT0, "BFM","Fever Pitch (Bellfruit) (Scorpion 4) (set 12)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4fpitcc ,sc4fpitc, sc4_4reel, sc4, sc4_state, sc4fpitc, ROT0, "BFM","Fever Pitch (Bellfruit) (Scorpion 4) (set 11)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4fpitcg ,sc4fpitc, sc4_4reel, sc4, sc4_state, sc4fpitc, ROT0, "BFM","Fever Pitch (Bellfruit) (Scorpion 4) (set 12)", MACHINE_FLAGS, layout_bfm_sc4 )
@@ -48018,10 +48020,10 @@ DRIVER_INIT_MEMBER(sc4_state,sc4fcc)
}
// PR6835 FIRE CRACKER PR6835 FIRE SOUNDS11
-GAMEL( 200?, sc4fcc ,0, sc4dmd, sc4, sc4_state, sc4fcc, ROT0, "BFM","Firecracker Club (Bellfruit) (Scorpion 4) (set 1)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_sc4_dmd )
-GAMEL( 200?, sc4fcca ,sc4fcc, sc4dmd, sc4, sc4_state, sc4fcc, ROT0, "BFM","Firecracker Club (Bellfruit) (Scorpion 4) (set 2)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_sc4_dmd )
-GAMEL( 200?, sc4fccb ,sc4fcc, sc4dmd, sc4, sc4_state, sc4fcc, ROT0, "BFM","Firecracker Club (Bellfruit) (Scorpion 4) (set 3)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_sc4_dmd )
-GAMEL( 200?, sc4fccc ,sc4fcc, sc4dmd, sc4, sc4_state, sc4fcc, ROT0, "BFM","Firecracker Club (Bellfruit) (Scorpion 4) (set 4)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_sc4_dmd )
+GAMEL( 200?, sc4fcc ,0, sc4dmd, sc4, sc4_state, sc4fcc, ROT0, "BFM","Firecracker Club (Bellfruit) (Scorpion 4) (set 1)", MACHINE_FLAGS, layout_sc4_dmd )
+GAMEL( 200?, sc4fcca ,sc4fcc, sc4dmd, sc4, sc4_state, sc4fcc, ROT0, "BFM","Firecracker Club (Bellfruit) (Scorpion 4) (set 2)", MACHINE_FLAGS, layout_sc4_dmd )
+GAMEL( 200?, sc4fccb ,sc4fcc, sc4dmd, sc4, sc4_state, sc4fcc, ROT0, "BFM","Firecracker Club (Bellfruit) (Scorpion 4) (set 3)", MACHINE_FLAGS, layout_sc4_dmd )
+GAMEL( 200?, sc4fccc ,sc4fcc, sc4dmd, sc4, sc4_state, sc4fcc, ROT0, "BFM","Firecracker Club (Bellfruit) (Scorpion 4) (set 4)", MACHINE_FLAGS, layout_sc4_dmd )
@@ -48033,13 +48035,13 @@ DRIVER_INIT_MEMBER(sc4_state,sc4fwp)
// PR2016 WAYSPAYS PR2016,5WAYSPAYS, FWAY SOUNDS 5 WAYS PAYS
-GAMEL( 200?, sc4fwp ,0, sc4_4reel, sc4, sc4_state, sc4fwp, ROT0, "Mazooma","Five Ways Pays (Mazooma) (Scorpion 4) (set 1)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4fwpa ,sc4fwp, sc4_4reel, sc4, sc4_state, sc4fwp, ROT0, "Mazooma","Five Ways Pays (Mazooma) (Scorpion 4) (set 2)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4fwpb ,sc4fwp, sc4_4reel, sc4, sc4_state, sc4fwp, ROT0, "Mazooma","Five Ways Pays (Mazooma) (Scorpion 4) (set 3)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4fwpc ,sc4fwp, sc4_4reel, sc4, sc4_state, sc4fwp, ROT0, "Mazooma","Five Ways Pays (Mazooma) (Scorpion 4) (set 4)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4fwpcs ,sc4fwp, sc4_4reel, sc4, sc4_state, sc4fwp, ROT0, "Mazooma","Five Ways Pays (Mazooma) (Scorpion 4) (set 5)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 ) // marked as 'casino'
-GAMEL( 200?, sc4fwpcsa ,sc4fwp, sc4_4reel, sc4, sc4_state, sc4fwp, ROT0, "Mazooma","Five Ways Pays (Mazooma) (Scorpion 4) (set 6)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4fwpcsb ,sc4fwp, sc4_4reel, sc4, sc4_state, sc4fwp, ROT0, "Mazooma","Five Ways Pays (Mazooma) (Scorpion 4) (set 7)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4fwp ,0, sc4_4reel, sc4, sc4_state, sc4fwp, ROT0, "Mazooma","Five Ways Pays (Mazooma) (Scorpion 4) (set 1)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4fwpa ,sc4fwp, sc4_4reel, sc4, sc4_state, sc4fwp, ROT0, "Mazooma","Five Ways Pays (Mazooma) (Scorpion 4) (set 2)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4fwpb ,sc4fwp, sc4_4reel, sc4, sc4_state, sc4fwp, ROT0, "Mazooma","Five Ways Pays (Mazooma) (Scorpion 4) (set 3)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4fwpc ,sc4fwp, sc4_4reel, sc4, sc4_state, sc4fwp, ROT0, "Mazooma","Five Ways Pays (Mazooma) (Scorpion 4) (set 4)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4fwpcs ,sc4fwp, sc4_4reel, sc4, sc4_state, sc4fwp, ROT0, "Mazooma","Five Ways Pays (Mazooma) (Scorpion 4) (set 5)", MACHINE_FLAGS, layout_bfm_sc4 ) // marked as 'casino'
+GAMEL( 200?, sc4fwpcsa ,sc4fwp, sc4_4reel, sc4, sc4_state, sc4fwp, ROT0, "Mazooma","Five Ways Pays (Mazooma) (Scorpion 4) (set 6)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4fwpcsb ,sc4fwp, sc4_4reel, sc4, sc4_state, sc4fwp, ROT0, "Mazooma","Five Ways Pays (Mazooma) (Scorpion 4) (set 7)", MACHINE_FLAGS, layout_bfm_sc4 )
@@ -48051,17 +48053,17 @@ DRIVER_INIT_MEMBER(sc4_state,sc4fd7th)
// PR6804 FRANKIE DETTORI PR6804 FRANKIE SOUNDS
-GAMEL( 200?, sc4fd7th ,0, sc4_4reel, sc4, sc4_state, sc4fd7th, ROT0, "BFM","Frankie Dettori's 7th Heaven (Bellfruit) (Scorpion 4) (set 1)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4fd7tha ,sc4fd7th, sc4_4reel, sc4, sc4_state, sc4fd7th, ROT0, "BFM","Frankie Dettori's 7th Heaven (Bellfruit) (Scorpion 4) (set 2)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4fd7thb ,sc4fd7th, sc4_4reel, sc4, sc4_state, sc4fd7th, ROT0, "BFM","Frankie Dettori's 7th Heaven (Bellfruit) (Scorpion 4) (set 3)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4fd7the ,sc4fd7th, sc4_4reel, sc4, sc4_state, sc4fd7th, ROT0, "BFM","Frankie Dettori's 7th Heaven (Bellfruit) (Scorpion 4) (set 4)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4fd7thf ,sc4fd7th, sc4_4reel, sc4, sc4_state, sc4fd7th, ROT0, "BFM","Frankie Dettori's 7th Heaven (Bellfruit) (Scorpion 4) (set 5)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4fd7thg ,sc4fd7th, sc4_4reel, sc4, sc4_state, sc4fd7th, ROT0, "BFM","Frankie Dettori's 7th Heaven (Bellfruit) (Scorpion 4) (set 6)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4fd7th ,0, sc4_4reel, sc4, sc4_state, sc4fd7th, ROT0, "BFM","Frankie Dettori's 7th Heaven (Bellfruit) (Scorpion 4) (set 1)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4fd7tha ,sc4fd7th, sc4_4reel, sc4, sc4_state, sc4fd7th, ROT0, "BFM","Frankie Dettori's 7th Heaven (Bellfruit) (Scorpion 4) (set 2)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4fd7thb ,sc4fd7th, sc4_4reel, sc4, sc4_state, sc4fd7th, ROT0, "BFM","Frankie Dettori's 7th Heaven (Bellfruit) (Scorpion 4) (set 3)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4fd7the ,sc4fd7th, sc4_4reel, sc4, sc4_state, sc4fd7th, ROT0, "BFM","Frankie Dettori's 7th Heaven (Bellfruit) (Scorpion 4) (set 4)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4fd7thf ,sc4fd7th, sc4_4reel, sc4, sc4_state, sc4fd7th, ROT0, "BFM","Frankie Dettori's 7th Heaven (Bellfruit) (Scorpion 4) (set 5)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4fd7thg ,sc4fd7th, sc4_4reel, sc4, sc4_state, sc4fd7th, ROT0, "BFM","Frankie Dettori's 7th Heaven (Bellfruit) (Scorpion 4) (set 6)", MACHINE_FLAGS, layout_bfm_sc4 )
// PR6804 FRANKIE DETTORI SP98 PR6804 FRANKIE SOUNDS
-GAMEL( 200?, sc4fd7thc ,sc4fd7th, sc4_4reel, sc4, sc4_state, sc4fd7th, ROT0, "BFM","Frankie Dettori's 7th Heaven SP98 (Bellfruit) (Scorpion 4) (set 1)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4fd7thd ,sc4fd7th, sc4_4reel, sc4, sc4_state, sc4fd7th, ROT0, "BFM","Frankie Dettori's 7th Heaven SP98 (Bellfruit) (Scorpion 4) (set 2)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4fd7thh ,sc4fd7th, sc4_4reel, sc4, sc4_state, sc4fd7th, ROT0, "BFM","Frankie Dettori's 7th Heaven SP98 (Bellfruit) (Scorpion 4) (set 3)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4fd7thi ,sc4fd7th, sc4_4reel, sc4, sc4_state, sc4fd7th, ROT0, "BFM","Frankie Dettori's 7th Heaven SP98 (Bellfruit) (Scorpion 4) (set 4)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4fd7thc ,sc4fd7th, sc4_4reel, sc4, sc4_state, sc4fd7th, ROT0, "BFM","Frankie Dettori's 7th Heaven SP98 (Bellfruit) (Scorpion 4) (set 1)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4fd7thd ,sc4fd7th, sc4_4reel, sc4, sc4_state, sc4fd7th, ROT0, "BFM","Frankie Dettori's 7th Heaven SP98 (Bellfruit) (Scorpion 4) (set 2)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4fd7thh ,sc4fd7th, sc4_4reel, sc4, sc4_state, sc4fd7th, ROT0, "BFM","Frankie Dettori's 7th Heaven SP98 (Bellfruit) (Scorpion 4) (set 3)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4fd7thi ,sc4fd7th, sc4_4reel, sc4, sc4_state, sc4fd7th, ROT0, "BFM","Frankie Dettori's 7th Heaven SP98 (Bellfruit) (Scorpion 4) (set 4)", MACHINE_FLAGS, layout_bfm_sc4 )
DRIVER_INIT_MEMBER(sc4_state,sc4frsu)
@@ -48070,14 +48072,14 @@ DRIVER_INIT_MEMBER(sc4_state,sc4frsu)
}
// PR6928 CASINO FRUIT N SUITS PR6928 FRUIT N SUITS SOUNDS11
-GAMEL( 200?, sc4frsu ,0, sc4, sc4, sc4_state, sc4frsu, ROT0, "BFM","Casino Fruits 'n' Suits (Bellfruit) (Scorpion 4) (set 1)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4frsua ,sc4frsu, sc4, sc4, sc4_state, sc4frsu, ROT0, "BFM","Casino Fruits 'n' Suits (Bellfruit) (Scorpion 4) (set 2)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4frsub ,sc4frsu, sc4, sc4, sc4_state, sc4frsu, ROT0, "BFM","Casino Fruits 'n' Suits (Bellfruit) (Scorpion 4) (set 3)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4frsuc ,sc4frsu, sc4, sc4, sc4_state, sc4frsu, ROT0, "BFM","Casino Fruits 'n' Suits (Bellfruit) (Scorpion 4) (set 4)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4frsud ,sc4frsu, sc4, sc4, sc4_state, sc4frsu, ROT0, "BFM","Casino Fruits 'n' Suits (Bellfruit) (Scorpion 4) (set 5)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4frsue ,sc4frsu, sc4, sc4, sc4_state, sc4frsu, ROT0, "BFM","Casino Fruits 'n' Suits (Bellfruit) (Scorpion 4) (set 6)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4frsuf ,sc4frsu, sc4, sc4, sc4_state, sc4frsu, ROT0, "BFM","Casino Fruits 'n' Suits (Bellfruit) (Scorpion 4) (set 7)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4frsug ,sc4frsu, sc4, sc4, sc4_state, sc4frsu, ROT0, "BFM","Casino Fruits 'n' Suits (Bellfruit) (Scorpion 4) (set 8)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4frsu ,0, sc4, sc4, sc4_state, sc4frsu, ROT0, "BFM","Casino Fruits 'n' Suits (Bellfruit) (Scorpion 4) (set 1)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4frsua ,sc4frsu, sc4, sc4, sc4_state, sc4frsu, ROT0, "BFM","Casino Fruits 'n' Suits (Bellfruit) (Scorpion 4) (set 2)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4frsub ,sc4frsu, sc4, sc4, sc4_state, sc4frsu, ROT0, "BFM","Casino Fruits 'n' Suits (Bellfruit) (Scorpion 4) (set 3)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4frsuc ,sc4frsu, sc4, sc4, sc4_state, sc4frsu, ROT0, "BFM","Casino Fruits 'n' Suits (Bellfruit) (Scorpion 4) (set 4)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4frsud ,sc4frsu, sc4, sc4, sc4_state, sc4frsu, ROT0, "BFM","Casino Fruits 'n' Suits (Bellfruit) (Scorpion 4) (set 5)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4frsue ,sc4frsu, sc4, sc4, sc4_state, sc4frsu, ROT0, "BFM","Casino Fruits 'n' Suits (Bellfruit) (Scorpion 4) (set 6)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4frsuf ,sc4frsu, sc4, sc4, sc4_state, sc4frsu, ROT0, "BFM","Casino Fruits 'n' Suits (Bellfruit) (Scorpion 4) (set 7)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4frsug ,sc4frsu, sc4, sc4, sc4_state, sc4frsu, ROT0, "BFM","Casino Fruits 'n' Suits (Bellfruit) (Scorpion 4) (set 8)", MACHINE_FLAGS, layout_bfm_sc4 )
@@ -48089,12 +48091,12 @@ DRIVER_INIT_MEMBER(sc4_state,sc4goldo)
// PR7024 GOLDEN OLDIE OLDIE SOUNDS
-GAMEL( 200?, sc4goldo ,0, sc4_4reel, sc4, sc4_state, sc4goldo, ROT0, "Mazooma","Casino Golden Oldie (Mazooma) (Scorpion 4) (set 1)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4goldoa ,sc4goldo, sc4_4reel, sc4, sc4_state, sc4goldo, ROT0, "Mazooma","Casino Golden Oldie (Mazooma) (Scorpion 4) (set 2)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4goldob ,sc4goldo, sc4_4reel, sc4, sc4_state, sc4goldo, ROT0, "Mazooma","Casino Golden Oldie (Mazooma) (Scorpion 4) (set 3)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4goldoc ,sc4goldo, sc4_4reel, sc4, sc4_state, sc4goldo, ROT0, "Mazooma","Casino Golden Oldie (Mazooma) (Scorpion 4) (set 4)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4gocas ,sc4goldo, sc4_4reel, sc4, sc4_state, sc4goldo, ROT0, "Mazooma","Casino Golden Oldie (Mazooma) (Scorpion 4) (set 5)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4gocasa ,sc4goldo, sc4_4reel, sc4, sc4_state, sc4goldo, ROT0, "Mazooma","Casino Golden Oldie (Mazooma) (Scorpion 4) (set 6)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4goldo ,0, sc4_4reel, sc4, sc4_state, sc4goldo, ROT0, "Mazooma","Casino Golden Oldie (Mazooma) (Scorpion 4) (set 1)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4goldoa ,sc4goldo, sc4_4reel, sc4, sc4_state, sc4goldo, ROT0, "Mazooma","Casino Golden Oldie (Mazooma) (Scorpion 4) (set 2)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4goldob ,sc4goldo, sc4_4reel, sc4, sc4_state, sc4goldo, ROT0, "Mazooma","Casino Golden Oldie (Mazooma) (Scorpion 4) (set 3)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4goldoc ,sc4goldo, sc4_4reel, sc4, sc4_state, sc4goldo, ROT0, "Mazooma","Casino Golden Oldie (Mazooma) (Scorpion 4) (set 4)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4gocas ,sc4goldo, sc4_4reel, sc4, sc4_state, sc4goldo, ROT0, "Mazooma","Casino Golden Oldie (Mazooma) (Scorpion 4) (set 5)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4gocasa ,sc4goldo, sc4_4reel, sc4, sc4_state, sc4goldo, ROT0, "Mazooma","Casino Golden Oldie (Mazooma) (Scorpion 4) (set 6)", MACHINE_FLAGS, layout_bfm_sc4 )
@@ -48124,31 +48126,31 @@ DRIVER_INIT_MEMBER(sc4_state,sc4gx)
// Listed as Bonus Bar X, what's the correct title?
// PR7036GOLDEN X GOLDEN X ARCADE BARX SOUNDS GOLDEN X
-GAMEL( 200?, sc4bonbx ,0, sc4_3reel_200, sc4bonbx4, sc4_state, sc4bonbxm, ROT0, "Mazooma","Bar X (Mazooma) (Scorpion 4) (set 1)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4bonbxc ,sc4bonbx, sc4_3reel_200, sc4, sc4_state, sc4bonbxm, ROT0, "Mazooma","Bar X (Mazooma) (Scorpion 4) (set 2)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4bonbxd ,sc4bonbx, sc4_3reel_200, sc4, sc4_state, sc4bonbxm, ROT0, "Mazooma","Bar X (Mazooma) (Scorpion 4) (set 3)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4bonbxe ,sc4bonbx, sc4_3reel_200, sc4, sc4_state, sc4bonbxm, ROT0, "Mazooma","Bar X (Mazooma) (Scorpion 4) (set 4)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4bonbxf ,sc4bonbx, sc4_3reel_200, sc4, sc4_state, sc4bonbxm, ROT0, "Mazooma","Bar X (Mazooma) (Scorpion 4) (set 5)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4bonbx ,0, sc4_3reel_200, sc4bonbx4, sc4_state, sc4bonbxm, ROT0, "Mazooma","Bar X (Mazooma) (Scorpion 4) (set 1)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4bonbxc ,sc4bonbx, sc4_3reel_200, sc4, sc4_state, sc4bonbxm, ROT0, "Mazooma","Bar X (Mazooma) (Scorpion 4) (set 2)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4bonbxd ,sc4bonbx, sc4_3reel_200, sc4, sc4_state, sc4bonbxm, ROT0, "Mazooma","Bar X (Mazooma) (Scorpion 4) (set 3)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4bonbxe ,sc4bonbx, sc4_3reel_200, sc4, sc4_state, sc4bonbxm, ROT0, "Mazooma","Bar X (Mazooma) (Scorpion 4) (set 4)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4bonbxf ,sc4bonbx, sc4_3reel_200, sc4, sc4_state, sc4bonbxm, ROT0, "Mazooma","Bar X (Mazooma) (Scorpion 4) (set 5)", MACHINE_FLAGS, layout_bfm_sc4 )
// PR7036GOLDEN X BARX SOUNDS GOLDEN X
-GAMEL( 200?, sc4bonbxa ,sc4bonbx, sc4_3reel_200, sc4, sc4_state, sc4bonbx, ROT0, "Mazooma","Bar X (Mazooma) (Scorpion 4) (set 6)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4bonbxb ,sc4bonbx, sc4_3reel_200, sc4, sc4_state, sc4bonbx, ROT0, "Mazooma","Bar X (Mazooma) (Scorpion 4) (set 7)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4bonbxg ,sc4bonbx, sc4_3reel_200, sc4, sc4_state, sc4bonbx, ROT0, "Mazooma","Bar X (Mazooma) (Scorpion 4) (set 8)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4bonbxh ,sc4bonbx, sc4_3reel_200, sc4, sc4_state, sc4bonbx, ROT0, "Mazooma","Bar X (Mazooma) (Scorpion 4) (set 9)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4bonbxi ,sc4bonbx, sc4_3reel_200, sc4, sc4_state, sc4bonbx, ROT0, "Mazooma","Bar X (Mazooma) (Scorpion 4) (set 10)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4bonbxj ,sc4bonbx, sc4_3reel_200, sc4, sc4_state, sc4bonbx, ROT0, "Mazooma","Bar X (Mazooma) (Scorpion 4) (set 11)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4bonbxk ,sc4bonbx, sc4_3reel_200, sc4, sc4_state, sc4bonbx, ROT0, "Mazooma","Bar X (Mazooma) (Scorpion 4) (set 12)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4bonbxl ,sc4bonbx, sc4_3reel_200, sc4, sc4_state, sc4bonbx, ROT0, "Mazooma","Bar X (Mazooma) (Scorpion 4) (set 13)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4bonbxa ,sc4bonbx, sc4_3reel_200, sc4, sc4_state, sc4bonbx, ROT0, "Mazooma","Bar X (Mazooma) (Scorpion 4) (set 6)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4bonbxb ,sc4bonbx, sc4_3reel_200, sc4, sc4_state, sc4bonbx, ROT0, "Mazooma","Bar X (Mazooma) (Scorpion 4) (set 7)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4bonbxg ,sc4bonbx, sc4_3reel_200, sc4, sc4_state, sc4bonbx, ROT0, "Mazooma","Bar X (Mazooma) (Scorpion 4) (set 8)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4bonbxh ,sc4bonbx, sc4_3reel_200, sc4, sc4_state, sc4bonbx, ROT0, "Mazooma","Bar X (Mazooma) (Scorpion 4) (set 9)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4bonbxi ,sc4bonbx, sc4_3reel_200, sc4, sc4_state, sc4bonbx, ROT0, "Mazooma","Bar X (Mazooma) (Scorpion 4) (set 10)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4bonbxj ,sc4bonbx, sc4_3reel_200, sc4, sc4_state, sc4bonbx, ROT0, "Mazooma","Bar X (Mazooma) (Scorpion 4) (set 11)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4bonbxk ,sc4bonbx, sc4_3reel_200, sc4, sc4_state, sc4bonbx, ROT0, "Mazooma","Bar X (Mazooma) (Scorpion 4) (set 12)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4bonbxl ,sc4bonbx, sc4_3reel_200, sc4, sc4_state, sc4bonbx, ROT0, "Mazooma","Bar X (Mazooma) (Scorpion 4) (set 13)", MACHINE_FLAGS, layout_bfm_sc4 )
// PR7036 GOLDEN X BARX SOUNDS (these were listed as Golden X Casino but seem to be Bar X / Bonus Bar X)
-GAMEL( 200?, sc4gx ,sc4bonbx, sc4_3reel_200, sc4, sc4_state, sc4gx, ROT0, "Mazooma","Bar X (Mazooma) (Scorpion 4) (BARX, set 1)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4gxcasa ,sc4bonbx, sc4_3reel_200, sc4, sc4_state, sc4gx, ROT0, "Mazooma","Bar X (Mazooma) (Scorpion 4) (BARX, set 2)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4gxcasb ,sc4bonbx, sc4_3reel_200, sc4, sc4_state, sc4gx, ROT0, "Mazooma","Bar X (Mazooma) (Scorpion 4) (BARX, set 3)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4gxcasc ,sc4bonbx, sc4_3reel_200, sc4, sc4_state, sc4gx, ROT0, "Mazooma","Bar X (Mazooma) (Scorpion 4) (BARX, set 4)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4gxcasd ,sc4bonbx, sc4_3reel_200, sc4, sc4_state, sc4gx, ROT0, "Mazooma","Bar X (Mazooma) (Scorpion 4) (BARX, set 5)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4gx ,sc4bonbx, sc4_3reel_200, sc4, sc4_state, sc4gx, ROT0, "Mazooma","Bar X (Mazooma) (Scorpion 4) (BARX, set 1)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4gxcasa ,sc4bonbx, sc4_3reel_200, sc4, sc4_state, sc4gx, ROT0, "Mazooma","Bar X (Mazooma) (Scorpion 4) (BARX, set 2)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4gxcasb ,sc4bonbx, sc4_3reel_200, sc4, sc4_state, sc4gx, ROT0, "Mazooma","Bar X (Mazooma) (Scorpion 4) (BARX, set 3)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4gxcasc ,sc4bonbx, sc4_3reel_200, sc4, sc4_state, sc4gx, ROT0, "Mazooma","Bar X (Mazooma) (Scorpion 4) (BARX, set 4)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4gxcasd ,sc4bonbx, sc4_3reel_200, sc4, sc4_state, sc4gx, ROT0, "Mazooma","Bar X (Mazooma) (Scorpion 4) (BARX, set 5)", MACHINE_FLAGS, layout_bfm_sc4 )
// PR7036GOLDEN X BARX SOUNDS GOLDEN
-GAMEL( 200?, sc4gxcase ,sc4bonbx, sc4_3reel_200, sc4, sc4_state, sc4gx, ROT0, "Mazooma","Bar X (Mazooma) (Scorpion 4) (BARX, set 6)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4gxcasf ,sc4bonbx, sc4_3reel_200, sc4, sc4_state, sc4gx, ROT0, "Mazooma","Bar X (Mazooma) (Scorpion 4) (BARX, set 7)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4gxa ,sc4bonbx, sc4_3reel_200, sc4, sc4_state, sc4gx, ROT0, "Mazooma","Bar X (Mazooma) (Scorpion 4) (BARX, set 8)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 ) // wasn't marked as Casino
-GAMEL( 200?, sc4gxb ,sc4bonbx, sc4_3reel_200, sc4, sc4_state, sc4gx, ROT0, "Mazooma","Bar X (Mazooma) (Scorpion 4) (BARX, set 9)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 ) // wasn't marked as Casino
+GAMEL( 200?, sc4gxcase ,sc4bonbx, sc4_3reel_200, sc4, sc4_state, sc4gx, ROT0, "Mazooma","Bar X (Mazooma) (Scorpion 4) (BARX, set 6)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4gxcasf ,sc4bonbx, sc4_3reel_200, sc4, sc4_state, sc4gx, ROT0, "Mazooma","Bar X (Mazooma) (Scorpion 4) (BARX, set 7)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4gxa ,sc4bonbx, sc4_3reel_200, sc4, sc4_state, sc4gx, ROT0, "Mazooma","Bar X (Mazooma) (Scorpion 4) (BARX, set 8)", MACHINE_FLAGS, layout_bfm_sc4 ) // wasn't marked as Casino
+GAMEL( 200?, sc4gxb ,sc4bonbx, sc4_3reel_200, sc4, sc4_state, sc4gx, ROT0, "Mazooma","Bar X (Mazooma) (Scorpion 4) (BARX, set 9)", MACHINE_FLAGS, layout_bfm_sc4 ) // wasn't marked as Casino
@@ -48162,14 +48164,14 @@ DRIVER_INIT_MEMBER(sc4_state,sc4gggtb)
// TBOX
// PR2056 GOLD X TRIPLE BARX SOUNDS GOLD X TRIPLE
-GAMEL( 200?, sc4ggtb ,0, sc4, sc4, sc4_state, sc4, ROT0, "Mazooma","Golden X (Mazooma) (PR2056, TBOX) (Scorpion 4) (Top Box, set 1)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 ) // PR2056 GOLD X TRIPLE BARX SOUNDS GOLD X TRIPLE
-GAMEL( 200?, sc4ggtba ,sc4ggtb, sc4, sc4, sc4_state, sc4, ROT0, "Mazooma","Golden X (Mazooma) (PR2056, TBOX) (Scorpion 4) (Top Box, set 2)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 ) // ^^
-GAMEL( 200?, sc4ggtbb ,sc4ggtb, sc4, sc4, sc4_state, sc4, ROT0, "Mazooma","Golden X (Mazooma) (PR2056, TBOX) (Scorpion 4) (Top Box, set 3)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 ) // ^^
+GAMEL( 200?, sc4ggtb ,0, sc4, sc4, sc4_state, sc4, ROT0, "Mazooma","Golden X (Mazooma) (PR2056, TBOX) (Scorpion 4) (Top Box, set 1)", MACHINE_FLAGS, layout_bfm_sc4 ) // PR2056 GOLD X TRIPLE BARX SOUNDS GOLD X TRIPLE
+GAMEL( 200?, sc4ggtba ,sc4ggtb, sc4, sc4, sc4_state, sc4, ROT0, "Mazooma","Golden X (Mazooma) (PR2056, TBOX) (Scorpion 4) (Top Box, set 2)", MACHINE_FLAGS, layout_bfm_sc4 ) // ^^
+GAMEL( 200?, sc4ggtbb ,sc4ggtb, sc4, sc4, sc4_state, sc4, ROT0, "Mazooma","Golden X (Mazooma) (PR2056, TBOX) (Scorpion 4) (Top Box, set 3)", MACHINE_FLAGS, layout_bfm_sc4 ) // ^^
// PR2056 GOLD X TRIPLE BARX SOUNDS J GOLD X TRIPLE (this was in a set just called 'top box')
-GAMEL( 200?, sc4tbox ,sc4ggtb, sc4, sc4, sc4_state, sc4, ROT0, "Mazooma","Golden X (Mazooma) (PR2056, TBOX) (Scorpion 4) (Top Box, set 4)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4tbox ,sc4ggtb, sc4, sc4, sc4_state, sc4, ROT0, "Mazooma","Golden X (Mazooma) (PR2056, TBOX) (Scorpion 4) (Top Box, set 4)", MACHINE_FLAGS, layout_bfm_sc4 )
// PR2056 GOLD X TRIPLE BARX SOUNDS GOLD X TRIPLE (these were in a Monopoly set, did it use the same top box code?, could be for Monopoly Deluxe?)
-GAMEL( 200?, sc4monog ,sc4ggtb, sc4, sc4, sc4_state, sc4, ROT0, "Mazooma","Golden X (Mazooma) (PR2056, TBOX) (Scorpion 4) (Top Box, set 5)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )// PR2056 GOLD X TRIPLE BARX SOUNDS GOLD X TRIPLE
-GAMEL( 200?, sc4monoga ,sc4ggtb, sc4, sc4, sc4_state, sc4, ROT0, "Mazooma","Golden X (Mazooma) (PR2056, TBOX) (Scorpion 4) (Top Box, set 6)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )// PR2056 GOLD X TRIPLE BARX SOUNDS GOLD X TRIPLE
+GAMEL( 200?, sc4monog ,sc4ggtb, sc4, sc4, sc4_state, sc4, ROT0, "Mazooma","Golden X (Mazooma) (PR2056, TBOX) (Scorpion 4) (Top Box, set 5)", MACHINE_FLAGS, layout_bfm_sc4 )// PR2056 GOLD X TRIPLE BARX SOUNDS GOLD X TRIPLE
+GAMEL( 200?, sc4monoga ,sc4ggtb, sc4, sc4, sc4_state, sc4, ROT0, "Mazooma","Golden X (Mazooma) (PR2056, TBOX) (Scorpion 4) (Top Box, set 6)", MACHINE_FLAGS, layout_bfm_sc4 )// PR2056 GOLD X TRIPLE BARX SOUNDS GOLD X TRIPLE
@@ -48192,79 +48194,79 @@ DRIVER_INIT_MEMBER(sc4_state,sc4gx3)
// GLDX
// 25GBP sets
// PR2056 GOLDEN X GOLDEN GAME ARCADE BARX SOUNDS GOLDEN X
-GAMEL( 200?, sc4ggame ,0, sc4_3reel_200, sc4, sc4_state, sc4ggamem, ROT0, "Mazooma","Golden X (Mazooma) (PR2056, newer?) (Scorpion 4) (GLDX, 25GBP, set 1)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4ggamei ,sc4ggame, sc4_3reel_200, sc4, sc4_state, sc4ggamem, ROT0, "Mazooma","Golden X (Mazooma) (PR2056, newer?) (Scorpion 4) (GLDX, 25GBP, set 2)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )// ^^
-GAMEL( 200?, sc4ggamep ,sc4ggame, sc4_3reel_200, sc4, sc4_state, sc4ggamem, ROT0, "Mazooma","Golden X (Mazooma) (PR2056, newer?) (Scorpion 4) (GLDX, 25GBP, set 3)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )// ^^
-GAMEL( 200?, sc4ggameq ,sc4ggame, sc4_3reel_200, sc4, sc4_state, sc4ggamem, ROT0, "Mazooma","Golden X (Mazooma) (PR2056, newer?) (Scorpion 4) (GLDX, 25GBP, set 4)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )// ^^
-GAMEL( 200?, sc4ggamer ,sc4ggame, sc4_3reel_200, sc4, sc4_state, sc4ggamem, ROT0, "Mazooma","Golden X (Mazooma) (PR2056, newer?) (Scorpion 4) (GLDX, 25GBP, set 5)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )// ^^
+GAMEL( 200?, sc4ggame ,0, sc4_3reel_200, sc4, sc4_state, sc4ggamem, ROT0, "Mazooma","Golden X (Mazooma) (PR2056, newer?) (Scorpion 4) (GLDX, 25GBP, set 1)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4ggamei ,sc4ggame, sc4_3reel_200, sc4, sc4_state, sc4ggamem, ROT0, "Mazooma","Golden X (Mazooma) (PR2056, newer?) (Scorpion 4) (GLDX, 25GBP, set 2)", MACHINE_FLAGS, layout_bfm_sc4 )// ^^
+GAMEL( 200?, sc4ggamep ,sc4ggame, sc4_3reel_200, sc4, sc4_state, sc4ggamem, ROT0, "Mazooma","Golden X (Mazooma) (PR2056, newer?) (Scorpion 4) (GLDX, 25GBP, set 3)", MACHINE_FLAGS, layout_bfm_sc4 )// ^^
+GAMEL( 200?, sc4ggameq ,sc4ggame, sc4_3reel_200, sc4, sc4_state, sc4ggamem, ROT0, "Mazooma","Golden X (Mazooma) (PR2056, newer?) (Scorpion 4) (GLDX, 25GBP, set 4)", MACHINE_FLAGS, layout_bfm_sc4 )// ^^
+GAMEL( 200?, sc4ggamer ,sc4ggame, sc4_3reel_200, sc4, sc4_state, sc4ggamem, ROT0, "Mazooma","Golden X (Mazooma) (PR2056, newer?) (Scorpion 4) (GLDX, 25GBP, set 5)", MACHINE_FLAGS, layout_bfm_sc4 )// ^^
// 35GBP sets
-GAMEL( 200?, sc4ggame7 ,sc4ggame, sc4_3reel_200, sc4, sc4_state, sc4ggamem, ROT0, "Mazooma","Golden X (Mazooma) (PR2056, newer?) (Scorpion 4) (GLDX, 35GBP, set 1)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )// ^^
-GAMEL( 200?, sc4ggame8 ,sc4ggame, sc4_3reel_200, sc4, sc4_state, sc4ggamem, ROT0, "Mazooma","Golden X (Mazooma) (PR2056, newer?) (Scorpion 4) (GLDX, 35GBP, set 2)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )// ^^
-GAMEL( 200?, sc4ggame9 ,sc4ggame, sc4_3reel_200, sc4, sc4_state, sc4ggamem, ROT0, "Mazooma","Golden X (Mazooma) (PR2056, newer?) (Scorpion 4) (GLDX, 35GBP, set 3)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )// ^^
-GAMEL( 200?, sc4ggameaa ,sc4ggame, sc4_3reel_200, sc4, sc4_state, sc4ggamem, ROT0, "Mazooma","Golden X (Mazooma) (PR2056, newer?) (Scorpion 4) (GLDX, 35GBP, set 4)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )// ^^
-GAMEL( 200?, sc4ggameab ,sc4ggame, sc4_3reel_200, sc4, sc4_state, sc4ggamem, ROT0, "Mazooma","Golden X (Mazooma) (PR2056, newer?) (Scorpion 4) (GLDX, 35GBP, set 5)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )// ^^
-GAMEL( 200?, sc4ggameac ,sc4ggame, sc4_3reel_200, sc4, sc4_state, sc4ggamem, ROT0, "Mazooma","Golden X (Mazooma) (PR2056, newer?) (Scorpion 4) (GLDX, 35GBP, set 6)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )// ^^
-GAMEL( 200?, sc4ggamead ,sc4ggame, sc4_3reel_200, sc4, sc4_state, sc4ggamem, ROT0, "Mazooma","Golden X (Mazooma) (PR2056, newer?) (Scorpion 4) (GLDX, 35GBP, set 7)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )// ^^
-GAMEL( 200?, sc4ggameae ,sc4ggame, sc4_3reel_200, sc4, sc4_state, sc4ggamem, ROT0, "Mazooma","Golden X (Mazooma) (PR2056, newer?) (Scorpion 4) (GLDX, 35GBP, set 8)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )// ^^
+GAMEL( 200?, sc4ggame7 ,sc4ggame, sc4_3reel_200, sc4, sc4_state, sc4ggamem, ROT0, "Mazooma","Golden X (Mazooma) (PR2056, newer?) (Scorpion 4) (GLDX, 35GBP, set 1)", MACHINE_FLAGS, layout_bfm_sc4 )// ^^
+GAMEL( 200?, sc4ggame8 ,sc4ggame, sc4_3reel_200, sc4, sc4_state, sc4ggamem, ROT0, "Mazooma","Golden X (Mazooma) (PR2056, newer?) (Scorpion 4) (GLDX, 35GBP, set 2)", MACHINE_FLAGS, layout_bfm_sc4 )// ^^
+GAMEL( 200?, sc4ggame9 ,sc4ggame, sc4_3reel_200, sc4, sc4_state, sc4ggamem, ROT0, "Mazooma","Golden X (Mazooma) (PR2056, newer?) (Scorpion 4) (GLDX, 35GBP, set 3)", MACHINE_FLAGS, layout_bfm_sc4 )// ^^
+GAMEL( 200?, sc4ggameaa ,sc4ggame, sc4_3reel_200, sc4, sc4_state, sc4ggamem, ROT0, "Mazooma","Golden X (Mazooma) (PR2056, newer?) (Scorpion 4) (GLDX, 35GBP, set 4)", MACHINE_FLAGS, layout_bfm_sc4 )// ^^
+GAMEL( 200?, sc4ggameab ,sc4ggame, sc4_3reel_200, sc4, sc4_state, sc4ggamem, ROT0, "Mazooma","Golden X (Mazooma) (PR2056, newer?) (Scorpion 4) (GLDX, 35GBP, set 5)", MACHINE_FLAGS, layout_bfm_sc4 )// ^^
+GAMEL( 200?, sc4ggameac ,sc4ggame, sc4_3reel_200, sc4, sc4_state, sc4ggamem, ROT0, "Mazooma","Golden X (Mazooma) (PR2056, newer?) (Scorpion 4) (GLDX, 35GBP, set 6)", MACHINE_FLAGS, layout_bfm_sc4 )// ^^
+GAMEL( 200?, sc4ggamead ,sc4ggame, sc4_3reel_200, sc4, sc4_state, sc4ggamem, ROT0, "Mazooma","Golden X (Mazooma) (PR2056, newer?) (Scorpion 4) (GLDX, 35GBP, set 7)", MACHINE_FLAGS, layout_bfm_sc4 )// ^^
+GAMEL( 200?, sc4ggameae ,sc4ggame, sc4_3reel_200, sc4, sc4_state, sc4ggamem, ROT0, "Mazooma","Golden X (Mazooma) (PR2056, newer?) (Scorpion 4) (GLDX, 35GBP, set 8)", MACHINE_FLAGS, layout_bfm_sc4 )// ^^
// pay unit error
-GAMEL( 200?, sc4ggamel ,sc4ggame, sc4_3reel_200, sc4, sc4_state, sc4ggamem, ROT0, "Mazooma","Golden X (Mazooma) (PR2056, newer?) (Scorpion 4) (set 1)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )// ^^
-GAMEL( 200?, sc4ggamem ,sc4ggame, sc4_3reel_200, sc4, sc4_state, sc4ggamem, ROT0, "Mazooma","Golden X (Mazooma) (PR2056, newer?) (Scorpion 4) (set 2)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )// ^^
-GAMEL( 200?, sc4ggamew ,sc4ggame, sc4_3reel_200, sc4, sc4_state, sc4ggamem, ROT0, "Mazooma","Golden X (Mazooma) (PR2056, newer?) (Scorpion 4) (set 3)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )// ^^
-GAMEL( 200?, sc4ggamex ,sc4ggame, sc4_3reel_200, sc4, sc4_state, sc4ggamem, ROT0, "Mazooma","Golden X (Mazooma) (PR2056, newer?) (Scorpion 4) (set 4)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )// ^^
-GAMEL( 200?, sc4ggamey ,sc4ggame, sc4_3reel_200, sc4, sc4_state, sc4ggamem, ROT0, "Mazooma","Golden X (Mazooma) (PR2056, newer?) (Scorpion 4) (set 5)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )// ^^
-GAMEL( 200?, sc4ggamez ,sc4ggame, sc4_3reel_200, sc4, sc4_state, sc4ggamem, ROT0, "Mazooma","Golden X (Mazooma) (PR2056, newer?) (Scorpion 4) (set 6)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )// ^^
-GAMEL( 200?, sc4ggame1 ,sc4ggame, sc4_3reel_200, sc4, sc4_state, sc4ggamem, ROT0, "Mazooma","Golden X (Mazooma) (PR2056, newer?) (Scorpion 4) (set 7)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )// ^^
-GAMEL( 200?, sc4ggame2 ,sc4ggame, sc4_3reel_200, sc4, sc4_state, sc4ggamem, ROT0, "Mazooma","Golden X (Mazooma) (PR2056, newer?) (Scorpion 4) (set 8)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )// ^^
+GAMEL( 200?, sc4ggamel ,sc4ggame, sc4_3reel_200, sc4, sc4_state, sc4ggamem, ROT0, "Mazooma","Golden X (Mazooma) (PR2056, newer?) (Scorpion 4) (set 1)", MACHINE_FLAGS, layout_bfm_sc4 )// ^^
+GAMEL( 200?, sc4ggamem ,sc4ggame, sc4_3reel_200, sc4, sc4_state, sc4ggamem, ROT0, "Mazooma","Golden X (Mazooma) (PR2056, newer?) (Scorpion 4) (set 2)", MACHINE_FLAGS, layout_bfm_sc4 )// ^^
+GAMEL( 200?, sc4ggamew ,sc4ggame, sc4_3reel_200, sc4, sc4_state, sc4ggamem, ROT0, "Mazooma","Golden X (Mazooma) (PR2056, newer?) (Scorpion 4) (set 3)", MACHINE_FLAGS, layout_bfm_sc4 )// ^^
+GAMEL( 200?, sc4ggamex ,sc4ggame, sc4_3reel_200, sc4, sc4_state, sc4ggamem, ROT0, "Mazooma","Golden X (Mazooma) (PR2056, newer?) (Scorpion 4) (set 4)", MACHINE_FLAGS, layout_bfm_sc4 )// ^^
+GAMEL( 200?, sc4ggamey ,sc4ggame, sc4_3reel_200, sc4, sc4_state, sc4ggamem, ROT0, "Mazooma","Golden X (Mazooma) (PR2056, newer?) (Scorpion 4) (set 5)", MACHINE_FLAGS, layout_bfm_sc4 )// ^^
+GAMEL( 200?, sc4ggamez ,sc4ggame, sc4_3reel_200, sc4, sc4_state, sc4ggamem, ROT0, "Mazooma","Golden X (Mazooma) (PR2056, newer?) (Scorpion 4) (set 6)", MACHINE_FLAGS, layout_bfm_sc4 )// ^^
+GAMEL( 200?, sc4ggame1 ,sc4ggame, sc4_3reel_200, sc4, sc4_state, sc4ggamem, ROT0, "Mazooma","Golden X (Mazooma) (PR2056, newer?) (Scorpion 4) (set 7)", MACHINE_FLAGS, layout_bfm_sc4 )// ^^
+GAMEL( 200?, sc4ggame2 ,sc4ggame, sc4_3reel_200, sc4, sc4_state, sc4ggamem, ROT0, "Mazooma","Golden X (Mazooma) (PR2056, newer?) (Scorpion 4) (set 8)", MACHINE_FLAGS, layout_bfm_sc4 )// ^^
// 25GBP, no 41 check
// PR2056 GOLDEN X BARX SOUNDS GOLDEN X
-GAMEL( 200?, sc4ggamea ,sc4ggame, sc4_3reel_200, sc4, sc4_state, sc4ggame, ROT0, "Mazooma","Golden X (Mazooma) (PR2056) (Scorpion 4) (GLDX, 25GBP, set 1)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4ggameb ,sc4ggame, sc4_3reel_200, sc4, sc4_state, sc4ggame, ROT0, "Mazooma","Golden X (Mazooma) (PR2056) (Scorpion 4) (GLDX, 25GBP, set 2)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 ) // ^^
-GAMEL( 200?, sc4ggamec ,sc4ggame, sc4_3reel_200, sc4, sc4_state, sc4ggame, ROT0, "Mazooma","Golden X (Mazooma) (PR2056) (Scorpion 4) (GLDX, 25GBP, set 3)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 ) // ^^
-GAMEL( 200?, sc4ggamed ,sc4ggame, sc4_3reel_200, sc4, sc4_state, sc4ggame, ROT0, "Mazooma","Golden X (Mazooma) (PR2056) (Scorpion 4) (GLDX, 25GBP, set 4)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 ) // ^^
-GAMEL( 200?, sc4ggames ,sc4ggame, sc4_3reel_200, sc4, sc4_state, sc4ggame, ROT0, "Mazooma","Golden X (Mazooma) (PR2056) (Scorpion 4) (GLDX, 25GBP, set 5)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )// ^^
-GAMEL( 200?, sc4ggamet ,sc4ggame, sc4_3reel_200, sc4, sc4_state, sc4ggame, ROT0, "Mazooma","Golden X (Mazooma) (PR2056) (Scorpion 4) (GLDX, 25GBP, set 6)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )// ^^
-GAMEL( 200?, sc4ggameu ,sc4ggame, sc4_3reel_200, sc4, sc4_state, sc4ggame, ROT0, "Mazooma","Golden X (Mazooma) (PR2056) (Scorpion 4) (GLDX, 25GBP, set 7)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )// ^^
+GAMEL( 200?, sc4ggamea ,sc4ggame, sc4_3reel_200, sc4, sc4_state, sc4ggame, ROT0, "Mazooma","Golden X (Mazooma) (PR2056) (Scorpion 4) (GLDX, 25GBP, set 1)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4ggameb ,sc4ggame, sc4_3reel_200, sc4, sc4_state, sc4ggame, ROT0, "Mazooma","Golden X (Mazooma) (PR2056) (Scorpion 4) (GLDX, 25GBP, set 2)", MACHINE_FLAGS, layout_bfm_sc4 ) // ^^
+GAMEL( 200?, sc4ggamec ,sc4ggame, sc4_3reel_200, sc4, sc4_state, sc4ggame, ROT0, "Mazooma","Golden X (Mazooma) (PR2056) (Scorpion 4) (GLDX, 25GBP, set 3)", MACHINE_FLAGS, layout_bfm_sc4 ) // ^^
+GAMEL( 200?, sc4ggamed ,sc4ggame, sc4_3reel_200, sc4, sc4_state, sc4ggame, ROT0, "Mazooma","Golden X (Mazooma) (PR2056) (Scorpion 4) (GLDX, 25GBP, set 4)", MACHINE_FLAGS, layout_bfm_sc4 ) // ^^
+GAMEL( 200?, sc4ggames ,sc4ggame, sc4_3reel_200, sc4, sc4_state, sc4ggame, ROT0, "Mazooma","Golden X (Mazooma) (PR2056) (Scorpion 4) (GLDX, 25GBP, set 5)", MACHINE_FLAGS, layout_bfm_sc4 )// ^^
+GAMEL( 200?, sc4ggamet ,sc4ggame, sc4_3reel_200, sc4, sc4_state, sc4ggame, ROT0, "Mazooma","Golden X (Mazooma) (PR2056) (Scorpion 4) (GLDX, 25GBP, set 6)", MACHINE_FLAGS, layout_bfm_sc4 )// ^^
+GAMEL( 200?, sc4ggameu ,sc4ggame, sc4_3reel_200, sc4, sc4_state, sc4ggame, ROT0, "Mazooma","Golden X (Mazooma) (PR2056) (Scorpion 4) (GLDX, 25GBP, set 7)", MACHINE_FLAGS, layout_bfm_sc4 )// ^^
// 30GBP, no 41 check
-GAMEL( 200?, sc4ggamef ,sc4ggame, sc4_3reel_200, sc4, sc4_state, sc4ggame, ROT0, "Mazooma","Golden X (Mazooma) (PR2056) (Scorpion 4) (GLDX, 30GBP, set 1)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 ) // ^^
-GAMEL( 200?, sc4ggameg ,sc4ggame, sc4_3reel_200, sc4, sc4_state, sc4ggame, ROT0, "Mazooma","Golden X (Mazooma) (PR2056) (Scorpion 4) (GLDX, 30GBP, set 2)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 ) // ^^
-GAMEL( 200?, sc4ggamej ,sc4ggame, sc4_3reel_200, sc4, sc4_state, sc4ggame, ROT0, "Mazooma","Golden X (Mazooma) (PR2056) (Scorpion 4) (GLDX, 30GBP, set 3)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )// ^^
-GAMEL( 200?, sc4ggamek ,sc4ggame, sc4_3reel_200, sc4, sc4_state, sc4ggame, ROT0, "Mazooma","Golden X (Mazooma) (PR2056) (Scorpion 4) (GLDX, 30GBP, set 4)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )// ^^
-GAMEL( 200?, sc4ggamev ,sc4ggame, sc4_3reel_200, sc4, sc4_state, sc4ggame, ROT0, "Mazooma","Golden X (Mazooma) (PR2056) (Scorpion 4) (GLDX, 30GBP, set 5)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )// ^^
-GAMEL( 200?, sc4ggame3 ,sc4ggame, sc4_3reel_200, sc4, sc4_state, sc4ggame, ROT0, "Mazooma","Golden X (Mazooma) (PR2056) (Scorpion 4) (GLDX, 30GBP, set 6)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )// ^^
-GAMEL( 200?, sc4ggame4 ,sc4ggame, sc4_3reel_200, sc4, sc4_state, sc4ggame, ROT0, "Mazooma","Golden X (Mazooma) (PR2056) (Scorpion 4) (GLDX, 30GBP, set 7)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )// ^^
-GAMEL( 200?, sc4ggame5 ,sc4ggame, sc4_3reel_200, sc4, sc4_state, sc4ggame, ROT0, "Mazooma","Golden X (Mazooma) (PR2056) (Scorpion 4) (GLDX, 30GBP, set 8)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )// ^^
-GAMEL( 200?, sc4ggame6 ,sc4ggame, sc4_3reel_200, sc4, sc4_state, sc4ggame, ROT0, "Mazooma","Golden X (Mazooma) (PR2056) (Scorpion 4) (GLDX, 30GBP, set 9)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )// ^^
+GAMEL( 200?, sc4ggamef ,sc4ggame, sc4_3reel_200, sc4, sc4_state, sc4ggame, ROT0, "Mazooma","Golden X (Mazooma) (PR2056) (Scorpion 4) (GLDX, 30GBP, set 1)", MACHINE_FLAGS, layout_bfm_sc4 ) // ^^
+GAMEL( 200?, sc4ggameg ,sc4ggame, sc4_3reel_200, sc4, sc4_state, sc4ggame, ROT0, "Mazooma","Golden X (Mazooma) (PR2056) (Scorpion 4) (GLDX, 30GBP, set 2)", MACHINE_FLAGS, layout_bfm_sc4 ) // ^^
+GAMEL( 200?, sc4ggamej ,sc4ggame, sc4_3reel_200, sc4, sc4_state, sc4ggame, ROT0, "Mazooma","Golden X (Mazooma) (PR2056) (Scorpion 4) (GLDX, 30GBP, set 3)", MACHINE_FLAGS, layout_bfm_sc4 )// ^^
+GAMEL( 200?, sc4ggamek ,sc4ggame, sc4_3reel_200, sc4, sc4_state, sc4ggame, ROT0, "Mazooma","Golden X (Mazooma) (PR2056) (Scorpion 4) (GLDX, 30GBP, set 4)", MACHINE_FLAGS, layout_bfm_sc4 )// ^^
+GAMEL( 200?, sc4ggamev ,sc4ggame, sc4_3reel_200, sc4, sc4_state, sc4ggame, ROT0, "Mazooma","Golden X (Mazooma) (PR2056) (Scorpion 4) (GLDX, 30GBP, set 5)", MACHINE_FLAGS, layout_bfm_sc4 )// ^^
+GAMEL( 200?, sc4ggame3 ,sc4ggame, sc4_3reel_200, sc4, sc4_state, sc4ggame, ROT0, "Mazooma","Golden X (Mazooma) (PR2056) (Scorpion 4) (GLDX, 30GBP, set 6)", MACHINE_FLAGS, layout_bfm_sc4 )// ^^
+GAMEL( 200?, sc4ggame4 ,sc4ggame, sc4_3reel_200, sc4, sc4_state, sc4ggame, ROT0, "Mazooma","Golden X (Mazooma) (PR2056) (Scorpion 4) (GLDX, 30GBP, set 7)", MACHINE_FLAGS, layout_bfm_sc4 )// ^^
+GAMEL( 200?, sc4ggame5 ,sc4ggame, sc4_3reel_200, sc4, sc4_state, sc4ggame, ROT0, "Mazooma","Golden X (Mazooma) (PR2056) (Scorpion 4) (GLDX, 30GBP, set 8)", MACHINE_FLAGS, layout_bfm_sc4 )// ^^
+GAMEL( 200?, sc4ggame6 ,sc4ggame, sc4_3reel_200, sc4, sc4_state, sc4ggame, ROT0, "Mazooma","Golden X (Mazooma) (PR2056) (Scorpion 4) (GLDX, 30GBP, set 9)", MACHINE_FLAGS, layout_bfm_sc4 )// ^^
// pay unit error
-GAMEL( 200?, sc4ggamen ,sc4ggame, sc4_3reel_200, sc4, sc4_state, sc4ggame, ROT0, "Mazooma","Golden X (Mazooma) (PR2056) (Scorpion 4) (set 1)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )// ^^
-GAMEL( 200?, sc4ggame0 ,sc4ggame, sc4_3reel_200, sc4, sc4_state, sc4ggame, ROT0, "Mazooma","Golden X (Mazooma) (PR2056) (Scorpion 4) (set 2)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )// ^^
+GAMEL( 200?, sc4ggamen ,sc4ggame, sc4_3reel_200, sc4, sc4_state, sc4ggame, ROT0, "Mazooma","Golden X (Mazooma) (PR2056) (Scorpion 4) (set 1)", MACHINE_FLAGS, layout_bfm_sc4 )// ^^
+GAMEL( 200?, sc4ggame0 ,sc4ggame, sc4_3reel_200, sc4, sc4_state, sc4ggame, ROT0, "Mazooma","Golden X (Mazooma) (PR2056) (Scorpion 4) (set 2)", MACHINE_FLAGS, layout_bfm_sc4 )// ^^
// PR2056 GOLDEN X BARX SOUNDS GOLDEN X (are these really Gold Diggers?)
-GAMEL( 200?, sc4gdmz ,sc4ggame, sc4_3reel_200, sc4, sc4_state, sc4ggame, ROT0, "Mazooma","Golden X (Mazooma) (PR2056) (Scorpion 4) (set 3)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 ) // GLDX
-GAMEL( 200?, sc4gdmza ,sc4ggame, sc4_3reel_200, sc4, sc4_state, sc4ggame, ROT0, "Mazooma","Golden X (Mazooma) (PR2056) (Scorpion 4) (set 4)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 ) // GLDX
+GAMEL( 200?, sc4gdmz ,sc4ggame, sc4_3reel_200, sc4, sc4_state, sc4ggame, ROT0, "Mazooma","Golden X (Mazooma) (PR2056) (Scorpion 4) (set 3)", MACHINE_FLAGS, layout_bfm_sc4 ) // GLDX
+GAMEL( 200?, sc4gdmza ,sc4ggame, sc4_3reel_200, sc4, sc4_state, sc4ggame, ROT0, "Mazooma","Golden X (Mazooma) (PR2056) (Scorpion 4) (set 4)", MACHINE_FLAGS, layout_bfm_sc4 ) // GLDX
// boot as GLDX, not happy with this sound rom..
// PR2056 GOLDEN X BARX SOUNDS GOLDEN X
-GAMEL( 200?, sc4gx3 ,sc4ggame, sc4_3reel_200, sc4, sc4_state, sc4gx3, ROT0, "Mazooma","Golden X (Mazooma) (Scorpion 4) (GLDX, set 1)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4gx3a ,sc4ggame, sc4_3reel_200, sc4, sc4_state, sc4gx3, ROT0, "Mazooma","Golden X (Mazooma) (Scorpion 4) (GLDX, set 2)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4gx3b ,sc4ggame, sc4_3reel_200, sc4, sc4_state, sc4gx3, ROT0, "Mazooma","Golden X (Mazooma) (Scorpion 4) (GLDX, set 3)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4gx3c ,sc4ggame, sc4_3reel_200, sc4, sc4_state, sc4gx3, ROT0, "Mazooma","Golden X (Mazooma) (Scorpion 4) (GLDX, set 4)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4gx3d ,sc4ggame, sc4_3reel_200, sc4, sc4_state, sc4gx3, ROT0, "Mazooma","Golden X (Mazooma) (Scorpion 4) (GLDX, set 5)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4gx3e ,sc4ggame, sc4_3reel_200, sc4, sc4_state, sc4gx3, ROT0, "Mazooma","Golden X (Mazooma) (Scorpion 4) (GLDX, set 6)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4gx3f ,sc4ggame, sc4_3reel_200, sc4, sc4_state, sc4gx3, ROT0, "Mazooma","Golden X (Mazooma) (Scorpion 4) (GLDX, set 7)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4gx3g ,sc4ggame, sc4_3reel_200, sc4, sc4_state, sc4gx3, ROT0, "Mazooma","Golden X (Mazooma) (Scorpion 4) (GLDX, set 8)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4gx3 ,sc4ggame, sc4_3reel_200, sc4, sc4_state, sc4gx3, ROT0, "Mazooma","Golden X (Mazooma) (Scorpion 4) (GLDX, set 1)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4gx3a ,sc4ggame, sc4_3reel_200, sc4, sc4_state, sc4gx3, ROT0, "Mazooma","Golden X (Mazooma) (Scorpion 4) (GLDX, set 2)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4gx3b ,sc4ggame, sc4_3reel_200, sc4, sc4_state, sc4gx3, ROT0, "Mazooma","Golden X (Mazooma) (Scorpion 4) (GLDX, set 3)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4gx3c ,sc4ggame, sc4_3reel_200, sc4, sc4_state, sc4gx3, ROT0, "Mazooma","Golden X (Mazooma) (Scorpion 4) (GLDX, set 4)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4gx3d ,sc4ggame, sc4_3reel_200, sc4, sc4_state, sc4gx3, ROT0, "Mazooma","Golden X (Mazooma) (Scorpion 4) (GLDX, set 5)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4gx3e ,sc4ggame, sc4_3reel_200, sc4, sc4_state, sc4gx3, ROT0, "Mazooma","Golden X (Mazooma) (Scorpion 4) (GLDX, set 6)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4gx3f ,sc4ggame, sc4_3reel_200, sc4, sc4_state, sc4gx3, ROT0, "Mazooma","Golden X (Mazooma) (Scorpion 4) (GLDX, set 7)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4gx3g ,sc4ggame, sc4_3reel_200, sc4, sc4_state, sc4gx3, ROT0, "Mazooma","Golden X (Mazooma) (Scorpion 4) (GLDX, set 8)", MACHINE_FLAGS, layout_bfm_sc4 )
// GLDX
// PR2056 GOLDEN X BARX SOUNDS GOLDEN X (was Golden Game Casino)
-GAMEL( 200?, sc4ggcas ,sc4ggame, sc4, sc4, sc4_state, sc4, ROT0, "Mazooma","Golden X (Mazooma) (Scorpion 4) (GLDX, set 9)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4ggcasa ,sc4ggame, sc4, sc4, sc4_state, sc4, ROT0, "Mazooma","Golden X (Mazooma) (Scorpion 4) (GLDX, set 10)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4ggcasb ,sc4ggame, sc4, sc4, sc4_state, sc4, ROT0, "Mazooma","Golden X (Mazooma) (Scorpion 4) (GLDX, set 11)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4ggcasc ,sc4ggame, sc4, sc4, sc4_state, sc4, ROT0, "Mazooma","Golden X (Mazooma) (Scorpion 4) (GLDX, set 12)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4ggcas ,sc4ggame, sc4, sc4, sc4_state, sc4, ROT0, "Mazooma","Golden X (Mazooma) (Scorpion 4) (GLDX, set 9)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4ggcasa ,sc4ggame, sc4, sc4, sc4_state, sc4, ROT0, "Mazooma","Golden X (Mazooma) (Scorpion 4) (GLDX, set 10)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4ggcasb ,sc4ggame, sc4, sc4, sc4_state, sc4, ROT0, "Mazooma","Golden X (Mazooma) (Scorpion 4) (GLDX, set 11)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4ggcasc ,sc4ggame, sc4, sc4, sc4_state, sc4, ROT0, "Mazooma","Golden X (Mazooma) (Scorpion 4) (GLDX, set 12)", MACHINE_FLAGS, layout_bfm_sc4 )
// GLDC
// PR2056 GOLDEN X BARX SOUNDS GOLDEN X
-GAMEL( 200?, sc4gnc ,0, sc4, sc4, sc4_state, sc4, ROT0, "Mazooma","Golden Game Club (Mazooma) (Scorpion 4) (GLDC, set 1)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4gnca ,sc4gnc, sc4, sc4, sc4_state, sc4, ROT0, "Mazooma","Golden Game Club (Mazooma) (Scorpion 4) (GLDC, set 2)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4gncb ,sc4gnc, sc4, sc4, sc4_state, sc4, ROT0, "Mazooma","Golden Game Club (Mazooma) (Scorpion 4) (GLDC, set 3)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4gncc ,sc4gnc, sc4, sc4, sc4_state, sc4, ROT0, "Mazooma","Golden Game Club (Mazooma) (Scorpion 4) (GLDC, set 4)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4gncd ,sc4gnc, sc4, sc4, sc4_state, sc4, ROT0, "Mazooma","Golden Game Club (Mazooma) (Scorpion 4) (GLDC, set 5)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4gnce ,sc4gnc, sc4, sc4, sc4_state, sc4, ROT0, "Mazooma","Golden Game Club (Mazooma) (Scorpion 4) (GLDC, set 6)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4gnc ,0, sc4, sc4, sc4_state, sc4, ROT0, "Mazooma","Golden Game Club (Mazooma) (Scorpion 4) (GLDC, set 1)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4gnca ,sc4gnc, sc4, sc4, sc4_state, sc4, ROT0, "Mazooma","Golden Game Club (Mazooma) (Scorpion 4) (GLDC, set 2)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4gncb ,sc4gnc, sc4, sc4, sc4_state, sc4, ROT0, "Mazooma","Golden Game Club (Mazooma) (Scorpion 4) (GLDC, set 3)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4gncc ,sc4gnc, sc4, sc4, sc4_state, sc4, ROT0, "Mazooma","Golden Game Club (Mazooma) (Scorpion 4) (GLDC, set 4)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4gncd ,sc4gnc, sc4, sc4, sc4_state, sc4, ROT0, "Mazooma","Golden Game Club (Mazooma) (Scorpion 4) (GLDC, set 5)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4gnce ,sc4gnc, sc4, sc4, sc4_state, sc4, ROT0, "Mazooma","Golden Game Club (Mazooma) (Scorpion 4) (GLDC, set 6)", MACHINE_FLAGS, layout_bfm_sc4 )
DRIVER_INIT_MEMBER(sc4_state,sc4ggg)
@@ -48274,29 +48276,29 @@ DRIVER_INIT_MEMBER(sc4_state,sc4ggg)
// do these sets have the wrong project name / ID strings? they boot at GGGB (Grand Golden Game) but their product ID in the header suggests standard Golden Game, looks like they forgot to update it at first, the topbox has the same issue
// PR2056 GOLDEN X GOLDEN GAME ARCADE BARX SOUNDS GOLDEN X
-GAMEL( 200?, sc4ggg ,0, sc4_3reel_200, sc4, sc4_state, sc4ggg, ROT0, "Mazooma","Grand Golden Game (Mazooma) (PR2056) (Scorpion 4) (GGGB, 35GBP, set 1)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4gggb ,sc4ggg, sc4_3reel_200, sc4, sc4_state, sc4ggg, ROT0, "Mazooma","Grand Golden Game (Mazooma) (PR2056) (Scorpion 4) (GGGB, 35GBP, set 2)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 ) // ^^
-GAMEL( 200?, sc4gggc ,sc4ggg, sc4_3reel_200, sc4, sc4_state, sc4ggg, ROT0, "Mazooma","Grand Golden Game (Mazooma) (PR2056) (Scorpion 4) (GGGB, 35GBP, set 3)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 ) // ^^
-GAMEL( 200?, sc4gggd ,sc4ggg, sc4_3reel_200, sc4, sc4_state, sc4ggg, ROT0, "Mazooma","Grand Golden Game (Mazooma) (PR2056) (Scorpion 4) (GGGB, 35GBP, set 4)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 ) // ^^
-GAMEL( 200?, sc4ggge ,sc4ggg, sc4_3reel_200, sc4, sc4_state, sc4ggg, ROT0, "Mazooma","Grand Golden Game (Mazooma) (PR2056) (Scorpion 4) (GGGB, 35GBP, set 5)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 ) // ^^
-GAMEL( 200?, sc4gggf ,sc4ggg, sc4_3reel_200, sc4, sc4_state, sc4ggg, ROT0, "Mazooma","Grand Golden Game (Mazooma) (PR2056) (Scorpion 4) (GGGB, 35GBP, set 6)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 ) // ^^
-GAMEL( 200?, sc4gggk ,sc4ggg, sc4_3reel_200, sc4, sc4_state, sc4ggg, ROT0, "Mazooma","Grand Golden Game (Mazooma) (PR2056) (Scorpion 4) (GGGB, 35GBP, set 7)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )// ^^
-GAMEL( 200?, sc4gggl ,sc4ggg, sc4_3reel_200, sc4, sc4_state, sc4ggg, ROT0, "Mazooma","Grand Golden Game (Mazooma) (PR2056) (Scorpion 4) (GGGB, 35GBP, set 8)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )// ^^
-GAMEL( 200?, sc4gggm ,sc4ggg, sc4_3reel_200, sc4, sc4_state, sc4ggg, ROT0, "Mazooma","Grand Golden Game (Mazooma) (PR2056) (Scorpion 4) (GGGB, 35GBP, set 9)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )// ^^
-GAMEL( 200?, sc4gggn ,sc4ggg, sc4_3reel_200, sc4, sc4_state, sc4ggg, ROT0, "Mazooma","Grand Golden Game (Mazooma) (PR2056) (Scorpion 4) (GGGB, 35GBP, set 10)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )// ^^
-GAMEL( 200?, sc4gggo ,sc4ggg, sc4_3reel_200, sc4, sc4_state, sc4ggg, ROT0, "Mazooma","Grand Golden Game (Mazooma) (PR2056) (Scorpion 4) (GGGB, 35GBP, set 11)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )// ^^
-GAMEL( 200?, sc4gggp ,sc4ggg, sc4_3reel_200, sc4, sc4_state, sc4ggg, ROT0, "Mazooma","Grand Golden Game (Mazooma) (PR2056) (Scorpion 4) (GGGB, 35GBP, set 12)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )// ^^
-GAMEL( 200?, sc4gggg ,sc4ggg, sc4_3reel_200, sc4, sc4_state, sc4ggg, ROT0, "Mazooma","Grand Golden Game (Mazooma) (PR2056) (Scorpion 4) (GGGB, 35GBP, set 13)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4ggg ,0, sc4_3reel_200, sc4, sc4_state, sc4ggg, ROT0, "Mazooma","Grand Golden Game (Mazooma) (PR2056) (Scorpion 4) (GGGB, 35GBP, set 1)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4gggb ,sc4ggg, sc4_3reel_200, sc4, sc4_state, sc4ggg, ROT0, "Mazooma","Grand Golden Game (Mazooma) (PR2056) (Scorpion 4) (GGGB, 35GBP, set 2)", MACHINE_FLAGS, layout_bfm_sc4 ) // ^^
+GAMEL( 200?, sc4gggc ,sc4ggg, sc4_3reel_200, sc4, sc4_state, sc4ggg, ROT0, "Mazooma","Grand Golden Game (Mazooma) (PR2056) (Scorpion 4) (GGGB, 35GBP, set 3)", MACHINE_FLAGS, layout_bfm_sc4 ) // ^^
+GAMEL( 200?, sc4gggd ,sc4ggg, sc4_3reel_200, sc4, sc4_state, sc4ggg, ROT0, "Mazooma","Grand Golden Game (Mazooma) (PR2056) (Scorpion 4) (GGGB, 35GBP, set 4)", MACHINE_FLAGS, layout_bfm_sc4 ) // ^^
+GAMEL( 200?, sc4ggge ,sc4ggg, sc4_3reel_200, sc4, sc4_state, sc4ggg, ROT0, "Mazooma","Grand Golden Game (Mazooma) (PR2056) (Scorpion 4) (GGGB, 35GBP, set 5)", MACHINE_FLAGS, layout_bfm_sc4 ) // ^^
+GAMEL( 200?, sc4gggf ,sc4ggg, sc4_3reel_200, sc4, sc4_state, sc4ggg, ROT0, "Mazooma","Grand Golden Game (Mazooma) (PR2056) (Scorpion 4) (GGGB, 35GBP, set 6)", MACHINE_FLAGS, layout_bfm_sc4 ) // ^^
+GAMEL( 200?, sc4gggk ,sc4ggg, sc4_3reel_200, sc4, sc4_state, sc4ggg, ROT0, "Mazooma","Grand Golden Game (Mazooma) (PR2056) (Scorpion 4) (GGGB, 35GBP, set 7)", MACHINE_FLAGS, layout_bfm_sc4 )// ^^
+GAMEL( 200?, sc4gggl ,sc4ggg, sc4_3reel_200, sc4, sc4_state, sc4ggg, ROT0, "Mazooma","Grand Golden Game (Mazooma) (PR2056) (Scorpion 4) (GGGB, 35GBP, set 8)", MACHINE_FLAGS, layout_bfm_sc4 )// ^^
+GAMEL( 200?, sc4gggm ,sc4ggg, sc4_3reel_200, sc4, sc4_state, sc4ggg, ROT0, "Mazooma","Grand Golden Game (Mazooma) (PR2056) (Scorpion 4) (GGGB, 35GBP, set 9)", MACHINE_FLAGS, layout_bfm_sc4 )// ^^
+GAMEL( 200?, sc4gggn ,sc4ggg, sc4_3reel_200, sc4, sc4_state, sc4ggg, ROT0, "Mazooma","Grand Golden Game (Mazooma) (PR2056) (Scorpion 4) (GGGB, 35GBP, set 10)", MACHINE_FLAGS, layout_bfm_sc4 )// ^^
+GAMEL( 200?, sc4gggo ,sc4ggg, sc4_3reel_200, sc4, sc4_state, sc4ggg, ROT0, "Mazooma","Grand Golden Game (Mazooma) (PR2056) (Scorpion 4) (GGGB, 35GBP, set 11)", MACHINE_FLAGS, layout_bfm_sc4 )// ^^
+GAMEL( 200?, sc4gggp ,sc4ggg, sc4_3reel_200, sc4, sc4_state, sc4ggg, ROT0, "Mazooma","Grand Golden Game (Mazooma) (PR2056) (Scorpion 4) (GGGB, 35GBP, set 12)", MACHINE_FLAGS, layout_bfm_sc4 )// ^^
+GAMEL( 200?, sc4gggg ,sc4ggg, sc4_3reel_200, sc4, sc4_state, sc4ggg, ROT0, "Mazooma","Grand Golden Game (Mazooma) (PR2056) (Scorpion 4) (GGGB, 35GBP, set 13)", MACHINE_FLAGS, layout_bfm_sc4 )
// PR2353 GRAND GOLDEN GAME GRAND GOLDEN GAME MAZ BARX SOUNDS GOLDEN GAME
-GAMEL( 200?, sc4gggh ,sc4ggg, sc4_3reel_200, sc4, sc4_state, sc4ggg, ROT0, "Mazooma","Grand Golden Game (Mazooma) (PR2353) (Scorpion 4) (GGGB, 35GBP, set 1)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 ) // ^^
-GAMEL( 200?, sc4gggi ,sc4ggg, sc4_3reel_200, sc4, sc4_state, sc4ggg, ROT0, "Mazooma","Grand Golden Game (Mazooma) (PR2353) (Scorpion 4) (GGGB, 35GBP, set 2)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )// ^^
-GAMEL( 200?, sc4gggq ,sc4ggg, sc4_3reel_200, sc4, sc4_state, sc4ggg, ROT0, "Mazooma","Grand Golden Game (Mazooma) (PR2353) (Scorpion 4) (GGGB, 35GBP, set 3)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )// ^^
-GAMEL( 200?, sc4gggr ,sc4ggg, sc4_3reel_200, sc4, sc4_state, sc4ggg, ROT0, "Mazooma","Grand Golden Game (Mazooma) (PR2353) (Scorpion 4) (GGGB, 35GBP, set 4)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )// ^^
-GAMEL( 200?, sc4gggs ,sc4ggg, sc4_3reel_200, sc4, sc4_state, sc4ggg, ROT0, "Mazooma","Grand Golden Game (Mazooma) (PR2353) (Scorpion 4) (GGGB, 35GBP, set 5)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )// ^^
+GAMEL( 200?, sc4gggh ,sc4ggg, sc4_3reel_200, sc4, sc4_state, sc4ggg, ROT0, "Mazooma","Grand Golden Game (Mazooma) (PR2353) (Scorpion 4) (GGGB, 35GBP, set 1)", MACHINE_FLAGS, layout_bfm_sc4 ) // ^^
+GAMEL( 200?, sc4gggi ,sc4ggg, sc4_3reel_200, sc4, sc4_state, sc4ggg, ROT0, "Mazooma","Grand Golden Game (Mazooma) (PR2353) (Scorpion 4) (GGGB, 35GBP, set 2)", MACHINE_FLAGS, layout_bfm_sc4 )// ^^
+GAMEL( 200?, sc4gggq ,sc4ggg, sc4_3reel_200, sc4, sc4_state, sc4ggg, ROT0, "Mazooma","Grand Golden Game (Mazooma) (PR2353) (Scorpion 4) (GGGB, 35GBP, set 3)", MACHINE_FLAGS, layout_bfm_sc4 )// ^^
+GAMEL( 200?, sc4gggr ,sc4ggg, sc4_3reel_200, sc4, sc4_state, sc4ggg, ROT0, "Mazooma","Grand Golden Game (Mazooma) (PR2353) (Scorpion 4) (GGGB, 35GBP, set 4)", MACHINE_FLAGS, layout_bfm_sc4 )// ^^
+GAMEL( 200?, sc4gggs ,sc4ggg, sc4_3reel_200, sc4, sc4_state, sc4ggg, ROT0, "Mazooma","Grand Golden Game (Mazooma) (PR2353) (Scorpion 4) (GGGB, 35GBP, set 5)", MACHINE_FLAGS, layout_bfm_sc4 )// ^^
// PR2056 GOLD X TRIPLE BARX SOUNDS 0 GOLD X TRIPLE (these were in a Grand Golden Game set)
-GAMEL( 200?, sc4gggtb ,sc4ggg, sc4_3reel_200, sc4, sc4_state, sc4gggtb, ROT0, "Mazooma","Grand Golden Game (Mazooma) (PR2056, GGGT) (Scorpion 4) (Top Box, set 1)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 ) // PR2056 GOLD X TRIPLE BARX SOUNDS GOLD X TRIPLE
-GAMEL( 200?, sc4gggtba ,sc4ggg, sc4_3reel_200, sc4, sc4_state, sc4gggtb, ROT0, "Mazooma","Grand Golden Game (Mazooma) (PR2056, GGGT) (Scorpion 4) (Top Box, set 2)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )// ^^
+GAMEL( 200?, sc4gggtb ,sc4ggg, sc4_3reel_200, sc4, sc4_state, sc4gggtb, ROT0, "Mazooma","Grand Golden Game (Mazooma) (PR2056, GGGT) (Scorpion 4) (Top Box, set 1)", MACHINE_FLAGS, layout_bfm_sc4 ) // PR2056 GOLD X TRIPLE BARX SOUNDS GOLD X TRIPLE
+GAMEL( 200?, sc4gggtba ,sc4ggg, sc4_3reel_200, sc4, sc4_state, sc4gggtb, ROT0, "Mazooma","Grand Golden Game (Mazooma) (PR2056, GGGT) (Scorpion 4) (Top Box, set 2)", MACHINE_FLAGS, layout_bfm_sc4 )// ^^
@@ -48308,10 +48310,10 @@ DRIVER_INIT_MEMBER(sc4_state,sc4gag)
// the (PR7019, GRAN) sets requires 3:2 and 3:3 ON to boot, (PR7019, GRAB) I'm not sure
// PR7019 GRAB A GRANNY GRANNY SOUNDS
-GAMEL( 200?, sc4gag ,0, sc4_4reel, sc4, sc4_state, sc4gag, ROT0, "Mazooma","Grab A Granny (PR7019, GRAB) (Mazooma) (Scorpion 4) (set 1)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4gagb ,sc4gag, sc4_4reel, sc4, sc4_state, sc4gag, ROT0, "Mazooma","Grab A Granny (PR7019, GRAB) (Mazooma) (Scorpion 4) (set 2)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4gaga ,sc4gag, sc4_4reel, sc4, sc4_state, sc4gag, ROT0, "Mazooma","Grab A Granny (PR7019, GRAN) (Mazooma) (Scorpion 4) (set 1)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4gagc ,sc4gag, sc4_4reel, sc4, sc4_state, sc4gag, ROT0, "Mazooma","Grab A Granny (PR7019, GRAN) (Mazooma) (Scorpion 4) (set 2)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4gag ,0, sc4_4reel, sc4, sc4_state, sc4gag, ROT0, "Mazooma","Grab A Granny (PR7019, GRAB) (Mazooma) (Scorpion 4) (set 1)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4gagb ,sc4gag, sc4_4reel, sc4, sc4_state, sc4gag, ROT0, "Mazooma","Grab A Granny (PR7019, GRAB) (Mazooma) (Scorpion 4) (set 2)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4gaga ,sc4gag, sc4_4reel, sc4, sc4_state, sc4gag, ROT0, "Mazooma","Grab A Granny (PR7019, GRAN) (Mazooma) (Scorpion 4) (set 1)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4gagc ,sc4gag, sc4_4reel, sc4, sc4_state, sc4gag, ROT0, "Mazooma","Grab A Granny (PR7019, GRAN) (Mazooma) (Scorpion 4) (set 2)", MACHINE_FLAGS, layout_bfm_sc4 )
@@ -48324,8 +48326,8 @@ DRIVER_INIT_MEMBER(sc4_state,sc4hfcl)
// PR1021 CLUB HAPPY FRUITS PR1021 HAPPY SOUNDS11 HAPPY FRUITS
-GAMEL( 200?, sc4hfcl ,0, sc4_5reel, sc4, sc4_state, sc4hfcl, ROT0, "BFM","Happy Fruits Club (Bellfruit) (Scorpion 4) (set 1)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4hfcla ,sc4hfcl, sc4_5reel, sc4, sc4_state, sc4hfcl, ROT0, "BFM","Happy Fruits Club (Bellfruit) (Scorpion 4) (set 2)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4hfcl ,0, sc4_5reel, sc4, sc4_state, sc4hfcl, ROT0, "BFM","Happy Fruits Club (Bellfruit) (Scorpion 4) (set 1)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4hfcla ,sc4hfcl, sc4_5reel, sc4, sc4_state, sc4hfcl, ROT0, "BFM","Happy Fruits Club (Bellfruit) (Scorpion 4) (set 2)", MACHINE_FLAGS, layout_bfm_sc4 )
@@ -48335,10 +48337,10 @@ DRIVER_INIT_MEMBER(sc4_state,sc4holyw)
}
// PR7115 HOLLYWOOD PR7115 HOLLYWOOD SOUNDS11
-GAMEL( 200?, sc4holyw ,0, sc4_4reel, sc4, sc4_state, sc4holyw, ROT0, "BFM","Hollywood (Bellfruit) (Scorpion 4) (set 1)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4holywb ,sc4holyw, sc4_4reel, sc4, sc4_state, sc4holyw, ROT0, "BFM","Hollywood (Bellfruit) (Scorpion 4) (set 2)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4holywa ,sc4holyw, sc4_4reel, sc4, sc4_state, sc4holyw, ROT0, "BFM / Whitbread","Hollywood (Bellfruit / Whitbread) (Scorpion 4) (set 1)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4holywc ,sc4holyw, sc4_4reel, sc4, sc4_state, sc4holyw, ROT0, "BFM / Whitbread","Hollywood (Bellfruit / Whitbread) (Scorpion 4) (set 2)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4holyw ,0, sc4_4reel, sc4, sc4_state, sc4holyw, ROT0, "BFM","Hollywood (Bellfruit) (Scorpion 4) (set 1)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4holywb ,sc4holyw, sc4_4reel, sc4, sc4_state, sc4holyw, ROT0, "BFM","Hollywood (Bellfruit) (Scorpion 4) (set 2)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4holywa ,sc4holyw, sc4_4reel, sc4, sc4_state, sc4holyw, ROT0, "BFM / Whitbread","Hollywood (Bellfruit / Whitbread) (Scorpion 4) (set 1)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4holywc ,sc4holyw, sc4_4reel, sc4, sc4_state, sc4holyw, ROT0, "BFM / Whitbread","Hollywood (Bellfruit / Whitbread) (Scorpion 4) (set 2)", MACHINE_FLAGS, layout_bfm_sc4 )
@@ -48349,21 +48351,21 @@ DRIVER_INIT_MEMBER(sc4_state,sc4jjf)
// PR6807 JUMPING JACK FLASH PR6807 JUMP SOUNDS11
-GAMEL( 200?, sc4jjf ,0, sc4_4reel, sc4, sc4_state, sc4jjf, ROT0, "BFM","Jumping Jack Flash (PR6807) (Bellfruit) (Scorpion 4) (set 1)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4jjfa ,sc4jjf, sc4_4reel, sc4, sc4_state, sc4jjf, ROT0, "BFM","Jumping Jack Flash (PR6807) (Bellfruit) (Scorpion 4) (set 2)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4jjfb ,sc4jjf, sc4_4reel, sc4, sc4_state, sc4jjf, ROT0, "BFM","Jumping Jack Flash (PR6807) (Bellfruit) (Scorpion 4) (set 3)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4jjfg ,sc4jjf, sc4_4reel, sc4, sc4_state, sc4jjf, ROT0, "BFM","Jumping Jack Flash (PR6807) (Bellfruit) (Scorpion 4) (set 4)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4jjfh ,sc4jjf, sc4_4reel, sc4, sc4_state, sc4jjf, ROT0, "BFM","Jumping Jack Flash (PR6807) (Bellfruit) (Scorpion 4) (set 5)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4jjfi ,sc4jjf, sc4_4reel, sc4, sc4_state, sc4jjf, ROT0, "BFM","Jumping Jack Flash (PR6807) (Bellfruit) (Scorpion 4) (set 6)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4jjf ,0, sc4_4reel, sc4, sc4_state, sc4jjf, ROT0, "BFM","Jumping Jack Flash (PR6807) (Bellfruit) (Scorpion 4) (set 1)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4jjfa ,sc4jjf, sc4_4reel, sc4, sc4_state, sc4jjf, ROT0, "BFM","Jumping Jack Flash (PR6807) (Bellfruit) (Scorpion 4) (set 2)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4jjfb ,sc4jjf, sc4_4reel, sc4, sc4_state, sc4jjf, ROT0, "BFM","Jumping Jack Flash (PR6807) (Bellfruit) (Scorpion 4) (set 3)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4jjfg ,sc4jjf, sc4_4reel, sc4, sc4_state, sc4jjf, ROT0, "BFM","Jumping Jack Flash (PR6807) (Bellfruit) (Scorpion 4) (set 4)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4jjfh ,sc4jjf, sc4_4reel, sc4, sc4_state, sc4jjf, ROT0, "BFM","Jumping Jack Flash (PR6807) (Bellfruit) (Scorpion 4) (set 5)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4jjfi ,sc4jjf, sc4_4reel, sc4, sc4_state, sc4jjf, ROT0, "BFM","Jumping Jack Flash (PR6807) (Bellfruit) (Scorpion 4) (set 6)", MACHINE_FLAGS, layout_bfm_sc4 )
// PR4607 JUMPING JACK FLASH SP98 PR6807 JUMP SOUNDS11
-GAMEL( 200?, sc4jjfc ,sc4jjf, sc4_4reel, sc4, sc4_state, sc4jjf, ROT0, "BFM","Jumping Jack Flash SP98 (PR4607) (Bellfruit) (Scorpion 4) (set 1)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4jjfd ,sc4jjf, sc4_4reel, sc4, sc4_state, sc4jjf, ROT0, "BFM","Jumping Jack Flash SP98 (PR4607) (Bellfruit) (Scorpion 4) (set 2)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4jjfe ,sc4jjf, sc4_4reel, sc4, sc4_state, sc4jjf, ROT0, "BFM","Jumping Jack Flash SP98 (PR4607) (Bellfruit) (Scorpion 4) (set 3)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4jjff ,sc4jjf, sc4_4reel, sc4, sc4_state, sc4jjf, ROT0, "BFM","Jumping Jack Flash SP98 (PR4607) (Bellfruit) (Scorpion 4) (set 4)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4jjfj ,sc4jjf, sc4_4reel, sc4, sc4_state, sc4jjf, ROT0, "BFM","Jumping Jack Flash SP98 (PR4607) (Bellfruit) (Scorpion 4) (set 5)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4jjfk ,sc4jjf, sc4_4reel, sc4, sc4_state, sc4jjf, ROT0, "BFM","Jumping Jack Flash SP98 (PR4607) (Bellfruit) (Scorpion 4) (set 6)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4jjfl ,sc4jjf, sc4_4reel, sc4, sc4_state, sc4jjf, ROT0, "BFM","Jumping Jack Flash SP98 (PR4607) (Bellfruit) (Scorpion 4) (set 7)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4jjfm ,sc4jjf, sc4_4reel, sc4, sc4_state, sc4jjf, ROT0, "BFM","Jumping Jack Flash SP98 (PR4607) (Bellfruit) (Scorpion 4) (set 8)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4jjfc ,sc4jjf, sc4_4reel, sc4, sc4_state, sc4jjf, ROT0, "BFM","Jumping Jack Flash SP98 (PR4607) (Bellfruit) (Scorpion 4) (set 1)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4jjfd ,sc4jjf, sc4_4reel, sc4, sc4_state, sc4jjf, ROT0, "BFM","Jumping Jack Flash SP98 (PR4607) (Bellfruit) (Scorpion 4) (set 2)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4jjfe ,sc4jjf, sc4_4reel, sc4, sc4_state, sc4jjf, ROT0, "BFM","Jumping Jack Flash SP98 (PR4607) (Bellfruit) (Scorpion 4) (set 3)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4jjff ,sc4jjf, sc4_4reel, sc4, sc4_state, sc4jjf, ROT0, "BFM","Jumping Jack Flash SP98 (PR4607) (Bellfruit) (Scorpion 4) (set 4)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4jjfj ,sc4jjf, sc4_4reel, sc4, sc4_state, sc4jjf, ROT0, "BFM","Jumping Jack Flash SP98 (PR4607) (Bellfruit) (Scorpion 4) (set 5)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4jjfk ,sc4jjf, sc4_4reel, sc4, sc4_state, sc4jjf, ROT0, "BFM","Jumping Jack Flash SP98 (PR4607) (Bellfruit) (Scorpion 4) (set 6)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4jjfl ,sc4jjf, sc4_4reel, sc4, sc4_state, sc4jjf, ROT0, "BFM","Jumping Jack Flash SP98 (PR4607) (Bellfruit) (Scorpion 4) (set 7)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4jjfm ,sc4jjf, sc4_4reel, sc4, sc4_state, sc4jjf, ROT0, "BFM","Jumping Jack Flash SP98 (PR4607) (Bellfruit) (Scorpion 4) (set 8)", MACHINE_FLAGS, layout_bfm_sc4 )
@@ -48378,27 +48380,27 @@ DRIVER_INIT_MEMBER(sc4_state,sc4lined_mbus)
}
// PR7067CASINO LINE DANCER LINE SOUNDS LINE DANCER
-GAMEL( 200?, sc4lined ,0, sc4_3reel, sc4, sc4_state, sc4lined, ROT0, "Mazooma","Line Dancer (Mazooma) (Scorpion 4) (set 1)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4lineda ,sc4lined, sc4_3reel, sc4, sc4_state, sc4lined, ROT0, "Mazooma","Line Dancer (Mazooma) (Scorpion 4) (set 2)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4lined ,0, sc4_3reel, sc4, sc4_state, sc4lined, ROT0, "Mazooma","Line Dancer (Mazooma) (Scorpion 4) (set 1)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4lineda ,sc4lined, sc4_3reel, sc4, sc4_state, sc4lined, ROT0, "Mazooma","Line Dancer (Mazooma) (Scorpion 4) (set 2)", MACHINE_FLAGS, layout_bfm_sc4 )
// PAY UNIT ERR 17 alarm during startup
-GAMEL( 200?, sc4linedb ,sc4lined, sc4_3reel, sc4, sc4_state, sc4lined, ROT0, "Mazooma","Line Dancer (Mazooma) (Scorpion 4) (set 3)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4linedc ,sc4lined, sc4_3reel, sc4, sc4_state, sc4lined, ROT0, "Mazooma","Line Dancer (Mazooma) (Scorpion 4) (set 4)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4linedb ,sc4lined, sc4_3reel, sc4, sc4_state, sc4lined, ROT0, "Mazooma","Line Dancer (Mazooma) (Scorpion 4) (set 3)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4linedc ,sc4lined, sc4_3reel, sc4, sc4_state, sc4lined, ROT0, "Mazooma","Line Dancer (Mazooma) (Scorpion 4) (set 4)", MACHINE_FLAGS, layout_bfm_sc4 )
// PR7067CASINO LINE DANCER LINE DANCER ARCADE LINE SOUNDS LINE DANCER
// PAY UNIT ERR 17 alarm during startup
-GAMEL( 200?, sc4linedd ,sc4lined, sc4_3reel, sc4, sc4_state, sc4lined_mbus, ROT0, "Mazooma","Line Dancer Arcade (Mazooma) (Scorpion 4) (set 1)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4linede ,sc4lined, sc4_3reel, sc4, sc4_state, sc4lined_mbus, ROT0, "Mazooma","Line Dancer Arcade (Mazooma) (Scorpion 4) (set 2)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4linedd ,sc4lined, sc4_3reel, sc4, sc4_state, sc4lined_mbus, ROT0, "Mazooma","Line Dancer Arcade (Mazooma) (Scorpion 4) (set 1)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4linede ,sc4lined, sc4_3reel, sc4, sc4_state, sc4lined_mbus, ROT0, "Mazooma","Line Dancer Arcade (Mazooma) (Scorpion 4) (set 2)", MACHINE_FLAGS, layout_bfm_sc4 )
// ok
-GAMEL( 200?, sc4linedf ,sc4lined, sc4_3reel, sc4, sc4_state, sc4lined, ROT0, "Mazooma","Line Dancer Arcade (Mazooma) (Scorpion 4) (set 3)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4linedg ,sc4lined, sc4_3reel, sc4, sc4_state, sc4lined, ROT0, "Mazooma","Line Dancer Arcade (Mazooma) (Scorpion 4) (set 4)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4linedh ,sc4lined, sc4_3reel, sc4, sc4_state, sc4lined, ROT0, "Mazooma","Line Dancer Arcade (Mazooma) (Scorpion 4) (set 5)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4linedi ,sc4lined, sc4_3reel, sc4, sc4_state, sc4lined, ROT0, "Mazooma","Line Dancer Arcade (Mazooma) (Scorpion 4) (set 6)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4linedf ,sc4lined, sc4_3reel, sc4, sc4_state, sc4lined, ROT0, "Mazooma","Line Dancer Arcade (Mazooma) (Scorpion 4) (set 3)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4linedg ,sc4lined, sc4_3reel, sc4, sc4_state, sc4lined, ROT0, "Mazooma","Line Dancer Arcade (Mazooma) (Scorpion 4) (set 4)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4linedh ,sc4lined, sc4_3reel, sc4, sc4_state, sc4lined, ROT0, "Mazooma","Line Dancer Arcade (Mazooma) (Scorpion 4) (set 5)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4linedi ,sc4lined, sc4_3reel, sc4, sc4_state, sc4lined, ROT0, "Mazooma","Line Dancer Arcade (Mazooma) (Scorpion 4) (set 6)", MACHINE_FLAGS, layout_bfm_sc4 )
// PR7067CASINO LINE DANCER LINE SOUNDS LINE DANCER (same as above?)
-GAMEL( 200?, sc4ldcas ,sc4lined, sc4_3reel, sc4, sc4_state, sc4lined, ROT0, "Mazooma","Line Dancer Casino (Mazooma) (Scorpion 4) (set 1)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4ldcasa ,sc4lined, sc4_3reel, sc4, sc4_state, sc4lined, ROT0, "Mazooma","Line Dancer Casino (Mazooma) (Scorpion 4) (set 2)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4ldcasb ,sc4lined, sc4_3reel, sc4, sc4_state, sc4lined, ROT0, "Mazooma","Line Dancer Casino (Mazooma) (Scorpion 4) (set 3)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4ldcasc ,sc4lined, sc4_3reel, sc4, sc4_state, sc4lined, ROT0, "Mazooma","Line Dancer Casino (Mazooma) (Scorpion 4) (set 4)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4ldcasd ,sc4lined, sc4_3reel, sc4, sc4_state, sc4lined, ROT0, "Mazooma","Line Dancer Casino (Mazooma) (Scorpion 4) (set 5)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4ldcase ,sc4lined, sc4_3reel, sc4, sc4_state, sc4lined, ROT0, "Mazooma","Line Dancer Casino (Mazooma) (Scorpion 4) (set 6)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4ldcas ,sc4lined, sc4_3reel, sc4, sc4_state, sc4lined, ROT0, "Mazooma","Line Dancer Casino (Mazooma) (Scorpion 4) (set 1)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4ldcasa ,sc4lined, sc4_3reel, sc4, sc4_state, sc4lined, ROT0, "Mazooma","Line Dancer Casino (Mazooma) (Scorpion 4) (set 2)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4ldcasb ,sc4lined, sc4_3reel, sc4, sc4_state, sc4lined, ROT0, "Mazooma","Line Dancer Casino (Mazooma) (Scorpion 4) (set 3)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4ldcasc ,sc4lined, sc4_3reel, sc4, sc4_state, sc4lined, ROT0, "Mazooma","Line Dancer Casino (Mazooma) (Scorpion 4) (set 4)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4ldcasd ,sc4lined, sc4_3reel, sc4, sc4_state, sc4lined, ROT0, "Mazooma","Line Dancer Casino (Mazooma) (Scorpion 4) (set 5)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4ldcase ,sc4lined, sc4_3reel, sc4, sc4_state, sc4lined, ROT0, "Mazooma","Line Dancer Casino (Mazooma) (Scorpion 4) (set 6)", MACHINE_FLAGS, layout_bfm_sc4 )
@@ -48415,13 +48417,13 @@ DRIVER_INIT_MEMBER(sc4_state,sc4luck7)
// PR2085 LUCKY SEVENS LUCKY SOUNDS
-GAMEL( 200?, sc4luck7 ,0, sc4_3reel, sc4, sc4_state, sc4luck7tb, ROT0, "Mazooma","Lucky 7s (Mazooma) (Scorpion 4) (Top Box)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4luck7 ,0, sc4_3reel, sc4, sc4_state, sc4luck7tb, ROT0, "Mazooma","Lucky 7s (Mazooma) (Scorpion 4) (Top Box)", MACHINE_FLAGS, layout_bfm_sc4 )
// PAY UNIT ERR 17
-GAMEL( 200?, sc4luck7a ,sc4luck7, sc4_3reel_200, sc4, sc4_state, sc4luck7, ROT0, "Mazooma","Lucky 7s (Mazooma) (Scorpion 4) (set 1)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4luck7b ,sc4luck7, sc4_3reel_200, sc4, sc4_state, sc4luck7, ROT0, "Mazooma","Lucky 7s (Mazooma) (Scorpion 4) (set 2)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4luck7c ,sc4luck7, sc4_3reel_200, sc4, sc4_state, sc4luck7, ROT0, "Mazooma","Lucky 7s (Mazooma) (Scorpion 4) (set 3)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4luck7a ,sc4luck7, sc4_3reel_200, sc4, sc4_state, sc4luck7, ROT0, "Mazooma","Lucky 7s (Mazooma) (Scorpion 4) (set 1)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4luck7b ,sc4luck7, sc4_3reel_200, sc4, sc4_state, sc4luck7, ROT0, "Mazooma","Lucky 7s (Mazooma) (Scorpion 4) (set 2)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4luck7c ,sc4luck7, sc4_3reel_200, sc4, sc4_state, sc4luck7, ROT0, "Mazooma","Lucky 7s (Mazooma) (Scorpion 4) (set 3)", MACHINE_FLAGS, layout_bfm_sc4 )
// PR2085 LUCKY SEVENS LUCKY SEVENS ARCADE LUCKY SOUNDS LUCKY SEVENS
-GAMEL( 200?, sc4luck7d ,sc4luck7, sc4_3reel_200, sc4, sc4_state, sc4luck7, ROT0, "Mazooma","Lucky 7s (Mazooma) (Scorpion 4) (set 4)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4luck7d ,sc4luck7, sc4_3reel_200, sc4, sc4_state, sc4luck7, ROT0, "Mazooma","Lucky 7s (Mazooma) (Scorpion 4) (set 4)", MACHINE_FLAGS, layout_bfm_sc4 )
@@ -48436,40 +48438,40 @@ DRIVER_INIT_MEMBER(sc4_state,sc4luckb_mbus)
}
// PR1033 CASINO LUCKY BALLS PR1033 LUCKY BALLS SOUNDS11
-GAMEL( 200?, sc4luckb ,0, sc4_200_4r, sc4, sc4_state, sc4luckb, ROT0, "BFM","Lucky Balls Casino (Bellfruit) (Scorpion 4) (set 1)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4luckba ,sc4luckb, sc4_200_4r, sc4, sc4_state, sc4luckb, ROT0, "BFM","Lucky Balls Casino (Bellfruit) (Scorpion 4) (set 2)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4luckbb ,sc4luckb, sc4_200_4r, sc4, sc4_state, sc4luckb, ROT0, "BFM","Lucky Balls Casino (Bellfruit) (Scorpion 4) (set 3)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4luckbc ,sc4luckb, sc4_200_4r, sc4, sc4_state, sc4luckb, ROT0, "BFM","Lucky Balls Casino (Bellfruit) (Scorpion 4) (set 4)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4luckbd ,sc4luckb, sc4_200_4r, sc4, sc4_state, sc4luckb, ROT0, "BFM","Lucky Balls Casino (Bellfruit) (Scorpion 4) (set 5)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4luckbe ,sc4luckb, sc4_200_4r, sc4, sc4_state, sc4luckb, ROT0, "BFM","Lucky Balls Casino (Bellfruit) (Scorpion 4) (set 6)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4luckbf ,sc4luckb, sc4_200_4r, sc4, sc4_state, sc4luckb, ROT0, "BFM","Lucky Balls Casino (Bellfruit) (Scorpion 4) (set 7)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4luckbg ,sc4luckb, sc4_200_4r, sc4, sc4_state, sc4luckb, ROT0, "BFM","Lucky Balls Casino (Bellfruit) (Scorpion 4) (set 8)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4luckbh ,sc4luckb, sc4_200_4r, sc4, sc4_state, sc4luckb, ROT0, "BFM","Lucky Balls Casino (Bellfruit) (Scorpion 4) (set 9)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4luckbi ,sc4luckb, sc4_200_4r, sc4, sc4_state, sc4luckb, ROT0, "BFM","Lucky Balls Casino (Bellfruit) (Scorpion 4) (set 10)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4luckbj ,sc4luckb, sc4_200_4r, sc4, sc4_state, sc4luckb, ROT0, "BFM","Lucky Balls Casino (Bellfruit) (Scorpion 4) (set 11)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4luckbk ,sc4luckb, sc4_200_4r, sc4, sc4_state, sc4luckb, ROT0, "BFM","Lucky Balls Casino (Bellfruit) (Scorpion 4) (set 12)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4luckbl ,sc4luckb, sc4_200_4r, sc4, sc4_state, sc4luckb, ROT0, "BFM","Lucky Balls Casino (Bellfruit) (Scorpion 4) (set 13)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4luckbm ,sc4luckb, sc4_200_4r, sc4, sc4_state, sc4luckb, ROT0, "BFM","Lucky Balls Casino (Bellfruit) (Scorpion 4) (set 14)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4luckbn ,sc4luckb, sc4_200_4r, sc4, sc4_state, sc4luckb, ROT0, "BFM","Lucky Balls Casino (Bellfruit) (Scorpion 4) (set 15)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4luckbo ,sc4luckb, sc4_200_4r, sc4, sc4_state, sc4luckb, ROT0, "BFM","Lucky Balls Casino (Bellfruit) (Scorpion 4) (set 16)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4luckbp ,sc4luckb, sc4_200_4r, sc4, sc4_state, sc4luckb, ROT0, "BFM","Lucky Balls Casino (Bellfruit) (Scorpion 4) (set 17)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4luckbt ,sc4luckb, sc4_200_4r, sc4, sc4_state, sc4luckb, ROT0, "BFM","Lucky Balls Casino (Bellfruit) (Scorpion 4) (set 18)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4luckbu ,sc4luckb, sc4_200_4r, sc4, sc4_state, sc4luckb, ROT0, "BFM","Lucky Balls Casino (Bellfruit) (Scorpion 4) (set 19)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4luckbv ,sc4luckb, sc4_200_4r, sc4, sc4_state, sc4luckb, ROT0, "BFM","Lucky Balls Casino (Bellfruit) (Scorpion 4) (set 20)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4luckbw ,sc4luckb, sc4_200_4r, sc4, sc4_state, sc4luckb, ROT0, "BFM","Lucky Balls Casino (Bellfruit) (Scorpion 4) (set 21)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4luckbx ,sc4luckb, sc4_200_4r, sc4, sc4_state, sc4luckb, ROT0, "BFM","Lucky Balls Casino (Bellfruit) (Scorpion 4) (set 22)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4luckb1 ,sc4luckb, sc4_200_4r, sc4, sc4_state, sc4luckb, ROT0, "BFM","Lucky Balls Casino (Bellfruit) (Scorpion 4) (set 23)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4luckb2 ,sc4luckb, sc4_200_4r, sc4, sc4_state, sc4luckb, ROT0, "BFM","Lucky Balls Casino (Bellfruit) (Scorpion 4) (set 24)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4luckb3 ,sc4luckb, sc4_200_4r, sc4, sc4_state, sc4luckb, ROT0, "BFM","Lucky Balls Casino (Bellfruit) (Scorpion 4) (set 25)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4luckb4 ,sc4luckb, sc4_200_4r, sc4, sc4_state, sc4luckb, ROT0, "BFM","Lucky Balls Casino (Bellfruit) (Scorpion 4) (set 26)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4luckb ,0, sc4_200_4r, sc4, sc4_state, sc4luckb, ROT0, "BFM","Lucky Balls Casino (Bellfruit) (Scorpion 4) (set 1)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4luckba ,sc4luckb, sc4_200_4r, sc4, sc4_state, sc4luckb, ROT0, "BFM","Lucky Balls Casino (Bellfruit) (Scorpion 4) (set 2)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4luckbb ,sc4luckb, sc4_200_4r, sc4, sc4_state, sc4luckb, ROT0, "BFM","Lucky Balls Casino (Bellfruit) (Scorpion 4) (set 3)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4luckbc ,sc4luckb, sc4_200_4r, sc4, sc4_state, sc4luckb, ROT0, "BFM","Lucky Balls Casino (Bellfruit) (Scorpion 4) (set 4)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4luckbd ,sc4luckb, sc4_200_4r, sc4, sc4_state, sc4luckb, ROT0, "BFM","Lucky Balls Casino (Bellfruit) (Scorpion 4) (set 5)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4luckbe ,sc4luckb, sc4_200_4r, sc4, sc4_state, sc4luckb, ROT0, "BFM","Lucky Balls Casino (Bellfruit) (Scorpion 4) (set 6)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4luckbf ,sc4luckb, sc4_200_4r, sc4, sc4_state, sc4luckb, ROT0, "BFM","Lucky Balls Casino (Bellfruit) (Scorpion 4) (set 7)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4luckbg ,sc4luckb, sc4_200_4r, sc4, sc4_state, sc4luckb, ROT0, "BFM","Lucky Balls Casino (Bellfruit) (Scorpion 4) (set 8)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4luckbh ,sc4luckb, sc4_200_4r, sc4, sc4_state, sc4luckb, ROT0, "BFM","Lucky Balls Casino (Bellfruit) (Scorpion 4) (set 9)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4luckbi ,sc4luckb, sc4_200_4r, sc4, sc4_state, sc4luckb, ROT0, "BFM","Lucky Balls Casino (Bellfruit) (Scorpion 4) (set 10)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4luckbj ,sc4luckb, sc4_200_4r, sc4, sc4_state, sc4luckb, ROT0, "BFM","Lucky Balls Casino (Bellfruit) (Scorpion 4) (set 11)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4luckbk ,sc4luckb, sc4_200_4r, sc4, sc4_state, sc4luckb, ROT0, "BFM","Lucky Balls Casino (Bellfruit) (Scorpion 4) (set 12)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4luckbl ,sc4luckb, sc4_200_4r, sc4, sc4_state, sc4luckb, ROT0, "BFM","Lucky Balls Casino (Bellfruit) (Scorpion 4) (set 13)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4luckbm ,sc4luckb, sc4_200_4r, sc4, sc4_state, sc4luckb, ROT0, "BFM","Lucky Balls Casino (Bellfruit) (Scorpion 4) (set 14)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4luckbn ,sc4luckb, sc4_200_4r, sc4, sc4_state, sc4luckb, ROT0, "BFM","Lucky Balls Casino (Bellfruit) (Scorpion 4) (set 15)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4luckbo ,sc4luckb, sc4_200_4r, sc4, sc4_state, sc4luckb, ROT0, "BFM","Lucky Balls Casino (Bellfruit) (Scorpion 4) (set 16)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4luckbp ,sc4luckb, sc4_200_4r, sc4, sc4_state, sc4luckb, ROT0, "BFM","Lucky Balls Casino (Bellfruit) (Scorpion 4) (set 17)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4luckbt ,sc4luckb, sc4_200_4r, sc4, sc4_state, sc4luckb, ROT0, "BFM","Lucky Balls Casino (Bellfruit) (Scorpion 4) (set 18)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4luckbu ,sc4luckb, sc4_200_4r, sc4, sc4_state, sc4luckb, ROT0, "BFM","Lucky Balls Casino (Bellfruit) (Scorpion 4) (set 19)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4luckbv ,sc4luckb, sc4_200_4r, sc4, sc4_state, sc4luckb, ROT0, "BFM","Lucky Balls Casino (Bellfruit) (Scorpion 4) (set 20)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4luckbw ,sc4luckb, sc4_200_4r, sc4, sc4_state, sc4luckb, ROT0, "BFM","Lucky Balls Casino (Bellfruit) (Scorpion 4) (set 21)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4luckbx ,sc4luckb, sc4_200_4r, sc4, sc4_state, sc4luckb, ROT0, "BFM","Lucky Balls Casino (Bellfruit) (Scorpion 4) (set 22)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4luckb1 ,sc4luckb, sc4_200_4r, sc4, sc4_state, sc4luckb, ROT0, "BFM","Lucky Balls Casino (Bellfruit) (Scorpion 4) (set 23)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4luckb2 ,sc4luckb, sc4_200_4r, sc4, sc4_state, sc4luckb, ROT0, "BFM","Lucky Balls Casino (Bellfruit) (Scorpion 4) (set 24)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4luckb3 ,sc4luckb, sc4_200_4r, sc4, sc4_state, sc4luckb, ROT0, "BFM","Lucky Balls Casino (Bellfruit) (Scorpion 4) (set 25)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4luckb4 ,sc4luckb, sc4_200_4r, sc4, sc4_state, sc4luckb, ROT0, "BFM","Lucky Balls Casino (Bellfruit) (Scorpion 4) (set 26)", MACHINE_FLAGS, layout_bfm_sc4 )
// PR1033 CASINO LUCKY BALLS PR1033 LUCKY BALLS SOUNDS11 LUCKY BALLS ARCADE
-GAMEL( 200?, sc4luckbq ,sc4luckb, sc4_200_4r, sc4, sc4_state, sc4luckb_mbus, ROT0, "BFM","Lucky Balls Casino Arcade (Bellfruit) (Scorpion 4) (set 1)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4luckbr ,sc4luckb, sc4_200_4r, sc4, sc4_state, sc4luckb_mbus, ROT0, "BFM","Lucky Balls Casino Arcade (Bellfruit) (Scorpion 4) (set 2)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4luckbs ,sc4luckb, sc4_200_4r, sc4, sc4_state, sc4luckb_mbus, ROT0, "BFM","Lucky Balls Casino Arcade (Bellfruit) (Scorpion 4) (set 3)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4luckby ,sc4luckb, sc4_200_4r, sc4, sc4_state, sc4luckb_mbus, ROT0, "BFM","Lucky Balls Casino Arcade (Bellfruit) (Scorpion 4) (set 4)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4luckbz ,sc4luckb, sc4_200_4r, sc4, sc4_state, sc4luckb_mbus, ROT0, "BFM","Lucky Balls Casino Arcade (Bellfruit) (Scorpion 4) (set 5)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 ) // incomplete pairing
-GAMEL( 200?, sc4luckb0 ,sc4luckb, sc4_200_4r, sc4, sc4_state, sc4luckb_mbus, ROT0, "BFM","Lucky Balls Casino Arcade (Bellfruit) (Scorpion 4) (set 6)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4luckbq ,sc4luckb, sc4_200_4r, sc4, sc4_state, sc4luckb_mbus, ROT0, "BFM","Lucky Balls Casino Arcade (Bellfruit) (Scorpion 4) (set 1)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4luckbr ,sc4luckb, sc4_200_4r, sc4, sc4_state, sc4luckb_mbus, ROT0, "BFM","Lucky Balls Casino Arcade (Bellfruit) (Scorpion 4) (set 2)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4luckbs ,sc4luckb, sc4_200_4r, sc4, sc4_state, sc4luckb_mbus, ROT0, "BFM","Lucky Balls Casino Arcade (Bellfruit) (Scorpion 4) (set 3)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4luckby ,sc4luckb, sc4_200_4r, sc4, sc4_state, sc4luckb_mbus, ROT0, "BFM","Lucky Balls Casino Arcade (Bellfruit) (Scorpion 4) (set 4)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4luckbz ,sc4luckb, sc4_200_4r, sc4, sc4_state, sc4luckb_mbus, ROT0, "BFM","Lucky Balls Casino Arcade (Bellfruit) (Scorpion 4) (set 5)", MACHINE_FLAGS, layout_bfm_sc4 ) // incomplete pairing
+GAMEL( 200?, sc4luckb0 ,sc4luckb, sc4_200_4r, sc4, sc4_state, sc4luckb_mbus, ROT0, "BFM","Lucky Balls Casino Arcade (Bellfruit) (Scorpion 4) (set 6)", MACHINE_FLAGS, layout_bfm_sc4 )
@@ -48485,21 +48487,21 @@ DRIVER_INIT_MEMBER(sc4_state,sc4mgrm)
}
// PR1132 CASINO MONEY GO ROUND PR1132 MONEY GO ROUND SOUNDS11
-GAMEL( 200?, sc4mgr ,0, sc4_200_4r, sc4, sc4_state, sc4mgr, ROT0, "BFM","Money Go Round Casino (Bellfruit) (Scorpion 4) (set 1)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4mgra ,sc4mgr, sc4_200_4r, sc4, sc4_state, sc4mgr, ROT0, "BFM","Money Go Round Casino (Bellfruit) (Scorpion 4) (set 2)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4mgrh ,sc4mgr, sc4_200_4r, sc4, sc4_state, sc4mgr, ROT0, "BFM","Money Go Round Casino (Bellfruit) (Scorpion 4) (set 3)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4mgri ,sc4mgr, sc4_200_4r, sc4, sc4_state, sc4mgr, ROT0, "BFM","Money Go Round Casino (Bellfruit) (Scorpion 4) (set 4)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4mgr ,0, sc4_200_4r, sc4, sc4_state, sc4mgr, ROT0, "BFM","Money Go Round Casino (Bellfruit) (Scorpion 4) (set 1)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4mgra ,sc4mgr, sc4_200_4r, sc4, sc4_state, sc4mgr, ROT0, "BFM","Money Go Round Casino (Bellfruit) (Scorpion 4) (set 2)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4mgrh ,sc4mgr, sc4_200_4r, sc4, sc4_state, sc4mgr, ROT0, "BFM","Money Go Round Casino (Bellfruit) (Scorpion 4) (set 3)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4mgri ,sc4mgr, sc4_200_4r, sc4, sc4_state, sc4mgr, ROT0, "BFM","Money Go Round Casino (Bellfruit) (Scorpion 4) (set 4)", MACHINE_FLAGS, layout_bfm_sc4 )
// PR1132 CASINO MONEY GO ROUND PR1132 MONEY GO ROUND SOUNDS11 MONEY GO ROUND S.SITE
-GAMEL( 200?, sc4mgrb ,sc4mgr, sc4_200_4r, sc4, sc4_state, sc4mgrm, ROT0, "BFM","Money Go Round Casino (Bellfruit) (Scorpion 4) (set 5)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4mgrc ,sc4mgr, sc4_200_4r, sc4, sc4_state, sc4mgrm, ROT0, "BFM","Money Go Round Casino (Bellfruit) (Scorpion 4) (set 6)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4mgrd ,sc4mgr, sc4_200_4r, sc4, sc4_state, sc4mgrm, ROT0, "BFM","Money Go Round Casino (Bellfruit) (Scorpion 4) (set 7)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4mgre ,sc4mgr, sc4_200_4r, sc4, sc4_state, sc4mgrm, ROT0, "BFM","Money Go Round Casino (Bellfruit) (Scorpion 4) (set 8)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4mgrf ,sc4mgr, sc4_200_4r, sc4, sc4_state, sc4mgrm, ROT0, "BFM","Money Go Round Casino (Bellfruit) (Scorpion 4) (set 9)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4mgrg ,sc4mgr, sc4_200_4r, sc4, sc4_state, sc4mgrm, ROT0, "BFM","Money Go Round Casino (Bellfruit) (Scorpion 4) (set 10)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4mgrj ,sc4mgr, sc4_200_4r, sc4, sc4_state, sc4mgrm, ROT0, "BFM","Money Go Round Casino (Bellfruit) (Scorpion 4) (set 11)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4mgrk ,sc4mgr, sc4_200_4r, sc4, sc4_state, sc4mgrm, ROT0, "BFM","Money Go Round Casino (Bellfruit) (Scorpion 4) (set 12)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4mgrl ,sc4mgr, sc4_200_4r, sc4, sc4_state, sc4mgrm, ROT0, "BFM","Money Go Round Casino (Bellfruit) (Scorpion 4) (set 13)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4mgrm ,sc4mgr, sc4_200_4r, sc4, sc4_state, sc4mgrm, ROT0, "BFM","Money Go Round Casino (Bellfruit) (Scorpion 4) (set 14)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4mgrb ,sc4mgr, sc4_200_4r, sc4, sc4_state, sc4mgrm, ROT0, "BFM","Money Go Round Casino (Bellfruit) (Scorpion 4) (set 5)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4mgrc ,sc4mgr, sc4_200_4r, sc4, sc4_state, sc4mgrm, ROT0, "BFM","Money Go Round Casino (Bellfruit) (Scorpion 4) (set 6)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4mgrd ,sc4mgr, sc4_200_4r, sc4, sc4_state, sc4mgrm, ROT0, "BFM","Money Go Round Casino (Bellfruit) (Scorpion 4) (set 7)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4mgre ,sc4mgr, sc4_200_4r, sc4, sc4_state, sc4mgrm, ROT0, "BFM","Money Go Round Casino (Bellfruit) (Scorpion 4) (set 8)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4mgrf ,sc4mgr, sc4_200_4r, sc4, sc4_state, sc4mgrm, ROT0, "BFM","Money Go Round Casino (Bellfruit) (Scorpion 4) (set 9)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4mgrg ,sc4mgr, sc4_200_4r, sc4, sc4_state, sc4mgrm, ROT0, "BFM","Money Go Round Casino (Bellfruit) (Scorpion 4) (set 10)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4mgrj ,sc4mgr, sc4_200_4r, sc4, sc4_state, sc4mgrm, ROT0, "BFM","Money Go Round Casino (Bellfruit) (Scorpion 4) (set 11)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4mgrk ,sc4mgr, sc4_200_4r, sc4, sc4_state, sc4mgrm, ROT0, "BFM","Money Go Round Casino (Bellfruit) (Scorpion 4) (set 12)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4mgrl ,sc4mgr, sc4_200_4r, sc4, sc4_state, sc4mgrm, ROT0, "BFM","Money Go Round Casino (Bellfruit) (Scorpion 4) (set 13)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4mgrm ,sc4mgr, sc4_200_4r, sc4, sc4_state, sc4mgrm, ROT0, "BFM","Money Go Round Casino (Bellfruit) (Scorpion 4) (set 14)", MACHINE_FLAGS, layout_bfm_sc4 )
@@ -48515,21 +48517,21 @@ DRIVER_INIT_MEMBER(sc4_state,sc4mspid_mbus)
}
// PR1325 CASINO MONEY SPIDER PR1325 MONEYSPIDER SOUNDS11
-GAMEL( 200?, sc4mspid ,0, sc4_200_4r, sc4, sc4_state, sc4mspid, ROT0, "BFM","Casino Money Spider (Bellfruit) (Scorpion 4) (set 1)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4mspida ,sc4mspid, sc4_200_4r, sc4, sc4_state, sc4mspid, ROT0, "BFM","Casino Money Spider (Bellfruit) (Scorpion 4) (set 2)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4mspidb ,sc4mspid, sc4_200_4r, sc4, sc4_state, sc4mspid, ROT0, "BFM","Casino Money Spider (Bellfruit) (Scorpion 4) (set 3)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4mspidc ,sc4mspid, sc4_200_4r, sc4, sc4_state, sc4mspid, ROT0, "BFM","Casino Money Spider (Bellfruit) (Scorpion 4) (set 4)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4mspidd ,sc4mspid, sc4_200_4r, sc4, sc4_state, sc4mspid, ROT0, "BFM","Casino Money Spider (Bellfruit) (Scorpion 4) (set 5)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4mspide ,sc4mspid, sc4_200_4r, sc4, sc4_state, sc4mspid, ROT0, "BFM","Casino Money Spider (Bellfruit) (Scorpion 4) (set 6)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4mspidf ,sc4mspid, sc4_200_4r, sc4, sc4_state, sc4mspid, ROT0, "BFM","Casino Money Spider (Bellfruit) (Scorpion 4) (set 7)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4mspidg ,sc4mspid, sc4_200_4r, sc4, sc4_state, sc4mspid, ROT0, "BFM","Casino Money Spider (Bellfruit) (Scorpion 4) (set 8)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4mspidj ,sc4mspid, sc4_200_4r, sc4, sc4_state, sc4mspid, ROT0, "BFM","Casino Money Spider (Bellfruit) (Scorpion 4) (set 9)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4mspidk ,sc4mspid, sc4_200_4r, sc4, sc4_state, sc4mspid, ROT0, "BFM","Casino Money Spider (Bellfruit) (Scorpion 4) (set 10)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4mspidl ,sc4mspid, sc4_200_4r, sc4, sc4_state, sc4mspid, ROT0, "BFM","Casino Money Spider (Bellfruit) (Scorpion 4) (set 11)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4mspidm ,sc4mspid, sc4_200_4r, sc4, sc4_state, sc4mspid, ROT0, "BFM","Casino Money Spider (Bellfruit) (Scorpion 4) (set 12)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4mspid ,0, sc4_200_4r, sc4, sc4_state, sc4mspid, ROT0, "BFM","Casino Money Spider (Bellfruit) (Scorpion 4) (set 1)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4mspida ,sc4mspid, sc4_200_4r, sc4, sc4_state, sc4mspid, ROT0, "BFM","Casino Money Spider (Bellfruit) (Scorpion 4) (set 2)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4mspidb ,sc4mspid, sc4_200_4r, sc4, sc4_state, sc4mspid, ROT0, "BFM","Casino Money Spider (Bellfruit) (Scorpion 4) (set 3)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4mspidc ,sc4mspid, sc4_200_4r, sc4, sc4_state, sc4mspid, ROT0, "BFM","Casino Money Spider (Bellfruit) (Scorpion 4) (set 4)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4mspidd ,sc4mspid, sc4_200_4r, sc4, sc4_state, sc4mspid, ROT0, "BFM","Casino Money Spider (Bellfruit) (Scorpion 4) (set 5)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4mspide ,sc4mspid, sc4_200_4r, sc4, sc4_state, sc4mspid, ROT0, "BFM","Casino Money Spider (Bellfruit) (Scorpion 4) (set 6)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4mspidf ,sc4mspid, sc4_200_4r, sc4, sc4_state, sc4mspid, ROT0, "BFM","Casino Money Spider (Bellfruit) (Scorpion 4) (set 7)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4mspidg ,sc4mspid, sc4_200_4r, sc4, sc4_state, sc4mspid, ROT0, "BFM","Casino Money Spider (Bellfruit) (Scorpion 4) (set 8)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4mspidj ,sc4mspid, sc4_200_4r, sc4, sc4_state, sc4mspid, ROT0, "BFM","Casino Money Spider (Bellfruit) (Scorpion 4) (set 9)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4mspidk ,sc4mspid, sc4_200_4r, sc4, sc4_state, sc4mspid, ROT0, "BFM","Casino Money Spider (Bellfruit) (Scorpion 4) (set 10)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4mspidl ,sc4mspid, sc4_200_4r, sc4, sc4_state, sc4mspid, ROT0, "BFM","Casino Money Spider (Bellfruit) (Scorpion 4) (set 11)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4mspidm ,sc4mspid, sc4_200_4r, sc4, sc4_state, sc4mspid, ROT0, "BFM","Casino Money Spider (Bellfruit) (Scorpion 4) (set 12)", MACHINE_FLAGS, layout_bfm_sc4 )
// PR1325 CASINO MONEY SPIDER MONEY SPIDER ARCADE PR1325 MONEYSPIDER SOUNDS11
-GAMEL( 200?, sc4mspidh ,sc4mspid, sc4_200_4r, sc4, sc4_state, sc4mspid_mbus, ROT0, "BFM","Casino Money Spider (Bellfruit) (Scorpion 4) (set 13)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4mspidi ,sc4mspid, sc4_200_4r, sc4, sc4_state, sc4mspid_mbus, ROT0, "BFM","Casino Money Spider (Bellfruit) (Scorpion 4) (set 14)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4mspidh ,sc4mspid, sc4_200_4r, sc4, sc4_state, sc4mspid_mbus, ROT0, "BFM","Casino Money Spider (Bellfruit) (Scorpion 4) (set 13)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4mspidi ,sc4mspid, sc4_200_4r, sc4, sc4_state, sc4mspid_mbus, ROT0, "BFM","Casino Money Spider (Bellfruit) (Scorpion 4) (set 14)", MACHINE_FLAGS, layout_bfm_sc4 )
@@ -48539,14 +48541,14 @@ DRIVER_INIT_MEMBER(sc4_state,sc4msclb)
}
// PR1040 MONEY SPINNER PR1040 MON S CLUB SOUNDS11
-GAMEL( 200?, sc4msclb ,0, sc4_200_4r, sc4, sc4_state, sc4msclb, ROT0, "BFM","Money Spinner Club (Bellfruit) (Scorpion 4) (set 1)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4msclba ,sc4msclb, sc4_200_4r, sc4, sc4_state, sc4msclb, ROT0, "BFM","Money Spinner Club (Bellfruit) (Scorpion 4) (set 2)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4msclbb ,sc4msclb, sc4_200_4r, sc4, sc4_state, sc4msclb, ROT0, "BFM","Money Spinner Club (Bellfruit) (Scorpion 4) (set 3)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4msclbc ,sc4msclb, sc4_200_4r, sc4, sc4_state, sc4msclb, ROT0, "BFM","Money Spinner Club (Bellfruit) (Scorpion 4) (set 4)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4msclbd ,sc4msclb, sc4_200_4r, sc4, sc4_state, sc4msclb, ROT0, "BFM","Money Spinner Club (Bellfruit) (Scorpion 4) (set 5)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4msclbe ,sc4msclb, sc4_200_4r, sc4, sc4_state, sc4msclb, ROT0, "BFM","Money Spinner Club (Bellfruit) (Scorpion 4) (set 6)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4msclbf ,sc4msclb, sc4_200_4r, sc4, sc4_state, sc4msclb, ROT0, "BFM","Money Spinner Club (Bellfruit) (Scorpion 4) (set 7)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4msclbg ,sc4msclb, sc4_200_4r, sc4, sc4_state, sc4msclb, ROT0, "BFM","Money Spinner Club (Bellfruit) (Scorpion 4) (set 8)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4msclb ,0, sc4_200_4r, sc4, sc4_state, sc4msclb, ROT0, "BFM","Money Spinner Club (Bellfruit) (Scorpion 4) (set 1)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4msclba ,sc4msclb, sc4_200_4r, sc4, sc4_state, sc4msclb, ROT0, "BFM","Money Spinner Club (Bellfruit) (Scorpion 4) (set 2)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4msclbb ,sc4msclb, sc4_200_4r, sc4, sc4_state, sc4msclb, ROT0, "BFM","Money Spinner Club (Bellfruit) (Scorpion 4) (set 3)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4msclbc ,sc4msclb, sc4_200_4r, sc4, sc4_state, sc4msclb, ROT0, "BFM","Money Spinner Club (Bellfruit) (Scorpion 4) (set 4)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4msclbd ,sc4msclb, sc4_200_4r, sc4, sc4_state, sc4msclb, ROT0, "BFM","Money Spinner Club (Bellfruit) (Scorpion 4) (set 5)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4msclbe ,sc4msclb, sc4_200_4r, sc4, sc4_state, sc4msclb, ROT0, "BFM","Money Spinner Club (Bellfruit) (Scorpion 4) (set 6)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4msclbf ,sc4msclb, sc4_200_4r, sc4, sc4_state, sc4msclb, ROT0, "BFM","Money Spinner Club (Bellfruit) (Scorpion 4) (set 7)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4msclbg ,sc4msclb, sc4_200_4r, sc4, sc4_state, sc4msclb, ROT0, "BFM","Money Spinner Club (Bellfruit) (Scorpion 4) (set 8)", MACHINE_FLAGS, layout_bfm_sc4 )
@@ -48557,18 +48559,18 @@ DRIVER_INIT_MEMBER(sc4_state,sc4mtb)
}
// PR6803 MONEY TO BURN PR6803 BURN SOUNDS11
-GAMEL( 200?, sc4mtb ,0, sc4_4reel, sc4, sc4_state, sc4mtb, ROT0, "BFM","Money To Burn (Bellfruit) (Scorpion 4) (set 1)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4mtba ,sc4mtb, sc4_4reel, sc4, sc4_state, sc4mtb, ROT0, "BFM","Money To Burn (Bellfruit) (Scorpion 4) (set 2)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4mtbb ,sc4mtb, sc4_4reel, sc4, sc4_state, sc4mtb, ROT0, "BFM","Money To Burn (Bellfruit) (Scorpion 4) (set 3)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4mtbe ,sc4mtb, sc4_4reel, sc4, sc4_state, sc4mtb, ROT0, "BFM","Money To Burn (Bellfruit) (Scorpion 4) (set 4)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4mtbf ,sc4mtb, sc4_4reel, sc4, sc4_state, sc4mtb, ROT0, "BFM","Money To Burn (Bellfruit) (Scorpion 4) (set 5)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4mtbg ,sc4mtb, sc4_4reel, sc4, sc4_state, sc4mtb, ROT0, "BFM","Money To Burn (Bellfruit) (Scorpion 4) (set 6)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4mtbj ,sc4mtb, sc4_4reel, sc4, sc4_state, sc4mtb, ROT0, "BFM","Money To Burn (Bellfruit) (Scorpion 4) (set 7)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4mtb ,0, sc4_4reel, sc4, sc4_state, sc4mtb, ROT0, "BFM","Money To Burn (Bellfruit) (Scorpion 4) (set 1)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4mtba ,sc4mtb, sc4_4reel, sc4, sc4_state, sc4mtb, ROT0, "BFM","Money To Burn (Bellfruit) (Scorpion 4) (set 2)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4mtbb ,sc4mtb, sc4_4reel, sc4, sc4_state, sc4mtb, ROT0, "BFM","Money To Burn (Bellfruit) (Scorpion 4) (set 3)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4mtbe ,sc4mtb, sc4_4reel, sc4, sc4_state, sc4mtb, ROT0, "BFM","Money To Burn (Bellfruit) (Scorpion 4) (set 4)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4mtbf ,sc4mtb, sc4_4reel, sc4, sc4_state, sc4mtb, ROT0, "BFM","Money To Burn (Bellfruit) (Scorpion 4) (set 5)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4mtbg ,sc4mtb, sc4_4reel, sc4, sc4_state, sc4mtb, ROT0, "BFM","Money To Burn (Bellfruit) (Scorpion 4) (set 6)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4mtbj ,sc4mtb, sc4_4reel, sc4, sc4_state, sc4mtb, ROT0, "BFM","Money To Burn (Bellfruit) (Scorpion 4) (set 7)", MACHINE_FLAGS, layout_bfm_sc4 )
// PR4603 MONEY TO BURN SP98 PR6803 BURN SOUNDS11
-GAMEL( 200?, sc4mtbc ,sc4mtb, sc4_4reel, sc4, sc4_state, sc4mtb, ROT0, "BFM","Money To Burn SP98 (Bellfruit) (Scorpion 4) (set 1)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4mtbd ,sc4mtb, sc4_4reel, sc4, sc4_state, sc4mtb, ROT0, "BFM","Money To Burn SP98 (Bellfruit) (Scorpion 4) (set 2)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4mtbh ,sc4mtb, sc4_4reel, sc4, sc4_state, sc4mtb, ROT0, "BFM","Money To Burn SP98 (Bellfruit) (Scorpion 4) (set 3)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4mtbi ,sc4mtb, sc4_4reel, sc4, sc4_state, sc4mtb, ROT0, "BFM","Money To Burn SP98 (Bellfruit) (Scorpion 4) (set 4)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4mtbc ,sc4mtb, sc4_4reel, sc4, sc4_state, sc4mtb, ROT0, "BFM","Money To Burn SP98 (Bellfruit) (Scorpion 4) (set 1)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4mtbd ,sc4mtb, sc4_4reel, sc4, sc4_state, sc4mtb, ROT0, "BFM","Money To Burn SP98 (Bellfruit) (Scorpion 4) (set 2)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4mtbh ,sc4mtb, sc4_4reel, sc4, sc4_state, sc4mtb, ROT0, "BFM","Money To Burn SP98 (Bellfruit) (Scorpion 4) (set 3)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4mtbi ,sc4mtb, sc4_4reel, sc4, sc4_state, sc4mtb, ROT0, "BFM","Money To Burn SP98 (Bellfruit) (Scorpion 4) (set 4)", MACHINE_FLAGS, layout_bfm_sc4 )
DRIVER_INIT_MEMBER(sc4_state,sc4mtbcl)
@@ -48578,22 +48580,22 @@ DRIVER_INIT_MEMBER(sc4_state,sc4mtbcl)
// PR6932 CLUB MONEY TO BURN PR6932 BURN SOUNDS11
-GAMEL( 200?, sc4mtbcl ,0, sc4_5reel, sc4, sc4_state, sc4mtbcl, ROT0, "BFM","Money To Burn Club (Bellfruit) (Scorpion 4) (set 1)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4mtbcla ,sc4mtbcl, sc4_5reel, sc4, sc4_state, sc4mtbcl, ROT0, "BFM","Money To Burn Club (Bellfruit) (Scorpion 4) (set 2)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4mtbclb ,sc4mtbcl, sc4_5reel, sc4, sc4_state, sc4mtbcl, ROT0, "BFM","Money To Burn Club (Bellfruit) (Scorpion 4) (set 3)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4mtbclc ,sc4mtbcl, sc4_5reel, sc4, sc4_state, sc4mtbcl, ROT0, "BFM","Money To Burn Club (Bellfruit) (Scorpion 4) (set 4)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4mtbcld ,sc4mtbcl, sc4_5reel, sc4, sc4_state, sc4mtbcl, ROT0, "BFM","Money To Burn Club (Bellfruit) (Scorpion 4) (set 5)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4mtbcle ,sc4mtbcl, sc4_5reel, sc4, sc4_state, sc4mtbcl, ROT0, "BFM","Money To Burn Club (Bellfruit) (Scorpion 4) (set 6)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4mtbclf ,sc4mtbcl, sc4_5reel, sc4, sc4_state, sc4mtbcl, ROT0, "BFM","Money To Burn Club (Bellfruit) (Scorpion 4) (set 7)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4mtbclg ,sc4mtbcl, sc4_5reel, sc4, sc4_state, sc4mtbcl, ROT0, "BFM","Money To Burn Club (Bellfruit) (Scorpion 4) (set 8)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4mtbclh ,sc4mtbcl, sc4_5reel, sc4, sc4_state, sc4mtbcl, ROT0, "BFM","Money To Burn Club (Bellfruit) (Scorpion 4) (set 9)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4mtbcli ,sc4mtbcl, sc4_5reel, sc4, sc4_state, sc4mtbcl, ROT0, "BFM","Money To Burn Club (Bellfruit) (Scorpion 4) (set 10)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4mtbclj ,sc4mtbcl, sc4_5reel, sc4, sc4_state, sc4mtbcl, ROT0, "BFM","Money To Burn Club (Bellfruit) (Scorpion 4) (set 11)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4mtbclk ,sc4mtbcl, sc4_5reel, sc4, sc4_state, sc4mtbcl, ROT0, "BFM","Money To Burn Club (Bellfruit) (Scorpion 4) (set 12)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4mtbcll ,sc4mtbcl, sc4_5reel, sc4, sc4_state, sc4mtbcl, ROT0, "BFM","Money To Burn Club (Bellfruit) (Scorpion 4) (set 13)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4mtbclm ,sc4mtbcl, sc4_5reel, sc4, sc4_state, sc4mtbcl, ROT0, "BFM","Money To Burn Club (Bellfruit) (Scorpion 4) (set 14)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4mtbcln ,sc4mtbcl, sc4_5reel, sc4, sc4_state, sc4mtbcl, ROT0, "BFM","Money To Burn Club (Bellfruit) (Scorpion 4) (set 15)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4mtbclo ,sc4mtbcl, sc4_5reel, sc4, sc4_state, sc4mtbcl, ROT0, "BFM","Money To Burn Club (Bellfruit) (Scorpion 4) (set 16)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4mtbcl ,0, sc4_5reel, sc4, sc4_state, sc4mtbcl, ROT0, "BFM","Money To Burn Club (Bellfruit) (Scorpion 4) (set 1)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4mtbcla ,sc4mtbcl, sc4_5reel, sc4, sc4_state, sc4mtbcl, ROT0, "BFM","Money To Burn Club (Bellfruit) (Scorpion 4) (set 2)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4mtbclb ,sc4mtbcl, sc4_5reel, sc4, sc4_state, sc4mtbcl, ROT0, "BFM","Money To Burn Club (Bellfruit) (Scorpion 4) (set 3)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4mtbclc ,sc4mtbcl, sc4_5reel, sc4, sc4_state, sc4mtbcl, ROT0, "BFM","Money To Burn Club (Bellfruit) (Scorpion 4) (set 4)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4mtbcld ,sc4mtbcl, sc4_5reel, sc4, sc4_state, sc4mtbcl, ROT0, "BFM","Money To Burn Club (Bellfruit) (Scorpion 4) (set 5)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4mtbcle ,sc4mtbcl, sc4_5reel, sc4, sc4_state, sc4mtbcl, ROT0, "BFM","Money To Burn Club (Bellfruit) (Scorpion 4) (set 6)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4mtbclf ,sc4mtbcl, sc4_5reel, sc4, sc4_state, sc4mtbcl, ROT0, "BFM","Money To Burn Club (Bellfruit) (Scorpion 4) (set 7)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4mtbclg ,sc4mtbcl, sc4_5reel, sc4, sc4_state, sc4mtbcl, ROT0, "BFM","Money To Burn Club (Bellfruit) (Scorpion 4) (set 8)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4mtbclh ,sc4mtbcl, sc4_5reel, sc4, sc4_state, sc4mtbcl, ROT0, "BFM","Money To Burn Club (Bellfruit) (Scorpion 4) (set 9)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4mtbcli ,sc4mtbcl, sc4_5reel, sc4, sc4_state, sc4mtbcl, ROT0, "BFM","Money To Burn Club (Bellfruit) (Scorpion 4) (set 10)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4mtbclj ,sc4mtbcl, sc4_5reel, sc4, sc4_state, sc4mtbcl, ROT0, "BFM","Money To Burn Club (Bellfruit) (Scorpion 4) (set 11)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4mtbclk ,sc4mtbcl, sc4_5reel, sc4, sc4_state, sc4mtbcl, ROT0, "BFM","Money To Burn Club (Bellfruit) (Scorpion 4) (set 12)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4mtbcll ,sc4mtbcl, sc4_5reel, sc4, sc4_state, sc4mtbcl, ROT0, "BFM","Money To Burn Club (Bellfruit) (Scorpion 4) (set 13)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4mtbclm ,sc4mtbcl, sc4_5reel, sc4, sc4_state, sc4mtbcl, ROT0, "BFM","Money To Burn Club (Bellfruit) (Scorpion 4) (set 14)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4mtbcln ,sc4mtbcl, sc4_5reel, sc4, sc4_state, sc4mtbcl, ROT0, "BFM","Money To Burn Club (Bellfruit) (Scorpion 4) (set 15)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4mtbclo ,sc4mtbcl, sc4_5reel, sc4, sc4_state, sc4mtbcl, ROT0, "BFM","Money To Burn Club (Bellfruit) (Scorpion 4) (set 16)", MACHINE_FLAGS, layout_bfm_sc4 )
@@ -48604,8 +48606,8 @@ DRIVER_INIT_MEMBER(sc4_state,sc4mono5)
DRIVER_INIT_CALL(sc4);
}
-GAMEL( 200?, sc4mono5 ,0, sc4_3reel_200, sc4, sc4_state, sc4mono5, ROT0, "Mazooma","Monopoly 5 (PR7089, MONF) (Mazooma) (Scorpion 4) (set 1)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 ) // PR7089 MONO 5 MONO SOUNDS MONOPOLY
-GAMEL( 200?, sc4mono5a ,sc4mono5, sc4_3reel_200, sc4, sc4_state, sc4mono5, ROT0, "Mazooma","Monopoly 5 (PR7089, MONF) (Mazooma) (Scorpion 4) (set 2)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 ) // PR7089 MONO 5 MONO SOUNDS MONOPOLY
+GAMEL( 200?, sc4mono5 ,0, sc4_3reel_200, sc4, sc4_state, sc4mono5, ROT0, "Mazooma","Monopoly 5 (PR7089, MONF) (Mazooma) (Scorpion 4) (set 1)", MACHINE_FLAGS, layout_bfm_sc4 ) // PR7089 MONO 5 MONO SOUNDS MONOPOLY
+GAMEL( 200?, sc4mono5a ,sc4mono5, sc4_3reel_200, sc4, sc4_state, sc4mono5, ROT0, "Mazooma","Monopoly 5 (PR7089, MONF) (Mazooma) (Scorpion 4) (set 2)", MACHINE_FLAGS, layout_bfm_sc4 ) // PR7089 MONO 5 MONO SOUNDS MONOPOLY
@@ -48621,26 +48623,26 @@ DRIVER_INIT_MEMBER(sc4_state,sc4monoa_mbus)
DRIVER_INIT_CALL(sc4mbus);
}
-GAMEL( 200?, sc4monoa ,0, sc4_3reel_200, sc4, sc4_state, sc4monoa_mbus, ROT0, "Mazooma","Monopoly Triple (PR2122, MOTR) (Mazooma) (Scorpion 4) (set 1)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 ) // PR2122 MONOPOLY MONOPOLY TRIPLE ARCADE MONO SOUNDS MONOPOLY
-GAMEL( 200?, sc4monoaa ,sc4monoa, sc4_3reel_200, sc4, sc4_state, sc4monoa_mbus, ROT0, "Mazooma","Monopoly Triple (PR2122, MOTR) (Mazooma) (Scorpion 4) (set 2)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 ) // ^^
-GAMEL( 200?, sc4monoad ,sc4monoa, sc4_3reel_200, sc4, sc4_state, sc4monoa_mbus, ROT0, "Mazooma","Monopoly Triple (PR2122, MOTR) (Mazooma) (Scorpion 4) (set 5)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 ) // ^^
-GAMEL( 200?, sc4monoae ,sc4monoa, sc4_3reel_200, sc4, sc4_state, sc4monoa_mbus, ROT0, "Mazooma","Monopoly Triple (PR2122, MOTR) (Mazooma) (Scorpion 4) (set 6)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 ) // ^^
-GAMEL( 200?, sc4monoaf ,sc4monoa, sc4_3reel_200, sc4, sc4_state, sc4monoa_mbus, ROT0, "Mazooma","Monopoly Triple (PR2122, MOTR) (Mazooma) (Scorpion 4) (set 7)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 ) // ^^
-GAMEL( 200?, sc4monoag ,sc4monoa, sc4_3reel_200, sc4, sc4_state, sc4monoa_mbus, ROT0, "Mazooma","Monopoly Triple (PR2122, MOTR) (Mazooma) (Scorpion 4) (set 8)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 ) // ^^
+GAMEL( 200?, sc4monoa ,0, sc4_3reel_200, sc4, sc4_state, sc4monoa_mbus, ROT0, "Mazooma","Monopoly Triple (PR2122, MOTR) (Mazooma) (Scorpion 4) (set 1)", MACHINE_FLAGS, layout_bfm_sc4 ) // PR2122 MONOPOLY MONOPOLY TRIPLE ARCADE MONO SOUNDS MONOPOLY
+GAMEL( 200?, sc4monoaa ,sc4monoa, sc4_3reel_200, sc4, sc4_state, sc4monoa_mbus, ROT0, "Mazooma","Monopoly Triple (PR2122, MOTR) (Mazooma) (Scorpion 4) (set 2)", MACHINE_FLAGS, layout_bfm_sc4 ) // ^^
+GAMEL( 200?, sc4monoad ,sc4monoa, sc4_3reel_200, sc4, sc4_state, sc4monoa_mbus, ROT0, "Mazooma","Monopoly Triple (PR2122, MOTR) (Mazooma) (Scorpion 4) (set 5)", MACHINE_FLAGS, layout_bfm_sc4 ) // ^^
+GAMEL( 200?, sc4monoae ,sc4monoa, sc4_3reel_200, sc4, sc4_state, sc4monoa_mbus, ROT0, "Mazooma","Monopoly Triple (PR2122, MOTR) (Mazooma) (Scorpion 4) (set 6)", MACHINE_FLAGS, layout_bfm_sc4 ) // ^^
+GAMEL( 200?, sc4monoaf ,sc4monoa, sc4_3reel_200, sc4, sc4_state, sc4monoa_mbus, ROT0, "Mazooma","Monopoly Triple (PR2122, MOTR) (Mazooma) (Scorpion 4) (set 7)", MACHINE_FLAGS, layout_bfm_sc4 ) // ^^
+GAMEL( 200?, sc4monoag ,sc4monoa, sc4_3reel_200, sc4, sc4_state, sc4monoa_mbus, ROT0, "Mazooma","Monopoly Triple (PR2122, MOTR) (Mazooma) (Scorpion 4) (set 8)", MACHINE_FLAGS, layout_bfm_sc4 ) // ^^
// PAY UNIT ERR 17
-GAMEL( 200?, sc4monoab ,sc4monoa, sc4_3reel_200, sc4, sc4_state, sc4monoa, ROT0, "Mazooma","Monopoly Triple (PR2122, MOTR) (Mazooma) (Scorpion 4) (set 3)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 ) // ^^
-GAMEL( 200?, sc4monoac ,sc4monoa, sc4_3reel_200, sc4, sc4_state, sc4monoa, ROT0, "Mazooma","Monopoly Triple (PR2122, MOTR) (Mazooma) (Scorpion 4) (set 4)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 ) // ^^
-GAMEL( 200?, sc4monoah ,sc4monoa, sc4_3reel_200, sc4, sc4_state, sc4monoa, ROT0, "Mazooma","Monopoly Triple (PR2122, MOTR) (Mazooma) (Scorpion 4) (set 9)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 ) // ^^
-GAMEL( 200?, sc4monoai ,sc4monoa, sc4_3reel_200, sc4, sc4_state, sc4monoa, ROT0, "Mazooma","Monopoly Triple (PR2122, MOTR) (Mazooma) (Scorpion 4) (set 10)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )// ^^
-GAMEL( 200?, sc4monoaj ,sc4monoa, sc4_3reel_200, sc4, sc4_state, sc4monoa, ROT0, "Mazooma","Monopoly Triple (PR2122, MOTR) (Mazooma) (Scorpion 4) (set 11)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )// ^^
-GAMEL( 200?, sc4monoak ,sc4monoa, sc4_3reel_200, sc4, sc4_state, sc4monoa, ROT0, "Mazooma","Monopoly Triple (PR2122, MOTR) (Mazooma) (Scorpion 4) (set 12)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )// ^^
+GAMEL( 200?, sc4monoab ,sc4monoa, sc4_3reel_200, sc4, sc4_state, sc4monoa, ROT0, "Mazooma","Monopoly Triple (PR2122, MOTR) (Mazooma) (Scorpion 4) (set 3)", MACHINE_FLAGS, layout_bfm_sc4 ) // ^^
+GAMEL( 200?, sc4monoac ,sc4monoa, sc4_3reel_200, sc4, sc4_state, sc4monoa, ROT0, "Mazooma","Monopoly Triple (PR2122, MOTR) (Mazooma) (Scorpion 4) (set 4)", MACHINE_FLAGS, layout_bfm_sc4 ) // ^^
+GAMEL( 200?, sc4monoah ,sc4monoa, sc4_3reel_200, sc4, sc4_state, sc4monoa, ROT0, "Mazooma","Monopoly Triple (PR2122, MOTR) (Mazooma) (Scorpion 4) (set 9)", MACHINE_FLAGS, layout_bfm_sc4 ) // ^^
+GAMEL( 200?, sc4monoai ,sc4monoa, sc4_3reel_200, sc4, sc4_state, sc4monoa, ROT0, "Mazooma","Monopoly Triple (PR2122, MOTR) (Mazooma) (Scorpion 4) (set 10)", MACHINE_FLAGS, layout_bfm_sc4 )// ^^
+GAMEL( 200?, sc4monoaj ,sc4monoa, sc4_3reel_200, sc4, sc4_state, sc4monoa, ROT0, "Mazooma","Monopoly Triple (PR2122, MOTR) (Mazooma) (Scorpion 4) (set 11)", MACHINE_FLAGS, layout_bfm_sc4 )// ^^
+GAMEL( 200?, sc4monoak ,sc4monoa, sc4_3reel_200, sc4, sc4_state, sc4monoa, ROT0, "Mazooma","Monopoly Triple (PR2122, MOTR) (Mazooma) (Scorpion 4) (set 12)", MACHINE_FLAGS, layout_bfm_sc4 )// ^^
-GAMEL( 200?, sc4monoal ,sc4monoa, sc4_3reel_200, sc4, sc4_state, sc4monoa, ROT0, "Mazooma","Monopoly Triple (PR2122, MOTR) (Mazooma) (Scorpion 4) (set 13)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )// PR2122 MONOPOLY MONOPOLY TRIPLE ARCADE MONOPOLY TRIPLE
-GAMEL( 200?, sc4monoam ,sc4monoa, sc4_3reel_200, sc4, sc4_state, sc4monoa, ROT0, "Mazooma","Monopoly Triple (PR2122, MOTR) (Mazooma) (Scorpion 4) (set 14)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )// ^^
-GAMEL( 200?, sc4monoan ,sc4monoa, sc4_3reel_200, sc4, sc4_state, sc4monoa, ROT0, "Mazooma","Monopoly Triple (PR2122, MOTR) (Mazooma) (Scorpion 4) (set 15)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )// PR2122 MONOPOLY MONO SOUNDS MONOPOLY
-GAMEL( 200?, sc4monoao ,sc4monoa, sc4_3reel_200, sc4, sc4_state, sc4monoa, ROT0, "Mazooma","Monopoly Triple (PR2122, MOTR) (Mazooma) (Scorpion 4) (set 16)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )// ^^
-GAMEL( 200?, sc4monoap ,sc4monoa, sc4_3reel_200, sc4, sc4_state, sc4monoa, ROT0, "Mazooma","Monopoly Triple (PR2122, MOTR) (Mazooma) (Scorpion 4) (set 17)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )// ^^
-GAMEL( 200?, sc4monoaq ,sc4monoa, sc4_3reel_200, sc4, sc4_state, sc4monoa, ROT0, "Mazooma","Monopoly Triple (PR2122, MOTR) (Mazooma) (Scorpion 4) (set 18)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )// ^^
+GAMEL( 200?, sc4monoal ,sc4monoa, sc4_3reel_200, sc4, sc4_state, sc4monoa, ROT0, "Mazooma","Monopoly Triple (PR2122, MOTR) (Mazooma) (Scorpion 4) (set 13)", MACHINE_FLAGS, layout_bfm_sc4 )// PR2122 MONOPOLY MONOPOLY TRIPLE ARCADE MONOPOLY TRIPLE
+GAMEL( 200?, sc4monoam ,sc4monoa, sc4_3reel_200, sc4, sc4_state, sc4monoa, ROT0, "Mazooma","Monopoly Triple (PR2122, MOTR) (Mazooma) (Scorpion 4) (set 14)", MACHINE_FLAGS, layout_bfm_sc4 )// ^^
+GAMEL( 200?, sc4monoan ,sc4monoa, sc4_3reel_200, sc4, sc4_state, sc4monoa, ROT0, "Mazooma","Monopoly Triple (PR2122, MOTR) (Mazooma) (Scorpion 4) (set 15)", MACHINE_FLAGS, layout_bfm_sc4 )// PR2122 MONOPOLY MONO SOUNDS MONOPOLY
+GAMEL( 200?, sc4monoao ,sc4monoa, sc4_3reel_200, sc4, sc4_state, sc4monoa, ROT0, "Mazooma","Monopoly Triple (PR2122, MOTR) (Mazooma) (Scorpion 4) (set 16)", MACHINE_FLAGS, layout_bfm_sc4 )// ^^
+GAMEL( 200?, sc4monoap ,sc4monoa, sc4_3reel_200, sc4, sc4_state, sc4monoa, ROT0, "Mazooma","Monopoly Triple (PR2122, MOTR) (Mazooma) (Scorpion 4) (set 17)", MACHINE_FLAGS, layout_bfm_sc4 )// ^^
+GAMEL( 200?, sc4monoaq ,sc4monoa, sc4_3reel_200, sc4, sc4_state, sc4monoa, ROT0, "Mazooma","Monopoly Triple (PR2122, MOTR) (Mazooma) (Scorpion 4) (set 18)", MACHINE_FLAGS, layout_bfm_sc4 )// ^^
DRIVER_INIT_MEMBER(sc4_state,sc4monop)
@@ -48648,34 +48650,34 @@ DRIVER_INIT_MEMBER(sc4_state,sc4monop)
DRIVER_INIT_CALL(sc4);
}
-GAMEL( 200?, sc4monop ,sc4monoa, sc4_3reel, sc4, sc4_state, sc4monop, ROT0, "Mazooma","Monopoly Triple (PR2056, TBOX) (Mazooma) (Scorpion 4) (Top Box, set 1)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 ) // PR2056 MONOP TRIPLE MONO SOUNDS MONOP TRIPLE
-GAMEL( 200?, sc4monopa ,sc4monoa, sc4_3reel, sc4, sc4_state, sc4monop, ROT0, "Mazooma","Monopoly Triple (PR2056, TBOX) (Mazooma) (Scorpion 4) (Top Box, set 2)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 ) // PR2056 MONOP TRIPLE MONO SOUNDS MONOP TRIPLE
+GAMEL( 200?, sc4monop ,sc4monoa, sc4_3reel, sc4, sc4_state, sc4monop, ROT0, "Mazooma","Monopoly Triple (PR2056, TBOX) (Mazooma) (Scorpion 4) (Top Box, set 1)", MACHINE_FLAGS, layout_bfm_sc4 ) // PR2056 MONOP TRIPLE MONO SOUNDS MONOP TRIPLE
+GAMEL( 200?, sc4monopa ,sc4monoa, sc4_3reel, sc4, sc4_state, sc4monop, ROT0, "Mazooma","Monopoly Triple (PR2056, TBOX) (Mazooma) (Scorpion 4) (Top Box, set 2)", MACHINE_FLAGS, layout_bfm_sc4 ) // PR2056 MONOP TRIPLE MONO SOUNDS MONOP TRIPLE
// I think this is different to the above, this is GM** (Grand Monopoly?)
-GAMEL( 200?, sc4mcas ,0, sc4, sc4, sc4_state, sc4, ROT0, "Mazooma","Monopoly Casino (PR2354) (Mazooma) (Scorpion 4) (GMBU, set 1)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 ) // PR2354 MONOPOLY CASINO MONOPOLY TRIPLE MAZ MONO SOUNDS MONOPOLY
-GAMEL( 200?, sc4mcasm ,sc4mcas, sc4, sc4, sc4_state, sc4, ROT0, "Mazooma","Monopoly Casino (PR2354) (Mazooma) (Scorpion 4) (GMBU, set 2)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 ) // ^^
-GAMEL( 200?, sc4mcasn ,sc4mcas, sc4, sc4, sc4_state, sc4, ROT0, "Mazooma","Monopoly Casino (PR2354) (Mazooma) (Scorpion 4) (GMBU, set 3)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 ) // ^^
-GAMEL( 200?, sc4mcaso ,sc4mcas, sc4, sc4, sc4_state, sc4, ROT0, "Mazooma","Monopoly Casino (PR2354) (Mazooma) (Scorpion 4) (GMBU, set 4)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 ) // ^^
-GAMEL( 200?, sc4mcasp ,sc4mcas, sc4, sc4, sc4_state, sc4, ROT0, "Mazooma","Monopoly Casino (PR2354) (Mazooma) (Scorpion 4) (GMBU, set 5)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 ) // ^^
-GAMEL( 200?, sc4mcasq ,sc4mcas, sc4, sc4, sc4_state, sc4, ROT0, "Mazooma","Monopoly Casino (PR2354) (Mazooma) (Scorpion 4) (GMBU, set 6)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 ) // ^^
-GAMEL( 200?, sc4mcasr ,sc4mcas, sc4, sc4, sc4_state, sc4, ROT0, "Mazooma","Monopoly Casino (PR2354) (Mazooma) (Scorpion 4) (GMBU, set 7)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 ) // ^^
-GAMEL( 200?, sc4mcass ,sc4mcas, sc4, sc4, sc4_state, sc4, ROT0, "Mazooma","Monopoly Casino (PR2354) (Mazooma) (Scorpion 4) (GMBU, set 8)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 ) // ^^
-GAMEL( 200?, sc4mcast ,sc4mcas, sc4, sc4, sc4_state, sc4, ROT0, "Mazooma","Monopoly Casino (PR2354) (Mazooma) (Scorpion 4) (GMBU, set 9)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 ) // ^^
-GAMEL( 200?, sc4mcasv ,sc4mcas, sc4, sc4, sc4_state, sc4, ROT0, "Mazooma","Monopoly Casino (PR2354) (Mazooma) (Scorpion 4) (GMBU, set 10)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )// ^^
-GAMEL( 200?, sc4mcasw ,sc4mcas, sc4, sc4, sc4_state, sc4, ROT0, "Mazooma","Monopoly Casino (PR2354) (Mazooma) (Scorpion 4) (GMBU, set 11)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )// ^^
-GAMEL( 200?, sc4mcasx ,sc4mcas, sc4, sc4, sc4_state, sc4, ROT0, "Mazooma","Monopoly Casino (PR2354) (Mazooma) (Scorpion 4) (GMBU, set 12)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )// ^^
-GAMEL( 200?, sc4mcasy ,sc4mcas, sc4, sc4, sc4_state, sc4, ROT0, "Mazooma","Monopoly Casino (PR2354) (Mazooma) (Scorpion 4) (GMBU, set 13)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )// ^^
-GAMEL( 200?, sc4mcasz ,sc4mcas, sc4, sc4, sc4_state, sc4, ROT0, "Mazooma","Monopoly Casino (PR2354) (Mazooma) (Scorpion 4) (GMBU, set 14)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )// ^^
-GAMEL( 200?, sc4mcas0 ,sc4mcas, sc4, sc4, sc4_state, sc4, ROT0, "Mazooma","Monopoly Casino (PR2354) (Mazooma) (Scorpion 4) (GMBU, set 15)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )// ^^
-GAMEL( 200?, sc4mcas1 ,sc4mcas, sc4, sc4, sc4_state, sc4, ROT0, "Mazooma","Monopoly Casino (PR2354) (Mazooma) (Scorpion 4) (GMBU, set 16)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )// ^^
-GAMEL( 200?, sc4mcas2 ,sc4mcas, sc4, sc4, sc4_state, sc4, ROT0, "Mazooma","Monopoly Casino (PR2354) (Mazooma) (Scorpion 4) (GMBU, set 17)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )// ^^
-GAMEL( 200?, sc4mcas3 ,sc4mcas, sc4, sc4, sc4_state, sc4, ROT0, "Mazooma","Monopoly Casino (PR2354) (Mazooma) (Scorpion 4) (GMBU, set 18)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )// ^^
+GAMEL( 200?, sc4mcas ,0, sc4, sc4, sc4_state, sc4, ROT0, "Mazooma","Monopoly Casino (PR2354) (Mazooma) (Scorpion 4) (GMBU, set 1)", MACHINE_FLAGS, layout_bfm_sc4 ) // PR2354 MONOPOLY CASINO MONOPOLY TRIPLE MAZ MONO SOUNDS MONOPOLY
+GAMEL( 200?, sc4mcasm ,sc4mcas, sc4, sc4, sc4_state, sc4, ROT0, "Mazooma","Monopoly Casino (PR2354) (Mazooma) (Scorpion 4) (GMBU, set 2)", MACHINE_FLAGS, layout_bfm_sc4 ) // ^^
+GAMEL( 200?, sc4mcasn ,sc4mcas, sc4, sc4, sc4_state, sc4, ROT0, "Mazooma","Monopoly Casino (PR2354) (Mazooma) (Scorpion 4) (GMBU, set 3)", MACHINE_FLAGS, layout_bfm_sc4 ) // ^^
+GAMEL( 200?, sc4mcaso ,sc4mcas, sc4, sc4, sc4_state, sc4, ROT0, "Mazooma","Monopoly Casino (PR2354) (Mazooma) (Scorpion 4) (GMBU, set 4)", MACHINE_FLAGS, layout_bfm_sc4 ) // ^^
+GAMEL( 200?, sc4mcasp ,sc4mcas, sc4, sc4, sc4_state, sc4, ROT0, "Mazooma","Monopoly Casino (PR2354) (Mazooma) (Scorpion 4) (GMBU, set 5)", MACHINE_FLAGS, layout_bfm_sc4 ) // ^^
+GAMEL( 200?, sc4mcasq ,sc4mcas, sc4, sc4, sc4_state, sc4, ROT0, "Mazooma","Monopoly Casino (PR2354) (Mazooma) (Scorpion 4) (GMBU, set 6)", MACHINE_FLAGS, layout_bfm_sc4 ) // ^^
+GAMEL( 200?, sc4mcasr ,sc4mcas, sc4, sc4, sc4_state, sc4, ROT0, "Mazooma","Monopoly Casino (PR2354) (Mazooma) (Scorpion 4) (GMBU, set 7)", MACHINE_FLAGS, layout_bfm_sc4 ) // ^^
+GAMEL( 200?, sc4mcass ,sc4mcas, sc4, sc4, sc4_state, sc4, ROT0, "Mazooma","Monopoly Casino (PR2354) (Mazooma) (Scorpion 4) (GMBU, set 8)", MACHINE_FLAGS, layout_bfm_sc4 ) // ^^
+GAMEL( 200?, sc4mcast ,sc4mcas, sc4, sc4, sc4_state, sc4, ROT0, "Mazooma","Monopoly Casino (PR2354) (Mazooma) (Scorpion 4) (GMBU, set 9)", MACHINE_FLAGS, layout_bfm_sc4 ) // ^^
+GAMEL( 200?, sc4mcasv ,sc4mcas, sc4, sc4, sc4_state, sc4, ROT0, "Mazooma","Monopoly Casino (PR2354) (Mazooma) (Scorpion 4) (GMBU, set 10)", MACHINE_FLAGS, layout_bfm_sc4 )// ^^
+GAMEL( 200?, sc4mcasw ,sc4mcas, sc4, sc4, sc4_state, sc4, ROT0, "Mazooma","Monopoly Casino (PR2354) (Mazooma) (Scorpion 4) (GMBU, set 11)", MACHINE_FLAGS, layout_bfm_sc4 )// ^^
+GAMEL( 200?, sc4mcasx ,sc4mcas, sc4, sc4, sc4_state, sc4, ROT0, "Mazooma","Monopoly Casino (PR2354) (Mazooma) (Scorpion 4) (GMBU, set 12)", MACHINE_FLAGS, layout_bfm_sc4 )// ^^
+GAMEL( 200?, sc4mcasy ,sc4mcas, sc4, sc4, sc4_state, sc4, ROT0, "Mazooma","Monopoly Casino (PR2354) (Mazooma) (Scorpion 4) (GMBU, set 13)", MACHINE_FLAGS, layout_bfm_sc4 )// ^^
+GAMEL( 200?, sc4mcasz ,sc4mcas, sc4, sc4, sc4_state, sc4, ROT0, "Mazooma","Monopoly Casino (PR2354) (Mazooma) (Scorpion 4) (GMBU, set 14)", MACHINE_FLAGS, layout_bfm_sc4 )// ^^
+GAMEL( 200?, sc4mcas0 ,sc4mcas, sc4, sc4, sc4_state, sc4, ROT0, "Mazooma","Monopoly Casino (PR2354) (Mazooma) (Scorpion 4) (GMBU, set 15)", MACHINE_FLAGS, layout_bfm_sc4 )// ^^
+GAMEL( 200?, sc4mcas1 ,sc4mcas, sc4, sc4, sc4_state, sc4, ROT0, "Mazooma","Monopoly Casino (PR2354) (Mazooma) (Scorpion 4) (GMBU, set 16)", MACHINE_FLAGS, layout_bfm_sc4 )// ^^
+GAMEL( 200?, sc4mcas2 ,sc4mcas, sc4, sc4, sc4_state, sc4, ROT0, "Mazooma","Monopoly Casino (PR2354) (Mazooma) (Scorpion 4) (GMBU, set 17)", MACHINE_FLAGS, layout_bfm_sc4 )// ^^
+GAMEL( 200?, sc4mcas3 ,sc4mcas, sc4, sc4, sc4_state, sc4, ROT0, "Mazooma","Monopoly Casino (PR2354) (Mazooma) (Scorpion 4) (GMBU, set 18)", MACHINE_FLAGS, layout_bfm_sc4 )// ^^
// these have a different internal code compared to the PR2056 sets above which strongly indicates they're for the 'GMBU' sets above
-GAMEL( 200?, sc4mcask ,sc4mcas, sc4, sc4, sc4_state, sc4, ROT0, "Mazooma","Monopoly Casino (PR2056) (Mazooma) (Scorpion 4) (GMTB, Top Box, set 1)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 ) // PR2056 MONOP TRIPLE MONO SOUNDS MONOP TRIPLE
-GAMEL( 200?, sc4mcasu ,sc4mcas, sc4, sc4, sc4_state, sc4, ROT0, "Mazooma","Monopoly Casino (PR2056) (Mazooma) (Scorpion 4) (GMTB, Top Box, set 2)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 ) // ^^
-GAMEL( 200?, sc4mcas4 ,sc4mcas, sc4, sc4, sc4_state, sc4, ROT0, "Mazooma","Monopoly Casino (PR2056) (Mazooma) (Scorpion 4) (GMTB, Top Box, set 3)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 ) // ^^
+GAMEL( 200?, sc4mcask ,sc4mcas, sc4, sc4, sc4_state, sc4, ROT0, "Mazooma","Monopoly Casino (PR2056) (Mazooma) (Scorpion 4) (GMTB, Top Box, set 1)", MACHINE_FLAGS, layout_bfm_sc4 ) // PR2056 MONOP TRIPLE MONO SOUNDS MONOP TRIPLE
+GAMEL( 200?, sc4mcasu ,sc4mcas, sc4, sc4, sc4_state, sc4, ROT0, "Mazooma","Monopoly Casino (PR2056) (Mazooma) (Scorpion 4) (GMTB, Top Box, set 2)", MACHINE_FLAGS, layout_bfm_sc4 ) // ^^
+GAMEL( 200?, sc4mcas4 ,sc4mcas, sc4, sc4, sc4_state, sc4, ROT0, "Mazooma","Monopoly Casino (PR2056) (Mazooma) (Scorpion 4) (GMTB, Top Box, set 3)", MACHINE_FLAGS, layout_bfm_sc4 ) // ^^
@@ -48687,9 +48689,9 @@ DRIVER_INIT_MEMBER(sc4_state,sc4pacqp)
// PR7072 PAC MAN PACP SOUNDS PAC-MAN
-GAMEL( 200?, sc4pacqp ,0, sc4_4reel, sc4, sc4_state, sc4pacqp, ROT0, "QPS","Pac Man (PR7072, QPAC) (QPS) (Scorpion 4) (set 1)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4pacqpa ,sc4pacqp, sc4_4reel, sc4, sc4_state, sc4pacqp, ROT0, "QPS","Pac Man (PR7072, QPAC) (QPS) (Scorpion 4) (set 2)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4pacqpb ,sc4pacqp, sc4_4reel, sc4, sc4_state, sc4pacqp, ROT0, "QPS","Pac Man (PR7072, QPAC) (QPS) (Scorpion 4) (set 3)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4pacqp ,0, sc4_4reel, sc4, sc4_state, sc4pacqp, ROT0, "QPS","Pac Man (PR7072, QPAC) (QPS) (Scorpion 4) (set 1)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4pacqpa ,sc4pacqp, sc4_4reel, sc4, sc4_state, sc4pacqp, ROT0, "QPS","Pac Man (PR7072, QPAC) (QPS) (Scorpion 4) (set 2)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4pacqpb ,sc4pacqp, sc4_4reel, sc4, sc4_state, sc4pacqp, ROT0, "QPS","Pac Man (PR7072, QPAC) (QPS) (Scorpion 4) (set 3)", MACHINE_FLAGS, layout_bfm_sc4 )
@@ -48699,9 +48701,9 @@ DRIVER_INIT_MEMBER(sc4_state,sc4pacmn)
}
// PR7026 PACMAN PACMAN SOUNDS
-GAMEL( 200?, sc4pacmn ,0, sc4_4reel, sc4, sc4_state, sc4pacmn, ROT0, "Mazooma","Pac Man (PR7026, PMAN) (Mazooma) (Scorpion 4) (set 1)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 ) // this set doesn't start, CPU ends up dead? - needs valid jackpot / stake keys
-GAMEL( 200?, sc4pacmna ,sc4pacmn, sc4_4reel, sc4, sc4_state, sc4pacmn, ROT0, "Mazooma","Pac Man (PR7026, PMAN) (Mazooma) (Scorpion 4) (set 2)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4pacmnb ,sc4pacmn, sc4_4reel, sc4, sc4_state, sc4pacmn, ROT0, "Mazooma","Pac Man (PR7026, PMAN) (Mazooma) (Scorpion 4) (set 3)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4pacmn ,0, sc4_4reel, sc4, sc4_state, sc4pacmn, ROT0, "Mazooma","Pac Man (PR7026, PMAN) (Mazooma) (Scorpion 4) (set 1)", MACHINE_FLAGS, layout_bfm_sc4 ) // this set doesn't start, CPU ends up dead? - needs valid jackpot / stake keys
+GAMEL( 200?, sc4pacmna ,sc4pacmn, sc4_4reel, sc4, sc4_state, sc4pacmn, ROT0, "Mazooma","Pac Man (PR7026, PMAN) (Mazooma) (Scorpion 4) (set 2)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4pacmnb ,sc4pacmn, sc4_4reel, sc4, sc4_state, sc4pacmn, ROT0, "Mazooma","Pac Man (PR7026, PMAN) (Mazooma) (Scorpion 4) (set 3)", MACHINE_FLAGS, layout_bfm_sc4 )
@@ -48717,19 +48719,19 @@ DRIVER_INIT_MEMBER(sc4_state,sc4paccs_mbus)
}
// PR7049CASINO PACMAN PACMAN SOUNDS
-GAMEL( 200?, sc4paccs ,0, sc4_4reel, sc4, sc4_state, sc4paccs, ROT0, "Mazooma","Pac Man Casino (PR7049, PACL) (Mazooma) (Scorpion 4) (set 1)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4paccsa ,sc4paccs, sc4_4reel, sc4, sc4_state, sc4paccs, ROT0, "Mazooma","Pac Man Casino (PR7049, PACL) (Mazooma) (Scorpion 4) (set 2)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4paccsb ,sc4paccs, sc4_4reel, sc4, sc4_state, sc4paccs, ROT0, "Mazooma","Pac Man Casino (PR7049, PACL) (Mazooma) (Scorpion 4) (set 3)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4paccsc ,sc4paccs, sc4_4reel, sc4, sc4_state, sc4paccs, ROT0, "Mazooma","Pac Man Casino (PR7049, PACL) (Mazooma) (Scorpion 4) (set 4)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4paccsd ,sc4paccs, sc4_4reel, sc4, sc4_state, sc4paccs, ROT0, "Mazooma","Pac Man Casino (PR7049, PACL) (Mazooma) (Scorpion 4) (set 5)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4paccse ,sc4paccs, sc4_4reel, sc4, sc4_state, sc4paccs, ROT0, "Mazooma","Pac Man Casino (PR7049, PACL) (Mazooma) (Scorpion 4) (set 6)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4paccsf ,sc4paccs, sc4_4reel, sc4, sc4_state, sc4paccs, ROT0, "Mazooma","Pac Man Casino (PR7049, PACL) (Mazooma) (Scorpion 4) (set 7)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4paccsg ,sc4paccs, sc4_4reel, sc4, sc4_state, sc4paccs, ROT0, "Mazooma","Pac Man Casino (PR7049, PACL) (Mazooma) (Scorpion 4) (set 8)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4paccsj ,sc4paccs, sc4_4reel, sc4, sc4_state, sc4paccs, ROT0, "Mazooma","Pac Man Casino (PR7049, PACL) (Mazooma) (Scorpion 4) (set 9)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4paccsk ,sc4paccs, sc4_4reel, sc4, sc4_state, sc4paccs, ROT0, "Mazooma","Pac Man Casino (PR7049, PACL) (Mazooma) (Scorpion 4) (set 10)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4paccsl ,sc4paccs, sc4_4reel, sc4, sc4_state, sc4paccs, ROT0, "Mazooma","Pac Man Casino (PR7049, PACL) (Mazooma) (Scorpion 4) (set 11)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4paccsh ,sc4paccs, sc4_4reel, sc4, sc4_state, sc4paccs_mbus, ROT0, "Mazooma","Pac Man Casino (PR7049, PACL) (Mazooma) (Scorpion 4) (set 12)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4paccsi ,sc4paccs, sc4_4reel, sc4, sc4_state, sc4paccs_mbus, ROT0, "Mazooma","Pac Man Casino (PR7049, PACL) (Mazooma) (Scorpion 4) (set 13)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4paccs ,0, sc4_4reel, sc4, sc4_state, sc4paccs, ROT0, "Mazooma","Pac Man Casino (PR7049, PACL) (Mazooma) (Scorpion 4) (set 1)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4paccsa ,sc4paccs, sc4_4reel, sc4, sc4_state, sc4paccs, ROT0, "Mazooma","Pac Man Casino (PR7049, PACL) (Mazooma) (Scorpion 4) (set 2)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4paccsb ,sc4paccs, sc4_4reel, sc4, sc4_state, sc4paccs, ROT0, "Mazooma","Pac Man Casino (PR7049, PACL) (Mazooma) (Scorpion 4) (set 3)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4paccsc ,sc4paccs, sc4_4reel, sc4, sc4_state, sc4paccs, ROT0, "Mazooma","Pac Man Casino (PR7049, PACL) (Mazooma) (Scorpion 4) (set 4)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4paccsd ,sc4paccs, sc4_4reel, sc4, sc4_state, sc4paccs, ROT0, "Mazooma","Pac Man Casino (PR7049, PACL) (Mazooma) (Scorpion 4) (set 5)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4paccse ,sc4paccs, sc4_4reel, sc4, sc4_state, sc4paccs, ROT0, "Mazooma","Pac Man Casino (PR7049, PACL) (Mazooma) (Scorpion 4) (set 6)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4paccsf ,sc4paccs, sc4_4reel, sc4, sc4_state, sc4paccs, ROT0, "Mazooma","Pac Man Casino (PR7049, PACL) (Mazooma) (Scorpion 4) (set 7)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4paccsg ,sc4paccs, sc4_4reel, sc4, sc4_state, sc4paccs, ROT0, "Mazooma","Pac Man Casino (PR7049, PACL) (Mazooma) (Scorpion 4) (set 8)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4paccsj ,sc4paccs, sc4_4reel, sc4, sc4_state, sc4paccs, ROT0, "Mazooma","Pac Man Casino (PR7049, PACL) (Mazooma) (Scorpion 4) (set 9)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4paccsk ,sc4paccs, sc4_4reel, sc4, sc4_state, sc4paccs, ROT0, "Mazooma","Pac Man Casino (PR7049, PACL) (Mazooma) (Scorpion 4) (set 10)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4paccsl ,sc4paccs, sc4_4reel, sc4, sc4_state, sc4paccs, ROT0, "Mazooma","Pac Man Casino (PR7049, PACL) (Mazooma) (Scorpion 4) (set 11)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4paccsh ,sc4paccs, sc4_4reel, sc4, sc4_state, sc4paccs_mbus, ROT0, "Mazooma","Pac Man Casino (PR7049, PACL) (Mazooma) (Scorpion 4) (set 12)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4paccsi ,sc4paccs, sc4_4reel, sc4, sc4_state, sc4paccs_mbus, ROT0, "Mazooma","Pac Man Casino (PR7049, PACL) (Mazooma) (Scorpion 4) (set 13)", MACHINE_FLAGS, layout_bfm_sc4 )
@@ -48740,15 +48742,15 @@ DRIVER_INIT_MEMBER(sc4_state,sc4pacpl)
}
// PR7058 PACMAN PACP SOUNDS PACMAN PLUS
-GAMEL( 200?, sc4pacpl ,0, sc4_5reel, sc4, sc4_state, sc4pacpl, ROT0, "Mazooma","Pac Man Plus (PR7058, PACP) (Mazooma) (Scorpion 4) (set 1)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4pacpla ,sc4pacpl, sc4_5reel, sc4, sc4_state, sc4pacpl, ROT0, "Mazooma","Pac Man Plus (PR7058, PACP) (Mazooma) (Scorpion 4) (set 2)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4pacplb ,sc4pacpl, sc4_5reel, sc4, sc4_state, sc4pacpl, ROT0, "Mazooma","Pac Man Plus (PR7058, PACP) (Mazooma) (Scorpion 4) (set 3)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4pacplc ,sc4pacpl, sc4_5reel, sc4, sc4_state, sc4pacpl, ROT0, "Mazooma","Pac Man Plus (PR7058, PACP) (Mazooma) (Scorpion 4) (set 4)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4pacpld ,sc4pacpl, sc4_5reel, sc4, sc4_state, sc4pacpl, ROT0, "Mazooma","Pac Man Plus (PR7058, PACP) (Mazooma) (Scorpion 4) (set 5)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4pacple ,sc4pacpl, sc4_5reel, sc4, sc4_state, sc4pacpl, ROT0, "Mazooma","Pac Man Plus (PR7058, PACP) (Mazooma) (Scorpion 4) (set 6)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4pacplf ,sc4pacpl, sc4_5reel, sc4, sc4_state, sc4pacpl, ROT0, "Mazooma","Pac Man Plus (PR7058, PACP) (Mazooma) (Scorpion 4) (set 7)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4pacplg ,sc4pacpl, sc4_5reel, sc4, sc4_state, sc4pacpl, ROT0, "Mazooma","Pac Man Plus (PR7058, PACP) (Mazooma) (Scorpion 4) (set 8)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4pacplh ,sc4pacpl, sc4_5reel, sc4, sc4_state, sc4pacpl, ROT0, "Mazooma","Pac Man Plus (PR7058, PACP) (Mazooma) (Scorpion 4) (set 9)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4pacpl ,0, sc4_5reel, sc4, sc4_state, sc4pacpl, ROT0, "Mazooma","Pac Man Plus (PR7058, PACP) (Mazooma) (Scorpion 4) (set 1)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4pacpla ,sc4pacpl, sc4_5reel, sc4, sc4_state, sc4pacpl, ROT0, "Mazooma","Pac Man Plus (PR7058, PACP) (Mazooma) (Scorpion 4) (set 2)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4pacplb ,sc4pacpl, sc4_5reel, sc4, sc4_state, sc4pacpl, ROT0, "Mazooma","Pac Man Plus (PR7058, PACP) (Mazooma) (Scorpion 4) (set 3)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4pacplc ,sc4pacpl, sc4_5reel, sc4, sc4_state, sc4pacpl, ROT0, "Mazooma","Pac Man Plus (PR7058, PACP) (Mazooma) (Scorpion 4) (set 4)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4pacpld ,sc4pacpl, sc4_5reel, sc4, sc4_state, sc4pacpl, ROT0, "Mazooma","Pac Man Plus (PR7058, PACP) (Mazooma) (Scorpion 4) (set 5)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4pacple ,sc4pacpl, sc4_5reel, sc4, sc4_state, sc4pacpl, ROT0, "Mazooma","Pac Man Plus (PR7058, PACP) (Mazooma) (Scorpion 4) (set 6)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4pacplf ,sc4pacpl, sc4_5reel, sc4, sc4_state, sc4pacpl, ROT0, "Mazooma","Pac Man Plus (PR7058, PACP) (Mazooma) (Scorpion 4) (set 7)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4pacplg ,sc4pacpl, sc4_5reel, sc4, sc4_state, sc4pacpl, ROT0, "Mazooma","Pac Man Plus (PR7058, PACP) (Mazooma) (Scorpion 4) (set 8)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4pacplh ,sc4pacpl, sc4_5reel, sc4, sc4_state, sc4pacpl, ROT0, "Mazooma","Pac Man Plus (PR7058, PACP) (Mazooma) (Scorpion 4) (set 9)", MACHINE_FLAGS, layout_bfm_sc4 )
@@ -48759,7 +48761,7 @@ DRIVER_INIT_MEMBER(sc4_state,sc4party)
}
// PR7151 PARTY TIME 1.02 95008113 G PARTYTIME SOUNDS11
-GAMEL( 200?, sc4party ,0, sc4_4reel, sc4, sc4_state, sc4party, ROT0, "Nova","Party Time (German) (PR7151, GPTM) (Nova) (Scorpion 4)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4party ,0, sc4_4reel, sc4, sc4_state, sc4party, ROT0, "Nova","Party Time (German) (PR7151, GPTM) (Nova) (Scorpion 4)", MACHINE_FLAGS, layout_bfm_sc4 )
@@ -48772,11 +48774,11 @@ DRIVER_INIT_MEMBER(sc4_state,sc4polem)
// these are sensitive to the inputs, eg for sc4polemd 3:2 and 3:3 MUST be on or the CPU will crash again even if you reset after the initial MEMORY RESET
// I don't know how to boot the other sets, they also show different codes for each set (buggy startup code?)
// PR7009 POLE POSITION POLE POSITION SOUNDS
-GAMEL( 200?, sc4polem ,0, sc4_4reel, sc4, sc4_state, sc4polem, ROT0, "Mazooma","Pole Position (Mazooma) (Scorpion 4) (set 1)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4polema ,sc4polem, sc4_4reel, sc4, sc4_state, sc4polem, ROT0, "Mazooma","Pole Position (Mazooma) (Scorpion 4) (set 2)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4polemb ,sc4polem, sc4_4reel, sc4, sc4_state, sc4polem, ROT0, "Mazooma","Pole Position (Mazooma) (Scorpion 4) (set 3)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4polemc ,sc4polem, sc4_4reel, sc4, sc4_state, sc4polem, ROT0, "Mazooma","Pole Position (Mazooma) (Scorpion 4) (set 4)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4polemd ,sc4polem, sc4_4reel, sc4, sc4_state, sc4polem, ROT0, "Mazooma","Pole Position (Mazooma) (Scorpion 4) (set 5)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4polem ,0, sc4_4reel, sc4, sc4_state, sc4polem, ROT0, "Mazooma","Pole Position (Mazooma) (Scorpion 4) (set 1)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4polema ,sc4polem, sc4_4reel, sc4, sc4_state, sc4polem, ROT0, "Mazooma","Pole Position (Mazooma) (Scorpion 4) (set 2)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4polemb ,sc4polem, sc4_4reel, sc4, sc4_state, sc4polem, ROT0, "Mazooma","Pole Position (Mazooma) (Scorpion 4) (set 3)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4polemc ,sc4polem, sc4_4reel, sc4, sc4_state, sc4polem, ROT0, "Mazooma","Pole Position (Mazooma) (Scorpion 4) (set 4)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4polemd ,sc4polem, sc4_4reel, sc4, sc4_state, sc4polem, ROT0, "Mazooma","Pole Position (Mazooma) (Scorpion 4) (set 5)", MACHINE_FLAGS, layout_bfm_sc4 )
@@ -48790,11 +48792,11 @@ DRIVER_INIT_MEMBER(sc4_state,sc4pen1)
// PR6914 PUBLIC ENEMY PR6914 PUBLIC ENEMY SOUNDS11 PUBLIC ENEMY
-GAMEL( 200?, sc4pen1 ,0, sc4_4reel, sc4, sc4_state, sc4pen1, ROT0, "BFM","Public Enemy No1 (Bellfruit) (Scorpion 4) (set 1)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4pen1a ,sc4pen1, sc4_4reel, sc4, sc4_state, sc4pen1, ROT0, "BFM","Public Enemy No1 (Bellfruit) (Scorpion 4) (set 2)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4pen1b ,sc4pen1, sc4_4reel, sc4, sc4_state, sc4pen1, ROT0, "BFM","Public Enemy No1 (Bellfruit) (Scorpion 4) (set 3)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4pen1c ,sc4pen1, sc4_4reel, sc4, sc4_state, sc4pen1, ROT0, "BFM","Public Enemy No1 (Bellfruit) (Scorpion 4) (set 4)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4pen1d ,sc4pen1, sc4_4reel, sc4, sc4_state, sc4pen1, ROT0, "BFM","Public Enemy No1 (Bellfruit) (Scorpion 4) (set 5)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4pen1 ,0, sc4_4reel, sc4, sc4_state, sc4pen1, ROT0, "BFM","Public Enemy No1 (Bellfruit) (Scorpion 4) (set 1)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4pen1a ,sc4pen1, sc4_4reel, sc4, sc4_state, sc4pen1, ROT0, "BFM","Public Enemy No1 (Bellfruit) (Scorpion 4) (set 2)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4pen1b ,sc4pen1, sc4_4reel, sc4, sc4_state, sc4pen1, ROT0, "BFM","Public Enemy No1 (Bellfruit) (Scorpion 4) (set 3)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4pen1c ,sc4pen1, sc4_4reel, sc4, sc4_state, sc4pen1, ROT0, "BFM","Public Enemy No1 (Bellfruit) (Scorpion 4) (set 4)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4pen1d ,sc4pen1, sc4_4reel, sc4, sc4_state, sc4pen1, ROT0, "BFM","Public Enemy No1 (Bellfruit) (Scorpion 4) (set 5)", MACHINE_FLAGS, layout_bfm_sc4 )
DRIVER_INIT_MEMBER(sc4_state,sc4rich)
@@ -48803,19 +48805,19 @@ DRIVER_INIT_MEMBER(sc4_state,sc4rich)
}
// PR7118 RICH GEEZER PR7118 RICH GEEZER SOUNDS11
-GAMEL( 200?, sc4rich ,0, sc4_200_5r, sc4, sc4_state, sc4rich, ROT0, "BFM","Rich Geezer (Bellfruit) (Scorpion 4) (set 1)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4richa ,sc4rich, sc4_200_5r, sc4, sc4_state, sc4rich, ROT0, "BFM","Rich Geezer (Bellfruit) (Scorpion 4) (set 2)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4richb ,sc4rich, sc4_200_5r, sc4, sc4_state, sc4rich, ROT0, "BFM","Rich Geezer (Bellfruit) (Scorpion 4) (set 3)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4richc ,sc4rich, sc4_200_5r, sc4, sc4_state, sc4rich, ROT0, "BFM","Rich Geezer (Bellfruit) (Scorpion 4) (set 4)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4richd ,sc4rich, sc4_200_5r, sc4, sc4_state, sc4rich, ROT0, "BFM","Rich Geezer (Bellfruit) (Scorpion 4) (set 5)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4riche ,sc4rich, sc4_200_5r, sc4, sc4_state, sc4rich, ROT0, "BFM","Rich Geezer (Bellfruit) (Scorpion 4) (set 6)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4richf ,sc4rich, sc4_200_5r, sc4, sc4_state, sc4rich, ROT0, "BFM","Rich Geezer (Bellfruit) (Scorpion 4) (set 7)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4richg ,sc4rich, sc4_200_5r, sc4, sc4_state, sc4rich, ROT0, "BFM","Rich Geezer (Bellfruit) (Scorpion 4) (set 8)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4richh ,sc4rich, sc4_200_5r, sc4, sc4_state, sc4rich, ROT0, "BFM","Rich Geezer (Bellfruit) (Scorpion 4) (set 9)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4richi ,sc4rich, sc4_200_5r, sc4, sc4_state, sc4rich, ROT0, "BFM","Rich Geezer (Bellfruit) (Scorpion 4) (set 10)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4richj ,sc4rich, sc4_200_5r, sc4, sc4_state, sc4rich, ROT0, "BFM","Rich Geezer (Bellfruit) (Scorpion 4) (set 11)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4richk ,sc4rich, sc4_200_5r, sc4, sc4_state, sc4rich, ROT0, "BFM","Rich Geezer (Bellfruit) (Scorpion 4) (set 12)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4richl ,sc4rich, sc4_200_5r, sc4, sc4_state, sc4rich, ROT0, "BFM","Rich Geezer (Bellfruit) (Scorpion 4) (set 13)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4rich ,0, sc4_200_5r, sc4, sc4_state, sc4rich, ROT0, "BFM","Rich Geezer (Bellfruit) (Scorpion 4) (set 1)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4richa ,sc4rich, sc4_200_5r, sc4, sc4_state, sc4rich, ROT0, "BFM","Rich Geezer (Bellfruit) (Scorpion 4) (set 2)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4richb ,sc4rich, sc4_200_5r, sc4, sc4_state, sc4rich, ROT0, "BFM","Rich Geezer (Bellfruit) (Scorpion 4) (set 3)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4richc ,sc4rich, sc4_200_5r, sc4, sc4_state, sc4rich, ROT0, "BFM","Rich Geezer (Bellfruit) (Scorpion 4) (set 4)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4richd ,sc4rich, sc4_200_5r, sc4, sc4_state, sc4rich, ROT0, "BFM","Rich Geezer (Bellfruit) (Scorpion 4) (set 5)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4riche ,sc4rich, sc4_200_5r, sc4, sc4_state, sc4rich, ROT0, "BFM","Rich Geezer (Bellfruit) (Scorpion 4) (set 6)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4richf ,sc4rich, sc4_200_5r, sc4, sc4_state, sc4rich, ROT0, "BFM","Rich Geezer (Bellfruit) (Scorpion 4) (set 7)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4richg ,sc4rich, sc4_200_5r, sc4, sc4_state, sc4rich, ROT0, "BFM","Rich Geezer (Bellfruit) (Scorpion 4) (set 8)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4richh ,sc4rich, sc4_200_5r, sc4, sc4_state, sc4rich, ROT0, "BFM","Rich Geezer (Bellfruit) (Scorpion 4) (set 9)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4richi ,sc4rich, sc4_200_5r, sc4, sc4_state, sc4rich, ROT0, "BFM","Rich Geezer (Bellfruit) (Scorpion 4) (set 10)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4richj ,sc4rich, sc4_200_5r, sc4, sc4_state, sc4rich, ROT0, "BFM","Rich Geezer (Bellfruit) (Scorpion 4) (set 11)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4richk ,sc4rich, sc4_200_5r, sc4, sc4_state, sc4rich, ROT0, "BFM","Rich Geezer (Bellfruit) (Scorpion 4) (set 12)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4richl ,sc4rich, sc4_200_5r, sc4, sc4_state, sc4rich, ROT0, "BFM","Rich Geezer (Bellfruit) (Scorpion 4) (set 13)", MACHINE_FLAGS, layout_bfm_sc4 )
@@ -48830,29 +48832,29 @@ DRIVER_INIT_MEMBER(sc4_state,sc4srrmz_mbus)
}
// PR7141 SHAKE RATTLE ROLL LINE SOUNDS * SHAKE RATT ROLL
-GAMEL( 200?, sc4srrmz ,0, sc4_3reel, sc4, sc4_state, sc4srrmz, ROT0, "Mazooma","Shake Rattle Roll (Mazooma) (Scorpion 4) (Top Box)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4srrmz ,0, sc4_3reel, sc4, sc4_state, sc4srrmz, ROT0, "Mazooma","Shake Rattle Roll (Mazooma) (Scorpion 4) (Top Box)", MACHINE_FLAGS, layout_bfm_sc4 )
// PR7079CASINO SHAKE RATTLE AND ROL PR7079,Casino SHAKE RATTLE AND ROLL, LINE SOUNDS ROCK AND ROLL
-GAMEL( 200?, sc4srrmza ,sc4srrmz, sc4_3reel, sc4, sc4_state, sc4srrmz, ROT0, "Mazooma","Shake Rattle Roll Casino (Mazooma) (Scorpion 4) (set 1)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4srrmzb ,sc4srrmz, sc4_3reel, sc4, sc4_state, sc4srrmz, ROT0, "Mazooma","Shake Rattle Roll Casino (Mazooma) (Scorpion 4) (set 2)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4srrmzc ,sc4srrmz, sc4_3reel, sc4, sc4_state, sc4srrmz, ROT0, "Mazooma","Shake Rattle Roll Casino (Mazooma) (Scorpion 4) (set 3)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4srrmze ,sc4srrmz, sc4_3reel, sc4, sc4_state, sc4srrmz, ROT0, "Mazooma","Shake Rattle Roll Casino (Mazooma) (Scorpion 4) (set 4)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4srrmza ,sc4srrmz, sc4_3reel, sc4, sc4_state, sc4srrmz, ROT0, "Mazooma","Shake Rattle Roll Casino (Mazooma) (Scorpion 4) (set 1)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4srrmzb ,sc4srrmz, sc4_3reel, sc4, sc4_state, sc4srrmz, ROT0, "Mazooma","Shake Rattle Roll Casino (Mazooma) (Scorpion 4) (set 2)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4srrmzc ,sc4srrmz, sc4_3reel, sc4, sc4_state, sc4srrmz, ROT0, "Mazooma","Shake Rattle Roll Casino (Mazooma) (Scorpion 4) (set 3)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4srrmze ,sc4srrmz, sc4_3reel, sc4, sc4_state, sc4srrmz, ROT0, "Mazooma","Shake Rattle Roll Casino (Mazooma) (Scorpion 4) (set 4)", MACHINE_FLAGS, layout_bfm_sc4 )
// PR7079CASINO SHAKE RATTLE AND ROL PR7079,Casino SHAKE RATTLE AND ROLL, LINE SOUNDS ROCK AND ROLL (the same as some of the above.. )
-GAMEL( 200?, sc4srrca ,sc4srrmz, sc4_3reel, sc4, sc4_state, sc4srrmz, ROT0, "Mazooma","Shake Rattle Roll Casino (Mazooma) (Scorpion 4) (set 5)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4srrcaa ,sc4srrmz, sc4_3reel, sc4, sc4_state, sc4srrmz, ROT0, "Mazooma","Shake Rattle Roll Casino (Mazooma) (Scorpion 4) (set 6)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4srrcab ,sc4srrmz, sc4_3reel, sc4, sc4_state, sc4srrmz, ROT0, "Mazooma","Shake Rattle Roll Casino (Mazooma) (Scorpion 4) (set 7)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4srrcac ,sc4srrmz, sc4_3reel, sc4, sc4_state, sc4srrmz, ROT0, "Mazooma","Shake Rattle Roll Casino (Mazooma) (Scorpion 4) (set 8)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4srrcad ,sc4srrmz, sc4_3reel, sc4, sc4_state, sc4srrmz, ROT0, "Mazooma","Shake Rattle Roll Casino (Mazooma) (Scorpion 4) (set 9)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4srrcae ,sc4srrmz, sc4_3reel, sc4, sc4_state, sc4srrmz, ROT0, "Mazooma","Shake Rattle Roll Casino (Mazooma) (Scorpion 4) (set 10)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4srrca ,sc4srrmz, sc4_3reel, sc4, sc4_state, sc4srrmz, ROT0, "Mazooma","Shake Rattle Roll Casino (Mazooma) (Scorpion 4) (set 5)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4srrcaa ,sc4srrmz, sc4_3reel, sc4, sc4_state, sc4srrmz, ROT0, "Mazooma","Shake Rattle Roll Casino (Mazooma) (Scorpion 4) (set 6)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4srrcab ,sc4srrmz, sc4_3reel, sc4, sc4_state, sc4srrmz, ROT0, "Mazooma","Shake Rattle Roll Casino (Mazooma) (Scorpion 4) (set 7)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4srrcac ,sc4srrmz, sc4_3reel, sc4, sc4_state, sc4srrmz, ROT0, "Mazooma","Shake Rattle Roll Casino (Mazooma) (Scorpion 4) (set 8)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4srrcad ,sc4srrmz, sc4_3reel, sc4, sc4_state, sc4srrmz, ROT0, "Mazooma","Shake Rattle Roll Casino (Mazooma) (Scorpion 4) (set 9)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4srrcae ,sc4srrmz, sc4_3reel, sc4, sc4_state, sc4srrmz, ROT0, "Mazooma","Shake Rattle Roll Casino (Mazooma) (Scorpion 4) (set 10)", MACHINE_FLAGS, layout_bfm_sc4 )
// PR7079CASINO SHAKE RATTLE AND ROL SHAK RATTLE ROLL ARCADE PR7079,Casino SHAKE RATTLE AND ROLL, LINE SOUNDS
-GAMEL( 200?, sc4srrmzd ,sc4srrmz, sc4_3reel, sc4, sc4_state, sc4srrmz_mbus, ROT0, "Mazooma","Shake Rattle Roll Arcade (Mazooma) (Scorpion 4) (set 1)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4srrmzf ,sc4srrmz, sc4_3reel, sc4, sc4_state, sc4srrmz_mbus, ROT0, "Mazooma","Shake Rattle Roll Arcade (Mazooma) (Scorpion 4) (set 2)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4srrmzg ,sc4srrmz, sc4_3reel, sc4, sc4_state, sc4srrmz_mbus, ROT0, "Mazooma","Shake Rattle Roll Arcade (Mazooma) (Scorpion 4) (set 3)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4srrmzh ,sc4srrmz, sc4_3reel, sc4, sc4_state, sc4srrmz_mbus, ROT0, "Mazooma","Shake Rattle Roll Arcade (Mazooma) (Scorpion 4) (set 4)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4srrmzi ,sc4srrmz, sc4_3reel, sc4, sc4_state, sc4srrmz_mbus, ROT0, "Mazooma","Shake Rattle Roll Arcade (Mazooma) (Scorpion 4) (set 5)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4srrmzj ,sc4srrmz, sc4_3reel, sc4, sc4_state, sc4srrmz_mbus, ROT0, "Mazooma","Shake Rattle Roll Arcade (Mazooma) (Scorpion 4) (set 6)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4srrmzk ,sc4srrmz, sc4_3reel, sc4, sc4_state, sc4srrmz_mbus, ROT0, "Mazooma","Shake Rattle Roll Arcade (Mazooma) (Scorpion 4) (set 7)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4srrmzl ,sc4srrmz, sc4_3reel, sc4, sc4_state, sc4srrmz_mbus, ROT0, "Mazooma","Shake Rattle Roll Arcade (Mazooma) (Scorpion 4) (set 8)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4srrmzm ,sc4srrmz, sc4_3reel, sc4, sc4_state, sc4srrmz_mbus, ROT0, "Mazooma","Shake Rattle Roll Arcade (Mazooma) (Scorpion 4) (set 9)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4srrmzd ,sc4srrmz, sc4_3reel, sc4, sc4_state, sc4srrmz_mbus, ROT0, "Mazooma","Shake Rattle Roll Arcade (Mazooma) (Scorpion 4) (set 1)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4srrmzf ,sc4srrmz, sc4_3reel, sc4, sc4_state, sc4srrmz_mbus, ROT0, "Mazooma","Shake Rattle Roll Arcade (Mazooma) (Scorpion 4) (set 2)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4srrmzg ,sc4srrmz, sc4_3reel, sc4, sc4_state, sc4srrmz_mbus, ROT0, "Mazooma","Shake Rattle Roll Arcade (Mazooma) (Scorpion 4) (set 3)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4srrmzh ,sc4srrmz, sc4_3reel, sc4, sc4_state, sc4srrmz_mbus, ROT0, "Mazooma","Shake Rattle Roll Arcade (Mazooma) (Scorpion 4) (set 4)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4srrmzi ,sc4srrmz, sc4_3reel, sc4, sc4_state, sc4srrmz_mbus, ROT0, "Mazooma","Shake Rattle Roll Arcade (Mazooma) (Scorpion 4) (set 5)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4srrmzj ,sc4srrmz, sc4_3reel, sc4, sc4_state, sc4srrmz_mbus, ROT0, "Mazooma","Shake Rattle Roll Arcade (Mazooma) (Scorpion 4) (set 6)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4srrmzk ,sc4srrmz, sc4_3reel, sc4, sc4_state, sc4srrmz_mbus, ROT0, "Mazooma","Shake Rattle Roll Arcade (Mazooma) (Scorpion 4) (set 7)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4srrmzl ,sc4srrmz, sc4_3reel, sc4, sc4_state, sc4srrmz_mbus, ROT0, "Mazooma","Shake Rattle Roll Arcade (Mazooma) (Scorpion 4) (set 8)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4srrmzm ,sc4srrmz, sc4_3reel, sc4, sc4_state, sc4srrmz_mbus, ROT0, "Mazooma","Shake Rattle Roll Arcade (Mazooma) (Scorpion 4) (set 9)", MACHINE_FLAGS, layout_bfm_sc4 )
DRIVER_INIT_MEMBER(sc4_state,sc4sirpz)
@@ -48862,10 +48864,10 @@ DRIVER_INIT_MEMBER(sc4_state,sc4sirpz)
// PR2004CASINO SIR PRIZE LINE SOUNDS SIR PRIZE 8 +
-GAMEL( 200?, sc4sirpz ,0, sc4_3reel, sc4, sc4_state, sc4sirpz, ROT0, "Mazooma","Sir Prize (PR2004, SIRV) (Mazooma) (Scorpion 4)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 ) // 7:0 and 7:1 must be turned ON to boot this
+GAMEL( 200?, sc4sirpz ,0, sc4_3reel, sc4, sc4_state, sc4sirpz, ROT0, "Mazooma","Sir Prize (PR2004, SIRV) (Mazooma) (Scorpion 4)", MACHINE_FLAGS, layout_bfm_sc4 ) // 7:0 and 7:1 must be turned ON to boot this
// PR7079CASINO SIR PRIZE PR7079,Casino SIR PRIZE, LINE SOUNDS SIR PRIZE
-GAMEL( 200?, sc4sirpza ,sc4sirpz, sc4_3reel, sc4, sc4_state, sc4sirpz, ROT0, "Mazooma","Sir Prize (PR7079, SIRP) (Mazooma) (Scorpion 4) (set 1)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4sirpzb ,sc4sirpz, sc4_3reel, sc4, sc4_state, sc4sirpz, ROT0, "Mazooma","Sir Prize (PR7079, SIRP) (Mazooma) (Scorpion 4) (set 2)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4sirpza ,sc4sirpz, sc4_3reel, sc4, sc4_state, sc4sirpz, ROT0, "Mazooma","Sir Prize (PR7079, SIRP) (Mazooma) (Scorpion 4) (set 1)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4sirpzb ,sc4sirpz, sc4_3reel, sc4, sc4_state, sc4sirpz, ROT0, "Mazooma","Sir Prize (PR7079, SIRP) (Mazooma) (Scorpion 4) (set 2)", MACHINE_FLAGS, layout_bfm_sc4 )
@@ -48876,7 +48878,7 @@ DRIVER_INIT_MEMBER(sc4_state,sc4smk7)
// PR6924 SMOKIN SEVENS PR6924 SMOKIN SEVENS SOUNDS11
-GAMEL( 200?, sc4smk7 ,0, sc4_3reel, sc4, sc4_state, sc4smk7, ROT0, "BFM","Smoking 7's (Bellfruit) (Scorpion 4)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4smk7 ,0, sc4_3reel, sc4, sc4_state, sc4smk7, ROT0, "BFM","Smoking 7's (Bellfruit) (Scorpion 4)", MACHINE_FLAGS, layout_bfm_sc4 )
@@ -48888,18 +48890,18 @@ DRIVER_INIT_MEMBER(sc4_state,sc4starp)
// PR6805 STARPRIZE PR6805 STARPRIZE SOUNDS
-GAMEL( 200?, sc4starp ,0, sc4_4reel, sc4, sc4_state, sc4starp, ROT0, "BFM","Starprize (Bellfruit) (Scorpion 4) (set 1)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4starpa ,sc4starp, sc4_4reel, sc4, sc4_state, sc4starp, ROT0, "BFM","Starprize (Bellfruit) (Scorpion 4) (set 2)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4starpb ,sc4starp, sc4_4reel, sc4, sc4_state, sc4starp, ROT0, "BFM","Starprize (Bellfruit) (Scorpion 4) (set 3)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4starpc ,sc4starp, sc4_4reel, sc4, sc4_state, sc4starp, ROT0, "BFM","Starprize (Bellfruit) (Scorpion 4) (set 4)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4starpd ,sc4starp, sc4_4reel, sc4, sc4_state, sc4starp, ROT0, "BFM","Starprize (Bellfruit) (Scorpion 4) (set 5)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4starpe ,sc4starp, sc4_4reel, sc4, sc4_state, sc4starp, ROT0, "BFM","Starprize (Bellfruit) (Scorpion 4) (set 6)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4starpf ,sc4starp, sc4_4reel, sc4, sc4_state, sc4starp, ROT0, "BFM","Starprize (Bellfruit) (Scorpion 4) (set 7)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4starpg ,sc4starp, sc4_4reel, sc4, sc4_state, sc4starp, ROT0, "BFM","Starprize (Bellfruit) (Scorpion 4) (set 8)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4starph ,sc4starp, sc4_4reel, sc4, sc4_state, sc4starp, ROT0, "BFM","Starprize (Bellfruit) (Scorpion 4) (set 9)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4starpi ,sc4starp, sc4_4reel, sc4, sc4_state, sc4starp, ROT0, "BFM","Starprize (Bellfruit) (Scorpion 4) (set 10)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4starpj ,sc4starp, sc4_4reel, sc4, sc4_state, sc4starp, ROT0, "BFM","Starprize (Bellfruit) (Scorpion 4) (set 11)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4starpk ,sc4starp, sc4_4reel, sc4, sc4_state, sc4starp, ROT0, "BFM","Starprize (Bellfruit) (Scorpion 4) (set 12)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4starp ,0, sc4_4reel, sc4, sc4_state, sc4starp, ROT0, "BFM","Starprize (Bellfruit) (Scorpion 4) (set 1)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4starpa ,sc4starp, sc4_4reel, sc4, sc4_state, sc4starp, ROT0, "BFM","Starprize (Bellfruit) (Scorpion 4) (set 2)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4starpb ,sc4starp, sc4_4reel, sc4, sc4_state, sc4starp, ROT0, "BFM","Starprize (Bellfruit) (Scorpion 4) (set 3)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4starpc ,sc4starp, sc4_4reel, sc4, sc4_state, sc4starp, ROT0, "BFM","Starprize (Bellfruit) (Scorpion 4) (set 4)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4starpd ,sc4starp, sc4_4reel, sc4, sc4_state, sc4starp, ROT0, "BFM","Starprize (Bellfruit) (Scorpion 4) (set 5)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4starpe ,sc4starp, sc4_4reel, sc4, sc4_state, sc4starp, ROT0, "BFM","Starprize (Bellfruit) (Scorpion 4) (set 6)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4starpf ,sc4starp, sc4_4reel, sc4, sc4_state, sc4starp, ROT0, "BFM","Starprize (Bellfruit) (Scorpion 4) (set 7)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4starpg ,sc4starp, sc4_4reel, sc4, sc4_state, sc4starp, ROT0, "BFM","Starprize (Bellfruit) (Scorpion 4) (set 8)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4starph ,sc4starp, sc4_4reel, sc4, sc4_state, sc4starp, ROT0, "BFM","Starprize (Bellfruit) (Scorpion 4) (set 9)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4starpi ,sc4starp, sc4_4reel, sc4, sc4_state, sc4starp, ROT0, "BFM","Starprize (Bellfruit) (Scorpion 4) (set 10)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4starpj ,sc4starp, sc4_4reel, sc4, sc4_state, sc4starp, ROT0, "BFM","Starprize (Bellfruit) (Scorpion 4) (set 11)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4starpk ,sc4starp, sc4_4reel, sc4, sc4_state, sc4starp, ROT0, "BFM","Starprize (Bellfruit) (Scorpion 4) (set 12)", MACHINE_FLAGS, layout_bfm_sc4 )
@@ -48910,18 +48912,18 @@ DRIVER_INIT_MEMBER(sc4_state,sc4strk)
}
// PR2167CASINO THE STREAK PR7017,CASINO STREAK, STRK SOUNDS THE STREAK
-GAMEL( 200?, sc4strk ,0, sc4_3reel, sc4, sc4_state, sc4strk, ROT0, "Mazooma","The Streak (Mazooma) (Scorpion 4) (set 1)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4strka ,sc4strk, sc4_3reel, sc4, sc4_state, sc4strk, ROT0, "Mazooma","The Streak (Mazooma) (Scorpion 4) (set 2)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4strkb ,sc4strk, sc4_3reel, sc4, sc4_state, sc4strk, ROT0, "Mazooma","The Streak (Mazooma) (Scorpion 4) (set 3)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4strkc ,sc4strk, sc4_3reel, sc4, sc4_state, sc4strk, ROT0, "Mazooma","The Streak (Mazooma) (Scorpion 4) (set 4)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4strkd ,sc4strk, sc4_3reel, sc4, sc4_state, sc4strk, ROT0, "Mazooma","The Streak (Mazooma) (Scorpion 4) (set 5)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4strke ,sc4strk, sc4_3reel, sc4, sc4_state, sc4strk, ROT0, "Mazooma","The Streak (Mazooma) (Scorpion 4) (set 6)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4strkf ,sc4strk, sc4_3reel, sc4, sc4_state, sc4strk, ROT0, "Mazooma","The Streak (Mazooma) (Scorpion 4) (set 7)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4strkg ,sc4strk, sc4_3reel, sc4, sc4_state, sc4strk, ROT0, "Mazooma","The Streak (Mazooma) (Scorpion 4) (set 8)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4strkh ,sc4strk, sc4_3reel, sc4, sc4_state, sc4strk, ROT0, "Mazooma","The Streak (Mazooma) (Scorpion 4) (set 9)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4strki ,sc4strk, sc4_3reel, sc4, sc4_state, sc4strk, ROT0, "Mazooma","The Streak (Mazooma) (Scorpion 4) (set 10)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4strkj ,sc4strk, sc4_3reel, sc4, sc4_state, sc4strk, ROT0, "Mazooma","The Streak (Mazooma) (Scorpion 4) (set 11)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4strkk ,sc4strk, sc4_3reel, sc4, sc4_state, sc4strk, ROT0, "Mazooma","The Streak (Mazooma) (Scorpion 4) (set 12)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4strk ,0, sc4_3reel, sc4, sc4_state, sc4strk, ROT0, "Mazooma","The Streak (Mazooma) (Scorpion 4) (set 1)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4strka ,sc4strk, sc4_3reel, sc4, sc4_state, sc4strk, ROT0, "Mazooma","The Streak (Mazooma) (Scorpion 4) (set 2)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4strkb ,sc4strk, sc4_3reel, sc4, sc4_state, sc4strk, ROT0, "Mazooma","The Streak (Mazooma) (Scorpion 4) (set 3)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4strkc ,sc4strk, sc4_3reel, sc4, sc4_state, sc4strk, ROT0, "Mazooma","The Streak (Mazooma) (Scorpion 4) (set 4)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4strkd ,sc4strk, sc4_3reel, sc4, sc4_state, sc4strk, ROT0, "Mazooma","The Streak (Mazooma) (Scorpion 4) (set 5)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4strke ,sc4strk, sc4_3reel, sc4, sc4_state, sc4strk, ROT0, "Mazooma","The Streak (Mazooma) (Scorpion 4) (set 6)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4strkf ,sc4strk, sc4_3reel, sc4, sc4_state, sc4strk, ROT0, "Mazooma","The Streak (Mazooma) (Scorpion 4) (set 7)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4strkg ,sc4strk, sc4_3reel, sc4, sc4_state, sc4strk, ROT0, "Mazooma","The Streak (Mazooma) (Scorpion 4) (set 8)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4strkh ,sc4strk, sc4_3reel, sc4, sc4_state, sc4strk, ROT0, "Mazooma","The Streak (Mazooma) (Scorpion 4) (set 9)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4strki ,sc4strk, sc4_3reel, sc4, sc4_state, sc4strk, ROT0, "Mazooma","The Streak (Mazooma) (Scorpion 4) (set 10)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4strkj ,sc4strk, sc4_3reel, sc4, sc4_state, sc4strk, ROT0, "Mazooma","The Streak (Mazooma) (Scorpion 4) (set 11)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4strkk ,sc4strk, sc4_3reel, sc4, sc4_state, sc4strk, ROT0, "Mazooma","The Streak (Mazooma) (Scorpion 4) (set 12)", MACHINE_FLAGS, layout_bfm_sc4 )
@@ -48936,33 +48938,33 @@ DRIVER_INIT_MEMBER(sc4_state,sc4trist)
}
// PR2188 TRIPLE STREAK STR3 SOUNDS " THE STREAK
-GAMEL( 200?, sc4trist ,0, sc4_3reel, sc4, sc4_state, sc4tristtb, ROT0, "Mazooma","Triple Streak (PR2188) (Mazooma) (Scorpion 4) (Top Box, set 1)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4trista ,sc4trist, sc4_3reel, sc4, sc4_state, sc4tristtb, ROT0, "Mazooma","Triple Streak (PR2188) (Mazooma) (Scorpion 4) (Top Box, set 2)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4trist ,0, sc4_3reel, sc4, sc4_state, sc4tristtb, ROT0, "Mazooma","Triple Streak (PR2188) (Mazooma) (Scorpion 4) (Top Box, set 1)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4trista ,sc4trist, sc4_3reel, sc4, sc4_state, sc4tristtb, ROT0, "Mazooma","Triple Streak (PR2188) (Mazooma) (Scorpion 4) (Top Box, set 2)", MACHINE_FLAGS, layout_bfm_sc4 )
// PR2167CASINO THE STREAK PR7017,CASINO STREAK, STR3 SOUNDS THE STREAK
-GAMEL( 200?, sc4tristb ,sc4trist, sc4_3reel, sc4, sc4_state, sc4trist, ROT0, "Mazooma","Triple Streak (PR2167) (Mazooma) (Scorpion 4) (set 1)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4tristc ,sc4trist, sc4_3reel, sc4, sc4_state, sc4trist, ROT0, "Mazooma","Triple Streak (PR2167) (Mazooma) (Scorpion 4) (set 2)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4tristd ,sc4trist, sc4_3reel, sc4, sc4_state, sc4trist, ROT0, "Mazooma","Triple Streak (PR2167) (Mazooma) (Scorpion 4) (set 3)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4triste ,sc4trist, sc4_3reel, sc4, sc4_state, sc4trist, ROT0, "Mazooma","Triple Streak (PR2167) (Mazooma) (Scorpion 4) (set 4)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4tristf ,sc4trist, sc4_3reel, sc4, sc4_state, sc4trist, ROT0, "Mazooma","Triple Streak (PR2167) (Mazooma) (Scorpion 4) (set 5)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4tristg ,sc4trist, sc4_3reel, sc4, sc4_state, sc4trist, ROT0, "Mazooma","Triple Streak (PR2167) (Mazooma) (Scorpion 4) (set 6)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4tristh ,sc4trist, sc4_3reel, sc4, sc4_state, sc4trist, ROT0, "Mazooma","Triple Streak (PR2167) (Mazooma) (Scorpion 4) (set 7)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4tristi ,sc4trist, sc4_3reel, sc4, sc4_state, sc4trist, ROT0, "Mazooma","Triple Streak (PR2167) (Mazooma) (Scorpion 4) (set 8)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4tristj ,sc4trist, sc4_3reel, sc4, sc4_state, sc4trist, ROT0, "Mazooma","Triple Streak (PR2167) (Mazooma) (Scorpion 4) (set 9)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4tristk ,sc4trist, sc4_3reel, sc4, sc4_state, sc4trist, ROT0, "Mazooma","Triple Streak (PR2167) (Mazooma) (Scorpion 4) (set 10)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4tristl ,sc4trist, sc4_3reel, sc4, sc4_state, sc4trist, ROT0, "Mazooma","Triple Streak (PR2167) (Mazooma) (Scorpion 4) (set 11)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4tristm ,sc4trist, sc4_3reel, sc4, sc4_state, sc4trist, ROT0, "Mazooma","Triple Streak (PR2167) (Mazooma) (Scorpion 4) (set 12)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4tristn ,sc4trist, sc4_3reel, sc4, sc4_state, sc4trist, ROT0, "Mazooma","Triple Streak (PR2167) (Mazooma) (Scorpion 4) (set 13)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4tristo ,sc4trist, sc4_3reel, sc4, sc4_state, sc4trist, ROT0, "Mazooma","Triple Streak (PR2167) (Mazooma) (Scorpion 4) (set 14)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4tristp ,sc4trist, sc4_3reel, sc4, sc4_state, sc4trist, ROT0, "Mazooma","Triple Streak (PR2167) (Mazooma) (Scorpion 4) (set 15)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4tristq ,sc4trist, sc4_3reel, sc4, sc4_state, sc4trist, ROT0, "Mazooma","Triple Streak (PR2167) (Mazooma) (Scorpion 4) (set 16)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4tristr ,sc4trist, sc4_3reel, sc4, sc4_state, sc4trist, ROT0, "Mazooma","Triple Streak (PR2167) (Mazooma) (Scorpion 4) (set 17)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4trists ,sc4trist, sc4_3reel, sc4, sc4_state, sc4trist, ROT0, "Mazooma","Triple Streak (PR2167) (Mazooma) (Scorpion 4) (set 18)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4tristt ,sc4trist, sc4_3reel, sc4, sc4_state, sc4trist, ROT0, "Mazooma","Triple Streak (PR2167) (Mazooma) (Scorpion 4) (set 19)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4tristu ,sc4trist, sc4_3reel, sc4, sc4_state, sc4trist, ROT0, "Mazooma","Triple Streak (PR2167) (Mazooma) (Scorpion 4) (set 20)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4tristv ,sc4trist, sc4_3reel, sc4, sc4_state, sc4trist, ROT0, "Mazooma","Triple Streak (PR2167) (Mazooma) (Scorpion 4) (set 21)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4tristw ,sc4trist, sc4_3reel, sc4, sc4_state, sc4trist, ROT0, "Mazooma","Triple Streak (PR2167) (Mazooma) (Scorpion 4) (set 22)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4tristx ,sc4trist, sc4_3reel, sc4, sc4_state, sc4trist, ROT0, "Mazooma","Triple Streak (PR2167) (Mazooma) (Scorpion 4) (set 23)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4tristy ,sc4trist, sc4_3reel, sc4, sc4_state, sc4trist, ROT0, "Mazooma","Triple Streak (PR2167) (Mazooma) (Scorpion 4) (set 24)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4tristb ,sc4trist, sc4_3reel, sc4, sc4_state, sc4trist, ROT0, "Mazooma","Triple Streak (PR2167) (Mazooma) (Scorpion 4) (set 1)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4tristc ,sc4trist, sc4_3reel, sc4, sc4_state, sc4trist, ROT0, "Mazooma","Triple Streak (PR2167) (Mazooma) (Scorpion 4) (set 2)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4tristd ,sc4trist, sc4_3reel, sc4, sc4_state, sc4trist, ROT0, "Mazooma","Triple Streak (PR2167) (Mazooma) (Scorpion 4) (set 3)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4triste ,sc4trist, sc4_3reel, sc4, sc4_state, sc4trist, ROT0, "Mazooma","Triple Streak (PR2167) (Mazooma) (Scorpion 4) (set 4)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4tristf ,sc4trist, sc4_3reel, sc4, sc4_state, sc4trist, ROT0, "Mazooma","Triple Streak (PR2167) (Mazooma) (Scorpion 4) (set 5)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4tristg ,sc4trist, sc4_3reel, sc4, sc4_state, sc4trist, ROT0, "Mazooma","Triple Streak (PR2167) (Mazooma) (Scorpion 4) (set 6)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4tristh ,sc4trist, sc4_3reel, sc4, sc4_state, sc4trist, ROT0, "Mazooma","Triple Streak (PR2167) (Mazooma) (Scorpion 4) (set 7)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4tristi ,sc4trist, sc4_3reel, sc4, sc4_state, sc4trist, ROT0, "Mazooma","Triple Streak (PR2167) (Mazooma) (Scorpion 4) (set 8)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4tristj ,sc4trist, sc4_3reel, sc4, sc4_state, sc4trist, ROT0, "Mazooma","Triple Streak (PR2167) (Mazooma) (Scorpion 4) (set 9)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4tristk ,sc4trist, sc4_3reel, sc4, sc4_state, sc4trist, ROT0, "Mazooma","Triple Streak (PR2167) (Mazooma) (Scorpion 4) (set 10)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4tristl ,sc4trist, sc4_3reel, sc4, sc4_state, sc4trist, ROT0, "Mazooma","Triple Streak (PR2167) (Mazooma) (Scorpion 4) (set 11)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4tristm ,sc4trist, sc4_3reel, sc4, sc4_state, sc4trist, ROT0, "Mazooma","Triple Streak (PR2167) (Mazooma) (Scorpion 4) (set 12)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4tristn ,sc4trist, sc4_3reel, sc4, sc4_state, sc4trist, ROT0, "Mazooma","Triple Streak (PR2167) (Mazooma) (Scorpion 4) (set 13)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4tristo ,sc4trist, sc4_3reel, sc4, sc4_state, sc4trist, ROT0, "Mazooma","Triple Streak (PR2167) (Mazooma) (Scorpion 4) (set 14)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4tristp ,sc4trist, sc4_3reel, sc4, sc4_state, sc4trist, ROT0, "Mazooma","Triple Streak (PR2167) (Mazooma) (Scorpion 4) (set 15)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4tristq ,sc4trist, sc4_3reel, sc4, sc4_state, sc4trist, ROT0, "Mazooma","Triple Streak (PR2167) (Mazooma) (Scorpion 4) (set 16)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4tristr ,sc4trist, sc4_3reel, sc4, sc4_state, sc4trist, ROT0, "Mazooma","Triple Streak (PR2167) (Mazooma) (Scorpion 4) (set 17)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4trists ,sc4trist, sc4_3reel, sc4, sc4_state, sc4trist, ROT0, "Mazooma","Triple Streak (PR2167) (Mazooma) (Scorpion 4) (set 18)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4tristt ,sc4trist, sc4_3reel, sc4, sc4_state, sc4trist, ROT0, "Mazooma","Triple Streak (PR2167) (Mazooma) (Scorpion 4) (set 19)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4tristu ,sc4trist, sc4_3reel, sc4, sc4_state, sc4trist, ROT0, "Mazooma","Triple Streak (PR2167) (Mazooma) (Scorpion 4) (set 20)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4tristv ,sc4trist, sc4_3reel, sc4, sc4_state, sc4trist, ROT0, "Mazooma","Triple Streak (PR2167) (Mazooma) (Scorpion 4) (set 21)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4tristw ,sc4trist, sc4_3reel, sc4, sc4_state, sc4trist, ROT0, "Mazooma","Triple Streak (PR2167) (Mazooma) (Scorpion 4) (set 22)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4tristx ,sc4trist, sc4_3reel, sc4, sc4_state, sc4trist, ROT0, "Mazooma","Triple Streak (PR2167) (Mazooma) (Scorpion 4) (set 23)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4tristy ,sc4trist, sc4_3reel, sc4, sc4_state, sc4trist, ROT0, "Mazooma","Triple Streak (PR2167) (Mazooma) (Scorpion 4) (set 24)", MACHINE_FLAGS, layout_bfm_sc4 )
DRIVER_INIT_MEMBER(sc4_state,sc4s6c)
@@ -48971,15 +48973,15 @@ DRIVER_INIT_MEMBER(sc4_state,sc4s6c)
}
// PR6834 SUPER 6 FIXED 65% PR6834 SSIX SOUNDS11
-GAMEL( 200?, sc4s6c ,0, sc4, sc4, sc4_state, sc4s6c, ROT0, "BFM","Super 6 Club (65% Fixed) (Bellfruit) (Scorpion 4) (set 1)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4s6cb ,sc4s6c, sc4, sc4, sc4_state, sc4s6c, ROT0, "BFM","Super 6 Club (65% Fixed) (Bellfruit) (Scorpion 4) (set 2)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4s6c ,0, sc4, sc4, sc4_state, sc4s6c, ROT0, "BFM","Super 6 Club (65% Fixed) (Bellfruit) (Scorpion 4) (set 1)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4s6cb ,sc4s6c, sc4, sc4, sc4_state, sc4s6c, ROT0, "BFM","Super 6 Club (65% Fixed) (Bellfruit) (Scorpion 4) (set 2)", MACHINE_FLAGS, layout_bfm_sc4 )
// PR6834 SUPER 6 PR6834 SSIX SOUNDS11
-GAMEL( 200?, sc4s6ca ,sc4s6c, sc4, sc4, sc4_state, sc4s6c, ROT0, "BFM","Super 6 Club (Bellfruit) (Scorpion 4) (set 1)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4s6cc ,sc4s6c, sc4, sc4, sc4_state, sc4s6c, ROT0, "BFM","Super 6 Club (Bellfruit) (Scorpion 4) (set 2)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4s6cd ,sc4s6c, sc4, sc4, sc4_state, sc4s6c, ROT0, "BFM","Super 6 Club (Bellfruit) (Scorpion 4) (set 3)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4s6ce ,sc4s6c, sc4, sc4, sc4_state, sc4s6c, ROT0, "BFM","Super 6 Club (Bellfruit) (Scorpion 4) (set 4)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4s6ca ,sc4s6c, sc4, sc4, sc4_state, sc4s6c, ROT0, "BFM","Super 6 Club (Bellfruit) (Scorpion 4) (set 1)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4s6cc ,sc4s6c, sc4, sc4, sc4_state, sc4s6c, ROT0, "BFM","Super 6 Club (Bellfruit) (Scorpion 4) (set 2)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4s6cd ,sc4s6c, sc4, sc4, sc4_state, sc4s6c, ROT0, "BFM","Super 6 Club (Bellfruit) (Scorpion 4) (set 3)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4s6ce ,sc4s6c, sc4, sc4, sc4_state, sc4s6c, ROT0, "BFM","Super 6 Club (Bellfruit) (Scorpion 4) (set 4)", MACHINE_FLAGS, layout_bfm_sc4 )
-GAMEL( 200?, sc4s6cf ,sc4s6c, sc4, sc4, sc4_state, sc4s6c, ROT0, "BFM","Super 6 Club (Bellfruit) (Scorpion 4) (set 5)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4s6cf ,sc4s6c, sc4, sc4, sc4_state, sc4s6c, ROT0, "BFM","Super 6 Club (Bellfruit) (Scorpion 4) (set 5)", MACHINE_FLAGS, layout_bfm_sc4 )
@@ -48996,23 +48998,23 @@ DRIVER_INIT_MEMBER(sc4_state,sc4tic2_mbus)
// PR7060CASINO TICTACTWO TTTWO SOUNDS TIC TAC TWO
-GAMEL( 200?, sc4tic2 ,0, sc4_3reel, sc4, sc4_state, sc4tic2, ROT0, "Mazooma","Tic Tac Two Casino (Mazooma) (Scorpion 4) (set 1)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4tic2a ,sc4tic2, sc4_3reel, sc4, sc4_state, sc4tic2, ROT0, "Mazooma","Tic Tac Two Casino (Mazooma) (Scorpion 4) (set 2)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4tic2b ,sc4tic2, sc4_3reel, sc4, sc4_state, sc4tic2, ROT0, "Mazooma","Tic Tac Two Casino (Mazooma) (Scorpion 4) (set 3)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4tic2c ,sc4tic2, sc4_3reel, sc4, sc4_state, sc4tic2, ROT0, "Mazooma","Tic Tac Two Casino (Mazooma) (Scorpion 4) (set 4)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4tic2d ,sc4tic2, sc4_3reel, sc4, sc4_state, sc4tic2, ROT0, "Mazooma","Tic Tac Two Casino (Mazooma) (Scorpion 4) (set 5)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4tic2e ,sc4tic2, sc4_3reel, sc4, sc4_state, sc4tic2, ROT0, "Mazooma","Tic Tac Two Casino (Mazooma) (Scorpion 4) (set 6)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4tic2f ,sc4tic2, sc4_3reel, sc4, sc4_state, sc4tic2, ROT0, "Mazooma","Tic Tac Two Casino (Mazooma) (Scorpion 4) (set 7)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4tic2g ,sc4tic2, sc4_3reel, sc4, sc4_state, sc4tic2, ROT0, "Mazooma","Tic Tac Two Casino (Mazooma) (Scorpion 4) (set 8)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4tic2n ,sc4tic2, sc4_3reel, sc4, sc4_state, sc4tic2, ROT0, "Mazooma","Tic Tac Two Casino (Mazooma) (Scorpion 4) (set 9)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4tic2o ,sc4tic2, sc4_3reel, sc4, sc4_state, sc4tic2, ROT0, "Mazooma","Tic Tac Two Casino (Mazooma) (Scorpion 4) (set 10)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4tic2 ,0, sc4_3reel, sc4, sc4_state, sc4tic2, ROT0, "Mazooma","Tic Tac Two Casino (Mazooma) (Scorpion 4) (set 1)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4tic2a ,sc4tic2, sc4_3reel, sc4, sc4_state, sc4tic2, ROT0, "Mazooma","Tic Tac Two Casino (Mazooma) (Scorpion 4) (set 2)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4tic2b ,sc4tic2, sc4_3reel, sc4, sc4_state, sc4tic2, ROT0, "Mazooma","Tic Tac Two Casino (Mazooma) (Scorpion 4) (set 3)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4tic2c ,sc4tic2, sc4_3reel, sc4, sc4_state, sc4tic2, ROT0, "Mazooma","Tic Tac Two Casino (Mazooma) (Scorpion 4) (set 4)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4tic2d ,sc4tic2, sc4_3reel, sc4, sc4_state, sc4tic2, ROT0, "Mazooma","Tic Tac Two Casino (Mazooma) (Scorpion 4) (set 5)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4tic2e ,sc4tic2, sc4_3reel, sc4, sc4_state, sc4tic2, ROT0, "Mazooma","Tic Tac Two Casino (Mazooma) (Scorpion 4) (set 6)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4tic2f ,sc4tic2, sc4_3reel, sc4, sc4_state, sc4tic2, ROT0, "Mazooma","Tic Tac Two Casino (Mazooma) (Scorpion 4) (set 7)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4tic2g ,sc4tic2, sc4_3reel, sc4, sc4_state, sc4tic2, ROT0, "Mazooma","Tic Tac Two Casino (Mazooma) (Scorpion 4) (set 8)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4tic2n ,sc4tic2, sc4_3reel, sc4, sc4_state, sc4tic2, ROT0, "Mazooma","Tic Tac Two Casino (Mazooma) (Scorpion 4) (set 9)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4tic2o ,sc4tic2, sc4_3reel, sc4, sc4_state, sc4tic2, ROT0, "Mazooma","Tic Tac Two Casino (Mazooma) (Scorpion 4) (set 10)", MACHINE_FLAGS, layout_bfm_sc4 )
// PR7060CASINO TICTACTWO TIC TAC TWO ARCADE TTTWO SOUNDS TIC TAC TWO
-GAMEL( 200?, sc4tic2i ,sc4tic2, sc4_3reel, sc4, sc4_state, sc4tic2_mbus, ROT0, "Mazooma","Tic Tac Two Casino Arcade (Mazooma) (Scorpion 4) (set 1)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4tic2j ,sc4tic2, sc4_3reel, sc4, sc4_state, sc4tic2_mbus, ROT0, "Mazooma","Tic Tac Two Casino Arcade (Mazooma) (Scorpion 4) (set 2)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4tic2k ,sc4tic2, sc4_3reel, sc4, sc4_state, sc4tic2_mbus, ROT0, "Mazooma","Tic Tac Two Casino Arcade (Mazooma) (Scorpion 4) (set 3)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4tic2h ,sc4tic2, sc4_3reel, sc4, sc4_state, sc4tic2, ROT0, "Mazooma","Tic Tac Two Casino Arcade (Mazooma) (Scorpion 4) (set 4)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4tic2l ,sc4tic2, sc4_3reel, sc4, sc4_state, sc4tic2, ROT0, "Mazooma","Tic Tac Two Casino Arcade (Mazooma) (Scorpion 4) (set 5)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4tic2m ,sc4tic2, sc4_3reel, sc4, sc4_state, sc4tic2, ROT0, "Mazooma","Tic Tac Two Casino Arcade (Mazooma) (Scorpion 4) (set 6)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4tic2i ,sc4tic2, sc4_3reel, sc4, sc4_state, sc4tic2_mbus, ROT0, "Mazooma","Tic Tac Two Casino Arcade (Mazooma) (Scorpion 4) (set 1)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4tic2j ,sc4tic2, sc4_3reel, sc4, sc4_state, sc4tic2_mbus, ROT0, "Mazooma","Tic Tac Two Casino Arcade (Mazooma) (Scorpion 4) (set 2)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4tic2k ,sc4tic2, sc4_3reel, sc4, sc4_state, sc4tic2_mbus, ROT0, "Mazooma","Tic Tac Two Casino Arcade (Mazooma) (Scorpion 4) (set 3)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4tic2h ,sc4tic2, sc4_3reel, sc4, sc4_state, sc4tic2, ROT0, "Mazooma","Tic Tac Two Casino Arcade (Mazooma) (Scorpion 4) (set 4)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4tic2l ,sc4tic2, sc4_3reel, sc4, sc4_state, sc4tic2, ROT0, "Mazooma","Tic Tac Two Casino Arcade (Mazooma) (Scorpion 4) (set 5)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4tic2m ,sc4tic2, sc4_3reel, sc4, sc4_state, sc4tic2, ROT0, "Mazooma","Tic Tac Two Casino Arcade (Mazooma) (Scorpion 4) (set 6)", MACHINE_FLAGS, layout_bfm_sc4 )
@@ -49022,13 +49024,13 @@ DRIVER_INIT_MEMBER(sc4_state,sc4ticlb)
}
// PR6832 TREASURE ISLAND FIXED 65% PR6832 TRES SOUNDS11
-GAMEL( 200?, sc4ticlb ,0, sc4dmd, sc4, sc4_state, sc4ticlb, ROT0, "BFM","Treasure Island Club (Fixed 65%) (Bellfruit) (Scorpion 4) (set 1)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_sc4_dmd )
-GAMEL( 200?, sc4ticlbb ,sc4ticlb, sc4dmd, sc4, sc4_state, sc4ticlb, ROT0, "BFM","Treasure Island Club (Fixed 65%) (Bellfruit) (Scorpion 4) (set 2)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_sc4_dmd )
+GAMEL( 200?, sc4ticlb ,0, sc4dmd, sc4, sc4_state, sc4ticlb, ROT0, "BFM","Treasure Island Club (Fixed 65%) (Bellfruit) (Scorpion 4) (set 1)", MACHINE_FLAGS, layout_sc4_dmd )
+GAMEL( 200?, sc4ticlbb ,sc4ticlb, sc4dmd, sc4, sc4_state, sc4ticlb, ROT0, "BFM","Treasure Island Club (Fixed 65%) (Bellfruit) (Scorpion 4) (set 2)", MACHINE_FLAGS, layout_sc4_dmd )
// PR6832 TREASURE ISLAND PR6832 TRES SOUNDS11
-GAMEL( 200?, sc4ticlba ,sc4ticlb, sc4dmd, sc4, sc4_state, sc4ticlb, ROT0, "BFM","Treasure Island Club (Bellfruit) (Scorpion 4) (set 1)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_sc4_dmd )
-GAMEL( 200?, sc4ticlbc ,sc4ticlb, sc4dmd, sc4, sc4_state, sc4ticlb, ROT0, "BFM","Treasure Island Club (Bellfruit) (Scorpion 4) (set 2)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_sc4_dmd )
+GAMEL( 200?, sc4ticlba ,sc4ticlb, sc4dmd, sc4, sc4_state, sc4ticlb, ROT0, "BFM","Treasure Island Club (Bellfruit) (Scorpion 4) (set 1)", MACHINE_FLAGS, layout_sc4_dmd )
+GAMEL( 200?, sc4ticlbc ,sc4ticlb, sc4dmd, sc4, sc4_state, sc4ticlb, ROT0, "BFM","Treasure Island Club (Bellfruit) (Scorpion 4) (set 2)", MACHINE_FLAGS, layout_sc4_dmd )
-GAMEL( 200?, sc4ticlbd ,sc4ticlb, sc4dmd, sc4, sc4_state, sc4ticlb, ROT0, "BFM","Treasure Island Club (Bellfruit) (Scorpion 4) (set 3)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_sc4_dmd )
+GAMEL( 200?, sc4ticlbd ,sc4ticlb, sc4dmd, sc4, sc4_state, sc4ticlb, ROT0, "BFM","Treasure Island Club (Bellfruit) (Scorpion 4) (set 3)", MACHINE_FLAGS, layout_sc4_dmd )
@@ -49050,31 +49052,31 @@ DRIVER_INIT_MEMBER(sc4_state,sc4tri7_mbus)
// PR1328 TRIPLE 7'S PR1328 TRIPLE 7S SOUNDS11 TRIPLE 7'S ABOVE
-GAMEL( 200?, sc4tri7 ,0, sc4_3reel, sc4, sc4_state, sc4tri7tb, ROT0, "BFM","Triple 7's (Bellfruit) (Scorpion 4) (Top Box, set 1)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 ) // ABUV
-GAMEL( 200?, sc4tri7a ,sc4tri7, sc4_3reel, sc4, sc4_state, sc4tri7tb, ROT0, "BFM","Triple 7's (Bellfruit) (Scorpion 4) (Top Box, set 2)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4tri7m ,sc4tri7, sc4_3reel, sc4, sc4_state, sc4tri7tb, ROT0, "BFM","Triple 7's (Bellfruit) (Scorpion 4) (Top Box, set 3)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4tri7n ,sc4tri7, sc4_3reel, sc4, sc4_state, sc4tri7tb, ROT0, "BFM","Triple 7's (Bellfruit) (Scorpion 4) (Top Box, set 4)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4tri7v ,sc4tri7, sc4_3reel, sc4, sc4_state, sc4tri7tb, ROT0, "BFM","Triple 7's (Bellfruit) (Scorpion 4) (Top Box, set 5)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4tri7w ,sc4tri7, sc4_3reel, sc4, sc4_state, sc4tri7tb, ROT0, "BFM","Triple 7's (Bellfruit) (Scorpion 4) (Top Box, set 6)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4tri7f ,sc4tri7, sc4_3reel, sc4, sc4_state, sc4tri7, ROT0, "BFM","Triple 7's (Bellfruit) (Scorpion 4) (set 1)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 ) // SEVN
-GAMEL( 200?, sc4tri7g ,sc4tri7, sc4_3reel, sc4, sc4_state, sc4tri7, ROT0, "BFM","Triple 7's (Bellfruit) (Scorpion 4) (set 2)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4tri7h ,sc4tri7, sc4_3reel, sc4, sc4_state, sc4tri7, ROT0, "BFM","Triple 7's (Bellfruit) (Scorpion 4) (set 3)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4tri7i ,sc4tri7, sc4_3reel, sc4, sc4_state, sc4tri7, ROT0, "BFM","Triple 7's (Bellfruit) (Scorpion 4) (set 4)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4tri7j ,sc4tri7, sc4_3reel, sc4, sc4_state, sc4tri7, ROT0, "BFM","Triple 7's (Bellfruit) (Scorpion 4) (set 5)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4tri7k ,sc4tri7, sc4_3reel, sc4, sc4_state, sc4tri7, ROT0, "BFM","Triple 7's (Bellfruit) (Scorpion 4) (set 6)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4tri7l ,sc4tri7, sc4_3reel, sc4, sc4_state, sc4tri7, ROT0, "BFM","Triple 7's (Bellfruit) (Scorpion 4) (set 7)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4tri7o ,sc4tri7, sc4_3reel, sc4, sc4_state, sc4tri7, ROT0, "BFM","Triple 7's (Bellfruit) (Scorpion 4) (set 8)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4tri7p ,sc4tri7, sc4_3reel, sc4, sc4_state, sc4tri7, ROT0, "BFM","Triple 7's (Bellfruit) (Scorpion 4) (set 9)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4tri7q ,sc4tri7, sc4_3reel, sc4, sc4_state, sc4tri7, ROT0, "BFM","Triple 7's (Bellfruit) (Scorpion 4) (set 10)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4tri7r ,sc4tri7, sc4_3reel, sc4, sc4_state, sc4tri7, ROT0, "BFM","Triple 7's (Bellfruit) (Scorpion 4) (set 11)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4tri7s ,sc4tri7, sc4_3reel, sc4, sc4_state, sc4tri7, ROT0, "BFM","Triple 7's (Bellfruit) (Scorpion 4) (set 12)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4tri7t ,sc4tri7, sc4_3reel, sc4, sc4_state, sc4tri7, ROT0, "BFM","Triple 7's (Bellfruit) (Scorpion 4) (set 13)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4tri7u ,sc4tri7, sc4_3reel, sc4, sc4_state, sc4tri7, ROT0, "BFM","Triple 7's (Bellfruit) (Scorpion 4) (set 14)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4tri7 ,0, sc4_3reel, sc4, sc4_state, sc4tri7tb, ROT0, "BFM","Triple 7's (Bellfruit) (Scorpion 4) (Top Box, set 1)", MACHINE_FLAGS, layout_bfm_sc4 ) // ABUV
+GAMEL( 200?, sc4tri7a ,sc4tri7, sc4_3reel, sc4, sc4_state, sc4tri7tb, ROT0, "BFM","Triple 7's (Bellfruit) (Scorpion 4) (Top Box, set 2)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4tri7m ,sc4tri7, sc4_3reel, sc4, sc4_state, sc4tri7tb, ROT0, "BFM","Triple 7's (Bellfruit) (Scorpion 4) (Top Box, set 3)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4tri7n ,sc4tri7, sc4_3reel, sc4, sc4_state, sc4tri7tb, ROT0, "BFM","Triple 7's (Bellfruit) (Scorpion 4) (Top Box, set 4)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4tri7v ,sc4tri7, sc4_3reel, sc4, sc4_state, sc4tri7tb, ROT0, "BFM","Triple 7's (Bellfruit) (Scorpion 4) (Top Box, set 5)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4tri7w ,sc4tri7, sc4_3reel, sc4, sc4_state, sc4tri7tb, ROT0, "BFM","Triple 7's (Bellfruit) (Scorpion 4) (Top Box, set 6)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4tri7f ,sc4tri7, sc4_3reel, sc4, sc4_state, sc4tri7, ROT0, "BFM","Triple 7's (Bellfruit) (Scorpion 4) (set 1)", MACHINE_FLAGS, layout_bfm_sc4 ) // SEVN
+GAMEL( 200?, sc4tri7g ,sc4tri7, sc4_3reel, sc4, sc4_state, sc4tri7, ROT0, "BFM","Triple 7's (Bellfruit) (Scorpion 4) (set 2)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4tri7h ,sc4tri7, sc4_3reel, sc4, sc4_state, sc4tri7, ROT0, "BFM","Triple 7's (Bellfruit) (Scorpion 4) (set 3)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4tri7i ,sc4tri7, sc4_3reel, sc4, sc4_state, sc4tri7, ROT0, "BFM","Triple 7's (Bellfruit) (Scorpion 4) (set 4)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4tri7j ,sc4tri7, sc4_3reel, sc4, sc4_state, sc4tri7, ROT0, "BFM","Triple 7's (Bellfruit) (Scorpion 4) (set 5)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4tri7k ,sc4tri7, sc4_3reel, sc4, sc4_state, sc4tri7, ROT0, "BFM","Triple 7's (Bellfruit) (Scorpion 4) (set 6)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4tri7l ,sc4tri7, sc4_3reel, sc4, sc4_state, sc4tri7, ROT0, "BFM","Triple 7's (Bellfruit) (Scorpion 4) (set 7)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4tri7o ,sc4tri7, sc4_3reel, sc4, sc4_state, sc4tri7, ROT0, "BFM","Triple 7's (Bellfruit) (Scorpion 4) (set 8)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4tri7p ,sc4tri7, sc4_3reel, sc4, sc4_state, sc4tri7, ROT0, "BFM","Triple 7's (Bellfruit) (Scorpion 4) (set 9)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4tri7q ,sc4tri7, sc4_3reel, sc4, sc4_state, sc4tri7, ROT0, "BFM","Triple 7's (Bellfruit) (Scorpion 4) (set 10)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4tri7r ,sc4tri7, sc4_3reel, sc4, sc4_state, sc4tri7, ROT0, "BFM","Triple 7's (Bellfruit) (Scorpion 4) (set 11)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4tri7s ,sc4tri7, sc4_3reel, sc4, sc4_state, sc4tri7, ROT0, "BFM","Triple 7's (Bellfruit) (Scorpion 4) (set 12)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4tri7t ,sc4tri7, sc4_3reel, sc4, sc4_state, sc4tri7, ROT0, "BFM","Triple 7's (Bellfruit) (Scorpion 4) (set 13)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4tri7u ,sc4tri7, sc4_3reel, sc4, sc4_state, sc4tri7, ROT0, "BFM","Triple 7's (Bellfruit) (Scorpion 4) (set 14)", MACHINE_FLAGS, layout_bfm_sc4 )
// PR1328 TRIPLE 7'S PR1328 TRIPLE 7S SOUNDS11 SEVENS ABOVE ARCADE TRIPLE 7'S ABOVE
-GAMEL( 200?, sc4tri7b ,sc4tri7, sc4_3reel, sc4, sc4_state, sc4tri7_mbus, ROT0, "BFM","Triple 7's Arcade (Bellfruit) (Scorpion 4) (set 1)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4tri7c ,sc4tri7, sc4_3reel, sc4, sc4_state, sc4tri7_mbus, ROT0, "BFM","Triple 7's Arcade (Bellfruit) (Scorpion 4) (set 2)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4tri7d ,sc4tri7, sc4_3reel, sc4, sc4_state, sc4tri7_mbus, ROT0, "BFM","Triple 7's Arcade (Bellfruit) (Scorpion 4) (set 3)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4tri7e ,sc4tri7, sc4_3reel, sc4, sc4_state, sc4tri7_mbus, ROT0, "BFM","Triple 7's Arcade (Bellfruit) (Scorpion 4) (set 4)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4tri7b ,sc4tri7, sc4_3reel, sc4, sc4_state, sc4tri7_mbus, ROT0, "BFM","Triple 7's Arcade (Bellfruit) (Scorpion 4) (set 1)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4tri7c ,sc4tri7, sc4_3reel, sc4, sc4_state, sc4tri7_mbus, ROT0, "BFM","Triple 7's Arcade (Bellfruit) (Scorpion 4) (set 2)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4tri7d ,sc4tri7, sc4_3reel, sc4, sc4_state, sc4tri7_mbus, ROT0, "BFM","Triple 7's Arcade (Bellfruit) (Scorpion 4) (set 3)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4tri7e ,sc4tri7, sc4_3reel, sc4, sc4_state, sc4tri7_mbus, ROT0, "BFM","Triple 7's Arcade (Bellfruit) (Scorpion 4) (set 4)", MACHINE_FLAGS, layout_bfm_sc4 )
DRIVER_INIT_MEMBER(sc4_state,sc4tub)
@@ -49084,10 +49086,10 @@ DRIVER_INIT_MEMBER(sc4_state,sc4tub)
// PR1103 TUBULAR BELLS PR1103 TUBULAR BELLS SOUNDS11
-GAMEL( 200?, sc4tub ,0, sc4_200_4ra, sc4, sc4_state, sc4tub, ROT0, "BFM","Tubular Bells (Bellfruit) (Scorpion 4) (set 1)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4tuba ,sc4tub, sc4_200_4ra, sc4, sc4_state, sc4tub, ROT0, "BFM","Tubular Bells (Bellfruit) (Scorpion 4) (set 2)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4tubb ,sc4tub, sc4_200_4ra, sc4, sc4_state, sc4tub, ROT0, "BFM","Tubular Bells (Bellfruit) (Scorpion 4) (set 3)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4tubc ,sc4tub, sc4_200_4ra, sc4, sc4_state, sc4tub, ROT0, "BFM","Tubular Bells (Bellfruit) (Scorpion 4) (set 4)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4tub ,0, sc4_200_4ra, sc4, sc4_state, sc4tub, ROT0, "BFM","Tubular Bells (Bellfruit) (Scorpion 4) (set 1)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4tuba ,sc4tub, sc4_200_4ra, sc4, sc4_state, sc4tub, ROT0, "BFM","Tubular Bells (Bellfruit) (Scorpion 4) (set 2)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4tubb ,sc4tub, sc4_200_4ra, sc4, sc4_state, sc4tub, ROT0, "BFM","Tubular Bells (Bellfruit) (Scorpion 4) (set 3)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4tubc ,sc4tub, sc4_200_4ra, sc4, sc4_state, sc4tub, ROT0, "BFM","Tubular Bells (Bellfruit) (Scorpion 4) (set 4)", MACHINE_FLAGS, layout_bfm_sc4 )
@@ -49098,9 +49100,9 @@ DRIVER_INIT_MEMBER(sc4_state,sc4vmclb)
// / PR7132 CLUB VIVA MEXICO PR7132 VIVA SOUNDS11 VIVA MEXICO
-GAMEL( 200?, sc4vmclb ,0, sc4_5reel, sc4, sc4_state, sc4vmclb, ROT0, "BFM","Viva Mexico Club (Bellfruit) (Scorpion 4) (set 1)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4vmclba ,sc4vmclb, sc4_5reel, sc4, sc4_state, sc4vmclb, ROT0, "BFM","Viva Mexico Club (Bellfruit) (Scorpion 4) (set 2)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4vmclbb ,sc4vmclb, sc4_5reel, sc4, sc4_state, sc4vmclb, ROT0, "BFM","Viva Mexico Club (Bellfruit) (Scorpion 4) (set 3)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4vmclb ,0, sc4_5reel, sc4, sc4_state, sc4vmclb, ROT0, "BFM","Viva Mexico Club (Bellfruit) (Scorpion 4) (set 1)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4vmclba ,sc4vmclb, sc4_5reel, sc4, sc4_state, sc4vmclb, ROT0, "BFM","Viva Mexico Club (Bellfruit) (Scorpion 4) (set 2)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4vmclbb ,sc4vmclb, sc4_5reel, sc4, sc4_state, sc4vmclb, ROT0, "BFM","Viva Mexico Club (Bellfruit) (Scorpion 4) (set 3)", MACHINE_FLAGS, layout_bfm_sc4 )
@@ -49111,13 +49113,13 @@ DRIVER_INIT_MEMBER(sc4_state,sc4waw)
// Reel 4 is strange ERR24
// PR7065 WET 'N' WILD WILD SOUNDS WET 'N' WILD
-GAMEL( 200?, sc4waw ,0, sc4_4reel, sc4, sc4_state, sc4waw, ROT0, "Mazooma","Wet & Wild (Mazooma) (Scorpion 4) (set 1)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4wawa ,sc4waw, sc4_4reel, sc4, sc4_state, sc4waw, ROT0, "Mazooma","Wet & Wild (Mazooma) (Scorpion 4) (set 2)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4wawb ,sc4waw, sc4_4reel, sc4, sc4_state, sc4waw, ROT0, "Mazooma","Wet & Wild (Mazooma) (Scorpion 4) (set 3)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4wawc ,sc4waw, sc4_4reel, sc4, sc4_state, sc4waw, ROT0, "Mazooma","Wet & Wild (Mazooma) (Scorpion 4) (set 4)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4wawd ,sc4waw, sc4_4reel, sc4, sc4_state, sc4waw, ROT0, "Mazooma","Wet & Wild (Mazooma) (Scorpion 4) (set 5)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4wawe ,sc4waw, sc4_4reel, sc4, sc4_state, sc4waw, ROT0, "Mazooma","Wet & Wild (Mazooma) (Scorpion 4) (set 6)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4wawf ,sc4waw, sc4_4reel, sc4, sc4_state, sc4waw, ROT0, "Mazooma","Wet & Wild (Mazooma) (Scorpion 4) (set 7)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4waw ,0, sc4_4reel, sc4, sc4_state, sc4waw, ROT0, "Mazooma","Wet & Wild (Mazooma) (Scorpion 4) (set 1)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4wawa ,sc4waw, sc4_4reel, sc4, sc4_state, sc4waw, ROT0, "Mazooma","Wet & Wild (Mazooma) (Scorpion 4) (set 2)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4wawb ,sc4waw, sc4_4reel, sc4, sc4_state, sc4waw, ROT0, "Mazooma","Wet & Wild (Mazooma) (Scorpion 4) (set 3)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4wawc ,sc4waw, sc4_4reel, sc4, sc4_state, sc4waw, ROT0, "Mazooma","Wet & Wild (Mazooma) (Scorpion 4) (set 4)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4wawd ,sc4waw, sc4_4reel, sc4, sc4_state, sc4waw, ROT0, "Mazooma","Wet & Wild (Mazooma) (Scorpion 4) (set 5)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4wawe ,sc4waw, sc4_4reel, sc4, sc4_state, sc4waw, ROT0, "Mazooma","Wet & Wild (Mazooma) (Scorpion 4) (set 6)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4wawf ,sc4waw, sc4_4reel, sc4, sc4_state, sc4waw, ROT0, "Mazooma","Wet & Wild (Mazooma) (Scorpion 4) (set 7)", MACHINE_FLAGS, layout_bfm_sc4 )
DRIVER_INIT_MEMBER(sc4_state,sc4clbtm)
@@ -49127,12 +49129,12 @@ DRIVER_INIT_MEMBER(sc4_state,sc4clbtm)
// PR7131 CLUB TEMPTATION PR7131 TEMPTATION SOUNDS11
-GAMEL( 200?, sc4clbtm ,0, sc4dmd, sc4, sc4_state, sc4clbtm, ROT0, "BFM","Club Temptation (Bellfruit) (Scorpion 4) (set 1)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_sc4_dmd )
-GAMEL( 200?, sc4clbtma ,sc4clbtm, sc4dmd, sc4, sc4_state, sc4clbtm, ROT0, "BFM","Club Temptation (Bellfruit) (Scorpion 4) (set 2)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_sc4_dmd )
-GAMEL( 200?, sc4clbtmb ,sc4clbtm, sc4dmd, sc4, sc4_state, sc4clbtm, ROT0, "BFM","Club Temptation (Bellfruit) (Scorpion 4) (set 3)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_sc4_dmd )
-GAMEL( 200?, sc4clbtmc ,sc4clbtm, sc4dmd, sc4, sc4_state, sc4clbtm, ROT0, "BFM","Club Temptation (Bellfruit) (Scorpion 4) (set 4)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_sc4_dmd )
-GAMEL( 200?, sc4clbtmd ,sc4clbtm, sc4dmd, sc4, sc4_state, sc4clbtm, ROT0, "BFM","Club Temptation (Bellfruit) (Scorpion 4) (set 5)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_sc4_dmd )
-GAMEL( 200?, sc4clbtme ,sc4clbtm, sc4dmd, sc4, sc4_state, sc4clbtm, ROT0, "BFM","Club Temptation (Bellfruit) (Scorpion 4) (set 6)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_sc4_dmd )
+GAMEL( 200?, sc4clbtm ,0, sc4dmd, sc4, sc4_state, sc4clbtm, ROT0, "BFM","Club Temptation (Bellfruit) (Scorpion 4) (set 1)", MACHINE_FLAGS, layout_sc4_dmd )
+GAMEL( 200?, sc4clbtma ,sc4clbtm, sc4dmd, sc4, sc4_state, sc4clbtm, ROT0, "BFM","Club Temptation (Bellfruit) (Scorpion 4) (set 2)", MACHINE_FLAGS, layout_sc4_dmd )
+GAMEL( 200?, sc4clbtmb ,sc4clbtm, sc4dmd, sc4, sc4_state, sc4clbtm, ROT0, "BFM","Club Temptation (Bellfruit) (Scorpion 4) (set 3)", MACHINE_FLAGS, layout_sc4_dmd )
+GAMEL( 200?, sc4clbtmc ,sc4clbtm, sc4dmd, sc4, sc4_state, sc4clbtm, ROT0, "BFM","Club Temptation (Bellfruit) (Scorpion 4) (set 4)", MACHINE_FLAGS, layout_sc4_dmd )
+GAMEL( 200?, sc4clbtmd ,sc4clbtm, sc4dmd, sc4, sc4_state, sc4clbtm, ROT0, "BFM","Club Temptation (Bellfruit) (Scorpion 4) (set 5)", MACHINE_FLAGS, layout_sc4_dmd )
+GAMEL( 200?, sc4clbtme ,sc4clbtm, sc4dmd, sc4, sc4_state, sc4clbtm, ROT0, "BFM","Club Temptation (Bellfruit) (Scorpion 4) (set 6)", MACHINE_FLAGS, layout_sc4_dmd )
@@ -49145,10 +49147,10 @@ DRIVER_INIT_MEMBER(sc4_state,sc4gbcas)
// this one is a variation of lucky balls
// PR1034 CASINO GOLDEN BALLS PR1034 GOLDEN BALLS SOUNDS11
-GAMEL( 200?, sc4gbcas ,0, sc4_200_4r, sc4, sc4_state, sc4gbcas, ROT0, "BFM","Casino Golden Balls (Bellfruit) (Scorpion 4) (set 1)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4gbcasa ,sc4gbcas, sc4_200_4r, sc4, sc4_state, sc4gbcas, ROT0, "BFM","Casino Golden Balls (Bellfruit) (Scorpion 4) (set 2)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4gbcasb ,sc4gbcas, sc4_200_4r, sc4, sc4_state, sc4gbcas, ROT0, "BFM","Casino Golden Balls (Bellfruit) (Scorpion 4) (set 3)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4gbcasc ,sc4gbcas, sc4_200_4r, sc4, sc4_state, sc4gbcas, ROT0, "BFM","Casino Golden Balls (Bellfruit) (Scorpion 4) (set 4)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4gbcas ,0, sc4_200_4r, sc4, sc4_state, sc4gbcas, ROT0, "BFM","Casino Golden Balls (Bellfruit) (Scorpion 4) (set 1)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4gbcasa ,sc4gbcas, sc4_200_4r, sc4, sc4_state, sc4gbcas, ROT0, "BFM","Casino Golden Balls (Bellfruit) (Scorpion 4) (set 2)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4gbcasb ,sc4gbcas, sc4_200_4r, sc4, sc4_state, sc4gbcas, ROT0, "BFM","Casino Golden Balls (Bellfruit) (Scorpion 4) (set 3)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4gbcasc ,sc4gbcas, sc4_200_4r, sc4, sc4_state, sc4gbcas, ROT0, "BFM","Casino Golden Balls (Bellfruit) (Scorpion 4) (set 4)", MACHINE_FLAGS, layout_bfm_sc4 )
DRIVER_INIT_MEMBER(sc4_state,sc4hntcsm)
@@ -49163,27 +49165,27 @@ DRIVER_INIT_MEMBER(sc4_state,sc4hntcs)
}
// PR1327 CASINO HAPPY NOTES HAPPY NOTES S.SITE PR1327 CAS_HAPPY_NOTES SOUNDS11
-GAMEL( 200?, sc4hntcs ,0, sc4_4reel, sc4, sc4_state, sc4hntcsm, ROT0, "BFM","Happy Notes Casino (Bellfruit) (Scorpion 4) (set 1)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4hntcsa ,sc4hntcs, sc4_4reel, sc4, sc4_state, sc4hntcsm, ROT0, "BFM","Happy Notes Casino (Bellfruit) (Scorpion 4) (set 2)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4hntcsb ,sc4hntcs, sc4_4reel, sc4, sc4_state, sc4hntcsm, ROT0, "BFM","Happy Notes Casino (Bellfruit) (Scorpion 4) (set 3)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4hntcsc ,sc4hntcs, sc4_4reel, sc4, sc4_state, sc4hntcsm, ROT0, "BFM","Happy Notes Casino (Bellfruit) (Scorpion 4) (set 4)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4hntcs ,0, sc4_4reel, sc4, sc4_state, sc4hntcsm, ROT0, "BFM","Happy Notes Casino (Bellfruit) (Scorpion 4) (set 1)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4hntcsa ,sc4hntcs, sc4_4reel, sc4, sc4_state, sc4hntcsm, ROT0, "BFM","Happy Notes Casino (Bellfruit) (Scorpion 4) (set 2)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4hntcsb ,sc4hntcs, sc4_4reel, sc4, sc4_state, sc4hntcsm, ROT0, "BFM","Happy Notes Casino (Bellfruit) (Scorpion 4) (set 3)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4hntcsc ,sc4hntcs, sc4_4reel, sc4, sc4_state, sc4hntcsm, ROT0, "BFM","Happy Notes Casino (Bellfruit) (Scorpion 4) (set 4)", MACHINE_FLAGS, layout_bfm_sc4 )
// PR1327 CASINO HAPPY NOTES PR1327 CAS_HAPPY_NOTES SOUNDS11
-GAMEL( 200?, sc4hntcsd ,sc4hntcs, sc4_4reel, sc4, sc4_state, sc4hntcs, ROT0, "BFM","Happy Notes Casino (Bellfruit) (Scorpion 4) (set 5)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4hntcse ,sc4hntcs, sc4_4reel, sc4, sc4_state, sc4hntcs, ROT0, "BFM","Happy Notes Casino (Bellfruit) (Scorpion 4) (set 6)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4hntcsf ,sc4hntcs, sc4_4reel, sc4, sc4_state, sc4hntcs, ROT0, "BFM","Happy Notes Casino (Bellfruit) (Scorpion 4) (set 7)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4hntcsg ,sc4hntcs, sc4_4reel, sc4, sc4_state, sc4hntcs, ROT0, "BFM","Happy Notes Casino (Bellfruit) (Scorpion 4) (set 8)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4hntcsh ,sc4hntcs, sc4_4reel, sc4, sc4_state, sc4hntcs, ROT0, "BFM","Happy Notes Casino (Bellfruit) (Scorpion 4) (set 9)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4hntcsi ,sc4hntcs, sc4_4reel, sc4, sc4_state, sc4hntcs, ROT0, "BFM","Happy Notes Casino (Bellfruit) (Scorpion 4) (set 10)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4hntcsj ,sc4hntcs, sc4_4reel, sc4, sc4_state, sc4hntcs, ROT0, "BFM","Happy Notes Casino (Bellfruit) (Scorpion 4) (set 11)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4hntcsk ,sc4hntcs, sc4_4reel, sc4, sc4_state, sc4hntcs, ROT0, "BFM","Happy Notes Casino (Bellfruit) (Scorpion 4) (set 12)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4hntcsl ,sc4hntcs, sc4_4reel, sc4, sc4_state, sc4hntcs, ROT0, "BFM","Happy Notes Casino (Bellfruit) (Scorpion 4) (set 13)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4hntcsm ,sc4hntcs, sc4_4reel, sc4, sc4_state, sc4hntcs, ROT0, "BFM","Happy Notes Casino (Bellfruit) (Scorpion 4) (set 14)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4hntcsn ,sc4hntcs, sc4_4reel, sc4, sc4_state, sc4hntcs, ROT0, "BFM","Happy Notes Casino (Bellfruit) (Scorpion 4) (set 15)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4hntcso ,sc4hntcs, sc4_4reel, sc4, sc4_state, sc4hntcs, ROT0, "BFM","Happy Notes Casino (Bellfruit) (Scorpion 4) (set 16)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4hntcsp ,sc4hntcs, sc4_4reel, sc4, sc4_state, sc4hntcs, ROT0, "BFM","Happy Notes Casino (Bellfruit) (Scorpion 4) (set 17)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4hntcsq ,sc4hntcs, sc4_4reel, sc4, sc4_state, sc4hntcs, ROT0, "BFM","Happy Notes Casino (Bellfruit) (Scorpion 4) (set 18)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4hntcsr ,sc4hntcs, sc4_4reel, sc4, sc4_state, sc4hntcs, ROT0, "BFM","Happy Notes Casino (Bellfruit) (Scorpion 4) (set 19)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4hntcss ,sc4hntcs, sc4_4reel, sc4, sc4_state, sc4hntcs, ROT0, "BFM","Happy Notes Casino (Bellfruit) (Scorpion 4) (set 20)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4hntcsd ,sc4hntcs, sc4_4reel, sc4, sc4_state, sc4hntcs, ROT0, "BFM","Happy Notes Casino (Bellfruit) (Scorpion 4) (set 5)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4hntcse ,sc4hntcs, sc4_4reel, sc4, sc4_state, sc4hntcs, ROT0, "BFM","Happy Notes Casino (Bellfruit) (Scorpion 4) (set 6)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4hntcsf ,sc4hntcs, sc4_4reel, sc4, sc4_state, sc4hntcs, ROT0, "BFM","Happy Notes Casino (Bellfruit) (Scorpion 4) (set 7)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4hntcsg ,sc4hntcs, sc4_4reel, sc4, sc4_state, sc4hntcs, ROT0, "BFM","Happy Notes Casino (Bellfruit) (Scorpion 4) (set 8)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4hntcsh ,sc4hntcs, sc4_4reel, sc4, sc4_state, sc4hntcs, ROT0, "BFM","Happy Notes Casino (Bellfruit) (Scorpion 4) (set 9)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4hntcsi ,sc4hntcs, sc4_4reel, sc4, sc4_state, sc4hntcs, ROT0, "BFM","Happy Notes Casino (Bellfruit) (Scorpion 4) (set 10)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4hntcsj ,sc4hntcs, sc4_4reel, sc4, sc4_state, sc4hntcs, ROT0, "BFM","Happy Notes Casino (Bellfruit) (Scorpion 4) (set 11)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4hntcsk ,sc4hntcs, sc4_4reel, sc4, sc4_state, sc4hntcs, ROT0, "BFM","Happy Notes Casino (Bellfruit) (Scorpion 4) (set 12)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4hntcsl ,sc4hntcs, sc4_4reel, sc4, sc4_state, sc4hntcs, ROT0, "BFM","Happy Notes Casino (Bellfruit) (Scorpion 4) (set 13)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4hntcsm ,sc4hntcs, sc4_4reel, sc4, sc4_state, sc4hntcs, ROT0, "BFM","Happy Notes Casino (Bellfruit) (Scorpion 4) (set 14)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4hntcsn ,sc4hntcs, sc4_4reel, sc4, sc4_state, sc4hntcs, ROT0, "BFM","Happy Notes Casino (Bellfruit) (Scorpion 4) (set 15)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4hntcso ,sc4hntcs, sc4_4reel, sc4, sc4_state, sc4hntcs, ROT0, "BFM","Happy Notes Casino (Bellfruit) (Scorpion 4) (set 16)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4hntcsp ,sc4hntcs, sc4_4reel, sc4, sc4_state, sc4hntcs, ROT0, "BFM","Happy Notes Casino (Bellfruit) (Scorpion 4) (set 17)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4hntcsq ,sc4hntcs, sc4_4reel, sc4, sc4_state, sc4hntcs, ROT0, "BFM","Happy Notes Casino (Bellfruit) (Scorpion 4) (set 18)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4hntcsr ,sc4hntcs, sc4_4reel, sc4, sc4_state, sc4hntcs, ROT0, "BFM","Happy Notes Casino (Bellfruit) (Scorpion 4) (set 19)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4hntcss ,sc4hntcs, sc4_4reel, sc4, sc4_state, sc4hntcs, ROT0, "BFM","Happy Notes Casino (Bellfruit) (Scorpion 4) (set 20)", MACHINE_FLAGS, layout_bfm_sc4 )
DRIVER_INIT_MEMBER(sc4_state,sc4rhx)
@@ -49197,38 +49199,38 @@ DRIVER_INIT_MEMBER(sc4_state,sc4rhx_mbus)
}
// PR2077 RED HOT X REDX SOUNDS RED HOT X
-GAMEL( 200?, sc4rhx ,0, sc4_200_altb, sc4, sc4_state, sc4rhx, ROT0, "Mazooma","Red Hot X (Mazooma) (Scorpion 4) (set 1)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4rhxa ,sc4rhx, sc4_200_altb, sc4, sc4_state, sc4rhx, ROT0, "Mazooma","Red Hot X (Mazooma) (Scorpion 4) (set 2)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4rhxd ,sc4rhx, sc4_200_altb, sc4, sc4_state, sc4rhx, ROT0, "Mazooma","Red Hot X (Mazooma) (Scorpion 4) (set 3)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4rhxe ,sc4rhx, sc4_200_altb, sc4, sc4_state, sc4rhx, ROT0, "Mazooma","Red Hot X (Mazooma) (Scorpion 4) (set 4)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4rhxj ,sc4rhx, sc4_200_altb, sc4, sc4_state, sc4rhx, ROT0, "Mazooma","Red Hot X (Mazooma) (Scorpion 4) (set 5)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4rhxk ,sc4rhx, sc4_200_altb, sc4, sc4_state, sc4rhx, ROT0, "Mazooma","Red Hot X (Mazooma) (Scorpion 4) (set 6)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 ) // incomplete pairing
-GAMEL( 200?, sc4rhxl ,sc4rhx, sc4_200_altb, sc4, sc4_state, sc4rhx, ROT0, "Mazooma","Red Hot X (Mazooma) (Scorpion 4) (set 7)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4rhxm ,sc4rhx, sc4_200_altb, sc4, sc4_state, sc4rhx, ROT0, "Mazooma","Red Hot X (Mazooma) (Scorpion 4) (set 8)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4rhx ,0, sc4_200_altb, sc4, sc4_state, sc4rhx, ROT0, "Mazooma","Red Hot X (Mazooma) (Scorpion 4) (set 1)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4rhxa ,sc4rhx, sc4_200_altb, sc4, sc4_state, sc4rhx, ROT0, "Mazooma","Red Hot X (Mazooma) (Scorpion 4) (set 2)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4rhxd ,sc4rhx, sc4_200_altb, sc4, sc4_state, sc4rhx, ROT0, "Mazooma","Red Hot X (Mazooma) (Scorpion 4) (set 3)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4rhxe ,sc4rhx, sc4_200_altb, sc4, sc4_state, sc4rhx, ROT0, "Mazooma","Red Hot X (Mazooma) (Scorpion 4) (set 4)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4rhxj ,sc4rhx, sc4_200_altb, sc4, sc4_state, sc4rhx, ROT0, "Mazooma","Red Hot X (Mazooma) (Scorpion 4) (set 5)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4rhxk ,sc4rhx, sc4_200_altb, sc4, sc4_state, sc4rhx, ROT0, "Mazooma","Red Hot X (Mazooma) (Scorpion 4) (set 6)", MACHINE_FLAGS, layout_bfm_sc4 ) // incomplete pairing
+GAMEL( 200?, sc4rhxl ,sc4rhx, sc4_200_altb, sc4, sc4_state, sc4rhx, ROT0, "Mazooma","Red Hot X (Mazooma) (Scorpion 4) (set 7)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4rhxm ,sc4rhx, sc4_200_altb, sc4, sc4_state, sc4rhx, ROT0, "Mazooma","Red Hot X (Mazooma) (Scorpion 4) (set 8)", MACHINE_FLAGS, layout_bfm_sc4 )
// PR2077 RED HOT X RED HOT X ARCADE REDX SOUNDS RED HOT X
-GAMEL( 200?, sc4rhxb ,sc4rhx, sc4_200_altb, sc4, sc4_state, sc4rhx_mbus, ROT0, "Mazooma","Red Hot X (Mazooma) (Scorpion 4) (set 9)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4rhxc ,sc4rhx, sc4_200_altb, sc4, sc4_state, sc4rhx_mbus, ROT0, "Mazooma","Red Hot X (Mazooma) (Scorpion 4) (set 10)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4rhxh ,sc4rhx, sc4_200_altb, sc4, sc4_state, sc4rhx_mbus, ROT0, "Mazooma","Red Hot X (Mazooma) (Scorpion 4) (set 13)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4rhxi ,sc4rhx, sc4_200_altb, sc4, sc4_state, sc4rhx_mbus, ROT0, "Mazooma","Red Hot X (Mazooma) (Scorpion 4) (set 14)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4rhxf ,sc4rhx, sc4_200_altb, sc4, sc4_state, sc4rhx, ROT0, "Mazooma","Red Hot X (Mazooma) (Scorpion 4) (set 11)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4rhxg ,sc4rhx, sc4_200_altb, sc4, sc4_state, sc4rhx, ROT0, "Mazooma","Red Hot X (Mazooma) (Scorpion 4) (set 12)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4rhxn ,sc4rhx, sc4_200_altb, sc4, sc4_state, sc4rhx, ROT0, "Mazooma","Red Hot X (Mazooma) (Scorpion 4) (set 15)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4rhxo ,sc4rhx, sc4_200_altb, sc4, sc4_state, sc4rhx, ROT0, "Mazooma","Red Hot X (Mazooma) (Scorpion 4) (set 16)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4rhxp ,sc4rhx, sc4_200_altb, sc4, sc4_state, sc4rhx, ROT0, "Mazooma","Red Hot X (Mazooma) (Scorpion 4) (set 17)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4rhxq ,sc4rhx, sc4_200_altb, sc4, sc4_state, sc4rhx, ROT0, "Mazooma","Red Hot X (Mazooma) (Scorpion 4) (set 18)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4rhxr ,sc4rhx, sc4_200_altb, sc4, sc4_state, sc4rhx, ROT0, "Mazooma","Red Hot X (Mazooma) (Scorpion 4) (set 19)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4rhxs ,sc4rhx, sc4_200_altb, sc4, sc4_state, sc4rhx, ROT0, "Mazooma","Red Hot X (Mazooma) (Scorpion 4) (set 20)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4rhxt ,sc4rhx, sc4_200_altb, sc4, sc4_state, sc4rhx, ROT0, "Mazooma","Red Hot X (Mazooma) (Scorpion 4) (set 21)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4rhxu ,sc4rhx, sc4_200_altb, sc4, sc4_state, sc4rhx, ROT0, "Mazooma","Red Hot X (Mazooma) (Scorpion 4) (set 22)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4rhxv ,sc4rhx, sc4_200_altb, sc4, sc4_state, sc4rhx, ROT0, "Mazooma","Red Hot X (Mazooma) (Scorpion 4) (set 23)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4rhxw ,sc4rhx, sc4_200_altb, sc4, sc4_state, sc4rhx, ROT0, "Mazooma","Red Hot X (Mazooma) (Scorpion 4) (set 24)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4rhxb ,sc4rhx, sc4_200_altb, sc4, sc4_state, sc4rhx_mbus, ROT0, "Mazooma","Red Hot X (Mazooma) (Scorpion 4) (set 9)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4rhxc ,sc4rhx, sc4_200_altb, sc4, sc4_state, sc4rhx_mbus, ROT0, "Mazooma","Red Hot X (Mazooma) (Scorpion 4) (set 10)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4rhxh ,sc4rhx, sc4_200_altb, sc4, sc4_state, sc4rhx_mbus, ROT0, "Mazooma","Red Hot X (Mazooma) (Scorpion 4) (set 13)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4rhxi ,sc4rhx, sc4_200_altb, sc4, sc4_state, sc4rhx_mbus, ROT0, "Mazooma","Red Hot X (Mazooma) (Scorpion 4) (set 14)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4rhxf ,sc4rhx, sc4_200_altb, sc4, sc4_state, sc4rhx, ROT0, "Mazooma","Red Hot X (Mazooma) (Scorpion 4) (set 11)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4rhxg ,sc4rhx, sc4_200_altb, sc4, sc4_state, sc4rhx, ROT0, "Mazooma","Red Hot X (Mazooma) (Scorpion 4) (set 12)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4rhxn ,sc4rhx, sc4_200_altb, sc4, sc4_state, sc4rhx, ROT0, "Mazooma","Red Hot X (Mazooma) (Scorpion 4) (set 15)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4rhxo ,sc4rhx, sc4_200_altb, sc4, sc4_state, sc4rhx, ROT0, "Mazooma","Red Hot X (Mazooma) (Scorpion 4) (set 16)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4rhxp ,sc4rhx, sc4_200_altb, sc4, sc4_state, sc4rhx, ROT0, "Mazooma","Red Hot X (Mazooma) (Scorpion 4) (set 17)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4rhxq ,sc4rhx, sc4_200_altb, sc4, sc4_state, sc4rhx, ROT0, "Mazooma","Red Hot X (Mazooma) (Scorpion 4) (set 18)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4rhxr ,sc4rhx, sc4_200_altb, sc4, sc4_state, sc4rhx, ROT0, "Mazooma","Red Hot X (Mazooma) (Scorpion 4) (set 19)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4rhxs ,sc4rhx, sc4_200_altb, sc4, sc4_state, sc4rhx, ROT0, "Mazooma","Red Hot X (Mazooma) (Scorpion 4) (set 20)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4rhxt ,sc4rhx, sc4_200_altb, sc4, sc4_state, sc4rhx, ROT0, "Mazooma","Red Hot X (Mazooma) (Scorpion 4) (set 21)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4rhxu ,sc4rhx, sc4_200_altb, sc4, sc4_state, sc4rhx, ROT0, "Mazooma","Red Hot X (Mazooma) (Scorpion 4) (set 22)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4rhxv ,sc4rhx, sc4_200_altb, sc4, sc4_state, sc4rhx, ROT0, "Mazooma","Red Hot X (Mazooma) (Scorpion 4) (set 23)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4rhxw ,sc4rhx, sc4_200_altb, sc4, sc4_state, sc4rhx, ROT0, "Mazooma","Red Hot X (Mazooma) (Scorpion 4) (set 24)", MACHINE_FLAGS, layout_bfm_sc4 )
// PR2056 RED HOT X CLUB REDX SOUNDS RED HOT X CLUB
-GAMEL( 200?, sc4rhxcl ,0, sc4, sc4, sc4_state, sc4rhx, ROT0, "Mazooma","Red Hot X Club (Mazooma) (Scorpion 4) (set 1)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4rhxcla ,sc4rhxcl, sc4, sc4, sc4_state, sc4rhx, ROT0, "Mazooma","Red Hot X Club (Mazooma) (Scorpion 4) (set 2)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4rhxclb ,sc4rhxcl, sc4, sc4, sc4_state, sc4rhx, ROT0, "Mazooma","Red Hot X Club (Mazooma) (Scorpion 4) (set 3)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4rhxclc ,sc4rhxcl, sc4, sc4, sc4_state, sc4rhx, ROT0, "Mazooma","Red Hot X Club (Mazooma) (Scorpion 4) (set 4)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4rhxcl ,0, sc4, sc4, sc4_state, sc4rhx, ROT0, "Mazooma","Red Hot X Club (Mazooma) (Scorpion 4) (set 1)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4rhxcla ,sc4rhxcl, sc4, sc4, sc4_state, sc4rhx, ROT0, "Mazooma","Red Hot X Club (Mazooma) (Scorpion 4) (set 2)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4rhxclb ,sc4rhxcl, sc4, sc4, sc4_state, sc4rhx, ROT0, "Mazooma","Red Hot X Club (Mazooma) (Scorpion 4) (set 3)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4rhxclc ,sc4rhxcl, sc4, sc4, sc4_state, sc4rhx, ROT0, "Mazooma","Red Hot X Club (Mazooma) (Scorpion 4) (set 4)", MACHINE_FLAGS, layout_bfm_sc4 )
@@ -49239,10 +49241,10 @@ DRIVER_INIT_MEMBER(sc4_state,sc4vivam)
// PR6907 VIVA MEXICO PR6907 VIVA MEXICO SOUNDS11
-GAMEL( 200?, sc4vivam ,0, sc4_4reel, sc4, sc4_state, sc4vivam, ROT0, "BFM","Viva Mexico (Bellfruit) (Scorpion 4) (set 1)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4vivama ,sc4vivam, sc4_4reel, sc4, sc4_state, sc4vivam, ROT0, "BFM","Viva Mexico (Bellfruit) (Scorpion 4) (set 2)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4vivamb ,sc4vivam, sc4_4reel, sc4, sc4_state, sc4vivam, ROT0, "BFM","Viva Mexico (Bellfruit) (Scorpion 4) (set 3)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4vivamc ,sc4vivam, sc4_4reel, sc4, sc4_state, sc4vivam, ROT0, "BFM","Viva Mexico (Bellfruit) (Scorpion 4) (set 4)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4vivam ,0, sc4_4reel, sc4, sc4_state, sc4vivam, ROT0, "BFM","Viva Mexico (Bellfruit) (Scorpion 4) (set 1)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4vivama ,sc4vivam, sc4_4reel, sc4, sc4_state, sc4vivam, ROT0, "BFM","Viva Mexico (Bellfruit) (Scorpion 4) (set 2)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4vivamb ,sc4vivam, sc4_4reel, sc4, sc4_state, sc4vivam, ROT0, "BFM","Viva Mexico (Bellfruit) (Scorpion 4) (set 3)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4vivamc ,sc4vivam, sc4_4reel, sc4, sc4_state, sc4vivam, ROT0, "BFM","Viva Mexico (Bellfruit) (Scorpion 4) (set 4)", MACHINE_FLAGS, layout_bfm_sc4 )
DRIVER_INIT_MEMBER(sc4_state,sc4vivcs)
@@ -49254,40 +49256,40 @@ DRIVER_INIT_MEMBER(sc4_state,sc4vivcs)
// PR6927 CASINO VIVA MEXICO PR6927 VIVAMEXICO SOUNDS11
// these do nothing..
-GAMEL( 200?, sc4vivcs ,0, sc4_3reel, sc4, sc4_state, sc4vivcs, ROT0, "BFM","Casino Viva Mexico (Bellfruit) (Scorpion 4) (set 1)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4vivcsa ,sc4vivcs, sc4_3reel, sc4, sc4_state, sc4vivcs, ROT0, "BFM","Casino Viva Mexico (Bellfruit) (Scorpion 4) (set 2)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4vivcs ,0, sc4_3reel, sc4, sc4_state, sc4vivcs, ROT0, "BFM","Casino Viva Mexico (Bellfruit) (Scorpion 4) (set 1)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4vivcsa ,sc4vivcs, sc4_3reel, sc4, sc4_state, sc4vivcs, ROT0, "BFM","Casino Viva Mexico (Bellfruit) (Scorpion 4) (set 2)", MACHINE_FLAGS, layout_bfm_sc4 )
// PR6927 CASINO VIVA MEXICO PR6927 VIVAMEXICO SOUNDS21
// these boot
-GAMEL( 200?, sc4vivcsb ,sc4vivcs, sc4_3reel, sc4, sc4_state, sc4vivcs, ROT0, "BFM","Casino Viva Mexico (Bellfruit) (Scorpion 4) (set 3)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4vivcsc ,sc4vivcs, sc4_3reel, sc4, sc4_state, sc4vivcs, ROT0, "BFM","Casino Viva Mexico (Bellfruit) (Scorpion 4) (set 4)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4vivcsd ,sc4vivcs, sc4_3reel, sc4, sc4_state, sc4vivcs, ROT0, "BFM","Casino Viva Mexico (Bellfruit) (Scorpion 4) (set 5)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4vivcse ,sc4vivcs, sc4_3reel, sc4, sc4_state, sc4vivcs, ROT0, "BFM","Casino Viva Mexico (Bellfruit) (Scorpion 4) (set 6)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4vivcsf ,sc4vivcs, sc4_3reel, sc4, sc4_state, sc4vivcs, ROT0, "BFM","Casino Viva Mexico (Bellfruit) (Scorpion 4) (set 7)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4vivcsg ,sc4vivcs, sc4_3reel, sc4, sc4_state, sc4vivcs, ROT0, "BFM","Casino Viva Mexico (Bellfruit) (Scorpion 4) (set 8)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4vivcsb ,sc4vivcs, sc4_3reel, sc4, sc4_state, sc4vivcs, ROT0, "BFM","Casino Viva Mexico (Bellfruit) (Scorpion 4) (set 3)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4vivcsc ,sc4vivcs, sc4_3reel, sc4, sc4_state, sc4vivcs, ROT0, "BFM","Casino Viva Mexico (Bellfruit) (Scorpion 4) (set 4)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4vivcsd ,sc4vivcs, sc4_3reel, sc4, sc4_state, sc4vivcs, ROT0, "BFM","Casino Viva Mexico (Bellfruit) (Scorpion 4) (set 5)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4vivcse ,sc4vivcs, sc4_3reel, sc4, sc4_state, sc4vivcs, ROT0, "BFM","Casino Viva Mexico (Bellfruit) (Scorpion 4) (set 6)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4vivcsf ,sc4vivcs, sc4_3reel, sc4, sc4_state, sc4vivcs, ROT0, "BFM","Casino Viva Mexico (Bellfruit) (Scorpion 4) (set 7)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4vivcsg ,sc4vivcs, sc4_3reel, sc4, sc4_state, sc4vivcs, ROT0, "BFM","Casino Viva Mexico (Bellfruit) (Scorpion 4) (set 8)", MACHINE_FLAGS, layout_bfm_sc4 )
// PR7054 POWER BALL POWERBALL SOUNDS
-GAMEL( 200?, sc4pwrbq ,0, sc4, sc4, sc4_state, sc4, ROT0, "Qps","Power Ball (Qps) (Scorpion 4) (set 1)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4pwrbqa ,sc4pwrbq, sc4, sc4, sc4_state, sc4, ROT0, "Qps","Power Ball (Qps) (Scorpion 4) (set 2)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4pwrbq ,0, sc4, sc4, sc4_state, sc4, ROT0, "Qps","Power Ball (Qps) (Scorpion 4) (set 1)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4pwrbqa ,sc4pwrbq, sc4, sc4, sc4_state, sc4, ROT0, "Qps","Power Ball (Qps) (Scorpion 4) (set 2)", MACHINE_FLAGS, layout_bfm_sc4 )
// fails to boot, like many of the Pole Position sets, probably needs some specific dips setting due to buggy code?
// PR7008 CHUBBY DOES VEGAS VEGAS SOUNDS11
-GAMEL( 200?, sc4chub ,0, sc4_4reel, sc4, sc4_state, sc4, ROT0, "Mazooma","Chubby Does Vegas (Mazooma) (Scorpion 4) (set 1)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4chuba ,sc4chub, sc4_4reel, sc4, sc4_state, sc4, ROT0, "Mazooma","Chubby Does Vegas (Mazooma) (Scorpion 4) (set 2)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4chubb ,sc4chub, sc4_4reel, sc4, sc4_state, sc4, ROT0, "Mazooma","Chubby Does Vegas (Mazooma) (Scorpion 4) (set 3)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4chub ,0, sc4_4reel, sc4, sc4_state, sc4, ROT0, "Mazooma","Chubby Does Vegas (Mazooma) (Scorpion 4) (set 1)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4chuba ,sc4chub, sc4_4reel, sc4, sc4_state, sc4, ROT0, "Mazooma","Chubby Does Vegas (Mazooma) (Scorpion 4) (set 2)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4chubb ,sc4chub, sc4_4reel, sc4, sc4_state, sc4, ROT0, "Mazooma","Chubby Does Vegas (Mazooma) (Scorpion 4) (set 3)", MACHINE_FLAGS, layout_bfm_sc4 )
// no sound roms, doesn't init properly (doesn't even attempt reel test)
// PR7011 BLUE RINSE BRINSE SOUNDS
-GAMEL( 200?, sc4blue ,0, sc4, sc4, sc4_state, sc4, ROT0, "Mazooma","Blue Rinse (Mazooma) (Scorpion 4) (set 1)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4bluea ,sc4blue, sc4, sc4, sc4_state, sc4, ROT0, "Mazooma","Blue Rinse (Mazooma) (Scorpion 4) (set 2)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4blueb ,sc4blue, sc4, sc4, sc4_state, sc4, ROT0, "Mazooma","Blue Rinse (Mazooma) (Scorpion 4) (set 3)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4bluec ,sc4blue, sc4, sc4, sc4_state, sc4, ROT0, "Mazooma","Blue Rinse (Mazooma) (Scorpion 4) (set 4)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4blued ,sc4blue, sc4, sc4, sc4_state, sc4, ROT0, "Mazooma","Blue Rinse (Mazooma) (Scorpion 4) (set 5)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4bluee ,sc4blue, sc4, sc4, sc4_state, sc4, ROT0, "Mazooma","Blue Rinse (Mazooma) (Scorpion 4) (set 6)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4blue ,0, sc4, sc4, sc4_state, sc4, ROT0, "Mazooma","Blue Rinse (Mazooma) (Scorpion 4) (set 1)", MACHINE_FLAGS_NOSOUND, layout_bfm_sc4 )
+GAMEL( 200?, sc4bluea ,sc4blue, sc4, sc4, sc4_state, sc4, ROT0, "Mazooma","Blue Rinse (Mazooma) (Scorpion 4) (set 2)", MACHINE_FLAGS_NOSOUND, layout_bfm_sc4 )
+GAMEL( 200?, sc4blueb ,sc4blue, sc4, sc4, sc4_state, sc4, ROT0, "Mazooma","Blue Rinse (Mazooma) (Scorpion 4) (set 3)", MACHINE_FLAGS_NOSOUND, layout_bfm_sc4 )
+GAMEL( 200?, sc4bluec ,sc4blue, sc4, sc4, sc4_state, sc4, ROT0, "Mazooma","Blue Rinse (Mazooma) (Scorpion 4) (set 4)", MACHINE_FLAGS_NOSOUND, layout_bfm_sc4 )
+GAMEL( 200?, sc4blued ,sc4blue, sc4, sc4, sc4_state, sc4, ROT0, "Mazooma","Blue Rinse (Mazooma) (Scorpion 4) (set 5)", MACHINE_FLAGS_NOSOUND, layout_bfm_sc4 )
+GAMEL( 200?, sc4bluee ,sc4blue, sc4, sc4, sc4_state, sc4, ROT0, "Mazooma","Blue Rinse (Mazooma) (Scorpion 4) (set 6)", MACHINE_FLAGS_NOSOUND, layout_bfm_sc4 )
DRIVER_INIT_MEMBER(sc4_state,sc4bugs)
@@ -49298,15 +49300,15 @@ DRIVER_INIT_MEMBER(sc4_state,sc4bugs)
// no sound roms
// PR7109 BUGS MONEY PR7109 BUGS MONEY SOUNDS11 BUGS MONEY
-GAMEL( 200?, sc4bugs ,0, sc4, sc4, sc4_state, sc4bugs, ROT0, "BFM","Bugs Money (Bellfruit) (Scorpion 4) (set 1)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4bugsa ,sc4bugs, sc4, sc4, sc4_state, sc4bugs, ROT0, "BFM","Bugs Money (Bellfruit) (Scorpion 4) (set 2)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4bugsb ,sc4bugs, sc4, sc4, sc4_state, sc4bugs, ROT0, "BFM","Bugs Money (Bellfruit) (Scorpion 4) (set 3)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4bugsc ,sc4bugs, sc4, sc4, sc4_state, sc4bugs, ROT0, "BFM","Bugs Money (Bellfruit) (Scorpion 4) (set 4)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4bugs ,0, sc4, sc4, sc4_state, sc4bugs, ROT0, "BFM","Bugs Money (Bellfruit) (Scorpion 4) (set 1)", MACHINE_FLAGS_NOSOUND, layout_bfm_sc4 )
+GAMEL( 200?, sc4bugsa ,sc4bugs, sc4, sc4, sc4_state, sc4bugs, ROT0, "BFM","Bugs Money (Bellfruit) (Scorpion 4) (set 2)", MACHINE_FLAGS_NOSOUND, layout_bfm_sc4 )
+GAMEL( 200?, sc4bugsb ,sc4bugs, sc4, sc4, sc4_state, sc4bugs, ROT0, "BFM","Bugs Money (Bellfruit) (Scorpion 4) (set 3)", MACHINE_FLAGS_NOSOUND, layout_bfm_sc4 )
+GAMEL( 200?, sc4bugsc ,sc4bugs, sc4, sc4, sc4_state, sc4bugs, ROT0, "BFM","Bugs Money (Bellfruit) (Scorpion 4) (set 4)", MACHINE_FLAGS_NOSOUND, layout_bfm_sc4 )
// PR7029 MONEY TO MONEY MTOM SOUNDS
-GAMEL( 200?, sc4m2m ,0, sc4, sc4, sc4_state, sc4, ROT0, "Mazooma","Money To Money (Mazooma) (Scorpion 4) (set 1)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4m2ma ,sc4m2m, sc4, sc4, sc4_state, sc4, ROT0, "Mazooma","Money To Money (Mazooma) (Scorpion 4) (set 2)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4m2m ,0, sc4, sc4, sc4_state, sc4, ROT0, "Mazooma","Money To Money (Mazooma) (Scorpion 4) (set 1)", MACHINE_FLAGS_NOSOUND, layout_bfm_sc4 )
+GAMEL( 200?, sc4m2ma ,sc4m2m, sc4, sc4, sc4_state, sc4, ROT0, "Mazooma","Money To Money (Mazooma) (Scorpion 4) (set 2)", MACHINE_FLAGS_NOSOUND, layout_bfm_sc4 )
@@ -49317,10 +49319,10 @@ DRIVER_INIT_MEMBER(sc4_state,sc4chand)
// no sound roms
// PR7108 CASH IN HAND PR7108 CASH IN HAND SOUNDS11 CASH IN HAND
-GAMEL( 200?, sc4chand ,0, sc4_4reel, sc4, sc4_state, sc4chand, ROT0, "BFM","Cash In Hand (Bellfruit) (Scorpion 4) (set 1)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4chanda ,sc4chand, sc4_4reel, sc4, sc4_state, sc4chand, ROT0, "BFM","Cash In Hand (Bellfruit) (Scorpion 4) (set 2)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4chandb ,sc4chand, sc4_4reel, sc4, sc4_state, sc4chand, ROT0, "BFM","Cash In Hand (Bellfruit) (Scorpion 4) (set 3)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4chandc ,sc4chand, sc4_4reel, sc4, sc4_state, sc4chand, ROT0, "BFM","Cash In Hand (Bellfruit) (Scorpion 4) (set 4)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4chand ,0, sc4_4reel, sc4, sc4_state, sc4chand, ROT0, "BFM","Cash In Hand (Bellfruit) (Scorpion 4) (set 1)", MACHINE_FLAGS_NOSOUND, layout_bfm_sc4 )
+GAMEL( 200?, sc4chanda ,sc4chand, sc4_4reel, sc4, sc4_state, sc4chand, ROT0, "BFM","Cash In Hand (Bellfruit) (Scorpion 4) (set 2)", MACHINE_FLAGS_NOSOUND, layout_bfm_sc4 )
+GAMEL( 200?, sc4chandb ,sc4chand, sc4_4reel, sc4, sc4_state, sc4chand, ROT0, "BFM","Cash In Hand (Bellfruit) (Scorpion 4) (set 3)", MACHINE_FLAGS_NOSOUND, layout_bfm_sc4 )
+GAMEL( 200?, sc4chandc ,sc4chand, sc4_4reel, sc4, sc4_state, sc4chand, ROT0, "BFM","Cash In Hand (Bellfruit) (Scorpion 4) (set 4)", MACHINE_FLAGS_NOSOUND, layout_bfm_sc4 )
@@ -49332,349 +49334,349 @@ DRIVER_INIT_MEMBER(sc4_state,sc4cinv)
// no sound roms
// PR6809 CASHINVADERS PR6809 CASHINVADERS SOUNDS
-GAMEL( 200?, sc4cinv ,0, sc4_4reel, sc4, sc4_state, sc4cinv, ROT0, "BFM","Cash Invaders (Bellfruit) (Scorpion 4) (set 1)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4cinva ,sc4cinv, sc4_4reel, sc4, sc4_state, sc4cinv, ROT0, "BFM","Cash Invaders (Bellfruit) (Scorpion 4) (set 2)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4cinvb ,sc4cinv, sc4_4reel, sc4, sc4_state, sc4cinv, ROT0, "BFM","Cash Invaders (Bellfruit) (Scorpion 4) (set 3)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4cinvc ,sc4cinv, sc4_4reel, sc4, sc4_state, sc4cinv, ROT0, "BFM","Cash Invaders (Bellfruit) (Scorpion 4) (set 4)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4cinvd ,sc4cinv, sc4_4reel, sc4, sc4_state, sc4cinv, ROT0, "BFM","Cash Invaders (Bellfruit) (Scorpion 4) (set 5)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4cinve ,sc4cinv, sc4_4reel, sc4, sc4_state, sc4cinv, ROT0, "BFM","Cash Invaders (Bellfruit) (Scorpion 4) (set 6)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4cinvf ,sc4cinv, sc4_4reel, sc4, sc4_state, sc4cinv, ROT0, "BFM","Cash Invaders (Bellfruit) (Scorpion 4) (set 7)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4cinvg ,sc4cinv, sc4_4reel, sc4, sc4_state, sc4cinv, ROT0, "BFM","Cash Invaders (Bellfruit) (Scorpion 4) (set 8)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4cinvh ,sc4cinv, sc4_4reel, sc4, sc4_state, sc4cinv, ROT0, "BFM","Cash Invaders (Bellfruit) (Scorpion 4) (set 9)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4cinvi ,sc4cinv, sc4_4reel, sc4, sc4_state, sc4cinv, ROT0, "BFM","Cash Invaders (Bellfruit) (Scorpion 4) (set 10)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4cinv ,0, sc4_4reel, sc4, sc4_state, sc4cinv, ROT0, "BFM","Cash Invaders (Bellfruit) (Scorpion 4) (set 1)", MACHINE_FLAGS_NOSOUND, layout_bfm_sc4 )
+GAMEL( 200?, sc4cinva ,sc4cinv, sc4_4reel, sc4, sc4_state, sc4cinv, ROT0, "BFM","Cash Invaders (Bellfruit) (Scorpion 4) (set 2)", MACHINE_FLAGS_NOSOUND, layout_bfm_sc4 )
+GAMEL( 200?, sc4cinvb ,sc4cinv, sc4_4reel, sc4, sc4_state, sc4cinv, ROT0, "BFM","Cash Invaders (Bellfruit) (Scorpion 4) (set 3)", MACHINE_FLAGS_NOSOUND, layout_bfm_sc4 )
+GAMEL( 200?, sc4cinvc ,sc4cinv, sc4_4reel, sc4, sc4_state, sc4cinv, ROT0, "BFM","Cash Invaders (Bellfruit) (Scorpion 4) (set 4)", MACHINE_FLAGS_NOSOUND, layout_bfm_sc4 )
+GAMEL( 200?, sc4cinvd ,sc4cinv, sc4_4reel, sc4, sc4_state, sc4cinv, ROT0, "BFM","Cash Invaders (Bellfruit) (Scorpion 4) (set 5)", MACHINE_FLAGS_NOSOUND, layout_bfm_sc4 )
+GAMEL( 200?, sc4cinve ,sc4cinv, sc4_4reel, sc4, sc4_state, sc4cinv, ROT0, "BFM","Cash Invaders (Bellfruit) (Scorpion 4) (set 6)", MACHINE_FLAGS_NOSOUND, layout_bfm_sc4 )
+GAMEL( 200?, sc4cinvf ,sc4cinv, sc4_4reel, sc4, sc4_state, sc4cinv, ROT0, "BFM","Cash Invaders (Bellfruit) (Scorpion 4) (set 7)", MACHINE_FLAGS_NOSOUND, layout_bfm_sc4 )
+GAMEL( 200?, sc4cinvg ,sc4cinv, sc4_4reel, sc4, sc4_state, sc4cinv, ROT0, "BFM","Cash Invaders (Bellfruit) (Scorpion 4) (set 8)", MACHINE_FLAGS_NOSOUND, layout_bfm_sc4 )
+GAMEL( 200?, sc4cinvh ,sc4cinv, sc4_4reel, sc4, sc4_state, sc4cinv, ROT0, "BFM","Cash Invaders (Bellfruit) (Scorpion 4) (set 9)", MACHINE_FLAGS_NOSOUND, layout_bfm_sc4 )
+GAMEL( 200?, sc4cinvi ,sc4cinv, sc4_4reel, sc4, sc4_state, sc4cinv, ROT0, "BFM","Cash Invaders (Bellfruit) (Scorpion 4) (set 10)", MACHINE_FLAGS_NOSOUND, layout_bfm_sc4 )
// PR7103 JUNGLE BUCKS PR7103 JUNGLEBUCKS SOUNDS11 JUNGLE BUCKS
-GAMEL( 200?, sc4jbuck ,0, sc4, sc4, sc4_state, sc4, ROT0, "BFM","Jungle Bucks (Bellfruit) (Scorpion 4) (set 1)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4jbucka ,sc4jbuck, sc4, sc4, sc4_state, sc4, ROT0, "BFM","Jungle Bucks (Bellfruit) (Scorpion 4) (set 2)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4jbuckb ,sc4jbuck, sc4, sc4, sc4_state, sc4, ROT0, "BFM","Jungle Bucks (Bellfruit) (Scorpion 4) (set 3)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4jbuckc ,sc4jbuck, sc4, sc4, sc4_state, sc4, ROT0, "BFM","Jungle Bucks (Bellfruit) (Scorpion 4) (set 4)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4jbuckd ,sc4jbuck, sc4, sc4, sc4_state, sc4, ROT0, "BFM","Jungle Bucks (Bellfruit) (Scorpion 4) (set 5)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4jbuck ,0, sc4, sc4, sc4_state, sc4, ROT0, "BFM","Jungle Bucks (Bellfruit) (Scorpion 4) (set 1)", MACHINE_FLAGS_NOSOUND, layout_bfm_sc4 )
+GAMEL( 200?, sc4jbucka ,sc4jbuck, sc4, sc4, sc4_state, sc4, ROT0, "BFM","Jungle Bucks (Bellfruit) (Scorpion 4) (set 2)", MACHINE_FLAGS_NOSOUND, layout_bfm_sc4 )
+GAMEL( 200?, sc4jbuckb ,sc4jbuck, sc4, sc4, sc4_state, sc4, ROT0, "BFM","Jungle Bucks (Bellfruit) (Scorpion 4) (set 3)", MACHINE_FLAGS_NOSOUND, layout_bfm_sc4 )
+GAMEL( 200?, sc4jbuckc ,sc4jbuck, sc4, sc4, sc4_state, sc4, ROT0, "BFM","Jungle Bucks (Bellfruit) (Scorpion 4) (set 4)", MACHINE_FLAGS_NOSOUND, layout_bfm_sc4 )
+GAMEL( 200?, sc4jbuckd ,sc4jbuck, sc4, sc4, sc4_state, sc4, ROT0, "BFM","Jungle Bucks (Bellfruit) (Scorpion 4) (set 5)", MACHINE_FLAGS_NOSOUND, layout_bfm_sc4 )
// PR6904 MONEY BAGS PR6904 MONEY BAGS SOUNDS11
-GAMEL( 200?, sc4mbags ,0, sc4, sc4, sc4_state, sc4, ROT0, "BFM","Money Bags (Bellfruit) (Scorpion 4) (set 1)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4mbagsa ,sc4mbags, sc4, sc4, sc4_state, sc4, ROT0, "BFM","Money Bags (Bellfruit) (Scorpion 4) (set 2)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4mbagsb ,sc4mbags, sc4, sc4, sc4_state, sc4, ROT0, "BFM","Money Bags (Bellfruit) (Scorpion 4) (set 3)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4mbagsc ,sc4mbags, sc4, sc4, sc4_state, sc4, ROT0, "BFM","Money Bags (Bellfruit) (Scorpion 4) (set 4)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4mbags ,0, sc4, sc4, sc4_state, sc4, ROT0, "BFM","Money Bags (Bellfruit) (Scorpion 4) (set 1)", MACHINE_FLAGS_NOSOUND, layout_bfm_sc4 )
+GAMEL( 200?, sc4mbagsa ,sc4mbags, sc4, sc4, sc4_state, sc4, ROT0, "BFM","Money Bags (Bellfruit) (Scorpion 4) (set 2)", MACHINE_FLAGS_NOSOUND, layout_bfm_sc4 )
+GAMEL( 200?, sc4mbagsb ,sc4mbags, sc4, sc4, sc4_state, sc4, ROT0, "BFM","Money Bags (Bellfruit) (Scorpion 4) (set 3)", MACHINE_FLAGS_NOSOUND, layout_bfm_sc4 )
+GAMEL( 200?, sc4mbagsc ,sc4mbags, sc4, sc4, sc4_state, sc4, ROT0, "BFM","Money Bags (Bellfruit) (Scorpion 4) (set 4)", MACHINE_FLAGS_NOSOUND, layout_bfm_sc4 )
// sound roms are bad, missing first 0x10000 bytes with header
// PR6938 TUTTI FRUTTI PR6938 FRUT SOUNDS11 TUTTI FRUTTI
-GAMEL( 200?, sc4tfclb ,0, sc4, sc4, sc4_state, sc4, ROT0, "BFM","Tutti Frutti Club (Bellfruit) (Scorpion 4) (set 1)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4tfclba ,sc4tfclb, sc4, sc4, sc4_state, sc4, ROT0, "BFM","Tutti Frutti Club (Bellfruit) (Scorpion 4) (set 2)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4tfclb ,0, sc4, sc4, sc4_state, sc4, ROT0, "BFM","Tutti Frutti Club (Bellfruit) (Scorpion 4) (set 1)", MACHINE_FLAGS_NOSOUND, layout_bfm_sc4 )
+GAMEL( 200?, sc4tfclba ,sc4tfclb, sc4, sc4, sc4_state, sc4, ROT0, "BFM","Tutti Frutti Club (Bellfruit) (Scorpion 4) (set 2)", MACHINE_FLAGS_NOSOUND, layout_bfm_sc4 )
// doesn't like the sound rom we have even if the ID is right
// PR7022 UP FOR GRABS GRAB SOUNDS
-GAMEL( 200?, sc4ufg ,0, sc4, sc4, sc4_state, sc4, ROT0, "Mazooma","Up For Grabs (Mazooma) (Scorpion 4) (set 1)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4ufga ,sc4ufg, sc4, sc4, sc4_state, sc4, ROT0, "Mazooma","Up For Grabs (Mazooma) (Scorpion 4) (set 2)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4ufg ,0, sc4, sc4, sc4_state, sc4, ROT0, "Mazooma","Up For Grabs (Mazooma) (Scorpion 4) (set 1)", MACHINE_FLAGS_NOSOUND, layout_bfm_sc4 )
+GAMEL( 200?, sc4ufga ,sc4ufg, sc4, sc4, sc4_state, sc4, ROT0, "Mazooma","Up For Grabs (Mazooma) (Scorpion 4) (set 2)", MACHINE_FLAGS_NOSOUND, layout_bfm_sc4 )
// PR6819 UP FOT IT PR6819 UP FOR IT SOUNDS11
-GAMEL( 200?, sc4ufi ,0, sc4, sc4, sc4_state, sc4, ROT0, "BFM","Up For It (Bellfruit) (Scorpion 4) (set 1)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4ufia ,sc4ufi, sc4, sc4, sc4_state, sc4, ROT0, "BFM","Up For It (Bellfruit) (Scorpion 4) (set 2)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4ufib ,sc4ufi, sc4, sc4, sc4_state, sc4, ROT0, "BFM","Up For It (Bellfruit) (Scorpion 4) (set 3)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4ufic ,sc4ufi, sc4, sc4, sc4_state, sc4, ROT0, "BFM","Up For It (Bellfruit) (Scorpion 4) (set 4)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4ufid ,sc4ufi, sc4, sc4, sc4_state, sc4, ROT0, "BFM","Up For It (Bellfruit) (Scorpion 4) (set 5)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4ufie ,sc4ufi, sc4, sc4, sc4_state, sc4, ROT0, "BFM","Up For It (Bellfruit) (Scorpion 4) (set 6)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 ) // incomplete pairing
+GAMEL( 200?, sc4ufi ,0, sc4, sc4, sc4_state, sc4, ROT0, "BFM","Up For It (Bellfruit) (Scorpion 4) (set 1)", MACHINE_FLAGS_NOSOUND, layout_bfm_sc4 )
+GAMEL( 200?, sc4ufia ,sc4ufi, sc4, sc4, sc4_state, sc4, ROT0, "BFM","Up For It (Bellfruit) (Scorpion 4) (set 2)", MACHINE_FLAGS_NOSOUND, layout_bfm_sc4 )
+GAMEL( 200?, sc4ufib ,sc4ufi, sc4, sc4, sc4_state, sc4, ROT0, "BFM","Up For It (Bellfruit) (Scorpion 4) (set 3)", MACHINE_FLAGS_NOSOUND, layout_bfm_sc4 )
+GAMEL( 200?, sc4ufic ,sc4ufi, sc4, sc4, sc4_state, sc4, ROT0, "BFM","Up For It (Bellfruit) (Scorpion 4) (set 4)", MACHINE_FLAGS_NOSOUND, layout_bfm_sc4 )
+GAMEL( 200?, sc4ufid ,sc4ufi, sc4, sc4, sc4_state, sc4, ROT0, "BFM","Up For It (Bellfruit) (Scorpion 4) (set 5)", MACHINE_FLAGS_NOSOUND, layout_bfm_sc4 )
+GAMEL( 200?, sc4ufie ,sc4ufi, sc4, sc4, sc4_state, sc4, ROT0, "BFM","Up For It (Bellfruit) (Scorpion 4) (set 6)", MACHINE_FLAGS_NOSOUND, layout_bfm_sc4 ) // incomplete pairing
// PR6812 WHO DARES WINS PR6812 WHO DARES WINS SOUNDS
-GAMEL( 200?, sc4wdw ,0, sc4, sc4, sc4_state, sc4, ROT0, "BFM","Who Dares Wins (Bellfruit) (Scorpion 4) (set 1)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4wdwa ,sc4wdw, sc4, sc4, sc4_state, sc4, ROT0, "BFM","Who Dares Wins (Bellfruit) (Scorpion 4) (set 2)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4wdwb ,sc4wdw, sc4, sc4, sc4_state, sc4, ROT0, "BFM","Who Dares Wins (Bellfruit) (Scorpion 4) (set 3)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4wdwc ,sc4wdw, sc4, sc4, sc4_state, sc4, ROT0, "BFM","Who Dares Wins (Bellfruit) (Scorpion 4) (set 4)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4wdwd ,sc4wdw, sc4, sc4, sc4_state, sc4, ROT0, "BFM","Who Dares Wins (Bellfruit) (Scorpion 4) (set 5)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4wdwe ,sc4wdw, sc4, sc4, sc4_state, sc4, ROT0, "BFM","Who Dares Wins (Bellfruit) (Scorpion 4) (set 6)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4wdwf ,sc4wdw, sc4, sc4, sc4_state, sc4, ROT0, "BFM","Who Dares Wins (Bellfruit) (Scorpion 4) (set 7)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4wdwg ,sc4wdw, sc4, sc4, sc4_state, sc4, ROT0, "BFM","Who Dares Wins (Bellfruit) (Scorpion 4) (set 8)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4wdwh ,sc4wdw, sc4, sc4, sc4_state, sc4, ROT0, "BFM","Who Dares Wins (Bellfruit) (Scorpion 4) (set 9)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4wdwi ,sc4wdw, sc4, sc4, sc4_state, sc4, ROT0, "BFM","Who Dares Wins (Bellfruit) (Scorpion 4) (set 10)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4wdwj ,sc4wdw, sc4, sc4, sc4_state, sc4, ROT0, "BFM","Who Dares Wins (Bellfruit) (Scorpion 4) (set 11)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4wdw ,0, sc4, sc4, sc4_state, sc4, ROT0, "BFM","Who Dares Wins (Bellfruit) (Scorpion 4) (set 1)", MACHINE_FLAGS_NOSOUND, layout_bfm_sc4 )
+GAMEL( 200?, sc4wdwa ,sc4wdw, sc4, sc4, sc4_state, sc4, ROT0, "BFM","Who Dares Wins (Bellfruit) (Scorpion 4) (set 2)", MACHINE_FLAGS_NOSOUND, layout_bfm_sc4 )
+GAMEL( 200?, sc4wdwb ,sc4wdw, sc4, sc4, sc4_state, sc4, ROT0, "BFM","Who Dares Wins (Bellfruit) (Scorpion 4) (set 3)", MACHINE_FLAGS_NOSOUND, layout_bfm_sc4 )
+GAMEL( 200?, sc4wdwc ,sc4wdw, sc4, sc4, sc4_state, sc4, ROT0, "BFM","Who Dares Wins (Bellfruit) (Scorpion 4) (set 4)", MACHINE_FLAGS_NOSOUND, layout_bfm_sc4 )
+GAMEL( 200?, sc4wdwd ,sc4wdw, sc4, sc4, sc4_state, sc4, ROT0, "BFM","Who Dares Wins (Bellfruit) (Scorpion 4) (set 5)", MACHINE_FLAGS_NOSOUND, layout_bfm_sc4 )
+GAMEL( 200?, sc4wdwe ,sc4wdw, sc4, sc4, sc4_state, sc4, ROT0, "BFM","Who Dares Wins (Bellfruit) (Scorpion 4) (set 6)", MACHINE_FLAGS_NOSOUND, layout_bfm_sc4 )
+GAMEL( 200?, sc4wdwf ,sc4wdw, sc4, sc4, sc4_state, sc4, ROT0, "BFM","Who Dares Wins (Bellfruit) (Scorpion 4) (set 7)", MACHINE_FLAGS_NOSOUND, layout_bfm_sc4 )
+GAMEL( 200?, sc4wdwg ,sc4wdw, sc4, sc4, sc4_state, sc4, ROT0, "BFM","Who Dares Wins (Bellfruit) (Scorpion 4) (set 8)", MACHINE_FLAGS_NOSOUND, layout_bfm_sc4 )
+GAMEL( 200?, sc4wdwh ,sc4wdw, sc4, sc4, sc4_state, sc4, ROT0, "BFM","Who Dares Wins (Bellfruit) (Scorpion 4) (set 9)", MACHINE_FLAGS_NOSOUND, layout_bfm_sc4 )
+GAMEL( 200?, sc4wdwi ,sc4wdw, sc4, sc4, sc4_state, sc4, ROT0, "BFM","Who Dares Wins (Bellfruit) (Scorpion 4) (set 10)", MACHINE_FLAGS_NOSOUND, layout_bfm_sc4 )
+GAMEL( 200?, sc4wdwj ,sc4wdw, sc4, sc4, sc4_state, sc4, ROT0, "BFM","Who Dares Wins (Bellfruit) (Scorpion 4) (set 11)", MACHINE_FLAGS_NOSOUND, layout_bfm_sc4 )
// PR7144 WILD BUNCH PR7144 CRAZY FRUITS SOUNDS11
-GAMEL( 200?, sc4wldbn ,0, sc4, sc4, sc4_state, sc4, ROT0, "BFM","Wild Bunch (Bellfruit) (Scorpion 4) (set 1)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4wldbna ,sc4wldbn, sc4, sc4, sc4_state, sc4, ROT0, "BFM","Wild Bunch (Bellfruit) (Scorpion 4) (set 2)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4wldbnb ,sc4wldbn, sc4, sc4, sc4_state, sc4, ROT0, "BFM","Wild Bunch (Bellfruit) (Scorpion 4) (set 3)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4wldbnc ,sc4wldbn, sc4, sc4, sc4_state, sc4, ROT0, "BFM","Wild Bunch (Bellfruit) (Scorpion 4) (set 4)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4wldbnd ,sc4wldbn, sc4, sc4, sc4_state, sc4, ROT0, "BFM","Wild Bunch (Bellfruit) (Scorpion 4) (set 5)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4wldbne ,sc4wldbn, sc4, sc4, sc4_state, sc4, ROT0, "BFM","Wild Bunch (Bellfruit) (Scorpion 4) (set 6)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4wldbnf ,sc4wldbn, sc4, sc4, sc4_state, sc4, ROT0, "BFM","Wild Bunch (Bellfruit) (Scorpion 4) (set 7)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4wldbni ,sc4wldbn, sc4, sc4, sc4_state, sc4, ROT0, "BFM","Wild Bunch (Bellfruit) (Scorpion 4) (set 8)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4wldbnj ,sc4wldbn, sc4, sc4, sc4_state, sc4, ROT0, "BFM","Wild Bunch (Bellfruit) (Scorpion 4) (set 9)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4wldbnk ,sc4wldbn, sc4, sc4, sc4_state, sc4, ROT0, "BFM","Wild Bunch (Bellfruit) (Scorpion 4) (set 10)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4wldbnn ,sc4wldbn, sc4, sc4, sc4_state, sc4, ROT0, "BFM","Wild Bunch (Bellfruit) (Scorpion 4) (set 11)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4wldbno ,sc4wldbn, sc4, sc4, sc4_state, sc4, ROT0, "BFM","Wild Bunch (Bellfruit) (Scorpion 4) (set 12)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4wldbnp ,sc4wldbn, sc4, sc4, sc4_state, sc4, ROT0, "BFM","Wild Bunch (Bellfruit) (Scorpion 4) (set 13)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4wldbnq ,sc4wldbn, sc4, sc4, sc4_state, sc4, ROT0, "BFM","Wild Bunch (Bellfruit) (Scorpion 4) (set 14)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4wldbn ,0, sc4, sc4, sc4_state, sc4, ROT0, "BFM","Wild Bunch (Bellfruit) (Scorpion 4) (set 1)", MACHINE_FLAGS_NOSOUND, layout_bfm_sc4 )
+GAMEL( 200?, sc4wldbna ,sc4wldbn, sc4, sc4, sc4_state, sc4, ROT0, "BFM","Wild Bunch (Bellfruit) (Scorpion 4) (set 2)", MACHINE_FLAGS_NOSOUND, layout_bfm_sc4 )
+GAMEL( 200?, sc4wldbnb ,sc4wldbn, sc4, sc4, sc4_state, sc4, ROT0, "BFM","Wild Bunch (Bellfruit) (Scorpion 4) (set 3)", MACHINE_FLAGS_NOSOUND, layout_bfm_sc4 )
+GAMEL( 200?, sc4wldbnc ,sc4wldbn, sc4, sc4, sc4_state, sc4, ROT0, "BFM","Wild Bunch (Bellfruit) (Scorpion 4) (set 4)", MACHINE_FLAGS_NOSOUND, layout_bfm_sc4 )
+GAMEL( 200?, sc4wldbnd ,sc4wldbn, sc4, sc4, sc4_state, sc4, ROT0, "BFM","Wild Bunch (Bellfruit) (Scorpion 4) (set 5)", MACHINE_FLAGS_NOSOUND, layout_bfm_sc4 )
+GAMEL( 200?, sc4wldbne ,sc4wldbn, sc4, sc4, sc4_state, sc4, ROT0, "BFM","Wild Bunch (Bellfruit) (Scorpion 4) (set 6)", MACHINE_FLAGS_NOSOUND, layout_bfm_sc4 )
+GAMEL( 200?, sc4wldbnf ,sc4wldbn, sc4, sc4, sc4_state, sc4, ROT0, "BFM","Wild Bunch (Bellfruit) (Scorpion 4) (set 7)", MACHINE_FLAGS_NOSOUND, layout_bfm_sc4 )
+GAMEL( 200?, sc4wldbni ,sc4wldbn, sc4, sc4, sc4_state, sc4, ROT0, "BFM","Wild Bunch (Bellfruit) (Scorpion 4) (set 8)", MACHINE_FLAGS_NOSOUND, layout_bfm_sc4 )
+GAMEL( 200?, sc4wldbnj ,sc4wldbn, sc4, sc4, sc4_state, sc4, ROT0, "BFM","Wild Bunch (Bellfruit) (Scorpion 4) (set 9)", MACHINE_FLAGS_NOSOUND, layout_bfm_sc4 )
+GAMEL( 200?, sc4wldbnk ,sc4wldbn, sc4, sc4, sc4_state, sc4, ROT0, "BFM","Wild Bunch (Bellfruit) (Scorpion 4) (set 10)", MACHINE_FLAGS_NOSOUND, layout_bfm_sc4 )
+GAMEL( 200?, sc4wldbnn ,sc4wldbn, sc4, sc4, sc4_state, sc4, ROT0, "BFM","Wild Bunch (Bellfruit) (Scorpion 4) (set 11)", MACHINE_FLAGS_NOSOUND, layout_bfm_sc4 )
+GAMEL( 200?, sc4wldbno ,sc4wldbn, sc4, sc4, sc4_state, sc4, ROT0, "BFM","Wild Bunch (Bellfruit) (Scorpion 4) (set 12)", MACHINE_FLAGS_NOSOUND, layout_bfm_sc4 )
+GAMEL( 200?, sc4wldbnp ,sc4wldbn, sc4, sc4, sc4_state, sc4, ROT0, "BFM","Wild Bunch (Bellfruit) (Scorpion 4) (set 13)", MACHINE_FLAGS_NOSOUND, layout_bfm_sc4 )
+GAMEL( 200?, sc4wldbnq ,sc4wldbn, sc4, sc4, sc4_state, sc4, ROT0, "BFM","Wild Bunch (Bellfruit) (Scorpion 4) (set 14)", MACHINE_FLAGS_NOSOUND, layout_bfm_sc4 )
// PR7144 WILD BUNCH PR7144 WILD BUNCH SOUNDS11 CAS WILD BUNCH S.SITE
-GAMEL( 200?, sc4wldbng ,sc4wldbn, sc4, sc4, sc4_state, sc4mbus, ROT0, "BFM","Wild Bunch Casino (Bellfruit) (Scorpion 4) (set 1)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4wldbnh ,sc4wldbn, sc4, sc4, sc4_state, sc4mbus, ROT0, "BFM","Wild Bunch Casino (Bellfruit) (Scorpion 4) (set 2)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4wldbnl ,sc4wldbn, sc4, sc4, sc4_state, sc4mbus, ROT0, "BFM","Wild Bunch Casino (Bellfruit) (Scorpion 4) (set 3)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4wldbnm ,sc4wldbn, sc4, sc4, sc4_state, sc4mbus, ROT0, "BFM","Wild Bunch Casino (Bellfruit) (Scorpion 4) (set 4)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4wldbng ,sc4wldbn, sc4, sc4, sc4_state, sc4mbus, ROT0, "BFM","Wild Bunch Casino (Bellfruit) (Scorpion 4) (set 1)", MACHINE_FLAGS_NOSOUND, layout_bfm_sc4 )
+GAMEL( 200?, sc4wldbnh ,sc4wldbn, sc4, sc4, sc4_state, sc4mbus, ROT0, "BFM","Wild Bunch Casino (Bellfruit) (Scorpion 4) (set 2)", MACHINE_FLAGS_NOSOUND, layout_bfm_sc4 )
+GAMEL( 200?, sc4wldbnl ,sc4wldbn, sc4, sc4, sc4_state, sc4mbus, ROT0, "BFM","Wild Bunch Casino (Bellfruit) (Scorpion 4) (set 3)", MACHINE_FLAGS_NOSOUND, layout_bfm_sc4 )
+GAMEL( 200?, sc4wldbnm ,sc4wldbn, sc4, sc4, sc4_state, sc4mbus, ROT0, "BFM","Wild Bunch Casino (Bellfruit) (Scorpion 4) (set 4)", MACHINE_FLAGS_NOSOUND, layout_bfm_sc4 )
// PR7110 WILD THING PR7110 WILD THING SOUNDS11
-GAMEL( 200?, sc4wthng ,0, sc4, sc4, sc4_state, sc4, ROT0, "BFM","Wild Thing (Bellfruit) (Scorpion 4) (set 1)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4wthnga ,sc4wthng, sc4, sc4, sc4_state, sc4, ROT0, "BFM","Wild Thing (Bellfruit) (Scorpion 4) (set 2)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4wthngb ,sc4wthng, sc4, sc4, sc4_state, sc4, ROT0, "BFM","Wild Thing (Bellfruit) (Scorpion 4) (set 3)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4wthngc ,sc4wthng, sc4, sc4, sc4_state, sc4, ROT0, "BFM","Wild Thing (Bellfruit) (Scorpion 4) (set 4)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4wthng ,0, sc4, sc4, sc4_state, sc4, ROT0, "BFM","Wild Thing (Bellfruit) (Scorpion 4) (set 1)", MACHINE_FLAGS_NOSOUND, layout_bfm_sc4 )
+GAMEL( 200?, sc4wthnga ,sc4wthng, sc4, sc4, sc4_state, sc4, ROT0, "BFM","Wild Thing (Bellfruit) (Scorpion 4) (set 2)", MACHINE_FLAGS_NOSOUND, layout_bfm_sc4 )
+GAMEL( 200?, sc4wthngb ,sc4wthng, sc4, sc4, sc4_state, sc4, ROT0, "BFM","Wild Thing (Bellfruit) (Scorpion 4) (set 3)", MACHINE_FLAGS_NOSOUND, layout_bfm_sc4 )
+GAMEL( 200?, sc4wthngc ,sc4wthng, sc4, sc4, sc4_state, sc4, ROT0, "BFM","Wild Thing (Bellfruit) (Scorpion 4) (set 4)", MACHINE_FLAGS_NOSOUND, layout_bfm_sc4 )
// does NOT want 'WILD SOUNDS' from 'PR7065 WET 'N' WILD'
// PR7060CASINO WILDTHING WILD THING ARCADE WILD SOUNDS WILD THING
-GAMEL( 200?, sc4wthnm ,0, sc4, sc4, sc4_state, sc4, ROT0, "Mazooma","Wild Thing Casino Arcade (Mazooma) (Scorpion 4) (set 1)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4wthnma ,sc4wthnm, sc4, sc4, sc4_state, sc4, ROT0, "Mazooma","Wild Thing Casino Arcade (Mazooma) (Scorpion 4) (set 2)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4wthnmb ,sc4wthnm, sc4, sc4, sc4_state, sc4, ROT0, "Mazooma","Wild Thing Casino Arcade (Mazooma) (Scorpion 4) (set 3)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4wthnmc ,sc4wthnm, sc4, sc4, sc4_state, sc4, ROT0, "Mazooma","Wild Thing Casino Arcade (Mazooma) (Scorpion 4) (set 4)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4wthnmd ,sc4wthnm, sc4, sc4, sc4_state, sc4, ROT0, "Mazooma","Wild Thing Casino Arcade (Mazooma) (Scorpion 4) (set 5)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4wthnme ,sc4wthnm, sc4, sc4, sc4_state, sc4, ROT0, "Mazooma","Wild Thing Casino Arcade (Mazooma) (Scorpion 4) (set 6)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4wthnmf ,sc4wthnm, sc4, sc4, sc4_state, sc4, ROT0, "Mazooma","Wild Thing Casino Arcade (Mazooma) (Scorpion 4) (set 7)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4wthnm ,0, sc4, sc4, sc4_state, sc4, ROT0, "Mazooma","Wild Thing Casino Arcade (Mazooma) (Scorpion 4) (set 1)", MACHINE_FLAGS_NOSOUND, layout_bfm_sc4 )
+GAMEL( 200?, sc4wthnma ,sc4wthnm, sc4, sc4, sc4_state, sc4, ROT0, "Mazooma","Wild Thing Casino Arcade (Mazooma) (Scorpion 4) (set 2)", MACHINE_FLAGS_NOSOUND, layout_bfm_sc4 )
+GAMEL( 200?, sc4wthnmb ,sc4wthnm, sc4, sc4, sc4_state, sc4, ROT0, "Mazooma","Wild Thing Casino Arcade (Mazooma) (Scorpion 4) (set 3)", MACHINE_FLAGS_NOSOUND, layout_bfm_sc4 )
+GAMEL( 200?, sc4wthnmc ,sc4wthnm, sc4, sc4, sc4_state, sc4, ROT0, "Mazooma","Wild Thing Casino Arcade (Mazooma) (Scorpion 4) (set 4)", MACHINE_FLAGS_NOSOUND, layout_bfm_sc4 )
+GAMEL( 200?, sc4wthnmd ,sc4wthnm, sc4, sc4, sc4_state, sc4, ROT0, "Mazooma","Wild Thing Casino Arcade (Mazooma) (Scorpion 4) (set 5)", MACHINE_FLAGS_NOSOUND, layout_bfm_sc4 )
+GAMEL( 200?, sc4wthnme ,sc4wthnm, sc4, sc4, sc4_state, sc4, ROT0, "Mazooma","Wild Thing Casino Arcade (Mazooma) (Scorpion 4) (set 6)", MACHINE_FLAGS_NOSOUND, layout_bfm_sc4 )
+GAMEL( 200?, sc4wthnmf ,sc4wthnm, sc4, sc4, sc4_state, sc4, ROT0, "Mazooma","Wild Thing Casino Arcade (Mazooma) (Scorpion 4) (set 7)", MACHINE_FLAGS_NOSOUND, layout_bfm_sc4 )
// PR7060CASINO WILDTHING WILD SOUNDS WILD THING
-GAMEL( 200?, sc4wtc ,0, sc4, sc4, sc4_state, sc4, ROT0, "Mazooma","Wild Thing Casino (Mazooma) (Scorpion 4) (set 1)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4wtca ,sc4wtc, sc4, sc4, sc4_state, sc4, ROT0, "Mazooma","Wild Thing Casino (Mazooma) (Scorpion 4) (set 2)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4wtcb ,sc4wtc, sc4, sc4, sc4_state, sc4, ROT0, "Mazooma","Wild Thing Casino (Mazooma) (Scorpion 4) (set 3)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4wtcc ,sc4wtc, sc4, sc4, sc4_state, sc4, ROT0, "Mazooma","Wild Thing Casino (Mazooma) (Scorpion 4) (set 4)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4wtcd ,sc4wtc, sc4, sc4, sc4_state, sc4, ROT0, "Mazooma","Wild Thing Casino (Mazooma) (Scorpion 4) (set 5)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4wtce ,sc4wtc, sc4, sc4, sc4_state, sc4, ROT0, "Mazooma","Wild Thing Casino (Mazooma) (Scorpion 4) (set 6)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4wtcf ,sc4wtc, sc4, sc4, sc4_state, sc4, ROT0, "Mazooma","Wild Thing Casino (Mazooma) (Scorpion 4) (set 7)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4wtc ,0, sc4, sc4, sc4_state, sc4, ROT0, "Mazooma","Wild Thing Casino (Mazooma) (Scorpion 4) (set 1)", MACHINE_FLAGS_NOSOUND, layout_bfm_sc4 )
+GAMEL( 200?, sc4wtca ,sc4wtc, sc4, sc4, sc4_state, sc4, ROT0, "Mazooma","Wild Thing Casino (Mazooma) (Scorpion 4) (set 2)", MACHINE_FLAGS_NOSOUND, layout_bfm_sc4 )
+GAMEL( 200?, sc4wtcb ,sc4wtc, sc4, sc4, sc4_state, sc4, ROT0, "Mazooma","Wild Thing Casino (Mazooma) (Scorpion 4) (set 3)", MACHINE_FLAGS_NOSOUND, layout_bfm_sc4 )
+GAMEL( 200?, sc4wtcc ,sc4wtc, sc4, sc4, sc4_state, sc4, ROT0, "Mazooma","Wild Thing Casino (Mazooma) (Scorpion 4) (set 4)", MACHINE_FLAGS_NOSOUND, layout_bfm_sc4 )
+GAMEL( 200?, sc4wtcd ,sc4wtc, sc4, sc4, sc4_state, sc4, ROT0, "Mazooma","Wild Thing Casino (Mazooma) (Scorpion 4) (set 5)", MACHINE_FLAGS_NOSOUND, layout_bfm_sc4 )
+GAMEL( 200?, sc4wtce ,sc4wtc, sc4, sc4, sc4_state, sc4, ROT0, "Mazooma","Wild Thing Casino (Mazooma) (Scorpion 4) (set 6)", MACHINE_FLAGS_NOSOUND, layout_bfm_sc4 )
+GAMEL( 200?, sc4wtcf ,sc4wtc, sc4, sc4, sc4_state, sc4, ROT0, "Mazooma","Wild Thing Casino (Mazooma) (Scorpion 4) (set 7)", MACHINE_FLAGS_NOSOUND, layout_bfm_sc4 )
// half size sound rom, or missing a rom
// PR7017 THREE LIONS LION SOUNDS
-GAMEL( 200?, sc4lions ,0, sc4, sc4, sc4_state, sc4, ROT0, "Mazooma","Three Lions (Mazooma) (Scorpion 4) (set 1)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4lionsa ,sc4lions, sc4, sc4, sc4_state, sc4, ROT0, "Mazooma","Three Lions (Mazooma) (Scorpion 4) (set 2)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4lionsb ,sc4lions, sc4, sc4, sc4_state, sc4, ROT0, "Mazooma","Three Lions (Mazooma) (Scorpion 4) (set 3)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4lionsc ,sc4lions, sc4, sc4, sc4_state, sc4, ROT0, "Mazooma","Three Lions (Mazooma) (Scorpion 4) (set 4)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4lionsd ,sc4lions, sc4, sc4, sc4_state, sc4, ROT0, "Mazooma","Three Lions (Mazooma) (Scorpion 4) (set 5)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4lionse ,sc4lions, sc4, sc4, sc4_state, sc4, ROT0, "Mazooma","Three Lions (Mazooma) (Scorpion 4) (set 6)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4lionsf ,sc4lions, sc4, sc4, sc4_state, sc4, ROT0, "Mazooma","Three Lions (Mazooma) (Scorpion 4) (set 7)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4lions ,0, sc4, sc4, sc4_state, sc4, ROT0, "Mazooma","Three Lions (Mazooma) (Scorpion 4) (set 1)", MACHINE_FLAGS_NOSOUND, layout_bfm_sc4 )
+GAMEL( 200?, sc4lionsa ,sc4lions, sc4, sc4, sc4_state, sc4, ROT0, "Mazooma","Three Lions (Mazooma) (Scorpion 4) (set 2)", MACHINE_FLAGS_NOSOUND, layout_bfm_sc4 )
+GAMEL( 200?, sc4lionsb ,sc4lions, sc4, sc4, sc4_state, sc4, ROT0, "Mazooma","Three Lions (Mazooma) (Scorpion 4) (set 3)", MACHINE_FLAGS_NOSOUND, layout_bfm_sc4 )
+GAMEL( 200?, sc4lionsc ,sc4lions, sc4, sc4, sc4_state, sc4, ROT0, "Mazooma","Three Lions (Mazooma) (Scorpion 4) (set 4)", MACHINE_FLAGS_NOSOUND, layout_bfm_sc4 )
+GAMEL( 200?, sc4lionsd ,sc4lions, sc4, sc4, sc4_state, sc4, ROT0, "Mazooma","Three Lions (Mazooma) (Scorpion 4) (set 5)", MACHINE_FLAGS_NOSOUND, layout_bfm_sc4 )
+GAMEL( 200?, sc4lionse ,sc4lions, sc4, sc4, sc4_state, sc4, ROT0, "Mazooma","Three Lions (Mazooma) (Scorpion 4) (set 6)", MACHINE_FLAGS_NOSOUND, layout_bfm_sc4 )
+GAMEL( 200?, sc4lionsf ,sc4lions, sc4, sc4, sc4_state, sc4, ROT0, "Mazooma","Three Lions (Mazooma) (Scorpion 4) (set 7)", MACHINE_FLAGS_NOSOUND, layout_bfm_sc4 )
// wrong sound roms
// PROJECT NUMBER PR7113 TEMPTATION PR7113 TEMPTATION SOUNDS11
-GAMEL( 200?, sc4tempt ,0, sc4, sc4, sc4_state, sc4, ROT0, "BFM","Temptation (Bellfruit) (Scorpion 4) (set 1)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4tempta ,sc4tempt, sc4, sc4, sc4_state, sc4, ROT0, "BFM","Temptation (Bellfruit) (Scorpion 4) (set 2)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4temptb ,sc4tempt, sc4, sc4, sc4_state, sc4, ROT0, "BFM","Temptation (Bellfruit) (Scorpion 4) (set 3)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4temptc ,sc4tempt, sc4, sc4, sc4_state, sc4, ROT0, "BFM","Temptation (Bellfruit) (Scorpion 4) (set 4)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4temptd ,sc4tempt, sc4, sc4, sc4_state, sc4, ROT0, "BFM","Temptation (Bellfruit) (Scorpion 4) (set 5)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4tempte ,sc4tempt, sc4, sc4, sc4_state, sc4, ROT0, "BFM","Temptation (Bellfruit) (Scorpion 4) (set 6)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4temptf ,sc4tempt, sc4, sc4, sc4_state, sc4, ROT0, "BFM","Temptation (Bellfruit) (Scorpion 4) (set 7)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4temptg ,sc4tempt, sc4, sc4, sc4_state, sc4, ROT0, "BFM","Temptation (Bellfruit) (Scorpion 4) (set 8)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4tempt ,0, sc4, sc4, sc4_state, sc4, ROT0, "BFM","Temptation (Bellfruit) (Scorpion 4) (set 1)", MACHINE_FLAGS_NOSOUND, layout_bfm_sc4 )
+GAMEL( 200?, sc4tempta ,sc4tempt, sc4, sc4, sc4_state, sc4, ROT0, "BFM","Temptation (Bellfruit) (Scorpion 4) (set 2)", MACHINE_FLAGS_NOSOUND, layout_bfm_sc4 )
+GAMEL( 200?, sc4temptb ,sc4tempt, sc4, sc4, sc4_state, sc4, ROT0, "BFM","Temptation (Bellfruit) (Scorpion 4) (set 3)", MACHINE_FLAGS_NOSOUND, layout_bfm_sc4 )
+GAMEL( 200?, sc4temptc ,sc4tempt, sc4, sc4, sc4_state, sc4, ROT0, "BFM","Temptation (Bellfruit) (Scorpion 4) (set 4)", MACHINE_FLAGS_NOSOUND, layout_bfm_sc4 )
+GAMEL( 200?, sc4temptd ,sc4tempt, sc4, sc4, sc4_state, sc4, ROT0, "BFM","Temptation (Bellfruit) (Scorpion 4) (set 5)", MACHINE_FLAGS_NOSOUND, layout_bfm_sc4 )
+GAMEL( 200?, sc4tempte ,sc4tempt, sc4, sc4, sc4_state, sc4, ROT0, "BFM","Temptation (Bellfruit) (Scorpion 4) (set 6)", MACHINE_FLAGS_NOSOUND, layout_bfm_sc4 )
+GAMEL( 200?, sc4temptf ,sc4tempt, sc4, sc4, sc4_state, sc4, ROT0, "BFM","Temptation (Bellfruit) (Scorpion 4) (set 7)", MACHINE_FLAGS_NOSOUND, layout_bfm_sc4 )
+GAMEL( 200?, sc4temptg ,sc4tempt, sc4, sc4, sc4_state, sc4, ROT0, "BFM","Temptation (Bellfruit) (Scorpion 4) (set 8)", MACHINE_FLAGS_NOSOUND, layout_bfm_sc4 )
// half size sound rom, or missing a rom
// PR7016 TAKE THE PISTE PISTE SOUNDS
-GAMEL( 200?, sc4ttp ,0, sc4, sc4, sc4_state, sc4, ROT0, "Mazooma","Take The Piste (Mazooma) (Scorpion 4) (set 1)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4ttpa ,sc4ttp, sc4, sc4, sc4_state, sc4, ROT0, "Mazooma","Take The Piste (Mazooma) (Scorpion 4) (set 2)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4ttpb ,sc4ttp, sc4, sc4, sc4_state, sc4, ROT0, "Mazooma","Take The Piste (Mazooma) (Scorpion 4) (set 3)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4ttpc ,sc4ttp, sc4, sc4, sc4_state, sc4, ROT0, "Mazooma","Take The Piste (Mazooma) (Scorpion 4) (set 4)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4ttpd ,sc4ttp, sc4, sc4, sc4_state, sc4, ROT0, "Mazooma","Take The Piste (Mazooma) (Scorpion 4) (set 5)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4ttpe ,sc4ttp, sc4, sc4, sc4_state, sc4, ROT0, "Mazooma","Take The Piste (Mazooma) (Scorpion 4) (set 6)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4ttpf ,sc4ttp, sc4, sc4, sc4_state, sc4, ROT0, "Mazooma","Take The Piste (Mazooma) (Scorpion 4) (set 7)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4ttp ,0, sc4, sc4, sc4_state, sc4, ROT0, "Mazooma","Take The Piste (Mazooma) (Scorpion 4) (set 1)", MACHINE_FLAGS_NOSOUND, layout_bfm_sc4 )
+GAMEL( 200?, sc4ttpa ,sc4ttp, sc4, sc4, sc4_state, sc4, ROT0, "Mazooma","Take The Piste (Mazooma) (Scorpion 4) (set 2)", MACHINE_FLAGS_NOSOUND, layout_bfm_sc4 )
+GAMEL( 200?, sc4ttpb ,sc4ttp, sc4, sc4, sc4_state, sc4, ROT0, "Mazooma","Take The Piste (Mazooma) (Scorpion 4) (set 3)", MACHINE_FLAGS_NOSOUND, layout_bfm_sc4 )
+GAMEL( 200?, sc4ttpc ,sc4ttp, sc4, sc4, sc4_state, sc4, ROT0, "Mazooma","Take The Piste (Mazooma) (Scorpion 4) (set 4)", MACHINE_FLAGS_NOSOUND, layout_bfm_sc4 )
+GAMEL( 200?, sc4ttpd ,sc4ttp, sc4, sc4, sc4_state, sc4, ROT0, "Mazooma","Take The Piste (Mazooma) (Scorpion 4) (set 5)", MACHINE_FLAGS_NOSOUND, layout_bfm_sc4 )
+GAMEL( 200?, sc4ttpe ,sc4ttp, sc4, sc4, sc4_state, sc4, ROT0, "Mazooma","Take The Piste (Mazooma) (Scorpion 4) (set 6)", MACHINE_FLAGS_NOSOUND, layout_bfm_sc4 )
+GAMEL( 200?, sc4ttpf ,sc4ttp, sc4, sc4, sc4_state, sc4, ROT0, "Mazooma","Take The Piste (Mazooma) (Scorpion 4) (set 7)", MACHINE_FLAGS_NOSOUND, layout_bfm_sc4 )
// PR6806 MOTORWAY MAYHEM PR6806 MAYH SOUNDS11
-GAMEL( 200?, sc4motor ,0, sc4, sc4, sc4_state, sc4, ROT0, "BFM","Motorway Mania (Bellfruit) (Scorpion 4) (set 1)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4motora ,sc4motor, sc4, sc4, sc4_state, sc4, ROT0, "BFM","Motorway Mania (Bellfruit) (Scorpion 4) (set 2)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4motorb ,sc4motor, sc4, sc4, sc4_state, sc4, ROT0, "BFM","Motorway Mania (Bellfruit) (Scorpion 4) (set 3)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4motorc ,sc4motor, sc4, sc4, sc4_state, sc4, ROT0, "BFM","Motorway Mania (Bellfruit) (Scorpion 4) (set 4)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4motord ,sc4motor, sc4, sc4, sc4_state, sc4, ROT0, "BFM","Motorway Mania (Bellfruit) (Scorpion 4) (set 5)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4motore ,sc4motor, sc4, sc4, sc4_state, sc4, ROT0, "BFM","Motorway Mania (Bellfruit) (Scorpion 4) (set 6)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4motorf ,sc4motor, sc4, sc4, sc4_state, sc4, ROT0, "BFM","Motorway Mania (Bellfruit) (Scorpion 4) (set 7)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4motorg ,sc4motor, sc4, sc4, sc4_state, sc4, ROT0, "BFM","Motorway Mania (Bellfruit) (Scorpion 4) (set 8)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4motorh ,sc4motor, sc4, sc4, sc4_state, sc4, ROT0, "BFM","Motorway Mania (Bellfruit) (Scorpion 4) (set 9)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4motor ,0, sc4, sc4, sc4_state, sc4, ROT0, "BFM","Motorway Mania (Bellfruit) (Scorpion 4) (set 1)", MACHINE_FLAGS_NOSOUND, layout_bfm_sc4 )
+GAMEL( 200?, sc4motora ,sc4motor, sc4, sc4, sc4_state, sc4, ROT0, "BFM","Motorway Mania (Bellfruit) (Scorpion 4) (set 2)", MACHINE_FLAGS_NOSOUND, layout_bfm_sc4 )
+GAMEL( 200?, sc4motorb ,sc4motor, sc4, sc4, sc4_state, sc4, ROT0, "BFM","Motorway Mania (Bellfruit) (Scorpion 4) (set 3)", MACHINE_FLAGS_NOSOUND, layout_bfm_sc4 )
+GAMEL( 200?, sc4motorc ,sc4motor, sc4, sc4, sc4_state, sc4, ROT0, "BFM","Motorway Mania (Bellfruit) (Scorpion 4) (set 4)", MACHINE_FLAGS_NOSOUND, layout_bfm_sc4 )
+GAMEL( 200?, sc4motord ,sc4motor, sc4, sc4, sc4_state, sc4, ROT0, "BFM","Motorway Mania (Bellfruit) (Scorpion 4) (set 5)", MACHINE_FLAGS_NOSOUND, layout_bfm_sc4 )
+GAMEL( 200?, sc4motore ,sc4motor, sc4, sc4, sc4_state, sc4, ROT0, "BFM","Motorway Mania (Bellfruit) (Scorpion 4) (set 6)", MACHINE_FLAGS_NOSOUND, layout_bfm_sc4 )
+GAMEL( 200?, sc4motorf ,sc4motor, sc4, sc4, sc4_state, sc4, ROT0, "BFM","Motorway Mania (Bellfruit) (Scorpion 4) (set 7)", MACHINE_FLAGS_NOSOUND, layout_bfm_sc4 )
+GAMEL( 200?, sc4motorg ,sc4motor, sc4, sc4, sc4_state, sc4, ROT0, "BFM","Motorway Mania (Bellfruit) (Scorpion 4) (set 8)", MACHINE_FLAGS_NOSOUND, layout_bfm_sc4 )
+GAMEL( 200?, sc4motorh ,sc4motor, sc4, sc4, sc4_state, sc4, ROT0, "BFM","Motorway Mania (Bellfruit) (Scorpion 4) (set 9)", MACHINE_FLAGS_NOSOUND, layout_bfm_sc4 )
// sound roms are bad dumps
// PR6915 stag night PR6915 STAG NIGHT SOUNDS11
-GAMEL( 200?, sc4stag ,0, sc4, sc4, sc4_state, sc4, ROT0, "BFM","Stag Night (Bellfruit) (Scorpion 4) (set 1)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4staga ,sc4stag, sc4, sc4, sc4_state, sc4, ROT0, "BFM","Stag Night (Bellfruit) (Scorpion 4) (set 2)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4stag ,0, sc4, sc4, sc4_state, sc4, ROT0, "BFM","Stag Night (Bellfruit) (Scorpion 4) (set 1)", MACHINE_FLAGS_NOSOUND, layout_bfm_sc4 )
+GAMEL( 200?, sc4staga ,sc4stag, sc4, sc4, sc4_state, sc4, ROT0, "BFM","Stag Night (Bellfruit) (Scorpion 4) (set 2)", MACHINE_FLAGS_NOSOUND, layout_bfm_sc4 )
// PR7016 HICKORY DICKORY DOSH HICKORY SOUNDS
-GAMEL( 200?, sc4hdd ,0, sc4, sc4, sc4_state, sc4, ROT0, "Mazooma","Hickory Dickory Dosh (PR7016) (Mazooma) (Scorpion 4) (set 1)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4hddc ,sc4hdd, sc4, sc4, sc4_state, sc4, ROT0, "Mazooma","Hickory Dickory Dosh (PR7016) (Mazooma) (Scorpion 4) (set 2)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4hddd ,sc4hdd, sc4, sc4, sc4_state, sc4, ROT0, "Mazooma","Hickory Dickory Dosh (PR7016) (Mazooma) (Scorpion 4) (set 3)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4hdd ,0, sc4, sc4, sc4_state, sc4, ROT0, "Mazooma","Hickory Dickory Dosh (PR7016) (Mazooma) (Scorpion 4) (set 1)", MACHINE_FLAGS_NOSOUND, layout_bfm_sc4 )
+GAMEL( 200?, sc4hddc ,sc4hdd, sc4, sc4, sc4_state, sc4, ROT0, "Mazooma","Hickory Dickory Dosh (PR7016) (Mazooma) (Scorpion 4) (set 2)", MACHINE_FLAGS_NOSOUND, layout_bfm_sc4 )
+GAMEL( 200?, sc4hddd ,sc4hdd, sc4, sc4, sc4_state, sc4, ROT0, "Mazooma","Hickory Dickory Dosh (PR7016) (Mazooma) (Scorpion 4) (set 3)", MACHINE_FLAGS_NOSOUND, layout_bfm_sc4 )
// PR7045 HICKORY DICKORY DOSH HICKORY SOUNDS
-GAMEL( 200?, sc4hdda ,sc4hdd, sc4, sc4, sc4_state, sc4, ROT0, "Mazooma","Hickory Dickory Dosh (PR7045) (Mazooma) (Scorpion 4) (set 1)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4hddb ,sc4hdd, sc4, sc4, sc4_state, sc4, ROT0, "Mazooma","Hickory Dickory Dosh (PR7045) (Mazooma) (Scorpion 4) (set 2)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4hdde ,sc4hdd, sc4, sc4, sc4_state, sc4, ROT0, "Mazooma","Hickory Dickory Dosh (PR7045) (Mazooma) (Scorpion 4) (set 3)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4hddf ,sc4hdd, sc4, sc4, sc4_state, sc4, ROT0, "Mazooma","Hickory Dickory Dosh (PR7045) (Mazooma) (Scorpion 4) (set 4)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4hdda ,sc4hdd, sc4, sc4, sc4_state, sc4, ROT0, "Mazooma","Hickory Dickory Dosh (PR7045) (Mazooma) (Scorpion 4) (set 1)", MACHINE_FLAGS_NOSOUND, layout_bfm_sc4 )
+GAMEL( 200?, sc4hddb ,sc4hdd, sc4, sc4, sc4_state, sc4, ROT0, "Mazooma","Hickory Dickory Dosh (PR7045) (Mazooma) (Scorpion 4) (set 2)", MACHINE_FLAGS_NOSOUND, layout_bfm_sc4 )
+GAMEL( 200?, sc4hdde ,sc4hdd, sc4, sc4, sc4_state, sc4, ROT0, "Mazooma","Hickory Dickory Dosh (PR7045) (Mazooma) (Scorpion 4) (set 3)", MACHINE_FLAGS_NOSOUND, layout_bfm_sc4 )
+GAMEL( 200?, sc4hddf ,sc4hdd, sc4, sc4, sc4_state, sc4, ROT0, "Mazooma","Hickory Dickory Dosh (PR7045) (Mazooma) (Scorpion 4) (set 4)", MACHINE_FLAGS_NOSOUND, layout_bfm_sc4 )
// // does NOT want 'WILD SOUNDS' from 'PR7065 WET 'N' WILD'
// PR2043 NUDGE IT WILD SOUNDS NUDGE IT
-GAMEL( 200?, sc4nudit ,0, sc4, sc4, sc4_state, sc4, ROT0, "Mazooma","Nudge It (Mazooma) (Scorpion 4) (set 1)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4nudit ,0, sc4, sc4, sc4_state, sc4, ROT0, "Mazooma","Nudge It (Mazooma) (Scorpion 4) (set 1)", MACHINE_FLAGS_NOSOUND, layout_bfm_sc4 )
// PR2043 NUDGE IT NGIT SOUNDS NUDGE IT
-GAMEL( 200?, sc4nudita ,sc4nudit, sc4, sc4, sc4_state, sc4, ROT0, "Mazooma","Nudge It (Mazooma) (Scorpion 4) (set 2)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4nuditb ,sc4nudit, sc4, sc4, sc4_state, sc4, ROT0, "Mazooma","Nudge It (Mazooma) (Scorpion 4) (set 3)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4nudita ,sc4nudit, sc4, sc4, sc4_state, sc4, ROT0, "Mazooma","Nudge It (Mazooma) (Scorpion 4) (set 2)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4nuditb ,sc4nudit, sc4, sc4, sc4_state, sc4, ROT0, "Mazooma","Nudge It (Mazooma) (Scorpion 4) (set 3)", MACHINE_FLAGS, layout_bfm_sc4 )
// PR6908 OUTLAW PR6908 OUTLAW SOUNDS11
-GAMEL( 200?, sc4outlw ,0, sc4, sc4, sc4_state, sc4, ROT0, "BFM","Outlaw (Bellfruit) (Scorpion 4) (set 1)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4outlwa ,sc4outlw, sc4, sc4, sc4_state, sc4, ROT0, "BFM","Outlaw (Bellfruit) (Scorpion 4) (set 2)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4outlwb ,sc4outlw, sc4, sc4, sc4_state, sc4, ROT0, "BFM","Outlaw (Bellfruit) (Scorpion 4) (set 3)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4outlwc ,sc4outlw, sc4, sc4, sc4_state, sc4, ROT0, "BFM","Outlaw (Bellfruit) (Scorpion 4) (set 4)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4outlw ,0, sc4, sc4, sc4_state, sc4, ROT0, "BFM","Outlaw (Bellfruit) (Scorpion 4) (set 1)", MACHINE_FLAGS_NOSOUND, layout_bfm_sc4 )
+GAMEL( 200?, sc4outlwa ,sc4outlw, sc4, sc4, sc4_state, sc4, ROT0, "BFM","Outlaw (Bellfruit) (Scorpion 4) (set 2)", MACHINE_FLAGS_NOSOUND, layout_bfm_sc4 )
+GAMEL( 200?, sc4outlwb ,sc4outlw, sc4, sc4, sc4_state, sc4, ROT0, "BFM","Outlaw (Bellfruit) (Scorpion 4) (set 3)", MACHINE_FLAGS_NOSOUND, layout_bfm_sc4 )
+GAMEL( 200?, sc4outlwc ,sc4outlw, sc4, sc4, sc4_state, sc4, ROT0, "BFM","Outlaw (Bellfruit) (Scorpion 4) (set 4)", MACHINE_FLAGS_NOSOUND, layout_bfm_sc4 )
// PR7002 ROLLOVER JACKPOT PR7002 ROLLOVER SOUNDS
-GAMEL( 200?, sc4rollo ,0, sc4, sc4, sc4_state, sc4, ROT0, "Mazooma","Rollover Jackpot (PR7002) (Mazooma) (Scorpion 4) (set 1)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4rolloa ,sc4rollo, sc4, sc4, sc4_state, sc4, ROT0, "Mazooma","Rollover Jackpot (PR7002) (Mazooma) (Scorpion 4) (set 2)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4rolloc ,sc4rollo, sc4, sc4, sc4_state, sc4, ROT0, "Mazooma","Rollover Jackpot (PR7002) (Mazooma) (Scorpion 4) (set 3)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4rollod ,sc4rollo, sc4, sc4, sc4_state, sc4, ROT0, "Mazooma","Rollover Jackpot (PR7002) (Mazooma) (Scorpion 4) (set 4)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4rollo ,0, sc4, sc4, sc4_state, sc4, ROT0, "Mazooma","Rollover Jackpot (PR7002) (Mazooma) (Scorpion 4) (set 1)", MACHINE_FLAGS_NOSOUND, layout_bfm_sc4 )
+GAMEL( 200?, sc4rolloa ,sc4rollo, sc4, sc4, sc4_state, sc4, ROT0, "Mazooma","Rollover Jackpot (PR7002) (Mazooma) (Scorpion 4) (set 2)", MACHINE_FLAGS_NOSOUND, layout_bfm_sc4 )
+GAMEL( 200?, sc4rolloc ,sc4rollo, sc4, sc4, sc4_state, sc4, ROT0, "Mazooma","Rollover Jackpot (PR7002) (Mazooma) (Scorpion 4) (set 3)", MACHINE_FLAGS_NOSOUND, layout_bfm_sc4 )
+GAMEL( 200?, sc4rollod ,sc4rollo, sc4, sc4, sc4_state, sc4, ROT0, "Mazooma","Rollover Jackpot (PR7002) (Mazooma) (Scorpion 4) (set 4)", MACHINE_FLAGS_NOSOUND, layout_bfm_sc4 )
// PR7032 ROLLOVER JACKPOT PR7002 ROLLOVER SOUNDS
-GAMEL( 200?, sc4rollob ,sc4rollo, sc4, sc4, sc4_state, sc4, ROT0, "Mazooma","Rollover Jackpot (PR7032) (Mazooma) (Scorpion 4) (set 1)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4rolloe ,sc4rollo, sc4, sc4, sc4_state, sc4, ROT0, "Mazooma","Rollover Jackpot (PR7032) (Mazooma) (Scorpion 4) (set 2)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4rollof ,sc4rollo, sc4, sc4, sc4_state, sc4, ROT0, "Mazooma","Rollover Jackpot (PR7032) (Mazooma) (Scorpion 4) (set 3)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4rollob ,sc4rollo, sc4, sc4, sc4_state, sc4, ROT0, "Mazooma","Rollover Jackpot (PR7032) (Mazooma) (Scorpion 4) (set 1)", MACHINE_FLAGS_NOSOUND, layout_bfm_sc4 )
+GAMEL( 200?, sc4rolloe ,sc4rollo, sc4, sc4, sc4_state, sc4, ROT0, "Mazooma","Rollover Jackpot (PR7032) (Mazooma) (Scorpion 4) (set 2)", MACHINE_FLAGS_NOSOUND, layout_bfm_sc4 )
+GAMEL( 200?, sc4rollof ,sc4rollo, sc4, sc4, sc4_state, sc4, ROT0, "Mazooma","Rollover Jackpot (PR7032) (Mazooma) (Scorpion 4) (set 3)", MACHINE_FLAGS_NOSOUND, layout_bfm_sc4 )
// PR2086 ROUTE66 RT66 SOUNDS ROUTE 66
-GAMEL( 200?, sc4r66 ,0, sc4, sc4, sc4_state, sc4, ROT0, "Mazooma","Route 66 (Mazooma) (Scorpion 4)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4r66 ,0, sc4, sc4, sc4_state, sc4, ROT0, "Mazooma","Route 66 (Mazooma) (Scorpion 4)", MACHINE_FLAGS_NOSOUND, layout_bfm_sc4 )
// PR1031 CASINO ROLL ME OVER PR1031 ROLL ME OVER SOUNDS11
-GAMEL( 200?, sc4rmo ,0, sc4, sc4, sc4_state, sc4, ROT0, "BFM","Roll Me Over Casino (Bellfruit) (Scorpion 4) (set 1)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4rmoa ,sc4rmo, sc4, sc4, sc4_state, sc4, ROT0, "BFM","Roll Me Over Casino (Bellfruit) (Scorpion 4) (set 2)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4rmo ,0, sc4, sc4, sc4_state, sc4, ROT0, "BFM","Roll Me Over Casino (Bellfruit) (Scorpion 4) (set 1)", MACHINE_FLAGS_NOSOUND, layout_bfm_sc4 )
+GAMEL( 200?, sc4rmoa ,sc4rmo, sc4, sc4, sc4_state, sc4, ROT0, "BFM","Roll Me Over Casino (Bellfruit) (Scorpion 4) (set 2)", MACHINE_FLAGS_NOSOUND, layout_bfm_sc4 )
// missing sound roms
// PR7021 JIGGERY POKERY PR7021 SOUNDS
-GAMEL( 200?, sc4jiggr ,0, sc4, sc4, sc4_state, sc4, ROT0, "Mazooma","Jiggery Pokery (Mazooma) (Scorpion 4) (set 1)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4jiggra ,sc4jiggr, sc4, sc4, sc4_state, sc4, ROT0, "Mazooma","Jiggery Pokery (Mazooma) (Scorpion 4) (set 2)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4jiggrb ,sc4jiggr, sc4, sc4, sc4_state, sc4, ROT0, "Mazooma","Jiggery Pokery (Mazooma) (Scorpion 4) (set 3)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4jiggrc ,sc4jiggr, sc4, sc4, sc4_state, sc4, ROT0, "Mazooma","Jiggery Pokery (Mazooma) (Scorpion 4) (set 4)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4jiggr ,0, sc4, sc4, sc4_state, sc4, ROT0, "Mazooma","Jiggery Pokery (Mazooma) (Scorpion 4) (set 1)", MACHINE_FLAGS_NOSOUND, layout_bfm_sc4 )
+GAMEL( 200?, sc4jiggra ,sc4jiggr, sc4, sc4, sc4_state, sc4, ROT0, "Mazooma","Jiggery Pokery (Mazooma) (Scorpion 4) (set 2)", MACHINE_FLAGS_NOSOUND, layout_bfm_sc4 )
+GAMEL( 200?, sc4jiggrb ,sc4jiggr, sc4, sc4, sc4_state, sc4, ROT0, "Mazooma","Jiggery Pokery (Mazooma) (Scorpion 4) (set 3)", MACHINE_FLAGS_NOSOUND, layout_bfm_sc4 )
+GAMEL( 200?, sc4jiggrc ,sc4jiggr, sc4, sc4, sc4_state, sc4, ROT0, "Mazooma","Jiggery Pokery (Mazooma) (Scorpion 4) (set 4)", MACHINE_FLAGS_NOSOUND, layout_bfm_sc4 )
// WRONG SOUNDS, PAY UNIT ERR 17
-GAMEL( 200?, sc4cmon ,0, sc4, sc4, sc4_state, sc4, ROT0, "Mazooma","Casino Monopoly (PR2133) (Mazooma) (Scorpion 4) (set 1)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 ) // PR2133 CASINO MONOPOLY MONOPOLY ARCADE MONL SOUNDS MONOPOLY
-GAMEL( 200?, sc4cmona ,sc4cmon, sc4, sc4, sc4_state, sc4, ROT0, "Mazooma","Casino Monopoly (PR2133) (Mazooma) (Scorpion 4) (set 2)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 ) // ^^
-GAMEL( 200?, sc4cmonb ,sc4cmon, sc4, sc4, sc4_state, sc4, ROT0, "Mazooma","Casino Monopoly (PR2133) (Mazooma) (Scorpion 4) (set 3)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 ) // ^^
-GAMEL( 200?, sc4cmonc ,sc4cmon, sc4, sc4, sc4_state, sc4, ROT0, "Mazooma","Casino Monopoly (PR2133) (Mazooma) (Scorpion 4) (set 4)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 ) // ^^
-GAMEL( 200?, sc4cmond ,sc4cmon, sc4, sc4, sc4_state, sc4, ROT0, "Mazooma","Casino Monopoly (PR2133) (Mazooma) (Scorpion 4) (set 5)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 ) // ^^
-GAMEL( 200?, sc4cmone ,sc4cmon, sc4, sc4, sc4_state, sc4, ROT0, "Mazooma","Casino Monopoly (PR2133) (Mazooma) (Scorpion 4) (set 6)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 ) // ^^
-GAMEL( 200?, sc4cmonf ,sc4cmon, sc4, sc4, sc4_state, sc4, ROT0, "Mazooma","Casino Monopoly (PR2133) (Mazooma) (Scorpion 4) (set 7)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 ) // ^^
-GAMEL( 200?, sc4cmong ,sc4cmon, sc4, sc4, sc4_state, sc4, ROT0, "Mazooma","Casino Monopoly (PR2133) (Mazooma) (Scorpion 4) (set 8)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 ) // ^^
-GAMEL( 200?, sc4cmonh ,sc4cmon, sc4, sc4, sc4_state, sc4, ROT0, "Mazooma","Casino Monopoly (PR2133) (Mazooma) (Scorpion 4) (set 9)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 ) // ^^
-GAMEL( 200?, sc4cmoni ,sc4cmon, sc4, sc4, sc4_state, sc4, ROT0, "Mazooma","Casino Monopoly (PR2133) (Mazooma) (Scorpion 4) (set 10)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 ) // ^^
+GAMEL( 200?, sc4cmon ,0, sc4, sc4, sc4_state, sc4, ROT0, "Mazooma","Casino Monopoly (PR2133) (Mazooma) (Scorpion 4) (set 1)", MACHINE_FLAGS_NOSOUND, layout_bfm_sc4 ) // PR2133 CASINO MONOPOLY MONOPOLY ARCADE MONL SOUNDS MONOPOLY
+GAMEL( 200?, sc4cmona ,sc4cmon, sc4, sc4, sc4_state, sc4, ROT0, "Mazooma","Casino Monopoly (PR2133) (Mazooma) (Scorpion 4) (set 2)", MACHINE_FLAGS_NOSOUND, layout_bfm_sc4 ) // ^^
+GAMEL( 200?, sc4cmonb ,sc4cmon, sc4, sc4, sc4_state, sc4, ROT0, "Mazooma","Casino Monopoly (PR2133) (Mazooma) (Scorpion 4) (set 3)", MACHINE_FLAGS_NOSOUND, layout_bfm_sc4 ) // ^^
+GAMEL( 200?, sc4cmonc ,sc4cmon, sc4, sc4, sc4_state, sc4, ROT0, "Mazooma","Casino Monopoly (PR2133) (Mazooma) (Scorpion 4) (set 4)", MACHINE_FLAGS_NOSOUND, layout_bfm_sc4 ) // ^^
+GAMEL( 200?, sc4cmond ,sc4cmon, sc4, sc4, sc4_state, sc4, ROT0, "Mazooma","Casino Monopoly (PR2133) (Mazooma) (Scorpion 4) (set 5)", MACHINE_FLAGS_NOSOUND, layout_bfm_sc4 ) // ^^
+GAMEL( 200?, sc4cmone ,sc4cmon, sc4, sc4, sc4_state, sc4, ROT0, "Mazooma","Casino Monopoly (PR2133) (Mazooma) (Scorpion 4) (set 6)", MACHINE_FLAGS_NOSOUND, layout_bfm_sc4 ) // ^^
+GAMEL( 200?, sc4cmonf ,sc4cmon, sc4, sc4, sc4_state, sc4, ROT0, "Mazooma","Casino Monopoly (PR2133) (Mazooma) (Scorpion 4) (set 7)", MACHINE_FLAGS_NOSOUND, layout_bfm_sc4 ) // ^^
+GAMEL( 200?, sc4cmong ,sc4cmon, sc4, sc4, sc4_state, sc4, ROT0, "Mazooma","Casino Monopoly (PR2133) (Mazooma) (Scorpion 4) (set 8)", MACHINE_FLAGS_NOSOUND, layout_bfm_sc4 ) // ^^
+GAMEL( 200?, sc4cmonh ,sc4cmon, sc4, sc4, sc4_state, sc4, ROT0, "Mazooma","Casino Monopoly (PR2133) (Mazooma) (Scorpion 4) (set 9)", MACHINE_FLAGS_NOSOUND, layout_bfm_sc4 ) // ^^
+GAMEL( 200?, sc4cmoni ,sc4cmon, sc4, sc4, sc4_state, sc4, ROT0, "Mazooma","Casino Monopoly (PR2133) (Mazooma) (Scorpion 4) (set 10)", MACHINE_FLAGS_NOSOUND, layout_bfm_sc4 ) // ^^
// PR6810 POWER CRAZY PR6810 POWER SOUNDS11
-GAMEL( 200?, sc4pwcrz ,0, sc4, sc4, sc4_state, sc4, ROT0, "BFM","Power Crazy (Bellfruit) (Scorpion 4) (set 1)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4pwcrza ,sc4pwcrz, sc4, sc4, sc4_state, sc4, ROT0, "BFM","Power Crazy (Bellfruit) (Scorpion 4) (set 2)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4pwcrzb ,sc4pwcrz, sc4, sc4, sc4_state, sc4, ROT0, "BFM","Power Crazy (Bellfruit) (Scorpion 4) (set 3)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4pwcrze ,sc4pwcrz, sc4, sc4, sc4_state, sc4, ROT0, "BFM","Power Crazy (Bellfruit) (Scorpion 4) (set 4)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4pwcrzf ,sc4pwcrz, sc4, sc4, sc4_state, sc4, ROT0, "BFM","Power Crazy (Bellfruit) (Scorpion 4) (set 5)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 ) // incomplete pairing
-GAMEL( 200?, sc4pwcrzg ,sc4pwcrz, sc4, sc4, sc4_state, sc4, ROT0, "BFM","Power Crazy (Bellfruit) (Scorpion 4) (set 6)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4pwcrz ,0, sc4, sc4, sc4_state, sc4, ROT0, "BFM","Power Crazy (Bellfruit) (Scorpion 4) (set 1)", MACHINE_FLAGS_NOSOUND, layout_bfm_sc4 )
+GAMEL( 200?, sc4pwcrza ,sc4pwcrz, sc4, sc4, sc4_state, sc4, ROT0, "BFM","Power Crazy (Bellfruit) (Scorpion 4) (set 2)", MACHINE_FLAGS_NOSOUND, layout_bfm_sc4 )
+GAMEL( 200?, sc4pwcrzb ,sc4pwcrz, sc4, sc4, sc4_state, sc4, ROT0, "BFM","Power Crazy (Bellfruit) (Scorpion 4) (set 3)", MACHINE_FLAGS_NOSOUND, layout_bfm_sc4 )
+GAMEL( 200?, sc4pwcrze ,sc4pwcrz, sc4, sc4, sc4_state, sc4, ROT0, "BFM","Power Crazy (Bellfruit) (Scorpion 4) (set 4)", MACHINE_FLAGS_NOSOUND, layout_bfm_sc4 )
+GAMEL( 200?, sc4pwcrzf ,sc4pwcrz, sc4, sc4, sc4_state, sc4, ROT0, "BFM","Power Crazy (Bellfruit) (Scorpion 4) (set 5)", MACHINE_FLAGS_NOSOUND, layout_bfm_sc4 ) // incomplete pairing
+GAMEL( 200?, sc4pwcrzg ,sc4pwcrz, sc4, sc4, sc4_state, sc4, ROT0, "BFM","Power Crazy (Bellfruit) (Scorpion 4) (set 6)", MACHINE_FLAGS_NOSOUND, layout_bfm_sc4 )
// PR4610 POWER CRAZY SP98 PR6810 POWER SOUNDS11
-GAMEL( 200?, sc4pwcrzc ,sc4pwcrz, sc4, sc4, sc4_state, sc4, ROT0, "BFM","Power Crazy SP98 (Bellfruit) (Scorpion 4) (set 1)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4pwcrzd ,sc4pwcrz, sc4, sc4, sc4_state, sc4, ROT0, "BFM","Power Crazy SP98 (Bellfruit) (Scorpion 4) (set 2)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4pwcrzh ,sc4pwcrz, sc4, sc4, sc4_state, sc4, ROT0, "BFM","Power Crazy SP98 (Bellfruit) (Scorpion 4) (set 3)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4pwcrzi ,sc4pwcrz, sc4, sc4, sc4_state, sc4, ROT0, "BFM","Power Crazy SP98 (Bellfruit) (Scorpion 4) (set 4)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4pwcrzc ,sc4pwcrz, sc4, sc4, sc4_state, sc4, ROT0, "BFM","Power Crazy SP98 (Bellfruit) (Scorpion 4) (set 1)", MACHINE_FLAGS_NOSOUND, layout_bfm_sc4 )
+GAMEL( 200?, sc4pwcrzd ,sc4pwcrz, sc4, sc4, sc4_state, sc4, ROT0, "BFM","Power Crazy SP98 (Bellfruit) (Scorpion 4) (set 2)", MACHINE_FLAGS_NOSOUND, layout_bfm_sc4 )
+GAMEL( 200?, sc4pwcrzh ,sc4pwcrz, sc4, sc4, sc4_state, sc4, ROT0, "BFM","Power Crazy SP98 (Bellfruit) (Scorpion 4) (set 3)", MACHINE_FLAGS_NOSOUND, layout_bfm_sc4 )
+GAMEL( 200?, sc4pwcrzi ,sc4pwcrz, sc4, sc4, sc4_state, sc4, ROT0, "BFM","Power Crazy SP98 (Bellfruit) (Scorpion 4) (set 4)", MACHINE_FLAGS_NOSOUND, layout_bfm_sc4 )
// some of the italian / german sets have input structures, but not fruit machine ones
// PR1191 QUARTERBACK QBCK SOUNDS QUARTERBACK
-GAMEL( 200?, sc4quart ,0, sc4, sc4, sc4_state, sc4, ROT0, "Mazooma","Quaterback (Mazooma) (Scorpion 4) (set 1)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4quarta ,sc4quart, sc4, sc4, sc4_state, sc4, ROT0, "Mazooma","Quaterback (Mazooma) (Scorpion 4) (set 2)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4quart ,0, sc4, sc4, sc4_state, sc4, ROT0, "Mazooma","Quaterback (Mazooma) (Scorpion 4) (set 1)", MACHINE_FLAGS_NOSOUND, layout_bfm_sc4 )
+GAMEL( 200?, sc4quarta ,sc4quart, sc4, sc4, sc4_state, sc4, ROT0, "Mazooma","Quaterback (Mazooma) (Scorpion 4) (set 2)", MACHINE_FLAGS_NOSOUND, layout_bfm_sc4 )
// QUARTERBACK .PR2072.ITALIAN QUARTERBACK.. (non-standard header)
-GAMEL( 200?, sc4quartb ,sc4quart, sc4, sc4, sc4_state, sc4, ROT0, "Mazooma","Quaterback (PR2072) (Italian) (Mazooma) (Scorpion 4) (set 1)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4quarte ,sc4quart, sc4, sc4, sc4_state, sc4, ROT0, "Mazooma","Quaterback (PR2072) (Italian) (Mazooma) (Scorpion 4) (set 2)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4quarti ,sc4quart, sc4, sc4, sc4_state, sc4, ROT0, "Mazooma","Quaterback (PR2072) (Italian) (Mazooma) (Scorpion 4) (set 3)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4quartk ,sc4quart, sc4, sc4, sc4_state, sc4, ROT0, "Mazooma","Quaterback (PR2072) (Italian) (Mazooma) (Scorpion 4) (set 4)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4quartb ,sc4quart, sc4, sc4, sc4_state, sc4, ROT0, "Mazooma","Quaterback (PR2072) (Italian) (Mazooma) (Scorpion 4) (set 1)", MACHINE_FLAGS_NOSOUND, layout_bfm_sc4 )
+GAMEL( 200?, sc4quarte ,sc4quart, sc4, sc4, sc4_state, sc4, ROT0, "Mazooma","Quaterback (PR2072) (Italian) (Mazooma) (Scorpion 4) (set 2)", MACHINE_FLAGS_NOSOUND, layout_bfm_sc4 )
+GAMEL( 200?, sc4quarti ,sc4quart, sc4, sc4, sc4_state, sc4, ROT0, "Mazooma","Quaterback (PR2072) (Italian) (Mazooma) (Scorpion 4) (set 3)", MACHINE_FLAGS_NOSOUND, layout_bfm_sc4 )
+GAMEL( 200?, sc4quartk ,sc4quart, sc4, sc4, sc4_state, sc4, ROT0, "Mazooma","Quaterback (PR2072) (Italian) (Mazooma) (Scorpion 4) (set 4)", MACHINE_FLAGS_NOSOUND, layout_bfm_sc4 )
// QUARTERBACK .PR2064.GERMAN QUARTERBACK.. (non-standard header)
-GAMEL( 200?, sc4quartc ,sc4quart, sc4, sc4, sc4_state, sc4, ROT0, "Mazooma","Quaterback (PR2064) (German) (Mazooma) (Scorpion 4) (set 1)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4quartd ,sc4quart, sc4, sc4, sc4_state, sc4, ROT0, "Mazooma","Quaterback (PR2064) (German) (Mazooma) (Scorpion 4) (set 2)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4quartf ,sc4quart, sc4, sc4, sc4_state, sc4, ROT0, "Mazooma","Quaterback (PR2064) (German) (Mazooma) (Scorpion 4) (set 3)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4quartg ,sc4quart, sc4, sc4, sc4_state, sc4, ROT0, "Mazooma","Quaterback (PR2064) (German) (Mazooma) (Scorpion 4) (set 4)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4quarth ,sc4quart, sc4, sc4, sc4_state, sc4, ROT0, "Mazooma","Quaterback (PR2064) (German) (Mazooma) (Scorpion 4) (set 5)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4quartj ,sc4quart, sc4, sc4, sc4_state, sc4, ROT0, "Mazooma","Quaterback (PR2064) (German) (Mazooma) (Scorpion 4) (set 6)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4quartl ,sc4quart, sc4, sc4, sc4_state, sc4, ROT0, "Mazooma","Quaterback (PR2064) (German) (Mazooma) (Scorpion 4) (set 7)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4quartm ,sc4quart, sc4, sc4, sc4_state, sc4, ROT0, "Mazooma","Quaterback (PR2064) (German) (Mazooma) (Scorpion 4) (set 8)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4quartc ,sc4quart, sc4, sc4, sc4_state, sc4, ROT0, "Mazooma","Quaterback (PR2064) (German) (Mazooma) (Scorpion 4) (set 1)", MACHINE_FLAGS_NOSOUND, layout_bfm_sc4 )
+GAMEL( 200?, sc4quartd ,sc4quart, sc4, sc4, sc4_state, sc4, ROT0, "Mazooma","Quaterback (PR2064) (German) (Mazooma) (Scorpion 4) (set 2)", MACHINE_FLAGS_NOSOUND, layout_bfm_sc4 )
+GAMEL( 200?, sc4quartf ,sc4quart, sc4, sc4, sc4_state, sc4, ROT0, "Mazooma","Quaterback (PR2064) (German) (Mazooma) (Scorpion 4) (set 3)", MACHINE_FLAGS_NOSOUND, layout_bfm_sc4 )
+GAMEL( 200?, sc4quartg ,sc4quart, sc4, sc4, sc4_state, sc4, ROT0, "Mazooma","Quaterback (PR2064) (German) (Mazooma) (Scorpion 4) (set 4)", MACHINE_FLAGS_NOSOUND, layout_bfm_sc4 )
+GAMEL( 200?, sc4quarth ,sc4quart, sc4, sc4, sc4_state, sc4, ROT0, "Mazooma","Quaterback (PR2064) (German) (Mazooma) (Scorpion 4) (set 5)", MACHINE_FLAGS_NOSOUND, layout_bfm_sc4 )
+GAMEL( 200?, sc4quartj ,sc4quart, sc4, sc4, sc4_state, sc4, ROT0, "Mazooma","Quaterback (PR2064) (German) (Mazooma) (Scorpion 4) (set 6)", MACHINE_FLAGS_NOSOUND, layout_bfm_sc4 )
+GAMEL( 200?, sc4quartl ,sc4quart, sc4, sc4, sc4_state, sc4, ROT0, "Mazooma","Quaterback (PR2064) (German) (Mazooma) (Scorpion 4) (set 7)", MACHINE_FLAGS_NOSOUND, layout_bfm_sc4 )
+GAMEL( 200?, sc4quartm ,sc4quart, sc4, sc4, sc4_state, sc4, ROT0, "Mazooma","Quaterback (PR2064) (German) (Mazooma) (Scorpion 4) (set 8)", MACHINE_FLAGS_NOSOUND, layout_bfm_sc4 )
// PR6902 RED HOT IBIZA PR6902 IBIZ SOUNDS11
-GAMEL( 200?, sc4ibiza ,0, sc4, sc4, sc4_state, sc4, ROT0, "BFM","Red Hot Ibiza (Bellfruit) (Scorpion 4) (set 1)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4ibizaa ,sc4ibiza, sc4, sc4, sc4_state, sc4, ROT0, "BFM","Red Hot Ibiza (Bellfruit) (Scorpion 4) (set 2)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4ibizab ,sc4ibiza, sc4, sc4, sc4_state, sc4, ROT0, "BFM","Red Hot Ibiza (Bellfruit) (Scorpion 4) (set 3)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4ibizac ,sc4ibiza, sc4, sc4, sc4_state, sc4, ROT0, "BFM","Red Hot Ibiza (Bellfruit) (Scorpion 4) (set 4)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4ibizad ,sc4ibiza, sc4, sc4, sc4_state, sc4, ROT0, "BFM","Red Hot Ibiza (Bellfruit) (Scorpion 4) (set 5)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4ibizae ,sc4ibiza, sc4, sc4, sc4_state, sc4, ROT0, "BFM","Red Hot Ibiza (Bellfruit) (Scorpion 4) (set 6)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4ibizaf ,sc4ibiza, sc4, sc4, sc4_state, sc4, ROT0, "BFM","Red Hot Ibiza (Bellfruit) (Scorpion 4) (set 7)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4ibizag ,sc4ibiza, sc4, sc4, sc4_state, sc4, ROT0, "BFM","Red Hot Ibiza (Bellfruit) (Scorpion 4) (set 8)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4ibizah ,sc4ibiza, sc4, sc4, sc4_state, sc4, ROT0, "BFM","Red Hot Ibiza (Bellfruit) (Scorpion 4) (set 9)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4ibizai ,sc4ibiza, sc4, sc4, sc4_state, sc4, ROT0, "BFM","Red Hot Ibiza (Bellfruit) (Scorpion 4) (set 10)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4ibiza ,0, sc4, sc4, sc4_state, sc4, ROT0, "BFM","Red Hot Ibiza (Bellfruit) (Scorpion 4) (set 1)", MACHINE_FLAGS_NOSOUND, layout_bfm_sc4 )
+GAMEL( 200?, sc4ibizaa ,sc4ibiza, sc4, sc4, sc4_state, sc4, ROT0, "BFM","Red Hot Ibiza (Bellfruit) (Scorpion 4) (set 2)", MACHINE_FLAGS_NOSOUND, layout_bfm_sc4 )
+GAMEL( 200?, sc4ibizab ,sc4ibiza, sc4, sc4, sc4_state, sc4, ROT0, "BFM","Red Hot Ibiza (Bellfruit) (Scorpion 4) (set 3)", MACHINE_FLAGS_NOSOUND, layout_bfm_sc4 )
+GAMEL( 200?, sc4ibizac ,sc4ibiza, sc4, sc4, sc4_state, sc4, ROT0, "BFM","Red Hot Ibiza (Bellfruit) (Scorpion 4) (set 4)", MACHINE_FLAGS_NOSOUND, layout_bfm_sc4 )
+GAMEL( 200?, sc4ibizad ,sc4ibiza, sc4, sc4, sc4_state, sc4, ROT0, "BFM","Red Hot Ibiza (Bellfruit) (Scorpion 4) (set 5)", MACHINE_FLAGS_NOSOUND, layout_bfm_sc4 )
+GAMEL( 200?, sc4ibizae ,sc4ibiza, sc4, sc4, sc4_state, sc4, ROT0, "BFM","Red Hot Ibiza (Bellfruit) (Scorpion 4) (set 6)", MACHINE_FLAGS_NOSOUND, layout_bfm_sc4 )
+GAMEL( 200?, sc4ibizaf ,sc4ibiza, sc4, sc4, sc4_state, sc4, ROT0, "BFM","Red Hot Ibiza (Bellfruit) (Scorpion 4) (set 7)", MACHINE_FLAGS_NOSOUND, layout_bfm_sc4 )
+GAMEL( 200?, sc4ibizag ,sc4ibiza, sc4, sc4, sc4_state, sc4, ROT0, "BFM","Red Hot Ibiza (Bellfruit) (Scorpion 4) (set 8)", MACHINE_FLAGS_NOSOUND, layout_bfm_sc4 )
+GAMEL( 200?, sc4ibizah ,sc4ibiza, sc4, sc4, sc4_state, sc4, ROT0, "BFM","Red Hot Ibiza (Bellfruit) (Scorpion 4) (set 9)", MACHINE_FLAGS_NOSOUND, layout_bfm_sc4 )
+GAMEL( 200?, sc4ibizai ,sc4ibiza, sc4, sc4, sc4_state, sc4, ROT0, "BFM","Red Hot Ibiza (Bellfruit) (Scorpion 4) (set 10)", MACHINE_FLAGS_NOSOUND, layout_bfm_sc4 )
// half size sound roms
// PR6905 SKY'S THE LIMIT PR6905 SKY'S THE LIMIT SOUNDS11
-GAMEL( 200?, sc4stl ,0, sc4, sc4, sc4_state, sc4, ROT0, "BFM","The Sky's The Limit (Bellfruit) (Scorpion 4) (set 1)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4stla ,sc4stl, sc4, sc4, sc4_state, sc4, ROT0, "BFM","The Sky's The Limit (Bellfruit) (Scorpion 4) (set 2)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4stlb ,sc4stl, sc4, sc4, sc4_state, sc4, ROT0, "BFM","The Sky's The Limit (Bellfruit) (Scorpion 4) (set 3)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4stlc ,sc4stl, sc4, sc4, sc4_state, sc4, ROT0, "BFM","The Sky's The Limit (Bellfruit) (Scorpion 4) (set 4)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4stld ,sc4stl, sc4, sc4, sc4_state, sc4, ROT0, "BFM","The Sky's The Limit (Bellfruit) (Scorpion 4) (set 5)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4stle ,sc4stl, sc4, sc4, sc4_state, sc4, ROT0, "BFM","The Sky's The Limit (Bellfruit) (Scorpion 4) (set 6)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4stlf ,sc4stl, sc4, sc4, sc4_state, sc4, ROT0, "BFM","The Sky's The Limit (Bellfruit) (Scorpion 4) (set 7)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4stlg ,sc4stl, sc4, sc4, sc4_state, sc4, ROT0, "BFM","The Sky's The Limit (Bellfruit) (Scorpion 4) (set 8)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4stl ,0, sc4, sc4, sc4_state, sc4, ROT0, "BFM","The Sky's The Limit (Bellfruit) (Scorpion 4) (set 1)", MACHINE_FLAGS_NOSOUND, layout_bfm_sc4 )
+GAMEL( 200?, sc4stla ,sc4stl, sc4, sc4, sc4_state, sc4, ROT0, "BFM","The Sky's The Limit (Bellfruit) (Scorpion 4) (set 2)", MACHINE_FLAGS_NOSOUND, layout_bfm_sc4 )
+GAMEL( 200?, sc4stlb ,sc4stl, sc4, sc4, sc4_state, sc4, ROT0, "BFM","The Sky's The Limit (Bellfruit) (Scorpion 4) (set 3)", MACHINE_FLAGS_NOSOUND, layout_bfm_sc4 )
+GAMEL( 200?, sc4stlc ,sc4stl, sc4, sc4, sc4_state, sc4, ROT0, "BFM","The Sky's The Limit (Bellfruit) (Scorpion 4) (set 4)", MACHINE_FLAGS_NOSOUND, layout_bfm_sc4 )
+GAMEL( 200?, sc4stld ,sc4stl, sc4, sc4, sc4_state, sc4, ROT0, "BFM","The Sky's The Limit (Bellfruit) (Scorpion 4) (set 5)", MACHINE_FLAGS_NOSOUND, layout_bfm_sc4 )
+GAMEL( 200?, sc4stle ,sc4stl, sc4, sc4, sc4_state, sc4, ROT0, "BFM","The Sky's The Limit (Bellfruit) (Scorpion 4) (set 6)", MACHINE_FLAGS_NOSOUND, layout_bfm_sc4 )
+GAMEL( 200?, sc4stlf ,sc4stl, sc4, sc4, sc4_state, sc4, ROT0, "BFM","The Sky's The Limit (Bellfruit) (Scorpion 4) (set 7)", MACHINE_FLAGS_NOSOUND, layout_bfm_sc4 )
+GAMEL( 200?, sc4stlg ,sc4stl, sc4, sc4, sc4_state, sc4, ROT0, "BFM","The Sky's The Limit (Bellfruit) (Scorpion 4) (set 8)", MACHINE_FLAGS_NOSOUND, layout_bfm_sc4 )
// PR7055 SPLASH N GRAB GRAB SOUNDS
-GAMEL( 200?, sc4splgb ,0, sc4, sc4, sc4_state, sc4, ROT0, "Mazooma","Splash & Grab (Mazooma) (Scorpion 4) (set 1)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4splgba ,sc4splgb, sc4, sc4, sc4_state, sc4, ROT0, "Mazooma","Splash & Grab (Mazooma) (Scorpion 4) (set 2)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4splgb ,0, sc4, sc4, sc4_state, sc4, ROT0, "Mazooma","Splash & Grab (Mazooma) (Scorpion 4) (set 1)", MACHINE_FLAGS_NOSOUND, layout_bfm_sc4 )
+GAMEL( 200?, sc4splgba ,sc4splgb, sc4, sc4, sc4_state, sc4, ROT0, "Mazooma","Splash & Grab (Mazooma) (Scorpion 4) (set 2)", MACHINE_FLAGS_NOSOUND, layout_bfm_sc4 )
// PR2044 CASINO SPREAD YOUR BET SBET SOUNDS SPREAD YOUR BET
-GAMEL( 200?, sc4spred ,0, sc4, sc4, sc4_state, sc4, ROT0, "Mazooma","Spread Your Bet (Mazooma) (Scorpion 4)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4spred ,0, sc4, sc4, sc4_state, sc4, ROT0, "Mazooma","Spread Your Bet (Mazooma) (Scorpion 4)", MACHINE_FLAGS_NOSOUND, layout_bfm_sc4 )
// PR6921 DIAMONDS AND RUBIES PR6921 DARB SOUNDS11
-GAMEL( 200?, sc4sdr ,0, sc4, sc4, sc4_state, sc4, ROT0, "BFM","Super Diamonds & Rubies (PR6921) (Bellfruit) (Scorpion 4) (set 1)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4sdrb ,sc4sdr, sc4, sc4, sc4_state, sc4, ROT0, "BFM","Super Diamonds & Rubies (PR6921) (Bellfruit) (Scorpion 4) (set 2)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4sdr ,0, sc4, sc4, sc4_state, sc4, ROT0, "BFM","Super Diamonds & Rubies (PR6921) (Bellfruit) (Scorpion 4) (set 1)", MACHINE_FLAGS_NOSOUND, layout_bfm_sc4 )
+GAMEL( 200?, sc4sdrb ,sc4sdr, sc4, sc4, sc4_state, sc4, ROT0, "BFM","Super Diamonds & Rubies (PR6921) (Bellfruit) (Scorpion 4) (set 2)", MACHINE_FLAGS_NOSOUND, layout_bfm_sc4 )
// PR6921 DIAMONDS AND RUBIES SP98 PR6921 DARB SOUNDS11
-GAMEL( 200?, sc4sdra ,sc4sdr, sc4, sc4, sc4_state, sc4, ROT0, "BFM","Super Diamonds & Rubies SP98 (PR6921) (Bellfruit) (Scorpion 4) (set 1)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4sdrc ,sc4sdr, sc4, sc4, sc4_state, sc4, ROT0, "BFM","Super Diamonds & Rubies SP98 (PR6921) (Bellfruit) (Scorpion 4) (set 2)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4sdra ,sc4sdr, sc4, sc4, sc4_state, sc4, ROT0, "BFM","Super Diamonds & Rubies SP98 (PR6921) (Bellfruit) (Scorpion 4) (set 1)", MACHINE_FLAGS_NOSOUND, layout_bfm_sc4 )
+GAMEL( 200?, sc4sdrc ,sc4sdr, sc4, sc4, sc4_state, sc4, ROT0, "BFM","Super Diamonds & Rubies SP98 (PR6921) (Bellfruit) (Scorpion 4) (set 2)", MACHINE_FLAGS_NOSOUND, layout_bfm_sc4 )
// bad sound roms
// PR6906 CRAZY CASINO SP98 PR6906 CRCS SOUNDS11
-GAMEL( 200?, sc4crzcs ,0, sc4, sc4, sc4_state, sc4, ROT0, "BFM","Crazy Casino SP98 (Bellfruit) (Scorpion 4) (set 1)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4crzcsa ,sc4crzcs, sc4, sc4, sc4_state, sc4, ROT0, "BFM","Crazy Casino SP98 (Bellfruit) (Scorpion 4) (set 2)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4crzcsb ,sc4crzcs, sc4, sc4, sc4_state, sc4, ROT0, "BFM","Crazy Casino SP98 (Bellfruit) (Scorpion 4) (set 3)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4crzcsc ,sc4crzcs, sc4, sc4, sc4_state, sc4, ROT0, "BFM","Crazy Casino SP98 (Bellfruit) (Scorpion 4) (set 4)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4crzcs ,0, sc4, sc4, sc4_state, sc4, ROT0, "BFM","Crazy Casino SP98 (Bellfruit) (Scorpion 4) (set 1)", MACHINE_FLAGS_NOSOUND, layout_bfm_sc4 )
+GAMEL( 200?, sc4crzcsa ,sc4crzcs, sc4, sc4, sc4_state, sc4, ROT0, "BFM","Crazy Casino SP98 (Bellfruit) (Scorpion 4) (set 2)", MACHINE_FLAGS_NOSOUND, layout_bfm_sc4 )
+GAMEL( 200?, sc4crzcsb ,sc4crzcs, sc4, sc4, sc4_state, sc4, ROT0, "BFM","Crazy Casino SP98 (Bellfruit) (Scorpion 4) (set 3)", MACHINE_FLAGS_NOSOUND, layout_bfm_sc4 )
+GAMEL( 200?, sc4crzcsc ,sc4crzcs, sc4, sc4, sc4_state, sc4, ROT0, "BFM","Crazy Casino SP98 (Bellfruit) (Scorpion 4) (set 4)", MACHINE_FLAGS_NOSOUND, layout_bfm_sc4 )
// PR7001 IT'S A CRAZY WORLD CRAZY WORLD SOUNDS
-GAMEL( 200?, sc4crzwl ,0, sc4, sc4, sc4_state, sc4, ROT0, "Mazooma","Crazy World (Mazooma) (Scorpion 4) (set 1)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4crzwla ,sc4crzwl, sc4, sc4, sc4_state, sc4, ROT0, "Mazooma","Crazy World (Mazooma) (Scorpion 4) (set 2)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4crzwlb ,sc4crzwl, sc4, sc4, sc4_state, sc4, ROT0, "Mazooma","Crazy World (Mazooma) (Scorpion 4) (set 3)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4crzwlc ,sc4crzwl, sc4, sc4, sc4_state, sc4, ROT0, "Mazooma","Crazy World (Mazooma) (Scorpion 4) (set 4)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4crzwld ,sc4crzwl, sc4, sc4, sc4_state, sc4, ROT0, "Mazooma","Crazy World (Mazooma) (Scorpion 4) (set 5)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4crzwle ,sc4crzwl, sc4, sc4, sc4_state, sc4, ROT0, "Mazooma","Crazy World (Mazooma) (Scorpion 4) (set 6)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4crzwlf ,sc4crzwl, sc4, sc4, sc4_state, sc4, ROT0, "Mazooma","Crazy World (Mazooma) (Scorpion 4) (set 7)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4crzwlg ,sc4crzwl, sc4, sc4, sc4_state, sc4, ROT0, "Mazooma","Crazy World (Mazooma) (Scorpion 4) (set 8)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4crzwl ,0, sc4, sc4, sc4_state, sc4, ROT0, "Mazooma","Crazy World (Mazooma) (Scorpion 4) (set 1)", MACHINE_FLAGS_NOSOUND, layout_bfm_sc4 )
+GAMEL( 200?, sc4crzwla ,sc4crzwl, sc4, sc4, sc4_state, sc4, ROT0, "Mazooma","Crazy World (Mazooma) (Scorpion 4) (set 2)", MACHINE_FLAGS_NOSOUND, layout_bfm_sc4 )
+GAMEL( 200?, sc4crzwlb ,sc4crzwl, sc4, sc4, sc4_state, sc4, ROT0, "Mazooma","Crazy World (Mazooma) (Scorpion 4) (set 3)", MACHINE_FLAGS_NOSOUND, layout_bfm_sc4 )
+GAMEL( 200?, sc4crzwlc ,sc4crzwl, sc4, sc4, sc4_state, sc4, ROT0, "Mazooma","Crazy World (Mazooma) (Scorpion 4) (set 4)", MACHINE_FLAGS_NOSOUND, layout_bfm_sc4 )
+GAMEL( 200?, sc4crzwld ,sc4crzwl, sc4, sc4, sc4_state, sc4, ROT0, "Mazooma","Crazy World (Mazooma) (Scorpion 4) (set 5)", MACHINE_FLAGS_NOSOUND, layout_bfm_sc4 )
+GAMEL( 200?, sc4crzwle ,sc4crzwl, sc4, sc4, sc4_state, sc4, ROT0, "Mazooma","Crazy World (Mazooma) (Scorpion 4) (set 6)", MACHINE_FLAGS_NOSOUND, layout_bfm_sc4 )
+GAMEL( 200?, sc4crzwlf ,sc4crzwl, sc4, sc4, sc4_state, sc4, ROT0, "Mazooma","Crazy World (Mazooma) (Scorpion 4) (set 7)", MACHINE_FLAGS_NOSOUND, layout_bfm_sc4 )
+GAMEL( 200?, sc4crzwlg ,sc4crzwl, sc4, sc4, sc4_state, sc4, ROT0, "Mazooma","Crazy World (Mazooma) (Scorpion 4) (set 8)", MACHINE_FLAGS_NOSOUND, layout_bfm_sc4 )
// no sound roms
// PR6814 FOOTBALL CRAZY PR6814 FOOTBALL CRAZY SOUNDS
-GAMEL( 200?, sc4fbcrz ,0, sc4, sc4, sc4_state, sc4, ROT0, "BFM","Football Crazy (Bellfruit) (Scorpion 4) (set 1)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4fbcrza ,sc4fbcrz, sc4, sc4, sc4_state, sc4, ROT0, "BFM","Football Crazy (Bellfruit) (Scorpion 4) (set 2)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4fbcrzb ,sc4fbcrz, sc4, sc4, sc4_state, sc4, ROT0, "BFM","Football Crazy (Bellfruit) (Scorpion 4) (set 3)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4fbcrzc ,sc4fbcrz, sc4, sc4, sc4_state, sc4, ROT0, "BFM","Football Crazy (Bellfruit) (Scorpion 4) (set 4)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4fbcrzd ,sc4fbcrz, sc4, sc4, sc4_state, sc4, ROT0, "BFM","Football Crazy (Bellfruit) (Scorpion 4) (set 5)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4fbcrze ,sc4fbcrz, sc4, sc4, sc4_state, sc4, ROT0, "BFM","Football Crazy (Bellfruit) (Scorpion 4) (set 6)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4fbcrzf ,sc4fbcrz, sc4, sc4, sc4_state, sc4, ROT0, "BFM","Football Crazy (Bellfruit) (Scorpion 4) (set 7)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4fbcrzg ,sc4fbcrz, sc4, sc4, sc4_state, sc4, ROT0, "BFM","Football Crazy (Bellfruit) (Scorpion 4) (set 8)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4fbcrzh ,sc4fbcrz, sc4, sc4, sc4_state, sc4, ROT0, "BFM","Football Crazy (Bellfruit) (Scorpion 4) (set 9)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4fbcrzi ,sc4fbcrz, sc4, sc4, sc4_state, sc4, ROT0, "BFM","Football Crazy (Bellfruit) (Scorpion 4) (set 10)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4fbcrz ,0, sc4, sc4, sc4_state, sc4, ROT0, "BFM","Football Crazy (Bellfruit) (Scorpion 4) (set 1)", MACHINE_FLAGS_NOSOUND, layout_bfm_sc4 )
+GAMEL( 200?, sc4fbcrza ,sc4fbcrz, sc4, sc4, sc4_state, sc4, ROT0, "BFM","Football Crazy (Bellfruit) (Scorpion 4) (set 2)", MACHINE_FLAGS_NOSOUND, layout_bfm_sc4 )
+GAMEL( 200?, sc4fbcrzb ,sc4fbcrz, sc4, sc4, sc4_state, sc4, ROT0, "BFM","Football Crazy (Bellfruit) (Scorpion 4) (set 3)", MACHINE_FLAGS_NOSOUND, layout_bfm_sc4 )
+GAMEL( 200?, sc4fbcrzc ,sc4fbcrz, sc4, sc4, sc4_state, sc4, ROT0, "BFM","Football Crazy (Bellfruit) (Scorpion 4) (set 4)", MACHINE_FLAGS_NOSOUND, layout_bfm_sc4 )
+GAMEL( 200?, sc4fbcrzd ,sc4fbcrz, sc4, sc4, sc4_state, sc4, ROT0, "BFM","Football Crazy (Bellfruit) (Scorpion 4) (set 5)", MACHINE_FLAGS_NOSOUND, layout_bfm_sc4 )
+GAMEL( 200?, sc4fbcrze ,sc4fbcrz, sc4, sc4, sc4_state, sc4, ROT0, "BFM","Football Crazy (Bellfruit) (Scorpion 4) (set 6)", MACHINE_FLAGS_NOSOUND, layout_bfm_sc4 )
+GAMEL( 200?, sc4fbcrzf ,sc4fbcrz, sc4, sc4, sc4_state, sc4, ROT0, "BFM","Football Crazy (Bellfruit) (Scorpion 4) (set 7)", MACHINE_FLAGS_NOSOUND, layout_bfm_sc4 )
+GAMEL( 200?, sc4fbcrzg ,sc4fbcrz, sc4, sc4, sc4_state, sc4, ROT0, "BFM","Football Crazy (Bellfruit) (Scorpion 4) (set 8)", MACHINE_FLAGS_NOSOUND, layout_bfm_sc4 )
+GAMEL( 200?, sc4fbcrzh ,sc4fbcrz, sc4, sc4, sc4_state, sc4, ROT0, "BFM","Football Crazy (Bellfruit) (Scorpion 4) (set 9)", MACHINE_FLAGS_NOSOUND, layout_bfm_sc4 )
+GAMEL( 200?, sc4fbcrzi ,sc4fbcrz, sc4, sc4, sc4_state, sc4, ROT0, "BFM","Football Crazy (Bellfruit) (Scorpion 4) (set 10)", MACHINE_FLAGS_NOSOUND, layout_bfm_sc4 )
// no sound roms
// PR6916 FROOTY BOOTY PR6916 FROOTY BOOTY SOUNDS11 FROOTY BOOTY
-GAMEL( 200?, sc4frboo ,0, sc4, sc4, sc4_state, sc4, ROT0, "BFM","Frooty Booty (Bellfruit) (Scorpion 4) (set 1)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4frbooa ,sc4frboo, sc4, sc4, sc4_state, sc4, ROT0, "BFM","Frooty Booty (Bellfruit) (Scorpion 4) (set 2)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4frboob ,sc4frboo, sc4, sc4, sc4_state, sc4, ROT0, "BFM","Frooty Booty (Bellfruit) (Scorpion 4) (set 3)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4frbooc ,sc4frboo, sc4, sc4, sc4_state, sc4, ROT0, "BFM","Frooty Booty (Bellfruit) (Scorpion 4) (set 4)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4frboo ,0, sc4, sc4, sc4_state, sc4, ROT0, "BFM","Frooty Booty (Bellfruit) (Scorpion 4) (set 1)", MACHINE_FLAGS_NOSOUND, layout_bfm_sc4 )
+GAMEL( 200?, sc4frbooa ,sc4frboo, sc4, sc4, sc4_state, sc4, ROT0, "BFM","Frooty Booty (Bellfruit) (Scorpion 4) (set 2)", MACHINE_FLAGS_NOSOUND, layout_bfm_sc4 )
+GAMEL( 200?, sc4frboob ,sc4frboo, sc4, sc4, sc4_state, sc4, ROT0, "BFM","Frooty Booty (Bellfruit) (Scorpion 4) (set 3)", MACHINE_FLAGS_NOSOUND, layout_bfm_sc4 )
+GAMEL( 200?, sc4frbooc ,sc4frboo, sc4, sc4, sc4_state, sc4, ROT0, "BFM","Frooty Booty (Bellfruit) (Scorpion 4) (set 4)", MACHINE_FLAGS_NOSOUND, layout_bfm_sc4 )
// no sound roms
// not a fruit machine? coin pusher?
-GAMEL( 200?, sc4gfev ,0, sc4, sc4, sc4_state, sc4, ROT0, "Mazooma","Gold Fever (Mazooma) (Scorpion 4) (set 1)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 ) // PR20XX GOLD FEVER PUSHER GOLDFEVER SOUNDS GOLD FEVER
-GAMEL( 200?, sc4gfeva ,sc4gfev, sc4, sc4, sc4_state, sc4, ROT0, "Mazooma","Gold Fever (Mazooma) (Scorpion 4) (set 2)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 ) // PR2142 GOLD FEVER PUSHER USA GOLDFEVER SOUNDS GOLD FEVER
-GAMEL( 200?, sc4gfevb ,sc4gfev, sc4, sc4, sc4_state, sc4, ROT0, "Mazooma","Gold Fever (Mazooma) (Scorpion 4) (set 3)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 ) // ^^
-GAMEL( 200?, sc4db ,sc4gfev, sc4, sc4, sc4_state, sc4, ROT0, "Mazooma","Gold Fever (Mazooma) (Scorpion 4) (set 4)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 ) // PR2142 GOLD FEVER PUSHER USA GOLDFEVER SOUNDS GOLD FEVER
+GAMEL( 200?, sc4gfev ,0, sc4, sc4, sc4_state, sc4, ROT0, "Mazooma","Gold Fever (Mazooma) (Scorpion 4) (set 1)", MACHINE_FLAGS, layout_bfm_sc4 ) // PR20XX GOLD FEVER PUSHER GOLDFEVER SOUNDS GOLD FEVER
+GAMEL( 200?, sc4gfeva ,sc4gfev, sc4, sc4, sc4_state, sc4, ROT0, "Mazooma","Gold Fever (Mazooma) (Scorpion 4) (set 2)", MACHINE_FLAGS, layout_bfm_sc4 ) // PR2142 GOLD FEVER PUSHER USA GOLDFEVER SOUNDS GOLD FEVER
+GAMEL( 200?, sc4gfevb ,sc4gfev, sc4, sc4, sc4_state, sc4, ROT0, "Mazooma","Gold Fever (Mazooma) (Scorpion 4) (set 3)", MACHINE_FLAGS, layout_bfm_sc4 ) // ^^
+GAMEL( 200?, sc4db ,sc4gfev, sc4, sc4, sc4_state, sc4, ROT0, "Mazooma","Gold Fever (Mazooma) (Scorpion 4) (set 4)", MACHINE_FLAGS, layout_bfm_sc4 ) // PR2142 GOLD FEVER PUSHER USA GOLDFEVER SOUNDS GOLD FEVER
/**********************************************************************************************************************************/
/* Games below are German versions, and seem to be build on very different code even when titles match other games */
@@ -49689,7 +49691,7 @@ DRIVER_INIT_MEMBER(sc4_state,sc4polen)
}
// PR7012 GERMAN POLE POSITION PR7012 SOUNDS
-GAMEL( 200?, sc4polen ,0, sc4_4reel, sc4, sc4_state, sc4polen, ROT0, "Nova","Pole Position (German) (PR7012, GPOS) (Nova) (Scorpion 4)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4polen ,0, sc4_4reel, sc4, sc4_state, sc4polen, ROT0, "Nova","Pole Position (German) (PR7012, GPOS) (Nova) (Scorpion 4)", MACHINE_FLAGS, layout_bfm_sc4 )
@@ -49700,7 +49702,7 @@ DRIVER_INIT_MEMBER(sc4_state,sc4valnv)
// PR7025 GERMAN VALHALLA 7025 VER1 SOUNDS
-GAMEL( 200?, sc4valnv ,0, sc4, sc4, sc4_state, sc4valnv, ROT0, "Nova","Valhalla (German) (PR7025, GVAL) (Nova) (Scorpion 4)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4valnv ,0, sc4, sc4, sc4_state, sc4valnv, ROT0, "Nova","Valhalla (German) (PR7025, GVAL) (Nova) (Scorpion 4)", MACHINE_FLAGS, layout_bfm_sc4 )
@@ -49710,45 +49712,45 @@ DRIVER_INIT_MEMBER(sc4_state,sc4wernr)
}
// PR7027 GERMAN WERNER PR7027 SOUNDS V1
-GAMEL( 200?, sc4wernr ,0, sc4_4reel, sc4, sc4_state, sc4wernr, ROT0, "Nova","Werner (German) (PR7027, GWER) (Nova) (Scorpion 4) (set 1)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4wrnlt ,sc4wernr, sc4_4reel, sc4, sc4_state, sc4wernr, ROT0, "Nova","Werner (German) (PR7027, GWER) (Nova) (Scorpion 4) (set 2)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4wernr ,0, sc4_4reel, sc4, sc4_state, sc4wernr, ROT0, "Nova","Werner (German) (PR7027, GWER) (Nova) (Scorpion 4) (set 1)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4wrnlt ,sc4wernr, sc4_4reel, sc4, sc4_state, sc4wernr, ROT0, "Nova","Werner (German) (PR7027, GWER) (Nova) (Scorpion 4) (set 2)", MACHINE_FLAGS, layout_bfm_sc4 )
// no sound roms
// PR2023.GERMAN BRIX...........PR2023,German BRIX,......PR2023 SOUNDS V1 (non-standard header)
-GAMEL( 200?, sc4brix ,0, sc4_4reel_alt, sc4, sc4_state, sc4brix, ROT0, "Nova","Brix (German) (Nova) (Scorpion 4) (set 1)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4brixa ,sc4brix, sc4_4reel_alt, sc4, sc4_state, sc4brix, ROT0, "Nova","Brix (German) (Nova) (Scorpion 4) (set 2)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4brixb ,sc4brix, sc4_4reel_alt, sc4, sc4_state, sc4brix, ROT0, "Nova","Brix (German) (Nova) (Scorpion 4) (set 3)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4brix ,0, sc4_4reel_alt, sc4, sc4_state, sc4brix, ROT0, "Nova","Brix (German) (Nova) (Scorpion 4) (set 1)", MACHINE_FLAGS_NOSOUND, layout_bfm_sc4 )
+GAMEL( 200?, sc4brixa ,sc4brix, sc4_4reel_alt, sc4, sc4_state, sc4brix, ROT0, "Nova","Brix (German) (Nova) (Scorpion 4) (set 2)", MACHINE_FLAGS_NOSOUND, layout_bfm_sc4 )
+GAMEL( 200?, sc4brixb ,sc4brix, sc4_4reel_alt, sc4, sc4_state, sc4brix, ROT0, "Nova","Brix (German) (Nova) (Scorpion 4) (set 3)", MACHINE_FLAGS_NOSOUND, layout_bfm_sc4 )
// both of these are incomplete
// P_O_E_T_N_M_E_ _R_0_1_B_A_K_G_L_ _._0_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _9_0_8_6_ _L_C_ _O_D_G_S_U_D_1_
-GAMEL( 200?, sc4bgold ,0, sc4, sc4, sc4_state, sc4, ROT0, "Nova","Black Gold (Nova) (Scorpion 4) (set 1)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 ) // incomplete pairing
-GAMEL( 200?, sc4bgolda ,sc4bgold, sc4, sc4, sc4_state, sc4, ROT0, "Nova","Black Gold (Nova) (Scorpion 4) (set 2)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 ) // incomplete pairing
+GAMEL( 200?, sc4bgold ,0, sc4, sc4, sc4_state, sc4, ROT0, "Nova","Black Gold (Nova) (Scorpion 4) (set 1)", MACHINE_FLAGS_NOSOUND, layout_bfm_sc4 ) // incomplete pairing
+GAMEL( 200?, sc4bgolda ,sc4bgold, sc4, sc4, sc4_state, sc4, ROT0, "Nova","Black Gold (Nova) (Scorpion 4) (set 2)", MACHINE_FLAGS_NOSOUND, layout_bfm_sc4 ) // incomplete pairing
// no identifiaction string
-GAMEL( 200?, sc4wag ,0, sc4, sc4, sc4_state, sc4, ROT0, "Mazooma/Nova","WIN-10-Gain (German) (Nova) (Scorpion 4)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4wag ,0, sc4, sc4, sc4_state, sc4, ROT0, "Mazooma/Nova","WIN-10-Gain (German) (Nova) (Scorpion 4)", MACHINE_FLAGS_NOSOUND, layout_bfm_sc4 )
// PR6984 VIVA MEXICO 1.30 95008095 VIVA MEXICO PR6984
-GAMEL( 200?, sc4vmnv ,0, sc4, sc4, sc4_state, sc4, ROT0, "Nova","Viva Mexico (Nova) (Scorpion 4) (set 1)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4vmnv ,0, sc4, sc4, sc4_state, sc4, ROT0, "Nova","Viva Mexico (Nova) (Scorpion 4) (set 1)", MACHINE_FLAGS_NOSOUND, layout_bfm_sc4 )
// PR6984 VIVA MEXICO 1.00 95008095 VIVA MEXICO PR6984
-GAMEL( 200?, sc4vmnva ,sc4vmnv, sc4, sc4, sc4_state, sc4, ROT0, "Nova","Viva Mexico (Nova) (Scorpion 4) (set 2)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4vmnva ,sc4vmnv, sc4, sc4, sc4_state, sc4, ROT0, "Nova","Viva Mexico (Nova) (Scorpion 4) (set 2)", MACHINE_FLAGS_NOSOUND, layout_bfm_sc4 )
// PR2055.GERMAN MONOPOLY... (non-standard header)
-GAMEL( 200?, sc4monod ,0, sc4, sc4, sc4_state, sc4, ROT0, "Mazooma","Monopoly (Mazooma) [German] (Scorpion 4) (set 1)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4monoda ,sc4monod, sc4, sc4, sc4_state, sc4, ROT0, "Mazooma","Monopoly (Mazooma) [German] (Scorpion 4) (set 2)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4monodb ,sc4monod, sc4, sc4, sc4_state, sc4, ROT0, "Mazooma","Monopoly (Mazooma) [German] (Scorpion 4) (set 3)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4monod ,0, sc4, sc4, sc4_state, sc4, ROT0, "Mazooma","Monopoly (Mazooma) [German] (Scorpion 4) (set 1)", MACHINE_FLAGS_NOSOUND, layout_bfm_sc4 )
+GAMEL( 200?, sc4monoda ,sc4monod, sc4, sc4, sc4_state, sc4, ROT0, "Mazooma","Monopoly (Mazooma) [German] (Scorpion 4) (set 2)", MACHINE_FLAGS_NOSOUND, layout_bfm_sc4 )
+GAMEL( 200?, sc4monodb ,sc4monod, sc4, sc4, sc4_state, sc4, ROT0, "Mazooma","Monopoly (Mazooma) [German] (Scorpion 4) (set 3)", MACHINE_FLAGS_NOSOUND, layout_bfm_sc4 )
// doesn't like the sound rom (not sure why, they look OK and have correct header)
// PR7044 GERMAN JIGGERY POKERY PR7044SND
-GAMEL( 200?, sc4jiggn ,0, sc4, sc4, sc4_state, sc4, ROT0, "Nova","Jiggery Pockery (German) (Nova) (Scorpion 4)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4jiggn ,0, sc4, sc4, sc4_state, sc4, ROT0, "Nova","Jiggery Pockery (German) (Nova) (Scorpion 4)", MACHINE_FLAGS_NOSOUND, layout_bfm_sc4 )
// PR7076 GERMAN SINBAD2001 PR7076,German SINBAD2001, PR7076 SOUNDS V1
-GAMEL( 200?, sc4s2k ,0, sc4, sc4, sc4_state, sc4, ROT0, "Nova","Sinbad 2000 (German) (Nova) (Scorpion 4)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4s2k ,0, sc4, sc4, sc4_state, sc4, ROT0, "Nova","Sinbad 2000 (German) (Nova) (Scorpion 4)", MACHINE_FLAGS_NOSOUND, layout_bfm_sc4 )
// PR2022 GERMAN CASHANOVA (not a standard string)
-GAMEL( 200?, sc4cashg ,0, sc4, sc4, sc4_state, sc4, ROT0, "Mazooma / Nova","Cashanova (German) (Mazooma / Nova) (Scorpion 4)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4cashg ,0, sc4, sc4, sc4_state, sc4, ROT0, "Mazooma / Nova","Cashanova (German) (Mazooma / Nova) (Scorpion 4)", MACHINE_FLAGS_NOSOUND, layout_bfm_sc4 )
@@ -49766,19 +49768,19 @@ GAMEL( 200?, sc4cashg ,0, sc4, sc4, sc4_state, sc4, ROT0, "Mazooma /
/****************************************************************************************************************************************************************************************************************/
-GAMEL( 200?, ad4skill ,0, sc4_adder4, sc4, sc4_state, sc4, ROT0, "BFM","Skill Dice (BFM) (Scorpion 4 + Adder 4)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, ad4film ,0, sc4_adder4, sc4, sc4_state, sc4, ROT0, "BFM","Film Premiere (Video?) (Bellfruit) (Adder 4) (set 1)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 ) // the 68k vectors differ from usual, but it contains the expected strings for an Adder 4 title. No main program roms tho? :/
-GAMEL( 200?, ad4filma ,ad4film, sc4_adder4, sc4, sc4_state, sc4, ROT0, "BFM","Film Premiere (Video?) (Bellfruit) (Adder 4) (set 2)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 ) // ^^
-GAMEL( 200?, ad4ctl ,0, sc4_adder4, sc4, sc4_state, sc4, ROT0, "BFM","Cop The Lot Club (Video) (Bellfruit) (Adder 4) (set 1)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, ad4ctla ,ad4ctl, sc4_adder4, sc4, sc4_state, sc4, ROT0, "BFM","Cop The Lot Club (Video) (Bellfruit) (Adder 4) (set 2)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, ad4skill ,0, sc4_adder4, sc4, sc4_state, sc4, ROT0, "BFM","Skill Dice (BFM) (Scorpion 4 + Adder 4)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, ad4film ,0, sc4_adder4, sc4, sc4_state, sc4, ROT0, "BFM","Film Premiere (Video?) (Bellfruit) (Adder 4) (set 1)", MACHINE_FLAGS, layout_bfm_sc4 ) // the 68k vectors differ from usual, but it contains the expected strings for an Adder 4 title. No main program roms tho? :/
+GAMEL( 200?, ad4filma ,ad4film, sc4_adder4, sc4, sc4_state, sc4, ROT0, "BFM","Film Premiere (Video?) (Bellfruit) (Adder 4) (set 2)", MACHINE_FLAGS, layout_bfm_sc4 ) // ^^
+GAMEL( 200?, ad4ctl ,0, sc4_adder4, sc4, sc4_state, sc4, ROT0, "BFM","Cop The Lot Club (Video) (Bellfruit) (Adder 4) (set 1)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, ad4ctla ,ad4ctl, sc4_adder4, sc4, sc4_state, sc4, ROT0, "BFM","Cop The Lot Club (Video) (Bellfruit) (Adder 4) (set 2)", MACHINE_FLAGS, layout_bfm_sc4 )
// PR1036 CLUB COP THE LOT PR1036 CLOT SOUNDS11 COP THE LOT
// shows nothing on the VFD, but boots (to very little)
-GAMEL( 200?, sc4ctlcl ,0, sc4, sc4, sc4_state, sc4, ROT0, "BFM","Cop The Lot Club (Bellfruit) (Scorpion 4) (set 1)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4ctlcla ,sc4ctlcl, sc4, sc4, sc4_state, sc4, ROT0, "BFM","Cop The Lot Club (Bellfruit) (Scorpion 4) (set 2)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4ctlcl ,0, sc4, sc4, sc4_state, sc4, ROT0, "BFM","Cop The Lot Club (Bellfruit) (Scorpion 4) (set 1)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4ctlcla ,sc4ctlcl, sc4, sc4, sc4_state, sc4, ROT0, "BFM","Cop The Lot Club (Bellfruit) (Scorpion 4) (set 2)", MACHINE_FLAGS, layout_bfm_sc4 )
// PR1036 CLUB COP THE LOT COP THE LOT CLUB PR1036 CLOT SOUNDS11 COP THE LOT
// shows nothing, but alarms, do these go with the ad4 video roms?
-GAMEL( 200?, sc4ctlclb ,sc4ctlcl, sc4, sc4, sc4_state, sc4, ROT0, "BFM","Cop The Lot Club (Bellfruit) (Scorpion 4) (set 3)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4ctlclc ,sc4ctlcl, sc4, sc4, sc4_state, sc4, ROT0, "BFM","Cop The Lot Club (Bellfruit) (Scorpion 4) (set 4)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4ctlclb ,sc4ctlcl, sc4, sc4, sc4_state, sc4, ROT0, "BFM","Cop The Lot Club (Bellfruit) (Scorpion 4) (set 3)", MACHINE_FLAGS, layout_bfm_sc4 )
+GAMEL( 200?, sc4ctlclc ,sc4ctlcl, sc4, sc4, sc4_state, sc4, ROT0, "BFM","Cop The Lot Club (Bellfruit) (Scorpion 4) (set 4)", MACHINE_FLAGS, layout_bfm_sc4 )
// not sure this is SC4, it crashes MAME and the addresses it accesses look strange
-GAMEL( 200?, sc4milro ,0, sc4, sc4, sc4_state, sc4, ROT0, "BFM","Millionaires Row (Scorpion 4?)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4milro ,0, sc4, sc4, sc4_state, sc4, ROT0, "BFM","Millionaires Row (Scorpion 4?)", MACHINE_FLAGS, layout_bfm_sc4 )
diff --git a/src/mame/drivers/bfmsys85.cpp b/src/mame/drivers/bfmsys85.cpp
index c41647ab58a..c0517ae2742 100644
--- a/src/mame/drivers/bfmsys85.cpp
+++ b/src/mame/drivers/bfmsys85.cpp
@@ -754,99 +754,102 @@ DRIVER_INIT_MEMBER(bfmsys85_state,nodecode)
b85_find_project_string();
}
+#define MACHINE_FLAGS MACHINE_NOT_WORKING|MACHINE_SUPPORTS_SAVE|MACHINE_REQUIRES_ARTWORK
+#define MACHINE_FLAGS_MECHANICAL MACHINE_FLAGS|MACHINE_MECHANICAL
+
// PROJECT NUMBER 5539 2P CASH EXPLOSION GAME No 39-350-190 - 29-MAR-1989 11:45:25
-GAME( 1989, b85cexpl , 0 , bfmsys85, bfmsys85, bfmsys85_state, decode , 0, "BFM", "Cash Explosion (System 85)", MACHINE_NOT_WORKING|MACHINE_SUPPORTS_SAVE|MACHINE_REQUIRES_ARTWORK )
+GAME( 1989, b85cexpl , 0 , bfmsys85, bfmsys85, bfmsys85_state, decode , 0, "BFM", "Cash Explosion (System 85)", MACHINE_FLAGS )
// PROJECT NUMBER 5150 THE ROYAL 10P PLAY GAME No 39-350-128 - 21-JAN-1988 12:42:53
-GAME( 1988, b85royal , 0 , bfmsys85, bfmsys85, bfmsys85_state, decode , 0, "BFM", "The Royal (System 85)", MACHINE_NOT_WORKING|MACHINE_SUPPORTS_SAVE|MACHINE_REQUIRES_ARTWORK ) // 'The Royal' ?? hack of the Ritz or Big Deal Club?
+GAME( 1988, b85royal , 0 , bfmsys85, bfmsys85, bfmsys85_state, decode , 0, "BFM", "The Royal (System 85)", MACHINE_FLAGS ) // 'The Royal' ?? hack of the Ritz or Big Deal Club?
// PROJECT NUMBER 4957 BIGDEAL 5P PLAY GAME No 39-350-055 - 9-MAR-1987 11:12:05
-GAME( 1987, b85bdclb , 0 , bfmsys85, bfmsys85, bfmsys85_state, decode , 0, "BFM", "Big Deal Club (System 85, set 1)", MACHINE_NOT_WORKING|MACHINE_SUPPORTS_SAVE|MACHINE_REQUIRES_ARTWORK )
+GAME( 1987, b85bdclb , 0 , bfmsys85, bfmsys85, bfmsys85_state, decode , 0, "BFM", "Big Deal Club (System 85, set 1)", MACHINE_FLAGS )
// PROJECT NUMBER 5035 BIGDEAL 5P PLAY GAME No 39-350-045 - 25-FEB-1987 14:19:41
-GAME( 1987, b85bdclba , b85bdclb , bfmsys85, bfmsys85, bfmsys85_state, decode , 0, "BFM", "Big Deal Club (System 85, set 2)", MACHINE_NOT_WORKING|MACHINE_SUPPORTS_SAVE|MACHINE_REQUIRES_ARTWORK )
+GAME( 1987, b85bdclba , b85bdclb , bfmsys85, bfmsys85, bfmsys85_state, decode , 0, "BFM", "Big Deal Club (System 85, set 2)", MACHINE_FLAGS )
// PROJECT NUMBER 5034 BIGDEAL 20P PLAY GAME No 39-350-047 - 25-FEB-1987 12:44:21
-GAME( 1987, b85bdclbb , b85bdclb , bfmsys85, bfmsys85, bfmsys85_state, decode , 0, "BFM", "Big Deal Club (System 85, set 3)", MACHINE_NOT_WORKING|MACHINE_SUPPORTS_SAVE|MACHINE_REQUIRES_ARTWORK )
+GAME( 1987, b85bdclbb , b85bdclb , bfmsys85, bfmsys85, bfmsys85_state, decode , 0, "BFM", "Big Deal Club (System 85, set 3)", MACHINE_FLAGS )
// PROJECT NUMBER 5145 CASH BLITZ GAME No 39-351-091 - 13-AUG-1987 11:25:29
-GAME( 1987, b85cblit , 0 , bfmsys85, bfmsys85, bfmsys85_state, decode , 0, "BFM", "Cash Blitz (System 85, set 1)", MACHINE_NOT_WORKING|MACHINE_SUPPORTS_SAVE|MACHINE_REQUIRES_ARTWORK )
+GAME( 1987, b85cblit , 0 , bfmsys85, bfmsys85, bfmsys85_state, decode , 0, "BFM", "Cash Blitz (System 85, set 1)", MACHINE_FLAGS )
// PROJECT NUMBER 5145 CASH BLITZ GAME No 39-350-091 - 13-AUG-1987 11:08:54
-GAME( 1987, b85cblita , b85cblit , bfmsys85, bfmsys85, bfmsys85_state, decode , 0, "BFM", "Cash Blitz (System 85, set 2)", MACHINE_NOT_WORKING|MACHINE_SUPPORTS_SAVE|MACHINE_REQUIRES_ARTWORK )
+GAME( 1987, b85cblita , b85cblit , bfmsys85, bfmsys85, bfmsys85_state, decode , 0, "BFM", "Cash Blitz (System 85, set 2)", MACHINE_FLAGS )
// PROJECT NUMBER 5145 CASH BLITZ GAME No 39-350-102 - 3-NOV-1987 16:24:39
-GAME( 1987, b85cblitb , b85cblit , bfmsys85, bfmsys85, bfmsys85_state, decode , 0, "BFM", "Cash Blitz (System 85, set 3)", MACHINE_NOT_WORKING|MACHINE_SUPPORTS_SAVE|MACHINE_REQUIRES_ARTWORK )
+GAME( 1987, b85cblitb , b85cblit , bfmsys85, bfmsys85, bfmsys85_state, decode , 0, "BFM", "Cash Blitz (System 85, set 3)", MACHINE_FLAGS )
// PROJECT NUMBER 5495 CLUB PREMIER 5P,10P AND 20P PLAY GAME No 39-350-187 - 28-FEB-1989 15:26:47
-GAME( 1989, b85clbpm , 0 , bfmsys85, bfmsys85, bfmsys85_state, decode , 0, "BFM", "Club Premier (System 85)", MACHINE_NOT_WORKING|MACHINE_SUPPORTS_SAVE|MACHINE_REQUIRES_ARTWORK )
+GAME( 1989, b85clbpm , 0 , bfmsys85, bfmsys85, bfmsys85_state, decode , 0, "BFM", "Club Premier (System 85)", MACHINE_FLAGS )
// PROJECT NUMBER 5116 HI LO SILVER DX GAME No 39-350-049 - 27-FEB-1987 10:49:08
-GAME( 1987, b85hilo , 0 , bfmsys85, bfmsys85, bfmsys85_state, decode , 0, "BFM", "Hi Lo Silver (System 85, set 1)", MACHINE_NOT_WORKING|MACHINE_SUPPORTS_SAVE|MACHINE_REQUIRES_ARTWORK )
+GAME( 1987, b85hilo , 0 , bfmsys85, bfmsys85, bfmsys85_state, decode , 0, "BFM", "Hi Lo Silver (System 85, set 1)", MACHINE_FLAGS )
// PROJECT NUMBER 5407 HI LO SILVER 2P GAME No 39-350-142 - 12-OCT-1988 09:39:26
-GAME( 1988, b85hiloa , b85hilo , bfmsys85, bfmsys85, bfmsys85_state, decode , 0, "BFM", "Hi Lo Silver (System 85, set 2)", MACHINE_NOT_WORKING|MACHINE_SUPPORTS_SAVE|MACHINE_REQUIRES_ARTWORK )
+GAME( 1988, b85hiloa , b85hilo , bfmsys85, bfmsys85, bfmsys85_state, decode , 0, "BFM", "Hi Lo Silver (System 85, set 2)", MACHINE_FLAGS )
// PROJECT NUMBER 5104 THE RITZ 10P PLAY GAME No 39-350-084 - 28-AUG-1987 08:44:30
-GAME( 1987, b85ritzd , b85ritz , bfmsys85, bfmsys85, bfmsys85_state, decode , 0, "BFM", "The Ritz (System 85, set 5)", MACHINE_NOT_WORKING|MACHINE_SUPPORTS_SAVE|MACHINE_REQUIRES_ARTWORK )
+GAME( 1987, b85ritzd , b85ritz , bfmsys85, bfmsys85, bfmsys85_state, decode , 0, "BFM", "The Ritz (System 85, set 5)", MACHINE_FLAGS )
// PROJECT NUMBER 5184 THE RITZ 5P PLAY GAME No 39-350-137 - 25-FEB-1988 11:07:18
-GAME( 1988, b85ritz , 0 , bfmsys85, bfmsys85, bfmsys85_state, decode , 0, "BFM", "The Ritz (System 85, set 1)", MACHINE_NOT_WORKING|MACHINE_SUPPORTS_SAVE|MACHINE_REQUIRES_ARTWORK ) // alt version of Big Deal Club?
+GAME( 1988, b85ritz , 0 , bfmsys85, bfmsys85, bfmsys85_state, decode , 0, "BFM", "The Ritz (System 85, set 1)", MACHINE_FLAGS ) // alt version of Big Deal Club?
// PROJECT NUMBER 5183 THE RITZ 20P PLAY GAME No 39-350-136 - 25-FEB-1988 11:25:52
-GAME( 1988, b85ritzb , b85ritz , bfmsys85, bfmsys85, bfmsys85_state, decode , 0, "BFM", "The Ritz (System 85, set 3)", MACHINE_NOT_WORKING|MACHINE_SUPPORTS_SAVE|MACHINE_REQUIRES_ARTWORK )
+GAME( 1988, b85ritzb , b85ritz , bfmsys85, bfmsys85, bfmsys85_state, decode , 0, "BFM", "The Ritz (System 85, set 3)", MACHINE_FLAGS )
// PROJECT NUMBER 5183 THE RITZ 20P PLAY GAME No 39-350-138 - 16-MAR-1988 10:46:30
-GAME( 1988, b85ritza , b85ritz , bfmsys85, bfmsys85, bfmsys85_state, decode , 0, "BFM", "The Ritz (System 85, set 2)", MACHINE_NOT_WORKING|MACHINE_SUPPORTS_SAVE|MACHINE_REQUIRES_ARTWORK )
+GAME( 1988, b85ritza , b85ritz , bfmsys85, bfmsys85, bfmsys85_state, decode , 0, "BFM", "The Ritz (System 85, set 2)", MACHINE_FLAGS )
// PROJECT NUMBER 5104 THE RITZ 10P PLAY GAME No 39-350-139 - 16-MAR-1988 11:04:27
-GAME( 1988, b85ritzc , b85ritz , bfmsys85, bfmsys85, bfmsys85_state, decode , 0, "BFM", "The Ritz (System 85, set 4)", MACHINE_NOT_WORKING|MACHINE_SUPPORTS_SAVE|MACHINE_REQUIRES_ARTWORK )
+GAME( 1988, b85ritzc , b85ritz , bfmsys85, bfmsys85, bfmsys85_state, decode , 0, "BFM", "The Ritz (System 85, set 4)", MACHINE_FLAGS )
// PROJECT NUMBER 5137 V2 10P PLAY GAME No 39-350-115 - 9-DEC-1987 12:39:16
-GAME( 1987, b85jpclb , 0 , bfmsys85, bfmsys85, bfmsys85_state, decode , 0, "BFM", "Jackpot Club (System 85, set 1)", MACHINE_NOT_WORKING|MACHINE_SUPPORTS_SAVE|MACHINE_REQUIRES_ARTWORK )
+GAME( 1987, b85jpclb , 0 , bfmsys85, bfmsys85, bfmsys85_state, decode , 0, "BFM", "Jackpot Club (System 85, set 1)", MACHINE_FLAGS )
// PROJECT NUMBER 5357 V2 20P PLAY GAME No 39-350-112 - 7-DEC-1987 14:32:31
-GAME( 1987, b85jpclba , b85jpclb , bfmsys85, bfmsys85, bfmsys85_state, decode , 0, "BFM", "Jackpot Club (System 85, set 2)", MACHINE_NOT_WORKING|MACHINE_SUPPORTS_SAVE|MACHINE_REQUIRES_ARTWORK )
+GAME( 1987, b85jpclba , b85jpclb , bfmsys85, bfmsys85, bfmsys85_state, decode , 0, "BFM", "Jackpot Club (System 85, set 2)", MACHINE_FLAGS )
// PROJECT NUMBER 5137 V2 10P PLAY GAME No 39-350-141 - 16-MAR-1988 11:46:48
-GAME( 1988, b85jpclbb , b85jpclb , bfmsys85, bfmsys85, bfmsys85_state, decode , 0, "BFM", "Jackpot Club (System 85, set 3)", MACHINE_NOT_WORKING|MACHINE_SUPPORTS_SAVE|MACHINE_REQUIRES_ARTWORK )
+GAME( 1988, b85jpclbb , b85jpclb , bfmsys85, bfmsys85, bfmsys85_state, decode , 0, "BFM", "Jackpot Club (System 85, set 3)", MACHINE_FLAGS )
// PROJECT NUMBER 5357 V2 20P PLAY GAME No 39-350-140 - 16-MAR-1988 11:21:43
-GAME( 1988, b85jpclbc , b85jpclb , bfmsys85, bfmsys85, bfmsys85_state, decode , 0, "BFM", "Jackpot Club (System 85, set 4)", MACHINE_NOT_WORKING|MACHINE_SUPPORTS_SAVE|MACHINE_REQUIRES_ARTWORK )
+GAME( 1988, b85jpclbc , b85jpclb , bfmsys85, bfmsys85, bfmsys85_state, decode , 0, "BFM", "Jackpot Club (System 85, set 4)", MACHINE_FLAGS )
// PROJECT NUMBER 5368 SUPER NUDGE GAMBLER #4.00 GAME No 39-340-230 - 27-JAN-1988 14:20:43
-GAME( 1988, b85sngam , 0 , bfmsys85, bfmsys85, bfmsys85_state, decode , 0, "BFM", "Super Nudge Gambler (System 85)", MACHINE_NOT_WORKING|MACHINE_SUPPORTS_SAVE|MACHINE_REQUIRES_ARTWORK )
+GAME( 1988, b85sngam , 0 , bfmsys85, bfmsys85, bfmsys85_state, decode , 0, "BFM", "Super Nudge Gambler (System 85)", MACHINE_FLAGS )
// PROJECT NUMBER 4766 10P KING OF CLUBS GAME No 39-340-026 - 25-NOV-1985 08:49:11
-GAME( 199?, b85koc , 0 , bfmsys85, bfmsys85, bfmsys85_state, decode , 0, "BFM", "King of Clubs (Bellfruit) (System 85, set 1)", MACHINE_SUPPORTS_SAVE|MACHINE_REQUIRES_ARTWORK|MACHINE_NOT_WORKING|MACHINE_MECHANICAL) // this has valid strings in it BEFORE the bfm decode, but decodes to valid code, does it use some funky mapping, or did they just fill unused space with valid looking data?
+GAME( 199?, b85koc , 0 , bfmsys85, bfmsys85, bfmsys85_state, decode , 0, "BFM", "King of Clubs (Bellfruit) (System 85, set 1)", MACHINE_FLAGS_MECHANICAL) // this has valid strings in it BEFORE the bfm decode, but decodes to valid code, does it use some funky mapping, or did they just fill unused space with valid looking data?
// PROJECT NUMBER 4766 10P KING OF CLUBS GAME No 39340002 - 16-AUG-1985 15:53:13
-GAME( 199?, b85koca , b85koc , bfmsys85, bfmsys85, bfmsys85_state, decode , 0, "BFM", "King of Clubs (Bellfruit) (System 85, set 2)", MACHINE_SUPPORTS_SAVE|MACHINE_REQUIRES_ARTWORK|MACHINE_NOT_WORKING|MACHINE_MECHANICAL) // this has valid strings in it BEFORE the bfm decode, but decodes to valid code, does it use some funky mapping, or did they just fill unused space with valid looking data?
+GAME( 199?, b85koca , b85koc , bfmsys85, bfmsys85, bfmsys85_state, decode , 0, "BFM", "King of Clubs (Bellfruit) (System 85, set 2)", MACHINE_FLAGS_MECHANICAL) // this has valid strings in it BEFORE the bfm decode, but decodes to valid code, does it use some funky mapping, or did they just fill unused space with valid looking data?
// PROJECT NUMBER 5425 BAR SEVEN ARCADE GAME No 39-341-236 - 11-APR-1988 11:30:33
-GAME( 199?, b85cb7p , 0 , bfmsys85, bfmsys85, bfmsys85_state, decode , 0, "BFM", "Bar Sevens (Bellfruit) (Protocol) (System 85)", MACHINE_NOT_WORKING|MACHINE_SUPPORTS_SAVE|MACHINE_REQUIRES_ARTWORK) // seems to work better here than in sc1
+GAME( 199?, b85cb7p , 0 , bfmsys85, bfmsys85, bfmsys85_state, decode , 0, "BFM", "Bar Sevens (Bellfruit) (Protocol) (System 85)", MACHINE_FLAGS) // seems to work better here than in sc1
// PROJECT NUMBER 5596 DISCOVERY 85 - 06-APR-1990 08:57:39
-GAME( 199?, b85disc , 0 , bfmsys85, bfmsys85, bfmsys85_state, decode , 0, "BFM/ELAM", "Discovey (Dutch) (Bellfruit) (System 85)", MACHINE_SUPPORTS_SAVE|MACHINE_REQUIRES_ARTWORK|MACHINE_NOT_WORKING|MACHINE_MECHANICAL ) // GAME No 39-350-251
+GAME( 199?, b85disc , 0 , bfmsys85, bfmsys85, bfmsys85_state, decode , 0, "BFM/ELAM", "Discovey (Dutch) (Bellfruit) (System 85)", MACHINE_FLAGS_MECHANICAL ) // GAME No 39-350-251
// PROJECT NUMBER 5452 DUTCH SUPER CARDS GAME No 39-340-271 - 04-JAN-1989 14:39:00
-GAME( 1989, b85scard , 0 , bfmsys85, bfmsys85, bfmsys85_state, nodecode, 0, "BFM/ELAM", "Supercards (Dutch, Game Card 39-340-271?) (System 85)", MACHINE_NOT_WORKING|MACHINE_SUPPORTS_SAVE|MACHINE_REQUIRES_ARTWORK )
+GAME( 1989, b85scard , 0 , bfmsys85, bfmsys85, bfmsys85_state, nodecode, 0, "BFM/ELAM", "Supercards (Dutch, Game Card 39-340-271?) (System 85)", MACHINE_FLAGS )
// PROJECT NUMBER 4840 DUTCH JOKERS WILD PO GAME No 39-340-345 - 31-JUL-1992 20:01:55
-GAME( 1992, b85jkwld , 0 , bfmsys85, bfmsys85, bfmsys85_state, nodecode, 0, "BFM/ELAM", "Jokers Wild (Dutch) (System 85)", MACHINE_NOT_WORKING|MACHINE_SUPPORTS_SAVE|MACHINE_REQUIRES_ARTWORK )
+GAME( 1992, b85jkwld , 0 , bfmsys85, bfmsys85, bfmsys85_state, nodecode, 0, "BFM/ELAM", "Jokers Wild (Dutch) (System 85)", MACHINE_FLAGS )
// PROJECT NUMBER 4823 LUCKY CARDS 200 PO GAME No 39-332-217 - 2-DEC-1986 15:57:19
-GAME( 1986, b85lucky , 0 , bfmsys85, bfmsys85, bfmsys85_state, nodecode, 0, "BFM/ELAM", "Lucky Cards (Dutch) (System 85)", MACHINE_NOT_WORKING|MACHINE_SUPPORTS_SAVE|MACHINE_REQUIRES_ARTWORK )
+GAME( 1986, b85lucky , 0 , bfmsys85, bfmsys85, bfmsys85_state, nodecode, 0, "BFM/ELAM", "Lucky Cards (Dutch) (System 85)", MACHINE_FLAGS )
// PROJECT NUMBER 4902 DUTCH LUCKY DICE PO GAME No 39-340-346 - 03-AUG-1992 16:30:00
-GAME( 1992, b85luckd , 0 , bfmsys85, bfmsys85, bfmsys85_state, decode , 0, "BFM/ELAM", "Lucky Dice (Dutch) (System 85)", MACHINE_NOT_WORKING|MACHINE_SUPPORTS_SAVE|MACHINE_REQUIRES_ARTWORK )
+GAME( 1992, b85luckd , 0 , bfmsys85, bfmsys85, bfmsys85_state, decode , 0, "BFM/ELAM", "Lucky Dice (Dutch) (System 85)", MACHINE_FLAGS )
// PROJECT NUMBER 4758 DUTCH C+R 200 PO GAME No 39-332-215 - 2-DEC-1986 15:50:43
-GAME( 199?, b85cops , 0 , bfmsys85, bfmsys85, bfmsys85_state, nodecode, 0, "BFM/ELAM", "Cops 'n' Robbers (Dutch) (Bellfruit) (System 85)", MACHINE_SUPPORTS_SAVE|MACHINE_REQUIRES_ARTWORK|MACHINE_NOT_WORKING|MACHINE_MECHANICAL)
+GAME( 199?, b85cops , 0 , bfmsys85, bfmsys85, bfmsys85_state, nodecode, 0, "BFM/ELAM", "Cops 'n' Robbers (Dutch) (Bellfruit) (System 85)", MACHINE_FLAGS_MECHANICAL)
// this might be system 85 or sc1, the rom config is 0x2000 + 0x8000, and it writes to the AY address we map on S85 for the alarm
// however it still gives the same error message in both, has offset alpha text in s85 and appears to attempt to communicate with something we don't map, maybe it's some video based board / game with bits missing?
// PROJECT NUMBER 5464 V3 10P/20P PLAY GAME No 39-350-173 - 24-JAN-1989 10:48:53
-GAME( 1989, b85dbldl , 0 , bfmsys85, bfmsys85, bfmsys85_state, decode , 0, "BFM", "Double Dealer (System 85, set 1)", MACHINE_NOT_WORKING|MACHINE_SUPPORTS_SAVE|MACHINE_REQUIRES_ARTWORK )
+GAME( 1989, b85dbldl , 0 , bfmsys85, bfmsys85, bfmsys85_state, decode , 0, "BFM", "Double Dealer (System 85, set 1)", MACHINE_FLAGS )
// PROJECT NUMBER 5464 V3 10P/20P PLAY GAME No 39-350-181 - 02-FEB-1989 15:19:20
-GAME( 1985, b85dbldla , b85dbldl , bfmsys85, bfmsys85, bfmsys85_state, decode , 0, "BFM", "Double Dealer (System 85, set 2)", MACHINE_NOT_WORKING|MACHINE_SUPPORTS_SAVE|MACHINE_REQUIRES_ARTWORK )
+GAME( 1985, b85dbldla , b85dbldl , bfmsys85, bfmsys85, bfmsys85_state, decode , 0, "BFM", "Double Dealer (System 85, set 2)", MACHINE_FLAGS )
// PROJECT NUMBER 5464 V3 10P/20P PLAY GAME No 39-350-166 - 17-OCT-1988 14:56:38
-GAME( 199?, b85dbldlb , b85dbldl , bfmsys85, bfmsys85, bfmsys85_state, decode , 0, "BFM", "Double Dealer (System 85, set 3)", MACHINE_NOT_WORKING|MACHINE_SUPPORTS_SAVE|MACHINE_REQUIRES_ARTWORK ) // found in a sc4 potp set ...
+GAME( 199?, b85dbldlb , b85dbldl , bfmsys85, bfmsys85, bfmsys85_state, decode , 0, "BFM", "Double Dealer (System 85, set 3)", MACHINE_FLAGS ) // found in a sc4 potp set ...
// appears to be the same as above with a different title
// PROJECT NUMBER 5165 V1 10P PLAY GAME No 39-350-179 - 02-FEB-1989 14:42:57
-GAME( 199?, b85potp , 0 , bfmsys85, bfmsys85, bfmsys85_state, decode , 0, "BFM", "Pick Of The Pack (System 85)", MACHINE_NOT_WORKING|MACHINE_SUPPORTS_SAVE|MACHINE_REQUIRES_ARTWORK ) // found in a sc4 potp set ...
+GAME( 199?, b85potp , 0 , bfmsys85, bfmsys85, bfmsys85_state, decode , 0, "BFM", "Pick Of The Pack (System 85)", MACHINE_FLAGS ) // found in a sc4 potp set ...
diff --git a/src/mame/drivers/bigbord2.cpp b/src/mame/drivers/bigbord2.cpp
index 8bc7191eb28..013e53c92e5 100644
--- a/src/mame/drivers/bigbord2.cpp
+++ b/src/mame/drivers/bigbord2.cpp
@@ -471,7 +471,6 @@ void bigbord2_state::machine_reset()
for (i = 0; i < 8; i++)
m_c8[i] = 0;
m_beeper->set_state(0);
- m_beeper->set_frequency(950); // actual frequency is unknown
m_bankr->set_entry(0);
m_bankv->set_entry(0);
m_banka->set_entry(0);
@@ -595,7 +594,7 @@ static MACHINE_CONFIG_START( bigbord2, bigbord2_state )
/* sound hardware */
MCFG_SPEAKER_STANDARD_MONO("mono")
- MCFG_SOUND_ADD("beeper", BEEP, 0)
+ MCFG_SOUND_ADD("beeper", BEEP, 950) // actual frequency is unknown
MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.00)
MACHINE_CONFIG_END
diff --git a/src/mame/drivers/bigevglf.cpp b/src/mame/drivers/bigevglf.cpp
index c0d18524ba2..a5b6fe662b6 100644
--- a/src/mame/drivers/bigevglf.cpp
+++ b/src/mame/drivers/bigevglf.cpp
@@ -1,4 +1,4 @@
-// license:???
+// license:GPL-2.0+
// copyright-holders:Jarek Burczynski, Tomasz Slanina
/***************************************************************************
Big Event Golf (c) Taito 1986
diff --git a/src/mame/drivers/bmjr.cpp b/src/mame/drivers/bmjr.cpp
index 9778a751434..cf198f4e7a5 100644
--- a/src/mame/drivers/bmjr.cpp
+++ b/src/mame/drivers/bmjr.cpp
@@ -325,7 +325,6 @@ GFXDECODE_END
void bmjr_state::machine_start()
{
- m_beep->set_frequency(1200); //guesswork
m_beep->set_state(0);
}
@@ -356,7 +355,7 @@ static MACHINE_CONFIG_START( bmjr, bmjr_state )
/* Audio */
MCFG_SPEAKER_STANDARD_MONO("mono")
- MCFG_SOUND_ADD("beeper", BEEP, 0)
+ MCFG_SOUND_ADD("beeper", BEEP, 1200) // guesswork
MCFG_SOUND_ROUTE(ALL_OUTPUTS,"mono",0.50)
MCFG_SOUND_WAVE_ADD(WAVE_TAG, "cassette")
MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.25)
diff --git a/src/mame/drivers/bnstars.cpp b/src/mame/drivers/bnstars.cpp
index 7172817b195..a8675045a6d 100644
--- a/src/mame/drivers/bnstars.cpp
+++ b/src/mame/drivers/bnstars.cpp
@@ -546,7 +546,7 @@ UINT32 bnstars_state::screen_update_bnstars_right(screen_device &screen, bitmap_
static INPUT_PORTS_START( bnstars )
PORT_START("P1")
- PORT_BIT( 0x000000ff, IP_ACTIVE_HIGH, IPT_SPECIAL ) PORT_CUSTOM_MEMBER(DEVICE_SELF, bnstars_state, mahjong_ctrl_r, (void *)nullptr)
+ PORT_BIT( 0x000000ff, IP_ACTIVE_HIGH, IPT_SPECIAL ) PORT_CUSTOM_MEMBER(DEVICE_SELF, bnstars_state, mahjong_ctrl_r, (void *)0)
PORT_BIT( 0x0000ff00, IP_ACTIVE_LOW, IPT_UNKNOWN )
PORT_BIT( 0x00010000, IP_ACTIVE_LOW, IPT_COIN1 )
PORT_BIT( 0x00020000, IP_ACTIVE_LOW, IPT_UNKNOWN )
@@ -708,7 +708,7 @@ GFXDECODE_END
CUSTOM_INPUT_MEMBER(bnstars_state::mahjong_ctrl_r)
{
- required_ioport_array<4> &keys = (param == nullptr) ? m_p1_keys : m_p2_keys;
+ required_ioport_array<4> &keys = (((int)(FPTR)param) == 0) ? m_p1_keys : m_p2_keys;
switch (m_bnstars1_mahjong_select & 0x2080)
{
diff --git a/src/mame/drivers/br8641.cpp b/src/mame/drivers/br8641.cpp
index df76c9ee91b..ce8e204e4ee 100644
--- a/src/mame/drivers/br8641.cpp
+++ b/src/mame/drivers/br8641.cpp
@@ -46,7 +46,6 @@ public:
DECLARE_READ8_MEMBER(port08_r);
DECLARE_WRITE8_MEMBER(port08_w);
DECLARE_WRITE8_MEMBER(port09_w);
- DECLARE_MACHINE_RESET(br8641);
private:
UINT8 m_port08;
@@ -142,11 +141,6 @@ WRITE8_MEMBER( brandt8641_state::port09_w )
m_port09 = data ^ 0xff;
}
-MACHINE_RESET_MEMBER( brandt8641_state, br8641 )
-{
- m_beep->set_frequency(2000);
-}
-
static const z80_daisy_config daisy_chain_intf[] =
{
{ "pio1" },
@@ -165,11 +159,9 @@ static MACHINE_CONFIG_START( brandt8641, brandt8641_state )
MCFG_CPU_IO_MAP(brandt8641_io)
MCFG_CPU_CONFIG(daisy_chain_intf)
- MCFG_MACHINE_RESET_OVERRIDE(brandt8641_state, br8641)
-
/* sound hardware */
MCFG_SPEAKER_STANDARD_MONO("mono")
- MCFG_SOUND_ADD("beeper", BEEP, 0)
+ MCFG_SOUND_ADD("beeper", BEEP, 2000)
MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.50)
// Z80APIO U9
diff --git a/src/mame/drivers/bw12.cpp b/src/mame/drivers/bw12.cpp
index 314fda1356e..fb9e1ce66c2 100644
--- a/src/mame/drivers/bw12.cpp
+++ b/src/mame/drivers/bw12.cpp
@@ -646,6 +646,9 @@ static MACHINE_CONFIG_DERIVED( bw14, common )
MCFG_FLOPPY_DRIVE_ADD(UPD765_TAG ":1", bw14_floppies, "525dd", bw12_state::bw14_floppy_formats)
MCFG_FLOPPY_DRIVE_ADD(UPD765_TAG ":2", bw14_floppies, "525dd", bw12_state::bw14_floppy_formats)
+ // software lists
+ MCFG_SOFTWARE_LIST_ADD("flop_list", "bw14")
+
/* internal ram */
MCFG_RAM_ADD(RAM_TAG)
MCFG_RAM_DEFAULT_SIZE("128K")
diff --git a/src/mame/drivers/byvid.cpp b/src/mame/drivers/byvid.cpp
index bd1b267a62d..939c7dbed81 100644
--- a/src/mame/drivers/byvid.cpp
+++ b/src/mame/drivers/byvid.cpp
@@ -559,7 +559,7 @@ READ8_MEMBER( by133_state::m6803_port2_r )
WRITE8_MEMBER( by133_state::m6803_port2_w )
{
//m_u7_b = data >> 1;
- m_beep->set_frequency(600);
+ m_beep->set_clock(600);
m_beep->set_state(BIT(data, 0));
}
@@ -581,7 +581,7 @@ WRITE_LINE_MEMBER( by133_state::u11_ca2_w )
WRITE_LINE_MEMBER( by133_state::u7_cb2_w )
{
// red led
- m_beep->set_frequency(950);
+ m_beep->set_clock(950);
m_beep->set_state(state);
}
@@ -796,7 +796,7 @@ static MACHINE_CONFIG_START( babypac, by133_state )
MCFG_DAC_ADD("dac")
MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.50)
MCFG_SPEAKER_STANDARD_MONO("beee")
- MCFG_SOUND_ADD("beeper", BEEP, 0)
+ MCFG_SOUND_ADD("beeper", BEEP, 600)
MCFG_SOUND_ROUTE(ALL_OUTPUTS, "beee", 0.10)
MACHINE_CONFIG_END
diff --git a/src/mame/drivers/casloopy.cpp b/src/mame/drivers/casloopy.cpp
index c3639d185d5..d01b81163a2 100644
--- a/src/mame/drivers/casloopy.cpp
+++ b/src/mame/drivers/casloopy.cpp
@@ -320,8 +320,8 @@ READ16_MEMBER(casloopy_state::vregs_r)
WRITE16_MEMBER(casloopy_state::vregs_w)
{
- if(offset != 6/2)
- printf("%08x %08x\n",offset*2,data);
+// if(offset != 6/2)
+// printf("%08x %08x\n",offset*2,data);
}
READ16_MEMBER(casloopy_state::pal_r)
@@ -422,10 +422,10 @@ static ADDRESS_MAP_START( casloopy_map, AS_PROGRAM, 32, casloopy_state )
AM_RANGE(0x0405b000, 0x0405b00f) AM_RAM AM_SHARE("vregs") // RGB555 brightness control plus scrolling
// AM_RANGE(0x05ffff00, 0x05ffffff) AM_READWRITE16(sh7021_r, sh7021_w, 0xffffffff)
// AM_RANGE(0x05ffff00, 0x05ffffff) - SH7021 internal i/o
- AM_RANGE(0x06000000, 0x061fffff) AM_READ(cart_r)
+ AM_RANGE(0x06000000, 0x062fffff) AM_READ(cart_r)
AM_RANGE(0x07000000, 0x070003ff) AM_RAM AM_SHARE("oram")// on-chip RAM, actually at 0xf000000 (1 kb)
AM_RANGE(0x09000000, 0x0907ffff) AM_RAM AM_SHARE("wram")
- AM_RANGE(0x0e000000, 0x0e1fffff) AM_READ(cart_r)
+ AM_RANGE(0x0e000000, 0x0e2fffff) AM_READ(cart_r)
AM_RANGE(0x0f000000, 0x0f0003ff) AM_RAM AM_SHARE("oram")
ADDRESS_MAP_END
@@ -479,7 +479,7 @@ DEVICE_IMAGE_LOAD_MEMBER( casloopy_state, loopy_cart )
UINT32 size = m_cart->common_get_size("rom");
UINT8 *SRC, *DST;
dynamic_buffer temp;
- temp.resize(0x200000);
+ temp.resize(size);
m_cart->rom_alloc(size, GENERIC_ROM32_WIDTH, ENDIANNESS_LITTLE);
@@ -488,7 +488,7 @@ DEVICE_IMAGE_LOAD_MEMBER( casloopy_state, loopy_cart )
m_cart->common_load_rom(&temp[0], size, "rom");
// fix endianness
- for (int i = 0; i < 0x200000; i += 4)
+ for (int i = 0; i < size; i += 4)
{
UINT8 tempa = SRC[i + 0];
UINT8 tempb = SRC[i + 1];
diff --git a/src/mame/drivers/cb2001.cpp b/src/mame/drivers/cb2001.cpp
index 8690bf0be8f..10fc8bb527a 100644
--- a/src/mame/drivers/cb2001.cpp
+++ b/src/mame/drivers/cb2001.cpp
@@ -860,7 +860,7 @@ ROM_START( scherrym )
ROM_LOAD16_WORD( "f11.bin", 0x000000, 0x40000, CRC(8967f58d) SHA1(eb01a16b7d108f5fbe5de8f611b4f77869aedbf1) )
ROM_REGION( 0x080000, "gfx", ROMREGION_ERASEFF )
-// ROM_LOAD( "12a.bin", 0x000000, 0x80000,NO_DUMP ) // missing on PCB - 2 PCBs have been found this way, it probably uploads the GFX.
+ ROM_LOAD( "gfx.12c", 0x000000, 0x80000,NO_DUMP ) // this board uses an unmarked MASK rom at 12c, 12a is unpopulated. Size unknown.
ROM_REGION( 0x400, "proms", 0 )
ROM_LOAD( "n82s135-1.bin", 0x000, 0x100, CRC(66ed363f) SHA1(65bd37842c441c2e712844b07c0cfe37ef16d0ef) )
diff --git a/src/mame/drivers/cc40.cpp b/src/mame/drivers/cc40.cpp
index bd65fc2fc78..d36d5dce934 100644
--- a/src/mame/drivers/cc40.cpp
+++ b/src/mame/drivers/cc40.cpp
@@ -402,7 +402,7 @@ INPUT_CHANGED_MEMBER(cc40_state::sysram_size_changed)
static INPUT_PORTS_START( cc40 )
PORT_START("RAMSIZE")
- PORT_CONFNAME( 0x07, 0x01, "RAM Chip 1") PORT_CHANGED_MEMBER(DEVICE_SELF, cc40_state, sysram_size_changed, (void *)nullptr)
+ PORT_CONFNAME( 0x07, 0x01, "RAM Chip 1") PORT_CHANGED_MEMBER(DEVICE_SELF, cc40_state, sysram_size_changed, (void *)0)
PORT_CONFSETTING( 0x00, "None" )
PORT_CONFSETTING( 0x01, "2KB" )
PORT_CONFSETTING( 0x04, "8KB" )
diff --git a/src/mame/drivers/ccastles.cpp b/src/mame/drivers/ccastles.cpp
index acebd7807ec..42bac5ccc00 100644
--- a/src/mame/drivers/ccastles.cpp
+++ b/src/mame/drivers/ccastles.cpp
@@ -1,11 +1,9 @@
-// license:???
-// copyright-holders:Patrick Lawrence, Aaron Giles
+// license:BSD-3-Clause
+// copyright-holders:Aaron Giles
/***************************************************************************
Atari Crystal Castles hardware
- driver by Patrick Lawrence
-
Games supported:
* Crystal Castles (1983) [8 sets]
diff --git a/src/mame/drivers/cd2650.cpp b/src/mame/drivers/cd2650.cpp
index ae40d4deaa3..03cde2f4d6c 100644
--- a/src/mame/drivers/cd2650.cpp
+++ b/src/mame/drivers/cd2650.cpp
@@ -114,7 +114,6 @@ INPUT_PORTS_END
void cd2650_state::machine_reset()
{
m_term_data = 0x80;
- m_beep->set_frequency(950); /* guess */
m_beep->set_state(0);
}
@@ -287,7 +286,7 @@ static MACHINE_CONFIG_START( cd2650, cd2650_state )
MCFG_SPEAKER_STANDARD_MONO("mono")
MCFG_SOUND_WAVE_ADD(WAVE_TAG, "cassette")
MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.25)
- MCFG_SOUND_ADD("beeper", BEEP, 0)
+ MCFG_SOUND_ADD("beeper", BEEP, 950) // guess
MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.50)
/* Devices */
diff --git a/src/mame/drivers/changela.cpp b/src/mame/drivers/changela.cpp
index 3bf89bd85af..377c9ff0e10 100644
--- a/src/mame/drivers/changela.cpp
+++ b/src/mame/drivers/changela.cpp
@@ -1,4 +1,4 @@
-// license:???
+// license:GPL-2.0+
// copyright-holders:Jarek Burczynski, Phil Stroffolino, Tomasz Slanina
/**************************************************************************
Change Lanes
diff --git a/src/mame/drivers/chihiro.cpp b/src/mame/drivers/chihiro.cpp
index 7e7a6e96a23..366ef73c704 100644
--- a/src/mame/drivers/chihiro.cpp
+++ b/src/mame/drivers/chihiro.cpp
@@ -61,6 +61,7 @@ Games on this system include....
|*| 2005 | Sangokushi Taisen | Sega | DVDROM | CDV-10022 | |
|*| 2006 | Sangokushi Taisen 2 Firmware Update | Sega | DVDROM | CDV-10023 | |
|*| 2006 | Sangokushi Taisen 2 | Sega | DVDROM | CDV-10029 | |
+|*| 2007 | Mobile Suit Gundam 0083 Card Builder | Dimps - Banpresto | DVDROM | CDV-10030 | |
|*| 2008 | Sangokushi Taisen 3 | Sega | DVDROM | CDV-10036 | |
|*| 2008 | Sangokushi Taisen 3 (Ver.J) | Sega | DVDROM | CDV-10036J | |
|*| 2008 | Sangokushi Taisen 3 War Begins (Ver.3.59) | Sega | DVDROM | CDV-10041 | |
diff --git a/src/mame/drivers/cobra.cpp b/src/mame/drivers/cobra.cpp
index 840feea61df..8062af06612 100644
--- a/src/mame/drivers/cobra.cpp
+++ b/src/mame/drivers/cobra.cpp
@@ -155,7 +155,8 @@
0x000a4: Viewport height / 2?
0x000ac: Viewport center Y
- 0x00114: High word: framebuffer pitch? Low word: framebuffer pixel size?
+ 0x00114: xxxxxxxx xxxxxxxx -------- -------- Framebuffer pixel read line count
+ -------- -------- xxxxxxxx xxxxxxxx Framebuffer pixel read pixel count
0x00118: xxxxxxxx xxxxxxxx -------- -------- Framebuffer pixel read X pos
-------- -------- xxxxxxxx xxxxxxxx Framebuffer pixel read Y pos
@@ -493,9 +494,16 @@ class cobra_jvs : public jvs_device
public:
cobra_jvs(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock);
+ DECLARE_WRITE_LINE_MEMBER(coin_1_w);
+ DECLARE_WRITE_LINE_MEMBER(coin_2_w);
+
protected:
virtual bool switches(UINT8 *&buf, UINT8 count_players, UINT8 bytes_per_switch) override;
virtual bool coin_counters(UINT8 *&buf, UINT8 count) override;
+ virtual void function_list(UINT8 *&buf) override;
+
+private:
+ int m_coin_counter[2];
};
const device_type COBRA_JVS = &device_creator<cobra_jvs>;
@@ -503,6 +511,35 @@ const device_type COBRA_JVS = &device_creator<cobra_jvs>;
cobra_jvs::cobra_jvs(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock)
: jvs_device(mconfig, COBRA_JVS, "JVS (COBRA)", tag, owner, clock, "cobra_jvs", __FILE__)
{
+ m_coin_counter[0] = 0;
+ m_coin_counter[1] = 0;
+}
+
+WRITE_LINE_MEMBER(cobra_jvs::coin_1_w)
+{
+ if(state)
+ m_coin_counter[0]++;
+}
+
+WRITE_LINE_MEMBER(cobra_jvs::coin_2_w)
+{
+ if(state)
+ m_coin_counter[1]++;
+}
+
+void cobra_jvs::function_list(UINT8 *&buf)
+{
+ // SW input - 2 players, 13 bits
+ *buf++ = 0x01; *buf++ = 2; *buf++ = 13; *buf++ = 0;
+
+ // Coin input - 2 slots
+ *buf++ = 0x02; *buf++ = 2; *buf++ = 0; *buf++ = 0;
+
+ // Analog input - 8 channels
+ *buf++ = 0x03; *buf++ = 8; *buf++ = 16; *buf++ = 0;
+
+ // Driver out - 6 channels
+ *buf++ = 0x12; *buf++ = 6; *buf++ = 0; *buf++ = 0;
}
bool cobra_jvs::switches(UINT8 *&buf, UINT8 count_players, UINT8 bytes_per_switch)
@@ -538,8 +575,10 @@ bool cobra_jvs::coin_counters(UINT8 *&buf, UINT8 count)
if (count > 2)
return false;
- *buf++ = 0x00;
- *buf++ = 0x01;
+ *buf++ = m_coin_counter[0] >> 8; *buf++ = m_coin_counter[0];
+
+ if(count > 1)
+ *buf++ = m_coin_counter[1] >> 8; *buf++ = m_coin_counter[1];
return true;
}
@@ -744,6 +783,7 @@ public:
DECLARE_DRIVER_INIT(racjamdx);
DECLARE_DRIVER_INIT(bujutsu);
DECLARE_DRIVER_INIT(cobra);
+ virtual void machine_start() override;
virtual void machine_reset() override;
virtual void video_start() override;
UINT32 screen_update_cobra(screen_device &screen, bitmap_rgb32 &bitmap, const rectangle &cliprect);
@@ -1592,6 +1632,10 @@ 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)
+ {
+ }
}
m_main_debug_state = 0;
@@ -2084,7 +2128,7 @@ void cobra_renderer::gfx_reset()
UINT32 cobra_renderer::gfx_read_gram(UINT32 address)
{
- if (address & 3)
+ if (!DWORD_ALIGNED(address))
{
printf("gfx_read_gram: %08X, not dword aligned!\n", address);
return 0;
@@ -2142,7 +2186,7 @@ void cobra_renderer::gfx_write_gram(UINT32 address, UINT32 mask, UINT32 data)
}
}
- if (address & 3)
+ if (!DWORD_ALIGNED(address))
{
printf("gfx_write_gram: %08X, %08X, not dword aligned!\n", address, data);
return;
@@ -2249,13 +2293,13 @@ void cobra_renderer::gfx_fifo_exec()
// GFX register select
m_gfx_register_select = w[3];
- printf("GFX: register select %08X\n", m_gfx_register_select);
+ // printf("GFX: register select %08X\n", m_gfx_register_select);
}
else if (w2 == 0x10500018)
{
// register write to the register selected above?
// 64-bit registers, top 32-bits in word 2, low 32-bit in word 3
- printf("GFX: register write %08X: %08X %08X\n", m_gfx_register_select, w[2], w[3]);
+ // printf("GFX: register write %08X: %08X %08X\n", m_gfx_register_select, w[2], w[3]);
gfx_write_reg(((UINT64)(w[2]) << 32) | w[3]);
}
@@ -2600,33 +2644,42 @@ void cobra_renderer::gfx_fifo_exec()
{
// Read a specified pixel position from a pixelbuffer
-// printf("GFX: FB read X: %d, Y: %d\n", (UINT16)(m_gfx_gram[0x118/4] >> 16), (UINT16)(m_gfx_gram[0x118/4]));
+// printf("GFX: FB read X: %d, Y: %d, %08X\n", (UINT16)(m_gfx_gram[0x118/4] >> 16), (UINT16)(m_gfx_gram[0x118/4]), m_gfx_gram[0x114/4]);
int x = (m_gfx_gram[0x118/4] >> 16) & 0xffff;
int y = m_gfx_gram[0x118/4] & 0xffff;
- UINT32 *buffer;
- switch (m_gfx_gram[0x80104/4])
- {
- case 0x800000: buffer = &m_framebuffer->pix32(y); break;
- case 0x200000: buffer = &m_backbuffer->pix32(y); break;
- case 0x0e0000: buffer = &m_overlay->pix32(y); break;
- case 0x000800: buffer = &m_zbuffer->pix32(y); break;
- case 0x000200: buffer = &m_stencil->pix32(y); break;
-
- default:
- {
- fatalerror("gfxfifo_exec: fb read from buffer %08X!\n", m_gfx_gram[0x80100/4]);
- }
- }
+ int pix_count = m_gfx_gram[0x114/4] & 0xffff;
+ int line_count = (m_gfx_gram[0x114/4] >> 16) & 0xffff;
// flush fifo_out so we have fresh data at top
fifo_out->flush();
- fifo_out->push(nullptr, buffer[x+0]);
- fifo_out->push(nullptr, buffer[x+1]);
- fifo_out->push(nullptr, buffer[x+2]);
- fifo_out->push(nullptr, buffer[x+3]);
+ if (pix_count != 4)
+ fatalerror("GFX: fb read line count %d, pix count %d\n", line_count, pix_count);
+
+ for (int i=0; i < line_count; i++)
+ {
+ UINT32 *buffer;
+ switch (m_gfx_gram[0x80104/4])
+ {
+ case 0x800000: buffer = &m_framebuffer->pix32(y+i); break;
+ case 0x200000: buffer = &m_backbuffer->pix32(y+i); break;
+ case 0x0e0000: buffer = &m_overlay->pix32(y+i); break;
+ case 0x000800: buffer = &m_zbuffer->pix32(y+i); break;
+ case 0x000200: buffer = &m_stencil->pix32(y+i); break;
+
+ default:
+ {
+ fatalerror("gfxfifo_exec: fb read from buffer %08X!\n", m_gfx_gram[0x80100/4]);
+ }
+ }
+
+ fifo_out->push(nullptr, buffer[x+0]);
+ fifo_out->push(nullptr, buffer[x+1]);
+ fifo_out->push(nullptr, buffer[x+2]);
+ fifo_out->push(nullptr, buffer[x+3]);
+ }
cobra->m_gfx_re_status = RE_STATUS_IDLE;
break;
@@ -2983,7 +3036,7 @@ WRITE64_MEMBER(cobra_state::gfx_buf_w)
// teximage_load() / mbuslib_prc_read(): 0x00A00001 0x10520800
-// printf("prc_read %08X%08X at %08X\n", (UINT32)(data >> 32), (UINT32)(data), activecpu_get_pc());
+// printf("prc_read %08X%08X at %08X\n", (UINT32)(data >> 32), (UINT32)(data), space.device().safe_pc());
m_renderer->gfx_fifo_exec();
@@ -3096,50 +3149,54 @@ ADDRESS_MAP_END
INPUT_PORTS_START( cobra )
PORT_START("TEST")
- PORT_SERVICE_NO_TOGGLE( 0x80, IP_ACTIVE_LOW) /* Test Button */
- PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_SERVICE ) PORT_NAME("Service") PORT_CODE(KEYCODE_7)
- PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_SERVICE2 )
- PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_UNKNOWN )
- PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_UNUSED )
- PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_UNUSED )
- PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_UNUSED )
- PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_UNUSED )
+ PORT_SERVICE_NO_TOGGLE( 0x80, IP_ACTIVE_HIGH) /* Test Button */
+ PORT_BIT( 0x40, IP_ACTIVE_HIGH, IPT_UNKNOWN )
+ PORT_BIT( 0x20, IP_ACTIVE_HIGH, IPT_UNKNOWN )
+ PORT_BIT( 0x10, IP_ACTIVE_HIGH, IPT_UNKNOWN )
+ PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_UNUSED )
+ PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_UNUSED )
+ PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_UNUSED )
+ PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_UNUSED )
PORT_START("P1")
- PORT_BIT( 0x8000, IP_ACTIVE_LOW, IPT_START1 )
- PORT_BIT( 0x4000, IP_ACTIVE_LOW, IPT_UNKNOWN ) PORT_PLAYER(1)
- PORT_BIT( 0x2000, IP_ACTIVE_LOW, IPT_JOYSTICK_UP ) PORT_8WAY PORT_PLAYER(1)
- PORT_BIT( 0x1000, IP_ACTIVE_LOW, IPT_JOYSTICK_DOWN ) PORT_8WAY PORT_PLAYER(1)
- PORT_BIT( 0x0800, IP_ACTIVE_LOW, IPT_JOYSTICK_LEFT ) PORT_8WAY PORT_PLAYER(1)
- PORT_BIT( 0x0400, IP_ACTIVE_LOW, IPT_JOYSTICK_RIGHT ) PORT_8WAY PORT_PLAYER(1)
- PORT_BIT( 0x0200, IP_ACTIVE_LOW, IPT_BUTTON1 ) PORT_PLAYER(1)
- PORT_BIT( 0x0100, IP_ACTIVE_LOW, IPT_BUTTON2 ) PORT_PLAYER(1)
- PORT_BIT( 0x0080, IP_ACTIVE_LOW, IPT_BUTTON3 ) PORT_PLAYER(1)
- PORT_BIT( 0x0040, IP_ACTIVE_LOW, IPT_BUTTON4 ) PORT_PLAYER(1)
- PORT_BIT( 0x0020, IP_ACTIVE_LOW, IPT_BUTTON5 ) PORT_PLAYER(1)
- PORT_BIT( 0x0010, IP_ACTIVE_LOW, IPT_BUTTON6 ) PORT_PLAYER(1)
+ PORT_BIT( 0x8000, IP_ACTIVE_HIGH, IPT_START1 )
+ PORT_BIT( 0x4000, IP_ACTIVE_HIGH, IPT_SERVICE ) PORT_NAME("P1 Service") PORT_CODE(KEYCODE_7)
+ PORT_BIT( 0x2000, IP_ACTIVE_HIGH, IPT_JOYSTICK_UP ) PORT_8WAY PORT_PLAYER(1)
+ PORT_BIT( 0x1000, IP_ACTIVE_HIGH, IPT_JOYSTICK_DOWN ) PORT_8WAY PORT_PLAYER(1)
+ PORT_BIT( 0x0800, IP_ACTIVE_HIGH, IPT_JOYSTICK_LEFT ) PORT_8WAY PORT_PLAYER(1)
+ PORT_BIT( 0x0400, IP_ACTIVE_HIGH, IPT_JOYSTICK_RIGHT ) PORT_8WAY PORT_PLAYER(1)
+ PORT_BIT( 0x0200, IP_ACTIVE_HIGH, IPT_BUTTON1 ) PORT_PLAYER(1)
+ PORT_BIT( 0x0100, IP_ACTIVE_HIGH, IPT_BUTTON2 ) PORT_PLAYER(1)
+ PORT_BIT( 0x0080, IP_ACTIVE_HIGH, IPT_UNUSED ) PORT_PLAYER(1)
+ PORT_BIT( 0x0040, IP_ACTIVE_HIGH, IPT_BUTTON3 ) PORT_PLAYER(1)
+ PORT_BIT( 0x0020, IP_ACTIVE_HIGH, IPT_UNUSED ) PORT_PLAYER(1)
+ PORT_BIT( 0x0010, IP_ACTIVE_HIGH, IPT_UNUSED ) PORT_PLAYER(1)
PORT_BIT( 0x0008, IP_ACTIVE_LOW, IPT_UNUSED ) PORT_PLAYER(1)
PORT_BIT( 0x0004, IP_ACTIVE_LOW, IPT_UNUSED ) PORT_PLAYER(1)
PORT_BIT( 0x0002, IP_ACTIVE_LOW, IPT_UNUSED ) PORT_PLAYER(1)
PORT_BIT( 0x0001, IP_ACTIVE_LOW, IPT_UNUSED ) PORT_PLAYER(1)
PORT_START("P2")
- PORT_BIT( 0x8000, IP_ACTIVE_LOW, IPT_START2 )
- PORT_BIT( 0x4000, IP_ACTIVE_LOW, IPT_UNKNOWN ) PORT_PLAYER(2)
- PORT_BIT( 0x2000, IP_ACTIVE_LOW, IPT_JOYSTICK_UP ) PORT_8WAY PORT_PLAYER(2)
- PORT_BIT( 0x1000, IP_ACTIVE_LOW, IPT_JOYSTICK_DOWN ) PORT_8WAY PORT_PLAYER(2)
- PORT_BIT( 0x0800, IP_ACTIVE_LOW, IPT_JOYSTICK_LEFT ) PORT_8WAY PORT_PLAYER(2)
- PORT_BIT( 0x0400, IP_ACTIVE_LOW, IPT_JOYSTICK_RIGHT ) PORT_8WAY PORT_PLAYER(2)
- PORT_BIT( 0x0200, IP_ACTIVE_LOW, IPT_BUTTON1 ) PORT_PLAYER(2)
- PORT_BIT( 0x0100, IP_ACTIVE_LOW, IPT_BUTTON2 ) PORT_PLAYER(2)
- PORT_BIT( 0x0080, IP_ACTIVE_LOW, IPT_BUTTON3 ) PORT_PLAYER(2)
- PORT_BIT( 0x0040, IP_ACTIVE_LOW, IPT_BUTTON4 ) PORT_PLAYER(2)
- PORT_BIT( 0x0020, IP_ACTIVE_LOW, IPT_BUTTON5 ) PORT_PLAYER(2)
- PORT_BIT( 0x0010, IP_ACTIVE_LOW, IPT_BUTTON6 ) PORT_PLAYER(2)
- PORT_BIT( 0x0008, IP_ACTIVE_LOW, IPT_UNUSED ) PORT_PLAYER(2)
- PORT_BIT( 0x0004, IP_ACTIVE_LOW, IPT_UNUSED ) PORT_PLAYER(2)
- PORT_BIT( 0x0002, IP_ACTIVE_LOW, IPT_UNUSED ) PORT_PLAYER(2)
- PORT_BIT( 0x0001, IP_ACTIVE_LOW, IPT_UNUSED ) PORT_PLAYER(2)
+ PORT_BIT( 0x8000, IP_ACTIVE_HIGH, IPT_START2 )
+ PORT_BIT( 0x4000, IP_ACTIVE_HIGH, IPT_SERVICE ) PORT_NAME("P2 Service") PORT_CODE(KEYCODE_8)
+ PORT_BIT( 0x2000, IP_ACTIVE_HIGH, IPT_JOYSTICK_UP ) PORT_8WAY PORT_PLAYER(2)
+ PORT_BIT( 0x1000, IP_ACTIVE_HIGH, IPT_JOYSTICK_DOWN ) PORT_8WAY PORT_PLAYER(2)
+ PORT_BIT( 0x0800, IP_ACTIVE_HIGH, IPT_JOYSTICK_LEFT ) PORT_8WAY PORT_PLAYER(2)
+ PORT_BIT( 0x0400, IP_ACTIVE_HIGH, IPT_JOYSTICK_RIGHT ) PORT_8WAY PORT_PLAYER(2)
+ PORT_BIT( 0x0200, IP_ACTIVE_HIGH, IPT_BUTTON1 ) PORT_PLAYER(2)
+ PORT_BIT( 0x0100, IP_ACTIVE_HIGH, IPT_BUTTON2 ) PORT_PLAYER(2)
+ PORT_BIT( 0x0080, IP_ACTIVE_HIGH, IPT_UNUSED ) PORT_PLAYER(2)
+ PORT_BIT( 0x0040, IP_ACTIVE_HIGH, IPT_BUTTON3 ) PORT_PLAYER(2)
+ PORT_BIT( 0x0020, IP_ACTIVE_HIGH, IPT_UNUSED ) PORT_PLAYER(2)
+ PORT_BIT( 0x0010, IP_ACTIVE_HIGH, IPT_UNUSED ) PORT_PLAYER(2)
+ PORT_BIT( 0x0008, IP_ACTIVE_HIGH, IPT_UNUSED ) PORT_PLAYER(2)
+ PORT_BIT( 0x0004, IP_ACTIVE_HIGH, IPT_UNUSED ) PORT_PLAYER(2)
+ PORT_BIT( 0x0002, IP_ACTIVE_HIGH, IPT_UNUSED ) PORT_PLAYER(2)
+ PORT_BIT( 0x0001, IP_ACTIVE_HIGH, IPT_UNUSED ) PORT_PLAYER(2)
+
+ PORT_START("COINS")
+ PORT_BIT(0x01, IP_ACTIVE_HIGH, IPT_COIN1) PORT_WRITE_LINE_DEVICE_MEMBER("cobra_jvs1", cobra_jvs, coin_1_w)
+ PORT_BIT(0x02, IP_ACTIVE_HIGH, IPT_COIN2) PORT_WRITE_LINE_DEVICE_MEMBER("cobra_jvs1", cobra_jvs, coin_2_w)
INPUT_PORTS_END
WRITE_LINE_MEMBER(cobra_state::ide_interrupt)
@@ -3164,6 +3221,17 @@ INTERRUPT_GEN_MEMBER(cobra_state::cobra_vblank)
}
}
+void cobra_state::machine_start()
+{
+ /* configure fast RAM regions for DRC */
+ m_maincpu->ppcdrc_add_fastram(0x00000000, 0x003fffff, FALSE, m_main_ram);
+
+ m_subcpu->ppcdrc_add_fastram(0x00000000, 0x003fffff, FALSE, m_sub_ram);
+
+ m_gfxcpu->ppcdrc_add_fastram(0x00000000, 0x003fffff, FALSE, m_gfx_ram0);
+ m_gfxcpu->ppcdrc_add_fastram(0x07c00000, 0x07ffffff, FALSE, m_gfx_ram1);
+}
+
void cobra_state::machine_reset()
{
m_sub_interrupt = 0xff;
@@ -3246,7 +3314,9 @@ static MACHINE_CONFIG_START( cobra, cobra_state )
MCFG_K001604_PALETTE("palette")
MCFG_DEVICE_ADD("cobra_jvs_host", COBRA_JVS_HOST, 4000000)
- MCFG_JVS_DEVICE_ADD("cobra_jvs", COBRA_JVS, "cobra_jvs_host")
+ MCFG_JVS_DEVICE_ADD("cobra_jvs1", COBRA_JVS, "cobra_jvs_host")
+ MCFG_JVS_DEVICE_ADD("cobra_jvs2", COBRA_JVS, "cobra_jvs_host")
+ MCFG_JVS_DEVICE_ADD("cobra_jvs3", COBRA_JVS, "cobra_jvs_host")
MACHINE_CONFIG_END
diff --git a/src/mame/drivers/compis.cpp b/src/mame/drivers/compis.cpp
index 5286bbe7707..7432eba2781 100644
--- a/src/mame/drivers/compis.cpp
+++ b/src/mame/drivers/compis.cpp
@@ -1,13 +1,11 @@
-// license:???
-// copyright-holders:Per Ola Ingvarsson, Tomas Karlsson
+// license:BSD-3-Clause
+// copyright-holders:Curt Coder
+// thanks-to:Per Ola Ingvarsson, Tomas Karlsson
/******************************************************************************
drivers/compis.c
machine driver
- Per Ola Ingvarsson
- Tomas Karlsson
-
Hardware:
- Intel 80186 CPU 8MHz, integrated DMA(8237?), PIC(8259?), PIT(8253?)
- Intel 80130 OSP Operating system processor (PIC 8259, PIT 8254)
diff --git a/src/mame/drivers/cps1.cpp b/src/mame/drivers/cps1.cpp
index 03f020c2abd..d0aefe36539 100644
--- a/src/mame/drivers/cps1.cpp
+++ b/src/mame/drivers/cps1.cpp
@@ -4005,6 +4005,8 @@ ROM_START( striderua )
ROM_END
// 90629B-3 PCB - Converted from an SF2 'inhouse' (but with no official labels etc.)
+// actually an incomplete conversion, layer enables are wrong in a number of places which causes the game to break even on real hardware.
+// this is essentially a Capcom made bootleg of a Capcom game.
ROM_START( strideruc )
ROM_REGION( CODE_SIZE, "maincpu", 0 ) /* 68000 code */
ROM_LOAD16_WORD_SWAP( "34.8f", 0x000000, 0x80000, CRC(e0fb5657) SHA1(6c7f668220de80169feea35371aff363f67f7b0c) )
@@ -12025,7 +12027,7 @@ GAME( 1988, daimakai, ghouls, cps1_10MHz, daimakai, cps_state, cps1,
GAME( 1988, daimakair, ghouls, cps1_12MHz, daimakai, cps_state, cps1, ROT0, "Capcom", "Daimakaimura (Japan Resale Ver.)", MACHINE_SUPPORTS_SAVE ) // Wed.26.10.1988 in the ROMs // 12MHz verified
GAME( 1989, strider, 0, cps1_10MHz, strider, cps_state, cps1, ROT0, "Capcom", "Strider (USA, B-Board 89624B-2)", MACHINE_SUPPORTS_SAVE )
GAME( 1989, striderua, strider, cps1_10MHz, stridrua, cps_state, cps1, ROT0, "Capcom", "Strider (USA, B-Board 89624B-3)", MACHINE_SUPPORTS_SAVE )
-GAME( 1989, strideruc, strider, cps1_10MHz, stridrua, cps_state, cps1, ROT0, "Capcom", "Strider (USA, B-Board 90629B-3, Street Fighter II conversion)", MACHINE_SUPPORTS_SAVE )
+GAME( 1989, strideruc, strider, cps1_10MHz, stridrua, cps_state, cps1, ROT0, "bootleg (Capcom)", "Strider (USA, B-Board 90629B-3, buggy Street Fighter II conversion)", MACHINE_SUPPORTS_SAVE ) // various bugs even on PCB, see rom load
GAME( 1989, striderj, strider, cps1_10MHz, strider, cps_state, cps1, ROT0, "Capcom", "Strider Hiryu (Japan)", MACHINE_SUPPORTS_SAVE )
GAME( 1989, striderjr, strider, cps1_12MHz, strider, cps_state, cps1, ROT0, "Capcom", "Strider Hiryu (Japan Resale Ver.)", MACHINE_SUPPORTS_SAVE ) // 12MHz verified
GAME( 1989, dynwar, 0, cps1_10MHz, dynwar, cps_state, cps1, ROT0, "Capcom", "Dynasty Wars (USA, B-Board 89624B-?)", MACHINE_SUPPORTS_SAVE ) // (c) Capcom U.S.A.
diff --git a/src/mame/drivers/cps3.cpp b/src/mame/drivers/cps3.cpp
index af0104474a6..8ec2c17c68a 100644
--- a/src/mame/drivers/cps3.cpp
+++ b/src/mame/drivers/cps3.cpp
@@ -788,12 +788,25 @@ void cps3_state::init_crypt(UINT32 key1, UINT32 key2, int altEncryption)
m_altEncryption = altEncryption;
// cache pointers to regions
- m_user4region = memregion("user4")->base();
- m_user5region = memregion("user5")->base();
+ if (m_user4_region)
+ {
+ m_user4 = m_user4_region->base();
+ }
+ else
+ {
+ m_user4 = auto_alloc_array(machine(), UINT8, USER4REGION_LENGTH);
+ }
+
+ if (m_user5_region)
+ {
+ m_user5 = m_user5_region->base();
+ }
+ else
+ {
+ m_user5 = auto_alloc_array(machine(), UINT8, USER5REGION_LENGTH);
+ }
- if (!m_user4region) m_user4region = auto_alloc_array(machine(), UINT8, USER4REGION_LENGTH);
- if (!m_user5region) m_user5region = auto_alloc_array(machine(), UINT8, USER5REGION_LENGTH);
- m_cps3sound->set_base((INT8*)m_user5region);
+ m_cps3sound->set_base((INT8*)m_user5);
// set strict verify
m_maincpu->sh2drc_set_options(SH2DRC_STRICT_VERIFY);
@@ -1468,7 +1481,7 @@ WRITE32_MEMBER(cps3_state::cps3_gfxflash_w)
/* make a copy in the linear memory region we actually use for drawing etc. having it stored in interleaved flash roms isnt' very useful */
{
- UINT32* romdata = (UINT32*)m_user5region;
+ UINT32* romdata = (UINT32*)m_user5;
int real_offset = 0;
UINT32 newdata;
@@ -1575,7 +1588,7 @@ void cps3_state::cps3_flashmain_w(int which, UINT32 offset, UINT32 data, UINT32
/* copy data into regions to execute from */
{
- UINT32* romdata = (UINT32*)m_user4region;
+ UINT32* romdata = (UINT32*)m_user4;
UINT32* romdata2 = (UINT32*)m_decrypted_gamerom;
int real_offset = 0;
UINT32 newdata;
@@ -1799,7 +1812,7 @@ WRITE32_MEMBER(cps3_state::cps3_palettedma_w)
if (data & 0x0002)
{
int i;
- UINT16* src = (UINT16*)m_user5region;
+ UINT16* src = (UINT16*)m_user5;
// if(DEBUG_PRINTF) printf("CPS3 pal dma start %08x (real: %08x) dest %08x fade %08x other2 %08x (length %04x)\n", m_paldma_source, m_paldma_realsource, m_paldma_dest, m_paldma_fade, m_paldma_other2, m_paldma_length);
for (i=0;i<m_paldma_length;i++)
@@ -1873,7 +1886,7 @@ UINT32 cps3_state::process_byte( UINT8 real_byte, UINT32 destination, int max_le
void cps3_state::cps3_do_char_dma( UINT32 real_source, UINT32 real_destination, UINT32 real_length )
{
- UINT8* sourcedata = (UINT8*)m_user5region;
+ UINT8* sourcedata = (UINT8*)m_user5;
int length_remaining;
m_last_normal_byte = 0;
@@ -1956,7 +1969,7 @@ UINT32 cps3_state::ProcessByte8(UINT8 b,UINT32 dst_offset)
void cps3_state::cps3_do_alt_char_dma( UINT32 src, UINT32 real_dest, UINT32 real_length )
{
- UINT8* px = (UINT8*)m_user5region;
+ UINT8* px = (UINT8*)m_user5;
UINT32 start = real_dest;
UINT32 ds = real_dest;
@@ -2299,7 +2312,7 @@ void cps3_state::machine_reset()
// make a copy in the regions we execute code / draw gfx from
void cps3_state::copy_from_nvram()
{
- UINT32* romdata = (UINT32*)m_user4region;
+ UINT32* romdata = (UINT32*)m_user4;
UINT32* romdata2 = (UINT32*)m_decrypted_gamerom;
int i;
/* copy + decrypt program roms which have been loaded from flashroms/nvram */
@@ -2336,7 +2349,7 @@ void cps3_state::copy_from_nvram()
int flashnum = 0;
int countoffset = 0;
- romdata = (UINT32*)m_user5region;
+ romdata = (UINT32*)m_user5;
for (thebase = 0;thebase < len/2; thebase+=0x200000)
{
// printf("flashnums %d. %d\n",flashnum, flashnum+1);
diff --git a/src/mame/drivers/crimfght.cpp b/src/mame/drivers/crimfght.cpp
index e7d510e47bc..460e133caa6 100644
--- a/src/mame/drivers/crimfght.cpp
+++ b/src/mame/drivers/crimfght.cpp
@@ -175,7 +175,7 @@ static INPUT_PORTS_START( crimfght )
PORT_DIPUNUSED_DIPLOC(0x02, IP_ACTIVE_LOW, "SW3:2")
PORT_SERVICE_DIPLOC( 0x04, IP_ACTIVE_LOW, "SW3:3")
PORT_DIPUNUSED_DIPLOC(0x08, IP_ACTIVE_LOW, "SW3:4")
- PORT_BIT(0xf0, IP_ACTIVE_HIGH, IPT_SPECIAL) PORT_CUSTOM_MEMBER(DEVICE_SELF, crimfght_state, system_r, 0)
+ PORT_BIT(0xf0, IP_ACTIVE_HIGH, IPT_SPECIAL) PORT_CUSTOM_MEMBER(DEVICE_SELF, crimfght_state, system_r, NULL)
PORT_START("P1")
KONAMI8_B12_UNK(1)
diff --git a/src/mame/drivers/cubeqst.cpp b/src/mame/drivers/cubeqst.cpp
index 2c7ccc972d7..6c084f3b897 100644
--- a/src/mame/drivers/cubeqst.cpp
+++ b/src/mame/drivers/cubeqst.cpp
@@ -532,7 +532,6 @@ static MACHINE_CONFIG_START( cubeqst, cubeqst_state )
MCFG_LASERDISC_OVERLAY_CLIP(0, 320-1, 0, 256-8)
MCFG_LASERDISC_OVERLAY_POSITION(0.002f, -0.018f)
MCFG_LASERDISC_OVERLAY_SCALE(1.0f, 1.030f)
- MCFG_LASERDISC_OVERLAY_PALETTE("palette")
MCFG_LASERDISC_SCREEN_ADD_NTSC("screen", "laserdisc")
diff --git a/src/mame/drivers/cubo.cpp b/src/mame/drivers/cubo.cpp
index 7f71189f542..8e27e26e864 100644
--- a/src/mame/drivers/cubo.cpp
+++ b/src/mame/drivers/cubo.cpp
@@ -541,22 +541,22 @@ static INPUT_PORTS_START( cubo )
PORT_START("CIA0PORTA")
PORT_BIT( 0x3f, IP_ACTIVE_LOW, IPT_SPECIAL )
/* this is the regular port for reading a single button joystick on the Amiga, many CD32 games require this to mirror the pad start button! */
- PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_SPECIAL ) PORT_CUSTOM_MEMBER(DEVICE_SELF, cubo_state,cd32_sel_mirror_input, 1)
- PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_SPECIAL ) PORT_CUSTOM_MEMBER(DEVICE_SELF, cubo_state,cd32_sel_mirror_input, 0)
+ PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_SPECIAL ) PORT_CUSTOM_MEMBER(DEVICE_SELF, cubo_state,cd32_sel_mirror_input, (void *)1)
+ PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_SPECIAL ) PORT_CUSTOM_MEMBER(DEVICE_SELF, cubo_state,cd32_sel_mirror_input, (void *)0)
PORT_START("CIA0PORTB")
PORT_BIT( 0xff, IP_ACTIVE_LOW, IPT_UNKNOWN )
PORT_START("joy_0_dat")
- PORT_BIT( 0x0303, IP_ACTIVE_HIGH, IPT_SPECIAL ) PORT_CUSTOM_MEMBER(DEVICE_SELF, cubo_state, amiga_joystick_convert, 1)
+ PORT_BIT( 0x0303, IP_ACTIVE_HIGH, IPT_SPECIAL ) PORT_CUSTOM_MEMBER(DEVICE_SELF, cubo_state, amiga_joystick_convert, (void *)1)
PORT_BIT( 0xfcfc, IP_ACTIVE_HIGH, IPT_UNUSED )
PORT_START("joy_1_dat")
- PORT_BIT( 0x0303, IP_ACTIVE_HIGH, IPT_SPECIAL ) PORT_CUSTOM_MEMBER(DEVICE_SELF, cubo_state, amiga_joystick_convert, 0)
+ PORT_BIT( 0x0303, IP_ACTIVE_HIGH, IPT_SPECIAL ) PORT_CUSTOM_MEMBER(DEVICE_SELF, cubo_state, amiga_joystick_convert, (void *)0)
PORT_BIT( 0xfcfc, IP_ACTIVE_HIGH, IPT_UNUSED )
PORT_START("potgo")
- PORT_BIT( 0xff00, IP_ACTIVE_HIGH, IPT_SPECIAL ) PORT_CUSTOM_MEMBER(DEVICE_SELF, cubo_state,cubo_input, 0)
+ PORT_BIT( 0xff00, IP_ACTIVE_HIGH, IPT_SPECIAL ) PORT_CUSTOM_MEMBER(DEVICE_SELF, cubo_state,cubo_input, NULL)
PORT_BIT( 0x00ff, IP_ACTIVE_HIGH, IPT_UNUSED )
@@ -1051,6 +1051,7 @@ static MACHINE_CONFIG_START( cubo, cubo_state )
MCFG_FRAGMENT_ADD(pal_video)
MCFG_DEVICE_MODIFY("screen")
MCFG_SCREEN_UPDATE_DRIVER(amiga_state, screen_update_amiga_aga)
+ MCFG_SCREEN_NO_PALETTE
MCFG_VIDEO_START_OVERRIDE(amiga_state, amiga_aga)
diff --git a/src/mame/drivers/cyberbal.cpp b/src/mame/drivers/cyberbal.cpp
index 0a1a01a4ebc..f7d8d0a0466 100644
--- a/src/mame/drivers/cyberbal.cpp
+++ b/src/mame/drivers/cyberbal.cpp
@@ -389,8 +389,6 @@ static MACHINE_CONFIG_START( cyberbal, cyberbal_state )
MCFG_CPU_ADD("maincpu", M68000, ATARI_CLOCK_14MHz/2)
MCFG_CPU_PROGRAM_MAP(main_map)
- MCFG_SLAPSTIC_ADD("slapstic")
-
MCFG_CPU_ADD("audiocpu", M6502, ATARI_CLOCK_14MHz/8)
MCFG_CPU_PROGRAM_MAP(sound_map)
MCFG_DEVICE_PERIODIC_INT_DEVICE("soundcomm", atari_sound_comm_device, sound_irq_gen, (double)ATARI_CLOCK_14MHz/4/4/16/16/14)
@@ -466,6 +464,8 @@ MACHINE_CONFIG_END
static MACHINE_CONFIG_DERIVED( cyberbalt, cyberbal )
MCFG_DEVICE_REMOVE("eeprom")
MCFG_ATARI_EEPROM_2816_ADD("eeprom")
+
+ MCFG_SLAPSTIC_ADD("slapstic", 116)
MACHINE_CONFIG_END
@@ -997,20 +997,9 @@ ROM_END
*
*************************************/
-DRIVER_INIT_MEMBER(cyberbal_state,cyberbal)
-{
- slapstic_configure(*m_maincpu, 0x018000, 0, 0);
-}
-
-
DRIVER_INIT_MEMBER(cyberbal_state,cyberbalt)
{
- slapstic_configure(*m_maincpu, 0x018000, 0, 116);
-}
-
-
-DRIVER_INIT_MEMBER(cyberbal_state,cyberbal2p)
-{
+ slapstic_configure(*m_maincpu, 0x018000, 0);
}
@@ -1021,14 +1010,14 @@ DRIVER_INIT_MEMBER(cyberbal_state,cyberbal2p)
*
*************************************/
-GAMEL(1988, cyberbal, 0, cyberbal, cyberbal, cyberbal_state, cyberbal, ROT0, "Atari Games", "Cyberball (rev 4)", 0, layout_dualhsxs )
-GAMEL(1988, cyberbal2, cyberbal, cyberbal, cyberbal, cyberbal_state, cyberbal, ROT0, "Atari Games", "Cyberball (rev 2)", 0, layout_dualhsxs )
-GAMEL(1988, cyberbalp, cyberbal, cyberbal, cyberbal, cyberbal_state, cyberbal, ROT0, "Atari Games", "Cyberball (prototype)", 0, layout_dualhsxs )
+GAMEL(1988, cyberbal, 0, cyberbal, cyberbal, driver_device, 0, ROT0, "Atari Games", "Cyberball (rev 4)", 0, layout_dualhsxs )
+GAMEL(1988, cyberbal2, cyberbal, cyberbal, cyberbal, driver_device, 0, ROT0, "Atari Games", "Cyberball (rev 2)", 0, layout_dualhsxs )
+GAMEL(1988, cyberbalp, cyberbal, cyberbal, cyberbal, driver_device, 0, ROT0, "Atari Games", "Cyberball (prototype)", 0, layout_dualhsxs )
-GAME( 1989, cyberbal2p, cyberbal, cyberbal2p, cyberbal2p, cyberbal_state, cyberbal2p, ROT0, "Atari Games", "Cyberball 2072 (2 player, rev 4)", 0 )
-GAME( 1989, cyberbal2p3, cyberbal, cyberbal2p, cyberbal2p, cyberbal_state, cyberbal2p, ROT0, "Atari Games", "Cyberball 2072 (2 player, rev 3)", 0 )
-GAME( 1989, cyberbal2p2, cyberbal, cyberbal2p, cyberbal2p, cyberbal_state, cyberbal2p, ROT0, "Atari Games", "Cyberball 2072 (2 player, rev 2)", 0 )
-GAME( 1989, cyberbal2p1, cyberbal, cyberbal2p, cyberbal2p, cyberbal_state, cyberbal2p, ROT0, "Atari Games", "Cyberball 2072 (2 player, rev 1)", 0 )
+GAME( 1989, cyberbal2p, cyberbal, cyberbal2p, cyberbal2p, driver_device, 0, ROT0, "Atari Games", "Cyberball 2072 (2 player, rev 4)", 0 )
+GAME( 1989, cyberbal2p3, cyberbal, cyberbal2p, cyberbal2p, driver_device, 0, ROT0, "Atari Games", "Cyberball 2072 (2 player, rev 3)", 0 )
+GAME( 1989, cyberbal2p2, cyberbal, cyberbal2p, cyberbal2p, driver_device, 0, ROT0, "Atari Games", "Cyberball 2072 (2 player, rev 2)", 0 )
+GAME( 1989, cyberbal2p1, cyberbal, cyberbal2p, cyberbal2p, driver_device, 0, ROT0, "Atari Games", "Cyberball 2072 (2 player, rev 1)", 0 )
GAMEL(1989, cyberbalt, cyberbal, cyberbalt, cyberbal, cyberbal_state, cyberbalt, ROT0, "Atari Games", "Tournament Cyberball 2072 (rev 2)", 0, layout_dualhsxs )
GAMEL(1989, cyberbalt1, cyberbal, cyberbalt, cyberbal, cyberbal_state, cyberbalt, ROT0, "Atari Games", "Tournament Cyberball 2072 (rev 1)", 0, layout_dualhsxs )
diff --git a/src/mame/drivers/d6800.cpp b/src/mame/drivers/d6800.cpp
index 79c9ecab945..03e9c0f94ce 100644
--- a/src/mame/drivers/d6800.cpp
+++ b/src/mame/drivers/d6800.cpp
@@ -281,7 +281,7 @@ WRITE8_MEMBER( d6800_state::d6800_cassette_w )
are in progress (DMA/CB2 line low).
*/
- m_beeper->set_frequency(BIT(data, 0) ? 2400 : 1200);
+ m_beeper->set_clock(BIT(data, 0) ? 2400 : 1200);
m_beeper->set_state(BIT(data, 6) & (m_cb2 ? 1 : 0));
m_portb = data & 0x7f;
@@ -397,7 +397,7 @@ static MACHINE_CONFIG_START( d6800, d6800_state )
MCFG_SPEAKER_STANDARD_MONO("mono")
MCFG_SOUND_WAVE_ADD(WAVE_TAG, "cassette")
MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.50)
- MCFG_SOUND_ADD("beeper", BEEP, 0)
+ MCFG_SOUND_ADD("beeper", BEEP, 1200)
MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.50)
/* devices */
diff --git a/src/mame/drivers/dai3wksi.cpp b/src/mame/drivers/dai3wksi.cpp
index c14016c1e49..08bfc4febc7 100644
--- a/src/mame/drivers/dai3wksi.cpp
+++ b/src/mame/drivers/dai3wksi.cpp
@@ -1,5 +1,5 @@
-// license:BSD-3-Clause
-// copyright-holders:Derrick Renaud
+// license:???
+// copyright-holders:Hau,Derrick Renaud
/*
-Galaxy Force
diff --git a/src/mame/drivers/darius.cpp b/src/mame/drivers/darius.cpp
index b4039d593bd..aa8734d4c01 100644
--- a/src/mame/drivers/darius.cpp
+++ b/src/mame/drivers/darius.cpp
@@ -1,4 +1,4 @@
-// license:???
+// license:GPL-2.0+
// copyright-holders:David Graves, Jarek Burczynski
// thanks-to:Richard Bush
/***************************************************************************
diff --git a/src/mame/drivers/dccons.cpp b/src/mame/drivers/dccons.cpp
index 919e59b54cc..9772ad3ba8c 100644
--- a/src/mame/drivers/dccons.cpp
+++ b/src/mame/drivers/dccons.cpp
@@ -681,7 +681,7 @@ ROM_START(dc)
DREAMCAST_COMMON_BIOS
ROM_REGION(0x020000, "dcflash", 0)
- ROM_LOAD( "dcus_ntsc.bin", 0x000000, 0x020000, BAD_DUMP CRC(e6862dd0) SHA1(24875ce85c011600e73b1c3fd2b341824cbf8544) ) // dumped from VA2.4 mobo with 1.022 BIOS
+ ROM_LOAD( "dcus_ntsc.bin", 0x000000, 0x020000, BAD_DUMP CRC(e6862dd0) SHA1(24875ce85c011600e73b1c3fd2b341824cbf8544) ) // dumped from VA2.4 mobo with 1.022 BIOS
ROM_END
ROM_START( dceu )
@@ -693,7 +693,7 @@ ROM_END
ROM_START( dcjp )
DREAMCAST_COMMON_BIOS
- ROM_SYSTEM_BIOS(4, "1004", "v1.004 (Japan)") // oldest known mass production version, supports Japan region only
+ ROM_SYSTEM_BIOS(4, "1004", "v1.004 (Japan)") // oldest known mass production version, supports Japan region only
ROM_LOAD_BIOS(4, "mpr-21068.ic501", 0x000000, 0x200000, CRC(5454841f) SHA1(1ea132c0fbbf07ef76789eadc07908045c089bd6) )
ROM_REGION(0x020000, "dcflash", 0)
@@ -706,9 +706,9 @@ ROM_END
// otherwise it boots from EPROM which contain system checker software (last dump)
ROM_START( dcdev )
ROM_REGION(0x200000, "maincpu", 0)
- ROM_SYSTEM_BIOS(0, "1011", "Katana Set5 v1.011 (World)") // BOOT flash rom update from Katana SDK R9-R11, WinCE SDK v2.1
+ ROM_SYSTEM_BIOS(0, "1011", "Katana Set5 v1.011 (World)") // BOOT flash rom update from Katana SDK R9-R11, WinCE SDK v2.1
ROM_LOAD_BIOS(0, "set5v1.011.ic507", 0x000000, 0x200000, CRC(2186e0e5) SHA1(6bd18fb83f8fdb56f1941e079580e5dd672a6dad) )
- ROM_SYSTEM_BIOS(1, "1001", "Katana Set5 v1.001 (Japan)") // BOOT flash rom update from WinCE SDK v1.0
+ ROM_SYSTEM_BIOS(1, "1001", "Katana Set5 v1.001 (Japan)") // BOOT flash rom update from WinCE SDK v1.0
ROM_LOAD_BIOS(1, "set5v1.001.ic507", 0x000000, 0x200000, CRC(5702d38f) SHA1(ea7a3ae1de73683008dd795c252941a4fc81b42e) )
// 27C160 EPROM (DIP42) IC??? labeled
diff --git a/src/mame/drivers/dec0.cpp b/src/mame/drivers/dec0.cpp
index 5e58b5ef2e2..0c8bba5ffb1 100644
--- a/src/mame/drivers/dec0.cpp
+++ b/src/mame/drivers/dec0.cpp
@@ -2681,6 +2681,49 @@ ROM_END
ROM_START( slyspy )
ROM_REGION( 0x60000, "maincpu", 0 ) /* 68000 code */
+ ROM_LOAD16_BYTE( "fa14-4.17l", 0x00000, 0x10000, CRC(60f16e31) SHA1(b2359fe8ecbed63b7d56c9962fab16b354a14305) )
+ ROM_LOAD16_BYTE( "fa12-4.9l", 0x00001, 0x10000, CRC(b9b9fdcf) SHA1(fdd91b9bc8f0228078bb50323531808076180fe7) )
+ ROM_LOAD16_BYTE( "fa15.19l", 0x20000, 0x10000, CRC(04a79266) SHA1(69d256ffb1c89721f8b1e929c581f187e047b977) )
+ ROM_LOAD16_BYTE( "fa13.11l", 0x20001, 0x10000, CRC(641cc4b3) SHA1(ce0ccd14d201f411cfc02ec988b2ad4fcb0d8f5d) )
+
+ ROM_REGION( 0x10000, "audiocpu", 0 ) /* Sound CPU */
+ ROM_LOAD( "fa10.5h", 0x00000, 0x10000, CRC(dfd2ff25) SHA1(3dcd6d50b92b49daae4b51581abe9c95f764e848) ) // == FB counterpart from World set
+
+ ROM_REGION( 0x10000, "gfx1", 0 ) /* chars */
+ ROM_LOAD( "fa05.11a", 0x04000, 0x04000, CRC(09802924) SHA1(d9bc5fe7f053afa15cd39400aae993866d1b0226) ) // == FB counterpart from World set
+ ROM_CONTINUE( 0x00000, 0x04000 ) /* the two halves are swapped */
+ ROM_LOAD( "fa04.9a", 0x0c000, 0x04000, CRC(ec25b895) SHA1(8c1d2b9a2487fd7114d37fe9dc271183c4cc1613) ) // == FB counterpart from World set
+ ROM_CONTINUE( 0x08000, 0x04000 )
+
+ ROM_REGION( 0x20000, "gfx2", 0 ) /* tiles */
+ ROM_LOAD( "fa07.17a", 0x00000, 0x10000, CRC(e932268b) SHA1(ee8ed29affa951e725cf19a5f56d3beac24420c9) ) // == FB counterpart from World set
+ ROM_LOAD( "fa06.15a", 0x10000, 0x10000, CRC(c4dd38c0) SHA1(267dbbdd5df6b13662cd307c5c95fdf643d64f45) ) // == FB counterpart from World set
+
+ ROM_REGION( 0x40000, "gfx3", 0 ) /* tiles */
+ ROM_LOAD( "fa09.22a", 0x00000, 0x20000, CRC(1395e9be) SHA1(60693ac6236ffe1e0933d81771cfad32e14514c3) ) // == FB counterpart from World set
+ ROM_LOAD( "fa08.21a", 0x20000, 0x20000, CRC(4d7464db) SHA1(82e2a3c3d78447985968220d52c7c1f1ff625d83) )
+
+ ROM_REGION( 0x80000, "gfx4", 0 ) /* sprites */
+ ROM_LOAD( "fa01.4a", 0x00000, 0x20000, CRC(99b0cd92) SHA1(2729e874730391b5fa93e9a28142c02c00eb5068) ) // == FB counterpart from World set
+ ROM_LOAD( "fa03.7a", 0x20000, 0x20000, CRC(0e7ea74d) SHA1(22078a2856933af2d31750a4a506b993fe309e9a) ) // == FB counterpart from World set
+ ROM_LOAD( "fa00.2a", 0x40000, 0x20000, CRC(f7df3fd7) SHA1(ed9e4649e0b1fcca61cf4d159b3f8a35f06102ce) ) // == FB counterpart from World set
+ ROM_LOAD( "fa02.5a", 0x60000, 0x20000, CRC(84e8da9d) SHA1(41da6042f80ea3562aa350f4f466b16db29e2aca) ) // == FB counterpart from World set
+
+ ROM_REGION( 0x40000, "oki", 0 ) /* ADPCM samples */
+ ROM_LOAD( "fa11.11k", 0x00000, 0x20000, CRC(4e547bad) SHA1(655eda4d00f8846957ed40dcbf750fba3ce19f4e) ) // == FB counterpart from World set
+
+ ROM_REGION( 0x0100, "proms", 0 )
+ ROM_LOAD( "mb7114h.21k", 0x0000, 0x0100, CRC(ad26e8d4) SHA1(827337aeb8904429a1c050279240ae38aa6ce064) ) /* Priority (not used) */
+
+ ROM_REGION( 0x0800, "plds", 0 )
+ ROM_LOAD( "pal16l8b-ta-1.15k", 0x0000, 0x0104, CRC(79a87527) SHA1(3c6ad20d5a7c41c020e671d462c0b1e4a5dda7f8) )
+ ROM_LOAD( "pal16r4a-ta-2.16k", 0x0200, 0x0104, CRC(eca31311) SHA1(a87b2721e13767f7448236d0bbb3355583fe88bb) )
+ ROM_LOAD( "pal16l8a-ta-3.17k", 0x0400, 0x0104, CRC(6c324919) SHA1(83bba4634d7ab7c4ad3083c063804fd1e7c9c10b) )
+ ROM_LOAD( "pal16l8a-ta-4.11m", 0x0600, 0x0104, CRC(116177fa) SHA1(f63802578b6f743e2d3a64e4805488d44361dcb2) )
+ROM_END
+
+ROM_START( slyspy3 )
+ ROM_REGION( 0x60000, "maincpu", 0 ) /* 68000 code */
ROM_LOAD16_BYTE( "fa14-3.17l", 0x00000, 0x10000, CRC(54353a84) SHA1(899559f17705a8222fd56e9304e9b802eac8f6db) )
ROM_LOAD16_BYTE( "fa12-2.9l", 0x00001, 0x10000, CRC(1b534294) SHA1(cf7badea6604c47d9f3ff8a0ef326e09de1974a0) )
ROM_LOAD16_BYTE( "fa15.19l", 0x20000, 0x10000, CRC(04a79266) SHA1(69d256ffb1c89721f8b1e929c581f187e047b977) )
@@ -3224,7 +3267,8 @@ GAME( 1989, ffantasy, hippodrm, hippodrm, ffantasy, dec0_state, hippodrm, ROT0
GAME( 1989, ffantasya, hippodrm, hippodrm, ffantasy, dec0_state, hippodrm, ROT0, "Data East Corporation", "Fighting Fantasy (Japan)", MACHINE_SUPPORTS_SAVE )
GAME( 1989, secretag, 0, slyspy, slyspy, dec0_state, slyspy, ROT0, "Data East Corporation", "Secret Agent (World revision 3)", MACHINE_SUPPORTS_SAVE )
GAME( 1989, secretagj, secretag, slyspy, slyspy, dec0_state, slyspy, ROT0, "Data East Corporation", "Secret Agent (Japan revision 2)", MACHINE_SUPPORTS_SAVE )
-GAME( 1989, slyspy, secretag, slyspy, slyspy, dec0_state, slyspy, ROT0, "Data East USA", "Sly Spy (US revision 3)", MACHINE_SUPPORTS_SAVE )
+GAME( 1989, slyspy, secretag, slyspy, slyspy, dec0_state, slyspy, ROT0, "Data East USA", "Sly Spy (US revision 4)", MACHINE_SUPPORTS_SAVE )
+GAME( 1989, slyspy3, secretag, slyspy, slyspy, dec0_state, slyspy, ROT0, "Data East USA", "Sly Spy (US revision 3)", MACHINE_SUPPORTS_SAVE )
GAME( 1989, slyspy2, secretag, slyspy, slyspy, dec0_state, slyspy, ROT0, "Data East USA", "Sly Spy (US revision 2)", MACHINE_SUPPORTS_SAVE )
GAME( 1989, midres, 0, midres, midres, driver_device, 0, ROT0, "Data East Corporation", "Midnight Resistance (World)", MACHINE_SUPPORTS_SAVE )
GAME( 1989, midresu, midres, midres, midresu, driver_device, 0, ROT0, "Data East USA", "Midnight Resistance (US)", MACHINE_SUPPORTS_SAVE )
diff --git a/src/mame/drivers/deco156.cpp b/src/mame/drivers/deco156.cpp
index faa0f3bb6a5..b8ab102bee1 100644
--- a/src/mame/drivers/deco156.cpp
+++ b/src/mame/drivers/deco156.cpp
@@ -8,9 +8,6 @@
See also deco32.c, deco_mlc.c, backfire.c
- Todo:
- complete co-processor emulation for wcvol95
-
Emulation by Bryan McPhail, mish@tendril.co.uk
*/
@@ -628,8 +625,36 @@ ROM_START( wcvol95 )
// ROM_REGION( 0x80, "user1", 0 ) /* eeprom */
// ROM_LOAD( "93c46.3k", 0x00, 0x80, CRC(88f8e270) SHA1(cb82203ad38e0c12ea998562b7b785979726afe5) )
+
+ ROM_REGION( 0x200, "gals", 0 )
+ ROM_LOAD( "GAL16V8B.10J.bin", 0x000, 0x117, CRC(06bbcbd5) SHA1(f7adb4bca13bb799bc42411eb178edfdc11a76c7) )
+ ROM_LOAD( "GAL16V8B.5D.bin", 0x000, 0x117, CRC(117784f0) SHA1(daf3720740621fc3af49333c96795718b693f4d2))
ROM_END
+
+
+ROM_START( wcvol95x )
+ ROM_REGION( 0x100000, "maincpu", 0 ) /* DE156 code (encrypted) */
+ // no label markings were present
+ ROM_LOAD32_WORD( "2f.bin", 0x000002, 0x080000, CRC(ac06633d) SHA1(5d37ca3050f35d5fc06f70e91b1522e325471585) )
+ ROM_LOAD32_WORD( "4f.bin", 0x000000, 0x080000, CRC(e211f67a) SHA1(d008c2b809482f17ada608134357fa1205d767d4) )
+
+ ROM_REGION( 0x080000, "gfx1", 0 )
+ ROM_LOAD( "mbx-00.9a", 0x000000, 0x080000, CRC(a0b24204) SHA1(cec8089c6c635f23b3a4aeeef2c43f519568ad70) )
+
+ ROM_REGION( 0x200000, "gfx2", 0 )
+ ROM_LOAD16_BYTE( "mbx-01.12a", 0x000000, 0x100000, CRC(73deb3f1) SHA1(c0cabecfd88695afe0f27c5bb115b4973907207d) )
+ ROM_LOAD16_BYTE( "mbx-02.13a", 0x000001, 0x100000, CRC(3204d324) SHA1(44102f71bae44bf3a9bd2de7e5791d959a2c9bdd) )
+
+ ROM_REGION( 0x200000, "ymz", 0 ) /* YMZ280B-F samples */
+ ROM_LOAD( "mbx-03.13j", 0x00000, 0x200000, CRC(061632bc) SHA1(7900ac56e59f4a4e5768ce72f4a4b7c5875f5ae8) )
+
+ ROM_REGION( 0x200, "gals", 0 )
+ ROM_LOAD( "GAL16V8B.10J.bin", 0x000, 0x117, CRC(06bbcbd5) SHA1(f7adb4bca13bb799bc42411eb178edfdc11a76c7) )
+ ROM_LOAD( "GAL16V8B.5D.bin", 0x000, 0x117, CRC(117784f0) SHA1(daf3720740621fc3af49333c96795718b693f4d2))
+ROM_END
+
+
/**********************************************************************************/
void deco156_state::descramble_sound( const char *tag )
@@ -677,3 +702,4 @@ GAME( 1993, hvysmsh, 0, hvysmsh, hvysmsh, deco156_state, hvysmsh, ROT0,
GAME( 1993, hvysmsha, hvysmsh, hvysmsh, hvysmsh, deco156_state, hvysmsh, ROT0, "Data East Corporation", "Heavy Smash (Asia version -4)", MACHINE_SUPPORTS_SAVE )
GAME( 1993, hvysmshj, hvysmsh, hvysmsh, hvysmsh, deco156_state, hvysmsh, ROT0, "Data East Corporation", "Heavy Smash (Japan version -2)", MACHINE_SUPPORTS_SAVE )
GAME( 1995, wcvol95, 0, wcvol95, wcvol95, deco156_state, wcvol95, ROT0, "Data East Corporation", "World Cup Volley '95 (Japan v1.0)", MACHINE_SUPPORTS_SAVE )
+GAME( 1995, wcvol95x, wcvol95, wcvol95, wcvol95, deco156_state, wcvol95, ROT0, "Data East Corporation", "World Cup Volley '95 Extra Version (Asia v2.0B)", MACHINE_SUPPORTS_SAVE )
diff --git a/src/mame/drivers/decwritr.cpp b/src/mame/drivers/decwritr.cpp
index 105a113d703..539b6768e03 100644
--- a/src/mame/drivers/decwritr.cpp
+++ b/src/mame/drivers/decwritr.cpp
@@ -291,7 +291,6 @@ INPUT_PORTS_END
void decwriter_state::machine_start()
{
- m_speaker->set_frequency(786); // TODO: LA120 speaker is controlled by asic; VT100 has: 7.945us per serial clock = ~125865.324hz, / 160 clocks per char = ~ 786 hz
#if 0
output().set_value("online_led",1);
output().set_value("local_led", 0);
@@ -341,7 +340,7 @@ static MACHINE_CONFIG_START( la120, decwriter_state )
/* audio hardware */
MCFG_SPEAKER_STANDARD_MONO("mono")
- MCFG_SOUND_ADD("beeper", BEEP, 0)
+ MCFG_SOUND_ADD("beeper", BEEP, 786) // TODO: LA120 speaker is controlled by asic; VT100 has: 7.945us per serial clock = ~125865.324hz, / 160 clocks per char = ~ 786 hz
MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.50)
/* i8251 */
diff --git a/src/mame/drivers/deshoros.cpp b/src/mame/drivers/deshoros.cpp
index c7fa5025d59..dac7f3a989d 100644
--- a/src/mame/drivers/deshoros.cpp
+++ b/src/mame/drivers/deshoros.cpp
@@ -12,7 +12,7 @@ It is not Y2K compliant.
Rough cpanel sketch:
- [LED-array dispay] 1 2 3 M
+ [LED-array display] 1 2 3 M
4 5 6 F
7 8 9 0
CLEAR ENTER
@@ -235,7 +235,7 @@ static INPUT_PORTS_START( destiny )
PORT_BIT( 0x10, IP_ACTIVE_HIGH, IPT_UNUSED )
PORT_BIT( 0x20, IP_ACTIVE_HIGH, IPT_UNUSED )
PORT_BIT( 0x40, IP_ACTIVE_HIGH, IPT_UNUSED )
- PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_COIN1 ) PORT_CHANGED_MEMBER(DEVICE_SELF, destiny_state, coin_inserted, (void *)nullptr)
+ PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_COIN1 ) PORT_CHANGED_MEMBER(DEVICE_SELF, destiny_state, coin_inserted, (void *)0)
PORT_START("SERVICE")
PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_SERVICE ) PORT_CHANGED_MEMBER(DEVICE_SELF, destiny_state, coin_inserted, (void *)1)
@@ -251,8 +251,6 @@ INPUT_PORTS_END
void destiny_state::machine_start()
{
- m_beeper->set_frequency(800); // TODO: determine exact frequency thru schematics
- m_beeper->set_state(0);
}
void destiny_state::machine_reset()
@@ -265,7 +263,7 @@ static MACHINE_CONFIG_START( destiny, destiny_state )
/* basic machine hardware */
MCFG_CPU_ADD("maincpu", M6809, XTAL_4MHz/2)
MCFG_CPU_PROGRAM_MAP(main_map)
- MCFG_CPU_PERIODIC_INT_DRIVER(destiny_state, irq0_line_hold, 60) // timer irq controls update speed, frequency needs to be determined yet (2MHz through three 74LS390)
+ MCFG_CPU_PERIODIC_INT_DRIVER(destiny_state, irq0_line_hold, 60) // timer irq controls update speed, frequency needs to be determined yet (2MHz through three 74LS390)
/* video hardware (dummy) */
MCFG_SCREEN_ADD("screen", RASTER)
@@ -278,10 +276,9 @@ static MACHINE_CONFIG_START( destiny, destiny_state )
MCFG_PALETTE_ADD("palette", 16)
-
/* sound hardware */
MCFG_SPEAKER_STANDARD_MONO("mono")
- MCFG_SOUND_ADD("beeper", BEEP, 0)
+ MCFG_SOUND_ADD("beeper", BEEP, 800) // TODO: determine exact frequency thru schematics
MCFG_SOUND_ROUTE(ALL_OUTPUTS,"mono",0.50)
MACHINE_CONFIG_END
diff --git a/src/mame/drivers/didact.cpp b/src/mame/drivers/didact.cpp
index 615b3c199c1..e5f74d458de 100644
--- a/src/mame/drivers/didact.cpp
+++ b/src/mame/drivers/didact.cpp
@@ -1,95 +1,84 @@
// license:BSD-3-Clause
// copyright-holders:Joakim Larsson Edstrom
/*
- * The Didact Esselte 100 CPU board
*__________________________________________________________________________________________________________
- * |
+ * The Didact Esselte 100 CPU board |
*__________________________________________________________________________________________________________|
*
- * The Didact Mikrodator 6802 CPU board by lars Björklund 1983
- *__________________________________________________________________________________________________________
- * |
- *__________________________________________________________________________________________________________|
- *
- * The Didact Mp68A CPU board, by Anders Andersson 1979
- *__________________________________________________________________________________________________________
- * 74138 |
- * +------+ +-------+ +--+ |
- * | 7402 | | 74490 | | | +-------+ +--+ |
- * +-------+ +------+ +-------+ | | | | | | |
- * | | 2112 2112 | | | EXP | | | |
- * | ROM | +--+ +--+ +--+ | ANS | |P | |
- * | 7641 | | | | | | ION | |I | |
- * | | |A | |B | +-----+ | BUSES | |A | |
- * | 512x8 | | | | | | | | (2 x) | | | |
- * | | +--+ +--+ | | | FOR | |A | |
- * +-------+ RAMS 4x256x4 | | | | | | |
- * ROMS 2x512x8 2112 2112 | | | KEY | |E | |
- * +-------+ +--+ +--+ |CPU | | BOARD | +------+ |X | |
- * | | | | | | |6800 | | | | | |P | |
- * | ROM | |A | |B | | | | AND | | | |A | |
- * | 7641 | | | | | | | | | | | |N | |
- * | | +--+ +--+ | | | I/O | | 6820 | |S | |
- * | 512x8 | 512 bytes RAM | | | BOARDS| | PIA | |I | |
- * +-------+ | | | | | #1 | |O | +-----+
- * 1024 bytes ROM | | | | | | |N | | |
- * +-----+ | | | | | | PIA A | |
- * 7402 7412 | | | | |B | EXPANSION| |
- * +--+ +--+ | | | | |U | CONNECTOR| |
- * | | | | | | | | |S | | _|
- * | | | | | | | | | | J4 | |
- * | | | | | | +------+ | | | |_
- * +--+ +--+ +--------+ | | | | | |
- * +-+ | 96LS02 | | | | | | |
- * R * * * R |T| +--------+ | | | | | |
- * O X A |R| | | | | | |
- * M * * * M |M| Oscillator circuits +-------+ +--+ | |
- * |_| J1 J2 J3 +-----+
- *__________________________________________________________________________________________________________|
- *
- * The Didact Mp68A Keypad and Display board, tb16a, Anders Andersson 1979
- *______________________________________________________
- * +oooo+ |
- * 6064 +-------+ |cass| |
- * +--+ | 9368 | +----+ +--+|
- * +-------+ |B | +-------+ | ||
- * | 74132 | |CD| 145 |E ||
- * +-------+ |DI| +--+ 132 |X ||
- * +------+------+ | S| | | +--+ |P ||
- * | | | | P| | | | | |A ||
- * | RES |(led) | +--+ | | | | |N ||
- * | | * | +--+ | | |S ||
- * +------+------+------+------+ +--+ |I ||
- * | | | | | |O ||
- * | ADR | RUN | SST | REG | |N ||
- * | 0 | 4 | 8 | C | | ||
- * +------+------+------+------+ |C ||
- * | | | | | |O ||
- * | STA | STO | BPR | BPS | |N ||
- * | 1 | 5 | 9 | D | |N ||
- * +------+------+------+------+ +------+ |E ||
- * | | | | | | | |C ||
- * | EXF | EXB | MOV | PRM | | | |T ||
- * | 2 | 6 | A | E | | | |O ||
- * +------+------+------+------+ | 6820 | |R ||
- * | | | | | | PIA | | ||
- * | CLR | REL | REC | PLA | | #2 | | ||
- * | 3 | 7 | B | F | | | | ||
- * +------+------+------+------+ | | | ||
- * +-------+ +-------+ +------+ | | | ||
- * | 74148 | | 74148 | | 7400 | | | | ||
- * +-------+ +-------+ +------+ | | +--+|
- * | | |
- * +---------+ +------+ J1 |
- *________| ___ |___________________________________|
- * | _|||_ |
- * /|_| |_|\
+ * ___________________________________________________________________________________________________________ _____________________________________________________
+ * | The Didact Mp68A CPU board, by Anders Andersson 1979 | |The Didact Mp68A keypad/display PB6 +oooo+ |
+ * | +------+ +-------+ +--+ | | by Anders Andersson 1979 +-------+ |cass| |
+ * | | 7402 | | 74490 | | | +-------+ +--+ | | +--+ | 9368 | +----+ +--+|
+ * | +-------+ +------+ +-------+ | | | | | | | |+-------+ 2x5082-|B | +-------+ | ||
+ * | | | 2112 2112 | | | EXP | | | | || 74132 | 7433|CD| 145 PA0-PA3 |E ||
+ * | | ROM | +--+ +--+ +--+ | ANS | |P | | |+-------+ |DI| +--+ 132 |X ||
+ * | | 7641 | | | | | | ION | |I | | |+------+------+ | S| | | +--+ |P ||
+ * | | | |A | |B | +-----+ | BUSES | |A | | || |SHIFT | | P| | | PA4-PA6 | | |A ||
+ * | | 512x8 | | | | | | | | (2 x) | | | | || RES |(led) | +--+ | | | | |N ||
+ * | | | +--+ +--+ | | | FOR | |A | | || | * | +--+ | | |S ||
+ * | +-------+ RAMS 4x256x4 | | | | | | | |+------+------+------+------+ +--+ |I ||
+ * | ROMS 2x512x8 2112 2112 | | | KEY | |E | | || | | | | |O ||
+ * | +-------+ +--+ +--+ |CPU | | BOARD | +------+ |X | | || ADR | RUN | SST | REG | |N ||
+ * | | | | | | | |6800 | | | | | |P | | || 0 | 4 | 8 | C | | ||
+ * | | ROM | |A | |B | | | | AND | | | |A | | |+------+------+------+------+ |C ||
+ * | | 7641 | | | | | | | | | | | |N | | || | | | | |O ||
+ * | | | +--+ +--+ | | | I/O | | 6820 | |S | | || STA | STO | BPR | BPS | |N ||
+ * | | 512x8 | 512 bytes RAM | | | BOARDS| | PIA | |I | | || 1 | 5 | 9 | D | |N ||
+ * | +-------+ | | | | | #1 | |O | +-----+ |+------+------+------+------+ +------+ |E ||
+ * | 1024 bytes ROM | | | | | | |N | | | || | | | | | | |C ||
+ * | +-----+ | | | | | | PIA A | | || EXF | EXB | MOV | PRM | | | |T ||
+ * | 7402 7412 | | | | |B | EXPANSION| | || 2 | 6 | A | E | | | |O ||
+ * | +--+ +--+ | | | | |U | CONNECTOR| | |+------+------+------+------+ | 6820 | |R ||
+ * | | | | | | | | | |S | | _| || | | | | | PIA | | ||
+ * | | | | | | | | | | | J4 | | || CLR | REL | REC | PLA | | #2 | | ||
+ * | | | | | | | +------+ | | | |_ || 3 | 7 | B | F | | | | ||
+ * | +--+ +--+ +--------+ | | | | | | |+------+------+------+------+ | | | ||
+ * | +-+ | 96LS02 | | | | | | | | +-------+ +-------+ +------+ | | | ||
+ * | R * * * R |T| +--------+ | | | | | | | | 74148 | | 74148 | | 7400 | | | | ||
+ * | O X A |R| | | | | | | | +-------+ +-------+ +------+ | | +--+|
+ * | M * * * M |M| Oscillator circuits +-------+ +--+ | | | PB3 PB0-PB2 | | |
+ * | |_| J1 J2 J3 +-----+ | +---------+ +------+ J1 |
+ * |____________________________________________________________________________________________________________| |______ | _|||_ |___________________________________|
*
+ * _____________________________________________________________________________________________ ___________________________________________________________________________
+ * |The Didact Mikrodator 6802 CPU board by Lars Bjorklund 1983 ( ) | |The Didact Mikrodator 6802 TB16 board by Lars Bj??rklund 1983 |
+ * | +----= | | +-|||||||-+ ______ |
+ * | | = | | CA2 Tx |terminal | | () | |
+ * | | = | | PA7 Rx +---------+ +----------+ C1nF,<=R18k| | |
+ * | Photo of CPU board mainly covered by TB16 Keypad/Display board +--- = | | CA1 DTR +-----------+ | | CB2->CB1 | E | |
+ * | | | PA4-PA6 | | 1 | BCD | +----+ | X | |
+ * | | | ------->| 74LS145 | | digit 5 | |LS | | P | |
+ * | | | +-----------+ |----------| | 122| | A | |
+ * | +-----=| | | | | | | | N | |
+ * | +-------+ | =| |------ +--------+ | 2 | BCD | | | | S | |
+ * | | | | =| | RES* | SHIFT | LED( ) | | digit 4 | | | | I | |
+ * | | | | =| | | '*' | CA2 v |----------| +----+ | O | |
+ * | | 6821 | | =| | PA3 |PA7 PA2 | PA1 PA0 | | +----| N | |
+ * | | PIA | | =| |----|--+-----|--+--|-----+--|---+ 3 | | PB0-|LS | | |
+ * | | | | =| | v | v | v | v | | BCD | PB7| 244| C | |
+ * | | | | =| | ADR | RUN | SST | CON | 1 | digit 3 | --->| | O | |
+ * | | | | =| | 0 | 4 | 8 | C | |----------| | | N | |
+ * | | | | =| |-------+--------+--------+------+ | |<-------| | N | |
+ * | | | | =| | | | | | 4 | | +----| E | |
+ * | | | | =| | STA | BPS | USERV | | 2 | BCD | | C | |
+ * | | | | =| | 1 | 5 | 9 | D | | digit 2 | | T | |
+ * | | | | =| |-------+--------+--------+------+ |----------| | O | |
+ * | | | | =| | | | | | | | | R | |
+ * | | | | =| | EXF | EXB | MOV | LOAD | 3 5 | BCD | | | |
+ * | | | | =| | 2 | 6 | A | E | | digit 1 | | | |
+ * | +-------+ | =| |-------+--------+--------+------+ |----------| | | |
+ * | | =| | | | | | | | | | |
+ * | +-----=| | CLR | SP | USERJ | FLAG | 4 6 | BCD | | | |
+ * | | | 3 | 7 | B | F | | digit 0 | | () | |
+ * | | |-------+--------+--------+------+ +----------+ +------+ |
+ * | | | |
+ * | | | |
+ * |____________________________________________________________________________________________| |___________________________________________________________________________|
*
* History of Didact
*------------------
- * Didact Läromedelsproduktion was started in Linköping in Sweden by Anders Andersson, Arne Kullbjer and
- * Lars Björklund. They constructed a series of microcomputers for educational purposes such as "Mikrodator 6802",
+ * Didact Laromedelsproduktion was started in Linkoping in Sweden by Anders Andersson, Arne Kullbjer and
+ * Lars Bjorklund. They constructed a series of microcomputers for educational purposes such as "Mikrodator 6802",
* Esselte 100 and the Candela computer for the swedish schools to educate the students in assembly programming
* and BASIC for electro mechanical applications such as stepper motors, simple process control, buttons
* and LED:s. Didact designs were marketed by Esselte Studium to the swedish schools. The Candela computer
@@ -98,20 +87,20 @@
*
* Misc links about the boards supported by this driver.
*-----------------------------------------------------
- * http://www.elektronikforumet.com/forum/viewtopic.php?f=11&t=51424
+ * http://elektronikforumet.com/forum/viewtopic.php?f=11&t=51424
* http://kilroy71.fastmail.fm/gallery/Miscellaneous/20120729_019.jpg
* http://elektronikforumet.com/forum/download/file.php?id=63988&mode=view
* http://elektronikforumet.com/forum/viewtopic.php?f=2&t=79576&start=150#p1203915
*
* TODO:
- * Didact designs: mp68a, md6802, Esselte 100, Candela
+ * Didact designs: mp68a, md6802, md6802v3, Esselte 100, Candela
* --------------------------------------------------------------------------
- * - Add PCB layouts OK
+ * - Add PCB layouts OK OK
* - Dump ROM:s, OK OK
- * - Keyboard OK
- * - Display/CRT OK
- * - Clickable Artwork RQ
- * - Sound NA
+ * - Keyboard OK OK
+ * - Display/CRT OK OK
+ * - Clickable Artwork RQ RQ
+ * - Sound NA NA
* - Cassette i/f
* - Expansion bus
* - Expansion overlay
@@ -121,12 +110,16 @@
#include "emu.h"
#include "cpu/m6800/m6800.h"
#include "machine/6821pia.h" // For all boards
-#include "video/dm9368.h" // For the mp68a
+#include "video/dm9368.h" // For the mp68a
+#include "machine/74145.h" // For the md6802
+// Generated artwork includes
+#include "mp68a.lh"
+#include "md6802.lh"
#define VERBOSE 0
#define LOG(x) do { if (VERBOSE) logerror x; } while (0)
-#if VERBOSE == 2
+#if VERBOSE >= 2
#define logerror printf
#endif
@@ -136,62 +129,191 @@
#define FUNCNAME __PRETTY_FUNCTION__
#endif
+/* Didact base class */
+class didact_state : public driver_device
+{
+ public:
+ didact_state(const machine_config &mconfig, device_type type, const char * tag)
+ : driver_device(mconfig, type, tag)
+ ,m_io_line0(*this, "LINE0")
+ ,m_io_line1(*this, "LINE1")
+ ,m_io_line2(*this, "LINE2")
+ ,m_io_line3(*this, "LINE3")
+ ,m_io_line4(*this, "LINE4")
+ ,m_line0(0)
+ ,m_line1(0)
+ ,m_line2(0)
+ ,m_line3(0)
+ ,m_reset(0)
+ ,m_shift(0)
+ ,m_led(0)
+ { }
+ required_ioport m_io_line0;
+ required_ioport m_io_line1;
+ required_ioport m_io_line2;
+ required_ioport m_io_line3;
+ required_ioport m_io_line4;
+ UINT8 m_line0;
+ UINT8 m_line1;
+ UINT8 m_line2;
+ UINT8 m_line3;
+ UINT8 m_reset;
+ UINT8 m_shift;
+ UINT8 m_led;
+ TIMER_DEVICE_CALLBACK_MEMBER(scan_artwork);
+};
+
/* Esselte 100 driver class */
-class e100_state : public driver_device
+class e100_state : public didact_state
{
- public:
- e100_state(const machine_config &mconfig, device_type type, const char *tag)
- : driver_device(mconfig, type, tag),
+ public:
+ e100_state(const machine_config &mconfig, device_type type, const char * tag)
+ : didact_state(mconfig, type, tag),
m_maincpu(*this, "maincpu"),
m_pia1(*this, "pia1"),
m_pia2(*this, "pia2")
- { }
+ { }
required_device<m6802_cpu_device> m_maincpu;
-
+ virtual void machine_reset() override { m_maincpu->reset(); LOG(("--->%s()\n", FUNCNAME)); };
protected:
required_device<pia6821_device> m_pia1;
required_device<pia6821_device> m_pia2;
};
/* Mikrodator 6802 driver class */
-class md6802_state : public driver_device
+class md6802_state : public didact_state
{
- public:
- md6802_state(const machine_config &mconfig, device_type type, const char *tag)
- : driver_device(mconfig, type, tag),
- m_maincpu(*this, "maincpu"),
- m_pia1(*this, "pia1"),
- m_pia2(*this, "pia2")
- { }
+ public:
+ md6802_state(const machine_config &mconfig, device_type type, const char * tag)
+ : didact_state(mconfig, type, tag)
+ ,m_maincpu(*this, "maincpu")
+ ,m_tb16_74145(*this, "tb16_74145")
+ ,m_segments(0)
+ ,m_pia1(*this, "pia1")
+ ,m_pia2(*this, "pia2")
+ { }
required_device<m6802_cpu_device> m_maincpu;
+ required_device<ttl74145_device> m_tb16_74145;
+ UINT8 m_segments;
+ DECLARE_READ8_MEMBER( pia2_kbA_r );
+ DECLARE_WRITE8_MEMBER( pia2_kbA_w );
+ DECLARE_READ8_MEMBER( pia2_kbB_r );
+ DECLARE_WRITE8_MEMBER( pia2_kbB_w );
+ DECLARE_WRITE_LINE_MEMBER( pia2_ca2_w);
+ virtual void machine_reset() override;
+ virtual void machine_start() override;
protected:
required_device<pia6821_device> m_pia1;
required_device<pia6821_device> m_pia2;
};
+/* Keyboard */
+READ8_MEMBER( md6802_state::pia2_kbA_r )
+{
+ UINT8 ls145;
+ UINT8 pa = 0xff;
+
+ // Read out the selected column
+ ls145 = m_tb16_74145->read() & 0x0f;
+
+ // read out the artwork, line04 is handled by the timer
+ m_line0 = m_io_line0->read();
+ m_line1 = m_io_line1->read();
+ m_line2 = m_io_line2->read();
+ m_line3 = m_io_line3->read();
+
+#if VERBOSE > 2
+ if ((m_line0 | m_line1 | m_line2 | m_line3) != 0)
+ LOG(("%s()-->%02x %02x %02x %02x modified by %02x displaying %02x\n", FUNCNAME, m_line0, m_line1, m_line2, m_line3, m_shift, ls145));
+#endif
+
+ // Mask out those rows that has a button pressed
+ pa &= ~(((~m_line0 & ls145 ) != 0) ? 1 : 0);
+ pa &= ~(((~m_line1 & ls145 ) != 0) ? 2 : 0);
+ pa &= ~(((~m_line2 & ls145 ) != 0) ? 4 : 0);
+ pa &= ~(((~m_line3 & ls145 ) != 0) ? 8 : 0);
+
+ if (m_shift)
+ {
+ pa &= 0x7f; // Clear shift bit if button being pressed (PA7) to ground (internal pullup)
+ LOG( ("SHIFT is pressed\n") );
+ }
+
+#if VERBOSE > 2
+ if ((m_line0 | m_line1 | m_line2 | m_line3) != 0)
+ LOG(("%s()-->LINE: 0:%02x 1:%02x 2:%02x 3:%02x SHIFT:%02x LS145:%02x PA:%02x\n", FUNCNAME, m_line0, m_line1, m_line2, m_line3, m_shift, ls145, pa));
+#endif
+
+ return pa;
+}
+
+/* Pull the cathodes low enabling the correct digit and lit the segments held by port B */
+WRITE8_MEMBER( md6802_state::pia2_kbA_w )
+{
+ UINT8 digit_nbr;
+
+// LOG(("--->%s(%02x)\n", FUNCNAME, data));
+
+ digit_nbr = (data >> 4) & 0x07;
+ m_tb16_74145->write( digit_nbr );
+ if (digit_nbr < 6)
+ {
+ output().set_digit_value( digit_nbr, m_segments);
+ }
+}
+
+/* PIA 2 Port B is all outputs to drive the display so it is very unlikelly that this function is called */
+READ8_MEMBER( md6802_state::pia2_kbB_r )
+{
+ LOG( ("Warning, trying to read from Port B designated to drive the display, please check why\n") );
+ logerror("Warning, trying to read from Port B designated to drive the display, please check why\n");
+ return 0;
+}
+
+/* Port B is fully used ouputting the segment pattern to the display */
+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);
+}
+
+WRITE_LINE_MEMBER( md6802_state::pia2_ca2_w )
+{
+ LOG(("--->%s(%02x) LED is connected through resisitor to +5v so logical 0 will lit it\n", FUNCNAME, state));
+ output().set_led_value(m_led, !state);
+ m_shift = !state;
+}
+
+void md6802_state::machine_start()
+{
+ LOG(("--->%s()\n", FUNCNAME));
+ save_item(NAME(m_shift));
+ save_item(NAME(m_led));
+ save_item(NAME(m_reset));
+}
+
+void md6802_state::machine_reset()
+{
+ LOG(("--->%s()\n", FUNCNAME));
+ m_led = 1;
+ m_maincpu->reset();
+}
/* Didact mp68a driver class */
+
// Just a statement that the real mp68a hardware was designed with 6820 and not 6821
// They are functional equivalents BUT has different electrical characteristics.
#define pia6820_device pia6821_device
#define PIA6820 PIA6821
-class mp68a_state : public driver_device
+class mp68a_state : public didact_state
{
- public:
- mp68a_state(const machine_config &mconfig, device_type type, const char *tag)
- : driver_device(mconfig, type, tag)
- ,m_maincpu(*this, "maincpu")
- ,m_io_line0(*this, "LINE0")
- ,m_io_line1(*this, "LINE1")
- ,m_io_line2(*this, "LINE2")
- ,m_io_line3(*this, "LINE3")
- ,m_io_line4(*this, "LINE4")
- ,m_line0(0)
- ,m_line1(0)
- ,m_line2(0)
- ,m_line3(0)
- ,m_shift(0)
+ public:
+ mp68a_state(const machine_config &mconfig, device_type type, const char * tag)
+ : didact_state(mconfig, type, tag)
+ ,m_maincpu(*this, "maincpu")
,m_digit0(*this, "digit0")
,m_digit1(*this, "digit1")
,m_digit2(*this, "digit2")
@@ -200,22 +322,11 @@ class mp68a_state : public driver_device
,m_digit5(*this, "digit5")
,m_pia1(*this, "pia1")
,m_pia2(*this, "pia2")
- { }
+ { }
required_device<m6800_cpu_device> m_maincpu;
- required_ioport m_io_line0;
- required_ioport m_io_line1;
- required_ioport m_io_line2;
- required_ioport m_io_line3;
- required_ioport m_io_line4;
- UINT8 m_line0;
- UINT8 m_line1;
- UINT8 m_line2;
- UINT8 m_line3;
- UINT8 m_shift;
-
- // The display segment driver device
+ // The display segment driver device (there is actually just one, needs rewrite to be correct)
required_device<dm9368_device> m_digit0;
required_device<dm9368_device> m_digit1;
required_device<dm9368_device> m_digit2;
@@ -229,8 +340,8 @@ class mp68a_state : public driver_device
DECLARE_WRITE8_MEMBER( pia2_kbB_w );
DECLARE_READ_LINE_MEMBER( pia2_cb1_r );
+ virtual void machine_reset() override;
virtual void machine_start() override;
- TIMER_DEVICE_CALLBACK_MEMBER(scan_artwork);
protected:
required_device<pia6820_device> m_pia1;
required_device<pia6820_device> m_pia2;
@@ -245,7 +356,7 @@ READ8_MEMBER( mp68a_state::pia2_kbA_r )
WRITE8_MEMBER( mp68a_state::pia2_kbA_w )
{
- UINT8 m_lednum;
+ UINT8 digit_nbr;
#if VERBOSE > 1
static UINT8 display[] = {' ',' ',' ',' ',' ',' ',' ',' ','\0'};
@@ -254,9 +365,11 @@ WRITE8_MEMBER( mp68a_state::pia2_kbA_w )
/* Display memory is at $702 to $708 in AAAADD format (A=address digit, D=Data digit)
but we are using data read from the port. */
- m_lednum = (data >> 4) & 0x07;
+ digit_nbr = (data >> 4) & 0x07;
- switch (m_lednum)
+ /* There is actually only one 9368 and a 74145 to drive the cathode of the right digit low */
+ /* This can be emulated by prentending there are one 9368 per digit, at least for now */
+ switch (digit_nbr)
{
case 0: m_digit0->a_w(data & 0x0f); break;
case 1: m_digit1->a_w(data & 0x0f); break;
@@ -265,7 +378,7 @@ WRITE8_MEMBER( mp68a_state::pia2_kbA_w )
case 4: m_digit4->a_w(data & 0x0f); break;
case 5: m_digit5->a_w(data & 0x0f); break;
case 7: break; // used as an 'unselect' by the ROM between digit accesses.
- default: logerror("Wrong digit index %d\n", m_lednum);
+ default: logerror("Invalid digit index %d\n", digit_nbr);
}
#if VERBOSE > 1
@@ -277,7 +390,7 @@ WRITE8_MEMBER( mp68a_state::pia2_kbA_w )
READ8_MEMBER( mp68a_state::pia2_kbB_r )
{
UINT8 a012, line, pb;
-
+
LOG(("--->%s %02x %02x %02x %02x %02x => ", FUNCNAME, m_line0, m_line1, m_line2, m_line3, m_shift));
a012 = 0;
@@ -293,12 +406,13 @@ READ8_MEMBER( mp68a_state::pia2_kbB_r )
while (a012 > 0 && !(line & (1 << --a012)));
}
- pb = a012; // A0-A2 -> PB0-PB3
+ pb = a012; // A0-A2 -> PB0-PB3
+
if (m_shift)
{
- pb |= 0x80; // Set shift bit (PB7)
+ pb |= 0x80; // Set shift bit (PB7)
m_shift = 0; // Reset flip flop
- output().set_led_value(0, m_shift);
+ output().set_led_value(m_led, m_shift);
LOG( ("SHIFT is released\n") );
}
@@ -327,12 +441,20 @@ READ_LINE_MEMBER( mp68a_state::pia2_cb1_r )
return (m_line0 | m_line1 | m_line2 | m_line3) != 0 ? 0 : 1;
}
+void mp68a_state::machine_reset()
+{
+ LOG(("--->%s()\n", FUNCNAME));
+ m_maincpu->reset();
+}
+
void mp68a_state::machine_start()
{
LOG(("--->%s()\n", FUNCNAME));
/* register for state saving */
save_item(NAME(m_shift));
+ save_item(NAME(m_led));
+ save_item(NAME(m_reset));
}
// This map is derived from info in "TEMAL 100 - teknisk manual Esselte 100"
@@ -341,7 +463,7 @@ static ADDRESS_MAP_START( e100_map, AS_PROGRAM, 8, e100_state )
AM_RANGE(0xc000, 0xc3ff) AM_RAM AM_SHARE("videoram")
AM_RANGE(0xc808, 0xc80b) AM_DEVREADWRITE("pia1", pia6821_device, read, write)
AM_RANGE(0xc810, 0xc813) AM_DEVREADWRITE("pia2", pia6821_device, read, write)
- AM_RANGE(0xd000, 0xffff) AM_ROM AM_REGION("maincpu", 0xd0000)
+ AM_RANGE(0xd000, 0xffff) AM_ROM AM_REGION("maincpu", 0xd000)
ADDRESS_MAP_END
// This address map is traced from schema
@@ -366,35 +488,67 @@ static INPUT_PORTS_START( e100 )
INPUT_PORTS_END
static INPUT_PORTS_START( md6802 )
+ PORT_START("LINE0") /* KEY ROW 0 */
+ PORT_BIT(0x01, 0x01, IPT_KEYBOARD) PORT_NAME("0") PORT_CODE(KEYCODE_0) PORT_CHAR('0')
+ PORT_BIT(0x02, 0x02, IPT_KEYBOARD) PORT_NAME("1") PORT_CODE(KEYCODE_1) PORT_CHAR('1')
+ PORT_BIT(0x04, 0x04, IPT_KEYBOARD) PORT_NAME("2") PORT_CODE(KEYCODE_2) PORT_CHAR('2')
+ PORT_BIT(0x08, 0x08, IPT_KEYBOARD) PORT_NAME("3") PORT_CODE(KEYCODE_3) PORT_CHAR('3')
+ PORT_BIT(0xf0, 0x00, IPT_UNUSED )
+
+ PORT_START("LINE1") /* KEY ROW 1 */
+ PORT_BIT(0x01, 0x01, IPT_KEYBOARD) PORT_NAME("4") PORT_CODE(KEYCODE_4) PORT_CHAR('4')
+ PORT_BIT(0x02, 0x02, IPT_KEYBOARD) PORT_NAME("5") PORT_CODE(KEYCODE_5) PORT_CHAR('5')
+ PORT_BIT(0x04, 0x04, IPT_KEYBOARD) PORT_NAME("6") PORT_CODE(KEYCODE_6) PORT_CHAR('6')
+ PORT_BIT(0x08, 0x08, IPT_KEYBOARD) PORT_NAME("7") PORT_CODE(KEYCODE_7) PORT_CHAR('7')
+ PORT_BIT(0xf0, 0x00, IPT_UNUSED )
+
+ PORT_START("LINE2") /* KEY ROW 2 */
+ PORT_BIT(0x01, 0x01, IPT_KEYBOARD) PORT_NAME("8") PORT_CODE(KEYCODE_8) PORT_CHAR('8')
+ PORT_BIT(0x02, 0x02, IPT_KEYBOARD) PORT_NAME("9") PORT_CODE(KEYCODE_9) PORT_CHAR('9')
+ PORT_BIT(0x04, 0x04, IPT_KEYBOARD) PORT_NAME("A") PORT_CODE(KEYCODE_A) PORT_CHAR('A')
+ PORT_BIT(0x08, 0x08, IPT_KEYBOARD) PORT_NAME("B") PORT_CODE(KEYCODE_B) PORT_CHAR('B')
+ PORT_BIT(0xf0, 0x00, IPT_UNUSED )
+
+ PORT_START("LINE3") /* KEY ROW 3 */
+ PORT_BIT(0x01, 0x01, IPT_KEYBOARD) PORT_NAME("C") PORT_CODE(KEYCODE_C) PORT_CHAR('C')
+ PORT_BIT(0x02, 0x02, IPT_KEYBOARD) PORT_NAME("D") PORT_CODE(KEYCODE_D) PORT_CHAR('D')
+ PORT_BIT(0x04, 0x04, IPT_KEYBOARD) PORT_NAME("E") PORT_CODE(KEYCODE_E) PORT_CHAR('E')
+ PORT_BIT(0x08, 0x08, IPT_KEYBOARD) PORT_NAME("F") PORT_CODE(KEYCODE_F) PORT_CHAR('F')
+ PORT_BIT(0xf0, 0x00, IPT_UNUSED )
+
+ PORT_START("LINE4") /* Special KEY ROW for reset and Shift/'*' keys */
+ PORT_BIT(0x08, 0x00, IPT_KEYBOARD) PORT_NAME("*") PORT_CODE(KEYCODE_LSHIFT) PORT_CODE(KEYCODE_RSHIFT) PORT_CHAR('*')
+ PORT_BIT(0x04, 0x00, IPT_KEYBOARD) PORT_NAME("Reset") PORT_CODE(KEYCODE_F12)
+ PORT_BIT(0xf3, 0x00, IPT_UNUSED )
INPUT_PORTS_END
static INPUT_PORTS_START( mp68a )
PORT_START("LINE0") /* KEY ROW 0 */
- PORT_BIT(0x10, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_NAME("C") PORT_CODE(KEYCODE_C) PORT_CHAR('C')
- PORT_BIT(0x20, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_NAME("D") PORT_CODE(KEYCODE_D) PORT_CHAR('D')
- PORT_BIT(0x40, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_NAME("E") PORT_CODE(KEYCODE_E) PORT_CHAR('E')
- PORT_BIT(0x80, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_NAME("F") PORT_CODE(KEYCODE_F) PORT_CHAR('F')
+ PORT_BIT(0x10, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_NAME("C") PORT_CODE(KEYCODE_C) PORT_CHAR('C')
+ PORT_BIT(0x20, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_NAME("D") PORT_CODE(KEYCODE_D) PORT_CHAR('D')
+ PORT_BIT(0x40, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_NAME("E") PORT_CODE(KEYCODE_E) PORT_CHAR('E')
+ PORT_BIT(0x80, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_NAME("F") PORT_CODE(KEYCODE_F) PORT_CHAR('F')
PORT_BIT(0x0f, IP_ACTIVE_HIGH, IPT_UNUSED )
PORT_START("LINE1") /* KEY ROW 1 */
- PORT_BIT(0x01, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_NAME("8") PORT_CODE(KEYCODE_8) PORT_CHAR('8')
- PORT_BIT(0x02, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_NAME("9") PORT_CODE(KEYCODE_9) PORT_CHAR('9')
- PORT_BIT(0x04, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_NAME("A") PORT_CODE(KEYCODE_A) PORT_CHAR('A')
- PORT_BIT(0x08, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_NAME("B") PORT_CODE(KEYCODE_B) PORT_CHAR('B')
+ PORT_BIT(0x01, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_NAME("8") PORT_CODE(KEYCODE_8) PORT_CHAR('8')
+ PORT_BIT(0x02, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_NAME("9") PORT_CODE(KEYCODE_9) PORT_CHAR('9')
+ PORT_BIT(0x04, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_NAME("A") PORT_CODE(KEYCODE_A) PORT_CHAR('A')
+ PORT_BIT(0x08, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_NAME("B") PORT_CODE(KEYCODE_B) PORT_CHAR('B')
PORT_BIT(0xf0, IP_ACTIVE_HIGH, IPT_UNUSED )
PORT_START("LINE2") /* KEY ROW 2 */
- PORT_BIT(0x10, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_NAME("4") PORT_CODE(KEYCODE_4) PORT_CHAR('4')
- PORT_BIT(0x20, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_NAME("5") PORT_CODE(KEYCODE_5) PORT_CHAR('5')
- PORT_BIT(0x40, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_NAME("6") PORT_CODE(KEYCODE_6) PORT_CHAR('6')
- PORT_BIT(0x80, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_NAME("7") PORT_CODE(KEYCODE_7) PORT_CHAR('7')
+ PORT_BIT(0x10, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_NAME("4") PORT_CODE(KEYCODE_4) PORT_CHAR('4')
+ PORT_BIT(0x20, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_NAME("5") PORT_CODE(KEYCODE_5) PORT_CHAR('5')
+ PORT_BIT(0x40, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_NAME("6") PORT_CODE(KEYCODE_6) PORT_CHAR('6')
+ PORT_BIT(0x80, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_NAME("7") PORT_CODE(KEYCODE_7) PORT_CHAR('7')
PORT_BIT(0x0f, IP_ACTIVE_HIGH, IPT_UNUSED )
PORT_START("LINE3") /* KEY ROW 3 */
- PORT_BIT(0x01, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_NAME("0") PORT_CODE(KEYCODE_0) PORT_CHAR('0')
- PORT_BIT(0x02, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_NAME("1") PORT_CODE(KEYCODE_1) PORT_CHAR('1')
- PORT_BIT(0x04, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_NAME("2") PORT_CODE(KEYCODE_2) PORT_CHAR('2')
- PORT_BIT(0x08, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_NAME("3") PORT_CODE(KEYCODE_3) PORT_CHAR('3')
+ PORT_BIT(0x01, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_NAME("0") PORT_CODE(KEYCODE_0) PORT_CHAR('0')
+ PORT_BIT(0x02, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_NAME("1") PORT_CODE(KEYCODE_1) PORT_CHAR('1')
+ PORT_BIT(0x04, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_NAME("2") PORT_CODE(KEYCODE_2) PORT_CHAR('2')
+ PORT_BIT(0x08, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_NAME("3") PORT_CODE(KEYCODE_3) PORT_CHAR('3')
PORT_BIT(0xf0, IP_ACTIVE_HIGH, IPT_UNUSED )
PORT_START("LINE4") /* Special KEY ROW for reset and Shift/'*' keys */
@@ -403,31 +557,41 @@ static INPUT_PORTS_START( mp68a )
PORT_BIT(0xf3, IP_ACTIVE_HIGH, IPT_UNUSED )
INPUT_PORTS_END
-TIMER_DEVICE_CALLBACK_MEMBER(mp68a_state::scan_artwork)
+TIMER_DEVICE_CALLBACK_MEMBER(didact_state::scan_artwork)
{
- // LOG(("--->%s()\n", FUNCNAME));
+ // LOG(("--->%s()\n", FUNCNAME));
// Poll the artwork Reset key
if ( (m_io_line4->read() & 0x04) )
{
LOG( ("RESET is pressed, resetting the CPU\n") );
m_shift = 0;
- output().set_led_value(0, m_shift);
- m_maincpu->reset();
-
+ output().set_led_value(m_led, m_shift); // For mp68a only
+ if (m_reset == 0)
+ {
+ machine_reset();
+ }
+ m_reset = 1; // Inhibit multiple resets
}
- // Poll the artwork SHIFT/* key
+ // Poll the artwork SHIFT/* key
else if ( (m_io_line4->read() & 0x08) )
{
- LOG( ("SHIFT is set\n") );
+ LOG( ("%s", !m_shift ? "SHIFT is set\n" : "") );
m_shift = 1;
- output().set_led_value(0, m_shift);
+ output().set_led_value(m_led, m_shift); // For mp68a only
+ }
+ else
+ {
+ if (m_reset == 1)
+ {
+ m_reset = 0; // Enable reset again
+ }
}
}
static MACHINE_CONFIG_START( e100, e100_state )
- MCFG_CPU_ADD("maincpu", M6802, XTAL_4MHz/4)
+ MCFG_CPU_ADD("maincpu", M6802, XTAL_4MHz)
MCFG_CPU_PROGRAM_MAP(e100_map)
/* devices */
@@ -436,17 +600,42 @@ static MACHINE_CONFIG_START( e100, e100_state )
MACHINE_CONFIG_END
static MACHINE_CONFIG_START( md6802, md6802_state )
- MCFG_CPU_ADD("maincpu", M6802, XTAL_4MHz/4)
+ MCFG_CPU_ADD("maincpu", M6802, XTAL_4MHz)
MCFG_CPU_PROGRAM_MAP(md6802_map)
+ MCFG_DEFAULT_LAYOUT(layout_md6802)
- /* devices */
+ /* Devices */
+ MCFG_DEVICE_ADD("tb16_74145", TTL74145, 0)
+ /* PIA #1 0xA000-0xA003 - used differently by laborations and loaded software */
MCFG_DEVICE_ADD("pia1", PIA6821, 0)
+
+ /* PIA #2 Keyboard & Display 0xC000-0xC003 */
MCFG_DEVICE_ADD("pia2", PIA6821, 0)
+ /* --init----------------------- */
+ /* 0xE007 0xC002 (DDR B) = 0xFF - Port B all outputs and set to 0 (zero) */
+ /* 0xE00B 0xC000 (DDR A) = 0x70 - Port A three outputs and set to 0 (zero) */
+ /* 0xE00F 0xC001 (Control A) = 0x3C - */
+ /* 0xE013 0xC003 (Control B) = 0x3C - */
+ /* --execution-wait for key loop-- */
+ /* 0xE026 0xC000 = (Reading Port A) */
+ /* 0xE033 0xC000 = (Reading Port A) */
+ /* 0xE068 0xC000 (Port A) = 0x60 */
+ /* 0xE08A 0xC002 (Port B) = 0xEE - updating display */
+ /* 0xE090 0xC000 (Port A) = 0x00 - looping in 0x10,0x20,0x30,0x40,0x50 */
+ MCFG_PIA_WRITEPA_HANDLER(WRITE8(md6802_state, pia2_kbA_w))
+ MCFG_PIA_READPA_HANDLER(READ8(md6802_state, pia2_kbA_r))
+ MCFG_PIA_WRITEPB_HANDLER(WRITE8(md6802_state, pia2_kbB_w))
+ MCFG_PIA_READPB_HANDLER(READ8(md6802_state, pia2_kbB_r))
+ MCFG_PIA_CA2_HANDLER(WRITELINE(md6802_state, pia2_ca2_w))
+ MCFG_TIMER_DRIVER_ADD_PERIODIC("artwork_timer", md6802_state, scan_artwork, attotime::from_hz(10))
MACHINE_CONFIG_END
static MACHINE_CONFIG_START( mp68a, mp68a_state )
- MCFG_CPU_ADD("maincpu", M6800, XTAL_4MHz/4)
+ // Clock source is based on a N9602N Dual Retriggerable Resettable Monostable Multivibrator oscillator at aprox 505KHz.
+ // Trimpot seems broken/stuck at 5K Ohm thu. ROM code 1Ms delay loops suggest 1MHz+
+ MCFG_CPU_ADD("maincpu", M6800, 505000)
MCFG_CPU_PROGRAM_MAP(mp68a_map)
+ MCFG_DEFAULT_LAYOUT(layout_mp68a)
/* Devices */
/* PIA #1 0x500-0x503 - used differently by laborations and loaded software */
@@ -457,14 +646,14 @@ static MACHINE_CONFIG_START( mp68a, mp68a_state )
/* --init----------------------- */
/* 0x0BAF 0x601 (Control A) = 0x30 - CA2 is low and enable DDRA */
/* 0x0BB1 0x603 (Control B) = 0x30 - CB2 is low and enable DDRB */
- /* 0x0BB5 0x600 (DDR A) = 0xFF - Port A all outputs and set to 0 (zero) */
- /* 0x0BB9 0x602 (DDR B) = 0x50 - Port B two outputs and set to 0 (zero9 */
+ /* 0x0BB5 0x600 (DDR A) = 0xFF - Port A all outputs and set to 0 (zero) */
+ /* 0x0BB9 0x602 (DDR B) = 0x50 - Port B two outputs and set to 0 (zero) */
/* 0x0BBD 0x601 (Control A) = 0x34 - CA2 is low and lock DDRA */
/* 0x0BBF 0x603 (Control B) = 0x34 - CB2 is low and lock DDRB */
- /* 0x0BC3 0x602 (Port B) = 0x40 - Turn on display via RBI* on */
+ /* 0x0BC3 0x602 (Port B) = 0x40 - Turn on display via RBI* on */
/* --execution-wait for key loop-- */
- /* 0x086B Update display sequnc, see below */
- /* 0x0826 CB1 read = 0x603 (Control B) - is a key presssed? */
+ /* 0x086B Update display sequnc, see below */
+ /* 0x0826 CB1 read = 0x603 (Control B) - is a key presssed? */
MCFG_PIA_WRITEPA_HANDLER(WRITE8(mp68a_state, pia2_kbA_w))
MCFG_PIA_READPA_HANDLER(READ8(mp68a_state, pia2_kbA_r))
MCFG_PIA_WRITEPB_HANDLER(WRITE8(mp68a_state, pia2_kbB_w))
@@ -474,18 +663,18 @@ static MACHINE_CONFIG_START( mp68a, mp68a_state )
MCFG_PIA_IRQB_HANDLER(DEVWRITELINE("maincpu", m6800_cpu_device, irq_line)) /* Not used by ROM. Combined trace to CPU IRQ with IRQA */
/* Display - sequence outputting all '0':s at start */
- /* 0x086B 0x600 (Port A) = 0x00 */
- /* 0x086B 0x600 (Port A) = 0x70 */
- /* 0x086B 0x600 (Port A) = 0x10 */
- /* 0x086B 0x600 (Port A) = 0x70 */
- /* 0x086B 0x600 (Port A) = 0x20 */
- /* 0x086B 0x600 (Port A) = 0x70 */
- /* 0x086B 0x600 (Port A) = 0x30 */
- /* 0x086B 0x600 (Port A) = 0x70 */
- /* 0x086B 0x600 (Port A) = 0x40 */
- /* 0x086B 0x600 (Port A) = 0x70 */
- /* 0x086B 0x600 (Port A) = 0x50 */
- /* 0x086B 0x600 (Port A) = 0x70 */
+ /* 0x086B 0x600 (Port A) = 0x00 */
+ /* 0x086B 0x600 (Port A) = 0x70 */
+ /* 0x086B 0x600 (Port A) = 0x10 */
+ /* 0x086B 0x600 (Port A) = 0x70 */
+ /* 0x086B 0x600 (Port A) = 0x20 */
+ /* 0x086B 0x600 (Port A) = 0x70 */
+ /* 0x086B 0x600 (Port A) = 0x30 */
+ /* 0x086B 0x600 (Port A) = 0x70 */
+ /* 0x086B 0x600 (Port A) = 0x40 */
+ /* 0x086B 0x600 (Port A) = 0x70 */
+ /* 0x086B 0x600 (Port A) = 0x50 */
+ /* 0x086B 0x600 (Port A) = 0x70 */
MCFG_DEVICE_ADD("digit0", DM9368, 0)
MCFG_OUTPUT_INDEX(0)
MCFG_DEVICE_ADD("digit1", DM9368, 0)
@@ -500,7 +689,6 @@ static MACHINE_CONFIG_START( mp68a, mp68a_state )
MCFG_OUTPUT_INDEX(5)
MCFG_TIMER_DRIVER_ADD_PERIODIC("artwork_timer", mp68a_state, scan_artwork, attotime::from_hz(10))
-
MACHINE_CONFIG_END
// TODO: Get a ROM set
@@ -518,10 +706,6 @@ ROM_END
ROM_START( md6802 ) // ROM image from http://elektronikforumet.com/forum/viewtopic.php?f=2&t=79576&start=135#p1203640
ROM_REGION(0x10000, "maincpu", 0)
ROM_LOAD( "DIDACT.bin", 0xe000, 0x0800, CRC(50430b1d) SHA1(8e2172a9ae95b04f20aa14177df2463a286c8465) )
-// ROM_LOAD( "md6802-1.bin", 0xf800, 0xf9ff, CRC(0ff53e1f) SHA1(52002ee22c032775dac383d408c44abe9244724f) )
-// ROM_LOAD( "md6802-2.bin", 0xfa00, 0xfbff, CRC(0ff53e1f) SHA1(52002ee22c032775dac383d408c44abe9244724f) )
-// ROM_LOAD( "md6802-3.bin", 0xfc00, 0xfdff, CRC(0ff53e1f) SHA1(52002ee22c032775dac383d408c44abe9244724f) )
-// ROM_LOAD( "md6802-4.bin", 0xfe00, 0xffff, CRC(0ff53e1f) SHA1(52002ee22c032775dac383d408c44abe9244724f) )
ROM_END
ROM_START( mp68a ) // ROM image from http://elektronikforumet.com/forum/viewtopic.php?f=2&t=79576&start=135#p1203640
@@ -531,6 +715,6 @@ ROM_START( mp68a ) // ROM image from http://elektronikforumet.com/forum/viewtopi
ROM_END
// YEAR NAME PARENT COMPAT MACHINE INPUT CLASS INIT COMPANY FULLNAME FLAGS
-COMP( 1979, mp68a, 0, 0, mp68a, mp68a, driver_device, 0, "Didact AB", "mp68a", MACHINE_NO_SOUND_HW )
-COMP( 1982, e100, 0, 0, e100, e100, driver_device, 0, "Didact AB", "Esselte 100", MACHINE_IS_SKELETON )
-COMP( 1983, md6802, 0, 0, md6802, md6802, driver_device, 0, "Didact AB", "Mikrodator 6802", MACHINE_IS_SKELETON )
+COMP( 1979, mp68a, 0, 0, mp68a, mp68a, driver_device, 0, "Didact AB", "mp68a", MACHINE_NO_SOUND_HW )
+COMP( 1982, e100, 0, 0, e100, e100, driver_device, 0, "Didact AB", "Esselte 100", MACHINE_IS_SKELETON )
+COMP( 1983, md6802, 0, 0, md6802, md6802, driver_device, 0, "Didact AB", "Mikrodator 6802", MACHINE_NO_SOUND_HW )
diff --git a/src/mame/drivers/dim68k.cpp b/src/mame/drivers/dim68k.cpp
index ccbfe695144..57ca5cba7d1 100644
--- a/src/mame/drivers/dim68k.cpp
+++ b/src/mame/drivers/dim68k.cpp
@@ -39,7 +39,7 @@
#include "video/mc6845.h"
#include "machine/keyboard.h"
#include "machine/upd765.h"
-
+#include "softlist.h"
class dim68k_state : public driver_device
{
@@ -335,6 +335,9 @@ static MACHINE_CONFIG_START( dim68k, dim68k_state )
MCFG_DEVICE_ADD("keyboard", GENERIC_KEYBOARD, 0)
MCFG_GENERIC_KEYBOARD_CB(WRITE8(dim68k_state, kbd_put))
+
+ // software lists
+ MCFG_SOFTWARE_LIST_ADD("flop_list", "dim68k")
MACHINE_CONFIG_END
/*
diff --git a/src/mame/drivers/dkong.cpp b/src/mame/drivers/dkong.cpp
index 5314107fa8f..546ef915830 100644
--- a/src/mame/drivers/dkong.cpp
+++ b/src/mame/drivers/dkong.cpp
@@ -439,8 +439,6 @@ MACHINE_START_MEMBER(dkong_state,dkong2b)
{
m_hardware_type = HARDWARE_TKG04;
- m_snd_rom = memregion("soundcpu")->base();
-
save_item(NAME(m_decrypt_counter));
save_item(NAME(m_dma_latch));
}
diff --git a/src/mame/drivers/dynax.cpp b/src/mame/drivers/dynax.cpp
index f21c5308c78..e09b4e22c24 100644
--- a/src/mame/drivers/dynax.cpp
+++ b/src/mame/drivers/dynax.cpp
@@ -308,8 +308,7 @@ WRITE8_MEMBER(dynax_state::hnoridur_palette_w)
// hnoridur: R/W RAM
case 0x18:
{
- UINT8 *RAM = memregion("maincpu")->base() + 0x10000 + m_hnoridur_bank * 0x8000;
- RAM[offset] = data;
+ m_hnoridur_ptr[offset] = data;
return;
}
@@ -4336,6 +4335,9 @@ MACHINE_START_MEMBER(dynax_state,hnoridur)
UINT8 *ROM = memregion("maincpu")->base();
int bank_n = (memregion("maincpu")->bytes() - 0x10000) / 0x8000;
+ m_hnoridur_ptr = &ROM[0x10000 + 0x18 * 0x8000];
+ save_pointer(NAME(m_hnoridur_ptr), 0x8000);
+
membank("bank1")->configure_entries(0, bank_n, &ROM[0x10000], 0x8000);
MACHINE_START_CALL_MEMBER(dynax);
diff --git a/src/mame/drivers/electron.cpp b/src/mame/drivers/electron.cpp
index f1fbb97a804..dc1e2142212 100644
--- a/src/mame/drivers/electron.cpp
+++ b/src/mame/drivers/electron.cpp
@@ -206,7 +206,7 @@ static MACHINE_CONFIG_START( electron, electron_state )
MCFG_PALETTE_INIT_OWNER(electron_state, electron)
MCFG_SPEAKER_STANDARD_MONO( "mono" )
- MCFG_SOUND_ADD( "beeper", BEEP, 0 )
+ MCFG_SOUND_ADD( "beeper", BEEP, 300 )
MCFG_SOUND_ROUTE( ALL_OUTPUTS, "mono", 1.00 )
MCFG_CASSETTE_ADD( "cassette" )
diff --git a/src/mame/drivers/esd16.cpp b/src/mame/drivers/esd16.cpp
index 8ba0616585e..01f12b0de2b 100644
--- a/src/mame/drivers/esd16.cpp
+++ b/src/mame/drivers/esd16.cpp
@@ -826,6 +826,37 @@ ROM_START( multchmpk )
ROM_LOAD( "esd4.su10", 0x00000, 0x20000, CRC(6e741fcd) SHA1(742e0952916c00f67dd9f8d01e721a9a538d2fc4) )
ROM_END
+ROM_START( multchmpa )
+ ROM_REGION( 0x080000, "maincpu", 0 ) /* 68000 Code */
+ ROM_LOAD16_BYTE( "esd2.cu02", 0x000000, 0x040000, CRC(bfd39198) SHA1(11c0cb7a865daa1be9301ddfa5f5d2014e8f9908) )
+ ROM_LOAD16_BYTE( "esd1.cu03", 0x000001, 0x040000, CRC(cd769077) SHA1(741cca679393dab031691834874c96fee791241e) )
+
+ ROM_REGION( 0x40000, "audiocpu", 0 ) /* Z80 Code */
+ ROM_LOAD( "esd3.su01", 0x00000, 0x20000, CRC(7c178bd7) SHA1(8754d3c70d9b2bf369a5ce0cce4cc0696ed22750) )
+
+ ROM_REGION( 0x180000, "spr", 0 ) /* Sprites, 16x16x5 */
+ ROM_LOAD16_BYTE( "esd17.ju06", 0x000000, 0x040000, CRC(51f01067) SHA1(d5ebbc7d358b63724d2f24da8b2ce4a202be37a5) )
+ ROM_LOAD16_BYTE( "esd16.ju05", 0x000001, 0x040000, CRC(88e252e8) SHA1(07d898379798c6be42b636762b0af61b9111a480) )
+ ROM_LOAD16_BYTE( "esd15.ju04", 0x080000, 0x040000, CRC(b1ae7f08) SHA1(37dd9d4cef8b9e1d09d7b46a9794fb2b777c9a01) )
+ ROM_LOAD16_BYTE( "esd14.ju03", 0x080001, 0x040000, CRC(d8f06fa8) SHA1(f76912f93f99578529612a7f01d82ac7229a8e41) )
+ ROM_LOAD16_BYTE( "esd13.ju07", 0x100000, 0x040000, CRC(9d1590a6) SHA1(35f634dbf0df06ec62359c7bae43c7f5d14b0ab2) )
+
+ ROM_REGION( 0x400000, "bgs", 0 ) /* Layers, 16x16x8 */
+ ROM_LOAD32_BYTE( "esd9.fu28", 0x000000, 0x080000, CRC(a3cfe895) SHA1(a8dc0d5d9e64d4c5112177b8f20b5bdb86ca73af) )
+ ROM_LOAD32_BYTE( "esd11.fu29", 0x000001, 0x080000, CRC(d3c1855e) SHA1(bb547d4a45a745e9ae4a6727087cdf325105de90) )
+ ROM_LOAD32_BYTE( "esd7.fu26", 0x000002, 0x080000, CRC(042d59ff) SHA1(8e45a4757e07d8aaf50b151d8849c1a27424e64b) )
+ ROM_LOAD32_BYTE( "esd5.fu27", 0x000003, 0x080000, CRC(ed5b4e58) SHA1(82c3ee9e2525c0b370a29d5560c21ec6380d1a43) )
+ ROM_LOAD32_BYTE( "esd10.fu31", 0x200000, 0x080000, CRC(396d77b6) SHA1(f22449a7f9f50e172e36db4f399c14e527409884) )
+ ROM_LOAD32_BYTE( "esd12.fu33", 0x200001, 0x080000, CRC(a68848a8) SHA1(915239a961d76af6a1a567eb89b1569f158e714e) )
+ ROM_LOAD32_BYTE( "esd8.fu30", 0x200002, 0x080000, CRC(fa8cd2d3) SHA1(ddc1b98867e6d2eee458bf35a933e7cdc59f4c7e) )
+ ROM_LOAD32_BYTE( "esd6.fu32", 0x200003, 0x080000, CRC(97fde7b1) SHA1(b3610f6fcc1367ff079dc01121c86bc1e1f4c7a2) )
+
+ ROM_REGION( 0x40000, "oki", 0 ) /* Samples */
+ ROM_LOAD( "esd4.su08", 0x00000, 0x20000, CRC(6e741fcd) SHA1(742e0952916c00f67dd9f8d01e721a9a538d2fc4) )
+ROM_END
+
+
+
/*
Multi Champ Deluxe
@@ -1530,7 +1561,9 @@ ROM_END
/* ESD 11-09-98 */
GAME( 1999, multchmp, 0, esd16, multchmp, driver_device, 0, ROT0, "ESD", "Multi Champ (World, ver. 2.5)", MACHINE_SUPPORTS_SAVE )
-GAME( 1998, multchmpk,multchmp, esd16, multchmp, driver_device, 0, ROT0, "ESD", "Multi Champ (Korea)", MACHINE_SUPPORTS_SAVE )
+GAME( 1998, multchmpk,multchmp, esd16, multchmp, driver_device, 0, ROT0, "ESD", "Multi Champ (Korea, older)", MACHINE_SUPPORTS_SAVE )
+GAME( 1998, multchmpa,multchmp, esd16, multchmp, driver_device, 0, ROT0, "ESD", "Multi Champ (World, older)", MACHINE_SUPPORTS_SAVE )
+
GAME( 2001, jumppop, 0, jumppop, jumppop, driver_device, 0, ROT0, "ESD", "Jumping Pop (set 1)", MACHINE_SUPPORTS_SAVE ) /* Redesigned(?) ESD 11-09-98 with no ID# */
GAME( 2001, jumppope, jumppop, jumppop, jumppop, driver_device, 0, ROT0, "Emag Soft", "Jumping Pop (set 2)", MACHINE_SUPPORTS_SAVE )
diff --git a/src/mame/drivers/exedexes.cpp b/src/mame/drivers/exedexes.cpp
index 2f0a5ce1e63..e7ca2882514 100644
--- a/src/mame/drivers/exedexes.cpp
+++ b/src/mame/drivers/exedexes.cpp
@@ -1,4 +1,4 @@
-// license:???
+// license:BSD-3-Clause
// copyright-holders:Richard Davies
/***************************************************************************
diff --git a/src/mame/drivers/exerion.cpp b/src/mame/drivers/exerion.cpp
index 6cee2544726..2e09ee72954 100644
--- a/src/mame/drivers/exerion.cpp
+++ b/src/mame/drivers/exerion.cpp
@@ -232,7 +232,7 @@ ADDRESS_MAP_END
/* verified from Z80 code */
static INPUT_PORTS_START( exerion )
PORT_START("IN0")
- PORT_BIT( 0x3f, IP_ACTIVE_HIGH, IPT_SPECIAL ) PORT_CUSTOM_MEMBER(DEVICE_SELF, exerion_state,exerion_controls_r, (void *)nullptr)
+ PORT_BIT( 0x3f, IP_ACTIVE_HIGH, IPT_SPECIAL ) PORT_CUSTOM_MEMBER(DEVICE_SELF, exerion_state, exerion_controls_r, NULL)
PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_START1 )
PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_START2 )
diff --git a/src/mame/drivers/fantland.cpp b/src/mame/drivers/fantland.cpp
index b871c323a47..4abd445eb35 100644
--- a/src/mame/drivers/fantland.cpp
+++ b/src/mame/drivers/fantland.cpp
@@ -736,7 +736,7 @@ static INPUT_PORTS_START( wheelrun )
PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_BUTTON1 ) PORT_PLAYER(1)
PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_UNKNOWN )
PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_UNKNOWN )
- PORT_BIT( 0x70, IP_ACTIVE_HIGH, IPT_SPECIAL ) PORT_CUSTOM_MEMBER(DEVICE_SELF, fantland_state,wheelrun_wheel_r, (void *)nullptr)
+ PORT_BIT( 0x70, IP_ACTIVE_HIGH, IPT_SPECIAL ) PORT_CUSTOM_MEMBER(DEVICE_SELF, fantland_state,wheelrun_wheel_r, (void *)0)
PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_UNKNOWN )
PORT_START("53001") /* 53001 */
diff --git a/src/mame/drivers/fastinvaders.cpp b/src/mame/drivers/fastinvaders.cpp
index 875736b1aee..fad9c9eaf95 100644
--- a/src/mame/drivers/fastinvaders.cpp
+++ b/src/mame/drivers/fastinvaders.cpp
@@ -36,7 +36,7 @@ public:
required_device<cpu_device> m_maincpu;
required_device<gfxdecode_device> m_gfxdecode;
required_shared_ptr<UINT8> m_videoram;
-
+
optional_device<i8275_device> m_crtc8275;
optional_device<mc6845_device> m_crtc6845;
required_device<pic8259_device> m_pic8259;
@@ -52,7 +52,7 @@ public:
UINT8 m_scudi;
UINT8 m_cannone;
UINT8 m_riga_inf;
-
+
UINT8 m_irq0;
UINT8 m_irq1;
UINT8 m_irq2;
@@ -61,15 +61,15 @@ public:
UINT8 m_irq5;
UINT8 m_irq6;
UINT8 m_irq7;
-
-
+
+
UINT8 m_start2_value;
UINT8 m_dma1;
UINT8 m_io_40;
UINT8 m_hsync;
-
+
DECLARE_WRITE8_MEMBER(io_40_w);
-
+
DECLARE_READ8_MEMBER(io_60_r);
DECLARE_WRITE8_MEMBER(io_70_w);
DECLARE_WRITE8_MEMBER(io_90_w);
@@ -79,23 +79,23 @@ public:
DECLARE_WRITE8_MEMBER(io_d0_w);
DECLARE_WRITE8_MEMBER(io_e0_w);
DECLARE_WRITE8_MEMBER(io_f0_w);
-
-
- DECLARE_INPUT_CHANGED_MEMBER(coin_inserted);
- DECLARE_INPUT_CHANGED_MEMBER(start);
- DECLARE_INPUT_CHANGED_MEMBER(start2);
- DECLARE_INPUT_CHANGED_MEMBER(tilt);
- DECLARE_INPUT_CHANGED_MEMBER(in0);
- DECLARE_INPUT_CHANGED_MEMBER(in1);
- DECLARE_INPUT_CHANGED_MEMBER(in2);
- DECLARE_INPUT_CHANGED_MEMBER(in3);
- DECLARE_INPUT_CHANGED_MEMBER(in4);
- DECLARE_INPUT_CHANGED_MEMBER(in5);
- DECLARE_INPUT_CHANGED_MEMBER(in6);
-
+
+
+ DECLARE_INPUT_CHANGED_MEMBER(coin_inserted);
+ DECLARE_INPUT_CHANGED_MEMBER(start);
+ DECLARE_INPUT_CHANGED_MEMBER(start2);
+ DECLARE_INPUT_CHANGED_MEMBER(tilt);
+ DECLARE_INPUT_CHANGED_MEMBER(in0);
+ DECLARE_INPUT_CHANGED_MEMBER(in1);
+ DECLARE_INPUT_CHANGED_MEMBER(in2);
+ DECLARE_INPUT_CHANGED_MEMBER(in3);
+ DECLARE_INPUT_CHANGED_MEMBER(in4);
+ DECLARE_INPUT_CHANGED_MEMBER(in5);
+ DECLARE_INPUT_CHANGED_MEMBER(in6);
+
DECLARE_READ_LINE_MEMBER(sid_read);
-
+
virtual void video_start() override;
TIMER_DEVICE_CALLBACK_MEMBER(scanline_timer);
@@ -107,41 +107,40 @@ public:
DECLARE_WRITE8_MEMBER(dark_1_clr);
DECLARE_WRITE8_MEMBER(dark_2_clr);
UINT32 screen_update(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
-
-
+
+
DECLARE_DRIVER_INIT(fi6845);
-
+
};
TIMER_DEVICE_CALLBACK_MEMBER(fastinvaders_state::scanline_timer)
{
-/* int scanline = param;
+/* int scanline = param;
- if(scanline == 16){
- //logerror("scanline\n");
- m_dma8257->dreq1_w(0x01);
- m_dma8257->hlda_w(1);
- }
- */
+ if(scanline == 16){
+ //logerror("scanline\n");
+ m_dma8257->dreq1_w(0x01);
+ m_dma8257->hlda_w(1);
+ }
+ */
}
TIMER_DEVICE_CALLBACK_MEMBER(fastinvaders_state::count_ar)
{
if (m_ar<255){
-
m_riga_sup= ((m_prom[m_ar]&0x08)>>3)&0x01;
- m_scudi= ((m_prom[m_ar]&0x04)>>2)&0x01;
- m_cannone= ((m_prom[m_ar]&0x02)>>1)&0x01;
+ m_scudi= ((m_prom[m_ar]&0x04)>>2)&0x01;
+ m_cannone= ((m_prom[m_ar]&0x02)>>1)&0x01;
m_riga_inf= ((m_prom[m_ar]&0x01))&0x01;
//logerror("m_ar = %02X m_riga_sup %02X, m_scudi %02X, m_cannone %02X, m_riga_inf %02X\n",m_ar,m_riga_sup,m_scudi,m_cannone,m_riga_inf);
-
+
if(m_riga_sup==0x01){
if(((m_prom[m_ar-1]&0x08)>>3)==0x01){
- //logerror(" DMA1 \n");
+ //logerror(" DMA1 \n");
//logerror("m_prom[m_ar]=%d m_prom[m_ar-1]= %d ar = %d r_s %d, sc %d, ca %d, ri %d\n",m_prom[m_ar],m_prom[m_ar-1],m_ar,m_riga_sup,m_scudi,m_cannone,m_riga_inf);
m_dma8257->dreq1_w(0x01);
m_dma8257->hlda_w(1);
@@ -151,20 +150,20 @@ TIMER_DEVICE_CALLBACK_MEMBER(fastinvaders_state::count_ar)
}
m_ar++;
}
-
+
if (m_av<255){
m_av++;
//logerror("m_av=%02X\n",m_av);
if (m_av == m_io_40){
if (m_hsync==1){
- logerror(" DMA2 \n");
+ logerror(" DMA2 \n");
m_dma8257->dreq2_w(0x01);
m_dma8257->hlda_w(1);
//m_pic8259->ir3_w(HOLD_LINE);
}
-
+
}
- }
+ }
}
WRITE8_MEMBER(fastinvaders_state::dark_1_clr)
@@ -176,7 +175,7 @@ WRITE8_MEMBER(fastinvaders_state::dark_1_clr)
if(!data){
m_dma1=0;
}
-
+
//logerror("dma 1 clr\n");
//m_maincpu->set_input_line(I8085_RST75_LINE, ASSERT_LINE);
//m_maincpu->set_input_line(I8085_RST75_LINE, CLEAR_LINE);
@@ -190,10 +189,10 @@ WRITE8_MEMBER(fastinvaders_state::dark_2_clr)
if(data){
m_dma8257->dreq2_w(0x00);
}
-/* if(!data){
- m_dma1=0;
- }
- */
+/* if(!data){
+ m_dma1=0;
+ }
+ */
}
/***************************************************************************
@@ -231,7 +230,7 @@ UINT32 fastinvaders_state::screen_update(screen_device &screen, bitmap_ind16 &bi
);
count++;
-
+
}
}
@@ -256,8 +255,8 @@ READ8_MEMBER(fastinvaders_state::io_60_r)
{
UINT8 tmp=0;
//0x60 ds6 input bit 0 DX or SX
- // bit 1 DX or SX
-// bit 2-7 dip switch
+ // bit 1 DX or SX
+// bit 2-7 dip switch
tmp=ioport("IN1")->read()&0x03;
tmp=tmp | (ioport("DSW1")->read()&0xfc);
@@ -269,15 +268,15 @@ READ8_MEMBER(fastinvaders_state::io_60_r)
WRITE8_MEMBER(fastinvaders_state::io_70_w)
{
-//bit 0 rest55 clear
+//bit 0 rest55 clear
//bit 1 rest65 clear
//bit 2 trap clear
-//bit 3 coin counter
+//bit 3 coin counter
//bit 4 irq0 clear
-//bit 5 8085 reset
-//bit 6 TODO
-//bit 7 both used TODO
+//bit 5 8085 reset
+//bit 6 TODO
+//bit 7 both used TODO
//IRQ clear
if (data&0x01){
@@ -285,32 +284,31 @@ WRITE8_MEMBER(fastinvaders_state::io_70_w)
m_maincpu->set_input_line(I8085_RST55_LINE, CLEAR_LINE);
}
if (data&0x02){
-
if (m_rest65){
//logerror("clear");
m_rest65=0;
m_maincpu->set_input_line(I8085_RST65_LINE, CLEAR_LINE);
}
- }
+ }
if (data&0x04){
m_trap=0;
m_maincpu->set_input_line(INPUT_LINE_NMI, CLEAR_LINE);
- }
+ }
if (data&0x10){
m_irq0=0;
m_pic8259->ir0_w(CLEAR_LINE);
- }
+ }
//self reset
if (data&0x20){
logerror("RESET!!!!!\n");
- }
+ }
+
-
//coin counter
-// if (data&0x08){
-// coin_counter_w(machine(), offset,0x01);
-// }
+// if (data&0x08){
+// coin_counter_w(machine(), offset,0x01);
+// }
}
@@ -355,7 +353,7 @@ READ_LINE_MEMBER(fastinvaders_state::sid_read)
{
UINT8 tmp= m_start2_value ? ASSERT_LINE : CLEAR_LINE;
m_start2_value=0;
- return tmp;
+ return tmp;
}
INPUT_CHANGED_MEMBER(fastinvaders_state::tilt)
@@ -420,7 +418,7 @@ INPUT_CHANGED_MEMBER(fastinvaders_state::in3)
INPUT_CHANGED_MEMBER(fastinvaders_state::in4)
{
m_irq4=1;
- if (newval)
+ if (newval)
m_pic8259->ir4_w(HOLD_LINE);
}
@@ -434,7 +432,7 @@ INPUT_CHANGED_MEMBER(fastinvaders_state::in5)
INPUT_CHANGED_MEMBER(fastinvaders_state::in6)
{
m_irq6=1;
- if (newval)
+ if (newval)
m_pic8259->ir6_w(HOLD_LINE);
}
@@ -447,7 +445,7 @@ DECLARE_WRITE_LINE_MEMBER( fastinvaders_state::vsync)
if (!state){
m_dma8257->dreq0_w(0x01);
m_dma8257->hlda_w(1);
-
+
m_maincpu->set_input_line(I8085_RST75_LINE, ASSERT_LINE);
m_maincpu->set_input_line(I8085_RST75_LINE, CLEAR_LINE);
//machine().scheduler().abort_timeslice(); // transfer occurs immediately
@@ -456,8 +454,7 @@ DECLARE_WRITE_LINE_MEMBER( fastinvaders_state::vsync)
}
if (state){
-
- }
+ }
}
DECLARE_WRITE_LINE_MEMBER( fastinvaders_state::hsync)
@@ -470,7 +467,7 @@ DECLARE_WRITE_LINE_MEMBER( fastinvaders_state::hsync)
if (state){
m_hsync=1;
- }
+ }
}
@@ -503,8 +500,8 @@ logerror("dma write\n");
***************************************************************************/
static ADDRESS_MAP_START( fastinvaders_map, AS_PROGRAM, 8, fastinvaders_state )
- //AM_RANGE(0x0000, 0x1fff) AM_ROM AM_MIRROR(0x8000)
- AM_RANGE(0x0000, 0x27ff) AM_ROM AM_MIRROR(0x8000)
+ //AM_RANGE(0x0000, 0x1fff) AM_ROM AM_MIRROR(0x8000)
+ AM_RANGE(0x0000, 0x27ff) AM_ROM AM_MIRROR(0x8000)
AM_RANGE(0x2800, 0x2fff) AM_RAM AM_MIRROR(0x8000) AM_SHARE("videoram")
AM_RANGE(0x3000, 0x33ff) AM_RAM AM_MIRROR(0x8000)
ADDRESS_MAP_END
@@ -517,41 +514,41 @@ static ADDRESS_MAP_START( fastinvaders_6845_io, AS_IO, 8, fastinvaders_state )
AM_RANGE(0x20, 0x20) AM_DEVWRITE("6845", mc6845_device, address_w)
AM_RANGE(0x21, 0x21) AM_DEVREADWRITE("6845", mc6845_device, register_r, register_w)
AM_RANGE(0x30, 0x33) AM_DEVREADWRITE("pic8259", pic8259_device, read, write)
- AM_RANGE(0x40, 0x4f) AM_WRITE(io_40_w) //ds4 //latch
- //AM_RANGE(0x50, 0x50) AM_READ(io_50_r) //ds5 //latch
+ AM_RANGE(0x40, 0x4f) AM_WRITE(io_40_w) //ds4 //latch
+ //AM_RANGE(0x50, 0x50) AM_READ(io_50_r) //ds5 //latch
AM_RANGE(0x60, 0x60) AM_READ(io_60_r)
- AM_RANGE(0x70, 0x70) AM_WRITE(io_70_w) //ds7 rest55,rest65,trap, irq0 clear
- AM_RANGE(0x80, 0x80) AM_NOP //ds8 write here a LOT ?????
- AM_RANGE(0x90, 0x90) AM_WRITE(io_90_w) //ds9 sound command
- AM_RANGE(0xa0, 0xa0) AM_WRITE(io_a0_w) //ds10 irq1 clear
- AM_RANGE(0xb0, 0xb0) AM_WRITE(io_b0_w) //ds11 irq2 clear
- AM_RANGE(0xc0, 0xc0) AM_WRITE(io_c0_w) //ds12 irq3 clear
- AM_RANGE(0xd0, 0xd0) AM_WRITE(io_d0_w) //ds13 irq5 clear
- AM_RANGE(0xe0, 0xe0) AM_WRITE(io_e0_w) //ds14 irq4 clear
- AM_RANGE(0xf0, 0xf0) AM_WRITE(io_f0_w) //ds15 irq6 clear
-
+ AM_RANGE(0x70, 0x70) AM_WRITE(io_70_w) //ds7 rest55,rest65,trap, irq0 clear
+ AM_RANGE(0x80, 0x80) AM_NOP //ds8 write here a LOT ?????
+ AM_RANGE(0x90, 0x90) AM_WRITE(io_90_w) //ds9 sound command
+ AM_RANGE(0xa0, 0xa0) AM_WRITE(io_a0_w) //ds10 irq1 clear
+ AM_RANGE(0xb0, 0xb0) AM_WRITE(io_b0_w) //ds11 irq2 clear
+ AM_RANGE(0xc0, 0xc0) AM_WRITE(io_c0_w) //ds12 irq3 clear
+ AM_RANGE(0xd0, 0xd0) AM_WRITE(io_d0_w) //ds13 irq5 clear
+ AM_RANGE(0xe0, 0xe0) AM_WRITE(io_e0_w) //ds14 irq4 clear
+ AM_RANGE(0xf0, 0xf0) AM_WRITE(io_f0_w) //ds15 irq6 clear
+
AM_IMPORT_FROM(fastinvaders_io_base)
ADDRESS_MAP_END
static ADDRESS_MAP_START( fastinvaders_8275_io, AS_IO, 8, fastinvaders_state )
- AM_RANGE( 0x20, 0x21 ) AM_DEVREADWRITE("8275", i8275_device, read, write)
-
-AM_RANGE(0x10, 0x1f) AM_DEVREADWRITE("dma8257", i8257_device, read, write)
+ AM_RANGE( 0x20, 0x21 ) AM_DEVREADWRITE("8275", i8275_device, read, write)
+
+AM_RANGE(0x10, 0x1f) AM_DEVREADWRITE("dma8257", i8257_device, read, write)
AM_RANGE(0x30, 0x33) AM_DEVREADWRITE("pic8259", pic8259_device, read, write)
- AM_RANGE(0x40, 0x4f) AM_WRITE(io_40_w) //ds4 //latch
- //AM_RANGE(0x50, 0x50) AM_READ(io_50_r) //ds5 //latch
+ AM_RANGE(0x40, 0x4f) AM_WRITE(io_40_w) //ds4 //latch
+ //AM_RANGE(0x50, 0x50) AM_READ(io_50_r) //ds5 //latch
AM_RANGE(0x60, 0x60) AM_READ(io_60_r)
- AM_RANGE(0x70, 0x70) AM_WRITE(io_70_w) //ds7 rest55,rest65,trap, irq0 clear
- AM_RANGE(0x80, 0x80) AM_NOP //write here a LOT
- //AM_RANGE(0x80, 0x80) AM_WRITE(io_80_w) //ds8 ????
- AM_RANGE(0x90, 0x90) AM_WRITE(io_90_w) //ds9 sound command
- AM_RANGE(0xa0, 0xa0) AM_WRITE(io_a0_w) //ds10 irq1 clear
- AM_RANGE(0xb0, 0xb0) AM_WRITE(io_b0_w) //ds11 irq2 clear
- AM_RANGE(0xc0, 0xc0) AM_WRITE(io_c0_w) //ds12 irq3 clear
- AM_RANGE(0xd0, 0xd0) AM_WRITE(io_d0_w) //ds13 irq5 clear
- AM_RANGE(0xe0, 0xe0) AM_WRITE(io_e0_w) //ds14 irq4 clear
- AM_RANGE(0xf0, 0xf0) AM_WRITE(io_f0_w) //ds15 irq6 clear
+ AM_RANGE(0x70, 0x70) AM_WRITE(io_70_w) //ds7 rest55,rest65,trap, irq0 clear
+ AM_RANGE(0x80, 0x80) AM_NOP //write here a LOT
+ //AM_RANGE(0x80, 0x80) AM_WRITE(io_80_w) //ds8 ????
+ AM_RANGE(0x90, 0x90) AM_WRITE(io_90_w) //ds9 sound command
+ AM_RANGE(0xa0, 0xa0) AM_WRITE(io_a0_w) //ds10 irq1 clear
+ AM_RANGE(0xb0, 0xb0) AM_WRITE(io_b0_w) //ds11 irq2 clear
+ AM_RANGE(0xc0, 0xc0) AM_WRITE(io_c0_w) //ds12 irq3 clear
+ AM_RANGE(0xd0, 0xd0) AM_WRITE(io_d0_w) //ds13 irq5 clear
+ AM_RANGE(0xe0, 0xe0) AM_WRITE(io_e0_w) //ds14 irq4 clear
+ AM_RANGE(0xf0, 0xf0) AM_WRITE(io_f0_w) //ds15 irq6 clear
AM_IMPORT_FROM(fastinvaders_io_base)
ADDRESS_MAP_END
@@ -565,30 +562,30 @@ ADDRESS_MAP_END
static INPUT_PORTS_START( fastinvaders )
-PORT_START("COIN") /* FAKE async input */
- PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_COIN1 ) PORT_CHANGED_MEMBER(DEVICE_SELF, fastinvaders_state, coin_inserted, 0) //I8085_RST65_LINE
- PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_START1 ) PORT_CHANGED_MEMBER(DEVICE_SELF, fastinvaders_state, start, 0) //I8085_RST55_LINE
- PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_START2 ) PORT_CHANGED_MEMBER(DEVICE_SELF, fastinvaders_state, start2, 0) //I8085_RST55_LINE
- PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_OTHER ) PORT_CODE(KEYCODE_Z) PORT_CHANGED_MEMBER(DEVICE_SELF, fastinvaders_state,in0, 0) // int0, sparo
- PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_OTHER ) PORT_CODE(KEYCODE_X) PORT_CHANGED_MEMBER(DEVICE_SELF, fastinvaders_state,tilt, 0) //INPUT_LINE_NMI tilt
-
+PORT_START("COIN") /* FAKE async input */
+ PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_COIN1 ) PORT_CHANGED_MEMBER(DEVICE_SELF, fastinvaders_state, coin_inserted, 0) //I8085_RST65_LINE
+ PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_START1 ) PORT_CHANGED_MEMBER(DEVICE_SELF, fastinvaders_state, start, 0) //I8085_RST55_LINE
+ PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_START2 ) PORT_CHANGED_MEMBER(DEVICE_SELF, fastinvaders_state, start2, 0) //I8085_RST55_LINE
+ PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_OTHER ) PORT_CODE(KEYCODE_Z) PORT_CHANGED_MEMBER(DEVICE_SELF, fastinvaders_state,in0, 0) // int0, sparo
+ PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_OTHER ) PORT_CODE(KEYCODE_X) PORT_CHANGED_MEMBER(DEVICE_SELF, fastinvaders_state,tilt, 0) //INPUT_LINE_NMI tilt
+
PORT_START("IN0")
-
+
PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_OTHER ) PORT_CODE(KEYCODE_S) PORT_NAME("1") PORT_CHANGED_MEMBER(DEVICE_SELF, fastinvaders_state,in1, 0)
PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_OTHER ) PORT_CODE(KEYCODE_D) PORT_NAME("2") PORT_CHANGED_MEMBER(DEVICE_SELF, fastinvaders_state,in2, 0)
PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_OTHER ) PORT_CODE(KEYCODE_F) PORT_NAME("3") PORT_CHANGED_MEMBER(DEVICE_SELF, fastinvaders_state,in3, 0)
PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_OTHER ) PORT_CODE(KEYCODE_G) PORT_NAME("4") PORT_CHANGED_MEMBER(DEVICE_SELF, fastinvaders_state,in4, 0)
PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_OTHER ) PORT_CODE(KEYCODE_H) PORT_NAME("5") PORT_CHANGED_MEMBER(DEVICE_SELF, fastinvaders_state,in5, 0)
PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_OTHER ) PORT_CODE(KEYCODE_J) PORT_NAME("6") PORT_CHANGED_MEMBER(DEVICE_SELF, fastinvaders_state,in6, 0)
-
-
- PORT_START("IN1") //0x60 io port
+
+
+ PORT_START("IN1") //0x60 io port
PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_JOYSTICK_LEFT ) PORT_8WAY PORT_COCKTAIL
PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_JOYSTICK_RIGHT ) PORT_8WAY PORT_COCKTAIL
-
- PORT_START("DSW1") //0x60 io port
+
+ PORT_START("DSW1") //0x60 io port
PORT_DIPNAME( 0x04, 0x04, DEF_STR( Unknown ) )
PORT_DIPSETTING( 0x04, DEF_STR( Off ) )
PORT_DIPSETTING( 0x00, DEF_STR( On ) )
@@ -598,16 +595,16 @@ PORT_START("COIN") /* FAKE async input */
PORT_DIPNAME( 0xf0, 0x80, "Ships/lives number" )
PORT_DIPSETTING( 0x10, "1 Ship" )
PORT_DIPSETTING( 0x20, "2 Ships" )
- PORT_DIPSETTING( 0x30, "3 Ships" )
+ PORT_DIPSETTING( 0x30, "3 Ships" )
PORT_DIPSETTING( 0x40, "4 Ships" )
- PORT_DIPSETTING( 0x50, "5 Ships" )
- PORT_DIPSETTING( 0x60, "6 Ships" )
- PORT_DIPSETTING( 0x70, "7 Ships" )
- PORT_DIPSETTING( 0x80, "8 Ships" )
- PORT_DIPSETTING( 0x90, "9 Ships" )
-
-
-
+ PORT_DIPSETTING( 0x50, "5 Ships" )
+ PORT_DIPSETTING( 0x60, "6 Ships" )
+ PORT_DIPSETTING( 0x70, "7 Ships" )
+ PORT_DIPSETTING( 0x80, "8 Ships" )
+ PORT_DIPSETTING( 0x90, "9 Ships" )
+
+
+
INPUT_PORTS_END
@@ -637,12 +634,12 @@ static MACHINE_CONFIG_START( fastinvaders, fastinvaders_state )
/* basic machine hardware */
MCFG_CPU_ADD("maincpu", I8085A, 6144100/2 ) // 6144100 Xtal /2 internaly
MCFG_CPU_PROGRAM_MAP(fastinvaders_map)
-// MCFG_CPU_IO_MAP(fastinvaders_io_map)
-// MCFG_CPU_VBLANK_INT_DRIVER("screen", fastinvaders_state, irq0_line_hold)
- MCFG_I8085A_SID(READLINE(fastinvaders_state, sid_read))
+// MCFG_CPU_IO_MAP(fastinvaders_io_map)
+// MCFG_CPU_VBLANK_INT_DRIVER("screen", fastinvaders_state, irq0_line_hold)
+ MCFG_I8085A_SID(READLINE(fastinvaders_state, sid_read))
MCFG_CPU_IRQ_ACKNOWLEDGE_DEVICE("pic8259", pic8259_device, inta_cb)
MCFG_TIMER_DRIVER_ADD_SCANLINE("scantimer", fastinvaders_state, scanline_timer, "screen", 0, 1)
-
+
MCFG_PIC8259_ADD( "pic8259", INPUTLINE("maincpu", 0), VCC, NULL)
MCFG_DEVICE_ADD("dma8257", I8257, 6144100)
@@ -650,16 +647,16 @@ MCFG_TIMER_DRIVER_ADD_SCANLINE("scantimer", fastinvaders_state, scanline_timer,
MCFG_I8257_OUT_MEMW_CB(WRITE8(fastinvaders_state, memory_write_byte))
MCFG_I8257_OUT_DACK_1_CB(WRITE8(fastinvaders_state, dark_1_clr))
MCFG_I8257_OUT_DACK_2_CB(WRITE8(fastinvaders_state, dark_2_clr))
-
-
+
+
MCFG_TIMER_DRIVER_ADD_PERIODIC("count_ar", fastinvaders_state, count_ar, attotime::from_hz(11500000/2))
-
+
/* video hardware */
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(60)
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500))
- MCFG_SCREEN_SIZE(64*16, 32*16)
- MCFG_SCREEN_VISIBLE_AREA(0*16, 40*16-1, 0*14, 19*14-1)
+ MCFG_SCREEN_SIZE(64*16, 32*16)
+ MCFG_SCREEN_VISIBLE_AREA(0*16, 40*16-1, 0*14, 19*14-1)
MCFG_SCREEN_UPDATE_DRIVER(fastinvaders_state, screen_update)
MCFG_SCREEN_PALETTE("palette")
@@ -673,11 +670,11 @@ MACHINE_CONFIG_END
static MACHINE_CONFIG_DERIVED( fastinvaders_8275, fastinvaders )
MCFG_CPU_MODIFY("maincpu" ) // guess
MCFG_CPU_IO_MAP(fastinvaders_8275_io)
-
+
MCFG_DEVICE_ADD("8275", I8275, 10000000 ) /* guess */ // does not configure a very useful resolution(!)
MCFG_I8275_CHARACTER_WIDTH(16)
-// MCFG_I8275_DRAW_CHARACTER_CALLBACK_OWNER(apogee_state, display_pixels)
-// MCFG_I8275_DRQ_CALLBACK(DEVWRITELINE("dma8257",i8257_device, dreq2_w))
+// MCFG_I8275_DRAW_CHARACTER_CALLBACK_OWNER(apogee_state, display_pixels)
+// MCFG_I8275_DRQ_CALLBACK(DEVWRITELINE("dma8257",i8257_device, dreq2_w))
MACHINE_CONFIG_END
static MACHINE_CONFIG_DERIVED( fastinvaders_6845, fastinvaders )
@@ -736,7 +733,7 @@ ROM_START( fi8275 )
ROM_LOAD( "R2.2A", 0x2400, 0x0200, CRC(f446ef0d) SHA1(2be337c1197d14e5ffc33ea05b5262f1ea17d442) )
ROM_LOAD( "R2.2B", 0x2600, 0x0200, CRC(b97e35a3) SHA1(0878a83c7f9f0645749fdfb1ff372d0e04833c9e) )
-
+
ROM_REGION( 0x0c00, "gfx1", 0 )
ROM_LOAD( "C2.1F", 0x0000, 0x0200, CRC(9feca88a) SHA1(14a8c46eb51eed01b7b537a9931cd092cec2019f) )
ROM_LOAD( "C2.1G", 0x0200, 0x0200, CRC(79fc3963) SHA1(25651d1031895a01a2a4751b355ff1200a899ac5) )
@@ -744,7 +741,7 @@ ROM_START( fi8275 )
ROM_LOAD( "C2.2F", 0x0600, 0x0200, CRC(3bb16f55) SHA1(b1cc1e2346acd0e5c84861b414b4677871079844) )
ROM_LOAD( "C2.2G", 0x0800, 0x0200, CRC(19828c47) SHA1(f215ce55be32b3564e1b7cc19500d38a93117051) )
ROM_LOAD( "C2.2H", 0x0a00, 0x0200, CRC(284ae4eb) SHA1(6e28fcd9d481d37f47728f22f6048b29266f4346) )
-
+
ROM_REGION( 0x0100, "prom", 0 )
ROM_LOAD( "93427.bin", 0x0000, 0x0100, CRC(f59c8573) SHA1(5aed4866abe1690fd0f088af1cfd99b3c85afe9a) )
ROM_END
@@ -774,11 +771,11 @@ ROM_START( fi6845 )
ROM_LOAD( "C1.1A", 0x0600, 0x0200, CRC(3bb16f55) SHA1(b1cc1e2346acd0e5c84861b414b4677871079844) )
ROM_LOAD( "C1.2A", 0x0800, 0x0200, CRC(19828c47) SHA1(f215ce55be32b3564e1b7cc19500d38a93117051) )
ROM_LOAD( "C1.3A", 0x0a00, 0x0200, CRC(284ae4eb) SHA1(6e28fcd9d481d37f47728f22f6048b29266f4346) )
-
+
ROM_REGION( 0x0100, "prom", 0 )
ROM_LOAD( "93427.bin", 0x0000, 0x0100, CRC(f59c8573) SHA1(5aed4866abe1690fd0f088af1cfd99b3c85afe9a) )
ROM_END
-/* YEAR NAME PARENT MACHINE INPUT STATE INIT ROT COMPANY FULLNAME FLAGS*/
+/* YEAR NAME PARENT MACHINE INPUT STATE INIT ROT COMPANY FULLNAME FLAGS*/
GAME( 1979, fi6845, 0, fastinvaders_6845, fastinvaders, fastinvaders_state, fi6845, ROT270, "Fiberglass", "Fast Invaders (6845 version)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND )
-GAME( 1979, fi8275, fi6845, fastinvaders_8275, fastinvaders, fastinvaders_state,fi6845, ROT270, "Fiberglass", "Fast Invaders (8275 version)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND ) \ No newline at end of file
+GAME( 1979, fi8275, fi6845, fastinvaders_8275, fastinvaders, fastinvaders_state,fi6845, ROT270, "Fiberglass", "Fast Invaders (8275 version)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND )
diff --git a/src/mame/drivers/fidel6502.cpp b/src/mame/drivers/fidel6502.cpp
new file mode 100644
index 00000000000..f4f1013eb7b
--- /dev/null
+++ b/src/mame/drivers/fidel6502.cpp
@@ -0,0 +1,741 @@
+// license:BSD-3-Clause
+// copyright-holders:Kevin Horton,Jonathan Gevaryahu,Sandro Ronco,hap
+/******************************************************************************
+
+ Fidelity Electronics 6502 based board driver
+ See drivers/fidelz80.cpp for hardware description
+
+******************************************************************************/
+
+#include "emu.h"
+#include "cpu/m6502/m6502.h"
+#include "cpu/m6502/r65c02.h"
+#include "cpu/m6502/m65sc02.h"
+#include "machine/6821pia.h"
+#include "bus/generic/slot.h"
+#include "bus/generic/carts.h"
+#include "softlist.h"
+
+#include "includes/fidelz80.h"
+
+// internal artwork
+#include "fidel_csc.lh" // clickable
+#include "fidel_fev.lh" // clickable
+#include "fidel_sc12.lh" // clickable
+
+
+class fidel6502_state : public fidelz80base_state
+{
+public:
+ fidel6502_state(const machine_config &mconfig, device_type type, const char *tag)
+ : fidelz80base_state(mconfig, type, tag),
+ m_6821pia(*this, "6821pia"),
+ m_cart(*this, "cartslot")
+ { }
+
+ // devices/pointers
+ optional_device<pia6821_device> m_6821pia;
+ optional_device<generic_slot_device> m_cart;
+
+ TIMER_DEVICE_CALLBACK_MEMBER(irq_on) { m_maincpu->set_input_line(M6502_IRQ_LINE, ASSERT_LINE); }
+ TIMER_DEVICE_CALLBACK_MEMBER(irq_off) { m_maincpu->set_input_line(M6502_IRQ_LINE, CLEAR_LINE); }
+
+ // CSC
+ void csc_prepare_display();
+ DECLARE_READ8_MEMBER(csc_speech_r);
+ DECLARE_WRITE8_MEMBER(csc_pia0_pa_w);
+ DECLARE_WRITE8_MEMBER(csc_pia0_pb_w);
+ DECLARE_READ8_MEMBER(csc_pia0_pb_r);
+ DECLARE_WRITE_LINE_MEMBER(csc_pia0_ca2_w);
+ DECLARE_WRITE8_MEMBER(csc_pia1_pa_w);
+ DECLARE_WRITE8_MEMBER(csc_pia1_pb_w);
+ DECLARE_READ8_MEMBER(csc_pia1_pa_r);
+ DECLARE_WRITE_LINE_MEMBER(csc_pia1_ca2_w);
+ DECLARE_WRITE_LINE_MEMBER(csc_pia1_cb2_w);
+ DECLARE_READ_LINE_MEMBER(csc_pia1_ca1_r);
+ DECLARE_READ_LINE_MEMBER(csc_pia1_cb1_r);
+
+ // SC12/6086
+ DECLARE_MACHINE_START(sc12);
+ DECLARE_DEVICE_IMAGE_LOAD_MEMBER(scc_cartridge);
+ DECLARE_WRITE8_MEMBER(sc12_control_w);
+ DECLARE_READ8_MEMBER(sc12_input_r);
+
+ // 6080/6092/6093 (Excellence)
+ DECLARE_INPUT_CHANGED_MEMBER(fexcelv_bankswitch);
+ DECLARE_READ8_MEMBER(fexcelv_speech_r);
+ DECLARE_WRITE8_MEMBER(fexcel_ttl_w);
+ DECLARE_READ8_MEMBER(fexcel_ttl_r);
+};
+
+
+
+// Devices, I/O
+
+/******************************************************************************
+ CSC
+******************************************************************************/
+
+// misc handlers
+
+void fidel6502_state::csc_prepare_display()
+{
+ // 7442 0-8: led select, input mux
+ m_inp_mux = 1 << m_led_select & 0x3ff;
+
+ // 7442 9: speaker out
+ m_speaker->level_w(m_inp_mux >> 9 & 1);
+
+ // 4 7seg leds + H
+ for (int i = 0; i < 4; i++)
+ m_display_state[i] = (m_inp_mux >> i & 1) ? m_7seg_data : 0;
+
+ // 8*8 chessboard leds
+ for (int i = 0; i < 8; i++)
+ m_display_state[i+4] = (m_inp_mux >> i & 1) ? m_led_data : 0;
+
+ set_display_size(8, 4+8);
+ set_display_segmask(0xf, 0x7f);
+ display_update();
+}
+
+READ8_MEMBER(fidel6502_state::csc_speech_r)
+{
+ return m_speech_rom[m_speech_bank << 12 | offset];
+}
+
+
+// 6821 PIA 0
+
+WRITE8_MEMBER(fidel6502_state::csc_pia0_pa_w)
+{
+ // d0-d5: TSI C0-C5
+ 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);
+ csc_prepare_display();
+}
+
+WRITE8_MEMBER(fidel6502_state::csc_pia0_pb_w)
+{
+ // d0: speech ROM A12
+ m_speech->force_update(); // update stream to now
+ m_speech_bank = data & 1;
+
+ // d1: TSI START line
+ m_speech->start_w(data >> 1 & 1);
+
+ // d4: lower TSI volume
+ m_speech->set_output_gain(0, (data & 0x10) ? 0.5 : 1.0);
+}
+
+READ8_MEMBER(fidel6502_state::csc_pia0_pb_r)
+{
+ // d2: printer?
+ UINT8 data = 0x04;
+
+ // d3: TSI BUSY line
+ if (m_speech->busy_r())
+ data |= 0x08;
+
+ // d5: button row 8 (active low)
+ // d6,d7: language switches
+ data |= (~read_inputs(9) >> 3 & 0x20) | (~m_inp_matrix[9]->read() << 6 & 0xc0);
+
+ return data;
+}
+
+WRITE_LINE_MEMBER(fidel6502_state::csc_pia0_ca2_w)
+{
+ // printer?
+}
+
+
+// 6821 PIA 1
+
+READ8_MEMBER(fidel6502_state::csc_pia1_pa_r)
+{
+ // d0-d5: button row 0-5 (active low)
+ return (read_inputs(9) & 0x3f) ^ 0xff;
+}
+
+WRITE8_MEMBER(fidel6502_state::csc_pia1_pa_w)
+{
+ // d6,d7: 7442 A0,A1
+ m_led_select = (m_led_select & ~3) | (data >> 6 & 3);
+ csc_prepare_display();
+}
+
+WRITE8_MEMBER(fidel6502_state::csc_pia1_pb_w)
+{
+ // d0-d7: led row data
+ m_led_data = data;
+ csc_prepare_display();
+}
+
+READ_LINE_MEMBER(fidel6502_state::csc_pia1_ca1_r)
+{
+ // button row 6 (active low)
+ return ~read_inputs(9) >> 6 & 1;
+}
+
+READ_LINE_MEMBER(fidel6502_state::csc_pia1_cb1_r)
+{
+ // button row 7 (active low)
+ return ~read_inputs(9) >> 7 & 1;
+}
+
+WRITE_LINE_MEMBER(fidel6502_state::csc_pia1_cb2_w)
+{
+ // 7442 A2
+ m_led_select = (m_led_select & ~4) | (state ? 4 : 0);
+ csc_prepare_display();
+}
+
+WRITE_LINE_MEMBER(fidel6502_state::csc_pia1_ca2_w)
+{
+ // 7442 A3
+ m_led_select = (m_led_select & ~8) | (state ? 8 : 0);
+ csc_prepare_display();
+}
+
+
+
+/******************************************************************************
+ SC12/6086
+******************************************************************************/
+
+// cartridge
+
+DEVICE_IMAGE_LOAD_MEMBER(fidel6502_state, scc_cartridge)
+{
+ UINT32 size = m_cart->common_get_size("rom");
+
+ // max size is 16KB
+ if (size > 0x4000)
+ {
+ image.seterror(IMAGE_ERROR_UNSPECIFIED, "Invalid file size");
+ return IMAGE_INIT_FAIL;
+ }
+
+ m_cart->rom_alloc(size, GENERIC_ROM8_WIDTH, ENDIANNESS_LITTLE);
+ m_cart->common_load_rom(m_cart->get_rom_base(), size, "rom");
+
+ return IMAGE_INIT_PASS;
+}
+
+MACHINE_START_MEMBER(fidel6502_state, sc12)
+{
+ if (m_cart->exists())
+ m_maincpu->space(AS_PROGRAM).install_read_handler(0x2000, 0x5fff, read8_delegate(FUNC(generic_slot_device::read_rom),(generic_slot_device*)m_cart));
+
+ fidelz80base_state::machine_start();
+}
+
+
+// TTL
+
+WRITE8_MEMBER(fidel6502_state::sc12_control_w)
+{
+ // d0-d3: 7442 a0-a3
+ // 7442 0-8: led data, input mux
+ UINT16 sel = 1 << (data & 0xf) & 0x3ff;
+ m_inp_mux = sel & 0x1ff;
+
+ // 7442 9: speaker out
+ m_speaker->level_w(sel >> 9 & 1);
+
+ // d6,d7: led select (active low)
+ display_matrix(9, 2, sel & 0x1ff, ~data >> 6 & 3);
+
+ // d4,d5: printer
+ //..
+}
+
+READ8_MEMBER(fidel6502_state::sc12_input_r)
+{
+ // a0-a2,d7: multiplexed inputs (active low)
+ return (read_inputs(9) >> offset & 1) ? 0 : 0x80;
+}
+
+
+
+/******************************************************************************
+ 6080/6092/6093 (Excellence)
+******************************************************************************/
+
+// misc handlers
+
+INPUT_CHANGED_MEMBER(fidel6502_state::fexcelv_bankswitch)
+{
+ // tied to speech ROM highest bits
+ m_speech->force_update();
+ m_speech_bank = (m_speech_bank & 1) | newval << 1;
+}
+
+READ8_MEMBER(fidel6502_state::fexcelv_speech_r)
+{
+ // TSI A11 is A12, program controls A11, user controls A13,A14(language switches)
+ offset = (offset & 0x7ff) | (offset << 1 & 0x1000);
+ return m_speech_rom[offset | (m_speech_bank << 11 & 0x800) | (~m_speech_bank << 12 & 0x6000)];
+}
+
+
+// TTL
+
+WRITE8_MEMBER(fidel6502_state::fexcel_ttl_w)
+{
+ // a0-a2,d0: 74259(1)
+ UINT8 mask = 1 << offset;
+ m_led_select = (m_led_select & ~mask) | ((data & 1) ? mask : 0);
+
+ // 74259 Q0-Q3: 7442 a0-a3
+ // 7442 0-8: led data, input mux
+ UINT16 sel = 1 << (m_led_select & 0xf) & 0x3ff;
+ UINT8 led_data = sel & 0xff;
+ m_inp_mux = sel & 0x1ff;
+
+ // 7442 9: speaker out (optional?)
+ m_speaker->level_w(sel >> 9 & 1);
+
+ // 74259 Q4-Q7,Q2,Q1: digit/led select (active low)
+ UINT8 led_sel = ~BITSWAP8(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);
+ UINT8 seg_data = BITSWAP8(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++)
+ m_display_state[i] = (led_sel >> i & 1) ? ((i < 2) ? led_data : seg_data) : 0;
+
+ set_display_size(8, 2+4);
+ set_display_segmask(0x3c, 0x7f);
+ display_update();
+
+ // speech (model 6092)
+ if (m_speech != nullptr)
+ {
+ // a0-a2,d2: 74259(2) to speech board
+ m_speech_data = (m_speech_data & ~mask) | ((data & 4) ? mask : 0);
+
+ // 74259 Q6: TSI ROM A11
+ m_speech->force_update(); // update stream to now
+ m_speech_bank = (m_speech_bank & ~1) | (m_speech_data >> 6 & 1);
+
+ // Q0-Q5: TSI C0-C5
+ // Q7: TSI START line
+ m_speech->data_w(space, 0, m_speech_data & 0x3f);
+ m_speech->start_w(m_speech_data >> 7 & 1);
+ }
+}
+
+READ8_MEMBER(fidel6502_state::fexcel_ttl_r)
+{
+ // a0-a2,d6: from speech board: language switches and TSI BUSY line, otherwise tied to VCC
+ UINT8 d6 = (read_safe(m_inp_matrix[9], 0xff) >> offset & 1) ? 0x40 : 0;
+
+ // a0-a2,d7: multiplexed inputs (active low)
+ return d6 | ((read_inputs(9) >> offset & 1) ? 0 : 0x80);
+}
+
+
+
+/******************************************************************************
+ Address Maps
+******************************************************************************/
+
+// CSC
+
+static ADDRESS_MAP_START( csc_map, AS_PROGRAM, 8, fidel6502_state )
+ ADDRESS_MAP_UNMAP_HIGH
+ AM_RANGE(0x0000, 0x07ff) AM_MIRROR(0x4000) AM_RAM
+ AM_RANGE(0x0800, 0x0bff) AM_MIRROR(0x4400) AM_RAM
+ AM_RANGE(0x1000, 0x1003) AM_MIRROR(0x47fc) AM_DEVREADWRITE("pia0", pia6821_device, read, write)
+ AM_RANGE(0x1800, 0x1803) AM_MIRROR(0x47fc) AM_DEVREADWRITE("pia1", pia6821_device, read, write)
+ AM_RANGE(0x2000, 0x3fff) AM_MIRROR(0x4000) AM_ROM
+ AM_RANGE(0xa000, 0xffff) AM_ROM
+ADDRESS_MAP_END
+
+
+// SC12/6086
+
+static ADDRESS_MAP_START( sc12_map, AS_PROGRAM, 8, fidel6502_state )
+ ADDRESS_MAP_UNMAP_HIGH
+ AM_RANGE(0x0000, 0x0fff) AM_RAM
+ AM_RANGE(0x6000, 0x6000) AM_MIRROR(0x1fff) AM_WRITE(sc12_control_w)
+ AM_RANGE(0x8000, 0x9fff) AM_ROM
+ AM_RANGE(0xa000, 0xa007) AM_MIRROR(0x1ff8) AM_READ(sc12_input_r)
+ AM_RANGE(0xc000, 0xcfff) AM_MIRROR(0x1000) AM_ROM
+ AM_RANGE(0xe000, 0xffff) AM_ROM
+ADDRESS_MAP_END
+
+
+// 6080/6092/6093 (Excellence)
+
+static ADDRESS_MAP_START( fexcel_map, AS_PROGRAM, 8, fidel6502_state )
+ AM_RANGE(0x0000, 0x1fff) AM_MIRROR(0x2000) AM_RAM
+ AM_RANGE(0x4000, 0x4007) AM_MIRROR(0x3ff8) AM_READWRITE(fexcel_ttl_r, fexcel_ttl_w)
+ AM_RANGE(0x8000, 0xffff) AM_ROM
+ADDRESS_MAP_END
+
+
+
+/******************************************************************************
+ Input Ports
+******************************************************************************/
+
+static INPUT_PORTS_START( sc12 )
+ PORT_START("IN.0")
+ PORT_BIT(0x01, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("Square a1")
+ PORT_BIT(0x02, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("Square a2")
+ PORT_BIT(0x04, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("Square a3")
+ PORT_BIT(0x08, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("Square a4")
+ PORT_BIT(0x10, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("Square a5")
+ PORT_BIT(0x20, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("Square a6")
+ PORT_BIT(0x40, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("Square a7")
+ PORT_BIT(0x80, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("Square a8")
+
+ PORT_START("IN.1")
+ PORT_BIT(0x01, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("Square b1")
+ PORT_BIT(0x02, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("Square b2")
+ PORT_BIT(0x04, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("Square b3")
+ PORT_BIT(0x08, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("Square b4")
+ PORT_BIT(0x10, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("Square b5")
+ PORT_BIT(0x20, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("Square b6")
+ PORT_BIT(0x40, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("Square b7")
+ PORT_BIT(0x80, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("Square b8")
+
+ PORT_START("IN.2")
+ PORT_BIT(0x01, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("Square c1")
+ PORT_BIT(0x02, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("Square c2")
+ PORT_BIT(0x04, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("Square c3")
+ PORT_BIT(0x08, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("Square c4")
+ PORT_BIT(0x10, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("Square c5")
+ PORT_BIT(0x20, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("Square c6")
+ PORT_BIT(0x40, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("Square c7")
+ PORT_BIT(0x80, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("Square c8")
+
+ PORT_START("IN.3")
+ PORT_BIT(0x01, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("Square d1")
+ PORT_BIT(0x02, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("Square d2")
+ PORT_BIT(0x04, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("Square d3")
+ PORT_BIT(0x08, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("Square d4")
+ PORT_BIT(0x10, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("Square d5")
+ PORT_BIT(0x20, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("Square d6")
+ PORT_BIT(0x40, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("Square d7")
+ PORT_BIT(0x80, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("Square d8")
+
+ PORT_START("IN.4")
+ PORT_BIT(0x01, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("Square e1")
+ PORT_BIT(0x02, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("Square e2")
+ PORT_BIT(0x04, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("Square e3")
+ PORT_BIT(0x08, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("Square e4")
+ PORT_BIT(0x10, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("Square e5")
+ PORT_BIT(0x20, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("Square e6")
+ PORT_BIT(0x40, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("Square e7")
+ PORT_BIT(0x80, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("Square e8")
+
+ PORT_START("IN.5")
+ PORT_BIT(0x01, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("Square f1")
+ PORT_BIT(0x02, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("Square f2")
+ PORT_BIT(0x04, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("Square f3")
+ PORT_BIT(0x08, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("Square f4")
+ PORT_BIT(0x10, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("Square f5")
+ PORT_BIT(0x20, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("Square f6")
+ PORT_BIT(0x40, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("Square f7")
+ PORT_BIT(0x80, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("Square f8")
+
+ PORT_START("IN.6")
+ PORT_BIT(0x01, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("Square g1")
+ PORT_BIT(0x02, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("Square g2")
+ PORT_BIT(0x04, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("Square g3")
+ PORT_BIT(0x08, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("Square g4")
+ PORT_BIT(0x10, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("Square g5")
+ PORT_BIT(0x20, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("Square g6")
+ PORT_BIT(0x40, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("Square g7")
+ PORT_BIT(0x80, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("Square g8")
+
+ PORT_START("IN.7")
+ PORT_BIT(0x01, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("Square h1")
+ PORT_BIT(0x02, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("Square h2")
+ PORT_BIT(0x04, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("Square h3")
+ PORT_BIT(0x08, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("Square h4")
+ PORT_BIT(0x10, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("Square h5")
+ PORT_BIT(0x20, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("Square h6")
+ PORT_BIT(0x40, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("Square h7")
+ PORT_BIT(0x80, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("Square h8")
+
+ PORT_START("IN.8")
+ PORT_BIT(0x01, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("RV / Pawn") PORT_CODE(KEYCODE_1) PORT_CODE(KEYCODE_1_PAD)
+ PORT_BIT(0x02, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("DM / Knight") PORT_CODE(KEYCODE_2) PORT_CODE(KEYCODE_2_PAD)
+ PORT_BIT(0x04, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("TB / Bishop") PORT_CODE(KEYCODE_3) PORT_CODE(KEYCODE_3_PAD)
+ PORT_BIT(0x08, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("LV / Rook") PORT_CODE(KEYCODE_4) PORT_CODE(KEYCODE_4_PAD)
+ PORT_BIT(0x10, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("PV / Queen") PORT_CODE(KEYCODE_5) PORT_CODE(KEYCODE_5_PAD)
+ PORT_BIT(0x20, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("PB / King") PORT_CODE(KEYCODE_6) PORT_CODE(KEYCODE_6_PAD)
+ PORT_BIT(0x40, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("CL") PORT_CODE(KEYCODE_DEL)
+ PORT_BIT(0x80, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("RE") PORT_CODE(KEYCODE_R)
+INPUT_PORTS_END
+
+static INPUT_PORTS_START( fexcel )
+ PORT_INCLUDE( sc12 )
+
+ PORT_MODIFY("IN.8")
+ PORT_BIT(0x01, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("Clear") PORT_CODE(KEYCODE_DEL)
+ PORT_BIT(0x02, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("Move / Pawn") PORT_CODE(KEYCODE_1) PORT_CODE(KEYCODE_1_PAD)
+ PORT_BIT(0x04, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("Hint / Knight") PORT_CODE(KEYCODE_2) PORT_CODE(KEYCODE_2_PAD)
+ PORT_BIT(0x08, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("Take Back / Bishop") PORT_CODE(KEYCODE_3) PORT_CODE(KEYCODE_3_PAD)
+ PORT_BIT(0x10, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("Level / Rook") PORT_CODE(KEYCODE_4) PORT_CODE(KEYCODE_4_PAD)
+ PORT_BIT(0x20, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("Options / Queen") PORT_CODE(KEYCODE_5) PORT_CODE(KEYCODE_5_PAD)
+ PORT_BIT(0x40, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("Verify / King") PORT_CODE(KEYCODE_6) PORT_CODE(KEYCODE_6_PAD)
+ PORT_BIT(0x80, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("New Game") PORT_CODE(KEYCODE_R) PORT_CODE(KEYCODE_N)
+INPUT_PORTS_END
+
+static INPUT_PORTS_START( fexcelv )
+ PORT_INCLUDE( fexcel )
+
+ PORT_START("IN.9")
+ PORT_CONFNAME( 0x03, 0x00, "Language" ) PORT_CHANGED_MEMBER(DEVICE_SELF, fidel6502_state, fexcelv_bankswitch, 0)
+ PORT_CONFSETTING( 0x00, "English" )
+ PORT_CONFSETTING( 0x01, "German" )
+ PORT_CONFSETTING( 0x02, "French" )
+ PORT_CONFSETTING( 0x03, "Spanish" )
+ PORT_BIT(0x7c, IP_ACTIVE_HIGH, IPT_UNUSED)
+ PORT_BIT(0x80, IP_ACTIVE_LOW, IPT_SPECIAL) PORT_READ_LINE_DEVICE_MEMBER("speech", s14001a_device, busy_r)
+INPUT_PORTS_END
+
+
+static INPUT_PORTS_START( csc )
+ PORT_INCLUDE( sc12 )
+
+ PORT_MODIFY("IN.0")
+ PORT_BIT(0x100, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("Speak") PORT_CODE(KEYCODE_SPACE)
+
+ PORT_MODIFY("IN.1")
+ PORT_BIT(0x100, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("RV") PORT_CODE(KEYCODE_V)
+
+ PORT_MODIFY("IN.2")
+ PORT_BIT(0x100, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("TM") PORT_CODE(KEYCODE_T)
+
+ PORT_MODIFY("IN.3")
+ PORT_BIT(0x100, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("LV") PORT_CODE(KEYCODE_L)
+
+ PORT_MODIFY("IN.4")
+ PORT_BIT(0x100, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("DM") PORT_CODE(KEYCODE_M)
+
+ PORT_MODIFY("IN.5")
+ PORT_BIT(0x100, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("ST") PORT_CODE(KEYCODE_S)
+
+ PORT_MODIFY("IN.8")
+ PORT_BIT(0x01, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("Pawn") PORT_CODE(KEYCODE_1) PORT_CODE(KEYCODE_1_PAD)
+ PORT_BIT(0x02, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("Rook") PORT_CODE(KEYCODE_2) PORT_CODE(KEYCODE_2_PAD)
+ PORT_BIT(0x04, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("Knight") PORT_CODE(KEYCODE_3) PORT_CODE(KEYCODE_3_PAD)
+ PORT_BIT(0x08, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("Bishop") PORT_CODE(KEYCODE_4) PORT_CODE(KEYCODE_4_PAD)
+ PORT_BIT(0x10, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("Queen") PORT_CODE(KEYCODE_5) PORT_CODE(KEYCODE_5_PAD)
+ PORT_BIT(0x20, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("King") PORT_CODE(KEYCODE_6) PORT_CODE(KEYCODE_6_PAD)
+
+ PORT_START("IN.9") // hardwired
+ PORT_CONFNAME( 0x01, 0x00, "Language" )
+ PORT_CONFSETTING( 0x00, "English" )
+ PORT_CONFSETTING( 0x01, "Other" )
+ PORT_CONFNAME( 0x02, 0x00, DEF_STR( Unknown ) )
+ PORT_CONFSETTING( 0x00, DEF_STR( Off ) )
+ PORT_CONFSETTING( 0x02, DEF_STR( On ) )
+INPUT_PORTS_END
+
+static INPUT_PORTS_START( cscg )
+ PORT_INCLUDE( csc )
+
+ PORT_MODIFY("IN.9")
+ PORT_CONFNAME( 0x01, 0x01, "Language" )
+ PORT_CONFSETTING( 0x00, "English" )
+ PORT_CONFSETTING( 0x01, "Other" )
+INPUT_PORTS_END
+
+
+
+/******************************************************************************
+ Machine Drivers
+******************************************************************************/
+
+static MACHINE_CONFIG_START( csc, fidel6502_state )
+
+ /* basic machine hardware */
+ MCFG_CPU_ADD("maincpu", M6502, 3900000/2) // from 3.9MHz resonator
+ MCFG_CPU_PROGRAM_MAP(csc_map)
+ MCFG_CPU_PERIODIC_INT_DRIVER(fidelz80base_state, irq0_line_hold, 600) // 38400kHz/64
+
+ MCFG_DEVICE_ADD("pia0", PIA6821, 0)
+ MCFG_PIA_READPB_HANDLER(READ8(fidel6502_state, csc_pia0_pb_r))
+ MCFG_PIA_WRITEPA_HANDLER(WRITE8(fidel6502_state, csc_pia0_pa_w))
+ MCFG_PIA_WRITEPB_HANDLER(WRITE8(fidel6502_state, csc_pia0_pb_w))
+ MCFG_PIA_CA2_HANDLER(WRITELINE(fidel6502_state, csc_pia0_ca2_w))
+
+ MCFG_DEVICE_ADD("pia1", PIA6821, 0)
+ MCFG_PIA_READPA_HANDLER(READ8(fidel6502_state, csc_pia1_pa_r))
+ MCFG_PIA_READCA1_HANDLER(READLINE(fidel6502_state, csc_pia1_ca1_r))
+ MCFG_PIA_READCB1_HANDLER(READLINE(fidel6502_state, csc_pia1_cb1_r))
+ MCFG_PIA_WRITEPA_HANDLER(WRITE8(fidel6502_state, csc_pia1_pa_w))
+ MCFG_PIA_WRITEPB_HANDLER(WRITE8(fidel6502_state, csc_pia1_pb_w))
+ MCFG_PIA_CA2_HANDLER(WRITELINE(fidel6502_state, csc_pia1_ca2_w))
+ MCFG_PIA_CB2_HANDLER(WRITELINE(fidel6502_state, csc_pia1_cb2_w))
+
+ MCFG_TIMER_DRIVER_ADD_PERIODIC("display_decay", fidelz80base_state, display_decay_tick, attotime::from_msec(1))
+ MCFG_DEFAULT_LAYOUT(layout_fidel_csc)
+
+ /* sound hardware */
+ MCFG_SPEAKER_STANDARD_MONO("mono")
+ MCFG_SOUND_ADD("speech", S14001A, 25000) // R/C circuit, around 25khz
+ MCFG_S14001A_EXT_READ_HANDLER(READ8(fidel6502_state, csc_speech_r))
+ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.75)
+
+ MCFG_SOUND_ADD("speaker", SPEAKER_SOUND, 0)
+ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.25)
+MACHINE_CONFIG_END
+
+static MACHINE_CONFIG_START( sc12, fidel6502_state )
+
+ /* basic machine hardware */
+ MCFG_CPU_ADD("maincpu", R65C02, XTAL_4MHz)
+ MCFG_CPU_PROGRAM_MAP(sc12_map)
+ MCFG_TIMER_DRIVER_ADD_PERIODIC("irq_on", fidel6502_state, irq_on, attotime::from_hz(780)) // from 556 timer
+ MCFG_TIMER_START_DELAY(attotime::from_hz(780) - attotime::from_nsec(15250)) // active for 15.25us
+ MCFG_TIMER_DRIVER_ADD_PERIODIC("irq_off", fidel6502_state, irq_off, attotime::from_hz(780))
+
+ MCFG_TIMER_DRIVER_ADD_PERIODIC("display_decay", fidelz80base_state, display_decay_tick, attotime::from_msec(1))
+ MCFG_DEFAULT_LAYOUT(layout_fidel_sc12)
+
+ MCFG_MACHINE_START_OVERRIDE(fidel6502_state, sc12)
+
+ /* sound hardware */
+ MCFG_SPEAKER_STANDARD_MONO("mono")
+ MCFG_SOUND_ADD("speaker", SPEAKER_SOUND, 0)
+ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.25)
+
+ /* cartridge */
+ MCFG_GENERIC_CARTSLOT_ADD("cartslot", generic_plain_slot, "fidel_scc")
+ MCFG_GENERIC_EXTENSIONS("bin,dat")
+ MCFG_GENERIC_LOAD(fidel6502_state, scc_cartridge)
+ MCFG_SOFTWARE_LIST_ADD("cart_list", "fidel_scc")
+MACHINE_CONFIG_END
+
+static MACHINE_CONFIG_START( fexcel, fidel6502_state )
+
+ /* basic machine hardware */
+ MCFG_CPU_ADD("maincpu", M65SC02, XTAL_12MHz/4) // G65SC102P-3, 12.0M ceramic resonator
+ MCFG_CPU_PROGRAM_MAP(fexcel_map)
+ MCFG_TIMER_DRIVER_ADD_PERIODIC("irq_on", fidel6502_state, irq_on, attotime::from_hz(780)) // from 556 timer, PCB photo suggests it's same as sc12
+ MCFG_TIMER_START_DELAY(attotime::from_hz(780) - attotime::from_nsec(15250)) // active for 15.25us
+ MCFG_TIMER_DRIVER_ADD_PERIODIC("irq_off", fidel6502_state, irq_off, attotime::from_hz(780))
+
+ MCFG_TIMER_DRIVER_ADD_PERIODIC("display_decay", fidelz80base_state, display_decay_tick, attotime::from_msec(1))
+ MCFG_DEFAULT_LAYOUT(layout_fidel_fev)
+
+ /* 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
+
+static MACHINE_CONFIG_DERIVED( fexcelv, fexcel )
+
+ /* sound hardware */
+ MCFG_SOUND_ADD("speech", S14001A, 25000) // R/C circuit, around 25khz
+ MCFG_S14001A_EXT_READ_HANDLER(READ8(fidel6502_state, fexcelv_speech_r))
+ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.75)
+MACHINE_CONFIG_END
+
+
+
+/******************************************************************************
+ ROM Definitions
+******************************************************************************/
+
+ROM_START( csc )
+ ROM_REGION( 0x10000, "maincpu", 0 )
+ ROM_LOAD("101-64109.bin", 0x2000, 0x2000, CRC(08a3577c) SHA1(69fe379d21a9d4b57c84c3832d7b3e7431eec341) )
+ ROM_LOAD("1025a03.bin", 0xa000, 0x2000, CRC(63982c07) SHA1(5ed4356323d5c80df216da55994abe94ba4aa94c) )
+ ROM_LOAD("1025a02.bin", 0xc000, 0x2000, CRC(9e6e7c69) SHA1(4f1ed9141b6596f4d2b1217d7a4ba48229f3f1b0) )
+ ROM_LOAD("1025a01.bin", 0xe000, 0x2000, CRC(57f068c3) SHA1(7d2ac4b9a2fba19556782863bdd89e2d2d94e97b) )
+ ROM_LOAD("74s474.bin", 0xfe00, 0x0200, CRC(4511ba31) SHA1(e275b1739f8c3aa445cccb6a2b597475f507e456) )
+
+ ROM_REGION( 0x2000, "speech", 0 )
+ ROM_LOAD("101-32107.bin", 0x0000, 0x1000, CRC(f35784f9) SHA1(348e54a7fa1e8091f89ac656b4da22f28ca2e44d) )
+ ROM_RELOAD( 0x1000, 0x1000)
+ROM_END
+
+ROM_START( cscsp )
+ ROM_REGION( 0x10000, "maincpu", 0 )
+ ROM_LOAD("101-64109.bin", 0x2000, 0x2000, CRC(08a3577c) SHA1(69fe379d21a9d4b57c84c3832d7b3e7431eec341) )
+ ROM_LOAD("1025a03.bin", 0xa000, 0x2000, CRC(63982c07) SHA1(5ed4356323d5c80df216da55994abe94ba4aa94c) )
+ ROM_LOAD("1025a02.bin", 0xc000, 0x2000, CRC(9e6e7c69) SHA1(4f1ed9141b6596f4d2b1217d7a4ba48229f3f1b0) )
+ ROM_LOAD("1025a01.bin", 0xe000, 0x2000, CRC(57f068c3) SHA1(7d2ac4b9a2fba19556782863bdd89e2d2d94e97b) )
+ ROM_LOAD("74s474.bin", 0xfe00, 0x0200, CRC(4511ba31) SHA1(e275b1739f8c3aa445cccb6a2b597475f507e456) )
+
+ ROM_REGION( 0x2000, "speech", 0 )
+ ROM_LOAD("vcc-spanish.bin", 0x0000, 0x2000, BAD_DUMP CRC(8766e128) SHA1(78c7413bf240159720b131ab70bfbdf4e86eb1e9) ) // taken from vcc/fexcelv, assume correct
+ROM_END
+
+ROM_START( cscg )
+ ROM_REGION( 0x10000, "maincpu", 0 )
+ ROM_LOAD("101-64109.bin", 0x2000, 0x2000, CRC(08a3577c) SHA1(69fe379d21a9d4b57c84c3832d7b3e7431eec341) )
+ ROM_LOAD("1025a03.bin", 0xa000, 0x2000, CRC(63982c07) SHA1(5ed4356323d5c80df216da55994abe94ba4aa94c) )
+ ROM_LOAD("1025a02.bin", 0xc000, 0x2000, CRC(9e6e7c69) SHA1(4f1ed9141b6596f4d2b1217d7a4ba48229f3f1b0) )
+ ROM_LOAD("1025a01.bin", 0xe000, 0x2000, CRC(57f068c3) SHA1(7d2ac4b9a2fba19556782863bdd89e2d2d94e97b) )
+ ROM_LOAD("74s474.bin", 0xfe00, 0x0200, CRC(4511ba31) SHA1(e275b1739f8c3aa445cccb6a2b597475f507e456) )
+
+ ROM_REGION( 0x2000, "speech", 0 )
+ ROM_LOAD("vcc-german.bin", 0x0000, 0x2000, BAD_DUMP CRC(6c85e310) SHA1(20d1d6543c1e6a1f04184a2df2a468f33faec3ff) ) // taken from fexcelv, assume correct
+ROM_END
+
+ROM_START( cscfr )
+ ROM_REGION( 0x10000, "maincpu", 0 )
+ ROM_LOAD("101-64109.bin", 0x2000, 0x2000, CRC(08a3577c) SHA1(69fe379d21a9d4b57c84c3832d7b3e7431eec341) )
+ ROM_LOAD("1025a03.bin", 0xa000, 0x2000, CRC(63982c07) SHA1(5ed4356323d5c80df216da55994abe94ba4aa94c) )
+ ROM_LOAD("1025a02.bin", 0xc000, 0x2000, CRC(9e6e7c69) SHA1(4f1ed9141b6596f4d2b1217d7a4ba48229f3f1b0) )
+ ROM_LOAD("1025a01.bin", 0xe000, 0x2000, CRC(57f068c3) SHA1(7d2ac4b9a2fba19556782863bdd89e2d2d94e97b) )
+ ROM_LOAD("74s474.bin", 0xfe00, 0x0200, CRC(4511ba31) SHA1(e275b1739f8c3aa445cccb6a2b597475f507e456) )
+
+ ROM_REGION( 0x2000, "speech", 0 )
+ ROM_LOAD("vcc-french.bin", 0x0000, 0x2000, BAD_DUMP CRC(fe8c5c18) SHA1(2b64279ab3747ee81c86963c13e78321c6cfa3a3) ) // taken from fexcelv, assume correct
+ROM_END
+
+
+ROM_START( fscc12 )
+ ROM_REGION( 0x10000, "maincpu", 0 )
+ ROM_LOAD("101-1068a01", 0x8000, 0x2000, CRC(63c76cdd) SHA1(e0771c98d4483a6b1620791cb99a7e46b0db95c4) ) // SSS SCM23C65E4
+ ROM_LOAD("tms2732ajl-45", 0xc000, 0x1000, CRC(45070a71) SHA1(8aeecff828f26fb7081902c757559903be272649) ) // TI TMS2732AJL-45
+ ROM_LOAD("tmm2764d-2", 0xe000, 0x2000, CRC(183d3edc) SHA1(3296a4c3bce5209587d4a1694fce153558544e63) ) // Toshiba TMM2764D-2
+ROM_END
+
+
+ROM_START( fexcel )
+ ROM_REGION( 0x10000, "maincpu", 0 )
+ ROM_LOAD("101-1080a01.ic5", 0x8000, 0x8000, CRC(846f8e40) SHA1(4e1d5b08d5ff3422192b54fa82cb3f505a69a971) ) // same as fexcelv
+ROM_END
+
+ROM_START( fexcelv )
+ ROM_REGION( 0x10000, "maincpu", 0 )
+ ROM_LOAD("101-1080a01.ic5", 0x8000, 0x8000, CRC(846f8e40) SHA1(4e1d5b08d5ff3422192b54fa82cb3f505a69a971) ) // PCB1, M27256
+
+ ROM_REGION( 0x8000, "speech", 0 )
+ ROM_LOAD("101-1081a01.ic2", 0x0000, 0x8000, CRC(c8ae1607) SHA1(6491ce6be60ed77f3dd931c0ca17616f13af943e) ) // PCB2, M27256
+ROM_END
+
+
+
+/******************************************************************************
+ Drivers
+******************************************************************************/
+
+/* YEAR NAME PARENT COMPAT MACHINE INPUT INIT COMPANY, FULLNAME, FLAGS */
+COMP( 1981, csc, 0, 0, csc, csc, driver_device, 0, "Fidelity Electronics", "Champion Sensory Chess Challenger (English)", MACHINE_SUPPORTS_SAVE | MACHINE_CLICKABLE_ARTWORK )
+COMP( 1981, cscsp, csc, 0, csc, cscg, driver_device, 0, "Fidelity Electronics", "Champion Sensory Chess Challenger (Spanish)", MACHINE_SUPPORTS_SAVE | MACHINE_CLICKABLE_ARTWORK )
+COMP( 1981, cscg, csc, 0, csc, cscg, driver_device, 0, "Fidelity Electronics", "Champion Sensory Chess Challenger (German)", MACHINE_SUPPORTS_SAVE | MACHINE_CLICKABLE_ARTWORK )
+COMP( 1981, cscfr, csc, 0, csc, cscg, driver_device, 0, "Fidelity Electronics", "Champion Sensory Chess Challenger (French)", MACHINE_SUPPORTS_SAVE | MACHINE_CLICKABLE_ARTWORK )
+
+COMP( 1984, fscc12, 0, 0, sc12, sc12, driver_device, 0, "Fidelity Electronics", "Sensory Chess Challenger 12-B", MACHINE_SUPPORTS_SAVE | MACHINE_CLICKABLE_ARTWORK )
+
+COMP( 1987, fexcel, 0, 0, fexcel, fexcel, driver_device, 0, "Fidelity Electronics", "Excellence (model 6080/6093)", MACHINE_SUPPORTS_SAVE | MACHINE_CLICKABLE_ARTWORK )
+COMP( 1987, fexcelv, 0, 0, fexcelv, fexcelv, driver_device, 0, "Fidelity Electronics", "Voice Excellence", MACHINE_SUPPORTS_SAVE | MACHINE_CLICKABLE_ARTWORK )
diff --git a/src/mame/drivers/fidelz80.cpp b/src/mame/drivers/fidelz80.cpp
index c0705c8b392..3ebb4f2919e 100644
--- a/src/mame/drivers/fidelz80.cpp
+++ b/src/mame/drivers/fidelz80.cpp
@@ -1,31 +1,60 @@
// license:BSD-3-Clause
// copyright-holders:Kevin Horton,Jonathan Gevaryahu,Sandro Ronco,hap
/******************************************************************************
-*
-* Fidelity Electronics Z80 based board driver
-*
-* All detailed RE work done by Kevin 'kevtris' Horton
-*
-* TODO:
-* * Figure out why it says the first speech line twice; it shouldn't?
-* It sometimes does this on Voice Sensory Chess Challenger real hardware.
-* It can also be heard on Advanced Talking Chess Challenger real hardware, but not the whole line:
-* "I I am Fidelity's chess challenger", instead.
-* * Get rom locations from pcb (done for UVC, VCC is probably similar)
-* * correctly hook up VBRC speech so that the z80 is halted while words are being spoken
-*
-***********************************************************************
-
-Talking Chess Challenger (VCC)
-Advanced Talking Chess Challenger (UVC)
-(which both share the same hardware)
-----------------------
+ Fidelity Electronics Z80 based board driver
+ for 6502 based boards, see drivers/fidel6502.cpp (documentation is in this driver)
+
+ TODO:
+ - Figure out why it says the first speech line twice; it shouldn't?
+ It sometimes does this on Voice Sensory Chess Challenger real hardware.
+ It can also be heard on Advanced Voice Chess Challenger real hardware, but not the whole line:
+ "I I am Fidelity's chess challenger", instead.
+ - VBRC card scanner
+
+ Chess pieces are required, but theoretically blindfold chess is possible.
+ Chessboard artwork is provided for boards with pressure/magnet sensors.
+ Read the official manual(s) on how to play.
+
+ Keypad legend:
+ - RE: Reset
+ - CL: Clear
+ - EN: Enter
+ - PB: Problem Mode
+ - PV: Position Verification
+ - LV: Playing Levels
+ - TB: Take Back
+ - DM: Display Move/Double Move
+ - RV: Reverse
+ - ST: Set/Stop
+ - TM: Time
+
+ Peripherals, compatible with various boards:
+ - Fidelity Challenger Printer - thermal printer, MCU=?
+
+ Program/data cartridges, for various boards, some cross-compatible:
+ - CG6: Greatest Chess Games 1
+ - CAC: Challenger Advanced Chess - 8KB 101-1038A01
+ - CB9: Challenger Book Openings 1 - 8KB?
+ - CB16: Challenger Book Openings 2 - 8+8KB 101-1042A01,02
+ - others are alt. titles of these?
+
+ Board hardware descriptions below.
+ Detailed RE work done by Kevin 'kevtris' Horton, except where noted
+
+******************************************************************************
+
+Voice Chess Challenger (VCC) (version A and B?)
+Advanced Voice Chess Challenger (UVC)
+Grandmaster Voice Chess Challenger
+Decorator Challenger (FCC)
+
+(which share the same hardware)
+----------------------
The CPU is a Z80 running at 4MHz. The TSI chip runs at around 25KHz, using a
470K / 100pf RC network. This system is very very basic, and is composed of just
the Z80, 4 ROMs, the TSI chip, and an 8255.
-
The Z80's interrupt inputs are all pulled to VCC, so no interrupts are used.
Reset is connected to a power-on reset circuit and a button on the keypad (marked RE).
@@ -49,14 +78,12 @@ Memory map (UVC):
4000-5FFF: 1K RAM (2114 SRAM x2)
6000-FFFF: empty
-I/O map:
---------
+Port map:
+---------
00-03: 8255 port chip, mirrored over the 00-FF range; program accesses F4-F7
-
8255 connections:
-----------------
-
PA.0 - segment G, TSI A0 (W)
PA.1 - segment F, TSI A1 (W)
PA.2 - segment E, TSI A2 (W)
@@ -73,7 +100,7 @@ PB.3 - digit 1, top dot (W)
PB.4 - digit 2 (W)
PB.5 - digit 3 (W)
PB.6 - enable language switches (W, see below)
-PB.7 - TSI DONE line (R)
+PB.7 - TSI BUSY line (R)
(button rows pulled up to 5V through 2.2K resistors)
PC.0 - button row 0, German language jumper (R)
@@ -85,19 +112,15 @@ PC.5 - button column B (W)
PC.6 - button column C (W)
PC.7 - button column D (W)
-
language switches:
------------------
-
When PB.6 is pulled low, the language switches can be read. There are four.
They connect to the button rows. When enabled, the row(s) will read low if
the jumper is present. English only VCC's do not have the 367 or any pads stuffed.
The jumpers are labelled: French, German, Spanish, and special.
-
language latch:
---------------
-
There's an unstuffed 7474 on the board that connects to PA.6 and PA.7. It allows
one to latch the state of A12 to the speech ROM. The English version has the chip
missing, and a jumper pulling "A12" to ground. This line is really a negative
@@ -113,10 +136,12 @@ automatically select the correct ROM(s). I have to test whether it will do auto
determination and give you a language option on power up or something.
-***********************************************************************
+******************************************************************************
-Chess Challenger 3/10
-----------------------
+Chess Challenger 10 (CC10)
+-------------------
+4 versions are known to exist: A,B,C,D. Strangely, version C has an 8080
+instead of Z80. Chess Challenger 1,3 and 7 also run on very similar hardware.
This is an earlier hardware upon which the VCC and UVC above were based on;
The hardware is nearly the same; in fact the only significant differences are
@@ -125,7 +150,6 @@ the connections to ports A and B on the PPI:
8255 connections:
-----------------
-
PA.0 - segment G (W)
PA.1 - segment F (W)
PA.2 - segment E (W)
@@ -135,6 +159,9 @@ PA.5 - segment B (W)
PA.6 - segment A (W)
PA.7 - 'beeper' direct speaker output (W)
+The beeper is via a 556 timer, fixed-frequency at around 1300-1400Hz.
+Not all hardware configurations include the beeper.
+
PB.0 - dot commons (W)
PB.1 - NC
PB.2 - digit 0, bottom dot (W)
@@ -142,7 +169,7 @@ PB.3 - digit 1, top dot (W)
PB.4 - digit 2 (W)
PB.5 - digit 3 (W)
PB.6 - NC
-PB.7 - Mode select (cc3 vs cc10, R)
+PB.7 - Mode select (cc3 vs cc10, R) - note: there is no CC3 with 16 buttons
(button rows pulled up to 5V through 2.2K resistors)
PC.0 - button row 0 (R)
@@ -157,6 +184,38 @@ PC.7 - button column D (W)
******************************************************************************
+Chess Challenger 7 (BCC)
+------------------------
+RE information from netlist by Berger
+
+Zilog Z80A, 3.579MHz from XTAL
+Z80 IRQ/NMI unused, no timer IC.
+This is a cost-reduced design from CC10, no special I/O chips.
+
+Memory map:
+-----------
+0000-0FFF: 4K 2332 ROM CN19103N BCC-REVB.
+2000-2FFF: ROM/RAM bus conflict!
+3000-3FFF: 256 bytes RAM (2111 SRAM x2)
+4000-FFFF: Z80 A14/A15 not connected
+
+Port map (Write):
+---------
+D0-D3: digit select and keypad mux
+D4: LOSE led
+D5: CHECK led
+A0-A2: NE591 A0-A2
+D7: NE591 D (_C not used)
+NE591 Q0-Q6: digit segments A-G
+NE591 Q7: buzzer
+
+Port map (Read):
+---------
+D0-D3: keypad row
+
+
+******************************************************************************
+
Voice Bridge Challenger (Model VBRC, later reissued as Model 7002)
and Bridge Challenger 3 (Model 7014)
(which both share the same* hardware)
@@ -180,7 +239,6 @@ The 8041 runs at 5MHz.
Memory Map:
-----------
-
0000-1FFF: 8K 101-64108 ROM
2000-3FFF: 8K 101-64109 ROM
4000-5FFF: 8K 101-64110 ROM
@@ -194,15 +252,12 @@ when the word is done being spoken. This is because D0-D5 run to the TSI chip d
The TSI chip's ROM is 4K, and is marked 101-32118. The clock is the same as the Chess
Challengers- 470K/100pf which gives a frequency around 25KHz or so.
-I/O Map:
---------
-
+Port Map:
+---------
00-FF: 8041 I/O ports (A0 selects between the two)
-
8041 pinout:
------------
-
(note: columns are pulled up with 10K resistors)
P10 - column H, RD LED, VFD grid 0
@@ -226,12 +281,10 @@ P27 - row 3 through inverter
PROG - I/O expander
T0 - optical card sensor (high = bright/reflective, low = dark/non reflective)
-T1 - connects to inverter, then nothing
-
+T1 - connects to inverter, then nothing?
D8243C I/O expander:
--------------------
-
P4.0 - segment M
P4.1 - segment L
P4.2 - segment N
@@ -252,10 +305,8 @@ P7.1 - goes through inverter, to pads that are not used
P7.2 - segment C
P7.3 - segment H
-
button matrix:
--------------
-
the matrix is composed of 8 columns by 4 rows.
A B C D E F G H
@@ -296,8 +347,8 @@ A detailed description of the hardware can be found also in the patent 4,373,719
******************************************************************************
-Sensory Chess Challenger champion (6502 based, implementation is in drivers/csc.cpp)
----------------------------------
+Champion Sensory Chess Challenger (CSC)
+---------------------------------------
Memory map:
-----------
@@ -319,25 +370,23 @@ NMI is not used.
IRQ is connected to a 600Hz oscillator (38.4KHz divided by 64).
Reset is connected to a power-on reset circuit.
-
PIA 0:
------
-
-PA0 - 7seg segments H, TSI A0
-PA1 - 7seg segments G, TSI A1
+PA0 - 7seg segments E, TSI A0
+PA1 - 7seg segments D, TSI A1
PA2 - 7seg segments C, TSI A2
-PA3 - 7seg segments B, TSI A3
-PA4 - 7seg segments A, TSI A4
+PA3 - 7seg segments H, TSI A3
+PA4 - 7seg segments G, TSI A4
PA5 - 7seg segments F, TSI A5
-PA6 - 7seg segments E
-PA7 - 7seg segments D
+PA6 - 7seg segments B
+PA7 - 7seg segments A
PB0 - A12 on speech ROM (if used... not used on this model, ROM is 4K)
-PB1 - START line on S14001A
+PB1 - START line on TSI
PB2 - white wire
-PB3 - DONE line from S14001A
-PB4 - Tone line (toggle to make a tone in the speaker)
-PB5 - button column I
+PB3 - BUSY line from TSI
+PB4 - hi/lo TSI speaker volume
+PB5 - button row 9
PB6 - selection jumper (resistor to 5V)
PB7 - selection jumper (resistor to ground)
@@ -347,10 +396,8 @@ CA2 - violet wire
CB1 - NC
CB2 - NC (connects to pin 14 of soldered connector)
-
PIA 1:
------
-
PA0 - button row 1
PA1 - button row 2
PA2 - button row 3
@@ -375,10 +422,8 @@ CA2 - selector bit 3
CB1 - button row 8
CB2 - selector bit 2
-
Selector: (attached to PIA 1, outputs 1 of 10 pins low. 7442)
---------
-
output # (selected turns this column on, and all others off)
0 - LED column A, button column A, 7seg digit 1
1 - LED column B, button column B, 7seg digit 2
@@ -389,7 +434,7 @@ output # (selected turns this column on, and all others off)
6 - LED column G, button column G
7 - LED column H, button column H
8 - button column I
-9 -
+9 - Tone line (toggle to make a tone in the buzzer)
The rows/columns are indicated on the game board:
@@ -419,10 +464,8 @@ column F - ST
these 6 buttons use row 9 (connects to PIA 0)
-
LED display:
------------
-
43 21 (digit number)
-----
88:88
@@ -436,18 +479,16 @@ The lone LED is connected to digit 1 common
All three of the above are called "segment H".
-***********************************************************************
-
-Sensory Chess Challenger
-------------------------
+******************************************************************************
+Voice Sensory Chess Challenger (VSC)
+------------------------------------
The display/button/LED/speech technology is identical to the above product.
Only the CPU board was changed. As such, it works the same but is interfaced
to different port chips this time.
Hardware:
---------
-
On the board are 13 chips.
The CPU is a Z80A running at 3.9MHz, with 20K of ROM and 1K of RAM mapped.
@@ -471,17 +512,15 @@ RST connects to a power-on reset circuit
Memory map:
-----------
-
0000-1FFF: 8K ROM 101-64018
2000-3FFF: 8K ROM 101-64019 (also used on the sensory champ. chess challenger)
4000-5FFF: 4K ROM 101-32024
6000-7FFF: 1K of RAM (2114 * 2)
8000-FFFF: not used, maps to open bus
-I/O map:
---------
-
-There's only two chips in the I/O map, an 8255 triple port chip, and a Z80A PIO
+Port map:
+---------
+There's only two chips in the portmap, an 8255 triple port chip, and a Z80A PIO
parallel input/output device.
Decoding isn't performed using a selector, but instead address lines are used.
@@ -514,10 +553,8 @@ This sequence repeats every 16 addresses. So to recap:
Refer to the Sensory Champ. Chess Chall. above for explanations of the below
I/O names and labels. It's the same.
-
8255:
-----
-
PA.0 - segment D, TSI A0
PA.1 - segment E, TSI A1
PA.2 - segment F, TSI A2
@@ -545,10 +582,8 @@ PC.5 - LED column F, button column F
PC.6 - LED column G, button column G
PC.7 - LED column H, button column H
-
Z80A PIO:
---------
-
PA.0 - button row 1
PA.1 - button row 2
PA.2 - button row 3
@@ -559,18 +594,16 @@ PA.6 - button row 7
PA.7 - button row 8
PB.0 - button column I
-PB.1 - button row 9
-PB.2 - Tone line (toggle to make tone in the speaker)
+PB.1 - button column J
+PB.2 - hi/lo TSI speaker volume
PB.3 - violet wire
-PB.4 - white wire (and TSI done line)
+PB.4 - white wire (and TSI BUSY line)
PB.5 - selection jumper input (see below)
PB.6 - TSI start line
-PB.7 - TSI ROM D0 line
-
+PB.7 - TSI ROM A12 line
selection jumpers:
------------------
-
These act like another row of buttons. It is composed of two diode locations,
so there's up to 4 possible configurations. My board does not have either diode
stuffed, so this most likely is "English". I suspect it selects which language to use
@@ -581,6 +614,127 @@ Anyways, the two jumpers are connected to button columns A and B and the common
connects to Z80A PIO PB.5, which basically makes a 10th button row. I would
expect that the software reads these once on startup only.
+
+******************************************************************************
+
+Sensory Chess Challenger (SC12-B, 6086)
+4 versions are known to exist: A,B,C, and X, with increasing CPU speed.
+---------------------------------
+RE information from netlist by Berger
+
+8*(8+1) buttons, 8+8+2 red LEDs
+DIN 41524C printer port
+36-pin edge connector
+CPU is a R65C02P4, running at 4MHz
+
+NE556 dual-timer IC:
+- timer#1, one-shot at power-on, to CPU _RESET
+- timer#2: R1=82K, R2=1K, C=22nf, to CPU _IRQ: ~780Hz, active low=15.25us
+
+Memory map:
+-----------
+6000-0FFF: 4K RAM (2016 * 2)
+2000-5FFF: cartridge
+6000-7FFF: control(W)
+8000-9FFF: 8K ROM SSS SCM23C65E4
+A000-BFFF: keypad(R)
+C000-DFFF: 4K ROM TI TMS2732AJL-45
+E000-FFFF: 8K ROM Toshiba TMM2764D-2
+
+control: (74LS377)
+--------
+Q0-Q3: 7442 A0-A3
+Q4: enable printer port pin 1 input
+Q5: printer port pin 5 output
+Q6,Q7: LEDs common anode
+
+7442 0-8: input mux and LEDs cathode
+7442 9: buzzer
+
+The keypad is read through a 74HC251, where S0,1,2 is from CPU A0,1,2, Y is connected to CPU D7.
+If control Q4 is set, printer data can be read from I0.
+
+
+******************************************************************************
+
+Voice Excellence (model 6092)
+----------------
+PCB 1: 510.1117A02, appears to be identical to other "Excellence" boards
+CPU: GTE G65SC102P-3, 32 KB PRG ROM: AMI 101-1080A01(IC5), 8192x8 SRAM SRM2264C10(IC6)
+2 rows of LEDs on the side: 1*8 green, 1*8 red
+
+PCB 2: 510.1117A01
+Speech: TSI S14001A, 32 KB ROM: AMI 101-1081A01(IC2)
+Dip Switches set ROM A13 and ROM A14, on the side of the board
+
+ROM A12 is tied to S14001A's A11 (yuck)
+ROM A11 is however tied to the CPU's XYZ
+
+0000_07FF - Spanish 1/4
+0800_0FFF - Spanish 3/4
+1000_17FF - Spanish 2/4
+1800_1FFF - Spanish 4/4
+
+2000_27FF - French 1/4
+2800_2FFF - French 3/4
+3000_3FFF - French 2/4
+3800_3FFF - French 4/4
+
+4000_47FF - German 1/4
+4800_4FFF - German 3/4
+5000_57FF - German 2/4
+5800_5FFF - German 4/4
+
+6000_67FF - English 1/2
+6800_6FFF - Bridge Challenger 1/2
+7000_77FF - English 2/2
+7800_7FFF - Bridge Challenger 2/2
+
+------------------
+RE info by hap, based on PCB photos
+
+Memory map:
+-----------
+0000-3FFF: 8K RAM (SRM2264)
+4000-7FFF: control (R/W)
+8000-FFFF: 32K ROM (M27256 compatible)
+
+control (W):
+------------
+Z80 A0-A2 to 3*74259, Z80 Dx to D (_C unused)
+
+Z80 D0:
+- Q4,Q5: led commons
+- Q6,Q7,Q2,Q1: 7seg panel digit select
+- Q0-Q3: 7442 A0-A3
+ + 0-7: led data
+ + 0-8: keypad mux
+ + 9: buzzer out
+
+Z80 D1: (model 6093)
+- Q0-Q7: 7seg data
+
+Z80 D2: (model 6092)
+- Q0-Q5: TSI C0-C5
+- Q6: TSI START pin
+- Q7: TSI ROM A11
+
+A11 from TSI is tied to TSI ROM A12(!)
+TSI ROM A13,A14 are hardwired to the 2 language switches.
+Sound comes from the Audio out pin, digital out pins are N/C.
+
+control (R):
+------------
+Z80 A0-A2 to 2*74251, Z80 Dx to output
+
+Z80 D7 to Y:
+- D0-D7: keypad row data
+
+Z80 D6 to W: (model 6092, tied to VCC otherwise)
+- D0,D1: language switches
+- D2-D6: VCC
+- D7: TSI BUSY
+
******************************************************************************/
#include "emu.h"
@@ -589,79 +743,57 @@ expect that the software reads these once on startup only.
#include "machine/i8255.h"
#include "machine/i8243.h"
#include "machine/z80pio.h"
-#include "sound/speaker.h"
-#include "sound/s14001a.h"
+#include "sound/beep.h"
+
+#include "includes/fidelz80.h"
// internal artwork
#include "fidel_cc.lh"
+#include "fidel_bcc.lh"
#include "fidel_vcc.lh"
-#include "fidel_vsc.lh"
#include "fidel_vbrc.lh"
+#include "fidel_vsc.lh" // clickable
-class fidelz80_state : public driver_device
+class fidelz80_state : public fidelz80base_state
{
public:
fidelz80_state(const machine_config &mconfig, device_type type, const char *tag)
- : driver_device(mconfig, type, tag),
- m_maincpu(*this, "maincpu"),
+ : fidelz80base_state(mconfig, type, tag),
m_mcu(*this, "mcu"),
m_z80pio(*this, "z80pio"),
m_ppi8255(*this, "ppi8255"),
m_i8243(*this, "i8243"),
- m_inp_matrix(*this, "IN"),
- m_speech(*this, "speech"),
- m_speaker(*this, "speaker"),
- m_display_wait(33),
- m_display_maxy(1),
- m_display_maxx(0)
+ m_beeper_off(*this, "beeper_off"),
+ m_beeper(*this, "beeper")
{ }
// devices/pointers
- required_device<cpu_device> m_maincpu;
optional_device<i8041_device> m_mcu;
optional_device<z80pio_device> m_z80pio;
optional_device<i8255_device> m_ppi8255;
optional_device<i8243_device> m_i8243;
- optional_ioport_array<10> m_inp_matrix; // max 10
- optional_device<s14001a_device> m_speech;
- optional_device<speaker_sound_device> m_speaker;
-
- // misc common
- UINT16 m_inp_mux; // multiplexed keypad/leds mask
- UINT16 m_led_select; // 5 bit selects for 7 seg leds and for common other leds, bits are (7seg leds are 0 1 2 3, common other leds are C) 0bxx3210xc
- UINT16 m_7seg_data; // data for seg leds
- UINT16 m_led_data;
- UINT8 m_digit_line_status[4]; // prevent overwrite of m_7seg_data
-
- UINT16 read_inputs(int columns);
- DECLARE_INPUT_CHANGED_MEMBER(reset_button);
-
- // display common
- int m_display_wait; // led/lamp off-delay in microseconds (default 33ms)
- int m_display_maxy; // display matrix number of rows
- int m_display_maxx; // display matrix number of columns (max 31 for now)
-
- UINT32 m_display_state[0x20]; // display matrix rows data (last bit is used for always-on)
- UINT16 m_display_segmask[0x20]; // if not 0, display matrix row is a digit, mask indicates connected segments
- UINT32 m_display_cache[0x20]; // (internal use)
- UINT8 m_display_decay[0x20][0x20]; // (internal use)
+ optional_device<timer_device> m_beeper_off;
+ optional_device<beep_device> m_beeper;
- TIMER_DEVICE_CALLBACK_MEMBER(display_decay_tick);
- void display_update();
- void set_display_size(int maxx, int maxy);
- void display_matrix(int maxx, int maxy, UINT32 setx, UINT32 sety);
+ DECLARE_INPUT_CHANGED_MEMBER(reset_button);
- // model VCC/UVC
+ // CC10 and VCC/UVC
void vcc_prepare_display();
+ DECLARE_READ8_MEMBER(vcc_speech_r);
DECLARE_WRITE8_MEMBER(vcc_ppi_porta_w);
DECLARE_READ8_MEMBER(vcc_ppi_portb_r);
DECLARE_WRITE8_MEMBER(vcc_ppi_portb_w);
DECLARE_READ8_MEMBER(vcc_ppi_portc_r);
DECLARE_WRITE8_MEMBER(vcc_ppi_portc_w);
DECLARE_WRITE8_MEMBER(cc10_ppi_porta_w);
+ TIMER_DEVICE_CALLBACK_MEMBER(beeper_off_callback);
+
+ // BCC
+ DECLARE_READ8_MEMBER(bcc_input_r);
+ DECLARE_WRITE8_MEMBER(bcc_control_w);
- // model VSC
+ // VSC
void vsc_prepare_display();
DECLARE_READ8_MEMBER(vsc_io_trampoline_r);
DECLARE_WRITE8_MEMBER(vsc_io_trampoline_w);
@@ -671,31 +803,20 @@ public:
DECLARE_READ8_MEMBER(vsc_pio_porta_r);
DECLARE_READ8_MEMBER(vsc_pio_portb_r);
DECLARE_WRITE8_MEMBER(vsc_pio_portb_w);
- DECLARE_INPUT_CHANGED_MEMBER(fidelz80_trigger_reset);
-
- // model 7014 and VBC
- DECLARE_WRITE8_MEMBER(bridgec_speech_w);
- DECLARE_WRITE8_MEMBER(kp_matrix_w);
- DECLARE_READ8_MEMBER(unknown_r);
- DECLARE_READ8_MEMBER(unknown2_r);
- DECLARE_READ8_MEMBER(exp_i8243_p2_r);
- DECLARE_WRITE8_MEMBER(exp_i8243_p2_w);
- DECLARE_WRITE8_MEMBER(mcu_data_w);
- DECLARE_WRITE8_MEMBER(mcu_command_w);
- DECLARE_READ8_MEMBER(mcu_data_r);
- DECLARE_READ8_MEMBER(mcu_status_r);
- DECLARE_INPUT_CHANGED_MEMBER(bridgec_trigger_reset);
- DECLARE_WRITE8_MEMBER(digit_w);
-
-protected:
- virtual void machine_start() override;
- virtual void machine_reset() override;
+
+ // VBRC/7014
+ void vbrc_prepare_display();
+ DECLARE_WRITE8_MEMBER(vbrc_speech_w);
+ DECLARE_WRITE8_MEMBER(vbrc_mcu_p1_w);
+ DECLARE_READ8_MEMBER(vbrc_mcu_t_r);
+ DECLARE_READ8_MEMBER(vbrc_mcu_p2_r);
+ DECLARE_WRITE8_MEMBER(vbrc_ioexp_port_w);
};
// machine start/reset
-void fidelz80_state::machine_start()
+void fidelz80base_state::machine_start()
{
// zerofill
memset(m_display_state, 0, sizeof(m_display_state));
@@ -707,7 +828,8 @@ void fidelz80_state::machine_start()
m_led_select = 0;
m_led_data = 0;
m_7seg_data = 0;
- memset(m_digit_line_status, 0, sizeof(m_digit_line_status));
+ m_speech_data = 0;
+ m_speech_bank = 0;
// register for savestates
save_item(NAME(m_display_maxy));
@@ -723,10 +845,11 @@ void fidelz80_state::machine_start()
save_item(NAME(m_led_select));
save_item(NAME(m_led_data));
save_item(NAME(m_7seg_data));
- save_item(NAME(m_digit_line_status));
+ save_item(NAME(m_speech_data));
+ save_item(NAME(m_speech_bank));
}
-void fidelz80_state::machine_reset()
+void fidelz80base_state::machine_reset()
{
}
@@ -741,7 +864,7 @@ void fidelz80_state::machine_reset()
// The device may strobe the outputs very fast, it is unnoticeable to the user.
// To prevent flickering here, we need to simulate a decay.
-void fidelz80_state::display_update()
+void fidelz80base_state::display_update()
{
UINT32 active_state[0x20];
@@ -794,7 +917,7 @@ void fidelz80_state::display_update()
memcpy(m_display_cache, active_state, sizeof(m_display_cache));
}
-TIMER_DEVICE_CALLBACK_MEMBER(fidelz80_state::display_decay_tick)
+TIMER_DEVICE_CALLBACK_MEMBER(fidelz80base_state::display_decay_tick)
{
// slowly turn off unpowered segments
for (int y = 0; y < m_display_maxy; y++)
@@ -805,13 +928,24 @@ TIMER_DEVICE_CALLBACK_MEMBER(fidelz80_state::display_decay_tick)
display_update();
}
-void fidelz80_state::set_display_size(int maxx, int maxy)
+void fidelz80base_state::set_display_size(int maxx, int maxy)
{
m_display_maxx = maxx;
m_display_maxy = maxy;
}
-void fidelz80_state::display_matrix(int maxx, int maxy, UINT32 setx, UINT32 sety)
+void fidelz80base_state::set_display_segmask(UINT32 digits, UINT32 mask)
+{
+ // set a segment mask per selected digit, but leave unselected ones alone
+ for (int i = 0; i < 0x20; i++)
+ {
+ if (digits & 1)
+ m_display_segmask[i] = mask;
+ digits >>= 1;
+ }
+}
+
+void fidelz80base_state::display_matrix(int maxx, int maxy, UINT32 setx, UINT32 sety)
{
set_display_size(maxx, maxy);
@@ -826,7 +960,7 @@ void fidelz80_state::display_matrix(int maxx, int maxy, UINT32 setx, UINT32 sety
// generic input handlers
-UINT16 fidelz80_state::read_inputs(int columns)
+UINT16 fidelz80base_state::read_inputs(int columns)
{
UINT16 ret = 0;
@@ -842,9 +976,9 @@ INPUT_CHANGED_MEMBER(fidelz80_state::reset_button)
{
// when RE button is directly wired to RESET pin(s)
m_maincpu->set_input_line(INPUT_LINE_RESET, newval ? ASSERT_LINE : CLEAR_LINE);
-
+
if (m_mcu)
- m_mcu->set_input_line(INPUT_LINE_RESET, newval ? CLEAR_LINE : ASSERT_LINE);
+ m_mcu->set_input_line(INPUT_LINE_RESET, newval ? ASSERT_LINE : CLEAR_LINE);
}
@@ -852,54 +986,66 @@ INPUT_CHANGED_MEMBER(fidelz80_state::reset_button)
// Devices, I/O
/******************************************************************************
- I8255 Device, for VCC/UVC
+ CC10 and VCC/UVC
******************************************************************************/
+// misc handlers
+
void fidelz80_state::vcc_prepare_display()
{
- // 4 7seg leds
- for (int i = 0; i < 4; i++)
- m_display_segmask[i] = 0x7f;
-
- // note: d0 for extra leds
- display_matrix(8, 4, m_7seg_data | (m_led_select << 7 & 0x80), m_led_select >> 2 & 0xf);
+ // 4 7seg leds (note: sel d0 for extra leds)
+ UINT8 outdata = (m_7seg_data & 0x7f) | (m_led_select << 7 & 0x80);
+ set_display_segmask(0xf, 0x7f);
+ display_matrix(8, 4, outdata, m_led_select >> 2 & 0xf);
}
+READ8_MEMBER(fidelz80_state::vcc_speech_r)
+{
+ return m_speech_rom[m_speech_bank << 12 | offset];
+}
+
+
+// I8255 PPI
+
WRITE8_MEMBER(fidelz80_state::vcc_ppi_porta_w)
{
- // data for the 4 7seg leds, bits are xABCDEFG
- m_7seg_data = BITSWAP8(data,7,0,1,2,3,4,5,6) & 0x7f;
+ // d0-d6: digit segment data, bits are xABCDEFG
+ m_7seg_data = BITSWAP8(data,7,0,1,2,3,4,5,6);
vcc_prepare_display();
-
- // d0-d5: TSI A0-A5
+
+ // d0-d5: TSI C0-C5
// d7: TSI START line
- m_speech->set_volume(15); // hack, s14001a core should assume a volume of 15 unless otherwise stated...
- m_speech->reg_w(data & 0x3f);
- m_speech->rst_w(data >> 7 & 1);
-
+ m_speech->data_w(space, 0, data & 0x3f);
+ m_speech->start_w(data >> 7 & 1);
+
// d6: language latch data
- // d7: language latch clock
+ // d7: language latch clock (latch on high)
+ if (data & 0x80)
+ {
+ m_speech->force_update(); // update stream to now
+ m_speech_bank = data >> 6 & 1;
+ }
}
READ8_MEMBER(fidelz80_state::vcc_ppi_portb_r)
{
- // d7: TSI DONE line
- return (m_speech->bsy_r()) ? 0x80 : 0x00;
+ // d7: TSI BUSY line
+ return (m_speech->busy_r()) ? 0x80 : 0x00;
}
WRITE8_MEMBER(fidelz80_state::vcc_ppi_portb_w)
{
// d0,d2-d5: digit/led select
+ // _d6: enable language switches
m_led_select = data;
vcc_prepare_display();
-
- // _d6: enable language switches (TODO)
}
READ8_MEMBER(fidelz80_state::vcc_ppi_portc_r)
{
- // d0-d3: multiplexed inputs (inverted)
- return ~read_inputs(4) & 0xf;
+ // d0-d3: multiplexed inputs (active low), also language switches
+ UINT8 lan = (~m_led_select & 0x40) ? m_inp_matrix[4]->read() : 0;
+ return ~(lan | read_inputs(4)) & 0xf;
}
WRITE8_MEMBER(fidelz80_state::vcc_ppi_portc_w)
@@ -908,44 +1054,86 @@ WRITE8_MEMBER(fidelz80_state::vcc_ppi_portc_w)
m_inp_mux = ~data >> 4 & 0xf;
}
-// CC10-specific (no speech roms, 1-bit beeper instead)
+
+// CC10-specific (no speech chip, 1-bit beeper instead)
+
+TIMER_DEVICE_CALLBACK_MEMBER(fidelz80_state::beeper_off_callback)
+{
+ m_beeper->set_state(0);
+}
WRITE8_MEMBER(fidelz80_state::cc10_ppi_porta_w)
{
- // d0-d6: digit segment data
- m_7seg_data = data;
+ // d7: enable beeper on falling edge
+ if (m_beeper && ~data & m_7seg_data & 0x80)
+ {
+ m_beeper->set_state(1);
+ m_beeper_off->adjust(attotime::from_msec(80)); // duration is approximate
+ }
+
+ // d0-d6: digit segment data (same as VCC)
+ m_7seg_data = BITSWAP8(data,7,0,1,2,3,4,5,6);
vcc_prepare_display();
+}
+
- // d7: beeper output
- m_speaker->level_w(data >> 7 & 1);
+
+/******************************************************************************
+ BCC
+******************************************************************************/
+
+// TTL
+
+WRITE8_MEMBER(fidelz80_state::bcc_control_w)
+{
+ // a0-a2,d7: digit segment data via NE591, Q7 is speaker out
+ UINT8 mask = 1 << (offset & 7);
+ m_7seg_data = (m_7seg_data & ~mask) | ((data & 0x80) ? mask : 0);
+ m_speaker->level_w(m_7seg_data >> 7 & 1);
+
+ // d0-d3: led select, input mux
+ // d4,d5: check,lose leds(direct)
+ set_display_segmask(0xf, 0x7f);
+ display_matrix(7, 6, m_7seg_data & 0x7f, data & 0x3f);
+ m_inp_mux = data & 0xf;
}
+READ8_MEMBER(fidelz80_state::bcc_input_r)
+{
+ // d0-d3: multiplexed inputs
+ return read_inputs(4);
+}
+
+
/******************************************************************************
- I8255 Device, for VSC
+ VSC
******************************************************************************/
+// misc handlers
+
void fidelz80_state::vsc_prepare_display()
{
// 4 7seg leds + H
for (int i = 0; i < 4; i++)
- {
- m_display_segmask[i] = 0x7f;
m_display_state[i] = (m_led_select >> i & 1) ? m_7seg_data : 0;
- }
-
+
// 8*8 chessboard leds
for (int i = 0; i < 8; i++)
m_display_state[i+4] = (m_led_select >> i & 1) ? m_led_data : 0;
set_display_size(8, 12);
+ set_display_segmask(0xf, 0x7f);
display_update();
}
+
+// I8255 PPI
+
WRITE8_MEMBER(fidelz80_state::vsc_ppi_porta_w)
{
- // d0-d5: TSI A0-A5
- m_speech->reg_w(data & 0x3f);
+ // d0-d5: TSI C0-C5
+ 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);
@@ -963,195 +1151,103 @@ WRITE8_MEMBER(fidelz80_state::vsc_ppi_portc_w)
{
// d0-d3: select digits
// d0-d7: select leds, input mux low bits
- m_inp_mux = (m_inp_mux & 0x300) | data;
+ m_inp_mux = (m_inp_mux & ~0xff) | data;
m_led_select = data;
vsc_prepare_display();
}
-/******************************************************************************
- PIO Device, for VSC
-******************************************************************************/
+// Z80 PIO
READ8_MEMBER(fidelz80_state::vsc_pio_porta_r)
{
- // multiplexed inputs
- return read_inputs(10);
+ // d0-d7: multiplexed inputs
+ return read_inputs(11);
}
READ8_MEMBER(fidelz80_state::vsc_pio_portb_r)
{
- UINT8 ret = 0;
-
- // d4: TSI DONE line
- ret |= (m_speech->bsy_r()) ? 0 : 0x10;
+ UINT8 data = 0;
+
+ // d4: TSI BUSY line
+ data |= (m_speech->busy_r()) ? 0 : 0x10;
- return ret;
+ return data;
}
WRITE8_MEMBER(fidelz80_state::vsc_pio_portb_w)
{
// d0,d1: input mux highest bits
- m_inp_mux = (m_inp_mux & 0xff) | (data << 8 & 0x300);
-
- // d2: tone line
- m_speaker->level_w(data >> 2 & 1);
-
+ // d5: enable language switch
+ m_inp_mux = (m_inp_mux & 0xff) | (data << 8 & 0x300) | (data << 5 & 0x400);
+
+ // d7: TSI ROM A12
+ m_speech->force_update(); // update stream to now
+ m_speech_bank = data >> 7 & 1;
+
// d6: TSI START line
- m_speech->set_volume(15); // hack, s14001a core should assume a volume of 15 unless otherwise stated...
- m_speech->rst_w(data >> 6 & 1);
+ m_speech->start_w(data >> 6 & 1);
+
+ // d2: lower TSI volume
+ m_speech->set_output_gain(0, (data & 4) ? 0.5 : 1.0);
}
+
/******************************************************************************
- I8041 MCU, for VBRC
+ VBRC/7014
******************************************************************************/
-WRITE8_MEMBER(fidelz80_state::kp_matrix_w)
-{
- UINT16 out_data = BITSWAP16(m_7seg_data,12,13,1,6,5,2,0,7,15,11,10,14,4,3,9,8);
- UINT16 out_digit = out_data & 0x3fff;
- UINT8 out_led = BIT(out_data, 15) ? 0 : 1;
+// misc handlers
- // output the digit before update the matrix
- if (m_inp_mux & 0x01)
- {
- output().set_digit_value(1, out_digit);
- output().set_led_value(8, out_led);
- }
- if (m_inp_mux & 0x02)
- {
- output().set_digit_value(2, out_digit);
- output().set_led_value(7, out_led);
- }
- if (m_inp_mux & 0x04)
- {
- output().set_digit_value(3, out_digit);
- output().set_led_value(6, out_led);
- }
- if (m_inp_mux & 0x08)
- {
- output().set_digit_value(4, out_digit);
- output().set_led_value(5, out_led);
- }
- if (m_inp_mux & 0x10)
- {
- output().set_digit_value(5, out_digit);
- output().set_led_value(4, out_led);
- }
- if (m_inp_mux & 0x20)
- {
- output().set_digit_value(6, out_digit);
- output().set_led_value(3, out_led);
- }
- if (m_inp_mux & 0x40)
- {
- output().set_digit_value(7, out_digit);
- output().set_led_value(2, out_led);
- }
- if (m_inp_mux & 0x80)
- {
- output().set_digit_value(8, out_digit);
- output().set_led_value(1, out_led);
- }
-
- memset(m_digit_line_status, 0, sizeof(m_digit_line_status));
-
- m_inp_mux = data;
-}
-
-READ8_MEMBER(fidelz80_state::exp_i8243_p2_r)
+void fidelz80_state::vbrc_prepare_display()
{
- UINT8 inp = 0xff;
-
- for (int i = 0; i < 4; i++)
- if (m_inp_mux >> i & 1)
- inp &= m_inp_matrix[i]->read();
-
- return (m_i8243->i8243_p2_r(space, offset)&0x0f) | (inp<<4&0xf0);
+ // 14seg led segments, d15 is extra led, d14 is unused (tone on prototype?)
+ UINT16 outdata = BITSWAP16(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);
}
-WRITE8_MEMBER(fidelz80_state::exp_i8243_p2_w)
-{
- m_i8243->i8243_p2_w(space, offset, data&0x0f);
-}
-// probably related to the card scanner
-READ8_MEMBER(fidelz80_state::unknown_r)
-{
- return 0;
-}
+// I8243 I/O expander
-READ8_MEMBER(fidelz80_state::unknown2_r)
+WRITE8_MEMBER(fidelz80_state::vbrc_ioexp_port_w)
{
- return machine().rand();
+ // P4-P7: digit segment data
+ m_7seg_data = (m_7seg_data & ~(0xf << (4*offset))) | ((data & 0xf) << (4*offset));
+ vbrc_prepare_display();
}
-/******************************************************************************
- I8243 expander
-******************************************************************************/
-WRITE8_MEMBER(fidelz80_state::digit_w)
-{
- if (m_digit_line_status[offset])
- return;
-
- m_digit_line_status[offset&3] = 1;
+// I8041 MCU
- switch (offset)
- {
- case 0:
- m_7seg_data = (m_7seg_data&(~0x000f)) | ((data<<0)&0x000f);
- break;
- case 1:
- m_7seg_data = (m_7seg_data&(~0x00f0)) | ((data<<4)&0x00f0);
- break;
- case 2:
- m_7seg_data = (m_7seg_data&(~0x0f00)) | ((data<<8)&0x0f00);
- break;
- case 3:
- m_7seg_data = (m_7seg_data&(~0xf000)) | ((data<<12)&0xf000);
- break;
- }
-}
-
-/******************************************************************************
- basic machine
-******************************************************************************/
-
-WRITE8_MEMBER(fidelz80_state::mcu_data_w)
-{
- m_mcu->upi41_master_w(space, 0, data);
-}
-
-WRITE8_MEMBER(fidelz80_state::mcu_command_w)
+WRITE8_MEMBER(fidelz80_state::vbrc_mcu_p1_w)
{
- m_mcu->upi41_master_w(space, 1, data);
+ // d0-d7: select digits, input mux
+ m_inp_mux = m_led_select = data;
+ vbrc_prepare_display();
}
-READ8_MEMBER(fidelz80_state::mcu_data_r)
+READ8_MEMBER(fidelz80_state::vbrc_mcu_p2_r)
{
- return m_mcu->upi41_master_r(space, 0);
+ // d0-d3: I8243 P2
+ // d4-d7: multiplexed inputs (active low)
+ return (m_i8243->i8243_p2_r(space, offset) & 0x0f) | (read_inputs(8) << 4 ^ 0xf0);
}
-READ8_MEMBER(fidelz80_state::mcu_status_r)
+READ8_MEMBER(fidelz80_state::vbrc_mcu_t_r)
{
- return m_mcu->upi41_master_r(space, 1);
-}
+ // T0: card scanner?
+ if (offset == 0)
+ return 0;
-WRITE8_MEMBER(fidelz80_state::bridgec_speech_w)
-{
- // todo: HALT THE z80 here, and set up a callback to poll the s14001a DONE line to resume z80
- m_speech->set_volume(15); // hack, s14001a core should assume a volume of 15 unless otherwise stated...
- m_speech->reg_w(data & 0x3f);
- m_speech->rst_w(BIT(data, 7));
+ // T1: ?
+ else
+ return rand() & 1;
}
-
-
-
/******************************************************************************
Address Maps
******************************************************************************/
@@ -1160,19 +1256,35 @@ WRITE8_MEMBER(fidelz80_state::bridgec_speech_w)
static ADDRESS_MAP_START( cc10_map, AS_PROGRAM, 8, fidelz80_state )
ADDRESS_MAP_UNMAP_HIGH
+ ADDRESS_MAP_GLOBAL_MASK(0x3fff)
AM_RANGE(0x0000, 0x0fff) AM_ROM
- AM_RANGE(0x3000, 0x31ff) AM_RAM
+ AM_RANGE(0x3000, 0x31ff) AM_MIRROR(0x0e00) AM_RAM
ADDRESS_MAP_END
static ADDRESS_MAP_START( vcc_map, AS_PROGRAM, 8, fidelz80_state )
ADDRESS_MAP_UNMAP_HIGH
AM_RANGE(0x0000, 0x2fff) AM_ROM
- AM_RANGE(0x4000, 0x43ff) AM_RAM AM_MIRROR(0x1c00)
+ AM_RANGE(0x4000, 0x43ff) AM_MIRROR(0x1c00) AM_RAM
ADDRESS_MAP_END
static ADDRESS_MAP_START( vcc_io, AS_IO, 8, fidelz80_state )
- ADDRESS_MAP_GLOBAL_MASK(0xff)
- AM_RANGE(0x00, 0x03) AM_MIRROR(0xfc) AM_DEVREADWRITE("ppi8255", i8255_device, read, write)
+ ADDRESS_MAP_GLOBAL_MASK(0x03)
+ AM_RANGE(0x00, 0x03) AM_DEVREADWRITE("ppi8255", i8255_device, read, write)
+ADDRESS_MAP_END
+
+
+// BCC
+
+static ADDRESS_MAP_START( bcc_map, AS_PROGRAM, 8, fidelz80_state )
+ ADDRESS_MAP_UNMAP_HIGH
+ ADDRESS_MAP_GLOBAL_MASK(0x3fff)
+ AM_RANGE(0x0000, 0x0fff) AM_ROM
+ AM_RANGE(0x3000, 0x30ff) AM_MIRROR(0x0f00) AM_RAM
+ADDRESS_MAP_END
+
+static ADDRESS_MAP_START( bcc_io, AS_IO, 8, fidelz80_state )
+ ADDRESS_MAP_GLOBAL_MASK(0x07)
+ AM_RANGE(0x00, 0x07) AM_READWRITE(bcc_input_r, bcc_control_w)
ADDRESS_MAP_END
@@ -1180,20 +1292,21 @@ ADDRESS_MAP_END
static ADDRESS_MAP_START( vsc_map, AS_PROGRAM, 8, fidelz80_state )
ADDRESS_MAP_UNMAP_HIGH
- AM_RANGE(0x0000, 0x5fff) AM_ROM
- AM_RANGE(0x6000, 0x63ff) AM_RAM AM_MIRROR(0x1c00)
+ AM_RANGE(0x0000, 0x3fff) AM_ROM
+ AM_RANGE(0x4000, 0x4fff) AM_MIRROR(0x1000) AM_ROM
+ AM_RANGE(0x6000, 0x63ff) AM_MIRROR(0x1c00) AM_RAM
ADDRESS_MAP_END
// VSC io: A2 is 8255 _CE, A3 is Z80 PIO _CE - in theory, both chips can be accessed simultaneously
READ8_MEMBER(fidelz80_state::vsc_io_trampoline_r)
{
- UINT8 ret = 0xff; // open bus
+ UINT8 data = 0xff; // open bus
if (~offset & 4)
- ret &= m_ppi8255->read(space, offset & 3);
+ data &= m_ppi8255->read(space, offset & 3);
if (~offset & 8)
- ret &= m_z80pio->read(space, offset & 3);
-
- return ret;
+ data &= m_z80pio->read(space, offset & 3);
+
+ return data;
}
WRITE8_MEMBER(fidelz80_state::vsc_io_trampoline_w)
@@ -1205,36 +1318,38 @@ WRITE8_MEMBER(fidelz80_state::vsc_io_trampoline_w)
}
static ADDRESS_MAP_START( vsc_io, AS_IO, 8, fidelz80_state )
- ADDRESS_MAP_GLOBAL_MASK(0xff)
- AM_RANGE(0x00, 0x0f) AM_MIRROR(0xf0) AM_READWRITE(vsc_io_trampoline_r, vsc_io_trampoline_w)
+ ADDRESS_MAP_GLOBAL_MASK(0x0f)
+ AM_RANGE(0x00, 0x0f) AM_READWRITE(vsc_io_trampoline_r, vsc_io_trampoline_w)
ADDRESS_MAP_END
-// VBRC
+// VBRC/7014
+
+WRITE8_MEMBER(fidelz80_state::vbrc_speech_w)
+{
+ m_speech->data_w(space, 0, data & 0x3f);
+ m_speech->start_w(1);
+ m_speech->start_w(0);
+}
static ADDRESS_MAP_START( vbrc_main_map, AS_PROGRAM, 8, fidelz80_state )
- AM_RANGE(0xe000, 0xe000) AM_WRITE(bridgec_speech_w) AM_MIRROR(0x1fff) // write to speech chip, halts cpu
- AM_IMPORT_FROM( vsc_map )
+ ADDRESS_MAP_UNMAP_HIGH
+ AM_RANGE(0x0000, 0x5fff) AM_ROM
+ AM_RANGE(0x6000, 0x63ff) AM_MIRROR(0x1c00) AM_RAM
+ AM_RANGE(0xe000, 0xe000) AM_MIRROR(0x1fff) AM_WRITE(vbrc_speech_w)
ADDRESS_MAP_END
-
-
static ADDRESS_MAP_START( vbrc_main_io, AS_IO, 8, fidelz80_state )
- ADDRESS_MAP_UNMAP_HIGH
- ADDRESS_MAP_GLOBAL_MASK(0xff)
- AM_RANGE(0x00, 0x00) AM_READWRITE(mcu_data_r, mcu_data_w)
- AM_RANGE(0x01, 0x01) AM_READWRITE(mcu_status_r, mcu_command_w)
+ ADDRESS_MAP_GLOBAL_MASK(0x01)
+ AM_RANGE(0x00, 0x01) AM_DEVREADWRITE("mcu", i8041_device, upi41_master_r, upi41_master_w)
ADDRESS_MAP_END
static ADDRESS_MAP_START( vbrc_mcu_map, AS_IO, 8, fidelz80_state )
ADDRESS_MAP_UNMAP_LOW
- AM_RANGE(MCS48_PORT_P1, MCS48_PORT_P1) AM_WRITE(kp_matrix_w)
- AM_RANGE(MCS48_PORT_P2, MCS48_PORT_P2) AM_READWRITE(exp_i8243_p2_r, exp_i8243_p2_w)
+ AM_RANGE(MCS48_PORT_P1, MCS48_PORT_P1) AM_WRITE(vbrc_mcu_p1_w)
+ AM_RANGE(MCS48_PORT_P2, MCS48_PORT_P2) AM_READ(vbrc_mcu_p2_r) AM_DEVWRITE("i8243", i8243_device, i8243_p2_w)
AM_RANGE(MCS48_PORT_PROG, MCS48_PORT_PROG) AM_DEVWRITE("i8243", i8243_device, i8243_prog_w)
-
- // related to the card scanner, probably clock and data optical
- AM_RANGE(MCS48_PORT_T0, MCS48_PORT_T0) AM_READ(unknown_r)
- AM_RANGE(MCS48_PORT_T1, MCS48_PORT_T1) AM_READ(unknown2_r)
+ AM_RANGE(MCS48_PORT_T0, MCS48_PORT_T1) AM_READ(vbrc_mcu_t_r)
ADDRESS_MAP_END
@@ -1243,190 +1358,287 @@ ADDRESS_MAP_END
Input Ports
******************************************************************************/
-static INPUT_PORTS_START( fidelz80 )
+static INPUT_PORTS_START( vcc_base )
PORT_START("IN.0")
PORT_BIT(0x01, IP_ACTIVE_HIGH, IPT_UNUSED)
- PORT_BIT(0x02, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("LV") PORT_CODE(KEYCODE_V)
- PORT_BIT(0x04, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("A1") PORT_CODE(KEYCODE_1) PORT_CODE(KEYCODE_A)
- PORT_BIT(0x08, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("E5") PORT_CODE(KEYCODE_5) PORT_CODE(KEYCODE_E)
+ PORT_BIT(0x02, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("LV") PORT_CODE(KEYCODE_L)
+ PORT_BIT(0x04, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("A1") PORT_CODE(KEYCODE_1) PORT_CODE(KEYCODE_1_PAD) PORT_CODE(KEYCODE_A)
+ PORT_BIT(0x08, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("E5") PORT_CODE(KEYCODE_5) PORT_CODE(KEYCODE_5_PAD) PORT_CODE(KEYCODE_E)
PORT_START("IN.1")
- PORT_BIT(0x01, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("CB") PORT_CODE(KEYCODE_Z)
+ PORT_BIT(0x01, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("Speak") PORT_CODE(KEYCODE_SPACE)
PORT_BIT(0x02, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("DM") PORT_CODE(KEYCODE_M)
- PORT_BIT(0x04, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("B2") PORT_CODE(KEYCODE_2) PORT_CODE(KEYCODE_B)
- PORT_BIT(0x08, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("F6") PORT_CODE(KEYCODE_6) PORT_CODE(KEYCODE_F)
+ PORT_BIT(0x04, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("B2") PORT_CODE(KEYCODE_2) PORT_CODE(KEYCODE_2_PAD) PORT_CODE(KEYCODE_B)
+ PORT_BIT(0x08, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("F6") PORT_CODE(KEYCODE_6) PORT_CODE(KEYCODE_6_PAD) PORT_CODE(KEYCODE_F)
PORT_START("IN.2")
PORT_BIT(0x01, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("CL") PORT_CODE(KEYCODE_DEL)
PORT_BIT(0x02, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("PB") PORT_CODE(KEYCODE_P)
- PORT_BIT(0x04, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("C3") PORT_CODE(KEYCODE_3) PORT_CODE(KEYCODE_C)
- PORT_BIT(0x08, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("G7") PORT_CODE(KEYCODE_7) PORT_CODE(KEYCODE_G)
+ PORT_BIT(0x04, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("C3") PORT_CODE(KEYCODE_3) PORT_CODE(KEYCODE_3_PAD) PORT_CODE(KEYCODE_C)
+ PORT_BIT(0x08, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("G7") PORT_CODE(KEYCODE_7) PORT_CODE(KEYCODE_7_PAD) PORT_CODE(KEYCODE_G)
PORT_START("IN.3")
PORT_BIT(0x01, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("EN") PORT_CODE(KEYCODE_ENTER)
PORT_BIT(0x02, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("PV") PORT_CODE(KEYCODE_O)
- PORT_BIT(0x04, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("D4") PORT_CODE(KEYCODE_4) PORT_CODE(KEYCODE_D)
- PORT_BIT(0x08, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("H8") PORT_CODE(KEYCODE_8) PORT_CODE(KEYCODE_H)
+ PORT_BIT(0x04, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("D4") PORT_CODE(KEYCODE_4) PORT_CODE(KEYCODE_4_PAD) PORT_CODE(KEYCODE_D)
+ PORT_BIT(0x08, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("H8") PORT_CODE(KEYCODE_8) PORT_CODE(KEYCODE_8_PAD) PORT_CODE(KEYCODE_H)
PORT_START("RESET") // is not on matrix IN.0 d0
PORT_BIT(0x01, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("RE") PORT_CODE(KEYCODE_R) PORT_CHANGED_MEMBER(DEVICE_SELF, fidelz80_state, reset_button, 0)
+INPUT_PORTS_END
+
+static INPUT_PORTS_START( cc10 )
+ PORT_INCLUDE( vcc_base )
+
+ PORT_START("IN.4")
+ PORT_BIT(0x0f, IP_ACTIVE_HIGH, IPT_UNUSED)
+
+ PORT_START("LEVEL") // hardwired (VCC/GND?)
+ PORT_CONFNAME( 0x80, 0x00, "Maximum Levels" )
+ PORT_CONFSETTING( 0x00, "10" ) // factory setting
+ PORT_CONFSETTING( 0x80, "3" )
+INPUT_PORTS_END
+
+static INPUT_PORTS_START( vcc )
+ PORT_INCLUDE( vcc_base )
+
+ PORT_START("IN.4") // PCB jumpers, not consumer accessible
+ PORT_CONFNAME( 0x01, 0x00, "Language: German" )
+ PORT_CONFSETTING( 0x00, DEF_STR( Off ) )
+ PORT_CONFSETTING( 0x01, DEF_STR( On ) )
+ PORT_CONFNAME( 0x02, 0x00, "Language: French" )
+ PORT_CONFSETTING( 0x00, DEF_STR( Off ) )
+ PORT_CONFSETTING( 0x02, DEF_STR( On ) )
+ PORT_CONFNAME( 0x04, 0x00, "Language: Spanish" )
+ PORT_CONFSETTING( 0x00, DEF_STR( Off ) )
+ PORT_CONFSETTING( 0x04, DEF_STR( On ) )
+ PORT_CONFNAME( 0x08, 0x00, "Language: Special" )
+ PORT_CONFSETTING( 0x00, DEF_STR( Off ) )
+ PORT_CONFSETTING( 0x08, DEF_STR( On ) )
+INPUT_PORTS_END
+
+static INPUT_PORTS_START( vccfr )
+ PORT_INCLUDE( vcc )
+
+ PORT_MODIFY("IN.4")
+ PORT_CONFNAME( 0x02, 0x02, "Language: French" )
+ PORT_CONFSETTING( 0x00, DEF_STR( Off ) )
+ PORT_CONFSETTING( 0x02, DEF_STR( On ) )
+INPUT_PORTS_END
+
+static INPUT_PORTS_START( vccsp )
+ PORT_INCLUDE( vcc )
+
+ PORT_MODIFY("IN.4")
+ PORT_CONFNAME( 0x04, 0x04, "Language: Spanish" )
+ PORT_CONFSETTING( 0x00, DEF_STR( Off ) )
+ PORT_CONFSETTING( 0x04, DEF_STR( On ) )
+INPUT_PORTS_END
+
+static INPUT_PORTS_START( vccg )
+ PORT_INCLUDE( vcc )
+
+ PORT_MODIFY("IN.4")
+ PORT_CONFNAME( 0x01, 0x01, "Language: German" )
+ PORT_CONFSETTING( 0x00, DEF_STR( Off ) )
+ PORT_CONFSETTING( 0x01, DEF_STR( On ) )
+INPUT_PORTS_END
+
+
+static INPUT_PORTS_START( bcc )
+ PORT_START("IN.0")
+ PORT_BIT(0x01, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("EN") PORT_CODE(KEYCODE_ENTER)
+ PORT_BIT(0x02, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("PV") PORT_CODE(KEYCODE_O)
+ PORT_BIT(0x04, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("d4") PORT_CODE(KEYCODE_4) PORT_CODE(KEYCODE_4_PAD) PORT_CODE(KEYCODE_D)
+ PORT_BIT(0x08, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("H8") PORT_CODE(KEYCODE_8) PORT_CODE(KEYCODE_8_PAD) PORT_CODE(KEYCODE_H)
- PORT_START("LEVEL") // cc10 only
- PORT_CONFNAME( 0x80, 0x00, "Number of levels" )
- PORT_CONFSETTING( 0x00, "10" )
- PORT_CONFSETTING( 0x80, "3" )
+ PORT_START("IN.1")
+ PORT_BIT(0x01, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("CL") PORT_CODE(KEYCODE_DEL)
+ PORT_BIT(0x02, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("PB") PORT_CODE(KEYCODE_P)
+ PORT_BIT(0x04, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("C3") PORT_CODE(KEYCODE_3) PORT_CODE(KEYCODE_3_PAD) PORT_CODE(KEYCODE_C)
+ PORT_BIT(0x08, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("g7") PORT_CODE(KEYCODE_7) PORT_CODE(KEYCODE_7_PAD) PORT_CODE(KEYCODE_G)
+
+ PORT_START("IN.2")
+ PORT_BIT(0x01, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("CB") PORT_CODE(KEYCODE_SPACE)
+ PORT_BIT(0x02, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("DM") PORT_CODE(KEYCODE_M)
+ PORT_BIT(0x04, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("b2") PORT_CODE(KEYCODE_2) PORT_CODE(KEYCODE_2_PAD) PORT_CODE(KEYCODE_B)
+ PORT_BIT(0x08, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("F6") PORT_CODE(KEYCODE_6) PORT_CODE(KEYCODE_6_PAD) PORT_CODE(KEYCODE_F)
+
+ PORT_START("IN.3")
+ PORT_BIT(0x01, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("RE") PORT_CODE(KEYCODE_R)
+ PORT_BIT(0x02, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("LV") PORT_CODE(KEYCODE_L)
+ PORT_BIT(0x04, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("A1") PORT_CODE(KEYCODE_1) PORT_CODE(KEYCODE_1_PAD) PORT_CODE(KEYCODE_A)
+ PORT_BIT(0x08, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("E5") PORT_CODE(KEYCODE_5) PORT_CODE(KEYCODE_5_PAD) PORT_CODE(KEYCODE_E)
INPUT_PORTS_END
+
static INPUT_PORTS_START( vsc )
PORT_START("IN.0")
- PORT_BIT(0x01, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_TOGGLE
- PORT_BIT(0x02, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_TOGGLE
- PORT_BIT(0x04, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_TOGGLE
- PORT_BIT(0x08, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_TOGGLE
- PORT_BIT(0x10, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_TOGGLE
- PORT_BIT(0x20, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_TOGGLE
- PORT_BIT(0x40, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_TOGGLE
- PORT_BIT(0x80, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_TOGGLE
+ PORT_BIT(0x01, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("Square a1")
+ PORT_BIT(0x02, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("Square a2")
+ PORT_BIT(0x04, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("Square a3")
+ PORT_BIT(0x08, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("Square a4")
+ PORT_BIT(0x10, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("Square a5")
+ PORT_BIT(0x20, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("Square a6")
+ PORT_BIT(0x40, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("Square a7")
+ PORT_BIT(0x80, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("Square a8")
PORT_START("IN.1")
- PORT_BIT(0x01, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_TOGGLE
- PORT_BIT(0x02, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_TOGGLE
- PORT_BIT(0x04, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_TOGGLE
- PORT_BIT(0x08, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_TOGGLE
- PORT_BIT(0x10, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_TOGGLE
- PORT_BIT(0x20, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_TOGGLE
- PORT_BIT(0x40, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_TOGGLE
- PORT_BIT(0x80, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_TOGGLE
+ PORT_BIT(0x01, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("Square b1")
+ PORT_BIT(0x02, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("Square b2")
+ PORT_BIT(0x04, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("Square b3")
+ PORT_BIT(0x08, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("Square b4")
+ PORT_BIT(0x10, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("Square b5")
+ PORT_BIT(0x20, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("Square b6")
+ PORT_BIT(0x40, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("Square b7")
+ PORT_BIT(0x80, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("Square b8")
PORT_START("IN.2")
- PORT_BIT(0x01, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_TOGGLE
- PORT_BIT(0x02, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_TOGGLE
- PORT_BIT(0x04, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_TOGGLE
- PORT_BIT(0x08, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_TOGGLE
- PORT_BIT(0x10, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_TOGGLE
- PORT_BIT(0x20, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_TOGGLE
- PORT_BIT(0x40, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_TOGGLE
- PORT_BIT(0x80, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_TOGGLE
+ PORT_BIT(0x01, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("Square c1")
+ PORT_BIT(0x02, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("Square c2")
+ PORT_BIT(0x04, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("Square c3")
+ PORT_BIT(0x08, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("Square c4")
+ PORT_BIT(0x10, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("Square c5")
+ PORT_BIT(0x20, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("Square c6")
+ PORT_BIT(0x40, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("Square c7")
+ PORT_BIT(0x80, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("Square c8")
PORT_START("IN.3")
- PORT_BIT(0x01, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_TOGGLE
- PORT_BIT(0x02, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_TOGGLE
- PORT_BIT(0x04, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_TOGGLE
- PORT_BIT(0x08, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_TOGGLE
- PORT_BIT(0x10, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_TOGGLE
- PORT_BIT(0x20, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_TOGGLE
- PORT_BIT(0x40, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_TOGGLE
- PORT_BIT(0x80, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_TOGGLE
+ PORT_BIT(0x01, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("Square d1")
+ PORT_BIT(0x02, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("Square d2")
+ PORT_BIT(0x04, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("Square d3")
+ PORT_BIT(0x08, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("Square d4")
+ PORT_BIT(0x10, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("Square d5")
+ PORT_BIT(0x20, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("Square d6")
+ PORT_BIT(0x40, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("Square d7")
+ PORT_BIT(0x80, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("Square d8")
PORT_START("IN.4")
- PORT_BIT(0x01, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_TOGGLE
- PORT_BIT(0x02, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_TOGGLE
- PORT_BIT(0x04, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_TOGGLE
- PORT_BIT(0x08, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_TOGGLE
- PORT_BIT(0x10, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_TOGGLE
- PORT_BIT(0x20, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_TOGGLE
- PORT_BIT(0x40, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_TOGGLE
- PORT_BIT(0x80, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_TOGGLE
+ PORT_BIT(0x01, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("Square e1")
+ PORT_BIT(0x02, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("Square e2")
+ PORT_BIT(0x04, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("Square e3")
+ PORT_BIT(0x08, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("Square e4")
+ PORT_BIT(0x10, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("Square e5")
+ PORT_BIT(0x20, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("Square e6")
+ PORT_BIT(0x40, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("Square e7")
+ PORT_BIT(0x80, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("Square e8")
PORT_START("IN.5")
- PORT_BIT(0x01, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_TOGGLE
- PORT_BIT(0x02, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_TOGGLE
- PORT_BIT(0x04, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_TOGGLE
- PORT_BIT(0x08, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_TOGGLE
- PORT_BIT(0x10, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_TOGGLE
- PORT_BIT(0x20, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_TOGGLE
- PORT_BIT(0x40, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_TOGGLE
- PORT_BIT(0x80, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_TOGGLE
+ PORT_BIT(0x01, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("Square f1")
+ PORT_BIT(0x02, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("Square f2")
+ PORT_BIT(0x04, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("Square f3")
+ PORT_BIT(0x08, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("Square f4")
+ PORT_BIT(0x10, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("Square f5")
+ PORT_BIT(0x20, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("Square f6")
+ PORT_BIT(0x40, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("Square f7")
+ PORT_BIT(0x80, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("Square f8")
PORT_START("IN.6")
- PORT_BIT(0x01, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_TOGGLE
- PORT_BIT(0x02, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_TOGGLE
- PORT_BIT(0x04, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_TOGGLE
- PORT_BIT(0x08, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_TOGGLE
- PORT_BIT(0x10, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_TOGGLE
- PORT_BIT(0x20, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_TOGGLE
- PORT_BIT(0x40, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_TOGGLE
- PORT_BIT(0x80, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_TOGGLE
+ PORT_BIT(0x01, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("Square g1")
+ PORT_BIT(0x02, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("Square g2")
+ PORT_BIT(0x04, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("Square g3")
+ PORT_BIT(0x08, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("Square g4")
+ PORT_BIT(0x10, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("Square g5")
+ PORT_BIT(0x20, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("Square g6")
+ PORT_BIT(0x40, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("Square g7")
+ PORT_BIT(0x80, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("Square g8")
PORT_START("IN.7")
- PORT_BIT(0x01, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_TOGGLE
- PORT_BIT(0x02, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_TOGGLE
- PORT_BIT(0x04, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_TOGGLE
- PORT_BIT(0x08, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_TOGGLE
- PORT_BIT(0x10, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_TOGGLE
- PORT_BIT(0x20, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_TOGGLE
- PORT_BIT(0x40, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_TOGGLE
- PORT_BIT(0x80, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_TOGGLE
+ PORT_BIT(0x01, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("Square h1")
+ PORT_BIT(0x02, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("Square h2")
+ PORT_BIT(0x04, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("Square h3")
+ PORT_BIT(0x08, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("Square h4")
+ PORT_BIT(0x10, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("Square h5")
+ PORT_BIT(0x20, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("Square h6")
+ PORT_BIT(0x40, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("Square h7")
+ PORT_BIT(0x80, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("Square h8")
PORT_START("IN.8") // buttons on the right
- PORT_BIT(0x01, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("Pawn") PORT_CODE(KEYCODE_1)
- PORT_BIT(0x02, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("Rook") PORT_CODE(KEYCODE_2)
- PORT_BIT(0x04, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("Knight") PORT_CODE(KEYCODE_3)
- PORT_BIT(0x08, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("Bishop") PORT_CODE(KEYCODE_4)
- PORT_BIT(0x10, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("Queen") PORT_CODE(KEYCODE_5)
- PORT_BIT(0x20, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("King") PORT_CODE(KEYCODE_6)
- PORT_BIT(0x40, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("CL") PORT_CODE(KEYCODE_DEL)
- PORT_BIT(0x80, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("RE") PORT_CODE(KEYCODE_R)
- PORT_BIT(0x100, IP_ACTIVE_HIGH, IPT_UNUSED)
+ PORT_BIT(0x01, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("Pawn") PORT_CODE(KEYCODE_1) PORT_CODE(KEYCODE_1_PAD)
+ PORT_BIT(0x02, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("Rook") PORT_CODE(KEYCODE_2) PORT_CODE(KEYCODE_2_PAD)
+ PORT_BIT(0x04, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("Knight") PORT_CODE(KEYCODE_3) PORT_CODE(KEYCODE_3_PAD)
+ PORT_BIT(0x08, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("Bishop") PORT_CODE(KEYCODE_4) PORT_CODE(KEYCODE_4_PAD)
+ PORT_BIT(0x10, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("Queen") PORT_CODE(KEYCODE_5) PORT_CODE(KEYCODE_5_PAD)
+ PORT_BIT(0x20, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("King") PORT_CODE(KEYCODE_6) PORT_CODE(KEYCODE_6_PAD)
+ PORT_BIT(0x40, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("CL") PORT_CODE(KEYCODE_DEL)
+ PORT_BIT(0x80, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("RE") PORT_CODE(KEYCODE_R)
PORT_START("IN.9") // buttons beside the display
- PORT_BIT(0x01, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("TM") PORT_CODE(KEYCODE_T)
- PORT_BIT(0x02, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("RV") PORT_CODE(KEYCODE_V)
- PORT_BIT(0x04, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("Speak") PORT_CODE(KEYCODE_SPACE)
- PORT_BIT(0x08, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("LV") PORT_CODE(KEYCODE_L)
- PORT_BIT(0x10, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("DM") PORT_CODE(KEYCODE_M)
- PORT_BIT(0x20, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("ST") PORT_CODE(KEYCODE_S)
- PORT_BIT(0xc0, IP_ACTIVE_HIGH, IPT_UNUSED)
+ PORT_BIT(0x01, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("TM") PORT_CODE(KEYCODE_T)
+ PORT_BIT(0x02, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("RV") PORT_CODE(KEYCODE_V)
+ PORT_BIT(0x04, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("Speak") PORT_CODE(KEYCODE_SPACE)
+ PORT_BIT(0x08, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("LV") PORT_CODE(KEYCODE_L)
+ PORT_BIT(0x10, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("DM") PORT_CODE(KEYCODE_M)
+ PORT_BIT(0x20, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("ST") PORT_CODE(KEYCODE_S)
+ PORT_BIT(0xc0, IP_ACTIVE_HIGH, IPT_UNUSED)
+
+ PORT_START("IN.10") // hardwired (2 diodes)
+ PORT_CONFNAME( 0x01, 0x00, "Language" )
+ PORT_CONFSETTING( 0x00, "English" )
+ PORT_CONFSETTING( 0x01, "Other" )
+ PORT_CONFNAME( 0x02, 0x00, DEF_STR( Unknown ) )
+ PORT_CONFSETTING( 0x00, DEF_STR( Off ) )
+ PORT_CONFSETTING( 0x02, DEF_STR( On ) )
+INPUT_PORTS_END
+
+static INPUT_PORTS_START( vscg )
+ PORT_INCLUDE( vsc )
+
+ PORT_MODIFY("IN.10")
+ PORT_CONFNAME( 0x01, 0x01, "Language" )
+ PORT_CONFSETTING( 0x00, "English" )
+ PORT_CONFSETTING( 0x01, "Other" )
INPUT_PORTS_END
-static INPUT_PORTS_START( bridgec )
+
+static INPUT_PORTS_START( vbrc )
PORT_START("IN.0")
- PORT_BIT(0x01, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("A") PORT_CODE(KEYCODE_A)
- PORT_BIT(0x02, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("10") PORT_CODE(KEYCODE_0)
- PORT_BIT(0x04, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("6") PORT_CODE(KEYCODE_6)
- PORT_BIT(0x08, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("2") PORT_CODE(KEYCODE_2)
+ PORT_BIT(0x01, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("A") PORT_CODE(KEYCODE_A)
+ PORT_BIT(0x02, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("10") PORT_CODE(KEYCODE_0)
+ PORT_BIT(0x04, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("6") PORT_CODE(KEYCODE_6)
+ PORT_BIT(0x08, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("2") PORT_CODE(KEYCODE_2)
PORT_START("IN.1")
- PORT_BIT(0x01, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("K") PORT_CODE(KEYCODE_K)
- PORT_BIT(0x02, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("9") PORT_CODE(KEYCODE_9)
- PORT_BIT(0x04, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("5") PORT_CODE(KEYCODE_5)
- PORT_BIT(0x08, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("1") PORT_CODE(KEYCODE_1)
+ PORT_BIT(0x01, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("K") PORT_CODE(KEYCODE_K)
+ PORT_BIT(0x02, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("9") PORT_CODE(KEYCODE_9)
+ PORT_BIT(0x04, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("5") PORT_CODE(KEYCODE_5)
+ PORT_BIT(0x08, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("1") PORT_CODE(KEYCODE_1)
PORT_START("IN.2")
- PORT_BIT(0x01, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("Q") PORT_CODE(KEYCODE_Q)
- PORT_BIT(0x02, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("8") PORT_CODE(KEYCODE_8)
- PORT_BIT(0x04, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("4") PORT_CODE(KEYCODE_4)
- PORT_BIT(0x08, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("P") PORT_CODE(KEYCODE_Z)
+ PORT_BIT(0x01, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("Q") PORT_CODE(KEYCODE_Q)
+ PORT_BIT(0x02, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("8") PORT_CODE(KEYCODE_8)
+ PORT_BIT(0x04, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("4") PORT_CODE(KEYCODE_4)
+ PORT_BIT(0x08, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("P") PORT_CODE(KEYCODE_Z)
PORT_START("IN.3")
- PORT_BIT(0x01, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("J") PORT_CODE(KEYCODE_J)
- PORT_BIT(0x02, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("7") PORT_CODE(KEYCODE_7)
- PORT_BIT(0x04, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("3") PORT_CODE(KEYCODE_3)
- PORT_BIT(0x08, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("NT") PORT_CODE(KEYCODE_N)
+ PORT_BIT(0x01, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("J") PORT_CODE(KEYCODE_J)
+ PORT_BIT(0x02, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("7") PORT_CODE(KEYCODE_7)
+ PORT_BIT(0x04, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("3") PORT_CODE(KEYCODE_3)
+ PORT_BIT(0x08, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("NT") PORT_CODE(KEYCODE_N)
PORT_START("IN.4")
- PORT_BIT(0x01, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("EN") PORT_CODE(KEYCODE_E)
- PORT_BIT(0x02, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("SC") PORT_CODE(KEYCODE_S)
- PORT_BIT(0x04, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("PL") PORT_CODE(KEYCODE_X)
- PORT_BIT(0x08, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("Spades") PORT_CODE(KEYCODE_1_PAD)
+ PORT_BIT(0x01, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("EN") PORT_CODE(KEYCODE_E)
+ PORT_BIT(0x02, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("SC") PORT_CODE(KEYCODE_S)
+ PORT_BIT(0x04, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("PL") PORT_CODE(KEYCODE_X)
+ PORT_BIT(0x08, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("Spades") PORT_CODE(KEYCODE_1_PAD)
PORT_START("IN.5")
- PORT_BIT(0x01, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("CL") PORT_CODE(KEYCODE_C)
- PORT_BIT(0x02, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("DB") PORT_CODE(KEYCODE_D)
- PORT_BIT(0x04, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("VL") PORT_CODE(KEYCODE_V)
- PORT_BIT(0x08, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("Hearts") PORT_CODE(KEYCODE_2_PAD)
+ PORT_BIT(0x01, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("CL") PORT_CODE(KEYCODE_C)
+ PORT_BIT(0x02, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("DB") PORT_CODE(KEYCODE_D)
+ PORT_BIT(0x04, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("VL") PORT_CODE(KEYCODE_V)
+ PORT_BIT(0x08, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("Hearts") PORT_CODE(KEYCODE_2_PAD)
PORT_START("IN.6")
- PORT_BIT(0x01, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("Beep on/off") PORT_CODE(KEYCODE_SPACE)
- PORT_BIT(0x02, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("PB") PORT_CODE(KEYCODE_B)
- PORT_BIT(0x04, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("CV") PORT_CODE(KEYCODE_G)
- PORT_BIT(0x08, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("Diamonds") PORT_CODE(KEYCODE_3_PAD)
+ PORT_BIT(0x01, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("Beep on/off") PORT_CODE(KEYCODE_SPACE)
+ PORT_BIT(0x02, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("PB") PORT_CODE(KEYCODE_B)
+ PORT_BIT(0x04, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("CV") PORT_CODE(KEYCODE_G)
+ PORT_BIT(0x08, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("Diamonds") PORT_CODE(KEYCODE_3_PAD)
PORT_START("IN.7")
- PORT_BIT(0x01, IP_ACTIVE_HIGH, IPT_UNUSED)
- PORT_BIT(0x02, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("BR") PORT_CODE(KEYCODE_T)
- PORT_BIT(0x04, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("DL") PORT_CODE(KEYCODE_L)
- PORT_BIT(0x08, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("Clubs") PORT_CODE(KEYCODE_4_PAD)
+ PORT_BIT(0x01, IP_ACTIVE_HIGH, IPT_UNUSED)
+ PORT_BIT(0x02, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("BR") PORT_CODE(KEYCODE_T)
+ PORT_BIT(0x04, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("DL") PORT_CODE(KEYCODE_L)
+ PORT_BIT(0x08, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("Clubs") PORT_CODE(KEYCODE_4_PAD)
PORT_START("RESET") // is not on matrix IN.7 d0
PORT_BIT(0x01, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("RE") PORT_CODE(KEYCODE_R) PORT_CHANGED_MEMBER(DEVICE_SELF, fidelz80_state, reset_button, 0)
@@ -1438,6 +1650,22 @@ INPUT_PORTS_END
Machine Drivers
******************************************************************************/
+static MACHINE_CONFIG_START( bcc, fidelz80_state )
+
+ /* basic machine hardware */
+ MCFG_CPU_ADD("maincpu", Z80, XTAL_3_579545MHz)
+ MCFG_CPU_PROGRAM_MAP(bcc_map)
+ MCFG_CPU_IO_MAP(bcc_io)
+
+ MCFG_TIMER_DRIVER_ADD_PERIODIC("display_decay", fidelz80base_state, display_decay_tick, attotime::from_msec(1))
+ MCFG_DEFAULT_LAYOUT(layout_fidel_bcc)
+
+ /* 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
+
static MACHINE_CONFIG_START( cc10, fidelz80_state )
/* basic machine hardware */
@@ -1452,13 +1680,14 @@ static MACHINE_CONFIG_START( cc10, fidelz80_state )
MCFG_I8255_IN_PORTC_CB(READ8(fidelz80_state, vcc_ppi_portc_r))
MCFG_I8255_OUT_PORTC_CB(WRITE8(fidelz80_state, vcc_ppi_portc_w))
- MCFG_TIMER_DRIVER_ADD_PERIODIC("display_decay", fidelz80_state, display_decay_tick, attotime::from_msec(1))
+ MCFG_TIMER_DRIVER_ADD_PERIODIC("display_decay", fidelz80base_state, display_decay_tick, attotime::from_msec(1))
MCFG_DEFAULT_LAYOUT(layout_fidel_cc)
/* sound hardware */
MCFG_SPEAKER_STANDARD_MONO("mono")
- MCFG_SOUND_ADD("speaker", SPEAKER_SOUND, 0)
+ MCFG_SOUND_ADD("beeper", BEEP, 1360) // approximation, from 556 timer ic
MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.25)
+ MCFG_TIMER_DRIVER_ADD("beeper_off", fidelz80_state, beeper_off_callback)
MACHINE_CONFIG_END
static MACHINE_CONFIG_START( vcc, fidelz80_state )
@@ -1475,13 +1704,14 @@ static MACHINE_CONFIG_START( vcc, fidelz80_state )
MCFG_I8255_IN_PORTC_CB(READ8(fidelz80_state, vcc_ppi_portc_r))
MCFG_I8255_OUT_PORTC_CB(WRITE8(fidelz80_state, vcc_ppi_portc_w))
- MCFG_TIMER_DRIVER_ADD_PERIODIC("display_decay", fidelz80_state, display_decay_tick, attotime::from_msec(1))
+ MCFG_TIMER_DRIVER_ADD_PERIODIC("display_decay", fidelz80base_state, display_decay_tick, attotime::from_msec(1))
MCFG_DEFAULT_LAYOUT(layout_fidel_vcc)
/* sound hardware */
MCFG_SPEAKER_STANDARD_MONO("mono")
MCFG_SOUND_ADD("speech", S14001A, 25000) // R/C circuit, around 25khz
- MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.25)
+ MCFG_S14001A_EXT_READ_HANDLER(READ8(fidelz80_state, vcc_speech_r))
+ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.75)
MACHINE_CONFIG_END
static MACHINE_CONFIG_START( vsc, fidelz80_state )
@@ -1490,7 +1720,7 @@ static MACHINE_CONFIG_START( vsc, fidelz80_state )
MCFG_CPU_ADD("maincpu", Z80, XTAL_4MHz)
MCFG_CPU_PROGRAM_MAP(vsc_map)
MCFG_CPU_IO_MAP(vsc_io)
- MCFG_CPU_PERIODIC_INT_DRIVER(fidelz80_state, nmi_line_pulse, 600) // 555 timer, approx 600hz
+ MCFG_CPU_PERIODIC_INT_DRIVER(fidelz80base_state, nmi_line_pulse, 600) // 555 timer, approx 600hz
MCFG_DEVICE_ADD("ppi8255", I8255, 0)
MCFG_I8255_OUT_PORTA_CB(WRITE8(fidelz80_state, vsc_ppi_porta_w))
@@ -1502,38 +1732,37 @@ static MACHINE_CONFIG_START( vsc, fidelz80_state )
MCFG_Z80PIO_IN_PB_CB(READ8(fidelz80_state, vsc_pio_portb_r))
MCFG_Z80PIO_OUT_PB_CB(WRITE8(fidelz80_state, vsc_pio_portb_w))
- MCFG_TIMER_DRIVER_ADD_PERIODIC("display_decay", fidelz80_state, display_decay_tick, attotime::from_msec(1))
+ MCFG_TIMER_DRIVER_ADD_PERIODIC("display_decay", fidelz80base_state, display_decay_tick, attotime::from_msec(1))
MCFG_DEFAULT_LAYOUT(layout_fidel_vsc)
/* sound hardware */
MCFG_SPEAKER_STANDARD_MONO("mono")
MCFG_SOUND_ADD("speech", S14001A, 25000) // R/C circuit, around 25khz
- MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.25)
-
- MCFG_SOUND_ADD("speaker", SPEAKER_SOUND, 0)
- MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.25)
+ MCFG_S14001A_EXT_READ_HANDLER(READ8(fidelz80_state, vcc_speech_r))
+ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.75)
MACHINE_CONFIG_END
-static MACHINE_CONFIG_START( bridgec, fidelz80_state )
+static MACHINE_CONFIG_START( vbrc, fidelz80_state )
/* basic machine hardware */
- MCFG_CPU_ADD("maincpu", Z80, XTAL_5MHz/2) // 2.5MHz
+ MCFG_CPU_ADD("maincpu", Z80, XTAL_5MHz/2)
MCFG_CPU_PROGRAM_MAP(vbrc_main_map)
MCFG_CPU_IO_MAP(vbrc_main_io)
MCFG_QUANTUM_PERFECT_CPU("maincpu")
- MCFG_CPU_ADD("mcu", I8041, XTAL_5MHz) // 5MHz
+ MCFG_CPU_ADD("mcu", I8041, XTAL_5MHz) // or XTAL_5MHz/4?
MCFG_CPU_IO_MAP(vbrc_mcu_map)
- MCFG_I8243_ADD("i8243", NOOP, WRITE8(fidelz80_state, digit_w))
+ MCFG_I8243_ADD("i8243", NOOP, WRITE8(fidelz80_state, vbrc_ioexp_port_w))
- MCFG_TIMER_DRIVER_ADD_PERIODIC("display_decay", fidelz80_state, display_decay_tick, attotime::from_msec(1))
+ MCFG_TIMER_DRIVER_ADD_PERIODIC("display_decay", fidelz80base_state, display_decay_tick, attotime::from_msec(1))
MCFG_DEFAULT_LAYOUT(layout_fidel_vbrc)
/* sound hardware */
MCFG_SPEAKER_STANDARD_MONO("mono")
MCFG_SOUND_ADD("speech", S14001A, 25000) // R/C circuit, around 25khz
- MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.00)
+ MCFG_S14001A_BSY_HANDLER(INPUTLINE("maincpu", Z80_INPUT_LINE_WAIT))
+ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.75)
MACHINE_CONFIG_END
@@ -1543,45 +1772,140 @@ MACHINE_CONFIG_END
******************************************************************************/
ROM_START( cc10 )
- ROM_REGION( 0x10000, "maincpu", ROMREGION_ERASEFF )
- ROM_LOAD( "cc10.bin", 0x0000, 0x1000, CRC(bb9e6055) SHA1(18276e57cf56465a6352239781a828c5f3d5ba63) )
+ ROM_REGION( 0x10000, "maincpu", 0 )
+ ROM_LOAD( "cc10b", 0x0000, 0x1000, CRC(afd3ca99) SHA1(870d09b2b52ccb8572d69642c59b5215d5fb26ab) ) // 2332
+ROM_END
+
+ROM_START( cc7 )
+ ROM_REGION( 0x10000, "maincpu", 0 )
+ ROM_LOAD( "cn19103n_bcc-revb", 0x0000, 0x1000, CRC(a397d471) SHA1(9b12bc442fccee40f4d8500c792bc9d886c5e1a5) ) // 2332
ROM_END
ROM_START( vcc )
- ROM_REGION( 0x10000, "maincpu", ROMREGION_ERASEFF )
+ ROM_REGION( 0x10000, "maincpu", 0 )
ROM_LOAD("101-32103.bin", 0x0000, 0x1000, CRC(257bb5ab) SHA1(f7589225bb8e5f3eac55f23e2bd526be780b38b5) ) // 32014.VCC??? at location b3?
ROM_LOAD("vcc2.bin", 0x1000, 0x1000, CRC(f33095e7) SHA1(692fcab1b88c910b74d04fe4d0660367aee3f4f0) ) // at location a2?
ROM_LOAD("vcc3.bin", 0x2000, 0x1000, CRC(624f0cd5) SHA1(7c1a4f4497fe5882904de1d6fecf510c07ee6fc6) ) // at location a1?
ROM_REGION( 0x2000, "speech", 0 )
ROM_LOAD("vcc-engl.bin", 0x0000, 0x1000, CRC(f35784f9) SHA1(348e54a7fa1e8091f89ac656b4da22f28ca2e44d) ) // at location c4?
+ ROM_RELOAD( 0x1000, 0x1000)
+ROM_END
+
+ROM_START( vccsp )
+ ROM_REGION( 0x10000, "maincpu", 0 )
+ ROM_LOAD("101-32103.bin", 0x0000, 0x1000, CRC(257bb5ab) SHA1(f7589225bb8e5f3eac55f23e2bd526be780b38b5) )
+ ROM_LOAD("vcc2.bin", 0x1000, 0x1000, CRC(f33095e7) SHA1(692fcab1b88c910b74d04fe4d0660367aee3f4f0) )
+ ROM_LOAD("vcc3.bin", 0x2000, 0x1000, CRC(624f0cd5) SHA1(7c1a4f4497fe5882904de1d6fecf510c07ee6fc6) )
+
+ ROM_REGION( 0x2000, "speech", 0 )
+ ROM_LOAD("vcc-spanish.bin", 0x0000, 0x2000, CRC(8766e128) SHA1(78c7413bf240159720b131ab70bfbdf4e86eb1e9) ) // dumped from Spanish VCC, is same as data in fexcelv
+ROM_END
+
+ROM_START( vccg )
+ ROM_REGION( 0x10000, "maincpu", 0 )
+ ROM_LOAD("101-32103.bin", 0x0000, 0x1000, CRC(257bb5ab) SHA1(f7589225bb8e5f3eac55f23e2bd526be780b38b5) )
+ ROM_LOAD("vcc2.bin", 0x1000, 0x1000, CRC(f33095e7) SHA1(692fcab1b88c910b74d04fe4d0660367aee3f4f0) )
+ ROM_LOAD("vcc3.bin", 0x2000, 0x1000, CRC(624f0cd5) SHA1(7c1a4f4497fe5882904de1d6fecf510c07ee6fc6) )
+
+ ROM_REGION( 0x2000, "speech", 0 )
+ ROM_LOAD("vcc-german.bin", 0x0000, 0x2000, BAD_DUMP CRC(6c85e310) SHA1(20d1d6543c1e6a1f04184a2df2a468f33faec3ff) ) // taken from fexcelv, assume correct
ROM_END
+ROM_START( vccfr )
+ ROM_REGION( 0x10000, "maincpu", 0 )
+ ROM_LOAD("101-32103.bin", 0x0000, 0x1000, CRC(257bb5ab) SHA1(f7589225bb8e5f3eac55f23e2bd526be780b38b5) )
+ ROM_LOAD("vcc2.bin", 0x1000, 0x1000, CRC(f33095e7) SHA1(692fcab1b88c910b74d04fe4d0660367aee3f4f0) )
+ ROM_LOAD("vcc3.bin", 0x2000, 0x1000, CRC(624f0cd5) SHA1(7c1a4f4497fe5882904de1d6fecf510c07ee6fc6) )
+
+ ROM_REGION( 0x2000, "speech", 0 )
+ ROM_LOAD("vcc-french.bin", 0x0000, 0x2000, BAD_DUMP CRC(fe8c5c18) SHA1(2b64279ab3747ee81c86963c13e78321c6cfa3a3) ) // taken from fexcelv, assume correct
+ROM_END
+
+
ROM_START( uvc )
- ROM_REGION( 0x10000, "maincpu", ROMREGION_ERASEFF )
+ ROM_REGION( 0x10000, "maincpu", 0 )
ROM_LOAD("101-64017.b3", 0x0000, 0x2000, CRC(f1133abf) SHA1(09dd85051c4e7d364d43507c1cfea5c2d08d37f4) ) // "MOS // 101-64017 // 3880"
ROM_LOAD("101-32010.a1", 0x2000, 0x1000, CRC(624f0cd5) SHA1(7c1a4f4497fe5882904de1d6fecf510c07ee6fc6) ) // "NEC P9Z021 // D2332C 228 // 101-32010", == vcc3.bin on vcc
ROM_REGION( 0x2000, "speech", 0 )
ROM_LOAD("101-32107.c4", 0x0000, 0x1000, CRC(f35784f9) SHA1(348e54a7fa1e8091f89ac656b4da22f28ca2e44d) ) // "NEC P9Y019 // D2332C 229 // 101-32107", == vcc-engl.bin on vcc
+ ROM_RELOAD( 0x1000, 0x1000)
+ROM_END
+
+ROM_START( uvcsp )
+ ROM_REGION( 0x10000, "maincpu", 0 )
+ ROM_LOAD("101-64017.b3", 0x0000, 0x2000, CRC(f1133abf) SHA1(09dd85051c4e7d364d43507c1cfea5c2d08d37f4) )
+ ROM_LOAD("101-32010.a1", 0x2000, 0x1000, CRC(624f0cd5) SHA1(7c1a4f4497fe5882904de1d6fecf510c07ee6fc6) )
+
+ ROM_REGION( 0x2000, "speech", 0 )
+ ROM_LOAD("vcc-spanish.bin", 0x0000, 0x2000, CRC(8766e128) SHA1(78c7413bf240159720b131ab70bfbdf4e86eb1e9) )
+ROM_END
+
+ROM_START( uvcg )
+ ROM_REGION( 0x10000, "maincpu", 0 )
+ ROM_LOAD("101-64017.b3", 0x0000, 0x2000, CRC(f1133abf) SHA1(09dd85051c4e7d364d43507c1cfea5c2d08d37f4) )
+ ROM_LOAD("101-32010.a1", 0x2000, 0x1000, CRC(624f0cd5) SHA1(7c1a4f4497fe5882904de1d6fecf510c07ee6fc6) )
+
+ ROM_REGION( 0x2000, "speech", 0 )
+ ROM_LOAD("vcc-german.bin", 0x0000, 0x2000, BAD_DUMP CRC(6c85e310) SHA1(20d1d6543c1e6a1f04184a2df2a468f33faec3ff) ) // taken from fexcelv, assume correct
+ROM_END
+
+ROM_START( uvcfr )
+ ROM_REGION( 0x10000, "maincpu", 0 )
+ ROM_LOAD("101-64017.b3", 0x0000, 0x2000, CRC(f1133abf) SHA1(09dd85051c4e7d364d43507c1cfea5c2d08d37f4) )
+ ROM_LOAD("101-32010.a1", 0x2000, 0x1000, CRC(624f0cd5) SHA1(7c1a4f4497fe5882904de1d6fecf510c07ee6fc6) )
+
+ ROM_REGION( 0x2000, "speech", 0 )
+ ROM_LOAD("vcc-french.bin", 0x0000, 0x2000, BAD_DUMP CRC(fe8c5c18) SHA1(2b64279ab3747ee81c86963c13e78321c6cfa3a3) ) // taken from fexcelv, assume correct
ROM_END
ROM_START( vsc )
- ROM_REGION( 0x10000, "maincpu", ROMREGION_ERASEFF )
+ ROM_REGION( 0x10000, "maincpu", 0 )
ROM_LOAD("101-64108.bin", 0x0000, 0x2000, CRC(c9c98490) SHA1(e6db883df088d60463e75db51433a4b01a3e7626) )
ROM_LOAD("101-64109.bin", 0x2000, 0x2000, CRC(08a3577c) SHA1(69fe379d21a9d4b57c84c3832d7b3e7431eec341) )
ROM_LOAD("101-32024.bin", 0x4000, 0x1000, CRC(2a078676) SHA1(db2f0aba7e8ac0f84a17bae7155210cdf0813afb) )
- ROM_RELOAD( 0x5000, 0x1000 )
ROM_REGION( 0x2000, "speech", 0 )
ROM_LOAD("101-32107.bin", 0x0000, 0x1000, CRC(f35784f9) SHA1(348e54a7fa1e8091f89ac656b4da22f28ca2e44d) )
+ ROM_RELOAD( 0x1000, 0x1000)
+ROM_END
+
+ROM_START( vscsp )
+ ROM_REGION( 0x10000, "maincpu", 0 )
+ ROM_LOAD("101-64108.bin", 0x0000, 0x2000, CRC(c9c98490) SHA1(e6db883df088d60463e75db51433a4b01a3e7626) )
+ ROM_LOAD("101-64109.bin", 0x2000, 0x2000, CRC(08a3577c) SHA1(69fe379d21a9d4b57c84c3832d7b3e7431eec341) )
+ ROM_LOAD("101-32024.bin", 0x4000, 0x1000, CRC(2a078676) SHA1(db2f0aba7e8ac0f84a17bae7155210cdf0813afb) )
+
+ ROM_REGION( 0x2000, "speech", 0 )
+ ROM_LOAD("vcc-spanish.bin", 0x0000, 0x2000, BAD_DUMP CRC(8766e128) SHA1(78c7413bf240159720b131ab70bfbdf4e86eb1e9) ) // taken from vcc/fexcelv, assume correct
+ROM_END
+
+ROM_START( vscg )
+ ROM_REGION( 0x10000, "maincpu", 0 )
+ ROM_LOAD("101-64108.bin", 0x0000, 0x2000, CRC(c9c98490) SHA1(e6db883df088d60463e75db51433a4b01a3e7626) )
+ ROM_LOAD("101-64109.bin", 0x2000, 0x2000, CRC(08a3577c) SHA1(69fe379d21a9d4b57c84c3832d7b3e7431eec341) )
+ ROM_LOAD("101-32024.bin", 0x4000, 0x1000, CRC(2a078676) SHA1(db2f0aba7e8ac0f84a17bae7155210cdf0813afb) )
+
+ ROM_REGION( 0x2000, "speech", 0 )
+ ROM_LOAD("vcc-german.bin", 0x0000, 0x2000, BAD_DUMP CRC(6c85e310) SHA1(20d1d6543c1e6a1f04184a2df2a468f33faec3ff) ) // taken from fexcelv, assume correct
+ROM_END
+
+ROM_START( vscfr )
+ ROM_REGION( 0x10000, "maincpu", 0 )
+ ROM_LOAD("101-64108.bin", 0x0000, 0x2000, CRC(c9c98490) SHA1(e6db883df088d60463e75db51433a4b01a3e7626) )
+ ROM_LOAD("101-64109.bin", 0x2000, 0x2000, CRC(08a3577c) SHA1(69fe379d21a9d4b57c84c3832d7b3e7431eec341) )
+ ROM_LOAD("101-32024.bin", 0x4000, 0x1000, CRC(2a078676) SHA1(db2f0aba7e8ac0f84a17bae7155210cdf0813afb) )
+
+ ROM_REGION( 0x2000, "speech", 0 )
+ ROM_LOAD("vcc-french.bin", 0x0000, 0x2000, BAD_DUMP CRC(fe8c5c18) SHA1(2b64279ab3747ee81c86963c13e78321c6cfa3a3) ) // taken from fexcelv, assume correct
ROM_END
ROM_START( vbrc ) // AKA model 7002
- ROM_REGION( 0x10000, "maincpu", ROMREGION_ERASEFF )
+ ROM_REGION( 0x10000, "maincpu", 0 )
// nec 2364 mask roms; pin 27 (PGM, probably NC here due to mask roms) goes to the pcb
ROM_LOAD("101-64108.g3", 0x0000, 0x2000, CRC(08472223) SHA1(859865b13c908dbb474333263dc60f6a32461141) )
ROM_LOAD("101-64109.f3", 0x2000, 0x2000, CRC(320afa0f) SHA1(90edfe0ac19b108d232cda376b03a3a24befad4c) )
@@ -1590,12 +1914,12 @@ ROM_START( vbrc ) // AKA model 7002
ROM_REGION( 0x1000, "mcu", 0 )
ROM_LOAD("100-1009.a3", 0x0000, 0x0400, CRC(60eb343f) SHA1(8a63e95ebd62e123bdecc330c0484a47c354bd1a) )
- ROM_REGION( 0x2000, "speech", 0 )
+ ROM_REGION( 0x1000, "speech", 0 )
ROM_LOAD("101-32118.i2", 0x0000, 0x1000, CRC(a0b8bb8f) SHA1(f56852108928d5c6caccfc8166fa347d6760a740) )
ROM_END
ROM_START( bridgec3 ) // 510-1016 Rev.1 PCB has neither locations nor ic labels, so I declare the big heatsink is at C1, numbers count on the shorter length of pcb
- ROM_REGION( 0x10000, "maincpu", ROMREGION_ERASEFF )
+ ROM_REGION( 0x10000, "maincpu", 0 )
// TMM2764AD-20 EPROMS with tiny hole-punch sized colored stickers (mostly) covering the quartz windows. pin 27 (PGM) is tied to vcc with small rework wires and does not connect to pcb.
ROM_LOAD("7014_white.g3", 0x0000, 0x2000, CRC(eb1620ef) SHA1(987a9abc8c685f1a68678ea4ee65ec4a99419179) ) // white sticker
ROM_LOAD("7014_red.f3", 0x2000, 0x2000, CRC(74af0019) SHA1(8dc05950c254ca050b95b93e5d0cf48f913a6d49) ) // red sticker
@@ -1604,7 +1928,7 @@ ROM_START( bridgec3 ) // 510-1016 Rev.1 PCB has neither locations nor ic labels,
ROM_REGION( 0x1000, "mcu", 0 )
ROM_LOAD("100-1009.a3", 0x0000, 0x0400, CRC(60eb343f) SHA1(8a63e95ebd62e123bdecc330c0484a47c354bd1a) ) // "NEC P07021-027 || D8041C 563 100-1009"
- ROM_REGION( 0x2000, "speech", 0 )
+ ROM_REGION( 0x1000, "speech", 0 )
ROM_LOAD("101-32118.i2", 0x0000, 0x1000, CRC(a0b8bb8f) SHA1(f56852108928d5c6caccfc8166fa347d6760a740) ) // "ea 101-32118 || (C) 1980 || EA 8332A247-4 || 8034"
ROM_END
@@ -1614,12 +1938,24 @@ ROM_END
Drivers
******************************************************************************/
-/* YEAR NAME PARENT COMPAT MACHINE INPUT INIT COMPANY, FULLNAME, FLAGS */
-COMP( 1978, cc10, 0, 0, cc10, fidelz80, driver_device, 0, "Fidelity Electronics", "Chess Challenger 10/3 (Model CC10/BCC)", MACHINE_NOT_WORKING )
-COMP( 1979, vcc, 0, 0, vcc, fidelz80, driver_device, 0, "Fidelity Electronics", "Talking Chess Challenger (model VCC)", MACHINE_NOT_WORKING )
-COMP( 1980, uvc, vcc, 0, vcc, fidelz80, driver_device, 0, "Fidelity Electronics", "Advanced Talking Chess Challenger (model UVC)", MACHINE_NOT_WORKING )
+/* YEAR NAME PARENT COMPAT MACHINE INPUT INIT COMPANY, FULLNAME, FLAGS */
+COMP( 1978, cc10, 0, 0, cc10, cc10, driver_device, 0, "Fidelity Electronics", "Chess Challenger 10 (rev. B)", MACHINE_SUPPORTS_SAVE )
+COMP( 1979, cc7, 0, 0, bcc, bcc, driver_device, 0, "Fidelity Electronics", "Chess Challenger 7 (rev. B)", MACHINE_SUPPORTS_SAVE )
+
+COMP( 1979, vcc, 0, 0, vcc, vcc, driver_device, 0, "Fidelity Electronics", "Voice Chess Challenger (English)", MACHINE_SUPPORTS_SAVE )
+COMP( 1979, vccsp, vcc, 0, vcc, vccsp, driver_device, 0, "Fidelity Electronics", "Voice Chess Challenger (Spanish)", MACHINE_SUPPORTS_SAVE )
+COMP( 1979, vccg, vcc, 0, vcc, vccg, driver_device, 0, "Fidelity Electronics", "Voice Chess Challenger (German)", MACHINE_SUPPORTS_SAVE )
+COMP( 1979, vccfr, vcc, 0, vcc, vccfr, driver_device, 0, "Fidelity Electronics", "Voice Chess Challenger (French)", MACHINE_SUPPORTS_SAVE )
+
+COMP( 1980, uvc, vcc, 0, vcc, vcc, driver_device, 0, "Fidelity Electronics", "Advanced Voice Chess Challenger (English)", MACHINE_SUPPORTS_SAVE )
+COMP( 1980, uvcsp, vcc, 0, vcc, vccsp, driver_device, 0, "Fidelity Electronics", "Advanced Voice Chess Challenger (Spanish)", MACHINE_SUPPORTS_SAVE )
+COMP( 1980, uvcg, vcc, 0, vcc, vccg, driver_device, 0, "Fidelity Electronics", "Advanced Voice Chess Challenger (German)", MACHINE_SUPPORTS_SAVE )
+COMP( 1980, uvcfr, vcc, 0, vcc, vccfr, driver_device, 0, "Fidelity Electronics", "Advanced Voice Chess Challenger (French)", MACHINE_SUPPORTS_SAVE )
-COMP( 1980, vsc, 0, 0, vsc, vsc, driver_device, 0, "Fidelity Electronics", "Voice Sensory Chess Challenger (model VSC)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK )
+COMP( 1980, vsc, 0, 0, vsc, vsc, driver_device, 0, "Fidelity Electronics", "Voice Sensory Chess Challenger (English)", MACHINE_SUPPORTS_SAVE | MACHINE_CLICKABLE_ARTWORK )
+COMP( 1980, vscsp, vsc, 0, vsc, vscg, driver_device, 0, "Fidelity Electronics", "Voice Sensory Chess Challenger (Spanish)", MACHINE_SUPPORTS_SAVE | MACHINE_CLICKABLE_ARTWORK )
+COMP( 1980, vscg, vsc, 0, vsc, vscg, driver_device, 0, "Fidelity Electronics", "Voice Sensory Chess Challenger (German)", MACHINE_SUPPORTS_SAVE | MACHINE_CLICKABLE_ARTWORK )
+COMP( 1980, vscfr, vsc, 0, vsc, vscg, driver_device, 0, "Fidelity Electronics", "Voice Sensory Chess Challenger (French)", MACHINE_SUPPORTS_SAVE | MACHINE_CLICKABLE_ARTWORK )
-COMP( 1979, vbrc, 0, 0, bridgec, bridgec, driver_device, 0, "Fidelity Electronics", "Bridge Challenger (model VBRC/7002)", MACHINE_NOT_WORKING )
-COMP( 1980, bridgec3, vbrc, 0, bridgec, bridgec, driver_device, 0, "Fidelity Electronics", "Bridge Challenger 3 (model 7014)", MACHINE_NOT_WORKING )
+COMP( 1979, vbrc, 0, 0, vbrc, vbrc, driver_device, 0, "Fidelity Electronics", "Voice Bridge Challenger", MACHINE_SUPPORTS_SAVE | MACHINE_NOT_WORKING )
+COMP( 1980, bridgec3, vbrc, 0, vbrc, vbrc, driver_device, 0, "Fidelity Electronics", "Voice Bridge Challenger III", MACHINE_SUPPORTS_SAVE | MACHINE_NOT_WORKING )
diff --git a/src/mame/drivers/firetrk.cpp b/src/mame/drivers/firetrk.cpp
index 5c0a261a0e9..f53f50a5368 100644
--- a/src/mame/drivers/firetrk.cpp
+++ b/src/mame/drivers/firetrk.cpp
@@ -415,7 +415,7 @@ static INPUT_PORTS_START( firetrk )
PORT_START("BIT_0")
PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_UNUSED )
PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_BUTTON1 ) PORT_NAME("Gas") PORT_PLAYER(1)
- PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_SPECIAL ) PORT_CUSTOM_MEMBER(DEVICE_SELF, firetrk_state,steer_dir_r, (void *)nullptr)
+ PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_SPECIAL ) PORT_CUSTOM_MEMBER(DEVICE_SELF, firetrk_state,steer_dir_r, (void *)0)
PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_SPECIAL ) PORT_CUSTOM_MEMBER(DEVICE_SELF, firetrk_state,steer_dir_r, (void *)1)
PORT_BIT( 0x10, IP_ACTIVE_HIGH, IPT_BUTTON1 ) PORT_NAME("Bell") PORT_PLAYER(2)
PORT_BIT( 0x20, IP_ACTIVE_HIGH, IPT_TILT )
@@ -439,7 +439,7 @@ static INPUT_PORTS_START( firetrk )
PORT_START("BIT_7")
PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_UNUSED )
PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_UNUSED )
- PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_SPECIAL ) PORT_CUSTOM_MEMBER(DEVICE_SELF, firetrk_state,steer_flag_r, (void *)nullptr)
+ PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_SPECIAL ) PORT_CUSTOM_MEMBER(DEVICE_SELF, firetrk_state,steer_flag_r, (void *)0)
PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_SPECIAL ) PORT_CUSTOM_MEMBER(DEVICE_SELF, firetrk_state,steer_flag_r, (void *)1)
PORT_BIT( 0x10, IP_ACTIVE_HIGH, IPT_COIN1 )
PORT_BIT( 0x20, IP_ACTIVE_HIGH, IPT_COIN2 )
@@ -487,25 +487,25 @@ static INPUT_PORTS_START( superbug )
PORT_START("BIT_0")
PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_SPECIAL ) PORT_CUSTOM_MEMBER(DEVICE_SELF, firetrk_state,gear_r, (void *)1)
PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_BUTTON1 ) PORT_NAME("Gas")
- PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_SPECIAL ) PORT_CUSTOM_MEMBER(DEVICE_SELF, firetrk_state,steer_dir_r, (void *)nullptr)
+ PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_SPECIAL ) PORT_CUSTOM_MEMBER(DEVICE_SELF, firetrk_state,steer_dir_r, (void *)0)
PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_BUTTON7 ) PORT_NAME("Hiscore Reset") PORT_CODE(KEYCODE_H)
PORT_BIT( 0x10, IP_ACTIVE_HIGH, IPT_UNUSED )
PORT_SERVICE( 0x20, IP_ACTIVE_HIGH )
- PORT_BIT( 0x40, IP_ACTIVE_HIGH, IPT_SPECIAL ) PORT_CUSTOM_MEMBER(DEVICE_SELF, firetrk_state,skid_r, (void *)nullptr)
+ PORT_BIT( 0x40, IP_ACTIVE_HIGH, IPT_SPECIAL ) PORT_CUSTOM_MEMBER(DEVICE_SELF, firetrk_state,skid_r, (void *)0)
PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_TILT )
PORT_START("BIT_7")
PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_SPECIAL ) PORT_CUSTOM_MEMBER(DEVICE_SELF, firetrk_state,gear_r, (void *)2)
- PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_SPECIAL ) PORT_CUSTOM_MEMBER(DEVICE_SELF, firetrk_state,gear_r, (void *)nullptr)
- PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_SPECIAL ) PORT_CUSTOM_MEMBER(DEVICE_SELF, firetrk_state,steer_flag_r, (void *)nullptr)
+ PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_SPECIAL ) PORT_CUSTOM_MEMBER(DEVICE_SELF, firetrk_state,gear_r, (void *)0)
+ PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_SPECIAL ) PORT_CUSTOM_MEMBER(DEVICE_SELF, firetrk_state,steer_flag_r, (void *)0)
PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_COIN1 )
PORT_BIT( 0x10, IP_ACTIVE_HIGH, IPT_COIN2 )
PORT_BIT( 0x20, IP_ACTIVE_HIGH, IPT_START1 )
- PORT_BIT( 0x40, IP_ACTIVE_HIGH, IPT_SPECIAL ) PORT_CUSTOM_MEMBER(DEVICE_SELF, firetrk_state,crash_r, (void *)nullptr)
+ PORT_BIT( 0x40, IP_ACTIVE_HIGH, IPT_SPECIAL ) PORT_CUSTOM_MEMBER(DEVICE_SELF, firetrk_state,crash_r, (void *)0)
PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_BUTTON6 ) PORT_NAME("Track Select") PORT_CODE(KEYCODE_SPACE)
PORT_START("GEAR")
- PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_BUTTON2 ) PORT_NAME("Gear 1") PORT_CODE(KEYCODE_Z) PORT_CHANGED_MEMBER(DEVICE_SELF, firetrk_state,gear_changed, (void *)nullptr)
+ PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_BUTTON2 ) PORT_NAME("Gear 1") PORT_CODE(KEYCODE_Z) PORT_CHANGED_MEMBER(DEVICE_SELF, firetrk_state,gear_changed, (void *)0)
PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_BUTTON3 ) PORT_NAME("Gear 2") PORT_CODE(KEYCODE_X) PORT_CHANGED_MEMBER(DEVICE_SELF, firetrk_state,gear_changed, (void *)1)
PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_BUTTON4 ) PORT_NAME("Gear 3") PORT_CODE(KEYCODE_C) PORT_CHANGED_MEMBER(DEVICE_SELF, firetrk_state,gear_changed, (void *)2)
PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_BUTTON5 ) PORT_NAME("Gear 4") PORT_CODE(KEYCODE_V) PORT_CHANGED_MEMBER(DEVICE_SELF, firetrk_state,gear_changed, (void *)3)
@@ -557,13 +557,13 @@ static INPUT_PORTS_START( montecar )
PORT_DIPSETTING( 0x00, DEF_STR( German ) )
PORT_START("BIT_6")
- PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_SPECIAL ) PORT_CUSTOM_MEMBER(DEVICE_SELF, firetrk_state,gear_r, (void *)nullptr)
+ PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_SPECIAL ) PORT_CUSTOM_MEMBER(DEVICE_SELF, firetrk_state,gear_r, (void *)0)
PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_SPECIAL ) PORT_CUSTOM_MEMBER(DEVICE_SELF, firetrk_state,gear_r, (void *)1)
PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_SPECIAL ) PORT_CUSTOM_MEMBER(DEVICE_SELF, firetrk_state,gear_r, (void *)2)
PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_BUTTON6 ) PORT_NAME("Track Select") PORT_CODE(KEYCODE_SPACE)
PORT_BIT( 0x10, IP_ACTIVE_HIGH, IPT_BUTTON1 ) PORT_NAME("Gas")
PORT_BIT( 0x20, IP_ACTIVE_HIGH, IPT_CUSTOM ) PORT_VBLANK("screen")
- PORT_BIT( 0x40, IP_ACTIVE_HIGH, IPT_SPECIAL ) PORT_CUSTOM_MEMBER(DEVICE_SELF, firetrk_state,steer_dir_r, (void *)nullptr)
+ PORT_BIT( 0x40, IP_ACTIVE_HIGH, IPT_SPECIAL ) PORT_CUSTOM_MEMBER(DEVICE_SELF, firetrk_state,steer_dir_r, (void *)0)
PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_SPECIAL ) PORT_CUSTOM_MEMBER(DEVICE_SELF, firetrk_state,skid_r, (void *)1)
PORT_START("BIT_7")
@@ -573,11 +573,11 @@ static INPUT_PORTS_START( montecar )
PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_COIN1 )
PORT_BIT( 0x10, IP_ACTIVE_HIGH, IPT_COIN2 )
PORT_BIT( 0x20, IP_ACTIVE_HIGH, IPT_SPECIAL )
- PORT_BIT( 0x40, IP_ACTIVE_HIGH, IPT_SPECIAL ) PORT_CUSTOM_MEMBER(DEVICE_SELF, firetrk_state,steer_flag_r, (void *)nullptr)
- PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_SPECIAL ) PORT_CUSTOM_MEMBER(DEVICE_SELF, firetrk_state,skid_r, (void *)nullptr)
+ PORT_BIT( 0x40, IP_ACTIVE_HIGH, IPT_SPECIAL ) PORT_CUSTOM_MEMBER(DEVICE_SELF, firetrk_state,steer_flag_r, (void *)0)
+ PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_SPECIAL ) PORT_CUSTOM_MEMBER(DEVICE_SELF, firetrk_state,skid_r, (void *)0)
PORT_START("GEAR")
- PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_BUTTON2 ) PORT_NAME("Gear 1") PORT_CODE(KEYCODE_Z) PORT_CHANGED_MEMBER(DEVICE_SELF, firetrk_state,gear_changed, (void *)nullptr)
+ PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_BUTTON2 ) PORT_NAME("Gear 1") PORT_CODE(KEYCODE_Z) PORT_CHANGED_MEMBER(DEVICE_SELF, firetrk_state,gear_changed, (void *)0)
PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_BUTTON3 ) PORT_NAME("Gear 2") PORT_CODE(KEYCODE_X) PORT_CHANGED_MEMBER(DEVICE_SELF, firetrk_state,gear_changed, (void *)1)
PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_BUTTON4 ) PORT_NAME("Gear 3") PORT_CODE(KEYCODE_C) PORT_CHANGED_MEMBER(DEVICE_SELF, firetrk_state,gear_changed, (void *)2)
PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_BUTTON5 ) PORT_NAME("Gear 4") PORT_CODE(KEYCODE_V) PORT_CHANGED_MEMBER(DEVICE_SELF, firetrk_state,gear_changed, (void *)3)
diff --git a/src/mame/drivers/fitfight.cpp b/src/mame/drivers/fitfight.cpp
index 1f0a8b679e6..97ba31d9a7b 100644
--- a/src/mame/drivers/fitfight.cpp
+++ b/src/mame/drivers/fitfight.cpp
@@ -1021,5 +1021,5 @@ DRIVER_INIT_MEMBER(fitfight_state,hotmindff)
GAME( 199?, fitfight, 0, fitfight, fitfight, fitfight_state, fitfight, ROT0, "bootleg", "Fit of Fighting", MACHINE_IMPERFECT_GRAPHICS | MACHINE_NO_SOUND | MACHINE_SUPPORTS_SAVE )
GAME( 199?, histryma, 0, fitfight, histryma, fitfight_state, histryma, ROT0, "bootleg", "The History of Martial Arts", MACHINE_IMPERFECT_GRAPHICS | MACHINE_NO_SOUND | MACHINE_SUPPORTS_SAVE )
-GAME( 199?, bbprot, 0, bbprot, bbprot, fitfight_state, bbprot, ROT0, "<unknown>", "unknown fighting game 'BB' (prototype)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_NO_SOUND | MACHINE_SUPPORTS_SAVE )
+GAME( 199?, bbprot, 0, bbprot, bbprot, fitfight_state, bbprot, ROT0, "<unknown>", "unknown fighting game 'BB' (prototype)", MACHINE_IS_INCOMPLETE | MACHINE_IMPERFECT_GRAPHICS | MACHINE_NO_SOUND | MACHINE_SUPPORTS_SAVE )
GAME( 199?, hotmindff, hotmind, fitfight, fitfight, fitfight_state, hotmindff, ROT0, "Playmark", "Hot Mind (Fit of Fighting hardware)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND ) // need to fix scroll offsets + inputs
diff --git a/src/mame/drivers/fm7.cpp b/src/mame/drivers/fm7.cpp
index 00de2cdb6b5..9151afa895e 100644
--- a/src/mame/drivers/fm7.cpp
+++ b/src/mame/drivers/fm7.cpp
@@ -313,29 +313,27 @@ READ8_MEMBER(fm7_state::fm7_sub_beeper_r)
READ8_MEMBER(fm7_state::vector_r)
{
- UINT8* RAM = memregion("maincpu")->base();
- UINT8* ROM = memregion("init")->base();
- UINT32 init_size = memregion("init")->bytes();
+ UINT32 init_size = m_rom_ptr.bytes();
- if(m_init_rom_en)
- return ROM[(init_size-0x10)+offset];
+ if (m_init_rom_en)
+ {
+ return m_rom_ptr[(init_size-0x10)+offset];
+ }
else
{
if(m_type == SYS_FM7)
- return RAM[0xfff0+offset];
+ return m_ram_ptr[0xfff0+offset];
else
- return RAM[0x3fff0+offset];
+ return m_ram_ptr[0x3fff0+offset];
}
}
WRITE8_MEMBER(fm7_state::vector_w)
{
- UINT8* RAM = memregion("maincpu")->base();
-
if(m_type == SYS_FM7)
- RAM[0xfff0+offset] = data;
+ m_ram_ptr[0xfff0+offset] = data;
else
- RAM[0x3fff0+offset] = data;
+ m_ram_ptr[0x3fff0+offset] = data;
}
/*
@@ -1150,22 +1148,23 @@ void fm7_state::fm7_mmr_refresh(address_space& space)
}
if(m_init_rom_en)
{
- UINT8* ROM = memregion("init")->base();
- membank("init_bank_r")->set_base(ROM);
+ membank("init_bank_r")->set_base(m_rom_ptr);
}
else
{
- membank("init_bank_r")->set_base(RAM+0x36000);
+ membank("init_bank_r")->set_base(m_ram_ptr + 0x36000);
}
- if(m_basic_rom_en)
+
+ if (m_basic_rom_en)
{
- UINT8* ROM = memregion("fbasic")->base();
- if(ROM != nullptr)
- membank("fbasic_bank_r")->set_base(ROM);
+ if (m_basic_ptr)
+ {
+ membank("fbasic_bank_r")->set_base(m_rom_ptr);
+ }
}
else
{
- membank("fbasic_bank_r")->set_base(RAM+0x38000);
+ membank("fbasic_bank_r")->set_base(m_ram_ptr + 0x38000);
}
}
@@ -1912,7 +1911,6 @@ MACHINE_START_MEMBER(fm7_state,fm7)
memset(m_shared_ram,0xff,0x80);
m_type = SYS_FM7;
- m_beeper->set_frequency(1200);
m_beeper->set_state(0);
}
@@ -1933,7 +1931,6 @@ MACHINE_START_MEMBER(fm7_state,fm77av)
membank("bank21")->set_base(RAM+0x800);
m_type = SYS_FM77AV;
- m_beeper->set_frequency(1200);
m_beeper->set_state(0);
}
@@ -1944,7 +1941,6 @@ MACHINE_START_MEMBER(fm7_state,fm11)
memset(m_shared_ram,0xff,0x80);
m_type = SYS_FM11;
- m_beeper->set_frequency(1200);
m_beeper->set_state(0);
// last part of Initiate ROM is visible at the end of RAM too (interrupt vectors)
memcpy(RAM+0x3fff0,ROM+0x0ff0,16);
@@ -1953,15 +1949,11 @@ MACHINE_START_MEMBER(fm7_state,fm11)
MACHINE_START_MEMBER(fm7_state,fm16)
{
m_type = SYS_FM16;
- m_beeper->set_frequency(1200);
m_beeper->set_state(0);
}
void fm7_state::machine_reset()
{
- UINT8* RAM = memregion("maincpu")->base();
- UINT8* ROM = memregion("init")->base();
-
m_timer->adjust(attotime::from_nsec(2034500),0,attotime::from_nsec(2034500));
m_subtimer->adjust(attotime::from_msec(20),0,attotime::from_msec(20));
m_keyboard_timer->adjust(attotime::zero,0,attotime::from_msec(10));
@@ -1979,13 +1971,13 @@ void fm7_state::machine_reset()
{
m_init_rom_en = 1;
// last part of Initiate ROM is visible at the end of RAM too (interrupt vectors)
- memcpy(RAM+0x3fff0,ROM+0x1ff0,16);
+ memcpy(m_ram_ptr + 0x3fff0, m_rom_ptr + 0x1ff0, 16);
}
else if (m_type == SYS_FM11)
{
m_init_rom_en = 1;
// last part of Initiate ROM is visible at the end of RAM too (interrupt vectors)
- memcpy(RAM+0x3fff0,ROM+0x0ff0,16);
+ memcpy(m_ram_ptr + 0x3fff0, m_rom_ptr + 0x0ff0, 16);
}
else
m_init_rom_en = 0;
@@ -1994,11 +1986,13 @@ void fm7_state::machine_reset()
if(!(m_dsw->read() & 0x02))
{
m_basic_rom_en = 0; // disabled for DOS mode
- membank("bank1")->set_base(RAM+0x08000);
+ membank("bank1")->set_base(m_ram_ptr + 0x08000);
}
else
- membank("bank1")->set_base(RAM+0x38000);
- membank("bank2")->set_base(RAM+0x08000);
+ {
+ membank("bank1")->set_base(m_ram_ptr + 0x38000);
+ }
+ membank("bank2")->set_base(m_ram_ptr + 0x08000);
}
m_key_delay = 700; // 700ms on FM-7
m_key_repeat = 70; // 70ms on FM-7
@@ -2029,8 +2023,8 @@ void fm7_state::machine_reset()
if(m_type == SYS_FM77AV || m_type == SYS_FM77AV40EX || m_type == SYS_FM11)
{
fm7_mmr_refresh(m_maincpu->space(AS_PROGRAM));
- membank("fbasic_bank_w")->set_base(RAM+0x38000);
- membank("init_bank_w")->set_base(RAM+0x36000);
+ membank("fbasic_bank_w")->set_base(m_ram_ptr + 0x38000);
+ membank("init_bank_w")->set_base(m_ram_ptr + 0x36000);
}
if(m_type == SYS_FM11)
{
@@ -2070,7 +2064,7 @@ static MACHINE_CONFIG_START( fm7, fm7_state )
MCFG_SPEAKER_STANDARD_MONO("mono")
MCFG_SOUND_ADD("psg", AY8910, XTAL_4_9152MHz / 4)
MCFG_SOUND_ROUTE(ALL_OUTPUTS,"mono", 1.00)
- MCFG_SOUND_ADD("beeper", BEEP, 0)
+ MCFG_SOUND_ADD("beeper", BEEP, 1200)
MCFG_SOUND_ROUTE(ALL_OUTPUTS,"mono", 0.50)
MCFG_SOUND_WAVE_ADD(WAVE_TAG, "cassette")
MCFG_SOUND_ROUTE(ALL_OUTPUTS,"mono", 0.25)
@@ -2126,7 +2120,7 @@ static MACHINE_CONFIG_START( fm8, fm7_state )
MCFG_QUANTUM_PERFECT_CPU("sub")
MCFG_SPEAKER_STANDARD_MONO("mono")
- MCFG_SOUND_ADD("beeper", BEEP, 0)
+ MCFG_SOUND_ADD("beeper", BEEP, 1200)
MCFG_SOUND_ROUTE(ALL_OUTPUTS,"mono",0.50)
MCFG_SOUND_WAVE_ADD(WAVE_TAG, "cassette")
MCFG_SOUND_ROUTE(ALL_OUTPUTS,"mono",0.25)
@@ -2182,7 +2176,7 @@ static MACHINE_CONFIG_START( fm77av, fm7_state )
MCFG_AY8910_PORT_A_READ_CB(READ8(fm7_state, fm77av_joy_1_r))
MCFG_AY8910_PORT_B_READ_CB(READ8(fm7_state, fm77av_joy_2_r))
MCFG_SOUND_ROUTE(ALL_OUTPUTS,"mono",1.0)
- MCFG_SOUND_ADD("beeper", BEEP, 0)
+ MCFG_SOUND_ADD("beeper", BEEP, 1200)
MCFG_SOUND_ROUTE(ALL_OUTPUTS,"mono",0.50)
MCFG_SOUND_WAVE_ADD(WAVE_TAG, "cassette")
MCFG_SOUND_ROUTE(ALL_OUTPUTS,"mono",0.25)
@@ -2260,7 +2254,7 @@ static MACHINE_CONFIG_START( fm11, fm7_state )
MCFG_CPU_IO_MAP(fm11_x86_io)
MCFG_SPEAKER_STANDARD_MONO("mono")
- MCFG_SOUND_ADD("beeper", BEEP, 0)
+ MCFG_SOUND_ADD("beeper", BEEP, 1200)
MCFG_SOUND_ROUTE(ALL_OUTPUTS,"mono",0.50)
MCFG_SOUND_WAVE_ADD(WAVE_TAG, "cassette")
MCFG_SOUND_ROUTE(ALL_OUTPUTS,"mono",0.25)
@@ -2328,7 +2322,7 @@ static MACHINE_CONFIG_START( fm16beta, fm7_state )
MCFG_QUANTUM_PERFECT_CPU("sub")
MCFG_SPEAKER_STANDARD_MONO("mono")
- MCFG_SOUND_ADD("beeper", BEEP, 0)
+ MCFG_SOUND_ADD("beeper", BEEP, 1200)
MCFG_SOUND_ROUTE(ALL_OUTPUTS,"mono",0.50)
MCFG_SOUND_WAVE_ADD(WAVE_TAG, "cassette")
MCFG_SOUND_ROUTE(ALL_OUTPUTS,"mono",0.25)
diff --git a/src/mame/drivers/fp1100.cpp b/src/mame/drivers/fp1100.cpp
index 6352049278c..32705c7b923 100644
--- a/src/mame/drivers/fp1100.cpp
+++ b/src/mame/drivers/fp1100.cpp
@@ -611,7 +611,6 @@ MACHINE_RESET_MEMBER( fp1100_state, fp1100 )
m_slot[i].id = id_type[slot_type];
}
- m_beep->set_frequency(950); /* guess */
m_beep->set_state(0);
membank("bankr0")->set_entry(0); // point at rom
@@ -666,7 +665,7 @@ static MACHINE_CONFIG_START( fp1100, fp1100_state )
/* sound hardware */
MCFG_SPEAKER_STANDARD_MONO("mono")
- MCFG_SOUND_ADD("beeper", BEEP, 0)
+ MCFG_SOUND_ADD("beeper", BEEP, 950) // guess
MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.50) // inside the keyboard
/* CRTC */
diff --git a/src/mame/drivers/funkball.cpp b/src/mame/drivers/funkball.cpp
index caa650705fe..6eaf7c496ef 100644
--- a/src/mame/drivers/funkball.cpp
+++ b/src/mame/drivers/funkball.cpp
@@ -142,7 +142,7 @@ void funkball_state::video_start()
UINT32 funkball_state::screen_update( screen_device &screen, bitmap_rgb32 &bitmap, const rectangle &cliprect )
{
- return voodoo_update(m_voodoo, bitmap, cliprect) ? 0 : UPDATE_HAS_NOT_CHANGED;
+ return m_voodoo->voodoo_update(bitmap, cliprect) ? 0 : UPDATE_HAS_NOT_CHANGED;
}
static UINT32 voodoo_0_pci_r(device_t *busdevice, device_t *device, int function, int reg, UINT32 mem_mask)
@@ -186,7 +186,7 @@ static void voodoo_0_pci_w(device_t *busdevice, device_t *device, int function,
break;
case 0x40:
state->m_voodoo_pci_regs.init_enable = data;
- voodoo_set_init_enable(state->m_voodoo, data);
+ state->m_voodoo->voodoo_set_init_enable(data);
break;
}
}
diff --git a/src/mame/drivers/funworld.cpp b/src/mame/drivers/funworld.cpp
index db302e879c1..d45c615fd52 100644
--- a/src/mame/drivers/funworld.cpp
+++ b/src/mame/drivers/funworld.cpp
@@ -5740,9 +5740,9 @@ ROM_START( royalcrd_nes )
ROM_LOAD( "82s147.bin", 0x0000, 0x0200, CRC(5377c680) SHA1(33857bbbfebfce28b8a68c69e030bf560a701e83) )
// and this is just an untouched NES multigame..
- ROM_REGION( 0x0100000, "nes_prg", 0 )
+ ROM_REGION( 0x0100000, "nes_prg", 0 )
ROM_LOAD( "me0.bin", 0x0000, 0x0100000, CRC(83a4e841) SHA1(280e1a26737fe0b90dd19be706df89e09ef84c77) ) // == 64 in 1 [a1][p1].prg nes:mc_64a 64 in 1 (Alt Games)
- ROM_REGION( 0x80000, "nes_chr", 0 )
+ ROM_REGION( 0x80000, "nes_chr", 0 )
ROM_LOAD( "me1.bin", 0x0000, 0x80000, CRC(7114b404) SHA1(0f5a206af25725b2e97c404a616e341f15925431) ) // == 64 in 1 [a1][p1].chr nes:mc_64a 64 in 1 (Alt Games)
ROM_END
@@ -5759,7 +5759,7 @@ ROM_START( royalcrd_msx )
ROM_LOAD( "24c04.bin", 0x0000, 0x0200, CRC(2a1e8abe) SHA1(639a704f25af02597ead2e69d15ac47953c27f09) )
// some kind of MSX multigame?
- ROM_REGION( 0x0100000, "msx_prg", 0 )
+ ROM_REGION( 0x0100000, "msx_prg", 0 )
ROM_LOAD( "me0.bin", 0x0000, 0x10000, CRC(bd5be18b) SHA1(b43a176db0522bcda0a17dd0c210c987dc380c97) ) // weird pattern? might be bad if not a lookup table? BADADDR -------xxxxxxxxx
ROM_LOAD( "me1.bin", 0x0000, 0x40000, CRC(2152c6b7) SHA1(e512e29f4a899cc3f91a446141fd4432a487228f) )
ROM_END
diff --git a/src/mame/drivers/gaelco2.cpp b/src/mame/drivers/gaelco2.cpp
index 3149a3f3c27..06a068e372c 100644
--- a/src/mame/drivers/gaelco2.cpp
+++ b/src/mame/drivers/gaelco2.cpp
@@ -15,7 +15,7 @@
World Rally 2 | 1995 | GAE1 506 | 950510-1 | DS5002FP
Touch & Go | 1995 | GAE1 501 | 950906 | DS5002FP
Touch & Go | 1995 | GAE1 501 | 950510-1 | DS5002FP
- Maniac Square | 1996 | Unknown | ??? | DS5002FP, but unprotected version available
+ Maniac Square | 1996 | GAE1 501 | 940411 | DS5002FP, but unprotected version available
Snow Board | 1996 | CG-1V 366 | 960419/1 | Lattice IspLSI 1016-80LJ
Bang! | 1998 | CG-1V 388 | 980921/1 | No
@@ -67,7 +67,7 @@ static ADDRESS_MAP_START( maniacsq_map, AS_PROGRAM, 16, gaelco2_state )
AM_RANGE(0x30004a, 0x30004b) AM_WRITENOP /* Sound muting? */
AM_RANGE(0x320000, 0x320001) AM_READ_PORT("COIN") /* COINSW + SERVICESW */
AM_RANGE(0x500000, 0x500001) AM_WRITE(gaelco2_coin_w) /* Coin lockout + counters */
- AM_RANGE(0xfe0000, 0xfeffff) AM_RAM /* Work RAM */
+ AM_RANGE(0xfe0000, 0xfeffff) AM_RAM AM_SHARE("shareram") /* Work RAM */
ADDRESS_MAP_END
@@ -198,6 +198,25 @@ ROM_START( maniacsq )
ROM_FILL( 0x0200000, 0x0080000, 0x00 ) /* to decode GFX as 5bpp */
ROM_END
+ROM_START( maniacsqa ) // REF 940411
+ ROM_REGION( 0x040000, "maincpu", 0 ) /* 68000 code */
+ ROM_LOAD16_BYTE( "MS_U_45.U45", 0x000000, 0x020000, CRC(98f4fdc0) SHA1(1e4d5b0a8a432de885c96319c21280d304b38db0) )
+ ROM_LOAD16_BYTE( "MS_U_44.U44", 0x000001, 0x020000, CRC(1785dd41) SHA1(5c6a65c00248971ce54c8185858393f2c52cc583) )
+
+ ROM_REGION( 0x10000, "mcu", 0 ) /* DS5002FP code */
+ ROM_LOAD( "ms_ds5002fp.bin", 0x00000, 0x8000, NO_DUMP )
+
+ ROM_REGION( 0x0280000, "gfx1", 0 ) /* GFX + Sound */
+ // all 4 roms on a sub-board, no IC positions marked
+ ROM_LOAD( "MS1", 0x0000000, 0x0080000, CRC(d8551b2f) SHA1(78b5b07112bd89fed18055180e7cc64f8e0bd0b1) ) /* GFX + Sound */
+ ROM_LOAD( "MS2", 0x0080000, 0x0080000, CRC(b269c427) SHA1(b7f9501529fbb7ee82700cff82740ba5770cf3c5) ) /* GFX + Sound */
+ ROM_LOAD( "MS3", 0x0100000, 0x0020000, CRC(af4ea5e7) SHA1(ffaf09dc2588e32c124e7dd2f86ba009f1b8b176) ) /* GFX only */
+ ROM_FILL( 0x0120000, 0x0060000, 0x00 ) /* Empty */
+ ROM_LOAD( "MS4", 0x0180000, 0x0020000, CRC(578c3588) SHA1(c2e1fba29f21d6822677886fb2d26e050b336c14) ) /* GFX only */
+ ROM_FILL( 0x01a0000, 0x0060000, 0x00 ) /* Empty */
+ ROM_FILL( 0x0200000, 0x0080000, 0x00 ) /* to decode GFX as 5bpp */
+ROM_END
+
/*============================================================================
@@ -577,6 +596,9 @@ ROM_START( aligator )
ROM_LOAD16_BYTE( "u45", 0x000000, 0x080000, CRC(61c47c56) SHA1(6dd3fc6fdab252e0fb43c0793eef70203c888d7f) )
ROM_LOAD16_BYTE( "u44", 0x000001, 0x080000, CRC(f0be007a) SHA1(2112b2e5f020028b50c8f2c72c83c9fee7a78224) )
+ ROM_REGION( 0x10000, "mcu", 0 ) /* DS5002FP code */
+ ROM_LOAD( "aligator_ds5002fp.bin", 0x00000, 0x8000, NO_DUMP )
+
ROM_REGION( 0x1400000, "gfx1", 0 ) /* GFX + Sound */
/* 0x0000000-0x0ffffff filled in in the DRIVER_INIT */
ROM_FILL( 0x1000000, 0x0400000, 0x00 ) /* to decode GFX as 5 bpp */
@@ -831,6 +853,9 @@ ROM_START( touchgo ) /* REF: 950906 */
ROM_LOAD16_BYTE( "tg_56", 0x000000, 0x080000, CRC(8ab065f3) SHA1(7664abd7e5f66ffca4a2865bba56ac36bd04f4e9) )
ROM_LOAD16_BYTE( "tg_57", 0x000001, 0x080000, CRC(0dfd3f65) SHA1(afb2ce8988c84f211ac71b84928ce4c421de7fee) )
+ ROM_REGION( 0x10000, "mcu", 0 ) /* DS5002FP code */
+ ROM_LOAD( "touchgo_ds5002fp.bin", 0x00000, 0x8000, NO_DUMP )
+
ROM_REGION( 0x1400000, "gfx1", 0 ) /* GFX + Sound */
/* 0x0000000-0x0ffffff filled in in the DRIVER_INIT */
ROM_LOAD( "ic69", 0x1000000, 0x0200000, CRC(18bb12d4) SHA1(ee6e7a63b86c56d71e62db0ae5892ab3ab94b0a0) ) /* GFX only */
@@ -847,6 +872,9 @@ ROM_START( touchgon ) /* REF 950906, no plug-in daughterboard, Non North America
ROM_LOAD16_BYTE( "tg56.bin", 0x000000, 0x080000, CRC(fd3b4642) SHA1(3cab42aecad5ee641711763c6047b56784c2bcf3) )
ROM_LOAD16_BYTE( "tg57.bin", 0x000001, 0x080000, CRC(ee891835) SHA1(9f8c60e5e3696b70f756c3521e10313005053cc7) )
+ ROM_REGION( 0x10000, "mcu", 0 ) /* DS5002FP code */
+ ROM_LOAD( "touchgo_ds5002fp.bin", 0x00000, 0x8000, NO_DUMP )
+
ROM_REGION( 0x1400000, "gfx1", 0 ) /* GFX + Sound */
/* 0x0000000-0x0ffffff filled in in the DRIVER_INIT */
ROM_LOAD( "ic69", 0x1000000, 0x0200000, CRC(18bb12d4) SHA1(ee6e7a63b86c56d71e62db0ae5892ab3ab94b0a0) ) /* GFX only */
@@ -863,6 +891,9 @@ ROM_START( touchgoe ) /* REF: 950510-1 */
ROM_LOAD16_BYTE( "tg56", 0x000000, 0x080000, CRC(6d0f5c65) SHA1(00db7a7da3ec1676169aa78fe4f08a7746c3accf) )
ROM_LOAD16_BYTE( "tg57", 0x000001, 0x080000, CRC(845787b5) SHA1(27c9910cd9f38328326ecb5cd093dfeb6d4f6244) )
+ ROM_REGION( 0x10000, "mcu", 0 ) /* DS5002FP code */
+ ROM_LOAD( "touchgo_ds5002fp.bin", 0x00000, 0x8000, NO_DUMP )
+
ROM_REGION( 0x1400000, "gfx1", 0 ) /* GFX + Sound */
/* 0x0000000-0x0ffffff filled in in the DRIVER_INIT */
ROM_LOAD( "ic69", 0x1000000, 0x0200000, CRC(18bb12d4) SHA1(ee6e7a63b86c56d71e62db0ae5892ab3ab94b0a0) ) /* GFX only */
@@ -1150,7 +1181,7 @@ static INPUT_PORTS_START( wrally2 )
PORT_BIT( 0x0008, IP_ACTIVE_LOW, IPT_JOYSTICK_LEFT ) PORT_8WAY PORT_PLAYER(2)
PORT_BIT( 0x0010, IP_ACTIVE_LOW, IPT_BUTTON1 ) PORT_PLAYER(2) PORT_NAME("P2 Acc.")
PORT_BIT( 0x0020, IP_ACTIVE_HIGH, IPT_BUTTON2 ) PORT_PLAYER(2) PORT_NAME("P2 Gear") PORT_TOGGLE
- PORT_BIT( 0x0040, IP_ACTIVE_HIGH, IPT_SPECIAL) PORT_CUSTOM_MEMBER(DEVICE_SELF, wrally2_state,wrally2_analog_bit_r, (void *)1) /* ADC_2 serial input */
+ PORT_BIT( 0x0040, IP_ACTIVE_HIGH, IPT_SPECIAL) PORT_CUSTOM_MEMBER(DEVICE_SELF, wrally2_state,wrally2_analog_bit_r, (void *)0x01) /* ADC_2 serial input */
PORT_BIT( 0x0080, IP_ACTIVE_LOW, IPT_START2 )
PORT_BIT( 0x0100, IP_ACTIVE_LOW, IPT_COIN1 )
PORT_BIT( 0x0400, IP_ACTIVE_LOW, IPT_COIN2 )
@@ -1325,6 +1356,10 @@ ROM_START( wrally2 )
ROM_LOAD16_BYTE( "wr2.64", 0x000000, 0x080000, CRC(4cdf4e1e) SHA1(a3b3ff4a70336b61c7bba5d518527bf4bd901867) )
ROM_LOAD16_BYTE( "wr2.63", 0x000001, 0x080000, CRC(94887c9f) SHA1(ad09f1fbeff4c3ba47f72346d261b22fa6a51457) )
+ ROM_REGION( 0x10000, "mcu", 0 ) /* DS5002FP code */
+ ROM_LOAD( "wr2_dallas.bin", 0x00000, 0x8000, NO_DUMP )
+
+
ROM_REGION( 0x0a00000, "gfx1", 0 ) /* GFX + Sound */
ROM_LOAD( "wr2.16d", 0x0000000, 0x0080000, CRC(ad26086b) SHA1(487ffaaca57c9d030fc486b8cae6735ee40a0ac3) ) /* GFX only */
ROM_LOAD( "wr2.17d", 0x0080000, 0x0080000, CRC(c1ec0745) SHA1(a6c3ce9c889e6a53f4155f54d6655825af34a35b) ) /* GFX only */
@@ -1385,6 +1420,9 @@ ROM_START( grtesoro )
ROM_LOAD16_BYTE( "2.u39", 0x000000, 0x020000, BAD_DUMP CRC(9939299e) SHA1(55303a2adf199f4b5a60f57be7480b0e119f8624) )
ROM_LOAD16_BYTE( "1.u40", 0x000001, 0x020000, BAD_DUMP CRC(311c2f94) SHA1(963d6b5f479598145146fcb8b7c6ce77fbc92b07) )
+ ROM_REGION( 0x10000, "mcu", 0 ) /* DS5002FP code */
+ ROM_LOAD( "ds5002fp.bin", 0x00000, 0x8000, NO_DUMP )
+
ROM_REGION( 0x0300000, "gfx1", 0 ) /* GFX + Sound */
ROM_LOAD( "3.u54", 0x0000000, 0x0080000, CRC(085008ed) SHA1(06eb4f972d79eab13b1b3b6829ef280e079abdb6) )
ROM_LOAD( "4.u53", 0x0080000, 0x0080000, CRC(94dc37a7) SHA1(28f9832b61541b292682a6e2d2264abccd138a2e) )
@@ -1401,6 +1439,9 @@ ROM_START( grtesoro4 ) /* there are version 4.0 and version 1.0 strings in this,
ROM_LOAD16_BYTE( "2.u39_v4", 0x000000, 0x020000, CRC(fff16141) SHA1(8493c3e58a231c03b152b336f43422a9a2d2618c) )
ROM_LOAD16_BYTE( "1.u40_v4", 0x000001, 0x020000, CRC(39f9d58e) SHA1(1cbdae2adc570f2a2e10a707075312ef717e2643) )
+ ROM_REGION( 0x10000, "mcu", 0 ) /* DS5002FP code */
+ ROM_LOAD( "ds5002fp.bin", 0x00000, 0x8000, NO_DUMP )
+
ROM_REGION( 0x0300000, "gfx1", 0 ) /* GFX + Sound */
ROM_LOAD( "3.u54", 0x0000000, 0x0080000, CRC(085008ed) SHA1(06eb4f972d79eab13b1b3b6829ef280e079abdb6) )
ROM_LOAD( "4.u53", 0x0080000, 0x0080000, CRC(94dc37a7) SHA1(28f9832b61541b292682a6e2d2264abccd138a2e) )
@@ -1412,6 +1453,48 @@ ROM_START( grtesoro4 ) /* there are version 4.0 and version 1.0 strings in this,
ROM_LOAD( "palce16v8h.u29", 0x0000, 0x0117, BAD_DUMP CRC(4a0a6f39) SHA1(57351e471649391c9abf110828fe2f128fe84eee) )
ROM_END
+
+READ16_MEMBER(gaelco2_state::maniacsqa_prot_r)
+{
+ int pc = space.device().safe_pc();
+
+ // if -1 is returned at any point on these checks the game instantly reports 'power failure'
+ // these are generally done right before the other checks
+ if (pc == 0x3dbc) return 0x0000; // must not be -1
+ if (pc == 0x5ce4) return 0x0000; // must not be -1
+ if (pc == 0x5d08) return 0x0000; // must not be -1 (stores 5 here just before)
+ if (pc == 0xaa90) return 0x0000; // must not be -1
+ if (pc == 0xaab2) return 0x0000; // must not be -1
+ if (pc == 0x9f10) return 0x0000; // must not be -1
+ if (pc == 0x3b86) return 0x0000; // must not be -1
+
+ if (pc == 0x3dce) return 0x0000; // must be 0
+
+ if (pc == 0x25c2) return 0x0000; // writes 0 to 0xfe45fa then expects this to be 0
+
+ if (pc == 0x5cf6) return 0x0000; // must be 0
+ if (pc == 0x5d1a) return 0x0000; // must be 0
+ if (pc == 0xaaa0) return 0x0000; // must be 0?
+
+ if (pc == 0xaac4) return 0x0000; // checks for 0, 2 possible code paths after - happens when piece is dropped
+ if (pc == 0xaad0) return 0x0a00; // if above ISN'T 0 this must be 0x0a00 (but code then dies, probably wants some data filled?)
+ // other code path just results in no more pieces dropping? maybe the MCU does the matching algorithm?
+
+
+
+
+
+ printf("read at PC %08x\n", pc);
+ return m_shareram[(0xfedaa2 - 0xfe0000) / 2];
+
+}
+
+DRIVER_INIT_MEMBER(gaelco2_state,maniacsqa)
+{
+ m_maincpu->space(AS_PROGRAM).install_read_handler(0xfedaa2, 0xfedaa3, read16_delegate(FUNC(gaelco2_state::maniacsqa_prot_r), this) );
+}
+
+
GAME( 1994, aligator, 0, alighunt, alighunt, gaelco2_state, alighunt, ROT0, "Gaelco", "Alligator Hunt", MACHINE_UNEMULATED_PROTECTION | MACHINE_NOT_WORKING )
GAME( 1994, aligatorun,aligator,alighunt, alighunt, gaelco2_state, alighunt, ROT0, "Gaelco", "Alligator Hunt (unprotected)", 0 )
GAME( 1995, touchgo, 0, touchgo, touchgo, gaelco2_state, touchgo, ROT0, "Gaelco", "Touch & Go (World)", MACHINE_UNEMULATED_PROTECTION | MACHINE_NOT_WORKING )
@@ -1419,6 +1502,7 @@ GAME( 1995, touchgon, touchgo, touchgo, touchgo, gaelco2_state, touchgo, ROT
GAME( 1995, touchgoe, touchgo, touchgo, touchgo, gaelco2_state, touchgo, ROT0, "Gaelco", "Touch & Go (earlier revision)", MACHINE_UNEMULATED_PROTECTION | MACHINE_NOT_WORKING )
GAME( 1995, wrally2, 0, wrally2, wrally2, driver_device, 0, ROT0, "Gaelco", "World Rally 2: Twin Racing", MACHINE_UNEMULATED_PROTECTION | MACHINE_NOT_WORKING )
GAME( 1996, maniacsq, 0, maniacsq, maniacsq, driver_device, 0, ROT0, "Gaelco", "Maniac Square (unprotected)", 0 )
+GAME( 1996, maniacsqa,maniacsq, maniacsq, maniacsq, gaelco2_state, maniacsqa,ROT0, "Gaelco", "Maniac Square (protected)", MACHINE_UNEMULATED_PROTECTION | MACHINE_NOT_WORKING )
GAME( 1996, snowboar, 0, snowboar, snowboar, driver_device, 0, ROT0, "Gaelco", "Snow Board Championship (Version 2.1)", 0 )
GAME( 1996, snowboara,snowboar, snowboar, snowboar, gaelco2_state, snowboar, ROT0, "Gaelco", "Snow Board Championship (Version 2.0)", 0 )
GAME( 1998, bang, 0, bang, bang, bang_state, bang, ROT0, "Gaelco", "Bang!", 0 )
diff --git a/src/mame/drivers/gaelco3d.cpp b/src/mame/drivers/gaelco3d.cpp
index 208a33a5504..0170d609e85 100644
--- a/src/mame/drivers/gaelco3d.cpp
+++ b/src/mame/drivers/gaelco3d.cpp
@@ -852,7 +852,7 @@ static INPUT_PORTS_START( speedup )
PORT_BIT( 0x0200, IP_ACTIVE_LOW, IPT_BUTTON2 ) PORT_PLAYER(2) // checked after reading analog from port 1
PORT_BIT( 0x0400, IP_ACTIVE_LOW, IPT_BUTTON3 ) PORT_PLAYER(2) // checked after reading analog from port 2
PORT_BIT( 0x0800, IP_ACTIVE_LOW, IPT_BUTTON4 ) PORT_PLAYER(2) // checked after reading analog from port 3
- PORT_BIT( 0x1000, IP_ACTIVE_HIGH, IPT_SPECIAL) PORT_CUSTOM_MEMBER(DEVICE_SELF, gaelco3d_state,analog_bit_r, (void *)nullptr)
+ PORT_BIT( 0x1000, IP_ACTIVE_HIGH, IPT_SPECIAL) PORT_CUSTOM_MEMBER(DEVICE_SELF, gaelco3d_state,analog_bit_r, (void *)0)
PORT_BIT( 0x2000, IP_ACTIVE_HIGH, IPT_SPECIAL) PORT_CUSTOM_MEMBER(DEVICE_SELF, gaelco3d_state,analog_bit_r, (void *)1)
PORT_BIT( 0x4000, IP_ACTIVE_HIGH, IPT_SPECIAL) PORT_CUSTOM_MEMBER(DEVICE_SELF, gaelco3d_state,analog_bit_r, (void *)2)
PORT_BIT( 0x8000, IP_ACTIVE_HIGH, IPT_SPECIAL) PORT_CUSTOM_MEMBER(DEVICE_SELF, gaelco3d_state,analog_bit_r, (void *)3)
@@ -891,7 +891,7 @@ static INPUT_PORTS_START( surfplnt )
PORT_BIT( 0x0200, IP_ACTIVE_LOW, IPT_UNKNOWN )
PORT_BIT( 0x0400, IP_ACTIVE_LOW, IPT_SERVICE1 )
PORT_SERVICE_NO_TOGGLE( 0x0800, IP_ACTIVE_LOW )
- PORT_BIT( 0x1000, IP_ACTIVE_HIGH, IPT_SPECIAL) PORT_CUSTOM_MEMBER(DEVICE_SELF, gaelco3d_state,analog_bit_r, (void *)nullptr)
+ PORT_BIT( 0x1000, IP_ACTIVE_HIGH, IPT_SPECIAL) PORT_CUSTOM_MEMBER(DEVICE_SELF, gaelco3d_state,analog_bit_r, (void *)0)
PORT_BIT( 0x2000, IP_ACTIVE_HIGH, IPT_SPECIAL) PORT_CUSTOM_MEMBER(DEVICE_SELF, gaelco3d_state,analog_bit_r, (void *)1)
PORT_BIT( 0x4000, IP_ACTIVE_HIGH, IPT_SPECIAL) PORT_CUSTOM_MEMBER(DEVICE_SELF, gaelco3d_state,analog_bit_r, (void *)2)
PORT_BIT( 0x8000, IP_ACTIVE_HIGH, IPT_SPECIAL) PORT_CUSTOM_MEMBER(DEVICE_SELF, gaelco3d_state,analog_bit_r, (void *)3)
@@ -928,7 +928,7 @@ static INPUT_PORTS_START( radikalb )
PORT_BIT( 0x02000000, IP_ACTIVE_LOW, IPT_UNKNOWN )
PORT_BIT( 0x04000000, IP_ACTIVE_LOW, IPT_SERVICE1 )
PORT_SERVICE_NO_TOGGLE( 0x08000000, IP_ACTIVE_LOW )
- PORT_BIT( 0x10000000, IP_ACTIVE_HIGH, IPT_SPECIAL) PORT_CUSTOM_MEMBER(DEVICE_SELF, gaelco3d_state,analog_bit_r, (void *)nullptr)
+ PORT_BIT( 0x10000000, IP_ACTIVE_HIGH, IPT_SPECIAL) PORT_CUSTOM_MEMBER(DEVICE_SELF, gaelco3d_state,analog_bit_r, (void *)0)
PORT_BIT( 0x20000000, IP_ACTIVE_HIGH, IPT_SPECIAL) PORT_CUSTOM_MEMBER(DEVICE_SELF, gaelco3d_state,analog_bit_r, (void *)1)
PORT_BIT( 0x40000000, IP_ACTIVE_HIGH, IPT_SPECIAL) PORT_CUSTOM_MEMBER(DEVICE_SELF, gaelco3d_state,analog_bit_r, (void *)2)
PORT_BIT( 0x80000000, IP_ACTIVE_HIGH, IPT_SPECIAL) PORT_CUSTOM_MEMBER(DEVICE_SELF, gaelco3d_state,analog_bit_r, (void *)3)
diff --git a/src/mame/drivers/gal3.cpp b/src/mame/drivers/gal3.cpp
index b405d644b66..4fcb523ade2 100644
--- a/src/mame/drivers/gal3.cpp
+++ b/src/mame/drivers/gal3.cpp
@@ -1,4 +1,4 @@
-// license:???
+// license:BSD-3-Clause
// copyright-holders:Naibo Zhang
/* Galaxian 3
diff --git a/src/mame/drivers/galaxi.cpp b/src/mame/drivers/galaxi.cpp
index 617ce8a3956..679bd63b40d 100644
--- a/src/mame/drivers/galaxi.cpp
+++ b/src/mame/drivers/galaxi.cpp
@@ -57,10 +57,13 @@ public:
m_bg3_ram(*this, "bg3_ram"),
m_bg4_ram(*this, "bg4_ram"),
m_fg_ram(*this, "fg_ram"),
+ m_bg3_xscroll(8),
+ m_bg3_yscroll(0),
m_maincpu(*this, "maincpu"),
m_gfxdecode(*this, "gfxdecode"),
m_screen(*this, "screen"),
- m_palette(*this, "palette") { }
+ m_palette(*this, "palette")
+ { }
/* memory pointers */
required_shared_ptr<UINT16> m_bg1_ram;
@@ -77,10 +80,14 @@ public:
tilemap_t *m_bg4_tmap;
tilemap_t *m_fg_tmap;
+ UINT16 m_bg3_xscroll;
+ UINT16 m_bg3_yscroll;
+
/* misc */
int m_hopper;
int m_ticket;
- UINT16 m_out[3];
+ UINT16 m_out;
+
DECLARE_WRITE16_MEMBER(galaxi_bg1_w);
DECLARE_WRITE16_MEMBER(galaxi_bg2_w);
DECLARE_WRITE16_MEMBER(galaxi_bg3_w);
@@ -187,12 +194,13 @@ void galaxi_state::video_start()
m_bg4_tmap->set_transparent_pen(0);
m_fg_tmap->set_transparent_pen(0);
-
- m_bg3_tmap->set_scrolldx(-8, 0);
}
UINT32 galaxi_state::screen_update_galaxi(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect)
{
+ m_bg3_tmap->set_scrollx(m_bg3_xscroll);
+ m_bg3_tmap->set_scrolly(m_bg3_yscroll);
+
int layers_ctrl = -1;
#ifdef MAME_DEBUG
@@ -208,6 +216,7 @@ UINT32 galaxi_state::screen_update_galaxi(screen_device &screen, bitmap_ind16 &b
}
#endif
+
if (layers_ctrl & 1) m_bg1_tmap->draw(screen, bitmap, cliprect, TILEMAP_DRAW_OPAQUE, 0);
else bitmap.fill(m_palette->black_pen(), cliprect);
if (layers_ctrl & 2) m_bg2_tmap->draw(screen, bitmap, cliprect, 0, 0);
@@ -225,18 +234,18 @@ UINT32 galaxi_state::screen_update_galaxi(screen_device &screen, bitmap_ind16 &b
void galaxi_state::show_out( )
{
-// popmessage("%04x %04x %04x", m_out[0], m_out[1], m_out[2]);
+// popmessage("%04x", m_out);
}
WRITE16_MEMBER(galaxi_state::galaxi_500000_w)
{
- COMBINE_DATA(&m_out[0]);
+ COMBINE_DATA(&m_bg3_yscroll);
show_out();
}
WRITE16_MEMBER(galaxi_state::galaxi_500002_w)
{
- COMBINE_DATA(&m_out[1]);
+ COMBINE_DATA(&m_bg3_xscroll);
show_out();
}
@@ -271,7 +280,7 @@ WRITE16_MEMBER(galaxi_state::galaxi_500004_w)
machine().bookkeeping().coin_counter_w(0, data & 0x2000); // coins
}
- COMBINE_DATA(&m_out[2]);
+ COMBINE_DATA(&m_out);
show_out();
}
@@ -295,7 +304,32 @@ static ADDRESS_MAP_START( galaxi_map, AS_PROGRAM, 16, galaxi_state )
AM_RANGE(0x100c00, 0x100fff) AM_RAM_WRITE(galaxi_bg4_w) AM_SHARE("bg4_ram")
AM_RANGE(0x101000, 0x101fff) AM_RAM_WRITE(galaxi_fg_w ) AM_SHARE("fg_ram")
- AM_RANGE(0x102000, 0x1047ff) AM_READNOP // unknown
+ AM_RANGE(0x102000, 0x107fff) AM_READNOP // unknown
+
+ AM_RANGE(0x300000, 0x3007ff) AM_RAM_DEVWRITE("palette", palette_device, write) AM_SHARE("palette")
+
+ AM_RANGE(0x500000, 0x500001) AM_READ_PORT("INPUTS")
+ AM_RANGE(0x500000, 0x500001) AM_WRITE(galaxi_500000_w)
+ AM_RANGE(0x500002, 0x500003) AM_WRITE(galaxi_500002_w)
+ AM_RANGE(0x500004, 0x500005) AM_WRITE(galaxi_500004_w)
+
+ AM_RANGE(0x700000, 0x700001) AM_DEVREADWRITE8("oki", okim6295_device, read, write, 0x00ff)
+
+ AM_RANGE(0x600000, 0x607fff) AM_RAM AM_SHARE("nvram") // 2x DS1230Y (non volatile SRAM)
+ADDRESS_MAP_END
+
+
+static ADDRESS_MAP_START( lastfour_map, AS_PROGRAM, 16, galaxi_state )
+ AM_RANGE(0x000000, 0x03ffff) AM_ROM
+
+ // bg3+4 / 1+2 seem to be swapped, order, palettes, scroll register etc. all suggest this
+ AM_RANGE(0x100000, 0x1003ff) AM_RAM_WRITE(galaxi_bg3_w) AM_SHARE("bg3_ram")
+ AM_RANGE(0x100400, 0x1007ff) AM_RAM_WRITE(galaxi_bg4_w) AM_SHARE("bg4_ram")
+ AM_RANGE(0x100800, 0x100bff) AM_RAM_WRITE(galaxi_bg1_w) AM_SHARE("bg1_ram")
+ AM_RANGE(0x100c00, 0x100fff) AM_RAM_WRITE(galaxi_bg2_w) AM_SHARE("bg2_ram")
+
+ AM_RANGE(0x101000, 0x101fff) AM_RAM_WRITE(galaxi_fg_w ) AM_SHARE("fg_ram")
+ AM_RANGE(0x102000, 0x107fff) AM_READNOP // unknown
AM_RANGE(0x300000, 0x3007ff) AM_RAM_DEVWRITE("palette", palette_device, write) AM_SHARE("palette")
@@ -322,11 +356,11 @@ static INPUT_PORTS_START( galaxi )
PORT_BIT( 0x0010, IP_ACTIVE_HIGH, IPT_POKER_HOLD5 )
PORT_BIT( 0x0020, IP_ACTIVE_HIGH, IPT_START1 )
PORT_BIT( 0x0040, IP_ACTIVE_HIGH, IPT_GAMBLE_PAYOUT )
- PORT_BIT( 0x0080, IP_ACTIVE_HIGH, IPT_SPECIAL) PORT_CUSTOM_MEMBER(DEVICE_SELF, galaxi_state,hopper_r, (void *)nullptr ) // hopper sensor
+ PORT_BIT( 0x0080, IP_ACTIVE_HIGH, IPT_SPECIAL) PORT_CUSTOM_MEMBER(DEVICE_SELF, galaxi_state, hopper_r, NULL) // hopper sensor
PORT_BIT( 0x0100, IP_ACTIVE_HIGH, IPT_COIN1 ) PORT_IMPULSE(5) // coin a
PORT_BIT( 0x0200, IP_ACTIVE_HIGH, IPT_COIN2 ) PORT_IMPULSE(5) // coin b (token)
PORT_BIT( 0x0400, IP_ACTIVE_HIGH, IPT_COIN3 ) // pin 25LC
- PORT_BIT( 0x0800, IP_ACTIVE_HIGH, IPT_SPECIAL ) PORT_CUSTOM_MEMBER(DEVICE_SELF, galaxi_state,ticket_r, (void *)nullptr ) // ticket sensor
+ PORT_BIT( 0x0800, IP_ACTIVE_HIGH, IPT_SPECIAL ) PORT_CUSTOM_MEMBER(DEVICE_SELF, galaxi_state, ticket_r, NULL) // ticket sensor
PORT_BIT( 0x1000, IP_ACTIVE_HIGH, IPT_SPECIAL ) // hopper out (pin 14LS)
PORT_SERVICE_NO_TOGGLE( 0x2000, IP_ACTIVE_HIGH ) // test
PORT_BIT( 0x4000, IP_ACTIVE_HIGH, IPT_SPECIAL ) // (pin 26LC)
@@ -342,11 +376,11 @@ static INPUT_PORTS_START( magjoker )
PORT_BIT( 0x0010, IP_ACTIVE_HIGH, IPT_POKER_HOLD5 )
PORT_BIT( 0x0020, IP_ACTIVE_HIGH, IPT_START1 )
PORT_BIT( 0x0040, IP_ACTIVE_HIGH, IPT_GAMBLE_PAYOUT )
- PORT_BIT( 0x0080, IP_ACTIVE_HIGH, IPT_SPECIAL )PORT_CUSTOM_MEMBER(DEVICE_SELF, galaxi_state,hopper_r, (void *)nullptr ) // hopper sensor
+ PORT_BIT( 0x0080, IP_ACTIVE_HIGH, IPT_SPECIAL ) PORT_CUSTOM_MEMBER(DEVICE_SELF, galaxi_state, hopper_r, NULL) // hopper sensor
PORT_BIT( 0x0100, IP_ACTIVE_HIGH, IPT_COIN1 ) PORT_IMPULSE(5) // coin a
PORT_BIT( 0x0200, IP_ACTIVE_HIGH, IPT_COIN2 ) PORT_IMPULSE(5) // coin b (token)
PORT_BIT( 0x0400, IP_ACTIVE_HIGH, IPT_SERVICE ) PORT_NAME("Hopper Refill") PORT_CODE(KEYCODE_H)
- PORT_BIT( 0x0800, IP_ACTIVE_HIGH, IPT_SPECIAL ) PORT_CUSTOM_MEMBER(DEVICE_SELF, galaxi_state,ticket_r, (void *)nullptr ) // ticket sensor
+ PORT_BIT( 0x0800, IP_ACTIVE_HIGH, IPT_SPECIAL ) PORT_CUSTOM_MEMBER(DEVICE_SELF, galaxi_state, ticket_r, NULL) // ticket sensor
PORT_BIT( 0x1000, IP_ACTIVE_HIGH, IPT_SPECIAL ) // hopper out (pin 14LS)
PORT_SERVICE_NO_TOGGLE( 0x2000, IP_ACTIVE_HIGH ) // test
PORT_BIT( 0x4000, IP_ACTIVE_HIGH, IPT_GAMBLE_KEYOUT ) // (pin 26LC)
@@ -401,9 +435,7 @@ void galaxi_state::machine_reset()
{
m_hopper = 0;
m_ticket = 0;
- m_out[0] = 0;
- m_out[1] = 0;
- m_out[2] = 0;
+ m_out = 0;
}
static MACHINE_CONFIG_START( galaxi, galaxi_state )
@@ -449,6 +481,10 @@ static MACHINE_CONFIG_DERIVED( magjoker, galaxi )
MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 4.0)
MACHINE_CONFIG_END
+static MACHINE_CONFIG_DERIVED( lastfour, galaxi )
+ MCFG_CPU_MODIFY("maincpu")
+ MCFG_CPU_PROGRAM_MAP(lastfour_map)
+MACHINE_CONFIG_END
/***************************************************************************
ROMs Loading
@@ -480,6 +516,18 @@ ROM_START( magjoker )
ROM_LOAD( "21.u38", 0x00000, 0x40000, CRC(199baf33) SHA1(006708d955481fe1ae44555d27896d18e1ff8440) )
ROM_END
+ROM_START( lastfour )
+ ROM_REGION( 0x40000, "maincpu", 0 )
+ ROM_LOAD16_BYTE( "15.u48", 0x00000, 0x20000, CRC(9168e19c) SHA1(4a2f0d100e457bd33691ba084a0f0549e8bf0790) )
+ ROM_LOAD16_BYTE( "14.u47", 0x00001, 0x20000, CRC(b10ce31a) SHA1(8d51ead24319ff775fc873957e6b4de748432a8d) )
+
+ ROM_REGION( 0x100000, "gfx1", 0 )
+ ROM_LOAD16_BYTE( "13.u34", 0x00000, 0x80000, CRC(d595d4c4) SHA1(7fe8c9f36b03d763965abf325d1ff6d754342100) )
+ ROM_LOAD16_BYTE( "12.u33", 0x00001, 0x80000, CRC(5ee5568b) SHA1(6384e5dfa24b5ad4e4419fa3bbffb4d552867465) )
+
+ ROM_REGION( 0x40000, "oki", 0 ) /* 4-bit ADPCM mono @ 6 kHz.*/
+ ROM_LOAD( "21.u38", 0x00000, 0x20000, CRC(e48523dd) SHA1(47bc2e5c2164b93d685fa134397845e0ed7aaa5f) )
+ROM_END
/***************************************************************************
Game Drivers
@@ -488,3 +536,4 @@ ROM_END
/* YEAR NAME PARENT MACHINE INPUT INIT ROT COMPANY FULLNAME FLAGS LAYOUT */
GAMEL( 2000, galaxi, 0, galaxi, galaxi, driver_device, 0, ROT0, "B.R.L.", "Galaxi (v2.0)", MACHINE_SUPPORTS_SAVE, layout_galaxi )
GAMEL( 2000, magjoker, 0, magjoker, magjoker, driver_device, 0, ROT0, "B.R.L.", "Magic Joker (v1.25.10.2000)", MACHINE_SUPPORTS_SAVE, layout_galaxi )
+GAMEL( 2001, lastfour, 0, lastfour, magjoker, driver_device, 0, ROT0, "B.R.L.", "Last Four (09:12 16/01/2001)",MACHINE_SUPPORTS_SAVE, layout_galaxi )
diff --git a/src/mame/drivers/galaxian.cpp b/src/mame/drivers/galaxian.cpp
index 36842d488e4..9fb23df9be1 100644
--- a/src/mame/drivers/galaxian.cpp
+++ b/src/mame/drivers/galaxian.cpp
@@ -2522,7 +2522,7 @@ static INPUT_PORTS_START( azurian )
PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_JOYSTICK_UP ) PORT_8WAY PORT_COCKTAIL
PORT_BIT( 0x10, IP_ACTIVE_HIGH, IPT_JOYSTICK_RIGHT ) PORT_8WAY PORT_COCKTAIL
PORT_BIT( 0x20, IP_ACTIVE_HIGH, IPT_JOYSTICK_LEFT ) PORT_8WAY PORT_COCKTAIL
- PORT_BIT( 0x40, IP_ACTIVE_HIGH, IPT_SPECIAL ) PORT_CUSTOM_MEMBER(DEVICE_SELF, galaxian_state, azurian_port_r, (void *)nullptr) /* "linked" with bit 2 of IN2 */
+ PORT_BIT( 0x40, IP_ACTIVE_HIGH, IPT_SPECIAL ) PORT_CUSTOM_MEMBER(DEVICE_SELF, galaxian_state, azurian_port_r, (void *)0) /* "linked" with bit 2 of IN2 */
PORT_DIPNAME( 0x80, 0x00, DEF_STR( Lives ) )
PORT_DIPSETTING( 0x00, "3" )
PORT_DIPSETTING( 0x80, "5" )
@@ -4353,7 +4353,7 @@ static INPUT_PORTS_START( scramble )
PORT_DIPSETTING( 0x00, DEF_STR( Upright ) )
PORT_DIPSETTING( 0x08, DEF_STR( Cocktail ) )
PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_JOYSTICK_UP ) PORT_8WAY
- PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_SPECIAL ) PORT_CUSTOM_MEMBER(DEVICE_SELF, galaxian_state, scramble_protection_alt_r, (void *)nullptr) /* protection bit */
+ PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_SPECIAL ) PORT_CUSTOM_MEMBER(DEVICE_SELF, galaxian_state, scramble_protection_alt_r, (void *)0) /* protection bit */
PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_JOYSTICK_DOWN ) PORT_8WAY
PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_SPECIAL ) PORT_CUSTOM_MEMBER(DEVICE_SELF, galaxian_state, scramble_protection_alt_r, (void *)1) /* protection bit */
@@ -4806,7 +4806,7 @@ CUSTOM_INPUT_MEMBER(galaxian_state::moonwar_dial_r)
/* verified from Z80 code */
static INPUT_PORTS_START( moonwar )
PORT_START("IN0")
- PORT_BIT( 0x1f, IP_ACTIVE_HIGH, IPT_SPECIAL ) PORT_CUSTOM_MEMBER(DEVICE_SELF, galaxian_state, moonwar_dial_r, (void *)nullptr)
+ PORT_BIT( 0x1f, IP_ACTIVE_HIGH, IPT_SPECIAL ) PORT_CUSTOM_MEMBER(DEVICE_SELF, galaxian_state, moonwar_dial_r, NULL)
PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_BUTTON3 ) PORT_COCKTAIL // cocktail: p2 shield
PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_COIN2 )
PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_COIN1 )
diff --git a/src/mame/drivers/gauntlet.cpp b/src/mame/drivers/gauntlet.cpp
index 3bf38312812..f10375d51fe 100644
--- a/src/mame/drivers/gauntlet.cpp
+++ b/src/mame/drivers/gauntlet.cpp
@@ -191,13 +191,12 @@ WRITE16_MEMBER(gauntlet_state::sound_reset_w)
m_soundcomm->sound_cpu_reset();
if (m_sound_reset_val & 1)
{
- machine().device("ymsnd")->reset();
- tms5220_device *tms5220 = machine().device<tms5220_device>("tms");
- tms5220->reset();
- tms5220->set_frequency(ATARI_CLOCK_14MHz/2 / 11);
- set_ym2151_volume(0);
- set_pokey_volume(0);
- set_tms5220_volume(0);
+ m_ym2151->reset();
+ m_tms5220->reset();
+ m_tms5220->set_frequency(ATARI_CLOCK_14MHz/2 / 11);
+ m_ym2151->set_output_gain(ALL_OUTPUTS, 0.0f);
+ m_pokey->set_output_gain(ALL_OUTPUTS, 0.0f);
+ m_tms5220->set_output_gain(ALL_OUTPUTS, 0.0f);
}
}
}
@@ -213,12 +212,11 @@ WRITE16_MEMBER(gauntlet_state::sound_reset_w)
READ8_MEMBER(gauntlet_state::switch_6502_r)
{
- tms5220_device *tms5220 = machine().device<tms5220_device>("tms");
int temp = 0x30;
if (m_soundcomm->main_to_sound_ready()) temp ^= 0x80;
if (m_soundcomm->sound_to_main_ready()) temp ^= 0x40;
- if (!tms5220->readyq_r()) temp ^= 0x20;
+ if (!m_tms5220->readyq_r()) temp ^= 0x20;
if (!(ioport("803008")->read() & 0x0008)) temp ^= 0x10;
return temp;
@@ -233,24 +231,23 @@ READ8_MEMBER(gauntlet_state::switch_6502_r)
WRITE8_MEMBER(gauntlet_state::sound_ctl_w)
{
- tms5220_device *tms5220 = machine().device<tms5220_device>("tms");
switch (offset & 7)
{
case 0: /* music reset, bit D7, low reset */
- if (((data>>7)&1) == 0) machine().device("ymsnd")->reset();
+ if (((data>>7)&1) == 0) m_ym2151->reset();
break;
case 1: /* speech write, bit D7, active low */
- tms5220->wsq_w(data >> 7);
+ m_tms5220->wsq_w(data >> 7);
break;
case 2: /* speech reset, bit D7, active low */
- tms5220->rsq_w(data >> 7);
+ m_tms5220->rsq_w(data >> 7);
break;
case 3: /* speech squeak, bit D7 */
data = 5 | ((data >> 6) & 2);
- tms5220->set_frequency(ATARI_CLOCK_14MHz/2 / (16 - data));
+ m_tms5220->set_frequency(ATARI_CLOCK_14MHz/2 / (16 - data));
break;
}
}
@@ -265,9 +262,9 @@ WRITE8_MEMBER(gauntlet_state::sound_ctl_w)
WRITE8_MEMBER(gauntlet_state::mixer_w)
{
- set_ym2151_volume((data & 7) * 100 / 7);
- set_pokey_volume(((data >> 3) & 3) * 100 / 3);
- set_tms5220_volume(((data >> 5) & 7) * 100 / 7);
+ m_ym2151->set_output_gain(ALL_OUTPUTS, (data & 7) / 7.0f);
+ m_pokey->set_output_gain(ALL_OUTPUTS, ((data >> 3) & 3) / 3.0f);
+ m_tms5220->set_output_gain(ALL_OUTPUTS, ((data >> 5) & 7) / 7.0f);
}
@@ -492,15 +489,13 @@ GFXDECODE_END
*
*************************************/
-static MACHINE_CONFIG_START( gauntlet, gauntlet_state )
+static MACHINE_CONFIG_START( gauntlet_base, gauntlet_state )
/* basic machine hardware */
MCFG_CPU_ADD("maincpu", M68010, ATARI_CLOCK_14MHz/2)
MCFG_CPU_PROGRAM_MAP(main_map)
MCFG_DEVICE_VBLANK_INT_DRIVER("screen", atarigen_state, video_int_gen)
- MCFG_SLAPSTIC_ADD("slapstic")
-
MCFG_CPU_ADD("audiocpu", M6502, ATARI_CLOCK_14MHz/8)
MCFG_CPU_PROGRAM_MAP(sound_map)
@@ -548,6 +543,27 @@ static MACHINE_CONFIG_START( gauntlet, gauntlet_state )
MACHINE_CONFIG_END
+static MACHINE_CONFIG_DERIVED( gauntlet, gauntlet_base )
+ MCFG_SLAPSTIC_ADD("slapstic", 104)
+MACHINE_CONFIG_END
+
+
+static MACHINE_CONFIG_DERIVED( gaunt2p, gauntlet_base )
+ MCFG_SLAPSTIC_ADD("slapstic", 107)
+MACHINE_CONFIG_END
+
+
+static MACHINE_CONFIG_DERIVED( gauntlet2, gauntlet_base )
+ MCFG_SLAPSTIC_ADD("slapstic", 106)
+MACHINE_CONFIG_END
+
+
+static MACHINE_CONFIG_DERIVED( vindctr2, gauntlet_base )
+ MCFG_SLAPSTIC_ADD("slapstic", 118)
+MACHINE_CONFIG_END
+
+
+
/*************************************
*
@@ -1627,10 +1643,10 @@ void gauntlet_state::swap_memory(void *ptr1, void *ptr2, int bytes)
}
}
-void gauntlet_state::common_init(int slapstic, int vindctr2)
+void gauntlet_state::common_init(int vindctr2)
{
UINT8 *rom = memregion("maincpu")->base();
- slapstic_configure(*m_maincpu, 0x038000, 0, slapstic);
+ slapstic_configure(*m_maincpu, 0x038000, 0);
/* swap the top and bottom halves of the main CPU ROM images */
swap_memory(rom + 0x000000, rom + 0x008000, 0x8000);
@@ -1646,19 +1662,7 @@ void gauntlet_state::common_init(int slapstic, int vindctr2)
DRIVER_INIT_MEMBER(gauntlet_state,gauntlet)
{
- common_init(104, 0);
-}
-
-
-DRIVER_INIT_MEMBER(gauntlet_state,gaunt2p)
-{
- common_init(107, 0);
-}
-
-
-DRIVER_INIT_MEMBER(gauntlet_state,gauntlet2)
-{
- common_init(106, 0);
+ common_init(0);
}
@@ -1668,7 +1672,7 @@ DRIVER_INIT_MEMBER(gauntlet_state,vindctr2)
dynamic_buffer data(0x8000);
int i;
- common_init(118, 1);
+ common_init(1);
/* highly strange -- the address bits on the chip at 2J (and only that
chip) are scrambled -- this is verified on the schematics! */
@@ -1704,20 +1708,20 @@ GAME( 1985, gauntletgr3, gauntlet, gauntlet, gauntlet, gauntlet_state, gauntlet,
GAME( 1985, gauntletr2, gauntlet, gauntlet, gauntlet, gauntlet_state, gauntlet, ROT0, "Atari Games", "Gauntlet (rev 2)", 0 )
GAME( 1985, gauntletr1, gauntlet, gauntlet, gauntlet, gauntlet_state, gauntlet, ROT0, "Atari Games", "Gauntlet (rev 1)", 0 )
-GAME( 1985, gauntlet2p, gauntlet, gauntlet, gauntlet, gauntlet_state, gaunt2p, ROT0, "Atari Games", "Gauntlet (2 Players, rev 6)", 0 )
-GAME( 1985, gauntlet2pj, gauntlet, gauntlet, gauntlet, gauntlet_state, gaunt2p, ROT0, "Atari Games", "Gauntlet (2 Players, Japanese, rev 5)", 0 )
-GAME( 1985, gauntlet2pg, gauntlet, gauntlet, gauntlet, gauntlet_state, gaunt2p, ROT0, "Atari Games", "Gauntlet (2 Players, German, rev 4)", 0 )
-GAME( 1985, gauntlet2pr3, gauntlet, gauntlet, gauntlet, gauntlet_state, gaunt2p, ROT0, "Atari Games", "Gauntlet (2 Players, rev 3)", 0 )
-GAME( 1985, gauntlet2pj2, gauntlet, gauntlet, gauntlet, gauntlet_state, gaunt2p, ROT0, "Atari Games", "Gauntlet (2 Players, Japanese, rev 2)", 0 )
-GAME( 1985, gauntlet2pg1, gauntlet, gauntlet, gauntlet, gauntlet_state, gaunt2p, ROT0, "Atari Games", "Gauntlet (2 Players, German, rev 1)", 0 )
+GAME( 1985, gauntlet2p, gauntlet, gaunt2p, gauntlet, gauntlet_state, gauntlet, ROT0, "Atari Games", "Gauntlet (2 Players, rev 6)", 0 )
+GAME( 1985, gauntlet2pj, gauntlet, gaunt2p, gauntlet, gauntlet_state, gauntlet, ROT0, "Atari Games", "Gauntlet (2 Players, Japanese, rev 5)", 0 )
+GAME( 1985, gauntlet2pg, gauntlet, gaunt2p, gauntlet, gauntlet_state, gauntlet, ROT0, "Atari Games", "Gauntlet (2 Players, German, rev 4)", 0 )
+GAME( 1985, gauntlet2pr3, gauntlet, gaunt2p, gauntlet, gauntlet_state, gauntlet, ROT0, "Atari Games", "Gauntlet (2 Players, rev 3)", 0 )
+GAME( 1985, gauntlet2pj2, gauntlet, gaunt2p, gauntlet, gauntlet_state, gauntlet, ROT0, "Atari Games", "Gauntlet (2 Players, Japanese, rev 2)", 0 )
+GAME( 1985, gauntlet2pg1, gauntlet, gaunt2p, gauntlet, gauntlet_state, gauntlet, ROT0, "Atari Games", "Gauntlet (2 Players, German, rev 1)", 0 )
-GAME( 1986, gaunt2, 0, gauntlet, gauntlet, gauntlet_state, gauntlet2, ROT0, "Atari Games", "Gauntlet II", 0 )
-GAME( 1986, gaunt2g, gaunt2, gauntlet, gauntlet, gauntlet_state, gauntlet2, ROT0, "Atari Games", "Gauntlet II (German)", 0 )
+GAME( 1986, gaunt2, 0, gauntlet2, gauntlet, gauntlet_state, gauntlet, ROT0, "Atari Games", "Gauntlet II", 0 )
+GAME( 1986, gaunt2g, gaunt2, gauntlet2, gauntlet, gauntlet_state, gauntlet, ROT0, "Atari Games", "Gauntlet II (German)", 0 )
-GAME( 1986, gaunt22p, gaunt2, gauntlet, gauntlet, gauntlet_state, gauntlet2, ROT0, "Atari Games", "Gauntlet II (2 Players, rev 2)", 0 )
-GAME( 1986, gaunt22p1, gaunt2, gauntlet, gauntlet, gauntlet_state, gauntlet2, ROT0, "Atari Games", "Gauntlet II (2 Players, rev 1)", 0 )
-GAME( 1986, gaunt22pg, gaunt2, gauntlet, gauntlet, gauntlet_state, gauntlet2, ROT0, "Atari Games", "Gauntlet II (2 Players, German)", 0 )
+GAME( 1986, gaunt22p, gaunt2, gauntlet2, gauntlet, gauntlet_state, gauntlet, ROT0, "Atari Games", "Gauntlet II (2 Players, rev 2)", 0 )
+GAME( 1986, gaunt22p1, gaunt2, gauntlet2, gauntlet, gauntlet_state, gauntlet, ROT0, "Atari Games", "Gauntlet II (2 Players, rev 1)", 0 )
+GAME( 1986, gaunt22pg, gaunt2, gauntlet2, gauntlet, gauntlet_state, gauntlet, ROT0, "Atari Games", "Gauntlet II (2 Players, German)", 0 )
-GAME( 1988, vindctr2, 0, gauntlet, vindctr2, gauntlet_state, vindctr2, ROT0, "Atari Games", "Vindicators Part II (rev 3)", 0 )
-GAME( 1988, vindctr2r2, vindctr2, gauntlet, vindctr2, gauntlet_state, vindctr2, ROT0, "Atari Games", "Vindicators Part II (rev 2)", 0 )
-GAME( 1988, vindctr2r1, vindctr2, gauntlet, vindctr2, gauntlet_state, vindctr2, ROT0, "Atari Games", "Vindicators Part II (rev 1)", 0 )
+GAME( 1988, vindctr2, 0, vindctr2, vindctr2, gauntlet_state, vindctr2, ROT0, "Atari Games", "Vindicators Part II (rev 3)", 0 )
+GAME( 1988, vindctr2r2, vindctr2, vindctr2, vindctr2, gauntlet_state, vindctr2, ROT0, "Atari Games", "Vindicators Part II (rev 2)", 0 )
+GAME( 1988, vindctr2r1, vindctr2, vindctr2, vindctr2, gauntlet_state, vindctr2, ROT0, "Atari Games", "Vindicators Part II (rev 1)", 0 )
diff --git a/src/mame/drivers/geneve.cpp b/src/mame/drivers/geneve.cpp
index 59775a8f130..60641d9da78 100644
--- a/src/mame/drivers/geneve.cpp
+++ b/src/mame/drivers/geneve.cpp
@@ -691,12 +691,10 @@ static MACHINE_CONFIG_START( geneve_60hz, geneve_state )
MCFG_TMS9995_DBIN_HANDLER( WRITELINE(geneve_state, dbin_line) )
// video hardware
- // Although we should have a 60 Hz screen rate, we have to set it to 30 here.
- // The reason is that that the number of screen lines is counted twice for the
- // interlace mode, but in non-interlace modes only half of the lines are
- // painted. Accordingly, the full set of lines is refreshed at 30 Hz,
- // not 60 Hz. This should be fixed in the v9938 emulation.
- MCFG_TI_V9938_ADD(VIDEO_SYSTEM_TAG, 30, SCREEN_TAG, 2500, 512+32, (212+28)*2, geneve_state, set_tms9901_INT2_from_v9938)
+ MCFG_DEVICE_ADD(VIDEO_SYSTEM_TAG, V9938VIDEO, 0)
+ MCFG_V9938_ADD(VDP_TAG, SCREEN_TAG, 0x20000, XTAL_21_4772MHz) /* typical 9938 clock, not verified */
+ MCFG_V99X8_INTERRUPT_CALLBACK(WRITELINE(geneve_state, set_tms9901_INT2_from_v9938))
+ MCFG_V99X8_SCREEN_ADD_NTSC(SCREEN_TAG, VDP_TAG, XTAL_21_4772MHz)
MCFG_TIMER_DRIVER_ADD_SCANLINE("scantimer", geneve_state, geneve_hblank_interrupt, SCREEN_TAG, 0, 1) /* 262.5 in 60Hz, 312.5 in 50Hz */
// Main board components
diff --git a/src/mame/drivers/gkigt.cpp b/src/mame/drivers/gkigt.cpp
index b751be8a2fb..867514520b8 100644
--- a/src/mame/drivers/gkigt.cpp
+++ b/src/mame/drivers/gkigt.cpp
@@ -45,7 +45,7 @@ EPROM sockets and SIMM slots
MULTIMEDIA LITE boards:
Multimedia Lite 1 - uses up to 4MB on EPROMs to store sound
Multimedia Lite 2 - uses up to 16MB of SIMM to store sound
-
+
Boards contain:
Custom programmed Cypress CY37032-125JC CPLD
32 Macrocells
@@ -108,7 +108,7 @@ public:
{
return rand();
};
-
+
};
@@ -140,14 +140,14 @@ static ADDRESS_MAP_START( igt_gameking_mem, AS_PROGRAM, 32, igt_gameking_state )
AM_RANGE(0x00000000, 0x0007ffff) AM_ROM
AM_RANGE(0x08000000, 0x081fffff) AM_ROM AM_REGION("game", 0)
- AM_RANGE(0x10000000, 0x1000001f) AM_RAM
+ AM_RANGE(0x10000000, 0x1000001f) AM_RAM
AM_RANGE(0x10000020, 0x1000021f) AM_RAM // strange range to test, correct or CPU issue?
- AM_RANGE(0x10000220, 0x1003ffff) AM_RAM
+ AM_RANGE(0x10000220, 0x1003ffff) AM_RAM
AM_RANGE(0x28010008, 0x2801000b) AM_READ(igt_gk_28010008_r)
AM_RANGE(0x28030000, 0x28030003) AM_READ(igt_gk_28030000_r)
-
+
ADDRESS_MAP_END
@@ -172,9 +172,9 @@ GFXDECODE_END
static MACHINE_CONFIG_START( igt_gameking, igt_gameking_state )
/* basic machine hardware */
- MCFG_CPU_ADD("maincpu", I960, 20000000) // ?? Mhz
+ MCFG_CPU_ADD("maincpu", I960, XTAL_24MHz)
MCFG_CPU_PROGRAM_MAP(igt_gameking_mem)
-
+
MCFG_GFXDECODE_ADD("gfxdecode", "palette", igt_gameking)
@@ -185,6 +185,7 @@ static MACHINE_CONFIG_START( igt_gameking, igt_gameking_state )
MCFG_SCREEN_VISIBLE_AREA(8*8, 48*8-1, 2*8, 30*8-1)
MCFG_SCREEN_UPDATE_DRIVER(igt_gameking_state, screen_update_igt_gameking)
MCFG_SCREEN_PALETTE("palette")
+ // Xilinx used as video chip XTAL_26_66666MHz on board
MCFG_PALETTE_ADD("palette", 0x200)
MCFG_PALETTE_FORMAT(xRRRRRGGGGGBBBBB)
@@ -198,143 +199,163 @@ static MACHINE_CONFIG_START( igt_gameking, igt_gameking_state )
MACHINE_CONFIG_END
+ROM_START( ms72c )
+ ROM_REGION( 0x80000, "maincpu", 0 )
+ ROM_LOAD( "3B5019FA MULTISTAR 7 2c CONFIG.u8", 0x00000, 0x80000, CRC(6c326a31) SHA1(cd8ecc814ef4f379946ab3654dddd508c24ae56c) )
+
+ ROM_REGION32_LE( 0x200000, "game", 0 )
+ ROM_LOAD16_BYTE( "DA5001FA Gamebase GME1.u21", 0x000000, 0x100000, CRC(4cd63b5f) SHA1(440302a6ac844b453573e358b29c64f2e8ece80e) )
+ ROM_LOAD16_BYTE( "DA5001FA Gamebase GME2.u5", 0x000001, 0x100000, CRC(663df2fe) SHA1(d2ac3129a346450168a9f76431b0fa8b78db3b37) )
+
+ ROM_REGION( 0x100000, "cg", 0 )
+ ROM_LOAD16_BYTE( "1G5019FA Multistar 7 PUB.u48", 0x000000, 0x80000, CRC(ac50a155) SHA1(50d07ba5ca176c97adde169fda6e6385c8ec8299) )
+ ROM_LOAD16_BYTE( "1G5019FA Multistar 7 PUB.u47", 0x000001, 0x80000, CRC(5fee078b) SHA1(a41591d14fbc12c68d773fbd1ac340d9427d68e9) )
+
+ ROM_REGION( 0x200000, "plx", 0 )
+ ROM_LOAD16_BYTE( "1G5019FA Multistar 7 PUB.u20", 0x000000, 0x100000, CRC(806ec7d4) SHA1(b9263f942b3d7101797bf87ad18cfddac9582791) )
+ ROM_LOAD16_BYTE( "1G5019FA Multistar 7 PUB.u4", 0x000001, 0x100000, CRC(2e1e9c8a) SHA1(b6992f013f43debf43f4704396fc71e88449e365) )
+
+ ROM_REGION( 0x200000, "snd", 0 )
+ ROM_LOAD( "1H5008FA Multistar 7.u6", 0x000000, 0x100000, CRC(69656637) SHA1(28c2cf48856ee4f820146fdbd0f3c7e307892dc6) )
+ROM_END
+
ROM_START( gkigt4 )
ROM_REGION( 0x80000, "maincpu", 0 )
- ROM_LOAD( "M0000527 BASE (1-4002).bin", 0x00000, 0x80000, CRC(73981260) SHA1(24b42ae2796034815d35294efe0ac3d5c33100bd) )
+ ROM_LOAD( "M0000527 BASE (1-4002).bin", 0x00000, 0x80000, CRC(73981260) SHA1(24b42ae2796034815d35294efe0ac3d5c33100bd) )
ROM_REGION32_LE( 0x200000, "game", 0 )
- ROM_LOAD16_BYTE( "G0001777 GME1 1 of 2 (2-80).bin", 0x000000, 0x100000, CRC(99d5829d) SHA1(b2ec16f35503ba6a0a41221fb3f52c5d2223ad79) )
- ROM_LOAD16_BYTE( "G0001777 GME2 2 of 2 (2-80).bin", 0x000001, 0x100000, CRC(3b7dfcc0) SHA1(2aeb35125c4320ba3198c44418c90fa6fd6270a9) )
+ ROM_LOAD16_BYTE( "G0001777 GME1 1 of 2 (2-80).bin", 0x000000, 0x100000, CRC(99d5829d) SHA1(b2ec16f35503ba6a0a41221fb3f52c5d2223ad79) )
+ ROM_LOAD16_BYTE( "G0001777 GME2 2 of 2 (2-80).bin", 0x000001, 0x100000, CRC(3b7dfcc0) SHA1(2aeb35125c4320ba3198c44418c90fa6fd6270a9) )
ROM_REGION( 0x100000, "cg", 0 )
- ROM_LOAD16_BYTE( "C0000330 CG1 1 of 4 (2-40).bin", 0x000000, 0x80000, CRC(b92b8aa4) SHA1(05a1feac4012a73777eb28ab6e66e1dcadb9430f) )
- ROM_LOAD16_BYTE( "C0000330 CG2 2 of 4 (2-40).bin", 0x000001, 0x80000, CRC(4e0560b5) SHA1(109f0bd47cfb0ed593fc34c5904bc639b0097d12))
+ ROM_LOAD16_BYTE( "C0000330 CG1 1 of 4 (2-40).bin", 0x000000, 0x80000, CRC(b92b8aa4) SHA1(05a1feac4012a73777eb28ab6e66e1dcadb9430f) )
+ ROM_LOAD16_BYTE( "C0000330 CG2 2 of 4 (2-40).bin", 0x000001, 0x80000, CRC(4e0560b5) SHA1(109f0bd47cfb0ed593fc34c5904bc639b0097d12))
ROM_REGION( 0x200000, "plx", 0 )
- ROM_LOAD16_BYTE( "C0000330 PLX1 3 of 4 (2-80).bin", 0x000000, 0x100000, CRC(806ec7d4) SHA1(b9263f942b3d7101797bf87ad18cfddac9582791) )
- ROM_LOAD16_BYTE( "C0000330 PLX2 4 of 4 (2-80).bin", 0x000001, 0x100000, CRC(c4ce5dc5) SHA1(cc5d090e88551550787b87d80aafe18ee1661dd7) )
+ ROM_LOAD16_BYTE( "C0000330 PLX1 3 of 4 (2-80).bin", 0x000000, 0x100000, CRC(806ec7d4) SHA1(b9263f942b3d7101797bf87ad18cfddac9582791) )
+ ROM_LOAD16_BYTE( "C0000330 PLX2 4 of 4 (2-80).bin", 0x000001, 0x100000, CRC(c4ce5dc5) SHA1(cc5d090e88551550787b87d80aafe18ee1661dd7) )
ROM_REGION( 0x200000, "snd", 0 )
- ROM_LOAD( "SWC00046 SND1 1 of 2 (2-80).rom1", 0x000000, 0x100000, CRC(8213aeac) SHA1(4beff02fed64e607270e0e8e322a96f112bd2093) )
- ROM_LOAD( "SWC00046 SND2 2 of 2 (2-80).rom2", 0x100000, 0x100000, CRC(a7ef9b46) SHA1(031373fb8e39c4ed828a58bb63a9395a205c6b6b) )
+ ROM_LOAD( "SWC00046 SND1 1 of 2 (2-80).rom1", 0x000000, 0x100000, CRC(8213aeac) SHA1(4beff02fed64e607270e0e8e322a96f112bd2093) )
+ ROM_LOAD( "SWC00046 SND2 2 of 2 (2-80).rom2", 0x100000, 0x100000, CRC(a7ef9b46) SHA1(031373fb8e39c4ed828a58bb63a9395a205c6b6b) )
ROM_END
ROM_START( gkigt4ms )
ROM_REGION( 0x80000, "maincpu", 0 )
- ROM_LOAD( "M000526 BASE (1-4002) MS.u39", 0x00000, 0x80000, CRC(4d095df5) SHA1(bd0cdc4c1b07ef2723ba22b14abaf581b017f190) )
+ ROM_LOAD( "M000526 BASE (1-4002) MS.u39", 0x00000, 0x80000, CRC(4d095df5) SHA1(bd0cdc4c1b07ef2723ba22b14abaf581b017f190) )
ROM_REGION32_LE( 0x200000, "game", 0 ) // same as gkigt4
- ROM_LOAD16_BYTE( "G0001777 GME1 1 of 2 (2-80).bin", 0x000000, 0x100000, CRC(99d5829d) SHA1(b2ec16f35503ba6a0a41221fb3f52c5d2223ad79) )
- ROM_LOAD16_BYTE( "G0001777 GME2 2 of 2 (2-80).bin", 0x000001, 0x100000, CRC(3b7dfcc0) SHA1(2aeb35125c4320ba3198c44418c90fa6fd6270a9) )
+ ROM_LOAD16_BYTE( "G0001777 GME1 1 of 2 (2-80).bin", 0x000000, 0x100000, CRC(99d5829d) SHA1(b2ec16f35503ba6a0a41221fb3f52c5d2223ad79) )
+ ROM_LOAD16_BYTE( "G0001777 GME2 2 of 2 (2-80).bin", 0x000001, 0x100000, CRC(3b7dfcc0) SHA1(2aeb35125c4320ba3198c44418c90fa6fd6270a9) )
ROM_REGION( 0x100000, "cg", 0 )
- ROM_LOAD16_BYTE( "C000351 CG1 1 of 4 (2-40) MS.u30", 0x000000, 0x80000, CRC(2e841b28) SHA1(492b54e092b0d4028fd8edcb981bd1fd25dca47d) )
- ROM_LOAD16_BYTE( "C000351 CG2 2 of 4 (2-40) MS.u53", 0x000001, 0x80000, CRC(673fc86c) SHA1(4d844330c5602d725253b4f78781fa9e213b8556) )
+ ROM_LOAD16_BYTE( "C000351 CG1 1 of 4 (2-40) MS.u30", 0x000000, 0x80000, CRC(2e841b28) SHA1(492b54e092b0d4028fd8edcb981bd1fd25dca47d) )
+ ROM_LOAD16_BYTE( "C000351 CG2 2 of 4 (2-40) MS.u53", 0x000001, 0x80000, CRC(673fc86c) SHA1(4d844330c5602d725253b4f78781fa9e213b8556) )
ROM_REGION( 0x200000, "plx", 0 )
- ROM_LOAD16_BYTE( "C000351 PXL1 3 of 4 (2-80) MS.u14", 0x000000, 0x100000, CRC(438fb625) SHA1(369c860dffa323c2e9be155da1989252f6b0e694) )
- ROM_LOAD16_BYTE( "C000351 PXL2 4 of 4 (2-80) MS.u37", 0x000001, 0x100000, CRC(22ec9c65) SHA1(bd944ae79faa8ceb73ed8f6f244fce6ff543ccd1) )
+ ROM_LOAD16_BYTE( "C000351 PXL1 3 of 4 (2-80) MS.u14", 0x000000, 0x100000, CRC(438fb625) SHA1(369c860dffa323c2e9be155da1989252f6b0e694) )
+ ROM_LOAD16_BYTE( "C000351 PXL2 4 of 4 (2-80) MS.u37", 0x000001, 0x100000, CRC(22ec9c65) SHA1(bd944ae79faa8ceb73ed8f6f244fce6ff543ccd1) )
ROM_REGION( 0x200000, "snd", 0 ) // same as gkigt4
- ROM_LOAD( "SWC00046 SND1 1 of 2 (2-80).rom1", 0x000000, 0x100000, CRC(8213aeac) SHA1(4beff02fed64e607270e0e8e322a96f112bd2093) )
- ROM_LOAD( "SWC00046 SND2 2 of 2 (2-80).rom2", 0x100000, 0x100000, CRC(a7ef9b46) SHA1(031373fb8e39c4ed828a58bb63a9395a205c6b6b) )
+ ROM_LOAD( "SWC00046 SND1 1 of 2 (2-80).rom1", 0x000000, 0x100000, CRC(8213aeac) SHA1(4beff02fed64e607270e0e8e322a96f112bd2093) )
+ ROM_LOAD( "SWC00046 SND2 2 of 2 (2-80).rom2", 0x100000, 0x100000, CRC(a7ef9b46) SHA1(031373fb8e39c4ed828a58bb63a9395a205c6b6b) )
ROM_END
ROM_START( gkigt43 )
ROM_REGION( 0x80000, "maincpu", 0 )
- ROM_LOAD( "M0000837 BASE (1-4002).bin", 0x00000, 0x80000, CRC(98841e5c) SHA1(3b04bc9bc170cfcc6145dc601a63bd1394a62897) )
+ ROM_LOAD( "M0000837 BASE (1-4002).bin", 0x00000, 0x80000, CRC(98841e5c) SHA1(3b04bc9bc170cfcc6145dc601a63bd1394a62897) )
ROM_REGION32_LE( 0x200000, "game", 0 )
- ROM_LOAD16_BYTE( "G0002142 GME1 1 of 2 (2-80).bin", 0x000000, 0x100000, CRC(704ef406) SHA1(3f8f719342874243d479011372786a9b6b14f5b1) )
- ROM_LOAD16_BYTE( "G0002142 GME2 2 of 2 (2-80).bin", 0x000001, 0x100000, CRC(3a576a75) SHA1(d2de1b61808412fb2fe68400387dcdcb7910a770) )
+ ROM_LOAD16_BYTE( "G0002142 GME1 1 of 2 (2-80).bin", 0x000000, 0x100000, CRC(704ef406) SHA1(3f8f719342874243d479011372786a9b6b14f5b1) )
+ ROM_LOAD16_BYTE( "G0002142 GME2 2 of 2 (2-80).bin", 0x000001, 0x100000, CRC(3a576a75) SHA1(d2de1b61808412fb2fe68400387dcdcb7910a770) )
ROM_REGION( 0x100000, "cg", 0 )
- ROM_LOAD16_BYTE( "C0000793 CG1 1 of 4 (2-40).bin", 0x000000, 0x80000, CRC(582137cc) SHA1(66686a2332a3844f816cf7e988a346f5f593d8f6) )
- ROM_LOAD16_BYTE( "C0000793 CG2 2 of 4 (2-40).bin", 0x000001, 0x80000, CRC(5e0b6310) SHA1(4bf718dc9859e8c10c9dca967185c57738249319) )
+ ROM_LOAD16_BYTE( "C0000793 CG1 1 of 4 (2-40).bin", 0x000000, 0x80000, CRC(582137cc) SHA1(66686a2332a3844f816cf7e988a346f5f593d8f6) )
+ ROM_LOAD16_BYTE( "C0000793 CG2 2 of 4 (2-40).bin", 0x000001, 0x80000, CRC(5e0b6310) SHA1(4bf718dc9859e8c10c9dca967185c57738249319) )
ROM_REGION( 0x200000, "plx", 0 )
- ROM_LOAD16_BYTE( "C0000793 PLX1 3 of 4 (2-80).bin", 0x000000, 0x100000, CRC(6327a76e) SHA1(01ad5747788389d3d9d71a1c37472d33db3ba5fb) )
- ROM_LOAD16_BYTE( "C0000793 PLX2 4 of 4 (2-80).bin", 0x000001, 0x100000, CRC(5a400e90) SHA1(c01be47d03e9ec418d0e4e1293fcf2c890301430) )
+ ROM_LOAD16_BYTE( "C0000793 PLX1 3 of 4 (2-80).bin", 0x000000, 0x100000, CRC(6327a76e) SHA1(01ad5747788389d3d9d71a1c37472d33db3ba5fb) )
+ ROM_LOAD16_BYTE( "C0000793 PLX2 4 of 4 (2-80).bin", 0x000001, 0x100000, CRC(5a400e90) SHA1(c01be47d03e9ec418d0e4e1293fcf2c890301430) )
ROM_REGION( 0x200000, "snd", 0 ) // same as gkigt4
- ROM_LOAD( "SWC00046 SND1 1 of 2 (2-80).rom1", 0x000000, 0x100000, CRC(8213aeac) SHA1(4beff02fed64e607270e0e8e322a96f112bd2093) )
- ROM_LOAD( "SWC00046 SND2 2 of 2 (2-80).rom2", 0x100000, 0x100000, CRC(a7ef9b46) SHA1(031373fb8e39c4ed828a58bb63a9395a205c6b6b) )
+ ROM_LOAD( "SWC00046 SND1 1 of 2 (2-80).rom1", 0x000000, 0x100000, CRC(8213aeac) SHA1(4beff02fed64e607270e0e8e322a96f112bd2093) )
+ ROM_LOAD( "SWC00046 SND2 2 of 2 (2-80).rom2", 0x100000, 0x100000, CRC(a7ef9b46) SHA1(031373fb8e39c4ed828a58bb63a9395a205c6b6b) )
ROM_END
ROM_START( gkigt43n )
ROM_REGION( 0x80000, "maincpu", 0 )
- ROM_LOAD( "M0000811 BASE (1-4002) NJ.bin", 0x00000, 0x80000, CRC(4c659923) SHA1(4624179320cb284516980e2d3caea6fd45c3f967) )
+ ROM_LOAD( "M0000811 BASE (1-4002) NJ.bin", 0x00000, 0x80000, CRC(4c659923) SHA1(4624179320cb284516980e2d3caea6fd45c3f967) )
ROM_REGION32_LE( 0x200000, "game", 0 )
- ROM_LOAD16_BYTE( "G0001624 GME1 1 of 2 (2-80) NJ.bin", 0x000000, 0x100000, CRC(4aa4139b) SHA1(c3e13c84cc13d44de90a03d0b5d45f46d4f794ce) )
- ROM_LOAD16_BYTE( "G0001624 GME2 2 of 2 (2-80) NJ.bin", 0x000001, 0x100000, CRC(5b3bb8bf) SHA1(271131f06944074bedab7fe7c80fce1e2136c385) )
+ ROM_LOAD16_BYTE( "G0001624 GME1 1 of 2 (2-80) NJ.bin", 0x000000, 0x100000, CRC(4aa4139b) SHA1(c3e13c84cc13d44de90a03d0b5d45f46d4f794ce) )
+ ROM_LOAD16_BYTE( "G0001624 GME2 2 of 2 (2-80) NJ.bin", 0x000001, 0x100000, CRC(5b3bb8bf) SHA1(271131f06944074bedab7fe7c80fce1e2136c385) )
ROM_REGION( 0x100000, "cg", 0 )
- ROM_LOAD16_BYTE( "C0000770 CG1 1 of 4 (2-40) NJ.bin", 0x000000, 0x80000, CRC(35847c45) SHA1(9f6192a9cb43df1a32d13d09248f10d62cd5ad3c) )
- ROM_LOAD16_BYTE( "C0000770 CG2 2 of 4 (2-40) NJ.bin", 0x000001, 0x80000, CRC(2207af01) SHA1(6f59d624fbbae56af081f2a2f4eb3f7a6e6c0ec1) )
+ ROM_LOAD16_BYTE( "C0000770 CG1 1 of 4 (2-40) NJ.bin", 0x000000, 0x80000, CRC(35847c45) SHA1(9f6192a9cb43df1a32d13d09248f10d62cd5ad3c) )
+ ROM_LOAD16_BYTE( "C0000770 CG2 2 of 4 (2-40) NJ.bin", 0x000001, 0x80000, CRC(2207af01) SHA1(6f59d624fbbae56af081f2a2f4eb3f7a6e6c0ec1) )
ROM_REGION( 0x200000, "plx", 0 )
- ROM_LOAD16_BYTE( "C0000770 PLX1 3 of 4 (2-80) NJ.bin", 0x000000, 0x100000, CRC(d1e673cd) SHA1(22d0234e3efb5238d60c9aab4ffc171f28f5abac) )
- ROM_LOAD16_BYTE( "C0000770 PLX2 4 of 4 (2-80) NJ.bin", 0x000001, 0x100000, CRC(d99074f3) SHA1(a5829761f558f8e543a1442128c0ae3520d42318) )
+ ROM_LOAD16_BYTE( "C0000770 PLX1 3 of 4 (2-80) NJ.bin", 0x000000, 0x100000, CRC(d1e673cd) SHA1(22d0234e3efb5238d60c9aab4ffc171f28f5abac) )
+ ROM_LOAD16_BYTE( "C0000770 PLX2 4 of 4 (2-80) NJ.bin", 0x000001, 0x100000, CRC(d99074f3) SHA1(a5829761f558f8e543a1442128c0ae3520d42318) )
ROM_REGION( 0x200000, "snd", 0 ) // same as gkigt4
- ROM_LOAD( "SWC00046 SND1 1 of 2 (2-80).rom1", 0x000000, 0x100000, CRC(8213aeac) SHA1(4beff02fed64e607270e0e8e322a96f112bd2093) )
- ROM_LOAD( "SWC00046 SND2 2 of 2 (2-80).rom2", 0x100000, 0x100000, CRC(a7ef9b46) SHA1(031373fb8e39c4ed828a58bb63a9395a205c6b6b) )
+ ROM_LOAD( "SWC00046 SND1 1 of 2 (2-80).rom1", 0x000000, 0x100000, CRC(8213aeac) SHA1(4beff02fed64e607270e0e8e322a96f112bd2093) )
+ ROM_LOAD( "SWC00046 SND2 2 of 2 (2-80).rom2", 0x100000, 0x100000, CRC(a7ef9b46) SHA1(031373fb8e39c4ed828a58bb63a9395a205c6b6b) )
ROM_END
ROM_START( gkigtez )
ROM_REGION( 0x80000, "maincpu", 0 ) // same as gkigt4ms
- ROM_LOAD( "M000526 BASE (1-4002) MS.u39", 0x00000, 0x80000, CRC(4d095df5) SHA1(bd0cdc4c1b07ef2723ba22b14abaf581b017f190) )
+ ROM_LOAD( "M000526 BASE (1-4002) MS.u39", 0x00000, 0x80000, CRC(4d095df5) SHA1(bd0cdc4c1b07ef2723ba22b14abaf581b017f190) )
ROM_REGION32_LE( 0x200000, "game", 0 )
- ROM_LOAD16_BYTE( "G0002955 GME1 1 of 2 (2-80) MS.u13", 0x000000, 0x100000, CRC(472c04a1) SHA1(00b7784d254390475c9aa1beac1700c42514cbed) )
- ROM_LOAD16_BYTE( "G0002955 GME2 2 of 2 (2-80) MS.u36", 0x000001, 0x100000, CRC(16903e65) SHA1(eb01c0f88212e8e35c35f897f17e12e859255270) )
+ ROM_LOAD16_BYTE( "G0002955 GME1 1 of 2 (2-80) MS.u13", 0x000000, 0x100000, CRC(472c04a1) SHA1(00b7784d254390475c9aa1beac1700c42514cbed) )
+ ROM_LOAD16_BYTE( "G0002955 GME2 2 of 2 (2-80) MS.u36", 0x000001, 0x100000, CRC(16903e65) SHA1(eb01c0f88212e8e35c35f897f17e12e859255270) )
ROM_REGION( 0x100000, "cg", 0 ) // same as gkigt4ms
- ROM_LOAD16_BYTE( "C000351 CG1 1 of 4 (2-40) MS.u30", 0x000000, 0x80000, CRC(2e841b28) SHA1(492b54e092b0d4028fd8edcb981bd1fd25dca47d) )
- ROM_LOAD16_BYTE( "C000351 CG2 2 of 4 (2-40) MS.u53", 0x000001, 0x80000, CRC(673fc86c) SHA1(4d844330c5602d725253b4f78781fa9e213b8556) )
+ ROM_LOAD16_BYTE( "C000351 CG1 1 of 4 (2-40) MS.u30", 0x000000, 0x80000, CRC(2e841b28) SHA1(492b54e092b0d4028fd8edcb981bd1fd25dca47d) )
+ ROM_LOAD16_BYTE( "C000351 CG2 2 of 4 (2-40) MS.u53", 0x000001, 0x80000, CRC(673fc86c) SHA1(4d844330c5602d725253b4f78781fa9e213b8556) )
ROM_REGION( 0x200000, "plx", 0 ) // same as gkigt4ms
- ROM_LOAD16_BYTE( "C000351 PXL1 3 of 4 (2-80) MS.u14", 0x000000, 0x100000, CRC(438fb625) SHA1(369c860dffa323c2e9be155da1989252f6b0e694) )
- ROM_LOAD16_BYTE( "C000351 PXL2 4 of 4 (2-80) MS.u37", 0x000001, 0x100000, CRC(22ec9c65) SHA1(bd944ae79faa8ceb73ed8f6f244fce6ff543ccd1) )
+ ROM_LOAD16_BYTE( "C000351 PXL1 3 of 4 (2-80) MS.u14", 0x000000, 0x100000, CRC(438fb625) SHA1(369c860dffa323c2e9be155da1989252f6b0e694) )
+ ROM_LOAD16_BYTE( "C000351 PXL2 4 of 4 (2-80) MS.u37", 0x000001, 0x100000, CRC(22ec9c65) SHA1(bd944ae79faa8ceb73ed8f6f244fce6ff543ccd1) )
ROM_REGION( 0x200000, "snd", 0 ) // same as gkigt4
- ROM_LOAD( "SWC00046 SND1 1 of 2 (2-80).rom1", 0x000000, 0x100000, CRC(8213aeac) SHA1(4beff02fed64e607270e0e8e322a96f112bd2093) )
- ROM_LOAD( "SWC00046 SND2 2 of 2 (2-80).rom2", 0x100000, 0x100000, CRC(a7ef9b46) SHA1(031373fb8e39c4ed828a58bb63a9395a205c6b6b) )
+ ROM_LOAD( "SWC00046 SND1 1 of 2 (2-80).rom1", 0x000000, 0x100000, CRC(8213aeac) SHA1(4beff02fed64e607270e0e8e322a96f112bd2093) )
+ ROM_LOAD( "SWC00046 SND2 2 of 2 (2-80).rom2", 0x100000, 0x100000, CRC(a7ef9b46) SHA1(031373fb8e39c4ed828a58bb63a9395a205c6b6b) )
ROM_END
ROM_START( gkigt5p )
ROM_REGION( 0x80000, "maincpu", 0 )
- ROM_LOAD( "M0000761 BASE (1-4002).bin", 0x00000, 0x80000, CRC(efac4e4f) SHA1(0cf5b3eead66a791701a504330d9154e8f4d657d) )
+ ROM_LOAD( "M0000761 BASE (1-4002).bin", 0x00000, 0x80000, CRC(efac4e4f) SHA1(0cf5b3eead66a791701a504330d9154e8f4d657d) )
ROM_REGION32_LE( 0x200000, "game", 0 )
- ROM_LOAD16_BYTE( "G0001783 GME1 1 of 2 (2-80).bin", 0x000000, 0x100000, CRC(f6672841) SHA1(1f8fe98b931e7fd67e5cd56e193c44acabcb7c0a) )
- ROM_LOAD16_BYTE( "G0001783 GME1 2 of 2 (2-80).bin", 0x000001, 0x100000, CRC(639de8c0) SHA1(ad4fb79f12bf19b4b39691cda9f5e61f32fa2dd5) )
+ ROM_LOAD16_BYTE( "G0001783 GME1 1 of 2 (2-80).bin", 0x000000, 0x100000, CRC(f6672841) SHA1(1f8fe98b931e7fd67e5cd56e193c44acabcb7c0a) )
+ ROM_LOAD16_BYTE( "G0001783 GME1 2 of 2 (2-80).bin", 0x000001, 0x100000, CRC(639de8c0) SHA1(ad4fb79f12bf19b4b39691cda9f5e61f32fa2dd5) )
ROM_REGION( 0x100000, "cg", 0 )
- ROM_LOAD16_BYTE( "C0000517 CG1 1 of 4 (2-40).bin", 0x000000, 0x80000, CRC(26db44c9) SHA1(8afe145d1fb7535c651d78b23872b71c2c946509) )
- ROM_LOAD16_BYTE( "C0000517 CG2 2 of 4 (2-40).bin", 0x000001, 0x80000, CRC(3554ba38) SHA1(6e0b8506943559dbee4cfa7c9e4b60590c6529fb) )
+ ROM_LOAD16_BYTE( "C0000517 CG1 1 of 4 (2-40).bin", 0x000000, 0x80000, CRC(26db44c9) SHA1(8afe145d1fb7535c651d78b23872b71c2c946509) )
+ ROM_LOAD16_BYTE( "C0000517 CG2 2 of 4 (2-40).bin", 0x000001, 0x80000, CRC(3554ba38) SHA1(6e0b8506943559dbee4cfa7c9e4b60590c6529fb) )
ROM_REGION( 0x200000, "plx", 0 )
- ROM_LOAD16_BYTE( "C0000517 PLX1 3 of 4 (2-80).bin", 0x000000, 0x100000, CRC(956ba40c) SHA1(7d8ae934ef663ea6b3f342455d1e8c70a1ca4581) )
- ROM_LOAD16_BYTE( "C0000517 PLX2 4 of 4 (2-80).bin", 0x000001, 0x100000, CRC(dff43975) SHA1(e1ca212e4e51175bcbab2af447863605f74ba77f) )
+ ROM_LOAD16_BYTE( "C0000517 PLX1 3 of 4 (2-80).bin", 0x000000, 0x100000, CRC(956ba40c) SHA1(7d8ae934ef663ea6b3f342455d1e8c70a1ca4581) )
+ ROM_LOAD16_BYTE( "C0000517 PLX2 4 of 4 (2-80).bin", 0x000001, 0x100000, CRC(dff43975) SHA1(e1ca212e4e51175bcbab2af447863605f74ba77f) )
ROM_REGION( 0x200000, "snd", 0 ) // same as gkigt4
- ROM_LOAD( "SWC00046 SND1 1 of 2 (2-80).rom1", 0x000000, 0x100000, CRC(8213aeac) SHA1(4beff02fed64e607270e0e8e322a96f112bd2093) )
- ROM_LOAD( "SWC00046 SND2 2 of 2 (2-80).rom2", 0x100000, 0x100000, CRC(a7ef9b46) SHA1(031373fb8e39c4ed828a58bb63a9395a205c6b6b) )
+ ROM_LOAD( "SWC00046 SND1 1 of 2 (2-80).rom1", 0x000000, 0x100000, CRC(8213aeac) SHA1(4beff02fed64e607270e0e8e322a96f112bd2093) )
+ ROM_LOAD( "SWC00046 SND2 2 of 2 (2-80).rom2", 0x100000, 0x100000, CRC(a7ef9b46) SHA1(031373fb8e39c4ed828a58bb63a9395a205c6b6b) )
ROM_END
ROM_START( igtsc )
ROM_REGION( 0x80000, "maincpu", 0 )
- ROM_LOAD( "I0000838 BASE (1-4002).bin", 0x00000, 0x80000, CRC(7b66f0d5) SHA1(a13e7fa4062668ff7acb15e58025eeb401754898) )
+ ROM_LOAD( "I0000838 BASE (1-4002).bin", 0x00000, 0x80000, CRC(7b66f0d5) SHA1(a13e7fa4062668ff7acb15e58025eeb401754898) )
ROM_REGION32_LE( 0x200000, "game", 0 )
- ROM_LOAD16_BYTE( "G0001175 GME1 1 of 2 (2-80).bin", 0x000000, 0x100000, CRC(674e0172) SHA1(e7bfe13781988b9193f22ad93502e303ba9427eb) )
- ROM_LOAD16_BYTE( "G0001175 GME2 2 of 2 (2-80).bin", 0x000001, 0x100000, CRC(db76db22) SHA1(e389b11a05f0ef0dcee303ba91578f4cd56beba0) )
+ ROM_LOAD16_BYTE( "G0001175 GME1 1 of 2 (2-80).bin", 0x000000, 0x100000, CRC(674e0172) SHA1(e7bfe13781988b9193f22ad93502e303ba9427eb) )
+ ROM_LOAD16_BYTE( "G0001175 GME2 2 of 2 (2-80).bin", 0x000001, 0x100000, CRC(db76db22) SHA1(e389b11a05f0ef0dcee303ba91578f4cd56beba0) )
// all these SIMM files are bad dumps, they never contains the byte value 0x0d (uploaded in ASCII mode with carriage return stripped out?)
ROM_REGION( 0x0800000, "cg", 0 )
@@ -353,8 +374,8 @@ ROM_END
ROM_START( gkkey )
ROM_REGION( 0x80000, "maincpu", 0 )
- ROM_LOAD( "KEY00017 (1-4002).bin", 0x00000, 0x80000, CRC(1579739f) SHA1(7b6257d17f74599a4ada3014d02a2e7c6686ab3f) )
- ROM_LOAD( "KEY00028 (1-4002).bin", 0x00000, 0x80000, CRC(bf06b98b) SHA1(5c46afb560bb5c0f7540b714c0dea851c6b18fe6) )
+ ROM_LOAD( "KEY00017 (1-4002).bin", 0x00000, 0x80000, CRC(1579739f) SHA1(7b6257d17f74599a4ada3014d02a2e7c6686ab3f) )
+ ROM_LOAD( "KEY00028 (1-4002).bin", 0x00000, 0x80000, CRC(bf06b98b) SHA1(5c46afb560bb5c0f7540b714c0dea851c6b18fe6) )
ROM_REGION( 0x80000, "miscbad", 0 )
// these are also bad dumps, again they never contains the byte value 0x0d (uploaded in ASCII mode with carriage return stripped out?)
@@ -369,6 +390,7 @@ ROM_START( gkkey )
ROM_END
+GAME( 1994, ms72c, 0, igt_gameking, igt_gameking, driver_device, 0, ROT0, "IGT", "Multistar 7 2c", MACHINE_NOT_WORKING | MACHINE_NO_SOUND )
GAME( 2003, gkigt4, 0, igt_gameking, igt_gameking, driver_device, 0, ROT0, "IGT", "Game King (v4.x)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND )
GAME( 2003, gkigt4ms, gkigt4, igt_gameking, igt_gameking, driver_device, 0, ROT0, "IGT", "Game King (v4.x, MS)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND )
GAME( 2003, gkigt43, gkigt4, igt_gameking, igt_gameking, driver_device, 0, ROT0, "IGT", "Game King (v4.3)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND )
@@ -377,4 +399,3 @@ GAME( 2003, gkigtez, gkigt4, igt_gameking, igt_gameking, driver_device,
GAME( 2003, gkigt5p, gkigt4, igt_gameking, igt_gameking, driver_device, 0, ROT0, "IGT", "Game King (Triple-Five Play)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND )
GAME( 2003, igtsc, 0, igt_gameking, igt_gameking, driver_device, 0, ROT0, "IGT", "Super Cherry", MACHINE_NOT_WORKING | MACHINE_NO_SOUND ) // SIMM dumps are bad.
GAME( 2003, gkkey, 0, igt_gameking, igt_gameking, driver_device, 0, ROT0, "IGT", "Game King (Set Chips)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND ) // only 2 are good dumps
-
diff --git a/src/mame/drivers/glasgow.cpp b/src/mame/drivers/glasgow.cpp
index c46ef03ae1c..d34fb059961 100644
--- a/src/mame/drivers/glasgow.cpp
+++ b/src/mame/drivers/glasgow.cpp
@@ -298,7 +298,6 @@ void glasgow_state::machine_start()
mboard_key_selector = 0;
m_irq_flag = 0;
m_lcd_shift_counter = 3;
- m_beep->set_frequency(44);
mboard_savestate_register();
}
@@ -307,7 +306,6 @@ void glasgow_state::machine_start()
MACHINE_START_MEMBER(glasgow_state,dallas32)
{
m_lcd_shift_counter = 3;
- m_beep->set_frequency(44);
mboard_savestate_register();
}
@@ -422,7 +420,7 @@ static MACHINE_CONFIG_START( glasgow, glasgow_state )
MCFG_CPU_ADD("maincpu", M68000, 12000000)
MCFG_CPU_PROGRAM_MAP(glasgow_mem)
MCFG_SPEAKER_STANDARD_MONO("mono")
- MCFG_SOUND_ADD("beeper", BEEP, 0)
+ MCFG_SOUND_ADD("beeper", BEEP, 44)
MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.50)
MCFG_TIMER_DRIVER_ADD_PERIODIC("nmi_timer", glasgow_state, update_nmi, attotime::from_hz(50))
diff --git a/src/mame/drivers/glass.cpp b/src/mame/drivers/glass.cpp
index 504874be32d..54304712b71 100644
--- a/src/mame/drivers/glass.cpp
+++ b/src/mame/drivers/glass.cpp
@@ -223,6 +223,9 @@ ROM_START( glass ) /* Version 1.1 */
ROM_LOAD16_BYTE( "1.c23", 0x000000, 0x040000, CRC(aeebd4ed) SHA1(04759dc146dff0fc74b78d70e79dfaebe68328f9) )
ROM_LOAD16_BYTE( "2.c22", 0x000001, 0x040000, CRC(165e2e01) SHA1(180a2e2b5151f2321d85ac23eff7fbc9f52023a5) )
+ ROM_REGION( 0x10000, "mcu", 0 ) /* DS5002FP code */
+ ROM_LOAD( "glass_ds5002fp.bin", 0x00000, 0x8000, NO_DUMP )
+
ROM_REGION( 0x400000, "gfx1", ROMREGION_ERASE00 ) /* Graphics */
/* 0x000000-0x3fffff filled in later in the DRIVER_INIT */
@@ -244,6 +247,9 @@ ROM_START( glass10 ) /* Version 1.0 */
ROM_LOAD16_BYTE( "c23.bin", 0x000000, 0x040000, CRC(688cdf33) SHA1(b59dcc3fc15f72037692b745927b110e97d8282e) )
ROM_LOAD16_BYTE( "c22.bin", 0x000001, 0x040000, CRC(ab17c992) SHA1(1509b5b4bbfb4e022e0ab6fbbc0ffc070adfa531) )
+ ROM_REGION( 0x10000, "mcu", 0 ) /* DS5002FP code */
+ ROM_LOAD( "glass_ds5002fp.bin", 0x00000, 0x8000, NO_DUMP )
+
ROM_REGION( 0x400000, "gfx1", ROMREGION_ERASE00 ) /* Graphics */
/* 0x000000-0x3fffff filled in later in the DRIVER_INIT */
@@ -265,6 +271,9 @@ ROM_START( glass10a ) /* Title screen shows "GLASS" and under that "Break Editio
ROM_LOAD16_BYTE( "spl-c23.bin", 0x000000, 0x040000, CRC(c1393bea) SHA1(a5f877ba38305a7b49fa3c96b9344cbf71e8c9ef) )
ROM_LOAD16_BYTE( "spl-c22.bin", 0x000001, 0x040000, CRC(0d6fa33e) SHA1(37e9258ef7e108d034c80abc8e5e5ab6dacf0a61) )
+ ROM_REGION( 0x10000, "mcu", 0 ) /* DS5002FP code */
+ ROM_LOAD( "glass_ds5002fp.bin", 0x00000, 0x8000, NO_DUMP )
+
ROM_REGION( 0x400000, "gfx1", ROMREGION_ERASE00 ) /* Graphics */
/* 0x000000-0x3fffff filled in later in the DRIVER_INIT */
diff --git a/src/mame/drivers/goupil.cpp b/src/mame/drivers/goupil.cpp
new file mode 100644
index 00000000000..d1bdabb186d
--- /dev/null
+++ b/src/mame/drivers/goupil.cpp
@@ -0,0 +1,511 @@
+// license:BSD-3-Clause
+// copyright-holders:Jean-François DEL NERO
+/***************************************************************************
+
+ SMT Goupil G1 driver
+
+ Current state :
+
+ -> CPU / ROM / RAM working
+ -> Video output working
+ -> Keyboard support working (need to be polished... )
+ -> Floppy FDC not fully implemented.
+ -> Sound support missing.
+
+ Software :
+ -> The Monitor is working
+ -> The internal Basic is working (-> 6800 0xC3 illegal opcode emulation needed).
+
+ 02/04/2016
+ Jean-François DEL NERO
+
+****************************************************************************/
+
+#include "emu.h"
+#include "cpu/m6800/m6800.h"
+#include "machine/6522via.h"
+#include "machine/i8279.h"
+#include "video/ef9364.h"
+#include "video/mc6845.h"
+#include "machine/6850acia.h"
+#include "machine/wd_fdc.h"
+
+#include "softlist.h"
+
+#define MAIN_CLOCK XTAL_4MHz
+#define VIDEO_CLOCK MAIN_CLOCK / 8 /* 1.75 Mhz */
+#define CPU_CLOCK MAIN_CLOCK / 4 /* 1 Mhz */
+
+class goupil_g1_state : public driver_device
+{
+public:
+ goupil_g1_state(const machine_config &mconfig, device_type type, const char *tag)
+ : driver_device(mconfig, type, tag)
+ , m_acia(*this, "ef6850")
+ , m_ef9364(*this, "ef9364")
+ , m_maincpu(*this, "maincpu")
+ , m_via_video(*this, "m_via_video")
+ , m_via_keyb(*this, "m_via_keyb")
+ , m_via_modem(*this, "m_via_modem")
+ , m_fdc(*this, "fd1791")
+ , m_floppy0(*this, "fd1791:0")
+ , m_floppy1(*this, "fd1791:1")
+ , m_floppy(NULL)
+ { }
+
+ DECLARE_WRITE8_MEMBER(via_video_pba_w);
+ DECLARE_WRITE8_MEMBER(via_video_pbb_w);
+ DECLARE_WRITE_LINE_MEMBER(via_video_ca2_w);
+
+ DECLARE_READ8_MEMBER(kbd1_r);
+ DECLARE_READ8_MEMBER(kbd2_r);
+ DECLARE_READ8_MEMBER(shift_kb1_r);
+ DECLARE_READ8_MEMBER(shift_kb2_r);
+ DECLARE_READ8_MEMBER(ctrl_kb1_r);
+ DECLARE_READ8_MEMBER(ctrl_kb2_r);
+
+ DECLARE_WRITE8_MEMBER(scanlines_kbd1_w);
+ DECLARE_WRITE8_MEMBER(scanlines_kbd2_w);
+
+ DECLARE_READ_LINE_MEMBER(via_keyb_ca2_r);
+
+ virtual void machine_start() override;
+ virtual void machine_reset() override;
+
+ UINT8 m_row_kbd1;
+ UINT8 m_row_kbd2;
+ int old_state_ca2;
+ UINT8 via_video_pbb_data;
+ UINT8 cnttim;
+ UINT8 valkeyb;
+ TIMER_DEVICE_CALLBACK_MEMBER(goupil_scanline);
+
+private:
+ required_device<acia6850_device> m_acia;
+ required_device<ef9364_device> m_ef9364;
+ required_device<cpu_device> m_maincpu;
+ required_device<via6522_device> m_via_video;
+ required_device<via6522_device> m_via_keyb;
+ required_device<via6522_device> m_via_modem;
+ required_device<fd1791_t> m_fdc;
+ required_device<floppy_connector> m_floppy0;
+ required_device<floppy_connector> m_floppy1;
+ floppy_image_device *m_floppy;
+};
+
+/**********************************
+* Floppy controller I/O Handlers *
+***********************************/
+// TODO
+
+/**********************************
+* Keyboard I/O Handlers *
+***********************************/
+
+TIMER_DEVICE_CALLBACK_MEMBER( goupil_g1_state::goupil_scanline )
+{
+ m_ef9364->update_scanline((UINT16)param);
+}
+
+static ADDRESS_MAP_START(goupil_mem, AS_PROGRAM, 8, goupil_g1_state)
+ ADDRESS_MAP_UNMAP_HIGH
+ AM_RANGE(0x0000,0x3fff) AM_RAM
+ AM_RANGE(0x4000,0x7fff) AM_RAM
+ AM_RANGE(0xC000,0xE3FF) AM_ROM AM_REGION("maincpu", 0x1000) // Basic ROM (BASIC 1 up to BASIC 9).
+
+ AM_RANGE(0xe400,0xe7ff) AM_RAM
+ AM_RANGE(0xE800,0xE80F) AM_DEVREADWRITE("ef6850", acia6850_device, data_r, data_w)
+ AM_RANGE(0xE810,0xE81F) AM_DEVREADWRITE("m_via_video", via6522_device, read, write)
+
+ AM_RANGE(0xE820,0xE820) AM_DEVREADWRITE("i8279_kb1", i8279_device, data_r, data_w )
+ AM_RANGE(0xE821,0xE821) AM_DEVREADWRITE("i8279_kb1", i8279_device, status_r, cmd_w )
+
+ AM_RANGE(0xE830,0xE830) AM_DEVREADWRITE("i8279_kb2", i8279_device, data_r, data_w )
+ AM_RANGE(0xE831,0xE831) AM_DEVREADWRITE("i8279_kb2", i8279_device, status_r, cmd_w )
+
+ AM_RANGE(0xE840,0xE84F) AM_DEVREADWRITE("m_via_keyb", via6522_device, read, write)
+
+ AM_RANGE(0xE860,0xE86F) AM_DEVREADWRITE("m_via_modem", via6522_device, read, write)
+
+ AM_RANGE(0xe8f0,0xe8ff) AM_DEVREADWRITE("fd1791", fd1791_t, read, write)
+ //AM_RANGE(0xf08a,0xf08a) AM_READWRITE( fdc_sel0_r, fdc_sel0_w )
+ //AM_RANGE(0xf08b,0xf08b) AM_READWRITE( fdc_sel1_r, fdc_sel1_w )
+
+ AM_RANGE(0xf400,0xf7ff) AM_ROM AM_REGION("maincpu", 0x0800) // Modem (MOD 3)
+ AM_RANGE(0xf800,0xffff) AM_ROM AM_REGION("maincpu", 0x0000) // Monitor (MON 1 + MON 2)
+ADDRESS_MAP_END
+
+static ADDRESS_MAP_START( goupil_io, AS_IO, 8, goupil_g1_state)
+ ADDRESS_MAP_UNMAP_HIGH
+ADDRESS_MAP_END
+
+WRITE8_MEMBER( goupil_g1_state::scanlines_kbd1_w )
+{
+ m_row_kbd1 = data;
+}
+
+READ8_MEMBER( goupil_g1_state::ctrl_kb1_r )
+{
+ char kbdrow[6];
+ unsigned char data;
+
+ kbdrow[0] = 'C';
+ kbdrow[1] = 'T';
+ kbdrow[2] = 'R';
+ kbdrow[3] = '0';
+ kbdrow[4] = 0;
+
+ data = ioport(kbdrow)->read();
+ if( data & 0x02 )
+ return 1;
+ else
+ return 0;
+}
+
+READ8_MEMBER( goupil_g1_state::ctrl_kb2_r )
+{
+ return 1;
+}
+
+READ8_MEMBER( goupil_g1_state::shift_kb1_r )
+{
+ char kbdrow[6];
+ unsigned char data;
+
+ kbdrow[0] = 'C';
+ kbdrow[1] = 'T';
+ kbdrow[2] = 'R';
+ kbdrow[3] = '0';
+ kbdrow[4] = 0;
+
+ data = ioport(kbdrow)->read();
+ if( data & 0x01 )
+ return 1;
+ else
+ return 0;
+}
+
+READ8_MEMBER( goupil_g1_state::shift_kb2_r )
+{
+ return 1;
+}
+
+READ8_MEMBER( goupil_g1_state::kbd1_r )
+{
+ char kbdrow[6];
+ UINT8 data = 0xff;
+
+ kbdrow[0] = 'A';
+ kbdrow[1] = 'X';
+ kbdrow[2] = '0' + ( m_row_kbd1 & 7 ) ;
+ kbdrow[3] = 0;
+
+ data = ioport(kbdrow)->read();
+
+ return data;
+}
+
+WRITE8_MEMBER( goupil_g1_state::scanlines_kbd2_w )
+{
+ m_row_kbd2 = data & 7;
+}
+
+READ_LINE_MEMBER( goupil_g1_state::via_keyb_ca2_r )
+{
+ return 0;
+}
+
+READ8_MEMBER( goupil_g1_state::kbd2_r )
+{
+ char kbdrow[6];
+ UINT8 data = 0xff;
+
+ kbdrow[0] = 'B';
+ kbdrow[1] = 'X';
+ kbdrow[2] = '0' + ( m_row_kbd2 & 7 ) ;
+ kbdrow[3] = 0;
+
+ data = ioport(kbdrow)->read();
+
+ return data;
+}
+
+/* Input ports */
+static INPUT_PORTS_START( goupil_g1 )
+ PORT_START("AX0")
+ PORT_BIT(0x01, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_CODE(KEYCODE_Z) PORT_CHAR('z') PORT_CHAR('Z')
+ PORT_BIT(0x02, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_CODE(KEYCODE_D) PORT_CHAR('d') PORT_CHAR('D')
+ PORT_BIT(0x04, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_CODE(KEYCODE_E) PORT_CHAR('e') PORT_CHAR('E')
+ PORT_BIT(0x08, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_CODE(KEYCODE_S) PORT_CHAR('s') PORT_CHAR('S')
+ PORT_BIT(0x10, IP_ACTIVE_LOW, IPT_UNUSED)
+ PORT_BIT(0x20, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_CODE(KEYCODE_C) PORT_CHAR('c') PORT_CHAR('C')
+ PORT_BIT(0x40, IP_ACTIVE_LOW, IPT_UNUSED)
+ PORT_BIT(0x80, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_CODE(KEYCODE_X) PORT_CHAR('x') PORT_CHAR('X')
+ PORT_START("AX1")
+ PORT_BIT(0x01, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_CODE(KEYCODE_R) PORT_CHAR('r') PORT_CHAR('R')
+ PORT_BIT(0x02, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_CODE(KEYCODE_G) PORT_CHAR('g') PORT_CHAR('G')
+ PORT_BIT(0x04, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_CODE(KEYCODE_T) PORT_CHAR('t') PORT_CHAR('T')
+ PORT_BIT(0x08, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_CODE(KEYCODE_F) PORT_CHAR('f') PORT_CHAR('F')
+ PORT_BIT(0x10, IP_ACTIVE_LOW, IPT_UNUSED)
+ PORT_BIT(0x20, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_CODE(KEYCODE_B) PORT_CHAR('b') PORT_CHAR('B')
+ PORT_BIT(0x40, IP_ACTIVE_LOW, IPT_UNUSED)
+ PORT_BIT(0x80, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_CODE(KEYCODE_V) PORT_CHAR('v') PORT_CHAR('V')
+ PORT_START("AX2")
+ PORT_BIT(0x01, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_CODE(KEYCODE_Y) PORT_CHAR('y') PORT_CHAR('Y')
+ PORT_BIT(0x02, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_CODE(KEYCODE_J) PORT_CHAR('j') PORT_CHAR('J')
+ PORT_BIT(0x04, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_CODE(KEYCODE_U) PORT_CHAR('u') PORT_CHAR('U')
+ PORT_BIT(0x08, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_CODE(KEYCODE_H) PORT_CHAR('h') PORT_CHAR('H')
+ PORT_BIT(0x10, IP_ACTIVE_LOW, IPT_UNUSED)
+ PORT_BIT(0x20, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_CODE(KEYCODE_COMMA) PORT_CHAR(',') PORT_CHAR('?')
+ PORT_BIT(0x40, IP_ACTIVE_LOW, IPT_UNUSED)
+ PORT_BIT(0x80, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_CODE(KEYCODE_N) PORT_CHAR('n') PORT_CHAR('N')
+ PORT_START("AX3")
+ PORT_BIT(0x01, IP_ACTIVE_LOW, IPT_UNUSED)
+ PORT_BIT(0x02, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_CODE(KEYCODE_Q) PORT_CHAR('q') PORT_CHAR('Q')
+ PORT_BIT(0x04, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_CODE(KEYCODE_A) PORT_CHAR('a') PORT_CHAR('A')
+ PORT_BIT(0x08, IP_ACTIVE_LOW, IPT_UNUSED)
+ PORT_BIT(0x10, IP_ACTIVE_LOW, IPT_UNUSED)
+ PORT_BIT(0x20, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_CODE(KEYCODE_W) PORT_CHAR('w') PORT_CHAR('W')
+ PORT_BIT(0x40, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_CODE(KEYCODE_F2)
+ PORT_BIT(0x80, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_CODE(KEYCODE_F3)
+ PORT_START("AX4")
+ PORT_BIT(0x01, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_CODE(KEYCODE_I) PORT_CHAR('i') PORT_CHAR('I')
+ PORT_BIT(0x02, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_CODE(KEYCODE_L) PORT_CHAR('l') PORT_CHAR('L')
+ PORT_BIT(0x04, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_CODE(KEYCODE_O) PORT_CHAR('o') PORT_CHAR('O')
+ PORT_BIT(0x08, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_CODE(KEYCODE_K) PORT_CHAR('k') PORT_CHAR('K')
+ PORT_BIT(0x10, IP_ACTIVE_LOW, IPT_UNUSED)
+ PORT_BIT(0x20, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_CODE(KEYCODE_STOP) PORT_CHAR(':') PORT_CHAR('/')
+ PORT_BIT(0x40, IP_ACTIVE_LOW, IPT_UNUSED)
+ PORT_BIT(0x80, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_CODE(KEYCODE_COLON) PORT_CHAR(';') PORT_CHAR('.')
+ PORT_START("AX5")
+ PORT_BIT(0x01, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("TAB") PORT_CODE(KEYCODE_TAB) PORT_CHAR(UCHAR_MAMEKEY(TAB))
+ PORT_BIT(0x02, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("Return") PORT_CODE(KEYCODE_ENTER) PORT_CHAR(13)
+ PORT_BIT(0x04, IP_ACTIVE_LOW, IPT_UNUSED)
+ PORT_BIT(0x08, IP_ACTIVE_LOW, IPT_UNUSED)
+ PORT_BIT(0x10, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("BS") PORT_CODE(KEYCODE_BACKSPACE) PORT_CHAR(8)
+ PORT_BIT(0x20, IP_ACTIVE_LOW, IPT_UNUSED)
+ PORT_BIT(0x40, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_CODE(KEYCODE_MINUS) PORT_CHAR('-') PORT_CHAR('_')
+ PORT_BIT(0x80, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_CODE(KEYCODE_SPACE) PORT_CHAR(' ')
+ PORT_START("AX6")
+ PORT_BIT(0x01, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_CODE(KEYCODE_P) PORT_CHAR('p') PORT_CHAR('P')
+ PORT_BIT(0x02, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_CODE(KEYCODE_QUOTE) PORT_CHAR(0x00F9) PORT_CHAR('%')
+ PORT_BIT(0x04, IP_ACTIVE_LOW, IPT_UNUSED)
+ PORT_BIT(0x08, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_CODE(KEYCODE_M) PORT_CHAR('m') PORT_CHAR('M')
+ PORT_BIT(0x10, IP_ACTIVE_LOW, IPT_UNUSED)
+ PORT_BIT(0x20, IP_ACTIVE_LOW, IPT_UNUSED)
+ PORT_BIT(0x40, IP_ACTIVE_LOW, IPT_UNUSED)
+ PORT_BIT(0x80, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_CODE(KEYCODE_EQUALS) PORT_CHAR('=') PORT_CHAR('+')
+ PORT_START("AX7")
+ PORT_BIT(0x01, IP_ACTIVE_LOW, IPT_UNUSED)
+ PORT_BIT(0x02, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_CODE(KEYCODE_F1)
+ PORT_BIT(0x04, IP_ACTIVE_LOW, IPT_UNUSED)
+ PORT_BIT(0x08, IP_ACTIVE_LOW, IPT_UNUSED)
+ PORT_BIT(0x10, IP_ACTIVE_LOW, IPT_UNUSED)
+ PORT_BIT(0x20, IP_ACTIVE_LOW, IPT_UNUSED)
+ PORT_BIT(0x40, IP_ACTIVE_LOW, IPT_UNUSED)
+ PORT_BIT(0x80, IP_ACTIVE_LOW, IPT_UNUSED)
+
+ PORT_START("CTR0")
+ PORT_BIT(0x01, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("Shift") PORT_CODE(KEYCODE_LSHIFT)
+ PORT_BIT(0x02, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("Ctrl") PORT_CODE(KEYCODE_LCONTROL) PORT_CHAR(UCHAR_SHIFT_2)
+
+ PORT_START("BX0")
+ PORT_BIT(0x01, IP_ACTIVE_LOW, IPT_UNUSED)
+ PORT_BIT(0x02, IP_ACTIVE_LOW, IPT_UNUSED)
+ PORT_BIT(0x04, IP_ACTIVE_LOW, IPT_UNUSED)
+ PORT_BIT(0x08, IP_ACTIVE_LOW, IPT_UNUSED)
+ PORT_BIT(0x10, IP_ACTIVE_LOW, IPT_UNUSED)
+ PORT_BIT(0x20, IP_ACTIVE_LOW, IPT_UNUSED)
+ PORT_BIT(0x40, IP_ACTIVE_LOW, IPT_UNUSED)
+ PORT_BIT(0x80, IP_ACTIVE_LOW, IPT_UNUSED)
+ PORT_START("BX1")
+ PORT_BIT(0x01, IP_ACTIVE_LOW, IPT_UNUSED)
+ PORT_BIT(0x02, IP_ACTIVE_LOW, IPT_UNUSED)
+ PORT_BIT(0x04, IP_ACTIVE_LOW, IPT_UNUSED)
+ PORT_BIT(0x08, IP_ACTIVE_LOW, IPT_UNUSED)
+ PORT_BIT(0x10, IP_ACTIVE_LOW, IPT_UNUSED)
+ PORT_BIT(0x20, IP_ACTIVE_LOW, IPT_UNUSED)
+ PORT_BIT(0x40, IP_ACTIVE_LOW, IPT_UNUSED)
+ PORT_BIT(0x80, IP_ACTIVE_LOW, IPT_UNUSED)
+ PORT_START("BX2")
+ PORT_BIT(0x01, IP_ACTIVE_LOW, IPT_UNUSED)
+ PORT_BIT(0x02, IP_ACTIVE_LOW, IPT_UNUSED)
+ PORT_BIT(0x04, IP_ACTIVE_LOW, IPT_UNUSED)
+ PORT_BIT(0x08, IP_ACTIVE_LOW, IPT_UNUSED)
+ PORT_BIT(0x10, IP_ACTIVE_LOW, IPT_UNUSED)
+ PORT_BIT(0x20, IP_ACTIVE_LOW, IPT_UNUSED)
+ PORT_BIT(0x40, IP_ACTIVE_LOW, IPT_UNUSED)
+ PORT_BIT(0x80, IP_ACTIVE_LOW, IPT_UNUSED)
+ PORT_START("BX3")
+ PORT_BIT(0x01, IP_ACTIVE_LOW, IPT_UNUSED)
+ PORT_BIT(0x02, IP_ACTIVE_LOW, IPT_UNUSED)
+ PORT_BIT(0x04, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_CODE(KEYCODE_1) PORT_CHAR('1')
+ PORT_BIT(0x08, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_CODE(KEYCODE_4) PORT_CHAR('4')
+ PORT_BIT(0x10, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_CODE(KEYCODE_0) PORT_CHAR('0')
+ PORT_BIT(0x20, IP_ACTIVE_LOW, IPT_UNUSED)
+ PORT_BIT(0x40, IP_ACTIVE_LOW, IPT_UNUSED)
+ PORT_BIT(0x80, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_CODE(KEYCODE_7) PORT_CHAR('7')
+ PORT_START("BX4")
+ PORT_BIT(0x01, IP_ACTIVE_LOW, IPT_UNUSED)
+ PORT_BIT(0x02, IP_ACTIVE_LOW, IPT_UNUSED)
+ PORT_BIT(0x04, IP_ACTIVE_LOW, IPT_UNUSED)
+ PORT_BIT(0x08, IP_ACTIVE_LOW, IPT_UNUSED)
+ PORT_BIT(0x10, IP_ACTIVE_LOW, IPT_UNUSED)
+ PORT_BIT(0x20, IP_ACTIVE_LOW, IPT_UNUSED)
+ PORT_BIT(0x40, IP_ACTIVE_LOW, IPT_UNUSED)
+ PORT_BIT(0x80, IP_ACTIVE_LOW, IPT_UNUSED)
+ PORT_START("BX5")
+ PORT_BIT(0x01, IP_ACTIVE_LOW, IPT_UNUSED)
+ PORT_BIT(0x02, IP_ACTIVE_LOW, IPT_UNUSED)
+ PORT_BIT(0x04, IP_ACTIVE_LOW, IPT_UNUSED)
+ PORT_BIT(0x08, IP_ACTIVE_LOW, IPT_UNUSED)
+ PORT_BIT(0x10, IP_ACTIVE_LOW, IPT_UNUSED)
+ PORT_BIT(0x20, IP_ACTIVE_LOW, IPT_UNUSED)
+ PORT_BIT(0x40, IP_ACTIVE_LOW, IPT_UNUSED)
+ PORT_BIT(0x80, IP_ACTIVE_LOW, IPT_UNUSED)
+ PORT_START("BX6")
+ PORT_BIT(0x01, IP_ACTIVE_LOW, IPT_UNUSED)
+ PORT_BIT(0x02, IP_ACTIVE_LOW, IPT_UNUSED)
+ PORT_BIT(0x04, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_CODE(KEYCODE_3) PORT_CHAR('3')
+ PORT_BIT(0x08, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_CODE(KEYCODE_6) PORT_CHAR('6')
+ PORT_BIT(0x10, IP_ACTIVE_LOW, IPT_UNUSED)
+ PORT_BIT(0x20, IP_ACTIVE_LOW, IPT_UNUSED)
+ PORT_BIT(0x40, IP_ACTIVE_LOW, IPT_UNUSED)
+ PORT_BIT(0x80, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_CODE(KEYCODE_9) PORT_CHAR('9')
+ PORT_START("BX7")
+ PORT_BIT(0x01, IP_ACTIVE_LOW, IPT_UNUSED)
+ PORT_BIT(0x02, IP_ACTIVE_LOW, IPT_UNUSED)
+ PORT_BIT(0x04, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_CODE(KEYCODE_2) PORT_CHAR('2')
+ PORT_BIT(0x08, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_CODE(KEYCODE_5) PORT_CHAR('5')
+ PORT_BIT(0x10, IP_ACTIVE_LOW, IPT_UNUSED)
+ PORT_BIT(0x20, IP_ACTIVE_LOW, IPT_UNUSED)
+ PORT_BIT(0x40, IP_ACTIVE_LOW, IPT_UNUSED)
+ PORT_BIT(0x80, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_CODE(KEYCODE_8) PORT_CHAR('8')
+INPUT_PORTS_END
+
+static SLOT_INTERFACE_START( goupil_floppies )
+ SLOT_INTERFACE( "525qd", FLOPPY_525_QD )
+SLOT_INTERFACE_END
+
+void goupil_g1_state::machine_start()
+{
+ std::string region_tag;
+
+ m_floppy = NULL;
+ valkeyb = 0xFF;
+}
+
+void goupil_g1_state::machine_reset()
+{
+}
+
+WRITE8_MEMBER(goupil_g1_state::via_video_pba_w)
+{
+ #ifdef DBGMODE
+ printf("%s: write via_video_pba_w reg : 0x%X\n",machine().describe_context(),data);
+ #endif
+ m_ef9364->char_latch_w(data);
+}
+
+WRITE8_MEMBER(goupil_g1_state::via_video_pbb_w)
+{
+ #ifdef DBGMODE
+ printf("%s: write via_video_pbb_w reg : 0x%X\n",machine().describe_context(),data);
+ #endif
+ via_video_pbb_data = data;
+}
+
+WRITE_LINE_MEMBER( goupil_g1_state::via_video_ca2_w )
+{
+ if(old_state_ca2==0 && state==1)
+ {
+ m_ef9364->command_w(via_video_pbb_data&0xF);
+ }
+ old_state_ca2 = state;
+}
+
+static MACHINE_CONFIG_START( goupil_g1, goupil_g1_state )
+ /* basic machine hardware */
+ MCFG_CPU_ADD("maincpu",M6808, CPU_CLOCK)
+ MCFG_CPU_PROGRAM_MAP(goupil_mem)
+ MCFG_CPU_IO_MAP(goupil_io)
+
+ /* sound hardware */
+ // TODO !
+
+ MCFG_DEVICE_ADD ("ef6850", ACIA6850, 0)
+
+ /* screen */
+ MCFG_SCREEN_ADD("screen", RASTER)
+ MCFG_SCREEN_REFRESH_RATE(50)
+ MCFG_SCREEN_UPDATE_DEVICE("ef9364", ef9364_device, screen_update)
+
+ MCFG_SCREEN_SIZE((64*8), (16*(8+4)))
+ MCFG_SCREEN_VISIBLE_AREA(0, (64*8)-1, 0, (16*(8+4))-1)
+ MCFG_PALETTE_ADD("palette", 16)
+
+ MCFG_DEVICE_ADD("ef9364", EF9364, VIDEO_CLOCK)
+ MCFG_EF9364_PALETTE("palette")
+ MCFG_EF9364_PAGES_CNT(1);
+ MCFG_TIMER_DRIVER_ADD_SCANLINE("goupil_sl", goupil_g1_state, goupil_scanline, "screen", 0, 10)
+
+ MCFG_DEVICE_ADD("m_via_video", VIA6522, 0)
+ MCFG_VIA6522_WRITEPA_HANDLER(WRITE8(goupil_g1_state, via_video_pba_w))
+ MCFG_VIA6522_WRITEPB_HANDLER(WRITE8(goupil_g1_state, via_video_pbb_w))
+ MCFG_VIA6522_CA2_HANDLER(WRITELINE(goupil_g1_state, via_video_ca2_w))
+
+ MCFG_DEVICE_ADD("m_via_keyb", VIA6522, 0)
+ MCFG_VIA6522_IRQ_HANDLER(DEVWRITELINE("maincpu", m6808_cpu_device, irq_line))
+
+ MCFG_DEVICE_ADD("m_via_modem", VIA6522, 0)
+ MCFG_VIA6522_IRQ_HANDLER(DEVWRITELINE("maincpu", m6808_cpu_device, irq_line))
+
+ /* Floppy */
+ MCFG_FD1791_ADD("fd1791", XTAL_8MHz )
+ MCFG_FLOPPY_DRIVE_ADD("fd1791:0", goupil_floppies, "525qd", floppy_image_device::default_floppy_formats)
+ MCFG_FLOPPY_DRIVE_ADD("fd1791:1", goupil_floppies, "525qd", floppy_image_device::default_floppy_formats)
+
+ MCFG_DEVICE_ADD("i8279_kb1", I8279, CPU_CLOCK)
+ MCFG_I8279_OUT_SL_CB(WRITE8(goupil_g1_state, scanlines_kbd1_w)) // scan SL lines
+ MCFG_I8279_IN_RL_CB(READ8(goupil_g1_state, kbd1_r)) // kbd RL lines
+ MCFG_I8279_IN_SHIFT_CB(READ8(goupil_g1_state, shift_kb1_r))
+ MCFG_I8279_IN_CTRL_CB(READ8(goupil_g1_state, ctrl_kb1_r))
+ MCFG_I8279_OUT_IRQ_CB(DEVWRITELINE("m_via_keyb", via6522_device, write_ca1))
+
+ MCFG_DEVICE_ADD("i8279_kb2", I8279, CPU_CLOCK)
+ MCFG_I8279_OUT_SL_CB(WRITE8(goupil_g1_state, scanlines_kbd2_w)) // scan SL lines
+ MCFG_I8279_IN_RL_CB(READ8(goupil_g1_state, kbd2_r)) // kbd RL lines
+ MCFG_I8279_IN_SHIFT_CB(READ8(goupil_g1_state, shift_kb2_r))
+ MCFG_I8279_IN_CTRL_CB(READ8(goupil_g1_state, ctrl_kb2_r))
+
+MACHINE_CONFIG_END
+
+/* ROM definition */
+ROM_START( goupilg1 )
+ ROM_REGION( 0x10000, "maincpu", 0 )
+ ROM_DEFAULT_BIOS("v1_0")
+
+ ROM_SYSTEM_BIOS(0, "v1_0", "Version 1.0")
+ ROMX_LOAD( "SMT_Goupil_G1_MON_1.bin", 0x0000, 0x0400, CRC(98B7BE69) SHA1(69E83FE78A43FCF2B08FB0BCEFB0D217A57B1ECB), ROM_BIOS(1) )
+ ROM_LOAD ( "SMT_Goupil_G1_MON_2.bin", 0x0400, 0x0400, CRC(19386B81) SHA1(E52F63FD29D374319781E9677DE6D3FD61A3684C) )
+
+ ROM_LOAD( "SMT_Goupil_G1_MOD_3.bin", 0x0800, 0x0400, CRC(E662F152) SHA1(11B91C5737E7572A2C18472B66BBD16B485132D5) )
+
+ ROMX_LOAD( "SMT_Goupil_G1_Basic_1.bin", 0x1000, 0x0400, CRC(AD105B12) SHA1(631CD4B997F76B57BF2509E4BFF30B1595C8BD13), ROM_BIOS(1) )
+ ROMX_LOAD( "SMT_Goupil_G1_Basic_2.bin", 0x1400, 0x0400, CRC(0C5C309C) SHA1(F1CAB4B0F9191E53113790A95F1AB7108F9406A1), ROM_BIOS(1) )
+ ROMX_LOAD( "SMT_Goupil_G1_Basic_3.bin", 0x1800, 0x0400, CRC(1F1EB127) SHA1(DBBB880C79D515ACBFCB2BE9A4C96962F3E4EDEA), ROM_BIOS(1) )
+ ROMX_LOAD( "SMT_Goupil_G1_Basic_4.bin", 0x1C00, 0x0400, CRC(09BE48E4) SHA1(86CAE0D159583C1D572A5754F3BB6B4A2E479359), ROM_BIOS(1) )
+ ROMX_LOAD( "SMT_Goupil_G1_Basic_5.bin", 0x2000, 0x0400, CRC(BDEB395C) SHA1(32A50468F1CA772EE45A1F5C61C66F3ECC774074), ROM_BIOS(1) )
+ ROMX_LOAD( "SMT_Goupil_G1_Basic_6.bin", 0x2400, 0x0400, CRC(850A4000) SHA1(720F0BB3E45877835219B7E1D943EF4F19B9977D), ROM_BIOS(1) )
+ ROMX_LOAD( "SMT_Goupil_G1_Basic_7.bin", 0x2800, 0x0400, CRC(586C7670) SHA1(13E2E96B9F1A53555CE0D55F657CF3C6B96F10A0), ROM_BIOS(1) )
+ ROMX_LOAD( "SMT_Goupil_G1_Basic_8.bin", 0x2C00, 0x0400, CRC(33281300) SHA1(CE631FA8157A3F8869C5FEFE24B7F40E06696DF9), ROM_BIOS(1) )
+ ROMX_LOAD( "SMT_Goupil_G1_Basic_9.bin", 0x3000, 0x0400, CRC(A3911201) SHA1(8623A0A2D83EB3A27A795030643C5C05A4350A9F), ROM_BIOS(1) )
+
+ ROM_REGION( 0x400, "ef9364", 0 )
+ ROM_LOAD( "SMT_Goupil_G1_Charset.bin", 0x0000, 0x0400, CRC(8B6DA54B) SHA1(AC2204600F45C6DD0DF1E759B62ED25928F02A12) )
+ROM_END
+
+/* Driver */
+
+/* YEAR NAME PARENT COMPAT MACHINE INPUT CLASS INIT COMPANY FULLNAME FLAGS */
+COMP( 1979, goupilg1, 0, 0, goupil_g1, goupil_g1,driver_device, 0, "SMT", "Goupil G1", MACHINE_IS_SKELETON )
diff --git a/src/mame/drivers/gticlub.cpp b/src/mame/drivers/gticlub.cpp
index b751e7fc029..e9cbb5e37a5 100644
--- a/src/mame/drivers/gticlub.cpp
+++ b/src/mame/drivers/gticlub.cpp
@@ -910,21 +910,21 @@ UINT32 gticlub_state::screen_update_hangplt(screen_device &screen, bitmap_rgb32
if (strcmp(screen.tag(), ":lscreen") == 0)
{
- device_t *voodoo = machine().device("voodoo0");
+ voodoo_device *voodoo = (voodoo_device*)machine().device("voodoo0");
// m_k001604_1->draw_back_layer(bitmap, cliprect);
- voodoo_update(voodoo, bitmap, cliprect);
+ voodoo->voodoo_update(bitmap, cliprect);
m_k001604_1->draw_front_layer(screen, bitmap, cliprect);
}
else if (strcmp(screen.tag(), ":rscreen") == 0)
{
- device_t *voodoo = machine().device("voodoo1");
+ voodoo_device *voodoo = (voodoo_device*)machine().device("voodoo1");
// m_k001604_2->draw_back_layer(bitmap, cliprect);
- voodoo_update(voodoo, bitmap, cliprect);
+ voodoo->voodoo_update(bitmap, cliprect);
m_k001604_2->draw_front_layer(screen, bitmap, cliprect);
}
diff --git a/src/mame/drivers/gundealr.cpp b/src/mame/drivers/gundealr.cpp
index ca6570e3e25..b8a2afed7c2 100644
--- a/src/mame/drivers/gundealr.cpp
+++ b/src/mame/drivers/gundealr.cpp
@@ -509,26 +509,34 @@ MACHINE_CONFIG_END
ROM_START( gundealr )
ROM_REGION( 0x30000, "maincpu", 0 ) /* 64k for code + 128k for banks */
- ROM_LOAD( "gundealr.1", 0x00000, 0x10000, CRC(5797e830) SHA1(54bd9fbcafdf3fff55d73ecfe26d8e8df0dd55d9) )
+ ROM_LOAD( "1.3j", 0x00000, 0x10000, CRC(5797e830) SHA1(54bd9fbcafdf3fff55d73ecfe26d8e8df0dd55d9) ) /* 27c512; NOTE: the socket is labeled 1, but the rom has a '2' sticker on it! */
ROM_RELOAD( 0x10000, 0x10000 ) /* banked at 0x8000-0xbfff */
ROM_REGION( 0x10000, "gfx1", 0 )
ROM_LOAD( "3.6p", 0x00000, 0x10000, CRC(01f99de2) SHA1(2d9e9c50b0669811beb6fa53c0ff1b240fa939c7) )
ROM_REGION( 0x20000, "gfx2", 0 )
- ROM_LOAD( "gundealr.2", 0x00000, 0x20000, CRC(7874ec41) SHA1(2d2ff013cc37ce5966aa4b6c6724234655196102) )
+ ROM_LOAD( "2.6b", 0x00000, 0x20000, CRC(7874ec41) SHA1(2d2ff013cc37ce5966aa4b6c6724234655196102) ) /* NOTE: the socket is labeled 2, but the rom has a '1' sticker on it! */
+
+ ROM_REGION( 0x0200, "proms", 0 )
+ ROM_LOAD( "82s135.7l", 0x0000, 0x0100, NO_DUMP)
+ ROM_LOAD( "82s129.7i", 0x0100, 0x0100, NO_DUMP)
ROM_END
ROM_START( gundealra )
ROM_REGION( 0x30000, "maincpu", 0 ) /* 64k for code + 128k for banks */
- ROM_LOAD( "gundeala.1", 0x00000, 0x10000, CRC(d87e24f1) SHA1(5ac3e20e5848b9cab2a23e083d2566bfd54502d4) )
+ ROM_LOAD( "gundeala.1.3j", 0x00000, 0x10000, CRC(d87e24f1) SHA1(5ac3e20e5848b9cab2a23e083d2566bfd54502d4) )
ROM_RELOAD( 0x10000, 0x10000 ) /* banked at 0x8000-0xbfff */
ROM_REGION( 0x10000, "gfx1", 0 )
- ROM_LOAD( "gundeala.3", 0x00000, 0x10000, CRC(836cf1a3) SHA1(ca57e7fc3e4497d249af963d1c8610e80ca65aa7) )
+ ROM_LOAD( "gundeala.3.6p", 0x00000, 0x10000, CRC(836cf1a3) SHA1(ca57e7fc3e4497d249af963d1c8610e80ca65aa7) )
ROM_REGION( 0x20000, "gfx2", 0 )
- ROM_LOAD( "gundeala.2", 0x00000, 0x20000, CRC(4b5fb53c) SHA1(3b73d9aeed334aece75f551f5b7f3cec0aedbfaa) )
+ ROM_LOAD( "gundeala.2.6b", 0x00000, 0x20000, CRC(4b5fb53c) SHA1(3b73d9aeed334aece75f551f5b7f3cec0aedbfaa) )
+
+ ROM_REGION( 0x0200, "proms", 0 )
+ ROM_LOAD( "82s135.7l", 0x0000, 0x0100, NO_DUMP)
+ ROM_LOAD( "82s129.7i", 0x0100, 0x0100, NO_DUMP)
ROM_END
ROM_START( gundealrt )
@@ -541,6 +549,34 @@ ROM_START( gundealrt )
ROM_REGION( 0x20000, "gfx2", 0 )
ROM_LOAD( "2.6b", 0x00000, 0x20000, CRC(508ed0d0) SHA1(ea6b2d07e2e3d4f6c2a622a73b150ee7709b28de) )
+
+ ROM_REGION( 0x0200, "proms", 0 )
+ ROM_LOAD( "82s135.7l", 0x0000, 0x0100, NO_DUMP)
+ ROM_LOAD( "82s129.7i", 0x0100, 0x0100, NO_DUMP)
+ROM_END
+
+ROM_START( gundealrbl ) // bootleg with gfx customs done out in TTL logic, different proms, patched code rom
+ ROM_REGION( 0x30000, "maincpu", 0 ) /* 64k for code + 128k for banks */
+ ROM_LOAD( "29.2.am27c512.f10", 0x00000, 0x10000, CRC(7981751e) SHA1(3138581bcff84a11670ba54cbca608d590055b4e) ) // almost == gundealr "1.3j", 5 bytes different: (what does this change?)
+ ROM_RELOAD( 0x10000, 0x10000 ) /* banked at 0x8000-0xbfff */
+ // address gundealr gundealrbl
+ // 009a 07 00
+ // 6d4a 21 10
+ // 6d52 20 11
+ // 6d58 23 12
+ // 6d60 22 13
+
+ ROM_REGION( 0x10000, "gfx1", 0 )
+ ROM_LOAD( "30.3.am27c512.d16", 0x00000, 0x10000, CRC(01f99de2) SHA1(2d9e9c50b0669811beb6fa53c0ff1b240fa939c7) ) // == gundealr "3.16d"
+
+ ROM_REGION( 0x20000, "gfx2", 0 )
+ ROM_LOAD( "22.1.d27c010.a16", 0x00000, 0x20000, CRC(7874ec41) SHA1(2d2ff013cc37ce5966aa4b6c6724234655196102) ) // == gundealr "2.6b"
+
+ ROM_REGION( 0x0100, "proms", 0 )
+ ROM_LOAD( "4.82s129.7e", 0x0000, 0x0100, CRC(5c78339e) SHA1(4567c20122ae9694358b462e899f8bd2b453499f) ) // this might match the undumped 82s129.7i on the original dooyong board
+
+ ROM_REGION( 0x0400, "pals", 0 )
+ ROM_LOAD( "ep320pc.jed", 0x0000, 0x0400, NO_DUMP) // altera ep320pc on a daughterboard, undumped
ROM_END
ROM_START( yamyam ) /* DY-90010001 PCB */
@@ -593,6 +629,7 @@ ROM_END
GAME( 1990, gundealr, 0, gundealr, gundealr, driver_device, 0, ROT270, "Dooyong", "Gun Dealer", MACHINE_SUPPORTS_SAVE )
GAME( 1990, gundealra, gundealr, gundealr, gundealr, driver_device, 0, ROT270, "Dooyong", "Gun Dealer (alt card set)", MACHINE_SUPPORTS_SAVE )
GAME( 1990, gundealrt, gundealr, gundealr, gundealt, driver_device, 0, ROT270, "Dooyong (Tecmo license)", "Gun Dealer (Japan)", MACHINE_SUPPORTS_SAVE )
+GAME( 1990, gundealrbl, gundealr, gundealr, gundealr, driver_device, 0, ROT270, "bootleg", "Gun Dealer (bootleg)", MACHINE_SUPPORTS_SAVE )
GAME( 1990, yamyam, 0, yamyam, yamyam, driver_device, 0, ROT0, "Dooyong", "Yam! Yam!?", MACHINE_SUPPORTS_SAVE )
GAME( 1990, yamyamk, yamyam, yamyam, yamyam, driver_device, 0, ROT0, "Dooyong", "Yam! Yam!? (Korea)", MACHINE_SUPPORTS_SAVE )
diff --git a/src/mame/drivers/h19.cpp b/src/mame/drivers/h19.cpp
index d9e7e4c3e8b..75e725ce7df 100644
--- a/src/mame/drivers/h19.cpp
+++ b/src/mame/drivers/h19.cpp
@@ -315,7 +315,6 @@ INPUT_PORTS_END
void h19_state::machine_reset()
{
- m_beep->set_frequency(H19_BEEP_FRQ);
}
void h19_state::video_start()
@@ -418,7 +417,7 @@ static MACHINE_CONFIG_START( h19, h19_state )
/* sound hardware */
MCFG_SPEAKER_STANDARD_MONO("mono")
- MCFG_SOUND_ADD("beeper", BEEP, 0)
+ MCFG_SOUND_ADD("beeper", BEEP, H19_BEEP_FRQ)
MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.00)
MACHINE_CONFIG_END
diff --git a/src/mame/drivers/h8.cpp b/src/mame/drivers/h8.cpp
index 5c4eb0d305b..f3fa1e15cbc 100644
--- a/src/mame/drivers/h8.cpp
+++ b/src/mame/drivers/h8.cpp
@@ -215,7 +215,6 @@ INPUT_PORTS_END
void h8_state::machine_reset()
{
- m_beep->set_frequency(H8_BEEP_FRQ);
output().set_value("pwr_led", 0);
m_irq_ctl = 1;
m_cass_state = 1;
@@ -318,7 +317,7 @@ static MACHINE_CONFIG_START( h8, h8_state )
/* sound hardware */
MCFG_SPEAKER_STANDARD_MONO("mono")
- MCFG_SOUND_ADD("beeper", BEEP, 0)
+ MCFG_SOUND_ADD("beeper", BEEP, H8_BEEP_FRQ)
MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.00)
MCFG_SOUND_WAVE_ADD(WAVE_TAG, "cassette")
MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.25)
diff --git a/src/mame/drivers/harddriv.cpp b/src/mame/drivers/harddriv.cpp
index 5f9dd079869..e5eb4267425 100644
--- a/src/mame/drivers/harddriv.cpp
+++ b/src/mame/drivers/harddriv.cpp
@@ -358,12 +358,12 @@ harddriv_state::harddriv_state(const machine_config &mconfig, const char *tag, d
m_screen(*this, "screen"),
m_duartn68681(*this, "duartn68681"),
m_hd34010_host_access(0),
- m_dsk_pio_access(0),
m_msp_ram(*this, "msp_ram"),
m_dsk_ram(nullptr),
m_dsk_rom(nullptr),
m_dsk_10c(*this, "dsk_10c"),
m_dsk_30c(*this, "dsk_30c"),
+ m_dsk_pio_access(0),
m_m68k_slapstic_base(nullptr),
m_m68k_sloop_alt_base(nullptr),
m_200e(*this, "200e"),
@@ -410,7 +410,7 @@ harddriv_state::harddriv_state(const machine_config &mconfig, const char *tag, d
m_sim_memory(nullptr),
m_sim_memory_size(0),
m_adsp_pgm_memory_word(nullptr),
- m_ds3_sdata_memory(nullptr),
+ m_ds3_sdata_memory(*this, "ds3sdsp_data"),
m_ds3_sdata_memory_size(0),
m_ds3_gcmd(0),
m_ds3_gflag(0),
@@ -1425,7 +1425,7 @@ static MACHINE_CONFIG_FRAGMENT( driver_nomsp )
MCFG_DEVICE_VBLANK_INT_DRIVER("screen", harddriv_state, video_int_gen)
MCFG_CPU_PERIODIC_INT_DRIVER(harddriv_state, hd68k_irq_gen, (double)HARDDRIV_MASTER_CLOCK/16/16/16/16/2)
- MCFG_SLAPSTIC_ADD("slapstic")
+ MCFG_SLAPSTIC_ADD("slapstic", 117)
MCFG_SLAPSTIC_68K_ACCESS(1)
MCFG_CPU_ADD("gsp", TMS34010, HARDDRIV_GSP_CLOCK)
@@ -1472,6 +1472,7 @@ static MACHINE_CONFIG_FRAGMENT( driver_msp )
MCFG_TMS340X0_OUTPUT_INT_CB(WRITELINE(harddriv_state, hdmsp_irq_gen))
MCFG_VIDEO_SET_SCREEN("screen")
+ MCFG_DEVICE_REMOVE("slapstic")
MACHINE_CONFIG_END
@@ -1510,6 +1511,7 @@ static MACHINE_CONFIG_FRAGMENT( multisync_msp )
MCFG_TMS340X0_OUTPUT_INT_CB(WRITELINE(harddriv_state, hdmsp_irq_gen))
MCFG_VIDEO_SET_SCREEN("screen")
+ MCFG_DEVICE_REMOVE("slapstic")
MACHINE_CONFIG_END
@@ -1524,6 +1526,8 @@ static MACHINE_CONFIG_FRAGMENT( multisync2 )
MCFG_CPU_MODIFY("gsp")
MCFG_CPU_PROGRAM_MAP(multisync2_gsp_map)
+
+ MCFG_DEVICE_REMOVE("slapstic")
MACHINE_CONFIG_END
@@ -1682,6 +1686,7 @@ static MACHINE_CONFIG_FRAGMENT( stunrun )
MCFG_CPU_MODIFY("gsp")
MCFG_TMS340X0_PIXEL_CLOCK(5000000) /* pixel clock */
MCFG_FRAGMENT_ADD( adsp ) /* ADSP board */
+ MCFG_DEVICE_REMOVE("slapstic")
/* video hardware */
MCFG_SCREEN_MODIFY("screen")
@@ -2005,8 +2010,8 @@ MACHINE_CONFIG_END
WRITE_LINE_MEMBER(harddriv_new_state::tx_a)
{
// passive connection, one way, to both screens
- m_leftpcb->m_duartn68681->rx_a_w(state);
- m_rightpcb->m_duartn68681->rx_a_w(state);
+ m_leftpcb->get_duart()->rx_a_w(state);
+ m_rightpcb->get_duart()->rx_a_w(state);
}
static MACHINE_CONFIG_START( racedriv_panorama_machine, harddriv_new_state )
@@ -2018,6 +2023,10 @@ static MACHINE_CONFIG_START( racedriv_panorama_machine, harddriv_new_state )
MCFG_DEVICE_MODIFY("mainpcb:duartn68681")
MCFG_MC68681_A_TX_CALLBACK(DEVWRITELINE(DEVICE_SELF_OWNER, harddriv_new_state,tx_a))
+ // boots with 'PROGRAM OK' when using standard Hard Drivin' board type (needs 137412-115 slapstic)
+ MCFG_DEVICE_MODIFY("mainpcb:slapstic")
+ MCFG_SLAPSTIC_NUM(115)
+
MCFG_TIMER_DRIVER_ADD_PERIODIC("hack_timer", harddriv_new_state, hack_timer, attotime::from_hz(60))
// MCFG_QUANTUM_TIME(attotime::from_hz(60000))
MACHINE_CONFIG_END
@@ -2026,9 +2035,9 @@ MACHINE_CONFIG_END
// by forcing them to stay in sync using this ugly method everything works much better.
TIMER_DEVICE_CALLBACK_MEMBER(harddriv_new_state::hack_timer)
{
- m_leftpcb->m_screen->reset_origin(0, 0);
- m_mainpcb->m_screen->reset_origin(0, 0);
- m_rightpcb->m_screen->reset_origin(0, 0);
+ m_leftpcb->get_screen()->reset_origin(0, 0);
+ m_mainpcb->get_screen()->reset_origin(0, 0);
+ m_rightpcb->get_screen()->reset_origin(0, 0);
}
/*************************************
@@ -4070,7 +4079,6 @@ Filename Location Label Board
ROM_START( racedrivpan )
ROM_REGION( 0x200000, "mainpcb:maincpu", 0 ) /* 2MB for 68000 code */
// Multisync PBB A045988 - Central Monitor
- // boots with 'PROGRAM OK' when using standard Hard Drivin' board type (needs 137412-115 slapstic)
ROM_LOAD16_BYTE( "088-1002.bin", 0x000000, 0x010000, CRC(49a97391) SHA1(dbe4086cd87669a02d2a2133d0d9e2895946b383) )
ROM_LOAD16_BYTE( "088-1001.bin", 0x000001, 0x010000, CRC(4473accc) SHA1(099bda6cfe31d4e53cbe74046679ddf8b874982d) )
ROM_LOAD16_BYTE( "088-1004.bin", 0x020000, 0x010000, CRC(33b84ca6) SHA1(9e3cafadfb23bfc4a44e503043cc05db27d939a9) )
@@ -4485,7 +4493,7 @@ ROM_START( strtdriv )
ROM_LOAD( "136091-0033.10j", 0x000000, 0x010000, CRC(57504ab6) SHA1(ec8361b7da964c07ca0da48a87537badc3986fe0) )
ROM_REGION16_BE( 0x100000, "mainpcb:ds3xdsp", 0 ) /* DS III auxillary ADSP-2105 (unused) */
- ROM_FILL( 0x000000, 0x010000, nullptr)
+ ROM_FILL( 0x000000, 0x010000, 0x00)
ROM_REGION( 0x80000, "mainpcb:ds3sdsp_data", 0 )
ROM_LOAD16_BYTE( "136052-1123.12lm",0x00000, 0x10000, CRC(a88411dc) SHA1(1fd53c7eadffa163d5423df2f8338757e58d5f2e) )
@@ -4652,7 +4660,7 @@ void harddriv_state::init_multisync(int compact_inputs)
m_gsp_multisync = TRUE;
// if we have a JSA board, install the read/write handlers
- if (m_jsa != nullptr)
+ if (m_jsa.found())
m_maincpu->space(AS_PROGRAM).install_readwrite_handler(0x600000, 0x603fff, read8_delegate(FUNC(atari_jsa_base_device::main_response_r),m_jsa.target()), write8_delegate(FUNC(atari_jsa_base_device::main_command_w),m_jsa.target()), 0xff00);
/* install handlers for the compact driving games' inputs */
@@ -4707,9 +4715,7 @@ void harddriv_state::init_ds3()
m_maincpu->space(AS_PROGRAM).install_write_handler(0x823800, 0x823fff, write16_delegate(FUNC(harddriv_state::hd68k_ds3_control_w), this));
/* predetermine memory regions */
- m_ds3_sdata_memory = (UINT16 *)memregion("ds3sdsp_data")->base();
- m_ds3_sdata_memory_size = memregion("ds3sdsp_data")->bytes() / 2;
-
+ m_ds3_sdata_memory_size = m_ds3_sdata_memory.bytes() / 2;
/*
@@ -4938,7 +4944,7 @@ void harddriv_state::init_racedriv(void)
init_driver_sound();
/* set up the slapstic */
- m_slapstic_device->slapstic_init(machine(), 117);
+ m_slapstic_device->slapstic_init();
m_m68k_slapstic_base = m_maincpu->space(AS_PROGRAM).install_readwrite_handler(0xe0000, 0xfffff, read16_delegate(FUNC(harddriv_state::rd68k_slapstic_r), this), write16_delegate(FUNC(harddriv_state::rd68k_slapstic_w), this));
/* synchronization */
@@ -4959,7 +4965,7 @@ void harddriv_state::racedrivc_init_common(offs_t gsp_protection)
init_driver_sound();
/* set up the slapstic */
- m_slapstic_device->slapstic_init(machine(), 117);
+ m_slapstic_device->slapstic_init();
m_m68k_slapstic_base = m_maincpu->space(AS_PROGRAM).install_readwrite_handler(0xe0000, 0xfffff, read16_delegate(FUNC(harddriv_state::rd68k_slapstic_r), this), write16_delegate(FUNC(harddriv_state::rd68k_slapstic_w), this));
/* synchronization */
@@ -4989,7 +4995,7 @@ void harddriv_state::init_racedrivc_panorama_side()
init_adsp();
/* set up the slapstic */
- m_slapstic_device->slapstic_init(machine(), 117);
+ m_slapstic_device->slapstic_init();
m_m68k_slapstic_base = m_maincpu->space(AS_PROGRAM).install_readwrite_handler(0xe0000, 0xfffff, read16_delegate(FUNC(harddriv_state::rd68k_slapstic_r), this), write16_delegate(FUNC(harddriv_state::rd68k_slapstic_w), this));
/* set up protection hacks */
@@ -5081,7 +5087,7 @@ void harddriv_state::init_strtdriv(void)
init_dsk();
/* set up the slapstic */
- m_slapstic_device->slapstic_init(machine(), 117);
+ m_slapstic_device->slapstic_init();
m_m68k_slapstic_base = m_maincpu->space(AS_PROGRAM).install_readwrite_handler(0xe0000, 0xfffff, read16_delegate(FUNC(harddriv_state::rd68k_slapstic_r), this), write16_delegate(FUNC(harddriv_state::rd68k_slapstic_w), this));
m_maincpu->space(AS_PROGRAM).install_read_handler(0xa80000, 0xafffff, read16_delegate(FUNC(harddriv_state::hda68k_port1_r), this));
diff --git a/src/mame/drivers/hh_cop400.cpp b/src/mame/drivers/hh_cop400.cpp
index 486f6882b28..a4605bbace2 100644
--- a/src/mame/drivers/hh_cop400.cpp
+++ b/src/mame/drivers/hh_cop400.cpp
@@ -824,4 +824,4 @@ CONS( 1979, funjacks, 0, 0, funjacks, funjacks, driver_device, 0, "Mat
CONS( 1979, funrlgl, 0, 0, funrlgl, funrlgl, driver_device, 0, "Mattel", "Funtronics Red Light Green Light", MACHINE_SUPPORTS_SAVE | MACHINE_NOT_WORKING )
CONS( 1980, plus1, 0, 0, plus1, plus1, driver_device, 0, "Milton Bradley", "Plus One", MACHINE_SUPPORTS_SAVE | MACHINE_NOT_WORKING )
-CONS( 1981, lightfgt, 0, 0, lightfgt, lightfgt, driver_device, 0, "Milton Bradley", "Lightfight", MACHINE_SUPPORTS_SAVE )
+CONS( 1981, lightfgt, 0, 0, lightfgt, lightfgt, driver_device, 0, "Milton Bradley", "Lightfight", MACHINE_SUPPORTS_SAVE | MACHINE_CLICKABLE_ARTWORK )
diff --git a/src/mame/drivers/hh_hmcs40.cpp b/src/mame/drivers/hh_hmcs40.cpp
index 8ded810c534..b511780824a 100644
--- a/src/mame/drivers/hh_hmcs40.cpp
+++ b/src/mame/drivers/hh_hmcs40.cpp
@@ -661,7 +661,7 @@ static INPUT_PORTS_START( bfriskyt )
PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_JOYSTICK_LEFT ) PORT_CHANGED_MEMBER(DEVICE_SELF, bfriskyt_state, input_changed, NULL)
PORT_START("IN.5") // INT0
- PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_START ) PORT_CHANGED_MEMBER(DEVICE_SELF, hh_hmcs40_state, single_interrupt_line, (void *)nullptr)
+ PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_START ) PORT_CHANGED_MEMBER(DEVICE_SELF, hh_hmcs40_state, single_interrupt_line, (void *)0)
INPUT_PORTS_END
INPUT_CHANGED_MEMBER(bfriskyt_state::input_changed)
@@ -1016,7 +1016,7 @@ static INPUT_PORTS_START( bzaxxon )
PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_JOYSTICK_DOWN ) PORT_CHANGED_MEMBER(DEVICE_SELF, bzaxxon_state, input_changed, NULL)
PORT_START("IN.4") // INT0
- PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_BUTTON1 ) PORT_CHANGED_MEMBER(DEVICE_SELF, hh_hmcs40_state, single_interrupt_line, (void *)nullptr)
+ PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_BUTTON1 ) PORT_CHANGED_MEMBER(DEVICE_SELF, hh_hmcs40_state, single_interrupt_line, (void *)0)
PORT_START("IN.5") // port D
PORT_BIT( 0x0008, IP_ACTIVE_HIGH, IPT_SELECT )
@@ -1470,7 +1470,7 @@ WRITE16_MEMBER(bdoramon_state::grid_w)
static INPUT_PORTS_START( bdoramon )
PORT_START("IN.0") // INT0
- PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_JOYSTICK_LEFT ) PORT_CHANGED_MEMBER(DEVICE_SELF, hh_hmcs40_state, single_interrupt_line, (void *)nullptr)
+ PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_JOYSTICK_LEFT ) PORT_CHANGED_MEMBER(DEVICE_SELF, hh_hmcs40_state, single_interrupt_line, (void *)0)
PORT_START("IN.1") // INT1
PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_BUTTON1 ) PORT_CHANGED_MEMBER(DEVICE_SELF, hh_hmcs40_state, single_interrupt_line, (void *)1)
@@ -1566,7 +1566,7 @@ WRITE16_MEMBER(bultrman_state::grid_w)
static INPUT_PORTS_START( bultrman )
PORT_START("IN.0") // INT0
- PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_BUTTON1 ) PORT_CHANGED_MEMBER(DEVICE_SELF, hh_hmcs40_state, single_interrupt_line, (void *)nullptr)
+ PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_BUTTON1 ) PORT_CHANGED_MEMBER(DEVICE_SELF, hh_hmcs40_state, single_interrupt_line, (void *)0)
PORT_START("IN.1") // port D
PORT_CONFNAME( 0x0010, 0x0000, "Factory Test" )
@@ -1655,7 +1655,7 @@ WRITE16_MEMBER(machiman_state::grid_w)
static INPUT_PORTS_START( machiman )
PORT_START("IN.0") // INT0
- PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_BUTTON1 ) PORT_CHANGED_MEMBER(DEVICE_SELF, hh_hmcs40_state, single_interrupt_line, (void *)nullptr)
+ PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_BUTTON1 ) PORT_CHANGED_MEMBER(DEVICE_SELF, hh_hmcs40_state, single_interrupt_line, (void *)0)
PORT_START("IN.1") // port D
PORT_BIT( 0x3fff, IP_ACTIVE_HIGH, IPT_UNUSED )
@@ -2030,7 +2030,7 @@ WRITE16_MEMBER(cdkong_state::grid_w)
static INPUT_PORTS_START( cdkong )
PORT_START("IN.0") // INT0
- PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_BUTTON1 ) PORT_CHANGED_MEMBER(DEVICE_SELF, hh_hmcs40_state, single_interrupt_line, (void *)nullptr)
+ PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_BUTTON1 ) PORT_CHANGED_MEMBER(DEVICE_SELF, hh_hmcs40_state, single_interrupt_line, (void *)0)
PORT_START("IN.1") // port D
PORT_BIT( 0x0001, IP_ACTIVE_HIGH, IPT_JOYSTICK_UP )
@@ -2166,7 +2166,7 @@ static INPUT_PORTS_START( cgalaxn )
PORT_BIT( 0x0e, IP_ACTIVE_HIGH, IPT_UNUSED )
PORT_START("IN.2") // INT0
- PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_BUTTON1 ) PORT_CHANGED_MEMBER(DEVICE_SELF, hh_hmcs40_state, single_interrupt_line, (void *)nullptr)
+ PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_BUTTON1 ) PORT_CHANGED_MEMBER(DEVICE_SELF, hh_hmcs40_state, single_interrupt_line, (void *)0)
PORT_START("IN.3") // INT1
PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_BUTTON1 ) PORT_PLAYER(2) PORT_CHANGED_MEMBER(DEVICE_SELF, hh_hmcs40_state, single_interrupt_line, (void *)1)
@@ -3111,7 +3111,7 @@ static INPUT_PORTS_START( gckong )
PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_JOYSTICK_UP ) PORT_CHANGED_MEMBER(DEVICE_SELF, gckong_state, input_changed, NULL)
PORT_START("IN.4") // INT0
- PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_BUTTON1 ) PORT_CHANGED_MEMBER(DEVICE_SELF, hh_hmcs40_state, single_interrupt_line, (void *)nullptr)
+ PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_BUTTON1 ) PORT_CHANGED_MEMBER(DEVICE_SELF, hh_hmcs40_state, single_interrupt_line, (void *)0)
PORT_START("IN.5") // port D
PORT_CONFNAME( 0x0010, 0x0000, "Skill Level" )
@@ -3234,7 +3234,7 @@ static INPUT_PORTS_START( gdigdug )
PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_JOYSTICK_LEFT ) PORT_CHANGED_MEMBER(DEVICE_SELF, gdigdug_state, input_changed, NULL)
PORT_START("IN.5") // INT0
- PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_BUTTON1 ) PORT_CHANGED_MEMBER(DEVICE_SELF, hh_hmcs40_state, single_interrupt_line, (void *)nullptr)
+ PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_BUTTON1 ) PORT_CHANGED_MEMBER(DEVICE_SELF, hh_hmcs40_state, single_interrupt_line, (void *)0)
INPUT_PORTS_END
INPUT_CHANGED_MEMBER(gdigdug_state::input_changed)
@@ -3721,7 +3721,7 @@ static INPUT_PORTS_START( tmtron )
PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_JOYSTICK_LEFT ) PORT_16WAY PORT_CHANGED_MEMBER(DEVICE_SELF, tmtron_state, input_changed, NULL)
PORT_START("IN.4") // INT0
- PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_BUTTON1 ) PORT_CHANGED_MEMBER(DEVICE_SELF, hh_hmcs40_state, single_interrupt_line, (void *)nullptr)
+ PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_BUTTON1 ) PORT_CHANGED_MEMBER(DEVICE_SELF, hh_hmcs40_state, single_interrupt_line, (void *)0)
INPUT_PORTS_END
INPUT_CHANGED_MEMBER(tmtron_state::input_changed)
diff --git a/src/mame/drivers/hh_tms1k.cpp b/src/mame/drivers/hh_tms1k.cpp
index 481aae7a1ca..68e14d4514b 100644
--- a/src/mame/drivers/hh_tms1k.cpp
+++ b/src/mame/drivers/hh_tms1k.cpp
@@ -13,15 +13,20 @@
--------------------------------------------------------------------
@CP0904A TMS0970 1977, Milton Bradley Comp IV
@MP0905B TMS0970 1977, Parker Brothers Codename Sector
+ *MP0057 TMS1000 1978, APH Student Speech+ (same ROM contents as TSI Speech+?)
+ *MP0158 TMS1000 1979, Entex Soccer
*MP0168 TMS1000? 1979, Conic Basketball
+ *MP0170 TMS1000? 1979, E.R.S. Football
@MP0914 TMS1000 1979, Entex Baseball 1
@MP0923 TMS1000 1979, Entex Baseball 2
@MP1030 TMS1100 1980, APF Mathemagician
@MP1133 TMS1470 1979, Kosmos Astro
@MP1180 TMS1100 1980, Tomy Power House Pinball
+ *MP1181 TMS1100 1979, Conic Football 2
@MP1204 TMS1100 1980, Entex Baseball 3 (6007)
@MP1211 TMS1100 1980, Entex Space Invader
@MP1218 TMS1100 1980, Entex Basketball 2 (6010)
+ *MP1219 TMS1100 1980, U.S. Games Super Sports 4
@MP1221 TMS1100 1980, Entex Raise The Devil
*MP1296 TMS1100? 1982, Entex Black Knight
*MP1312 TMS1100 198?, Tandy/RadioShack Science Fair Microcomputer Trainer
@@ -39,7 +44,7 @@
@MP3301A TMS1000 1979, Milton Bradley Big Trak
*MP3320A TMS1000 1979, Coleco Head to Head Basketball
*M32001 TMS1000 1981, Coleco Quiz Wiz Challenger (note: MP3398, MP3399, M3200x?)
- MP3403 TMS1100 1978, Marx Electronic Bowling -> elecbowl.c
+ MP3403 TMS1100 1978, Marx Electronic Bowling -> elecbowl.cpp
@MP3404 TMS1100 1978, Parker Brothers Merlin
@MP3405 TMS1100 1979, Coleco Amaze-A-Tron
*MP3415 TMS1100 1978, Coleco Electronic Quarterback
@@ -58,7 +63,9 @@
MP3496 TMS1100 1980, MicroVision cartridge: Sea Duel
M34009 TMS1100 1981, MicroVision cartridge: Alien Raiders (note: MP3498, MP3499, M3400x..)
@M34012 TMS1100 1980, Mattel Dungeons & Dragons - Computer Labyrinth Game
+ *M34014 TMS1100 1981, Coleco Bowlatronic
M34017 TMS1100 1981, MicroVision cartridge: Cosmic Hunter
+ *M34038 TMS1100 1982, Parker Brothers Lost Treasure
M34047 TMS1100 1982, MicroVision cartridge: Super Blockbuster
*M34078A TMS1100 1983, Milton Bradley Arcade Mania
@MP6100A TMS0980 1979, Ideal Electronic Detective
@@ -67,8 +74,8 @@
*MP7303 TMS1400? 19??, Tiger 7-in-1 Sports Stadium
@MP7313 TMS1400 1980, Parker Brothers Bank Shot
@MP7314 TMS1400 1980, Parker Brothers Split Second
- *MP7324 TMS1400? 1985, Coleco Talking Teacher
- MP7332 TMS1400 1981, Milton Bradley Dark Tower -> mbdtower.c
+ MP7324 TMS1400 1985, Tiger K28/Coleco Talking Teacher -> tispeak.cpp
+ MP7332 TMS1400 1981, Milton Bradley Dark Tower -> mbdtower.cpp
@MP7334 TMS1400 1981, Coleco Total Control 4
@MP7351 TMS1400CR 1982, Parker Brothers Master Merlin
@MP7551 TMS1670 1980, Entex Color Football 4 (6009)
@@ -77,8 +84,9 @@
inconsistent:
- *M95041 ? 1983, Tsukuda Game Pachinko (? note: 40-pin, VFD-capable)
+ *TMC1007 TMS1000 1976, TSI Speech+ (S14002-A)
@CD7282SL TMS1100 1981, Tandy/RadioShack Tandy-12 (serial is similar to TI Speak & Spell series?)
+ *M95041 ? 1983, Tsukuda Game Pachinko (? note: 40-pin, VFD-capable)
(* denotes not yet emulated by MAME, @ denotes it's in this driver)
@@ -263,6 +271,17 @@ void hh_tms1k_state::set_display_size(int maxx, int maxy)
m_display_maxy = maxy;
}
+void hh_tms1k_state::set_display_segmask(UINT32 digits, UINT32 mask)
+{
+ // set a segment mask per selected digit, but leave unselected ones alone
+ for (int i = 0; i < 0x20; i++)
+ {
+ if (digits & 1)
+ m_display_segmask[i] = mask;
+ digits >>= 1;
+ }
+}
+
void hh_tms1k_state::display_matrix(int maxx, int maxy, UINT32 setx, UINT32 sety)
{
set_display_size(maxx, maxy);
@@ -4902,19 +4921,19 @@ COMP( 1979, astro, 0, 0, astro, astro, driver_device, 0, "Kos
CONS( 1980, mdndclab, 0, 0, mdndclab, mdndclab, driver_device, 0, "Mattel", "Dungeons & Dragons - Computer Labyrinth Game", MACHINE_SUPPORTS_SAVE ) // ***
CONS( 1977, comp4, 0, 0, comp4, comp4, driver_device, 0, "Milton Bradley", "Comp IV", MACHINE_SUPPORTS_SAVE | MACHINE_NO_SOUND_HW )
-CONS( 1978, simon, 0, 0, simon, simon, driver_device, 0, "Milton Bradley", "Simon (Rev. A)", MACHINE_SUPPORTS_SAVE )
-CONS( 1979, ssimon, 0, 0, ssimon, ssimon, driver_device, 0, "Milton Bradley", "Super Simon", MACHINE_SUPPORTS_SAVE )
+CONS( 1978, simon, 0, 0, simon, simon, driver_device, 0, "Milton Bradley", "Simon (Rev. A)", MACHINE_SUPPORTS_SAVE | MACHINE_CLICKABLE_ARTWORK )
+CONS( 1979, ssimon, 0, 0, ssimon, ssimon, driver_device, 0, "Milton Bradley", "Super Simon", MACHINE_SUPPORTS_SAVE | MACHINE_CLICKABLE_ARTWORK )
CONS( 1979, bigtrak, 0, 0, bigtrak, bigtrak, driver_device, 0, "Milton Bradley", "Big Trak", MACHINE_SUPPORTS_SAVE | MACHINE_MECHANICAL ) // ***
CONS( 1977, cnsector, 0, 0, cnsector, cnsector, driver_device, 0, "Parker Brothers", "Code Name: Sector", MACHINE_SUPPORTS_SAVE | MACHINE_NO_SOUND_HW ) // ***
-CONS( 1978, merlin, 0, 0, merlin, merlin, driver_device, 0, "Parker Brothers", "Merlin - The Electronic Wizard", MACHINE_SUPPORTS_SAVE )
+CONS( 1978, merlin, 0, 0, merlin, merlin, driver_device, 0, "Parker Brothers", "Merlin - The Electronic Wizard", MACHINE_SUPPORTS_SAVE | MACHINE_CLICKABLE_ARTWORK )
CONS( 1979, stopthie, 0, 0, stopthief, stopthief, driver_device, 0, "Parker Brothers", "Stop Thief (Electronic Crime Scanner)", MACHINE_SUPPORTS_SAVE ) // ***
CONS( 1979, stopthiep, stopthie, 0, stopthief, stopthief, driver_device, 0, "Parker Brothers", "Stop Thief (Electronic Crime Scanner) (patent)", MACHINE_SUPPORTS_SAVE | MACHINE_NOT_WORKING )
CONS( 1980, bankshot, 0, 0, bankshot, bankshot, driver_device, 0, "Parker Brothers", "Bank Shot - Electronic Pool", MACHINE_SUPPORTS_SAVE )
CONS( 1980, splitsec, 0, 0, splitsec, splitsec, driver_device, 0, "Parker Brothers", "Split Second", MACHINE_SUPPORTS_SAVE )
-CONS( 1982, mmerlin, 0, 0, mmerlin, mmerlin, driver_device, 0, "Parker Brothers", "Master Merlin", MACHINE_SUPPORTS_SAVE )
+CONS( 1982, mmerlin, 0, 0, mmerlin, mmerlin, driver_device, 0, "Parker Brothers", "Master Merlin", MACHINE_SUPPORTS_SAVE | MACHINE_CLICKABLE_ARTWORK )
-CONS( 1981, tandy12, 0, 0, tandy12, tandy12, driver_device, 0, "Tandy Radio Shack", "Tandy-12: Computerized Arcade", MACHINE_SUPPORTS_SAVE ) // some of the minigames: ***
+CONS( 1981, tandy12, 0, 0, tandy12, tandy12, driver_device, 0, "Tandy Radio Shack", "Tandy-12: Computerized Arcade", MACHINE_SUPPORTS_SAVE | MACHINE_CLICKABLE_ARTWORK ) // some of the minigames: ***
CONS( 1979, tbreakup, 0, 0, tbreakup, tbreakup, driver_device, 0, "Tomy", "Break Up (Tomy)", MACHINE_SUPPORTS_SAVE )
CONS( 1980, phpball, 0, 0, phpball, phpball, driver_device, 0, "Tomy", "Power House Pinball", MACHINE_SUPPORTS_SAVE | MACHINE_REQUIRES_ARTWORK )
diff --git a/src/mame/drivers/hh_ucom4.cpp b/src/mame/drivers/hh_ucom4.cpp
index 1b7c020bba3..d7578b8e173 100644
--- a/src/mame/drivers/hh_ucom4.cpp
+++ b/src/mame/drivers/hh_ucom4.cpp
@@ -49,8 +49,8 @@
*060 uPD650C 1979, Mattel Computer Gin
*085 uPD650C 1980, Roland TR-808
*127 uPD650C 198?, Sony OA-S1100 Typecorder (subcpu, have dump)
- *128 uPD650C 1981, Roland TR-606
- 133 uPD650C 1982, Roland TB-303 -> tb303.c
+ 128 uPD650C 1981, Roland TR-606 -> tr606.cpp
+ 133 uPD650C 1982, Roland TB-303 -> tb303.cpp
(* denotes not yet emulated by MAME, @ denotes it's in this driver)
@@ -2496,7 +2496,7 @@ CONS( 1980, splasfgt, 0, 0, splasfgt, splasfgt, driver_device, 0, "Bambin
CONS( 1982, bcclimbr, 0, 0, bcclimbr, bcclimbr, driver_device, 0, "Bandai", "Crazy Climber (Bandai)", MACHINE_SUPPORTS_SAVE | MACHINE_REQUIRES_ARTWORK )
-CONS( 1980, tactix, 0, 0, tactix, tactix, driver_device, 0, "Castle Toy", "Tactix", MACHINE_SUPPORTS_SAVE )
+CONS( 1980, tactix, 0, 0, tactix, tactix, driver_device, 0, "Castle Toy", "Tactix (Castle Toy)", MACHINE_SUPPORTS_SAVE )
CONS( 1980, invspace, 0, 0, invspace, invspace, driver_device, 0, "Epoch", "Invader From Space", MACHINE_SUPPORTS_SAVE | MACHINE_REQUIRES_ARTWORK )
CONS( 1980, efball, 0, 0, efball, efball, driver_device, 0, "Epoch", "Electronic Football (Epoch)", MACHINE_SUPPORTS_SAVE )
diff --git a/src/mame/drivers/highvdeo.cpp b/src/mame/drivers/highvdeo.cpp
index 72be90d47f7..aad4ce7df35 100644
--- a/src/mame/drivers/highvdeo.cpp
+++ b/src/mame/drivers/highvdeo.cpp
@@ -1408,6 +1408,21 @@ ROM_START( girotutt )
ROM_LOAD( "t41.bin", 0x00000, 0x80000, CRC(6f694406) SHA1(ec8b8baba0ee1bfe8986ce978412ee4de06f1906) )
ROM_END
+
+ROM_START( galeone )
+ ROM_REGION( 0x100000, "user1", 0 ) /* V30 Code */
+ ROM_LOAD16_BYTE( "model.A8-vers.1.0.ic8", 0x00001, 0x40000, CRC(b9e1e7ce) SHA1(4e036285b26dc0a313e76259b7e67c8d55322c84) )
+ ROM_RELOAD(0x80001,0x40000)
+ ROM_LOAD16_BYTE( "model.A7-vers.1.0.ic7", 0x00000, 0x40000, CRC(1940b738) SHA1(81e40de8df4dc838342bf966658110989a233731) )
+ ROM_RELOAD(0x80000,0x40000)
+
+ ROM_REGION( 0x040000, "boot_prg", 0 ) /* copy for program code */
+ ROM_COPY( "user1", 0x040000, 0x000000, 0x40000 )
+
+ ROM_REGION( 0x080000, "oki", 0 ) /* M6376 Samples */
+ ROM_LOAD( "model.GA-vers.1.ic25", 0x00000, 0x80000, CRC(4c2c2cc1) SHA1(20da29b2f1dd1f86ec23d9dbdaa9470878e900e2) )
+ROM_END
+
/*
CPU
@@ -1635,6 +1650,7 @@ GAMEL( 2000, cfever61, 0, tv_ncf, tv_ncf, driver_device, 0, ROT
GAMEL( 2000, nyjoker, 0, nyjoker, nyjoker, driver_device, 0, ROT0, "High Video", "New York Joker", 0, layout_fashion )
GAMEL( 2000, cfever1k, 0, tv_tcf, tv_tcf, driver_device, 0, ROT0, "High Video", "Casino Fever 1k", 0, layout_fashion )
GAMEL( 2000, girotutt, 0, tv_tcf, tv_tcf, driver_device, 0, ROT0, "High Video", "GiroTutto", 0, layout_fashion )
+GAMEL( 2000, galeone, 0, nyjoker, nyjoker, driver_device, 0, ROT0, "San Remo Games", "Il Galeone", 0, layout_fashion )
GAMEL( 2000, ciclone, 0, ciclone, tv_tcf, highvdeo_state, ciclone, ROT0, "High Video", "Ciclone", 0, layout_fashion )
GAMEL( 2000, newmcard, 0, newmcard, tv_tcf, driver_device, 0, ROT0, "High Video", "New Magic Card", 0, layout_fashion )
GAMEL( 2000, brasil, 0, brasil, brasil, driver_device, 0, ROT0, "High Video", "Bra$il (Version 3)", 0, layout_fashion )
diff --git a/src/mame/drivers/hornet.cpp b/src/mame/drivers/hornet.cpp
index 71f94ad4929..b1df15c8419 100644
--- a/src/mame/drivers/hornet.cpp
+++ b/src/mame/drivers/hornet.cpp
@@ -351,7 +351,9 @@ public:
m_dsw(*this, "DSW"),
m_eepromout(*this, "EEPROMOUT"),
m_analog1(*this, "ANALOG1"),
- m_analog2(*this, "ANALOG2")
+ m_analog2(*this, "ANALOG2"),
+ m_user3_ptr(*this, "user3"),
+ m_user5_ptr(*this, "user5")
{ }
// TODO: Needs verification on real hardware
@@ -373,6 +375,8 @@ public:
optional_device<eeprom_serial_93cxx_device> m_lan_eeprom;
required_ioport m_in0, m_in1, m_in2, m_dsw;
optional_ioport m_eepromout, m_analog1, m_analog2;
+ optional_region_ptr<UINT8> m_user3_ptr;
+ optional_region_ptr<UINT8> m_user5_ptr;
emu_timer *m_sound_irq_timer;
UINT8 m_led_reg0;
@@ -474,9 +478,9 @@ WRITE_LINE_MEMBER(hornet_state::voodoo_vblank_1)
UINT32 hornet_state::screen_update_hornet(screen_device &screen, bitmap_rgb32 &bitmap, const rectangle &cliprect)
{
- device_t *voodoo = machine().device("voodoo0");
+ voodoo_device* voodoo = (voodoo_device*)machine().device("voodoo0");
- voodoo_update(voodoo, bitmap, cliprect);
+ voodoo->voodoo_update(bitmap, cliprect);
m_k037122_1->tile_draw(screen, bitmap, cliprect);
@@ -489,16 +493,16 @@ UINT32 hornet_state::screen_update_hornet_2board(screen_device &screen, bitmap_r
{
if (strcmp(screen.tag(), ":lscreen") == 0)
{
- device_t *voodoo = machine().device("voodoo0");
- voodoo_update(voodoo, bitmap, cliprect);
+ voodoo_device *voodoo = (voodoo_device*)machine().device("voodoo0");
+ voodoo->voodoo_update(bitmap, cliprect);
/* TODO: tilemaps per screen */
m_k037122_1->tile_draw(screen, bitmap, cliprect);
}
else if (strcmp(screen.tag(), ":rscreen") == 0)
{
- device_t *voodoo = machine().device("voodoo1");
- voodoo_update(voodoo, bitmap, cliprect);
+ voodoo_device *voodoo = (voodoo_device*)machine().device("voodoo1");
+ voodoo->voodoo_update(bitmap, cliprect);
/* TODO: tilemaps per screen */
m_k037122_2->tile_draw(screen, bitmap, cliprect);
@@ -946,18 +950,18 @@ void hornet_state::machine_start()
void hornet_state::machine_reset()
{
- UINT8 *usr3 = memregion("user3")->base();
- UINT8 *usr5 = memregion("user5")->base();
- if (usr3 != nullptr)
+ if (m_user3_ptr)
{
- membank("bank1")->configure_entries(0, memregion("user3")->bytes() / 0x10000, usr3, 0x10000);
+ membank("bank1")->configure_entries(0, m_user3_ptr.bytes() / 0x10000, m_user3_ptr, 0x10000);
membank("bank1")->set_entry(0);
}
m_dsp->set_input_line(INPUT_LINE_RESET, ASSERT_LINE);
- if (usr5)
- membank("bank5")->set_base(usr5);
+ if (m_user5_ptr)
+ {
+ membank("bank5")->set_base(m_user5_ptr);
+ }
}
ADC12138_IPT_CONVERT_CB(hornet_state::adc12138_input_callback)
@@ -1038,21 +1042,18 @@ MACHINE_CONFIG_END
MACHINE_RESET_MEMBER(hornet_state,hornet_2board)
{
- UINT8 *usr3 = memregion("user3")->base();
- UINT8 *usr5 = memregion("user5")->base();
-
- if (usr3 != nullptr)
+ if (m_user3_ptr)
{
- membank("bank1")->configure_entries(0, memregion("user3")->bytes() / 0x10000, usr3, 0x10000);
+ membank("bank1")->configure_entries(0, m_user3_ptr.bytes() / 0x10000, m_user3_ptr, 0x10000);
membank("bank1")->set_entry(0);
}
m_dsp->set_input_line(INPUT_LINE_RESET, ASSERT_LINE);
m_dsp2->set_input_line(INPUT_LINE_RESET, ASSERT_LINE);
- if (usr5)
+ if (m_user5_ptr)
{
- membank("bank5")->set_base(usr5);
- membank("bank6")->set_base(usr5);
+ membank("bank5")->set_base(m_user5_ptr);
+ membank("bank6")->set_base(m_user5_ptr);
}
}
diff --git a/src/mame/drivers/hp9845.cpp b/src/mame/drivers/hp9845.cpp
index c303d1066d3..2936cae3228 100644
--- a/src/mame/drivers/hp9845.cpp
+++ b/src/mame/drivers/hp9845.cpp
@@ -156,7 +156,7 @@ static INPUT_PORTS_START(hp9845b)
PORT_BIT(BIT_MASK(2) , IP_ACTIVE_HIGH , IPT_KEYBOARD) PORT_NAME("KP+") // KP +
PORT_BIT(BIT_MASK(3) , IP_ACTIVE_HIGH , IPT_KEYBOARD) PORT_NAME("KP,") // KP ,
PORT_BIT(BIT_MASK(4) , IP_ACTIVE_HIGH , IPT_KEYBOARD) PORT_NAME("KP.") // KP .
- PORT_BIT(BIT_MASK(5) , IP_ACTIVE_HIGH , IPT_KEYBOARD) PORT_NAME("KP0") // KP 0
+ PORT_BIT(BIT_MASK(5) , IP_ACTIVE_HIGH , IPT_KEYBOARD) PORT_NAME("KP0") // KP 0
PORT_BIT(BIT_MASK(6) , IP_ACTIVE_HIGH , IPT_KEYBOARD) PORT_CODE(KEYCODE_F12) PORT_NAME("Execute") // Execute
PORT_BIT(BIT_MASK(7) , IP_ACTIVE_HIGH , IPT_KEYBOARD) PORT_CODE(KEYCODE_F11) PORT_NAME("Cont") // Cont
PORT_BIT(BIT_MASK(8) , IP_ACTIVE_HIGH , IPT_KEYBOARD) PORT_CODE(KEYCODE_RIGHT) PORT_CHAR(UCHAR_MAMEKEY(RIGHT)) // Right
@@ -261,7 +261,7 @@ static INPUT_PORTS_START(hp9845b)
PORT_BIT(BIT_MASK(5) , IP_ACTIVE_HIGH , IPT_KEYBOARD) PORT_NAME("K12") // K12
PORT_BIT(BIT_MASK(6) , IP_ACTIVE_HIGH , IPT_KEYBOARD) PORT_NAME("K11") // K11
PORT_BIT(BIT_MASK(7) , IP_ACTIVE_HIGH , IPT_KEYBOARD) PORT_NAME("K10") // K10
- PORT_BIT(BIT_MASK(8) , IP_ACTIVE_HIGH , IPT_KEYBOARD) PORT_NAME("K9") // K9
+ PORT_BIT(BIT_MASK(8) , IP_ACTIVE_HIGH , IPT_KEYBOARD) PORT_NAME("K9") // K9
PORT_BIT(BIT_MASK(9) , IP_ACTIVE_HIGH , IPT_KEYBOARD) PORT_NAME("K8") // K8
PORT_BIT(BIT_MASK(10) , IP_ACTIVE_HIGH , IPT_KEYBOARD) PORT_CODE(KEYCODE_0) PORT_CHAR('0') // 0
PORT_BIT(BIT_MASK(11) , IP_ACTIVE_HIGH , IPT_KEYBOARD) PORT_CODE(KEYCODE_8) PORT_CHAR('8') PORT_CHAR('(') // 8
@@ -270,12 +270,12 @@ static INPUT_PORTS_START(hp9845b)
PORT_BIT(BIT_MASK(14) , IP_ACTIVE_HIGH , IPT_KEYBOARD) PORT_CODE(KEYCODE_2) PORT_CHAR('2') PORT_CHAR('"') // 2
PORT_BIT(BIT_MASK(15) , IP_ACTIVE_HIGH , IPT_KEYBOARD) PORT_CODE(KEYCODE_TAB) PORT_CHAR('\t') // Tab
PORT_BIT(BIT_MASK(16) , IP_ACTIVE_HIGH , IPT_KEYBOARD) PORT_NAME("Tab clr") // Tab clr
- PORT_BIT(BIT_MASK(17) , IP_ACTIVE_HIGH , IPT_KEYBOARD) PORT_NAME("Step") // Step
+ PORT_BIT(BIT_MASK(17) , IP_ACTIVE_HIGH , IPT_KEYBOARD) PORT_NAME("Step") // Step
PORT_BIT(BIT_MASK(18) , IP_ACTIVE_HIGH , IPT_KEYBOARD) PORT_CODE(KEYCODE_F7) PORT_NAME("K7") // K7
PORT_BIT(BIT_MASK(19) , IP_ACTIVE_HIGH , IPT_KEYBOARD) PORT_CODE(KEYCODE_F6) PORT_NAME("K6") // K6
PORT_BIT(BIT_MASK(20) , IP_ACTIVE_HIGH , IPT_KEYBOARD) PORT_CODE(KEYCODE_F5) PORT_NAME("K5") // K5
- PORT_BIT(BIT_MASK(21) , IP_ACTIVE_HIGH , IPT_KEYBOARD) PORT_CODE(KEYCODE_F4) PORT_NAME("K4") // K4
- PORT_BIT(BIT_MASK(22) , IP_ACTIVE_HIGH , IPT_KEYBOARD) PORT_CODE(KEYCODE_F3) PORT_NAME("K3") // K3
+ PORT_BIT(BIT_MASK(21) , IP_ACTIVE_HIGH , IPT_KEYBOARD) PORT_CODE(KEYCODE_F4) PORT_NAME("K4") // K4
+ PORT_BIT(BIT_MASK(22) , IP_ACTIVE_HIGH , IPT_KEYBOARD) PORT_CODE(KEYCODE_F3) PORT_NAME("K3") // K3
PORT_BIT(BIT_MASK(23) , IP_ACTIVE_HIGH , IPT_KEYBOARD) PORT_CODE(KEYCODE_F2) PORT_NAME("K2") // K2
PORT_BIT(BIT_MASK(24) , IP_ACTIVE_HIGH , IPT_KEYBOARD) PORT_CODE(KEYCODE_F1) PORT_NAME("K1") // K1
PORT_BIT(BIT_MASK(25) , IP_ACTIVE_HIGH , IPT_KEYBOARD) PORT_CODE(KEYCODE_ESC) PORT_NAME("K0") // K0
@@ -621,12 +621,12 @@ static MACHINE_CONFIG_START( hp9835a, hp9845_state )
MACHINE_CONFIG_END
static ADDRESS_MAP_START(global_mem_map , AS_PROGRAM , 16 , hp9845b_state)
- ADDRESS_MAP_GLOBAL_MASK(0x3f7fff)
- ADDRESS_MAP_UNMAP_LOW
- AM_RANGE(0x000000 , 0x007fff) AM_RAM AM_SHARE("lpu_ram")
- AM_RANGE(0x014000 , 0x017fff) AM_RAM AM_SHARE("ppu_ram")
- AM_RANGE(0x030000 , 0x037fff) AM_ROM AM_REGION("lpu" , 0)
- AM_RANGE(0x050000 , 0x057fff) AM_ROM AM_REGION("ppu" , 0)
+ ADDRESS_MAP_GLOBAL_MASK(0x3f7fff)
+ ADDRESS_MAP_UNMAP_LOW
+ AM_RANGE(0x000000 , 0x007fff) AM_RAM AM_SHARE("lpu_ram")
+ AM_RANGE(0x014000 , 0x017fff) AM_RAM AM_SHARE("ppu_ram")
+ AM_RANGE(0x030000 , 0x037fff) AM_ROM AM_REGION("lpu" , 0)
+ AM_RANGE(0x050000 , 0x057fff) AM_ROM AM_REGION("ppu" , 0)
//AM_RANGE(0x250000 , 0x251fff) AM_ROM AM_REGION("test_rom" , 0)
ADDRESS_MAP_END
diff --git a/src/mame/drivers/ie15.cpp b/src/mame/drivers/ie15.cpp
index 558f6402d7f..9d2b6b708be 100644
--- a/src/mame/drivers/ie15.cpp
+++ b/src/mame/drivers/ie15.cpp
@@ -211,7 +211,7 @@ WRITE8_MEMBER( ie15_state::mem_addr_hi_w ) {
TIMER_CALLBACK_MEMBER(ie15_state::ie15_beepoff)
{
- machine().device<beep_device>("beeper")->set_state(0);
+ m_beeper->set_state(0);
}
WRITE8_MEMBER( ie15_state::beep_w ) {
@@ -222,7 +222,7 @@ WRITE8_MEMBER( ie15_state::beep_w ) {
DBG_LOG(1,"beep",("(%s)\n", m_long_beep ? "short" : "long"));
}
machine().scheduler().timer_set(attotime::from_msec(length), timer_expired_delegate(FUNC(ie15_state::ie15_beepoff),this));
- machine().device<beep_device>("beeper")->set_state(1);
+ m_beeper->set_state(1);
}
/* keyboard */
@@ -448,8 +448,7 @@ void ie15_state::machine_reset()
m_kb_ruslat = m_long_beep = m_kb_control = m_kb_data = m_kb_flag0 = 0;
m_kb_flag = IE_TRUE;
- machine().device<beep_device>("beeper")->set_frequency(2400);
- machine().device<beep_device>("beeper")->set_state(0);
+ m_beeper->set_state(0);
m_serial_tx_ready = m_serial_rx_ready = IE_TRUE;
set_data_frame(1 /* start bits */, 8 /* data bits */, PARITY_NONE, STOP_BITS_1);
@@ -637,7 +636,7 @@ static MACHINE_CONFIG_START( ie15, ie15_state )
MCFG_RS232_RXD_HANDLER(WRITELINE(ie15_state, serial_rx_callback))
MCFG_SPEAKER_STANDARD_MONO("mono")
- MCFG_SOUND_ADD("beeper", BEEP, 0)
+ MCFG_SOUND_ADD("beeper", BEEP, 2400)
MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.15)
MACHINE_CONFIG_END
diff --git a/src/mame/drivers/igs009.cpp b/src/mame/drivers/igs009.cpp
index effc725129c..7e0f44ad2d9 100644
--- a/src/mame/drivers/igs009.cpp
+++ b/src/mame/drivers/igs009.cpp
@@ -647,7 +647,7 @@ static INPUT_PORTS_START( jingbell )
PORT_START("SERVICE")
PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_UNKNOWN )
PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_SERVICE1 ) PORT_NAME("Memory Clear") // stats, memory
- PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_SPECIAL ) PORT_CUSTOM_MEMBER(DEVICE_SELF,igs009_state,hopper_r, (void *)nullptr ) // hopper sensor
+ PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_SPECIAL ) PORT_CUSTOM_MEMBER(DEVICE_SELF,igs009_state,hopper_r, NULL) // hopper sensor
PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_UNKNOWN )
PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_GAMBLE_PAYOUT ) PORT_NAME("Pay Out")
PORT_SERVICE_NO_TOGGLE( 0x20, IP_ACTIVE_LOW ) // test (press during boot)
diff --git a/src/mame/drivers/igs011.cpp b/src/mame/drivers/igs011.cpp
index 5375a46d499..0edcd3e7cb9 100644
--- a/src/mame/drivers/igs011.cpp
+++ b/src/mame/drivers/igs011.cpp
@@ -84,14 +84,18 @@ class igs011_state : public driver_device
{
public:
igs011_state(const machine_config &mconfig, device_type type, const char *tag)
- : driver_device(mconfig, type, tag),
- m_maincpu(*this, "maincpu"),
- m_oki(*this, "oki"),
- m_screen(*this, "screen"),
- m_palette(*this, "palette"),
- m_priority_ram(*this, "priority_ram"),
- m_vbowl_trackball(*this, "vbowl_trackball"),
- m_generic_paletteram_16(*this, "paletteram") { }
+ : driver_device(mconfig, type, tag)
+ , m_maincpu(*this, "maincpu")
+ , m_oki(*this, "oki")
+ , m_screen(*this, "screen")
+ , m_palette(*this, "palette")
+ , m_priority_ram(*this, "priority_ram")
+ , m_vbowl_trackball(*this, "vbowl_trackball")
+ , m_generic_paletteram_16(*this, "paletteram")
+ , m_gfx_region(*this, "blitter")
+ , m_gfx2_region(*this, "blitter_hi")
+ {
+ }
/* devices */
required_device<cpu_device> m_maincpu;
@@ -104,6 +108,10 @@ public:
optional_shared_ptr<UINT16> m_vbowl_trackball;
required_shared_ptr<UINT16> m_generic_paletteram_16;
+ /* memory regions */
+ required_memory_region m_gfx_region;
+ optional_memory_region m_gfx2_region;
+
std::unique_ptr<UINT8[]> m_layer[8];
UINT16 m_priority;
UINT8 m_lhb2_pen_hi;
@@ -484,10 +492,11 @@ WRITE16_MEMBER(igs011_state::igs011_blit_flags_w)
UINT8 trans_pen, clear_pen, pen_hi, *dest;
UINT8 pen = 0;
- UINT8 *gfx = memregion("blitter")->base();
- UINT8 *gfx2 = memregion("blitter_hi")->base();
- int gfx_size = memregion("blitter")->bytes();
- int gfx2_size = memregion("blitter_hi")->bytes();
+ UINT8 *gfx = m_gfx_region->base();
+ int gfx_size = m_gfx_region->bytes();
+
+ UINT8 *gfx2 = (m_gfx2_region != NULL) ? m_gfx2_region->base() : NULL;
+ int gfx2_size = (m_gfx2_region != NULL) ? m_gfx2_region->bytes() : 0;
const rectangle &clip = m_screen->visible_area();
@@ -3133,7 +3142,7 @@ static INPUT_PORTS_START( lhb2 )
PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_COIN1 )
PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_SERVICE1 ) // data clear
PORT_SERVICE_NO_TOGGLE( 0x04, IP_ACTIVE_LOW ) // keep pressed while booting
- PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_SPECIAL ) PORT_CUSTOM_MEMBER(DEVICE_SELF, igs011_state,igs_hopper_r, (void *)nullptr) // hopper switch
+ PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_SPECIAL ) PORT_CUSTOM_MEMBER(DEVICE_SELF, igs011_state, igs_hopper_r, NULL) // hopper switch
PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_SERVICE2 ) // stats
PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_OTHER ) PORT_NAME("Pay Out") PORT_CODE(KEYCODE_O) // clear coin
PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_UNKNOWN )
@@ -3263,7 +3272,7 @@ static INPUT_PORTS_START( nkishusp )
PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_COIN1 )
PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_SERVICE1 ) // data clear
PORT_SERVICE_NO_TOGGLE( 0x04, IP_ACTIVE_LOW ) // keep pressed while booting
- PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_SPECIAL ) PORT_CUSTOM_MEMBER(DEVICE_SELF, igs011_state,igs_hopper_r, (void *)nullptr) // hopper switch
+ PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_SPECIAL ) PORT_CUSTOM_MEMBER(DEVICE_SELF, igs011_state,igs_hopper_r, NULL) // hopper switch
PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_SERVICE2 ) // stats
PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_OTHER ) PORT_NAME("Pay Out") PORT_CODE(KEYCODE_O) // clear coin
PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_UNKNOWN )
@@ -3392,7 +3401,7 @@ static INPUT_PORTS_START( wlcc )
PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_SERVICE2 ) // shown in test mode
PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_UNKNOWN )
PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_OTHER ) PORT_NAME("Pay Out") PORT_CODE(KEYCODE_O) // clear coin
- PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_SPECIAL ) PORT_CUSTOM_MEMBER(DEVICE_SELF, igs011_state,igs_hopper_r, (void *)nullptr) // hopper switch
+ PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_SPECIAL ) PORT_CUSTOM_MEMBER(DEVICE_SELF, igs011_state,igs_hopper_r, NULL) // hopper switch
PORT_START("IN0")
PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_START1 )
@@ -3521,7 +3530,7 @@ static INPUT_PORTS_START( lhb )
PORT_DIPUNKNOWN( 0x80, 0x80 )
PORT_START("COIN")
- PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_SPECIAL ) PORT_CUSTOM_MEMBER(DEVICE_SELF, igs011_state,igs_hopper_r, (void *)nullptr) // hopper switch
+ PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_SPECIAL ) PORT_CUSTOM_MEMBER(DEVICE_SELF, igs011_state,igs_hopper_r, NULL) // hopper switch
PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_SERVICE2 ) // system reset
PORT_SERVICE_NO_TOGGLE( 0x04, IP_ACTIVE_LOW ) // keep pressed while booting
PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_SERVICE1 ) // stats
@@ -3848,7 +3857,7 @@ static INPUT_PORTS_START( xymg )
PORT_DIPUNKNOWN( 0x80, 0x80 )
PORT_START("COIN")
- PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_SPECIAL ) PORT_CUSTOM_MEMBER(DEVICE_SELF, igs011_state,igs_hopper_r, (void *)nullptr) // hopper switch
+ PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_SPECIAL ) PORT_CUSTOM_MEMBER(DEVICE_SELF, igs011_state,igs_hopper_r, NULL) // hopper switch
PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_UNKNOWN )
PORT_SERVICE_NO_TOGGLE( 0x04, IP_ACTIVE_LOW ) // keep pressed while booting
PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_SERVICE1 ) // stats
diff --git a/src/mame/drivers/igspoker.cpp b/src/mame/drivers/igspoker.cpp
index 18d32b1d5e1..4a1ed126384 100644
--- a/src/mame/drivers/igspoker.cpp
+++ b/src/mame/drivers/igspoker.cpp
@@ -501,7 +501,7 @@ static INPUT_PORTS_START( cpoker )
PORT_BIT( 0xff, IP_ACTIVE_LOW, IPT_UNUSED )
PORT_START("SERVICE")
- PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_SPECIAL ) PORT_CUSTOM_MEMBER(DEVICE_SELF,igspoker_state,hopper_r, (void *)nullptr ) PORT_NAME("HPSW") // hopper sensor
+ PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_SPECIAL ) PORT_CUSTOM_MEMBER(DEVICE_SELF,igspoker_state, hopper_r, NULL) PORT_NAME("HPSW") // hopper sensor
PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_GAMBLE_PAYOUT )
PORT_SERVICE_NO_TOGGLE( 0x20, IP_ACTIVE_LOW )
PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_GAMBLE_BOOK ) PORT_NAME("Statistics")
@@ -635,7 +635,7 @@ static INPUT_PORTS_START( cpokerx )
PORT_START("SERVICE")
PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_UNKNOWN )
PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_SERVICE ) PORT_CODE(KEYCODE_9) PORT_NAME("Attendent")
- PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_SPECIAL ) PORT_CUSTOM_MEMBER(DEVICE_SELF,igspoker_state,hopper_r, (void *)nullptr ) PORT_NAME("HPSW") // hopper sensor
+ PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_SPECIAL ) PORT_CUSTOM_MEMBER(DEVICE_SELF,igspoker_state, hopper_r, NULL) PORT_NAME("HPSW") // hopper sensor
PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_UNKNOWN )
PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_UNKNOWN )
PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_UNKNOWN )
@@ -800,7 +800,7 @@ static INPUT_PORTS_START( csk227 )
PORT_START("SERVICE")
PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_UNUSED )
PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_UNUSED )
- PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_SPECIAL ) PORT_CUSTOM_MEMBER(DEVICE_SELF,igspoker_state,hopper_r, (void *)nullptr ) PORT_NAME("HPSW") // hopper sensor
+ PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_SPECIAL ) PORT_CUSTOM_MEMBER(DEVICE_SELF,igspoker_state, hopper_r, NULL) PORT_NAME("HPSW") // hopper sensor
PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_UNUSED )
PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_GAMBLE_PAYOUT )
PORT_SERVICE_NO_TOGGLE( 0x20, IP_ACTIVE_LOW )
@@ -945,7 +945,7 @@ static INPUT_PORTS_START( csk234 )
PORT_BIT( 0xe0, IP_ACTIVE_LOW, IPT_UNUSED )
PORT_START("SERVICE")
- PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_SPECIAL ) PORT_CUSTOM_MEMBER(DEVICE_SELF,igspoker_state,hopper_r, (void *)nullptr ) PORT_NAME("HPSW") // hopper sensor
+ PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_SPECIAL ) PORT_CUSTOM_MEMBER(DEVICE_SELF,igspoker_state, hopper_r, NULL) PORT_NAME("HPSW") // hopper sensor
PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_GAMBLE_PAYOUT )
PORT_SERVICE_NO_TOGGLE( 0x20, IP_ACTIVE_LOW )
PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_GAMBLE_BOOK ) PORT_NAME("Statistics")
@@ -1097,7 +1097,7 @@ static INPUT_PORTS_START( igs_ncs )
PORT_DIPSETTING( 0x00, DEF_STR( Yes ) )
PORT_START("SERVICE")
- PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_SPECIAL ) PORT_CUSTOM_MEMBER(DEVICE_SELF,igspoker_state,hopper_r, (void *)nullptr ) PORT_NAME("HPSW") // hopper sensor
+ PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_SPECIAL ) PORT_CUSTOM_MEMBER(DEVICE_SELF,igspoker_state, hopper_r, NULL) PORT_NAME("HPSW") // hopper sensor
PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_GAMBLE_PAYOUT )
PORT_SERVICE_NO_TOGGLE( 0x20, IP_ACTIVE_LOW )
PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_GAMBLE_BOOK ) PORT_NAME("Statistics")
@@ -1417,7 +1417,7 @@ static INPUT_PORTS_START( cpokerpk )
PORT_DIPSETTING( 0x00, "100:1" )
PORT_START("SERVICE")
- PORT_BIT( 0x8f, IP_ACTIVE_LOW, IPT_SPECIAL ) PORT_CUSTOM_MEMBER(DEVICE_SELF,igspoker_state,hopper_r, (void *)nullptr ) PORT_NAME("HPSW") // hopper sensor
+ PORT_BIT( 0x8f, IP_ACTIVE_LOW, IPT_SPECIAL ) PORT_CUSTOM_MEMBER(DEVICE_SELF,igspoker_state, hopper_r, NULL) PORT_NAME("HPSW") // hopper sensor
PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_GAMBLE_PAYOUT )
PORT_SERVICE_NO_TOGGLE( 0x20, IP_ACTIVE_LOW )
PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_GAMBLE_BOOK ) PORT_NAME("Statistics")
@@ -1552,7 +1552,7 @@ static INPUT_PORTS_START( chleague )
PORT_BIT( 0xff, IP_ACTIVE_LOW, IPT_UNUSED )
PORT_START("SERVICE")
- PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_SPECIAL ) PORT_CUSTOM_MEMBER(DEVICE_SELF,igspoker_state,hopper_r, (void *)nullptr ) PORT_NAME("HPSW") // hopper sensor
+ PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_SPECIAL ) PORT_CUSTOM_MEMBER(DEVICE_SELF,igspoker_state, hopper_r, NULL) PORT_NAME("HPSW") // hopper sensor
PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_GAMBLE_PAYOUT )
PORT_SERVICE_NO_TOGGLE( 0x20, IP_ACTIVE_LOW )
PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_GAMBLE_BOOK ) PORT_NAME("Statistics")
@@ -1691,7 +1691,7 @@ static INPUT_PORTS_START( pktet346 )
PORT_START("SERVICE")
PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_SERVICE ) PORT_CODE(KEYCODE_9)
- PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_SPECIAL ) PORT_CUSTOM_MEMBER(DEVICE_SELF,igspoker_state,hopper_r, (void *)nullptr ) PORT_NAME("HPSW") // hopper sensor
+ PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_SPECIAL ) PORT_CUSTOM_MEMBER(DEVICE_SELF,igspoker_state, hopper_r, NULL) PORT_NAME("HPSW") // hopper sensor
PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_GAMBLE_PAYOUT )
PORT_SERVICE_NO_TOGGLE( 0x20, IP_ACTIVE_LOW )
PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_GAMBLE_BOOK ) PORT_NAME("Statistics")
@@ -2055,7 +2055,7 @@ ROM_START( cpokert )
//copy?
ROM_REGION( 0x60000, "gfx2", 0 )
- ROM_COPY( "gfx1", nullptr, 0, 0x60000 )
+ ROM_COPY( "gfx1", 0x000000, 0, 0x60000 )
// convert them to the pld format
ROM_REGION( 0x2000, "plds", 0 )
diff --git a/src/mame/drivers/imds2.cpp b/src/mame/drivers/imds2.cpp
index 7a579f7a89b..49667a8ebd6 100644
--- a/src/mame/drivers/imds2.cpp
+++ b/src/mame/drivers/imds2.cpp
@@ -597,7 +597,6 @@ void imds2_state::video_start()
void imds2_state::machine_reset()
{
- m_iocbeep->set_frequency(IOC_BEEP_FREQ);
m_ipc_control = 0x00;
m_ipc_ioc_status = 0x0f;
@@ -844,7 +843,7 @@ static MACHINE_CONFIG_START(imds2 , imds2_state)
MCFG_PALETTE_ADD_BLACK_AND_WHITE("palette")
MCFG_SPEAKER_STANDARD_MONO("mono")
- MCFG_SOUND_ADD("iocbeep" , BEEP , 0)
+ MCFG_SOUND_ADD("iocbeep" , BEEP , IOC_BEEP_FREQ)
MCFG_SOUND_ROUTE(ALL_OUTPUTS , "mono" , 1.00)
MCFG_DEVICE_ADD("iocdma" , I8257 , IOC_XTAL_Y2 / 9)
diff --git a/src/mame/drivers/iteagle.cpp b/src/mame/drivers/iteagle.cpp
index cf78f9966f1..ff6b387bc45 100644
--- a/src/mame/drivers/iteagle.cpp
+++ b/src/mame/drivers/iteagle.cpp
@@ -179,7 +179,7 @@ MACHINE_CONFIG_END
static MACHINE_CONFIG_DERIVED( gtfore01, iteagle )
MCFG_DEVICE_MODIFY(PCI_ID_FPGA)
- MCFG_ITEAGLE_FPGA_INIT(0x01000401, 0x0b0b0b)
+ MCFG_ITEAGLE_FPGA_INIT(0x00000401, 0x0b0b0b)
MCFG_DEVICE_MODIFY(PCI_ID_EEPROM)
MCFG_ITEAGLE_EEPROM_INIT(0x0401, 0x7)
MACHINE_CONFIG_END
@@ -187,7 +187,7 @@ MACHINE_CONFIG_END
static MACHINE_CONFIG_DERIVED( gtfore02, iteagle )
MCFG_DEVICE_MODIFY(PCI_ID_FPGA)
MCFG_ITEAGLE_FPGA_INIT(0x01000402, 0x020201)
- MCFG_DEVICE_MODIFY(":pci:0a.0")
+ MCFG_DEVICE_MODIFY(PCI_ID_EEPROM)
MCFG_ITEAGLE_EEPROM_INIT(0x0402, 0x7)
MACHINE_CONFIG_END
@@ -215,28 +215,28 @@ MACHINE_CONFIG_END
static MACHINE_CONFIG_DERIVED( gtfore06, iteagle )
MCFG_DEVICE_MODIFY(PCI_ID_FPGA)
MCFG_ITEAGLE_FPGA_INIT(0x01000406, 0x0c0b0d)
- MCFG_DEVICE_MODIFY(":pci:0a.0")
+ MCFG_DEVICE_MODIFY(PCI_ID_EEPROM)
MCFG_ITEAGLE_EEPROM_INIT(0x0406, 0x9);
MACHINE_CONFIG_END
static MACHINE_CONFIG_DERIVED( carnking, iteagle )
MCFG_DEVICE_MODIFY(PCI_ID_FPGA)
- MCFG_ITEAGLE_FPGA_INIT(0x01000603, 0x0c0b0d)
+ MCFG_ITEAGLE_FPGA_INIT(0x01000a01, 0x0e0a0a)
MCFG_DEVICE_MODIFY(PCI_ID_EEPROM)
- MCFG_ITEAGLE_EEPROM_INIT(0x0603, 0x9)
+ MCFG_ITEAGLE_EEPROM_INIT(0x0a01, 0x9)
MACHINE_CONFIG_END
static MACHINE_CONFIG_DERIVED( bbhsc, iteagle )
MCFG_DEVICE_MODIFY(PCI_ID_FPGA)
- MCFG_ITEAGLE_FPGA_INIT(0x01000600, 0x0c0a0a)
+ MCFG_ITEAGLE_FPGA_INIT(0x02000600, 0x0c0a0a)
MCFG_DEVICE_MODIFY(PCI_ID_EEPROM)
- MCFG_ITEAGLE_EEPROM_INIT(0x0600, 0x9)
+ MCFG_ITEAGLE_EEPROM_INIT(0x0000, 0x7)
MACHINE_CONFIG_END
static MACHINE_CONFIG_DERIVED( bbhcotw, iteagle )
MCFG_DEVICE_MODIFY(PCI_ID_FPGA)
MCFG_ITEAGLE_FPGA_INIT(0x02000603, 0x080704)
- MCFG_DEVICE_MODIFY(":pci:0a.0")
+ MCFG_DEVICE_MODIFY(PCI_ID_EEPROM)
MCFG_ITEAGLE_EEPROM_INIT(0x0603, 0x9)
MACHINE_CONFIG_END
@@ -331,7 +331,7 @@ static INPUT_PORTS_START( virtpool )
INPUT_PORTS_END
-static INPUT_PORTS_START( bbhcotw )
+static INPUT_PORTS_START( bbh )
PORT_INCLUDE( iteagle )
PORT_MODIFY("IN1")
@@ -556,8 +556,8 @@ ROM_END
*************************************/
GAME( 2000, iteagle, 0, iteagle, iteagle, driver_device, 0, ROT0, "Incredible Technologies", "Eagle BIOS", MACHINE_IS_BIOS_ROOT )
-GAME( 1998, virtpool, iteagle, virtpool, virtpool, driver_device, 0, ROT0, "Incredible Technologies", "Virtual Pool", 0 )
-GAME( 2002, carnking, iteagle, carnking, iteagle, driver_device, 0, ROT0, "Incredible Technologies", "Carnival King (v1.00.11)", MACHINE_NOT_WORKING )
+GAME( 1998, virtpool, iteagle, virtpool, virtpool, driver_device, 0, ROT0, "Incredible Technologies", "Virtual Pool", MACHINE_NOT_WORKING ) // random lockups on loading screens
+GAME( 2002, carnking, iteagle, carnking, bbh, driver_device, 0, ROT0, "Incredible Technologies", "Carnival King (v1.00.11)", 0 )
GAME( 2000, gtfore01, iteagle, gtfore01, iteagle, driver_device, 0, ROT0, "Incredible Technologies", "Golden Tee Fore! (v1.00.25)", 0 )
GAME( 2001, gtfore02, iteagle, gtfore02, iteagle, driver_device, 0, ROT0, "Incredible Technologies", "Golden Tee Fore! 2002 (v2.01.06)", 0 )
GAME( 2002, gtfore03, iteagle, gtfore03, iteagle, driver_device, 0, ROT0, "Incredible Technologies", "Golden Tee Fore! 2003 (v3.00.10)", 0 )
@@ -569,5 +569,5 @@ GAME( 2004, gtfore05a, gtfore05, gtfore05, iteagle, driver_device, 0, ROT0, "I
GAME( 2004, gtfore05b, gtfore05, gtfore05, iteagle, driver_device, 0, ROT0, "Incredible Technologies", "Golden Tee Fore! 2005 Extra (v5.01.00)", 0 )
GAME( 2004, gtfore05c, gtfore05, gtfore05, iteagle, driver_device, 0, ROT0, "Incredible Technologies", "Golden Tee Fore! 2005 Extra (v5.00.00)", 0 )
GAME( 2005, gtfore06, iteagle, gtfore06, iteagle, driver_device, 0, ROT0, "Incredible Technologies", "Golden Tee Fore! 2006 Complete (v6.00.01)", 0 )
-GAME( 2002, bbhsc, iteagle, bbhsc, iteagle, driver_device, 0, ROT0, "Incredible Technologies", "Big Buck Hunter - Shooter's Challenge (v1.50.07)", MACHINE_NOT_WORKING )
-GAME( 2006, bbhcotw, iteagle, bbhcotw, bbhcotw, driver_device, 0, ROT0, "Incredible Technologies", "Big Buck Hunter Call of the Wild (v3.02.5)", 0 )
+GAME( 2002, bbhsc, iteagle, bbhsc, bbh, driver_device, 0, ROT0, "Incredible Technologies", "Big Buck Hunter - Shooter's Challenge (v1.50.07)", MACHINE_NOT_WORKING ) // doesn't boot
+GAME( 2006, bbhcotw, iteagle, bbhcotw, bbh, driver_device, 0, ROT0, "Incredible Technologies", "Big Buck Hunter Call of the Wild (v3.02.5)", MACHINE_NOT_WORKING ) // random lockups
diff --git a/src/mame/drivers/itech8.cpp b/src/mame/drivers/itech8.cpp
index 13b33bdaf1d..f18b3729752 100644
--- a/src/mame/drivers/itech8.cpp
+++ b/src/mame/drivers/itech8.cpp
@@ -1090,6 +1090,17 @@ static INPUT_PORTS_START( stratab )
PORT_BIT( 0xff, 0x00, IPT_TRACKBALL_X ) PORT_SENSITIVITY(25) PORT_KEYDELTA(32) PORT_RESET PORT_REVERSE PORT_COCKTAIL PORT_PLAYER(2)
INPUT_PORTS_END
+static INPUT_PORTS_START( stratabs )
+ PORT_INCLUDE( stratab )
+
+ PORT_START("FAKEX") /* fake */
+ PORT_BIT( 0xff, 0x00, IPT_TRACKBALL_X ) PORT_SENSITIVITY(50) PORT_KEYDELTA(10) PORT_RESET PORT_PLAYER(1)
+
+ PORT_START("FAKEY") /* fake */
+ PORT_BIT( 0xff, 0x00, IPT_TRACKBALL_Y ) PORT_SENSITIVITY(50) PORT_KEYDELTA(100) PORT_RESET PORT_REVERSE PORT_PLAYER(1)
+INPUT_PORTS_END
+
+
CUSTOM_INPUT_MEMBER(itech8_state::gtg_mux)
{
@@ -2235,6 +2246,8 @@ ROM_START( slikshot16 )
ROM_END
+
+
ROM_START( dynobop )
ROM_REGION( 0x1c000, "maincpu", 0 )
ROM_LOAD( "dynobop.u5", 0x04000, 0x4000, CRC(98452c40) SHA1(9b9316fc258792e0d825f16e0fadf8e0c35a864e) )
@@ -2283,6 +2296,30 @@ ROM_START( sstrike )
ROM_END
+ROM_START( stratabs )
+ ROM_REGION( 0x1c000, "maincpu", 0 )
+ ROM_LOAD( "sb_prog-v4t.u5", 0x08000, 0x8000, CRC(38ddae75) SHA1(71a9cbd36cf7b180a88bab3ab92a4dff93ce365f) )
+ ROM_COPY( "maincpu", 0x8000, 0x14000, 0x8000 )
+
+ ROM_REGION( 0x10000, "soundcpu", 0 )
+ ROM_LOAD( "sb_snds_1.4.u27", 0x08000, 0x8000, CRC(526ef093) SHA1(884f9149b3d5eb33e47258e466ad9cd9ce5ffddb) )
+
+ ROM_REGION( 0x10000, "sub", 0 )
+ ROM_LOAD( "z80_prg_v1.0t.u53", 0x00000, 0x0800, CRC(08203f9f) SHA1(be5044938c73bf6fc1a6130dc473997e8c219b24) )
+ ROM_CONTINUE( 0x00000, 0x0800 )
+ ROM_CONTINUE( 0x00000, 0x0800 )
+ ROM_CONTINUE( 0x00000, 0x0800 )
+
+ ROM_REGION( 0xc0000, "grom", 0 )
+ ROM_LOAD( "sb_grom00", 0x00000, 0x20000, CRC(22f6ce56) SHA1(8e423122384257d9c5d8f48192ff6fa1f544fd97) )
+ ROM_LOAD( "sb_grom01", 0x20000, 0x20000, CRC(6cc7ad6f) SHA1(d601b9bb81f26ad86e5cc053cab055831331ccde) )
+ ROM_LOAD( "sb_grom02", 0x40000, 0x20000, CRC(475134ef) SHA1(5920e7a211f1b2234e8a3f51e570303c3787d8fd) )
+
+ ROM_REGION( 0x40000, "oki", 0 )
+ ROM_LOAD( "sb_srom0", 0x00000, 0x20000, CRC(6ff390b9) SHA1(f31dae9e31f3fc83b9253e49fd4204820db3587e) )
+ROM_END
+
+
ROM_START( pokrdice )
ROM_REGION( 0x1c000, "maincpu", 0 )
ROM_LOAD( "pd-v17.u5", 0x04000, 0x4000, CRC(5e24be82) SHA1(97e50cc023ff651fb09cc5e85a1bef1bc234ccb9) )
@@ -2709,7 +2746,7 @@ GAME( 1989, wfortunea,wfortune, wfortune, wfortune, driver_device, 0,
GAME( 1989, grmatch, 0, grmatch, grmatch, itech8_state, grmatch, ROT0, "Yankee Game Technology", "Grudge Match (Yankee Game Technology)", 0 )
/* Strata Bowling-style PCB */
-GAME( 1990, stratab, 0, stratab_hi, stratab, driver_device, 0, ROT270, "Strata/Incredible Technologies", "Strata Bowling (V3)", 0 )
+GAME( 1990, stratab, 0, stratab_hi, stratab, driver_device, 0, ROT270, "Strata/Incredible Technologies", "Strata Bowling (V3)", 0 ) // still says V1 in service mode?
GAME( 1990, stratab1, stratab, stratab_hi, stratab, driver_device, 0, ROT270, "Strata/Incredible Technologies", "Strata Bowling (V1)", 0 )
GAME( 1990, gtg, 0, stratab_hi, gtg, driver_device, 0, ROT0, "Strata/Incredible Technologies", "Golden Tee Golf (Joystick, v3.1)", 0 )
GAME( 1989, gtgt, gtg, stratab_hi, gtgt, driver_device, 0, ROT0, "Strata/Incredible Technologies", "Golden Tee Golf (Trackball, v2.0)", 0 )
@@ -2721,9 +2758,10 @@ GAME( 1991, gtg2j, gtg2, stratab_lo, gtg, driver_device, 0,
GAME( 1990, slikshot, 0, slikshot_hi, slikshot, itech8_state, slikshot, ROT90, "Grand Products/Incredible Technologies", "Slick Shot (V2.2)", MACHINE_MECHANICAL )
GAME( 1990, slikshot17,slikshot, slikshot_hi, slikshot, itech8_state, slikshot, ROT90, "Grand Products/Incredible Technologies", "Slick Shot (V1.7)", MACHINE_MECHANICAL )
GAME( 1990, slikshot16,slikshot, slikshot_hi, slikshot, itech8_state, slikshot, ROT90, "Grand Products/Incredible Technologies", "Slick Shot (V1.6)", MACHINE_MECHANICAL )
-GAME( 1990, dynobop, 0, slikshot_hi, dynobop, itech8_state, slikshot, ROT90, "Grand Products/Incredible Technologies", "Dyno Bop", MACHINE_MECHANICAL )
-GAME( 1990, sstrike, 0, sstrike, sstrike, itech8_state, sstrike, ROT270, "Strata/Incredible Technologies", "Super Strike Bowling", MACHINE_MECHANICAL )
-GAME( 1991, pokrdice, 0, slikshot_lo_noz80, pokrdice, driver_device, 0, ROT90, "Strata/Incredible Technologies", "Poker Dice", 0 )
+GAME( 1990, dynobop, 0, slikshot_hi, dynobop, itech8_state, slikshot, ROT90, "Grand Products/Incredible Technologies", "Dyno Bop", MACHINE_MECHANICAL )
+GAME( 1990, sstrike, 0, sstrike, sstrike, itech8_state, sstrike, ROT270, "Strata/Incredible Technologies", "Super Strike Bowling", MACHINE_MECHANICAL )
+GAME( 1991, pokrdice, 0, slikshot_lo_noz80, pokrdice, driver_device,0, ROT90, "Strata/Incredible Technologies", "Poker Dice", 0 )
+GAME( 1990, stratabs, stratab, sstrike, stratabs, itech8_state, sstrike, ROT270, "Strata/Incredible Technologies", "Strata Bowling (V1 4T, Super Strike Bowling type PCB)", MACHINE_NOT_WORKING ) // need to figure out the control hookup for this set, service mode indicates it's still a trackball like stratab
/* Hot Shots Tennis-style PCB */
GAME( 1990, hstennis, 0, hstennis_hi, hstennis, itech8_state, hstennis, ROT90, "Strata/Incredible Technologies", "Hot Shots Tennis (V1.1)", 0 )
diff --git a/src/mame/drivers/itt3030.cpp b/src/mame/drivers/itt3030.cpp
index 98a2f64c7cc..9e2808396ee 100644
--- a/src/mame/drivers/itt3030.cpp
+++ b/src/mame/drivers/itt3030.cpp
@@ -795,9 +795,8 @@ static MACHINE_CONFIG_START( itt3030, itt3030_state )
/* sound hardware */
MCFG_SPEAKER_STANDARD_MONO( "mono" )
- MCFG_SOUND_ADD( "beeper", BEEP, 0 )
+ MCFG_SOUND_ADD( "beeper", BEEP, 3250 )
MCFG_SOUND_ROUTE( ALL_OUTPUTS, "mono", 1.00 )
-
MACHINE_CONFIG_END
diff --git a/src/mame/drivers/jackal.cpp b/src/mame/drivers/jackal.cpp
index 5a14ddc2e46..b2b90ea120f 100644
--- a/src/mame/drivers/jackal.cpp
+++ b/src/mame/drivers/jackal.cpp
@@ -1,11 +1,10 @@
-// license:???
-// copyright-holders:Kenneth Lin
+// license:BSD-3-Clause
+// copyright-holders:Curt Coder
+// thanks-to:Kenneth Lin (original driver author)
/***************************************************************************
jackal.c
- Written by Kenneth Lin (kenneth_lin@ai.vancouver.bc.ca)
-
Notes:
- This game uses two 005885 gfx chip in parallel. The unique thing about it is
that the two 4bpp tilemaps from the two chips are merged to form a single
diff --git a/src/mame/drivers/jackie.cpp b/src/mame/drivers/jackie.cpp
index 26fb86afcbf..b1909466a64 100644
--- a/src/mame/drivers/jackie.cpp
+++ b/src/mame/drivers/jackie.cpp
@@ -497,7 +497,7 @@ static INPUT_PORTS_START( jackie )
PORT_START("SERVICE")
PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_OTHER ) PORT_CODE(KEYCODE_9) PORT_NAME("Attendent")
- PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_SPECIAL ) PORT_CUSTOM_MEMBER(DEVICE_SELF,jackie_state,hopper_r, (void *)nullptr ) PORT_NAME("HPSW") // hopper sensor
+ PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_SPECIAL ) PORT_CUSTOM_MEMBER(DEVICE_SELF,jackie_state,hopper_r, NULL) PORT_NAME("HPSW") // hopper sensor
PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_GAMBLE_PAYOUT )
PORT_SERVICE_NO_TOGGLE( 0x20, IP_ACTIVE_LOW ) // test (press during boot)
PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_GAMBLE_BOOK ) PORT_NAME("Statistics")
diff --git a/src/mame/drivers/jaguar.cpp b/src/mame/drivers/jaguar.cpp
index 17fa609b29c..e2fe252fe93 100644
--- a/src/mame/drivers/jaguar.cpp
+++ b/src/mame/drivers/jaguar.cpp
@@ -427,9 +427,10 @@ void jaguar_state::machine_reset()
}
/* configure banks for gfx/sound ROMs */
- UINT8 *romboard = memregion("romboard")->base();
- if (romboard != nullptr)
+ if (m_romboard_region != nullptr)
{
+ UINT8 *romboard = m_romboard_region->base();
+
/* graphics banks */
if (m_is_r3000)
{
@@ -617,7 +618,7 @@ WRITE32_MEMBER(jaguar_state::misc_control_w)
}
/* adjust banking */
- if (memregion("romboard")->base())
+ if (m_romboard_region != NULL)
{
membank("mainsndbank")->set_entry((data >> 1) & 7);
membank("dspsndbank")->set_entry((data >> 1) & 7);
@@ -776,10 +777,12 @@ WRITE32_MEMBER(jaguar_state::latch_w)
logerror("%08X:latch_w(%X)\n", space.device().safe_pcbase(), data);
/* adjust banking */
- if (memregion("romboard")->base())
+ if (m_romboard_region != NULL)
{
if (m_is_r3000)
+ {
membank("maingfxbank")->set_entry(data & 1);
+ }
membank("gpugfxbank")->set_entry(data & 1);
}
}
@@ -1915,7 +1918,8 @@ MACHINE_CONFIG_END
void jaguar_state::fix_endian( UINT32 addr, UINT32 size )
{
- UINT8 j[4], *ram = memregion("maincpu")->base();
+ UINT8 j[4];
+ UINT8 *ram = memregion("maincpu")->base();
UINT32 i;
size += addr;
logerror("File Loaded to address range %X to %X\n",addr,size-1);
diff --git a/src/mame/drivers/jpmimpct.cpp b/src/mame/drivers/jpmimpct.cpp
index 6aa2ca38027..0b789445235 100644
--- a/src/mame/drivers/jpmimpct.cpp
+++ b/src/mame/drivers/jpmimpct.cpp
@@ -862,7 +862,7 @@ static MACHINE_CONFIG_START( jpmimpct, jpmimpct_state )
MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.50)
MCFG_VIDEO_START_OVERRIDE(jpmimpct_state,jpmimpct)
-
+
MCFG_DEVICE_ADD("meters", METERS, 0)
MCFG_METERS_NUMBER(5)
MACHINE_CONFIG_END
@@ -1339,7 +1339,7 @@ MACHINE_CONFIG_START( impctawp, jpmimpct_state )
MCFG_STEPPER_OPTIC_CALLBACK(WRITELINE(jpmimpct_state, reel4_optic_cb))
MCFG_STARPOINT_48STEP_ADD("reel5")
MCFG_STEPPER_OPTIC_CALLBACK(WRITELINE(jpmimpct_state, reel5_optic_cb))
-
+
MCFG_DEVICE_ADD("meters", METERS, 0)
MCFG_METERS_NUMBER(5)
diff --git a/src/mame/drivers/jpmmps.cpp b/src/mame/drivers/jpmmps.cpp
index c80b2c8fa64..21711756088 100644
--- a/src/mame/drivers/jpmmps.cpp
+++ b/src/mame/drivers/jpmmps.cpp
@@ -169,9 +169,9 @@ static MACHINE_CONFIG_START( jpmmps, jpmmps_state )
MCFG_SOUND_ADD("sn", SN76489, SOUND_CLOCK)
MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.00)
-
+
MCFG_DEVICE_ADD("meters", METERS, 0)
- MCFG_METERS_NUMBER(9) // TODO: meters.cpp sets a max of 8
+ MCFG_METERS_NUMBER(9) // TODO: meters.cpp sets a max of 8
MCFG_DEFAULT_LAYOUT(layout_jpmmps)
MACHINE_CONFIG_END
diff --git a/src/mame/drivers/jpmsys5.cpp b/src/mame/drivers/jpmsys5.cpp
index 11911f1acdf..30ba6c0479b 100644
--- a/src/mame/drivers/jpmsys5.cpp
+++ b/src/mame/drivers/jpmsys5.cpp
@@ -473,7 +473,7 @@ WRITE_LINE_MEMBER(jpmsys5_state::pia_irq)
READ8_MEMBER(jpmsys5_state::u29_porta_r)
{
int meter_bit =0;
-
+
if (m_meters != nullptr)
{
int combined_meter = m_meters->GetActivity(0) | m_meters->GetActivity(1) |
@@ -492,7 +492,7 @@ READ8_MEMBER(jpmsys5_state::u29_porta_r)
return m_direct_port->read() | meter_bit;
}
-
+
else
return m_direct_port->read() | meter_bit;
}
@@ -880,7 +880,7 @@ MACHINE_CONFIG_START( jpmsys5_ym, jpmsys5_state )
MCFG_PTM6840_OUT0_CB(WRITE8(jpmsys5_state, u26_o1_callback))
MCFG_PTM6840_IRQ_CB(WRITELINE(jpmsys5_state, ptm_irq))
MCFG_DEFAULT_LAYOUT(layout_jpmsys5)
-
+
MCFG_DEVICE_ADD("meters", METERS, 0)
MCFG_METERS_NUMBER(8)
MACHINE_CONFIG_END
@@ -933,7 +933,7 @@ MACHINE_CONFIG_START( jpmsys5, jpmsys5_state )
MCFG_PTM6840_OUT0_CB(WRITE8(jpmsys5_state, u26_o1_callback))
MCFG_PTM6840_IRQ_CB(WRITELINE(jpmsys5_state, ptm_irq))
MCFG_DEFAULT_LAYOUT(layout_jpmsys5)
-
+
MCFG_DEVICE_ADD("meters", METERS, 0)
MCFG_METERS_NUMBER(8)
MACHINE_CONFIG_END
diff --git a/src/mame/drivers/jr100.cpp b/src/mame/drivers/jr100.cpp
index 8ec6d10dfc1..4cd7cac2c4c 100644
--- a/src/mame/drivers/jr100.cpp
+++ b/src/mame/drivers/jr100.cpp
@@ -119,7 +119,7 @@ WRITE8_MEMBER(jr100_state::jr100_via_w)
if(m_beep_en)
{
m_beeper->set_state(1);
- m_beeper->set_frequency(894886.25 / (double)(m_t1latch) / 2.0);
+ m_beeper->set_clock(894886.25 / (double)(m_t1latch) / 2.0);
}
}
m_via->write(space,offset,data);
@@ -203,8 +203,6 @@ INPUT_PORTS_END
void jr100_state::machine_start()
{
- m_beeper->set_frequency(0);
- m_beeper->set_state(0);
}
void jr100_state::machine_reset()
@@ -365,11 +363,11 @@ QUICKLOAD_LOAD_MEMBER( jr100_state,jr100)
}
static MACHINE_CONFIG_START( jr100, jr100_state )
+
/* basic machine hardware */
MCFG_CPU_ADD("maincpu",M6802, XTAL_14_31818MHz / 4) // clock devided internaly by 4
MCFG_CPU_PROGRAM_MAP(jr100_mem)
-
/* video hardware */
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(60)
diff --git a/src/mame/drivers/jr200.cpp b/src/mame/drivers/jr200.cpp
index f04d8bb1c07..1f820a2fcc4 100644
--- a/src/mame/drivers/jr200.cpp
+++ b/src/mame/drivers/jr200.cpp
@@ -312,7 +312,7 @@ WRITE8_MEMBER(jr200_state::jr200_beep_freq_w)
beep_freq = ((m_freq_reg[0]<<8) | (m_freq_reg[1] & 0xff)) + 1;
- m_beeper->set_frequency(84000 / beep_freq);
+ m_beeper->set_clock(84000 / beep_freq);
}
WRITE8_MEMBER(jr200_state::jr200_border_col_w)
@@ -512,8 +512,6 @@ GFXDECODE_END
void jr200_state::machine_start()
{
- m_beeper->set_frequency(0);
- m_beeper->set_state(0);
m_timer_d = machine().scheduler().timer_alloc(timer_expired_delegate(FUNC(jr200_state::timer_d_callback),this));
}
diff --git a/src/mame/drivers/juicebox.cpp b/src/mame/drivers/juicebox.cpp
index 3b6a24e568c..cb9d4fa068b 100644
--- a/src/mame/drivers/juicebox.cpp
+++ b/src/mame/drivers/juicebox.cpp
@@ -339,11 +339,11 @@ MACHINE_CONFIG_END
static INPUT_PORTS_START( juicebox )
PORT_START( "PORTG" )
- PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_BUTTON1 ) PORT_CHANGED_MEMBER(DEVICE_SELF, juicebox_state, port_changed, (void *)nullptr) PORT_NAME("RETURN") PORT_PLAYER(1)
- PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_BUTTON2 ) PORT_CHANGED_MEMBER(DEVICE_SELF, juicebox_state, port_changed, (void *)nullptr) PORT_NAME("PLAY") PORT_PLAYER(1)
- PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_BUTTON3 ) PORT_CHANGED_MEMBER(DEVICE_SELF, juicebox_state, port_changed, (void *)nullptr) PORT_NAME("FORWARD") PORT_PLAYER(1)
- PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_BUTTON4 ) PORT_CHANGED_MEMBER(DEVICE_SELF, juicebox_state, port_changed, (void *)nullptr) PORT_NAME("REVERSE") PORT_PLAYER(1)
- PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_BUTTON5 ) PORT_CHANGED_MEMBER(DEVICE_SELF, juicebox_state, port_changed, (void *)nullptr) PORT_NAME("STAR") PORT_PLAYER(1)
+ PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_BUTTON1 ) PORT_CHANGED_MEMBER(DEVICE_SELF, juicebox_state, port_changed, (void *)0) PORT_NAME("RETURN") PORT_PLAYER(1)
+ PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_BUTTON2 ) PORT_CHANGED_MEMBER(DEVICE_SELF, juicebox_state, port_changed, (void *)0) PORT_NAME("PLAY") PORT_PLAYER(1)
+ PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_BUTTON3 ) PORT_CHANGED_MEMBER(DEVICE_SELF, juicebox_state, port_changed, (void *)0) PORT_NAME("FORWARD") PORT_PLAYER(1)
+ PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_BUTTON4 ) PORT_CHANGED_MEMBER(DEVICE_SELF, juicebox_state, port_changed, (void *)0) PORT_NAME("REVERSE") PORT_PLAYER(1)
+ PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_BUTTON5 ) PORT_CHANGED_MEMBER(DEVICE_SELF, juicebox_state, port_changed, (void *)0) PORT_NAME("STAR") PORT_PLAYER(1)
INPUT_PORTS_END
/***************************************************************************
diff --git a/src/mame/drivers/kaneko16.cpp b/src/mame/drivers/kaneko16.cpp
index 96b3987b6de..b9c25759145 100644
--- a/src/mame/drivers/kaneko16.cpp
+++ b/src/mame/drivers/kaneko16.cpp
@@ -785,7 +785,7 @@ WRITE8_MEMBER(kaneko16_state::wingforc_oki_bank_w)
static ADDRESS_MAP_START( wingforc_soundport, AS_IO, 8, kaneko16_state )
ADDRESS_MAP_GLOBAL_MASK(0xff)
-// AM_RANGE(0x00, 0x00) // 02 written at boot
+// AM_RANGE(0x00, 0x00) // 02 written at boot
AM_RANGE(0x02, 0x03) AM_DEVREADWRITE("ymsnd", ym2151_device, read, write)
AM_RANGE(0x06, 0x06) AM_READ(soundlatch_byte_r)
AM_RANGE(0x0a, 0x0a) AM_DEVREADWRITE("oki", okim6295_device, read, write)
@@ -1143,8 +1143,8 @@ static INPUT_PORTS_START( wingforc )
PORT_BIT( 0x0400, IP_ACTIVE_LOW, IPT_UNKNOWN )
PORT_BIT( 0x0800, IP_ACTIVE_LOW, IPT_UNKNOWN )
PORT_BIT( 0x1000, IP_ACTIVE_LOW, IPT_UNKNOWN )
- PORT_SERVICE_NO_TOGGLE( 0x2000, IP_ACTIVE_LOW ) // unused
- PORT_BIT( 0x4000, IP_ACTIVE_LOW, IPT_TILT ) // unused
+ PORT_SERVICE_NO_TOGGLE( 0x2000, IP_ACTIVE_LOW ) // unused
+ PORT_BIT( 0x4000, IP_ACTIVE_LOW, IPT_TILT ) // unused
PORT_BIT( 0x8000, IP_ACTIVE_LOW, IPT_SERVICE1 )
INPUT_PORTS_END
@@ -2454,15 +2454,18 @@ MACHINE_CONFIG_END
*/
void kaneko16_state::kaneko16_unscramble_tiles(const char *region)
{
- UINT8 *RAM = memregion(region)->base();
- int size = memregion(region)->bytes();
- int i;
+ memory_region *tile_region = memregion(region);
+ if (tile_region == NULL)
+ {
+ return;
+ }
- if (RAM == nullptr) return;
+ UINT8 *ram = tile_region->base();
+ int size = tile_region->bytes();
- for (i = 0; i < size; i ++)
+ for (int i = 0; i < size; i ++)
{
- RAM[i] = ((RAM[i] & 0xF0)>>4) + ((RAM[i] & 0x0F)<<4);
+ ram[i] = ((ram[i] & 0xF0) >> 4) + ((ram[i] & 0x0F) << 4);
}
}
@@ -3339,6 +3342,69 @@ ROM_START( gtmra )
/* Not present on this board */
ROM_END
+ROM_START( gtmrb )
+ ROM_REGION( 0x100000, "maincpu", 0 ) /* 68000 Code */
+ ROM_LOAD16_BYTE( "mmp0x1.u514", 0x000000, 0x080000, CRC(6c163f12) SHA1(7f33d1475dcb754c83f68b5fb686fb236ba81256) )
+ ROM_LOAD16_BYTE( "mmp1x1.u513", 0x000001, 0x080000, CRC(424dc7e1) SHA1(a9cb8d1fd0549c8c77462552c649c180c30eef89) )
+
+ ROM_REGION( 0x020000, "mcudata", 0 ) /* MCU Code */
+ ROM_LOAD16_WORD_SWAP( "mmd0x1.u124", 0x000000, 0x020000, CRC(3d7cb329) SHA1(053106acde642a414fde0b01105fe6762b6a10f6) ) // == mmd0x2
+
+ ROM_REGION( 0x840000, "gfx1", 0 ) /* Sprites */
+ ROM_LOAD( "mm-200-402-s0.bin", 0x000000, 0x200000, CRC(c0ab3efc) SHA1(e6cd15480977b036234d91e6f3a6e21b7f0a3c3e) )
+ ROM_LOAD( "mm-201-403-s1.bin", 0x200000, 0x200000, CRC(cf6b23dc) SHA1(ccfd0b17507e091e55c169361cd6a6b19641b717) )
+ ROM_LOAD( "mm-202-404-s2.bin", 0x400000, 0x200000, CRC(8f27f5d3) SHA1(219a86446ce2556682009d8aff837480f040a01e) )
+ ROM_LOAD( "mm-203-405-s3.bin", 0x600000, 0x080000, CRC(e9747c8c) SHA1(2507102ec34755c6f110eadb3444e6d3a3474051) )
+ ROM_LOAD16_BYTE( "mms1x1.u30", 0x800001, 0x020000, CRC(9463825c) SHA1(696bbfc816b564b3cff1487e1b848d375951f923) )
+ ROM_LOAD16_BYTE( "mms0x1.u29", 0x800000, 0x020000, CRC(bd22b7d2) SHA1(ef82d00d72439590c71aed33ecfabc6ee71a6ff9) ) // == mms0x2
+
+ ROM_REGION( 0x200000, "gfx2", 0 ) /* Tiles (scrambled) */
+ ROM_LOAD( "mm-300-406-a0.bin", 0x000000, 0x200000, CRC(b15f6b7f) SHA1(5e84919d788add53fc87f4d85f437df413b1dbc5) )
+
+ ROM_REGION( 0x200000, "gfx3", 0 ) /* Tiles (scrambled) */
+ ROM_COPY("gfx2",0x000000,0,0x200000) // it isn't on the board twice.
+
+ ROM_REGION( 0x400000, "oki1", 0 ) /* Samples, plus room for expansion */
+ ROM_LOAD( "mm-100-401-e0.bin", 0x000000, 0x100000, CRC(b9cbfbee) SHA1(051d48a68477ef9c29bd5cc0bb7955d513a0ab94) ) // 16 x $10000
+
+ ROM_REGION( 0x100000, "oki2", ROMREGION_ERASE00 ) /* Samples */
+ /* Not present on this board */
+ROM_END
+
+
+ROM_START( gtmro )
+ ROM_REGION( 0x100000, "maincpu", 0 ) /* 68000 Code */
+ ROM_LOAD16_BYTE( "u514.bin", 0x000000, 0x080000, CRC(2e857685) SHA1(43b6d88df51a3b4fb0cb910f63a5ec26b06e216a) )
+ ROM_LOAD16_BYTE( "u513.bin", 0x000001, 0x080000, CRC(d5003870) SHA1(6a4353fa8f94a119c23f232861d790f50be26ea8) )
+
+ ROM_REGION( 0x020000, "mcudata", 0 ) /* MCU Code */
+ ROM_LOAD16_WORD_SWAP( "mmd0x0.u124", 0x000000, 0x020000, CRC(e1f6159e) SHA1(e4af85036756482d6fa27494842699e2647809c7) )
+
+ ROM_REGION( 0x800000, "gfx1", 0 ) /* Sprites */
+ ROM_LOAD16_BYTE( "mm200-e.bin", 0x000000, 0x100000, CRC(eb104408) SHA1(a7805597161dc5acd2804d607dd0acac0c40111d) )
+ ROM_LOAD16_BYTE( "mm200-o.bin", 0x000001, 0x100000, CRC(b6d04e7c) SHA1(1fa9d6b967724ed0c9e6ae3eda7089a081120d54) )
+ ROM_LOAD16_BYTE( "mm201-e.bin", 0x200000, 0x100000, CRC(b8c64e14) SHA1(8e2b19f0ba715dfdf0d423a41989e715145adbeb) )
+ ROM_LOAD16_BYTE( "mm201-o.bin", 0x200001, 0x100000, CRC(3ecd6c0a) SHA1(cb48564e2bd3014eeaad9cfa589bdef3f828c282) )
+ ROM_LOAD16_BYTE( "mm202-e.bin", 0x400000, 0x100000, CRC(f0fd5688) SHA1(a3f5edfef253c81b27434519b0b9527f6c9a6e82) )
+ ROM_LOAD16_BYTE( "mm202-o.bin", 0x400001, 0x100000, CRC(e0fe1b2b) SHA1(e66bd09eed6dfea524d8610a3c7e1792a1ff6286) )
+ ROM_LOAD16_BYTE( "mm203-e.bin", 0x600000, 0x100000, CRC(b9001f28) SHA1(b112c17b960a535a543565ca2e22734c7c510f18) )
+ ROM_LOAD16_BYTE( "mm203-o.bin", 0x600001, 0x100000, CRC(2ed6227d) SHA1(d9abbb739ef15437194c90cd01d5d82dbd4b7859) )
+
+ ROM_REGION( 0x200000, "gfx2", 0 ) /* Tiles (scrambled) */
+ ROM_LOAD16_BYTE( "mm300-e.u53", 0x000000, 0x100000, CRC(f9ee708d) SHA1(4c11a9574ea815a87d7e4af04db4368b14bf7530) )
+ ROM_LOAD16_BYTE( "mm300-o.u54", 0x000001, 0x100000, CRC(76299353) SHA1(01997905ba019d770ac1998633f4ebf6f91a3945) )
+
+ ROM_REGION( 0x200000, "gfx3", 0 ) /* Tiles (scrambled) */
+ ROM_COPY("gfx2",0x000000,0,0x200000) // it isn't on the board twice.
+
+ ROM_REGION( 0x400000, "oki1", 0 ) /* Samples, plus room for expansion */
+ ROM_LOAD( "mm-100-401-e0.bin", 0x000000, 0x100000, CRC(b9cbfbee) SHA1(051d48a68477ef9c29bd5cc0bb7955d513a0ab94) ) // 16 x $10000
+
+ ROM_REGION( 0x100000, "oki2", ROMREGION_ERASE00 ) /* Samples */
+ /* Not present on this board */
+ROM_END
+
+
/* The evolution and USA versions seem to be more like GTMR 1.5, they have some fairly significant changes */
/* This version displays:
@@ -4343,8 +4409,10 @@ GAME( 1993, wingforc, 0, wingforc, wingforc, kaneko16_state, kan
GAME( 1994, bonkadv, 0, bonkadv , bonkadv, kaneko16_gtmr_state, gtmr, ROT0, "Kaneko", "B.C. Kid / Bonk's Adventure / Kyukyoku!! PC Genjin", MACHINE_SUPPORTS_SAVE )
GAME( 1994, bloodwar, 0, bloodwar, bloodwar, kaneko16_gtmr_state, gtmr, ROT0, "Kaneko", "Blood Warrior", MACHINE_SUPPORTS_SAVE )
GAME( 1994, oedfight, bloodwar, bloodwar, bloodwar, kaneko16_gtmr_state, gtmr, ROT0, "Kaneko", "Oedo Fight (Japan Bloodshed Ver.)", MACHINE_SUPPORTS_SAVE )
-GAME( 1994, gtmr, 0, gtmr, gtmr, kaneko16_gtmr_state, gtmr, ROT0, "Kaneko", "1000 Miglia: Great 1000 Miles Rally (94/07/18)", MACHINE_SUPPORTS_SAVE )
+GAME( 1994, gtmr, 0, gtmr, gtmr, kaneko16_gtmr_state, gtmr, ROT0, "Kaneko", "1000 Miglia: Great 1000 Miles Rally (94/07/18)", MACHINE_SUPPORTS_SAVE ) // this set shows 'PCB by Jinwei Co Ltd. ROC'
GAME( 1994, gtmra, gtmr, gtmr, gtmr, kaneko16_gtmr_state, gtmr, ROT0, "Kaneko", "1000 Miglia: Great 1000 Miles Rally (94/06/13)", MACHINE_SUPPORTS_SAVE )
+GAME( 1994, gtmrb, gtmr, gtmr, gtmr, kaneko16_gtmr_state, gtmr, ROT0, "Kaneko", "1000 Miglia: Great 1000 Miles Rally (94/05/26)", MACHINE_SUPPORTS_SAVE )
+GAME( 1994, gtmro, gtmr, gtmr, gtmr, kaneko16_gtmr_state, gtmr, ROT0, "Kaneko", "1000 Miglia: Great 1000 Miles Rally (94/05/10)", MACHINE_SUPPORTS_SAVE ) // possible prototype
GAME( 1994, gtmre, gtmr, gtmre, gtmr, kaneko16_gtmr_state, gtmr, ROT0, "Kaneko", "Great 1000 Miles Rally: Evolution Model!!! (94/09/06)", MACHINE_SUPPORTS_SAVE )
GAME( 1994, gtmrusa, gtmr, gtmre, gtmr, kaneko16_gtmr_state, gtmr, ROT0, "Kaneko", "Great 1000 Miles Rally: U.S.A Version! (94/09/06)", MACHINE_SUPPORTS_SAVE ) // U.S.A version seems part of the title, rather than region
GAME( 1995, gtmr2, 0, gtmr2, gtmr2, kaneko16_gtmr_state, gtmr, ROT0, "Kaneko", "Mille Miglia 2: Great 1000 Miles Rally (95/05/24)", MACHINE_SUPPORTS_SAVE )
diff --git a/src/mame/drivers/kaypro.cpp b/src/mame/drivers/kaypro.cpp
index 56bd657f8ff..56c99399790 100644
--- a/src/mame/drivers/kaypro.cpp
+++ b/src/mame/drivers/kaypro.cpp
@@ -216,7 +216,7 @@ static MACHINE_CONFIG_START( kayproii, kaypro_state )
/* sound hardware */
MCFG_SPEAKER_STANDARD_MONO("mono")
- MCFG_SOUND_ADD("beeper", BEEP, 0)
+ MCFG_SOUND_ADD("beeper", BEEP, 950) /* piezo-device needs to be measured */
MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.00)
/* devices */
@@ -285,7 +285,7 @@ static MACHINE_CONFIG_START( kaypro2x, kaypro_state )
/* sound hardware */
MCFG_SPEAKER_STANDARD_MONO("mono")
- MCFG_SOUND_ADD("beeper", BEEP, 0)
+ MCFG_SOUND_ADD("beeper", BEEP, 950) /* piezo-device needs to be measured */
MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.00)
/* devices */
diff --git a/src/mame/drivers/kurukuru.cpp b/src/mame/drivers/kurukuru.cpp
index ef8248de862..edb288cb4e1 100644
--- a/src/mame/drivers/kurukuru.cpp
+++ b/src/mame/drivers/kurukuru.cpp
@@ -363,6 +363,44 @@ static ADDRESS_MAP_START( kurukuru_io, AS_IO, 8, kurukuru_state )
AM_RANGE(0xd0, 0xd0) AM_MIRROR(0x0f) AM_DEVWRITE("ym2149", ay8910_device, data_w)
ADDRESS_MAP_END
+static ADDRESS_MAP_START( ppj_map, AS_PROGRAM, 8, kurukuru_state )
+ AM_RANGE(0x0000, 0x5fff) AM_ROM
+ AM_RANGE(0x6000, 0xdfff) AM_ROMBANK("bank1")
+ AM_RANGE(0xe000, 0xffff) AM_RAM AM_SHARE("nvram")
+ADDRESS_MAP_END
+
+static ADDRESS_MAP_START( ppj_io, AS_IO, 8, kurukuru_state )
+ ADDRESS_MAP_GLOBAL_MASK(0xff)
+ AM_RANGE(0x00, 0x00) AM_MIRROR(0x0f) AM_WRITE(kurukuru_bankswitch_w)
+ AM_RANGE(0x10, 0x13) AM_MIRROR(0x0c) AM_DEVREADWRITE( "v9938", v9938_device, read, write )
+ AM_RANGE(0x30, 0x30) AM_MIRROR(0x0f) AM_WRITE(kurukuru_soundlatch_w)
+ AM_RANGE(0x40, 0x40) AM_MIRROR(0x0f) AM_READ_PORT("DSW1")
+ AM_RANGE(0x50, 0x50) AM_MIRROR(0x0f) AM_WRITE(kurukuru_out_latch_w)
+ AM_RANGE(0x60, 0x60) AM_MIRROR(0x0f) AM_READ_PORT("IN1")
+ AM_RANGE(0x70, 0x70) AM_MIRROR(0x0f) AM_READ_PORT("IN0")
+ AM_RANGE(0xc0, 0xc0) AM_MIRROR(0x0f) AM_DEVWRITE("ym2149", ay8910_device, address_w)
+ AM_RANGE(0xc8, 0xc8) AM_MIRROR(0x0f) AM_DEVREAD("ym2149", ay8910_device, data_r)
+ AM_RANGE(0xd0, 0xd0) AM_MIRROR(0x0f) AM_DEVWRITE("ym2149", ay8910_device, data_w)
+ADDRESS_MAP_END
+/*
+
+ 00h W --> bankswitching reg...
+
+ 10h W --> 00's \
+ 11h W --> 02 8f 20 91... > V9938 OK
+ 13h W --> /
+
+ 30h W --> soundlatch...
+ 40h R --> (very begining) seems DSW1
+ 50h W --> Output port (counters)
+ 60h R --> Input port
+ 70h R --> Input port
+
+ C0h W --> YM2149 address W
+ C8h R --> YM2149 data R --> DSW2
+ D0h W --> YM2149 data W
+
+*/
// Audio CPU
@@ -401,12 +439,12 @@ READ8_MEMBER(kurukuru_state::kurukuru_adpcm_timer_irqack_r)
}
-static ADDRESS_MAP_START( audio_map, AS_PROGRAM, 8, kurukuru_state )
+static ADDRESS_MAP_START( kurukuru_audio_map, AS_PROGRAM, 8, kurukuru_state )
AM_RANGE(0x0000, 0xf7ff) AM_ROM
AM_RANGE(0xf800, 0xffff) AM_RAM
ADDRESS_MAP_END
-static ADDRESS_MAP_START( audio_io, AS_IO, 8, kurukuru_state )
+static ADDRESS_MAP_START( kurukuru_audio_io, AS_IO, 8, kurukuru_state )
ADDRESS_MAP_GLOBAL_MASK(0x7f)
AM_RANGE(0x40, 0x40) AM_MIRROR(0x0f) AM_WRITE(kurukuru_adpcm_data_w)
AM_RANGE(0x50, 0x50) AM_MIRROR(0x0f) AM_WRITE(kurukuru_adpcm_reset_w)
@@ -414,6 +452,23 @@ static ADDRESS_MAP_START( audio_io, AS_IO, 8, kurukuru_state )
AM_RANGE(0x70, 0x70) AM_MIRROR(0x0f) AM_READ(kurukuru_adpcm_timer_irqack_r)
ADDRESS_MAP_END
+static ADDRESS_MAP_START( ppj_audio_map, AS_PROGRAM, 8, kurukuru_state )
+ AM_RANGE(0x0000, 0xf7ff) AM_ROM
+ AM_RANGE(0xf800, 0xffff) AM_RAM
+ADDRESS_MAP_END
+
+static ADDRESS_MAP_START( ppj_audio_io, AS_IO, 8, kurukuru_state )
+ ADDRESS_MAP_GLOBAL_MASK(0x7f)
+ AM_RANGE(0x20, 0x20) AM_MIRROR(0x0f) AM_WRITE(kurukuru_adpcm_data_w)
+ AM_RANGE(0x30, 0x30) AM_MIRROR(0x0f) AM_WRITE(kurukuru_adpcm_reset_w)
+ AM_RANGE(0x40, 0x40) AM_MIRROR(0x0f) AM_READ(kurukuru_soundlatch_r)
+ AM_RANGE(0x50, 0x50) AM_MIRROR(0x0f) AM_READ(kurukuru_adpcm_timer_irqack_r)
+ADDRESS_MAP_END
+/*
+ 30h -W --> 0x0b
+ 40h R- --> soundlatch...
+ 50h R- --> adpcm irq ack
+*/
/* YM2149 ports */
WRITE8_MEMBER(kurukuru_state::ym2149_aout_w)
@@ -441,8 +496,8 @@ static INPUT_PORTS_START( kurukuru )
PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_BUTTON3 ) PORT_CODE(KEYCODE_C) PORT_NAME("3rd (Pyoko)")
PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_BUTTON4 ) PORT_CODE(KEYCODE_V) PORT_NAME("4th (Kunio)")
PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_BUTTON5 ) PORT_CODE(KEYCODE_B) PORT_NAME("5th (Pyon Pyon)")
- PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_BUTTON6 ) PORT_CODE(KEYCODE_N) PORT_NAME("Unknown A0h - bit5")
- PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_BUTTON7 ) PORT_CODE(KEYCODE_M) PORT_NAME("Unknown A0h - bit6")
+ PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_OTHER ) PORT_CODE(KEYCODE_N) PORT_NAME("Unknown A0h - bit5")
+ PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_OTHER ) PORT_CODE(KEYCODE_M) PORT_NAME("Unknown A0h - bit6")
PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_START1 )
PORT_START("IN1")
@@ -511,6 +566,81 @@ static INPUT_PORTS_START( kurukuru )
INPUT_PORTS_END
+static INPUT_PORTS_START( ppj )
+ PORT_START("IN0")
+ PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_BUTTON1 ) PORT_CODE(KEYCODE_Z) PORT_NAME("1st (Boketa)")
+ PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_BUTTON2 ) PORT_CODE(KEYCODE_X) PORT_NAME("2nd (Kunio)")
+ PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_BUTTON3 ) PORT_CODE(KEYCODE_C) PORT_NAME("3rd (Pyon-Pyon)")
+ PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_BUTTON4 ) PORT_CODE(KEYCODE_V) PORT_NAME("4th (Pyokorin)")
+ PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_BUTTON5 ) PORT_CODE(KEYCODE_B) PORT_NAME("5th (Botechin)")
+ PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_OTHER ) PORT_CODE(KEYCODE_S) PORT_NAME("Unknown 70h - bit5")
+ PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_OTHER ) PORT_CODE(KEYCODE_D) PORT_NAME("Unknown 70h - bit6")
+ PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_START1 )
+
+ PORT_START("IN1")
+ PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_SERVICE ) PORT_CODE(KEYCODE_9) PORT_NAME("Bookkeeping")
+ PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_COIN3 ) PORT_NAME("Medal In")
+ PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_SERVICE ) PORT_CODE(KEYCODE_0) PORT_NAME("Reset Button")
+ PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_COIN2 )
+ PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_OTHER ) PORT_CODE(KEYCODE_A) PORT_NAME("Unknown 60h - bit4")
+ PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_COIN1 ) PORT_IMPULSE (2)
+ PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_SPECIAL ) PORT_READ_LINE_DEVICE_MEMBER("hopper", ticket_dispenser_device, line_r) // hopper feedback
+ PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_GAMBLE_PAYOUT )
+
+ PORT_START("DSW1") // found in the PCB: 00000000 (arranged for sale since they are uncommon settings)
+ PORT_DIPNAME( 0x07, 0x03, "Coinage A (100 Y)" ) PORT_DIPLOCATION("DSW1:1,2,3")
+ PORT_DIPSETTING( 0x00, "1 Coin / 1 Medal" )
+ PORT_DIPSETTING( 0x04, "1 Coin / 2 Medal" )
+ PORT_DIPSETTING( 0x02, "1 Coin / 3 Medal" )
+ PORT_DIPSETTING( 0x06, "1 Coin / 4 Medal" )
+ PORT_DIPSETTING( 0x01, "1 Coin / 5 Medal" )
+ PORT_DIPSETTING( 0x05, "1 Coin / 6 Medal" )
+ PORT_DIPSETTING( 0x03, "1 Coin / 10 Medal" )
+ PORT_DIPSETTING( 0x07, "1 Coin / 11 Medal" )
+ PORT_DIPNAME( 0x08, 0x00, DEF_STR( Unknown ) ) PORT_DIPLOCATION("DSW1:4")
+ PORT_DIPSETTING( 0x08, DEF_STR( Off ) )
+ PORT_DIPSETTING( 0x00, DEF_STR( On ) )
+ PORT_DIPNAME( 0x10, 0x00, "Unknown (related to coin1/payout)") PORT_DIPLOCATION("DSW1:5")
+ PORT_DIPSETTING( 0x10, DEF_STR( Off ) )
+ PORT_DIPSETTING( 0x00, DEF_STR( On ) )
+ PORT_DIPNAME( 0x20, 0x00, "Coinage Config" ) PORT_DIPLOCATION("DSW1:6")
+ PORT_DIPSETTING( 0x00, "Coin 1 = Normal" )
+ PORT_DIPSETTING( 0x20, "Coin 1 = Payout" )
+ PORT_DIPNAME( 0x40, 0x00, "Payout Mode" ) PORT_DIPLOCATION("DSW1:7")
+ PORT_DIPSETTING( 0x40, "Manual" )
+ PORT_DIPSETTING( 0x00, "Automatic" )
+ PORT_DIPNAME( 0x80, 0x00, "Repeat Last Bet") PORT_DIPLOCATION("DSW1:8")
+ PORT_DIPSETTING( 0x80, DEF_STR( No ) )
+ PORT_DIPSETTING( 0x00, DEF_STR( Yes ) )
+
+ PORT_START("DSW2") // found in the PCB: 00000000 (arranged for sale since they are uncommon settings)
+ PORT_DIPNAME( 0x07, 0x01, "Percentage" ) PORT_DIPLOCATION("DSW2:1,2,3")
+ PORT_DIPSETTING( 0x07, "50%" )
+ PORT_DIPSETTING( 0x03, "60%" )
+ PORT_DIPSETTING( 0x05, "70%" )
+ PORT_DIPSETTING( 0x01, "75%" )
+ PORT_DIPSETTING( 0x06, "80%" )
+ PORT_DIPSETTING( 0x02, "85%" )
+ PORT_DIPSETTING( 0x04, "90%" )
+ PORT_DIPSETTING( 0x00, "95%" )
+ PORT_DIPNAME( 0x08, 0x00, "Winwave" ) PORT_DIPLOCATION("DSW2:4")
+ PORT_DIPSETTING( 0x08, "Small" )
+ PORT_DIPSETTING( 0x00, "Big" )
+ PORT_DIPNAME( 0x10, 0x00, "M.Medal" ) PORT_DIPLOCATION("DSW2:5")
+ PORT_DIPSETTING( 0x10, DEF_STR( Off ) )
+ PORT_DIPSETTING( 0x00, DEF_STR( On ) )
+ PORT_DIPNAME( 0x60, 0x60, "HG" ) PORT_DIPLOCATION("DSW2:6,7")
+ PORT_DIPSETTING( 0x60, "20-1" )
+ PORT_DIPSETTING( 0x20, "50-1" )
+ PORT_DIPSETTING( 0x40, "100-1" )
+ PORT_DIPSETTING( 0x00, "200-1" )
+ PORT_DIPNAME( 0x80, 0x80, DEF_STR( Unknown ) ) PORT_DIPLOCATION("DSW2:8")
+ PORT_DIPSETTING( 0x80, DEF_STR( Off ) )
+ PORT_DIPSETTING( 0x00, DEF_STR( On ) )
+
+INPUT_PORTS_END
+
+
/*************************************************
* Machine Start & Reset Routines *
*************************************************/
@@ -537,8 +667,43 @@ static MACHINE_CONFIG_START( kurukuru, kurukuru_state )
MCFG_CPU_IO_MAP(kurukuru_io)
MCFG_CPU_ADD("audiocpu", Z80, CPU_CLOCK)
- MCFG_CPU_PROGRAM_MAP(audio_map)
- MCFG_CPU_IO_MAP(audio_io)
+ MCFG_CPU_PROGRAM_MAP(kurukuru_audio_map)
+ MCFG_CPU_IO_MAP(kurukuru_audio_io)
+
+ MCFG_NVRAM_ADD_0FILL("nvram")
+
+ /* video hardware */
+ MCFG_V9938_ADD("v9938", "screen", VDP_MEM, MAIN_CLOCK)
+ MCFG_V99X8_INTERRUPT_CALLBACK(WRITELINE(kurukuru_state,kurukuru_vdp_interrupt))
+ MCFG_V99X8_SCREEN_ADD_NTSC("screen", "v9938", MAIN_CLOCK)
+
+ MCFG_TICKET_DISPENSER_ADD("hopper", attotime::from_msec(HOPPER_PULSE), TICKET_MOTOR_ACTIVE_LOW, TICKET_STATUS_ACTIVE_LOW )
+
+ /* sound hardware */
+ MCFG_SPEAKER_STANDARD_MONO("mono")
+ MCFG_SOUND_ADD("ym2149", YM2149, YM2149_CLOCK)
+ MCFG_AY8910_PORT_B_READ_CB(IOPORT("DSW2"))
+ MCFG_AY8910_PORT_A_WRITE_CB(WRITE8(kurukuru_state, ym2149_aout_w))
+ MCFG_AY8910_PORT_B_WRITE_CB(WRITE8(kurukuru_state, ym2149_bout_w))
+ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.80)
+
+ MCFG_SOUND_ADD("adpcm", MSM5205, M5205_CLOCK)
+ MCFG_MSM5205_VCLK_CB(WRITELINE(kurukuru_state, kurukuru_msm5205_vck))
+ MCFG_MSM5205_PRESCALER_SELECTOR(MSM5205_S48_4B) /* changed on the fly */
+ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.80)
+MACHINE_CONFIG_END
+
+
+static MACHINE_CONFIG_START( ppj, kurukuru_state )
+
+ /* basic machine hardware */
+ MCFG_CPU_ADD("maincpu",Z80, CPU_CLOCK)
+ MCFG_CPU_PROGRAM_MAP(ppj_map)
+ MCFG_CPU_IO_MAP(ppj_io)
+
+ MCFG_CPU_ADD("audiocpu", Z80, CPU_CLOCK)
+ MCFG_CPU_PROGRAM_MAP(ppj_audio_map)
+ MCFG_CPU_IO_MAP(ppj_audio_io)
MCFG_NVRAM_ADD_0FILL("nvram")
@@ -570,6 +735,8 @@ MACHINE_CONFIG_END
***************************************************************************/
+/* Kuru Kuru Pyon Pyon.
+*/
ROM_START( kurukuru )
ROM_REGION( 0x08000, "maincpu", 0 )
ROM_LOAD( "kp_17l.ic17", 0x00000, 0x08000, CRC(9b552ebc) SHA1(07d0e62b7fdad381963a345376b72ad31eb7b96d) ) // program code
@@ -590,6 +757,30 @@ ROM_START( kurukuru )
ROM_LOAD( "7908b-4.ic32", 0x0600, 0x0034, CRC(bddf925e) SHA1(861cf5966444d0c0392241e5cfa08db475fb439a) )
ROM_END
+/* Pyon Pyon Jump.
+ Ver 1.40.
+*/
+ROM_START( ppj )
+ ROM_REGION( 0x08000, "maincpu", 0 )
+ ROM_LOAD( "ppj17.ic17", 0x00000, 0x08000, CRC(5d9c9ceb) SHA1(0f52c8a0aaaf978afeb07e56493399133b4ce781) ) // program code
+
+ ROM_REGION( 0x40000, "user1", 0 ) // maincpu banked roms
+ ROM_FILL( 0x00000, 0x10000, 0xff ) // ic23: unpopulated
+ ROM_LOAD( "ppj18.ic18", 0x10000, 0x10000, CRC(69612fc6) SHA1(c6de2ec0db8ad2ace91c3a557a03ed73d0e7336d) ) // ic18: gfx set 1
+ ROM_LOAD( "ppj10.ic10", 0x20000, 0x10000, CRC(95314d84) SHA1(1a8cf50e9a1e9e8a8f5702cc735ec993ddd2fdce) ) // ic10: gfx set 2
+ ROM_FILL( 0x30000, 0x10000, 0xff ) // dummy entry for when no romchip is selected
+
+ ROM_REGION( 0x10000, "audiocpu", 0 )
+ ROM_LOAD( "ppj4.ic4", 0x00000, 0x10000, CRC(6573a0a0) SHA1(6bb99e153a22fce01a71efb3bba6c6cc04bbf8b1) ) // code & adpcm samples
+
+ ROM_REGION( 0x800, "plds", 0 )
+ ROM_LOAD( "pal16l8a_no21.ic26", 0x0000, 0x0104, CRC(414c8b50) SHA1(17f562c50a2bca41aeb7a1a7cb3916853cea0d24) )
+ ROM_LOAD( "pal16l8a_no22.ic27", 0x0200, 0x0104, CRC(ee2b9257) SHA1(15c79b143eafc7915e0f376a87c01afad8fad2b9) )
+ ROM_LOAD( "pal16l8a_no23.ic12", 0x0400, 0x0104, CRC(8a7fbbe0) SHA1(aab8d6b77d46cf2d8620861af1f7c039b6dcda99) )
+ ROM_LOAD( "pal12l6a_7908b-4.ic32", 0x0600, 0x0034, CRC(bddf925e) SHA1(861cf5966444d0c0392241e5cfa08db475fb439a) ) // identical to kurukuru...
+ROM_END
+
-/* YEAR NAME PARENT MACHINE INPUT STATE INIT ROT COMPANY FULLNAME FLAGS */
-GAME( 199?, kurukuru, 0, kurukuru, kurukuru, driver_device, 0, ROT0, "Success / Taiyo Jidoki", "Kuru Kuru Pyon Pyon (Japan)", 0 )
+/* YEAR NAME PARENT MACHINE INPUT STATE INIT ROT COMPANY FULLNAME FLAGS */
+GAME( 199?, kurukuru, 0, kurukuru, kurukuru, driver_device, 0, ROT0, "Success / Taiyo Jidoki", "Kuru Kuru Pyon Pyon (Japan)", 0 )
+GAME( 199?, ppj, 0, ppj, ppj, driver_device, 0, ROT0, "Success / Taiyo Jidoki", "Pyon Pyon Jump (V1.40, Japan)", 0 )
diff --git a/src/mame/drivers/ladyfrog.cpp b/src/mame/drivers/ladyfrog.cpp
index 9a4782366d9..cf99c2192eb 100644
--- a/src/mame/drivers/ladyfrog.cpp
+++ b/src/mame/drivers/ladyfrog.cpp
@@ -365,7 +365,24 @@ ROM_START( toucheme )
ROM_LOAD( "8.ic10", 0x20000, 0x10000, CRC(fc6808bf) SHA1(f1f1b75a79dfdb500012f9b52c6364f0a13dce2d) )
ROM_END
+ROM_START( touchemea )
+ ROM_REGION( 0x10000, "maincpu", 0 )
+ ROM_LOAD( "2.ic107", 0x0000, 0x10000, CRC(4e72312d) SHA1(a7d178608f05c87a53c650298b903bcf34b3b755) ) // sldh
+
+ ROM_REGION( 0x10000, "audiocpu", 0 )
+ ROM_LOAD( "1.ic115", 0x0000, 0x8000, CRC(902589aa) SHA1(d60088fc31a67fec91f908f671af77bb87a5e59c) )
+
+ ROM_REGION( 0x60000, "gfx1", ROMREGION_INVERT )
+ ROM_LOAD( "3.ic32", 0x30000, 0x10000, CRC(223b4435) SHA1(fb5a4096012093bae5fda213a5de317e63a88ec3) )
+ ROM_LOAD( "4.ic33", 0x40000, 0x10000, CRC(96dcc2f3) SHA1(9c61f8161771e40ca41b6e102bc04583dc97cd0d) )
+ ROM_LOAD( "5.ic34", 0x50000, 0x10000, CRC(b8667a6b) SHA1(288a5cbd8fc01b24822e89fbc1e6d7f45c181483) )
+ ROM_LOAD( "6.ic8", 0x00000, 0x10000, CRC(d257382f) SHA1(9c459b90c9ddfe90de4a252f29a7bee809412b46) )
+ ROM_LOAD( "7.ic9", 0x10000, 0x10000, CRC(feb1b974) SHA1(ffd4527472cdf655fbebebf4d3abb61962e54457) )
+ ROM_LOAD( "8.ic10", 0x20000, 0x10000, CRC(fc6808bf) SHA1(f1f1b75a79dfdb500012f9b52c6364f0a13dce2d) )
+ROM_END
+
GAME( 1990, ladyfrog, 0, ladyfrog, ladyfrog, driver_device, 0, ORIENTATION_SWAP_XY, "Mondial Games", "Lady Frog", MACHINE_SUPPORTS_SAVE )
// toucheme art style is similar to ladyfrog, so it's probably the same manufacturer
-GAME( 19??, toucheme, 0, toucheme, toucheme, driver_device, 0, ORIENTATION_SWAP_XY, "<unknown>", "Touche Me", MACHINE_SUPPORTS_SAVE )
+GAME( 19??, toucheme, 0, toucheme, toucheme, driver_device, 0, ORIENTATION_SWAP_XY, "<unknown>", "Touche Me (set 1)", MACHINE_SUPPORTS_SAVE )
+GAME( 19??, touchemea,toucheme, toucheme, toucheme, driver_device, 0, ORIENTATION_SWAP_XY, "<unknown>", "Touche Me (set 2, harder)", MACHINE_SUPPORTS_SAVE )
diff --git a/src/mame/drivers/legionna.cpp b/src/mame/drivers/legionna.cpp
index dfbc2818376..7fae2a89c71 100644
--- a/src/mame/drivers/legionna.cpp
+++ b/src/mame/drivers/legionna.cpp
@@ -1488,6 +1488,7 @@ MACHINE_CONFIG_END
***************************************************************************/
+// all 3 Legionnaire sets differ only by the region byte at 0x1ef in rom 4 (Japan 0x00, US 0x01, World 0x02)
ROM_START( legionna )
ROM_REGION( 0x80000, "maincpu", 0 ) /* 68000 code */
ROM_LOAD32_BYTE( "1.u025", 0x00000, 0x20000, CRC(9e2d3ec8) SHA1(8af9ca349389cbbd2b541aafa09de57f87f6fd72) )
@@ -1533,7 +1534,55 @@ ROM_START( legionna )
ROM_LOAD( "copx-d1.u0330", 0x000000, 0x080000, CRC(029bc402) SHA1(0f64e4c32d95abfa3920b39ed3cf0cc6eb50191b) ) /* not dumped from this PCB assumed to be the same */
ROM_REGION( 0x200, "proms", 0 ) /* Priority? */
- ROM_LOAD( "leg007.u091", 0x000000, 0x000200, NO_DUMP ) /* N82S147N type BPROM */
+ ROM_LOAD( "leg007.u0910", 0x000000, 0x000200, CRC(cc6da568) SHA1(cde01291f32def1ce291d7b558f64ce0758cf379) ) /* N82S147N type BPROM */
+ROM_END
+
+ROM_START( legionnaj )
+ ROM_REGION( 0x80000, "maincpu", 0 ) /* 68000 code */
+ ROM_LOAD32_BYTE( "1.u025", 0x00000, 0x20000, CRC(9e2d3ec8) SHA1(8af9ca349389cbbd2b541aafa09de57f87f6fd72) )
+ ROM_LOAD32_BYTE( "2.u024", 0x00001, 0x20000, CRC(35c8a28f) SHA1(31a1f2f9e04dfcab4b3357d6d27c24b434a8c14b) )
+ ROM_LOAD32_BYTE( "3.u026", 0x00002, 0x20000, CRC(553fc7c0) SHA1(b12a2eea6b2c9bd76c0c74ddf2765d58510f586a) )
+ ROM_LOAD32_BYTE( "4.u023", 0x00003, 0x20000, CRC(4c385dc7) SHA1(75ec869a5553228369faa8f8487d92ac5df7e563) ) // sldh
+
+ ROM_REGION( 0x20000, "audiocpu", 0 ) /* Z80 code, banked data */
+ ROM_LOAD( "6.u1110", 0x000000, 0x08000, CRC(fe7b8d06) SHA1(1e5b52ea4b4042940e2ee2db75c7c0f24973422a) )
+ ROM_CONTINUE( 0x010000, 0x08000 ) /* banked stuff */
+ ROM_COPY( "audiocpu", 0x000000, 0x018000, 0x08000 )
+
+ ROM_REGION( 0x020000, "user1", 0 ) /* load the tiles here so we can split them up into the required regions by hand */
+ ROM_LOAD16_BYTE( "7.u077", 0x000000, 0x10000, CRC(88e26809) SHA1(40ee55d3b5329b6f657e0621d93c4caf6a035fdf) )
+ ROM_LOAD16_BYTE( "8.u072", 0x000001, 0x10000, CRC(06e35407) SHA1(affeeb97b7f3cfa9b65a584ebe25c16a5b2c9a89) )
+
+ ROM_REGION( 0x010000, "char", 0 ) /* FG Tiles */
+ ROM_COPY( "user1", 0x010000, 0x000000, 0x010000 )
+
+ ROM_REGION( 0x010000, "gfx5", 0 ) /* BK3 */
+ ROM_COPY( "user1", 0x000000, 0x000000, 0x010000 ) /* decrambled in INIT */
+
+ ROM_REGION( 0x200000, "sprite", 0 )
+ ROM_LOAD( "legionnire_obj1.u0815", 0x000000, 0x100000, CRC(d35602f5) SHA1(79379abf1c8131df47f81f42b2dc6876926a4e9d) ) /* sprites */
+ ROM_LOAD( "legionnire_obj2.u0814", 0x100000, 0x100000, CRC(351d3917) SHA1(014562ac55c09227c08275df3129df19d81af164) )
+
+ ROM_REGION( 0x100000, "user2", 0 ) /* load the tiles here so we can split them up into the required regions by hand */
+ ROM_LOAD( "legionnire_back.u075", 0x000000, 0x100000, CRC(58280989) SHA1(e3eef1f52829a91b8f87cfe27776a1f12679b3ca) ) /* 3 sets of tiles ('MBK','LBK','BK3') */
+
+ ROM_REGION( 0x80000, "gfx3", 0 ) /* MBK */
+ ROM_COPY( "user2", 0x000000, 0x000000, 0x80000 )
+
+ ROM_REGION( 0x100000, "gfx4", ROMREGION_ERASEFF )
+ /* Not Used */
+
+ ROM_REGION( 0x80000, "gfx6", 0 ) /* LBK */
+ ROM_COPY( "user2", 0x080000, 0x000000, 0x78000 )
+
+ ROM_REGION( 0x40000, "oki", 0 ) /* ADPCM samples */
+ ROM_LOAD( "5.u106", 0x00000, 0x20000, CRC(21d09bde) SHA1(8dce5011e083706ac7b57c5aee4b79d30fa8d4cb) )
+
+ ROM_REGION( 0x080000, "copx", 0 ) /* SEI300 data rom */
+ ROM_LOAD( "copx-d1.u0330", 0x000000, 0x080000, CRC(029bc402) SHA1(0f64e4c32d95abfa3920b39ed3cf0cc6eb50191b) ) /* not dumped from this PCB assumed to be the same */
+
+ ROM_REGION( 0x200, "proms", 0 ) /* Priority? */
+ ROM_LOAD( "leg007.u0910", 0x000000, 0x000200, CRC(cc6da568) SHA1(cde01291f32def1ce291d7b558f64ce0758cf379) ) /* N82S147N type BPROM */
ROM_END
ROM_START( legionnau )
@@ -1581,7 +1630,7 @@ ROM_START( legionnau )
ROM_LOAD( "copx-d1.u0330", 0x000000, 0x080000, CRC(029bc402) SHA1(0f64e4c32d95abfa3920b39ed3cf0cc6eb50191b) ) /* not dumped from this PCB assumed to be the same */
ROM_REGION( 0x200, "proms", 0 ) /* Priority? */
- ROM_LOAD( "leg007.u091", 0x000000, 0x000200, NO_DUMP ) /* N82S147N type BPROM */
+ ROM_LOAD( "leg007.u0910", 0x000000, 0x000200, CRC(cc6da568) SHA1(cde01291f32def1ce291d7b558f64ce0758cf379) ) /* N82S147N type BPROM */
ROM_END
ROM_START( heatbrl )
@@ -2686,8 +2735,9 @@ DRIVER_INIT_MEMBER(legionna_state,legiongfx)
-GAME( 1992, legionna, 0, legionna, legionna, legionna_state, legiongfx, ROT0, "TAD Corporation", "Legionnaire (World)", MACHINE_UNEMULATED_PROTECTION | MACHINE_NOT_WORKING )
+GAME( 1992, legionna, 0, legionna, legionna, legionna_state, legiongfx, ROT0, "TAD Corporation", "Legionnaire (World)", MACHINE_UNEMULATED_PROTECTION | MACHINE_NOT_WORKING )
GAME( 1992, legionnau,legionna, legionna, legionna, legionna_state, legiongfx, ROT0, "TAD Corporation (Fabtek license)", "Legionnaire (US)", MACHINE_UNEMULATED_PROTECTION | MACHINE_NOT_WORKING )
+GAME( 1992, legionnaj,legionna, legionna, legionna, legionna_state, legiongfx, ROT0, "TAD Corporation", "Legionnaire (Japan)", MACHINE_UNEMULATED_PROTECTION | MACHINE_NOT_WORKING )
GAME( 1992, heatbrl, 0, heatbrl, heatbrl, driver_device, 0, ROT0, "TAD Corporation", "Heated Barrel (World version 3)", MACHINE_UNEMULATED_PROTECTION | MACHINE_NOT_WORKING )
GAME( 1992, heatbrl2, heatbrl, heatbrl, heatbrl, driver_device, 0, ROT0, "TAD Corporation", "Heated Barrel (World version 2)", MACHINE_UNEMULATED_PROTECTION | MACHINE_NOT_WORKING )
diff --git a/src/mame/drivers/liberatr.cpp b/src/mame/drivers/liberatr.cpp
index c729a621946..b6c46aea717 100644
--- a/src/mame/drivers/liberatr.cpp
+++ b/src/mame/drivers/liberatr.cpp
@@ -15,7 +15,7 @@
Liberator Memory Map (for the main set, the other one is rearranged)
(from the schematics/manual)
- HEX R/W D7 D6 D5 D4 D3 D2 D2 D0 function
+ HEX R/W D7 D6 D5 D4 D3 D2 D1 D0 function
---------+-----+------------------------+------------------------
0000 D D D D D D D D XCOORD
0001 D D D D D D D D YCOORD
@@ -144,7 +144,8 @@
void liberatr_state::machine_start()
{
- atarigen_state::machine_start();
+ save_item(NAME(m_earom_data));
+ save_item(NAME(m_earom_control));
save_item(NAME(m_trackball_offset));
save_item(NAME(m_ctrld));
@@ -152,6 +153,13 @@ void liberatr_state::machine_start()
}
+void liberatr_state::machine_reset()
+{
+ // reset the control latch on the EAROM
+ m_earom->set_control(0, 1, 1, 0, 0);
+}
+
+
/*************************************
*
@@ -210,6 +218,48 @@ READ8_MEMBER( liberatr_state::port0_r )
/*************************************
*
+ * Early raster EAROM interface
+ *
+ *************************************/
+
+READ8_MEMBER( liberatr_state::earom_r )
+{
+ // return data latched from previous clock
+ return m_earom->data();
+}
+
+
+WRITE8_MEMBER( liberatr_state::earom_w )
+{
+ // remember the value written
+ m_earom_data = data;
+
+ // output latch only enabled if control bit 2 is set
+ if (m_earom_control & 4)
+ m_earom->set_data(m_earom_data);
+
+ // always latch the address
+ m_earom->set_address(offset);
+}
+
+
+WRITE8_MEMBER( liberatr_state::earom_control_w )
+{
+ // remember the control state
+ m_earom_control = data;
+
+ // ensure ouput data is put on data lines prior to updating controls
+ if (m_earom_control & 4)
+ m_earom->set_data(m_earom_data);
+
+ // set the control lines; /CS2 is always held low
+ m_earom->set_control(data & 8, 1, ~data & 4, data & 2, data & 1);
+}
+
+
+
+/*************************************
+ *
* Main CPU memory handlers
*
*************************************/
diff --git a/src/mame/drivers/m58.cpp b/src/mame/drivers/m58.cpp
index 38ca3b7b72b..d92775a9389 100644
--- a/src/mame/drivers/m58.cpp
+++ b/src/mame/drivers/m58.cpp
@@ -211,7 +211,6 @@ static MACHINE_CONFIG_START( yard, m58_state )
/* sound hardware */
MCFG_DEVICE_ADD("irem_audio", IREM_M52_LARGE_AUDIO, 0)
-
MACHINE_CONFIG_END
@@ -222,8 +221,7 @@ MACHINE_CONFIG_END
*
*************************************/
-ROM_START( 10yard )
-// Dumped from an original Irem M52 board. Serial no. 307761/License Seal 09461.
+ROM_START( 10yard ) // Dumped from an original Irem M52 board. Serial no. 307761/License Seal 09461.
ROM_REGION( 0x10000, "maincpu", 0 )
ROM_LOAD( "yf-a-3p-b", 0x0000, 0x2000, CRC(2e205ec2) SHA1(fcfa08f45423b35f2c99d4e6b5474ab1b3a84fec) )
ROM_LOAD( "yf-a-3n-b", 0x2000, 0x2000, CRC(82fcd980) SHA1(7846705b29961cb95ee1571ee7e16baceea522d4) )
@@ -384,10 +382,10 @@ ROM_START( vs10yardu )
ROM_LOAD( "yf-b-5j.5j", 0x08000, 0x2000, CRC(713ef31f) SHA1(b48df9ed4f26fded3c7eaac3a52b580b2dd60477) )
ROM_LOAD( "yf-b-5k.5k", 0x0a000, 0x2000, CRC(f49651cc) SHA1(5b87d7360bcd5883ec265b2a01a3e02e10a85345) )
- ROM_REGION( 0x0520, "proms", 0 )
+ ROM_REGION( 0x0520, "proms", 0 ) // on these sets the content of the sprite color PROM needs reversing - are the proms on the other sets from bootleg boards, or hand modified?
ROM_LOAD( "yf-a-5c.5c", 0x0000, 0x0100, CRC(08fa5103) SHA1(98af48dafbbaa42f58232bf74ccbf5da41723e71) ) /* chars palette low 4 bits */
ROM_LOAD( "yf-a-5d.5d", 0x0100, 0x0100, CRC(7c04994c) SHA1(790bf1616335b9df4943cffcafa48d8e8aee009e) ) /* chars palette high 4 bits */
- ROM_LOAD( "yf-b-2b.2b", 0x0200, 0x0020, CRC(fcd283ea) SHA1(6ebc3e966bb920685250f38edab5fe1f8a27c316) ) /* sprites palette */
+ ROMX_LOAD( "yf-b-2b.2b", 0x0200, 0x0020, CRC(fcd283ea) SHA1(6ebc3e966bb920685250f38edab5fe1f8a27c316), ROM_GROUPSIZE(16) | ROM_REVERSE ) /* sprites palette */
ROM_LOAD( "yf-b-3l.3l", 0x0220, 0x0100, CRC(e1cdfb06) SHA1(a8cc3456cfc272e3faac80370b2298d8e1f8c2fe) ) /* sprites lookup table */
ROM_LOAD( "yf-b-2r.2r", 0x0320, 0x0100, CRC(cd85b646) SHA1(5268db705006058eec308afe474f4df3c15465bb) ) /* radar palette low 4 bits */
ROM_LOAD( "yf-b-2p.2p", 0x0420, 0x0100, CRC(45384397) SHA1(e4c662ee81aef63efd8b4a45f85c4a78dc2d419e) ) /* radar palette high 4 bits */
@@ -418,40 +416,20 @@ ROM_START( 10yard85 )
ROM_LOAD( "yf-b-5j.5j", 0x08000, 0x2000, CRC(713ef31f) SHA1(b48df9ed4f26fded3c7eaac3a52b580b2dd60477) )
ROM_LOAD( "yf-b-5k.5k", 0x0a000, 0x2000, CRC(f49651cc) SHA1(5b87d7360bcd5883ec265b2a01a3e02e10a85345) )
- ROM_REGION( 0x0520, "proms", 0 )
+ ROM_REGION( 0x0520, "proms", 0 ) // on these sets the content of the sprite color PROM needs reversing - are the proms on the other sets from bootleg boards, or hand modified?
ROM_LOAD( "yf-a-5c.5c", 0x0000, 0x0100, CRC(08fa5103) SHA1(98af48dafbbaa42f58232bf74ccbf5da41723e71) ) /* chars palette low 4 bits */
ROM_LOAD( "yf-a-5d.5d", 0x0100, 0x0100, CRC(7c04994c) SHA1(790bf1616335b9df4943cffcafa48d8e8aee009e) ) /* chars palette high 4 bits */
- ROM_LOAD( "yf-b-2b.2b", 0x0200, 0x0020, CRC(fcd283ea) SHA1(6ebc3e966bb920685250f38edab5fe1f8a27c316) ) /* sprites palette */
+ ROMX_LOAD( "yf-b-2b.2b", 0x0200, 0x0020, CRC(fcd283ea) SHA1(6ebc3e966bb920685250f38edab5fe1f8a27c316), ROM_GROUPSIZE(16) | ROM_REVERSE ) /* sprites palette */
ROM_LOAD( "yf-b-3l.3l", 0x0220, 0x0100, CRC(e1cdfb06) SHA1(a8cc3456cfc272e3faac80370b2298d8e1f8c2fe) ) /* sprites lookup table */
ROM_LOAD( "yf-b-2r.2r", 0x0320, 0x0100, CRC(cd85b646) SHA1(5268db705006058eec308afe474f4df3c15465bb) ) /* radar palette low 4 bits */
ROM_LOAD( "yf-b-2p.2p", 0x0420, 0x0100, CRC(45384397) SHA1(e4c662ee81aef63efd8b4a45f85c4a78dc2d419e) ) /* radar palette high 4 bits */
ROM_END
-/*************************************
- *
- * Game drivers
- *
- *************************************/
-DRIVER_INIT_MEMBER(m58_state,yard85)
-{
- // on these sets the content of the sprite color PROM needs reversing
- // are the proms on the other sets from bootleg boards, or hand modified?
- std::unique_ptr<UINT8[]> buffer = std::make_unique<UINT8[]>(0x10);
- UINT8* region = memregion("proms")->base();
- int i;
-
- for (i=0;i<0x10;i++)
- {
- buffer[i] = region[0x20f-i];
- }
- memcpy(region+0x200, buffer.get(), 0x10);
- m_palette->update();
-}
-
-GAME( 1983, 10yard, 0, yard, yard, driver_device, 0, ROT0, "Irem", "10-Yard Fight (World, set 1)", MACHINE_SUPPORTS_SAVE ) // no copyright
-GAME( 1983, 10yardj, 10yard, yard, yard, driver_device, 0, ROT0, "Irem", "10-Yard Fight (Japan)", MACHINE_SUPPORTS_SAVE )
-GAME( 1984, vs10yard, 10yard, yard, vs10yard, driver_device, 0, ROT0, "Irem", "Vs 10-Yard Fight (World, 11/05/84)", MACHINE_SUPPORTS_SAVE )
-GAME( 1984, vs10yardj,10yard, yard, vs10yarj, driver_device, 0, ROT0, "Irem", "Vs 10-Yard Fight (Japan)", MACHINE_SUPPORTS_SAVE )
-GAME( 1984, vs10yardu,10yard, yard, vs10yard, m58_state, yard85, ROT0, "Irem (Taito license)", "Vs 10-Yard Fight (US, Taito license)", MACHINE_SUPPORTS_SAVE ) // had '85 stickers, but doesn't have '85 on the title screen like the set below
-GAME( 1985, 10yard85, 10yard, yard, yard, m58_state, yard85, ROT0, "Irem (Taito license)", "10-Yard Fight '85 (US, Taito license)", MACHINE_SUPPORTS_SAVE )
+/* YEAR NAME PARENT MACHINE INPUT INIT MONITOR, COMPANY, FULLNAME, FLAGS */
+GAME( 1983, 10yard, 0, yard, yard, driver_device, 0, ROT0, "Irem", "10-Yard Fight (World, set 1)", MACHINE_SUPPORTS_SAVE ) // no copyright
+GAME( 1983, 10yardj, 10yard, yard, yard, driver_device, 0, ROT0, "Irem", "10-Yard Fight (Japan)", MACHINE_SUPPORTS_SAVE )
+GAME( 1984, vs10yard, 10yard, yard, vs10yard, driver_device, 0, ROT0, "Irem", "Vs 10-Yard Fight (World, 11/05/84)", MACHINE_SUPPORTS_SAVE )
+GAME( 1984, vs10yardj, 10yard, yard, vs10yarj, driver_device, 0, ROT0, "Irem", "Vs 10-Yard Fight (Japan)", MACHINE_SUPPORTS_SAVE )
+GAME( 1984, vs10yardu, 10yard, yard, vs10yard, driver_device, 0, ROT0, "Irem (Taito license)", "Vs 10-Yard Fight (US, Taito license)", MACHINE_SUPPORTS_SAVE ) // had '85 stickers, but doesn't have '85 on the title screen like the set below
+GAME( 1985, 10yard85, 10yard, yard, yard, driver_device, 0, ROT0, "Irem (Taito license)", "10-Yard Fight '85 (US, Taito license)", MACHINE_SUPPORTS_SAVE )
diff --git a/src/mame/drivers/m92.cpp b/src/mame/drivers/m92.cpp
index be44923f8d1..ad1239ca675 100644
--- a/src/mame/drivers/m92.cpp
+++ b/src/mame/drivers/m92.cpp
@@ -613,6 +613,17 @@ static INPUT_PORTS_START( lethalth )
INPUT_PORTS_END
+static INPUT_PORTS_START( thndblst )
+ PORT_INCLUDE(lethalth)
+
+ PORT_MODIFY("DSW")
+ /* Dip switch bank 1 */
+ PORT_DIPNAME( 0x0010, 0x0000, "Continuous Play" ) PORT_DIPLOCATION("SW1:5") /* manual says Unused */
+ PORT_DIPSETTING( 0x0000, DEF_STR( On ) )
+ PORT_DIPSETTING( 0x0010, DEF_STR( Off ) )
+INPUT_PORTS_END
+
+
static INPUT_PORTS_START( hook )
PORT_INCLUDE(m92_4player)
@@ -2207,7 +2218,7 @@ GAME( 1991, bmaster, 0, bmaster, bmaster, m92_state, m92, RO
GAME( 1991, crossbld, bmaster, bmaster, bmaster, m92_state, m92, ROT0, "Irem", "Cross Blades! (Japan)", MACHINE_SUPPORTS_SAVE | MACHINE_NO_COCKTAIL)
GAME( 1991, lethalth, 0, lethalth, lethalth, m92_state, lethalth, ROT270, "Irem", "Lethal Thunder (World)", MACHINE_SUPPORTS_SAVE | MACHINE_NO_COCKTAIL )
-GAME( 1991, thndblst, lethalth, lethalth, lethalth, m92_state, lethalth, ROT270, "Irem", "Thunder Blaster (Japan)", MACHINE_SUPPORTS_SAVE | MACHINE_NO_COCKTAIL )
+GAME( 1991, thndblst, lethalth, lethalth, thndblst, m92_state, lethalth, ROT270, "Irem", "Thunder Blaster (Japan)", MACHINE_SUPPORTS_SAVE | MACHINE_NO_COCKTAIL )
GAME( 1992, uccops, 0, uccops, uccops, m92_state, m92, ROT0, "Irem", "Undercover Cops (World)", MACHINE_SUPPORTS_SAVE | MACHINE_NO_COCKTAIL )
GAME( 1992, uccopsu, uccops, uccops, uccops, m92_state, m92, ROT0, "Irem", "Undercover Cops (US)", MACHINE_SUPPORTS_SAVE | MACHINE_NO_COCKTAIL )
diff --git a/src/mame/drivers/magictg.cpp b/src/mame/drivers/magictg.cpp
index 63b0df20394..901c8070390 100644
--- a/src/mame/drivers/magictg.cpp
+++ b/src/mame/drivers/magictg.cpp
@@ -180,7 +180,7 @@ public:
/* 3Dfx Voodoo */
- device_t* m_voodoo[2];
+ voodoo_device* m_voodoo[2];
struct
{
@@ -241,8 +241,8 @@ public:
void magictg_state::machine_start()
{
- m_voodoo[0] = machine().device("voodoo_0");
- m_voodoo[1] = machine().device("voodoo_1");
+ m_voodoo[0] = (voodoo_device*)machine().device("voodoo_0");
+ m_voodoo[1] = (voodoo_device*)machine().device("voodoo_1");
}
@@ -278,7 +278,7 @@ void magictg_state::video_start()
UINT32 magictg_state::screen_update_magictg(screen_device &screen, bitmap_rgb32 &bitmap, const rectangle &cliprect)
{
- return voodoo_update(m_voodoo[0], bitmap, cliprect) ? 0 : UPDATE_HAS_NOT_CHANGED;
+ return m_voodoo[0]->voodoo_update(bitmap, cliprect) ? 0 : UPDATE_HAS_NOT_CHANGED;
}
@@ -338,7 +338,7 @@ static void voodoo_0_pci_w(device_t *busdevice, device_t *device, int function,
break;
case 0x40:
state->m_voodoo_pci_regs[0].init_enable = data;
- voodoo_set_init_enable(state->m_voodoo[0], data);
+ state->m_voodoo[0]->voodoo_set_init_enable(data);
break;
default:
diff --git a/src/mame/drivers/marywu.cpp b/src/mame/drivers/marywu.cpp
index d3082af2233..ce48608de52 100644
--- a/src/mame/drivers/marywu.cpp
+++ b/src/mame/drivers/marywu.cpp
@@ -1,7 +1,7 @@
// license:GPL2+
// copyright-holders:Felipe Sanches
/*************************************************************************
-
+
This is a driver for a gambling board with a yet unknown name.
The PCB is labeled with: WU- MARY-1A
And there's a text string in the ROM that says: "Music by: SunKiss Chen"
@@ -10,7 +10,7 @@
TODO:
* Figure out where exactly all devices are mapped to (the devices are
- 2 sound chips, the KC8279 controller the 2kb SRAM, the 8bit dipswitches,
+ 2 sound chips, the 2kb SRAM, the 8bit dipswitches,
31 LEDs, 13 modules of double-digit 7-seg displays and 4 push-buttons).
* we may also have user inputs from the coin slot and from the
cabinet buttons, for making bets.
@@ -19,45 +19,199 @@
#include "emu.h"
#include "cpu/mcs51/mcs51.h"
#include "sound/ay8910.h"
+#include "machine/i8279.h"
+#include "marywu.lh"
class marywu_state : public driver_device
{
public:
- marywu_state(const machine_config &mconfig, device_type type, const char *tag)
- : driver_device(mconfig, type, tag)
- { }
+ marywu_state(const machine_config &mconfig, device_type type, const char *tag)
+ : driver_device(mconfig, type, tag)
+ { }
+
+ DECLARE_WRITE8_MEMBER(display_7seg_data_w);
+ DECLARE_WRITE8_MEMBER(multiplex_7seg_w);
+ DECLARE_WRITE8_MEMBER(ay1_port_a_w);
+ DECLARE_WRITE8_MEMBER(ay1_port_b_w);
+ DECLARE_WRITE8_MEMBER(ay2_port_a_w);
+ DECLARE_WRITE8_MEMBER(ay2_port_b_w);
+ DECLARE_READ8_MEMBER(keyboard_r);
+ DECLARE_READ8_MEMBER(port_r);
+private:
+ uint8_t m_selected_7seg_module;
};
+static INPUT_PORTS_START( marywu )
+ PORT_START("KEYS1")
+ PORT_BIT(0x80, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CODE(KEYCODE_1)
+ PORT_BIT(0x40, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CODE(KEYCODE_2)
+ PORT_BIT(0x20, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CODE(KEYCODE_3)
+ PORT_BIT(0x10, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CODE(KEYCODE_4)
+ PORT_BIT(0x08, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CODE(KEYCODE_5)
+ PORT_BIT(0x04, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CODE(KEYCODE_6)
+ PORT_BIT(0x02, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CODE(KEYCODE_7)
+ PORT_BIT(0x01, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CODE(KEYCODE_8)
+
+ PORT_START("KEYS2")
+ PORT_BIT(0x80, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CODE(KEYCODE_Q)
+ PORT_BIT(0x40, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CODE(KEYCODE_W)
+ PORT_BIT(0x20, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CODE(KEYCODE_E)
+ PORT_BIT(0x10, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CODE(KEYCODE_R)
+ PORT_BIT(0x08, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CODE(KEYCODE_T)
+ PORT_BIT(0x04, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CODE(KEYCODE_Y)
+ PORT_BIT(0x02, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CODE(KEYCODE_U)
+ PORT_BIT(0x01, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CODE(KEYCODE_I)
+
+ PORT_START("DSW")
+ PORT_DIPNAME( 0x01, 0x01, "Unknown bit #0" ) PORT_DIPLOCATION("DSW:0")
+ PORT_DIPSETTING(0x01, DEF_STR( On ) )
+ PORT_DIPSETTING(0x00, DEF_STR( Off ) )
+ PORT_DIPNAME( 0x02, 0x02, "Unknown bit #1" ) PORT_DIPLOCATION("DSW:1")
+ PORT_DIPSETTING(0x02, DEF_STR( On ) )
+ PORT_DIPSETTING(0x00, DEF_STR( Off ) )
+ PORT_DIPNAME( 0x04, 0x04, "Unknown bit #2" ) PORT_DIPLOCATION("DSW:2")
+ PORT_DIPSETTING(0x04, DEF_STR( On ) )
+ PORT_DIPSETTING(0x00, DEF_STR( Off ) )
+ PORT_DIPNAME( 0x08, 0x08, "Unknown bit #3" ) PORT_DIPLOCATION("DSW:3")
+ PORT_DIPSETTING(0x08, DEF_STR( On ) )
+ PORT_DIPSETTING(0x00, DEF_STR( Off ) )
+ PORT_DIPNAME( 0x10, 0x10, "Unknown bit #4" ) PORT_DIPLOCATION("DSW:4")
+ PORT_DIPSETTING(0x10, DEF_STR( On ) )
+ PORT_DIPSETTING(0x00, DEF_STR( Off ) )
+ PORT_DIPNAME( 0x20, 0x20, "Unknown bit #5" ) PORT_DIPLOCATION("DSW:5")
+ PORT_DIPSETTING(0x20, DEF_STR( On ) )
+ PORT_DIPSETTING(0x00, DEF_STR( Off ) )
+ PORT_DIPNAME( 0x40, 0x40, "Unknown bit #6" ) PORT_DIPLOCATION("DSW:6")
+ PORT_DIPSETTING(0x40, DEF_STR( On ) )
+ PORT_DIPSETTING(0x00, DEF_STR( Off ) )
+ PORT_DIPNAME( 0x80, 0x80, "Unknown bit #7" ) PORT_DIPLOCATION("DSW:7")
+ PORT_DIPSETTING(0x80, DEF_STR( On ) )
+ PORT_DIPSETTING(0x00, DEF_STR( Off ) )
+
+ PORT_START("PUSHBUTTONS")
+ PORT_BIT(0x80, IP_ACTIVE_HIGH, IPT_UNUSED )
+ PORT_BIT(0x40, IP_ACTIVE_HIGH, IPT_UNUSED )
+ PORT_BIT(0x20, IP_ACTIVE_HIGH, IPT_UNUSED )
+ PORT_BIT(0x10, IP_ACTIVE_HIGH, IPT_UNUSED )
+ PORT_BIT(0x08, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CODE(KEYCODE_A)
+ PORT_BIT(0x04, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CODE(KEYCODE_S)
+ PORT_BIT(0x02, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CODE(KEYCODE_D)
+ PORT_BIT(0x01, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CODE(KEYCODE_F)
+INPUT_PORTS_END
+
+WRITE8_MEMBER( marywu_state::ay1_port_a_w )
+{
+ for (uint8_t i=0; i<8; i++){
+ output().set_led_value(i, (data & (1 << i)) ? 1 : 0);
+ }
+}
+
+WRITE8_MEMBER( marywu_state::ay1_port_b_w )
+{
+ for (uint8_t i=0; i<8; i++){
+ output().set_led_value(i+8, (data & (1 << i)) ? 1 : 0);
+ }
+}
+
+WRITE8_MEMBER( marywu_state::ay2_port_a_w )
+{
+ for (uint8_t i=0; i<8; i++){
+ output().set_led_value(i+16, (data & (1 << i)) ? 1 : 0);
+ }
+}
+
+WRITE8_MEMBER( marywu_state::ay2_port_b_w )
+{
+ for (uint8_t i=0; i<6; i++){
+ /* we only have 30 LEDs. The last 2 bits in this port are unused. */
+ output().set_led_value(i+24, (data & (1 << i)) ? 1 : 0);
+ }
+}
+
+WRITE8_MEMBER( marywu_state::multiplex_7seg_w )
+{
+ m_selected_7seg_module = data;
+}
+
+READ8_MEMBER( marywu_state::port_r )
+{
+//TODO: figure out what each bit is mapped to in the 80c31 ports P1 and P3
+ switch(offset){
+ //case 1:
+ // return (1 << 6);
+ default:
+ return 0x00;
+ }
+}
+
+READ8_MEMBER( marywu_state::keyboard_r )
+{
+ switch(m_selected_7seg_module % 8){
+ case 0: return ioport("KEYS1")->read();
+ case 1: return ioport("KEYS2")->read();
+ case 2: return ioport("DSW")->read();
+ case 3: return ioport("PUSHBUTTONS")->read();
+ default:
+ return 0x00;
+ }
+}
+
+WRITE8_MEMBER( marywu_state::display_7seg_data_w )
+{
+ static const UINT8 patterns[16] = { 0x3f, 0x06, 0x5b, 0x4f, 0x66, 0x6d, 0x7c, 0x07, 0x7f, 0x67, 0, 0, 0, 0, 0, 0 }; // HEF4511BP (7 seg display driver)
+
+ output().set_digit_value(2 * m_selected_7seg_module + 0, patterns[data & 0x0F]);
+ output().set_digit_value(2 * m_selected_7seg_module + 1, patterns[(data >> 4) & 0x0F]);
+}
+
static ADDRESS_MAP_START( program_map, AS_PROGRAM, 8, marywu_state )
- AM_RANGE(0x0000, 0x7fff) AM_ROM
+ AM_RANGE(0x0000, 0x7fff) AM_ROM
ADDRESS_MAP_END
static ADDRESS_MAP_START( io_map, AS_IO, 8, marywu_state )
- AM_RANGE(0x8000, 0x87ff) AM_RAM //HM6116: 2kbytes of Static RAM /* This is a guess. Maybe it is also mirrored? */
- //AM_RANGE(0xB000, 0xB001) AM_NOP /*maybe this is where the keyboard/display "KC8279" controller is hooked up ? */
- AM_RANGE(0x9001, 0x9002) AM_DEVREADWRITE("ay1", ay8910_device, data_r, address_data_w) /* This is a guess */
- AM_RANGE(0x9003, 0x9004) AM_DEVREADWRITE("ay2", ay8910_device, data_r, address_data_w) /* This is a guess */
+ AM_RANGE(0x8000, 0x87ff) AM_MIRROR(0x0100) AM_RAM /* HM6116: 2kbytes of Static RAM */
+ AM_RANGE(0xb000, 0xb000) AM_MIRROR(0x0ffe) AM_DEVREADWRITE("i8279", i8279_device, data_r, data_w)
+ AM_RANGE(0xb001, 0xb001) AM_MIRROR(0x0ffe) AM_DEVREADWRITE("i8279", i8279_device, status_r, cmd_w)
+ AM_RANGE(0x9000, 0x9000) AM_MIRROR(0x0ffc) AM_DEVWRITE("ay1", ay8910_device, data_address_w)
+ AM_RANGE(0x9001, 0x9001) AM_MIRROR(0x0ffc) AM_DEVREADWRITE("ay1", ay8910_device, data_r, data_w)
+ AM_RANGE(0x9002, 0x9002) AM_MIRROR(0x0ffc) AM_DEVWRITE("ay2", ay8910_device, data_address_w)
+ AM_RANGE(0x9003, 0x9003) AM_MIRROR(0x0ffc) AM_DEVREADWRITE("ay2", ay8910_device, data_r, data_w)
+ AM_RANGE(0xf000, 0xf000) AM_NOP /* TODO: Investigate this. There's something going on at this address range. */
+ AM_RANGE(MCS51_PORT_P0, MCS51_PORT_P3) AM_READ(port_r)
ADDRESS_MAP_END
static MACHINE_CONFIG_START( marywu , marywu_state )
- /* basic machine hardware */
- MCFG_CPU_ADD("maincpu", I80C31, XTAL_10_738635MHz) //actual CPU is a Winbond w78c31b-24
- MCFG_CPU_PROGRAM_MAP(program_map)
- MCFG_CPU_IO_MAP(io_map)
-
- /* sound hardware */
- MCFG_SPEAKER_STANDARD_MONO("mono")
- MCFG_SOUND_ADD("ay1", AY8910, XTAL_10_738635MHz) /* should it be perhaps a fraction of the XTAL clock ? */
- MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.50)
-
- MCFG_SOUND_ADD("ay2", AY8910, XTAL_10_738635MHz) /* should it be perhaps a fraction of the XTAL clock ? */
- MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.50)
+ /* basic machine hardware */
+ MCFG_CPU_ADD("maincpu", I80C31, XTAL_10_738635MHz) //actual CPU is a Winbond w78c31b-24
+ MCFG_CPU_PROGRAM_MAP(program_map)
+ MCFG_CPU_IO_MAP(io_map)
+
+ /* Keyboard & display interface */
+ MCFG_DEVICE_ADD("i8279", I8279, XTAL_10_738635MHz) /* should it be perhaps a fraction of the XTAL clock ? */
+ MCFG_I8279_OUT_SL_CB(WRITE8(marywu_state, multiplex_7seg_w)) // select block of 7seg modules by multiplexing the SL scan lines
+ MCFG_I8279_IN_RL_CB(READ8(marywu_state, keyboard_r)) // keyboard Return Lines
+ MCFG_I8279_OUT_DISP_CB(WRITE8(marywu_state, display_7seg_data_w))
+
+ /* Video */
+ MCFG_DEFAULT_LAYOUT(layout_marywu)
+
+ /* sound hardware */
+ MCFG_SPEAKER_STANDARD_MONO("mono")
+ MCFG_SOUND_ADD("ay1", AY8910, XTAL_10_738635MHz) /* should it be perhaps a fraction of the XTAL clock ? */
+ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.50)
+ MCFG_AY8910_PORT_A_WRITE_CB(WRITE8(marywu_state, ay1_port_a_w))
+ MCFG_AY8910_PORT_B_WRITE_CB(WRITE8(marywu_state, ay1_port_b_w))
+
+ MCFG_SOUND_ADD("ay2", AY8910, XTAL_10_738635MHz) /* should it be perhaps a fraction of the XTAL clock ? */
+ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.50)
+ MCFG_AY8910_PORT_A_WRITE_CB(WRITE8(marywu_state, ay2_port_a_w))
+ MCFG_AY8910_PORT_B_WRITE_CB(WRITE8(marywu_state, ay2_port_b_w))
MACHINE_CONFIG_END
ROM_START( marywu )
ROM_REGION( 0x8000, "maincpu", 0 )
- ROM_LOAD( "marywu_sunkiss_chen.rom", 0x0000, 0x8000, CRC(11f67c7d) SHA1(9c1fd1a5cc6e2b0d675f0217aa8ff21c30609a0c) )
+ ROM_LOAD( "marywu_sunkiss_chen.rom", 0x0000, 0x8000, CRC(11f67c7d) SHA1(9c1fd1a5cc6e2b0d675f0217aa8ff21c30609a0c) )
ROM_END
/* YEAR NAME PARENT MACHINE INPUT STATE INIT ROT COMPANY FULLNAME FLAGS */
-GAME( ????, marywu, 0, marywu, 0, driver_device, 0, ROT0, "<unknown>", "<unknown> Labeled 'WU- MARY-1A' Music by: SunKiss Chen", MACHINE_NOT_WORKING )
+GAME( ????, marywu, 0, marywu, marywu, driver_device, 0, ROT0, "<unknown>", "<unknown> Labeled 'WU- MARY-1A' Music by: SunKiss Chen", MACHINE_NOT_WORKING )
diff --git a/src/mame/drivers/mazerbla.cpp b/src/mame/drivers/mazerbla.cpp
index 21b1e6951ed..24c80847ea8 100644
--- a/src/mame/drivers/mazerbla.cpp
+++ b/src/mame/drivers/mazerbla.cpp
@@ -1,4 +1,4 @@
-// license:???
+// license:GPL-2.0+
// copyright-holders:Jarek Burczynski, Angelo Salese
/****************************************************************************
diff --git a/src/mame/drivers/mc1000.cpp b/src/mame/drivers/mc1000.cpp
index 06c1b177c15..c98f66b601e 100644
--- a/src/mame/drivers/mc1000.cpp
+++ b/src/mame/drivers/mc1000.cpp
@@ -453,6 +453,7 @@ static MACHINE_CONFIG_START( mc1000, mc1000_state )
/* devices */
MCFG_CASSETTE_ADD("cassette")
MCFG_CASSETTE_DEFAULT_STATE(CASSETTE_STOPPED | CASSETTE_MOTOR_ENABLED | CASSETTE_SPEAKER_ENABLED)
+ MCFG_CASSETTE_INTERFACE("mc1000_cass")
MCFG_SOFTWARE_LIST_ADD("cass_list", "mc1000_cass")
diff --git a/src/mame/drivers/meadwttl.cpp b/src/mame/drivers/meadwttl.cpp
index 0dffab0d0e7..8e13a178499 100644
--- a/src/mame/drivers/meadwttl.cpp
+++ b/src/mame/drivers/meadwttl.cpp
@@ -119,9 +119,9 @@ ROM_START( bombaway )
ROM_REGION( 0x10000, "maincpu", ROMREGION_ERASE00 )
ROM_REGION( 0x0400, "roms", ROMREGION_ERASE00 )
- ROM_LOAD( "bombs.j3", 0x0000, 0x0200, CRC(d1e3ddfd) SHA1(268915eba79179b7329076c875172f910cf77930) )
- ROM_LOAD( "bombs.j4", 0x0000, 0x0200, CRC(95108ae8) SHA1(872596a666bfc03fcc40b1f8c532d41951b0b506) )
- ROM_LOAD( "bombs.j5", 0x0000, 0x0200, CRC(3804bc84) SHA1(ba943bdb3fa1ab8210da0d4613a641fd2578eca2) )
+ ROM_LOAD( "b.3j", 0x0000, 0x0200, CRC(d1e3ddfd) SHA1(268915eba79179b7329076c875172f910cf77930) ) // bottom row (4 point) ship graphic
+ ROM_LOAD( "c.4j", 0x0000, 0x0200, CRC(95108ae8) SHA1(872596a666bfc03fcc40b1f8c532d41951b0b506) ) // middle row (2 point) ship graphic
+ ROM_LOAD( "a.5j", 0x0000, 0x0200, CRC(3804bc84) SHA1(ba943bdb3fa1ab8210da0d4613a641fd2578eca2) ) // top row (1 point) ship graphic
ROM_END
ROM_START( ckidzo )
diff --git a/src/mame/drivers/megasys1.cpp b/src/mame/drivers/megasys1.cpp
index 5c330687f0a..bed3ec42e7d 100644
--- a/src/mame/drivers/megasys1.cpp
+++ b/src/mame/drivers/megasys1.cpp
@@ -43,7 +43,7 @@ Year + Game System Protection
Peek-a-Boo! D Inputs
---------------------------------------------------------------------
-NOTE: Chimera Beast is the only game missing a dump of its priority PROM
+NOTE: Chimera Beast PROM has not been dumped, but looks like it should match 64street based on game analysis.
Hardware Main CPU Sound CPU Sound Chips
@@ -94,10 +94,6 @@ RAM RW 0f0000-0f3fff 0e0000-0effff? <
Issues / To Do
--------------
-- There is a 512 byte PROM in the video section (differs by game) that
- controls the priorities. This prom is currently missing for one game,
- so we have to use fake data for it (Chimera Beast).
-
- Making the M6295 status register return 0 fixes the music tempo in
avspirit, 64street, astyanax etc. but makes most of the effects in
hachoo disappear! Define SOUND_HACK to 0 to turn this hack off
@@ -105,15 +101,9 @@ RAM RW 0f0000-0f3fff 0e0000-0effff? <
bootleg version of rodlandj has one instruction patched out to do exactly
the same thing that we are doing (ignoring the 6295 status).
-- Understand properly how irqs truly works, kazan / iganinju is (again) broken.
-
-- 64street: player characters in attract mode doesn't move at all, protection?
- they move on the real PCB
+- Understand properly how irqs truly works, kazan / iganinju solution seems hacky
-- tshingen: unemulated mosaic effect when killing enemies with the flashing sword.
- See https://youtu.be/m4ZH0v8UqWs
- The effect can be tested in e.g. stdragon and p47 test mode:
- See https://youtu.be/zo3FTCqkNBc and https://youtu.be/dEqH017YBzw
+- P47 intro effect is imperfect ( https://www.youtube.com/watch?v=eozZGcVspVw )
- Understand a handful of unknown bits in video regs
@@ -144,16 +134,16 @@ RAM RW 0f0000-0f3fff 0e0000-0effff? <
MACHINE_RESET_MEMBER(megasys1_state,megasys1)
{
- m_ignore_oki_status = 1; /* ignore oki status due 'protection' */
- m_ip_select = 0; /* reset protection */
+
+ m_ignore_oki_status = 1; /* ignore oki status due 'protection' */
+ m_ip_latched = 0x0006; /* reset protection - some games expect this initial read without sending anything */
m_mcu_hs = 0;
}
MACHINE_RESET_MEMBER(megasys1_state,megasys1_hachoo)
{
+ MACHINE_RESET_CALL_MEMBER(megasys1);
m_ignore_oki_status = 0; /* strangely hachoo need real oki status */
- m_ip_select = 0; /* reset protection */
- m_mcu_hs = 0;
}
@@ -199,7 +189,7 @@ TIMER_DEVICE_CALLBACK_MEMBER(megasys1_state::megasys1A_iganinju_scanline)
int scanline = param;
// TODO: there's more than one hint that MCU controls IRQ signals via work RAM buffers.
- // This is a bare miminum guessing for this specific game, it definitely don't like neither lv 1 nor 2.
+ // This is a bare miminum guessing for this specific game, it definitely don't like neither lv 1 nor 2.
// Of course MCU is probably doing a lot more to mask and probably set a specific line too.
if(m_ram[0] == 0)
return;
@@ -254,7 +244,14 @@ TIMER_DEVICE_CALLBACK_MEMBER(megasys1_state::megasys1B_scanline)
in that order. */
-READ16_MEMBER(megasys1_state::ip_select_r)
+READ16_MEMBER(megasys1_state::ip_select_r) // FROM MCU
+{
+ return m_ip_latched;
+}
+
+
+
+WRITE16_MEMBER(megasys1_state::ip_select_w) // TO MCU
{
int i;
@@ -266,26 +263,24 @@ READ16_MEMBER(megasys1_state::ip_select_r)
// 20 21 22 23 24 < edf
// 51 52 53 54 55 < hayaosi1
-
/* f(x) = ((x*x)>>4)&0xFF ; f(f($D)) == 6 */
- if ((m_ip_select & 0xF0) == 0xF0) return 0x000D;
- for (i = 0; i < 5; i++) if (m_ip_select == m_ip_select_values[i]) break;
+ for (i = 0; i < 7; i++) if ((data & 0x00ff) == m_ip_select_values[i]) break;
switch (i)
{
- case 0 : return m_io_system->read();
- case 1 : return m_io_p1->read();
- case 2 : return m_io_p2->read();
- case 3 : return m_io_dsw1->read();
- case 4 : return m_io_dsw2->read();
- default : return 0x0006;
+ case 0 : m_ip_latched = m_io_system->read(); break;
+ case 1 : m_ip_latched = m_io_p1->read(); break;
+ case 2 : m_ip_latched = m_io_p2->read(); break;
+ case 3 : m_ip_latched = m_io_dsw1->read(); break;
+ case 4 : m_ip_latched = m_io_dsw2->read(); break;
+ case 5 : m_ip_latched = 0x0d; break; // startup check?
+ case 6 : m_ip_latched = 0x06; break; // sent before each other command
+ default: return; // get out if it wasn't a valid request
}
-}
-WRITE16_MEMBER(megasys1_state::ip_select_w)
-{
- COMBINE_DATA(&m_ip_select);
+
+ // if the command is valid, generate an IRQ from the MCU
m_maincpu->set_input_line(2, HOLD_LINE);
}
@@ -1812,6 +1807,40 @@ ROM_START( 64street )
ROM_LOAD( "pr91009.12", 0x0000, 0x0200, CRC(c69423d6) SHA1(ba9644a9899df2d73a5a16bf7ceef1954c2e25f3) ) // same as pr-91044 on hayaosi1
ROM_END
+ROM_START( 64streetja )
+ ROM_REGION( 0x80000, "maincpu", 0 ) /* Main CPU Code */
+ ROM_LOAD16_BYTE( "ic53.bin", 0x000000, 0x040000, CRC(c978d086) SHA1(b091faf570841f098d4d70bf3ca4f26d6cda890a) )
+ ROM_LOAD16_BYTE( "ic52.bin", 0x000001, 0x040000, CRC(af475852) SHA1(5e0a375dd904a4176ca6fdccdb67a907e270e9be) )
+
+ ROM_REGION( 0x20000, "audiocpu", 0 ) /* Sound CPU Code */
+ ROM_LOAD16_BYTE( "64th_08.rom", 0x000000, 0x010000, CRC(632be0c1) SHA1(626073037249d96ac70b2d11b2dd72b22bac49c7) )
+ ROM_LOAD16_BYTE( "64th_07.rom", 0x000001, 0x010000, CRC(13595d01) SHA1(e730a530ca232aab883217fa12804075cb2aa640) )
+
+ ROM_REGION( 0x1000, "mcu", 0 ) /* MCU Internal Code, M50747? */
+ ROM_LOAD( "64street.mcu", 0x000000, 0x1000, NO_DUMP )
+
+ ROM_REGION( 0x80000, "gfx1", 0 ) /* Scroll 0 */
+ ROM_LOAD( "64th_01.rom", 0x000000, 0x080000, CRC(06222f90) SHA1(52b6cb88b9d2209c16d1633c83c0224b6ebf29dc) )
+
+ ROM_REGION( 0x80000, "gfx2", 0 ) /* Scroll 1 */
+ ROM_LOAD( "64th_06.rom", 0x000000, 0x080000, CRC(2bfcdc75) SHA1(f49f92f1ff58dccf72e05ecf80761c7b65a25ba3) )
+
+ ROM_REGION( 0x20000, "gfx3", 0 ) /* Scroll 2 */
+ ROM_LOAD( "64th_09.rom", 0x000000, 0x020000, CRC(a4a97db4) SHA1(1179457a6f33b3b44fac6056f6245f3aaae6afd5) )
+
+ ROM_REGION( 0x100000, "gfx4", 0 ) /* Sprites */
+ ROM_LOAD( "64th_05.rom", 0x000000, 0x080000, CRC(a89a7020) SHA1(be36e58e9314688ee39249944c5a6c201e0249ee) )
+ ROM_LOAD( "64th_04.rom", 0x080000, 0x080000, CRC(98f83ef6) SHA1(e9b72487695ac7cdc4fbf595389c4b8781ed207e) )
+
+ ROM_REGION( 0x40000, "oki1", 0 ) /* Samples */
+ ROM_LOAD( "64th_11.rom", 0x000000, 0x020000, CRC(b0b8a65c) SHA1(b7e42d9083d0bbfe160fc73a7317d696e90d83d6) )
+
+ ROM_REGION( 0x40000, "oki2", 0 ) /* Samples */
+ ROM_LOAD( "64th_10.rom", 0x000000, 0x040000, CRC(a3390561) SHA1(f86d5c61e3e80d30408535c2203940ca1e95ac18) )
+
+ ROM_REGION( 0x0200, "proms", 0 ) /* Priority PROM */
+ ROM_LOAD( "pr91009.12", 0x0000, 0x0200, CRC(c69423d6) SHA1(ba9644a9899df2d73a5a16bf7ceef1954c2e25f3) ) // same as pr-91044 on hayaosi1
+ROM_END
ROM_START( 64streetj )
ROM_REGION( 0x80000, "maincpu", 0 ) /* Main CPU Code */
@@ -2251,7 +2280,7 @@ ROM_START( chimerab )
ROM_LOAD( "voi10.bin", 0x000000, 0x040000, CRC(67498914) SHA1(8d89fa90f38fd102b15f26f71491ea833ec32cb2) )
ROM_REGION( 0x0200, "proms", 0 ) /* Priority PROM */
- ROM_LOAD( "prom", 0x0000, 0x0200, NO_DUMP )
+ ROM_LOAD( "pr-91044", 0x0000, 0x0200, BAD_DUMP CRC(c69423d6) SHA1(ba9644a9899df2d73a5a16bf7ceef1954c2e25f3) ) // guess, but 99% sure it's meant to be the same as 64street/hayaosi1 based on analysis of game and previous handcrafted data
ROM_END
@@ -3988,6 +4017,10 @@ DRIVER_INIT_MEMBER(megasys1_state,64street)
m_ip_select_values[2] = 0x54;
m_ip_select_values[3] = 0x55;
m_ip_select_values[4] = 0x56;
+
+ m_ip_select_values[5] = 0xfa;
+ m_ip_select_values[6] = 0x06;
+
}
READ16_MEMBER(megasys1_state::megasys1A_mcu_hs_r)
@@ -4041,6 +4074,10 @@ DRIVER_INIT_MEMBER(megasys1_state,avspirit)
m_ip_select_values[3] = 0x33;
m_ip_select_values[4] = 0x34;
+ m_ip_select_values[5] = 0xff;
+ m_ip_select_values[6] = 0x06;
+
+
// has twice less RAM
m_maincpu->space(AS_PROGRAM).unmap_readwrite(0x060000, 0x06ffff);
m_maincpu->space(AS_PROGRAM).install_ram(0x070000, 0x07ffff, m_ram);
@@ -4053,6 +4090,10 @@ DRIVER_INIT_MEMBER(megasys1_state,bigstrik)
m_ip_select_values[2] = 0x55;
m_ip_select_values[3] = 0x56;
m_ip_select_values[4] = 0x57;
+
+ m_ip_select_values[5] = 0xfb;
+ m_ip_select_values[6] = 0x06;
+
}
DRIVER_INIT_MEMBER(megasys1_state,chimerab)
@@ -4063,6 +4104,10 @@ DRIVER_INIT_MEMBER(megasys1_state,chimerab)
m_ip_select_values[2] = 0x53;
m_ip_select_values[3] = 0x54;
m_ip_select_values[4] = 0x55;
+
+ m_ip_select_values[5] = 0xf2;
+ m_ip_select_values[6] = 0x06;
+
}
DRIVER_INIT_MEMBER(megasys1_state,cybattlr)
@@ -4072,6 +4117,9 @@ DRIVER_INIT_MEMBER(megasys1_state,cybattlr)
m_ip_select_values[2] = 0x53;
m_ip_select_values[3] = 0x54;
m_ip_select_values[4] = 0x55;
+
+ m_ip_select_values[5] = 0xf2;
+ m_ip_select_values[6] = 0x06;
}
DRIVER_INIT_MEMBER(megasys1_state,edf)
@@ -4081,6 +4129,10 @@ DRIVER_INIT_MEMBER(megasys1_state,edf)
m_ip_select_values[2] = 0x22;
m_ip_select_values[3] = 0x23;
m_ip_select_values[4] = 0x24;
+
+ m_ip_select_values[5] = 0xf0;
+ m_ip_select_values[6] = 0x06;
+
}
READ16_MEMBER(megasys1_state::edfbl_input_r)
@@ -4115,6 +4167,10 @@ DRIVER_INIT_MEMBER(megasys1_state,hayaosi1)
m_ip_select_values[2] = 0x53;
m_ip_select_values[3] = 0x54;
m_ip_select_values[4] = 0x55;
+
+ m_ip_select_values[5] = 0xfc;
+ m_ip_select_values[6] = 0x06;
+
}
READ16_MEMBER(megasys1_state::iganinju_mcu_hs_r)
@@ -4390,7 +4446,8 @@ GAME( 1993, hayaosi1, 0, system_B_hayaosi1, hayaosi1, megasys1_state, hay
// Type C
GAME( 1991, 64street, 0, system_C, 64street, megasys1_state, 64street, ROT0, "Jaleco", "64th. Street - A Detective Story (World)", 0 )
-GAME( 1991, 64streetj,64street, system_C, 64street, megasys1_state, 64street, ROT0, "Jaleco", "64th. Street - A Detective Story (Japan)", 0 )
+GAME( 1991, 64streetj,64street, system_C, 64street, megasys1_state, 64street, ROT0, "Jaleco", "64th. Street - A Detective Story (Japan, set 1)", 0 )
+GAME( 1991, 64streetja,64street,system_C, 64street, megasys1_state, 64street, ROT0, "Jaleco", "64th. Street - A Detective Story (Japan, set 2)", 0 )
GAME( 1992, bigstrik, 0, system_C, bigstrik, megasys1_state, bigstrik, ROT0, "Jaleco", "Big Striker", 0 )
GAME( 1993, chimerab, 0, system_C, chimerab, megasys1_state, chimerab, ROT0, "Jaleco", "Chimera Beast (Japan, prototype)", 0 )
GAME( 1993, cybattlr, 0, system_C, cybattlr, megasys1_state, cybattlr, ROT90, "Jaleco", "Cybattler", 0 )
diff --git a/src/mame/drivers/mephisto.cpp b/src/mame/drivers/mephisto.cpp
index 8fedccf4cd6..822cbc584a3 100644
--- a/src/mame/drivers/mephisto.cpp
+++ b/src/mame/drivers/mephisto.cpp
@@ -365,7 +365,7 @@ static MACHINE_CONFIG_START( mephisto, mephisto_state )
/* sound hardware */
MCFG_SPEAKER_STANDARD_MONO("mono")
- MCFG_SOUND_ADD("beeper", BEEP, 0)
+ MCFG_SOUND_ADD("beeper", BEEP, 3250)
MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.0)
MCFG_TIMER_DRIVER_ADD_PERIODIC("nmi_timer", mephisto_state, update_nmi, attotime::from_hz(600))
diff --git a/src/mame/drivers/merit.cpp b/src/mame/drivers/merit.cpp
index 9f5ac8f6190..f438e37dea9 100644
--- a/src/mame/drivers/merit.cpp
+++ b/src/mame/drivers/merit.cpp
@@ -59,7 +59,7 @@ Merit Riviera Notes - There are several known versions:
Riviera Super Star (not dumped)
Riviera Montana Version (with journal printer, not dumped)
Riviera Tennessee Draw (not dumped)
- Michigan Superstar Draw Poker (not dumped)
+ Michigan Super Draw Poker (Is there a "Superstar" version?)
Americana
There are several law suites over the Riviera games. Riviera Distributors Inc. bought earlier versions
@@ -422,6 +422,19 @@ static ADDRESS_MAP_START( bigappg_map, AS_PROGRAM, 8, merit_state )
AM_RANGE(0xf800, 0xfbff) AM_READWRITE(palette_r, palette_w)
ADDRESS_MAP_END
+static ADDRESS_MAP_START( misdraw_map, AS_PROGRAM, 8, merit_state )
+ AM_RANGE(0x0000, 0x7fff) AM_ROM
+ AM_RANGE(0xb000, 0xb7ff) AM_RAM AM_SHARE("cpunvram") // overlays other NVRAM? or is it banked?
+ AM_RANGE(0xa000, 0xbfff) AM_RAM AM_SHARE("nvram")
+ AM_RANGE(0xc004, 0xc007) AM_DEVREADWRITE("ppi8255_0", i8255_device, read, write) // swapped compared to other set?
+ AM_RANGE(0xc008, 0xc00b) AM_DEVREADWRITE("ppi8255_1", i8255_device, read, write)
+ AM_RANGE(0xe000, 0xe000) AM_DEVWRITE("crtc", mc6845_device, address_w)
+ AM_RANGE(0xe001, 0xe001) AM_DEVWRITE("crtc", mc6845_device, register_w)
+ AM_RANGE(0xe800, 0xefff) AM_RAM AM_SHARE("raattr")
+ AM_RANGE(0xf000, 0xf7ff) AM_RAM AM_SHARE("ravideo")
+ AM_RANGE(0xf800, 0xfbff) AM_READWRITE(palette_r, palette_w)
+ADDRESS_MAP_END
+
static ADDRESS_MAP_START( dodge_map, AS_PROGRAM, 8, merit_state )
AM_RANGE(0x0000, 0x7fff) AM_ROM
AM_RANGE(0xa000, 0xbfff) AM_RAM AM_SHARE("nvram")
@@ -590,6 +603,8 @@ static INPUT_PORTS_START( meritpoker )
PORT_DIPUNKNOWN_DIPLOC( 0x80, IP_ACTIVE_LOW, "SW1:8" )
INPUT_PORTS_END
+
+
static INPUT_PORTS_START( bigappg )
PORT_INCLUDE( meritpoker )
@@ -1260,6 +1275,14 @@ static MACHINE_CONFIG_DERIVED( bigappg, pitboss )
MCFG_NVRAM_ADD_0FILL("nvram")
MACHINE_CONFIG_END
+static MACHINE_CONFIG_DERIVED( misdraw, bigappg )
+
+ MCFG_CPU_MODIFY("maincpu")
+ MCFG_CPU_PROGRAM_MAP(misdraw_map)
+
+ MCFG_NVRAM_ADD_0FILL("cpunvram")
+MACHINE_CONFIG_END
+
static MACHINE_CONFIG_DERIVED( dodge, pitboss )
MCFG_CPU_MODIFY("maincpu")
@@ -1479,6 +1502,23 @@ ROM_START( bigappg )
ROM_LOAD( "haip_u40.u40", 0x0000, 0x2000, CRC(ac4983b8) SHA1(a552a15f813c331de67eaae2ed42cc037b26c5bd) )
ROM_END
+ROM_START( misdraw )
+ ROM_REGION( 0x10000, "maincpu", 0 )
+ ROM_LOAD( "2131-16_u5-2.u5", 0x0000, 0x8000, CRC(fc756320) SHA1(6b810c57ed1be844a04a6081d727e182509604b4) ) /* 2131-16 U5-2 081889 */
+
+ ROM_REGION( 0x6000, "gfx1", 0 )
+ ROM_LOAD( "u39.u39", 0x0000, 0x2000, CRC(0f09d19b) SHA1(1f98559d5bad7c84d92ecea5a6df9429914a47f0) )
+ ROM_LOAD( "u38.u38", 0x2000, 0x2000, CRC(8210a48d) SHA1(9af3e8ac8dcf1e548c4ba3ca8096e48dbb3b4700) )
+ ROM_LOAD( "u37.u37", 0x4000, 0x2000, CRC(34ca07d5) SHA1(3656b3eb78dd6ea06cf323a08fc3f949a01b76a3) )
+
+ ROM_REGION( 0x2000, "gfx2", 0 )
+ ROM_LOAD( "haip_u40.u40", 0x0000, 0x2000, CRC(ac4983b8) SHA1(a552a15f813c331de67eaae2ed42cc037b26c5bd) )
+
+ ROM_REGION( 0x0800, "cpunvram", ROMREGION_ERASEFF )
+ // this contains CODE, the game jumps there on startup
+ ROM_LOAD( "crt-209_2131-16", 0x0000, 0x0800, CRC(34729437) SHA1(f097a1a97d8078d7d6a6af85be416b1d1d09c7f2) ) /* 2816 EEPROM in Z80 epoxy CPU module */
+ROM_END
+
ROM_START( dodgectya )
ROM_REGION( 0x10000, "maincpu", 0 )
ROM_LOAD( "2131-82_u5-0d.u5", 0x0000, 0x8000, CRC(ef71b268) SHA1(c85f2c8e7e9cd89b4720699814d8fcfbecf4dc1b) ) /* 2131-82 U5-0D 884111 2131 820*/
@@ -2185,6 +2225,7 @@ GAME( 1986, rivieraa, riviera, dodge, riviera, driver_device, 0, ROT0, "
GAME( 1986, rivierab, riviera, dodge, rivierab, driver_device, 0, ROT0, "Merit", "Riviera Hi-Score (2131-08, U5-2D)", MACHINE_SUPPORTS_SAVE | MACHINE_IMPERFECT_GRAPHICS )
GAME( 1986, bigappg, 0, bigappg, bigappg, driver_device, 0, ROT0, "Big Apple Games / Merit", "The Big Apple (2131-13, U5-0)", MACHINE_SUPPORTS_SAVE )
+GAME( 1986, misdraw, 0, misdraw, bigappg, driver_device, 0, ROT0, "Big Apple Games / Merit", "Michigan Super Draw (2131-16, U5-2)", MACHINE_SUPPORTS_SAVE )
GAME( 1986, dodgectya,dodgecty,dodge, dodge, driver_device, 0, ROT0, "Merit", "Dodge City (2131-82, U5-0D)", MACHINE_SUPPORTS_SAVE | MACHINE_IMPERFECT_GRAPHICS | MACHINE_NOT_WORKING )
GAME( 1986, dodgectyb,dodgecty,dodge, dodge, driver_device, 0, ROT0, "Merit", "Dodge City (2131-82, U5-50)", MACHINE_SUPPORTS_SAVE | MACHINE_IMPERFECT_GRAPHICS | MACHINE_NOT_WORKING )
diff --git a/src/mame/drivers/metro.cpp b/src/mame/drivers/metro.cpp
index f7006122d15..c00f2dd51ee 100644
--- a/src/mame/drivers/metro.cpp
+++ b/src/mame/drivers/metro.cpp
@@ -21,44 +21,45 @@ Sound Chips : OKIM6295 + YM2413 or
Other : Memory Blitter
------------------------------------------------------------------------------------------------
-Year + Game PCB Video Sub CPU Sound Issues / Notes
+Year + Game PCB Video Sub CPU Sound Issues / Notes
------------------------------------------------------------------------------------------------
-92 Last Fortress - Toride VG420 I4100 uPD7810 YM2413+M6295
-92 Last Fortress - Toride (Ger)VG460-(A) I4100 uPD7810 YM2413+M6295
-92 Pang Pom's VG420 I4100 uPD7810 YM2413+M6295
-92 Sky Alert VG420 I4100 uPD7810 YM2413+M6295
-92 The Karate Tournament VG460-B I4100 uPD7810 YM2413+M6295
-93? Lady Killer / Moeyo Gonta!! VG460-B I4100 uPD7810 YM2413+M6295
-93 Poitto! MTR5260-A I4100 uPD7810 YM2413+M6295
-
-94 Dharma Doujou MTR5260-A I4220 uPD7810 YM2413+M6295
-94 Dharma Doujou (Korea) MTR527 I4220 uPD7810 YM2413+M6295
-94 Toride II Adauchi Gaiden MTR5260-A I4220 uPD7810 YM2413+M6295
-94 Toride II Adauchi Gaiden(Kr)MTR5260-A I4220 uPD7810 YM2413+M6295
-94 Gun Master MTR5260-A I4220 uPD7810 YM2151+M6295
-95 Daitoride MTR5260-A I4220 uPD7810 YM2151+M6295
-95 Pururun MTR5260-A I4220 uPD7810 YM2151+M6295
-95 Puzzli MTR5260-A I4220 uPD7810 YM2151+M6295
-96 Sankokushi MTR5260-A I4220 uPD7810 YM2413+M6295
-
-95 Mouse Shooter GoGo - I4220 - YMF278B GFX ROM data lines swapped
-96 Bal Cube - I4220 - YMF278B GFX ROM data lines swapped
-96 Daitoride (YMF278B) - I4220 - YMF278B GFX ROM data lines swapped
-96 Bang Bang Ball - I4220 - YMF278B GFX ROM data lines swapped
-99 Battle Bubble v2.00 LM2D-Y I4220 - YMF278B GFX ROM data lines swapped
-
-94 Blazing Tornado HUM-002-A-(B) I4220 Z80 YM2610 Konami 053936 PSAC2
-96 Grand Striker 2 HUM-003(A) I4220 Z80 YM2610 Konami 053936 PSAC2
-
-95 Varia Metal ES-9309B-B I4220 - ES8712+M6295+M6585
-
-95 Mahjong Doukyuusei VG330-B I4300 - YM2413+M6295
-95 Mahjong Doukyuusei Special VG340-A I4300 - YM2413+M6295
-96 Mouja VG410-B I4300 - YM2413+M6295
-97 Mahjong Gakuensai VG340-A I4300 - YM2413+M6295
-98 Mahjong Gakuensai 2 VG340-A I4300 - YM2413+M6295
-
-00 Puzzlet VG2200-(B) I4300 Z86E02 YM2413+M6295 H8/3007 CPU
+92 Last Fortress - Toride VG420 I4100 uPD7810 YM2413+M6295
+92 Last Fortress - Toride (Ger) VG460-(A) I4100 uPD7810 YM2413+M6295
+92 Pang Pom's VG420 I4100 uPD7810 YM2413+M6295
+92 Sky Alert VG420 I4100 uPD7810 YM2413+M6295
+92 The Karate Tournament VG460-(A) I4100 uPD7810 YM2413+M6295
+92 The Karate Tournament (Japan) VG460-(A) I4100 uPD7810 YM2413+M6295
+93? Lady Killer / Moeyo Gonta!! VG460-B I4100 uPD7810 YM2413+M6295
+93 Poitto! MTR5260-A I4100 uPD7810 YM2413+M6295
+
+94 Dharma Doujou MTR5260-A I4220 uPD7810 YM2413+M6295
+94 Dharma Doujou (Korea) MTR527 I4220 uPD7810 YM2413+M6295
+94 Toride II Adauchi Gaiden MTR5260-A I4220 uPD7810 YM2413+M6295
+94 Toride II Adauchi Gaiden(Kr) MTR5260-A I4220 uPD7810 YM2413+M6295
+94 Gun Master MTR5260-A I4220 uPD7810 YM2151+M6295
+95 Daitoride MTR5260-A I4220 uPD7810 YM2151+M6295
+95 Pururun MTR5260-A I4220 uPD7810 YM2151+M6295
+95 Puzzli MTR5260-A I4220 uPD7810 YM2151+M6295
+96 Sankokushi MTR5260-A I4220 uPD7810 YM2413+M6295
+
+95 Mouse Shooter GoGo - I4220 - YMF278B GFX ROM data lines swapped
+96 Bal Cube - I4220 - YMF278B GFX ROM data lines swapped
+96 Daitoride (YMF278B) - I4220 - YMF278B GFX ROM data lines swapped
+96 Bang Bang Ball - I4220 - YMF278B GFX ROM data lines swapped
+99 Battle Bubble v2.00 LM2D-Y I4220 - YMF278B GFX ROM data lines swapped
+
+94 Blazing Tornado HUM-002-A-(B) I4220 Z80 YM2610 Konami 053936 PSAC2
+96 Grand Striker 2 HUM-003(A) I4220 Z80 YM2610 Konami 053936 PSAC2
+
+95 Varia Metal ES-9309B-B I4220 - ES8712+M6295+M6585
+
+95 Mahjong Doukyuusei VG330-B I4300 - YM2413+M6295
+95 Mahjong Doukyuusei Special VG340-A I4300 - YM2413+M6295
+96 Mouja VG410-B I4300 - YM2413+M6295
+97 Mahjong Gakuensai VG340-A I4300 - YM2413+M6295
+98 Mahjong Gakuensai 2 VG340-A I4300 - YM2413+M6295
+
+00 Puzzlet VG2200-(B) I4300 Z86E02 YM2413+M6295 H8/3007 CPU
------------------------------------------------------------------------------------------------
Mouse Shooter GoGo, Bal Cube, Bang Bang Ball & Daitoride (YMF278B) PCBs have
@@ -5066,6 +5067,25 @@ Notes:
ROM_START( karatour )
ROM_REGION( 0x080000, "maincpu", 0 ) /* 68000 Code */
+ ROM_LOAD16_BYTE( "2.2FAB.8G", 0x000000, 0x040000, CRC(199a28d4) SHA1(ae880b5d5a1703c54e0ef27015039c7bb05eb185) ) // Hand-written label "(2) 2FAB"
+ ROM_LOAD16_BYTE( "3.0560.10G", 0x000001, 0x040000, CRC(b054e683) SHA1(51e28a99f87684f3e56c7a168523f94717903d79) ) // Hand-written label "(3) 0560"
+
+ ROM_REGION( 0x02c000, "audiocpu", 0 ) /* NEC78C10 Code */
+ ROM_LOAD( "KT001.1I", 0x000000, 0x004000, CRC(1dd2008c) SHA1(488b6f5d15bdbc069ee2cd6d7a0980a228d2f790) ) // 11xxxxxxxxxxxxxxx = 0xFF
+ ROM_CONTINUE( 0x010000, 0x01c000 )
+
+ ROM_REGION( 0x400000, "gfx1", 0 ) /* Gfx + Data (Addressable by CPU & Blitter) */
+ ROMX_LOAD( "361A04.15F", 0x000000, 0x100000, CRC(f6bf20a5) SHA1(cb4cb249eb1c106fe7ef0ace735c0cc3106f1ab7) , ROM_GROUPWORD | ROM_SKIP(6))
+ ROMX_LOAD( "361A07.17D", 0x000002, 0x100000, CRC(794cc1c0) SHA1(ecfdec5874a95846c0fb7966fdd1da625d85531f) , ROM_GROUPWORD | ROM_SKIP(6))
+ ROMX_LOAD( "361A05.17F", 0x000004, 0x100000, CRC(ea9c11fc) SHA1(176c4419cfe13ff019654a93cd7b0befa238bbc3) , ROM_GROUPWORD | ROM_SKIP(6))
+ ROMX_LOAD( "361A06.15D", 0x000006, 0x100000, CRC(7e15f058) SHA1(267f0a5acb874d4fff3556ffa405e24724174667) , ROM_GROUPWORD | ROM_SKIP(6))
+
+ ROM_REGION( 0x040000, "oki", 0 ) /* Samples */
+ ROM_LOAD( "8.4A06.1D", 0x000000, 0x040000, CRC(8d208179) SHA1(54a27ef155828435bc5eba60790a8584274c8b4a) ) // Hand-written label "(8) 4A06"
+ROM_END
+
+ROM_START( karatourj )
+ ROM_REGION( 0x080000, "maincpu", 0 ) /* 68000 Code */
ROM_LOAD16_BYTE( "kt002.8g", 0x000000, 0x040000, CRC(316a97ec) SHA1(4b099d2fa91822c9c85d647aab3d6779fc400250) )
ROM_LOAD16_BYTE( "kt003.10g", 0x000001, 0x040000, CRC(abe1b991) SHA1(9b6327169d66717dd9dd74816bc33eb208c3763c) )
@@ -5083,7 +5103,6 @@ ROM_START( karatour )
ROM_LOAD( "kt008.1d", 0x000000, 0x040000, CRC(47cf9fa1) SHA1(88923ace550154c58c066f859cadfa7864c5344c) )
ROM_END
-
/***************************************************************************
Moeyo Gonta!! (Lady Killer)
@@ -6292,7 +6311,8 @@ DRIVER_INIT_MEMBER(metro_state,puzzlet)
***************************************************************************/
-GAME( 1992, karatour, 0, karatour, karatour, metro_state, karatour, ROT0, "Mitchell", "The Karate Tournament", MACHINE_IMPERFECT_GRAPHICS | MACHINE_SUPPORTS_SAVE )
+GAME( 1992, karatour, 0, karatour, karatour, metro_state, karatour, ROT0, "Mitchell", "The Karate Tournament", MACHINE_SUPPORTS_SAVE )
+GAME( 1992, karatourj, karatour, karatour, karatour, metro_state, karatour, ROT0, "Mitchell", "The Karate Tournament (Japan)", MACHINE_SUPPORTS_SAVE )
GAME( 1992, pangpoms, 0, pangpoms, pangpoms, metro_state, metro, ROT0, "Metro", "Pang Pom's", MACHINE_SUPPORTS_SAVE )
GAME( 1992, pangpomsm, pangpoms, pangpoms, pangpoms, metro_state, metro, ROT0, "Metro (Mitchell license)", "Pang Pom's (Mitchell)", MACHINE_SUPPORTS_SAVE )
GAME( 1992, skyalert, 0, skyalert, skyalert, metro_state, metro, ROT270, "Metro", "Sky Alert", MACHINE_SUPPORTS_SAVE )
diff --git a/src/mame/drivers/micral.cpp b/src/mame/drivers/micral.cpp
index 0dbbbe51938..743ee915080 100644
--- a/src/mame/drivers/micral.cpp
+++ b/src/mame/drivers/micral.cpp
@@ -242,7 +242,6 @@ MACHINE_RESET_MEMBER( micral_state, micral )
{
//membank("bankr0")->set_entry(0); // point at rom
//membank("bankw0")->set_entry(0); // always write to ram
- m_beep->set_frequency(2000);
m_maincpu->set_state_int(Z80_PC, 0xf800);
}
@@ -274,7 +273,7 @@ static MACHINE_CONFIG_START( micral, micral_state )
/* sound hardware */
MCFG_SPEAKER_STANDARD_MONO("mono")
- MCFG_SOUND_ADD("beeper", BEEP, 0)
+ MCFG_SOUND_ADD("beeper", BEEP, 2000)
MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.50)
MACHINE_CONFIG_END
diff --git a/src/mame/drivers/microdec.cpp b/src/mame/drivers/microdec.cpp
index c52885336e0..9d5bd930400 100644
--- a/src/mame/drivers/microdec.cpp
+++ b/src/mame/drivers/microdec.cpp
@@ -12,6 +12,7 @@
#include "cpu/z80/z80.h"
#include "machine/upd765.h"
#include "machine/terminal.h"
+#include "softlist.h"
#define TERMINAL_TAG "terminal"
@@ -108,6 +109,9 @@ static MACHINE_CONFIG_START( microdec, microdec_state )
MCFG_UPD765A_ADD("upd765", true, true)
MCFG_FLOPPY_DRIVE_ADD("upd765:0", microdec_floppies, "525hd", floppy_image_device::default_floppy_formats)
MCFG_FLOPPY_DRIVE_ADD("upd765:1", microdec_floppies, "525hd", floppy_image_device::default_floppy_formats)
+
+ // software lists
+ MCFG_SOFTWARE_LIST_ADD("flop_list", "md2_flop")
MACHINE_CONFIG_END
/* ROM definition */
diff --git a/src/mame/drivers/micronic.cpp b/src/mame/drivers/micronic.cpp
index 90a898854ef..c11d541c198 100644
--- a/src/mame/drivers/micronic.cpp
+++ b/src/mame/drivers/micronic.cpp
@@ -159,7 +159,7 @@ WRITE8_MEMBER( micronic_state::beep_w )
500, 444, 400, 364, 333, 308, 286, 267
};
- m_beep->set_frequency(frequency[data & 0x0f]);
+ m_beep->set_clock(frequency[data & 0x0f]);
m_beep->set_state((data & 0x0f) ? 1 : 0);
}
diff --git a/src/mame/drivers/micropin.cpp b/src/mame/drivers/micropin.cpp
index 7b05d407b3e..59b3a27b162 100644
--- a/src/mame/drivers/micropin.cpp
+++ b/src/mame/drivers/micropin.cpp
@@ -225,7 +225,7 @@ WRITE_LINE_MEMBER( micropin_state::p50ca2_w )
WRITE8_MEMBER( micropin_state::p51a_w )
{
static UINT16 frequency[16] = { 387, 435, 488, 517, 581, 652, 691, 775, 870, 977, 1035, 1161, 1304, 1381, 1550, 1740 };
- m_beep->set_frequency(frequency[data & 15]);
+ m_beep->set_clock(frequency[data & 15]);
m_beep_time = 10; // number of 10ms intervals before it is silenced
m_beep->set_state(1);
}
@@ -292,7 +292,7 @@ static MACHINE_CONFIG_START( micropin, micropin_state )
/* Sound */
MCFG_FRAGMENT_ADD( genpin_audio )
MCFG_SPEAKER_STANDARD_MONO("mono")
- MCFG_SOUND_ADD("beeper", BEEP, 0)
+ MCFG_SOUND_ADD("beeper", BEEP, 387)
MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.50)
/* Devices */
diff --git a/src/mame/drivers/midtunit.cpp b/src/mame/drivers/midtunit.cpp
index 996086bfe05..15e50184a56 100644
--- a/src/mame/drivers/midtunit.cpp
+++ b/src/mame/drivers/midtunit.cpp
@@ -1186,253 +1186,289 @@ ROM_END
ROM_START( nbajam )
ROM_REGION( 0x50000, "adpcm:cpu", 0 ) /* sound CPU */
- ROM_LOAD( "nbau3.bin", 0x010000, 0x20000, CRC(3a3ea480) SHA1(d12a45cba5c35f046b176661d7877fa4fd0e6c13) )
+ ROM_LOAD( "l2_nba_jam_u3_sound_rom.u3", 0x010000, 0x20000, CRC(3a3ea480) SHA1(d12a45cba5c35f046b176661d7877fa4fd0e6c13) )
ROM_RELOAD( 0x030000, 0x20000 )
ROM_REGION( 0x100000, "adpcm:oki", 0 ) /* ADPCM */
- ROM_LOAD( "nbau12.bin", 0x000000, 0x80000, CRC(b94847f1) SHA1(e7efa0a379bfa91fe4ffb75f07a5dfbfde9a96b4) )
- ROM_LOAD( "nbau13.bin", 0x080000, 0x80000, CRC(b6fe24bd) SHA1(f70f75b5570a2b368ebc74d2a7d264c618940430) )
+ ROM_LOAD( "nbau12.u12", 0x000000, 0x80000, CRC(b94847f1) SHA1(e7efa0a379bfa91fe4ffb75f07a5dfbfde9a96b4) )
+ ROM_LOAD( "nbau13.u13", 0x080000, 0x80000, CRC(b6fe24bd) SHA1(f70f75b5570a2b368ebc74d2a7d264c618940430) )
ROM_REGION16_LE( 0x100000, "maincpu", 0 ) /* 34010 code */
- ROM_LOAD16_BYTE( "nbauj12.bin", 0x00000, 0x80000, CRC(b93e271c) SHA1(b0e9f055376a4a4cd1115a81f71c933903c251b1) )
- ROM_LOAD16_BYTE( "nbaug12.bin", 0x00001, 0x80000, CRC(407d3390) SHA1(a319bc890d94310e44fe2ec98bfc95665a662701) )
+ ROM_LOAD16_BYTE( "l3_nba_jam_game_rom_uj12.uj12", 0x00000, 0x80000, CRC(b93e271c) SHA1(b0e9f055376a4a4cd1115a81f71c933903c251b1) )
+ ROM_LOAD16_BYTE( "l3_nba_jam_game_rom_ug12.ug12", 0x00001, 0x80000, CRC(407d3390) SHA1(a319bc890d94310e44fe2ec98bfc95665a662701) )
ROM_REGION( 0xc00000, "gfxrom", 0 )
- ROM_LOAD32_BYTE( "nbaug14.bin", 0x000000, 0x80000, CRC(04bb9f64) SHA1(9e1a8c37e14cb6fe67f4aa3caa9022f356f1ca64) )
- ROM_LOAD32_BYTE( "nbauj14.bin", 0x000001, 0x80000, CRC(b34b7af3) SHA1(0abb74d2f414bc9da0380a81beb134f3a87c1a0a) )
- ROM_LOAD32_BYTE( "nbaug19.bin", 0x000002, 0x80000, CRC(a8f22fbb) SHA1(514208a9d6d0c8c2d7847cc02d4387eac90be659) )
- ROM_LOAD32_BYTE( "nbauj19.bin", 0x000003, 0x80000, CRC(8130a8a2) SHA1(f23f124024285d07d8cf822817b62e42c38b82db) )
-
- ROM_LOAD32_BYTE( "nbaug16.bin", 0x200000, 0x80000, CRC(8591c572) SHA1(237bab2e93abf438a84be3603505db5de59922af) )
- ROM_LOAD32_BYTE( "nbauj16.bin", 0x200001, 0x80000, CRC(d2e554f1) SHA1(139aa39bd48b8605058ece188f9f5e6793561fcb) )
- ROM_LOAD32_BYTE( "nbaug20.bin", 0x200002, 0x80000, CRC(44fd6221) SHA1(1d6754bf2c24950080523f66b77407931babba29) )
- ROM_LOAD32_BYTE( "nbauj20.bin", 0x200003, 0x80000, CRC(f9cebbb6) SHA1(6202e490bc5658bd0741422f841540fcd037cfee) )
-
- ROM_LOAD32_BYTE( "nbaug17.bin", 0x400000, 0x80000, CRC(6f921886) SHA1(72542249ca6602dc4816952765c1810f064ff394) )
- ROM_LOAD32_BYTE( "nbauj17.bin", 0x400001, 0x80000, CRC(b2e14981) SHA1(5cec9b7fcaa6d0ce5bff689541fc98db435c5b5f) )
- ROM_LOAD32_BYTE( "nbaug22.bin", 0x400002, 0x80000, CRC(ab05ed89) SHA1(4153d098fbaeac963d93f26dcd9d8bc33a48a734) )
- ROM_LOAD32_BYTE( "nbauj22.bin", 0x400003, 0x80000, CRC(59a95878) SHA1(b95165987853f164842ab2b5895ea95484a1d78b) )
-
- ROM_LOAD32_BYTE( "nbaug18.bin", 0x600000, 0x80000, CRC(5162d3d6) SHA1(14d377977510b7793e4006a7a5089dbfd785d7d1) )
- ROM_LOAD32_BYTE( "nbauj18.bin", 0x600001, 0x80000, CRC(fdee0037) SHA1(3bcc740f4bdb3236822cd6e7ed06241804351cca) )
- ROM_LOAD32_BYTE( "nbaug23.bin", 0x600002, 0x80000, CRC(7b934c7a) SHA1(a6992fb3c50429ac4fa15bd91612ae0c0b8f961d) )
- ROM_LOAD32_BYTE( "nbauj23.bin", 0x600003, 0x80000, CRC(427d2eee) SHA1(4985e3dd9c9e1bedd5a900958bf549656debd494) )
+ ROM_LOAD32_BYTE( "l1_nba_jam_game_rom_ug14.ug14", 0x000000, 0x80000, CRC(04bb9f64) SHA1(9e1a8c37e14cb6fe67f4aa3caa9022f356f1ca64) )
+ ROM_LOAD32_BYTE( "l1_nba_jam_game_rom_uj14.uj14", 0x000001, 0x80000, CRC(b34b7af3) SHA1(0abb74d2f414bc9da0380a81beb134f3a87c1a0a) )
+ ROM_LOAD32_BYTE( "l1_nba_jam_game_rom_ug19.ug19", 0x000002, 0x80000, CRC(a8f22fbb) SHA1(514208a9d6d0c8c2d7847cc02d4387eac90be659) )
+ ROM_LOAD32_BYTE( "l1_nba_jam_game_rom_uj19.uj19", 0x000003, 0x80000, CRC(8130a8a2) SHA1(f23f124024285d07d8cf822817b62e42c38b82db) )
+
+ ROM_LOAD32_BYTE( "l1_nba_jam_game_rom_ug16.ug16", 0x200000, 0x80000, CRC(8591c572) SHA1(237bab2e93abf438a84be3603505db5de59922af) )
+ ROM_LOAD32_BYTE( "l1_nba_jam_game_rom_uj16.uj16", 0x200001, 0x80000, CRC(d2e554f1) SHA1(139aa39bd48b8605058ece188f9f5e6793561fcb) )
+ ROM_LOAD32_BYTE( "l1_nba_jam_game_rom_ug20.ug20", 0x200002, 0x80000, CRC(44fd6221) SHA1(1d6754bf2c24950080523f66b77407931babba29) )
+ ROM_LOAD32_BYTE( "l1_nba_jam_game_rom_uj20.uj20", 0x200003, 0x80000, CRC(f9cebbb6) SHA1(6202e490bc5658bd0741422f841540fcd037cfee) )
+
+ ROM_LOAD32_BYTE( "l1_nba_jam_game_rom_ug17.ug17", 0x400000, 0x80000, CRC(6f921886) SHA1(72542249ca6602dc4816952765c1810f064ff394) )
+ ROM_LOAD32_BYTE( "l1_nba_jam_game_rom_uj17.uj17", 0x400001, 0x80000, CRC(b2e14981) SHA1(5cec9b7fcaa6d0ce5bff689541fc98db435c5b5f) )
+ ROM_LOAD32_BYTE( "l1_nba_jam_game_rom_ug22.ug22", 0x400002, 0x80000, CRC(ab05ed89) SHA1(4153d098fbaeac963d93f26dcd9d8bc33a48a734) )
+ ROM_LOAD32_BYTE( "l1_nba_jam_game_rom_uj22.uj22", 0x400003, 0x80000, CRC(59a95878) SHA1(b95165987853f164842ab2b5895ea95484a1d78b) )
+
+ ROM_LOAD32_BYTE( "l1_nba_jam_game_rom_ug18.ug18", 0x600000, 0x80000, CRC(5162d3d6) SHA1(14d377977510b7793e4006a7a5089dbfd785d7d1) )
+ ROM_LOAD32_BYTE( "l1_nba_jam_game_rom_uj18.uj18", 0x600001, 0x80000, CRC(fdee0037) SHA1(3bcc740f4bdb3236822cd6e7ed06241804351cca) )
+ ROM_LOAD32_BYTE( "l1_nba_jam_game_rom_ug23.ug23", 0x600002, 0x80000, CRC(7b934c7a) SHA1(a6992fb3c50429ac4fa15bd91612ae0c0b8f961d) )
+ ROM_LOAD32_BYTE( "l1_nba_jam_game_rom_uj23.uj23", 0x600003, 0x80000, CRC(427d2eee) SHA1(4985e3dd9c9e1bedd5a900958bf549656debd494) )
ROM_END
ROM_START( nbajamr2 )
ROM_REGION( 0x50000, "adpcm:cpu", 0 ) /* sound CPU */
- ROM_LOAD( "nbau3.bin", 0x010000, 0x20000, CRC(3a3ea480) SHA1(d12a45cba5c35f046b176661d7877fa4fd0e6c13) )
+ ROM_LOAD( "l2_nba_jam_u3_sound_rom.u3", 0x010000, 0x20000, CRC(3a3ea480) SHA1(d12a45cba5c35f046b176661d7877fa4fd0e6c13) )
ROM_RELOAD( 0x030000, 0x20000 )
ROM_REGION( 0x100000, "adpcm:oki", 0 ) /* ADPCM */
- ROM_LOAD( "nbau12.bin", 0x000000, 0x80000, CRC(b94847f1) SHA1(e7efa0a379bfa91fe4ffb75f07a5dfbfde9a96b4) )
- ROM_LOAD( "nbau13.bin", 0x080000, 0x80000, CRC(b6fe24bd) SHA1(f70f75b5570a2b368ebc74d2a7d264c618940430) )
+ ROM_LOAD( "nbau12.u12", 0x000000, 0x80000, CRC(b94847f1) SHA1(e7efa0a379bfa91fe4ffb75f07a5dfbfde9a96b4) )
+ ROM_LOAD( "nbau13.u13", 0x080000, 0x80000, CRC(b6fe24bd) SHA1(f70f75b5570a2b368ebc74d2a7d264c618940430) )
ROM_REGION16_LE( 0x100000, "maincpu", 0 ) /* 34010 code */
- ROM_LOAD16_BYTE( "jam2uj12.bin", 0x00000, 0x80000, CRC(0fe80b36) SHA1(fe6b21dc9b393b25c511b2914b568fa92301d749) )
- ROM_LOAD16_BYTE( "jam2ug12.bin", 0x00001, 0x80000, CRC(5d106315) SHA1(e2cddd9ed6771e77711e3a4f25fe2d07712d954e) )
+ ROM_LOAD16_BYTE( "l2_nba_jam_game_rom_uj12.uj12", 0x00000, 0x80000, CRC(0fe80b36) SHA1(fe6b21dc9b393b25c511b2914b568fa92301d749) )
+ ROM_LOAD16_BYTE( "l2_nba_jam_game_rom_ug12.ug12", 0x00001, 0x80000, CRC(5d106315) SHA1(e2cddd9ed6771e77711e3a4f25fe2d07712d954e) )
ROM_REGION( 0xc00000, "gfxrom", 0 )
- ROM_LOAD32_BYTE( "nbaug14.bin", 0x000000, 0x80000, CRC(04bb9f64) SHA1(9e1a8c37e14cb6fe67f4aa3caa9022f356f1ca64) )
- ROM_LOAD32_BYTE( "nbauj14.bin", 0x000001, 0x80000, CRC(b34b7af3) SHA1(0abb74d2f414bc9da0380a81beb134f3a87c1a0a) )
- ROM_LOAD32_BYTE( "nbaug19.bin", 0x000002, 0x80000, CRC(a8f22fbb) SHA1(514208a9d6d0c8c2d7847cc02d4387eac90be659) )
- ROM_LOAD32_BYTE( "nbauj19.bin", 0x000003, 0x80000, CRC(8130a8a2) SHA1(f23f124024285d07d8cf822817b62e42c38b82db) )
-
- ROM_LOAD32_BYTE( "nbaug16.bin", 0x200000, 0x80000, CRC(8591c572) SHA1(237bab2e93abf438a84be3603505db5de59922af) )
- ROM_LOAD32_BYTE( "nbauj16.bin", 0x200001, 0x80000, CRC(d2e554f1) SHA1(139aa39bd48b8605058ece188f9f5e6793561fcb) )
- ROM_LOAD32_BYTE( "nbaug20.bin", 0x200002, 0x80000, CRC(44fd6221) SHA1(1d6754bf2c24950080523f66b77407931babba29) )
- ROM_LOAD32_BYTE( "nbauj20.bin", 0x200003, 0x80000, CRC(f9cebbb6) SHA1(6202e490bc5658bd0741422f841540fcd037cfee) )
-
- ROM_LOAD32_BYTE( "nbaug17.bin", 0x400000, 0x80000, CRC(6f921886) SHA1(72542249ca6602dc4816952765c1810f064ff394) )
- ROM_LOAD32_BYTE( "nbauj17.bin", 0x400001, 0x80000, CRC(b2e14981) SHA1(5cec9b7fcaa6d0ce5bff689541fc98db435c5b5f) )
- ROM_LOAD32_BYTE( "nbaug22.bin", 0x400002, 0x80000, CRC(ab05ed89) SHA1(4153d098fbaeac963d93f26dcd9d8bc33a48a734) )
- ROM_LOAD32_BYTE( "nbauj22.bin", 0x400003, 0x80000, CRC(59a95878) SHA1(b95165987853f164842ab2b5895ea95484a1d78b) )
-
- ROM_LOAD32_BYTE( "nbaug18.bin", 0x600000, 0x80000, CRC(5162d3d6) SHA1(14d377977510b7793e4006a7a5089dbfd785d7d1) )
- ROM_LOAD32_BYTE( "nbauj18.bin", 0x600001, 0x80000, CRC(fdee0037) SHA1(3bcc740f4bdb3236822cd6e7ed06241804351cca) )
- ROM_LOAD32_BYTE( "nbaug23.bin", 0x600002, 0x80000, CRC(7b934c7a) SHA1(a6992fb3c50429ac4fa15bd91612ae0c0b8f961d) )
- ROM_LOAD32_BYTE( "nbauj23.bin", 0x600003, 0x80000, CRC(427d2eee) SHA1(4985e3dd9c9e1bedd5a900958bf549656debd494) )
+ ROM_LOAD32_BYTE( "l1_nba_jam_game_rom_ug14.ug14", 0x000000, 0x80000, CRC(04bb9f64) SHA1(9e1a8c37e14cb6fe67f4aa3caa9022f356f1ca64) )
+ ROM_LOAD32_BYTE( "l1_nba_jam_game_rom_uj14.uj14", 0x000001, 0x80000, CRC(b34b7af3) SHA1(0abb74d2f414bc9da0380a81beb134f3a87c1a0a) )
+ ROM_LOAD32_BYTE( "l1_nba_jam_game_rom_ug19.ug19", 0x000002, 0x80000, CRC(a8f22fbb) SHA1(514208a9d6d0c8c2d7847cc02d4387eac90be659) )
+ ROM_LOAD32_BYTE( "l1_nba_jam_game_rom_uj19.uj19", 0x000003, 0x80000, CRC(8130a8a2) SHA1(f23f124024285d07d8cf822817b62e42c38b82db) )
+
+ ROM_LOAD32_BYTE( "l1_nba_jam_game_rom_ug16.ug16", 0x200000, 0x80000, CRC(8591c572) SHA1(237bab2e93abf438a84be3603505db5de59922af) )
+ ROM_LOAD32_BYTE( "l1_nba_jam_game_rom_uj16.uj16", 0x200001, 0x80000, CRC(d2e554f1) SHA1(139aa39bd48b8605058ece188f9f5e6793561fcb) )
+ ROM_LOAD32_BYTE( "l1_nba_jam_game_rom_ug20.ug20", 0x200002, 0x80000, CRC(44fd6221) SHA1(1d6754bf2c24950080523f66b77407931babba29) )
+ ROM_LOAD32_BYTE( "l1_nba_jam_game_rom_uj20.uj20", 0x200003, 0x80000, CRC(f9cebbb6) SHA1(6202e490bc5658bd0741422f841540fcd037cfee) )
+
+ ROM_LOAD32_BYTE( "l1_nba_jam_game_rom_ug17.ug17", 0x400000, 0x80000, CRC(6f921886) SHA1(72542249ca6602dc4816952765c1810f064ff394) )
+ ROM_LOAD32_BYTE( "l1_nba_jam_game_rom_uj17.uj17", 0x400001, 0x80000, CRC(b2e14981) SHA1(5cec9b7fcaa6d0ce5bff689541fc98db435c5b5f) )
+ ROM_LOAD32_BYTE( "l1_nba_jam_game_rom_ug22.ug22", 0x400002, 0x80000, CRC(ab05ed89) SHA1(4153d098fbaeac963d93f26dcd9d8bc33a48a734) )
+ ROM_LOAD32_BYTE( "l1_nba_jam_game_rom_uj22.uj22", 0x400003, 0x80000, CRC(59a95878) SHA1(b95165987853f164842ab2b5895ea95484a1d78b) )
+
+ ROM_LOAD32_BYTE( "l1_nba_jam_game_rom_ug18.ug18", 0x600000, 0x80000, CRC(5162d3d6) SHA1(14d377977510b7793e4006a7a5089dbfd785d7d1) )
+ ROM_LOAD32_BYTE( "l1_nba_jam_game_rom_uj18.uj18", 0x600001, 0x80000, CRC(fdee0037) SHA1(3bcc740f4bdb3236822cd6e7ed06241804351cca) )
+ ROM_LOAD32_BYTE( "l1_nba_jam_game_rom_ug23.ug23", 0x600002, 0x80000, CRC(7b934c7a) SHA1(a6992fb3c50429ac4fa15bd91612ae0c0b8f961d) )
+ ROM_LOAD32_BYTE( "l1_nba_jam_game_rom_uj23.uj23", 0x600003, 0x80000, CRC(427d2eee) SHA1(4985e3dd9c9e1bedd5a900958bf549656debd494) )
+ROM_END
+
+
+ROM_START( nbajamr1 )
+ ROM_REGION( 0x50000, "adpcm:cpu", 0 ) /* sound CPU */
+ ROM_LOAD( "l2_nba_jam_u3_sound_rom.u3", 0x010000, 0x20000, CRC(3a3ea480) SHA1(d12a45cba5c35f046b176661d7877fa4fd0e6c13) )
+ ROM_RELOAD( 0x030000, 0x20000 )
+
+ ROM_REGION( 0x100000, "adpcm:oki", 0 ) /* ADPCM */
+ ROM_LOAD( "nbau12.u12", 0x000000, 0x80000, CRC(b94847f1) SHA1(e7efa0a379bfa91fe4ffb75f07a5dfbfde9a96b4) )
+ ROM_LOAD( "nbau13.u13", 0x080000, 0x80000, CRC(b6fe24bd) SHA1(f70f75b5570a2b368ebc74d2a7d264c618940430) )
+
+ ROM_REGION16_LE( 0x100000, "maincpu", 0 ) /* 34010 code */
+ ROM_LOAD16_BYTE( "l1_nba_jam_game_rom_uj12.uj12", 0x00000, 0x80000, CRC(4db672ec) SHA1(bb329c552473179f617d3bd038f47fb69d060b55) )
+ ROM_LOAD16_BYTE( "l1_nba_jam_game_rom_ug12.ug12", 0x00001, 0x80000, CRC(ed1df3f7) SHA1(36b0c47758a205719dbef169f0af3e761f557b99) )
+
+ ROM_REGION( 0xc00000, "gfxrom", 0 )
+ ROM_LOAD32_BYTE( "l1_nba_jam_game_rom_ug14.ug14", 0x000000, 0x80000, CRC(04bb9f64) SHA1(9e1a8c37e14cb6fe67f4aa3caa9022f356f1ca64) )
+ ROM_LOAD32_BYTE( "l1_nba_jam_game_rom_uj14.uj14", 0x000001, 0x80000, CRC(b34b7af3) SHA1(0abb74d2f414bc9da0380a81beb134f3a87c1a0a) )
+ ROM_LOAD32_BYTE( "l1_nba_jam_game_rom_ug19.ug19", 0x000002, 0x80000, CRC(a8f22fbb) SHA1(514208a9d6d0c8c2d7847cc02d4387eac90be659) )
+ ROM_LOAD32_BYTE( "l1_nba_jam_game_rom_uj19.uj19", 0x000003, 0x80000, CRC(8130a8a2) SHA1(f23f124024285d07d8cf822817b62e42c38b82db) )
+
+ ROM_LOAD32_BYTE( "l1_nba_jam_game_rom_ug16.ug16", 0x200000, 0x80000, CRC(8591c572) SHA1(237bab2e93abf438a84be3603505db5de59922af) )
+ ROM_LOAD32_BYTE( "l1_nba_jam_game_rom_uj16.uj16", 0x200001, 0x80000, CRC(d2e554f1) SHA1(139aa39bd48b8605058ece188f9f5e6793561fcb) )
+ ROM_LOAD32_BYTE( "l1_nba_jam_game_rom_ug20.ug20", 0x200002, 0x80000, CRC(44fd6221) SHA1(1d6754bf2c24950080523f66b77407931babba29) )
+ ROM_LOAD32_BYTE( "l1_nba_jam_game_rom_uj20.uj20", 0x200003, 0x80000, CRC(f9cebbb6) SHA1(6202e490bc5658bd0741422f841540fcd037cfee) )
+
+ ROM_LOAD32_BYTE( "l1_nba_jam_game_rom_ug17.ug17", 0x400000, 0x80000, CRC(6f921886) SHA1(72542249ca6602dc4816952765c1810f064ff394) )
+ ROM_LOAD32_BYTE( "l1_nba_jam_game_rom_uj17.uj17", 0x400001, 0x80000, CRC(b2e14981) SHA1(5cec9b7fcaa6d0ce5bff689541fc98db435c5b5f) )
+ ROM_LOAD32_BYTE( "l1_nba_jam_game_rom_ug22.ug22", 0x400002, 0x80000, CRC(ab05ed89) SHA1(4153d098fbaeac963d93f26dcd9d8bc33a48a734) )
+ ROM_LOAD32_BYTE( "l1_nba_jam_game_rom_uj22.uj22", 0x400003, 0x80000, CRC(59a95878) SHA1(b95165987853f164842ab2b5895ea95484a1d78b) )
+
+ ROM_LOAD32_BYTE( "l1_nba_jam_game_rom_ug18.ug18", 0x600000, 0x80000, CRC(5162d3d6) SHA1(14d377977510b7793e4006a7a5089dbfd785d7d1) )
+ ROM_LOAD32_BYTE( "l1_nba_jam_game_rom_uj18.uj18", 0x600001, 0x80000, CRC(fdee0037) SHA1(3bcc740f4bdb3236822cd6e7ed06241804351cca) )
+ ROM_LOAD32_BYTE( "l1_nba_jam_game_rom_ug23.ug23", 0x600002, 0x80000, CRC(7b934c7a) SHA1(a6992fb3c50429ac4fa15bd91612ae0c0b8f961d) )
+ ROM_LOAD32_BYTE( "l1_nba_jam_game_rom_uj23.uj23", 0x600003, 0x80000, CRC(427d2eee) SHA1(4985e3dd9c9e1bedd5a900958bf549656debd494) )
ROM_END
ROM_START( nbajamte )
ROM_REGION( 0x50000, "adpcm:cpu", 0 ) /* sound CPU */
- ROM_LOAD( "te-u3.bin", 0x010000, 0x20000, CRC(d4551195) SHA1(e8908fbe4339fb8c93f7e74113dfd25dda1667ea) )
+ ROM_LOAD( "l1_nba_jam_tournament_u3_sound_rom.u3", 0x010000, 0x20000, CRC(d4551195) SHA1(e8908fbe4339fb8c93f7e74113dfd25dda1667ea) )
ROM_RELOAD( 0x030000, 0x20000 )
ROM_REGION( 0x100000, "adpcm:oki", 0 ) /* ADPCM */
- ROM_LOAD( "te-u12.bin", 0x000000, 0x80000, CRC(4fac97bc) SHA1(bd88d8c3edab0e35ad9f9350bcbaa17cda61d87a) )
- ROM_LOAD( "te-u13.bin", 0x080000, 0x80000, CRC(6f27b202) SHA1(c1f0db15624d1e7102ce9fd1db49ccf86e8611d6) )
+ ROM_LOAD( "l1_nba_jam_tournament_u12_sound_rom.u12", 0x000000, 0x80000, CRC(4fac97bc) SHA1(bd88d8c3edab0e35ad9f9350bcbaa17cda61d87a) )
+ ROM_LOAD( "l1_nba_jam_tournament_u13_sound_rom.u13", 0x080000, 0x80000, CRC(6f27b202) SHA1(c1f0db15624d1e7102ce9fd1db49ccf86e8611d6) )
ROM_REGION16_LE( 0x100000, "maincpu", 0 ) /* 34010 code */
- ROM_LOAD16_BYTE( "te-uj12.l4", 0x00000, 0x80000, CRC(d7c21bc4) SHA1(e05f0299b955500df6a08b1c0b24b932a9cdfa6a) )
- ROM_LOAD16_BYTE( "te-ug12.l4", 0x00001, 0x80000, CRC(7ad49229) SHA1(e9ceedb0e620809d8a4d42087d806aa296a4cd59) )
+ ROM_LOAD16_BYTE( "l4_nba_jam_tournament_game_rom_uj12.uj12", 0x00000, 0x80000, CRC(d7c21bc4) SHA1(e05f0299b955500df6a08b1c0b24b932a9cdfa6a) )
+ ROM_LOAD16_BYTE( "l4_nba_jam_tournament_game_rom_ug12.ug12", 0x00001, 0x80000, CRC(7ad49229) SHA1(e9ceedb0e620809d8a4d42087d806aa296a4cd59) )
ROM_REGION( 0xc00000, "gfxrom", 0 )
- ROM_LOAD32_BYTE( "nbaug14.bin", 0x000000, 0x80000, CRC(04bb9f64) SHA1(9e1a8c37e14cb6fe67f4aa3caa9022f356f1ca64) )
- ROM_LOAD32_BYTE( "nbauj14.bin", 0x000001, 0x80000, CRC(b34b7af3) SHA1(0abb74d2f414bc9da0380a81beb134f3a87c1a0a) )
- ROM_LOAD32_BYTE( "nbaug19.bin", 0x000002, 0x80000, CRC(a8f22fbb) SHA1(514208a9d6d0c8c2d7847cc02d4387eac90be659) )
- ROM_LOAD32_BYTE( "nbauj19.bin", 0x000003, 0x80000, CRC(8130a8a2) SHA1(f23f124024285d07d8cf822817b62e42c38b82db) )
-
- ROM_LOAD32_BYTE( "te-ug16.bin", 0x200000, 0x80000, CRC(c7ce74d0) SHA1(93861cd909e0f28ed112096d6f9fc57d0d31c57c) )
- ROM_LOAD32_BYTE( "te-uj16.bin", 0x200001, 0x80000, CRC(905ad88b) SHA1(24c336ccc0e2ac0ee96a34ad6fe4aa7464de0009) )
- ROM_LOAD32_BYTE( "te-ug20.bin", 0x200002, 0x80000, CRC(8a48728c) SHA1(3684099b4934b027336c319c77d9e0710b8c22dc) )
- ROM_LOAD32_BYTE( "te-uj20.bin", 0x200003, 0x80000, CRC(bf263d61) SHA1(b5b59e8df55f8030eff068c1d8b07dad8521bf5d) )
-
- ROM_LOAD32_BYTE( "te-ug17.bin", 0x400000, 0x80000, CRC(9401be62) SHA1(597413a8a1eb66a7ad89af2f548fa3062e5e8efb) )
- ROM_LOAD32_BYTE( "te-uj17.bin", 0x400001, 0x80000, CRC(8a852b9e) SHA1(604c7f4305887e9505320630027765ea76607c58) )
- ROM_LOAD32_BYTE( "te-ug22.bin", 0x400002, 0x80000, CRC(3b05133b) SHA1(f6067abb92b8751afe7352a4f1b1a22c9528002b) )
- ROM_LOAD32_BYTE( "te-uj22.bin", 0x400003, 0x80000, CRC(39791051) SHA1(7aa02500ddacd31fca04044a22a38f36452ca300) )
-
- ROM_LOAD32_BYTE( "te-ug18.bin", 0x600000, 0x80000, CRC(6fd08f57) SHA1(5b7031dffc88374c5bfdf3021aa01ec4e28d0631) )
- ROM_LOAD32_BYTE( "te-uj18.bin", 0x600001, 0x80000, CRC(4eb73c26) SHA1(693bf45f777da8e55b7bcd8699ea5bd711964941) )
- ROM_LOAD32_BYTE( "te-ug23.bin", 0x600002, 0x80000, CRC(854f73bc) SHA1(242cc8ce28711f6f0787524a1070eb4b0956e6ae) )
- ROM_LOAD32_BYTE( "te-uj23.bin", 0x600003, 0x80000, CRC(f8c30998) SHA1(33e2f982d74e9f3686b1f4a8172c49fb8b604cf5) )
+ ROM_LOAD32_BYTE( "l1_nba_jam_tournament_game_rom_ug14.ug14", 0x000000, 0x80000, CRC(04bb9f64) SHA1(9e1a8c37e14cb6fe67f4aa3caa9022f356f1ca64) )
+ ROM_LOAD32_BYTE( "l1_nba_jam_tournament_game_rom_uj14.uj14", 0x000001, 0x80000, CRC(b34b7af3) SHA1(0abb74d2f414bc9da0380a81beb134f3a87c1a0a) )
+ ROM_LOAD32_BYTE( "l1_nba_jam_tournament_game_rom_ug19.ug19", 0x000002, 0x80000, CRC(a8f22fbb) SHA1(514208a9d6d0c8c2d7847cc02d4387eac90be659) )
+ ROM_LOAD32_BYTE( "l1_nba_jam_tournament_game_rom_uj19.uj19", 0x000003, 0x80000, CRC(8130a8a2) SHA1(f23f124024285d07d8cf822817b62e42c38b82db) )
+
+ ROM_LOAD32_BYTE( "l1_nba_jam_tournament_game_rom_ug16.ug16", 0x200000, 0x80000, CRC(c7ce74d0) SHA1(93861cd909e0f28ed112096d6f9fc57d0d31c57c) )
+ ROM_LOAD32_BYTE( "l1_nba_jam_tournament_game_rom_uj16.uj16", 0x200001, 0x80000, CRC(905ad88b) SHA1(24c336ccc0e2ac0ee96a34ad6fe4aa7464de0009) )
+ ROM_LOAD32_BYTE( "l1_nba_jam_tournament_game_rom_ug20.ug20", 0x200002, 0x80000, CRC(8a48728c) SHA1(3684099b4934b027336c319c77d9e0710b8c22dc) )
+ ROM_LOAD32_BYTE( "l1_nba_jam_tournament_game_rom_uj20.uj20", 0x200003, 0x80000, CRC(bf263d61) SHA1(b5b59e8df55f8030eff068c1d8b07dad8521bf5d) )
+
+ ROM_LOAD32_BYTE( "l1_nba_jam_tournament_game_rom_ug17.ug17", 0x400000, 0x80000, CRC(9401be62) SHA1(597413a8a1eb66a7ad89af2f548fa3062e5e8efb) )
+ ROM_LOAD32_BYTE( "l1_nba_jam_tournament_game_rom_uj17.uj17", 0x400001, 0x80000, CRC(8a852b9e) SHA1(604c7f4305887e9505320630027765ea76607c58) )
+ ROM_LOAD32_BYTE( "l1_nba_jam_tournament_game_rom_ug22.ug22", 0x400002, 0x80000, CRC(3b05133b) SHA1(f6067abb92b8751afe7352a4f1b1a22c9528002b) )
+ ROM_LOAD32_BYTE( "l1_nba_jam_tournament_game_rom_uj22.uj22", 0x400003, 0x80000, CRC(39791051) SHA1(7aa02500ddacd31fca04044a22a38f36452ca300) )
+
+ ROM_LOAD32_BYTE( "l1_nba_jam_tournament_game_rom_ug18.ug18", 0x600000, 0x80000, CRC(6fd08f57) SHA1(5b7031dffc88374c5bfdf3021aa01ec4e28d0631) )
+ ROM_LOAD32_BYTE( "l1_nba_jam_tournament_game_rom_uj18.uj18", 0x600001, 0x80000, CRC(4eb73c26) SHA1(693bf45f777da8e55b7bcd8699ea5bd711964941) )
+ ROM_LOAD32_BYTE( "l1_nba_jam_tournament_game_rom_ug23.ug23", 0x600002, 0x80000, CRC(854f73bc) SHA1(242cc8ce28711f6f0787524a1070eb4b0956e6ae) )
+ ROM_LOAD32_BYTE( "l1_nba_jam_tournament_game_rom_uj23.uj23", 0x600003, 0x80000, CRC(f8c30998) SHA1(33e2f982d74e9f3686b1f4a8172c49fb8b604cf5) )
ROM_END
-ROM_START( nbajamte1 )
+ROM_START( nbajamte3 )
ROM_REGION( 0x50000, "adpcm:cpu", 0 ) /* sound CPU */
- ROM_LOAD( "te-u3.bin", 0x010000, 0x20000, CRC(d4551195) SHA1(e8908fbe4339fb8c93f7e74113dfd25dda1667ea) )
+ ROM_LOAD( "l1_nba_jam_tournament_u3_sound_rom.u3", 0x010000, 0x20000, CRC(d4551195) SHA1(e8908fbe4339fb8c93f7e74113dfd25dda1667ea) )
ROM_RELOAD( 0x030000, 0x20000 )
ROM_REGION( 0x100000, "adpcm:oki", 0 ) /* ADPCM */
- ROM_LOAD( "te-u12.bin", 0x000000, 0x80000, CRC(4fac97bc) SHA1(bd88d8c3edab0e35ad9f9350bcbaa17cda61d87a) )
- ROM_LOAD( "te-u13.bin", 0x080000, 0x80000, CRC(6f27b202) SHA1(c1f0db15624d1e7102ce9fd1db49ccf86e8611d6) )
+ ROM_LOAD( "l1_nba_jam_tournament_u12_sound_rom.u12", 0x000000, 0x80000, CRC(4fac97bc) SHA1(bd88d8c3edab0e35ad9f9350bcbaa17cda61d87a) )
+ ROM_LOAD( "l1_nba_jam_tournament_u13_sound_rom.u13", 0x080000, 0x80000, CRC(6f27b202) SHA1(c1f0db15624d1e7102ce9fd1db49ccf86e8611d6) )
ROM_REGION16_LE( 0x100000, "maincpu", 0 ) /* 34010 code */
- ROM_LOAD16_BYTE( "te-uj12.l1", 0x00000, 0x80000, CRC(a9f555ad) SHA1(34f5fc1b003ef8acbb2b38fbacd58d018d20ab1b) )
- ROM_LOAD16_BYTE( "te-ug12.l1", 0x00001, 0x80000, CRC(bd4579b5) SHA1(c893cff931f1e60a1d0d29d2719f514d92fb3490) )
+ ROM_LOAD16_BYTE( "l3_nba_jam_tournament_game_rom_uj12.uj12", 0x00000, 0x80000, CRC(8fdf77b4) SHA1(1a8a178b19d0b8e7a5fd2ddf373a4279321440d0) )
+ ROM_LOAD16_BYTE( "l3_nba_jam_tournament_game_rom_ug12.ug12", 0x00001, 0x80000, CRC(656579ed) SHA1(b038fdc814ebc8d203724fdb2f7501d40f1dc21f) )
ROM_REGION( 0xc00000, "gfxrom", 0 )
- ROM_LOAD32_BYTE( "nbaug14.bin", 0x000000, 0x80000, CRC(04bb9f64) SHA1(9e1a8c37e14cb6fe67f4aa3caa9022f356f1ca64) )
- ROM_LOAD32_BYTE( "nbauj14.bin", 0x000001, 0x80000, CRC(b34b7af3) SHA1(0abb74d2f414bc9da0380a81beb134f3a87c1a0a) )
- ROM_LOAD32_BYTE( "nbaug19.bin", 0x000002, 0x80000, CRC(a8f22fbb) SHA1(514208a9d6d0c8c2d7847cc02d4387eac90be659) )
- ROM_LOAD32_BYTE( "nbauj19.bin", 0x000003, 0x80000, CRC(8130a8a2) SHA1(f23f124024285d07d8cf822817b62e42c38b82db) )
-
- ROM_LOAD32_BYTE( "te-ug16.bin", 0x200000, 0x80000, CRC(c7ce74d0) SHA1(93861cd909e0f28ed112096d6f9fc57d0d31c57c) )
- ROM_LOAD32_BYTE( "te-uj16.bin", 0x200001, 0x80000, CRC(905ad88b) SHA1(24c336ccc0e2ac0ee96a34ad6fe4aa7464de0009) )
- ROM_LOAD32_BYTE( "te-ug20.bin", 0x200002, 0x80000, CRC(8a48728c) SHA1(3684099b4934b027336c319c77d9e0710b8c22dc) )
- ROM_LOAD32_BYTE( "te-uj20.bin", 0x200003, 0x80000, CRC(bf263d61) SHA1(b5b59e8df55f8030eff068c1d8b07dad8521bf5d) )
-
- ROM_LOAD32_BYTE( "te-ug17.bin", 0x400000, 0x80000, CRC(9401be62) SHA1(597413a8a1eb66a7ad89af2f548fa3062e5e8efb) )
- ROM_LOAD32_BYTE( "te-uj17.bin", 0x400001, 0x80000, CRC(8a852b9e) SHA1(604c7f4305887e9505320630027765ea76607c58) )
- ROM_LOAD32_BYTE( "te-ug22.bin", 0x400002, 0x80000, CRC(3b05133b) SHA1(f6067abb92b8751afe7352a4f1b1a22c9528002b) )
- ROM_LOAD32_BYTE( "te-uj22.bin", 0x400003, 0x80000, CRC(39791051) SHA1(7aa02500ddacd31fca04044a22a38f36452ca300) )
-
- ROM_LOAD32_BYTE( "te-ug18.bin", 0x600000, 0x80000, CRC(6fd08f57) SHA1(5b7031dffc88374c5bfdf3021aa01ec4e28d0631) )
- ROM_LOAD32_BYTE( "te-uj18.bin", 0x600001, 0x80000, CRC(4eb73c26) SHA1(693bf45f777da8e55b7bcd8699ea5bd711964941) )
- ROM_LOAD32_BYTE( "te-ug23.bin", 0x600002, 0x80000, CRC(854f73bc) SHA1(242cc8ce28711f6f0787524a1070eb4b0956e6ae) )
- ROM_LOAD32_BYTE( "te-uj23.bin", 0x600003, 0x80000, CRC(f8c30998) SHA1(33e2f982d74e9f3686b1f4a8172c49fb8b604cf5) )
+ ROM_LOAD32_BYTE( "l1_nba_jam_tournament_game_rom_ug14.ug14", 0x000000, 0x80000, CRC(04bb9f64) SHA1(9e1a8c37e14cb6fe67f4aa3caa9022f356f1ca64) )
+ ROM_LOAD32_BYTE( "l1_nba_jam_tournament_game_rom_uj14.uj14", 0x000001, 0x80000, CRC(b34b7af3) SHA1(0abb74d2f414bc9da0380a81beb134f3a87c1a0a) )
+ ROM_LOAD32_BYTE( "l1_nba_jam_tournament_game_rom_ug19.ug19", 0x000002, 0x80000, CRC(a8f22fbb) SHA1(514208a9d6d0c8c2d7847cc02d4387eac90be659) )
+ ROM_LOAD32_BYTE( "l1_nba_jam_tournament_game_rom_uj19.uj19", 0x000003, 0x80000, CRC(8130a8a2) SHA1(f23f124024285d07d8cf822817b62e42c38b82db) )
+
+ ROM_LOAD32_BYTE( "l1_nba_jam_tournament_game_rom_ug16.ug16", 0x200000, 0x80000, CRC(c7ce74d0) SHA1(93861cd909e0f28ed112096d6f9fc57d0d31c57c) )
+ ROM_LOAD32_BYTE( "l1_nba_jam_tournament_game_rom_uj16.uj16", 0x200001, 0x80000, CRC(905ad88b) SHA1(24c336ccc0e2ac0ee96a34ad6fe4aa7464de0009) )
+ ROM_LOAD32_BYTE( "l1_nba_jam_tournament_game_rom_ug20.ug20", 0x200002, 0x80000, CRC(8a48728c) SHA1(3684099b4934b027336c319c77d9e0710b8c22dc) )
+ ROM_LOAD32_BYTE( "l1_nba_jam_tournament_game_rom_uj20.uj20", 0x200003, 0x80000, CRC(bf263d61) SHA1(b5b59e8df55f8030eff068c1d8b07dad8521bf5d) )
+
+ ROM_LOAD32_BYTE( "l1_nba_jam_tournament_game_rom_ug17.ug17", 0x400000, 0x80000, CRC(9401be62) SHA1(597413a8a1eb66a7ad89af2f548fa3062e5e8efb) )
+ ROM_LOAD32_BYTE( "l1_nba_jam_tournament_game_rom_uj17.uj17", 0x400001, 0x80000, CRC(8a852b9e) SHA1(604c7f4305887e9505320630027765ea76607c58) )
+ ROM_LOAD32_BYTE( "l1_nba_jam_tournament_game_rom_ug22.ug22", 0x400002, 0x80000, CRC(3b05133b) SHA1(f6067abb92b8751afe7352a4f1b1a22c9528002b) )
+ ROM_LOAD32_BYTE( "l1_nba_jam_tournament_game_rom_uj22.uj22", 0x400003, 0x80000, CRC(39791051) SHA1(7aa02500ddacd31fca04044a22a38f36452ca300) )
+
+ ROM_LOAD32_BYTE( "l1_nba_jam_tournament_game_rom_ug18.ug18", 0x600000, 0x80000, CRC(6fd08f57) SHA1(5b7031dffc88374c5bfdf3021aa01ec4e28d0631) )
+ ROM_LOAD32_BYTE( "l1_nba_jam_tournament_game_rom_uj18.uj18", 0x600001, 0x80000, CRC(4eb73c26) SHA1(693bf45f777da8e55b7bcd8699ea5bd711964941) )
+ ROM_LOAD32_BYTE( "l1_nba_jam_tournament_game_rom_ug23.ug23", 0x600002, 0x80000, CRC(854f73bc) SHA1(242cc8ce28711f6f0787524a1070eb4b0956e6ae) )
+ ROM_LOAD32_BYTE( "l1_nba_jam_tournament_game_rom_uj23.uj23", 0x600003, 0x80000, CRC(f8c30998) SHA1(33e2f982d74e9f3686b1f4a8172c49fb8b604cf5) )
ROM_END
ROM_START( nbajamte2 )
ROM_REGION( 0x50000, "adpcm:cpu", 0 ) /* sound CPU */
- ROM_LOAD( "te-u3.bin", 0x010000, 0x20000, CRC(d4551195) SHA1(e8908fbe4339fb8c93f7e74113dfd25dda1667ea) )
+ ROM_LOAD( "l1_nba_jam_tournament_u3_sound_rom.u3", 0x010000, 0x20000, CRC(d4551195) SHA1(e8908fbe4339fb8c93f7e74113dfd25dda1667ea) )
ROM_RELOAD( 0x030000, 0x20000 )
ROM_REGION( 0x100000, "adpcm:oki", 0 ) /* ADPCM */
- ROM_LOAD( "te-u12.bin", 0x000000, 0x80000, CRC(4fac97bc) SHA1(bd88d8c3edab0e35ad9f9350bcbaa17cda61d87a) )
- ROM_LOAD( "te-u13.bin", 0x080000, 0x80000, CRC(6f27b202) SHA1(c1f0db15624d1e7102ce9fd1db49ccf86e8611d6) )
+ ROM_LOAD( "l1_nba_jam_tournament_u12_sound_rom.u12", 0x000000, 0x80000, CRC(4fac97bc) SHA1(bd88d8c3edab0e35ad9f9350bcbaa17cda61d87a) )
+ ROM_LOAD( "l1_nba_jam_tournament_u13_sound_rom.u13", 0x080000, 0x80000, CRC(6f27b202) SHA1(c1f0db15624d1e7102ce9fd1db49ccf86e8611d6) )
ROM_REGION16_LE( 0x100000, "maincpu", 0 ) /* 34010 code */
- ROM_LOAD16_BYTE( "te-uj12.l2", 0x00000, 0x80000, CRC(eaa6fb32) SHA1(8c8c0c6ace2b98679d7fe90e1f9284bdf0e14eaf) )
- ROM_LOAD16_BYTE( "te-ug12.l2", 0x00001, 0x80000, CRC(5a694d9a) SHA1(fb74e4242d9adba03f24a81451ea06e8d9b4af96) )
+ ROM_LOAD16_BYTE( "l2_nba_jam_tournament_game_rom_uj12.uj12", 0x00000, 0x80000, CRC(eaa6fb32) SHA1(8c8c0c6ace2b98679d7fe90e1f9284bdf0e14eaf) )
+ ROM_LOAD16_BYTE( "l2_nba_jam_tournament_game_rom_ug12.ug12", 0x00001, 0x80000, CRC(5a694d9a) SHA1(fb74e4242d9adba03f24a81451ea06e8d9b4af96) )
ROM_REGION( 0xc00000, "gfxrom", 0 )
- ROM_LOAD32_BYTE( "nbaug14.bin", 0x000000, 0x80000, CRC(04bb9f64) SHA1(9e1a8c37e14cb6fe67f4aa3caa9022f356f1ca64) )
- ROM_LOAD32_BYTE( "nbauj14.bin", 0x000001, 0x80000, CRC(b34b7af3) SHA1(0abb74d2f414bc9da0380a81beb134f3a87c1a0a) )
- ROM_LOAD32_BYTE( "nbaug19.bin", 0x000002, 0x80000, CRC(a8f22fbb) SHA1(514208a9d6d0c8c2d7847cc02d4387eac90be659) )
- ROM_LOAD32_BYTE( "nbauj19.bin", 0x000003, 0x80000, CRC(8130a8a2) SHA1(f23f124024285d07d8cf822817b62e42c38b82db) )
-
- ROM_LOAD32_BYTE( "te-ug16.bin", 0x200000, 0x80000, CRC(c7ce74d0) SHA1(93861cd909e0f28ed112096d6f9fc57d0d31c57c) )
- ROM_LOAD32_BYTE( "te-uj16.bin", 0x200001, 0x80000, CRC(905ad88b) SHA1(24c336ccc0e2ac0ee96a34ad6fe4aa7464de0009) )
- ROM_LOAD32_BYTE( "te-ug20.bin", 0x200002, 0x80000, CRC(8a48728c) SHA1(3684099b4934b027336c319c77d9e0710b8c22dc) )
- ROM_LOAD32_BYTE( "te-uj20.bin", 0x200003, 0x80000, CRC(bf263d61) SHA1(b5b59e8df55f8030eff068c1d8b07dad8521bf5d) )
-
- ROM_LOAD32_BYTE( "te-ug17.bin", 0x400000, 0x80000, CRC(9401be62) SHA1(597413a8a1eb66a7ad89af2f548fa3062e5e8efb) )
- ROM_LOAD32_BYTE( "te-uj17.bin", 0x400001, 0x80000, CRC(8a852b9e) SHA1(604c7f4305887e9505320630027765ea76607c58) )
- ROM_LOAD32_BYTE( "te-ug22.bin", 0x400002, 0x80000, CRC(3b05133b) SHA1(f6067abb92b8751afe7352a4f1b1a22c9528002b) )
- ROM_LOAD32_BYTE( "te-uj22.bin", 0x400003, 0x80000, CRC(39791051) SHA1(7aa02500ddacd31fca04044a22a38f36452ca300) )
-
- ROM_LOAD32_BYTE( "te-ug18.bin", 0x600000, 0x80000, CRC(6fd08f57) SHA1(5b7031dffc88374c5bfdf3021aa01ec4e28d0631) )
- ROM_LOAD32_BYTE( "te-uj18.bin", 0x600001, 0x80000, CRC(4eb73c26) SHA1(693bf45f777da8e55b7bcd8699ea5bd711964941) )
- ROM_LOAD32_BYTE( "te-ug23.bin", 0x600002, 0x80000, CRC(854f73bc) SHA1(242cc8ce28711f6f0787524a1070eb4b0956e6ae) )
- ROM_LOAD32_BYTE( "te-uj23.bin", 0x600003, 0x80000, CRC(f8c30998) SHA1(33e2f982d74e9f3686b1f4a8172c49fb8b604cf5) )
+ ROM_LOAD32_BYTE( "l1_nba_jam_tournament_game_rom_ug14.ug14", 0x000000, 0x80000, CRC(04bb9f64) SHA1(9e1a8c37e14cb6fe67f4aa3caa9022f356f1ca64) )
+ ROM_LOAD32_BYTE( "l1_nba_jam_tournament_game_rom_uj14.uj14", 0x000001, 0x80000, CRC(b34b7af3) SHA1(0abb74d2f414bc9da0380a81beb134f3a87c1a0a) )
+ ROM_LOAD32_BYTE( "l1_nba_jam_tournament_game_rom_ug19.ug19", 0x000002, 0x80000, CRC(a8f22fbb) SHA1(514208a9d6d0c8c2d7847cc02d4387eac90be659) )
+ ROM_LOAD32_BYTE( "l1_nba_jam_tournament_game_rom_uj19.uj19", 0x000003, 0x80000, CRC(8130a8a2) SHA1(f23f124024285d07d8cf822817b62e42c38b82db) )
+
+ ROM_LOAD32_BYTE( "l1_nba_jam_tournament_game_rom_ug16.ug16", 0x200000, 0x80000, CRC(c7ce74d0) SHA1(93861cd909e0f28ed112096d6f9fc57d0d31c57c) )
+ ROM_LOAD32_BYTE( "l1_nba_jam_tournament_game_rom_uj16.uj16", 0x200001, 0x80000, CRC(905ad88b) SHA1(24c336ccc0e2ac0ee96a34ad6fe4aa7464de0009) )
+ ROM_LOAD32_BYTE( "l1_nba_jam_tournament_game_rom_ug20.ug20", 0x200002, 0x80000, CRC(8a48728c) SHA1(3684099b4934b027336c319c77d9e0710b8c22dc) )
+ ROM_LOAD32_BYTE( "l1_nba_jam_tournament_game_rom_uj20.uj20", 0x200003, 0x80000, CRC(bf263d61) SHA1(b5b59e8df55f8030eff068c1d8b07dad8521bf5d) )
+
+ ROM_LOAD32_BYTE( "l1_nba_jam_tournament_game_rom_ug17.ug17", 0x400000, 0x80000, CRC(9401be62) SHA1(597413a8a1eb66a7ad89af2f548fa3062e5e8efb) )
+ ROM_LOAD32_BYTE( "l1_nba_jam_tournament_game_rom_uj17.uj17", 0x400001, 0x80000, CRC(8a852b9e) SHA1(604c7f4305887e9505320630027765ea76607c58) )
+ ROM_LOAD32_BYTE( "l1_nba_jam_tournament_game_rom_ug22.ug22", 0x400002, 0x80000, CRC(3b05133b) SHA1(f6067abb92b8751afe7352a4f1b1a22c9528002b) )
+ ROM_LOAD32_BYTE( "l1_nba_jam_tournament_game_rom_uj22.uj22", 0x400003, 0x80000, CRC(39791051) SHA1(7aa02500ddacd31fca04044a22a38f36452ca300) )
+
+ ROM_LOAD32_BYTE( "l1_nba_jam_tournament_game_rom_ug18.ug18", 0x600000, 0x80000, CRC(6fd08f57) SHA1(5b7031dffc88374c5bfdf3021aa01ec4e28d0631) )
+ ROM_LOAD32_BYTE( "l1_nba_jam_tournament_game_rom_uj18.uj18", 0x600001, 0x80000, CRC(4eb73c26) SHA1(693bf45f777da8e55b7bcd8699ea5bd711964941) )
+ ROM_LOAD32_BYTE( "l1_nba_jam_tournament_game_rom_ug23.ug23", 0x600002, 0x80000, CRC(854f73bc) SHA1(242cc8ce28711f6f0787524a1070eb4b0956e6ae) )
+ ROM_LOAD32_BYTE( "l1_nba_jam_tournament_game_rom_uj23.uj23", 0x600003, 0x80000, CRC(f8c30998) SHA1(33e2f982d74e9f3686b1f4a8172c49fb8b604cf5) )
ROM_END
-ROM_START( nbajamte3 )
+ROM_START( nbajamte1 )
ROM_REGION( 0x50000, "adpcm:cpu", 0 ) /* sound CPU */
- ROM_LOAD( "te-u3.bin", 0x010000, 0x20000, CRC(d4551195) SHA1(e8908fbe4339fb8c93f7e74113dfd25dda1667ea) )
+ ROM_LOAD( "l1_nba_jam_tournament_u3_sound_rom.u3", 0x010000, 0x20000, CRC(d4551195) SHA1(e8908fbe4339fb8c93f7e74113dfd25dda1667ea) )
ROM_RELOAD( 0x030000, 0x20000 )
ROM_REGION( 0x100000, "adpcm:oki", 0 ) /* ADPCM */
- ROM_LOAD( "te-u12.bin", 0x000000, 0x80000, CRC(4fac97bc) SHA1(bd88d8c3edab0e35ad9f9350bcbaa17cda61d87a) )
- ROM_LOAD( "te-u13.bin", 0x080000, 0x80000, CRC(6f27b202) SHA1(c1f0db15624d1e7102ce9fd1db49ccf86e8611d6) )
+ ROM_LOAD( "l1_nba_jam_tournament_u12_sound_rom.u12", 0x000000, 0x80000, CRC(4fac97bc) SHA1(bd88d8c3edab0e35ad9f9350bcbaa17cda61d87a) )
+ ROM_LOAD( "l1_nba_jam_tournament_u13_sound_rom.u13", 0x080000, 0x80000, CRC(6f27b202) SHA1(c1f0db15624d1e7102ce9fd1db49ccf86e8611d6) )
ROM_REGION16_LE( 0x100000, "maincpu", 0 ) /* 34010 code */
- ROM_LOAD16_BYTE( "te-uj12.l3", 0x00000, 0x80000, CRC(8fdf77b4) SHA1(1a8a178b19d0b8e7a5fd2ddf373a4279321440d0) )
- ROM_LOAD16_BYTE( "te-ug12.l3", 0x00001, 0x80000, CRC(656579ed) SHA1(b038fdc814ebc8d203724fdb2f7501d40f1dc21f) )
+ ROM_LOAD16_BYTE( "l1_nba_jam_tournament_game_rom_uj12.uj12", 0x00000, 0x80000, CRC(a9f555ad) SHA1(34f5fc1b003ef8acbb2b38fbacd58d018d20ab1b) )
+ ROM_LOAD16_BYTE( "l1_nba_jam_tournament_game_rom_ug12.ug12", 0x00001, 0x80000, CRC(bd4579b5) SHA1(c893cff931f1e60a1d0d29d2719f514d92fb3490) )
ROM_REGION( 0xc00000, "gfxrom", 0 )
- ROM_LOAD32_BYTE( "nbaug14.bin", 0x000000, 0x80000, CRC(04bb9f64) SHA1(9e1a8c37e14cb6fe67f4aa3caa9022f356f1ca64) )
- ROM_LOAD32_BYTE( "nbauj14.bin", 0x000001, 0x80000, CRC(b34b7af3) SHA1(0abb74d2f414bc9da0380a81beb134f3a87c1a0a) )
- ROM_LOAD32_BYTE( "nbaug19.bin", 0x000002, 0x80000, CRC(a8f22fbb) SHA1(514208a9d6d0c8c2d7847cc02d4387eac90be659) )
- ROM_LOAD32_BYTE( "nbauj19.bin", 0x000003, 0x80000, CRC(8130a8a2) SHA1(f23f124024285d07d8cf822817b62e42c38b82db) )
-
- ROM_LOAD32_BYTE( "te-ug16.bin", 0x200000, 0x80000, CRC(c7ce74d0) SHA1(93861cd909e0f28ed112096d6f9fc57d0d31c57c) )
- ROM_LOAD32_BYTE( "te-uj16.bin", 0x200001, 0x80000, CRC(905ad88b) SHA1(24c336ccc0e2ac0ee96a34ad6fe4aa7464de0009) )
- ROM_LOAD32_BYTE( "te-ug20.bin", 0x200002, 0x80000, CRC(8a48728c) SHA1(3684099b4934b027336c319c77d9e0710b8c22dc) )
- ROM_LOAD32_BYTE( "te-uj20.bin", 0x200003, 0x80000, CRC(bf263d61) SHA1(b5b59e8df55f8030eff068c1d8b07dad8521bf5d) )
-
- ROM_LOAD32_BYTE( "te-ug17.bin", 0x400000, 0x80000, CRC(9401be62) SHA1(597413a8a1eb66a7ad89af2f548fa3062e5e8efb) )
- ROM_LOAD32_BYTE( "te-uj17.bin", 0x400001, 0x80000, CRC(8a852b9e) SHA1(604c7f4305887e9505320630027765ea76607c58) )
- ROM_LOAD32_BYTE( "te-ug22.bin", 0x400002, 0x80000, CRC(3b05133b) SHA1(f6067abb92b8751afe7352a4f1b1a22c9528002b) )
- ROM_LOAD32_BYTE( "te-uj22.bin", 0x400003, 0x80000, CRC(39791051) SHA1(7aa02500ddacd31fca04044a22a38f36452ca300) )
-
- ROM_LOAD32_BYTE( "te-ug18.bin", 0x600000, 0x80000, CRC(6fd08f57) SHA1(5b7031dffc88374c5bfdf3021aa01ec4e28d0631) )
- ROM_LOAD32_BYTE( "te-uj18.bin", 0x600001, 0x80000, CRC(4eb73c26) SHA1(693bf45f777da8e55b7bcd8699ea5bd711964941) )
- ROM_LOAD32_BYTE( "te-ug23.bin", 0x600002, 0x80000, CRC(854f73bc) SHA1(242cc8ce28711f6f0787524a1070eb4b0956e6ae) )
- ROM_LOAD32_BYTE( "te-uj23.bin", 0x600003, 0x80000, CRC(f8c30998) SHA1(33e2f982d74e9f3686b1f4a8172c49fb8b604cf5) )
+ ROM_LOAD32_BYTE( "l1_nba_jam_tournament_game_rom_ug14.ug14", 0x000000, 0x80000, CRC(04bb9f64) SHA1(9e1a8c37e14cb6fe67f4aa3caa9022f356f1ca64) )
+ ROM_LOAD32_BYTE( "l1_nba_jam_tournament_game_rom_uj14.uj14", 0x000001, 0x80000, CRC(b34b7af3) SHA1(0abb74d2f414bc9da0380a81beb134f3a87c1a0a) )
+ ROM_LOAD32_BYTE( "l1_nba_jam_tournament_game_rom_ug19.ug19", 0x000002, 0x80000, CRC(a8f22fbb) SHA1(514208a9d6d0c8c2d7847cc02d4387eac90be659) )
+ ROM_LOAD32_BYTE( "l1_nba_jam_tournament_game_rom_uj19.uj19", 0x000003, 0x80000, CRC(8130a8a2) SHA1(f23f124024285d07d8cf822817b62e42c38b82db) )
+
+ ROM_LOAD32_BYTE( "l1_nba_jam_tournament_game_rom_ug16.ug16", 0x200000, 0x80000, CRC(c7ce74d0) SHA1(93861cd909e0f28ed112096d6f9fc57d0d31c57c) )
+ ROM_LOAD32_BYTE( "l1_nba_jam_tournament_game_rom_uj16.uj16", 0x200001, 0x80000, CRC(905ad88b) SHA1(24c336ccc0e2ac0ee96a34ad6fe4aa7464de0009) )
+ ROM_LOAD32_BYTE( "l1_nba_jam_tournament_game_rom_ug20.ug20", 0x200002, 0x80000, CRC(8a48728c) SHA1(3684099b4934b027336c319c77d9e0710b8c22dc) )
+ ROM_LOAD32_BYTE( "l1_nba_jam_tournament_game_rom_uj20.uj20", 0x200003, 0x80000, CRC(bf263d61) SHA1(b5b59e8df55f8030eff068c1d8b07dad8521bf5d) )
+
+ ROM_LOAD32_BYTE( "l1_nba_jam_tournament_game_rom_ug17.ug17", 0x400000, 0x80000, CRC(9401be62) SHA1(597413a8a1eb66a7ad89af2f548fa3062e5e8efb) )
+ ROM_LOAD32_BYTE( "l1_nba_jam_tournament_game_rom_uj17.uj17", 0x400001, 0x80000, CRC(8a852b9e) SHA1(604c7f4305887e9505320630027765ea76607c58) )
+ ROM_LOAD32_BYTE( "l1_nba_jam_tournament_game_rom_ug22.ug22", 0x400002, 0x80000, CRC(3b05133b) SHA1(f6067abb92b8751afe7352a4f1b1a22c9528002b) )
+ ROM_LOAD32_BYTE( "l1_nba_jam_tournament_game_rom_uj22.uj22", 0x400003, 0x80000, CRC(39791051) SHA1(7aa02500ddacd31fca04044a22a38f36452ca300) )
+
+ ROM_LOAD32_BYTE( "l1_nba_jam_tournament_game_rom_ug18.ug18", 0x600000, 0x80000, CRC(6fd08f57) SHA1(5b7031dffc88374c5bfdf3021aa01ec4e28d0631) )
+ ROM_LOAD32_BYTE( "l1_nba_jam_tournament_game_rom_uj18.uj18", 0x600001, 0x80000, CRC(4eb73c26) SHA1(693bf45f777da8e55b7bcd8699ea5bd711964941) )
+ ROM_LOAD32_BYTE( "l1_nba_jam_tournament_game_rom_ug23.ug23", 0x600002, 0x80000, CRC(854f73bc) SHA1(242cc8ce28711f6f0787524a1070eb4b0956e6ae) )
+ ROM_LOAD32_BYTE( "l1_nba_jam_tournament_game_rom_uj23.uj23", 0x600003, 0x80000, CRC(f8c30998) SHA1(33e2f982d74e9f3686b1f4a8172c49fb8b604cf5) )
ROM_END
ROM_START( nbajamten )
ROM_REGION( 0x50000, "adpcm:cpu", 0 ) /* sound CPU */
- ROM_LOAD( "te-u3.bin", 0x010000, 0x20000, CRC(d4551195) SHA1(e8908fbe4339fb8c93f7e74113dfd25dda1667ea) )
+ ROM_LOAD( "l1_nba_jam_tournament_u3_sound_rom.u3", 0x010000, 0x20000, CRC(d4551195) SHA1(e8908fbe4339fb8c93f7e74113dfd25dda1667ea) )
ROM_RELOAD( 0x030000, 0x20000 )
ROM_REGION( 0x100000, "adpcm:oki", 0 ) /* ADPCM */
- ROM_LOAD( "te-u12.bin", 0x000000, 0x80000, CRC(4fac97bc) SHA1(bd88d8c3edab0e35ad9f9350bcbaa17cda61d87a) )
- ROM_LOAD( "te-u13.bin", 0x080000, 0x80000, CRC(6f27b202) SHA1(c1f0db15624d1e7102ce9fd1db49ccf86e8611d6) )
+ ROM_LOAD( "l1_nba_jam_tournament_u12_sound_rom.u12", 0x000000, 0x80000, CRC(4fac97bc) SHA1(bd88d8c3edab0e35ad9f9350bcbaa17cda61d87a) )
+ ROM_LOAD( "l1_nba_jam_tournament_u13_sound_rom.u13", 0x080000, 0x80000, CRC(6f27b202) SHA1(c1f0db15624d1e7102ce9fd1db49ccf86e8611d6) )
ROM_REGION16_LE( 0x100000, "maincpu", 0 ) /* 34010 code */
ROM_LOAD16_BYTE( "nani-uj12.bin", 0x00000, 0x80000, CRC(a2662e74) SHA1(7a6c18464446baf3d279013eb95bf862b5b3be70) )
ROM_LOAD16_BYTE( "nani-ug12.bin", 0x00001, 0x80000, CRC(40cda5b1) SHA1(2ff51f830aa86f6456c626666e221be1f7bfbfa2) )
ROM_REGION( 0xc00000, "gfxrom", 0 )
- ROM_LOAD32_BYTE( "nbaug14.bin", 0x000000, 0x80000, CRC(04bb9f64) SHA1(9e1a8c37e14cb6fe67f4aa3caa9022f356f1ca64) )
- ROM_LOAD32_BYTE( "nbauj14.bin", 0x000001, 0x80000, CRC(b34b7af3) SHA1(0abb74d2f414bc9da0380a81beb134f3a87c1a0a) )
- ROM_LOAD32_BYTE( "nbaug19.bin", 0x000002, 0x80000, CRC(a8f22fbb) SHA1(514208a9d6d0c8c2d7847cc02d4387eac90be659) )
- ROM_LOAD32_BYTE( "nbauj19.bin", 0x000003, 0x80000, CRC(8130a8a2) SHA1(f23f124024285d07d8cf822817b62e42c38b82db) )
-
- ROM_LOAD32_BYTE( "te-ug16.bin", 0x200000, 0x80000, CRC(c7ce74d0) SHA1(93861cd909e0f28ed112096d6f9fc57d0d31c57c) )
- ROM_LOAD32_BYTE( "te-uj16.bin", 0x200001, 0x80000, CRC(905ad88b) SHA1(24c336ccc0e2ac0ee96a34ad6fe4aa7464de0009) )
- ROM_LOAD32_BYTE( "te-ug20.bin", 0x200002, 0x80000, CRC(8a48728c) SHA1(3684099b4934b027336c319c77d9e0710b8c22dc) )
- ROM_LOAD32_BYTE( "te-uj20.bin", 0x200003, 0x80000, CRC(bf263d61) SHA1(b5b59e8df55f8030eff068c1d8b07dad8521bf5d) )
-
- ROM_LOAD32_BYTE( "te-ug17.bin", 0x400000, 0x80000, CRC(9401be62) SHA1(597413a8a1eb66a7ad89af2f548fa3062e5e8efb) )
- ROM_LOAD32_BYTE( "te-uj17.bin", 0x400001, 0x80000, CRC(8a852b9e) SHA1(604c7f4305887e9505320630027765ea76607c58) )
- ROM_LOAD32_BYTE( "te-ug22.bin", 0x400002, 0x80000, CRC(3b05133b) SHA1(f6067abb92b8751afe7352a4f1b1a22c9528002b) )
- ROM_LOAD32_BYTE( "te-uj22.bin", 0x400003, 0x80000, CRC(39791051) SHA1(7aa02500ddacd31fca04044a22a38f36452ca300) )
-
- ROM_LOAD32_BYTE( "te-ug18.bin", 0x600000, 0x80000, CRC(6fd08f57) SHA1(5b7031dffc88374c5bfdf3021aa01ec4e28d0631) )
- ROM_LOAD32_BYTE( "te-uj18.bin", 0x600001, 0x80000, CRC(4eb73c26) SHA1(693bf45f777da8e55b7bcd8699ea5bd711964941) )
- ROM_LOAD32_BYTE( "te-ug23.bin", 0x600002, 0x80000, CRC(854f73bc) SHA1(242cc8ce28711f6f0787524a1070eb4b0956e6ae) )
- ROM_LOAD32_BYTE( "te-uj23.bin", 0x600003, 0x80000, CRC(f8c30998) SHA1(33e2f982d74e9f3686b1f4a8172c49fb8b604cf5) )
+ ROM_LOAD32_BYTE( "l1_nba_jam_tournament_game_rom_ug14.ug14", 0x000000, 0x80000, CRC(04bb9f64) SHA1(9e1a8c37e14cb6fe67f4aa3caa9022f356f1ca64) )
+ ROM_LOAD32_BYTE( "l1_nba_jam_tournament_game_rom_uj14.uj14", 0x000001, 0x80000, CRC(b34b7af3) SHA1(0abb74d2f414bc9da0380a81beb134f3a87c1a0a) )
+ ROM_LOAD32_BYTE( "l1_nba_jam_tournament_game_rom_ug19.ug19", 0x000002, 0x80000, CRC(a8f22fbb) SHA1(514208a9d6d0c8c2d7847cc02d4387eac90be659) )
+ ROM_LOAD32_BYTE( "l1_nba_jam_tournament_game_rom_uj19.uj19", 0x000003, 0x80000, CRC(8130a8a2) SHA1(f23f124024285d07d8cf822817b62e42c38b82db) )
+
+ ROM_LOAD32_BYTE( "l1_nba_jam_tournament_game_rom_ug16.ug16", 0x200000, 0x80000, CRC(c7ce74d0) SHA1(93861cd909e0f28ed112096d6f9fc57d0d31c57c) )
+ ROM_LOAD32_BYTE( "l1_nba_jam_tournament_game_rom_uj16.uj16", 0x200001, 0x80000, CRC(905ad88b) SHA1(24c336ccc0e2ac0ee96a34ad6fe4aa7464de0009) )
+ ROM_LOAD32_BYTE( "l1_nba_jam_tournament_game_rom_ug20.ug20", 0x200002, 0x80000, CRC(8a48728c) SHA1(3684099b4934b027336c319c77d9e0710b8c22dc) )
+ ROM_LOAD32_BYTE( "l1_nba_jam_tournament_game_rom_uj20.uj20", 0x200003, 0x80000, CRC(bf263d61) SHA1(b5b59e8df55f8030eff068c1d8b07dad8521bf5d) )
+
+ ROM_LOAD32_BYTE( "l1_nba_jam_tournament_game_rom_ug17.ug17", 0x400000, 0x80000, CRC(9401be62) SHA1(597413a8a1eb66a7ad89af2f548fa3062e5e8efb) )
+ ROM_LOAD32_BYTE( "l1_nba_jam_tournament_game_rom_uj17.uj17", 0x400001, 0x80000, CRC(8a852b9e) SHA1(604c7f4305887e9505320630027765ea76607c58) )
+ ROM_LOAD32_BYTE( "l1_nba_jam_tournament_game_rom_ug22.ug22", 0x400002, 0x80000, CRC(3b05133b) SHA1(f6067abb92b8751afe7352a4f1b1a22c9528002b) )
+ ROM_LOAD32_BYTE( "l1_nba_jam_tournament_game_rom_uj22.uj22", 0x400003, 0x80000, CRC(39791051) SHA1(7aa02500ddacd31fca04044a22a38f36452ca300) )
+
+ ROM_LOAD32_BYTE( "l1_nba_jam_tournament_game_rom_ug18.ug18", 0x600000, 0x80000, CRC(6fd08f57) SHA1(5b7031dffc88374c5bfdf3021aa01ec4e28d0631) )
+ ROM_LOAD32_BYTE( "l1_nba_jam_tournament_game_rom_uj18.uj18", 0x600001, 0x80000, CRC(4eb73c26) SHA1(693bf45f777da8e55b7bcd8699ea5bd711964941) )
+ ROM_LOAD32_BYTE( "l1_nba_jam_tournament_game_rom_ug23.ug23", 0x600002, 0x80000, CRC(854f73bc) SHA1(242cc8ce28711f6f0787524a1070eb4b0956e6ae) )
+ ROM_LOAD32_BYTE( "l1_nba_jam_tournament_game_rom_uj23.uj23", 0x600003, 0x80000, CRC(f8c30998) SHA1(33e2f982d74e9f3686b1f4a8172c49fb8b604cf5) )
ROM_END
@@ -1499,9 +1535,10 @@ GAME( 1993, jdreddp, 0, tunit_adpcm, jdreddp, midtunit_state, jdreddp,
GAME( 1993, nbajam, 0, tunit_adpcm, nbajam, midtunit_state, nbajam, ROT0, "Midway", "NBA Jam (rev 3.01 04/07/93)", MACHINE_SUPPORTS_SAVE )
GAME( 1993, nbajamr2, nbajam, tunit_adpcm, nbajam, midtunit_state, nbajam, ROT0, "Midway", "NBA Jam (rev 2.00 02/10/93)", MACHINE_SUPPORTS_SAVE )
+GAME( 1993, nbajamr1, nbajam, tunit_adpcm, nbajam, midtunit_state, nbajam, ROT0, "Midway", "NBA Jam (rev 1.00 02/1/93)", MACHINE_SUPPORTS_SAVE )
GAME( 1994, nbajamte, 0, tunit_adpcm, nbajamte, midtunit_state, nbajamte, ROT0, "Midway", "NBA Jam TE (rev 4.0 03/23/94)", MACHINE_SUPPORTS_SAVE )
-GAME( 1994, nbajamte1,nbajamte, tunit_adpcm, nbajamte, midtunit_state, nbajamte, ROT0, "Midway", "NBA Jam TE (rev 1.0 01/17/94)", MACHINE_SUPPORTS_SAVE )
-GAME( 1994, nbajamte2,nbajamte, tunit_adpcm, nbajamte, midtunit_state, nbajamte, ROT0, "Midway", "NBA Jam TE (rev 2.0 01/28/94)", MACHINE_SUPPORTS_SAVE )
GAME( 1994, nbajamte3,nbajamte, tunit_adpcm, nbajamte, midtunit_state, nbajamte, ROT0, "Midway", "NBA Jam TE (rev 3.0 03/04/94)", MACHINE_SUPPORTS_SAVE )
+GAME( 1994, nbajamte2,nbajamte, tunit_adpcm, nbajamte, midtunit_state, nbajamte, ROT0, "Midway", "NBA Jam TE (rev 2.0 01/28/94)", MACHINE_SUPPORTS_SAVE )
+GAME( 1994, nbajamte1,nbajamte, tunit_adpcm, nbajamte, midtunit_state, nbajamte, ROT0, "Midway", "NBA Jam TE (rev 1.0 01/17/94)", MACHINE_SUPPORTS_SAVE )
GAME( 1995, nbajamten,nbajamte, tunit_adpcm, nbajamte, midtunit_state, nbajamte, ROT0, "Midway", "NBA Jam T.E. Nani Edition (rev 5.2 8/11/95, prototype)", MACHINE_SUPPORTS_SAVE )
diff --git a/src/mame/drivers/midzeus.cpp b/src/mame/drivers/midzeus.cpp
index a587ef6b8a8..039e414411d 100644
--- a/src/mame/drivers/midzeus.cpp
+++ b/src/mame/drivers/midzeus.cpp
@@ -1143,7 +1143,6 @@ static MACHINE_CONFIG_START( midzeus2, midzeus2_state )
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_RAW_PARAMS(MIDZEUS_VIDEO_CLOCK/4, 666, 0, 512, 438, 0, 400)
MCFG_SCREEN_UPDATE_DRIVER(midzeus2_state, screen_update_midzeus2)
- MCFG_SCREEN_PALETTE("palette")
MCFG_VIDEO_START_OVERRIDE(midzeus2_state,midzeus2)
diff --git a/src/mame/drivers/mmodular.cpp b/src/mame/drivers/mmodular.cpp
index c9042234b6b..09e83e6dcf6 100644
--- a/src/mame/drivers/mmodular.cpp
+++ b/src/mame/drivers/mmodular.cpp
@@ -15,7 +15,6 @@
Vancouver 68020 12Mhz
Genius 68030 V4.00 33.333 Mhz
Genius 68030 V4.01 33.333 Mhz
- Genius 68030 V4.01 33.333x2 Mhz (custom MESS overclocked version for higher ELO)
Berlin Pro 68020 24.576 Mhz (not modular board, but otherwise close to milano)
Berlin Pro (London) 68020 24.576 Mhz (not modular board, but otherwise close to milano)
London 68030 V5.00k 33.333 Mhz (probably the Genius 3/4 update ROM)
@@ -998,16 +997,12 @@ TIMER_DEVICE_CALLBACK_MEMBER(polgar_state::timer_update_irq_academy)
MACHINE_START_MEMBER(polgar_state,van32)
{
// patch LCD delay loop on the 68030 machines until waitstates and/or opcode timings are fixed in MAME core
-// patches gen32 gen32_41 gen32_oc lond030
+// patches gen32 gen32_41 lond030
UINT8 *rom = memregion("maincpu")->base();
if(rom[0x870] == 0x0c && rom[0x871] == 0x78) {
- if (!strcmp(machine().system().name,"gen32_oc")) {
- rom[0x870] = 0x6c;
- } else {
- rom[0x870] = 0x38;
- }
+ rom[0x870] = 0x38;
}
}
@@ -1536,7 +1531,7 @@ static MACHINE_CONFIG_FRAGMENT ( chess_common )
/* sound hardware */
MCFG_SPEAKER_STANDARD_MONO("mono")
- MCFG_SOUND_ADD("beeper", BEEP, 0)
+ MCFG_SOUND_ADD("beeper", BEEP, 3250)
MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.0)
MACHINE_CONFIG_END
@@ -1606,7 +1601,7 @@ static MACHINE_CONFIG_START( monteciv, polgar_state )
MCFG_MACHINE_START_OVERRIDE(polgar_state, polgar )
MCFG_MACHINE_RESET_OVERRIDE(polgar_state, monteciv )
MCFG_SPEAKER_STANDARD_MONO("mono")
- MCFG_SOUND_ADD("beeper", BEEP, 0)
+ MCFG_SOUND_ADD("beeper", BEEP, 3250)
MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.0)
MCFG_TIMER_DRIVER_ADD_PERIODIC("irq_timer", polgar_state, cause_nmi, attotime::from_hz(600))
@@ -1694,15 +1689,6 @@ static MACHINE_CONFIG_START( gen32, polgar_state )
MACHINE_CONFIG_END
-static MACHINE_CONFIG_DERIVED( gen32_oc, gen32 )
- MCFG_CPU_MODIFY("maincpu")
- MCFG_CPU_CLOCK( XTAL_33_333MHz * 2 )
- MCFG_DEVICE_REMOVE("int_timer")
- MCFG_TIMER_DRIVER_ADD_PERIODIC("int_timer", polgar_state, timer_update_irq6, attotime::from_hz(500))
-
-
-MACHINE_CONFIG_END
-
static MACHINE_CONFIG_START( bpl32, polgar_state )
MCFG_CPU_ADD("maincpu", M68020, XTAL_24_576MHz)
MCFG_CPU_PROGRAM_MAP(bpl32_mem)
@@ -1851,11 +1837,6 @@ ROM_START( gen32_41 )
ROM_LOAD("gen32_41.bin", 0x00000, 0x40000,CRC(ea9938c0) SHA1(645cf0b5b831b48104ad6cec8d78c63dbb6a588c))
ROM_END
-ROM_START( gen32_oc )
- ROM_REGION32_BE( 0x40000, "maincpu", 0 )
- ROM_LOAD("gen32_41.bin", 0x00000, 0x40000,CRC(ea9938c0) SHA1(645cf0b5b831b48104ad6cec8d78c63dbb6a588c))
-ROM_END
-
ROM_START( berlinp )
ROM_REGION32_BE( 0x40000, "maincpu", 0 )
ROM_LOAD("berlinp.bin", 0x00000, 0x40000,CRC(82FBAF6E) SHA1(729B7CEF3DFAECC4594A6178FC4BA6015AFA6202))
@@ -1904,7 +1885,6 @@ DRIVER_INIT_MEMBER(polgar_state,polgar)
CONS( 1992, risc, 0, 0, risc, van16, driver_device, 0, "Saitek", "RISC2500", MACHINE_SUPPORTS_SAVE|MACHINE_REQUIRES_ARTWORK|MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK )
CONS( 1993, gen32, van16, 0, gen32, gen32, driver_device, 0, "Hegener & Glaser Muenchen", "Mephisto Genius030 V4.00", MACHINE_SUPPORTS_SAVE|MACHINE_REQUIRES_ARTWORK | MACHINE_CLICKABLE_ARTWORK )
CONS( 1993, gen32_41, van16, 0, gen32, gen32, driver_device, 0, "Hegener & Glaser Muenchen", "Mephisto Genius030 V4.01", MACHINE_SUPPORTS_SAVE|MACHINE_REQUIRES_ARTWORK | MACHINE_CLICKABLE_ARTWORK )
- CONS( 1993, gen32_oc, van16, 0, gen32_oc, gen32, driver_device, 0, "Hegener & Glaser Muenchen", "Mephisto Genius030 V4.01OC", MACHINE_SUPPORTS_SAVE|MACHINE_REQUIRES_ARTWORK|MACHINE_UNOFFICIAL | MACHINE_CLICKABLE_ARTWORK )
CONS( 1994, berlinp, van16, 0, bpl32, bpl32, driver_device, 0, "Hegener & Glaser Muenchen", "Mephisto Berlin Pro 68020", MACHINE_SUPPORTS_SAVE|MACHINE_REQUIRES_ARTWORK | MACHINE_CLICKABLE_ARTWORK )
CONS( 1996, bpl32, van16, 0, bpl32, bpl32, driver_device, 0, "Hegener & Glaser Muenchen", "Mephisto Berlin Pro London Upgrade V5.00", MACHINE_SUPPORTS_SAVE|MACHINE_REQUIRES_ARTWORK | MACHINE_CLICKABLE_ARTWORK )
CONS( 1996, lond020, van16, 0, van32, van32, driver_device, 0, "Hegener & Glaser Muenchen", "Mephisto London 68020 32 Bit", MACHINE_SUPPORTS_SAVE|MACHINE_REQUIRES_ARTWORK | MACHINE_CLICKABLE_ARTWORK )
diff --git a/src/mame/drivers/model3.cpp b/src/mame/drivers/model3.cpp
index aca17b6ecfc..8f640ac1b9f 100644
--- a/src/mame/drivers/model3.cpp
+++ b/src/mame/drivers/model3.cpp
@@ -92,11 +92,11 @@ Tilemap entry formats (16-bit wide):
are the palette select bits for 8bpp and PHI-T5 for 4bpp.
===================================================================================
-
-Model 3 Hardware Overview.
+Guru-Readme
+Model 3 Hardware Overview
Sega, 1996-1998
-This document covers all games running on the original Model 3 hardware and is produced with
+This document covers all games running on the original Model 3 hardware with
reference to a Scud Race PCB and Virtua Fighter 3TB PCB. ALL PCB numbers are identical.
Scud Race runs on the original Sega Model 3 hardware. It's the same PCB as Virtua Fighter 3, there
is no mention of 'Step 1.5' or even 'Step 1.0' on any of the PCBs and there is no 50MHz or
@@ -136,8 +136,6 @@ Virtua Striker 2
Virtua Striker 2 Version '98
-[There is an external MPEG PCB used on some games but it was not available for documenting]
-
COMM Board
----------
171-7053B
@@ -196,6 +194,30 @@ Notes:
if different, it's likely only for the games that use 64MBit MASKROMs.
ROMs - Not all sockets are populated. See MAME src for exact ROM usage.
+(For dumping reference)
+Jumpers centre pin joins
+-------------------------------------------------------
+JP3: 2-3 pin2 of ic 1 to ic 16 and pin 39 of ic 17 to ic 20
+JP4: 2-3 pin2 of ic 1 to ic 16 and pin 39 of ic 17 to ic 20
+JP5: 2-3 pin2 of ic 1 to ic 16 and pin 39 of ic 17 to ic 20
+JP6: 2-3 pin2 of ic 1 to ic 16 and pin 39 of ic 17 to ic 20
+JP7: 2-3 pin2 of ic 22 to ic 25 and pin 39 ic ic21
+JP8: 2-3 pin32 of ic 22 to ic 25
+JP9: 2-3 pin32 of ic 22 to ic 25
+Jumper pos. 1 is +5V
+
+JP1: 1-2 gnd
+JP2: 2-3 +5v
+Jumper pos. 1 is GND
+Jumper pos. 3 is +5V
+
+ pin1 joins
+-------------------------------
+JP10: 1-2 pin32 of ic 26 to ic 41
+
+All CROM ROMs are 32M MASK
+ALL VROM ROMs are 16M MASK
+
CPU Board
---------
@@ -317,12 +339,69 @@ Notes:
Other than the revision of the listed chips, the PCBs are identical.
-
-Harley Davidson (Rev.A)
-Sega, 1997
-
-This game runs on Sega Model3 Step2 hardware.
-
+External MPEG Audio Board
+-------------------------
+This is the first version of the Model 3 Digital Audio Board used
+on Scud Race and is usually just mounted bare onto the outside of
+the main board metal box.
+
+837-10084 DIGITAL AUDIO BD SEGA 1993
+171-6614B PC BD
+Sticker: 837-12941
+|-------------------------------------------------|
+| CN3 CN4 CN1 R RCA-1 CN2 RCA-2 |
+| MB84256 PC910 4040 7805 TL062 TL062 D6376 |
+| D71051 SM5840|
+| EPROM.IC2 |------| |
+| Z80 16MHz |NEC | |
+| |D65654| |
+| |--------| |------| |
+| |SEGA | KM68257 |
+| |315-5762| KM68257 |
+| | | KM68257 MB84256 |
+| 20MHz|--------| |
+| |
+| MB3771 JP1 JP2 MROM.IC57|
+| 12.288MHz |
+| MROM.IC58|
+| |
+| MROM.IC59|
+| |
+|DSW(4) G G G G MROM.IC60|
+|-------------------------------------------------|
+Notes:
+ Z80 - Clock 4.000MHz [16/4]
+EPROM.IC2 - 27C1001/27C010 EPROM (DIP32)
+ - Scud Race : EPR-19612.IC2
+ MROM* - 8M/16M Mask ROM (DIP42)
+ - Scud Race : MPR-19603/04/05/06
+ MB84256 - Fujitsu MB84256 32kx8 SRAM (DIP28)
+ KM68257 - Samsung KM68257 32kx8 SRAM (DIP28). On this PCB pin 1 (A14) is grounded with a jumper wire on all 3 chips making it 16k
+ PC910 - Sharp PC910 Optocoupler (DIP8)
+ 4040 - 74HC4040 logic chip
+ 7805 - 12V to 5V Voltage Regulator
+ MB3771 - Fujitsu MB3771 Master Reset IC (DIP8)
+ TL062 - Texas Instruments TL062 Low Power JFET-Input Operational Amplifier (DIP8)
+ D71051 - NEC uPD71051 Serial Control Unit USART, functionally equivalent to uPD8251 (SOP28)
+ D65654 - NEC uPD65654 CMOS Gate Array (QFP100)
+ SM5840 - Nippon Precision Circuits SM5840 Digital Audio Multi-Function Digital Filter (DIP18)
+ D6376 - NEC uPD6376GS Audio 2-Channel 16-bit D/A converter (DIP16)
+ 315-5762 - Sega custom chip, probably a NEC or Texas Instruments DSP or MCU, clock input 20MHz (PLCC68)
+ R - Red LED
+ G - Green LED
+ DSW - 4 position DIP switch, all OFF
+ JP1 - 1-2 (Select 16M ROM on bank 1 - IC57 & IC58). alt is select 8M
+ JP2 - 1-2 (Select 16M ROM on bank 2 - IC59 & IC60). alt is select 8M
+ CN1 - 10-pin power input connector
+ CN2 - 5-pin connector for Left+/Left-/Right+/Right- Stereo Audio Output
+ CN3 - 6-pin connector for MIDI TX+/TX-/RX+/RX- communication
+ CN4 - 4-pin connector (not used)
+ RCA* - Left/Right RCA Audio Output Jacks (not used)
+
+
+Sega Model 3 Step2 hardware
+---------------------------
+This covers most, if not all of the later MODEL 3 games on Step 2 & 2.1 hardware.
ROM Board
---------
@@ -352,6 +431,8 @@ ROM Board
| |
|---------------------------------------------------------------------------------------------------|
+Notes: (ROMs documented are for Harley Davidson)
+
VROM00.27 mpr-20378 \
VROM01.26 mpr-20377 |
VROM02.29 mpr-20380 |
@@ -491,7 +572,7 @@ CPU Board
| CN25 |
| RTC72423 (Connector for ) |
| KM4132G271AQ-10 (Protection PCB) |
-| ( not used ) |
+| |
| 32MHz BATT_3V |
| NEC D71051-10 |
| |
@@ -573,76 +654,68 @@ Security Board
315-6050 Lattice ispLSI 2032
315-5881 TQFP100 stamped 317-0247-COM for Spikeout FE
-===================================================================================
-
-Scud Race
-Sega, 1996
-
-Tis game runs on Sega Model 3 Step 1.5 hardware
-
-
-Sound Board (bolted to outside of the metal box)
------------
-
-PCB Layout
-----------
-
-PCB Number: 837-10084 DIGITAL AUDIO BD (C) SEGA 1993
----------------------------------------------------------------
-84256 D71051GU-10 D6376 SM5840
-epr-19612
-Z80 16MHz SEGA D65654GF102
- 315-5762 (QFP100)
- (PLCC68)
- 20MHz KM68257
- KM68257 84256
- KM68257
- 12.288MHz mpr-19603
- mpr-19604
- mpr-19605
-DSW1 mpr-19606
-----------------------------------------------------------------
-
-
-Jumpers
-JP1: 1-2 (Select 16M ROM on bank 1 - ic57 & ic58)
-JP2: 1-2 (Select 16M ROM on bank 2 - ic59 & ic60)
-
-
-
-ROM Board
----------
-
-PCB Number: 837-11860 MODEL3 ROM BOARD (C) SEGA 1995
-
-(For dumping reference)
-
-Jumpers centre pin joins
--------------------------------------------------------
-JP3: 2-3 pin2 of ic 1 to 16 and pin 39 of ic 17 to 20
-JP4: 2-3 pin2 of ic 1 to 16 and pin 39 of ic 17 to 20
-JP5: 2-3 pin2 of ic 1 to 16 and pin 39 of ic 17 to 20
-JP6: 2-3 pin2 of ic 1 to 16 and pin 39 of ic 17 to 20
-JP7: 2-3 pin2 of ic 22 to 25 and pin 39 ic ic21
-JP8: 2-3 pin32 of ic 22 to 25
-JP9: 2-3 pin32 of ic 22 to 25
-Jumper pos. 1 is +5V
-JP1: 1-2 gnd
-JP2: 2-3 +5v
-Jumper pos. 1 is GND
-Jumper pos. 3 is +5V
-
- pin1 joins
--------------------------------
-JP10: 1-2 pin32 of ic 26 to 41
-
-All CROM ROMs are 32M MASK
-ALL VROM ROMs are 16M MASK
-
-*/
+External MPEG Audio Board
+-------------------------
+This is the second version of the Model 3 Digital Audio Board used on
+Sega Rally 2, Daytona USA 2 and others and is mounted inside a metal box.
+
+837-12273 DIGITAL SOUND BD 2 SEGA 1995
+171-7165D PC BD
+Sticker: 837-12273-92
+Sticker: 837-13376
+|-------------------------------------------------|
+| CN1 CN2 R CN5 CN6 LMC6484 CN7 |
+|315-5932 D71051 PQ30RV21 7805 D63210 D63210 |
+|PC910 R 12.288MHz |
+| JP8 |
+|68EC000 315-6028A |
+| 33MHz |
+|KM62256 * |
+|KM62256 MCM6206 |
+| MCM6206 JP4/5/6/7 |
+| JP1/2/3 315-5934|
+|3771 JP10 |
+| JP9 |
+| EPROM.IC2 |
+| RGRG MROM.IC18 MROM.IC20 MROM.IC22 MROM.IC24 |
+|DSW(4) MROM.IC19 MROM.IC21 MROM.IC23 MROM.IC25|
+|-------------------------------------------------|
+Notes:
+ 68000 - Motorola 68EC000FN12 CPU, clock 11.000MHz [33/3] (PLCC68)
+EPROM.IC2 - 27C1024 EPROM (DIP40)
+ - Sega Rally 2 : EPR-20641.IC2
+ - Daytona 2 : EPR-20886.IC2
+ MROM* - Mask ROM (DIP42)
+ - Sega Rally 2 : MPR-20637/38/39/40
+ - Daytona 2 : MPR-20887/88/89/90
+ KM62256 - Samsung KM62256 32kx8 SRAM (SOP28)
+ MCM6206 - Motorola MCM6206 32kx8 SRAM (SOP28)
+ PC910 - Sharp PC910 Optocoupler (DIP8)
+ 7805 - 12V to 5V Voltage Regulator
+ PQ30RV21 - Sharp PQ30RV21 3.3V Voltage Regulator
+ MB3771 - Fujitsu MB3771 Master Reset IC (SOIC8)
+ 315-5934 - GAL16V8 (PLCC20)
+ 315-5932 - GAL16V8 (PLCC20)
+ LMC6484 - Texas Instruments LMC6484IM CMOS Quad Rail-to-Rail Input and Output Operational Amplifier (SOIC14)
+ D71051 - NEC uPD71051 Serial Control Unit USART, functionally equivalent to uPD8251 (SOP28)
+ D63210 - NEC uPD63210 16-bit D/A Converter with built-in Digital Filter for Audio (SOP28)
+315-6028A - Sega custom chip, probably a NEC DSP, clock input 12.228MHz (QFP100)
+ * - Unpopulated position on bottom side of PCB for a NEC uPD77016 DSP. The Sega chip above may be similar to this
+ R - Red LED
+ G - Green LED
+ DSW - 4 position DIP switch, all OFF
+ JP1/2/3 - Jumpers to configure ROMs
+JP4/5/6/7 - Jumpers to configure ROMs
+ JP8 - Jumper tied to pin 26 (IPL1) of MC68EC000
+ JP9/10 - Jumpers to configure ROMs, tied to GAL16V8 315-5934
+ CN1 - 6-pin connector for MIDI TX+/TX-/RX+/RX- communication
+ CN2 - 4-pin connector (not used)
+ CN5 - 10-pin power input connector
+ CN6 - 5-pin connector for Left+/Left-/Right+/Right- Stereo Audio Output
+ CN7 - 5-pin connector (not used)
+===================================================================================
-/*
magtruck locations of interest
000006ee (word) - incremented each vblank, used by mainline to busywait.
diff --git a/src/mame/drivers/monty.cpp b/src/mame/drivers/monty.cpp
index 0167938503b..8275f40aeee 100644
--- a/src/mame/drivers/monty.cpp
+++ b/src/mame/drivers/monty.cpp
@@ -270,7 +270,7 @@ ROM_START( monty )
ROM_LOAD( "monty_main.bin", 0x0000, 0x4000, CRC(720b4f55) SHA1(0106eb88d3fbbf25a745b9b6ee785ba13689d095) ) // 27128
ROM_LOAD( "monty_module1.bin", 0x4000, 0x4000, CRC(2725d8c3) SHA1(8273b9779c0915f9c7c43ea4fb460f43ce036358) ) // 27128
ROM_LOAD( "monty_module2.bin", 0x8000, 0x4000, CRC(db672e47) SHA1(bb14fe86df06cfa4b19625ba417d1a5bc8eae155) ) // 27128
- ROM_FILL(0x1193,1,nullptr) // patch out HALT so we can type in our names
+ ROM_FILL( 0x1193, 1, 0x00 ) // patch out HALT so we can type in our names
ROM_END
ROM_START( mmonty )
@@ -278,7 +278,7 @@ ROM_START( mmonty )
ROM_LOAD( "master_monty_main.bin", 0x0000, 0x8000, CRC(bb5ef4d4) SHA1(ba2c759e429f8740df419f9abb60832eddfba8ab) ) // 27C256
ROM_LOAD( "monty_module1.bin", 0x8000, 0x4000, CRC(2725d8c3) SHA1(8273b9779c0915f9c7c43ea4fb460f43ce036358) ) // 27128
ROM_LOAD( "monty_module2.bin", 0xc000, 0x4000, CRC(db672e47) SHA1(bb14fe86df06cfa4b19625ba417d1a5bc8eae155) ) // 27128
- ROM_FILL(0x1487,1,nullptr) // patch out HALT so we can type in our names
+ ROM_FILL( 0x1487, 1, 0x00 ) // patch out HALT so we can type in our names
ROM_END
diff --git a/src/mame/drivers/mpu3.cpp b/src/mame/drivers/mpu3.cpp
index 0ebb1827f59..97c65cdc8e9 100644
--- a/src/mame/drivers/mpu3.cpp
+++ b/src/mame/drivers/mpu3.cpp
@@ -856,7 +856,7 @@ static MACHINE_CONFIG_START( mpu3base, mpu3_state )
MCFG_STEPPER_OPTIC_CALLBACK(WRITELINE(mpu3_state, reel2_optic_cb))
MCFG_MPU3_REEL_ADD("reel3")
MCFG_STEPPER_OPTIC_CALLBACK(WRITELINE(mpu3_state, reel3_optic_cb))
-
+
MCFG_DEVICE_ADD("meters", METERS, 0)
MCFG_METERS_NUMBER(8)
diff --git a/src/mame/drivers/mpu4hw.cpp b/src/mame/drivers/mpu4hw.cpp
index ba54c2801f2..cfda62b6a40 100644
--- a/src/mame/drivers/mpu4hw.cpp
+++ b/src/mame/drivers/mpu4hw.cpp
@@ -2634,7 +2634,7 @@ MACHINE_CONFIG_FRAGMENT( mpu4_common )
MCFG_PIA_CB2_HANDLER(WRITELINE(mpu4_state, pia_ic8_cb2_w))
MCFG_PIA_IRQA_HANDLER(WRITELINE(mpu4_state, cpu0_irq))
MCFG_PIA_IRQB_HANDLER(WRITELINE(mpu4_state, cpu0_irq))
-
+
MCFG_DEVICE_ADD("meters", METERS, 0)
MCFG_METERS_NUMBER(8)
diff --git a/src/mame/drivers/mquake.cpp b/src/mame/drivers/mquake.cpp
index 77c38c9db88..f2bf1517e84 100644
--- a/src/mame/drivers/mquake.cpp
+++ b/src/mame/drivers/mquake.cpp
@@ -161,11 +161,11 @@ static INPUT_PORTS_START( mquake )
PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_BUTTON1 ) PORT_PLAYER(2) /* JS1SW */
PORT_START("joy_0_dat")
- PORT_BIT( 0x0303, IP_ACTIVE_HIGH, IPT_SPECIAL ) PORT_CUSTOM_MEMBER(DEVICE_SELF, mquake_state,amiga_joystick_convert, 0)
+ PORT_BIT( 0x0303, IP_ACTIVE_HIGH, IPT_SPECIAL ) PORT_CUSTOM_MEMBER(DEVICE_SELF, mquake_state,amiga_joystick_convert, (void *)0)
PORT_BIT( 0xfcfc, IP_ACTIVE_HIGH, IPT_UNKNOWN )
PORT_START("joy_1_dat")
- PORT_BIT( 0x0303, IP_ACTIVE_HIGH, IPT_SPECIAL ) PORT_CUSTOM_MEMBER(DEVICE_SELF, mquake_state,amiga_joystick_convert, 1)
+ PORT_BIT( 0x0303, IP_ACTIVE_HIGH, IPT_SPECIAL ) PORT_CUSTOM_MEMBER(DEVICE_SELF, mquake_state,amiga_joystick_convert, (void *)1)
PORT_BIT( 0xfcfc, IP_ACTIVE_HIGH, IPT_UNKNOWN )
PORT_START("p1_joy")
diff --git a/src/mame/drivers/msisaac.cpp b/src/mame/drivers/msisaac.cpp
index 2311b85907f..0d97a8662f7 100644
--- a/src/mame/drivers/msisaac.cpp
+++ b/src/mame/drivers/msisaac.cpp
@@ -1,4 +1,4 @@
-// license:???
+// license:GPL-2.0+
// copyright-holders:Jarek Burczynski
/****************************************************************************
diff --git a/src/mame/drivers/multi8.cpp b/src/mame/drivers/multi8.cpp
index c9509f66e8a..1cb27eb6b42 100644
--- a/src/mame/drivers/multi8.cpp
+++ b/src/mame/drivers/multi8.cpp
@@ -609,7 +609,6 @@ void multi8_state::machine_start()
void multi8_state::machine_reset()
{
- m_beeper->set_frequency(1200); //guesswork
m_beeper->set_state(0);
m_mcu_init = 0;
}
@@ -637,7 +636,7 @@ static MACHINE_CONFIG_START( multi8, multi8_state )
MCFG_SOUND_ADD("aysnd", AY8912, 1500000) //unknown clock / divider
MCFG_AY8910_PORT_A_WRITE_CB(WRITE8(multi8_state, ym2203_porta_w))
MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.50)
- MCFG_SOUND_ADD("beeper", BEEP, 0)
+ MCFG_SOUND_ADD("beeper", BEEP, 1200) // guesswork
MCFG_SOUND_ROUTE(ALL_OUTPUTS,"mono",0.50)
/* devices */
diff --git a/src/mame/drivers/mz2000.cpp b/src/mame/drivers/mz2000.cpp
index a1fb10dc59f..a601941cab7 100644
--- a/src/mame/drivers/mz2000.cpp
+++ b/src/mame/drivers/mz2000.cpp
@@ -581,7 +581,6 @@ void mz2000_state::machine_reset()
m_tvram_enable = 0;
m_gvram_enable = 0;
- m_beeper->set_frequency(4096);
m_beeper->set_state(0);
m_color_mode = m_io_config->read() & 1;
@@ -853,7 +852,7 @@ static MACHINE_CONFIG_START( mz2000, mz2000_state )
MCFG_SOUND_WAVE_ADD(WAVE_TAG, "cassette")
MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.25)
- MCFG_SOUND_ADD("beeper", BEEP, 0)
+ MCFG_SOUND_ADD("beeper", BEEP, 4096)
MCFG_SOUND_ROUTE(ALL_OUTPUTS,"mono",0.15)
MACHINE_CONFIG_END
diff --git a/src/mame/drivers/mz2500.cpp b/src/mame/drivers/mz2500.cpp
index 2f1461c2197..071f3034f8f 100644
--- a/src/mame/drivers/mz2500.cpp
+++ b/src/mame/drivers/mz2500.cpp
@@ -1806,7 +1806,6 @@ void mz2500_state::machine_reset()
m_cg_clear_flag = 0;
- m_beeper->set_frequency(4096);
m_beeper->set_state(0);
// m_monitor_type = ioport("DSW1")->read() & 0x40 ? 1 : 0;
@@ -2140,7 +2139,7 @@ static MACHINE_CONFIG_START( mz2500, mz2500_state )
MCFG_SOUND_ROUTE(2, "mono", 0.50)
MCFG_SOUND_ROUTE(3, "mono", 0.50)
- MCFG_SOUND_ADD("beeper", BEEP, 0)
+ MCFG_SOUND_ADD("beeper", BEEP, 4096)
MCFG_SOUND_ROUTE(ALL_OUTPUTS,"mono",0.50)
MACHINE_CONFIG_END
diff --git a/src/mame/drivers/mz3500.cpp b/src/mame/drivers/mz3500.cpp
index 3ee4f6a785f..308148718cf 100644
--- a/src/mame/drivers/mz3500.cpp
+++ b/src/mame/drivers/mz3500.cpp
@@ -780,7 +780,6 @@ void mz3500_state::machine_reset()
}
}
- m_beeper->set_frequency(2400);
m_beeper->set_state(0);
}
@@ -848,7 +847,7 @@ static MACHINE_CONFIG_START( mz3500, mz3500_state )
/* sound hardware */
MCFG_SPEAKER_STANDARD_MONO("mono")
- MCFG_SOUND_ADD("beeper", BEEP, 0)
+ MCFG_SOUND_ADD("beeper", BEEP, 2400)
MCFG_SOUND_ROUTE(ALL_OUTPUTS,"mono",0.15)
MACHINE_CONFIG_END
diff --git a/src/mame/drivers/n64.cpp b/src/mame/drivers/n64.cpp
index 1d4e47a4273..757f87e159a 100644
--- a/src/mame/drivers/n64.cpp
+++ b/src/mame/drivers/n64.cpp
@@ -334,8 +334,10 @@ DEVICE_IMAGE_LOAD_MEMBER(n64_mess_state,n64_cart)
//printf("Loading\n");
UINT8 data[0x30800];
battery_image->battery_load(data, 0x30800, 0x00);
- //memcpy(n64_sram, data, 0x20000);
- memcpy(memshare("sram")->ptr(), data, 0x20000);
+ if (m_sram != NULL)
+ {
+ memcpy(m_sram, data, 0x20000);
+ }
memcpy(periphs->m_save_data.eeprom, data + 0x20000, 0x800);
memcpy(periphs->m_save_data.mempak[0], data + 0x20800, 0x8000);
memcpy(periphs->m_save_data.mempak[1], data + 0x28800, 0x8000);
diff --git a/src/mame/drivers/namcos22.cpp b/src/mame/drivers/namcos22.cpp
index d05949093a4..c361e74a74d 100644
--- a/src/mame/drivers/namcos22.cpp
+++ b/src/mame/drivers/namcos22.cpp
@@ -3344,7 +3344,7 @@ static INPUT_PORTS_START( alpiner )
PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_START ) // Decision / View Change
PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_JOYSTICK_LEFT ) PORT_16WAY // L Selection
PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_JOYSTICK_RIGHT) PORT_16WAY // R Selection
- PORT_BIT( 0x80, IP_ACTIVE_HIGH,IPT_SPECIAL ) PORT_CUSTOM_MEMBER(DEVICE_SELF, namcos22_state,alpine_motor_read, (void *)nullptr) // steps are free
+ PORT_BIT( 0x80, IP_ACTIVE_HIGH,IPT_SPECIAL ) PORT_CUSTOM_MEMBER(DEVICE_SELF, namcos22_state,alpine_motor_read, (void *)0) // steps are free
PORT_START("MCUP5B")
PORT_BIT( 0x01, IP_ACTIVE_HIGH,IPT_SPECIAL ) PORT_CUSTOM_MEMBER(DEVICE_SELF, namcos22_state,alpine_motor_read, (void *)1) // steps are locked
diff --git a/src/mame/drivers/namcos86.cpp b/src/mame/drivers/namcos86.cpp
index a8eb5cfd13c..5dab4c43cd2 100644
--- a/src/mame/drivers/namcos86.cpp
+++ b/src/mame/drivers/namcos86.cpp
@@ -185,16 +185,16 @@ WRITE8_MEMBER(namcos86_state::bankswitch1_w)
{
/* if the ROM expansion module is available, don't do anything. This avoids conflict */
/* with bankswitch1_ext_w() in wndrmomo */
- if (memregion("user1")->base()) return;
+ if (m_user1_ptr)
+ return;
membank("bank1")->set_entry(data & 0x03);
}
WRITE8_MEMBER(namcos86_state::bankswitch1_ext_w)
{
- UINT8 *base = memregion("user1")->base();
-
- if (base == nullptr) return;
+ if (!m_user1_ptr)
+ return;
membank("bank1")->set_entry(data & 0x1f);
}
@@ -288,7 +288,7 @@ WRITE8_MEMBER(namcos86_state::led_w)
WRITE8_MEMBER(namcos86_state::cus115_w)
{
/* make sure the expansion board is present */
- if (!memregion("user1")->base())
+ if (!m_user1_ptr)
{
popmessage("expansion board not present");
return;
@@ -317,10 +317,10 @@ WRITE8_MEMBER(namcos86_state::cus115_w)
void namcos86_state::machine_start()
{
- if (!memregion("user1")->base())
- membank("bank1")->configure_entries(0, 4, memregion("cpu1")->base(), 0x2000);
+ if (m_user1_ptr)
+ membank("bank1")->configure_entries(0, 32, m_user1_ptr, 0x2000);
else
- membank("bank1")->configure_entries(0, 32, memregion("user1")->base(), 0x2000);
+ membank("bank1")->configure_entries(0, 4, memregion("cpu1")->base(), 0x2000);
if (membank("bank2"))
membank("bank2")->configure_entries(0, 4, memregion("cpu2")->base(), 0x2000);
diff --git a/src/mame/drivers/naomi.cpp b/src/mame/drivers/naomi.cpp
index b466b7221bd..96dc89ca2c4 100644
--- a/src/mame/drivers/naomi.cpp
+++ b/src/mame/drivers/naomi.cpp
@@ -49,7 +49,7 @@ TODO (general):
- ngdup23a, ngdup23c: missing DIMM emulation, hence they can't possibly work, emulate the DIMM means to add an extra SH-4 ...
- Following games don't boot, any attempt makes it to return to the system test mode (note these are also "m4" type games)
- * Akatsuki Blitzkampf Ausf Achse
+ * Akatsuki Blitzkampf Ausf. Achse
- Boots and accepts coin, but won't accept start button
* Usagi Yamashiro Hen
@@ -332,7 +332,7 @@ Soul Surfer (Rev A) 840-0095C 23838C 21 (64Mb) pre
Star Horse (server) 840-0055C 23626 17 (64Mb) present 315-6206 not present requires 837-13785 ARCNET&IO BD
The King of Route 66 (Rev A) 840-0087C 23819A 20 (64Mb) present 315-6206 not present content is the same as regular 171-8132A cart
The Maze of the Kings (prototype) no cart * 21 (64Mb) present 315-6206 FRI * flash-PCB, not dumped but known to exist
-Tokyo Bus Guide (Rev A) 840-0045C 23468A 18 (64Mb) present 315-6206 317-0290-COM
+Tokyo Bus Guide (Rev A) 840-0045C 23468A 18 (64Mb) present 315-6206 317-0290-COM requires 837-13844 JVS IO
Virtua NBA (prototype) no cart * 21 (64Mb) present 315-6206 317-0271-COM * instead of EPROM have tiny PCB with 2 flashroms on it
Virtua Tennis / Power Smash (prototype) no cart * 21 (64Mb) present 315-6206 317-0263-COM * flash-PCB, title screen have label "SOFT R&D Dept.#3", not dumped but known to exist
@@ -377,7 +377,7 @@ Airline Pilots (Rev A) 840-0005C 21739A 11 (64Mb)
Cosmic Smash 840-0044C 23428 8 (64Mb) ? 315-6213 317-0289-COM joystick + 2 buttons
Cosmic Smash (Rev A) 840-0044C 23428A 8 (64Mb) ? 315-6213 317-0289-COM joystick + 2 buttons
Crazy Taxi 840-0002C 21684 13 (64Mb)* present 315-6213 317-0248-COM * ic8 and ic9 are not present
-Dead Or Alive 2 841-0003C 22121 21 (64Mb) present 315-6213 317-5048-COM joystick + 3 buttons
+Dead Or Alive 2 (Rev A) 841-0003C 22121A 21 (64Mb) present 315-6213 317-5048-COM joystick + 3 buttons
Dead Or Alive 2 Millennium 841-0003C DOA2 M 21 (64Mb) present 315-6213 317-5048-COM joystick + 3 buttons
Death Crimson OX 841-0016C 23524 10 (64Mb) present 315-6213 317-5066-COM
Dengen Tenshi Taisen Janshi Shangri-La 841-0004C 22060 12 (64Mb) ? 315-6213 317-5050-JPN
@@ -410,6 +410,7 @@ Sega Tetris 840-0018C 22909 6 (64Mb)
Slashout 840-0041C 23341 17 (64Mb) ? 315-6213 317-0286-COM joystick + 4 buttons
Spawn In the Demon's Hand (Rev B) 841-0005C 22977B 10 (64Mb) ? 315-6213 317-5051-COM joystick + 4 buttons
Super Major League '99 840-0012C 22059 21 (64Mb) ? 315-6213 317-0259-COM
+The Typing of the Dead 840-0026C 23021 20 (64Mb) present 315-6213 not present
The Typing of the Dead (Rev A) 840-0026C 23021A 20 (64Mb) present 315-6213 not present
Touch de UNO! / Unou Nouryoku Check Machine 840-0008C 22073 4 (64Mb) present 315-6213 317-0255-JPN requires 837-13844 JVS IO with DIPSW 5 On, ELO AccuTouch-compatible touch screen controller and special printer.
Toy Fighter / Waffupu 840-0011C 22035 10 (64Mb) present 315-6212 317-0257-COM joystick + 3 buttons
@@ -633,10 +634,9 @@ Notes:
Sticker EPROM FLASHROMs XC3S50 PIC16C621A XCF01S
Game on cart IC7# # of SOP56 IC2# IC3# IC4# Notes
-------------------------------------------------------------------------------------------------------------------------------------------
-/Akatsuki Denkou Senki Blitz Kampf
-\Ausf. Achse 841-0058C not present 4 (512Mb) present 317-5130-JPN present IC2# is labeled "VER.2" - IC4# is marked "5A" - IC#10 & IC#11 are empty
+Akatsuki Blitzkampf Ausf. Achse 841-0058C not present 4 (512Mb) present 317-5130-JPN present IC2# is labeled "VER.2" - IC4# is marked "5A" - IC#10 & IC#11 are empty
Dynamite Deka EX / Asian Dynamite 840-0175C not present 4 (512Mb) present 317-0495-COM present IC2# is labeled "VER.2"
-Illmatic Envelope 841-0059C not present 4 (512Mb) present 317-5131-JPN present IC2# is labeled "VER.2" - IC#11 is empty
+Illvelo (Illmatic Envelope) 841-0059C not present 4 (512Mb) present 317-5131-JPN present IC2# is labeled "VER.2" - IC#11 is empty
Mamoru-kun wa Norowarete Shimatta 841-0060C not present 4 (512Mb) present 317-5132-JPN present IC2# is labeled "VER.2"
Manic Panic Ghost! 840-0170C-01 not present 5 (512Mb) present 317-0461-COM present requires 837-14672 sensor board (SH4 based)
Melty Blood Actress Again 841-0061C not present 6 (512Mb) present 317-5133-JPN present IC2# is labeled "REV.A" - IC4# is marked "5A"
@@ -1429,6 +1429,7 @@ Notes:
Extreme Hunting 2 Tournament Edition 315-6428P 315-6248
Dirty Pigskin Football 315-6248 -
Sega Bass Fishing Challenge 315-6248 -
+ Sega Bass Fishing Challenge Version A 315-6248 -
Sega Clay Challenge 315-6248 -
U* - Fujitsu MBM29PL12LM-10PCN 128M MirrorFlash TSOP56 flash ROM.
@@ -1859,21 +1860,17 @@ READ64_MEMBER(naomi_state::aw_modem_r )
if (reg == 0x280/4)
{
- UINT32 coins = ioport("COINS")->read();
-
- if (coins & 0x01)
- {
- return U64(0xffffffff00000002); // coin A
- }
- else if (coins & 0x02)
- {
- return U64(0xffffffff00000001); // coin B
- }
+ /*
+ 0x00600280 r 0000dcba
+ a/b - 1P/2P coin inputs (JAMMA), active low
+ c/d - 3P/4P coin inputs (EX. IO board), active low
- return U64(0xffffffffffffffff);
+ (ab == 0) -> BIOS skip RAM test
+ */
+ return U64(0xffffffff00000000) | (ioport("COINS")->read() & 0x0F);
} else
if (reg == 0x284/4)
- return U64(0xffffffffffffff00) | aw_ctrl_type;
+ return U64(0xffffffff00000000) | aw_ctrl_type;
osd_printf_verbose("MODEM: Unmapped read %08x\n", 0x600000+reg*4);
@@ -1890,16 +1887,24 @@ WRITE64_MEMBER(naomi_state::aw_modem_w )
dat = (UINT32)(data >> shift);
if (reg == 0x284/4)
{
+ aw_ctrl_type = dat & 0xF0;
+ }
/*
- 0x00600284 rw ddccbbaa
- aa/bb/cc/dd - set type of Maple devices at ports 0/1/2/3
- 0 - regular DC controller, but with 4 analogue channels (default)
- 1 - DC lightgun
- 2 - DC mouse/trackball
- TODO: hook this then MAME have such devices emulated
+ 0x00600284 rw ddcc0000
+ cc/dd - set type of Maple devices at ports 2/3 (EX. IO board)
+ 0 - regular Atomiswave controller
+ 1 - DC lightgun
+ 2 - DC mouse/trackball
+ TODO: hook this then MAME have such devices emulated
+
+ 0x00600288 rw 0000dcba
+ a - 1P coin counter
+ b - 2P coin counter
+ c - 1P coin lockout
+ d - 2P coin lockout
+
+ 0x0060028C rw POUT CN304 (EX. IO board)
*/
- aw_ctrl_type = dat & 0xFF;
- }
osd_printf_verbose("MODEM: [%08x=%x] write %" I64FMT "x to %x, mask %" I64FMT "x\n", 0x600000+reg*4, dat, data, offset, mem_mask);
}
@@ -2589,8 +2594,9 @@ static INPUT_PORTS_START( aw2c )
PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_BUTTON6 ) PORT_PLAYER(2)
PORT_START("COINS")
- PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_COIN1 )
- PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_COIN2 )
+ PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_COIN1 )
+ PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_COIN2 )
+ PORT_BIT( 0x0C, IP_ACTIVE_LOW, IPT_UNUSED )
PORT_INCLUDE( naomi_debug )
INPUT_PORTS_END
@@ -2627,8 +2633,9 @@ static INPUT_PORTS_START( aw1w )
PORT_BIT( 0xff, 0x00, IPT_PEDAL2 ) PORT_SENSITIVITY(100) PORT_KEYDELTA(40)
PORT_START("COINS")
- PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_COIN1 )
- PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_COIN2 )
+ PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_COIN1 )
+ PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_COIN2 )
+ PORT_BIT( 0x0C, IP_ACTIVE_LOW, IPT_UNUSED )
PORT_INCLUDE( naomi_debug )
INPUT_PORTS_END
@@ -2960,9 +2967,20 @@ Probably at some stage of development NAOMI was planned as non-JVS system as wel
ROM_SYSTEM_BIOS( 20, "bios20", "Naomi Dev BIOS" ) \
ROM_LOAD16_WORD_SWAP_BIOS( 20, "dcnaodev.bios", 0x000000, 0x080000, CRC(7a50fab9) SHA1(ef79f448e0bf735d1264ad4f051d24178822110f) ) \
ROM_SYSTEM_BIOS( 21, "bios21", "Naomi Dev BIOS v1.10" ) \
- ROM_LOAD16_WORD_SWAP_BIOS( 21, "develop110.ic27", 0x000000, 0x200000, CRC(de7cfdb0) SHA1(da16800edc4d49f70481c124d487f544c2fa8ce7) )
+ ROM_LOAD16_WORD_SWAP_BIOS( 21, "develop110.ic27", 0x000000, 0x200000, CRC(de7cfdb0) SHA1(da16800edc4d49f70481c124d487f544c2fa8ce7) ) \
+ ROM_SYSTEM_BIOS( 22, "bios22", "Naomi Unknown Dev board" ) \
+ ROM_LOAD16_WORD_SWAP_BIOS( 22, "zukinver0930.ipl", 0x000000, 0x200000, CRC(58e17c23) SHA1(19330f906accf1b859f56bbcedc2edff73747599) )
/* dcnaodev.bios comes from a dev / beta board. The eprom was a 27C4096 */
+/*
+ zukinver0930.ipl comes from 837-13502-01 / 837-13663 PCB which contains:
+ 22 empty sockets ROM0 - ROM21
+ 315-6187 Altera EPM7064LC68-10
+ PC16550DV UART
+ Fujitsu MB???? SCSI controller
+ IPL BOOT ROM with printed label "Zukin Ver.0930 / 99/5/24 / SUM:DB9C"
+*/
+
// bios for House of the Dead 2
#define HOTD2_BIOS \
ROM_REGION( 0x200000, "maincpu", 0) \
@@ -3406,7 +3424,7 @@ ROM_START( doa2 )
NAOMI_DEFAULT_EEPROM_NO_BD
ROM_REGION( 0xb000000, "rom_board", ROMREGION_ERASEFF)
- ROM_LOAD("epr-22121.ic22", 0x0000000, 0x0400000, CRC(30f93b5e) SHA1(0e33383e7ab9a721dab4708b063598f2e9c9f2e7) ) // partially encrypted
+ ROM_LOAD("epr-22121a.ic22", 0x0000000, 0x0400000, CRC(30f93b5e) SHA1(0e33383e7ab9a721dab4708b063598f2e9c9f2e7) ) // partially encrypted
ROM_LOAD("mpr-22100.ic1", 0x0800000, 0x0800000, CRC(92a53e5e) SHA1(87fcdeee9c4e65a3eb6eb345eed85d4f2df26c3c) )
ROM_LOAD("mpr-22101.ic2", 0x1000000, 0x0800000, CRC(14cd7dce) SHA1(5df14a5dad14bc922b4f88881dc2e9c8e74d6170) )
@@ -7958,6 +7976,40 @@ ROM_START( puyofev )
ROM_LOAD("317-0375-com.pic", 0x00, 0x4000, CRC(52b56b52) SHA1(221590efbb09824621714cb163bda51a921d7d54) )
ROM_END
+/*
+ note:
+ both Dragon Treasure game binaries have only first 16MB encrypted using DES key from security PIC provided with GD-ROMs.
+ the rest of data encrypted using some other key, same in both game versions.
+ presumably this data uploaded via network to satellite units and decrypted using DES key from their own security PICs.
+*/
+
+// requires 837-14381 "G2 EXPANSION BD" I/O board
+ROM_START( dragntr2 )
+ NAOMIGD_BIOS
+ NAOMI_DEFAULT_EEPROM
+
+ DISK_REGION( "gdrom" )
+ DISK_IMAGE_READONLY( "gds-0037a", 0, SHA1(ce65fe84cabaa1ac3f40bff9535a42c2055b5f1c) )
+
+ ROM_REGION( 0x4000, "pic", ROMREGION_ERASEFF)
+ //PIC is missing
+ ROM_LOAD("317-xxxx-xxx.pic", 0x00, 0x4000, NO_DUMP )
+ROM_END
+
+// requires 837-14381 "G2 EXPANSION BD" I/O board
+ROM_START( dragntr3 )
+ NAOMIGD_BIOS
+ NAOMI_DEFAULT_EEPROM
+
+ DISK_REGION( "gdrom" )
+ DISK_IMAGE_READONLY( "gds-0041a", 0, SHA1(955f6b0509aefba43048adf5f5fd6fec5024da53) )
+
+ ROM_REGION( 0x4000, "pic", ROMREGION_ERASEFF)
+ //PIC16F628A
+ // copy, original labels unknown
+ ROM_LOAD("317-xxxx-xxx.pic", 0x00, 0x4000, CRC(8df4d33a) SHA1(0d27ec46a64af60b1e46ad4b3d34b6df5448f81a) )
+ROM_END
+
ROM_START( ndcfboxa )
NAOMIGD_BIOS
NAOMI_DEFAULT_EEPROM
@@ -8714,6 +8766,11 @@ ROM_START( wccf212e )
//PIC16C621A (317-0369-EXP)
//(sticker 253-5508-0369E)
ROM_LOAD("317-0369-exp.pic", 0x00, 0x4000, CRC(adf2d113) SHA1(a5703f0926d6fd4ed95daa730184067865f4b5d8) )
+
+ // 837-14229 "IC BD FLAT READER"
+ // SH4-based camera sensor board connected to MAPLE CN7
+ ROM_REGION( 0x200000, "camera", ROMREGION_ERASE)
+ ROM_LOAD("fpr23911.ic18", 0x000000, 0x200000, CRC(1a1da741) SHA1(532ea7fc4dab11e012a521abcf5fdadd9b40d631) )
ROM_END
ROM_START( wccf234j )
@@ -8984,6 +9041,9 @@ ROM_START( ngbc )
ROM_LOAD( "ax3301f01.bin", 0, 4, CRC(9afe949b) SHA1(4f7b039f3287da61a53a2d012993bfb57e1459bd) )
ROM_END
+// note: it looks there no regional differences in KOF NW EN and JP cartridge dumps, possible JP is just newer revision
+
+// Build: Jul 2004
ROM_START( kofnw )
AW_BIOS
@@ -9000,6 +9060,7 @@ ROM_START( kofnw )
ROM_LOAD( "ax2201f01.bin", 0, 4, CRC(b1fff0c8) SHA1(d83177e3672378a2bbc08653b4b73704333ca30a) )
ROM_END
+// Build: Sep 2004
ROM_START( kofnwj )
AW_BIOS
@@ -9118,6 +9179,7 @@ ROM_START( ftspeed )
ROM_LOAD( "ax1701f01.bin", 0, 4, CRC(f3f03c35) SHA1(2a8329a29cdcc0219e9360cc573c0f3ad44d0175) )
ROM_END
+// contents of cartridges labeled as JP and EN is the same
ROM_START( kofxi )
AW_BIOS
@@ -9259,18 +9321,38 @@ ROM_START( claychal )
ROM_LOAD( "315-6248.bin", 0x000000, 0x000004, CRC(553dd361) SHA1(a60a26b5ee786cf0bb3d09bb6f00374598fbd7cc) )
ROM_END
+// Build:Feb 08 2009 22:35:34
+ROM_START( basschalo )
+ AW_BIOS
+
+ ROM_REGION( 0x8000000, "rom_board", ROMREGION_ERASE)
+ ROM_LOAD("610-0811.u3", 0x00000000, 0x01000000, CRC(ef31abe7) SHA1(bf8a66da4ceead350c200626792af55b7f258db4) )
+ ROM_LOAD("610-0811.u1", 0x01000000, 0x01000000, CRC(44c3cf90) SHA1(620a55f8f971f86fd65a3e3e9f0784fed5ca891e) )
+ ROM_LOAD("vera.u4", 0x02000000, 0x01000000, CRC(bd1f13aa) SHA1(1ef9a7e684418baf8a61fef2610839fd72887d4c) )
+ ROM_LOAD("610-0811.u2", 0x03000000, 0x01000000, CRC(1c61ed69) SHA1(e5a53362ea3e285a05d69d0fb56e1f8625272c18) )
+ ROM_LOAD("610-0811.u15", 0x04000000, 0x01000000, CRC(e8f02238) SHA1(f762a0a93e80899f71af6d2e0126a3fe9586815a) )
+ ROM_LOAD("610-0811.u17", 0x05000000, 0x01000000, CRC(db799f5a) SHA1(f85f35388ffb4399382b676773314f9a651e38df) )
+ ROM_LOAD("610-0811.u14", 0x06000000, 0x01000000, CRC(f2769383) SHA1(c580577df9d140bb6ecce192efafb0284d22c32d) )
+ ROM_LOAD("vera.u16", 0x07000000, 0x01000000, CRC(3590072d) SHA1(3375a0334c35de1d7d8231d7cc27775451042f91) )
+
+ ROM_REGION( 4, "rom_key", 0 )
+ ROM_LOAD( "315-6248.bin", 0x000000, 0x000004, CRC(553dd361) SHA1(a60a26b5ee786cf0bb3d09bb6f00374598fbd7cc) )
+ROM_END
+
+// Version A
+// Build:Jul 15 2009 16:27:40
ROM_START( basschal )
AW_BIOS
- ROM_REGION( 0x8000100, "rom_board", ROMREGION_ERASE)
- ROM_LOAD( "610-0811.u3", 0x0000000, 0x1000100, CRC(f690d722) SHA1(03c2b53dda8cc11ba94468e7bd2fcb4e20a95c2d) )
- ROM_LOAD( "610-0811.u1", 0x1000000, 0x1000100, CRC(d744d326) SHA1(fa3f25d683411c5ba63ed188cfcdba05d9cd9910) )
- ROM_LOAD( "610-0811.u4", 0x2000000, 0x1000100, CRC(ac58d81d) SHA1(97a61895f543ee00e1f377af0793ad8f83ac34c4) )
- ROM_LOAD( "610-0811.u2", 0x3000000, 0x1000100, CRC(15351d45) SHA1(6e3cbf356f7a4f4adb32f1b216fbd4fe51ac915f) )
- ROM_LOAD( "610-0811.u15", 0x4000000, 0x1000100, CRC(1da03c68) SHA1(060b5bad3f79f934c8359a7ae9f9d1bd43c08087) )
- ROM_LOAD( "610-0811.u17", 0x5000000, 0x1000100, CRC(77cc6fe6) SHA1(3e0567f80738f83113bd6ac01f2b5fc5cea9fb3d) )
- ROM_LOAD( "610-0811.u14", 0x6000000, 0x1000100, CRC(9f33f186) SHA1(d656f3c11dba50620158394866054e08cdc7f4f0) )
- ROM_LOAD( "610-0811.u16", 0x7000000, 0x1000100, CRC(5f0a3bd1) SHA1(39c66fce9ef0660491372e1aa4faff5b21524177) )
+ ROM_REGION( 0x8000000, "rom_board", ROMREGION_ERASE)
+ ROM_LOAD("vera.u3", 0x00000000, 0x01000000, CRC(8cbec9d7) SHA1(080f5edd817993946b1008ebe8ba489f818d3f99) )
+ ROM_LOAD("vera.u1", 0x01000000, 0x01000000, CRC(cfef27e5) SHA1(e0e27adc1b3635a310c50c6374d85572db608675) )
+ ROM_LOAD("vera.u4", 0x02000000, 0x01000000, CRC(bd1f13aa) SHA1(1ef9a7e684418baf8a61fef2610839fd72887d4c) )
+ ROM_LOAD("vera.u2", 0x03000000, 0x01000000, CRC(0a463c37) SHA1(630ad98d2f80fd458729bd56e8d665a88263da28) )
+ ROM_LOAD("vera.u15", 0x04000000, 0x01000000, CRC(e588afd1) SHA1(0ce3aeb2bcea66beaec2410d1df6857c4365aecf) )
+ ROM_LOAD("vera.u17", 0x05000000, 0x01000000, CRC(d78389a4) SHA1(50babfe3d58929a26a69dd4a4120fd87f507a95e) )
+ ROM_LOAD("vera.u14", 0x06000000, 0x01000000, CRC(35df044f) SHA1(eeac6c4062f697205558846d6ac262cb5c1b10cf) )
+ ROM_LOAD("vera.u16", 0x07000000, 0x01000000, CRC(3590072d) SHA1(3375a0334c35de1d7d8231d7cc27775451042f91) )
ROM_REGION( 4, "rom_key", 0 )
ROM_LOAD( "315-6248.bin", 0x000000, 0x000004, CRC(553dd361) SHA1(a60a26b5ee786cf0bb3d09bb6f00374598fbd7cc) )
@@ -9412,8 +9494,8 @@ GAME( 2003, puyofevp, naomi, naomim1, naomi, naomi_state, naomi, ROT0, "Sega", "
/* 841-xxxxx ("Licensed by Sega" Naomi cart games)*/
/* 0001 */ GAME( 1999, pstone, naomi, naomim2, naomi, naomi_state, naomi, ROT0, "Capcom", "Power Stone (JPN, USA, EUR, ASI, AUS)", GAME_FLAGS )
/* 0002 */ GAME( 1999, suchie3, naomi, naomim2, suchie3, naomi_state,naomi_mp,ROT0, "Jaleco", "Idol Janshi Suchie-Pai 3 (JPN)", GAME_FLAGS )
-/* 0003 */ GAME( 1999, doa2, naomi, naomim2, naomi, naomi_state, naomi, ROT0, "Tecmo", "Dead or Alive 2 (JPN, USA, EXP, KOR, AUS)", GAME_FLAGS )
-/* 0003 */ GAME( 2000, doa2m, doa2, naomim2, naomi, naomi_state, naomi, ROT0, "Tecmo", "Dead or Alive 2 Millennium (JPN, USA, EXP, KOR, AUS)", GAME_FLAGS )
+/* 0003 */ GAME( 1999, doa2, naomi, naomim2, naomi, naomi_state, naomi, ROT0, "Tecmo", "Dead or Alive 2 (Rev A)", GAME_FLAGS )
+/* 0003 */ GAME( 2000, doa2m, doa2, naomim2, naomi, naomi_state, naomi, ROT0, "Tecmo", "Dead or Alive 2 Millennium", GAME_FLAGS )
/* 0004 */ GAME( 1999, shangril, naomi, naomim2, naomi_mp,naomi_state,naomi_mp,ROT0, "Marvelous Ent.", "Dengen Tenshi Taisen Janshi Shangri-la (JPN, USA, EXP, KOR, AUS)", GAME_FLAGS )
/* 0005 */ GAME( 1999, spawn, naomi, naomim2, naomi, naomi_state, naomi, ROT0, "Todd Mc Farlane / Capcom","Spawn In the Demon's Hand (JPN, USA, EUR, ASI, AUS) (Rev B)", GAME_FLAGS )
/* 0006 */ GAME( 1999, puyoda, naomi, naomim2, naomi, naomi_state, naomi, ROT0, "Compile", "Puyo Puyo Da!", GAME_FLAGS )
@@ -9430,12 +9512,12 @@ GAME( 2003, puyofevp, naomi, naomim1, naomi, naomi_state, naomi, ROT0, "Sega", "
/* 0017 */ GAME( 2001, gundmct, naomi, naomim2, naomi, naomi_state, naomi, ROT0, "Banpresto / Capcom","Mobile Suit Gundam: Federation Vs. Zeon", GAME_FLAGS )
/* 0020 */ GAME( 2001, zerogu2, naomi, naomim2, naomi, naomi_state, naomi, ROT0, "Psikyo", "Zero Gunner 2", GAME_FLAGS )
/* 0057 */ GAME( 2007, sl2007, naomi, naomim4, naomi, naomi_state, naomi, ROT270,"Triangle Service","Shooting Love 2007", GAME_FLAGS )
-/* 0058 */ GAME( 2008, ausfache, naomi, naomim4, naomi, naomi_state, naomi, ROT0, "Subtle Style", "Akatsuki Blitzkampf Ausf Achse", GAME_FLAGS )
+/* 0058 */ GAME( 2008, ausfache, naomi, naomim4, naomi, naomi_state, naomi, ROT0, "Subtle Style", "Akatsuki Blitzkampf Ausf. Achse", GAME_FLAGS )
/* 0059 */ GAME( 2008, illvelo, naomi, naomim4, naomi, naomi_state, naomi, ROT270,"Milestone", "Illvelo (Illmatic Envelope)", GAME_FLAGS )
/* 0060 */ GAME( 2008, mamonoro, naomi, naomim4, naomi, naomi_state, naomi, ROT270,"G.Rev", "Mamoru-kun wa Norowarete Shimatta!", GAME_FLAGS )
/* 0061 */ GAME( 2008, mbaao, mbaa, naomim4, naomi, naomi_state, naomi, ROT0, "Type-Moon/Ecole", "Melty Blood Actress Again", GAME_FLAGS )
/* 0061 */ GAME( 2008, mbaa, naomi, naomim4, naomi, naomi_state, naomi, ROT0, "Type-Moon/Ecole", "Melty Blood Actress Again Version A (Rev A)", GAME_FLAGS )
-/* 0062 */ GAME( 2009, radirgyn, naomi, naomim4, naomi, naomi_state, naomi, ROT0, "Milestone", "Radirgy Noa", GAME_FLAGS )
+/* 0062 */ GAME( 2009, radirgyn, naomi, naomim4, naomi, naomi_state, naomi, ROT0, "Milestone/Lucky", "Radirgy Noa", GAME_FLAGS )
/* HMG016007 */ GAME( 2001,hmgeo,naomi, naomim2, naomi, naomi_state, naomi, ROT0, "Capcom", "Heavy Metal Geomatrix (JPN, USA, EUR, ASI, AUS) (Rev B)", GAME_FLAGS )
/* Cart games on Namco custom ROM board */
@@ -9464,76 +9546,77 @@ GAME( 2003, puyofevp, naomi, naomim1, naomi, naomi_state, naomi, ROT0, "Sega", "
/* 0006 */ GAME( 2001, vstrik3, naomi2, naomi2gd, naomi, naomi_state, naomi2, ROT0, "Sega", "Virtua Striker 3 Ver. 2002 (GDS-0006)", GAME_FLAGS )
// 0007
/* 0008 */ GAME( 2001, monkeyba, naomigd, naomigd, monkeyba,naomi_state, naomigd, ROT0, "Sega", "Monkey Ball (GDS-0008)", GAME_FLAGS )
-// 0009 Dynamic Golf / Virtua Golf
+// 0009 Dynamic Golf / Virtua Golf (GDS-0009)
/* 0009A */ GAME( 2001, dygolf, naomigd, naomigd, naomi, naomi_state, naomigd, ROT0, "Sega", "Dynamic Golf / Virtua Golf (Rev A) (GDS-0009A)", GAME_FLAGS )
/* 0010 */ GAME( 2001, wsbbgd, naomigd, naomigd, dybbnao, naomi_state, naomigd, ROT0, "Sega", "Super Major League / World Series Baseball (GDS-0010)", GAME_FLAGS )
/* 0011 */ GAME( 1999, vtennisg, naomigd, naomigd, naomi, naomi_state, naomigd, ROT0, "Sega", "Virtua Tennis / Power Smash (GDS-0011)", GAME_FLAGS )
/* 0012 */ GAME( 2001, vf4o, vf4, naomi2gd, naomi, naomi_state, naomi2, ROT0, "Sega", "Virtua Fighter 4 (GDS-0012)", GAME_FLAGS )
-// 0012A Virtua Fighter 4 (Rev A)
+// 0012A Virtua Fighter 4 (Rev A) (GDS-0012A)
/* 0012B */ GAME( 2001, vf4b, vf4, naomi2gd, naomi, naomi_state, naomi2, ROT0, "Sega", "Virtua Fighter 4 (Rev B) (GDS-0012B)", GAME_FLAGS )
/* 0012C */ GAME( 2001, vf4, naomi2, naomi2gd, naomi, naomi_state, naomi2, ROT0, "Sega", "Virtua Fighter 4 (Rev C) (GDS-0012C)", GAME_FLAGS )
/* 0013 */ GAME( 2001, shaktmsp, naomigd, naomigd, shaktamb, naomi_state, naomigd, ROT0, "Sega", "Shakatto Tambourine Motto Norinori Shinkyoku Tsuika (2K1 SPR) (GDS-0013)", GAME_FLAGS )
/* 0014 */ GAME( 2001, beachspi, naomi2, naomi2gd, naomi, naomi_state, naomi2, ROT0, "Sega", "Beach Spikers (GDS-0014)", GAME_FLAGS )
-// 0015 Virtua Tennis 2 / Power Smash 2
+// 0015 Virtua Tennis 2 / Power Smash 2 (GDS-0015)
/* 0015A */ GAME( 2001, vtennis2, naomigd, naomigd, naomi, naomi_state, naomigd, ROT0, "Sega", "Virtua Tennis 2 / Power Smash 2 (Rev A) (GDS-0015A)", GAME_FLAGS )
/* 0016 */ GAME( 2001, shaktamb, naomigd, naomigd, shaktamb, naomi_state, naomigd, ROT0, "Sega", "Shakatto Tambourine Cho Powerup Chu (2K1 AUT) (GDS-0016)", GAME_FLAGS )
/* 0017 */ GAME( 2001, keyboard, naomigd, naomigd, naomi, naomi_state, naomigd, ROT0, "Sega", "La Keyboard (GDS-0017)", GAME_FLAGS )
/* 0018 */ GAME( 2001, lupinsho, naomigd, naomigd, hotd2, naomi_state, naomigd, ROT0, "Sega / Eighting", "Lupin The Third - The Shooting (GDS-0018)", GAME_FLAGS )
-// 0018A Lupin The Third - The Shooting (Rev A)
+// 0018A Lupin The Third - The Shooting (Rev A) (GDS-0018A)
/* 0019 */ GAME( 2002, vathlete, naomigd, naomigd, naomi, naomi_state, naomigd, ROT0, "Sega", "Virtua Athletics / Virtua Athlete (GDS-0019)", GAME_FLAGS )
/* 0020 */ GAME( 2002, initdo, initd, naomi2gd, naomi, naomi_state, naomi2, ROT0, "Sega", "Initial D Arcade Stage (Japan) (GDS-0020)", GAME_FLAGS )
-// 0020A Initial D Arcade Stage (Rev A)
+// 0020A Initial D Arcade Stage (Rev A) (GDS-0020A)
/* 0020B */ GAME( 2002, initd, naomi2, naomi2gd, naomi, naomi_state, naomi2, ROT0, "Sega", "Initial D Arcade Stage (Rev B) (Japan) (GDS-0020B)", GAME_FLAGS )
-// 0021 Lupin The Third - The Typing
+// 0021 Lupin The Third - The Typing (GDS-0021)
/* 0021A */ GAME( 2002, luptype, naomigd, naomigd, naomi, naomi_state, naomigd, ROT0, "Sega", "Lupin The Third - The Typing (Rev A) (GDS-0021A)", GAME_FLAGS )
/* 0022 */ GAME( 2002, mok, naomigd, naomigd, hotd2, naomi_state, naomigd, ROT0, "Sega", "The Maze of the Kings (GDS-0022)", GAME_FLAGS )
-// 0023 Naomi DIMM Firmware Updater
+// 0023 Naomi DIMM Firmware Updater (GDS-0023)
/* 0023A */ GAME( 2001, ngdup23a, naomigd, naomigd, naomi, naomi_state, naomigd, ROT0, "Sega", "Naomi DIMM Firmware Updater (Rev A) (GDS-0023A)", GAME_FLAGS )
-// 0023B Naomi DIMM Firmware Updater (Rev B)
+// 0023B Naomi DIMM Firmware Updater (Rev B) (GDS-0023B)
/* 0023C */ GAME( 2001, ngdup23c, naomigd, naomigd, naomi, naomi_state, naomigd, ROT0, "Sega", "Naomi DIMM Firmware Updater (Rev C) (GDS-0023C)", GAME_FLAGS )
-// 0023D Naomi DIMM Firmware Updater (Rev D)
+// 0023D Naomi DIMM Firmware Updater (Rev D) (GDS-0023D)
/* 0023E */ GAME( 2001, ngdup23e, naomigd, naomigd, naomi, naomi_state, naomigd, ROT0, "Sega", "Naomi DIMM Firmware Updater (Rev E) (GDS-0023E)", GAME_FLAGS )
-// 0024 Virtua Fighter 4 Evolution
+// 0024 Virtua Fighter 4 Evolution (GDS-0024)
/* 0024A */ GAME( 2002, vf4evoa, vf4evo, naomi2gd, naomi, naomi_state, naomi2, ROT0, "Sega", "Virtua Fighter 4 Evolution (Rev A) (GDS-0024A)", GAME_FLAGS )
/* 0024B */ GAME( 2002, vf4evo, naomi2, naomi2gd, naomi, naomi_state, naomi2, ROT0, "Sega", "Virtua Fighter 4 Evolution (Rev B) (GDS-0024B)", GAME_FLAGS )
/* 0025 */ GAME( 2002, initdexpo,initdexp,naomi2gd, naomi, naomi_state, naomi2, ROT0, "Sega", "Initial D Arcade Stage (Export) (GDS-0025)", GAME_FLAGS )
/* 0025A */ GAME( 2002, initdexp, naomi2, naomi2gd, naomi, naomi_state, naomi2, ROT0, "Sega", "Initial D Arcade Stage (Export) (Rev A) (GDS-0025A)", GAME_FLAGS )
/* 0026 */ GAME( 2002, initdv2jo,initdv2j,naomi2gd, naomi, naomi_state, naomi2, ROT0, "Sega", "Initial D Arcade Stage Ver. 2 (Japan) (GDS-0026)", GAME_FLAGS )
-// 0026A Initial D Arcade Stage Ver. 2 (Japan) (Rev A)
+// 0026A Initial D Arcade Stage Ver. 2 (Japan) (Rev A) (GDS-0026A)
/* 0026B */ GAME( 2002, initdv2j, naomi2, naomi2gd, naomi, naomi_state, naomi2, ROT0, "Sega", "Initial D Arcade Stage Ver. 2 (Japan) (Rev B) (GDS-0026B)", GAME_FLAGS )
/* 0027 */ GAME( 2002, initdv2e, initdv2j,naomi2gd, naomi, naomi_state, naomi2, ROT0, "Sega", "Initial D Arcade Stage Ver. 2 (Export) (GDS-0027)", GAME_FLAGS )
// 0028
-// 0029
+// 0029 Club Kart for Cycraft (GDS-0029)
/* 0029A */ GAME( 2003, clubkcyc, naomi2, naomi2gd, naomi, naomi_state, naomi2, ROT0, "Sega", "Club Kart for Cycraft (Rev A) (GDS-0029A)", GAME_FLAGS )
// 0030
/* 0031 */ GAME( 2003, puyofev, naomigd, naomigd, naomi, naomi_state, naomigd, ROT0, "Sega", "Puyo Puyo Fever (GDS-0031)", GAME_FLAGS )
-// 0032 Initial D Arcade Stage Ver. 3 (Japan)
-// 0032A Initial D Arcade Stage Ver. 3 (Japan) (Rev A)
+// 0032 Initial D Arcade Stage Ver. 3 (Japan) (GDS-0032)
+// 0032A Initial D Arcade Stage Ver. 3 (Japan) (Rev A) (GDS-0032A)
/* 0032B */ GAME( 2004, initdv3jb,initdv3j,naomigd, naomi, naomi_state, naomi2, ROT0, "Sega", "Initial D Arcade Stage Ver. 3 (Japan) (Rev B) (GDS-0032B)", GAME_FLAGS )
/* 0032C */ GAME( 2004, initdv3j, naomi2, naomi2gd, naomi, naomi_state, naomi2, ROT0, "Sega", "Initial D Arcade Stage Ver. 3 (Japan) (Rev C) (GDS-0032C)", GAME_FLAGS )
/* 0033 */ GAME( 2004, initdv3e, naomi2, naomi2gd, naomi, naomi_state, naomi2, ROT0, "Sega", "Initial D Arcade Stage Ver. 3 (Export) (GDS-0033)", GAME_FLAGS )
// 0034
// 0035
-// 0036 Virtua Fighter 4 Final Tuned
+// 0036 Virtua Fighter 4 Final Tuned (GDS-0036)
/* 0036A */ GAME( 2004, vf4tuneda,vf4tuned,naomi2gd, naomi, naomi_state, naomi2, ROT0, "Sega", "Virtua Fighter 4 Final Tuned (Rev A) (GDS-0036A)", GAME_FLAGS )
-/* 0036B */
-/* 0036C */
+// 0036B Virtua Fighter 4 Final Tuned (GDS-0036B)
+// 0036C Virtua Fighter 4 Final Tuned (GDS-0036C)
/* 0036D */ GAME( 2004, vf4tunedd,vf4tuned,naomi2gd, naomi, naomi_state, naomi2, ROT0, "Sega", "Virtua Fighter 4 Final Tuned (Rev D) (GDS-0036D)", GAME_FLAGS )
-/* 0036E */
+// 0036E Virtua Fighter 4 Final Tuned (GDS-0036E)
/* 0036F */ GAME( 2004, vf4tuned, naomi2, naomi2gd, naomi, naomi_state, naomi2, ROT0, "Sega", "Virtua Fighter 4 Final Tuned (Rev F) (GDS-0036F)", GAME_FLAGS )
-// 0037? Puyo Puyo Fever (Export)
+// 0037 Dragon Treasure 2 (GDS-0037)
+/* 0037A */ GAME( 2004, dragntr2, naomigd, naomigd, naomi, naomi_state, naomigd, ROT0, "Sega", "Dragon Treasure 2 (Rev A) (GDS-0037A)", GAME_FLAGS )
// 0038
-// 0039 Initial D Arcade Stage Ver. 3 Cycraft Edition
+// 0039 Initial D Arcade Stage Ver. 3 Cycraft Edition (GDS-0039)
/* 0039A */ GAME( 2006, inidv3ca, inidv3cy,naomigd, naomi, naomi_state, naomi2, ROT0, "Sega", "Initial D Arcade Stage Ver. 3 Cycraft Edition (Rev A) (GDS-0039A)", GAME_FLAGS )
/* 0039B */ GAME( 2006, inidv3cy, naomi2, naomigd, naomi, naomi_state, naomi2, ROT0, "Sega", "Initial D Arcade Stage Ver. 3 Cycraft Edition (Rev B) (GDS-0039B)", GAME_FLAGS )
// 0040
-// 0041 Dragon Treasure 3
-// 0041A Dragon Treasure 3 (Rev A)
-// 0042 NAOMI DIMM Firm Update for CF-BOX
+// 0041 Dragon Treasure 3 (GDS-0041)
+/* 0041A */ GAME( 2005, dragntr3, naomigd, naomigd, naomi, naomi_state, naomigd, ROT0, "Sega", "Dragon Treasure 3 (Rev A) (GDS-0041A)", GAME_FLAGS )
+// 0042 NAOMI DIMM Firm Update for CF-BOX (GDS-0042)
/* 0042A */ GAME( 2001, ndcfboxa, naomigd, naomigd, naomi, naomi_state, naomigd, ROT0, "Sega", "Naomi DIMM Firmware Update for CF-BOX (Rev A) (GDS-0042A)", GAME_FLAGS )
-// 00?? Dragon Treasure
-// 00?? Dragon Treasure 2
-// 00?? Get Bass 2
+// 00?? Dragon Treasure (GDS-00xx)
+// 00?? Get Bass 2 (GDS-00xx)
+// 00?? Pochinya (GDS-00xx)
/* GDL-xxxx ("licensed by Sega" GD-ROM games) */
/* 0001 */ GAME( 2001, gundmgd, naomigd, naomigd, naomi, naomi_state, naomigd, ROT0,"Capcom / Banpresto","Mobile Suit Gundam: Federation Vs. Zeon (GDL-0001)", GAME_FLAGS )
@@ -9542,18 +9625,18 @@ GAME( 2003, puyofevp, naomi, naomim1, naomi, naomi_state, naomi, ROT0, "Sega", "
/* 0004 */ GAME( 2001, cvsgd, naomigd, naomigd, naomi, naomi_state, naomigd, ROT0, "Capcom / SNK", "Capcom Vs. SNK Millennium Fight 2000 Pro (GDL-0004)", GAME_FLAGS )
/* 0005 */ GAME( 2001, starseek,naomigd, naomigd, naomi, naomi_state, naomigd, ROT0, "G.Rev", "Doki Doki Idol Star Seeker (GDL-0005)", MACHINE_IMPERFECT_GRAPHICS|MACHINE_IMPERFECT_SOUND )
/* 0006 */ GAME( 2001, gundmxgd,naomigd, naomigd, naomi, naomi_state, naomigd, ROT0, "Capcom", "Mobile Suit Gundam: Federation Vs. Zeon DX (GDL-0006)", GAME_FLAGS )
-// 0007 Capcom Vs. SNK 2
+// 0007 Capcom Vs. SNK 2 (GDL-0007)
/* 0007A */ GAME( 2001, cvs2gd, naomigd, naomigd, naomi, naomi_state, naomigd, ROT0, "Capcom / SNK", "Capcom Vs. SNK 2 Millionaire Fighting 2001 (Rev A) (GDL-0007A)", GAME_FLAGS )
-// 0008 Capcom Vs. SNK 2 Mark Of The Millennium 2001 (Export)
+// 0008 Capcom Vs. SNK 2 Mark Of The Millennium 2001 (Export) (GDL-0008)
// 0009
/* 0010 */ GAME( 2001, ikaruga, naomigd, naomigd, naomi, naomi_state, naomigd, ROT270, "Treasure", "Ikaruga (GDL-0010)", GAME_FLAGS )
/* 0011 */ GAME( 2002, ggxx, naomigd, naomigd, naomi, naomi_state, ggxx, ROT0,"Arc System Works","Guilty Gear XX (GDL-0011)", GAME_FLAGS )
/* 0012 */ GAME( 2002, cleoftp, naomigd, naomigd, naomi, naomi_state, naomigd, ROT0, "Altron", "Cleopatra Fortune Plus (GDL-0012)", GAME_FLAGS )
/* 0013 */ GAME( 2002, moeru, naomigd, naomigd, naomi, naomi_state, naomigd, ROT0, "Altron", "Moeru Casinyo (GDL-0013)", GAME_FLAGS )
-// 0014 Musapey's Choco Marker
+// 0014 Musapey's Choco Marker (GDL-0014)
/* 0014A */ GAME( 2002, chocomk, naomigd, naomigd, naomi, naomi_state, naomigd, ROT0, "Ecole Software", "Musapey's Choco Marker (Rev A) (GDL-0014A)", GAME_FLAGS )
// 0015
-// 0016 Yonin Uchi Mahjong MJ
+// 0016 Yonin Uchi Mahjong MJ (GDL-0016)
/* 0017 */ GAME( 2002, quizqgd, naomigd, naomigd, naomi, naomi_state, naomigd, ROT270,"Amedio (Taito license)","Quiz Keitai Q mode (GDL-0017)", GAME_FLAGS )
/* 0018 */ GAME( 2002, azumanga,naomigd, naomigd, naomi, naomi_state, naomigd, ROT0,"MOSS (Taito license)","Azumanga Daioh Puzzle Bobble (GDL-0018)", GAME_FLAGS )
/* 0019 */ GAME( 2003, ggxxrlo, ggxxrl, naomigd, naomi, naomi_state, ggxxrl, ROT0,"Arc System Works","Guilty Gear XX #Reload (GDL-0019)", GAME_FLAGS )
@@ -9561,15 +9644,15 @@ GAME( 2003, puyofevp, naomi, naomim1, naomi, naomi_state, naomi, ROT0, "Sega", "
/* 0020 */ GAME( 2004, tetkiwam,naomigd, naomigd, naomi, naomi_state, naomigd, ROT0, "Success", "Tetris Kiwamemichi (GDL-0020)", GAME_FLAGS )
/* 0021 */ GAME( 2003, shikgam2,naomigd, naomigd, naomi, naomi_state, naomigd, ROT270, "Alfa System", "Shikigami No Shiro II / The Castle of Shikigami II (GDL-0021)", GAME_FLAGS )
/* 0022 */ GAME( 2003, usagiym, naomigd, naomigd, naomi_mp,naomi_state,naomigd_mp,ROT0,"Warashi / Mahjong Kobo / Taito", "Usagi - Yamashiro Mahjong Hen (GDL-0022)", GAME_FLAGS )
-// 0023 Border Down
+// 0023 Border Down (GDL-0023)
/* 0023A */ GAME( 2003, bdrdown, naomigd, naomigd, naomi, naomi_state, naomigd, ROT0, "G.Rev", "Border Down (Rev A) (GDL-0023A)", GAME_FLAGS )
/* 0024 */ GAME( 2003, psyvar2, naomigd, naomigd, naomi, naomi_state, naomigd, ROT270, "Success", "Psyvariar 2 - The Will To Fabricate (GDL-0024)", GAME_FLAGS )
/* 0025 */ GAME( 2004, cfield, naomigd, naomigd, naomi, naomi_state, naomigd, ROT0, "Able", "Chaos Field (GDL-0025)", GAME_FLAGS )
/* 0026 */ GAME( 2004, trizeal, naomigd, naomigd, naomi, naomi_state, naomigd, ROT270, "Taito", "Trizeal (GDL-0026)", GAME_FLAGS )
// 0027
/* 0028 */ GAME( 2005, meltyblo,meltybld,naomigd, naomi, naomi_state, naomigd, ROT0, "Ecole Software", "Melty Blood Act Cadenza (GDL-0028)", GAME_FLAGS )
-// 0028A Melty Blood Act Cadenza (Rev A)
-// 0028B Melty Blood Act Cadenza (Rev B)
+// 0028A Melty Blood Act Cadenza (Rev A) (GDL-0028A)
+// 0028B Melty Blood Act Cadenza (Rev B) (GDL-0028B)
/* 0028C */ GAME( 2005, meltybld,naomigd, naomigd, naomi, naomi_state, naomigd, ROT0, "Ecole Software", "Melty Blood Act Cadenza Ver. A (GDL-0028C)", GAME_FLAGS )
// 0029
/* 0030 */ GAME( 2005, senkoo, senko, naomigd, naomi, naomi_state, naomigd, ROT0, "G.Rev", "Senko No Ronde (GDL-0030)", GAME_FLAGS )
@@ -9578,11 +9661,11 @@ GAME( 2003, puyofevp, naomi, naomim1, naomi, naomi_state, naomi, ROT0, "Sega", "
/* 0031A */ GAME( 2005, ss2005, naomigd, naomigd, naomi, naomi_state, naomigd, ROT0, "Starfish", "Super Shanghai 2005 (Rev A) (GDL-0031A)", GAME_FLAGS )
/* 0032 */ GAME( 2005, radirgyo,radirgy, naomigd, naomi, naomi_state, naomigd, ROT270, "Milestone", "Radirgy (GDL-0032)", GAME_FLAGS )
/* 0032A */ GAME( 2005, radirgy, naomigd, naomigd, naomi, naomi_state, naomigd, ROT270, "Milestone", "Radirgy (Rev A) (GDL-0032A)", GAME_FLAGS )
-// 0033 Guilty Gear XX Slash
+// 0033 Guilty Gear XX Slash (GDL-0033)
/* 0033A */ GAME( 2005, ggxxsla, naomigd, naomigd, naomi, naomi_state, ggxxsla, ROT0,"Arc System Works","Guilty Gear XX Slash (Rev A) (GDL-0033A)", GAME_FLAGS )
/* 0034 */ GAME( 2006, kurucham,naomigd, naomigd, naomi, naomi_state, naomigd, ROT0, "Able", "Kurukuru Chameleon (GDL-0034)", GAME_FLAGS )
/* 0035 */ GAME( 2005, undefeat,naomigd, naomigd, naomi, naomi_state, naomigd, ROT270, "G.Rev", "Under Defeat (GDL-0035)", GAME_FLAGS )
-// 0036 Trigger Heart Exelica
+// 0036 Trigger Heart Exelica (GDL-0036)
/* 0036A */ GAME( 2006, trgheart,naomigd, naomigd, naomi, naomi_state, naomigd, ROT270, "Warashi", "Trigger Heart Exelica (Rev A) (GDL-0036A)", GAME_FLAGS )
/* 0037 */ GAME( 2006, jingystm,naomigd, naomigd, naomi, naomi_state, naomigd, ROT0, "Atrativa Japan", "Jingi Storm - The Arcade (GDL-0037)", GAME_FLAGS )
/* 0038 */ GAME( 2006, senkosp, naomigd, naomigd, naomi, naomi_state, naomigd, ROT0, "G.Rev", "Senko No Ronde Special (GDL-0038)", GAME_FLAGS )
@@ -9591,13 +9674,14 @@ GAME( 2003, puyofevp, naomi, naomim1, naomi, naomi_state, naomi, ROT0, "Sega", "
/* 0040 */ GAME( 2006, karous, naomigd, naomigd, naomi, naomi_state, naomigd, ROT270, "Milestone", "Karous (GDL-0040)", GAME_FLAGS )
/* 0041 */ GAME( 2006, ggxxac, naomigd, naomigd, naomi, naomi_state, naomigd, ROT0,"Arc System Works","Guilty Gear XX Accent Core (GDL-0041)", GAME_FLAGS )
/* 0042 */ GAME( 2006, takoron, naomigd, naomigd, naomi, naomi_state, naomigd, ROT0, "Compile", "Noukone Puzzle Takoron (GDL-0042)", GAME_FLAGS )
+// 00?? ExZeus (GDL-00xx)
/* CDV-xxxxx (CD-ROM and DVD-ROM for Naomi 2 Satellite Terminal) */
-/* 10002 */ GAME( 2004, wccf212e,naomigd, naomigd, naomi, naomi_state, naomigd, ROT0, "Sega", "World Club Champion Football Serie A 2002-2003 Ver. 2.12 (CDV-10002)", GAME_FLAGS )
-/* 10008 */ GAME( 2004, wccf234j,naomigd, naomigd, naomi, naomi_state, naomigd, ROT0, "Sega", "World Club Champion Football Serie A 2002-2003 Ver. 2.34 (CDV-10008)", GAME_FLAGS )
+/* 10002 */ GAME( 2004, wccf212e,naomigd, naomigd, naomi, naomi_state, naomigd, ROT0, "Sega", "World Club Champion Football Serie A 2002-2003 Ver.2.12 (CDV-10002)", GAME_FLAGS )
+/* 10008 */ GAME( 2004, wccf234j,naomigd, naomigd, naomi, naomi_state, naomigd, ROT0, "Sega", "World Club Champion Football Serie A 2002-2003 Ver.2.34 (CDV-10008)", GAME_FLAGS )
/* 10013 */ GAME( 2005, wccf310j,naomigd, naomigd, naomi, naomi_state, naomigd, ROT0, "Sega", "World Club Champion Football European Clubs 2004-2005 (CDV-10013)", GAME_FLAGS )
-/* 10015 */ GAME( 2005, wccf331e,wccf322e,naomigd, naomi, naomi_state, naomigd, ROT0, "Sega", "World Club Champion Football European Clubs 2004-2005 Ver. 1.1 (CDV-10015)", GAME_FLAGS )
-/* 10015P*/ GAME( 2005, wccf322e,naomigd, naomigd, naomi, naomi_state, naomigd, ROT0, "Sega", "World Club Champion Football European Clubs 2004-2005 Ver. 3.22 (CDV-10015P)", GAME_FLAGS )
+/* 10015 */ GAME( 2005, wccf331e,wccf322e,naomigd, naomi, naomi_state, naomigd, ROT0, "Sega", "World Club Champion Football European Clubs 2004-2005 Ver.1.1 (CDV-10015)", GAME_FLAGS )
+/* 10015P*/ GAME( 2005, wccf322e,naomigd, naomigd, naomi, naomi_state, naomigd, ROT0, "Sega", "World Club Champion Football European Clubs 2004-2005 Ver.3.22 (CDV-10015P)", GAME_FLAGS )
/* 10027 */ GAME( 2006, wccf420e,naomigd, naomigd, naomi, naomi_state, naomigd, ROT0, "Sega", "World Club Champion Football European Clubs 2005-2006 (CDV-10027)", GAME_FLAGS )
// ????? ??? - World Club Champion Football Serie A 2001-2002 (Sega, 2002)
// ????? ??? - World Club Champion Football Serie A 2001-2002 Ver.1.2 (Sega, 2002)
@@ -9615,32 +9699,33 @@ GAME( 2003, puyofevp, naomi, naomim1, naomi, naomi_state, naomi, ROT0, "Sega", "
/* Atomiswave */
-GAME( 2001, awbios, 0, aw2c, aw2c, naomi_state, atomiswave, ROT0, "Sammy", "Atomiswave Bios", GAME_FLAGS|MACHINE_IS_BIOS_ROOT )
-
-GAME( 2003, maxspeed, awbios, aw1c, aw1w, naomi_state, atomiswave, ROT0, "Sammy", "Maximum Speed", GAME_FLAGS )
-GAME( 2003, sprtshot, awbios, aw2c, aw2c, naomi_state, atomiswave, ROT0, "Sammy USA", "Sports Shooting USA", GAME_FLAGS )
-GAME( 2003, ggx15, awbios, aw2c, aw2c, naomi_state, atomiswave, ROT0, "Arc System Works / Sammy", "Guilty Gear X ver. 1.5", MACHINE_IMPERFECT_GRAPHICS|MACHINE_IMPERFECT_SOUND|MACHINE_NOT_WORKING )
-GAME( 2003, demofist, awbios, aw2c, aw2c, naomi_state, atomiswave, ROT0, "Polygon Magic / Dimps", "Demolish Fist", GAME_FLAGS )
-GAME( 2003, dolphin, awbios, aw2c, aw2c, naomi_state, atomiswave, ROT0, "Sammy", "Dolphin Blue", MACHINE_IMPERFECT_GRAPHICS|MACHINE_IMPERFECT_SOUND|MACHINE_NOT_WORKING )
-GAME( 2003, kov7sprt, awbios, aw2c, aw2c, naomi_state, atomiswave, ROT0, "IGS / Sammy", "Knights of Valour - The Seven Spirits", MACHINE_IMPERFECT_GRAPHICS|MACHINE_IMPERFECT_SOUND|MACHINE_NOT_WORKING )
-GAME( 2003, ggisuka, awbios, aw2c, aw2c, naomi_state, atomiswave, ROT0, "Arc System Works / Sammy", "Guilty Gear Isuka", MACHINE_IMPERFECT_GRAPHICS|MACHINE_IMPERFECT_SOUND|MACHINE_NOT_WORKING )
-GAME( 2004, dirtypig, awbios, aw2c, aw2c, naomi_state, atomiswave, ROT0, "Sammy", "Dirty Pigskin Football", MACHINE_IMPERFECT_GRAPHICS|MACHINE_IMPERFECT_SOUND|MACHINE_NOT_WORKING )
-GAME( 2004, rumblef, awbios, aw2c, aw2c, naomi_state, atomiswave, ROT0, "Sammy / Dimps", "The Rumble Fish", MACHINE_IMPERFECT_GRAPHICS|MACHINE_IMPERFECT_SOUND|MACHINE_NOT_WORKING )
-GAME( 2004, rangrmsn, awbios, aw2c, aw1w, naomi_state, atomiswave, ROT0, "Sammy", "Ranger Mission", GAME_FLAGS )
-GAME( 2004, salmankt, awbios, aw2c, aw2c, naomi_state, atomiswave, ROT0, "Sammy", "Salary Man Kintarou", GAME_FLAGS )
-GAME( 2004, ftspeed, awbios, aw1c, aw1w, naomi_state, atomiswave, ROT0, "Sammy", "Faster Than Speed", GAME_FLAGS )
-GAME( 2005, vfurlong, awbios, aw2c, aw2c, naomi_state, atomiswave, ROT0, "Sammy", "Net Select Keiba Victory Furlong", GAME_FLAGS )
-GAME( 2005, rumblef2, awbios, aw2c, aw2c, naomi_state, atomiswave, ROT0, "Sammy / Dimps", "The Rumble Fish 2", GAME_FLAGS )
-GAME( 2005, rumblf2p,rumblef2,aw2c, aw2c, naomi_state, atomiswave, ROT0, "Sammy / Dimps", "The Rumble Fish 2 (prototype)", GAME_FLAGS )
-GAME( 2005, anmlbskt, awbios, aw2c, aw2c, naomi_state, atomiswave, ROT270, "MOSS / Sammy", "Animal Basket", GAME_FLAGS )
-GAME( 2005, ngbc, awbios, aw2c, aw2c, naomi_state, atomiswave, ROT0, "Sammy / SNK Playmore", "Neo-Geo Battle Coliseum", GAME_FLAGS )
-GAME( 2005, samsptk, awbios, aw2c, aw2c, naomi_state, atomiswave, ROT0, "Sammy / SNK Playmore", "Samurai Spirits Tenkaichi Kenkakuden", GAME_FLAGS )
-GAME( 2005, kofxi, awbios, aw2c, aw2c, naomi_state, atomiswave, ROT0, "Sammy / SNK Playmore", "The King of Fighters XI", GAME_FLAGS )
-GAME( 2005, fotns, awbios, aw2c, aw2c, naomi_state, atomiswave, ROT0, "Arc System Works / Sega", "Fist Of The North Star", GAME_FLAGS )
-GAME( 2005, kofnw, awbios, aw2c, aw2c, naomi_state, atomiswave, ROT0, "Sammy / SNK Playmore", "The King of Fighters Neowave", GAME_FLAGS )
-GAME( 2005, kofnwj, kofnw, aw2c, aw2c, naomi_state, atomiswave, ROT0, "Sammy / SNK Playmore", "The King of Fighters Neowave (Japan)", GAME_FLAGS )
-GAME( 2005, xtrmhunt, awbios, aw2c, aw2c, naomi_state, atomiswave, ROT0, "Sammy", "Extreme Hunting", GAME_FLAGS )
-GAME( 2006, mslug6, awbios, aw2c, aw2c, naomi_state, atomiswave, ROT0, "Sega / SNK Playmore", "Metal Slug 6", MACHINE_IMPERFECT_GRAPHICS|MACHINE_IMPERFECT_SOUND|MACHINE_NOT_WORKING )
-GAME( 2006, xtrmhnt2, awbios, aw2c, aw2c, naomi_state, xtrmhnt2, ROT0, "Sega", "Extreme Hunting 2", GAME_FLAGS )
-GAME( 2008, claychal, awbios, aw2c, aw2c, naomi_state, atomiswave, ROT0, "Sega", "Sega Clay Challenge", GAME_FLAGS )
-GAME( 2009, basschal, awbios, aw2c, aw2c, naomi_state, atomiswave, ROT0, "Sega", "Sega Bass Fishing Challenge", GAME_FLAGS )
+GAME( 2001, awbios, 0, aw2c, aw2c, naomi_state, atomiswave, ROT0, "Sammy", "Atomiswave Bios", GAME_FLAGS|MACHINE_IS_BIOS_ROOT )
+
+GAME( 2003, maxspeed, awbios, aw1c, aw1w, naomi_state, atomiswave, ROT0, "Sammy", "Maximum Speed", GAME_FLAGS )
+GAME( 2003, sprtshot, awbios, aw2c, aw2c, naomi_state, atomiswave, ROT0, "Sammy USA", "Sports Shooting USA", GAME_FLAGS )
+GAME( 2003, ggx15, awbios, aw2c, aw2c, naomi_state, atomiswave, ROT0, "Arc System Works / Sammy", "Guilty Gear X ver. 1.5", MACHINE_IMPERFECT_GRAPHICS|MACHINE_IMPERFECT_SOUND|MACHINE_NOT_WORKING )
+GAME( 2003, demofist, awbios, aw2c, aw2c, naomi_state, atomiswave, ROT0, "Polygon Magic / Dimps", "Demolish Fist", GAME_FLAGS )
+GAME( 2003, dolphin, awbios, aw2c, aw2c, naomi_state, atomiswave, ROT0, "Sammy", "Dolphin Blue", MACHINE_IMPERFECT_GRAPHICS|MACHINE_IMPERFECT_SOUND|MACHINE_NOT_WORKING )
+GAME( 2003, kov7sprt, awbios, aw2c, aw2c, naomi_state, atomiswave, ROT0, "IGS / Sammy", "Knights of Valour - The Seven Spirits", MACHINE_IMPERFECT_GRAPHICS|MACHINE_IMPERFECT_SOUND|MACHINE_NOT_WORKING )
+GAME( 2003, ggisuka, awbios, aw2c, aw2c, naomi_state, atomiswave, ROT0, "Arc System Works / Sammy", "Guilty Gear Isuka", MACHINE_IMPERFECT_GRAPHICS|MACHINE_IMPERFECT_SOUND|MACHINE_NOT_WORKING )
+GAME( 2004, dirtypig, awbios, aw2c, aw2c, naomi_state, atomiswave, ROT0, "Sammy", "Dirty Pigskin Football", MACHINE_IMPERFECT_GRAPHICS|MACHINE_IMPERFECT_SOUND|MACHINE_NOT_WORKING )
+GAME( 2004, rumblef, awbios, aw2c, aw2c, naomi_state, atomiswave, ROT0, "Sammy / Dimps", "The Rumble Fish", MACHINE_IMPERFECT_GRAPHICS|MACHINE_IMPERFECT_SOUND|MACHINE_NOT_WORKING )
+GAME( 2004, rangrmsn, awbios, aw2c, aw1w, naomi_state, atomiswave, ROT0, "Sammy", "Ranger Mission", GAME_FLAGS )
+GAME( 2004, salmankt, awbios, aw2c, aw2c, naomi_state, atomiswave, ROT0, "Sammy", "Salary Man Kintarou", GAME_FLAGS )
+GAME( 2004, ftspeed, awbios, aw1c, aw1w, naomi_state, atomiswave, ROT0, "Sammy", "Faster Than Speed", GAME_FLAGS )
+GAME( 2005, vfurlong, awbios, aw2c, aw2c, naomi_state, atomiswave, ROT0, "Sammy", "Net Select Keiba Victory Furlong", GAME_FLAGS )
+GAME( 2005, rumblef2, awbios, aw2c, aw2c, naomi_state, atomiswave, ROT0, "Sammy / Dimps", "The Rumble Fish 2", GAME_FLAGS )
+GAME( 2005, rumblf2p, rumblef2, aw2c, aw2c, naomi_state, atomiswave, ROT0, "Sammy / Dimps", "The Rumble Fish 2 (prototype)", GAME_FLAGS )
+GAME( 2005, anmlbskt, awbios, aw2c, aw2c, naomi_state, atomiswave, ROT270, "MOSS / Sammy", "Animal Basket", GAME_FLAGS )
+GAME( 2005, ngbc, awbios, aw2c, aw2c, naomi_state, atomiswave, ROT0, "Sammy / SNK Playmore", "Neo-Geo Battle Coliseum", GAME_FLAGS )
+GAME( 2005, samsptk, awbios, aw2c, aw2c, naomi_state, atomiswave, ROT0, "Sammy / SNK Playmore", "Samurai Spirits Tenkaichi Kenkakuden", GAME_FLAGS )
+GAME( 2005, kofxi, awbios, aw2c, aw2c, naomi_state, atomiswave, ROT0, "Sammy / SNK Playmore", "The King of Fighters XI", GAME_FLAGS )
+GAME( 2005, fotns, awbios, aw2c, aw2c, naomi_state, atomiswave, ROT0, "Arc System Works / Sega", "Fist Of The North Star", GAME_FLAGS )
+GAME( 2005, kofnw, awbios, aw2c, aw2c, naomi_state, atomiswave, ROT0, "Sammy / SNK Playmore", "The King of Fighters Neowave", GAME_FLAGS )
+GAME( 2005, kofnwj, kofnw, aw2c, aw2c, naomi_state, atomiswave, ROT0, "Sammy / SNK Playmore", "The King of Fighters Neowave (Japan)", GAME_FLAGS )
+GAME( 2005, xtrmhunt, awbios, aw2c, aw2c, naomi_state, atomiswave, ROT0, "Sammy", "Extreme Hunting", GAME_FLAGS )
+GAME( 2006, mslug6, awbios, aw2c, aw2c, naomi_state, atomiswave, ROT0, "Sega / SNK Playmore", "Metal Slug 6", MACHINE_IMPERFECT_GRAPHICS|MACHINE_IMPERFECT_SOUND|MACHINE_NOT_WORKING )
+GAME( 2006, xtrmhnt2, awbios, aw2c, aw2c, naomi_state, xtrmhnt2, ROT0, "Sega", "Extreme Hunting 2", GAME_FLAGS )
+GAME( 2008, claychal, awbios, aw2c, aw2c, naomi_state, atomiswave, ROT0, "Sega", "Sega Clay Challenge", GAME_FLAGS )
+GAME( 2009, basschalo, basschal, aw2c, aw2c, naomi_state, atomiswave, ROT0, "Sega", "Sega Bass Fishing Challenge", GAME_FLAGS )
+GAME( 2009, basschal, awbios, aw2c, aw2c, naomi_state, atomiswave, ROT0, "Sega", "Sega Bass Fishing Challenge Version A", GAME_FLAGS )
diff --git a/src/mame/drivers/nc.cpp b/src/mame/drivers/nc.cpp
index 37901ff622d..576464351ed 100644
--- a/src/mame/drivers/nc.cpp
+++ b/src/mame/drivers/nc.cpp
@@ -594,7 +594,7 @@ void nc_state::nc_sound_update(int channel)
/* set state */
beeper_device->set_state(on);
/* set frequency */
- beeper_device->set_frequency(frequency);
+ beeper_device->set_clock(frequency);
}
WRITE8_MEMBER(nc_state::nc_sound_w)
diff --git a/src/mame/drivers/neogeo.cpp b/src/mame/drivers/neogeo.cpp
index 9618e8ae356..1743ef2d8f0 100644
--- a/src/mame/drivers/neogeo.cpp
+++ b/src/mame/drivers/neogeo.cpp
@@ -241,9 +241,9 @@
. NEO-AEG CHA42G-3
. NEO-AEG CHA42G-4
. NEO-AEG CHA256
- . NEO-AEG CHA256 B
+ . NEO-AEG CHA256 B
. NEO-AEG CHA256[B]
- . NEO-AEG CHA256BY
+ . NEO-AEG CHA256BY
. NEO-AEG CHA256RY
. NEO-AEG CHA512Y
. NEO-AEG CHAFIO (1999.8.10) - used with NEO-CMC 90G06C7042 or NEO-CMC 90G06C7050
@@ -266,7 +266,7 @@
. NEO-AEG PROG4096 B
. NEO-AEG PROGGS
. NEO-AEG PROGTOP2
- . NEO-AEG PROGTOP2Y
+ . NEO-AEG PROGTOP2Y
. NEO-AEG PROGEOP (1999.4.2)
. NEO-AEG PROGLBA (1999.7.6)
. NEO-AEG PROGRK
@@ -306,12 +306,14 @@
Unofficial pcb's from NG:DEV.TEAM:
MVS CHA:
- GIGA CHAR Board 1.0
- GIGA CHAR Board 1.5
+ GIGA CHAR Board 1.0 Rev. A
+ GIGA CHAR Board 1.5 Rev. 0
+ GIGA CHAR Board 1.5 Rev. C
MVS PROG:
- GIGA PROG Board 1.0
- GIGA PROG Board 1.5
+ GIGA PROG Board 1.0 Rev. B
+ GIGA PROG Board 1.5 Rev. A
+ GIGA PROG Board 1.5 Rev. C
Unofficial pcb's from NEOBITZ:
diff --git a/src/mame/drivers/neogeo_noslot.cpp b/src/mame/drivers/neogeo_noslot.cpp
index cf7d6d4334f..d6e7eccd327 100644
--- a/src/mame/drivers/neogeo_noslot.cpp
+++ b/src/mame/drivers/neogeo_noslot.cpp
@@ -223,7 +223,7 @@ static INPUT_PORTS_START( kizuna4p )
PORT_DIPNAME( 0x0002, 0x0000, DEF_STR( Players ) ) PORT_DIPLOCATION("SW:2")
PORT_DIPSETTING( 0x0002, "2" )
PORT_DIPSETTING( 0x0000, "4" )
- PORT_BIT( 0xff00, IP_ACTIVE_HIGH, IPT_CUSTOM ) PORT_CUSTOM_MEMBER(DEVICE_SELF, neogeo_state, kizuna4p_controller_r, (void *)nullptr)
+ PORT_BIT( 0xff00, IP_ACTIVE_HIGH, IPT_CUSTOM ) PORT_CUSTOM_MEMBER(DEVICE_SELF, neogeo_state, kizuna4p_controller_r, (void *)0)
PORT_MODIFY("P2")
PORT_BIT( 0xff00, IP_ACTIVE_HIGH, IPT_CUSTOM ) PORT_CUSTOM_MEMBER(DEVICE_SELF, neogeo_state, kizuna4p_controller_r, (void *)1)
@@ -283,7 +283,7 @@ static INPUT_PORTS_START( irrmaze )
PORT_INCLUDE( neogeo )
PORT_MODIFY("P1/DSW")
- PORT_BIT( 0xff00, IP_ACTIVE_HIGH, IPT_CUSTOM ) PORT_CUSTOM_MEMBER(DEVICE_SELF, neogeo_state,multiplexed_controller_r, (void *)nullptr)
+ PORT_BIT( 0xff00, IP_ACTIVE_HIGH, IPT_CUSTOM ) PORT_CUSTOM_MEMBER(DEVICE_SELF, neogeo_state,multiplexed_controller_r, (void *)0)
PORT_MODIFY("P2")
PORT_BIT( 0x0fff, IP_ACTIVE_LOW, IPT_UNUSED )
@@ -308,7 +308,7 @@ static INPUT_PORTS_START( popbounc )
PORT_INCLUDE( neogeo )
PORT_MODIFY("P1/DSW")
- PORT_BIT( 0xff00, IP_ACTIVE_HIGH, IPT_CUSTOM ) PORT_CUSTOM_MEMBER(DEVICE_SELF, neogeo_state,multiplexed_controller_r, (void *)nullptr)
+ PORT_BIT( 0xff00, IP_ACTIVE_HIGH, IPT_CUSTOM ) PORT_CUSTOM_MEMBER(DEVICE_SELF, neogeo_state,multiplexed_controller_r, (void *)0)
PORT_MODIFY("P2")
PORT_BIT( 0xff00, IP_ACTIVE_HIGH, IPT_CUSTOM ) PORT_CUSTOM_MEMBER(DEVICE_SELF, neogeo_state,multiplexed_controller_r, (void *)1)
@@ -914,7 +914,7 @@ ROM_END
NEO-MVS PROG42G / NEO-MVS CHA42G
NEO-MVS PROG42G-1 / NEO-MVS CHA42G-1
. NGH-016
- NEO-AEG PROG42G / NEO-AEG CHA42G
+ NEO-AEG PROG42G / NEO-AEG CHA42G
NEO-AEG PROG42G-1 / NEO-AEG CHA42G-1
****************************************/
@@ -967,8 +967,8 @@ ROM_END
. NGM-017
NEO-MVS PROG42G / NEO-MVS CHA42G
. NGH-017
- NEO-AEG PROG42G / NEO-AEG CHA42G
- NEO-AEG PRO42G-1 / NEO-AEG CHA42G-1
+ NEO-AEG PROG42G / NEO-AEG CHA42G
+ NEO-AEG PRO42G-1 / NEO-AEG CHA42G-1
****************************************/
ROM_START( sengoku ) /* MVS AND AES VERSION */
@@ -1413,11 +1413,13 @@ ROM_END
NEO-MVS PROG42G-1 / NEO-MVS CHA42G-1
. NGH-030
NEO-AEG PROG42G-1 / NEO-AEG CHA42G-1
+ NEO-AEG PROG42G / NEO-AEG CHA42G
****************************************/
ROM_START( 2020bb )
ROM_REGION( 0x100000, "maincpu", 0 )
- ROM_LOAD16_WORD_SWAP( "030-p1.p1", 0x000000, 0x080000, CRC(d396c9cb) SHA1(47ba421d14d05b965a8d44e7475b227a208e5a07) )
+ ROM_LOAD16_WORD_SWAP( "030-p1.p1", 0x000000, 0x080000, CRC(d396c9cb) SHA1(47ba421d14d05b965a8d44e7475b227a208e5a07) ) /* TC534200 */
+ /* also found AES set with p1 label 030-P1 on TC534200 on NEO-AEG PROG42G and m1 label 030-M1 on TC531001 on NEO-AEG CHA42G; other chip labels are the same */
NEO_SFIX_128K( "030-s1.s1", CRC(7015b8fc) SHA1(8c09bc3e6c62e0f7c9557c1e10c901be325bae7f) ) /* TC531000 */
@@ -1541,6 +1543,7 @@ ROM_END
ROM_START( roboarmy )
ROM_REGION( 0x100000, "maincpu", 0 )
ROM_LOAD16_WORD_SWAP( "032-p1.p1", 0x000000, 0x080000, CRC(cd11cbd4) SHA1(23163e3da2f07e830a7f4a02aea1cb01a54ccbf3) ) /* TC534200 */
+ /* also found AES and MVS set with p1 on eprom on NEO-AEG PROG42G-1 and NEO-MVS PROG42G-COM; correct chip label unknown */
NEO_SFIX_128K( "032-s1.s1", CRC(ac0daa1b) SHA1(93bae4697dc403fce19422752a514326ccf66a91) ) /* TC531000 */
@@ -1790,25 +1793,27 @@ ROM_END
ROM_START( sengoku2 )
ROM_REGION( 0x100000, "maincpu", 0 )
- ROM_LOAD16_WORD_SWAP( "040-p1.p1", 0x000000, 0x100000, CRC(6dde02c2) SHA1(e432e63feb88c71629ec96aa84650dcfe356a551) )
+ ROM_LOAD16_WORD_SWAP( "040-p1.p1", 0x000000, 0x100000, CRC(6dde02c2) SHA1(e432e63feb88c71629ec96aa84650dcfe356a551) ) /* TC538200 */
NEO_SFIX_128K( "040-s1.s1", CRC(cd9802a3) SHA1(f685d4638f4f68e7e3f101c0c39128454536721b) ) /* TC531000 */
- NEO_BIOS_AUDIO_128K( "040-m1.m1", CRC(d4de4bca) SHA1(ecf604d06f01d40b04e285facef66a6ae2d35661) )
+ NEO_BIOS_AUDIO_128K( "040-m1.m1", CRC(d4de4bca) SHA1(ecf604d06f01d40b04e285facef66a6ae2d35661) ) /* TC531001 */
ROM_REGION( 0x300000, "ymsnd", 0 )
- ROM_LOAD( "040-v1.v1", 0x000000, 0x200000, CRC(71cb4b5d) SHA1(56d9aca1d476c19c7d0f707176a8fed53e0189b7) )
- ROM_LOAD( "040-v2.v2", 0x200000, 0x100000, CRC(c5cece01) SHA1(923a3377dac1919e8c3d9ab316902250caa4785f) )
+ ROM_LOAD( "040-v1.v1", 0x000000, 0x200000, CRC(71cb4b5d) SHA1(56d9aca1d476c19c7d0f707176a8fed53e0189b7) ) /* TC5316200 */
+ // AES has different label, data is the same: 040-v1.v2
+ ROM_LOAD( "040-v2.v2", 0x200000, 0x100000, CRC(c5cece01) SHA1(923a3377dac1919e8c3d9ab316902250caa4785f) ) /* TC538200 */
+ // AES has different label, data is the same: 040-v2.v4
NO_DELTAT_REGION
ROM_REGION( 0x600000, "sprites", 0 )
- ROM_LOAD16_BYTE( "040-c1.c1", 0x000000, 0x100000, CRC(faa8ea99) SHA1(714575e57ea1990612f960ec42b38d2e157ad400) ) /* Plane 0,1 */
+ ROM_LOAD16_BYTE( "040-c1.c1", 0x000000, 0x100000, CRC(faa8ea99) SHA1(714575e57ea1990612f960ec42b38d2e157ad400) ) /* Plane 0,1 */ /* TC5316200 */
ROM_CONTINUE( 0x400000, 0x100000 )
- ROM_LOAD16_BYTE( "040-c2.c2", 0x000001, 0x100000, CRC(87d0ec65) SHA1(23645e0cf859fb4cec3745b3846ca0ef64c689fb) ) /* Plane 2,3 */
+ ROM_LOAD16_BYTE( "040-c2.c2", 0x000001, 0x100000, CRC(87d0ec65) SHA1(23645e0cf859fb4cec3745b3846ca0ef64c689fb) ) /* Plane 2,3 */ /* TC5316200 */
ROM_CONTINUE( 0x400001, 0x100000 )
- ROM_LOAD16_BYTE( "040-c3.c3", 0x200000, 0x080000, CRC(24b5ba80) SHA1(29d58a6b56bd24ee2046a8d45e023b4d7ab7685b) ) /* Plane 0,1 */
- ROM_LOAD16_BYTE( "040-c4.c4", 0x200001, 0x080000, CRC(1c9e9930) SHA1(d017474873750a7602b7708c663d29b25ef7bb63) ) /* Plane 2,3 */
+ ROM_LOAD16_BYTE( "040-c3.c3", 0x200000, 0x080000, CRC(24b5ba80) SHA1(29d58a6b56bd24ee2046a8d45e023b4d7ab7685b) ) /* Plane 0,1 */ /* TC534200 */
+ ROM_LOAD16_BYTE( "040-c4.c4", 0x200001, 0x080000, CRC(1c9e9930) SHA1(d017474873750a7602b7708c663d29b25ef7bb63) ) /* Plane 2,3 */ /* TC534200 */
ROM_END
/****************************************
@@ -1995,6 +2000,7 @@ ROM_START( samshoh ) /* AES VERSION */
ROM_LOAD16_BYTE( "045-c4.c4", 0x400001, 0x200000, CRC(935c62f0) SHA1(0053d40085fac14096b683f4341f65e543b71dc1) ) /* Plane 2,3 */ /* TC5316200 */
ROM_LOAD16_BYTE( "045-c5.c5", 0x800000, 0x080000, CRC(a2bb8284) SHA1(aa118e3b8c062daa219b36758b9a3814c08c69dc) ) /* Plane 0,1 */ /* TC534200 */
ROM_LOAD16_BYTE( "045-c6.c6", 0x800001, 0x080000, CRC(4fa71252) SHA1(afe374a9d1f2d955a59efe7b6196b89e021b164c) ) /* Plane 2,3 */ /* TC534200 */
+ /* also found AES set with C6 on TC538200; label is 045-C61.C6 */
ROM_END
/****************************************
@@ -2167,7 +2173,7 @@ ROM_START( ncommand )
ROM_REGION( 0x180000, "ymsnd", 0 )
ROM_LOAD( "050-v1.v1", 0x000000, 0x100000, CRC(23c3ab42) SHA1(b6c59bb180f1aa34c95f3ec923f3aafb689d57b0) ) /* CXK388000 */
- ROM_LOAD( "050-v2.v2", 0x100000, 0x080000, CRC(80b8a984) SHA1(950cf0e78ceffa4037663f1086fbbc88588f49f2) ) /* CXK388000 */
+ ROM_LOAD( "050-v2.v2", 0x100000, 0x080000, CRC(80b8a984) SHA1(950cf0e78ceffa4037663f1086fbbc88588f49f2) ) /* CXK384000 */
NO_DELTAT_REGION
@@ -2296,8 +2302,8 @@ ROM_END
ROM_START( wh1ha )
ROM_REGION( 0x100000, "maincpu", 0 )
- ROM_LOAD16_WORD_SWAP( "053-p1_a.p1", 0x000000, 0x080000, CRC(ed29fde2) SHA1(52b8ca5b804f786f95e1dfb348d8c7b82f1d4ddf) )
- ROM_LOAD16_WORD_SWAP( "053-p2_a.p2", 0x080000, 0x080000, CRC(98f2b158) SHA1(a64e1425970eb53cc910891db39973dee3d54ccc) )
+ ROM_LOAD16_WORD_SWAP( "053-p1_a.p1", 0x000000, 0x080000, CRC(ed29fde2) SHA1(52b8ca5b804f786f95e1dfb348d8c7b82f1d4ddf) ) /* D27C4000 */
+ ROM_LOAD16_WORD_SWAP( "053-p2_a.p2", 0x080000, 0x080000, CRC(98f2b158) SHA1(a64e1425970eb53cc910891db39973dee3d54ccc) ) /* D27C4000 */
/* Correct chip labels for p1 and p2 unknown */
NEO_SFIX_128K( "053-s1.s1", CRC(8c2c2d6b) SHA1(87fa79611c6f8886dcc8766814829c669c65b40f) ) /* TC531000 */
@@ -2967,8 +2973,7 @@ ROM_END
BANK 2 NOT USED
BANK 3 NOT USED
****************************************/
-
- ROM_START( b2b )
+ROM_START( b2b )
ROM_REGION( 0x100000, "maincpu", 0 )
ROM_LOAD16_WORD_SWAP( "071.p1", 0x000000, 0x080000, CRC(7687197d) SHA1(4bb9cb7819807f7a7e1f85f1c4faac4a2f8761e8) )
@@ -2979,6 +2984,8 @@ ROM_END
ROM_REGION( 0x100000, "ymsnd", 0 )
ROM_LOAD( "071.v1", 0x000000, 0x100000, CRC(50feffb0) SHA1(00127dae0130889995bfa7560bc4b0662f74fba5) )
+ NO_DELTAT_REGION
+
ROM_REGION( 0x400000, "sprites", 0 )
ROM_LOAD16_BYTE( "071.c1", 0x000000, 0x200000, CRC(23d84a7a) SHA1(9034658ad40e2c45558abc3db312aa2764102fc4) ) /* Plane 0,1 */
ROM_LOAD16_BYTE( "071.c2", 0x000001, 0x200000, CRC(ce7b6248) SHA1(ad1cd5adae5c151e183ff88b68afe10f7009f48e) ) /* Plane 2,3 */
@@ -3321,7 +3328,8 @@ ROM_START( pbobblen ) /* MVS ONLY RELEASE */
NEO_SFIX_128K( "d96-04.s1", CRC(9caae538) SHA1(cf2d90a7c1a42107c0bb8b9a61397634286dbe0a) ) /* mask rom TC531000 */
- NEO_BIOS_AUDIO_128K( "d96-06.m1", CRC(f424368a) SHA1(5e5bbcaeb82bed2ee17df08f005ca20ad1030723) ) /* mask rom TC531001 */
+ NEO_BIOS_AUDIO_128K( "d96-06.m1", CRC(f424368a) SHA1(5e5bbcaeb82bed2ee17df08f005ca20ad1030723) ) /* M27C1001 */
+ /* M1 on eprom with sticker; label is D96-06 */
ROM_REGION( 0x380000, "ymsnd", 0 )
ROM_LOAD( "068-v1.v1", 0x000000, 0x100000, CRC(2ced86df) SHA1(d6b73d1f31efbd74fb745200d4dade5f80b71541) ) /* unused */ /* mask rom TC538200 */
@@ -3336,8 +3344,8 @@ ROM_START( pbobblen ) /* MVS ONLY RELEASE */
ROM_LOAD16_BYTE( "068-c2.c2", 0x000001, 0x100000, CRC(20912873) SHA1(2df8766b531e47ffc30457e41c63b83557b4f468) ) /* unused */ /* mask rom TC538200 */
ROM_LOAD16_BYTE( "068-c3.c3", 0x200000, 0x100000, CRC(4b641ba1) SHA1(7a9c42a30163eda455f7bde2302402b1a5de7178) ) /* unused */ /* mask rom TC538200 */
ROM_LOAD16_BYTE( "068-c4.c4", 0x200001, 0x100000, CRC(35072596) SHA1(4150a21041f06514c97592bd8af686504b06e187) ) /* unused */ /* mask rom TC538200 */
- ROM_LOAD16_BYTE( "d96-02.c5", 0x400000, 0x80000, CRC(e89ad494) SHA1(69c9ea415773af94ac44c48af05d55ada222b138) ) /* Plane 0,1 */ /* mask rom TC534200 */
- ROM_LOAD16_BYTE( "d96-03.c6", 0x400001, 0x80000, CRC(4b42d7eb) SHA1(042ae50a528cea21cf07771d3915c57aa16fd5af) ) /* Plane 2,3 */ /* mask rom TC534200 */
+ ROM_LOAD16_BYTE( "d96-02.c5", 0x400000, 0x080000, CRC(e89ad494) SHA1(69c9ea415773af94ac44c48af05d55ada222b138) ) /* Plane 0,1 */ /* mask rom TC534200 */
+ ROM_LOAD16_BYTE( "d96-03.c6", 0x400001, 0x080000, CRC(4b42d7eb) SHA1(042ae50a528cea21cf07771d3915c57aa16fd5af) ) /* Plane 2,3 */ /* mask rom TC534200 */
ROM_END
/****************************************
@@ -3489,6 +3497,7 @@ ROM_START( samsho3 ) /* MVS VERSION */
ROM_LOAD16_WORD_SWAP( "087-epr.ep4", 0x180000, 0x080000, CRC(53e60c58) SHA1(f975e81cab6322d3260348402721c673023259fa) ) /* M27C4002 */
/* P's on eprom, correct chip label unknown */
ROM_LOAD16_WORD_SWAP( "087-p5.p5", 0x200000, 0x100000, CRC(e86ca4af) SHA1(5246acbab77ac2f232b88b8522187764ff0872f0) ) /* TC538200 */
+ /* also found MVS set with p1 / sp2 on maskrom on PROG board NEO-MVS PROGBK1; chip label are 087-PG1 and 087-P2 */
NEO_SFIX_128K( "087-s1.s1", CRC(74ec7d9f) SHA1(d79c479838a7ca51735a44f91f1968ec5b3c6b91) ) /* TC531000 */
@@ -3985,6 +3994,7 @@ ROM_END
NEO-MVS PROGBK1 / NEO-MVS CHA256
NEO-MVS PROGBK1 / NEO-MVS CHA256B
. NGH-201
+ NEO-AEG PROGBK1Y / NEO-AEG CHA256RY
****************************************/
ROM_START( mslug )
@@ -4018,6 +4028,7 @@ ROM_END
ROM_START( puzzledp ) /* MVS ONLY RELEASE */
ROM_REGION( 0x100000, "maincpu", 0 )
ROM_LOAD16_WORD_SWAP( "202-p1.p1", 0x000000, 0x080000, CRC(2b61415b) SHA1(0e3e4faf2fd6e63407425e1ac788003e75aeeb4f) ) /* TC534200 */
+ /* also found set with p1 on eprom with sticker; label is 202-P1 */
NEO_SFIX_128K( "202-s1.s1", CRC(cd19264f) SHA1(531be2305cd56d332fb7a53ab924214ade34a9e8) ) /* TC531000 */
@@ -4280,7 +4291,7 @@ ROM_END
ROM_START( kof96h ) /* AES VERSION */
ROM_REGION( 0x300000, "maincpu", 0 )
- ROM_LOAD16_WORD_SWAP( "214-pg1.p1", 0x000000, 0x100000, CRC(bd3757c9) SHA1(35392a044117e46c088ff0fdd07d69a3faa4f96e) )
+ ROM_LOAD16_WORD_SWAP( "214-pg1.p1", 0x000000, 0x100000, CRC(bd3757c9) SHA1(35392a044117e46c088ff0fdd07d69a3faa4f96e) ) /* mask rom TC538200 */
ROM_LOAD16_WORD_SWAP( "214-p2.sp2", 0x100000, 0x200000, CRC(002ccb73) SHA1(3ae8df682c75027ca82db25491021eeba00a267e) ) /* TC5316200 */
NEO_SFIX_128K( "214-s1.s1", CRC(1254cbdb) SHA1(fce5cf42588298711a3633e9c9c1d4dcb723ac76) ) /* TC531000 */
@@ -4343,6 +4354,7 @@ ROM_END
NEO-MVS PROGTOP / NEO-MVS CHA256
. ??H-216
NEO-AEG PROGTOP2Y / NEO-AEG CHA256BY
+ NEO-AEG PROGTOP2Y / NEO-AEG CHA256[B]
****************************************/
ROM_START( kizuna )
@@ -4563,15 +4575,16 @@ ROM_END
NEO-MVS PROGBK1 / NEO-MVS CHA256B
NEO-MVS PROGBK1 / NEO-MVS CHA256
. NGH-221
+ NEO-AEG PROGBK1Y / NEO-AEG CHA256RY
****************************************/
ROM_START( magdrop2 )
ROM_REGION( 0x100000, "maincpu", 0 )
ROM_LOAD16_WORD_SWAP( "221-p1.p1", 0x000000, 0x80000, CRC(7be82353) SHA1(08ab39f52b893591c13a7d7aa26b20ce86e9ddf5) ) /* mask rom TC534200 */
- NEO_SFIX_128K( "221-s1.s1", CRC(2a4063a3) SHA1(0e09a7d88d85b1a2100888f4211960ea56ef978b) ) /* mask rom TC531000 */
+ NEO_SFIX_128K( "221-s1.s1", CRC(2a4063a3) SHA1(0e09a7d88d85b1a2100888f4211960ea56ef978b) ) /* TC531000 */
- NEO_BIOS_AUDIO_128K( "221-m1.m1", CRC(bddae628) SHA1(02c77e6aaaed43e39778bf83a3184e7c21db63d4) ) /* mask rom TC531001 */
+ NEO_BIOS_AUDIO_128K( "221-m1.m1", CRC(bddae628) SHA1(02c77e6aaaed43e39778bf83a3184e7c21db63d4) ) /* TC531001 */
ROM_REGION( 0x200000, "ymsnd", 0 )
ROM_LOAD( "221-v1.v1", 0x000000, 0x200000, CRC(7e5e53e4) SHA1(72b063b2d4acaaf72a20d14ad5bfc90cb64d3fed) ) /* mask rom TC5316200 */
@@ -4579,14 +4592,15 @@ ROM_START( magdrop2 )
NO_DELTAT_REGION
ROM_REGION( 0x800000, "sprites", 0 )
- ROM_LOAD16_BYTE( "221-c1.c1", 0x000000, 0x400000, CRC(1f862a14) SHA1(1253e8b65d863d552d00dbdbfc5c168f5fc7edd1) ) /* Plane 0,1 */ /* mask rom TC5332205 */
- ROM_LOAD16_BYTE( "221-c2.c2", 0x000001, 0x400000, CRC(14b90536) SHA1(e0d41f6b84d8261729f154b44ddd95c9b9c0714a) ) /* Plane 2,3 */ /* mask rom TC5332205 */
+ ROM_LOAD16_BYTE( "221-c1.c1", 0x000000, 0x400000, CRC(1f862a14) SHA1(1253e8b65d863d552d00dbdbfc5c168f5fc7edd1) ) /* Plane 0,1 */ /* TC5332205 */
+ ROM_LOAD16_BYTE( "221-c2.c2", 0x000001, 0x400000, CRC(14b90536) SHA1(e0d41f6b84d8261729f154b44ddd95c9b9c0714a) ) /* Plane 2,3 */ /* TC5332205 */
ROM_END
/****************************************
ID-0222
. NGM-222
NEO-MVS PROGBK1 / NEO-MVS CHA256B
+ NEO-MVS PROGBK1 / NEO-MVS CHA256
. NGH-222
NEO-AEG PROGBK1Y / NEO-AEG CHA256RY
****************************************/
@@ -4749,6 +4763,7 @@ ROM_START( wakuwak7 )
ROM_REGION( 0x300000, "maincpu", 0 )
ROM_LOAD16_WORD_SWAP( "225-p1.p1", 0x000000, 0x100000, CRC(b14da766) SHA1(bdffd72ff705fc6b085a4026217bac1c4bc93163) ) /* TC538200 */
ROM_LOAD16_WORD_SWAP( "225-p2.sp2", 0x100000, 0x200000, CRC(fe190665) SHA1(739d9a8fc2da34381654d9e291141eacc210ae5c) ) /* TC5316200 */
+ /* also found Korean MVS set with ep1 /ep2 on eprom and sp2 on TC5316200 on NEO-MVS PROGBK1; correct chip label for eproms unknown */
NEO_SFIX_128K( "225-s1.s1", CRC(71c4b4b5) SHA1(9410f13807f01082dc86f2d84051be4bed8e9f7c) ) /* TC531000 */
@@ -5017,7 +5032,7 @@ ROM_START( lastblad ) /* MVS VERSION */
ROM_LOAD16_WORD_SWAP( "234-p1.p1", 0x000000, 0x100000, CRC(e123a5a3) SHA1(a3ddabc00feeb54272b145246612ad4632b0e413) ) /* TC538200 */
ROM_LOAD16_WORD_SWAP( "234-p2.sp2", 0x100000, 0x400000, CRC(0fdc289e) SHA1(1ff31c0b0f4f9ddbedaf4bcf927faaae81892ec7) ) /* TC5332205 */
/* also found sets with p1 / sp2 / ep1 / ep2 / m1 on eprom with sticker */
- /* chip label is 0234-P1, 0234-SP2, 0234-EP1, 0234-EP2 and 0234-M1 */
+ /* chip labels for eproms are 0234-P1, 0234-SP2, 0234-EP1, 0234-EP2 and 0234-M1 */
NEO_SFIX_128K( "234-s1.s1", CRC(95561412) SHA1(995de272f572fd08d909d3d0af4251b9957b3640) ) /* TC531000 */
@@ -5124,28 +5139,28 @@ ROM_END
ROM_START( irrmaze ) /* MVS ONLY RELEASE */
ROM_REGION( 0x200000, "maincpu", 0 )
- ROM_LOAD16_WORD_SWAP( "236-p1.p1", 0x100000, 0x100000, CRC(4c2ff660) SHA1(4a0cbd09044648ff9ec67723729f16d422c34bda) )
+ ROM_LOAD16_WORD_SWAP( "236-p1.p1", 0x100000, 0x100000, CRC(4c2ff660) SHA1(4a0cbd09044648ff9ec67723729f16d422c34bda) ) /* TC5316200 */
ROM_CONTINUE( 0x000000, 0x100000 )
- NEO_SFIX_128K( "236-s1.s1", CRC(5d1ca640) SHA1(40a9668a1742a44597a07ce72273d17119815637) )
+ NEO_SFIX_128K( "236-s1.s1", CRC(5d1ca640) SHA1(40a9668a1742a44597a07ce72273d17119815637) ) /* TC531000 */
ROM_REGION16_BE( 0x20000, "mainbios", 0 )
/* special BIOS with trackball support, we only have one Irritating Maze bios and thats asia */
ROM_LOAD16_WORD_SWAP("236-bios.sp1", 0x00000, 0x020000, CRC(853e6b96) SHA1(de369cb4a7df147b55168fa7aaf0b98c753b735e) )
ROM_REGION( 0x30000, "audiocpu", 0 )
- ROM_LOAD( "236-m1.m1", 0x00000, 0x20000, CRC(880a1abd) SHA1(905afa157aba700e798243b842792e50729b19a0) )
+ ROM_LOAD( "236-m1.m1", 0x00000, 0x20000, CRC(880a1abd) SHA1(905afa157aba700e798243b842792e50729b19a0) ) /* TC531001 */
ROM_RELOAD( 0x10000, 0x20000 )
ROM_REGION( 0x200000, "ymsnd", 0 )
- ROM_LOAD( "236-v1.v1", 0x000000, 0x200000, CRC(5f89c3b4) SHA1(dc8fd561cf8dfdd41696dcf14ea8d2d0ac4eec4b) )
+ ROM_LOAD( "236-v1.v1", 0x000000, 0x200000, CRC(5f89c3b4) SHA1(dc8fd561cf8dfdd41696dcf14ea8d2d0ac4eec4b) ) /* TC5316200 */
ROM_REGION( 0x100000, "ymsnd.deltat", 0 )
- ROM_LOAD( "236-v2.v2", 0x000000, 0x100000, CRC(1e843567) SHA1(30d63887b4900571025b3077b9e41099a59c3ad9) )
+ ROM_LOAD( "236-v2.v2", 0x000000, 0x100000, CRC(1e843567) SHA1(30d63887b4900571025b3077b9e41099a59c3ad9) ) /* TC538200 */
ROM_REGION( 0x0800000, "sprites", 0 )
- ROM_LOAD16_BYTE( "236-c1.c1", 0x000000, 0x400000, CRC(c1d47902) SHA1(727001c34f979226fc8f581113ce2aaac4fc0d42) ) /* Plane 0,1 */
- ROM_LOAD16_BYTE( "236-c2.c2", 0x000001, 0x400000, CRC(e15f972e) SHA1(6a329559c57a67be73a6733513b59e9e6c8d61cc) ) /* Plane 2,3 */
+ ROM_LOAD16_BYTE( "236-c1.c1", 0x000000, 0x400000, CRC(c1d47902) SHA1(727001c34f979226fc8f581113ce2aaac4fc0d42) ) /* Plane 0,1 */ /* TC5332205 */
+ ROM_LOAD16_BYTE( "236-c2.c2", 0x000001, 0x400000, CRC(e15f972e) SHA1(6a329559c57a67be73a6733513b59e9e6c8d61cc) ) /* Plane 2,3 */ /* TC5332205 */
ROM_END
/****************************************
@@ -5206,7 +5221,7 @@ ROM_END
ROM_START( shocktroa ) /* MVS ONLY RELEASE */
ROM_REGION( 0x500000, "maincpu", 0 )
- ROM_LOAD16_WORD_SWAP( "238-pg1.p1", 0x000000, 0x100000, CRC(efedf8dc) SHA1(f638df9bf7aa7d514ee2bccfc7f2adbf39ca83fc) ) /* mask rom TC538200 */
+ ROM_LOAD16_WORD_SWAP( "238-pg1.p1", 0x000000, 0x100000, CRC(efedf8dc) SHA1(f638df9bf7aa7d514ee2bccfc7f2adbf39ca83fc) ) /* TC538200 */
ROM_LOAD16_WORD_SWAP( "238-p2.sp2", 0x100000, 0x400000, CRC(5b4a09c5) SHA1(de04036cba2da4bb2da73d902d1822b82b4f67a9) ) /* TC5332205 */
NEO_SFIX_128K( "238-s1.s1", CRC(1f95cedb) SHA1(adfa74868147fd260481e4c387d254d3b6de83f4) ) /* TC531000 */
@@ -5326,7 +5341,7 @@ ROM_END
ROM_START( rbff2k ) /* KOREAN VERSION */
ROM_REGION( 0x500000, "maincpu", 0 )
- ROM_LOAD16_WORD_SWAP( "140-p1k.p1", 0x000000, 0x100000, CRC(965edee1) SHA1(7f4b947b19ccfee32fc73e4fd89645eb313b5c77) ) /* mask rom TC538200 */
+ ROM_LOAD16_WORD_SWAP( "140-p1k.p1", 0x000000, 0x100000, CRC(965edee1) SHA1(7f4b947b19ccfee32fc73e4fd89645eb313b5c77) ) /* TC538200 */
ROM_LOAD16_WORD_SWAP( "240-p2.sp2", 0x100000, 0x400000, CRC(960aa88d) SHA1(3d9e785891871af90313f178dca2724633406674) ) /* TC5332205 */
NEO_SFIX_128K( "240-s1.s1", CRC(da3b40de) SHA1(e6bf74e057ac6fe1f249a7547f13ba7fbc694561) ) /* TC531000 */
@@ -5780,7 +5795,7 @@ ROM_END
Non SMA protected version found on:
NEO-MVS PROGBK1 / NEO-MVS CHAFIO (1999.6.14) (NEO-CMC 7042)
. NGH-2510
- NEO-AEG PROGLBA (1999.7.6) / NEO-AEG CHAFIO (1999.8.10) (NEO-CMC 7042)
+ NEO-AEG PROGLBA (NEO-SMA) (1999.7.6) / NEO-AEG CHAFIO (1999.8.10) (NEO-CMC 7042)
****************************************/
ROM_START( kof99 ) /* Original Version - Encrypted Code & GFX */ /* MVS VERSION */
@@ -5833,7 +5848,7 @@ ROM_START( kof99h ) /* Original Version - Encrypted Code & GFX */ /* AES VERSION
ROM_REGION( 0x20000, "fixedbios", 0 )
ROM_LOAD( "sfix.sfix", 0x000000, 0x20000, CRC(c2ea0cfd) SHA1(fd4a618cdcdbf849374f0a50dd8efe9dbab706c3) )
- NEO_BIOS_AUDIO_128K( "251-m1.m1", CRC(5e74539c) SHA1(6f49a9343cbd026b2c6720ff3fa2e5b1f85e80da) ) /* TC531001 */
+ NEO_BIOS_AUDIO_128K( "251-m1.m1", CRC(5e74539c) SHA1(6f49a9343cbd026b2c6720ff3fa2e5b1f85e80da) ) /* TC531001DP */
ROM_REGION( 0x0e00000, "ymsnd", 0 )
ROM_LOAD( "251-v1.v1", 0x000000, 0x400000, CRC(ef2eecc8) SHA1(8ed13b9db92dba3124bc5ba66e3e275885ece24a) ) /* TC5332204 */
@@ -5859,10 +5874,10 @@ ROM_START( kof99e ) /* Original Version - Encrypted Code & GFX */
ROM_REGION( 0x900000, "maincpu", 0 )
ROM_LOAD16_WORD_SWAP( "ka.neo-sma", 0x0c0000, 0x040000, CRC(7766d09e) SHA1(4e0a49d1ad669a62676cb30f527c6590cde80194) ) /* stored in the custom chip */
/* Is the SMA for this set correct? A set with this layout and a SMA.KB is known */
- ROM_LOAD16_WORD_SWAP( "251-ep1.p1", 0x100000, 0x200000, CRC(1e8d692d) SHA1(eea1aa8c0a17f089ac14831889c36535e559072c) )
- ROM_LOAD16_WORD_SWAP( "251-ep2.p2", 0x300000, 0x200000, CRC(d6206e5a) SHA1(0e1100d03c40c6d5cfa899d009e319ae73fce6b8) )
- ROM_LOAD16_WORD_SWAP( "251-ep3.p3", 0x500000, 0x200000, CRC(d58c3ef8) SHA1(f927d90d55b49944f448d6286e0cb913cc70ade1) )
- ROM_LOAD16_WORD_SWAP( "251-ep4.p4", 0x700000, 0x200000, CRC(52de02ae) SHA1(f16924ff8eef92da7716236a6a055e22e090a02b) )
+ ROM_LOAD16_WORD_SWAP( "251-ep1.p1", 0x100000, 0x200000, CRC(1e8d692d) SHA1(eea1aa8c0a17f089ac14831889c36535e559072c) ) /* M27C160 */
+ ROM_LOAD16_WORD_SWAP( "251-ep2.p2", 0x300000, 0x200000, CRC(d6206e5a) SHA1(0e1100d03c40c6d5cfa899d009e319ae73fce6b8) ) /* M27C160 */
+ ROM_LOAD16_WORD_SWAP( "251-ep3.p3", 0x500000, 0x200000, CRC(d58c3ef8) SHA1(f927d90d55b49944f448d6286e0cb913cc70ade1) ) /* M27C160 */
+ ROM_LOAD16_WORD_SWAP( "251-ep4.p4", 0x700000, 0x200000, CRC(52de02ae) SHA1(f16924ff8eef92da7716236a6a055e22e090a02b) ) /* M27C160 */
ROM_Y_ZOOM
@@ -5896,8 +5911,8 @@ ROM_END
ROM_START( kof99k ) /* Original Version - Encrypted GFX */ /* KOREAN VERSION */
ROM_REGION( 0x500000, "maincpu", 0 )
- ROM_LOAD16_WORD_SWAP( "152-p1.p1", 0x000000, 0x100000, CRC(f2c7ddfa) SHA1(d592eecc53d442c55c2f26a6a721fdf2924d2a5b) )
- ROM_LOAD16_WORD_SWAP( "152-p2.sp2", 0x100000, 0x400000, CRC(274ef47a) SHA1(98654b68cc85c19d4a90b46f3110f551fa2e5357) )
+ ROM_LOAD16_WORD_SWAP( "152-p1.p1", 0x000000, 0x100000, CRC(f2c7ddfa) SHA1(d592eecc53d442c55c2f26a6a721fdf2924d2a5b) ) /* TC538200 */
+ ROM_LOAD16_WORD_SWAP( "152-p2.sp2", 0x100000, 0x400000, CRC(274ef47a) SHA1(98654b68cc85c19d4a90b46f3110f551fa2e5357) ) /* TC5332205 */
ROM_Y_ZOOM
@@ -5907,7 +5922,7 @@ ROM_START( kof99k ) /* Original Version - Encrypted GFX */ /* KOREAN VERSION */
ROM_REGION( 0x20000, "fixedbios", 0 )
ROM_LOAD( "sfix.sfix", 0x000000, 0x20000, CRC(c2ea0cfd) SHA1(fd4a618cdcdbf849374f0a50dd8efe9dbab706c3) )
- NEO_BIOS_AUDIO_128K( "251-m1.m1", CRC(5e74539c) SHA1(6f49a9343cbd026b2c6720ff3fa2e5b1f85e80da) ) /* TC531001 */
+ NEO_BIOS_AUDIO_128K( "251-m1.m1", CRC(5e74539c) SHA1(6f49a9343cbd026b2c6720ff3fa2e5b1f85e80da) ) /* TC531001DP */
ROM_REGION( 0x0e00000, "ymsnd", 0 )
ROM_LOAD( "251-v1.v1", 0x000000, 0x400000, CRC(ef2eecc8) SHA1(8ed13b9db92dba3124bc5ba66e3e275885ece24a) ) /* TC5332204 */
@@ -5968,7 +5983,7 @@ ROM_END
ROM_START( ganryu ) /* Original Version - Encrypted GFX */ /* MVS ONLY RELEASE */
ROM_REGION( 0x200000, "maincpu", 0 )
- ROM_LOAD16_WORD_SWAP( "252-p1.p1", 0x100000, 0x100000, CRC(4b8ac4fb) SHA1(93d90271bff281862b03beba3809cf95a47a1e44) )
+ ROM_LOAD16_WORD_SWAP( "252-p1.p1", 0x100000, 0x100000, CRC(4b8ac4fb) SHA1(93d90271bff281862b03beba3809cf95a47a1e44) ) /* TC5316200 */
ROM_CONTINUE( 0x000000, 0x100000 )
ROM_Y_ZOOM
@@ -5979,17 +5994,17 @@ ROM_START( ganryu ) /* Original Version - Encrypted GFX */ /* MVS ONLY RELEASE *
ROM_REGION( 0x20000, "fixedbios", 0 )
ROM_LOAD( "sfix.sfix", 0x000000, 0x20000, CRC(c2ea0cfd) SHA1(fd4a618cdcdbf849374f0a50dd8efe9dbab706c3) )
- NEO_BIOS_AUDIO_128K( "252-m1.m1", CRC(30cc4099) SHA1(46453b7aac41855a92724a785372f8daf931d8d4) )
+ NEO_BIOS_AUDIO_128K( "252-m1.m1", CRC(30cc4099) SHA1(46453b7aac41855a92724a785372f8daf931d8d4) ) /* TC531001DP */
ROM_REGION( 0x0400000, "ymsnd", 0 )
- ROM_LOAD( "252-v1.v1", 0x000000, 0x400000, CRC(e5946733) SHA1(d5904a50465af03d6ff33399a98f3259721ca0b2) )
+ ROM_LOAD( "252-v1.v1", 0x000000, 0x400000, CRC(e5946733) SHA1(d5904a50465af03d6ff33399a98f3259721ca0b2) ) /* TC5332204 */
NO_DELTAT_REGION
ROM_REGION( 0x1000000, "sprites", 0 )
/* Encrypted */
- ROM_LOAD16_BYTE( "252-c1.c1", 0x0000000, 0x800000, CRC(50ee7882) SHA1(ace0f95407c246d0456341cf2ad8a7668b81df8a) ) /* Plane 0,1 */
- ROM_LOAD16_BYTE( "252-c2.c2", 0x0000001, 0x800000, CRC(62585474) SHA1(b35461598087aa82886af0030c61b26cc064af5f) ) /* Plane 2,3 */
+ ROM_LOAD16_BYTE( "252-c1.c1", 0x0000000, 0x800000, CRC(50ee7882) SHA1(ace0f95407c246d0456341cf2ad8a7668b81df8a) ) /* Plane 0,1 */ /* TC5364205 */
+ ROM_LOAD16_BYTE( "252-c2.c2", 0x0000001, 0x800000, CRC(62585474) SHA1(b35461598087aa82886af0030c61b26cc064af5f) ) /* Plane 2,3 */ /* TC5364205 */
ROM_END
/****************************************
@@ -6043,6 +6058,7 @@ ROM_START( garouh ) /* Original Version - Encrypted GFX */ /* MVS AND AES VERSIO
ROM_LOAD16_WORD_SWAP( "ke.neo-sma", 0x0c0000, 0x040000, CRC(96c72233) SHA1(29e19effd40fdf7e5144332396857f4ad0eff13e) ) /* stored in the custom chip */
ROM_LOAD16_WORD_SWAP( "253-p1.p1", 0x100000, 0x400000, CRC(18ae5d7e) SHA1(bdb58ec9137d8653979b47132f2d10e1cc6aaa24) ) /* mask rom TC5332205 */
ROM_LOAD16_WORD_SWAP( "253-p2.p2", 0x500000, 0x400000, CRC(afffa779) SHA1(ac017986f02277fbcd656b8c02492a3f4216a90e) ) /* mask rom TC5332205 */
+ /* also found AES JP set with ep1 / ep2 / ep3 and ep4 on eproms and KE NEO-SMA with a white marking; chip labels for eproms are 253-EP1, 253-EP2, 253-EP3 and 253-EP4 */
ROM_Y_ZOOM
@@ -6110,8 +6126,8 @@ ROM_END
ROM_START( s1945p ) /* Original Version, Encrypted GFX Roms */ /* MVS ONLY RELEASE */
ROM_REGION( 0x500000, "maincpu", 0 )
- ROM_LOAD16_WORD_SWAP( "254-p1.p1", 0x000000, 0x100000, CRC(ff8efcff) SHA1(dcaeaca573385c172ecc43ee6bee355359091893) )
- ROM_LOAD16_WORD_SWAP( "254-p2.sp2", 0x100000, 0x400000, CRC(efdfd4dd) SHA1(254f3e1b546eed788f7ae919be9d1bf9702148ce) )
+ ROM_LOAD16_WORD_SWAP( "254-p1.p1", 0x000000, 0x100000, CRC(ff8efcff) SHA1(dcaeaca573385c172ecc43ee6bee355359091893) ) /* TC538200 */
+ ROM_LOAD16_WORD_SWAP( "254-p2.sp2", 0x100000, 0x400000, CRC(efdfd4dd) SHA1(254f3e1b546eed788f7ae919be9d1bf9702148ce) ) /* TC5332205 */
ROM_Y_ZOOM
@@ -6121,25 +6137,25 @@ ROM_START( s1945p ) /* Original Version, Encrypted GFX Roms */ /* MVS ONLY RELEA
ROM_REGION( 0x20000, "fixedbios", 0 )
ROM_LOAD( "sfix.sfix", 0x000000, 0x20000, CRC(c2ea0cfd) SHA1(fd4a618cdcdbf849374f0a50dd8efe9dbab706c3) )
- NEO_BIOS_AUDIO_128K( "254-m1.m1", CRC(994b4487) SHA1(a4e645a3ababa48a8325980ff022e04a8b51b017) )
+ NEO_BIOS_AUDIO_128K( "254-m1.m1", CRC(994b4487) SHA1(a4e645a3ababa48a8325980ff022e04a8b51b017) ) /* TC531001DP */
ROM_REGION( 0x1000000, "ymsnd", 0 )
- ROM_LOAD( "254-v1.v1", 0x000000, 0x400000, CRC(844f58fb) SHA1(e59544457be9f21481eac8b5a39b9cbb502f252d) )
- ROM_LOAD( "254-v2.v2", 0x400000, 0x400000, CRC(d9a248f0) SHA1(dd3e0974b753e6f94d0943a002de45668a1b072b) )
- ROM_LOAD( "254-v3.v3", 0x800000, 0x400000, CRC(0b0d2d33) SHA1(f8e76af42a997f36a40f66b39de00f68afe6a89c) )
- ROM_LOAD( "254-v4.v4", 0xc00000, 0x400000, CRC(6d13dc91) SHA1(8433513c0b5aea61939068a25ab90efbe3e44116) )
+ ROM_LOAD( "254-v1.v1", 0x000000, 0x400000, CRC(844f58fb) SHA1(e59544457be9f21481eac8b5a39b9cbb502f252d) ) /* TC5332204 */
+ ROM_LOAD( "254-v2.v2", 0x400000, 0x400000, CRC(d9a248f0) SHA1(dd3e0974b753e6f94d0943a002de45668a1b072b) ) /* TC5332204 */
+ ROM_LOAD( "254-v3.v3", 0x800000, 0x400000, CRC(0b0d2d33) SHA1(f8e76af42a997f36a40f66b39de00f68afe6a89c) ) /* TC5332204 */
+ ROM_LOAD( "254-v4.v4", 0xc00000, 0x400000, CRC(6d13dc91) SHA1(8433513c0b5aea61939068a25ab90efbe3e44116) ) /* TC5332204 */
NO_DELTAT_REGION
ROM_REGION( 0x4000000, "sprites", 0 )
- ROM_LOAD16_BYTE( "254-c1.c1", 0x0000000, 0x800000, CRC(ae6fc8ef) SHA1(544ccdaee8a4a45cdce9483e30852811d2d5f3cc) ) /* Plane 0,1 */
- ROM_LOAD16_BYTE( "254-c2.c2", 0x0000001, 0x800000, CRC(436fa176) SHA1(d70141a91a360a1b1070753086f976608fec38af) ) /* Plane 2,3 */
- ROM_LOAD16_BYTE( "254-c3.c3", 0x1000000, 0x800000, CRC(e53ff2dc) SHA1(31f6aaffe28146d574aa72f14f90a9d968f36bc6) ) /* Plane 0,1 */
- ROM_LOAD16_BYTE( "254-c4.c4", 0x1000001, 0x800000, CRC(818672f0) SHA1(460c6738d0ee5ae440a23fc1434fab53bbb242b5) ) /* Plane 2,3 */
- ROM_LOAD16_BYTE( "254-c5.c5", 0x2000000, 0x800000, CRC(4580eacd) SHA1(feb96eb5e80c9125ddd7836e0939212cd3011c34) ) /* Plane 0,1 */
- ROM_LOAD16_BYTE( "254-c6.c6", 0x2000001, 0x800000, CRC(e34970fc) SHA1(6e43e15e27bc914357f977116ab1e2d98711bb21) ) /* Plane 2,3 */
- ROM_LOAD16_BYTE( "254-c7.c7", 0x3000000, 0x800000, CRC(f2323239) SHA1(5b3e8dd77474203be010ec7363858d806344a320) ) /* Plane 0,1 */
- ROM_LOAD16_BYTE( "254-c8.c8", 0x3000001, 0x800000, CRC(66848c7d) SHA1(24d4ed627940a4cf8129761c1da15556e52e199c) ) /* Plane 2,3 */
+ ROM_LOAD16_BYTE( "254-c1.c1", 0x0000000, 0x800000, CRC(ae6fc8ef) SHA1(544ccdaee8a4a45cdce9483e30852811d2d5f3cc) ) /* Plane 0,1 */ /* TC5364205 */
+ ROM_LOAD16_BYTE( "254-c2.c2", 0x0000001, 0x800000, CRC(436fa176) SHA1(d70141a91a360a1b1070753086f976608fec38af) ) /* Plane 2,3 */ /* TC5364205 */
+ ROM_LOAD16_BYTE( "254-c3.c3", 0x1000000, 0x800000, CRC(e53ff2dc) SHA1(31f6aaffe28146d574aa72f14f90a9d968f36bc6) ) /* Plane 0,1 */ /* TC5364205 */
+ ROM_LOAD16_BYTE( "254-c4.c4", 0x1000001, 0x800000, CRC(818672f0) SHA1(460c6738d0ee5ae440a23fc1434fab53bbb242b5) ) /* Plane 2,3 */ /* TC5364205 */
+ ROM_LOAD16_BYTE( "254-c5.c5", 0x2000000, 0x800000, CRC(4580eacd) SHA1(feb96eb5e80c9125ddd7836e0939212cd3011c34) ) /* Plane 0,1 */ /* TC5364205 */
+ ROM_LOAD16_BYTE( "254-c6.c6", 0x2000001, 0x800000, CRC(e34970fc) SHA1(6e43e15e27bc914357f977116ab1e2d98711bb21) ) /* Plane 2,3 */ /* TC5364205 */
+ ROM_LOAD16_BYTE( "254-c7.c7", 0x3000000, 0x800000, CRC(f2323239) SHA1(5b3e8dd77474203be010ec7363858d806344a320) ) /* Plane 0,1 */ /* TC5364205 */
+ ROM_LOAD16_BYTE( "254-c8.c8", 0x3000001, 0x800000, CRC(66848c7d) SHA1(24d4ed627940a4cf8129761c1da15556e52e199c) ) /* Plane 2,3 */ /* TC5364205 */
ROM_END
/****************************************
@@ -6150,8 +6166,8 @@ ROM_END
ROM_START( preisle2 ) /* Original Version, Encrypted GFX */ /* MVS ONLY RELEASE */
ROM_REGION( 0x500000, "maincpu", 0 )
- ROM_LOAD16_WORD_SWAP( "255-p1.p1", 0x000000, 0x100000, CRC(dfa3c0f3) SHA1(793c6a46f3a794536dc0327a3f3fad20e25ab661) )
- ROM_LOAD16_WORD_SWAP( "255-p2.sp2", 0x100000, 0x400000, CRC(42050b80) SHA1(0981a8295d43b264c2b95e5d7568bdda4e64c976) )
+ ROM_LOAD16_WORD_SWAP( "255-p1.p1", 0x000000, 0x100000, CRC(dfa3c0f3) SHA1(793c6a46f3a794536dc0327a3f3fad20e25ab661) ) /* TC538200 */
+ ROM_LOAD16_WORD_SWAP( "255-p2.sp2", 0x100000, 0x400000, CRC(42050b80) SHA1(0981a8295d43b264c2b95e5d7568bdda4e64c976) ) /* TC5332205 */
ROM_Y_ZOOM
@@ -6161,22 +6177,22 @@ ROM_START( preisle2 ) /* Original Version, Encrypted GFX */ /* MVS ONLY RELEASE
ROM_REGION( 0x20000, "fixedbios", 0 )
ROM_LOAD( "sfix.sfix", 0x000000, 0x20000, CRC(c2ea0cfd) SHA1(fd4a618cdcdbf849374f0a50dd8efe9dbab706c3) )
- NEO_BIOS_AUDIO_128K( "255-m1.m1", CRC(8efd4014) SHA1(5b73809b6e4e49264d281ef3e5004ac8a9de296d) )
+ NEO_BIOS_AUDIO_128K( "255-m1.m1", CRC(8efd4014) SHA1(5b73809b6e4e49264d281ef3e5004ac8a9de296d) ) /* TC531001DP */
ROM_REGION( 0x0600000, "ymsnd", 0 )
- ROM_LOAD( "255-v1.v1", 0x000000, 0x400000, CRC(5a14543d) SHA1(7146ac748f846c7e2d5b0bdcf953892e39b648fe) )
- ROM_LOAD( "255-v2.v2", 0x400000, 0x200000, CRC(6610d91a) SHA1(b2c6786920dc1712e88c3cc26d2c6c3ac2615bf4) )
+ ROM_LOAD( "255-v1.v1", 0x000000, 0x400000, CRC(5a14543d) SHA1(7146ac748f846c7e2d5b0bdcf953892e39b648fe) ) /* TC5332204 */
+ ROM_LOAD( "255-v2.v2", 0x400000, 0x200000, CRC(6610d91a) SHA1(b2c6786920dc1712e88c3cc26d2c6c3ac2615bf4) ) /* TC5316200 */
NO_DELTAT_REGION
ROM_REGION( 0x3000000, "sprites", 0 )
/* Encrypted */
- ROM_LOAD16_BYTE( "255-c1.c1", 0x0000000, 0x800000, CRC(ea06000b) SHA1(1539b12e461fa48301190eb8171bbffff9d984b7) ) /* Plane 0,1 */
- ROM_LOAD16_BYTE( "255-c2.c2", 0x0000001, 0x800000, CRC(04e67d79) SHA1(aadb6ee750da2c14c6eededa2218db95e051a32c) ) /* Plane 2,3 */
- ROM_LOAD16_BYTE( "255-c3.c3", 0x1000000, 0x800000, CRC(60e31e08) SHA1(bd5b81ad9d04cdc4e0df31ac40eca305f98277eb) ) /* Plane 0,1 */
- ROM_LOAD16_BYTE( "255-c4.c4", 0x1000001, 0x800000, CRC(40371d69) SHA1(90011ccc5672ff1b90737cf50c963e71b6217ce3) ) /* Plane 2,3 */
- ROM_LOAD16_BYTE( "255-c5.c5", 0x2000000, 0x800000, CRC(0b2e6adf) SHA1(15c7d9aa8b1ad9a071e6fd0ef0de8a057c23b02e) ) /* Plane 0,1 */
- ROM_LOAD16_BYTE( "255-c6.c6", 0x2000001, 0x800000, CRC(b001bdd3) SHA1(394ba8004644844ee97a120cfda48aeac685af8a) ) /* Plane 2,3 */
+ ROM_LOAD16_BYTE( "255-c1.c1", 0x0000000, 0x800000, CRC(ea06000b) SHA1(1539b12e461fa48301190eb8171bbffff9d984b7) ) /* Plane 0,1 */ /* TC5364205 */
+ ROM_LOAD16_BYTE( "255-c2.c2", 0x0000001, 0x800000, CRC(04e67d79) SHA1(aadb6ee750da2c14c6eededa2218db95e051a32c) ) /* Plane 2,3 */ /* TC5364205 */
+ ROM_LOAD16_BYTE( "255-c3.c3", 0x1000000, 0x800000, CRC(60e31e08) SHA1(bd5b81ad9d04cdc4e0df31ac40eca305f98277eb) ) /* Plane 0,1 */ /* TC5364205 */
+ ROM_LOAD16_BYTE( "255-c4.c4", 0x1000001, 0x800000, CRC(40371d69) SHA1(90011ccc5672ff1b90737cf50c963e71b6217ce3) ) /* Plane 2,3 */ /* TC5364205 */
+ ROM_LOAD16_BYTE( "255-c5.c5", 0x2000000, 0x800000, CRC(0b2e6adf) SHA1(15c7d9aa8b1ad9a071e6fd0ef0de8a057c23b02e) ) /* Plane 0,1 */ /* TC5364205 */
+ ROM_LOAD16_BYTE( "255-c6.c6", 0x2000001, 0x800000, CRC(b001bdd3) SHA1(394ba8004644844ee97a120cfda48aeac685af8a) ) /* Plane 2,3 */ /* TC5364205 */
ROM_END
/****************************************
@@ -6231,8 +6247,8 @@ ROM_START( mslug3h ) /* Original Version - Encrypted GFX */ /* revision 2000.3.1
ROM_REGION( 0x500000, "maincpu", 0 )
ROM_LOAD16_WORD_SWAP( "256-ph1.p1", 0x000000, 0x100000, CRC(9c42ca85) SHA1(7a8f77a89867b889295ae9b9dfd4ba28f02d234d) )
ROM_LOAD16_WORD_SWAP( "256-ph2.sp2", 0x100000, 0x400000, CRC(1f3d8ce8) SHA1(08b05a8abfb86ec09a5e758d6273acf1489961f9) )
- /* also found AES set with p1 / p2 on maskrom on NEO-AEG PROGLBA (NEO-SMA); chip labels is 256-PG1 and 256-PG2 */
- /* The SMA for this release has a pink color marking */
+ /* also found AES sets with p1 / p2 on maskrom on NEO-AEG PROGLBA (NEO-SMA); chip labels are 256-PG1 and 256-PG2 */
+ /* The SMA on those sets has a pink or green color marking */
ROM_Y_ZOOM
@@ -6359,7 +6375,7 @@ ROM_END
ROM_START( bangbead ) /* Original Version - Encrypted GFX */ /* MVS ONLY RELEASE */
ROM_REGION( 0x200000, "maincpu", 0 )
- ROM_LOAD16_WORD_SWAP( "259-p1.p1", 0x100000, 0x100000, CRC(88a37f8b) SHA1(566db84850fad5e8fe822e8bba910a33e083b550) )
+ ROM_LOAD16_WORD_SWAP( "259-p1.p1", 0x100000, 0x100000, CRC(88a37f8b) SHA1(566db84850fad5e8fe822e8bba910a33e083b550) ) /* TC5316200 */
ROM_CONTINUE( 0x000000, 0x100000 )
ROM_Y_ZOOM
@@ -6370,18 +6386,18 @@ ROM_START( bangbead ) /* Original Version - Encrypted GFX */ /* MVS ONLY RELEASE
ROM_REGION( 0x20000, "fixedbios", 0 )
ROM_LOAD( "sfix.sfix", 0x000000, 0x20000, CRC(c2ea0cfd) SHA1(fd4a618cdcdbf849374f0a50dd8efe9dbab706c3) )
- NEO_BIOS_AUDIO_128K( "259-m1.m1", CRC(85668ee9) SHA1(7d3f51710cf90c097cd3faaeeef10ceb85cbb3e8) )
+ NEO_BIOS_AUDIO_128K( "259-m1.m1", CRC(85668ee9) SHA1(7d3f51710cf90c097cd3faaeeef10ceb85cbb3e8) ) /* TC531001DP */
ROM_REGION( 0x500000, "ymsnd", 0 )
- ROM_LOAD( "259-v1.v1", 0x000000, 0x400000, CRC(088eb8ab) SHA1(608306e35501dd7d382d9f96b28e7550aa896a03) )
- ROM_LOAD( "259-v2.v2", 0x400000, 0x100000, CRC(97528fe9) SHA1(8f5eddbb3a9a225492479d1a44801f3916c8e791) )
+ ROM_LOAD( "259-v1.v1", 0x000000, 0x400000, CRC(088eb8ab) SHA1(608306e35501dd7d382d9f96b28e7550aa896a03) ) /* TC533204 */
+ ROM_LOAD( "259-v2.v2", 0x400000, 0x100000, CRC(97528fe9) SHA1(8f5eddbb3a9a225492479d1a44801f3916c8e791) ) /* TC538200 */
NO_DELTAT_REGION
ROM_REGION( 0x1000000, "sprites", 0 )
/* Encrypted */
- ROM_LOAD16_BYTE( "259-c1.c1", 0x0000000, 0x800000, CRC(1f537f74) SHA1(b8ef691e92191c20a5ed4f20a75cca3c7383bca6) ) /* Plane 0,1 */
- ROM_LOAD16_BYTE( "259-c2.c2", 0x0000001, 0x800000, CRC(0efd98ff) SHA1(d350315d3c7f26d638458e5ccf2126069a4c7a5b) ) /* Plane 2,3 */
+ ROM_LOAD16_BYTE( "259-c1.c1", 0x0000000, 0x800000, CRC(1f537f74) SHA1(b8ef691e92191c20a5ed4f20a75cca3c7383bca6) ) /* Plane 0,1 */ /* TC5364205 */
+ ROM_LOAD16_BYTE( "259-c2.c2", 0x0000001, 0x800000, CRC(0efd98ff) SHA1(d350315d3c7f26d638458e5ccf2126069a4c7a5b) ) /* Plane 2,3 */ /* TC5364205 */
ROM_END
/****************************************
@@ -6392,7 +6408,7 @@ ROM_END
ROM_START( nitd ) /* Original Version - Encrypted GFX */ /* MVS ONLY RELEASE */
ROM_REGION( 0x100000, "maincpu", 0 )
- ROM_LOAD16_WORD_SWAP( "260-p1.p1", 0x000000, 0x080000, CRC(61361082) SHA1(441f3f41c1aa752c0e0a9a0b1d92711d9e636b85) )
+ ROM_LOAD16_WORD_SWAP( "260-p1.p1", 0x000000, 0x080000, CRC(61361082) SHA1(441f3f41c1aa752c0e0a9a0b1d92711d9e636b85) ) /* TC534200 */
ROM_Y_ZOOM
@@ -6402,17 +6418,17 @@ ROM_START( nitd ) /* Original Version - Encrypted GFX */ /* MVS ONLY RELEASE */
ROM_REGION( 0x20000, "fixedbios", 0 )
ROM_LOAD( "sfix.sfix", 0x000000, 0x20000, CRC(c2ea0cfd) SHA1(fd4a618cdcdbf849374f0a50dd8efe9dbab706c3) )
- NEO_BIOS_AUDIO_512K( "260-m1.m1", CRC(6407c5e5) SHA1(d273e154cc905b63205a17a1a6d419cac3485a92) )
+ NEO_BIOS_AUDIO_512K( "260-m1.m1", CRC(6407c5e5) SHA1(d273e154cc905b63205a17a1a6d419cac3485a92) ) /* TC534000 */
ROM_REGION( 0x0400000, "ymsnd", 0 )
- ROM_LOAD( "260-v1.v1", 0x000000, 0x400000, CRC(24b0480c) SHA1(d769e621be52a5cd2e2568891b5f95a48268e1e0) )
+ ROM_LOAD( "260-v1.v1", 0x000000, 0x400000, CRC(24b0480c) SHA1(d769e621be52a5cd2e2568891b5f95a48268e1e0) ) /* TC5332204 */
NO_DELTAT_REGION
ROM_REGION( 0x1000000, "sprites", 0 )
/* Encrypted */
- ROM_LOAD16_BYTE( "260-c1.c1", 0x0000000, 0x800000, CRC(147b0c7f) SHA1(a647c3a2f6d146ff47521c1d39f58830601f5781) ) /* Plane 0,1 */
- ROM_LOAD16_BYTE( "260-c2.c2", 0x0000001, 0x800000, CRC(d2b04b0d) SHA1(ce4322e6cfacb627fe997efe81018861e21d3c27) ) /* Plane 2,3 */
+ ROM_LOAD16_BYTE( "260-c1.c1", 0x0000000, 0x800000, CRC(147b0c7f) SHA1(a647c3a2f6d146ff47521c1d39f58830601f5781) ) /* Plane 0,1 */ /* TC5364205 */
+ ROM_LOAD16_BYTE( "260-c2.c2", 0x0000001, 0x800000, CRC(d2b04b0d) SHA1(ce4322e6cfacb627fe997efe81018861e21d3c27) ) /* Plane 2,3 */ /* TC5364205 */
ROM_END
/****************************************
@@ -6427,6 +6443,7 @@ ROM_START( sengoku3 ) /* Original Version - Encrypted GFX */
ROM_REGION( 0x200000, "maincpu", 0 )
ROM_LOAD16_WORD_SWAP( "261-ph1.p1", 0x100000, 0x100000, CRC(e0d4bc0a) SHA1(8df366097f224771ca6d1aa5c1691cd46776cd12) ) /* mask rom TC5316200 */
ROM_CONTINUE( 0x000000, 0x100000 )
+ /* also found MVS set with p1 label 261-PG1; older revision? */
ROM_Y_ZOOM
@@ -6744,7 +6761,7 @@ ROM_END
/****************************************
ID-0267
. ??M-2670
- NEO-MVS PROGBK2 (NEO-PCM2 SNK) / NEO-MVS CHAFIO (1999.6.14) (NEO-CMC 7050)
+ NEO-MVS PROGBK2 (2000.3.21) (NEO-PCM2 SNK) / NEO-MVS CHAFIO (1999.6.14) (NEO-CMC 7050)
****************************************/
ROM_START( pnyaa ) /* Encrypted Set */ /* MVS ONLY RELEASE */
@@ -6822,7 +6839,7 @@ ROM_START( mslug5h ) /* Encrypted Set */ /* AES release of the game but is also
ROM_REGION( 0x800000, "maincpu", 0 )
ROM_LOAD32_WORD_SWAP( "268-p1c.p1", 0x000000, 0x400000, CRC(3636690a) SHA1(e0da714b4bdc6efffe1250ded02ebddb3ab6d7b3) )
ROM_LOAD32_WORD_SWAP( "268-p2c.p2", 0x000002, 0x400000, CRC(8dfc47a2) SHA1(27d618cfbd0107a4d2a836797e967b39d2eb4851) )
- /* also found AES set with p1 / p2 on maskrom; chip labels is 268-P1CR2 and 268-P2CR2 */
+ /* also found AES set with p1 / p2 on maskrom and m1 on M27C4001 eprom with sticker; chip labels are 268-P1CR2, 268-P2CR2 and 268-M1 */
ROM_Y_ZOOM
@@ -6857,9 +6874,9 @@ ROM_END
/****************************************
ID-0269
. NGM-2690
- NEO-MVS PROGBK3R (NEO-PCM2 PLAYMORE) (NEO-PVC) / NEO-MVS CHAFIO (2003.7.24) (NEO-CMC 7050)
+ NEO-MVS PROGBK3R (2003.9.2) (NEO-PCM2 PLAYMORE) (NEO-PVC) / NEO-MVS CHAFIO (2003.7.24) (NEO-CMC 7050)
. NGH-2690
- NEO-AEG PROGBK3R (NEO-PCM2 PLAYMORE) (NEO-PVC) / NEO-AEG CHAFIO (2003.7.24) (NEO-CMC 7050)
+ NEO-AEG PROGBK3R (2003.8.29) (NEO-PCM2 PLAYMORE) (NEO-PVC) / NEO-AEG CHAFIO (2003.7.24) (NEO-CMC 7050)
****************************************/
ROM_START( svc ) /* Encrypted Set */ /* MVS AND AES VERSION */
@@ -7059,6 +7076,7 @@ ROM_END
. NGM-2720
NEO-MVS PROGBK2S (2003.10.18) (NEO-PCM2 PLAYMORE) / NEO-MVS CHAFIO (2003.7.24) (NEO-CMC 7050)
. NGH-2720
+ NEO-AEG PROGBK2S (2003.10.16) (NEO-PCM2 PLAYMORE) / NEO-MVS CHAFIO (2003.7.24) (NEO-CMC 7050)
****************************************/
ROM_START( samsh5sp ) /* Encrypted Set */ /* MVS VERSION */
@@ -7197,7 +7215,7 @@ ROM_END
ROM_START( jockeygp ) /* MVS ONLY RELEASE */
/* Officially licensed? Cart has a holographic 'SNK' sticker applied */
ROM_REGION( 0x200000, "maincpu", 0 )
- ROM_LOAD16_WORD_SWAP( "008-epr.p1", 0x000000, 0x100000, CRC(2fb7f388) SHA1(e3c9b03944b4c10cf5081caaf9c8be1f08c06493) )
+ ROM_LOAD16_WORD_SWAP( "008-epr.p1", 0x000000, 0x100000, CRC(2fb7f388) SHA1(e3c9b03944b4c10cf5081caaf9c8be1f08c06493) ) /* M27C160 */
/* P on eprom, correct chip label unknown */
ROM_FILL( 0x100000, 0x100000, 0xff )
@@ -7260,7 +7278,7 @@ ROM_END
ROM_START( vliner ) /* MVS ONLY RELEASE */
/* Officially licensed? Cart has a holographic 'SNK' sticker applied */
ROM_REGION( 0x100000, "maincpu", 0 )
- ROM_LOAD16_WORD_SWAP( "epr.p1", 0x000000, 0x080000, CRC(72a2c043) SHA1(b34bcc10ff33e4465126a6865fe8bf6b6a3d6cee) )
+ ROM_LOAD16_WORD_SWAP( "epr.p1", 0x000000, 0x080000, CRC(72a2c043) SHA1(b34bcc10ff33e4465126a6865fe8bf6b6a3d6cee) ) /* AM27C400 */
/* P on eprom, correct chip label unknown */
NEO_SFIX_128K( "s-1.s1", CRC(972d8c31) SHA1(41f09ef28a3791668ea304c74b8b06c117a50e9a) )
@@ -7303,8 +7321,8 @@ ROM_END
*************************************/
/****************************************
- NSBP ??
- PROGRAM CART REVISION 2.0 (C) VEKTORLOGIC 2004 / GRAPHICS CART REVISION 1.2 (C) VEKTORLOGIC 2004
+ NSBP V1.0U
+ PROGRAM CART REVISION 2.0 COPYRIGHT VEKTORLOGIC (C) 2004 / GRAPHICS CART REVISION 1.2 COPYRIGHT VEKTORLOGIC (C) 2004
****************************************/
// this doesn't boot, protection like kof98?
@@ -7349,7 +7367,7 @@ ROM_END
NEO-MVH MVOBR 2003.8.4
****************************************/
-ROM_START( ms5pcb ) /* Encrypted Set */
+ROM_START( ms5pcb ) /* Encrypted Set, JAMMA PCB */
ROM_REGION( 0x800000, "maincpu", 0 )
ROM_LOAD32_WORD_SWAP( "268-p1r.p1", 0x000000, 0x400000, CRC(d0466792) SHA1(880819933d997fab398f91061e9dbccb959ae8a1) )
ROM_LOAD32_WORD_SWAP( "268-p2r.p2", 0x000002, 0x400000, CRC(fbf6b61e) SHA1(9ec743d5988b5e3183f37f8edf45c72a8c0c893e) )
@@ -9592,7 +9610,7 @@ DRIVER_INIT_MEMBER(neogeo_noslot_state,kf2k3pcb)
NEOGEO ROM-cart:2004/07/15
****************************************************************************/
-/* YEAR NAME PARENT MACHINE INPUT INIT MONITOR */
+/* YEAR NAME PARENT MACHINE INPUT INIT MONITOR */
/* SNK */
GAME( 1990, nam1975, neogeo, neogeo_noslot, neogeo, neogeo_state, neogeo, ROT0, "SNK", "NAM-1975 (NGM-001)(NGH-001)", MACHINE_SUPPORTS_SAVE )
GAME( 1990, bstars, neogeo, neogeo_noslot, neogeo, neogeo_state, neogeo, ROT0, "SNK", "Baseball Stars Professional (NGM-002)", MACHINE_SUPPORTS_SAVE )
@@ -9910,6 +9928,7 @@ GAME( 2004, sbp, neogeo, neogeo_noslot, neogeo, neogeo_noslot_state,
// GunLord (c)2012 - MVS/AES
// Neo XYX (c)2013 - MVS/AES
// Razion (c)2014 - MVS/AES?
+// Kraut Buster (c)2016 - MVS/AES
/* N.C.I - LE CORTEX */
// Treasure of the Caribbean (c)2011 - AES only (no credits system if ran on an MVS, Freeplay)
diff --git a/src/mame/drivers/nibble.cpp b/src/mame/drivers/nibble.cpp
new file mode 100644
index 00000000000..edb798c94e5
--- /dev/null
+++ b/src/mame/drivers/nibble.cpp
@@ -0,0 +1,362 @@
+// license:BSD-3-Clause
+// copyright-holders:Roberto Fresca
+/*************************************************************************
+
+ Lucky 9, Nibble.
+
+ Driver by Roberto Fresca.
+
+ Seems some sort of gambling game with playing cards (no poker)
+ and girls graphics...
+
+
+**************************************************************************
+
+ Specs:
+
+ 1x UM6845 (U67).
+ 1x AY38910A/p (U75).
+
+ 3x HY6264P-12 (U153, U154, U25).
+ 2x IMSG171P-50G (U32, U104).
+
+ 2 Chips with no markings!
+
+ 8x 64K Graphics ROMs (U139, U141, U149, U147, U137, U143, U145, U152).
+ 1x 64K Program ROM (U123).
+ 1x 128K unknown ROM (U138).
+
+ 1x TI LF347N (U158) Operational Amplifier.
+ 1x LM380N (U82) 2.5W Audio Power Amplifier.
+
+ 2x XTAL - 11.98135 KDS9C
+ 2x 8 DIP switches banks.
+ 1x 3.6V lithium battery.
+
+
+**************************************************************************
+
+ Tech notes...
+
+ About the unknown ICs:
+ DIP64 (U101) CPU with Xtal tied to pins 30 % 31. --> TMS9900? (ROM 9)
+ DIP40 (U64) CPU or sound IC driving 128k (ROM 10) data? (pin 20 tied to GND)
+
+
+*************************************************************************/
+
+
+#define MASTER_CLOCK XTAL_12MHz
+
+#include "emu.h"
+#include "cpu/tms9900/tms9980a.h"
+//#include "cpu/tms9900/tms9900.h"
+#include "sound/ay8910.h"
+#include "video/mc6845.h"
+
+
+class nibble_state : public driver_device
+{
+public:
+ nibble_state(const machine_config &mconfig, device_type type, const char *tag)
+ : driver_device(mconfig, type, tag),
+ m_videoram(*this, "videoram"),
+ m_maincpu(*this, "maincpu"),
+ m_gfxdecode(*this, "gfxdecode") { }
+
+ required_shared_ptr<UINT8> m_videoram;
+ tilemap_t *m_bg_tilemap;
+ DECLARE_WRITE8_MEMBER(nibble_videoram_w);
+ TILE_GET_INFO_MEMBER(get_bg_tile_info);
+
+ virtual void machine_start() override;
+ virtual void machine_reset() override;
+ virtual void video_start() override;
+ DECLARE_PALETTE_INIT(nibble);
+ UINT32 screen_update_nibble(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
+ INTERRUPT_GEN_MEMBER(nibble_interrupt);
+ required_device<cpu_device> m_maincpu;
+ required_device<gfxdecode_device> m_gfxdecode;
+};
+
+
+/*************************
+* Video Hardware *
+*************************/
+
+WRITE8_MEMBER(nibble_state::nibble_videoram_w)
+{
+ m_videoram[offset] = data;
+ m_bg_tilemap->mark_tile_dirty(offset);
+}
+
+
+TILE_GET_INFO_MEMBER(nibble_state::get_bg_tile_info)
+{
+/* - bits -
+ 7654 3210
+ ---- ---- bank select.
+ ---- ---- color code.
+ ---- ---- seems unused.
+*/
+ int code = m_videoram[tile_index];
+
+ SET_TILE_INFO_MEMBER(0 /* bank */, code, 0 /* color */, 0);
+}
+
+void nibble_state::video_start()
+{
+ m_bg_tilemap = &machine().tilemap().create(m_gfxdecode, tilemap_get_info_delegate(FUNC(nibble_state::get_bg_tile_info),this), TILEMAP_SCAN_ROWS, 8, 8, 32, 32);
+}
+
+UINT32 nibble_state::screen_update_nibble(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect)
+{
+ m_bg_tilemap->draw(screen, bitmap, cliprect, 0, 0);
+ return 0;
+}
+
+PALETTE_INIT_MEMBER(nibble_state, nibble)
+{
+}
+
+
+/**************************
+* Read / Write Handlers *
+**************************/
+
+INTERRUPT_GEN_MEMBER(nibble_state::nibble_interrupt)
+{
+}
+
+
+/************************
+* Start & Reset *
+************************/
+
+void nibble_state::machine_start()
+{
+}
+
+
+void nibble_state::machine_reset()
+{
+}
+
+
+/*************************
+* Memory Map Information *
+*************************/
+
+static ADDRESS_MAP_START( nibble_map, AS_PROGRAM, 8, nibble_state )
+ ADDRESS_MAP_GLOBAL_MASK(0x3fff)
+ AM_RANGE(0x0000, 0xbfff) AM_ROM
+ AM_RANGE(0xc000, 0xc3ff) AM_WRITE(nibble_videoram_w) AM_SHARE("videoram") // placeholder
+// AM_RANGE(0xff00, 0xff01) AM_DEVWRITE("crtc", mc6845_device, address_w)
+// AM_RANGE(0xff02, 0xff03) AM_DEVREADWRITE("crtc", mc6845_device, register_r, register_w)
+ADDRESS_MAP_END
+
+
+static ADDRESS_MAP_START( nibble_cru_map, AS_IO, 8, nibble_state )
+ADDRESS_MAP_END
+
+
+/*************************
+* Input Ports *
+*************************/
+
+static INPUT_PORTS_START( nibble )
+ PORT_START("IN0")
+ PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_OTHER ) PORT_CODE(KEYCODE_1) PORT_NAME("IN0-1")
+ PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_OTHER ) PORT_CODE(KEYCODE_2) PORT_NAME("IN0-2")
+ PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_OTHER ) PORT_CODE(KEYCODE_3) PORT_NAME("IN0-3")
+ PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_OTHER ) PORT_CODE(KEYCODE_4) PORT_NAME("IN0-4")
+ PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_OTHER ) PORT_CODE(KEYCODE_5) PORT_NAME("IN0-5")
+ PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_OTHER ) PORT_CODE(KEYCODE_6) PORT_NAME("IN0-6")
+ PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_OTHER ) PORT_CODE(KEYCODE_7) PORT_NAME("IN0-7")
+ PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_OTHER ) PORT_CODE(KEYCODE_8) PORT_NAME("IN0-8")
+
+ PORT_START("IN1")
+ PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_OTHER ) PORT_CODE(KEYCODE_Q) PORT_NAME("IN1-1")
+ PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_OTHER ) PORT_CODE(KEYCODE_W) PORT_NAME("IN1-2")
+ PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_OTHER ) PORT_CODE(KEYCODE_E) PORT_NAME("IN1-3")
+ PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_OTHER ) PORT_CODE(KEYCODE_R) PORT_NAME("IN1-4")
+ PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_OTHER ) PORT_CODE(KEYCODE_T) PORT_NAME("IN1-5")
+ PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_OTHER ) PORT_CODE(KEYCODE_Y) PORT_NAME("IN1-6")
+ PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_OTHER ) PORT_CODE(KEYCODE_U) PORT_NAME("IN1-7")
+ PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_OTHER ) PORT_CODE(KEYCODE_I) PORT_NAME("IN1-8")
+
+ PORT_START("IN2")
+ PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_OTHER ) PORT_CODE(KEYCODE_A) PORT_NAME("IN2-1")
+ PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_OTHER ) PORT_CODE(KEYCODE_S) PORT_NAME("IN2-2")
+ PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_OTHER ) PORT_CODE(KEYCODE_D) PORT_NAME("IN2-3")
+ PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_OTHER ) PORT_CODE(KEYCODE_F) PORT_NAME("IN2-4")
+ PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_OTHER ) PORT_CODE(KEYCODE_G) PORT_NAME("IN2-5")
+ PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_OTHER ) PORT_CODE(KEYCODE_H) PORT_NAME("IN2-6")
+ PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_OTHER ) PORT_CODE(KEYCODE_J) PORT_NAME("IN2-7")
+ PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_OTHER ) PORT_CODE(KEYCODE_K) PORT_NAME("IN2-8")
+
+ PORT_START("IN3")
+ PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_OTHER ) PORT_CODE(KEYCODE_Z) PORT_NAME("IN3-1")
+ PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_OTHER ) PORT_CODE(KEYCODE_X) PORT_NAME("IN3-2")
+ PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_OTHER ) PORT_CODE(KEYCODE_C) PORT_NAME("IN3-3")
+ PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_OTHER ) PORT_CODE(KEYCODE_V) PORT_NAME("IN3-4")
+ PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_OTHER ) PORT_CODE(KEYCODE_B) PORT_NAME("IN3-5")
+ PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_OTHER ) PORT_CODE(KEYCODE_N) PORT_NAME("IN3-6")
+ PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_OTHER ) PORT_CODE(KEYCODE_M) PORT_NAME("IN3-7")
+ PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_OTHER ) PORT_CODE(KEYCODE_L) PORT_NAME("IN3-8")
+
+ PORT_START("IN4")
+ PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_OTHER ) PORT_CODE(KEYCODE_1_PAD) PORT_NAME("IN4-1")
+ PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_OTHER ) PORT_CODE(KEYCODE_2_PAD) PORT_NAME("IN4-2")
+ PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_OTHER ) PORT_CODE(KEYCODE_3_PAD) PORT_NAME("IN4-3")
+ PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_OTHER ) PORT_CODE(KEYCODE_4_PAD) PORT_NAME("IN4-4")
+ PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_OTHER ) PORT_CODE(KEYCODE_5_PAD) PORT_NAME("IN4-5")
+ PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_OTHER ) PORT_CODE(KEYCODE_6_PAD) PORT_NAME("IN4-6")
+ PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_OTHER ) PORT_CODE(KEYCODE_7_PAD) PORT_NAME("IN4-7")
+ PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_OTHER ) PORT_CODE(KEYCODE_8_PAD) PORT_NAME("IN4-8")
+
+ PORT_START("DSW1")
+ PORT_DIPNAME( 0x01, 0x01, DEF_STR( Unknown ) )
+ PORT_DIPSETTING( 0x01, DEF_STR( Off ) )
+ PORT_DIPSETTING( 0x00, DEF_STR( On ) )
+ PORT_DIPNAME( 0x02, 0x02, DEF_STR( Unknown ) )
+ PORT_DIPSETTING( 0x02, DEF_STR( Off ) )
+ PORT_DIPSETTING( 0x00, DEF_STR( On ) )
+ PORT_DIPNAME( 0x04, 0x04, DEF_STR( Unknown ) )
+ PORT_DIPSETTING( 0x04, DEF_STR( Off ) )
+ PORT_DIPSETTING( 0x00, DEF_STR( On ) )
+ PORT_DIPNAME( 0x08, 0x08, DEF_STR( Unknown ) )
+ PORT_DIPSETTING( 0x08, DEF_STR( Off ) )
+ PORT_DIPSETTING( 0x00, DEF_STR( On ) )
+ PORT_DIPNAME( 0x10, 0x10, DEF_STR( Unknown ) )
+ PORT_DIPSETTING( 0x10, DEF_STR( Off ) )
+ PORT_DIPSETTING( 0x00, DEF_STR( On ) )
+ PORT_DIPNAME( 0x20, 0x20, DEF_STR( Unknown ) )
+ PORT_DIPSETTING( 0x20, DEF_STR( Off ) )
+ PORT_DIPSETTING( 0x00, DEF_STR( On ) )
+ PORT_DIPNAME( 0x40, 0x40, DEF_STR( Unknown ) )
+ PORT_DIPSETTING( 0x40, DEF_STR( Off ) )
+ PORT_DIPSETTING( 0x00, DEF_STR( On ) )
+ PORT_DIPNAME( 0x80, 0x80, DEF_STR( Unknown ) )
+ PORT_DIPSETTING( 0x80, DEF_STR( Off ) )
+ PORT_DIPSETTING( 0x00, DEF_STR( On ) )
+
+ PORT_START("DSW2")
+ PORT_DIPNAME( 0x01, 0x01, DEF_STR( Unknown ) )
+ PORT_DIPSETTING( 0x01, DEF_STR( Off ) )
+ PORT_DIPSETTING( 0x00, DEF_STR( On ) )
+ PORT_DIPNAME( 0x02, 0x02, DEF_STR( Unknown ) )
+ PORT_DIPSETTING( 0x02, DEF_STR( Off ) )
+ PORT_DIPSETTING( 0x00, DEF_STR( On ) )
+ PORT_DIPNAME( 0x04, 0x04, DEF_STR( Unknown ) )
+ PORT_DIPSETTING( 0x04, DEF_STR( Off ) )
+ PORT_DIPSETTING( 0x00, DEF_STR( On ) )
+ PORT_DIPNAME( 0x08, 0x08, DEF_STR( Unknown ) )
+ PORT_DIPSETTING( 0x08, DEF_STR( Off ) )
+ PORT_DIPSETTING( 0x00, DEF_STR( On ) )
+ PORT_DIPNAME( 0x10, 0x10, DEF_STR( Unknown ) )
+ PORT_DIPSETTING( 0x10, DEF_STR( Off ) )
+ PORT_DIPSETTING( 0x00, DEF_STR( On ) )
+ PORT_DIPNAME( 0x20, 0x20, DEF_STR( Unknown ) )
+ PORT_DIPSETTING( 0x20, DEF_STR( Off ) )
+ PORT_DIPSETTING( 0x00, DEF_STR( On ) )
+ PORT_DIPNAME( 0x40, 0x40, DEF_STR( Unknown ) )
+ PORT_DIPSETTING( 0x40, DEF_STR( Off ) )
+ PORT_DIPSETTING( 0x00, DEF_STR( On ) )
+ PORT_DIPNAME( 0x80, 0x80, DEF_STR( Unknown ) )
+ PORT_DIPSETTING( 0x80, DEF_STR( Off ) )
+ PORT_DIPSETTING( 0x00, DEF_STR( On ) )
+
+INPUT_PORTS_END
+
+
+/*************************
+* Graphics Layouts *
+*************************/
+
+static const gfx_layout charlayout =
+{
+ 8,8,
+ RGN_FRAC(1,8),
+ 8,
+ { RGN_FRAC(0,8), RGN_FRAC(1,8), RGN_FRAC(2,8), RGN_FRAC(3,8), RGN_FRAC(4,8), RGN_FRAC(5,8), RGN_FRAC(6,8), RGN_FRAC(7,8) },
+ { 0, 1, 2, 3, 4, 5, 6, 7 },
+ { 0*8, 1*8, 2*8, 3*8, 4*8, 5*8, 6*8, 7*8 },
+ 8*8
+};
+
+
+/******************************
+* Graphics Decode Information *
+******************************/
+
+static GFXDECODE_START( nibble )
+ GFXDECODE_ENTRY( "gfx", 0, charlayout, 0, 16 )
+GFXDECODE_END
+
+
+/*************************
+* Machine Drivers *
+*************************/
+
+static MACHINE_CONFIG_START( nibble, nibble_state )
+
+ // CPU should be switched to TMS9900
+ MCFG_TMS99xx_ADD("maincpu", TMS9980A, MASTER_CLOCK/4, nibble_map, nibble_cru_map)
+ MCFG_CPU_VBLANK_INT_DRIVER("screen", nibble_state, nibble_interrupt)
+
+ /* video hardware */
+ MCFG_SCREEN_ADD("screen", RASTER)
+ MCFG_SCREEN_REFRESH_RATE(60)
+ MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
+ MCFG_SCREEN_SIZE(32*8, 32*8)
+ MCFG_SCREEN_VISIBLE_AREA(0*8, 32*8-1, 0*8, 32*8-1)
+ MCFG_SCREEN_UPDATE_DRIVER(nibble_state, screen_update_nibble)
+ MCFG_SCREEN_PALETTE("palette")
+
+ MCFG_GFXDECODE_ADD("gfxdecode", "palette", nibble)
+
+ MCFG_PALETTE_ADD("palette", 256)
+ MCFG_PALETTE_INIT_OWNER(nibble_state, nibble)
+
+ MCFG_MC6845_ADD("crtc", MC6845, "screen", MASTER_CLOCK/8) /* guess */
+ MCFG_MC6845_SHOW_BORDER_AREA(false)
+ MCFG_MC6845_CHAR_WIDTH(8)
+
+MACHINE_CONFIG_END
+
+
+/*************************
+* Rom Load *
+*************************/
+
+ROM_START( l9nibble )
+ ROM_REGION( 0x10000, "maincpu", 0 )
+ ROM_LOAD( "09.U123", 0x00000, 0x10000, CRC(dfef685d) SHA1(0aeb4257e408e8549df629a0cdb5f2b6790e32de) ) // tms9900 code?
+
+ ROM_REGION( 0x80000, "gfx", 0 )
+ ROM_LOAD( "01.u139", 0x00000, 0x10000, CRC(aba06e58) SHA1(5841beec122613eed2ba9f48cb1d51bfa0ff450c) )
+ ROM_LOAD( "02.u141", 0x10000, 0x10000, CRC(a1e5d6d1) SHA1(8ec85b0544dd75bcb13600bae503ad2b20978281) )
+ ROM_LOAD( "03.u149", 0x20000, 0x10000, CRC(ae66f77c) SHA1(6c9e98cc00b72252cb238f14686c0faef47134df) )
+ ROM_LOAD( "04.u147", 0x30000, 0x10000, CRC(f1864094) SHA1(b439f9e8c2cc4575f9edbda45b9e724257015a73) )
+ ROM_LOAD( "05.u137", 0x40000, 0x10000, CRC(2e8ae9de) SHA1(5f2831f71b351e34df82af37041c9aa815eb372c) )
+ ROM_LOAD( "06.u143", 0x50000, 0x10000, CRC(8a56f324) SHA1(68790a12ca57c999bd7b7f26adc206aab3c06976) )
+ ROM_LOAD( "07.u145", 0x60000, 0x10000, CRC(4f757912) SHA1(63e5fc2672552463060680b7a5a94df45f3d4b68) )
+ ROM_LOAD( "08.u152", 0x70000, 0x10000, CRC(4f878ee4) SHA1(215f3ead0c358cc09c21515981cbb0a1e58c2ca6) )
+
+ ROM_REGION( 0x20000, "user", 0 )
+ ROM_LOAD( "10.u138", 0x00000, 0x20000, CRC(ed831d2a) SHA1(ce5c3b24979d220215d7f0e8d50f45550aec15bd) ) // unknown data...
+
+ ROM_REGION( 0x0400, "plds", 0 )
+ ROM_LOAD( "pal16l8acn.u23", 0x0000, 0x0104, NO_DUMP )
+ ROM_LOAD( "pal16l8acn.uxx", 0x0200, 0x0104, NO_DUMP )
+
+ROM_END
+
+
+/*************************
+* Game Drivers *
+*************************/
+
+/* YEAR NAME PARENT MACHINE INPUT STATE INIT ROT COMPANY FULLNAME FLAGS... */
+GAME( 19??, l9nibble, 0, nibble, nibble, driver_device, 0, ROT0, "Nibble", "Lucky 9", MACHINE_NO_SOUND | MACHINE_NOT_WORKING )
diff --git a/src/mame/drivers/nightgal.cpp b/src/mame/drivers/nightgal.cpp
index 2720f071051..1150cc05c45 100644
--- a/src/mame/drivers/nightgal.cpp
+++ b/src/mame/drivers/nightgal.cpp
@@ -6,18 +6,17 @@ Night Gal (c) 1984 Nichibutsu
a.k.a. same Jangou blitter but with NCS CPU for displaying graphics as protection.
-preliminary driver by David Haywood & Angelo Salese
+driver by David Haywood & Angelo Salese
many thanks to Charles MacDonald for the schematics / documentation of this HW.
TODO:
--Night Gal Summer trips illegal opcodes on the NCS side, presumably a CPU bug;
--Fix Sweet Gal/Sexy Gal gfxs if necessary (i.e. if the bugs aren't all caused by irq/nmi
- wrong firing);
--Proper Z80<->MCU comms,many video problems because of that;
--Abstract the video chip to a proper video file and get the name of that chip;
--Minor graphic glitches in Royal Queen (cross hatch test, some little glitches during gameplay),
- presumably due of the unemulated wait states on the comms.
-
+ - Night Gal Summer trips illegal opcodes on the NCS side, needs to check if bit-rotted or encrypted ROM;
+ - Fix Sweet Gal/Sexy Gal gfxs if necessary (i.e. if the bugs aren't all caused by irq/nmi wrong firing);
+ - unemulated WAIT pin for Z80, MCU asserts it when accessing communication RAM
+ - Abstract the video chip to a proper video file and get the name of that chip;
+ - Minor graphic glitches in Royal Queen (cross hatch test, some little glitches during gameplay),
+ presumably due of the unemulated wait states on the comms.
+
*******************************************************************************************/
#include "emu.h"
@@ -91,6 +90,7 @@ public:
DECLARE_WRITE8_MEMBER(mux_w);
DECLARE_READ8_MEMBER(input_1p_r);
DECLARE_READ8_MEMBER(input_2p_r);
+ DECLARE_WRITE8_MEMBER(output_w);
DECLARE_DRIVER_INIT(ngalsumr);
DECLARE_DRIVER_INIT(royalqn);
virtual void machine_start() override;
@@ -121,7 +121,9 @@ protected:
required_ioport m_io_dswb;
required_ioport m_io_dswc;
required_device<palette_device> m_palette;
-
+ void z80_wait_assert_cb();
+ TIMER_CALLBACK_MEMBER( z80_wait_ack_cb );
+
UINT8 nightgal_gfx_nibble( int niboffset );
void plot_nightgal_gfx_pixel( UINT8 pix, int x, int y );
};
@@ -421,13 +423,29 @@ READ8_MEMBER(nightgal_state::royalqn_nsc_blit_r)
return m_blit_raw_data[offset];
}
+TIMER_CALLBACK_MEMBER(nightgal_state::z80_wait_ack_cb)
+{
+ m_maincpu->set_input_line(Z80_INPUT_LINE_WAIT, CLEAR_LINE);
+}
+
+void nightgal_state::z80_wait_assert_cb()
+{
+ m_maincpu->set_input_line(Z80_INPUT_LINE_WAIT, ASSERT_LINE);
+
+ // Note: cycles_to_attotime requires z80 context to work, calling for example m_subcpu as context gives a x4 cycle boost in z80 terms (reads execute_cycles_to_clocks() from NCS?) even if they runs at same speed basically.
+ // TODO: needs a getter that tells a given CPU how many cycles requires an executing opcode for the r/w operation, which stacks with wait state penalty for accessing this specific area.
+ machine().scheduler().timer_set(m_maincpu->cycles_to_attotime(4), timer_expired_delegate(FUNC(nightgal_state::z80_wait_ack_cb),this));
+}
+
READ8_MEMBER(nightgal_state::royalqn_comm_r)
{
+ z80_wait_assert_cb();
return (m_comms_ram[offset] & 0x80) | (0x7f); //bits 6-0 are undefined, presumably open bus
}
WRITE8_MEMBER(nightgal_state::royalqn_comm_w)
{
+ z80_wait_assert_cb();
m_comms_ram[offset] = data & 0x80;
}
@@ -497,6 +515,17 @@ READ8_MEMBER(nightgal_state::input_2p_r)
m_io_pl2_4->read() & m_io_pl2_5->read() & m_io_pl2_6->read()) | coin_port;
}
+WRITE8_MEMBER(nightgal_state::output_w)
+{
+ /*
+ Doesn't match Charles notes?
+ --x- ---- unknown, set by Royal Queen on gameplay
+ ---- -x-- flip screen
+ ---- ---x out counter
+ */
+ machine().bookkeeping().coin_counter_w(0, data & 0x02);
+}
+
/********************************************
*
* Memory Maps
@@ -504,47 +533,6 @@ READ8_MEMBER(nightgal_state::input_2p_r)
********************************************/
/********************************
-* Night Gal
-********************************/
-#ifdef UNUSED_CODE
-static ADDRESS_MAP_START( nightgal_map, AS_PROGRAM, 8, nightgal_state )
- AM_RANGE(0x0000, 0x7fff) AM_ROM
- AM_RANGE(0xc100, 0xc100) AM_READ(nsc_latch_r)
- AM_RANGE(0xc200, 0xc200) AM_WRITE(nsc_latch_w)
- AM_RANGE(0xc300, 0xc30f) AM_WRITE(blit_vregs_w)
- AM_RANGE(0xf000, 0xffff) AM_RAM
-ADDRESS_MAP_END
-
-static ADDRESS_MAP_START( nightgal_io, AS_IO, 8, nightgal_state )
- ADDRESS_MAP_GLOBAL_MASK(0xff)
- AM_RANGE(0x01,0x01) AM_DEVREAD("aysnd", ay8910_device, data_r)
- AM_RANGE(0x02,0x03) AM_DEVWRITE("aysnd", ay8910_device, data_address_w)
-// AM_RANGE(0x10,0x10) AM_WRITE(output_w)
- AM_RANGE(0x10,0x10) AM_READ_PORT("DSWC")
- AM_RANGE(0x11,0x11) AM_READ_PORT("SYSA")
- AM_RANGE(0x12,0x12) AM_READ_PORT("DSWA")
- AM_RANGE(0x13,0x13) AM_READ_PORT("DSWB")
- AM_RANGE(0x11,0x11) AM_WRITE(mux_w)
- AM_RANGE(0x12,0x14) AM_WRITE(blitter_w) //data for the nsc to be processed
-ADDRESS_MAP_END
-
-static ADDRESS_MAP_START( nsc_map, AS_PROGRAM, 8, nightgal_state )
- AM_RANGE(0x0000, 0x007f) AM_RAM
- AM_RANGE(0x0080, 0x0080) AM_READ(blitter_status_r)
- AM_RANGE(0x0081, 0x0083) AM_READ(nsc_blit_r)
- AM_RANGE(0x0080, 0x0086) AM_WRITE(nsc_true_blitter_w)
-
- AM_RANGE(0x00a0, 0x00af) AM_WRITE(blit_true_vregs_w)
-
- AM_RANGE(0x1100, 0x1100) AM_READWRITE(z80_latch_r,z80_latch_w) //irq control?
- AM_RANGE(0x1200, 0x1200) AM_READNOP //flip screen set bit
- AM_RANGE(0x1300, 0x130f) AM_READ(blit_vregs_r)
-// AM_RANGE(0x1000, 0xdfff) AM_ROM AM_REGION("gfx1", 0 )
- AM_RANGE(0xe000, 0xffff) AM_ROM AM_WRITENOP
-ADDRESS_MAP_END
-#endif
-
-/********************************
* Sexy Gal
********************************/
@@ -558,8 +546,7 @@ ADDRESS_MAP_END
static ADDRESS_MAP_START( sexygal_io, AS_IO, 8, nightgal_state )
ADDRESS_MAP_GLOBAL_MASK(0xff)
AM_RANGE(0x00,0x01) AM_DEVREADWRITE("ymsnd", ym2203_device, read, write)
-// AM_RANGE(0x10,0x10) AM_WRITE(output_w)
- AM_RANGE(0x10,0x10) AM_READ_PORT("DSWC")
+ AM_RANGE(0x10,0x10) AM_READ_PORT("DSWC") AM_WRITE(output_w)
AM_RANGE(0x11,0x11) AM_READ_PORT("SYSA") AM_WRITE(mux_w)
AM_RANGE(0x12,0x12) AM_MIRROR(0xe8) AM_READ_PORT("DSWA") AM_WRITE(royalqn_blitter_0_w)
AM_RANGE(0x13,0x13) AM_MIRROR(0xe8) AM_READ_PORT("DSWB") AM_WRITE(royalqn_blitter_1_w)
@@ -594,7 +581,7 @@ static ADDRESS_MAP_START( royalqn_io, AS_IO, 8, nightgal_state )
ADDRESS_MAP_GLOBAL_MASK(0xff)
AM_RANGE(0x01,0x01) AM_MIRROR(0xec) AM_DEVREAD("aysnd", ay8910_device, data_r)
AM_RANGE(0x02,0x03) AM_MIRROR(0xec) AM_DEVWRITE("aysnd", ay8910_device, data_address_w)
- AM_RANGE(0x10,0x10) AM_MIRROR(0xe8) AM_READ_PORT("DSWC") AM_WRITENOP //AM_WRITE(output_w)
+ AM_RANGE(0x10,0x10) AM_MIRROR(0xe8) AM_READ_PORT("DSWC") AM_WRITE(output_w)
AM_RANGE(0x11,0x11) AM_MIRROR(0xe8) AM_READ_PORT("SYSA") AM_WRITE(mux_w)
AM_RANGE(0x12,0x12) AM_MIRROR(0xe8) AM_READ_PORT("DSWA") AM_WRITE(royalqn_blitter_0_w)
AM_RANGE(0x13,0x13) AM_MIRROR(0xe8) AM_READ_PORT("DSWB") AM_WRITE(royalqn_blitter_1_w)
@@ -894,14 +881,9 @@ static MACHINE_CONFIG_START( royalqn, nightgal_state )
MCFG_QUANTUM_PERFECT_CPU("maincpu")
-
/* video hardware */
- /* TODO: blitter clock is MASTER_CLOCK / 4, 320 x 264 pixels, 256 x 224 of visible area */
MCFG_SCREEN_ADD("screen", RASTER)
- MCFG_SCREEN_REFRESH_RATE(60)
- MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
- MCFG_SCREEN_SIZE(256, 256)
- MCFG_SCREEN_VISIBLE_AREA(0, 256-1, 0, 256-1)
+ MCFG_SCREEN_RAW_PARAMS(MASTER_CLOCK/4,320,0,256,264,16,240)
MCFG_SCREEN_UPDATE_DRIVER(nightgal_state, screen_update_nightgal)
MCFG_SCREEN_PALETTE("palette")
@@ -1226,7 +1208,7 @@ ROM_START( ngalsumr )
ROM_LOAD( "10.3v", 0x04000, 0x02000, CRC(31211088) SHA1(960b781c420602be3de66565a030cf5ebdcc2ffb) )
ROM_REGION( 0x10000, "sub", 0 )
- ROM_LOAD( "7.3p", 0x0c000, 0x02000, CRC(20c55a25) SHA1(9dc88cb6c016b594264f7272d4fd5f30567e7c5d) )
+ ROM_LOAD( "7.3p", 0x0c000, 0x02000, BAD_DUMP CRC(20c55a25) SHA1(9dc88cb6c016b594264f7272d4fd5f30567e7c5d) ) // either encrypted or bit-rotted.
ROM_REGION( 0xc000, "samples", 0 )
ROM_LOAD( "1s.ic7", 0x00000, 0x04000, CRC(47ad8a0f) SHA1(e3b1e13f0a5c613bd205338683bef8d005b54830) )
@@ -1258,9 +1240,15 @@ DRIVER_INIT_MEMBER(nightgal_state,ngalsumr)
{
UINT8 *ROM = memregion("sub")->base();
- /* patch protection */
- ROM[0xd6ce] = 0x02;
- ROM[0xd6cf] = 0x02;
+ /* patch blantantly wrong ROM checks */
+ //ROM[0xd6ce] = 0x02;
+ //ROM[0xd6cf] = 0x02;
+ // adcx $05 converted to 0x04 for debug purposes
+ ROM[0xd782] = 0x04;
+ //ROM[0xd655] = 0x20;
+ //ROM[0xd3f9] = 0x02;
+ //ROM[0xd3fa] = 0x02;
+ //ROM[0xd3a0] = 0x02;
}
/* Type 1 HW */
diff --git a/src/mame/drivers/ninjakd2.cpp b/src/mame/drivers/ninjakd2.cpp
index fb7fff7226c..a69e8ff2181 100644
--- a/src/mame/drivers/ninjakd2.cpp
+++ b/src/mame/drivers/ninjakd2.cpp
@@ -172,36 +172,50 @@ TODO:
SAMPLES_START_CB_MEMBER(ninjakd2_state::ninjakd2_init_samples)
{
- const UINT8* const rom = memregion("pcm")->base();
- const int length = memregion("pcm")->bytes();
+ if (m_pcm_region == NULL)
+ {
+ return;
+ }
+
+ const UINT8* const rom = m_pcm_region->base();
+ const int length = m_pcm_region->bytes();
INT16* sampledata = auto_alloc_array(machine(), INT16, length);
// convert unsigned 8-bit PCM to signed 16-bit
for (int i = 0; i < length; ++i)
+ {
sampledata[i] = rom[i] << 7;
+ }
m_sampledata = sampledata;
}
WRITE8_MEMBER(ninjakd2_state::ninjakd2_pcm_play_w)
{
- const UINT8* const rom = memregion("pcm")->base();
-
// only Ninja Kid II uses this
- if (rom)
+ if (m_pcm_region == NULL)
+ {
+ return;
+ }
+
+ const UINT8* const rom = m_pcm_region->base();
+ const int length = m_pcm_region->bytes();
+ const int start = data << 8;
+
+ // find end of sample
+ int end = start;
+ while (end < length && rom[end] != 0x00)
+ {
+ ++end;
+ }
+
+ if (end - start)
+ {
+ m_pcm->start_raw(0, &m_sampledata[start], end - start, NE555_FREQUENCY);
+ }
+ else
{
- const int length = memregion("pcm")->bytes();
- const int start = data << 8;
-
- // find end of sample
- int end = start;
- while (end < length && rom[end] != 0x00)
- ++end;
-
- if (end - start)
- m_pcm->start_raw(0, &m_sampledata[start], end - start, NE555_FREQUENCY);
- else
- m_pcm->stop(0);
+ m_pcm->stop(0);
}
}
@@ -453,6 +467,13 @@ static ADDRESS_MAP_START( ninjakd2_sound_cpu, AS_PROGRAM, 8, ninjakd2_state )
AM_RANGE(0xf000, 0xf000) AM_WRITE(ninjakd2_pcm_play_w)
ADDRESS_MAP_END
+static ADDRESS_MAP_START( ninjakid_nopcm_sound_cpu, AS_PROGRAM, 8, ninjakd2_state )
+ AM_RANGE(0x0000, 0x7fff) AM_ROM
+ AM_RANGE(0x8000, 0xbfff) AM_ROM
+ AM_RANGE(0xc000, 0xc7ff) AM_RAM
+ AM_RANGE(0xe000, 0xe000) AM_READ(soundlatch_byte_r)
+ AM_RANGE(0xf000, 0xf000) AM_NOP
+ADDRESS_MAP_END
static ADDRESS_MAP_START( decrypted_opcodes_map, AS_DECRYPTED_OPCODES, 8, ninjakd2_state )
AM_RANGE(0x0000, 0x7fff) AM_ROM AM_SHARE("decrypted_opcodes")
@@ -972,6 +993,9 @@ static MACHINE_CONFIG_DERIVED( mnight, ninjakd2_core )
MCFG_CPU_MODIFY("maincpu")
MCFG_CPU_PROGRAM_MAP(mnight_main_cpu)
+ MCFG_CPU_MODIFY("soundcpu")
+ MCFG_CPU_PROGRAM_MAP(ninjakid_nopcm_sound_cpu)
+
/* video hardware */
MCFG_VIDEO_START_OVERRIDE(ninjakd2_state,mnight)
@@ -980,11 +1004,13 @@ static MACHINE_CONFIG_DERIVED( mnight, ninjakd2_core )
MACHINE_CONFIG_END
static MACHINE_CONFIG_DERIVED( arkarea, ninjakd2_core )
-
/* basic machine hardware */
MCFG_CPU_MODIFY("maincpu")
MCFG_CPU_PROGRAM_MAP(mnight_main_cpu)
+ MCFG_CPU_MODIFY("soundcpu")
+ MCFG_CPU_PROGRAM_MAP(ninjakid_nopcm_sound_cpu)
+
/* video hardware */
MCFG_VIDEO_START_OVERRIDE(ninjakd2_state,arkarea)
@@ -998,6 +1024,9 @@ static MACHINE_CONFIG_DERIVED( robokid, mnight )
MCFG_CPU_MODIFY("maincpu")
MCFG_CPU_PROGRAM_MAP(robokid_main_cpu)
+ MCFG_CPU_MODIFY("soundcpu")
+ MCFG_CPU_PROGRAM_MAP(ninjakid_nopcm_sound_cpu)
+
/* video hardware */
MCFG_GFXDECODE_MODIFY("gfxdecode", robokid)
MCFG_PALETTE_MODIFY("palette")
@@ -1016,6 +1045,9 @@ static MACHINE_CONFIG_DERIVED( omegaf, robokid )
MCFG_CPU_MODIFY("maincpu")
MCFG_CPU_PROGRAM_MAP(omegaf_main_cpu)
+ MCFG_CPU_MODIFY("soundcpu")
+ MCFG_CPU_PROGRAM_MAP(ninjakid_nopcm_sound_cpu)
+
MCFG_MACHINE_START_OVERRIDE(ninjakd2_state,omegaf)
MCFG_MACHINE_RESET_OVERRIDE(ninjakd2_state,omegaf)
diff --git a/src/mame/drivers/nokia_3310.cpp b/src/mame/drivers/nokia_3310.cpp
index 4510b5796c8..81f15a75ce7 100644
--- a/src/mame/drivers/nokia_3310.cpp
+++ b/src/mame/drivers/nokia_3310.cpp
@@ -1,13 +1,26 @@
-/* Nokia 3310 */
+// license:BSD-3-Clause
+// copyright-holders:Sandro Ronco
+/*
+ Driver for Nokia phones based on Texas Instrument MAD2WD1 (ARM7TDMI + DSP)
-// according to Wikipedia this is based around a MAD2WD1 CPU (based on ARM7TDMI core)
+ Driver based on documentations found here:
+ http://nokix.sourceforge.net/help/blacksphere/sub_050main.htm
+ http://tudor.rdslink.ro/MADos/
+
+*/
-// I can only find update files, I don't know if these can be reconstructed into full ROMs for emulation, or if we need something more??
// if anybody has solid information to aid in the emulation of this (or other phones) please contribute.
#include "emu.h"
#include "cpu/arm7/arm7.h"
#include "cpu/arm7/arm7core.h"
+#include "machine/intelfsh.h"
+#include "video/pcd8544.h"
+#include "debugger.h"
+
+
+#define LOG_MAD2_REGISTER_ACCESS (0)
+#define LOG_CCONT_REGISTER_ACCESS (0)
class noki3310_state : public driver_device
@@ -15,38 +28,857 @@ class noki3310_state : public driver_device
public:
noki3310_state(const machine_config &mconfig, device_type type, const char *tag)
: driver_device(mconfig, type, tag),
- m_maincpu(*this, "maincpu")
+ m_maincpu(*this, "maincpu"),
+ m_pcd8544(*this, "pcd8544"),
+ m_keypad(*this, "COL"),
+ m_pwr(*this, "PWR")
{ }
required_device<cpu_device> m_maincpu;
+ required_device<pcd8544_device> m_pcd8544;
+ required_ioport_array<5> m_keypad;
+ required_ioport m_pwr;
+
+ virtual void machine_start() override;
+ virtual void machine_reset() override;
+
+ PCD8544_SCREEN_UPDATE(pcd8544_screen_update);
+
+ DECLARE_READ8_MEMBER(mad2_io_r);
+ DECLARE_WRITE8_MEMBER(mad2_io_w);
+ DECLARE_READ8_MEMBER(mad2_dspif_r);
+ DECLARE_WRITE8_MEMBER(mad2_dspif_w);
+ DECLARE_READ8_MEMBER(mad2_mcuif_r);
+ DECLARE_WRITE8_MEMBER(mad2_mcuif_w);
+
+ TIMER_CALLBACK_MEMBER(timer0);
+ TIMER_CALLBACK_MEMBER(timer1);
+ TIMER_CALLBACK_MEMBER(timer_watchdog);
+ TIMER_CALLBACK_MEMBER(timer_fiq8);
+
+ DECLARE_READ16_MEMBER(ram_r) { return m_ram[offset] & mem_mask; }
+ DECLARE_WRITE16_MEMBER(ram_w) { COMBINE_DATA(&m_ram[offset]); }
+ DECLARE_READ16_MEMBER(dsp_ram_r);
+ DECLARE_WRITE16_MEMBER(dsp_ram_w);
+ DECLARE_INPUT_CHANGED_MEMBER(key_irq);
+
+private:
+ void assert_fiq(int num);
+ void assert_irq(int num);
+ void ack_fiq(UINT16 mask);
+ void ack_irq(UINT16 mask);
+ void nokia_ccont_w(UINT8 data);
+ UINT8 nokia_ccont_r();
+
+ std::unique_ptr<UINT16[]> m_ram;
+ std::unique_ptr<UINT16[]> m_dsp_ram;
+ UINT8 m_power_on;
+ UINT16 m_fiq_status;
+ UINT16 m_irq_status;
+ UINT16 m_timer1_counter;
+ UINT16 m_timer0_counter;
+
+ emu_timer * m_timer0;
+ emu_timer * m_timer1;
+ emu_timer * m_timer_watchdog;
+ emu_timer * m_timer_fiq8;
+
+ // CCONT
+ struct nokia_ccont
+ {
+ bool dc;
+ UINT8 cmd;
+ UINT8 watchdog;
+ UINT8 regs[0x10];
+ } m_ccont;
+
+ UINT8 m_mad2_regs[0x100];
};
+#if LOG_MAD2_REGISTER_ACCESS
+static const char * nokia_mad2_reg_desc(UINT8 offset)
+{
+ switch(offset)
+ {
+ case 0x00: return "[CTSI] DCT3 ASIC version Primary hardware version (r)";
+ case 0x01: return "[CTSI] MCU reset control register (rw)";
+ case 0x02: return "[CTSI] DSP reset control register (rw)";
+ case 0x03: return "[CTSI] ASIC watchdog write register (w)";
+ case 0x04: return "[CTSI] Sleep clock counter (MSB) (r)";
+ case 0x05: return "[CTSI] Sleep clock counter (LSB) (r)";
+ case 0x06: return "[CTSI] ? (sleep) clock destination (LSB) (r)";
+ case 0x07: return "[CTSI] ? (sleep) clock destination (MSB) (r)";
+ case 0x08: return "[CTSI] FIQ lines active (rw)";
+ case 0x09: return "[CTSI] IRQ lines active (rw)";
+ case 0x0A: return "[CTSI] FIQ lines mask (rw)";
+ case 0x0B: return "[CTSI] IRQ lines mask (rw)";
+ case 0x0C: return "[CTSI] Interrupt control register (rw)";
+ case 0x0D: return "[CTSI] Clock control register (rw)";
+ case 0x0E: return "[CTSI] Interrupt trigger register (r)";
+ case 0x0F: return "[CTSI] Programmable timer clock divider (rw)";
+ case 0x10: return "[CTSI] Programmable timer counter (MSB) (r)";
+ case 0x11: return "[CTSI] Programmable timer counter (LSB) (r)";
+ case 0x12: return "[CTSI] Programmable timer destination (MSB) (rw)";
+ case 0x13: return "[CTSI] Programmable timer destination (LSB) (rw)";
+ case 0x15: return "[PUP] PUP control (rw)";
+ case 0x16: return "[PUP] FIQ 8 (timer?) interrupt control (rw)";
+ case 0x18: return "[PUP] MBUS control (rw)";
+ case 0x19: return "[PUP] MBUS status (rw)";
+ case 0x1A: return "[PUP] MBUS RX/TX (rw)";
+ case 0x1B: return "[PUP] Vibrator (w)";
+ case 0x1C: return "[PUP] Buzzer clock divider (w)";
+ case 0x1E: return "[PUP] Buzzer volume (w)";
+ case 0x20: return "[PUP] McuGenIO signal lines (rw)";
+ case 0x22: return "[PUP] ? (?)";
+ case 0x24: return "[PUP] McuGenIO I/O direction (rw)";
+ case 0x28: return "[UIF/KBGPIO] Keyboard ROW signal lines (rw)";
+ case 0x29: return "[UIF/KBGPIO] Keyboard ROW ?? (rw)";
+ case 0x2A: return "[UIF/KBGPIO] Keyboard COL signal lines (rw)";
+ case 0x2B: return "[UIF/KBGPIO] Keyboard COL ?? (rw)";
+ case 0x2C: return "[UIF/GENSIO] CCont write (w)";
+ case 0x2D: return "[UIF/GENSIO] GENSIO start transaction (w)";
+ case 0x2E: return "[UIF/GENSIO] LCD data write (w)";
+ case 0x32: return "[UIF] CTRL I/O 2 (rw)";
+ case 0x33: return "[UIF] CTRL I/O 3 (rw)";
+ case 0x36: return "[SIMI] SIM UART TxD (w)";
+ case 0x37: return "[SIMI] SIM UART RxD (r)";
+ case 0x38: return "[SIMI] SIM UART Interrupt Identification (r)";
+ case 0x39: return "[SIMI] SIM Control (rw)";
+ case 0x3A: return "[SIMI] SIM Clock Control (rw)";
+ case 0x3B: return "[SIMI] SIM UART TxD Low Water Mark (?)";
+ case 0x3C: return "[SIMI] SIM UART RxD queue fill (r)";
+ case 0x3D: return "[SIMI] SIM RxD flags (?)";
+ case 0x3E: return "[SIMI] SIM TxD flags (?)";
+ case 0x3F: return "[SIMI] SIM UART TxD queue fill (r)";
+ case 0x68: return "[UIF/KBGPIO] Keyboard ROW ?? 2 (rw)";
+ case 0x69: return "[UIF/KBGPIO] Keyboard ROW interrupt (rw)";
+ case 0x6A: return "[UIF/KBGPIO] Keyboard COL ?? 2 (rw)";
+ case 0x6B: return "[UIF/KBGPIO] Keyboard COL interrupt mask (rw)";
+ case 0x6C: return "[UIF/GENSIO] CCont read (r)";
+ case 0x6D: return "[UIF/GENSIO] GENSIO status (r)";
+ case 0x6E: return "[UIF/GENSIO] LCD command write (w)";
+ case 0x6F: return "[UIF/GENSIO] GENSIO ?? (3/SELECT1) (?)";
+ case 0x70: return "[UIF] CTRL I/O 0 I/O direction (1) (rw)";
+ case 0x71: return "[UIF] CTRL I/O 1 I/O direction (1) (rw)";
+ case 0x72: return "[UIF] CTRL I/O 2 I/O direction (1) (rw)";
+ case 0x73: return "[UIF] CTRL I/O 3 I/O direction (1) (rw)";
+ case 0xA8: return "[UIF/KBGPIO] Keyboard ROW I/O direction (rw)";
+ case 0xA9: return "[UIF/KBGPIO] Keyboard ROW ?? 3 (rw)";
+ case 0xAA: return "[UIF/KBGPIO] Keyboard COL I/O direction 0=in 1=out (rw)";
+ case 0xAB: return "[UIF/KBGPIO] Keyboard COL ?? 3 (rw)";
+ case 0xAD: return "[UIF/GENSIO] GENSIO ?? (1/SELECT2) (?)";
+ case 0xAE: return "[UIF/GENSIO] GENSIO ?? (2/SELECT2) (?)";
+ case 0xAF: return "[UIF/GENSIO] GENSIO ?? (3/SELECT2) (?)";
+ case 0xB0: return "[UIF] CTRL I/O 0 I/O direction (2) (rw)";
+ case 0xB1: return "[UIF] CTRL I/O 1 I/O direction (2) (rw)";
+ case 0xB2: return "[UIF] CTRL I/O 2 I/O direction (2) (rw)";
+ case 0xB3: return "[UIF] CTRL I/O 3 I/O direction (2) (rw)";
+ case 0xED: return "[UIF/GENSIO] GENSIO ?? (1/SELECT3) (?)";
+ case 0xEE: return "[UIF/GENSIO] GENSIO ?? (2/SELECT3) (?)";
+ case 0xEF: return "[UIF/GENSIO] GENSIO ?? (3/SELECT3) (?)";
+ case 0xF0: return "[UIF] CTRL I/O 0 input (r)";
+ case 0xF1: return "[UIF] CTRL I/O 1 input (r)";
+ case 0xF2: return "[UIF] CTRL I/O 2 input (r)";
+ case 0xF3: return "[UIF] CTRL I/O 3 input (r)";
+ default: return "<Unknown>";
+ }
+}
+#endif
+
+#if LOG_CCONT_REGISTER_ACCESS
+static const char * nokia_ccont_reg_desc(UINT8 offset)
+{
+ switch(offset)
+ {
+ case 0x0: return "Control register (w)";
+ case 0x1: return "PWM (charger) (w)";
+ case 0x2: return "A/D read (LSB) (r)";
+ case 0x3: return "A/D read (MSB) (rw)";
+ case 0x4: return "?";
+ case 0x5: return "Watchdog (WDReg) (w)";
+ case 0x6: return "RTC enabled (w)";
+ case 0x7: return "RTC second (rw)";
+ case 0x8: return "RTC minute (r)";
+ case 0x9: return "RTC hour (r)";
+ case 0xA: return "RTC day (rw)";
+ case 0xB: return "RTC alarm minute (rw)";
+ case 0xC: return "RTC alarm hour (rw)";
+ case 0xD: return "RTC calibration value (rw)";
+ case 0xE: return "Interrupt lines (rw)";
+ case 0xF: return "Interrupt mask (rw)";
+ default: return "<Unknown>";
+ }
+}
+#endif
+
+void noki3310_state::machine_start()
+{
+ m_ram = std::make_unique<UINT16[]>(0x40000);
+ m_dsp_ram = std::make_unique<UINT16[]>(0x800); // DSP shared RAM
+
+ // allocate timers
+ m_timer0 = machine().scheduler().timer_alloc(timer_expired_delegate(FUNC(noki3310_state::timer0), this));
+ m_timer1 = machine().scheduler().timer_alloc(timer_expired_delegate(FUNC(noki3310_state::timer1), this));
+ m_timer_watchdog = machine().scheduler().timer_alloc(timer_expired_delegate(FUNC(noki3310_state::timer_watchdog), this));
+ m_timer_fiq8 = machine().scheduler().timer_alloc(timer_expired_delegate(FUNC(noki3310_state::timer_fiq8), this));
+}
+
+void noki3310_state::machine_reset()
+{
+ // according to the boot rom disassembly here http://www.nokix.pasjagsm.pl/help/blacksphere/sub_100hardware/sub_arm/sub_bootrom.htm
+ // flash entry point is at 0x200040, we can probably reassemble the above code, but for now this should be enough.
+ m_maincpu->set_state_int(ARM7_R15, 0x200040);
+
+ memset(m_mad2_regs, 0, 0x100);
+ m_mad2_regs[0x01] = 0x01; // power-on flag
+ m_mad2_regs[0x0c] = 0x0a; // disable FIQ and IRQ
+ m_mad2_regs[0x03] = 0xff; // disable MAD2 watchdog
+ m_ccont.watchdog = 0; // disable CCONT watchdog
+ m_ccont.dc = false;
+
+ m_fiq_status = 0;
+ m_irq_status = 0;
+ m_timer1_counter = 0;
+ m_timer0_counter = 0;
+
+ m_timer0->adjust(attotime::from_hz(33055 / (255 + 1)), 0, attotime::from_hz(33055 / (255 + 1))); // programmable through port 0x0f
+ m_timer1->adjust(attotime::from_hz(1057), 0, attotime::from_hz(1057));
+ m_timer_watchdog->adjust(attotime::from_hz(1), 0, attotime::from_hz(1));
+ m_timer_fiq8->adjust(attotime::from_hz(1000), 0, attotime::from_hz(1000));
+
+ // simulate power-on input
+ if (machine().system().name && (machine().system().name[4] == '8' || machine().system().name[4] == '5'))
+ m_power_on = ~0x10;
+ else
+ m_power_on = ~0x02;
+}
+
+void noki3310_state::assert_fiq(int num)
+{
+ if ((m_mad2_regs[0x0c] & 0x01) == 0) // check if FIQ is globally enabled
+ return;
+
+ if (num < 8)
+ {
+ int mask = 1 << num;
+ if (!(m_mad2_regs[0x0a] & mask))
+ {
+ m_maincpu->set_input_line(1, ASSERT_LINE);
+ m_fiq_status |= mask;
+ }
+ }
+ else if (!(m_mad2_regs[0x16] & 0x04))
+ {
+ m_fiq_status |= 0x100;
+ m_maincpu->set_input_line(1, ASSERT_LINE);
+ }
+}
+
+void noki3310_state::assert_irq(int num)
+{
+ if ((m_mad2_regs[0x0c] & 0x04) == 0) // check if IRQ is globally enabled
+ return;
+
+ if (num < 8)
+ {
+ int mask = 1 << num;
+ if (!(m_mad2_regs[0x0b] & mask))
+ {
+ m_irq_status |= mask;
+ m_maincpu->set_input_line(0, ASSERT_LINE);
+ }
+ }
+ else if (!(m_mad2_regs[0x0c] & 0x40))
+ {
+ m_irq_status |= 0x100;
+ m_maincpu->set_input_line(0, ASSERT_LINE);
+ }
+}
+
+void noki3310_state::ack_fiq(UINT16 mask)
+{
+ m_fiq_status &= ~mask;
+
+ if (m_fiq_status == 0)
+ m_maincpu->set_input_line(1, CLEAR_LINE);
+}
+
+void noki3310_state::ack_irq(UINT16 mask)
+{
+ m_irq_status &= ~mask;
+
+ if (m_irq_status == 0)
+ m_maincpu->set_input_line(0, CLEAR_LINE);
+}
+
+void noki3310_state::nokia_ccont_w(UINT8 data)
+{
+ if (m_ccont.dc == false)
+ {
+#if LOG_CCONT_REGISTER_ACCESS
+ logerror("CCONT command %s %x\n", data & 4 ? "R" : "W", data>>3);
+#endif
+ m_ccont.cmd = data;
+ }
+ else
+ {
+ UINT8 addr = (m_ccont.cmd >> 3) & 0x0f;
+
+ switch(addr)
+ {
+ case 0x0: // ADC
+ {
+ UINT16 ad_id = (data >> 4) & 0x07;
+ UINT16 ad_value = 0;
+ switch(ad_id)
+ {
+ case 0: ad_value = 0x000; break; // Accessory Detect
+ case 1: ad_value = 0x3ff; break; // Received signal strength
+ case 2: ad_value = 0x3ff; break; // Battery voltage
+ case 3: ad_value = 0x280; break; // Battery type
+ case 4: ad_value = 0x000; break; // Battery temperature
+ case 5: ad_value = 0x000; break; // Charger voltage
+ case 6: ad_value = 0x000; break; // VCX0 (Voltage controlled oscilator) temperature
+ case 7: ad_value = 0x000; break; // Charging current
+ }
+
+ m_ccont.regs[addr] = data;
+ m_ccont.regs[2] = ad_value & 0xff;
+ m_ccont.regs[3] = ((ad_value >> 8) & 0x03);
+ break;
+ }
+ case 0x5: // CCONT watchdog
+ if (data == 0x20)
+ m_ccont.regs[addr] = data;
+ else if (data == 0x31)
+ m_ccont.watchdog = m_ccont.regs[addr];
+ else if (data == 0x3f)
+ m_ccont.watchdog = 0;
+ else if (data == 0)
+ printf("CCONT power-off\n");
+ break;
+
+ default:
+ m_ccont.regs[addr] = data;
+ break;
+ }
+
+#if LOG_CCONT_REGISTER_ACCESS
+ logerror("CCONT W %02x = %02x %s\n", addr, data, nokia_ccont_reg_desc(addr));
+#endif
+ }
+
+ m_ccont.dc = !m_ccont.dc;
+}
+
+UINT8 noki3310_state::nokia_ccont_r()
+{
+ UINT8 addr = (m_ccont.cmd >> 3) & 0x0f;
+ UINT8 data = m_ccont.regs[addr];
+
+ system_time systime;
+ machine().current_datetime(systime);
+
+ switch(addr)
+ {
+ case 0x3: data = 0xb0 | (m_ccont.regs[addr] & 0x03); break;
+ case 0x7: data = systime.local_time.second; break;
+ case 0x8: data = systime.local_time.minute; break;
+ case 0x9: data = systime.local_time.hour; break;
+ case 0xa: data = systime.local_time.mday; break;
+ case 0xe: data |= 0x01; break;
+ }
+
+ m_ccont.dc = !m_ccont.dc;
+
+#if LOG_CCONT_REGISTER_ACCESS
+ logerror("CCONT R %02x = %02x %s\n", addr, data, nokia_ccont_reg_desc(addr));
+#endif
+ return data;
+}
+
+PCD8544_SCREEN_UPDATE(noki3310_state::pcd8544_screen_update)
+{
+ for (int r = 0; r < 6; r++)
+ for (int x = 0; x < 84; x++)
+ {
+ UINT8 gfx = vram[r*84 + x];
+
+ for (int y = 0; y < 8; y++)
+ {
+ int p = BIT(gfx, y);
+ bitmap.pix16(r*8 + y, x) = p ^ inv;
+ }
+ }
+}
+
+TIMER_CALLBACK_MEMBER(noki3310_state::timer0)
+{
+ m_timer0_counter++;
+
+ if (m_timer0_counter == ((m_mad2_regs[0x12] << 8) | m_mad2_regs[0x13]))
+ assert_fiq(4);
+}
+
+TIMER_CALLBACK_MEMBER(noki3310_state::timer1)
+{
+ m_timer1_counter++;
+
+ if (m_timer1_counter == 0x8000)
+ {
+ assert_fiq(5);
+ m_timer1_counter = 0;
+ }
+}
+
+TIMER_CALLBACK_MEMBER(noki3310_state::timer_fiq8)
+{
+ if (m_mad2_regs[0x16] & 0x01)
+ assert_fiq(8);
+}
+
+TIMER_CALLBACK_MEMBER(noki3310_state::timer_watchdog)
+{
+ // CCONT watchdog
+ if (m_ccont.watchdog != 0)
+ {
+ m_ccont.watchdog--;
+
+ if (m_ccont.watchdog == 0)
+ {
+ m_maincpu->reset();
+ machine_reset();
+ }
+ }
+
+ // MAD2 watchdog
+ if (m_mad2_regs[0x03] != 0xff)
+ {
+ m_mad2_regs[0x03]--;
+ if (m_mad2_regs[0x03] == 0)
+ {
+ m_maincpu->reset();
+ machine_reset();
+ m_mad2_regs[0x01] |= 0x02; // Last reset was by watchdog
+ }
+ }
+}
+
+READ16_MEMBER(noki3310_state::dsp_ram_r)
+{
+ // HACK: avoid hangs when ARM try to communicate with the DSP
+ if (offset <= 0x004 >> 1) return 0x01;
+ if (offset == 0x0e0 >> 1) return 0x00;
+ if (offset == 0x0fe >> 1) return 0x01;
+ if (offset == 0x100 >> 1) return 0x01;
+
+ return m_dsp_ram[offset & 0x7ff];
+}
+
+WRITE16_MEMBER(noki3310_state::dsp_ram_w)
+{
+ COMBINE_DATA(&m_dsp_ram[offset & 0x7ff]);
+}
+
+READ8_MEMBER(noki3310_state::mad2_io_r)
+{
+ UINT8 data = m_mad2_regs[offset];
+
+ switch(offset)
+ {
+ case 0x00:
+ data = 0x40; // ASIC version
+ break;
+ case 0x04:
+ data = m_timer1_counter >> 8;
+ break;
+ case 0x05:
+ data = m_timer1_counter;
+ break;
+ case 0x08:
+ data = m_fiq_status & 0xff;
+ break;
+ case 0x09:
+ data = m_irq_status & 0xff;
+ break;
+ case 0x0c:
+ data = (data & (~0x20)) | ((m_irq_status >> 3) & 0x20);
+ break;
+ case 0x10:
+ data = m_timer0_counter >> 8;
+ break;
+ case 0x11:
+ data = m_timer0_counter;
+ break;
+ case 0x16:
+ data = (data & (~0x02)) | ((m_fiq_status >> 7) & 0x02);
+ break;
+ case 0x18:
+ data &= 0x7f;
+ break;
+ case 0x2a:
+ data = 0xff;
+ for(int i=0; i<5; i++)
+ if (!(m_mad2_regs[0x28] & (1 <<i)))
+ data &= m_keypad[i]->read();
+
+ data &= m_pwr->read();
+
+ if (m_power_on)
+ {
+ data &= m_power_on;
+ m_power_on = 0;
+ }
+ break;
+ case 0x6c:
+ data = nokia_ccont_r();
+ break;
+ case 0x6d:
+ data = 0x07; // GENSIO ready
+ break;
+ }
+
+#if LOG_MAD2_REGISTER_ACCESS
+ logerror("MAD2 R %02x = %02x %s\n", offset, data, nokia_mad2_reg_desc(offset));
+#endif
+ return data;
+}
+
+WRITE8_MEMBER(noki3310_state::mad2_io_w)
+{
+ m_mad2_regs[offset] = data;
+
+ switch(offset)
+ {
+ case 0x02:
+ //printf("DSP %s\n", data & 1 ? "RUN" : "HOLD");
+ //if (data & 0x01) debugger_break(machine());
+ break;
+ case 0x08:
+ ack_fiq(data);
+ break;
+ case 0x09:
+ ack_irq(data);
+ break;
+ case 0x0c:
+ ack_irq((data << 3) & 0x100);
+ break;
+ case 0x0f:
+ m_timer0->adjust(attotime::from_hz(33055 / (data + 1)), 0, attotime::from_hz(33055 / (data + 1)));
+ break;
+ case 0x16:
+ ack_fiq((data << 7) & 0x100);
+ break;
+ case 0x2c:
+ nokia_ccont_w(data);
+ break;
+ case 0x2e:
+ case 0x6e:
+ m_pcd8544->dc_w(offset & 0x40 ? CLEAR_LINE : ASSERT_LINE);
+ for (int i=7; i>=0; i--)
+ {
+ m_pcd8544->sclk_w(CLEAR_LINE);
+ m_pcd8544->sdin_w(BIT(data, i));
+ m_pcd8544->sclk_w(ASSERT_LINE);
+ }
+ m_pcd8544->dc_w(ASSERT_LINE);
+ break;
+ }
+
+#if LOG_MAD2_REGISTER_ACCESS
+ logerror("MAD2 W %02x = %02x %s\n", offset, data, nokia_mad2_reg_desc(offset));
+#endif
+}
+
+READ8_MEMBER(noki3310_state::mad2_dspif_r)
+{
+#if LOG_MAD2_REGISTER_ACCESS
+ logerror("MAD2 R %02x DSPIF\n", offset);
+#endif
+ return 0;
+}
+
+WRITE8_MEMBER(noki3310_state::mad2_dspif_w)
+{
+#if LOG_MAD2_REGISTER_ACCESS
+ logerror("MAD2 W %02x = %02x DSPIF\n", offset, data);
+#endif
+}
+
+READ8_MEMBER(noki3310_state::mad2_mcuif_r)
+{
+#if LOG_MAD2_REGISTER_ACCESS
+ logerror("MAD2 R %02x MCUIF\n", offset);
+#endif
+ return 0;
+}
+
+WRITE8_MEMBER(noki3310_state::mad2_mcuif_w)
+{
+#if LOG_MAD2_REGISTER_ACCESS
+ logerror("MAD2 W %02x = %02x MCUIF\n", offset, data);
+#endif
+}
+
static ADDRESS_MAP_START( noki3310_map, AS_PROGRAM, 32, noki3310_state )
- AM_RANGE(0x00000000, 0x000fffff) AM_ROM
+ ADDRESS_MAP_GLOBAL_MASK(0x00ffffff)
+ AM_RANGE(0x00000000, 0x0000ffff) AM_MIRROR(0x80000) AM_READWRITE16(ram_r, ram_w, 0xffffffff) // boot ROM / RAM
+ AM_RANGE(0x00010000, 0x00010fff) AM_MIRROR(0x8f000) AM_READWRITE16(dsp_ram_r, dsp_ram_w, 0xffffffff) // DSP shared memory
+ AM_RANGE(0x00020000, 0x000200ff) AM_MIRROR(0x8ff00) AM_READWRITE8(mad2_io_r, mad2_io_w, 0xffffffff) // IO (Primary I/O range, configures peripherals)
+ AM_RANGE(0x00030000, 0x00030003) AM_MIRROR(0x8fffc) AM_READWRITE8(mad2_dspif_r, mad2_dspif_w, 0xffffffff) // DSPIF (API control register)
+ AM_RANGE(0x00040000, 0x00040003) AM_MIRROR(0x8fffc) AM_READWRITE8(mad2_mcuif_r, mad2_mcuif_w, 0xffffffff) // MCUIF (Secondary I/O range, configures memory ranges)
+ AM_RANGE(0x00100000, 0x0017ffff) AM_READWRITE16(ram_r, ram_w, 0xffffffff) // RAMSelX
+ AM_RANGE(0x00200000, 0x005fffff) AM_DEVREADWRITE16("flash", intelfsh16_device, read, write, 0xffffffff) // ROM1SelX
+ AM_RANGE(0x00600000, 0x009fffff) AM_UNMAP // ROM2SelX
+ AM_RANGE(0x00a00000, 0x00dfffff) AM_UNMAP // EEPROMSelX
+ AM_RANGE(0x00e00000, 0x00ffffff) AM_UNMAP // Reserved
ADDRESS_MAP_END
+INPUT_CHANGED_MEMBER( noki3310_state::key_irq )
+{
+ if (!newval) // TODO: COL/ROW IRQ mask
+ assert_irq(0);
+}
+
static INPUT_PORTS_START( noki3310 )
+ PORT_START("COL.0")
+ PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_UNUSED )
+ PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_KEYPAD ) PORT_CODE(KEYCODE_UP) PORT_CHANGED_MEMBER(DEVICE_SELF, noki3310_state, key_irq, 0)
+ PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_KEYPAD ) PORT_CODE(KEYCODE_0) PORT_CHANGED_MEMBER(DEVICE_SELF, noki3310_state, key_irq, 0)
+ PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_UNUSED )
+ PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_KEYPAD ) PORT_CODE(KEYCODE_DEL) PORT_CHANGED_MEMBER(DEVICE_SELF, noki3310_state, key_irq, 0)
+
+ PORT_START("COL.1")
+ PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_UNUSED )
+ PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_KEYPAD ) PORT_CODE(KEYCODE_DOWN) PORT_CHANGED_MEMBER(DEVICE_SELF, noki3310_state, key_irq, 0)
+ PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_UNUSED )
+ PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_KEYPAD ) PORT_CODE(KEYCODE_2) PORT_CHANGED_MEMBER(DEVICE_SELF, noki3310_state, key_irq, 0)
+ PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_KEYPAD ) PORT_CODE(KEYCODE_1) PORT_CHANGED_MEMBER(DEVICE_SELF, noki3310_state, key_irq, 0)
+
+ PORT_START("COL.2")
+ PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_UNUSED )
+ PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_UNUSED )
+ PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_KEYPAD ) PORT_CODE(KEYCODE_6) PORT_CHANGED_MEMBER(DEVICE_SELF, noki3310_state, key_irq, 0)
+ PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_KEYPAD ) PORT_CODE(KEYCODE_5) PORT_CHANGED_MEMBER(DEVICE_SELF, noki3310_state, key_irq, 0)
+ PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_KEYPAD ) PORT_CODE(KEYCODE_4) PORT_CHANGED_MEMBER(DEVICE_SELF, noki3310_state, key_irq, 0)
+
+ PORT_START("COL.3")
+ PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_UNUSED )
+ PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_UNUSED )
+ PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_KEYPAD ) PORT_CODE(KEYCODE_9) PORT_CHANGED_MEMBER(DEVICE_SELF, noki3310_state, key_irq, 0)
+ PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_KEYPAD ) PORT_CODE(KEYCODE_8) PORT_CHANGED_MEMBER(DEVICE_SELF, noki3310_state, key_irq, 0)
+ PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_KEYPAD ) PORT_CODE(KEYCODE_7) PORT_CHANGED_MEMBER(DEVICE_SELF, noki3310_state, key_irq, 0)
+
+ PORT_START("COL.4")
+ PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_UNUSED )
+ PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_KEYPAD ) PORT_CODE(KEYCODE_3) PORT_CHANGED_MEMBER(DEVICE_SELF, noki3310_state, key_irq, 0)
+ PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_KEYPAD ) PORT_CODE(KEYCODE_MINUS) PORT_CHANGED_MEMBER(DEVICE_SELF, noki3310_state, key_irq, 0)
+ PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_KEYPAD ) PORT_CODE(KEYCODE_ENTER) PORT_CHANGED_MEMBER(DEVICE_SELF, noki3310_state, key_irq, 0)
+ PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_KEYPAD ) PORT_CODE(KEYCODE_ASTERISK) PORT_CHANGED_MEMBER(DEVICE_SELF, noki3310_state, key_irq, 0)
+
+ PORT_START("PWR")
+ PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_KEYPAD ) PORT_CODE(KEYCODE_SPACE) PORT_CHANGED_MEMBER(DEVICE_SELF, noki3310_state, key_irq, 0)
+ PORT_BIT( 0x1d, IP_ACTIVE_LOW, IPT_UNUSED )
INPUT_PORTS_END
static MACHINE_CONFIG_START( noki3310, noki3310_state )
/* basic machine hardware */
- MCFG_CPU_ADD("maincpu", ARM7, 50000000) // MAD2WD1 - speed unknown
+ MCFG_CPU_ADD("maincpu", ARM7_BE, 26000000 / 2) // MAD2WD1 13 MHz, clock internally supplied to ARM core can be divided by 2, in sleep mode a 32768 Hz clock is used
MCFG_CPU_PROGRAM_MAP(noki3310_map)
+ /* video hardware */
+ MCFG_SCREEN_ADD("screen", LCD)
+ MCFG_SCREEN_REFRESH_RATE(60)
+ MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500) /* not accurate */)
+ MCFG_SCREEN_SIZE(84, 48)
+ MCFG_SCREEN_VISIBLE_AREA(0, 84-1, 0, 48-1)
+ MCFG_SCREEN_UPDATE_DEVICE("pcd8544", pcd8544_device, screen_update)
+ MCFG_SCREEN_PALETTE("palette")
+
+ MCFG_PALETTE_ADD_WHITE_AND_BLACK("palette")
+
+ MCFG_PCD8544_ADD("pcd8544")
+ MCFG_PCD8544_SCREEN_UPDATE_CALLBACK(noki3310_state, pcd8544_screen_update)
+
+ MCFG_INTEL_TE28F160_ADD("flash")
+
+MACHINE_CONFIG_END
+
+static MACHINE_CONFIG_DERIVED( noki3330, noki3310 )
+
+ MCFG_DEVICE_REMOVE("flash")
+ MCFG_INTEL_TE28F320_ADD("flash")
+
+MACHINE_CONFIG_END
+
+static MACHINE_CONFIG_DERIVED( noki3410, noki3330 )
+
+ MCFG_SCREEN_MODIFY("screen")
+ MCFG_SCREEN_SIZE(96, 65) // Philips OM6206
+
MACHINE_CONFIG_END
+static MACHINE_CONFIG_DERIVED( noki7110, noki3330 )
+
+ MCFG_SCREEN_MODIFY("screen")
+ MCFG_SCREEN_SIZE(96, 65) // Epson SED1565
+
+MACHINE_CONFIG_END
+
+static MACHINE_CONFIG_DERIVED( noki6210, noki3330 )
+
+ MCFG_SCREEN_MODIFY("screen")
+ MCFG_SCREEN_SIZE(96, 60)
+
+MACHINE_CONFIG_END
+
+
+// MAD2 internal ROMS
+#define MAD2_INTERNAL_ROMS \
+ ROM_REGION16_BE(0x10000, "boot_rom", ROMREGION_ERASE00 ) \
+ ROM_LOAD("boot_rom", 0x00000, 0x10000, NO_DUMP) \
+ \
+ ROM_REGION16_BE(0x20000, "dsp", ROMREGION_ERASE00 ) \
+ ROM_LOAD("dsp_prom" , 0x00000, 0xc000, NO_DUMP) \
+ ROM_LOAD("dsp_drom" , 0x0c000, 0x4000, NO_DUMP) \
+ ROM_LOAD("dsp_pdrom", 0x10000, 0x1000, NO_DUMP)
+
+ROM_START( noki3210 )
+ MAD2_INTERNAL_ROMS
+
+ ROM_REGION16_BE(0x200000, "flash", ROMREGION_ERASEFF )
+ ROM_SYSTEM_BIOS(0, "600", "v6.00") // A 03-10-2000
+ ROMX_LOAD("3210F600A.fls", 0x000000, 0x200000, CRC(6a978478) SHA1(6bdec2ec76aca15bc12b621be4402e455562454b), ROM_BIOS(1))
+
+ ROM_REGION16_BE(0x04000, "eeprom", 0 )
+ ROM_LOAD("3210 virgin eeprom 24C128.bin", 0x00000, 0x04000, CRC(af8d8f65) SHA1(33a24c04d81a2bd8abce4a6fd873029f0c633ecb))
+ROM_END
+
ROM_START( noki3310 )
- ROM_REGION(0x0200000, "maincpu", 0 )
+ MAD2_INTERNAL_ROMS
+
+ ROM_REGION16_BE(0x200000, "flash", ROMREGION_ERASEFF )
+ ROM_SYSTEM_BIOS(0, "607", "v6.07") // C 17-06-2003
+ ROM_SYSTEM_BIOS(1, "579", "v5.79") // N 11-11-2002
+ ROM_SYSTEM_BIOS(2, "513", "v5.13") // C 11-01-2002
+ ROMX_LOAD("3310_607_PPM_C.fls", 0x000000, 0x200000, CRC(5743f6ba) SHA1(0e80b5f1698909c9850be770c1289566582aa77a), ROM_BIOS(1))
+ ROMX_LOAD("3310 NR1 v5.79.fls", 0x000000, 0x200000, CRC(26b4f0df) SHA1(649de05ed88205a080693b918cd1295ac691dff1), ROM_BIOS(2))
+ ROMX_LOAD("3310 v. 5.13 C.fls", 0x000000, 0x1d0000, CRC(0f66d256) SHA1(04d8dabe2c454d6a1161f352d85c69c409895000), ROM_BIOS(3))
+ ROM_LOAD("3310 virgin eeprom 003D0000.fls", 0x1d0000, 0x030000, CRC(8393b1f7) SHA1(ab6c05bfa54ecd7c2acbd172009ffe6c7f130cb8))
+
// these 2 are apparently the 6.39 update firmware data
- ROM_LOAD( "NHM5NY06.390", 0x000000, 0x0131161, CRC(5dfb1af7) SHA1(3a8ad82dc239b0cd18be60f537c4d0e07881155d) )
ROM_REGION(0x0200000, "misc", 0 )
+ ROM_LOAD( "NHM5NY06.390", 0x000000, 0x0131161, CRC(5dfb1af7) SHA1(3a8ad82dc239b0cd18be60f537c4d0e07881155d) )
ROM_LOAD( "NHM5NY06.39I", 0x000000, 0x0090288, CRC(ec214ee4) SHA1(f5b3b9ceaa7280d5246dd70d5696f8f6983122fc) )
ROM_END
+ROM_START( noki3330 )
+ MAD2_INTERNAL_ROMS
+
+ ROM_REGION16_BE(0x0400000, "flash", ROMREGION_ERASEFF )
+ ROM_SYSTEM_BIOS(0, "450", "v4.50") // C 12-10-2001
+ ROMX_LOAD("3330F450C.fls", 0x000000, 0x350000, CRC(259313e7) SHA1(88bcc39d9358fd8a8562fe3a0280f0ce82f5897f), ROM_BIOS(1))
+ ROM_LOAD("3330 virgin eeprom 005F0000.fls", 0x3f0000, 0x010000, CRC(23459c10) SHA1(68481effb39d90a1639e8f261009c66e97d3e668))
+ROM_END
+
+ROM_START( noki3410 )
+ MAD2_INTERNAL_ROMS
+
+ ROM_REGION16_BE(0x0400000, "flash", ROMREGION_ERASEFF )
+ ROM_SYSTEM_BIOS(0, "506", "v5.06") // C 29-11-2002
+ ROMX_LOAD("3410_5-06c.fls", 0x000000, 0x370000, CRC(1483e094) SHA1(ef26026297c779de7b01923a364ded822e720c38), ROM_BIOS(1))
+ROM_END
+
+ROM_START( noki5210 )
+ MAD2_INTERNAL_ROMS
+
+ ROM_REGION16_BE(0x0400000, "flash", ROMREGION_ERASEFF )
+ ROM_SYSTEM_BIOS(0, "540", "v5.40") // C 11-10-2003
+ ROM_SYSTEM_BIOS(1, "525", "v5.25") // C 26-02-2003
+ ROM_SYSTEM_BIOS(2, "520", "v5.20") // C 12-08-2002
+ ROMX_LOAD("5210_5.40_PPM_C.FLS", 0x000000, 0x380000, CRC(e37d5beb) SHA1(726f000780dd67750b7d2859687f846ce17a1bf7), ROM_BIOS(1))
+ ROMX_LOAD("5210_5.25_PPM_C.FLS", 0x000000, 0x380000, CRC(13bba458) SHA1(3b5244244743fba48f9061e158f95fc46b86446e), ROM_BIOS(2))
+ ROMX_LOAD("5210_520_C.fls", 0x000000, 0x380000, CRC(38648cd3) SHA1(9210e15e6bd780f86c467bec33ef54d6393abe5a), ROM_BIOS(3))
+ROM_END
+
+ROM_START( noki6210 )
+ MAD2_INTERNAL_ROMS
+
+ ROM_REGION16_BE(0x0400000, "flash", ROMREGION_ERASEFF )
+ ROM_SYSTEM_BIOS(0, "556", "v5.56") // C 25-01-2002
+ ROMX_LOAD("6210_556C.fls", 0x000000, 0x3a0000, CRC(203fb962) SHA1(3d9ea319503e78ec69b60d72cda23e461e118ea9), ROM_BIOS(1))
+ ROM_LOAD("6210 virgin eeprom 005FA000.fls", 0x3fa000, 0x006000, CRC(3c6d3437) SHA1(b3a527ede1be87bd715fb3741a81eef5bd422efa))
+ROM_END
+
+ROM_START( noki6250 )
+ MAD2_INTERNAL_ROMS
+
+ ROM_REGION16_BE(0x0400000, "flash", ROMREGION_ERASEFF )
+ ROM_SYSTEM_BIOS(0, "503", "v5.03") // C 06-12-2001
+ ROMX_LOAD("6250-503mcuPPMC.fls", 0x000000, 0x3a0000, CRC(8dffb91b) SHA1(95607ce39c383bda75f1e6aeae67a214b787b0a1), ROM_BIOS(1))
+ ROM_LOAD("6250 virgin eeprom 005FA000.fls", 0x3fa000, 0x006000, CRC(6087ce70) SHA1(57c29c8387caf864603d94a22bfb63ace427b7f9))
+ROM_END
+
+ROM_START( noki7110 )
+ MAD2_INTERNAL_ROMS
+
+ ROM_REGION16_BE(0x0400000, "flash", ROMREGION_ERASEFF )
+ ROM_SYSTEM_BIOS(0, "501", "v5.01") // C 08-12-2000
+ ROMX_LOAD("7110F501_ppmC.fls", 0x000000, 0x390000, CRC(919ac753) SHA1(53af8324919f455ba8199d2c05f7a921cfb811d5), ROM_BIOS(1))
+ ROM_LOAD("7110 virgin eeprom 005FA000.fls", 0x3fa000, 0x006000, CRC(78e7d8c1) SHA1(8b4dd782fc9d1306268ba63124ee463ac646912b))
+ROM_END
+
+ROM_START( noki8210 )
+ MAD2_INTERNAL_ROMS
+
+ ROM_REGION16_BE(0x200000, "flash", ROMREGION_ERASEFF )
+ ROM_SYSTEM_BIOS(0, "531", "v5.31") // C 08-03-2002
+ ROMX_LOAD("8210_5.31PPM_C.FLS", 0x000000, 0x1d0000, CRC(927022b1) SHA1(c1a0fe95cedb89a92b19654208cc4855e1a4988e), ROM_BIOS(1))
+ ROM_LOAD("8210 virgin eeprom 003D0000.fls", 0x1d0000, 0x030000, CRC(37fddeea) SHA1(1c01ad3948ff9919890498a84f31052369d93e1d))
+ROM_END
+
+ROM_START( noki8250 )
+ MAD2_INTERNAL_ROMS
+
+ ROM_REGION16_BE(0x200000, "flash", ROMREGION_ERASEFF )
+ ROM_SYSTEM_BIOS(0, "502", "v5.02") // K 28-01-2002
+ ROMX_LOAD("8250-502mcuPPMK.fls", 0x000000, 0x1d0000, CRC(2c58e48b) SHA1(f26c98ffcfffbbd5714889e10cfa41c5f6dd2529), ROM_BIOS(1))
+ ROM_LOAD("8250 virgin eeprom 003D0000.fls", 0x1d0000, 0x030000, CRC(7ca585e0) SHA1(a974fb5fddcd0438ac4aaf32b431f1453e8d923c))
+ROM_END
+
+ROM_START( noki8850 )
+ MAD2_INTERNAL_ROMS
+
+ ROM_REGION16_BE(0x200000, "flash", ROMREGION_ERASEFF )
+ ROM_SYSTEM_BIOS(0, "531", "v5.31") // C 08-03-2002
+ ROMX_LOAD("8850v531.fls", 0x000000, 0x1d0000, CRC(8864fcb3) SHA1(9f966787403b68a09530680ad911302403eb1521), ROM_BIOS(1))
+ ROM_LOAD("8850 virgin eeprom 003D0000.fls", 0x1d0000, 0x030000, CRC(4823f27e) SHA1(b09455302d98fbedf35072c9ecfd7721a04924b0))
+ROM_END
+
+ROM_START( noki8890 )
+ MAD2_INTERNAL_ROMS
+
+ ROM_REGION16_BE(0x200000, "flash", ROMREGION_ERASEFF )
+ ROM_SYSTEM_BIOS(0, "1220", "v12.20") // C 19-03-2001
+ ROMX_LOAD("8890_12.20_ppmC.FLS", 0x000000, 0x1d0000, CRC(77206f78) SHA1(a214a0d69760ecd8eeca0b9d82f95c94bdfe70ed), ROM_BIOS(1))
+ ROM_LOAD("8890 virgin eeprom 003D0000.fls", 0x1d0000, 0x030000, CRC(1d8ef3b5) SHA1(cc0924cfd4c0ce796fca157c640fc3183c2b5f2c))
+ROM_END
+
+GAME( 1999, noki3210, 0, noki3310, noki3310, driver_device, 0, ROT0, "Nokia", "Nokia 3210", MACHINE_NO_SOUND | MACHINE_IS_SKELETON )
+GAME( 1999, noki7110, 0, noki7110, noki3310, driver_device, 0, ROT0, "Nokia", "Nokia 7110", MACHINE_NO_SOUND | MACHINE_IS_SKELETON )
+GAME( 1999, noki8210, 0, noki3310, noki3310, driver_device, 0, ROT0, "Nokia", "Nokia 8210", MACHINE_NO_SOUND | MACHINE_IS_SKELETON )
+GAME( 1999, noki8850, 0, noki3310, noki3310, driver_device, 0, ROT0, "Nokia", "Nokia 8850", MACHINE_NO_SOUND | MACHINE_IS_SKELETON )
GAME( 2000, noki3310, 0, noki3310, noki3310, driver_device, 0, ROT0, "Nokia", "Nokia 3310", MACHINE_NO_SOUND | MACHINE_IS_SKELETON )
+GAME( 2000, noki6210, 0, noki6210, noki3310, driver_device, 0, ROT0, "Nokia", "Nokia 6210", MACHINE_NO_SOUND | MACHINE_IS_SKELETON )
+GAME( 2000, noki6250, 0, noki6210, noki3310, driver_device, 0, ROT0, "Nokia", "Nokia 6250", MACHINE_NO_SOUND | MACHINE_IS_SKELETON )
+GAME( 2000, noki8250, 0, noki3310, noki3310, driver_device, 0, ROT0, "Nokia", "Nokia 8250", MACHINE_NO_SOUND | MACHINE_IS_SKELETON )
+GAME( 2000, noki8890, 0, noki3310, noki3310, driver_device, 0, ROT0, "Nokia", "Nokia 8890", MACHINE_NO_SOUND | MACHINE_IS_SKELETON )
+GAME( 2001, noki3330, 0, noki3330, noki3310, driver_device, 0, ROT0, "Nokia", "Nokia 3330", MACHINE_NO_SOUND | MACHINE_IS_SKELETON )
+GAME( 2002, noki3410, 0, noki3410, noki3310, driver_device, 0, ROT0, "Nokia", "Nokia 3410", MACHINE_NO_SOUND | MACHINE_IS_SKELETON )
+GAME( 2002, noki5210, 0, noki3330, noki3310, driver_device, 0, ROT0, "Nokia", "Nokia 5210", MACHINE_NO_SOUND | MACHINE_IS_SKELETON )
diff --git a/src/mame/drivers/nova2001.cpp b/src/mame/drivers/nova2001.cpp
index b0dd073f22b..125f2dbe48c 100644
--- a/src/mame/drivers/nova2001.cpp
+++ b/src/mame/drivers/nova2001.cpp
@@ -314,7 +314,7 @@ static INPUT_PORTS_START( nova2001 )
PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_BUTTON1 ) PORT_COCKTAIL
PORT_START("IN2")
- PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_COIN1 ) PORT_IMPULSE(4)
+ PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_COIN1 ) PORT_IMPULSE(4)
PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_START1 )
PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_START2 )
PORT_BIT( 0x78, IP_ACTIVE_LOW, IPT_UNUSED )
@@ -1020,7 +1020,7 @@ DRIVER_INIT_MEMBER(nova2001_state,raiders5)
// many of these don't explicitly state Japan, eg. Nova 2001 could easily be used anywhere.
// YEAR, NAME, PARENT, MACHINE, INPUT, INIT, MONITOR,COMPANY,FULLNAME,FLAGS
-GAME( 1983, nova2001, 0, nova2001, nova2001, driver_device, 0, ROT0, "UPL", "Nova 2001 (Japan)", MACHINE_SUPPORTS_SAVE )
+GAME( 1983, nova2001, 0, nova2001, nova2001, driver_device, 0, ROT0, "UPL", "Nova 2001 (Japan)", MACHINE_SUPPORTS_SAVE )
GAME( 1983, nova2001h, nova2001, nova2001, nova2001, driver_device, 0, ROT0, "UPL", "Nova 2001 (Japan, hack?)", MACHINE_SUPPORTS_SAVE )
GAME( 1983, nova2001u, nova2001, nova2001, nova2001, driver_device, 0, ROT0, "UPL (Universal license)", "Nova 2001 (US)", MACHINE_SUPPORTS_SAVE )
GAME( 1984, ninjakun, 0, ninjakun, ninjakun, driver_device, 0, ROT0, "UPL (Taito license)", "Ninjakun Majou no Bouken", MACHINE_SUPPORTS_SAVE )
diff --git a/src/mame/drivers/nwk-tr.cpp b/src/mame/drivers/nwk-tr.cpp
index 3d4719b95f1..a64c10fd96a 100644
--- a/src/mame/drivers/nwk-tr.cpp
+++ b/src/mame/drivers/nwk-tr.cpp
@@ -304,6 +304,7 @@ public:
int m_fpga_uploaded;
int m_lanc2_ram_r;
int m_lanc2_ram_w;
+ UINT8 m_lanc2_reg[3];
std::unique_ptr<UINT8[]> m_lanc2_ram;
std::unique_ptr<UINT32[]> m_sharc_dataram;
DECLARE_WRITE32_MEMBER(paletteram32_w);
@@ -346,11 +347,11 @@ WRITE_LINE_MEMBER(nwktr_state::voodoo_vblank_0)
UINT32 nwktr_state::screen_update_nwktr(screen_device &screen, bitmap_rgb32 &bitmap, const rectangle &cliprect)
{
- device_t *voodoo = machine().device("voodoo0");
+ voodoo_device *voodoo = (voodoo_device*)machine().device("voodoo0");
bitmap.fill(m_palette->pen(0), cliprect);
- voodoo_update(voodoo, bitmap, cliprect);
+ voodoo->voodoo_update(bitmap, cliprect);
const rectangle &visarea = screen.visible_area();
const rectangle tilemap_rect(visarea.min_x, visarea.max_x, visarea.min_y+16, visarea.max_y);
@@ -521,6 +522,7 @@ WRITE32_MEMBER(nwktr_state::lanc2_w)
((value << 7) & 0x80);
m_fpga_uploaded = 1;
+ m_lanc2_reg[0] = (UINT8)(data >> 24);
//printf("lanc2_fpga_w: %02X at %08X\n", value, space.device().safe_pc());
}
@@ -528,11 +530,16 @@ WRITE32_MEMBER(nwktr_state::lanc2_w)
{
m_lanc2_ram_r = 0;
m_lanc2_ram_w = 0;
+ m_lanc2_reg[1] = (UINT8)(data >> 8);
}
else if (ACCESSING_BITS_16_23)
{
- m_lanc2_ram[2] = (data >> 20) & 0xf;
- m_lanc2_ram[3] = 0;
+ if (m_lanc2_reg[0] != 0)
+ {
+ m_lanc2_ram[2] = (data >> 20) & 0xf;
+ m_lanc2_ram[3] = 0;
+ }
+ m_lanc2_reg[2] = (UINT8)(data >> 16);
}
else if (ACCESSING_BITS_0_7)
{
diff --git a/src/mame/drivers/opwolf.cpp b/src/mame/drivers/opwolf.cpp
index 9a60f39000c..bfac0ecb625 100644
--- a/src/mame/drivers/opwolf.cpp
+++ b/src/mame/drivers/opwolf.cpp
@@ -1,4 +1,4 @@
-// license:???
+// license:GPL-2.0+
// copyright-holders:David Graves, Jarek Burczynski
// thanks-to:Richard Bush
/****************************************************************************
diff --git a/src/mame/drivers/osi.cpp b/src/mame/drivers/osi.cpp
index 5429460ee6f..4a9a46f1466 100644
--- a/src/mame/drivers/osi.cpp
+++ b/src/mame/drivers/osi.cpp
@@ -349,7 +349,8 @@ WRITE8_MEMBER( c1p_state::osi630_ctrl_w )
WRITE8_MEMBER( c1p_state::osi630_sound_w )
{
- if (data) m_beep->set_frequency(49152 / data);
+ if (data != 0)
+ m_beep->set_clock(49152 / data);
}
/* Disk Drive */
@@ -788,7 +789,7 @@ static MACHINE_CONFIG_START( c1p, c1p_state )
MCFG_SOUND_ADD(DISCRETE_TAG, DISCRETE, 0)
MCFG_DISCRETE_INTF(osi600c_discrete_interface)
MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.50)
- MCFG_SOUND_ADD("beeper", BEEP, 0)
+ MCFG_SOUND_ADD("beeper", BEEP, 300)
MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.50)
MCFG_DEVICE_ADD("pia_1", PIA6821, 0)
@@ -885,7 +886,7 @@ void sb2m600_state::device_timer(emu_timer &timer, device_timer_id id, int param
{
case TIMER_SETUP_BEEP:
m_beeper->set_state(0);
- m_beeper->set_frequency(300);
+ m_beeper->set_clock(300);
break;
default:
assert_always(FALSE, "Unknown id in sb2m600_state::device_timer");
diff --git a/src/mame/drivers/overdriv.cpp b/src/mame/drivers/overdriv.cpp
index c611c2b32eb..233da503224 100644
--- a/src/mame/drivers/overdriv.cpp
+++ b/src/mame/drivers/overdriv.cpp
@@ -70,23 +70,32 @@ WRITE16_MEMBER(overdriv_state::eeprom_w)
TIMER_DEVICE_CALLBACK_MEMBER(overdriv_state::overdriv_cpuA_scanline)
{
+ const int timer_threshold = 168; // fwiw matches 0 on mask ROM check, so IF it's a timer irq then should be close ...
int scanline = param;
-
- /* TODO: irqs routines are TOO slow right now, it ends up firing spurious irqs for whatever reason (shared ram fighting?) */
- /* this is a temporary solution to get rid of deprecat lib and the crashes, but also makes the game timer to be too slow */
- if(scanline == 256 && m_screen->frame_number() & 1) // vblank-out irq
+
+ m_fake_timer ++;
+
+ // TODO: irqs routines are TOO slow right now, it ends up firing spurious irqs for whatever reason (shared ram fighting?)
+ // this is a temporary solution to get rid of deprecat lib and the crashes, but also makes the game timer to be too slow.
+ // Update: gameplay is actually too fast compared to timer, first attract mode shouldn't even surpass first blue car on right.
+ if(scanline == 256) // vblank-out irq
+ {
+ // m_screen->frame_number() & 1
m_maincpu->set_input_line(4, HOLD_LINE);
- else if((scanline % 128) == 0) // timer irq
+ }
+ else if(m_fake_timer >= timer_threshold) // timer irq
+ {
+ m_fake_timer -= timer_threshold;
m_maincpu->set_input_line(5, HOLD_LINE);
+ }
}
+#ifdef UNUSED_FUNCTION
INTERRUPT_GEN_MEMBER(overdriv_state::cpuB_interrupt)
{
// this doesn't get turned on until the irq has happened? wrong irq?
-// if (m_k053246->k053246_is_irq_enabled())
- m_subcpu->set_input_line(4, HOLD_LINE); // likely wrong
}
-
+#endif
WRITE16_MEMBER(overdriv_state::cpuA_ctrl_w)
{
@@ -127,17 +136,22 @@ WRITE16_MEMBER(overdriv_state::cpuB_ctrl_w)
WRITE16_MEMBER(overdriv_state::overdriv_soundirq_w)
{
- m_audiocpu->set_input_line(M6809_IRQ_LINE, HOLD_LINE);
+ m_audiocpu->set_input_line(M6809_IRQ_LINE, ASSERT_LINE);
}
-WRITE16_MEMBER(overdriv_state::overdriv_cpuB_irq_x_w)
+
+
+
+WRITE16_MEMBER(overdriv_state::slave_irq4_assert_w)
{
- m_subcpu->set_input_line(5, HOLD_LINE); // likely wrong
+ // used in-game
+ m_subcpu->set_input_line(4, HOLD_LINE);
}
-WRITE16_MEMBER(overdriv_state::overdriv_cpuB_irq_y_w)
+WRITE16_MEMBER(overdriv_state::slave_irq5_assert_w)
{
- m_subcpu->set_input_line(6, HOLD_LINE); // likely wrong
+ // tests GFX ROMs with this irq (indeed enabled only in test mode)
+ m_subcpu->set_input_line(5, HOLD_LINE);
}
static ADDRESS_MAP_START( overdriv_master_map, AS_PROGRAM, 16, overdriv_state )
@@ -163,11 +177,11 @@ static ADDRESS_MAP_START( overdriv_master_map, AS_PROGRAM, 16, overdriv_state )
AM_RANGE(0x218000, 0x218fff) AM_DEVREADWRITE8("k051316_2", k051316_device, read, write, 0xff00)
AM_RANGE(0x220000, 0x220fff) AM_DEVREAD8("k051316_1", k051316_device, rom_r, 0xff00)
AM_RANGE(0x228000, 0x228fff) AM_DEVREAD8("k051316_2", k051316_device, rom_r, 0xff00)
- AM_RANGE(0x230000, 0x230001) AM_WRITE(overdriv_cpuB_irq_y_w)
- AM_RANGE(0x238000, 0x238001) AM_WRITE(overdriv_cpuB_irq_x_w)
+ AM_RANGE(0x230000, 0x230001) AM_WRITE(slave_irq4_assert_w)
+ AM_RANGE(0x238000, 0x238001) AM_WRITE(slave_irq5_assert_w)
ADDRESS_MAP_END
-// HACK ALERT
+#ifdef UNUSED_FUNCTION
WRITE16_MEMBER( overdriv_state::overdriv_k053246_word_w )
{
m_k053246->k053246_word_w(space,offset,data,mem_mask);
@@ -190,6 +204,20 @@ WRITE16_MEMBER( overdriv_state::overdriv_k053246_word_w )
//printf("%02x %04x %04x\n", offset, data, mem_mask);
}
+#endif
+
+TIMER_CALLBACK_MEMBER(overdriv_state::objdma_end_cb )
+{
+ m_subcpu->set_input_line(6, HOLD_LINE);
+}
+
+WRITE16_MEMBER(overdriv_state::objdma_w)
+{
+ if(data & 0x10)
+ machine().scheduler().timer_set(attotime::from_usec(100), timer_expired_delegate(FUNC(overdriv_state::objdma_end_cb), this));
+
+ m_k053246->k053246_w(space,5,data,mem_mask);
+}
static ADDRESS_MAP_START( overdriv_slave_map, AS_PROGRAM, 16, overdriv_state )
AM_RANGE(0x000000, 0x03ffff) AM_ROM
@@ -197,17 +225,27 @@ static ADDRESS_MAP_START( overdriv_slave_map, AS_PROGRAM, 16, overdriv_state )
AM_RANGE(0x0c0000, 0x0c1fff) AM_RAM //AM_DEVREADWRITE("k053250_1", k053250_device, ram_r, ram_w)
AM_RANGE(0x100000, 0x10000f) AM_DEVREADWRITE("k053250_1", k053250_device, reg_r, reg_w)
AM_RANGE(0x108000, 0x10800f) AM_DEVREADWRITE("k053250_2", k053250_device, reg_r, reg_w)
- AM_RANGE(0x118000, 0x118fff) AM_RAM AM_SHARE("sprram") //AM_DEVREADWRITE("k053246", k053247_device, k053247_word_r, k053247_word_w) // data gets copied to sprite chip with DMA..
+ AM_RANGE(0x118000, 0x118fff) AM_DEVREADWRITE("k053246", k053247_device, k053247_word_r, k053247_word_w) // data gets copied to sprite chip with DMA..
AM_RANGE(0x120000, 0x120001) AM_DEVREAD("k053246", k053247_device, k053246_word_r)
AM_RANGE(0x128000, 0x128001) AM_READWRITE(cpuB_ctrl_r, cpuB_ctrl_w) /* enable K053247 ROM reading, plus something else */
- AM_RANGE(0x130000, 0x130007) AM_WRITE(overdriv_k053246_word_w) // AM_DEVWRITE("k053246", k053247_device, k053246_word_w)
+ AM_RANGE(0x130004, 0x130005) AM_WRITE(objdma_w)
+ AM_RANGE(0x130000, 0x130007) AM_DEVREADWRITE8("k053246", k053247_device, k053246_r,k053246_w,0xffff)
+ //AM_RANGE(0x140000, 0x140001) used in later stages, set after writes at 0x208000-0x20bfff range
AM_RANGE(0x200000, 0x203fff) AM_RAM AM_SHARE("share1")
- AM_RANGE(0x208000, 0x20bfff) AM_RAM
+ AM_RANGE(0x208000, 0x20bfff) AM_RAM // sprite indirect table?
AM_RANGE(0x218000, 0x219fff) AM_DEVREAD("k053250_1", k053250_device, rom_r)
AM_RANGE(0x220000, 0x221fff) AM_DEVREAD("k053250_2", k053250_device, rom_r)
ADDRESS_MAP_END
+WRITE8_MEMBER(overdriv_state::sound_ack_w)
+{
+ m_audiocpu->set_input_line(M6809_IRQ_LINE, CLEAR_LINE);
+}
+
static ADDRESS_MAP_START( overdriv_sound_map, AS_PROGRAM, 8, overdriv_state )
+ AM_RANGE(0x0000, 0x0000) AM_WRITE(sound_ack_w)
+ // 0x012 read during explosions
+ // 0x180
AM_RANGE(0x0200, 0x0201) AM_DEVREADWRITE("ymsnd", ym2151_device,read,write)
AM_RANGE(0x0400, 0x042f) AM_DEVREADWRITE("k053260_1", k053260_device, read, write)
AM_RANGE(0x0600, 0x062f) AM_DEVREADWRITE("k053260_2", k053260_device, read, write)
@@ -222,7 +260,7 @@ ADDRESS_MAP_END
static INPUT_PORTS_START( overdriv )
PORT_START("INPUTS")
- PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_BUTTON3 ) PORT_TOGGLE
+ PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_BUTTON3 ) PORT_TOGGLE
PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_BUTTON1 )
PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_BUTTON2 )
PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_UNKNOWN )
@@ -282,8 +320,9 @@ static MACHINE_CONFIG_START( overdriv, overdriv_state )
MCFG_CPU_ADD("sub", M68000, XTAL_24MHz/2) /* 12 MHz */
MCFG_CPU_PROGRAM_MAP(overdriv_slave_map)
- MCFG_CPU_VBLANK_INT_DRIVER("screen", overdriv_state, cpuB_interrupt) /* IRQ 5 and 6 are generated by the main CPU. */
- /* IRQ 5 is used only in test mode, to request the checksums of the gfx ROMs. */
+ //MCFG_CPU_VBLANK_INT_DRIVER("screen", overdriv_state, cpuB_interrupt)
+ /* IRQ 5 and 6 are generated by the main CPU. */
+ /* IRQ 5 is used only in test mode, to request the checksums of the gfx ROMs. */
MCFG_CPU_ADD("audiocpu", M6809, XTAL_3_579545MHz) /* 1.789 MHz?? This might be the right speed, but ROM testing */
MCFG_CPU_PROGRAM_MAP(overdriv_sound_map) /* takes a little too much (the counter wraps from 0000 to 9999). */
@@ -297,10 +336,7 @@ static MACHINE_CONFIG_START( overdriv, overdriv_state )
/* video hardware */
MCFG_SCREEN_ADD("screen", RASTER)
- MCFG_SCREEN_REFRESH_RATE(59)
- MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500))
- MCFG_SCREEN_SIZE(64*8, 40*8)
- MCFG_SCREEN_VISIBLE_AREA(13*8, (64-13)*8-1, 0*8, 32*8-1 )
+ MCFG_SCREEN_RAW_PARAMS(XTAL_24MHz/4,384,0,305,264,0,224)
MCFG_SCREEN_UPDATE_DRIVER(overdriv_state, screen_update_overdriv)
MCFG_SCREEN_PALETTE("palette")
@@ -475,6 +511,6 @@ ROM_START( overdrivb )
ROM_LOAD( "789e02.f1", 0x100000, 0x100000, CRC(bdd3b5c6) SHA1(412332d64052c0a3714f4002c944b0e7d32980a4) )
ROM_END
-GAMEL( 1990, overdriv, 0, overdriv, overdriv, driver_device, 0, ROT90, "Konami", "Over Drive (set 1)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_NOT_WORKING | MACHINE_SUPPORTS_SAVE, layout_overdriv )
-GAMEL( 1990, overdriva, overdriv, overdriv, overdriv, driver_device, 0, ROT90, "Konami", "Over Drive (set 2)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_NOT_WORKING | MACHINE_SUPPORTS_SAVE, layout_overdriv )
-GAMEL( 1990, overdrivb, overdriv, overdriv, overdriv, driver_device, 0, ROT90, "Konami", "Over Drive (set 3)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_NOT_WORKING | MACHINE_SUPPORTS_SAVE, layout_overdriv )
+GAMEL( 1990, overdriv, 0, overdriv, overdriv, driver_device, 0, ROT90, "Konami", "Over Drive (set 1)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_NOT_WORKING | MACHINE_SUPPORTS_SAVE, layout_overdriv ) // US version
+GAMEL( 1990, overdriva, overdriv, overdriv, overdriv, driver_device, 0, ROT90, "Konami", "Over Drive (set 2)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_NOT_WORKING | MACHINE_SUPPORTS_SAVE, layout_overdriv ) // Overseas?
+GAMEL( 1990, overdrivb, overdriv, overdriv, overdriv, driver_device, 0, ROT90, "Konami", "Over Drive (set 3)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_NOT_WORKING | MACHINE_SUPPORTS_SAVE, layout_overdriv ) // Overseas?
diff --git a/src/mame/drivers/p2000t.cpp b/src/mame/drivers/p2000t.cpp
index 303092f96a1..0e6b48303f0 100644
--- a/src/mame/drivers/p2000t.cpp
+++ b/src/mame/drivers/p2000t.cpp
@@ -1,4 +1,4 @@
-// license:???
+// license:BSD-3-Clause
// copyright-holders:Paul Daniels
/************************************************************************
Philips P2000 1 Memory map
diff --git a/src/mame/drivers/p8k.cpp b/src/mame/drivers/p8k.cpp
index 8288f6704e9..8a6ed441127 100644
--- a/src/mame/drivers/p8k.cpp
+++ b/src/mame/drivers/p8k.cpp
@@ -515,7 +515,7 @@ static MACHINE_CONFIG_START( p8k, p8k_state )
/* sound hardware */
MCFG_SPEAKER_STANDARD_MONO("mono")
- MCFG_SOUND_ADD("beeper", BEEP, 0)
+ MCFG_SOUND_ADD("beeper", BEEP, 3250)
MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.5)
/* video hardware */
@@ -555,7 +555,7 @@ static MACHINE_CONFIG_START( p8k_16, p8k_state )
/* sound hardware */
MCFG_SPEAKER_STANDARD_MONO("mono")
- MCFG_SOUND_ADD("beeper", BEEP, 0)
+ MCFG_SOUND_ADD("beeper", BEEP, 3250)
MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.5)
/* video hardware */
diff --git a/src/mame/drivers/pacman.cpp b/src/mame/drivers/pacman.cpp
index d070e8fb3a2..053604c4e22 100644
--- a/src/mame/drivers/pacman.cpp
+++ b/src/mame/drivers/pacman.cpp
@@ -4145,6 +4145,48 @@ ROM_START( clubpacm )
ROM_LOAD( "m7611.3m", 0x0100, 0x0100, CRC(0e307106) SHA1(6140b5339008dd3110cd5be2e2fb4813779dfe28) ) /* timing - not used */
ROM_END
+ROM_START( clubpacma )
+ ROM_REGION( 0x10000, "maincpu", 0 )
+ ROM_LOAD( "new_club.bin", 0x0000, 0x4000, CRC(6d79d3f2) SHA1(61ac436b4dc30b074e6c95f13efbf66f9aa1e2f7) )
+ ROM_CONTINUE(0x8000,0x4000)
+
+ ROM_REGION( 0x2000, "gfx1", 0 )
+ ROM_LOAD( "12.5e", 0x0000, 0x0800, CRC(93933d1d) SHA1(fa38d2cb87e872bb9a3158a4df98f38360dc85ec) )
+ ROM_LOAD( "14.5h", 0x0800, 0x0800, CRC(7409fbec) SHA1(f440f08ba026ae6172666e1bdc0894ce33bba420) )
+ ROM_LOAD( "13.5f", 0x1000, 0x0800, CRC(22b0188a) SHA1(a9ed9ca8b36a60081fd364abc9bc23963932cc0b) )
+ ROM_LOAD( "15.5j", 0x1800, 0x0800, CRC(50c7477d) SHA1(c04ec282a8cb528df5e38ad750d12ee71612695d) )
+
+ // Color PROMs have been dumped. They match the pacman/mspacman ones
+ ROM_REGION( 0x0120, "proms", 0 )
+ ROM_LOAD( "n82s123n.7f", 0x0000, 0x0020, CRC(2fc650bd) SHA1(8d0268dee78e47c712202b0ec4f1f51109b1f2a5) )
+ ROM_LOAD( "m7611.4a", 0x0020, 0x0100, CRC(3eb3a8e4) SHA1(19097b5f60d1030f8b82d9f1d3a241f93e5c75d6) )
+
+ ROM_REGION( 0x0200, "namco", 0 ) /* sound PROMs */
+ ROM_LOAD( "m7611.1m", 0x0000, 0x0100, CRC(a9cc86bf) SHA1(bbcec0570aeceb582ff8238a4bc8546a23430081) )
+ ROM_LOAD( "m7611.3m", 0x0100, 0x0100, CRC(0e307106) SHA1(6140b5339008dd3110cd5be2e2fb4813779dfe28) ) /* timing - not used */
+ROM_END
+
+ROM_START( clubpacmb )
+ ROM_REGION( 0x10000, "maincpu", 0 )
+ ROM_LOAD( "new_club_d.bin", 0x0000, 0x4000, CRC(3c8ce103) SHA1(1d3fd485f68c2c1ed6f19dcee51456a4d0ab0a01) )
+ ROM_CONTINUE(0x8000,0x4000)
+
+ ROM_REGION( 0x2000, "gfx1", 0 )
+ ROM_LOAD( "12.5e", 0x0000, 0x0800, CRC(93933d1d) SHA1(fa38d2cb87e872bb9a3158a4df98f38360dc85ec) )
+ ROM_LOAD( "14.5h", 0x0800, 0x0800, CRC(7409fbec) SHA1(f440f08ba026ae6172666e1bdc0894ce33bba420) )
+ ROM_LOAD( "13.5f", 0x1000, 0x0800, CRC(22b0188a) SHA1(a9ed9ca8b36a60081fd364abc9bc23963932cc0b) )
+ ROM_LOAD( "15.5j", 0x1800, 0x0800, CRC(50c7477d) SHA1(c04ec282a8cb528df5e38ad750d12ee71612695d) )
+
+ // Color PROMs have been dumped. They match the pacman/mspacman ones
+ ROM_REGION( 0x0120, "proms", 0 )
+ ROM_LOAD( "n82s123n.7f", 0x0000, 0x0020, CRC(2fc650bd) SHA1(8d0268dee78e47c712202b0ec4f1f51109b1f2a5) )
+ ROM_LOAD( "m7611.4a", 0x0020, 0x0100, CRC(3eb3a8e4) SHA1(19097b5f60d1030f8b82d9f1d3a241f93e5c75d6) )
+
+ ROM_REGION( 0x0200, "namco", 0 ) /* sound PROMs */
+ ROM_LOAD( "m7611.1m", 0x0000, 0x0100, CRC(a9cc86bf) SHA1(bbcec0570aeceb582ff8238a4bc8546a23430081) )
+ ROM_LOAD( "m7611.3m", 0x0100, 0x0100, CRC(0e307106) SHA1(6140b5339008dd3110cd5be2e2fb4813779dfe28) ) /* timing - not used */
+ROM_END
+
ROM_START( hangly )
ROM_REGION( 0x10000, "maincpu", 0 )
@@ -6901,7 +6943,9 @@ GAME( 1992, mspacmanblt,mspacman,woodpek, mspacman, driver_device, 0, ROT
GAME( 1991, mspacmanbcc,mspacman,woodpek, mspacman, driver_device, 0, ROT90, "bootleg (Tecnausa)", "Come-Cocos (Ms. Pac-Man) ('Made in Greece' Tecnausa bootleg)", MACHINE_SUPPORTS_SAVE ) // ^ same PCB, also dated 1991, distributed by Tecnausa
GAME( 198?, pacmansp, puckman, pacman, pacmansp, driver_device, 0, ROT90, "bootleg", "Puck Man (Spanish, 'Made in Greece' bootleg)", MACHINE_SUPPORTS_SAVE ) // probably a further conversion of the mspacmanbg bootleg, still has some MS Pacman code + extra features
-GAME( 1989, clubpacm, 0, woodpek, mspacman, driver_device, 0, ROT90, "Miky SRL", "Pacman Club / Club Lambada (Argentina)", MACHINE_SUPPORTS_SAVE | MACHINE_NOT_WORKING )
+GAME( 1989, clubpacm, 0, woodpek, mspacman, driver_device, 0, ROT90, "Miky SRL", "Pacman Club / Club Lambada (Argentina)", MACHINE_SUPPORTS_SAVE | MACHINE_NOT_WORKING )
+GAME( 1990, clubpacma, clubpacm, woodpek, mspacman, driver_device, 0, ROT90, "Miky SRL", "Pacman Club (set 1, Argentina)", MACHINE_SUPPORTS_SAVE | MACHINE_NOT_WORKING )
+GAME( 1990, clubpacmb, clubpacm, woodpek, mspacman, driver_device, 0, ROT90, "Miky SRL", "Pacman Club (set 2, Argentina)", MACHINE_SUPPORTS_SAVE | MACHINE_NOT_WORKING )
GAME( 1985, jumpshot, 0, pacman, jumpshot, pacman_state, jumpshot, ROT90, "Bally Midway", "Jump Shot", MACHINE_SUPPORTS_SAVE )
GAME( 1985, jumpshotp,jumpshot, pacman, jumpshotp,pacman_state, jumpshot, ROT90, "Bally Midway", "Jump Shot Engineering Sample", MACHINE_SUPPORTS_SAVE )
diff --git a/src/mame/drivers/palm.cpp b/src/mame/drivers/palm.cpp
index f875f6eefe7..1711f63eb67 100644
--- a/src/mame/drivers/palm.cpp
+++ b/src/mame/drivers/palm.cpp
@@ -235,7 +235,7 @@ static INPUT_PORTS_START( palm )
PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_BUTTON1 ) PORT_NAME("Pen Button") PORT_CODE(MOUSECODE_BUTTON1) PORT_CHANGED_MEMBER(DEVICE_SELF, palm_state, pen_check, NULL)
PORT_START( "PORTD" )
- PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_BUTTON2 ) PORT_NAME("Power") PORT_CODE(KEYCODE_D) PORT_CHANGED_MEMBER(DEVICE_SELF, palm_state, button_check, (void*)nullptr)
+ PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_BUTTON2 ) PORT_NAME("Power") PORT_CODE(KEYCODE_D) PORT_CHANGED_MEMBER(DEVICE_SELF, palm_state, button_check, (void*)0)
PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_BUTTON3 ) PORT_NAME("Up") PORT_CODE(KEYCODE_Y) PORT_CHANGED_MEMBER(DEVICE_SELF, palm_state, button_check, (void*)1)
PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_BUTTON4 ) PORT_NAME("Down") PORT_CODE(KEYCODE_H) PORT_CHANGED_MEMBER(DEVICE_SELF, palm_state, button_check, (void*)2)
PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_BUTTON5 ) PORT_NAME("Button 1") PORT_CODE(KEYCODE_F) PORT_CHANGED_MEMBER(DEVICE_SELF, palm_state, button_check, (void*)3)
diff --git a/src/mame/drivers/palmz22.cpp b/src/mame/drivers/palmz22.cpp
index b4efcdd2efc..e89bbd5c85e 100644
--- a/src/mame/drivers/palmz22.cpp
+++ b/src/mame/drivers/palmz22.cpp
@@ -237,7 +237,7 @@ READ32_MEMBER(palmz22_state::s3c2410_adc_data_r )
INPUT_CHANGED_MEMBER(palmz22_state::palmz22_input_changed)
{
- if (param == nullptr)
+ if (((int)(FPTR)param) == 0)
{
m_s3c2410->s3c2410_touch_screen( (newval & 0x01) ? 1 : 0);
}
@@ -310,7 +310,7 @@ MACHINE_CONFIG_END
static INPUT_PORTS_START( palmz22 )
PORT_START( "PENB" )
- PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_BUTTON1 ) PORT_NAME("Pen Button") PORT_CHANGED_MEMBER(DEVICE_SELF, palmz22_state, palmz22_input_changed, (void *)nullptr) PORT_PLAYER(2)
+ PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_BUTTON1 ) PORT_NAME("Pen Button") PORT_CHANGED_MEMBER(DEVICE_SELF, palmz22_state, palmz22_input_changed, (void *)0) PORT_PLAYER(2)
PORT_START( "PENX" )
PORT_BIT( 0x3ff, 0x200, IPT_LIGHTGUN_X ) PORT_NAME("Pen X") PORT_SENSITIVITY(50) PORT_CROSSHAIR(X, 1, 0, 0) PORT_KEYDELTA(30) PORT_PLAYER(2)
PORT_START( "PENY" )
diff --git a/src/mame/drivers/pasha2.cpp b/src/mame/drivers/pasha2.cpp
index a9036920e62..0c2c05a645b 100644
--- a/src/mame/drivers/pasha2.cpp
+++ b/src/mame/drivers/pasha2.cpp
@@ -96,7 +96,6 @@ public:
/* video-related */
int m_vbuffer;
- int m_old_bank;
/* memory */
UINT16 m_bitmap0[0x40000/2];
@@ -131,20 +130,15 @@ WRITE16_MEMBER(pasha2_state::pasha2_misc_w)
{
int bank = data & 0xf000;
- if (bank != m_old_bank)
+ switch (bank)
{
- m_old_bank = bank;
-
- switch (bank)
- {
- case 0x8000:
- case 0x9000:
- case 0xa000:
- case 0xb000:
- case 0xc000:
- case 0xd000:
- membank("bank1")->set_base(memregion("user2")->base() + 0x400 * (bank - 0x8000)); break;
- }
+ case 0x8000:
+ case 0x9000:
+ case 0xa000:
+ case 0xb000:
+ case 0xc000:
+ case 0xd000:
+ membank("bank1")->set_entry((bank - 0x8000)>>12); break;
}
}
}
@@ -218,6 +212,7 @@ WRITE16_MEMBER(pasha2_state::oki2_bank_w)
WRITE16_MEMBER(pasha2_state::pasha2_lamps_w)
{
+#ifdef MAME_DEBUG
if (data)
popmessage("1P: %c%c%c 2P: %c%c%c 3P: %c%c%c",
(data & 0x001) ? 'R' : '-',
@@ -229,6 +224,7 @@ WRITE16_MEMBER(pasha2_state::pasha2_lamps_w)
(data & 0x100) ? 'R' : '-',
(data & 0x200) ? 'G' : '-',
(data & 0x400) ? 'B' : '-');
+#endif
}
static ADDRESS_MAP_START( pasha2_map, AS_PROGRAM, 16, pasha2_state )
@@ -405,13 +401,11 @@ UINT32 pasha2_state::screen_update_pasha2(screen_device &screen, bitmap_ind16 &b
void pasha2_state::machine_start()
{
- save_item(NAME(m_old_bank));
save_item(NAME(m_vbuffer));
}
void pasha2_state::machine_reset()
{
- m_old_bank = -1;
m_vbuffer = 0;
}
@@ -486,7 +480,8 @@ DRIVER_INIT_MEMBER(pasha2_state,pasha2)
{
m_maincpu->space(AS_PROGRAM).install_read_handler(0x95744, 0x95747, read16_delegate(FUNC(pasha2_state::pasha2_speedup_r), this));
- membank("bank1")->set_base(memregion("user2")->base());
+ membank("bank1")->configure_entries(0, 6, memregion("user2")->base(), 0x400000);
+ membank("bank1")->set_entry(0);
}
GAME( 1998, pasha2, 0, pasha2, pasha2, pasha2_state, pasha2, ROT0, "Dong Sung", "Pasha Pasha 2", MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE )
diff --git a/src/mame/drivers/pb1000.cpp b/src/mame/drivers/pb1000.cpp
index 88eafd1d1b2..f2f2151fe07 100644
--- a/src/mame/drivers/pb1000.cpp
+++ b/src/mame/drivers/pb1000.cpp
@@ -504,7 +504,7 @@ static MACHINE_CONFIG_START( pb1000, pb1000_state )
/* sound hardware */
MCFG_SPEAKER_STANDARD_MONO( "mono" )
- MCFG_SOUND_ADD( "beeper", BEEP, 0 )
+ MCFG_SOUND_ADD( "beeper", BEEP, 3250 )
MCFG_SOUND_ROUTE( ALL_OUTPUTS, "mono", 1.00 )
MACHINE_CONFIG_END
diff --git a/src/mame/drivers/pc100.cpp b/src/mame/drivers/pc100.cpp
index 1f8cff5ce83..01ba55c2bda 100644
--- a/src/mame/drivers/pc100.cpp
+++ b/src/mame/drivers/pc100.cpp
@@ -398,7 +398,6 @@ void pc100_state::machine_start()
void pc100_state::machine_reset()
{
- m_beeper->set_frequency(2400);
m_beeper->set_state(0);
}
@@ -499,7 +498,7 @@ static MACHINE_CONFIG_START( pc100, pc100_state )
MCFG_SPEAKER_STANDARD_MONO("mono")
- MCFG_SOUND_ADD("beeper", BEEP, 0)
+ MCFG_SOUND_ADD("beeper", BEEP, 2400)
MCFG_SOUND_ROUTE(ALL_OUTPUTS,"mono",0.50)
MACHINE_CONFIG_END
diff --git a/src/mame/drivers/pc2000.cpp b/src/mame/drivers/pc2000.cpp
index 6329a750815..b207dd72fec 100644
--- a/src/mame/drivers/pc2000.cpp
+++ b/src/mame/drivers/pc2000.cpp
@@ -747,9 +747,8 @@ void pc2000_state::machine_start()
{
std::string region_tag;
UINT8 *bios = memregion("bios")->base();
- UINT8 *cart = memregion(region_tag.assign(m_cart->tag()).append(GENERIC_ROM_REGION_TAG).c_str())->base();
- if (!cart)
- cart = memregion("bios")->base();
+ memory_region *cart_region = memregion(region_tag.assign(m_cart->tag()).append(GENERIC_ROM_REGION_TAG).c_str());
+ UINT8 *cart = (cart_region != NULL) ? cart_region->base() : memregion("bios")->base();
m_bank0->configure_entries(0, 0x10, bios, 0x4000);
m_bank1->configure_entries(0, 0x10, bios, 0x4000);
@@ -761,9 +760,8 @@ void gl4004_state::machine_start()
{
std::string region_tag;
UINT8 *bios = memregion("bios")->base();
- UINT8 *cart = memregion(region_tag.assign(m_cart->tag()).append(GENERIC_ROM_REGION_TAG).c_str())->base();
- if (!cart)
- cart = memregion("bios")->base();
+ memory_region *cart_region = memregion(region_tag.assign(m_cart->tag()).append(GENERIC_ROM_REGION_TAG).c_str());
+ UINT8 *cart = (cart_region != NULL) ? cart_region->base() : memregion("bios")->base();
m_bank0->configure_entries(0, 0x20, bios, 0x4000);
m_bank1->configure_entries(0, 0x20, bios, 0x4000);
@@ -850,7 +848,7 @@ static MACHINE_CONFIG_START( pc2000, pc2000_state )
/* sound hardware */
MCFG_SPEAKER_STANDARD_MONO( "mono" )
- MCFG_SOUND_ADD( "beeper", BEEP, 0 )
+ MCFG_SOUND_ADD( "beeper", BEEP, 3250 )
MCFG_SOUND_ROUTE( ALL_OUTPUTS, "mono", 1.00 )
MCFG_GENERIC_CARTSLOT_ADD("cartslot", generic_plain_slot, "genius_cart")
@@ -937,6 +935,7 @@ MACHINE_CONFIG_END
static MACHINE_CONFIG_DERIVED( pc1000, misterx )
MCFG_SOFTWARE_LIST_REMOVE("cart_list")
+ MCFG_SOFTWARE_LIST_REMOVE("pc1000_cart")
MCFG_SOFTWARE_LIST_ADD("cart_list", "pc1000")
MCFG_SOFTWARE_LIST_COMPATIBLE_ADD("misterx_cart", "misterx")
MACHINE_CONFIG_END
diff --git a/src/mame/drivers/pc4.cpp b/src/mame/drivers/pc4.cpp
index 014feebe6cb..a930b4af622 100644
--- a/src/mame/drivers/pc4.cpp
+++ b/src/mame/drivers/pc4.cpp
@@ -233,7 +233,7 @@ static MACHINE_CONFIG_START( pc4, pc4_state )
/* sound hardware */
MCFG_SPEAKER_STANDARD_MONO( "mono" )
- MCFG_SOUND_ADD( "beeper", BEEP, 0 )
+ MCFG_SOUND_ADD( "beeper", BEEP, 3250 )
MCFG_SOUND_ROUTE( ALL_OUTPUTS, "mono", 1.00 )
MCFG_DEVICE_ADD("rtc", RP5C01, XTAL_32_768kHz)
diff --git a/src/mame/drivers/pc8801.cpp b/src/mame/drivers/pc8801.cpp
index d9debc10f5d..091d394d1d2 100644
--- a/src/mame/drivers/pc8801.cpp
+++ b/src/mame/drivers/pc8801.cpp
@@ -2448,7 +2448,6 @@ void pc8801_state::machine_reset()
m_crtc.status = 0;
}
- m_beeper->set_frequency(2400);
m_beeper->set_state(0);
#ifdef USE_PROPER_I8214
@@ -2640,7 +2639,7 @@ static MACHINE_CONFIG_START( pc8801, pc8801_state )
MCFG_AY8910_PORT_B_READ_CB(READ8(pc8801_state, opn_portb_r))
MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.00)
- MCFG_SOUND_ADD("beeper", BEEP, 0)
+ MCFG_SOUND_ADD("beeper", BEEP, 2400)
MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.10)
MCFG_TIMER_DRIVER_ADD_PERIODIC("rtc_timer", pc8801_state, pc8801_rtc_irq, attotime::from_hz(600))
diff --git a/src/mame/drivers/pc9801.cpp b/src/mame/drivers/pc9801.cpp
index 420c1cc8fbf..66670fe7c9a 100644
--- a/src/mame/drivers/pc9801.cpp
+++ b/src/mame/drivers/pc9801.cpp
@@ -425,6 +425,7 @@ Keyboard TX commands:
#include "machine/pc9801_118.h"
#include "machine/pc9801_cbus.h"
#include "machine/pc9801_kbd.h"
+#include "machine/pc9801_cd.h"
#include "machine/idectrl.h"
#include "machine/idehd.h"
@@ -1425,7 +1426,20 @@ void pc9801_state::egc_blit_w(UINT32 offset, UINT16 data, UINT16 mem_mask)
}
// mask off the bits past the end of the blit
- if(m_egc.count < 16)
+ if((m_egc.count < 8) && (mem_mask != 0xffff))
+ {
+ UINT16 end_mask = dir ? ((1 << m_egc.count) - 1) : ~((1 << (8 - m_egc.count)) - 1);
+ // if the blit is less than 8 bits, adjust the masks
+ if(m_egc.first)
+ {
+ if(dir)
+ end_mask <<= dst_off & 7;
+ else
+ end_mask >>= dst_off & 7;
+ }
+ mask &= end_mask;
+ }
+ else if((m_egc.count < 16) && (mem_mask == 0xffff))
{
UINT16 end_mask = dir ? ((1 << m_egc.count) - 1) : ~((1 << (16 - m_egc.count)) - 1);
// if the blit is less than 16 bits, adjust the masks
@@ -1456,11 +1470,6 @@ void pc9801_state::egc_blit_w(UINT32 offset, UINT16 data, UINT16 mem_mask)
out = data;
break;
case 1:
- if(mem_mask == 0x00ff)
- src = src | src << 8;
- else if(mem_mask == 0xff00)
- src = src | src >> 8;
-
out = egc_do_partial_op(i, src, pat, m_video_ram_2[offset + (((i + 1) & 3) * 0x4000)]);
break;
case 2:
@@ -2262,7 +2271,7 @@ static ADDRESS_MAP_START( pc9801rs_io, AS_IO, 16, pc9801_state )
AM_RANGE(0x0430, 0x0433) AM_READWRITE8(ide_ctrl_r, ide_ctrl_w, 0x00ff)
AM_RANGE(0x0640, 0x064f) AM_READWRITE(ide_cs0_r, ide_cs0_w)
AM_RANGE(0x0740, 0x074f) AM_READWRITE(ide_cs1_r, ide_cs1_w)
- AM_RANGE(0x1e80, 0x1e8f) AM_NOP // temp
+ AM_RANGE(0x1e8c, 0x1e8f) AM_NOP // temp
AM_RANGE(0xbfd8, 0xbfdf) AM_WRITE8(pc9801rs_mouse_freq_w, 0xffff)
AM_RANGE(0xe0d0, 0xe0d3) AM_READ8(pc9801rs_midi_r, 0xffff)
AM_IMPORT_FROM(pc9801ux_io)
@@ -2511,6 +2520,7 @@ static ADDRESS_MAP_START( pc9821_io, AS_IO, 32, pc9801_state )
// AM_RANGE(0x0c2d, 0x0c2d) cs4231 PCM board hi byte control
// AM_RANGE(0x0cc0, 0x0cc7) SCSI interface / <undefined>
// AM_RANGE(0x0cfc, 0x0cff) PCI bus
+ AM_RANGE(0x1e8c, 0x1e8f) AM_NOP // IDE RAM switch
AM_RANGE(0x3fd8, 0x3fdf) AM_DEVREADWRITE8("pit8253", pit8253_device, read, write, 0xff00ff00) // <undefined> / pit mirror ports
AM_RANGE(0x7fd8, 0x7fdf) AM_DEVREADWRITE8("ppi8255_mouse", i8255_device, read, write, 0xff00ff00)
AM_RANGE(0x841c, 0x841f) AM_READWRITE8(sdip_0_r,sdip_0_w,0xffffffff)
@@ -3116,7 +3126,6 @@ MACHINE_RESET_MEMBER(pc9801_state,pc9801_common)
m_tvram[(0x3fe0>>1)+i] = default_memsw_data[i];
}
- m_beeper->set_frequency(2400);
m_beeper->set_state(0);
m_nmi_ff = 0;
@@ -3219,6 +3228,10 @@ TIMER_DEVICE_CALLBACK_MEMBER( pc9801_state::mouse_irq_cb )
}
}
+SLOT_INTERFACE_START(pc9801_atapi_devices)
+ SLOT_INTERFACE("pc9801_cd", PC9801_CD)
+SLOT_INTERFACE_END
+
static MACHINE_CONFIG_FRAGMENT( pc9801_keyboard )
MCFG_DEVICE_ADD("keyb", PC9801_KBD, 53)
MCFG_PC9801_KBD_IRQ_CALLBACK(DEVWRITELINE("pic8259_master", pic8259_device, ir1_w))
@@ -3267,7 +3280,7 @@ MACHINE_CONFIG_END
static MACHINE_CONFIG_FRAGMENT( pc9801_ide )
MCFG_ATA_INTERFACE_ADD("ide1", ata_devices, "hdd", nullptr, false)
MCFG_ATA_INTERFACE_IRQ_HANDLER(WRITELINE(pc9801_state, ide1_irq_w))
- MCFG_ATA_INTERFACE_ADD("ide2", ata_devices, "cdrom", nullptr, false)
+ MCFG_ATA_INTERFACE_ADD("ide2", pc9801_atapi_devices, "pc9801_cd", nullptr, false)
MCFG_ATA_INTERFACE_IRQ_HANDLER(WRITELINE(pc9801_state, ide2_irq_w))
MACHINE_CONFIG_END
@@ -3341,7 +3354,7 @@ static MACHINE_CONFIG_FRAGMENT( pc9801_common )
MCFG_SPEAKER_STANDARD_MONO("mono")
- MCFG_SOUND_ADD("beeper", BEEP, 0)
+ MCFG_SOUND_ADD("beeper", BEEP, 2400)
MCFG_SOUND_ROUTE(ALL_OUTPUTS,"mono",0.15)
MCFG_GFXDECODE_ADD("gfxdecode", "palette", pc9801)
MACHINE_CONFIG_END
diff --git a/src/mame/drivers/pce220.cpp b/src/mame/drivers/pce220.cpp
index ba9c8ab650d..a721f4420e7 100644
--- a/src/mame/drivers/pce220.cpp
+++ b/src/mame/drivers/pce220.cpp
@@ -942,7 +942,7 @@ static MACHINE_CONFIG_START( pce220, pce220_state )
/* sound hardware */
MCFG_SPEAKER_STANDARD_MONO("mono")
- MCFG_SOUND_ADD("beeper", BEEP, 0)
+ MCFG_SOUND_ADD("beeper", BEEP, 3250)
MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.50)
MCFG_TIMER_DRIVER_ADD_PERIODIC("pce220_timer", pce220_state, pce220_timer_callback, attotime::from_msec(468))
@@ -978,7 +978,7 @@ static MACHINE_CONFIG_START( pcg850v, pcg850v_state )
/* sound hardware */
MCFG_SPEAKER_STANDARD_MONO("mono")
- MCFG_SOUND_ADD("beeper", BEEP, 0)
+ MCFG_SOUND_ADD("beeper", BEEP, 3250)
MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.50)
MCFG_TIMER_DRIVER_ADD_PERIODIC("pce220_timer", pce220_state, pce220_timer_callback, attotime::from_msec(468))
diff --git a/src/mame/drivers/pcw.cpp b/src/mame/drivers/pcw.cpp
index e98b7cae2f1..8b9a302c1a5 100644
--- a/src/mame/drivers/pcw.cpp
+++ b/src/mame/drivers/pcw.cpp
@@ -996,7 +996,6 @@ ADDRESS_MAP_END
TIMER_CALLBACK_MEMBER(pcw_state::setup_beep)
{
m_beeper->set_state(0);
- m_beeper->set_frequency(3750);
}
@@ -1286,7 +1285,7 @@ static MACHINE_CONFIG_START( pcw, pcw_state )
/* sound hardware */
MCFG_SPEAKER_STANDARD_MONO("mono")
- MCFG_SOUND_ADD("beeper", BEEP, 0)
+ MCFG_SOUND_ADD("beeper", BEEP, 3750)
MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.00)
MCFG_UPD765A_ADD("upd765", true, true)
@@ -1350,7 +1349,7 @@ MACHINE_CONFIG_END
ROM_START(pcw8256)
ROM_REGION(0x10000,"maincpu",0)
- ROM_FILL(0x0000,0x10000,nullptr) \
+ ROM_FILL(0x0000,0x10000,0x00)
ROM_REGION(0x400,"printer_mcu",0) // i8041 9-pin dot-matrix
ROM_LOAD("40026.ic701", 0, 0x400, CRC(ee8890ae) SHA1(91679cc5e07464ac55ef9a10f7095b2438223332))
ROM_REGION(0x400,"keyboard_mcu",0) // i8048
@@ -1359,7 +1358,7 @@ ROM_END
ROM_START(pcw8512)
ROM_REGION(0x10000,"maincpu",0)
- ROM_FILL(0x0000,0x10000,nullptr) \
+ ROM_FILL(0x0000,0x10000,0x00)
ROM_REGION(0x400,"printer_mcu",0) // i8041 9-pin dot-matrix
ROM_LOAD("40026.ic701", 0, 0x400, CRC(ee8890ae) SHA1(91679cc5e07464ac55ef9a10f7095b2438223332))
ROM_REGION(0x400,"keyboard_mcu",0) // i8048
@@ -1368,7 +1367,7 @@ ROM_END
ROM_START(pcw9256)
ROM_REGION(0x10000,"maincpu",0)
- ROM_FILL(0x0000,0x10000,nullptr) \
+ ROM_FILL(0x0000,0x10000,0x00)
ROM_REGION(0x2000,"printer_mcu",0) // i8041 9-pin dot-matrix
ROM_LOAD("40026.ic701", 0, 0x400, CRC(ee8890ae) SHA1(91679cc5e07464ac55ef9a10f7095b2438223332))
ROM_REGION(0x400,"keyboard_mcu",0) // i8048
@@ -1377,7 +1376,7 @@ ROM_END
ROM_START(pcw9512)
ROM_REGION(0x10000,"maincpu",0)
- ROM_FILL(0x0000,0x10000,nullptr) \
+ ROM_FILL(0x0000,0x10000,0x00)
ROM_REGION(0x2000,"printer_mcu",0) // i8041 daisywheel (schematics say i8039?)
ROM_LOAD("40103.ic109", 0, 0x2000, CRC(a64d450a) SHA1(ebbf0ef19d39912c1c127c748514dd299915f88b))
ROM_REGION(0x400,"keyboard_mcu",0) // i8048
@@ -1386,7 +1385,7 @@ ROM_END
ROM_START(pcw10)
ROM_REGION(0x10000,"maincpu",0)
- ROM_FILL(0x0000,0x10000,nullptr) \
+ ROM_FILL(0x0000,0x10000,0x00)
ROM_REGION(0x2000,"printer_mcu",0) // i8041 9-pin dot matrix
ROM_LOAD("40026.ic701", 0, 0x400, CRC(ee8890ae) SHA1(91679cc5e07464ac55ef9a10f7095b2438223332))
ROM_REGION(0x400,"keyboard_mcu",0) // i8048
diff --git a/src/mame/drivers/pcw16.cpp b/src/mame/drivers/pcw16.cpp
index ec455d8ff0f..2ec10e086a6 100644
--- a/src/mame/drivers/pcw16.cpp
+++ b/src/mame/drivers/pcw16.cpp
@@ -987,7 +987,6 @@ void pcw16_state::machine_start()
m_interrupt_counter = 0;
m_beeper->set_state(0);
- m_beeper->set_frequency(3750);
}
static INPUT_PORTS_START(pcw16)
@@ -1049,7 +1048,7 @@ static MACHINE_CONFIG_START( pcw16, pcw16_state )
/* sound hardware */
MCFG_SPEAKER_STANDARD_MONO("mono")
- MCFG_SOUND_ADD("beeper", BEEP, 0)
+ MCFG_SOUND_ADD("beeper", BEEP, 3750)
MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.00)
/* printer */
diff --git a/src/mame/drivers/pcxt.cpp b/src/mame/drivers/pcxt.cpp
index f4497d6c603..e99040f1991 100644
--- a/src/mame/drivers/pcxt.cpp
+++ b/src/mame/drivers/pcxt.cpp
@@ -409,7 +409,7 @@ WRITE8_MEMBER(pcxt_state::port_b_w)
// popmessage("%02x\n",data);
// beep->beep_set_state(0);
// beep->beep_set_state(1);
-// beep->beep_set_frequency(m_port_b_data);
+// beep->beep_set_clock(m_port_b_data);
}
WRITE8_MEMBER(pcxt_state::wss_1_w)
diff --git a/src/mame/drivers/peoplepc.cpp b/src/mame/drivers/peoplepc.cpp
index ca391820999..12149daa4fb 100644
--- a/src/mame/drivers/peoplepc.cpp
+++ b/src/mame/drivers/peoplepc.cpp
@@ -176,7 +176,7 @@ void peoplepc_state::machine_reset()
void peoplepc_state::machine_start()
{
- m_gfxdecode->set_gfx(0, std::make_unique<gfx_element>(machine().device<palette_device>("palette"), peoplepc_charlayout, &m_charram[0], 0, 1, 0));
+ m_gfxdecode->set_gfx(0, std::make_unique<gfx_element>(*m_palette, peoplepc_charlayout, &m_charram[0], 0, 1, 0));
m_dma0pg = 0;
// FIXME: cheat as there no docs about how or obvious ports that set to control the motor
diff --git a/src/mame/drivers/peplus.cpp b/src/mame/drivers/peplus.cpp
index 28304a19c49..216996c1464 100644
--- a/src/mame/drivers/peplus.cpp
+++ b/src/mame/drivers/peplus.cpp
@@ -6909,12 +6909,15 @@ MG0183 has 4 poker games:
Also uses a Dallas (Maxim) DS1216 SmartWatch RAM for RTC (Real Time Clock) functions
Came out of an IGT machine with belly glass calling it Montana Choice
+
+Currently stalls with "PRINTER ERROR"
+
*/
ROM_REGION( 0x10000, "maincpu", 0 )
- ROM_LOAD( "mg0183_756-782.u68", 0x00000, 0x10000, CRC(b89bcf75) SHA1(f436eb604c81ba6f08e1d11029ce8fff4f50dc3e) ) /* Stalls with "PRINTER ERROR" */
+ ROM_LOAD( "mg0183_756-782.u68", 0x00000, 0x10000, CRC(b89bcf75) SHA1(f436eb604c81ba6f08e1d11029ce8fff4f50dc3e) ) /* Game Version: 756, Library Version: 782 - 05/10/95 IGT MT */
ROM_REGION( 0x020000, "gfx1", 0 )
- ROM_LOAD( "mro-cg1209.u72", 0x00000, 0x8000, CRC(39b0cc43) SHA1(0a95a7122e64fed7355e762ff2eda2a7246d4693) )
+ ROM_LOAD( "mro-cg1209.u72", 0x00000, 0x8000, CRC(39b0cc43) SHA1(0a95a7122e64fed7355e762ff2eda2a7246d4693) ) /* 07/07/93 IGT MT */
ROM_LOAD( "mgo-cg1209.u73", 0x08000, 0x8000, CRC(5285ffab) SHA1(e959bf2fec46ee62d7a625eb64f74635fd697643) )
ROM_LOAD( "mbo-cg1209.u74", 0x10000, 0x8000, CRC(4604ac16) SHA1(b3a7c6c807eb2be7f451d2fcbb6455a66c155a46) )
ROM_LOAD( "mxo-cg1209.u75", 0x18000, 0x8000, CRC(da344256) SHA1(1320c4a8b48a9e61a4607e0a9d08083fde2bd334) )
@@ -6944,9 +6947,12 @@ Requires a printer for ticket payout (no coins) made by Star Micronics Co. Ltd.
8.00MHz OSC and the LP 86 (handwritten label) EPROM
Some Player's Choice machines contain and use a touchscreen for input
+
+Currently stalls with "PRINTER ERROR"
+
*/
ROM_REGION( 0x10000, "maincpu", 0 )
- ROM_LOAD( "mg0252_752-778.u68", 0x00000, 0x10000, CRC(1d0ba4f1) SHA1(f906a11d171318a06fb0bb09783bd8e3b99f1ca9) ) /* Stalls with "PRINTER ERROR" */
+ ROM_LOAD( "mg0252_752-778.u68", 0x00000, 0x10000, CRC(1d0ba4f1) SHA1(f906a11d171318a06fb0bb09783bd8e3b99f1ca9) ) /* Game Version: 752, Library Version: 778 */
ROM_REGION( 0x020000, "gfx1", 0 )
ROM_LOAD( "mro-cg2076.u72", 0x00000, 0x8000, CRC(84634f0e) SHA1(8f1b9aaa92e861f00569053c1112c2fb7eb577e8) )
diff --git a/src/mame/drivers/phoenix.cpp b/src/mame/drivers/phoenix.cpp
index d6d8d1ca4d1..f552d9b90b5 100644
--- a/src/mame/drivers/phoenix.cpp
+++ b/src/mame/drivers/phoenix.cpp
@@ -1,4 +1,4 @@
-// license:???
+// license:BSD-3-Clause
// copyright-holders:Richard Davies
/***************************************************************************
diff --git a/src/mame/drivers/playch10.cpp b/src/mame/drivers/playch10.cpp
index 1a044e7e2ec..3de354d2a38 100644
--- a/src/mame/drivers/playch10.cpp
+++ b/src/mame/drivers/playch10.cpp
@@ -1726,7 +1726,7 @@ GAME( 1988, pc_pinbt, playch10, playch10_hboard, playch10, playch10_state, pchbo
/* i-Board Games */
GAME( 1989, pc_cshwk, playch10, playch10, playch10, playch10_state, pciboard, ROT0, "Rare (Nintendo of America license)", "Captain Sky Hawk (PlayChoice-10)", 0 )
-GAME( 1990, pc_sjetm, playch10, playch10, playch10, playch10_state, pciboard, ROT0, "Rare", "Solar Jetman (PlayChoice-10)", 0 )
+GAME( 1990, pc_sjetm, playch10, playch10, playch10, playch10_state, pciboard, ROT0, "Rare", "Solar Jetman (PlayChoice-10)", MACHINE_IMPERFECT_GRAPHICS )
/* K-Board Games */
GAME( 1991, pc_moglf, playch10, playch10, playch10, playch10_state, pckboard, ROT0, "Nintendo", "Mario's Open Golf (PlayChoice-10)", 0 )
diff --git a/src/mame/drivers/polyplay.cpp b/src/mame/drivers/polyplay.cpp
index f714f28dc77..1ff225d896b 100644
--- a/src/mame/drivers/polyplay.cpp
+++ b/src/mame/drivers/polyplay.cpp
@@ -1,4 +1,4 @@
-// license:???
+// license:BSD-3-Clause
// copyright-holders:Martin Buchholz
/***************************************************************************
@@ -341,4 +341,4 @@ TIMER_DEVICE_CALLBACK_MEMBER(polyplay_state::polyplay_timer_callback)
}
/* game driver */
-GAME( 1985, polyplay, 0, polyplay, polyplay, driver_device, 0, ROT0, "VEB Polytechnik Karl-Marx-Stadt", "Poly-Play", 0 )
+GAME( 1986, polyplay, 0, polyplay, polyplay, driver_device, 0, ROT0, "VEB Polytechnik Karl-Marx-Stadt", "Poly-Play", 0 )
diff --git a/src/mame/drivers/popeye.cpp b/src/mame/drivers/popeye.cpp
index 84025e84edd..dae6386b45f 100644
--- a/src/mame/drivers/popeye.cpp
+++ b/src/mame/drivers/popeye.cpp
@@ -1,11 +1,10 @@
-// license:???
-// copyright-holders:Marc Lafontaine, Couriersud
+// license:BSD-3-Clause
+// copyright-holders:Nicola Salmoria, Couriersud
+// thanks-to: Marc Lafontaine
/***************************************************************************
Popeye (c) 1982 Nintendo
-driver by Marc Lafontaine
-
To enter service mode, reset keeping the service button pressed.
Notes:
diff --git a/src/mame/drivers/prestige.cpp b/src/mame/drivers/prestige.cpp
index 5259abb3ca5..4b7131f82d4 100644
--- a/src/mame/drivers/prestige.cpp
+++ b/src/mame/drivers/prestige.cpp
@@ -625,9 +625,15 @@ void prestige_state::machine_start()
m_cart_rom = memregion(region_tag.assign(m_cart->tag()).append(GENERIC_ROM_REGION_TAG).c_str());
UINT8 *rom = memregion("maincpu")->base();
- UINT8 *cart = m_cart_rom->base();
- if (cart == nullptr)
+ UINT8 *cart = NULL;
+ if (m_cart_rom != NULL)
+ {
+ cart = m_cart_rom->base();
+ }
+ else
+ {
cart = rom + 0x40000; // internal ROM also includes extra contents that are activated by a cartridge that works as a jumper
+ }
UINT8 *ram = m_ram->pointer();
memset(ram, 0x00, m_ram->size());
@@ -769,6 +775,7 @@ MACHINE_CONFIG_END
static MACHINE_CONFIG_DERIVED( snotec, glcolor )
MCFG_SOFTWARE_LIST_REMOVE("cart_list")
+ MCFG_SOFTWARE_LIST_REMOVE("snotec_cart")
MCFG_SOFTWARE_LIST_ADD("cart_list", "snotec")
MCFG_SOFTWARE_LIST_COMPATIBLE_ADD("glcolor_cart", "glcolor")
MACHINE_CONFIG_END
diff --git a/src/mame/drivers/proconn.cpp b/src/mame/drivers/proconn.cpp
index 4f74c8bdf20..9c7a5cd75ef 100644
--- a/src/mame/drivers/proconn.cpp
+++ b/src/mame/drivers/proconn.cpp
@@ -189,7 +189,7 @@ protected:
required_device<z80dart_device> m_z80sio;
required_device<ay8910_device> m_ay;
required_device<meters_device> m_meters;
-
+
public:
int m_meter;
DECLARE_DRIVER_INIT(proconn);
@@ -379,7 +379,7 @@ static MACHINE_CONFIG_START( proconn, proconn_state )
MCFG_SOUND_ADD("aysnd", AY8910, 1000000) /* ?? Mhz */ // YM2149F on PC92?
MCFG_AY8910_PORT_B_WRITE_CB(WRITE8(proconn_state, meter_w))
MCFG_SOUND_ROUTE(ALL_OUTPUTS, "rspeaker", 0.33)
-
+
MCFG_DEVICE_ADD("meters", METERS, 0)
MCFG_METERS_NUMBER(8)
MACHINE_CONFIG_END
diff --git a/src/mame/drivers/prophet600.cpp b/src/mame/drivers/prophet600.cpp
index c191d31d846..b422edc2dd0 100644
--- a/src/mame/drivers/prophet600.cpp
+++ b/src/mame/drivers/prophet600.cpp
@@ -3,9 +3,9 @@
/***************************************************************************
prophet600.cpp - Sequential Circuits Prophet-600, designed by Dave Smith
-
- This was the first commercial synthesizer with built-in MIDI.
-
+
+ This was the first commercial synthesizer with built-in MIDI.
+
Skeleton driver by R. Belmont
Hardware:
@@ -18,34 +18,34 @@
0x4000-0x4001: DAC for CV/gate drive
0x6000-0x6001: 6850 writes
0xe000-0xe001: 6850 reads
-
+
I/O map:
- 00-07: 8253 PIT
+ 00-07: 8253 PIT
08: set row to scan for keyboard/panel input and LED / lamp output
09: read: analog comparitor, some value vs. the DAC. write: output for LEDs/lamps
- comparitor bits:
- bit 1: FFFStatus
- bit 2: output of 8253 channel 2
- bit 3: ADCCompare: returns sign of if current value is > or < the DAC value
-
- 0a: read: keyboard/panel input scan bits, write: select a pot on the panel for the comparitor
+ comparitor bits:
+ bit 1: FFFStatus
+ bit 2: output of 8253 channel 2
+ bit 3: ADCCompare: returns sign of if current value is > or < the DAC value
+
+ 0a: read: keyboard/panel input scan bits, write: select a pot on the panel for the comparitor
0b: write: update all gate signals
0c: ???
0d: write: select which CV signal will be updated with the current DAC value
0e: write: mask, masks
- bit 0: FFFP -FF P
- bit 1: mask gate from 8253
- bit 3: FFFD FF D
- bit 4: FFFCL -FF CL
-
-
+ bit 0: FFFP -FF P
+ bit 1: mask gate from 8253
+ bit 3: FFFD FF D
+ bit 4: FFFCL -FF CL
+
+
Info:
- Prophet 600 Technical Manual
-
+
- https://github.com/gligli/p600fw - GPLv3 licensed complete replacement firmware
for the Prophet 600, but written in C and runs on an AVR that replaces the original
Z80.
-
+
***************************************************************************/
#include "emu.h"
@@ -57,16 +57,16 @@
#include "prophet600.lh"
-#define MAINCPU_TAG "z80"
-#define PIT_TAG "pit"
-#define UART_TAG "uart"
+#define MAINCPU_TAG "z80"
+#define PIT_TAG "pit"
+#define UART_TAG "uart"
enum
{
- CV_CV_Osc1A = 0, CV_Osc2A, CV_Osc3A, CV_Osc4A, CV_Osc5A, CV_Osc6A,
- CV_Osc1B, CV_Osc2B, CV_Osc3B, CV_Osc4B, CV_Osc5B, CV_Osc6B,
- CV_Flt1, CV_Flt2, CV_Flt3, CV_Flt4, CV_Flt5, CV_Flt6,
- CV_Amp1, CV_Amp2, CV_Amp3, CV_Amp4, CV_Amp5, CV_Amp6,
+ CV_CV_Osc1A = 0, CV_Osc2A, CV_Osc3A, CV_Osc4A, CV_Osc5A, CV_Osc6A,
+ CV_Osc1B, CV_Osc2B, CV_Osc3B, CV_Osc4B, CV_Osc5B, CV_Osc6B,
+ CV_Flt1, CV_Flt2, CV_Flt3, CV_Flt4, CV_Flt5, CV_Flt6,
+ CV_Amp1, CV_Amp2, CV_Amp3, CV_Amp4, CV_Amp5, CV_Amp6,
CV_PModOscB, CV_VolA, CV_VolB, CV_MasterVol, CV_APW, CV_ExtFilter, CV_Resonance, CV_BPW,
CV_MAX
@@ -188,7 +188,7 @@ READ8_MEMBER(prophet600_state::scan_r)
WRITE8_MEMBER(prophet600_state::mask_w)
{
m_nmi_gate = (data & 0x02) ? true : false;
- if (m_nmi_gate) // gate is set, comparitor line is pulled up to Vcc
+ if (m_nmi_gate) // gate is set, comparitor line is pulled up to Vcc
{
m_comparitor |= 0x04;
}
@@ -197,7 +197,7 @@ WRITE8_MEMBER(prophet600_state::mask_w)
m_comparitor &= ~0x04;
}
-// printf("8253 gate = %x\n", data & 0x02);
+// printf("8253 gate = %x\n", data & 0x02);
}
WRITE8_MEMBER(prophet600_state::cv_w)
@@ -222,8 +222,8 @@ WRITE8_MEMBER(prophet600_state::gate_w)
}
/* Pots: Mixer=0,Cutoff=1,Resonance=2,FilEnvAmt=3,FilRel=4,FilSus=5,
- FilDec=6,FilAtt=7,AmpRel=8,AmpSus=9,AmpDec=10,AmpAtt=11,
- Glide=12,BPW=13,MVol=14,MTune=15,PitchWheel=16,ModWheel=22,
+ FilDec=6,FilAtt=7,AmpRel=8,AmpSus=9,AmpDec=10,AmpAtt=11,
+ Glide=12,BPW=13,MVol=14,MTune=15,PitchWheel=16,ModWheel=22,
Speed,APW,PModFilEnv,LFOFreq,PModOscB,LFOAmt,FreqB,FreqA,FreqBFine
*/
WRITE8_MEMBER(prophet600_state::potmux_w)
@@ -232,7 +232,7 @@ WRITE8_MEMBER(prophet600_state::potmux_w)
READ8_MEMBER(prophet600_state::comparitor_r)
{
-// m_comparitor ^= 0x04;
+// m_comparitor ^= 0x04;
return m_comparitor;
}
@@ -274,7 +274,7 @@ static MACHINE_CONFIG_START( prophet600, prophet600_state )
MCFG_PIT8253_CLK1(XTAL_8MHz/4)
MCFG_PIT8253_CLK2(XTAL_8MHz/4)
MCFG_PIT8253_OUT0_HANDLER(WRITELINE(prophet600_state, pit_ch0_tick_w))
- MCFG_PIT8253_OUT2_HANDLER(WRITELINE(prophet600_state, pit_ch2_tick_w))
+ MCFG_PIT8253_OUT2_HANDLER(WRITELINE(prophet600_state, pit_ch2_tick_w))
MCFG_DEVICE_ADD(UART_TAG, ACIA6850, 0)
MCFG_ACIA6850_TXD_HANDLER(DEVWRITELINE("mdout", midi_port_device, write_txd))
@@ -285,7 +285,7 @@ static MACHINE_CONFIG_START( prophet600, prophet600_state )
MCFG_MIDI_PORT_ADD("mdout", midiout_slot, "midiout")
- MCFG_DEVICE_ADD("acia_clock", CLOCK, XTAL_8MHz/16) // 500kHz = 16 times the MIDI rate
+ MCFG_DEVICE_ADD("acia_clock", CLOCK, XTAL_8MHz/16) // 500kHz = 16 times the MIDI rate
MCFG_CLOCK_SIGNAL_HANDLER(WRITELINE(prophet600_state, acia_clock_w))
MACHINE_CONFIG_END
diff --git a/src/mame/drivers/pse.cpp b/src/mame/drivers/pse.cpp
index 298da05319a..cb9ef265e9c 100644
--- a/src/mame/drivers/pse.cpp
+++ b/src/mame/drivers/pse.cpp
@@ -148,15 +148,30 @@ ROM_START( dpatrol )
ROM_REGION( 0x10000, "maincpu", ROMREGION_ERASE00 )
ROM_REGION( 0x0800, "roms", ROMREGION_ERASE00 )
- ROM_LOAD( "bd1.d2", 0x0000, 0x0400, CRC(e4c8e4ab) SHA1(0b989ca9369139f212dcea1d1461998f20057db8)) // computer program game code. 6341-1 or 82S181 according to Desert Patrol schematics
- ROM_LOAD( "bd1.e2", 0x0000, 0x0400, CRC(256b3320) SHA1(712573e3d9625a84c54bbe2e3edafb8879a14b2e)) // computer program game code. 6341-1 or 82S181 according to Desert Patrol schematics
+ ROM_LOAD( "bd1.d2", 0x0000, 0x0400, CRC(e4c8e4ab) SHA1(0b989ca9369139f212dcea1d1461998f20057db8)) // Computer program game code. 6341-1 or 82S181 according to Desert Patrol schematics
+ ROM_LOAD( "bd1.e2", 0x0000, 0x0400, CRC(256b3320) SHA1(712573e3d9625a84c54bbe2e3edafb8879a14b2e)) // Computer program game code. 6341-1 or 82S181 according to Desert Patrol schematics
- ROM_LOAD( "bd2.l4", 0x0000, 0x0200, CRC(bc87c648) SHA1(c4709d155aa50cc87146abd152a11de618cfd64c)) // prom 1 contains aircraft target images and explosion image. pcb has 82S141; schematics show 6341-1
- ROM_LOAD( "bd2.l1", 0x0000, 0x0800, CRC(f1e8ba9e) SHA1(605db3fdbaff4ba13729371ad0c4fbab3889378e)) // prom 2 contains parachute and man, falling man. pcb has 82S141; schematics show 6341-1
+ ROM_LOAD( "bd2.l4", 0x0000, 0x0200, CRC(bc87c648) SHA1(c4709d155aa50cc87146abd152a11de618cfd64c)) // PROM 1 contains aircraft target images and explosion image. PCB has 82S141; schematics show 6341-1
+ ROM_LOAD( "bd2.l1", 0x0000, 0x0800, CRC(f1e8ba9e) SHA1(605db3fdbaff4ba13729371ad0c4fbab3889378e)) // PROM 2 contains parachute and man, falling man. PCB has 82S141; schematics show 6341-1
- ROM_LOAD( "bd2.h7", 0x0000, 0x0020, NO_DUMP) // contains prom address codes and image speeds. Each image has its own speed and address block in the image PROM. chip is 82S123
+ ROM_LOAD( "bd2.h7", 0x0000, 0x0020, NO_DUMP) // Contains PROM address codes and image speeds. Each image has its own speed and address block in the image PROM. Chip is 82S123
- ROM_LOAD( "bd3.d1", 0x0000, 0x0020, NO_DUMP ) // data in prom is organized to produce the waveform of a human scream. Chip type is 8574 or MM6301-0J
+ ROM_LOAD( "bd3.d1", 0x0000, 0x0080, NO_DUMP ) // Data in PROM is organized to produce the waveform of a human scream. Chip type is 8574 or MM6301-0J
+ROM_END
+
+ROM_START( dpatrola )
+ ROM_REGION( 0x10000, "maincpu", ROMREGION_ERASE00 )
+
+ ROM_REGION( 0x0800, "roms", ROMREGION_ERASE00 )
+ ROM_LOAD( "bd1.d2", 0x0000, 0x0200, CRC(dd30f565) SHA1(04676adf9fe172c5332bdc9d235a899c7dbe90b5)) // Computer program game code. PCB has SN74S474; schematics show 6341-1 or 82S181
+ ROM_LOAD( "bd1.e2", 0x0000, 0x0200, CRC(e1f0941b) SHA1(57f51e9a74838708c3017c5a00e8ec33c6445e47)) // Computer program game code. PCB has SN74S474; schematics show 6341-1 or 82S181
+
+ ROM_LOAD( "bd2.l4", 0x0000, 0x0200, CRC(bc87c648) SHA1(c4709d155aa50cc87146abd152a11de618cfd64c)) // PROM 1 contains aircraft target images and explosion image. PCB has SN74S474; schematics show 6341-1
+ ROM_LOAD( "bd2.l1", 0x0000, 0x0200, CRC(4ddcc237) SHA1(6bfad6a8bf8387e93c0bb1a04b647690b3701d54)) // PROM 2 contains parachute and man, falling man. PCB has SN74S474; schematics show 6341-1
+
+ ROM_LOAD( "bd2.h7", 0x0000, 0x0020, CRC(7e8f20a2) SHA1(1fd16e10b7913bc6d949c7fc117ee80a87371777)) // Contains PROM address codes and image speeds. Each image has its own speed and address block in the image PROM. PCB had SN74S288; schematics show 82S123
+
+ ROM_LOAD( "bd3.d1", 0x0000, 0x0080, NO_DUMP ) // Data in PROM is organized to produce the waveform of a human scream. Chip type is 8574 or MM6301-0J. Was not present on dumped PCB.
ROM_END
/*
@@ -164,8 +179,8 @@ ROM_START( knightar )
ROM_REGION( 0x10000, "maincpu", ROMREGION_ERASE00 )
ROM_REGION( 0x0020, "roms", ROMREGION_ERASE00 )
- ROM_LOAD( "1.m1" ) // Man rom stores image characters of knights. 82S115P or 8205R according to KIA schematics
- ROM_LOAD( "2.m2" ) // Horse rom stores image characters of horses. 82S115P or 8205R according to KIA schematics
+ ROM_LOAD( "1.m1" ) // Man ROM stores image characters of knights. 82S115P or 8205R according to Knights in Armor schematics
+ ROM_LOAD( "2.m2" ) // Horse ROM stores image characters of horses. 82S115P or 8205R according to Knights in Armor schematics
ROM_END
*/
@@ -174,25 +189,24 @@ ROM_START( gametree )
ROM_REGION( 0x10000, "maincpu", ROMREGION_ERASE00 )
ROM_REGION( 0x0020, "roms", ROMREGION_ERASE00 )
- ROM_LOAD( "bd1.d2" ) // computer program game code. 6341-1 or 82S181 according to Game Tree schematics
- ROM_LOAD( "bd1.e2" ) // computer program game code. 6341-1 or 82S181 according to Game Tree schematics
-
- ROM_LOAD( "bd2.f12" ) // prom 1 contains squirrel and squirrel point value. 82S141 or 6341-1 according to Game Tree layout
- ROM_LOAD( "bd2.f14" ) // prom 1 contains squirrel and squirrel point value. 82S141 or 6341-1 according to Game Tree layout
-
+ ROM_LOAD( "bd1.d2" ) // Computer program game code. 6341-1 or 82S181 according to Game Tree schematics
+ ROM_LOAD( "bd1.e2" ) // Computer program game code. 6341-1 or 82S181 according to Game Tree schematics
- ROM_LOAD( "bd2.e12" ) // prom 2 contains other targets (rabbit and turkey) and point values
- ROM_LOAD( "bd2.e14" ) // prom 2 82S141 or 6341-1 according to Game Tree layout.
+ ROM_LOAD( "bd2.f12" ) // PROM 1 contains squirrel and squirrel point value. 82S141 or 6341-1 according to Game Tree layout
+ ROM_LOAD( "bd2.f14" ) // PROM 1 contains squirrel and squirrel point value. 82S141 or 6341-1 according to Game Tree layout
+ ROM_LOAD( "bd2.e12" ) // PROM 2 contains other targets (rabbit and turkey) and point values
+ ROM_LOAD( "bd2.e14" ) // PROM 2 82S141 or 6341-1 according to Game Tree layout
- ROM_LOAD( "bd2.a2" ) // contains prom address codes and image speeds. Each has its own speed and address block in the image prom.
+ ROM_LOAD( "bd2.a2" ) // Contains PROM address codes and image speeds. Each has its own speed and address block in the image PROM
- ROM_LOAD( "bd2.a3" ) // contains prom address codes and image speeds. 82S123 or 6331-1 according to Game Tree layout.
+ ROM_LOAD( "bd2.a3" ) // Contains PROM address codes and image speeds. 82S123 or 6331-1 according to Game Tree layout
ROM_END
*/
GAME( 1976, bazooka, 0, pse, 0, driver_device, 0, ROT0, "Project Support Engineering", "Bazooka [TTL]", MACHINE_IS_SKELETON )
GAME( 1977, bazookabr, bazooka, pse, 0, driver_device, 0, ROT0, "Taito do Brasil", "Bazooka (Brazil) [TTL]", MACHINE_IS_SKELETON )
GAME( 1977, dpatrol, 0, pse, 0, driver_device, 0, ROT0, "Project Support Engineering", "Desert Patrol [TTL]", MACHINE_IS_SKELETON )
+GAME( 1977, dpatrola, dpatrol, pse, 0, driver_device, 0, ROT0, "Project Support Engineering (Telegames license)", "Desert Patrol (set 2) [TTL]", MACHINE_IS_SKELETON )
//GAME( 1976, knightar, 0, pse, 0, driver_device, 0, ROT0, "Project Support Engineering", "Knights in Armor [TTL]", MACHINE_IS_SKELETON )
//GAME( 1978, gametree, 0, pse, 0, driver_device, 0, ROT0, "Project Support Engineering", "Game Tree [TTL]", MACHINE_IS_SKELETON )
diff --git a/src/mame/drivers/psikyo4.cpp b/src/mame/drivers/psikyo4.cpp
index b1c04ab7ae8..1e598ba4afc 100644
--- a/src/mame/drivers/psikyo4.cpp
+++ b/src/mame/drivers/psikyo4.cpp
@@ -351,7 +351,7 @@ static INPUT_PORTS_START( hotgmck )
PORT_START("P1_P2")
PORT_BIT( 0x000000ff, IP_ACTIVE_HIGH, IPT_UNKNOWN ) PORT_CUSTOM_MEMBER(DEVICE_SELF, driver_device,custom_port_read, "SYSTEM")
PORT_BIT( 0x00ffff00, IP_ACTIVE_LOW, IPT_UNKNOWN )
- PORT_BIT( 0xff000000, IP_ACTIVE_HIGH, IPT_UNKNOWN ) PORT_CUSTOM_MEMBER(DEVICE_SELF, psikyo4_state,mahjong_ctrl_r, (void *)nullptr)
+ PORT_BIT( 0xff000000, IP_ACTIVE_HIGH, IPT_UNKNOWN ) PORT_CUSTOM_MEMBER(DEVICE_SELF, psikyo4_state,mahjong_ctrl_r, (void *)0)
PORT_START("P3_P4")
PORT_BIT( 0x000000ff, IP_ACTIVE_HIGH, IPT_UNKNOWN ) PORT_CUSTOM_MEMBER(DEVICE_SELF, driver_device,custom_port_read, "SYSTEM")
diff --git a/src/mame/drivers/psion.cpp b/src/mame/drivers/psion.cpp
index 9041ccf92b6..9efaaef9007 100644
--- a/src/mame/drivers/psion.cpp
+++ b/src/mame/drivers/psion.cpp
@@ -583,7 +583,7 @@ static MACHINE_CONFIG_START( psion_2lines, psion_state )
/* sound hardware */
MCFG_SPEAKER_STANDARD_MONO( "mono" )
- MCFG_SOUND_ADD( "beeper", BEEP, 0 )
+ MCFG_SOUND_ADD( "beeper", BEEP, 3250 )
MCFG_SOUND_ROUTE( ALL_OUTPUTS, "mono", 1.00 )
MCFG_NVRAM_ADD_CUSTOM_DRIVER("nvram1", psion_state, nvram_init) // sys_regs
diff --git a/src/mame/drivers/psychic5.cpp b/src/mame/drivers/psychic5.cpp
index bb7180b2f03..abc4229a283 100644
--- a/src/mame/drivers/psychic5.cpp
+++ b/src/mame/drivers/psychic5.cpp
@@ -309,6 +309,24 @@ The first sprite data is located at f20b,then f21b and so on.
F= Flip
SZ=Size 0=16x16 sprite,1=32x32 sprite
C= Color palette selector
+
+====
+
+Notes (23-Jan-2016 AS):
+- Bombs Away tests CPU roms with a sum8, with following algorithm:
+ * tests rom 0, compares result with [$4]
+ * tests banks 3,2,1, reads [$5], no bank 0 (?)
+ * tests banks 7,6,5,4, reads [$6]
+ fwiw extra roms contains palette/sprite/level data, nothing to do with game logic.
+- Bombs Away sports following issues, which indicates it's a unfinished product:
+ - missing bullets (missing data from ROMs);
+ - missing levels above 4 (missing data from ROMs);
+ - occasionally wrong flip x when the player route is from up to down;
+ - enemy counter stops entirely when the S is collected;
+ - boss fights uses always the same pattern;
+ - single BGM repeated over and over, for every level;
+ - a very sketchy ending screen (just credits with a special BGM played). Game sits there until BGM is finished and no new plays are allowed until so;
+
*/
#include "emu.h"
@@ -714,11 +732,7 @@ static MACHINE_CONFIG_START( psychic5, psychic5_state )
/* video hardware */
MCFG_SCREEN_ADD("screen", RASTER)
- MCFG_SCREEN_REFRESH_RATE(53.8)
- MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
- /* frames per second hand tuned to match game and music speed */
- MCFG_SCREEN_SIZE(32*8, 32*8)
- MCFG_SCREEN_VISIBLE_AREA(0*8, 32*8-1, 2*8, 30*8-1)
+ MCFG_SCREEN_RAW_PARAMS(XTAL_12MHz/2,394, 0, 256, 282, 16, 240) // was 53.8 Hz before, assume same as Bombs Away
MCFG_SCREEN_UPDATE_DRIVER(psychic5_state, screen_update_psychic5)
MCFG_GFXDECODE_ADD("gfxdecode", "palette", psychic5)
@@ -770,10 +784,7 @@ static MACHINE_CONFIG_START( bombsa, psychic5_state )
/* video hardware */
MCFG_SCREEN_ADD("screen", RASTER)
- MCFG_SCREEN_REFRESH_RATE(54) /* Guru says : VSync - 54Hz . HSync - 15.25kHz */
- MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
- MCFG_SCREEN_SIZE(64*8, 32*8)
- MCFG_SCREEN_VISIBLE_AREA(0*8, 32*8-1, 2*8, 30*8-1)
+ MCFG_SCREEN_RAW_PARAMS(XTAL_12MHz/2,394, 0, 256, 282, 16, 240) /* Guru says : VSync - 54Hz . HSync - 15.25kHz */
MCFG_SCREEN_UPDATE_DRIVER(psychic5_state, screen_update_bombsa)
MCFG_GFXDECODE_ADD("gfxdecode", "palette", bombsa)
@@ -924,8 +935,9 @@ Notes:
logic on both sides.
*/
+
ROM_START( bombsa )
- ROM_REGION( 0x30000, "maincpu", 0 ) /* Main CPU */
+ ROM_REGION( 0x30000, "maincpu", ROMREGION_ERASEFF ) /* Main CPU */
ROM_LOAD( "4.7a", 0x00000, 0x08000, CRC(0191f6a7) SHA1(10a0434abbf4be068751e65c81b1a211729e3742) )
/* these fail their self-test... should be checked on real hw (hold start1+start2 on boot) */
ROM_LOAD( "5.7c", 0x10000, 0x08000, BAD_DUMP CRC(095c451a) SHA1(892ca84376f89640ad4d28f1e548c26bc8f72c0e) ) // contains palettes etc. but fails rom check??
@@ -954,4 +966,4 @@ ROM_END
GAME( 1987, psychic5, 0, psychic5, psychic5, driver_device, 0, ROT270, "Jaleco / NMK", "Psychic 5 (World)", MACHINE_SUPPORTS_SAVE ) // "Oversea's version V2.00 CHANGED BY TAMIO NAKASATO" text present in ROM, various modifications (English names, more complete attract demo etc.)
GAME( 1987, psychic5j, psychic5, psychic5, psychic5, driver_device, 0, ROT270, "Jaleco / NMK", "Psychic 5 (Japan)", MACHINE_SUPPORTS_SAVE )
-GAME( 1988, bombsa, 0, bombsa, bombsa, driver_device, 0, ROT270, "Jaleco", "Bombs Away", MACHINE_NOT_WORKING | MACHINE_SUPPORTS_SAVE )
+GAME( 1988, bombsa, 0, bombsa, bombsa, driver_device, 0, ROT270, "Jaleco", "Bombs Away (prototype)", MACHINE_IS_INCOMPLETE | MACHINE_SUPPORTS_SAVE )
diff --git a/src/mame/drivers/pulsar.cpp b/src/mame/drivers/pulsar.cpp
index 48030adce83..eda3535ee2d 100644
--- a/src/mame/drivers/pulsar.cpp
+++ b/src/mame/drivers/pulsar.cpp
@@ -254,7 +254,10 @@ MACHINE_CONFIG_END
/* ROM definition */
ROM_START( pulsarlb )
ROM_REGION( 0x10800, "maincpu", ROMREGION_ERASEFF )
- ROM_LOAD( "mp7a.bin", 0x10000, 0x800, CRC(726b8a19) SHA1(43b2af84d5622c1f67584c501b730acf002a6113) )
+ ROM_SYSTEM_BIOS(0, "mon7", "MP7A")
+ ROMX_LOAD( "mp7a.bin", 0x10000, 0x800, CRC(726b8a19) SHA1(43b2af84d5622c1f67584c501b730acf002a6113), ROM_BIOS(1))
+ ROM_SYSTEM_BIOS(1, "mon6", "LBOOT6") // Blank screen until floppy boots
+ ROMX_LOAD( "lboot6.rom", 0x10000, 0x800, CRC(3bca9096) SHA1(ff99288e51a9e832785ce8e3ab5a9452b1064231), ROM_BIOS(2))
ROM_END
/* Driver */
diff --git a/src/mame/drivers/pve500.cpp b/src/mame/drivers/pve500.cpp
index 2f1274dbb1f..e94e548d92f 100644
--- a/src/mame/drivers/pve500.cpp
+++ b/src/mame/drivers/pve500.cpp
@@ -237,7 +237,6 @@ void pve500_state::machine_reset()
{
/* Setup beep */
m_buzzer->set_state(0);
- m_buzzer->set_frequency(3750); //CLK2 coming out of IC D4 (frequency divider circuitry)
}
WRITE_LINE_MEMBER(pve500_state::mb8421_intl)
@@ -415,7 +414,7 @@ static MACHINE_CONFIG_START( pve500, pve500_state )
/* audio hardware */
MCFG_SPEAKER_STANDARD_MONO("mono")
- MCFG_SOUND_ADD("buzzer", BEEP, 0)
+ MCFG_SOUND_ADD("buzzer", BEEP, 3750) // CLK2 coming out of IC D4 (frequency divider circuitry)
MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.05)
MACHINE_CONFIG_END
diff --git a/src/mame/drivers/px4.cpp b/src/mame/drivers/px4.cpp
index 36925ab03b5..64c5d769861 100644
--- a/src/mame/drivers/px4.cpp
+++ b/src/mame/drivers/px4.cpp
@@ -1341,23 +1341,23 @@ static INPUT_PORTS_START( px4_h450a )
PORT_INCLUDE(px4_dips)
PORT_START("keyboard_0")
- PORT_BIT(0x00000001, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CHANGED_MEMBER(DEVICE_SELF, px4_state, key_callback, (void *)nullptr) PORT_CODE(KEYCODE_F1) PORT_CHAR(UCHAR_MAMEKEY(ESC)) // 00
- PORT_BIT(0x00000002, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CHANGED_MEMBER(DEVICE_SELF, px4_state, key_callback, (void *)nullptr) PORT_CODE(KEYCODE_F2) PORT_CHAR(UCHAR_MAMEKEY(PAUSE)) // 01
- PORT_BIT(0x00000004, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CHANGED_MEMBER(DEVICE_SELF, px4_state, key_callback, (void *)nullptr) PORT_CODE(KEYCODE_F3) PORT_CHAR(UCHAR_MAMEKEY(F6)) PORT_NAME("Help") // 02
- PORT_BIT(0x00000008, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CHANGED_MEMBER(DEVICE_SELF, px4_state, key_callback, (void *)nullptr) PORT_CODE(KEYCODE_F4) PORT_CHAR(UCHAR_MAMEKEY(F1)) PORT_NAME("PF1") // 03
- PORT_BIT(0x00000010, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CHANGED_MEMBER(DEVICE_SELF, px4_state, key_callback, (void *)nullptr) PORT_CODE(KEYCODE_F5) PORT_CHAR(UCHAR_MAMEKEY(F2)) PORT_NAME("PF2") // 04
- PORT_BIT(0x00000020, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CHANGED_MEMBER(DEVICE_SELF, px4_state, key_callback, (void *)nullptr) PORT_CODE(KEYCODE_F6) PORT_CHAR(UCHAR_MAMEKEY(F3)) PORT_NAME("PF3") // 05
- PORT_BIT(0x00000040, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CHANGED_MEMBER(DEVICE_SELF, px4_state, key_callback, (void *)nullptr) PORT_CODE(KEYCODE_F7) PORT_CHAR(UCHAR_MAMEKEY(F4)) PORT_NAME("PF4") // 06
- PORT_BIT(0x00000080, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CHANGED_MEMBER(DEVICE_SELF, px4_state, key_callback, (void *)nullptr) PORT_CODE(KEYCODE_F8) PORT_CHAR(UCHAR_MAMEKEY(F5)) PORT_NAME("PF5") // 07
+ PORT_BIT(0x00000001, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CHANGED_MEMBER(DEVICE_SELF, px4_state, key_callback, (void *)0) PORT_CODE(KEYCODE_F1) PORT_CHAR(UCHAR_MAMEKEY(ESC)) // 00
+ PORT_BIT(0x00000002, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CHANGED_MEMBER(DEVICE_SELF, px4_state, key_callback, (void *)0) PORT_CODE(KEYCODE_F2) PORT_CHAR(UCHAR_MAMEKEY(PAUSE)) // 01
+ PORT_BIT(0x00000004, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CHANGED_MEMBER(DEVICE_SELF, px4_state, key_callback, (void *)0) PORT_CODE(KEYCODE_F3) PORT_CHAR(UCHAR_MAMEKEY(F6)) PORT_NAME("Help") // 02
+ PORT_BIT(0x00000008, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CHANGED_MEMBER(DEVICE_SELF, px4_state, key_callback, (void *)0) PORT_CODE(KEYCODE_F4) PORT_CHAR(UCHAR_MAMEKEY(F1)) PORT_NAME("PF1") // 03
+ PORT_BIT(0x00000010, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CHANGED_MEMBER(DEVICE_SELF, px4_state, key_callback, (void *)0) PORT_CODE(KEYCODE_F5) PORT_CHAR(UCHAR_MAMEKEY(F2)) PORT_NAME("PF2") // 04
+ PORT_BIT(0x00000020, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CHANGED_MEMBER(DEVICE_SELF, px4_state, key_callback, (void *)0) PORT_CODE(KEYCODE_F6) PORT_CHAR(UCHAR_MAMEKEY(F3)) PORT_NAME("PF3") // 05
+ PORT_BIT(0x00000040, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CHANGED_MEMBER(DEVICE_SELF, px4_state, key_callback, (void *)0) PORT_CODE(KEYCODE_F7) PORT_CHAR(UCHAR_MAMEKEY(F4)) PORT_NAME("PF4") // 06
+ PORT_BIT(0x00000080, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CHANGED_MEMBER(DEVICE_SELF, px4_state, key_callback, (void *)0) PORT_CODE(KEYCODE_F8) PORT_CHAR(UCHAR_MAMEKEY(F5)) PORT_NAME("PF5") // 07
PORT_BIT(0x0000ff00, IP_ACTIVE_HIGH, IPT_UNUSED) // 08-0f
- PORT_BIT(0x00010000, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CHANGED_MEMBER(DEVICE_SELF, px4_state, key_callback, (void *)nullptr) PORT_CODE(KEYCODE_ESC) PORT_CHAR(UCHAR_MAMEKEY(CANCEL)) PORT_NAME("Stop") // 10
- PORT_BIT(0x00020000, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CHANGED_MEMBER(DEVICE_SELF, px4_state, key_callback, (void *)nullptr) PORT_CODE(KEYCODE_1) PORT_CHAR('1') PORT_CHAR('!') // 11
- PORT_BIT(0x00040000, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CHANGED_MEMBER(DEVICE_SELF, px4_state, key_callback, (void *)nullptr) PORT_CODE(KEYCODE_2) PORT_CHAR('2') PORT_CHAR('"') // 12
- PORT_BIT(0x00080000, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CHANGED_MEMBER(DEVICE_SELF, px4_state, key_callback, (void *)nullptr) PORT_CODE(KEYCODE_3) PORT_CHAR('3') PORT_CHAR('#') // 13
- PORT_BIT(0x00100000, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CHANGED_MEMBER(DEVICE_SELF, px4_state, key_callback, (void *)nullptr) PORT_CODE(KEYCODE_4) PORT_CHAR('4') PORT_CHAR('$') // 14
- PORT_BIT(0x00200000, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CHANGED_MEMBER(DEVICE_SELF, px4_state, key_callback, (void *)nullptr) PORT_CODE(KEYCODE_5) PORT_CHAR('5') PORT_CHAR('%') // 15
- PORT_BIT(0x00400000, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CHANGED_MEMBER(DEVICE_SELF, px4_state, key_callback, (void *)nullptr) PORT_CODE(KEYCODE_6) PORT_CHAR('6') PORT_CHAR('&') // 16
- PORT_BIT(0x00800000, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CHANGED_MEMBER(DEVICE_SELF, px4_state, key_callback, (void *)nullptr) PORT_CODE(KEYCODE_7) PORT_CHAR('7') PORT_CHAR('\'') // 17
+ PORT_BIT(0x00010000, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CHANGED_MEMBER(DEVICE_SELF, px4_state, key_callback, (void *)0) PORT_CODE(KEYCODE_ESC) PORT_CHAR(UCHAR_MAMEKEY(CANCEL)) PORT_NAME("Stop") // 10
+ PORT_BIT(0x00020000, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CHANGED_MEMBER(DEVICE_SELF, px4_state, key_callback, (void *)0) PORT_CODE(KEYCODE_1) PORT_CHAR('1') PORT_CHAR('!') // 11
+ PORT_BIT(0x00040000, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CHANGED_MEMBER(DEVICE_SELF, px4_state, key_callback, (void *)0) PORT_CODE(KEYCODE_2) PORT_CHAR('2') PORT_CHAR('"') // 12
+ PORT_BIT(0x00080000, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CHANGED_MEMBER(DEVICE_SELF, px4_state, key_callback, (void *)0) PORT_CODE(KEYCODE_3) PORT_CHAR('3') PORT_CHAR('#') // 13
+ PORT_BIT(0x00100000, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CHANGED_MEMBER(DEVICE_SELF, px4_state, key_callback, (void *)0) PORT_CODE(KEYCODE_4) PORT_CHAR('4') PORT_CHAR('$') // 14
+ PORT_BIT(0x00200000, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CHANGED_MEMBER(DEVICE_SELF, px4_state, key_callback, (void *)0) PORT_CODE(KEYCODE_5) PORT_CHAR('5') PORT_CHAR('%') // 15
+ PORT_BIT(0x00400000, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CHANGED_MEMBER(DEVICE_SELF, px4_state, key_callback, (void *)0) PORT_CODE(KEYCODE_6) PORT_CHAR('6') PORT_CHAR('&') // 16
+ PORT_BIT(0x00800000, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CHANGED_MEMBER(DEVICE_SELF, px4_state, key_callback, (void *)0) PORT_CODE(KEYCODE_7) PORT_CHAR('7') PORT_CHAR('\'') // 17
PORT_BIT(0xff000000, IP_ACTIVE_HIGH, IPT_UNUSED) // 18-1f
PORT_START("keyboard_1")
diff --git a/src/mame/drivers/qix.cpp b/src/mame/drivers/qix.cpp
index 366bfe84094..6812b16c5e5 100644
--- a/src/mame/drivers/qix.cpp
+++ b/src/mame/drivers/qix.cpp
@@ -1,11 +1,10 @@
-// license:???
-// copyright-holders:John Butler, Ed Mueller, Aaron Giles
+// license:BSD-3-Clause
+// copyright-holders:Aaron Giles, Zsolt Vasvari
+// thanks-to: John Butler, Ed Mueller
/***************************************************************************
Taito Qix hardware
- driver by John Butler, Ed Mueller, Aaron Giles
-
Games supported:
* Qix (3 sets)
* Qix II Tournament
diff --git a/src/mame/drivers/r9751.cpp b/src/mame/drivers/r9751.cpp
index 5ca1d8d153a..fd93f310e2e 100644
--- a/src/mame/drivers/r9751.cpp
+++ b/src/mame/drivers/r9751.cpp
@@ -67,6 +67,8 @@ public:
DECLARE_READ32_MEMBER(r9751_mmio_5ff_r);
DECLARE_WRITE32_MEMBER(r9751_mmio_5ff_w);
+ DECLARE_READ32_MEMBER(r9751_mmio_ff01_r);
+ DECLARE_WRITE32_MEMBER(r9751_mmio_ff01_w);
DECLARE_READ32_MEMBER(r9751_mmio_ff05_r);
DECLARE_WRITE32_MEMBER(r9751_mmio_ff05_w);
DECLARE_READ32_MEMBER(r9751_mmio_fff8_r);
@@ -90,6 +92,8 @@ private:
UINT32 fdd_dest_address; // 5FF080B0
UINT32 fdd_cmd_complete;
UINT32 smioc_out_addr;
+ UINT32 smioc_dma_bank;
+ UINT32 fdd_dma_bank;
attotime timer_32khz_last;
// End registers
@@ -110,12 +114,16 @@ UINT32 r9751_state::swap_uint32( UINT32 val )
READ8_MEMBER(r9751_state::pdc_dma_r)
{
- return m_maincpu->space(AS_PROGRAM).read_byte(offset);
+ /* This callback function takes the value written to 0xFF01000C as the bank offset */
+ UINT32 address = (fdd_dma_bank & 0x7FFFF800) + (offset&0xFFFF);
+ return m_maincpu->space(AS_PROGRAM).read_byte(address);
}
WRITE8_MEMBER(r9751_state::pdc_dma_w)
{
- m_maincpu->space(AS_PROGRAM).write_byte(m_pdc->fdd_68k_dma_address,data);
+ /* This callback function takes the value written to 0xFF01000C as the bank offset */
+ UINT32 address = (fdd_dma_bank & 0x7FFFF800) + (data&0xFFFF);
+ m_maincpu->space(AS_PROGRAM).write_byte(m_pdc->fdd_68k_dma_address,address);
}
DRIVER_INIT_MEMBER(r9751_state,r9751)
@@ -123,9 +131,10 @@ DRIVER_INIT_MEMBER(r9751_state,r9751)
reg_ff050004 = 0;
reg_fff80040 = 0;
fdd_dest_address = 0;
-// fdd_scsi_command = 0;
fdd_cmd_complete = 0;
+ fdd_dma_bank = 0;
smioc_out_addr = 0;
+ smioc_dma_bank = 0;
m_mem = &m_maincpu->space(AS_PROGRAM);
}
@@ -147,32 +156,31 @@ void r9751_state::machine_reset()
READ32_MEMBER( r9751_state::r9751_mmio_5ff_r )
{
UINT32 data;
- UINT32 address = offset * 4 + 0x5FF00000;
- switch(address)
+ switch(offset << 2)
{
/* PDC HDD region (0x24, device 9) */
- case 0x5FF00824: /* HDD Command result code */
+ case 0x0824: /* HDD Command result code */
return 0x10;
- case 0x5FF03024: /* HDD SCSI command completed successfully */
+ 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(), address);
+ if(TRACE_HDC) logerror("SCSI HDD command completion status - Read: %08X, From: %08X, Register: %08X\n", data, space.machine().firstcpu->pc(), offset << 2 | 0x5FF00000);
return data;
/* SMIOC region (0x98, device 26) */
- case 0x5FF00898: /* Serial status or DMA status */
+ case 0x0898: /* Serial status or DMA status */
return 0x40;
/* PDC FDD region (0xB0, device 44 */
- case 0x5FF008B0: /* FDD Command result code */
+ case 0x08B0: /* FDD Command result code */
return 0x10;
- case 0x5FF010B0: /* Clear 5FF030B0 ?? */
+ case 0x10B0: /* Clear 5FF030B0 ?? */
if(TRACE_FDC) logerror("--- FDD 0x5FF010B0 READ (0)\n");
return 0;
- case 0x5FF030B0: /* FDD command completion status */
+ case 0x30B0: /* FDD command completion status */
data = (m_pdc->reg_p5 << 8) + m_pdc->reg_p4;
- if(TRACE_FDC) logerror("--- SCSI FDD command completion status - Read: %08X, From: %08X, Register: %08X\n", data, space.machine().firstcpu->pc(), address);
+ if(TRACE_FDC) logerror("--- SCSI FDD command completion status - Read: %08X, From: %08X, Register: %08X\n", data, space.machine().firstcpu->pc(), offset << 2 | 0x5FF00000);
return data;
default:
- if(TRACE_FDC || TRACE_HDC || TRACE_SMIOC) logerror("Instruction: %08x READ MMIO(%08x): %08x & %08x\n", space.machine().firstcpu->pc(), address, 0, mem_mask);
+ if(TRACE_FDC || TRACE_HDC || TRACE_SMIOC) logerror("Instruction: %08x READ MMIO(%08x): %08x & %08x\n", space.machine().firstcpu->pc(), offset << 2 | 0x5FF00000, 0, mem_mask);
return 0;
}
}
@@ -180,49 +188,57 @@ READ32_MEMBER( r9751_state::r9751_mmio_5ff_r )
WRITE32_MEMBER( r9751_state::r9751_mmio_5ff_w )
{
UINT8 data_b0, data_b1;
- UINT32 address = offset * 4 + 0x5FF00000;
+ /* Unknown mask */
+ if (mem_mask != 0xFFFFFFFF)
+ logerror("Mask found: %08X Register: %08X PC: %08X\n", mem_mask, offset << 2 | 0x5FF00000, space.machine().firstcpu->pc());
- switch(address)
+ switch(offset << 2)
{
/* PDC HDD region (0x24, device 9 */
- case 0x5FF00224: /* HDD SCSI read command */
- if(TRACE_HDC) logerror("@@@ HDD Command: %08X, From: %08X, Register: %08X\n", data, space.machine().firstcpu->pc(), address);
+ 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);
break;
- case 0x5FF08024: /* HDD SCSI read command */
- if(TRACE_HDC) logerror("@@@ HDD Command: %08X, From: %08X, Register: %08X\n", data, space.machine().firstcpu->pc(), address);
+ 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);
break;
- case 0x5FF0C024: /* HDD SCSI read command */
- if(TRACE_HDC) logerror("@@@ HDD Command: %08X, From: %08X, Register: %08X\n", data, space.machine().firstcpu->pc(), address);
+ 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);
break;
/* SMIOC region (0x98, device 26) */
- case 0x5FF04098: /* Serial DMA Command */
+ case 0x4098: /* Serial DMA Command */
switch(data)
{
case 0x4100: /* Send byte to serial */
- if(TRACE_SMIOC) logerror("Serial byte: %02X\n", m_mem->read_dword(smioc_out_addr));
+ if(TRACE_SMIOC) logerror("Serial byte: %02X PC: %08X\n", m_mem->read_dword(smioc_out_addr), space.machine().firstcpu->pc());
m_terminal->write(space,0,m_mem->read_dword(smioc_out_addr));
break;
default:
if(TRACE_SMIOC) logerror("Uknown serial DMA command: %X\n", data);
}
break;
- case 0x5FF0C098: /* Serial DMA output address */
- smioc_out_addr = data * 2;
+ 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());
break;
/* PDC FDD region (0xB0, device 44 */
- case 0x5FF001B0: /* FDD SCSI read command */
- if(TRACE_FDC) logerror("--- FDD Command: %08X, From: %08X, Register: %08X\n", data, space.machine().firstcpu->pc(), address);
+ 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);
break;
- case 0x5FF002B0: /* FDD SCSI read command */
- if(TRACE_FDC) logerror("--- FDD Command: %08X, From: %08X, Register: %08X\n", data, space.machine().firstcpu->pc(), address);
+ 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);
break;
- case 0x5FF008B0: /* FDD SCSI read command */
- if(TRACE_FDC) logerror("--- FDD Command: %08X, From: %08X, Register: %08X\n", data, space.machine().firstcpu->pc(), address);
+ case 0x04B0: /* FDD RESET PDC */
+ if(TRACE_FDC) logerror("PDC RESET, PC: %08X\n", space.machine().firstcpu->pc());
+ m_pdc->reset();
break;
- case 0x5FF041B0: /* Unknown - Probably old style commands */
- if(TRACE_FDC) logerror("--- FDD Command: %08X, From: %08X, Register: %08X\n", data, space.machine().firstcpu->pc(), address);
+ 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);
+ 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);
- /* Clear FDD Command completion status 0x5FF030B0 (PDC 0x4, 0x5)*/
+ /* Clear FDD Command completion status 0x5FF030B0 (PDC 0x4, 0x5) */
m_pdc->reg_p4 = 0;
m_pdc->reg_p5 = 0;
@@ -233,7 +249,7 @@ WRITE32_MEMBER( r9751_state::r9751_mmio_5ff_w )
m_pdc->reg_p38 |= 0x2; /* Set bit 1 on port 38 register, PDC polls this port looking for a command */
if(TRACE_FDC) logerror("--- FDD Old Command: %02X and %02X\n", data_b0, data_b1);
break;
- case 0x5FF080B0: /* fdd_dest_address register */
+ case 0x80B0: /* fdd_dest_address register */
fdd_dest_address = data << 1;
if(TRACE_FDC) logerror("--- FDD destination address: %08X\n", fdd_dest_address);
data_b0 = data & 0xFF;
@@ -241,14 +257,14 @@ WRITE32_MEMBER( r9751_state::r9751_mmio_5ff_w )
m_pdc->reg_p6 = data_b0;
m_pdc->reg_p7 = data_b1;
break;
- case 0x5FF0C0B0:
- case 0x5FF0C1B0: /* FDD command address register */
+ case 0xC0B0:
+ case 0xC1B0: /* FDD command address register */
UINT32 fdd_scsi_command;
UINT32 fdd_scsi_command2;
unsigned char c_fdd_scsi_command[8]; // Array for SCSI command
int scsi_lba; // FDD LBA location here, extracted from command
- /* Clear FDD Command completion status 0x5FF030B0 (PDC 0x4, 0x5)*/
+ /* Clear FDD Command completion status 0x5FF030B0 (PDC 0x4, 0x5) */
m_pdc->reg_p4 = 0;
m_pdc->reg_p5 = 0;
@@ -281,86 +297,119 @@ WRITE32_MEMBER( r9751_state::r9751_mmio_5ff_w )
break;
default:
- if(TRACE_FDC || TRACE_HDC || TRACE_SMIOC) logerror("Instruction: %08x WRITE MMIO(%08x): %08x & %08x\n", space.machine().firstcpu->pc(), address, data, mem_mask);
+ if(TRACE_FDC || TRACE_HDC || TRACE_SMIOC) logerror("Instruction: %08x WRITE MMIO(%08x): %08x & %08x\n", space.machine().firstcpu->pc(), offset << 2 | 0x5FF00000, data, mem_mask);
}
}
/******************************************************************************
- CPU board registers [0xFF050000 - 0xFF06FFFF]
+ CPU board registers [0xFF010000 - 0xFF06FFFF]
******************************************************************************/
+READ32_MEMBER( r9751_state::r9751_mmio_ff01_r )
+{
+ //UINT32 data;
+
+ switch(offset << 2)
+ {
+ default:
+ //return data;
+ return 0;
+ }
+}
+
+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());
+
+ switch(offset << 2)
+ {
+ case 0x000C: /* FDD DMA Offset */
+ fdd_dma_bank = data;
+ return;
+ case 0x0010: /* SMIOC DMA Offset */
+ smioc_dma_bank = data;
+ return;
+ default:
+ return;
+ }
+}
+
READ32_MEMBER( r9751_state::r9751_mmio_ff05_r )
{
UINT32 data;
- UINT32 address = offset * 4 + 0xFF050000;
- switch(address)
+ switch(offset << 2)
{
- case 0xFF050004:
+ case 0x0004:
return reg_ff050004;
- case 0xFF050300:
+ case 0x0300:
return 0x1B | (1<<0x14);
- case 0xFF050320: /* Some type of counter */
+ case 0x0320: /* Some type of counter */
return (machine().time() - timer_32khz_last).as_ticks(32768) & 0xFFFF;
- case 0xFF050584:
+ case 0x0584:
return 0;
- case 0xFF050610:
+ case 0x0610:
return 0xabacabac;
- case 0xFF060014:
+ case 0x0014:
return 0x80;
default:
data = 0;
- if(TRACE_CPU_REG) logerror("Instruction: %08x READ MMIO(%08x): %08x & %08x\n", space.machine().firstcpu->pc(), address, data, mem_mask);
+ if(TRACE_CPU_REG) logerror("Instruction: %08x READ MMIO(%08x): %08x & %08x\n", space.machine().firstcpu->pc(), offset << 2 | 0xFF050000, data, mem_mask);
return data;
}
}
WRITE32_MEMBER( r9751_state::r9751_mmio_ff05_w )
{
- UINT32 address = offset * 4 + 0xFF050000;
+ /* Unknown mask */
+ if (mem_mask != 0xFFFFFFFF)
+ logerror("Mask found: %08X Register: %08X PC: %08X\n", mem_mask, offset << 2 | 0xFF050000, space.machine().firstcpu->pc());
- switch(address)
+ switch(offset << 2)
{
- case 0xFF050004:
+ case 0x0004:
reg_ff050004 = data;
return;
- case 0xFF05000C: /* CPU LED hex display indicator */
+ case 0x000C: /* CPU LED hex display indicator */
if(TRACE_LED) logerror("\n*** LED: %02x, Instruction: %08x ***\n\n", data, space.machine().firstcpu->pc());
return;
- case 0xFF050320:
+ case 0x0320:
timer_32khz_last = machine().time();
default:
- if(TRACE_CPU_REG) logerror("Instruction: %08x WRITE MMIO(%08x): %08x & %08x\n", space.machine().firstcpu->pc(), address, data, mem_mask);
+ if(TRACE_CPU_REG) logerror("Instruction: %08x WRITE MMIO(%08x): %08x & %08x\n", space.machine().firstcpu->pc(), offset << 2 | 0xFF050000, data, mem_mask);
return;
}
}
READ32_MEMBER( r9751_state::r9751_mmio_fff8_r )
{
- UINT32 data;
- UINT32 address = offset * 4 + 0xFFF80000;
+ UINT32 data;
- switch(address)
+ switch(offset << 2)
{
- case 0xFFF80040:
+ case 0x0040:
return reg_fff80040;
default:
data = 0;
- if(TRACE_CPU_REG) logerror("Instruction: %08x READ MMIO(%08x): %08x & %08x\n", space.machine().firstcpu->pc(), address, data, mem_mask);
+ if(TRACE_CPU_REG) logerror("Instruction: %08x READ MMIO(%08x): %08x & %08x\n", space.machine().firstcpu->pc(), offset << 2 | 0xFFF80000, data, mem_mask);
return data;
}
}
WRITE32_MEMBER( r9751_state::r9751_mmio_fff8_w )
{
- UINT32 address = offset * 4 + 0xFFF80000;
+ /* Unknown mask */
+ if (mem_mask != 0xFFFFFFFF)
+ logerror("Mask found: %08X Register: %08X PC: %08X\n", mem_mask, offset << 2 | 0xFFF80000, space.machine().firstcpu->pc());
- switch(address)
+ switch(offset << 2)
{
- case 0xFFF80040:
+ case 0x0040:
reg_fff80040 = data;
return;
default:
- if(TRACE_CPU_REG) logerror("Instruction: %08x WRITE MMIO(%08x): %08x & %08x\n", space.machine().firstcpu->pc(), address, data, mem_mask);
+ if(TRACE_CPU_REG) logerror("Instruction: %08x WRITE MMIO(%08x): %08x & %08x\n", space.machine().firstcpu->pc(), offset << 2 | 0xFFF80000, data, mem_mask);
}
}
@@ -373,6 +422,7 @@ static ADDRESS_MAP_START(r9751_mem, AS_PROGRAM, 32, r9751_state)
AM_RANGE(0x00000000,0x00ffffff) AM_RAM AM_SHARE("main_ram") // 16MB
AM_RANGE(0x08000000,0x0800ffff) AM_ROM AM_REGION("prom", 0)
AM_RANGE(0x5FF00000,0x5FFFFFFF) AM_READWRITE(r9751_mmio_5ff_r, r9751_mmio_5ff_w)
+ AM_RANGE(0xFF010000,0xFF01FFFF) AM_READWRITE(r9751_mmio_ff01_r, r9751_mmio_ff01_w)
AM_RANGE(0xFF050000,0xFF06FFFF) AM_READWRITE(r9751_mmio_ff05_r, r9751_mmio_ff05_w)
AM_RANGE(0xFFF80000,0xFFF8FFFF) AM_READWRITE(r9751_mmio_fff8_r, r9751_mmio_fff8_w)
//AM_RANGE(0xffffff00,0xffffffff) AM_RAM // Unknown area
diff --git a/src/mame/drivers/rampart.cpp b/src/mame/drivers/rampart.cpp
index 523650d5915..9c0827a39bc 100644
--- a/src/mame/drivers/rampart.cpp
+++ b/src/mame/drivers/rampart.cpp
@@ -105,12 +105,12 @@ WRITE16_MEMBER(rampart_state::latch_w)
/* lower byte being modified? */
if (ACCESSING_BITS_0_7)
{
- set_oki6295_volume((data & 0x0020) ? 100 : 0);
+ m_oki->set_output_gain(ALL_OUTPUTS, (data & 0x0020) ? 1.0f : 0.0f);
if (!(data & 0x0010))
m_oki->reset();
- set_ym2413_volume(((data >> 1) & 7) * 100 / 7);
+ m_ym2413->set_output_gain(ALL_OUTPUTS, ((data >> 1) & 7) / 7.0f);
if (!(data & 0x0001))
- machine().device("ymsnd")->reset();
+ m_ym2413->reset();
}
}
@@ -339,7 +339,7 @@ static MACHINE_CONFIG_START( rampart, rampart_state )
MCFG_CPU_PROGRAM_MAP(main_map)
MCFG_DEVICE_VBLANK_INT_DRIVER("screen", atarigen_state, video_int_gen)
- MCFG_SLAPSTIC_ADD("slapstic")
+ MCFG_SLAPSTIC_ADD("slapstic", 118)
MCFG_MACHINE_RESET_OVERRIDE(rampart_state,rampart)
@@ -481,7 +481,7 @@ DRIVER_INIT_MEMBER(rampart_state,rampart)
UINT8 *rom = memregion("maincpu")->base();
memcpy(&rom[0x140000], &rom[0x40000], 0x8000);
- slapstic_configure(*m_maincpu, 0x140000, 0x438000, 118);
+ slapstic_configure(*m_maincpu, 0x140000, 0x438000);
}
diff --git a/src/mame/drivers/rastan.cpp b/src/mame/drivers/rastan.cpp
index 0c7e2273550..fe3c3dfa6b1 100644
--- a/src/mame/drivers/rastan.cpp
+++ b/src/mame/drivers/rastan.cpp
@@ -1,4 +1,4 @@
-// license:???
+// license:GPL-2.0+
// copyright-holders:Jarek Burczynski
/***************************************************************************
diff --git a/src/mame/drivers/relief.cpp b/src/mame/drivers/relief.cpp
index b1ba6031cc9..82915064d71 100644
--- a/src/mame/drivers/relief.cpp
+++ b/src/mame/drivers/relief.cpp
@@ -84,7 +84,7 @@ WRITE16_MEMBER(relief_state::audio_control_w)
if (ACCESSING_BITS_0_7)
{
m_ym2413_volume = (data >> 1) & 15;
- set_ym2413_volume((m_ym2413_volume * m_overall_volume * 100) / (127 * 15));
+ m_ym2413->set_output_gain(ALL_OUTPUTS, (m_ym2413_volume * m_overall_volume) / (127.0f * 15.0f));
m_adpcm_bank = ((data >> 6) & 3) | (m_adpcm_bank & 4);
}
if (ACCESSING_BITS_8_15)
@@ -99,8 +99,8 @@ WRITE16_MEMBER(relief_state::audio_volume_w)
if (ACCESSING_BITS_0_7)
{
m_overall_volume = data & 127;
- set_ym2413_volume((m_ym2413_volume * m_overall_volume * 100) / (127 * 15));
- set_oki6295_volume(m_overall_volume * 100 / 127);
+ m_ym2413->set_output_gain(ALL_OUTPUTS, (m_ym2413_volume * m_overall_volume) / (127.0f * 15.0f));
+ m_oki->set_output_gain(ALL_OUTPUTS, m_overall_volume / 127.0f);
}
}
diff --git a/src/mame/drivers/rex6000.cpp b/src/mame/drivers/rex6000.cpp
index 6407eddba62..8709a578991 100644
--- a/src/mame/drivers/rex6000.cpp
+++ b/src/mame/drivers/rex6000.cpp
@@ -220,7 +220,7 @@ WRITE8_MEMBER( rex6000_state::beep_w )
switch (offset)
{
- case 0: //alarm mode control
+ case 0: // alarm mode control
/*
---- ---x beep off
---- --x- continuous beep
@@ -231,21 +231,24 @@ WRITE8_MEMBER( rex6000_state::beep_w )
-x-- ---- single alarm
x--- ---- single short beep
*/
- //TODO: the beeper frequency and length in alarm mode need to be measured
+ // TODO: the beeper frequency and length in alarm mode need to be measured
break;
- case 1: //tone mode control
+ case 1: // tone mode control
if (m_beep_mode)
{
m_beep->set_state(BIT(data, 0));
- //the beeper frequency is update only if the bit 1 is set
+ // the beeper frequency is update only if the bit 1 is set
if (BIT(data, 1))
- m_beep->set_frequency(16384 / (((m_beep_io[2] | (m_beep_io[3]<<8)) & 0x0fff) + 2));
+ {
+ UINT16 div = ((m_beep_io[2] | m_beep_io[3]<<8) & 0x0fff) + 2;
+ m_beep->set_clock(16384 / div);
+ }
}
break;
- case 4: //select alarm/tone mode
+ case 4: // select alarm/tone mode
if (m_beep_mode != BIT(data, 0))
- m_beep->set_state(0); //turned off when mode changes
+ m_beep->set_state(0); // turned off when mode changes
m_beep_mode = BIT(data, 0);
break;
diff --git a/src/mame/drivers/rsc55.cpp b/src/mame/drivers/rsc55.cpp
index 90779f52be5..1a5cd15f49d 100644
--- a/src/mame/drivers/rsc55.cpp
+++ b/src/mame/drivers/rsc55.cpp
@@ -71,7 +71,7 @@ static MACHINE_CONFIG_START( sc55, sc55_state )
MACHINE_CONFIG_END
ROM_START( sc55 )
- ROM_REGION( 0x40000, "maincpu", 0 ) // additional H8/532 code and patch data - revisions match main CPU revisions
+ ROM_REGION( 0x40000, "maincpu", 0 ) // additional H8/532 code and patch data - revisions match main CPU revisions
ROM_LOAD( "roland_r15209363.ic23", 0x000000, 0x040000, CRC(2dc58549) SHA1(9c17f85e784dc1549ac1f98d457b353393331f6b) )
ROM_REGION( 0x300000, "la", 0 )
diff --git a/src/mame/drivers/rungun.cpp b/src/mame/drivers/rungun.cpp
index af05982fed2..38d526632e0 100644
--- a/src/mame/drivers/rungun.cpp
+++ b/src/mame/drivers/rungun.cpp
@@ -182,7 +182,7 @@ READ16_MEMBER(rungun_state::palette_read)
WRITE16_MEMBER(rungun_state::palette_write)
{
- palette_device *cur_paldevice = m_video_mux_bank == 0 ? m_palette : static_cast<palette_device *>(m_palette2);
+ palette_device &cur_paldevice = m_video_mux_bank == 0 ? *m_palette : *m_palette2;
UINT32 addr = offset + m_video_mux_bank*0x800/2;
COMBINE_DATA(&m_pal_ram[addr]);
@@ -192,7 +192,7 @@ WRITE16_MEMBER(rungun_state::palette_write)
g = (m_pal_ram[addr] & 0x3e0) >> 5;
b = (m_pal_ram[addr] & 0x7e00) >> 10;
- cur_paldevice->set_pen_color(offset,pal5bit(r),pal5bit(g),pal5bit(b));
+ cur_paldevice.set_pen_color(offset,pal5bit(r),pal5bit(g),pal5bit(b));
}
static ADDRESS_MAP_START( rungun_map, AS_PROGRAM, 16, rungun_state )
diff --git a/src/mame/drivers/sam.cpp b/src/mame/drivers/sam.cpp
index 7053c7b955a..45b78cf3597 100644
--- a/src/mame/drivers/sam.cpp
+++ b/src/mame/drivers/sam.cpp
@@ -1066,213 +1066,215 @@ ROM_START(wpt_1400l)
ROM_LOAD( "wpt1400l.bin", 0x0000, 0x1c7072c, CRC(00eff09c) SHA1(847203d4d2ce8d11a5403374f2d5b6dda8458bc9))
ROM_END
-GAME( 2009, 24_130 ,24_150, sam, sam, driver_device, 0, ROT0, "Stern", "24 v1.30", MACHINE_NOT_WORKING | MACHINE_NO_SOUND | MACHINE_MECHANICAL)
-GAME( 2009, 24_140 ,24_150, sam, sam, driver_device, 0, ROT0, "Stern", "24 v1.40", MACHINE_NOT_WORKING | MACHINE_NO_SOUND | MACHINE_MECHANICAL)
-GAME( 2009, 24_144 ,24_150, sam, sam, driver_device, 0, ROT0, "Stern", "24 v1.44", MACHINE_NOT_WORKING | MACHINE_NO_SOUND | MACHINE_MECHANICAL)
-GAME( 2009, 24_150 ,0, sam, sam, driver_device, 0, ROT0, "Stern", "24 v1.50", MACHINE_NOT_WORKING | MACHINE_NO_SOUND | MACHINE_MECHANICAL)
-GAME( 2008, bdk_130 ,bdk_294, sam, sam, driver_device, 0, ROT0, "Stern", "Batman - The Dark Knight v1.30", MACHINE_NOT_WORKING | MACHINE_NO_SOUND | MACHINE_MECHANICAL)
-GAME( 2008, bdk_150 ,bdk_294, sam, sam, driver_device, 0, ROT0, "Stern", "Batman - The Dark Knight v1.50", MACHINE_NOT_WORKING | MACHINE_NO_SOUND | MACHINE_MECHANICAL)
-GAME( 2008, bdk_160 ,bdk_294, sam, sam, driver_device, 0, ROT0, "Stern", "Batman - The Dark Knight v1.60", MACHINE_NOT_WORKING | MACHINE_NO_SOUND | MACHINE_MECHANICAL)
-GAME( 2008, bdk_200 ,bdk_294, sam, sam, driver_device, 0, ROT0, "Stern", "Batman - The Dark Knight v2.00", MACHINE_NOT_WORKING | MACHINE_NO_SOUND | MACHINE_MECHANICAL)
-GAME( 2008, bdk_210 ,bdk_294, sam, sam, driver_device, 0, ROT0, "Stern", "Batman - The Dark Knight v2.10", MACHINE_NOT_WORKING | MACHINE_NO_SOUND | MACHINE_MECHANICAL)
-GAME( 2008, bdk_220 ,bdk_294, sam, sam, driver_device, 0, ROT0, "Stern", "Batman - The Dark Knight v2.20", MACHINE_NOT_WORKING | MACHINE_NO_SOUND | MACHINE_MECHANICAL)
-GAME( 2008, bdk_290 ,bdk_294, sam, sam, driver_device, 0, ROT0, "Stern", "Batman - The Dark Knight v2.90", MACHINE_NOT_WORKING | MACHINE_NO_SOUND | MACHINE_MECHANICAL)
-GAME( 2008, bdk_294 ,0, sam, sam, driver_device, 0, ROT0, "Stern", "Batman - The Dark Knight v2.94", MACHINE_NOT_WORKING | MACHINE_NO_SOUND | MACHINE_MECHANICAL)
+#define MACHINE_FLAGS (MACHINE_NOT_WORKING | MACHINE_NO_SOUND | MACHINE_MECHANICAL)
+
+GAME( 2009, 24_130 ,24_150, sam, sam, driver_device, 0, ROT0, "Stern", "24 v1.30", MACHINE_FLAGS)
+GAME( 2009, 24_140 ,24_150, sam, sam, driver_device, 0, ROT0, "Stern", "24 v1.40", MACHINE_FLAGS)
+GAME( 2009, 24_144 ,24_150, sam, sam, driver_device, 0, ROT0, "Stern", "24 v1.44", MACHINE_FLAGS)
+GAME( 2009, 24_150 ,0, sam, sam, driver_device, 0, ROT0, "Stern", "24 v1.50", MACHINE_FLAGS)
+GAME( 2008, bdk_130 ,bdk_294, sam, sam, driver_device, 0, ROT0, "Stern", "Batman - The Dark Knight v1.30", MACHINE_FLAGS)
+GAME( 2008, bdk_150 ,bdk_294, sam, sam, driver_device, 0, ROT0, "Stern", "Batman - The Dark Knight v1.50", MACHINE_FLAGS)
+GAME( 2008, bdk_160 ,bdk_294, sam, sam, driver_device, 0, ROT0, "Stern", "Batman - The Dark Knight v1.60", MACHINE_FLAGS)
+GAME( 2008, bdk_200 ,bdk_294, sam, sam, driver_device, 0, ROT0, "Stern", "Batman - The Dark Knight v2.00", MACHINE_FLAGS)
+GAME( 2008, bdk_210 ,bdk_294, sam, sam, driver_device, 0, ROT0, "Stern", "Batman - The Dark Knight v2.10", MACHINE_FLAGS)
+GAME( 2008, bdk_220 ,bdk_294, sam, sam, driver_device, 0, ROT0, "Stern", "Batman - The Dark Knight v2.20", MACHINE_FLAGS)
+GAME( 2008, bdk_290 ,bdk_294, sam, sam, driver_device, 0, ROT0, "Stern", "Batman - The Dark Knight v2.90", MACHINE_FLAGS)
+GAME( 2008, bdk_294 ,0, sam, sam, driver_device, 0, ROT0, "Stern", "Batman - The Dark Knight v2.94", MACHINE_FLAGS)
// Missing version 1.30 (26-Jan-2010), 1.20 (25-Jan-2010), 1.10 (21-Jan-2010), 1.00 (15-Jan-2010)
-GAME( 2010, bbh_140 ,bbh_160, sam, sam, driver_device, 0, ROT0, "Stern", "Big Buck Hunter Pro v1.40", MACHINE_NOT_WORKING | MACHINE_NO_SOUND | MACHINE_MECHANICAL)
-GAME( 2010, bbh_150 ,bbh_160, sam, sam, driver_device, 0, ROT0, "Stern", "Big Buck Hunter Pro v1.50", MACHINE_NOT_WORKING | MACHINE_NO_SOUND | MACHINE_MECHANICAL)
-GAME( 2010, bbh_160 ,0, sam, sam, driver_device, 0, ROT0, "Stern", "Big Buck Hunter Pro v1.60", MACHINE_NOT_WORKING | MACHINE_NO_SOUND | MACHINE_MECHANICAL)
-GAME( 2008, csi_102 ,csi_240, sam, sam, driver_device, 0, ROT0, "Stern", "C.S.I. v1.02", MACHINE_NOT_WORKING | MACHINE_NO_SOUND | MACHINE_MECHANICAL)
-GAME( 2008, csi_103 ,csi_240, sam, sam, driver_device, 0, ROT0, "Stern", "C.S.I. v1.03", MACHINE_NOT_WORKING | MACHINE_NO_SOUND | MACHINE_MECHANICAL)
-GAME( 2008, csi_104 ,csi_240, sam, sam, driver_device, 0, ROT0, "Stern", "C.S.I. v1.04", MACHINE_NOT_WORKING | MACHINE_NO_SOUND | MACHINE_MECHANICAL)
-GAME( 2008, csi_200 ,csi_240, sam, sam, driver_device, 0, ROT0, "Stern", "C.S.I. v2.00", MACHINE_NOT_WORKING | MACHINE_NO_SOUND | MACHINE_MECHANICAL)
-GAME( 2008, csi_210 ,csi_240, sam, sam, driver_device, 0, ROT0, "Stern", "C.S.I. v2.10", MACHINE_NOT_WORKING | MACHINE_NO_SOUND | MACHINE_MECHANICAL)
-GAME( 2008, csi_230 ,csi_240, sam, sam, driver_device, 0, ROT0, "Stern", "C.S.I. v2.30", MACHINE_NOT_WORKING | MACHINE_NO_SOUND | MACHINE_MECHANICAL)
-GAME( 2008, csi_240 ,0, sam, sam, driver_device, 0, ROT0, "Stern", "C.S.I. v2.40", MACHINE_NOT_WORKING | MACHINE_NO_SOUND | MACHINE_MECHANICAL)
-GAME( 2007, fg_1000af ,fg_120af, sam, sam, driver_device, 0, ROT0, "Stern", "Family Guy v10.0 (English,French)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND | MACHINE_MECHANICAL)
-GAME( 2007, fg_1000ag ,fg_120af, sam, sam, driver_device, 0, ROT0, "Stern", "Family Guy v10.0 (English,German)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND | MACHINE_MECHANICAL)
-GAME( 2007, fg_1000ai ,fg_120af, sam, sam, driver_device, 0, ROT0, "Stern", "Family Guy v10.0 (English,Italian)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND | MACHINE_MECHANICAL)
-GAME( 2007, fg_1000al ,fg_120af, sam, sam, driver_device, 0, ROT0, "Stern", "Family Guy v10.0 (English,Spanish)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND | MACHINE_MECHANICAL)
-GAME( 2007, fg_110af ,fg_120af, sam, sam, driver_device, 0, ROT0, "Stern", "Family Guy v11.0 (English,French)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND | MACHINE_MECHANICAL)
-GAME( 2007, fg_110ag ,fg_120af, sam, sam, driver_device, 0, ROT0, "Stern", "Family Guy v11.0 (English,German)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND | MACHINE_MECHANICAL)
-GAME( 2007, fg_110ai ,fg_120af, sam, sam, driver_device, 0, ROT0, "Stern", "Family Guy v11.0 (English,Italian)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND | MACHINE_MECHANICAL)
-GAME( 2007, fg_110al ,fg_120af, sam, sam, driver_device, 0, ROT0, "Stern", "Family Guy v11.0 (English,Spanish)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND | MACHINE_MECHANICAL)
-GAME( 2007, fg_120af ,0, sam, sam, driver_device, 0, ROT0, "Stern", "Family Guy v12.0 (English,French)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND | MACHINE_MECHANICAL)
-GAME( 2007, fg_120ag ,fg_120af, sam, sam, driver_device, 0, ROT0, "Stern", "Family Guy v12.0 (English,German)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND | MACHINE_MECHANICAL)
-GAME( 2007, fg_120ai ,fg_120af, sam, sam, driver_device, 0, ROT0, "Stern", "Family Guy v12.0 (English,Italian)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND | MACHINE_MECHANICAL)
-GAME( 2007, fg_120al ,fg_120af, sam, sam, driver_device, 0, ROT0, "Stern", "Family Guy v12.0 (English,Spanish)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND | MACHINE_MECHANICAL)
-GAME( 2007, fg_300ai ,fg_120af, sam, sam, driver_device, 0, ROT0, "Stern", "Family Guy v3.0 (English,Italian)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND | MACHINE_MECHANICAL)
-GAME( 2007, fg_400a ,fg_120af, sam, sam, driver_device, 0, ROT0, "Stern", "Family Guy v4.0 (English)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND | MACHINE_MECHANICAL)
-GAME( 2007, fg_400ag ,fg_120af, sam, sam, driver_device, 0, ROT0, "Stern", "Family Guy v4.0 (English,German)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND | MACHINE_MECHANICAL)
-GAME( 2007, fg_700af ,fg_120af, sam, sam, driver_device, 0, ROT0, "Stern", "Family Guy v7.0 (English,French)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND | MACHINE_MECHANICAL)
-GAME( 2007, fg_700al ,fg_120af, sam, sam, driver_device, 0, ROT0, "Stern", "Family Guy v7.0 (English,Spanish)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND | MACHINE_MECHANICAL)
-GAME( 2007, fg_800al ,fg_120af, sam, sam, driver_device, 0, ROT0, "Stern", "Family Guy v8.0 (English,Spanish)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND | MACHINE_MECHANICAL)
-GAME( 2010, im2_100 ,im2_140, sam, sam, driver_device, 0, ROT0, "Stern", "Iron Man 2 v1.00", MACHINE_NOT_WORKING | MACHINE_NO_SOUND | MACHINE_MECHANICAL)
-GAME( 2010, im2_110 ,im2_140, sam, sam, driver_device, 0, ROT0, "Stern", "Iron Man 2 v1.10", MACHINE_NOT_WORKING | MACHINE_NO_SOUND | MACHINE_MECHANICAL)
-GAME( 2010, im2_120 ,im2_140, sam, sam, driver_device, 0, ROT0, "Stern", "Iron Man 2 v1.20", MACHINE_NOT_WORKING | MACHINE_NO_SOUND | MACHINE_MECHANICAL)
-GAME( 2010, im2_140 ,0, sam, sam, driver_device, 0, ROT0, "Stern", "Iron Man 2 v1.40", MACHINE_NOT_WORKING | MACHINE_NO_SOUND | MACHINE_MECHANICAL)
-GAME( 2008, indy_113a ,indy_210, sam, sam, driver_device, 0, ROT0, "Stern", "Indiana Jones v1.13", MACHINE_NOT_WORKING | MACHINE_NO_SOUND | MACHINE_MECHANICAL)
-GAME( 2008, indy_113f ,indy_210, sam, sam, driver_device, 0, ROT0, "Stern", "Indiana Jones v1.13 (French)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND | MACHINE_MECHANICAL)
-GAME( 2008, indy_113g ,indy_210, sam, sam, driver_device, 0, ROT0, "Stern", "Indiana Jones v1.13 (German)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND | MACHINE_MECHANICAL)
-GAME( 2008, indy_113i ,indy_210, sam, sam, driver_device, 0, ROT0, "Stern", "Indiana Jones v1.13 (Italian)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND | MACHINE_MECHANICAL)
-GAME( 2008, indy_113l ,indy_210, sam, sam, driver_device, 0, ROT0, "Stern", "Indiana Jones v1.13 (Spanish)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND | MACHINE_MECHANICAL)
-GAME( 2008, indy_114a ,indy_210, sam, sam, driver_device, 0, ROT0, "Stern", "Indiana Jones v1.14", MACHINE_NOT_WORKING | MACHINE_NO_SOUND | MACHINE_MECHANICAL)
-GAME( 2008, indy_114f ,indy_210, sam, sam, driver_device, 0, ROT0, "Stern", "Indiana Jones v1.14 (French)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND | MACHINE_MECHANICAL)
-GAME( 2008, indy_114g ,indy_210, sam, sam, driver_device, 0, ROT0, "Stern", "Indiana Jones v1.14 (German)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND | MACHINE_MECHANICAL)
-GAME( 2008, indy_114i ,indy_210, sam, sam, driver_device, 0, ROT0, "Stern", "Indiana Jones v1.14 (Italian)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND | MACHINE_MECHANICAL)
-GAME( 2008, indy_114l ,indy_210, sam, sam, driver_device, 0, ROT0, "Stern", "Indiana Jones v1.14 (Spanish)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND | MACHINE_MECHANICAL)
-GAME( 2008, indy_116a ,indy_210, sam, sam, driver_device, 0, ROT0, "Stern", "Indiana Jones v1.16", MACHINE_NOT_WORKING | MACHINE_NO_SOUND | MACHINE_MECHANICAL)
-GAME( 2008, indy_116f ,indy_210, sam, sam, driver_device, 0, ROT0, "Stern", "Indiana Jones v1.16 (French)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND | MACHINE_MECHANICAL)
-GAME( 2008, indy_116g ,indy_210, sam, sam, driver_device, 0, ROT0, "Stern", "Indiana Jones v1.16 (German)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND | MACHINE_MECHANICAL)
-GAME( 2008, indy_116i ,indy_210, sam, sam, driver_device, 0, ROT0, "Stern", "Indiana Jones v1.16 (Italian)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND | MACHINE_MECHANICAL)
-GAME( 2008, indy_116l ,indy_210, sam, sam, driver_device, 0, ROT0, "Stern", "Indiana Jones v1.16 (Spanish)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND | MACHINE_MECHANICAL)
-GAME( 2008, indy_210 ,0, sam, sam, driver_device, 0, ROT0, "Stern", "Indiana Jones v2.10", MACHINE_NOT_WORKING | MACHINE_NO_SOUND | MACHINE_MECHANICAL)
-GAME( 2008, indy_210f ,indy_210, sam, sam, driver_device, 0, ROT0, "Stern", "Indiana Jones v2.10 (French)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND | MACHINE_MECHANICAL)
+GAME( 2010, bbh_140 ,bbh_160, sam, sam, driver_device, 0, ROT0, "Stern", "Big Buck Hunter Pro v1.40", MACHINE_FLAGS)
+GAME( 2010, bbh_150 ,bbh_160, sam, sam, driver_device, 0, ROT0, "Stern", "Big Buck Hunter Pro v1.50", MACHINE_FLAGS)
+GAME( 2010, bbh_160 ,0, sam, sam, driver_device, 0, ROT0, "Stern", "Big Buck Hunter Pro v1.60", MACHINE_FLAGS)
+GAME( 2008, csi_102 ,csi_240, sam, sam, driver_device, 0, ROT0, "Stern", "C.S.I. v1.02", MACHINE_FLAGS)
+GAME( 2008, csi_103 ,csi_240, sam, sam, driver_device, 0, ROT0, "Stern", "C.S.I. v1.03", MACHINE_FLAGS)
+GAME( 2008, csi_104 ,csi_240, sam, sam, driver_device, 0, ROT0, "Stern", "C.S.I. v1.04", MACHINE_FLAGS)
+GAME( 2008, csi_200 ,csi_240, sam, sam, driver_device, 0, ROT0, "Stern", "C.S.I. v2.00", MACHINE_FLAGS)
+GAME( 2008, csi_210 ,csi_240, sam, sam, driver_device, 0, ROT0, "Stern", "C.S.I. v2.10", MACHINE_FLAGS)
+GAME( 2008, csi_230 ,csi_240, sam, sam, driver_device, 0, ROT0, "Stern", "C.S.I. v2.30", MACHINE_FLAGS)
+GAME( 2008, csi_240 ,0, sam, sam, driver_device, 0, ROT0, "Stern", "C.S.I. v2.40", MACHINE_FLAGS)
+GAME( 2007, fg_1000af ,fg_120af, sam, sam, driver_device, 0, ROT0, "Stern", "Family Guy v10.0 (English,French)", MACHINE_FLAGS)
+GAME( 2007, fg_1000ag ,fg_120af, sam, sam, driver_device, 0, ROT0, "Stern", "Family Guy v10.0 (English,German)", MACHINE_FLAGS)
+GAME( 2007, fg_1000ai ,fg_120af, sam, sam, driver_device, 0, ROT0, "Stern", "Family Guy v10.0 (English,Italian)", MACHINE_FLAGS)
+GAME( 2007, fg_1000al ,fg_120af, sam, sam, driver_device, 0, ROT0, "Stern", "Family Guy v10.0 (English,Spanish)", MACHINE_FLAGS)
+GAME( 2007, fg_110af ,fg_120af, sam, sam, driver_device, 0, ROT0, "Stern", "Family Guy v11.0 (English,French)", MACHINE_FLAGS)
+GAME( 2007, fg_110ag ,fg_120af, sam, sam, driver_device, 0, ROT0, "Stern", "Family Guy v11.0 (English,German)", MACHINE_FLAGS)
+GAME( 2007, fg_110ai ,fg_120af, sam, sam, driver_device, 0, ROT0, "Stern", "Family Guy v11.0 (English,Italian)", MACHINE_FLAGS)
+GAME( 2007, fg_110al ,fg_120af, sam, sam, driver_device, 0, ROT0, "Stern", "Family Guy v11.0 (English,Spanish)", MACHINE_FLAGS)
+GAME( 2007, fg_120af ,0, sam, sam, driver_device, 0, ROT0, "Stern", "Family Guy v12.0 (English,French)", MACHINE_FLAGS)
+GAME( 2007, fg_120ag ,fg_120af, sam, sam, driver_device, 0, ROT0, "Stern", "Family Guy v12.0 (English,German)", MACHINE_FLAGS)
+GAME( 2007, fg_120ai ,fg_120af, sam, sam, driver_device, 0, ROT0, "Stern", "Family Guy v12.0 (English,Italian)", MACHINE_FLAGS)
+GAME( 2007, fg_120al ,fg_120af, sam, sam, driver_device, 0, ROT0, "Stern", "Family Guy v12.0 (English,Spanish)", MACHINE_FLAGS)
+GAME( 2007, fg_300ai ,fg_120af, sam, sam, driver_device, 0, ROT0, "Stern", "Family Guy v3.0 (English,Italian)", MACHINE_FLAGS)
+GAME( 2007, fg_400a ,fg_120af, sam, sam, driver_device, 0, ROT0, "Stern", "Family Guy v4.0 (English)", MACHINE_FLAGS)
+GAME( 2007, fg_400ag ,fg_120af, sam, sam, driver_device, 0, ROT0, "Stern", "Family Guy v4.0 (English,German)", MACHINE_FLAGS)
+GAME( 2007, fg_700af ,fg_120af, sam, sam, driver_device, 0, ROT0, "Stern", "Family Guy v7.0 (English,French)", MACHINE_FLAGS)
+GAME( 2007, fg_700al ,fg_120af, sam, sam, driver_device, 0, ROT0, "Stern", "Family Guy v7.0 (English,Spanish)", MACHINE_FLAGS)
+GAME( 2007, fg_800al ,fg_120af, sam, sam, driver_device, 0, ROT0, "Stern", "Family Guy v8.0 (English,Spanish)", MACHINE_FLAGS)
+GAME( 2010, im2_100 ,im2_140, sam, sam, driver_device, 0, ROT0, "Stern", "Iron Man 2 v1.00", MACHINE_FLAGS)
+GAME( 2010, im2_110 ,im2_140, sam, sam, driver_device, 0, ROT0, "Stern", "Iron Man 2 v1.10", MACHINE_FLAGS)
+GAME( 2010, im2_120 ,im2_140, sam, sam, driver_device, 0, ROT0, "Stern", "Iron Man 2 v1.20", MACHINE_FLAGS)
+GAME( 2010, im2_140 ,0, sam, sam, driver_device, 0, ROT0, "Stern", "Iron Man 2 v1.40", MACHINE_FLAGS)
+GAME( 2008, indy_113a ,indy_210, sam, sam, driver_device, 0, ROT0, "Stern", "Indiana Jones v1.13", MACHINE_FLAGS)
+GAME( 2008, indy_113f ,indy_210, sam, sam, driver_device, 0, ROT0, "Stern", "Indiana Jones v1.13 (French)", MACHINE_FLAGS)
+GAME( 2008, indy_113g ,indy_210, sam, sam, driver_device, 0, ROT0, "Stern", "Indiana Jones v1.13 (German)", MACHINE_FLAGS)
+GAME( 2008, indy_113i ,indy_210, sam, sam, driver_device, 0, ROT0, "Stern", "Indiana Jones v1.13 (Italian)", MACHINE_FLAGS)
+GAME( 2008, indy_113l ,indy_210, sam, sam, driver_device, 0, ROT0, "Stern", "Indiana Jones v1.13 (Spanish)", MACHINE_FLAGS)
+GAME( 2008, indy_114a ,indy_210, sam, sam, driver_device, 0, ROT0, "Stern", "Indiana Jones v1.14", MACHINE_FLAGS)
+GAME( 2008, indy_114f ,indy_210, sam, sam, driver_device, 0, ROT0, "Stern", "Indiana Jones v1.14 (French)", MACHINE_FLAGS)
+GAME( 2008, indy_114g ,indy_210, sam, sam, driver_device, 0, ROT0, "Stern", "Indiana Jones v1.14 (German)", MACHINE_FLAGS)
+GAME( 2008, indy_114i ,indy_210, sam, sam, driver_device, 0, ROT0, "Stern", "Indiana Jones v1.14 (Italian)", MACHINE_FLAGS)
+GAME( 2008, indy_114l ,indy_210, sam, sam, driver_device, 0, ROT0, "Stern", "Indiana Jones v1.14 (Spanish)", MACHINE_FLAGS)
+GAME( 2008, indy_116a ,indy_210, sam, sam, driver_device, 0, ROT0, "Stern", "Indiana Jones v1.16", MACHINE_FLAGS)
+GAME( 2008, indy_116f ,indy_210, sam, sam, driver_device, 0, ROT0, "Stern", "Indiana Jones v1.16 (French)", MACHINE_FLAGS)
+GAME( 2008, indy_116g ,indy_210, sam, sam, driver_device, 0, ROT0, "Stern", "Indiana Jones v1.16 (German)", MACHINE_FLAGS)
+GAME( 2008, indy_116i ,indy_210, sam, sam, driver_device, 0, ROT0, "Stern", "Indiana Jones v1.16 (Italian)", MACHINE_FLAGS)
+GAME( 2008, indy_116l ,indy_210, sam, sam, driver_device, 0, ROT0, "Stern", "Indiana Jones v1.16 (Spanish)", MACHINE_FLAGS)
+GAME( 2008, indy_210 ,0, sam, sam, driver_device, 0, ROT0, "Stern", "Indiana Jones v2.10", MACHINE_FLAGS)
+GAME( 2008, indy_210f ,indy_210, sam, sam, driver_device, 0, ROT0, "Stern", "Indiana Jones v2.10 (French)", MACHINE_FLAGS)
// Missing versions 4.00 (21-May-2009), 3.00 (20-May-2009), 2.00 (19-May-2009) and 1.00 (14-May-2009) of NBA
-GAME( 2009, nba_500 ,nba_802, sam, sam, driver_device, 0, ROT0, "Stern", "NBA v5.00", MACHINE_NOT_WORKING | MACHINE_NO_SOUND | MACHINE_MECHANICAL)
-GAME( 2009, nba_600 ,nba_802, sam, sam, driver_device, 0, ROT0, "Stern", "NBA v6.00", MACHINE_NOT_WORKING | MACHINE_NO_SOUND | MACHINE_MECHANICAL)
-GAME( 2009, nba_700 ,nba_802, sam, sam, driver_device, 0, ROT0, "Stern", "NBA v7.00", MACHINE_NOT_WORKING | MACHINE_NO_SOUND | MACHINE_MECHANICAL)
-GAME( 2009, nba_801 ,nba_802, sam, sam, driver_device, 0, ROT0, "Stern", "NBA v8.01", MACHINE_NOT_WORKING | MACHINE_NO_SOUND | MACHINE_MECHANICAL)
-GAME( 2009, nba_802 ,0, sam, sam, driver_device, 0, ROT0, "Stern", "NBA v8.02", MACHINE_NOT_WORKING | MACHINE_NO_SOUND | MACHINE_MECHANICAL)
-GAME( 2006, potc_110af ,potc_600, sam, sam, driver_device, 0, ROT0, "Stern", "Pirates of the Caribbean v1.10 (English,French)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND | MACHINE_MECHANICAL)
-GAME( 2006, potc_110ai ,potc_600, sam, sam, driver_device, 0, ROT0, "Stern", "Pirates of the Caribbean v1.10 (English,Italian)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND | MACHINE_MECHANICAL)
-GAME( 2006, potc_110gf ,potc_600, sam, sam, driver_device, 0, ROT0, "Stern", "Pirates of the Caribbean v1.10 (German,French)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND | MACHINE_MECHANICAL)
+GAME( 2009, nba_500 ,nba_802, sam, sam, driver_device, 0, ROT0, "Stern", "NBA v5.00", MACHINE_FLAGS)
+GAME( 2009, nba_600 ,nba_802, sam, sam, driver_device, 0, ROT0, "Stern", "NBA v6.00", MACHINE_FLAGS)
+GAME( 2009, nba_700 ,nba_802, sam, sam, driver_device, 0, ROT0, "Stern", "NBA v7.00", MACHINE_FLAGS)
+GAME( 2009, nba_801 ,nba_802, sam, sam, driver_device, 0, ROT0, "Stern", "NBA v8.01", MACHINE_FLAGS)
+GAME( 2009, nba_802 ,0, sam, sam, driver_device, 0, ROT0, "Stern", "NBA v8.02", MACHINE_FLAGS)
+GAME( 2006, potc_110af ,potc_600, sam, sam, driver_device, 0, ROT0, "Stern", "Pirates of the Caribbean v1.10 (English,French)", MACHINE_FLAGS)
+GAME( 2006, potc_110ai ,potc_600, sam, sam, driver_device, 0, ROT0, "Stern", "Pirates of the Caribbean v1.10 (English,Italian)", MACHINE_FLAGS)
+GAME( 2006, potc_110gf ,potc_600, sam, sam, driver_device, 0, ROT0, "Stern", "Pirates of the Caribbean v1.10 (German,French)", MACHINE_FLAGS)
// Missing version 1.11 for other languages ??? August 17, 2006
-GAME( 2006, potc_111as ,potc_600, sam, sam, driver_device, 0, ROT0, "Stern", "Pirates of the Caribbean v1.11 (English,Spanish)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND | MACHINE_MECHANICAL)
+GAME( 2006, potc_111as ,potc_600, sam, sam, driver_device, 0, ROT0, "Stern", "Pirates of the Caribbean v1.11 (English,Spanish)", MACHINE_FLAGS)
// Missing version 1.12 August 24, 2006
-GAME( 2006, potc_113af ,potc_600, sam, sam, driver_device, 0, ROT0, "Stern", "Pirates of the Caribbean v1.13 (English,French)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND | MACHINE_MECHANICAL)
-GAME( 2006, potc_113ai ,potc_600, sam, sam, driver_device, 0, ROT0, "Stern", "Pirates of the Caribbean v1.13 (English,Italian)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND | MACHINE_MECHANICAL)
-GAME( 2006, potc_113as ,potc_600, sam, sam, driver_device, 0, ROT0, "Stern", "Pirates of the Caribbean v1.13 (English,Spanish)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND | MACHINE_MECHANICAL)
-GAME( 2006, potc_113gf ,potc_600, sam, sam, driver_device, 0, ROT0, "Stern", "Pirates of the Caribbean v1.13 (German,French)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND | MACHINE_MECHANICAL)
+GAME( 2006, potc_113af ,potc_600, sam, sam, driver_device, 0, ROT0, "Stern", "Pirates of the Caribbean v1.13 (English,French)", MACHINE_FLAGS)
+GAME( 2006, potc_113ai ,potc_600, sam, sam, driver_device, 0, ROT0, "Stern", "Pirates of the Caribbean v1.13 (English,Italian)", MACHINE_FLAGS)
+GAME( 2006, potc_113as ,potc_600, sam, sam, driver_device, 0, ROT0, "Stern", "Pirates of the Caribbean v1.13 (English,Spanish)", MACHINE_FLAGS)
+GAME( 2006, potc_113gf ,potc_600, sam, sam, driver_device, 0, ROT0, "Stern", "Pirates of the Caribbean v1.13 (German,French)", MACHINE_FLAGS)
// Missing version 1.14 October 11, 2006
-GAME( 2006, potc_115af ,potc_600, sam, sam, driver_device, 0, ROT0, "Stern", "Pirates of the Caribbean v1.15 (English,French)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND | MACHINE_MECHANICAL)
-GAME( 2006, potc_115ai ,potc_600, sam, sam, driver_device, 0, ROT0, "Stern", "Pirates of the Caribbean v1.15 (English,Italian)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND | MACHINE_MECHANICAL)
-GAME( 2006, potc_115as ,potc_600, sam, sam, driver_device, 0, ROT0, "Stern", "Pirates of the Caribbean v1.15 (English,Spanish)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND | MACHINE_MECHANICAL)
-GAME( 2006, potc_115gf ,potc_600, sam, sam, driver_device, 0, ROT0, "Stern", "Pirates of the Caribbean v1.15 (German,French)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND | MACHINE_MECHANICAL)
+GAME( 2006, potc_115af ,potc_600, sam, sam, driver_device, 0, ROT0, "Stern", "Pirates of the Caribbean v1.15 (English,French)", MACHINE_FLAGS)
+GAME( 2006, potc_115ai ,potc_600, sam, sam, driver_device, 0, ROT0, "Stern", "Pirates of the Caribbean v1.15 (English,Italian)", MACHINE_FLAGS)
+GAME( 2006, potc_115as ,potc_600, sam, sam, driver_device, 0, ROT0, "Stern", "Pirates of the Caribbean v1.15 (English,Spanish)", MACHINE_FLAGS)
+GAME( 2006, potc_115gf ,potc_600, sam, sam, driver_device, 0, ROT0, "Stern", "Pirates of the Caribbean v1.15 (German,French)", MACHINE_FLAGS)
// Missing version 2.00 April 11, 2007
-GAME( 2007, potc_300af ,potc_600, sam, sam, driver_device, 0, ROT0, "Stern", "Pirates of the Caribbean v3.00 (English,French)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND | MACHINE_MECHANICAL)
-GAME( 2007, potc_300ai ,potc_600, sam, sam, driver_device, 0, ROT0, "Stern", "Pirates of the Caribbean v3.00 (English,Italian)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND | MACHINE_MECHANICAL)
-GAME( 2007, potc_300as ,potc_600, sam, sam, driver_device, 0, ROT0, "Stern", "Pirates of the Caribbean v3.00 (English,Spanish)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND | MACHINE_MECHANICAL)
-GAME( 2007, potc_300gf ,potc_600, sam, sam, driver_device, 0, ROT0, "Stern", "Pirates of the Caribbean v3.00 (German,French)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND | MACHINE_MECHANICAL)
-GAME( 2007, potc_400af ,potc_600, sam, sam, driver_device, 0, ROT0, "Stern", "Pirates of the Caribbean v4.00 (English,French)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND | MACHINE_MECHANICAL)
-GAME( 2007, potc_400ai ,potc_600, sam, sam, driver_device, 0, ROT0, "Stern", "Pirates of the Caribbean v4.00 (English,Italian)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND | MACHINE_MECHANICAL)
-GAME( 2007, potc_400as ,potc_600, sam, sam, driver_device, 0, ROT0, "Stern", "Pirates of the Caribbean v4.00 (English,Spanish)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND | MACHINE_MECHANICAL)
-GAME( 2007, potc_400gf ,potc_600, sam, sam, driver_device, 0, ROT0, "Stern", "Pirates of the Caribbean v4.00 (German,French)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND | MACHINE_MECHANICAL)
+GAME( 2007, potc_300af ,potc_600, sam, sam, driver_device, 0, ROT0, "Stern", "Pirates of the Caribbean v3.00 (English,French)", MACHINE_FLAGS)
+GAME( 2007, potc_300ai ,potc_600, sam, sam, driver_device, 0, ROT0, "Stern", "Pirates of the Caribbean v3.00 (English,Italian)", MACHINE_FLAGS)
+GAME( 2007, potc_300as ,potc_600, sam, sam, driver_device, 0, ROT0, "Stern", "Pirates of the Caribbean v3.00 (English,Spanish)", MACHINE_FLAGS)
+GAME( 2007, potc_300gf ,potc_600, sam, sam, driver_device, 0, ROT0, "Stern", "Pirates of the Caribbean v3.00 (German,French)", MACHINE_FLAGS)
+GAME( 2007, potc_400af ,potc_600, sam, sam, driver_device, 0, ROT0, "Stern", "Pirates of the Caribbean v4.00 (English,French)", MACHINE_FLAGS)
+GAME( 2007, potc_400ai ,potc_600, sam, sam, driver_device, 0, ROT0, "Stern", "Pirates of the Caribbean v4.00 (English,Italian)", MACHINE_FLAGS)
+GAME( 2007, potc_400as ,potc_600, sam, sam, driver_device, 0, ROT0, "Stern", "Pirates of the Caribbean v4.00 (English,Spanish)", MACHINE_FLAGS)
+GAME( 2007, potc_400gf ,potc_600, sam, sam, driver_device, 0, ROT0, "Stern", "Pirates of the Caribbean v4.00 (German,French)", MACHINE_FLAGS)
// Missing version 5.00 September 27, 2007
-GAME( 2007, potc_600 ,0, sam, sam, driver_device, 0, ROT0, "Stern", "Pirates of the Caribbean v6.00 (English,French)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND | MACHINE_MECHANICAL)
-GAME( 2007, potc_600ai ,potc_600, sam, sam, driver_device, 0, ROT0, "Stern", "Pirates of the Caribbean v6.00 (English,Italian)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND | MACHINE_MECHANICAL)
-GAME( 2007, potc_600as ,potc_600, sam, sam, driver_device, 0, ROT0, "Stern", "Pirates of the Caribbean v6.00 (English,Spanish)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND | MACHINE_MECHANICAL)
-GAME( 2007, potc_600gf ,potc_600, sam, sam, driver_device, 0, ROT0, "Stern", "Pirates of the Caribbean v6.00 (German,French)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND | MACHINE_MECHANICAL)
-GAME( 2008, sh_141 ,0, sam, sam, driver_device, 0, ROT0, "Stern", "Shrek v1.41", MACHINE_NOT_WORKING | MACHINE_NO_SOUND | MACHINE_MECHANICAL)
-GAME( 2006, skc_090 ,skc_105, sam, sam, driver_device, 0, ROT0, "Stern", "Simpsons Kooky Carnival (Redemption) v0.90 New Jersey", MACHINE_NOT_WORKING | MACHINE_NO_SOUND | MACHINE_MECHANICAL)
+GAME( 2007, potc_600 ,0, sam, sam, driver_device, 0, ROT0, "Stern", "Pirates of the Caribbean v6.00 (English,French)", MACHINE_FLAGS)
+GAME( 2007, potc_600ai ,potc_600, sam, sam, driver_device, 0, ROT0, "Stern", "Pirates of the Caribbean v6.00 (English,Italian)", MACHINE_FLAGS)
+GAME( 2007, potc_600as ,potc_600, sam, sam, driver_device, 0, ROT0, "Stern", "Pirates of the Caribbean v6.00 (English,Spanish)", MACHINE_FLAGS)
+GAME( 2007, potc_600gf ,potc_600, sam, sam, driver_device, 0, ROT0, "Stern", "Pirates of the Caribbean v6.00 (German,French)", MACHINE_FLAGS)
+GAME( 2008, sh_141 ,0, sam, sam, driver_device, 0, ROT0, "Stern", "Shrek v1.41", MACHINE_FLAGS)
+GAME( 2006, skc_090 ,skc_105, sam, sam, driver_device, 0, ROT0, "Stern", "Simpsons Kooky Carnival (Redemption) v0.90 New Jersey", MACHINE_FLAGS)
// Missing version 1.00
// Missing version 1.01 April 10, 2006
// Missing version 1.02 April 12, 2006
-GAME( 2006, skc_103 ,skc_105, sam, sam, driver_device, 0, ROT0, "Stern", "Simpsons Kooky Carnival (Redemption) v1.03", MACHINE_NOT_WORKING | MACHINE_NO_SOUND | MACHINE_MECHANICAL)
+GAME( 2006, skc_103 ,skc_105, sam, sam, driver_device, 0, ROT0, "Stern", "Simpsons Kooky Carnival (Redemption) v1.03", MACHINE_FLAGS)
// Missing version 1.04 May 12, 2006
-GAME( 2006, skc_105 ,0, sam, sam, driver_device, 0, ROT0, "Stern", "Simpsons Kooky Carnival (Redemption) v1.05", MACHINE_NOT_WORKING | MACHINE_NO_SOUND | MACHINE_MECHANICAL)
-GAME( 2007, sman_130ef ,sman_240, sam, sam, driver_device, 0, ROT0, "Stern", "Spider-Man v1.30 (English,French)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND | MACHINE_MECHANICAL)
-GAME( 2007, sman_130ei ,sman_240, sam, sam, driver_device, 0, ROT0, "Stern", "Spider-Man v1.30 (English,Italian)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND | MACHINE_MECHANICAL)
-GAME( 2007, sman_130es ,sman_240, sam, sam, driver_device, 0, ROT0, "Stern", "Spider-Man v1.30 (English,Spanish)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND | MACHINE_MECHANICAL)
-GAME( 2007, sman_130gf ,sman_240, sam, sam, driver_device, 0, ROT0, "Stern", "Spider-Man v1.30 (German,French)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND | MACHINE_MECHANICAL)
-GAME( 2007, sman_140e ,sman_240, sam, sam, driver_device, 0, ROT0, "Stern", "Spider-Man v1.40", MACHINE_NOT_WORKING | MACHINE_NO_SOUND | MACHINE_MECHANICAL)
-GAME( 2007, sman_140ef ,sman_240, sam, sam, driver_device, 0, ROT0, "Stern", "Spider-Man v1.40 (English,French)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND | MACHINE_MECHANICAL)
-GAME( 2007, sman_140ei ,sman_240, sam, sam, driver_device, 0, ROT0, "Stern", "Spider-Man v1.40 (English,Italian)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND | MACHINE_MECHANICAL)
-GAME( 2007, sman_140es ,sman_240, sam, sam, driver_device, 0, ROT0, "Stern", "Spider-Man v1.40 (English,Spanish)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND | MACHINE_MECHANICAL)
-GAME( 2007, sman_140gf ,sman_240, sam, sam, driver_device, 0, ROT0, "Stern", "Spider-Man v1.40 (German,French)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND | MACHINE_MECHANICAL)
-GAME( 2007, sman_142e ,sman_240, sam, sam, driver_device, 0, ROT0, "Stern", "Spider-Man v1.42", MACHINE_NOT_WORKING | MACHINE_NO_SOUND | MACHINE_MECHANICAL)
-GAME( 2007, sman_160e ,sman_240, sam, sam, driver_device, 0, ROT0, "Stern", "Spider-Man v1.60", MACHINE_NOT_WORKING | MACHINE_NO_SOUND | MACHINE_MECHANICAL)
-GAME( 2007, sman_160ef ,sman_240, sam, sam, driver_device, 0, ROT0, "Stern", "Spider-Man v1.60 (English,French)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND | MACHINE_MECHANICAL)
-GAME( 2007, sman_160ei ,sman_240, sam, sam, driver_device, 0, ROT0, "Stern", "Spider-Man v1.60 (English,Italian)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND | MACHINE_MECHANICAL)
-GAME( 2007, sman_160es ,sman_240, sam, sam, driver_device, 0, ROT0, "Stern", "Spider-Man v1.60 (English,Spanish)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND | MACHINE_MECHANICAL)
-GAME( 2007, sman_160gf ,sman_240, sam, sam, driver_device, 0, ROT0, "Stern", "Spider-Man v1.60 (German,French)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND | MACHINE_MECHANICAL)
-GAME( 2007, sman_170e ,sman_240, sam, sam, driver_device, 0, ROT0, "Stern", "Spider-Man v1.70", MACHINE_NOT_WORKING | MACHINE_NO_SOUND | MACHINE_MECHANICAL)
-GAME( 2007, sman_170ef ,sman_240, sam, sam, driver_device, 0, ROT0, "Stern", "Spider-Man v1.70 (English,French)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND | MACHINE_MECHANICAL)
-GAME( 2007, sman_170ei ,sman_240, sam, sam, driver_device, 0, ROT0, "Stern", "Spider-Man v1.70 (English,Italian)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND | MACHINE_MECHANICAL)
-GAME( 2007, sman_170es ,sman_240, sam, sam, driver_device, 0, ROT0, "Stern", "Spider-Man v1.70 (English,Spanish)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND | MACHINE_MECHANICAL)
-GAME( 2007, sman_170gf ,sman_240, sam, sam, driver_device, 0, ROT0, "Stern", "Spider-Man v1.70 (German,French)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND | MACHINE_MECHANICAL)
-GAME( 2007, sman_190e ,sman_240, sam, sam, driver_device, 0, ROT0, "Stern", "Spider-Man v1.90", MACHINE_NOT_WORKING | MACHINE_NO_SOUND | MACHINE_MECHANICAL)
-GAME( 2007, sman_190ef ,sman_240, sam, sam, driver_device, 0, ROT0, "Stern", "Spider-Man v1.90 (English,French)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND | MACHINE_MECHANICAL)
-GAME( 2007, sman_190ei ,sman_240, sam, sam, driver_device, 0, ROT0, "Stern", "Spider-Man v1.90 (English,Italian)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND | MACHINE_MECHANICAL)
-GAME( 2007, sman_190es ,sman_240, sam, sam, driver_device, 0, ROT0, "Stern", "Spider-Man v1.90 (English,Spanish)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND | MACHINE_MECHANICAL)
-GAME( 2007, sman_190gf ,sman_240, sam, sam, driver_device, 0, ROT0, "Stern", "Spider-Man v1.90 (German,French)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND | MACHINE_MECHANICAL)
-GAME( 2007, sman_192e ,sman_240, sam, sam, driver_device, 0, ROT0, "Stern", "Spider-Man v1.92", MACHINE_NOT_WORKING | MACHINE_NO_SOUND | MACHINE_MECHANICAL)
-GAME( 2007, sman_192ef ,sman_240, sam, sam, driver_device, 0, ROT0, "Stern", "Spider-Man v1.92 (English,French)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND | MACHINE_MECHANICAL)
-GAME( 2007, sman_192ei ,sman_240, sam, sam, driver_device, 0, ROT0, "Stern", "Spider-Man v1.92 (English,Italian)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND | MACHINE_MECHANICAL)
-GAME( 2007, sman_192es ,sman_240, sam, sam, driver_device, 0, ROT0, "Stern", "Spider-Man v1.92 (English,Spanish)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND | MACHINE_MECHANICAL)
-GAME( 2007, sman_192gf ,sman_240, sam, sam, driver_device, 0, ROT0, "Stern", "Spider-Man v1.92 (German,French)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND | MACHINE_MECHANICAL)
-GAME( 2007, sman_200e ,sman_240, sam, sam, driver_device, 0, ROT0, "Stern", "Spider-Man v2.00", MACHINE_NOT_WORKING | MACHINE_NO_SOUND | MACHINE_MECHANICAL)
-GAME( 2007, sman_210e ,sman_240, sam, sam, driver_device, 0, ROT0, "Stern", "Spider-Man v2.10", MACHINE_NOT_WORKING | MACHINE_NO_SOUND | MACHINE_MECHANICAL)
-GAME( 2007, sman_210f ,sman_240, sam, sam, driver_device, 0, ROT0, "Stern", "Spider-Man v2.10 (French)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND | MACHINE_MECHANICAL)
-GAME( 2007, sman_210ei ,sman_240, sam, sam, driver_device, 0, ROT0, "Stern", "Spider-Man v2.10 (English,Italian)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND | MACHINE_MECHANICAL)
-GAME( 2007, sman_210es ,sman_240, sam, sam, driver_device, 0, ROT0, "Stern", "Spider-Man v2.10 (English,Spanish)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND | MACHINE_MECHANICAL)
-GAME( 2007, sman_210gf ,sman_240, sam, sam, driver_device, 0, ROT0, "Stern", "Spider-Man v2.10 (German,French)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND | MACHINE_MECHANICAL)
-GAME( 2007, sman_220e ,sman_240, sam, sam, driver_device, 0, ROT0, "Stern", "Spider-Man v2.20", MACHINE_NOT_WORKING | MACHINE_NO_SOUND | MACHINE_MECHANICAL)
-GAME( 2007, sman_230e ,sman_240, sam, sam, driver_device, 0, ROT0, "Stern", "Spider-Man v2.30", MACHINE_NOT_WORKING | MACHINE_NO_SOUND | MACHINE_MECHANICAL)
-GAME( 2007, sman_240 ,0, sam, sam, driver_device, 0, ROT0, "Stern", "Spider-Man v2.40", MACHINE_NOT_WORKING | MACHINE_NO_SOUND | MACHINE_MECHANICAL)
-GAME( 2007, wof_100a ,wof_500a, sam, sam, driver_device, 0, ROT0, "Stern", "Wheel of Fortune v1.0", MACHINE_NOT_WORKING | MACHINE_NO_SOUND | MACHINE_MECHANICAL)
-GAME( 2007, wof_200a ,wof_500a, sam, sam, driver_device, 0, ROT0, "Stern", "Wheel of Fortune v2.0", MACHINE_NOT_WORKING | MACHINE_NO_SOUND | MACHINE_MECHANICAL)
-GAME( 2007, wof_200f ,wof_500a, sam, sam, driver_device, 0, ROT0, "Stern", "Wheel of Fortune v2.0 (French)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND | MACHINE_MECHANICAL)
-GAME( 2007, wof_200g ,wof_500a, sam, sam, driver_device, 0, ROT0, "Stern", "Wheel of Fortune v2.0 (German)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND | MACHINE_MECHANICAL)
-GAME( 2007, wof_200i ,wof_500a, sam, sam, driver_device, 0, ROT0, "Stern", "Wheel of Fortune v2.0 (Italian)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND | MACHINE_MECHANICAL)
-GAME( 2007, wof_300a ,wof_500a, sam, sam, driver_device, 0, ROT0, "Stern", "Wheel of Fortune v3.0", MACHINE_NOT_WORKING | MACHINE_NO_SOUND | MACHINE_MECHANICAL)
-GAME( 2007, wof_300f ,wof_500a, sam, sam, driver_device, 0, ROT0, "Stern", "Wheel of Fortune v3.0 (French)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND | MACHINE_MECHANICAL)
-GAME( 2007, wof_300g ,wof_500a, sam, sam, driver_device, 0, ROT0, "Stern", "Wheel of Fortune v3.0 (German)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND | MACHINE_MECHANICAL)
-GAME( 2007, wof_300i ,wof_500a, sam, sam, driver_device, 0, ROT0, "Stern", "Wheel of Fortune v3.0 (Italian)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND | MACHINE_MECHANICAL)
-GAME( 2007, wof_300l ,wof_500a, sam, sam, driver_device, 0, ROT0, "Stern", "Wheel of Fortune v3.0 (Spanish)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND | MACHINE_MECHANICAL)
-GAME( 2007, wof_400a ,wof_500a, sam, sam, driver_device, 0, ROT0, "Stern", "Wheel of Fortune v4.0", MACHINE_NOT_WORKING | MACHINE_NO_SOUND | MACHINE_MECHANICAL)
-GAME( 2007, wof_400f ,wof_500a, sam, sam, driver_device, 0, ROT0, "Stern", "Wheel of Fortune v4.0 (French)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND | MACHINE_MECHANICAL)
-GAME( 2007, wof_400g ,wof_500a, sam, sam, driver_device, 0, ROT0, "Stern", "Wheel of Fortune v4.0 (German)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND | MACHINE_MECHANICAL)
-GAME( 2007, wof_400i ,wof_500a, sam, sam, driver_device, 0, ROT0, "Stern", "Wheel of Fortune v4.0 (Italian)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND | MACHINE_MECHANICAL)
-GAME( 2007, wof_400l ,wof_500a, sam, sam, driver_device, 0, ROT0, "Stern", "Wheel of Fortune v4.0 (Spanish)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND | MACHINE_MECHANICAL)
-GAME( 2007, wof_500a ,0, sam, sam, driver_device, 0, ROT0, "Stern", "Wheel of Fortune v5.0", MACHINE_NOT_WORKING | MACHINE_NO_SOUND | MACHINE_MECHANICAL)
-GAME( 2007, wof_500f ,wof_500a, sam, sam, driver_device, 0, ROT0, "Stern", "Wheel of Fortune v5.0 (French)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND | MACHINE_MECHANICAL)
-GAME( 2007, wof_500g ,wof_500a, sam, sam, driver_device, 0, ROT0, "Stern", "Wheel of Fortune v5.0 (German)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND | MACHINE_MECHANICAL)
-GAME( 2007, wof_500i ,wof_500a, sam, sam, driver_device, 0, ROT0, "Stern", "Wheel of Fortune v5.0 (Italian)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND | MACHINE_MECHANICAL)
-GAME( 2007, wof_500l ,wof_500a, sam, sam, driver_device, 0, ROT0, "Stern", "Wheel of Fortune v5.0 (Spanish)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND | MACHINE_MECHANICAL)
-GAME( 2006, wpt_103a ,wpt_1400, sam, sam, driver_device, 0, ROT0, "Stern", "World Poker Tour v1.03", MACHINE_NOT_WORKING | MACHINE_NO_SOUND | MACHINE_MECHANICAL)
-GAME( 2006, wpt_105a ,wpt_1400, sam, sam, driver_device, 0, ROT0, "Stern", "World Poker Tour v1.05", MACHINE_NOT_WORKING | MACHINE_NO_SOUND | MACHINE_MECHANICAL)
-GAME( 2006, wpt_106a ,wpt_1400, sam, sam, driver_device, 0, ROT0, "Stern", "World Poker Tour v1.06", MACHINE_NOT_WORKING | MACHINE_NO_SOUND | MACHINE_MECHANICAL)
-GAME( 2006, wpt_106f ,wpt_1400, sam, sam, driver_device, 0, ROT0, "Stern", "World Poker Tour v1.06 (French)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND | MACHINE_MECHANICAL)
-GAME( 2006, wpt_106g ,wpt_1400, sam, sam, driver_device, 0, ROT0, "Stern", "World Poker Tour v1.06 (German)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND | MACHINE_MECHANICAL)
-GAME( 2006, wpt_106i ,wpt_1400, sam, sam, driver_device, 0, ROT0, "Stern", "World Poker Tour v1.06 (Italian)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND | MACHINE_MECHANICAL)
-GAME( 2006, wpt_106l ,wpt_1400, sam, sam, driver_device, 0, ROT0, "Stern", "World Poker Tour v1.06 (Spanish)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND | MACHINE_MECHANICAL)
+GAME( 2006, skc_105 ,0, sam, sam, driver_device, 0, ROT0, "Stern", "Simpsons Kooky Carnival (Redemption) v1.05", MACHINE_FLAGS)
+GAME( 2007, sman_130ef ,sman_240, sam, sam, driver_device, 0, ROT0, "Stern", "Spider-Man v1.30 (English,French)", MACHINE_FLAGS)
+GAME( 2007, sman_130ei ,sman_240, sam, sam, driver_device, 0, ROT0, "Stern", "Spider-Man v1.30 (English,Italian)", MACHINE_FLAGS)
+GAME( 2007, sman_130es ,sman_240, sam, sam, driver_device, 0, ROT0, "Stern", "Spider-Man v1.30 (English,Spanish)", MACHINE_FLAGS)
+GAME( 2007, sman_130gf ,sman_240, sam, sam, driver_device, 0, ROT0, "Stern", "Spider-Man v1.30 (German,French)", MACHINE_FLAGS)
+GAME( 2007, sman_140e ,sman_240, sam, sam, driver_device, 0, ROT0, "Stern", "Spider-Man v1.40", MACHINE_FLAGS)
+GAME( 2007, sman_140ef ,sman_240, sam, sam, driver_device, 0, ROT0, "Stern", "Spider-Man v1.40 (English,French)", MACHINE_FLAGS)
+GAME( 2007, sman_140ei ,sman_240, sam, sam, driver_device, 0, ROT0, "Stern", "Spider-Man v1.40 (English,Italian)", MACHINE_FLAGS)
+GAME( 2007, sman_140es ,sman_240, sam, sam, driver_device, 0, ROT0, "Stern", "Spider-Man v1.40 (English,Spanish)", MACHINE_FLAGS)
+GAME( 2007, sman_140gf ,sman_240, sam, sam, driver_device, 0, ROT0, "Stern", "Spider-Man v1.40 (German,French)", MACHINE_FLAGS)
+GAME( 2007, sman_142e ,sman_240, sam, sam, driver_device, 0, ROT0, "Stern", "Spider-Man v1.42", MACHINE_FLAGS)
+GAME( 2007, sman_160e ,sman_240, sam, sam, driver_device, 0, ROT0, "Stern", "Spider-Man v1.60", MACHINE_FLAGS)
+GAME( 2007, sman_160ef ,sman_240, sam, sam, driver_device, 0, ROT0, "Stern", "Spider-Man v1.60 (English,French)", MACHINE_FLAGS)
+GAME( 2007, sman_160ei ,sman_240, sam, sam, driver_device, 0, ROT0, "Stern", "Spider-Man v1.60 (English,Italian)", MACHINE_FLAGS)
+GAME( 2007, sman_160es ,sman_240, sam, sam, driver_device, 0, ROT0, "Stern", "Spider-Man v1.60 (English,Spanish)", MACHINE_FLAGS)
+GAME( 2007, sman_160gf ,sman_240, sam, sam, driver_device, 0, ROT0, "Stern", "Spider-Man v1.60 (German,French)", MACHINE_FLAGS)
+GAME( 2007, sman_170e ,sman_240, sam, sam, driver_device, 0, ROT0, "Stern", "Spider-Man v1.70", MACHINE_FLAGS)
+GAME( 2007, sman_170ef ,sman_240, sam, sam, driver_device, 0, ROT0, "Stern", "Spider-Man v1.70 (English,French)", MACHINE_FLAGS)
+GAME( 2007, sman_170ei ,sman_240, sam, sam, driver_device, 0, ROT0, "Stern", "Spider-Man v1.70 (English,Italian)", MACHINE_FLAGS)
+GAME( 2007, sman_170es ,sman_240, sam, sam, driver_device, 0, ROT0, "Stern", "Spider-Man v1.70 (English,Spanish)", MACHINE_FLAGS)
+GAME( 2007, sman_170gf ,sman_240, sam, sam, driver_device, 0, ROT0, "Stern", "Spider-Man v1.70 (German,French)", MACHINE_FLAGS)
+GAME( 2007, sman_190e ,sman_240, sam, sam, driver_device, 0, ROT0, "Stern", "Spider-Man v1.90", MACHINE_FLAGS)
+GAME( 2007, sman_190ef ,sman_240, sam, sam, driver_device, 0, ROT0, "Stern", "Spider-Man v1.90 (English,French)", MACHINE_FLAGS)
+GAME( 2007, sman_190ei ,sman_240, sam, sam, driver_device, 0, ROT0, "Stern", "Spider-Man v1.90 (English,Italian)", MACHINE_FLAGS)
+GAME( 2007, sman_190es ,sman_240, sam, sam, driver_device, 0, ROT0, "Stern", "Spider-Man v1.90 (English,Spanish)", MACHINE_FLAGS)
+GAME( 2007, sman_190gf ,sman_240, sam, sam, driver_device, 0, ROT0, "Stern", "Spider-Man v1.90 (German,French)", MACHINE_FLAGS)
+GAME( 2007, sman_192e ,sman_240, sam, sam, driver_device, 0, ROT0, "Stern", "Spider-Man v1.92", MACHINE_FLAGS)
+GAME( 2007, sman_192ef ,sman_240, sam, sam, driver_device, 0, ROT0, "Stern", "Spider-Man v1.92 (English,French)", MACHINE_FLAGS)
+GAME( 2007, sman_192ei ,sman_240, sam, sam, driver_device, 0, ROT0, "Stern", "Spider-Man v1.92 (English,Italian)", MACHINE_FLAGS)
+GAME( 2007, sman_192es ,sman_240, sam, sam, driver_device, 0, ROT0, "Stern", "Spider-Man v1.92 (English,Spanish)", MACHINE_FLAGS)
+GAME( 2007, sman_192gf ,sman_240, sam, sam, driver_device, 0, ROT0, "Stern", "Spider-Man v1.92 (German,French)", MACHINE_FLAGS)
+GAME( 2007, sman_200e ,sman_240, sam, sam, driver_device, 0, ROT0, "Stern", "Spider-Man v2.00", MACHINE_FLAGS)
+GAME( 2007, sman_210e ,sman_240, sam, sam, driver_device, 0, ROT0, "Stern", "Spider-Man v2.10", MACHINE_FLAGS)
+GAME( 2007, sman_210f ,sman_240, sam, sam, driver_device, 0, ROT0, "Stern", "Spider-Man v2.10 (French)", MACHINE_FLAGS)
+GAME( 2007, sman_210ei ,sman_240, sam, sam, driver_device, 0, ROT0, "Stern", "Spider-Man v2.10 (English,Italian)", MACHINE_FLAGS)
+GAME( 2007, sman_210es ,sman_240, sam, sam, driver_device, 0, ROT0, "Stern", "Spider-Man v2.10 (English,Spanish)", MACHINE_FLAGS)
+GAME( 2007, sman_210gf ,sman_240, sam, sam, driver_device, 0, ROT0, "Stern", "Spider-Man v2.10 (German,French)", MACHINE_FLAGS)
+GAME( 2007, sman_220e ,sman_240, sam, sam, driver_device, 0, ROT0, "Stern", "Spider-Man v2.20", MACHINE_FLAGS)
+GAME( 2007, sman_230e ,sman_240, sam, sam, driver_device, 0, ROT0, "Stern", "Spider-Man v2.30", MACHINE_FLAGS)
+GAME( 2007, sman_240 ,0, sam, sam, driver_device, 0, ROT0, "Stern", "Spider-Man v2.40", MACHINE_FLAGS)
+GAME( 2007, wof_100a ,wof_500a, sam, sam, driver_device, 0, ROT0, "Stern", "Wheel of Fortune v1.0", MACHINE_FLAGS)
+GAME( 2007, wof_200a ,wof_500a, sam, sam, driver_device, 0, ROT0, "Stern", "Wheel of Fortune v2.0", MACHINE_FLAGS)
+GAME( 2007, wof_200f ,wof_500a, sam, sam, driver_device, 0, ROT0, "Stern", "Wheel of Fortune v2.0 (French)", MACHINE_FLAGS)
+GAME( 2007, wof_200g ,wof_500a, sam, sam, driver_device, 0, ROT0, "Stern", "Wheel of Fortune v2.0 (German)", MACHINE_FLAGS)
+GAME( 2007, wof_200i ,wof_500a, sam, sam, driver_device, 0, ROT0, "Stern", "Wheel of Fortune v2.0 (Italian)", MACHINE_FLAGS)
+GAME( 2007, wof_300a ,wof_500a, sam, sam, driver_device, 0, ROT0, "Stern", "Wheel of Fortune v3.0", MACHINE_FLAGS)
+GAME( 2007, wof_300f ,wof_500a, sam, sam, driver_device, 0, ROT0, "Stern", "Wheel of Fortune v3.0 (French)", MACHINE_FLAGS)
+GAME( 2007, wof_300g ,wof_500a, sam, sam, driver_device, 0, ROT0, "Stern", "Wheel of Fortune v3.0 (German)", MACHINE_FLAGS)
+GAME( 2007, wof_300i ,wof_500a, sam, sam, driver_device, 0, ROT0, "Stern", "Wheel of Fortune v3.0 (Italian)", MACHINE_FLAGS)
+GAME( 2007, wof_300l ,wof_500a, sam, sam, driver_device, 0, ROT0, "Stern", "Wheel of Fortune v3.0 (Spanish)", MACHINE_FLAGS)
+GAME( 2007, wof_400a ,wof_500a, sam, sam, driver_device, 0, ROT0, "Stern", "Wheel of Fortune v4.0", MACHINE_FLAGS)
+GAME( 2007, wof_400f ,wof_500a, sam, sam, driver_device, 0, ROT0, "Stern", "Wheel of Fortune v4.0 (French)", MACHINE_FLAGS)
+GAME( 2007, wof_400g ,wof_500a, sam, sam, driver_device, 0, ROT0, "Stern", "Wheel of Fortune v4.0 (German)", MACHINE_FLAGS)
+GAME( 2007, wof_400i ,wof_500a, sam, sam, driver_device, 0, ROT0, "Stern", "Wheel of Fortune v4.0 (Italian)", MACHINE_FLAGS)
+GAME( 2007, wof_400l ,wof_500a, sam, sam, driver_device, 0, ROT0, "Stern", "Wheel of Fortune v4.0 (Spanish)", MACHINE_FLAGS)
+GAME( 2007, wof_500a ,0, sam, sam, driver_device, 0, ROT0, "Stern", "Wheel of Fortune v5.0", MACHINE_FLAGS)
+GAME( 2007, wof_500f ,wof_500a, sam, sam, driver_device, 0, ROT0, "Stern", "Wheel of Fortune v5.0 (French)", MACHINE_FLAGS)
+GAME( 2007, wof_500g ,wof_500a, sam, sam, driver_device, 0, ROT0, "Stern", "Wheel of Fortune v5.0 (German)", MACHINE_FLAGS)
+GAME( 2007, wof_500i ,wof_500a, sam, sam, driver_device, 0, ROT0, "Stern", "Wheel of Fortune v5.0 (Italian)", MACHINE_FLAGS)
+GAME( 2007, wof_500l ,wof_500a, sam, sam, driver_device, 0, ROT0, "Stern", "Wheel of Fortune v5.0 (Spanish)", MACHINE_FLAGS)
+GAME( 2006, wpt_103a ,wpt_1400, sam, sam, driver_device, 0, ROT0, "Stern", "World Poker Tour v1.03", MACHINE_FLAGS)
+GAME( 2006, wpt_105a ,wpt_1400, sam, sam, driver_device, 0, ROT0, "Stern", "World Poker Tour v1.05", MACHINE_FLAGS)
+GAME( 2006, wpt_106a ,wpt_1400, sam, sam, driver_device, 0, ROT0, "Stern", "World Poker Tour v1.06", MACHINE_FLAGS)
+GAME( 2006, wpt_106f ,wpt_1400, sam, sam, driver_device, 0, ROT0, "Stern", "World Poker Tour v1.06 (French)", MACHINE_FLAGS)
+GAME( 2006, wpt_106g ,wpt_1400, sam, sam, driver_device, 0, ROT0, "Stern", "World Poker Tour v1.06 (German)", MACHINE_FLAGS)
+GAME( 2006, wpt_106i ,wpt_1400, sam, sam, driver_device, 0, ROT0, "Stern", "World Poker Tour v1.06 (Italian)", MACHINE_FLAGS)
+GAME( 2006, wpt_106l ,wpt_1400, sam, sam, driver_device, 0, ROT0, "Stern", "World Poker Tour v1.06 (Spanish)", MACHINE_FLAGS)
// Missing version 1.07 should be 5 different files per language
-GAME( 2006, wpt_108a ,wpt_1400, sam, sam, driver_device, 0, ROT0, "Stern", "World Poker Tour v1.08", MACHINE_NOT_WORKING | MACHINE_NO_SOUND | MACHINE_MECHANICAL)
-GAME( 2006, wpt_108f ,wpt_1400, sam, sam, driver_device, 0, ROT0, "Stern", "World Poker Tour v1.08 (French)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND | MACHINE_MECHANICAL)
-GAME( 2006, wpt_108g ,wpt_1400, sam, sam, driver_device, 0, ROT0, "Stern", "World Poker Tour v1.08 (German)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND | MACHINE_MECHANICAL)
-GAME( 2006, wpt_108i ,wpt_1400, sam, sam, driver_device, 0, ROT0, "Stern", "World Poker Tour v1.08 (Italian)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND | MACHINE_MECHANICAL)
-GAME( 2006, wpt_108l ,wpt_1400, sam, sam, driver_device, 0, ROT0, "Stern", "World Poker Tour v1.08 (Spanish)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND | MACHINE_MECHANICAL)
-GAME( 2006, wpt_109a ,wpt_1400, sam, sam, driver_device, 0, ROT0, "Stern", "World Poker Tour v1.09", MACHINE_NOT_WORKING | MACHINE_NO_SOUND | MACHINE_MECHANICAL)
-GAME( 2006, wpt_109f ,wpt_1400, sam, sam, driver_device, 0, ROT0, "Stern", "World Poker Tour v1.09 (French)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND | MACHINE_MECHANICAL)
-GAME( 2006, wpt_109f2 ,wpt_1400, sam, sam, driver_device, 0, ROT0, "Stern", "World Poker Tour v1.09 (French)(alt)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND | MACHINE_MECHANICAL)
-GAME( 2006, wpt_109g ,wpt_1400, sam, sam, driver_device, 0, ROT0, "Stern", "World Poker Tour v1.09 (German)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND | MACHINE_MECHANICAL)
-GAME( 2006, wpt_109i ,wpt_1400, sam, sam, driver_device, 0, ROT0, "Stern", "World Poker Tour v1.09 (Italian)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND | MACHINE_MECHANICAL)
-GAME( 2006, wpt_109l ,wpt_1400, sam, sam, driver_device, 0, ROT0, "Stern", "World Poker Tour v1.09 (Spanish)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND | MACHINE_MECHANICAL)
-GAME( 2006, wpt_111a ,wpt_1400, sam, sam, driver_device, 0, ROT0, "Stern", "World Poker Tour v1.11", MACHINE_NOT_WORKING | MACHINE_NO_SOUND | MACHINE_MECHANICAL)
-GAME( 2006, wpt_111af ,wpt_1400, sam, sam, driver_device, 0, ROT0, "Stern", "World Poker Tour v1.11 (English,French)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND | MACHINE_MECHANICAL)
-GAME( 2006, wpt_111ai ,wpt_1400, sam, sam, driver_device, 0, ROT0, "Stern", "World Poker Tour v1.11 (English,Italian)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND | MACHINE_MECHANICAL)
-GAME( 2006, wpt_111al ,wpt_1400, sam, sam, driver_device, 0, ROT0, "Stern", "World Poker Tour v1.11 (English,Spanish)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND | MACHINE_MECHANICAL)
-GAME( 2006, wpt_111f ,wpt_1400, sam, sam, driver_device, 0, ROT0, "Stern", "World Poker Tour v1.11 (French)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND | MACHINE_MECHANICAL)
-GAME( 2006, wpt_111g ,wpt_1400, sam, sam, driver_device, 0, ROT0, "Stern", "World Poker Tour v1.11 (German)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND | MACHINE_MECHANICAL)
-GAME( 2006, wpt_111gf ,wpt_1400, sam, sam, driver_device, 0, ROT0, "Stern", "World Poker Tour v1.11 (German,French)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND | MACHINE_MECHANICAL)
-GAME( 2006, wpt_111i ,wpt_1400, sam, sam, driver_device, 0, ROT0, "Stern", "World Poker Tour v1.11 (Italian)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND | MACHINE_MECHANICAL)
-GAME( 2006, wpt_111l ,wpt_1400, sam, sam, driver_device, 0, ROT0, "Stern", "World Poker Tour v1.11 (Spanish)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND | MACHINE_MECHANICAL)
-GAME( 2006, wpt_112a ,wpt_1400, sam, sam, driver_device, 0, ROT0, "Stern", "World Poker Tour v1.12", MACHINE_NOT_WORKING | MACHINE_NO_SOUND | MACHINE_MECHANICAL)
-GAME( 2006, wpt_112af ,wpt_1400, sam, sam, driver_device, 0, ROT0, "Stern", "World Poker Tour v1.12 (English,French)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND | MACHINE_MECHANICAL)
-GAME( 2006, wpt_112ai ,wpt_1400, sam, sam, driver_device, 0, ROT0, "Stern", "World Poker Tour v1.12 (English,Italian)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND | MACHINE_MECHANICAL)
-GAME( 2006, wpt_112al ,wpt_1400, sam, sam, driver_device, 0, ROT0, "Stern", "World Poker Tour v1.12 (English,Spanish)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND | MACHINE_MECHANICAL)
-GAME( 2006, wpt_112f ,wpt_1400, sam, sam, driver_device, 0, ROT0, "Stern", "World Poker Tour v1.12 (French)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND | MACHINE_MECHANICAL)
-GAME( 2006, wpt_112g ,wpt_1400, sam, sam, driver_device, 0, ROT0, "Stern", "World Poker Tour v1.12 (German)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND | MACHINE_MECHANICAL)
-GAME( 2006, wpt_112gf ,wpt_1400, sam, sam, driver_device, 0, ROT0, "Stern", "World Poker Tour v1.12 (German,French)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND | MACHINE_MECHANICAL)
-GAME( 2006, wpt_112i ,wpt_1400, sam, sam, driver_device, 0, ROT0, "Stern", "World Poker Tour v1.12 (Italian)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND | MACHINE_MECHANICAL)
-GAME( 2006, wpt_112l ,wpt_1400, sam, sam, driver_device, 0, ROT0, "Stern", "World Poker Tour v1.12 (Spanish)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND | MACHINE_MECHANICAL)
-GAME( 2006, wpt_1400 ,0, sam, sam, driver_device, 0, ROT0, "Stern", "World Poker Tour v14.00", MACHINE_NOT_WORKING | MACHINE_NO_SOUND | MACHINE_MECHANICAL)
-GAME( 2006, wpt_1400af ,wpt_1400, sam, sam, driver_device, 0, ROT0, "Stern", "World Poker Tour v14.00 (English,French)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND | MACHINE_MECHANICAL)
-GAME( 2006, wpt_1400ai ,wpt_1400, sam, sam, driver_device, 0, ROT0, "Stern", "World Poker Tour v14.00 (English,Italian)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND | MACHINE_MECHANICAL)
-GAME( 2006, wpt_1400al ,wpt_1400, sam, sam, driver_device, 0, ROT0, "Stern", "World Poker Tour v14.00 (English,Spanish)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND | MACHINE_MECHANICAL)
-GAME( 2006, wpt_1400f ,wpt_1400, sam, sam, driver_device, 0, ROT0, "Stern", "World Poker Tour v14.00 (French)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND | MACHINE_MECHANICAL)
-GAME( 2006, wpt_1400g ,wpt_1400, sam, sam, driver_device, 0, ROT0, "Stern", "World Poker Tour v14.00 (German)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND | MACHINE_MECHANICAL)
-GAME( 2006, wpt_1400gf ,wpt_1400, sam, sam, driver_device, 0, ROT0, "Stern", "World Poker Tour v14.00 (German,French)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND | MACHINE_MECHANICAL)
-GAME( 2006, wpt_1400i ,wpt_1400, sam, sam, driver_device, 0, ROT0, "Stern", "World Poker Tour v14.00 (Italian)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND | MACHINE_MECHANICAL)
-GAME( 2006, wpt_1400l ,wpt_1400, sam, sam, driver_device, 0, ROT0, "Stern", "World Poker Tour v14.00 (Spanish)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND | MACHINE_MECHANICAL)
+GAME( 2006, wpt_108a ,wpt_1400, sam, sam, driver_device, 0, ROT0, "Stern", "World Poker Tour v1.08", MACHINE_FLAGS)
+GAME( 2006, wpt_108f ,wpt_1400, sam, sam, driver_device, 0, ROT0, "Stern", "World Poker Tour v1.08 (French)", MACHINE_FLAGS)
+GAME( 2006, wpt_108g ,wpt_1400, sam, sam, driver_device, 0, ROT0, "Stern", "World Poker Tour v1.08 (German)", MACHINE_FLAGS)
+GAME( 2006, wpt_108i ,wpt_1400, sam, sam, driver_device, 0, ROT0, "Stern", "World Poker Tour v1.08 (Italian)", MACHINE_FLAGS)
+GAME( 2006, wpt_108l ,wpt_1400, sam, sam, driver_device, 0, ROT0, "Stern", "World Poker Tour v1.08 (Spanish)", MACHINE_FLAGS)
+GAME( 2006, wpt_109a ,wpt_1400, sam, sam, driver_device, 0, ROT0, "Stern", "World Poker Tour v1.09", MACHINE_FLAGS)
+GAME( 2006, wpt_109f ,wpt_1400, sam, sam, driver_device, 0, ROT0, "Stern", "World Poker Tour v1.09 (French)", MACHINE_FLAGS)
+GAME( 2006, wpt_109f2 ,wpt_1400, sam, sam, driver_device, 0, ROT0, "Stern", "World Poker Tour v1.09 (French)(alt)", MACHINE_FLAGS)
+GAME( 2006, wpt_109g ,wpt_1400, sam, sam, driver_device, 0, ROT0, "Stern", "World Poker Tour v1.09 (German)", MACHINE_FLAGS)
+GAME( 2006, wpt_109i ,wpt_1400, sam, sam, driver_device, 0, ROT0, "Stern", "World Poker Tour v1.09 (Italian)", MACHINE_FLAGS)
+GAME( 2006, wpt_109l ,wpt_1400, sam, sam, driver_device, 0, ROT0, "Stern", "World Poker Tour v1.09 (Spanish)", MACHINE_FLAGS)
+GAME( 2006, wpt_111a ,wpt_1400, sam, sam, driver_device, 0, ROT0, "Stern", "World Poker Tour v1.11", MACHINE_FLAGS)
+GAME( 2006, wpt_111af ,wpt_1400, sam, sam, driver_device, 0, ROT0, "Stern", "World Poker Tour v1.11 (English,French)", MACHINE_FLAGS)
+GAME( 2006, wpt_111ai ,wpt_1400, sam, sam, driver_device, 0, ROT0, "Stern", "World Poker Tour v1.11 (English,Italian)", MACHINE_FLAGS)
+GAME( 2006, wpt_111al ,wpt_1400, sam, sam, driver_device, 0, ROT0, "Stern", "World Poker Tour v1.11 (English,Spanish)", MACHINE_FLAGS)
+GAME( 2006, wpt_111f ,wpt_1400, sam, sam, driver_device, 0, ROT0, "Stern", "World Poker Tour v1.11 (French)", MACHINE_FLAGS)
+GAME( 2006, wpt_111g ,wpt_1400, sam, sam, driver_device, 0, ROT0, "Stern", "World Poker Tour v1.11 (German)", MACHINE_FLAGS)
+GAME( 2006, wpt_111gf ,wpt_1400, sam, sam, driver_device, 0, ROT0, "Stern", "World Poker Tour v1.11 (German,French)", MACHINE_FLAGS)
+GAME( 2006, wpt_111i ,wpt_1400, sam, sam, driver_device, 0, ROT0, "Stern", "World Poker Tour v1.11 (Italian)", MACHINE_FLAGS)
+GAME( 2006, wpt_111l ,wpt_1400, sam, sam, driver_device, 0, ROT0, "Stern", "World Poker Tour v1.11 (Spanish)", MACHINE_FLAGS)
+GAME( 2006, wpt_112a ,wpt_1400, sam, sam, driver_device, 0, ROT0, "Stern", "World Poker Tour v1.12", MACHINE_FLAGS)
+GAME( 2006, wpt_112af ,wpt_1400, sam, sam, driver_device, 0, ROT0, "Stern", "World Poker Tour v1.12 (English,French)", MACHINE_FLAGS)
+GAME( 2006, wpt_112ai ,wpt_1400, sam, sam, driver_device, 0, ROT0, "Stern", "World Poker Tour v1.12 (English,Italian)", MACHINE_FLAGS)
+GAME( 2006, wpt_112al ,wpt_1400, sam, sam, driver_device, 0, ROT0, "Stern", "World Poker Tour v1.12 (English,Spanish)", MACHINE_FLAGS)
+GAME( 2006, wpt_112f ,wpt_1400, sam, sam, driver_device, 0, ROT0, "Stern", "World Poker Tour v1.12 (French)", MACHINE_FLAGS)
+GAME( 2006, wpt_112g ,wpt_1400, sam, sam, driver_device, 0, ROT0, "Stern", "World Poker Tour v1.12 (German)", MACHINE_FLAGS)
+GAME( 2006, wpt_112gf ,wpt_1400, sam, sam, driver_device, 0, ROT0, "Stern", "World Poker Tour v1.12 (German,French)", MACHINE_FLAGS)
+GAME( 2006, wpt_112i ,wpt_1400, sam, sam, driver_device, 0, ROT0, "Stern", "World Poker Tour v1.12 (Italian)", MACHINE_FLAGS)
+GAME( 2006, wpt_112l ,wpt_1400, sam, sam, driver_device, 0, ROT0, "Stern", "World Poker Tour v1.12 (Spanish)", MACHINE_FLAGS)
+GAME( 2006, wpt_1400 ,0, sam, sam, driver_device, 0, ROT0, "Stern", "World Poker Tour v14.00", MACHINE_FLAGS)
+GAME( 2006, wpt_1400af ,wpt_1400, sam, sam, driver_device, 0, ROT0, "Stern", "World Poker Tour v14.00 (English,French)", MACHINE_FLAGS)
+GAME( 2006, wpt_1400ai ,wpt_1400, sam, sam, driver_device, 0, ROT0, "Stern", "World Poker Tour v14.00 (English,Italian)", MACHINE_FLAGS)
+GAME( 2006, wpt_1400al ,wpt_1400, sam, sam, driver_device, 0, ROT0, "Stern", "World Poker Tour v14.00 (English,Spanish)", MACHINE_FLAGS)
+GAME( 2006, wpt_1400f ,wpt_1400, sam, sam, driver_device, 0, ROT0, "Stern", "World Poker Tour v14.00 (French)", MACHINE_FLAGS)
+GAME( 2006, wpt_1400g ,wpt_1400, sam, sam, driver_device, 0, ROT0, "Stern", "World Poker Tour v14.00 (German)", MACHINE_FLAGS)
+GAME( 2006, wpt_1400gf ,wpt_1400, sam, sam, driver_device, 0, ROT0, "Stern", "World Poker Tour v14.00 (German,French)", MACHINE_FLAGS)
+GAME( 2006, wpt_1400i ,wpt_1400, sam, sam, driver_device, 0, ROT0, "Stern", "World Poker Tour v14.00 (Italian)", MACHINE_FLAGS)
+GAME( 2006, wpt_1400l ,wpt_1400, sam, sam, driver_device, 0, ROT0, "Stern", "World Poker Tour v14.00 (Spanish)", MACHINE_FLAGS)
diff --git a/src/mame/drivers/savquest.cpp b/src/mame/drivers/savquest.cpp
index 784278096fa..77cb34fcc37 100644
--- a/src/mame/drivers/savquest.cpp
+++ b/src/mame/drivers/savquest.cpp
@@ -336,7 +336,7 @@ void savquest_state::vid_3dfx_init()
m_pci_3dfx_regs[0x08 / 4] = 2; // revision ID
m_pci_3dfx_regs[0x10 / 4] = 0xff000000;
m_pci_3dfx_regs[0x40 / 4] = 0x4000; //INITEN_SECONDARY_REV_ID
- voodoo_set_init_enable(m_voodoo, 0x4000); //INITEN_SECONDARY_REV_ID
+ m_voodoo->voodoo_set_init_enable(0x4000); //INITEN_SECONDARY_REV_ID
}
static UINT32 pci_3dfx_r(device_t *busdevice, device_t *device, int function, int reg, UINT32 mem_mask)
@@ -358,7 +358,7 @@ osd_printf_warning("PCI write: %x %x\n", reg, data);
}
else if (reg == 0x40)
{
- voodoo_set_init_enable(state->m_voodoo, data);
+ state->m_voodoo->voodoo_set_init_enable(data);
}
else if (reg == 0x54)
{
diff --git a/src/mame/drivers/sbowling.cpp b/src/mame/drivers/sbowling.cpp
index b4869187e49..189639a051d 100644
--- a/src/mame/drivers/sbowling.cpp
+++ b/src/mame/drivers/sbowling.cpp
@@ -1,4 +1,4 @@
-// license:???
+// license:GPL-2.0+
// copyright-holders:Jarek Burczynski, Tomasz Slanina
/**********************************************************
Strike Bowling (c)1982 Taito
diff --git a/src/mame/drivers/sbrain.cpp b/src/mame/drivers/sbrain.cpp
index 84439358b81..2994f754518 100644
--- a/src/mame/drivers/sbrain.cpp
+++ b/src/mame/drivers/sbrain.cpp
@@ -270,7 +270,6 @@ SLOT_INTERFACE_END
MACHINE_RESET_MEMBER( sbrain_state, sbrain )
{
- m_beep->set_frequency(800);
m_p_chargen = memregion("chargen")->base();
m_bankr0->set_entry(1); // point at rom
m_bankw0->set_entry(0); // always write to ram
@@ -337,7 +336,7 @@ static MACHINE_CONFIG_START( sbrain, sbrain_state )
/* sound hardware */
MCFG_SPEAKER_STANDARD_MONO("mono")
- MCFG_SOUND_ADD("beeper", BEEP, 0)
+ MCFG_SOUND_ADD("beeper", BEEP, 800)
MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.00)
/* Devices */
diff --git a/src/mame/drivers/sc2.cpp b/src/mame/drivers/sc2.cpp
index 5be373bb484..d871e4b30a9 100644
--- a/src/mame/drivers/sc2.cpp
+++ b/src/mame/drivers/sc2.cpp
@@ -22,9 +22,9 @@ class sc2_state : public driver_device
public:
sc2_state(const machine_config &mconfig, device_type type, const char *tag)
: driver_device(mconfig, type, tag),
- m_beep(*this, "beeper")
- ,
- m_maincpu(*this, "maincpu") { }
+ m_beep(*this, "beeper"),
+ m_maincpu(*this, "maincpu")
+ { }
required_device<beep_device> m_beep;
DECLARE_READ8_MEMBER(pio_port_a_r);
@@ -214,7 +214,7 @@ static MACHINE_CONFIG_START( sc2, sc2_state )
/* sound hardware */
MCFG_SPEAKER_STANDARD_MONO( "mono" )
- MCFG_SOUND_ADD( "beeper", BEEP, 0 )
+ MCFG_SOUND_ADD( "beeper", BEEP, 3250 )
MCFG_SOUND_ROUTE( ALL_OUTPUTS, "mono", 0.50 )
MACHINE_CONFIG_END
diff --git a/src/mame/drivers/seattle.cpp b/src/mame/drivers/seattle.cpp
index 8cb68506d8c..79b56322995 100644
--- a/src/mame/drivers/seattle.cpp
+++ b/src/mame/drivers/seattle.cpp
@@ -540,7 +540,7 @@ public:
UINT32 seattle_state::screen_update_seattle(screen_device &screen, bitmap_rgb32 &bitmap, const rectangle &cliprect)
{
- return voodoo_update(m_voodoo, bitmap, cliprect) ? 0 : UPDATE_HAS_NOT_CHANGED;
+ return m_voodoo->voodoo_update(bitmap, cliprect) ? 0 : UPDATE_HAS_NOT_CHANGED;
}
@@ -876,7 +876,7 @@ void seattle_state::pci_3dfx_w(address_space &space, UINT8 reg, UINT8 type, UINT
break;
case 0x10: /* initEnable register */
- voodoo_set_init_enable(m_voodoo, data);
+ m_voodoo->voodoo_set_init_enable(data);
break;
}
if (LOG_PCI)
@@ -2864,7 +2864,7 @@ ROM_START( calspeeda )
ROM_SYSTEM_BIOS( 3, "up16_3", "Disk Update 1.0x to 2.1a (1.25) Step 3 of 3" )
ROMX_LOAD("eprom #3 2.1A 3286", 0x000000, 0x100000, CRC(e7d8c88f) SHA1(06c11241ac439527b361826784aef4c58689892e), ROM_BIOS(4))
-
+
DISK_REGION( "ide:0:hdd:image" ) /* Release version 1.0r8a (4/10/98) (Guts 4/10/98, Main 4/10/98) */
DISK_IMAGE( "cs_10r8a", 0, SHA1(ba4e7589740e0647938c81c5082bb71d8826bad4) )
diff --git a/src/mame/drivers/segac2.cpp b/src/mame/drivers/segac2.cpp
index 1ab671ae694..86eb16efe5f 100644
--- a/src/mame/drivers/segac2.cpp
+++ b/src/mame/drivers/segac2.cpp
@@ -30,6 +30,7 @@
1992 Puyo Puyo Sega / Compile 317-0203 C2 171-5992A
1992 Tant-R (Japan) Sega 317-0211 C2
1992 Tant-R (Korea) Sega ? C2
+ 1992 Waku Waku Marine Sega 317-0140 C2
1993 SegaSonic Popcorn Shop Sega 317-0140 C2
1994 PotoPoto (Japan) Sega 317-0218 C2
1994 Stack Columns (Japan) Sega 317-0219 C2
@@ -98,11 +99,14 @@ class segac2_state : public md_base_state
{
public:
segac2_state(const machine_config &mconfig, device_type type, const char *tag)
- : md_base_state(mconfig, type, tag),
- m_paletteram(*this, "paletteram"),
- m_upd7759(*this, "upd"),
- m_screen(*this, "screen"),
- m_palette(*this, "palette") { }
+ : md_base_state(mconfig, type, tag)
+ , m_paletteram(*this, "paletteram")
+ , m_upd_region(*this, "upd")
+ , m_upd7759(*this, "upd")
+ , m_screen(*this, "screen")
+ , m_palette(*this, "palette")
+ {
+ }
// for Print Club only
int m_cam_data;
@@ -110,6 +114,7 @@ public:
int m_segac2_enable_display;
required_shared_ptr<UINT16> m_paletteram;
+ optional_memory_region m_upd_region;
/* protection-related tracking */
segac2_prot_delegate m_prot_func; /* emulation of protection chip */
@@ -244,8 +249,10 @@ MACHINE_RESET_MEMBER(segac2_state,segac2)
/* determine how many sound banks */
m_sound_banks = 0;
- if (memregion("upd")->base())
- m_sound_banks = memregion("upd")->bytes() / 0x20000;
+ if (m_upd_region != NULL)
+ {
+ m_sound_banks = m_upd_region->bytes() / 0x20000;
+ }
/* reset the protection */
m_prot_write_buf = 0;
@@ -932,6 +939,50 @@ static INPUT_PORTS_START( soniccar )
INPUT_PORTS_END
+static INPUT_PORTS_START( wwmarine )
+ PORT_INCLUDE( systemc_generic )
+
+ PORT_MODIFY("P1")
+ PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_BUTTON1 ) // Button 1
+ PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_BUTTON2 ) // Button 2
+ PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_BUTTON3 ) // Lever
+ PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_UNKNOWN )
+ PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_UNKNOWN )
+ PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_UNKNOWN )
+ PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_JOYSTICK_LEFT ) // Handle Left - Acts like a button, holding LEFT doesn't work - "tapping" left moves player
+ PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_JOYSTICK_RIGHT ) // Handle Right - Acts like a button, holding RIGHT doesn't work - "tapping" right moves player
+
+ PORT_MODIFY("P2")
+ PORT_BIT( 0xff, IP_ACTIVE_LOW, IPT_UNUSED )
+
+ PORT_MODIFY("SERVICE")
+ PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_COIN1 )
+ PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_UNUSED )
+ PORT_SERVICE_NO_TOGGLE( 0x04, IP_ACTIVE_LOW )
+ PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_SERVICE1 )
+ PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_UNUSED )
+ PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_UNUSED )
+ PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_UNUSED )
+ PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_UNUSED )
+
+ PORT_MODIFY("DSW")
+ PORT_DIPNAME( 0x03, 0x03, "Demo Sound Interval" ) PORT_DIPLOCATION("SW2:1,2")
+ PORT_DIPSETTING( 0x00, DEF_STR( Off ) )
+ PORT_DIPSETTING( 0x01, "Every 3 Demo Cycles" )
+ PORT_DIPSETTING( 0x02, "Every 2 Demo Cycles" )
+ PORT_DIPSETTING( 0x03, DEF_STR( On ) ) // Listed as NO INTERVAL
+ PORT_DIPNAME( 0x04, 0x04, "Capsule Mode" ) PORT_DIPLOCATION("SW2:3")
+ PORT_DIPSETTING( 0x00, DEF_STR( Off ) )
+ PORT_DIPSETTING( 0x04, DEF_STR( On ) )
+ //"SW2:4" unused
+ PORT_DIPNAME( 0x10, 0x10, "Cedit Mode" ) PORT_DIPLOCATION("SW2:5")
+ PORT_DIPSETTING( 0x10, DEF_STR( Off ) )
+ PORT_DIPSETTING( 0x00, DEF_STR( On ) )
+ //"SW2:6" unused
+ //"SW2:7" unused
+ //"SW2:7" unused
+INPUT_PORTS_END
+
static INPUT_PORTS_START( sonicpop )
PORT_INCLUDE( systemc_generic )
@@ -1542,6 +1593,7 @@ ROM_START( bloxeedc ) /* Bloxeed (C System Version) (c)1989 Sega / Elorg */
ROM_LOAD16_BYTE( "epr-12992.ic33", 0x040001, 0x020000, CRC(19b0084c) SHA1(b3ba0f3d8d39a19aa66edb24885ea21192e22704) )
ROM_END
+
ROM_START( bloxeedu ) /* Bloxeed USA (C System Version) (c)1989 Sega / Elorg */
ROM_REGION( 0x200000, "maincpu", 0 )
ROM_LOAD16_BYTE( "epr-12997a.ic32", 0x000000, 0x020000, CRC(23655bc9) SHA1(32fc1f75a43aa49dc656d40d34ec10f3f0a2bdb3) )
@@ -1563,12 +1615,14 @@ ROM_START( columns ) /* Columns (World) (c)1990 Sega */
ROM_LOAD16_BYTE( "epr-13113.ic31", 0x000001, 0x020000, CRC(9a426d9b) SHA1(3322e65ebf8d0a6047f7d408387c63ea401b8973) )
ROM_END
+
ROM_START( columnsu ) /* Columns (US) (c)1990 Sega */
ROM_REGION( 0x200000, "maincpu", 0 )
ROM_LOAD16_BYTE( "epr-13116a.ic32", 0x000000, 0x020000, CRC(a0284b16) SHA1(a72c8567ab2386ef6bc7bb83cc1612f4c6bf8461) )
ROM_LOAD16_BYTE( "epr-13115a.ic31", 0x000001, 0x020000, CRC(e37496f3) SHA1(30ebeed76613ae8d6d3ce9fca282124685067b27) )
ROM_END
+
ROM_START( columnsj ) /* Columns (Jpn) (c)1990 Sega */
ROM_REGION( 0x200000, "maincpu", 0 )
ROM_LOAD16_BYTE( "epr-13112.ic32", 0x000000, 0x020000, CRC(bae6e53e) SHA1(2c2fd621eecd55591f22d076323972a7d0314615) )
@@ -1582,6 +1636,7 @@ ROM_START( columns2 ) /* Columns II - The Voyage Through Time (c)1990 Sega */
ROM_LOAD16_BYTE( "epr-13362.ic31", 0x000001, 0x020000, CRC(394e2419) SHA1(d4f726b32cf301d0d52611237b83177e69bfaf71) )
ROM_END
+
ROM_START( column2j ) /* Columns II - The Voyage Through Time (Jpn) (c)1990 Sega */
ROM_REGION( 0x200000, "maincpu", 0 )
ROM_LOAD16_BYTE( "epr-13361.ic32", 0x000000, 0x020000, CRC(b54b5f12) SHA1(4d7fbae7d9bcadd433ebc25aef255dc43df611bc) )
@@ -1597,6 +1652,7 @@ ROM_START( tantrbl2 ) /* Tant-R (Puzzle & Action) (Alt Bootleg Running on C Boar
ROM_LOAD16_BYTE( "mpr-15615.ic33", 0x100001, 0x080000, CRC(36a88bd4) SHA1(cc7f6a947d1b79bb86957c43035b53d6d2bcfa28) )
ROM_END
+
ROM_START( tantrbl3 ) /* Tant-R (Puzzle & Action) (Alt Bootleg Running on C Board?, No Samples) */
ROM_REGION( 0x200000, "maincpu", 0 )
ROM_LOAD16_BYTE( "2.u29", 0x000000, 0x080000, CRC(faecb7b1) SHA1(ddca61996dbd0d66e9ecc04647e61a6d0af25807) )
@@ -1605,6 +1661,7 @@ ROM_START( tantrbl3 ) /* Tant-R (Puzzle & Action) (Alt Bootleg Running on C Boar
ROM_LOAD16_BYTE( "3.u30", 0x100001, 0x080000, CRC(36a88bd4) SHA1(cc7f6a947d1b79bb86957c43035b53d6d2bcfa28) )
ROM_END
+
ROM_START( ichirjbl ) /* Ichident-R (Puzzle & Action 2) (Bootleg Running on C Board?, No Samples) */
ROM_REGION( 0x200000, "maincpu", 0 )
ROM_LOAD16_BYTE( "27c4000.2",0x000000, 0x080000, CRC(5a194f44) SHA1(67a4d21b91704f8c2210b5106e82e22ba3366f4c) )
@@ -1625,6 +1682,7 @@ ROM_START( borench ) /* Borench (c)1990 Sega */
ROM_LOAD( "13587.ic4", 0x000000, 0x020000, CRC(62b85e56) SHA1(822ab733c87938bb70a9e32cc5dd36bbf6f21d11) )
ROM_END
+
ROM_START( borencha ) /* Borench (c)1990 Sega */
ROM_REGION( 0x200000, "maincpu", 0 )
ROM_LOAD16_BYTE( "13591.ic32", 0x000000, 0x040000, CRC(7851078b) SHA1(122934f0414a29b4b363acad01ee4db369259e72) )
@@ -1647,6 +1705,7 @@ ROM_START( tfrceac ) /* Thunder Force AC (c)1990 Technosoft / Sega */
ROM_LOAD( "epr-13655.ic4", 0x000000, 0x040000, CRC(e09961f6) SHA1(e109b5f41502b765d191f22e3bbcff97d6defaa1) )
ROM_END
+
ROM_START( tfrceacj ) /* Thunder Force AC (Jpn) (c)1990 Technosoft / Sega */
ROM_REGION( 0x200000, "maincpu", 0 )
ROM_LOAD16_BYTE( "epr-13657.ic32", 0x000000, 0x040000, CRC(a0f38ffd) SHA1(da548e7f61aed0e82a460553a119941da8857bc4) )
@@ -1659,6 +1718,7 @@ ROM_START( tfrceacj ) /* Thunder Force AC (Jpn) (c)1990 Technosoft / Sega */
ROM_LOAD( "epr-13655.ic4", 0x000000, 0x040000, CRC(e09961f6) SHA1(e109b5f41502b765d191f22e3bbcff97d6defaa1) )
ROM_END
+
ROM_START( tfrceacb ) /* Thunder Force AC (Bootleg) (c)1990 Technosoft / Sega */
ROM_REGION( 0x200000, "maincpu", 0 )
ROM_LOAD16_BYTE( "4.bin", 0x000000, 0x040000, CRC(eba059d3) SHA1(7bc04401f9a138fa151ac09a528b70acfb2021e3) )
@@ -1691,6 +1751,17 @@ ROM_START( soniccar ) /* Waku Waku Sonic Patrol Car (c)1991 Sega - 834-8401 SON
ROM_LOAD( "epr-14394.ic4", 0x000000, 0x040000, CRC(476e30dd) SHA1(c9d381160c58b05763ea286a53c7ca6de074fda2) )
ROM_END
+
+ROM_START( wwmarine ) /* Waku Waku Marine (c)1992 Sega - 834-9082 WAKUWAKU MARINE (EMP5032 labeled 317-0140) */
+ ROM_REGION( 0x200000, "maincpu", 0 )
+ ROM_LOAD16_BYTE( "epr-15097.ic32", 0x000000, 0x040000, CRC(1223a77a) SHA1(3725f17745da0d1f2d50b0a99a37b768c5539ce2) )
+ ROM_LOAD16_BYTE( "epr-15096.ic31", 0x000001, 0x040000, CRC(1b833932) SHA1(a37caa75cbcc2b7ce84fccfd5768e6d1580c0bc0) )
+
+ ROM_REGION( 0x040000, "upd", 0 )
+ ROM_LOAD( "epr-15095.ic4", 0x000000, 0x040000, CRC(df13755b) SHA1(177aac7aaadc36e14dbcdf12bd42dbe70b3edd49) )
+ROM_END
+
+
ROM_START( sonicpop ) /* Sega Sonic Popcorn Shop (Rev.B) (c)1993 Sega - 834-9555-02 (EMP5032 labeled 317-0140) */
ROM_REGION( 0x200000, "maincpu", 0 )
ROM_LOAD16_BYTE( "epr-14592b.ic32", 0x000000, 0x040000, CRC(bac586a1) SHA1(0208213bfa1a5093e76edb1a7e0ba5ebc862801d) )
@@ -1702,6 +1773,7 @@ ROM_START( sonicpop ) /* Sega Sonic Popcorn Shop (Rev.B) (c)1993 Sega - 834-9555
ROM_LOAD( "epr-15495.ic4", 0x000000, 0x040000, CRC(d3ee4c68) SHA1(557c57b22521339d94d9a3e6fd2af68a67a153b6) )
ROM_END
+
ROM_START( ribbit ) /* Ribbit (c)1991 Sega */
ROM_REGION( 0x200000, "maincpu", 0 )
ROM_LOAD16_BYTE( "epr-13833.ic32", 0x000000, 0x040000, CRC(5347f8ce) SHA1(b95b99536157edfbf0d74a42f64235f47dca7ee1) )
@@ -1715,7 +1787,7 @@ ROM_START( ribbit ) /* Ribbit (c)1991 Sega */
ROM_END
-ROM_START( tantr ) /* Tant-R (Puzzle & Action) (c)1992 Sega */
+ROM_START( tantr ) /* Tant-R (Puzzle & Action) (c)1992 Sega - 834-9664 TANT-R (EMP5032 labeled 317-0211) */
ROM_REGION( 0x200000, "maincpu", 0 )
ROM_LOAD16_BYTE( "epr-15614.ic32", 0x000000, 0x080000, CRC(557782bc) SHA1(1546a999ab97c380dc87f6c95d5687722206740d) )
ROM_LOAD16_BYTE( "epr-15613.ic31", 0x000001, 0x080000, CRC(14bbb235) SHA1(8dbfec5fb1d7a695acbb2fc0e78e4bdf76eb8d9d) )
@@ -1726,6 +1798,7 @@ ROM_START( tantr ) /* Tant-R (Puzzle & Action) (c)1992 Sega */
ROM_LOAD( "epr-15617.ic4", 0x000000, 0x040000, CRC(338324a1) SHA1(79e2782d0d4764dd723886f846c852a6f6c1fb64) )
ROM_END
+
ROM_START( tantrkor ) /* Tant-R (Puzzle & Action) (Korea) (c)1993 Sega */
ROM_REGION( 0x200000, "maincpu", 0 )
/* strange names, but this is what was printed on the (original) chips */
@@ -1738,6 +1811,7 @@ ROM_START( tantrkor ) /* Tant-R (Puzzle & Action) (Korea) (c)1993 Sega */
ROM_LOAD( "epr-15617.ic4", 0x000000, 0x040000, CRC(338324a1) SHA1(79e2782d0d4764dd723886f846c852a6f6c1fb64) )
ROM_END
+
ROM_START( tantrbl ) /* Tant-R (Puzzle & Action) (Bootleg) (c)1992 Sega */
ROM_REGION( 0x200000, "maincpu", 0 )
ROM_LOAD16_BYTE( "pa_e10.bin", 0x000000, 0x080000, CRC(6c3f711f) SHA1(55aa2d50422134b95d9a7c5cbdc453b207b91b4c) )
@@ -1763,6 +1837,7 @@ ROM_START( puyo ) /* Puyo Puyo (c)1992 Sega / Compile */
ROM_LOAD( "epr-15196.ic4", 0x000000, 0x020000, CRC(79112b3b) SHA1(fc3a202e1e2ff39950d4af689b7fcca86c301805) )
ROM_END
+
ROM_START( puyoj ) /* Puyo Puyo (Rev B) (c)1992 Sega / Compile */
ROM_REGION( 0x200000, "maincpu", 0 )
ROM_LOAD16_BYTE( "epr-15036b.ic32", 0x000000, 0x020000, CRC(5310ca1b) SHA1(dcfe2bf7476b640dfb790e8716e75b483d535e48) )
@@ -1781,6 +1856,7 @@ ROM_START( puyoj ) /* Puyo Puyo (Rev B) (c)1992 Sega / Compile */
ROM_LOAD( "317-0203.ic27", 0x0000, 0x0001, NO_DUMP ) /* EPM4032DC-25 (Protection Chip) */
ROM_END
+
ROM_START( puyoja ) /* Puyo Puyo (Rev A) (c)1992 Sega / Compile */
ROM_REGION( 0x200000, "maincpu", 0 )
ROM_LOAD16_BYTE( "epr-15036a.ic32", 0x000000, 0x020000, CRC(61b35257) SHA1(e09a7e992999befc88fc7928a478d1e2d14d7b08) )
@@ -1799,6 +1875,7 @@ ROM_START( puyoja ) /* Puyo Puyo (Rev A) (c)1992 Sega / Compile */
ROM_LOAD( "317-0203.ic27", 0x0000, 0x0001, NO_DUMP ) /* EPM4032DC-25 (Protection Chip) */
ROM_END
+
ROM_START( puyobl ) /* Puyo Puyo (c)1992 Sega / Compile Bootleg */
ROM_REGION( 0x200000, "maincpu", 0 )
ROM_LOAD16_BYTE( "puyopuyb.4bo", 0x000000, 0x020000, CRC(89ea4d33) SHA1(bef9d011524e71c072d309f6da3c2ebc38878e0e) )
@@ -1811,6 +1888,7 @@ ROM_START( puyobl ) /* Puyo Puyo (c)1992 Sega / Compile Bootleg */
ROM_LOAD( "puyopuyb.abo", 0x000000, 0x020000, CRC(79112b3b) SHA1(fc3a202e1e2ff39950d4af689b7fcca86c301805) ) // same as epr-15196.4 from the world set
ROM_END
+
ROM_START( ichir ) /* Ichident-R (Puzzle & Action 2) (c)1994 Sega (World) */
ROM_REGION( 0x200000, "maincpu", 0 )
ROM_LOAD16_BYTE( "pa2_32.bin", 0x000000, 0x080000, CRC(7ba0c025) SHA1(855e9bb2a20c6f51b26381233c57c26aa96ad1f6) )
@@ -1822,6 +1900,7 @@ ROM_START( ichir ) /* Ichident-R (Puzzle & Action 2) (c)1994 Sega (World) */
ROM_LOAD( "pa2_02.bin", 0x000000, 0x080000, CRC(fc7b0da5) SHA1(46770aa7e19b4f8a183be3f433c48ad677b552b1) )
ROM_END
+
ROM_START( ichirk ) /* Ichident-R (Puzzle & Action 2) (c)1994 Sega (Korea) */
ROM_REGION( 0x200000, "maincpu", 0 )
/* Again the part numbers are quite strange for the Korean verison */
@@ -1834,6 +1913,7 @@ ROM_START( ichirk ) /* Ichident-R (Puzzle & Action 2) (c)1994 Sega (Korea) */
ROM_LOAD( "pa2_02.bin", 0x000000, 0x080000, CRC(fc7b0da5) SHA1(46770aa7e19b4f8a183be3f433c48ad677b552b1) ) // m17220a.4
ROM_END
+
ROM_START( ichirj ) /* Ichident-R (Puzzle & Action 2) (c)1994 Sega (Japan) */
ROM_REGION( 0x200000, "maincpu", 0 )
ROM_LOAD16_BYTE( "epr-16886.ic32", 0x000000, 0x080000, CRC(38208e28) SHA1(07fc634bdf2d3e25274c9c374b3506dec765114c) )
@@ -1845,6 +1925,7 @@ ROM_START( ichirj ) /* Ichident-R (Puzzle & Action 2) (c)1994 Sega (Japan) */
ROM_LOAD( "epr-16884.ic4", 0x000000, 0x080000, CRC(fd9dcdd6) SHA1(b8053a2e68072e7664ffc3c53f983f3ba72a892b) )
ROM_END
+
ROM_START( stkclmns ) /* Stack Columns (c)1994 Sega */
ROM_REGION( 0x200000, "maincpu", 0 )
ROM_LOAD16_BYTE( "epr-16874.ic32", 0x000000, 0x080000, CRC(d78a871c) SHA1(7efcd5d07b089442be5170a3cf9e09579527252f) )
@@ -1856,6 +1937,7 @@ ROM_START( stkclmns ) /* Stack Columns (c)1994 Sega */
ROM_LOAD( "epr-16793.ic4", 0x000000, 0x020000, CRC(ebb2d057) SHA1(4a19ee5d71e4aabe7d9b9b968ab5ee4bc6262aad) )
ROM_END
+
ROM_START( stkclmnsj ) /* Stack Columns (c)1994 Sega */
ROM_REGION( 0x200000, "maincpu", 0 )
ROM_LOAD16_BYTE( "epr-16795.ic32", 0x000000, 0x080000, CRC(b478fd02) SHA1(aaf9d9f9f4dc900b4e8ff6f258f26e782e5c3166) )
@@ -1880,8 +1962,8 @@ ROM_END
ROM_START( potopoto ) /* Poto Poto (c)1994 Sega */
ROM_REGION( 0x200000, "maincpu", 0 )
- ROM_LOAD16_BYTE( "epr-16662.ic32", 0x000000, 0x040000, CRC(bbd305d6) SHA1(1a4f4869fefac188c69bc67df0b625e43a0c3f1f) )
- ROM_LOAD16_BYTE( "epr-16661.ic31", 0x000001, 0x040000, CRC(5a7d14f4) SHA1(a615b5f481256366db7b1c6302a8dcb69708102b) )
+ ROM_LOAD16_BYTE( "epr-16662a.ic32", 0x000000, 0x040000, CRC(bbd305d6) SHA1(1a4f4869fefac188c69bc67df0b625e43a0c3f1f) )
+ ROM_LOAD16_BYTE( "epr-16661a.ic31", 0x000001, 0x040000, CRC(5a7d14f4) SHA1(a615b5f481256366db7b1c6302a8dcb69708102b) )
ROM_REGION( 0x040000, "upd", 0 )
ROM_LOAD( "epr-16660.ic4", 0x000000, 0x040000, CRC(8251c61c) SHA1(03eef3aa0bdde2c1d93128648f54fd69278d85dd) )
@@ -2419,10 +2501,12 @@ GAME( 1992, tantrbl, tantr, segac2, ichir, segac2_state, c2boot, ROT0,
GAME( 1994, tantrbl2, tantr, segac, ichir, segac2_state, tantr, ROT0, "bootleg", "Puzzle & Action: Tant-R (Japan) (bootleg set 2)", 0 ) // Common bootleg in Europe, C board, no samples
GAME( 1994, tantrbl3, tantr, segac, ichir, segac2_state, tantr, ROT0, "bootleg", "Puzzle & Action: Tant-R (Japan) (bootleg set 3)", 0 ) // Common bootleg in Europe, C board, no samples
+GAME( 1992, wwmarine, 0, segac2, wwmarine, segac2_state, bloxeedc, ROT0, "Sega", "Waku Waku Marine", 0 )
+
// not really sure how this should hook up, things like the 'sold out' flags could be mechanical sensors, or from another MCU / CPU board in the actual popcorn part of the machine?
GAME( 1993, sonicpop, 0, segac2, sonicpop, segac2_state, bloxeedc, ROT0, "Sega", "SegaSonic Popcorn Shop (Rev B)", MACHINE_MECHANICAL ) // region DSW for USA / Export / Japan, still speaks Japanese tho. 'Mechanical' part isn't emulated
-GAME( 1994, potopoto, 0, segac2, potopoto, segac2_state, potopoto, ROT0, "Sega", "Poto Poto (Japan)", 0 )
+GAME( 1994, potopoto, 0, segac2, potopoto, segac2_state, potopoto, ROT0, "Sega", "Poto Poto (Japan, Rev A)", 0 )
GAME( 1994, stkclmns, 0, segac2, stkclmns, segac2_state, stkclmns, ROT0, "Sega", "Stack Columns (World)", 0 )
GAME( 1994, stkclmnsj, stkclmns, segac2, stkclmns, segac2_state, stkclmnj, ROT0, "Sega", "Stack Columns (Japan)", 0 )
diff --git a/src/mame/drivers/segas16a.cpp b/src/mame/drivers/segas16a.cpp
index c06fdf34518..b87aee5f734 100644
--- a/src/mame/drivers/segas16a.cpp
+++ b/src/mame/drivers/segas16a.cpp
@@ -988,6 +988,13 @@ static ADDRESS_MAP_START( sound_portmap, AS_IO, 8, segas16a_state )
AM_RANGE(0xc0, 0xc0) AM_MIRROR(0x3f) AM_READ(sound_data_r)
ADDRESS_MAP_END
+static ADDRESS_MAP_START( sound_no7751_portmap, AS_IO, 8, segas16a_state )
+ ADDRESS_MAP_UNMAP_HIGH
+ ADDRESS_MAP_GLOBAL_MASK(0xff)
+ AM_RANGE(0x00, 0x01) AM_MIRROR(0x3e) AM_DEVREADWRITE("ymsnd", ym2151_device, read, write)
+ AM_RANGE(0x80, 0x80) AM_MIRROR(0x3f) AM_NOP
+ AM_RANGE(0xc0, 0xc0) AM_MIRROR(0x3f) AM_READ(sound_data_r)
+ADDRESS_MAP_END
//**************************************************************************
@@ -1964,6 +1971,9 @@ MACHINE_CONFIG_END
static MACHINE_CONFIG_DERIVED( system16a_no7751, system16a )
+ MCFG_CPU_MODIFY("soundcpu")
+ MCFG_CPU_IO_MAP(sound_no7751_portmap)
+
MCFG_DEVICE_REMOVE("n7751")
MCFG_DEVICE_REMOVE("dac")
@@ -1987,6 +1997,9 @@ MACHINE_CONFIG_END
*/
static MACHINE_CONFIG_DERIVED( system16a_fd1089a_no7751, system16a_fd1089a )
+ MCFG_CPU_MODIFY("soundcpu")
+ MCFG_CPU_IO_MAP(sound_no7751_portmap)
+
MCFG_DEVICE_REMOVE("n7751")
MCFG_DEVICE_REMOVE("dac")
@@ -1995,6 +2008,9 @@ static MACHINE_CONFIG_DERIVED( system16a_fd1089a_no7751, system16a_fd1089a )
MACHINE_CONFIG_END
static MACHINE_CONFIG_DERIVED( system16a_fd1089b_no7751, system16a_fd1089b )
+ MCFG_CPU_MODIFY("soundcpu")
+ MCFG_CPU_IO_MAP(sound_no7751_portmap)
+
MCFG_DEVICE_REMOVE("n7751")
MCFG_DEVICE_REMOVE("dac")
@@ -2003,6 +2019,9 @@ static MACHINE_CONFIG_DERIVED( system16a_fd1089b_no7751, system16a_fd1089b )
MACHINE_CONFIG_END
static MACHINE_CONFIG_DERIVED( system16a_fd1094_no7751, system16a_fd1094 )
+ MCFG_CPU_MODIFY("soundcpu")
+ MCFG_CPU_IO_MAP(sound_no7751_portmap)
+
MCFG_DEVICE_REMOVE("n7751")
MCFG_DEVICE_REMOVE("dac")
diff --git a/src/mame/drivers/segas16b.cpp b/src/mame/drivers/segas16b.cpp
index 585af25cf3b..dfb04f270a3 100644
--- a/src/mame/drivers/segas16b.cpp
+++ b/src/mame/drivers/segas16b.cpp
@@ -1127,7 +1127,8 @@ WRITE16_MEMBER( segas16b_state::standard_io_w )
// D0 : Output to coin counter 1
//
m_segaic16vid->tilemap_set_flip(0, data & 0x40);
- m_sprites->set_flip(data & 0x40);
+ if (m_sprites.found())
+ m_sprites->set_flip(data & 0x40);
if (!m_disable_screen_blanking)
m_segaic16vid->set_display_enable(data & 0x20);
output().set_led_value(1, data & 0x08);
@@ -1293,11 +1294,14 @@ void segas16b_state::machine_reset()
m_segaic16vid->tilemap_reset(*m_screen);
// configure sprite banks
- static const UINT8 default_banklist[] = { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15 };
- static const UINT8 alternate_banklist[] = { 0,255,255,255, 255,255,255,3, 255,255,255,2, 255,1,0,255 };
- const UINT8 *banklist = (m_romboard == ROM_BOARD_171_5358 || m_romboard == ROM_BOARD_171_5358_SMALL) ? alternate_banklist : default_banklist;
- for (int banknum = 0; banknum < 16; banknum++)
- m_sprites->set_bank(banknum, banklist[banknum]);
+ if (m_sprites.found())
+ {
+ static const UINT8 default_banklist[] = { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15 };
+ static const UINT8 alternate_banklist[] = { 0,255,255,255, 255,255,255,3, 255,255,255,2, 255,1,0,255 };
+ const UINT8 *banklist = (m_romboard == ROM_BOARD_171_5358 || m_romboard == ROM_BOARD_171_5358_SMALL) ? alternate_banklist : default_banklist;
+ for (int banknum = 0; banknum < 16; banknum++)
+ m_sprites->set_bank(banknum, banklist[banknum]);
+ }
}
@@ -3430,6 +3434,7 @@ static MACHINE_CONFIG_DERIVED( atomicp, system16b ) // 10MHz CPU Clock verified
// basic machine hardware
MCFG_DEVICE_REMOVE("soundcpu")
+ MCFG_DEVICE_REMOVE("sprites")
// sound hardware
MCFG_DEVICE_REMOVE("ym2151")
@@ -7138,6 +7143,7 @@ ROM_END
// Sonic Boom, Sega System 16B
// CPU: FD1094 (317-0053)
// ROM Board type: 171-5358
+// Sega ID# for ROM board: 834-6532-01
//
// Pos. Silk Type Part Pos. Silk Type Part
//
@@ -8237,9 +8243,11 @@ DRIVER_INIT_MEMBER(segas16b_state,sdi_5358_small)
DRIVER_INIT_CALL(generic_5358_small);
m_custom_io_r = read16_delegate(FUNC(segas16b_state::sdi_custom_io_r), this);
- UINT8 *rom = memregion("maincpux")->base();
- if (rom)
+ if (memregion("maincpux") != nullptr)
+ {
+ UINT8 *rom = memregion("maincpux")->base();
memcpy(m_decrypted_opcodes, rom, 0x30000);
+ }
}
@@ -8908,8 +8916,9 @@ void isgsm_state::machine_reset()
m_segaic16vid->tilemap_reset(*m_screen);
// configure sprite banks
- for (int i = 0; i < 16; i++)
- m_sprites->set_bank(i, i);
+ if (m_sprites.found())
+ for (int i = 0; i < 16; i++)
+ m_sprites->set_bank(i, i);
membank(ISGSM_MAIN_BANK)->set_base(memregion("bios")->base());
m_maincpu->reset();
diff --git a/src/mame/drivers/segas18.cpp b/src/mame/drivers/segas18.cpp
index 823833ddb1a..c78c37f04c7 100644
--- a/src/mame/drivers/segas18.cpp
+++ b/src/mame/drivers/segas18.cpp
@@ -174,6 +174,10 @@ void segas18_state::device_timer(emu_timer &timer, device_timer_id id, int param
}
}
+void segas18_state::machine_start()
+{
+ membank("soundbank")->configure_entries(0, 256, memregion("soundcpu")->base() + 0x10000, 0x2000);
+}
void segas18_state::machine_reset()
{
@@ -491,7 +495,7 @@ WRITE16_MEMBER( segas18_state::wwally_custom_io_w )
WRITE8_MEMBER( segas18_state::soundbank_w )
{
- membank("bank1")->set_base(memregion("soundcpu")->base() + 0x10000 + 0x2000 * data);
+ membank("soundbank")->set_entry(data);
}
@@ -535,7 +539,7 @@ ADDRESS_MAP_END
static ADDRESS_MAP_START( sound_map, AS_PROGRAM, 8, segas18_state )
ADDRESS_MAP_UNMAP_HIGH
AM_RANGE(0x0000, 0x9fff) AM_ROM AM_REGION("soundcpu", 0x10000)
- AM_RANGE(0xa000, 0xbfff) AM_ROMBANK("bank1")
+ AM_RANGE(0xa000, 0xbfff) AM_ROMBANK("soundbank")
AM_RANGE(0xc000, 0xc00f) AM_MIRROR(0x0ff0) AM_DEVWRITE("rfsnd", rf5c68_device, rf5c68_w)
AM_RANGE(0xd000, 0xdfff) AM_DEVREADWRITE("rfsnd", rf5c68_device, rf5c68_mem_r, rf5c68_mem_w)
AM_RANGE(0xe000, 0xffff) AM_RAM
@@ -1557,9 +1561,9 @@ ROM_START( bloxeed )
ROM_LOAD( "opr-12885.b2", 0x10000, 0x10000, CRC(8041b814) SHA1(29fa49ba9a73eed07865a86ea774e2c6a60aed5b) )
ROM_LOAD( "opr-12886.b3", 0x20000, 0x10000, CRC(de32285e) SHA1(8994dc128d6a23763e5fcfca1868b336d4aa0a21) )
- ROM_REGION( 0x20000, "sprites", 0 ) // sprites
- ROM_LOAD16_BYTE( "opr-12891.a11", 0x00001, 0x10000, CRC(90d31a8c) SHA1(1747652a5109ce65add197cf06535f2463a99fdc) )
- ROM_LOAD16_BYTE( "opr-12887.b11", 0x00000, 0x10000, CRC(f0c0f49d) SHA1(7ecd591265165f3149241e2ceb5059faab88360f) )
+ ROM_REGION16_BE( 0x20000, "sprites", 0 ) // sprites
+ ROM_LOAD16_BYTE( "opr-12891.a11", 0x00000, 0x10000, CRC(90d31a8c) SHA1(1747652a5109ce65add197cf06535f2463a99fdc) )
+ ROM_LOAD16_BYTE( "opr-12887.b11", 0x00001, 0x10000, CRC(f0c0f49d) SHA1(7ecd591265165f3149241e2ceb5059faab88360f) )
ROM_REGION( 0x210000, "soundcpu", ROMREGION_ERASEFF ) // sound CPU
ROM_LOAD( "epr-12888.a4", 0x010000, 0x20000, CRC(6f2fc63c) SHA1(3cce22c8f80013f05b5a2d36c42a61a81e4d6cbd) )
@@ -1575,9 +1579,9 @@ ROM_START( bloxeedd )
ROM_LOAD( "opr-12885.b2", 0x10000, 0x10000, CRC(8041b814) SHA1(29fa49ba9a73eed07865a86ea774e2c6a60aed5b) )
ROM_LOAD( "opr-12886.b3", 0x20000, 0x10000, CRC(de32285e) SHA1(8994dc128d6a23763e5fcfca1868b336d4aa0a21) )
- ROM_REGION( 0x20000, "sprites", 0 ) // sprites
- ROM_LOAD16_BYTE( "opr-12891.a11", 0x00001, 0x10000, CRC(90d31a8c) SHA1(1747652a5109ce65add197cf06535f2463a99fdc) )
- ROM_LOAD16_BYTE( "opr-12887.b11", 0x00000, 0x10000, CRC(f0c0f49d) SHA1(7ecd591265165f3149241e2ceb5059faab88360f) )
+ ROM_REGION16_BE( 0x20000, "sprites", 0 ) // sprites
+ ROM_LOAD16_BYTE( "opr-12891.a11", 0x00000, 0x10000, CRC(90d31a8c) SHA1(1747652a5109ce65add197cf06535f2463a99fdc) )
+ ROM_LOAD16_BYTE( "opr-12887.b11", 0x00001, 0x10000, CRC(f0c0f49d) SHA1(7ecd591265165f3149241e2ceb5059faab88360f) )
ROM_REGION( 0x210000, "soundcpu", ROMREGION_ERASEFF ) // sound CPU
ROM_LOAD( "epr-12888.a4", 0x010000, 0x20000, CRC(6f2fc63c) SHA1(3cce22c8f80013f05b5a2d36c42a61a81e4d6cbd) )
diff --git a/src/mame/drivers/segas24.cpp b/src/mame/drivers/segas24.cpp
index 729fee2197e..0d97e55ffb3 100644
--- a/src/mame/drivers/segas24.cpp
+++ b/src/mame/drivers/segas24.cpp
@@ -714,7 +714,7 @@ void segas24_state::reset_control_w(UINT8 data)
void segas24_state::reset_bank()
{
- if (memregion("romboard")->base())
+ if (m_romboard != NULL)
{
membank("bank1")->set_entry(curbank & 15);
membank("bank2")->set_entry(curbank & 15);
@@ -1263,9 +1263,9 @@ void segas24_state::machine_start()
if (track_size)
machine().device<nvram_device>("floppy_nvram")->set_base(memregion("floppy")->base(), 2*track_size);
- UINT8 *usr1 = memregion("romboard")->base();
- if (usr1)
+ if (m_romboard != NULL)
{
+ UINT8 *usr1 = m_romboard->base();
membank("bank1")->configure_entries(0, 16, usr1, 0x40000);
membank("bank2")->configure_entries(0, 16, usr1, 0x40000);
}
diff --git a/src/mame/drivers/segaybd.cpp b/src/mame/drivers/segaybd.cpp
index 534d5d5a164..d6a6604fee1 100644
--- a/src/mame/drivers/segaybd.cpp
+++ b/src/mame/drivers/segaybd.cpp
@@ -739,7 +739,7 @@ static ADDRESS_MAP_START( suby_map, AS_PROGRAM, 16, segaybd_state )
AM_RANGE(0x084000, 0x08401f) AM_MIRROR(0x001fe0) AM_DEVREADWRITE("divider_suby", sega_315_5249_divider_device, read, write)
AM_RANGE(0x0c0000, 0x0cffff) AM_RAM AM_SHARE("shareram")
AM_RANGE(0x180000, 0x1807ff) AM_MIRROR(0x007800) AM_RAM AM_SHARE("rotateram")
- AM_RANGE(0x188000, 0x188fff) AM_MIRROR(0x007000) AM_RAM AM_SHARE("bsprites")
+ AM_RANGE(0x188000, 0x188fff) AM_MIRROR(0x007000) AM_RAM AM_SHARE("sprites")
AM_RANGE(0x190000, 0x193fff) AM_MIRROR(0x004000) AM_RAM_WRITE(paletteram_w) AM_SHARE("paletteram")
AM_RANGE(0x198000, 0x19ffff) AM_DEVREAD("segaic16vid", segaic16_video_device, rotate_control_r)
AM_RANGE(0x1f0000, 0x1fffff) AM_RAM
@@ -1397,7 +1397,7 @@ static MACHINE_CONFIG_START( yboard, segaybd_state )
MCFG_GFXDECODE_ADD("gfxdecode", "palette", empty)
- MCFG_SEGA_SYS16B_SPRITES_ADD("bsprites")
+ MCFG_SEGA_SYS16B_SPRITES_ADD("sprites")
MCFG_SEGA_YBOARD_SPRITES_ADD("ysprites")
MCFG_SEGAIC16VID_ADD("segaic16vid")
MCFG_SEGAIC16VID_GFXDECODE("gfxdecode")
@@ -1479,7 +1479,7 @@ ROM_START( gforce2 )
ROM_LOAD16_BYTE( "epr-11816b.54", 0x000000, 0x20000, CRC(317dd0c2) SHA1(7f1c7dcfb111385e2a94912975c2f9bfe78445ac) )
ROM_LOAD16_BYTE( "epr-11815b.53", 0x000001, 0x20000, CRC(f1fb22f1) SHA1(da3ce521b0a19b391913c35af34084d29edceca7) )
- ROM_REGION16_BE( 0x080000, "bsprites", 0 )
+ ROM_REGION16_BE( 0x080000, "sprites", 0 )
ROM_LOAD16_BYTE( "mpr-11467.16", 0x000000, 0x20000, CRC(6e60e736) SHA1(73086744cb2fe1ce162f851cb879755c21819b33) )
ROM_LOAD16_BYTE( "mpr-11468.14", 0x000001, 0x20000, CRC(74ca9ca5) SHA1(c6f27ce43ef270088e6155c8240fd15afa5729fd) )
ROM_LOAD16_BYTE( "epr-11694.17", 0x040000, 0x20000, CRC(7e297b84) SHA1(bbf1aa2b0b6b1f9fdaf9bea77d24b7f4f9320696) )
@@ -1553,7 +1553,7 @@ ROM_START( gforce2sd )
ROM_LOAD16_BYTE( "epr-11816b.54", 0x000000, 0x20000, CRC(317dd0c2) SHA1(7f1c7dcfb111385e2a94912975c2f9bfe78445ac) )
ROM_LOAD16_BYTE( "epr-11815b.53", 0x000001, 0x20000, CRC(f1fb22f1) SHA1(da3ce521b0a19b391913c35af34084d29edceca7) )
- ROM_REGION16_BE( 0x080000, "bsprites", 0 )
+ ROM_REGION16_BE( 0x080000, "sprites", 0 )
ROM_LOAD16_BYTE( "mpr-11467.16", 0x000000, 0x20000, CRC(6e60e736) SHA1(73086744cb2fe1ce162f851cb879755c21819b33) )
ROM_LOAD16_BYTE( "mpr-11468.14", 0x000001, 0x20000, CRC(74ca9ca5) SHA1(c6f27ce43ef270088e6155c8240fd15afa5729fd) )
ROM_LOAD16_BYTE( "epr-11694.17", 0x040000, 0x20000, CRC(7e297b84) SHA1(bbf1aa2b0b6b1f9fdaf9bea77d24b7f4f9320696) )
@@ -1631,7 +1631,7 @@ ROM_START( gforce2ja )
ROM_LOAD16_BYTE( "epr-11690a.54", 0x000000, 0x20000, CRC(e18bc177) SHA1(3fb179c9074954fc9b64da1463f542d60a99ec84) )
ROM_LOAD16_BYTE( "epr-11689a.53", 0x000001, 0x20000, CRC(6010e63e) SHA1(00aa5e8516f094409a407744b84ef183393b8b19) )
- ROM_REGION16_BE( 0x080000, "bsprites", 0 )
+ ROM_REGION16_BE( 0x080000, "sprites", 0 )
ROM_LOAD16_BYTE( "mpr-11467.16", 0x000000, 0x20000, CRC(6e60e736) SHA1(73086744cb2fe1ce162f851cb879755c21819b33) )
ROM_LOAD16_BYTE( "mpr-11468.14", 0x000001, 0x20000, CRC(74ca9ca5) SHA1(c6f27ce43ef270088e6155c8240fd15afa5729fd) )
ROM_LOAD16_BYTE( "epr-11694.17", 0x040000, 0x20000, CRC(7e297b84) SHA1(bbf1aa2b0b6b1f9fdaf9bea77d24b7f4f9320696) )
@@ -1706,7 +1706,7 @@ ROM_START( gforce2j )
ROM_LOAD16_BYTE( "epr-11513.54", 0x000000, 0x20000, CRC(e18bc177) SHA1(3fb179c9074954fc9b64da1463f542d60a99ec84) )
ROM_LOAD16_BYTE( "epr-11512.53", 0x000001, 0x20000, CRC(6010e63e) SHA1(00aa5e8516f094409a407744b84ef183393b8b19) )
- ROM_REGION16_BE( 0x080000, "bsprites", 0 )
+ ROM_REGION16_BE( 0x080000, "sprites", 0 )
ROM_LOAD16_BYTE( "mpr-11467.16", 0x000000, 0x20000, CRC(6e60e736) SHA1(73086744cb2fe1ce162f851cb879755c21819b33) )
ROM_LOAD16_BYTE( "mpr-11468.14", 0x000001, 0x20000, CRC(74ca9ca5) SHA1(c6f27ce43ef270088e6155c8240fd15afa5729fd) )
ROM_LOAD16_BYTE( "epr-11694.17", 0x040000, 0x20000, CRC(7e297b84) SHA1(bbf1aa2b0b6b1f9fdaf9bea77d24b7f4f9320696) )
@@ -1789,7 +1789,7 @@ ROM_START( gloc )
ROM_LOAD16_BYTE( "epr-13030.54", 0x000000, 0x20000, CRC(81abcabf) SHA1(cb4e817d66a7f384aa9757758c51cd1bf7347dd0) )
ROM_LOAD16_BYTE( "epr-13029.53", 0x000001, 0x20000, CRC(f3638efb) SHA1(f82a46fc8616cbe0235746161c587e54adecfe50) )
- ROM_REGION16_BE( 0x200000, "bsprites", 0)
+ ROM_REGION16_BE( 0x200000, "sprites", 0)
ROM_LOAD16_BYTE( "epr-13039.16", 0x000000, 0x80000, CRC(d7e1266d) SHA1(b0fc4cc60a7e876ae2af343bba6da3fb926ea9c5) )
ROM_LOAD16_BYTE( "epr-13037.14", 0x000001, 0x80000, CRC(b801a250) SHA1(7d1f6a1f2022a4f302f22d11fa79057cf8134ad2) )
ROM_LOAD16_BYTE( "epr-13040.17", 0x100000, 0x80000, CRC(4aeb3a85) SHA1(5521fd2d3956839bdbe7b70a9e60cd9fb72a42f1) )
@@ -1864,7 +1864,7 @@ ROM_START( glocu )
ROM_LOAD16_BYTE( "epr-13030.54", 0x000000, 0x20000, CRC(81abcabf) SHA1(cb4e817d66a7f384aa9757758c51cd1bf7347dd0) )
ROM_LOAD16_BYTE( "epr-13029.53", 0x000001, 0x20000, CRC(f3638efb) SHA1(f82a46fc8616cbe0235746161c587e54adecfe50) )
- ROM_REGION16_BE( 0x200000, "bsprites", 0)
+ ROM_REGION16_BE( 0x200000, "sprites", 0)
ROM_LOAD16_BYTE( "epr-13039.16", 0x000000, 0x80000, CRC(d7e1266d) SHA1(b0fc4cc60a7e876ae2af343bba6da3fb926ea9c5) )
ROM_LOAD16_BYTE( "epr-13037.14", 0x000001, 0x80000, CRC(b801a250) SHA1(7d1f6a1f2022a4f302f22d11fa79057cf8134ad2) )
ROM_LOAD16_BYTE( "epr-13040.17", 0x100000, 0x80000, CRC(4aeb3a85) SHA1(5521fd2d3956839bdbe7b70a9e60cd9fb72a42f1) )
@@ -1933,7 +1933,7 @@ ROM_START( glocr360 )
ROM_LOAD16_BYTE( "epr-13325a.54", 0x000000, 0x20000, CRC(aba307e5) SHA1(a27a7d3699a95d7c6265a23157b2fefd362003dd) )
ROM_LOAD16_BYTE( "epr-13324a.53", 0x000001, 0x20000, CRC(eb1b19e5) SHA1(3d1d7299cb3befc22afc0db0376d7f94dec37367) )
- ROM_REGION16_BE( 0x200000, "bsprites", 0)
+ ROM_REGION16_BE( 0x200000, "sprites", 0)
ROM_LOAD16_BYTE( "epr-13039.16", 0x000000, 0x80000, CRC(d7e1266d) SHA1(b0fc4cc60a7e876ae2af343bba6da3fb926ea9c5) )
ROM_LOAD16_BYTE( "epr-13037.14", 0x000001, 0x80000, CRC(b801a250) SHA1(7d1f6a1f2022a4f302f22d11fa79057cf8134ad2) )
ROM_LOAD16_BYTE( "epr-13040.17", 0x100000, 0x80000, CRC(4aeb3a85) SHA1(5521fd2d3956839bdbe7b70a9e60cd9fb72a42f1) )
@@ -2009,7 +2009,7 @@ ROM_START( pdrift )
ROM_LOAD16_BYTE( "epr-12019a.54", 0x000000, 0x20000, CRC(11188a30) SHA1(42dd0344d92529848b53a8cec4c145237ccd5b51) )
ROM_LOAD16_BYTE( "epr-12018a.53", 0x000001, 0x20000, CRC(1c582e1f) SHA1(c32d2f921554bddd7dedcb81e231aa91f50fa27b) )
- ROM_REGION16_BE( 0x080000, "bsprites", 0 )
+ ROM_REGION16_BE( 0x080000, "sprites", 0 )
ROM_LOAD16_BYTE( "epr-11789.16", 0x000000, 0x20000, CRC(b86f8d2b) SHA1(a053f2021841fd0ef89fd3f28050a698b36c435e) )
ROM_LOAD16_BYTE( "epr-11791.14", 0x000001, 0x20000, CRC(36b2910a) SHA1(9948b91837f944a7a606542fa685525e74bbe398) )
ROM_LOAD16_BYTE( "epr-11790.17", 0x040000, 0x20000, CRC(2a564e66) SHA1(5f30fc15bfd017d75cfffe1e9e62ed0bcf32a98e) )
@@ -2092,7 +2092,7 @@ ROM_START( pdrifta )
ROM_LOAD16_BYTE( "epr-12019.54", 0x000000, 0x20000, CRC(e514d7b6) SHA1(27ae99f5f3e8d2f248916f7a252e2c0686638df5) )
ROM_LOAD16_BYTE( "epr-12018.53", 0x000001, 0x20000, CRC(0a3f7faf) SHA1(fe20a164a7a2c9e9bf0e7aade75b0488bdc93d79) )
- ROM_REGION16_BE( 0x080000, "bsprites", 0 )
+ ROM_REGION16_BE( 0x080000, "sprites", 0 )
ROM_LOAD16_BYTE( "epr-11789.16", 0x000000, 0x20000, CRC(b86f8d2b) SHA1(a053f2021841fd0ef89fd3f28050a698b36c435e) )
ROM_LOAD16_BYTE( "epr-11791.14", 0x000001, 0x20000, CRC(36b2910a) SHA1(9948b91837f944a7a606542fa685525e74bbe398) )
ROM_LOAD16_BYTE( "epr-11790.17", 0x040000, 0x20000, CRC(2a564e66) SHA1(5f30fc15bfd017d75cfffe1e9e62ed0bcf32a98e) )
@@ -2176,7 +2176,7 @@ ROM_START( pdrifte )
ROM_LOAD16_BYTE( "epr-11903.54", 0x000000, 0x20000, CRC(d004f411) SHA1(212a985275647fae24b580ebaffc1230c06318ac) )
ROM_LOAD16_BYTE( "epr-11902.53", 0x000001, 0x20000, CRC(e8028e08) SHA1(de4ee5011e9552e624b6223e0e1ef00bc271a811) )
- ROM_REGION16_BE( 0x080000, "bsprites", 0 )
+ ROM_REGION16_BE( 0x080000, "sprites", 0 )
ROM_LOAD16_BYTE( "epr-11789.16", 0x000000, 0x20000, CRC(b86f8d2b) SHA1(a053f2021841fd0ef89fd3f28050a698b36c435e) )
ROM_LOAD16_BYTE( "epr-11791.14", 0x000001, 0x20000, CRC(36b2910a) SHA1(9948b91837f944a7a606542fa685525e74bbe398) )
ROM_LOAD16_BYTE( "epr-11790.17", 0x040000, 0x20000, CRC(2a564e66) SHA1(5f30fc15bfd017d75cfffe1e9e62ed0bcf32a98e) )
@@ -2262,7 +2262,7 @@ ROM_START( pdriftj )
ROM_LOAD16_BYTE( "epr-11750b.54", 0x000000, 0x20000, CRC(bc14ce30) SHA1(9bbadee0946e0abaac4f0d2625ba5550f11fa8a9) )
ROM_LOAD16_BYTE( "epr-11749b.53", 0x000001, 0x20000, CRC(9e385568) SHA1(74e22eaed645cc80b1eb0c52912186066e58b9d2) )
- ROM_REGION16_BE( 0x080000, "bsprites", 0 )
+ ROM_REGION16_BE( 0x080000, "sprites", 0 )
ROM_LOAD16_BYTE( "epr-11789.16", 0x000000, 0x20000, CRC(b86f8d2b) SHA1(a053f2021841fd0ef89fd3f28050a698b36c435e) )
ROM_LOAD16_BYTE( "epr-11791.14", 0x000001, 0x20000, CRC(36b2910a) SHA1(9948b91837f944a7a606542fa685525e74bbe398) )
ROM_LOAD16_BYTE( "epr-11790.17", 0x040000, 0x20000, CRC(2a564e66) SHA1(5f30fc15bfd017d75cfffe1e9e62ed0bcf32a98e) )
@@ -2347,7 +2347,7 @@ ROM_START(pdriftl)
ROM_LOAD16_BYTE("epr-12109.54", 0x000000, 0x20000, CRC(256350b8) SHA1(72b05d3583d63766690fed4827ec586e832168d1) )
ROM_LOAD16_BYTE("epr-12108.53", 0x000001, 0x20000, CRC(a3a56771) SHA1(f41d466f31a1b833d21a7011314c48d5056409eb) )
- ROM_REGION16_BE(0x080000, "bsprites", 0)
+ ROM_REGION16_BE(0x080000, "sprites", 0)
ROM_LOAD16_BYTE("epr-12114.16", 0x000000, 0x20000, CRC(8b07e8eb) SHA1(22a4aff968d6de52372b7b2b5322d353f7b835ef) )
ROM_LOAD16_BYTE("epr-12115.14", 0x000001, 0x20000, CRC(045b2912) SHA1(697c8eff69bf1a23745d24171f0b50635cf8513e) )
ROM_LOAD16_BYTE("epr-12112.17", 0x040000, 0x20000, CRC(5dd13e81) SHA1(74ced668a36480a2ce9e3667e4915bfee2391534) )
@@ -2440,7 +2440,7 @@ ROM_START( rchase )
ROM_LOAD16_BYTE( "epr-14092.54", 0x000000, 0x20000, CRC(18eb23c5) SHA1(53e5681c7450a3879ed80c1680168d6295caa887) ) // same as epr-13990.54 below
ROM_LOAD16_BYTE( "epr-14091.53", 0x000001, 0x20000, CRC(72a56f71) SHA1(d45d3072ea92b5dde5c70138e56e7f0ca248880e) ) // 1 byte difference between regions
- ROM_REGION16_BE( 0x080000, "bsprites", 0 )
+ ROM_REGION16_BE( 0x080000, "sprites", 0 )
ROM_LOAD16_BYTE( "mpr-13999.16", 0x000000, 0x40000, CRC(9a1dd53c) SHA1(cb01f2c64554914ea693879dfcb498181a1e7a9a) )
ROM_LOAD16_BYTE( "mpr-13997.14", 0x000001, 0x40000, CRC(1fdf1b87) SHA1(ed46af0f72081d545015b73a8d12240664f29506) )
@@ -2500,7 +2500,7 @@ ROM_START( rchasej )
ROM_LOAD16_BYTE( "epr-13990.54", 0x000000, 0x20000, CRC(18eb23c5) SHA1(53e5681c7450a3879ed80c1680168d6295caa887) )
ROM_LOAD16_BYTE( "epr-13989.53", 0x000001, 0x20000, CRC(8f4f824e) SHA1(d470f23ce2dca4e75b7b714175d47338c41bb721) )
- ROM_REGION16_BE( 0x080000, "bsprites", 0 )
+ ROM_REGION16_BE( 0x080000, "sprites", 0 )
ROM_LOAD16_BYTE( "mpr-13999.16", 0x000000, 0x40000, CRC(9a1dd53c) SHA1(cb01f2c64554914ea693879dfcb498181a1e7a9a) )
ROM_LOAD16_BYTE( "mpr-13997.14", 0x000001, 0x40000, CRC(1fdf1b87) SHA1(ed46af0f72081d545015b73a8d12240664f29506) )
@@ -2565,7 +2565,7 @@ ROM_START( strkfgtr )
ROM_LOAD16_BYTE( "epr-13828.54", 0x000000, 0x20000, CRC(2470cf5f) SHA1(eb1a732228fe7ad9cf0747d2b53e391c5a733667) )
ROM_LOAD16_BYTE( "epr-13827.53", 0x000001, 0x20000, CRC(a9d0cf7d) SHA1(c40c73c9e9105ed6503b77b65a6423a26057d810) )
- ROM_REGION16_BE( 0x200000, "bsprites", 0)
+ ROM_REGION16_BE( 0x200000, "sprites", 0)
ROM_LOAD16_BYTE( "epr-13833.16", 0x000000, 0x80000, CRC(6148e11a) SHA1(5802208cf0415f6af39de162e9f12e7c205915f7) )
ROM_LOAD16_BYTE( "epr-13832.14", 0x000001, 0x80000, CRC(41679754) SHA1(58d46f33a4318bbc9e2a20eb5550a66ee0b2e62f) )
ROM_LOAD16_BYTE( "epr-13040.17", 0x100000, 0x80000, CRC(4aeb3a85) SHA1(5521fd2d3956839bdbe7b70a9e60cd9fb72a42f1) )
@@ -2636,7 +2636,7 @@ ROM_START( strkfgtrj )
ROM_LOAD16_BYTE( "epr-13828.54", 0x000000, 0x20000, CRC(2470cf5f) SHA1(eb1a732228fe7ad9cf0747d2b53e391c5a733667) )
ROM_LOAD16_BYTE( "epr-13827.53", 0x000001, 0x20000, CRC(a9d0cf7d) SHA1(c40c73c9e9105ed6503b77b65a6423a26057d810) )
- ROM_REGION16_BE( 0x200000, "bsprites", 0)
+ ROM_REGION16_BE( 0x200000, "sprites", 0)
ROM_LOAD16_BYTE( "epr-13833.16", 0x000000, 0x80000, CRC(6148e11a) SHA1(5802208cf0415f6af39de162e9f12e7c205915f7) )
ROM_LOAD16_BYTE( "epr-13832.14", 0x000001, 0x80000, CRC(41679754) SHA1(58d46f33a4318bbc9e2a20eb5550a66ee0b2e62f) )
ROM_LOAD16_BYTE( "epr-13040.17", 0x100000, 0x80000, CRC(4aeb3a85) SHA1(5521fd2d3956839bdbe7b70a9e60cd9fb72a42f1) )
diff --git a/src/mame/drivers/seibuspi.cpp b/src/mame/drivers/seibuspi.cpp
index 161d87ae25f..3543985a418 100644
--- a/src/mame/drivers/seibuspi.cpp
+++ b/src/mame/drivers/seibuspi.cpp
@@ -3277,6 +3277,44 @@ ROM_START( rdft2ja ) /* SPI Cart, Japan */
ROM_LOAD("flash0_blank_region01.u1053", 0x000000, 0x100000, CRC(7ae7ab76) SHA1(a2b196f470bf64af94002fc4e2640fadad00418f) )
ROM_END
+
+ROM_START( rdft2it ) /* SPI Cart, Italy */
+ ROM_REGION32_LE( 0x200000, "maincpu", 0 ) /* i386 program */
+ ROM_LOAD32_BYTE("seibu1.bin",0x000000, 0x80000, CRC(501b92a9) SHA1(3e1c5cc63906ec7b97a3478557ec2638c515d726) )
+ ROM_LOAD32_BYTE("seibu2.bin",0x000001, 0x80000, CRC(ec73a767) SHA1(83f3905afe49401793c0ea0193cb31d3ba1e1739) )
+ ROM_LOAD32_BYTE("seibu3.bin",0x000002, 0x80000, CRC(e66243b2) SHA1(54e67af37a4586fd1afc79085ed433d599e1bb87) )
+ ROM_LOAD32_BYTE("seibu4.bin",0x000003, 0x80000, CRC(92b7b73e) SHA1(128649b2a6a0616113bd0f9846fb6cf814ae326d) )
+
+ ROM_REGION( 0x40000, "audiocpu", ROMREGION_ERASE00 ) /* 256K RAM, ROM from Z80 point-of-view */
+
+ ROM_REGION( 0x30000, "gfx1", ROMREGION_ERASEFF ) /* text layer roms */
+ ROM_LOAD24_BYTE("seibu5.bin", 0x000001, 0x10000, CRC(377cac2f) SHA1(f7c9323d79b77f6c8c02ba2c6cdca127d6e5cb5c) )
+ ROM_LOAD24_BYTE("seibu6.bin", 0x000000, 0x10000, CRC(42bd5372) SHA1(c38df85b25070db9640eac541f71c0511bab0c98) )
+ ROM_LOAD24_BYTE("seibu7.bin", 0x000002, 0x10000, CRC(1efaac7e) SHA1(8252af56dcb7a6306dc3422070176778e3c511c2) )
+
+ ROM_REGION( 0xc00000, "gfx2", ROMREGION_ERASEFF ) /* background layer roms */
+ ROM_LOAD24_WORD("bg-1d.u0535", 0x000000, 0x400000, CRC(6143f576) SHA1(c034923d0663d9ef24357a03098b8cb81dbab9f8) )
+ ROM_LOAD24_BYTE("bg-1p.u0537", 0x000002, 0x200000, CRC(55e64ef7) SHA1(aae991268948d07342ee8ba1b3761bd180aab8ec) )
+ ROM_LOAD24_WORD("bg-2d.u0536", 0x600000, 0x400000, CRC(c607a444) SHA1(dc1aa96a42e9394ca6036359670a4ec6f830c96d) )
+ ROM_LOAD24_BYTE("bg-2p.u0538", 0x600002, 0x200000, CRC(f0830248) SHA1(6075df96b49e70d2243fef691e096119e7a4d044) )
+
+ ROM_REGION( 0x1200000, "gfx3", 0 ) /* sprites */
+ ROM_LOAD("obj3.u0434", 0x0000000, 0x400000, CRC(e08f42dc) SHA1(5188d71d4355eaf43ea8893b4cfc4fe80cc24f41) )
+ ROM_LOAD("obj3b.u0433", 0x0400000, 0x200000, CRC(1b6a523c) SHA1(99a420dbc8e22e7832ccda7cec9fa661a2a2687a) )
+ ROM_LOAD("obj2.u0431", 0x0600000, 0x400000, CRC(7aeadd8e) SHA1(47103c0579240c5b1add4d0b164eaf76f5fa97f0) )
+ ROM_LOAD("obj2b.u0432", 0x0a00000, 0x200000, CRC(5d790a5d) SHA1(1ed5d4ad4c9a7e505ce35dcc90d184c26ce891dc) )
+ ROM_LOAD("obj1.u0429", 0x0c00000, 0x400000, CRC(c2c50f02) SHA1(b81397b5800c6d49f58b7ac7ff6eac56da3c5257) )
+ ROM_LOAD("obj1b.u0430", 0x1000000, 0x200000, CRC(5259321f) SHA1(3c70c1147e49f81371d0f60f7108d9718d56faf4) )
+
+ ROM_REGION32_LE( 0xa00000, "sound01", ROMREGION_ERASE00 ) /* sound roms */
+ ROM_LOAD32_WORD("pcm.u0217", 0x000000, 0x100000, CRC(2edc30b5) SHA1(c25d690d633657fc3687636b9070f36bd305ae06) )
+ ROM_CONTINUE( 0x400000, 0x100000 )
+ ROM_LOAD32_BYTE("seibu8.bin", 0x800000, 0x080000, CRC(b7bd3703) SHA1(6427a7e6de10d6743d6e64b984a1d1c647f5643a) )
+
+ ROM_REGION( 0x100000, "soundflash1", 0 ) /* on SPI motherboard */
+ ROM_LOAD("flash0_blank_region92.u1053", 0x000000, 0x100000, CRC(204d82d0) SHA1(444f4aefa27d8f5d1a2f7f08f826ea84b0ccbd02) )
+ROM_END
+
ROM_START( rdft2a ) /* SPI Cart, Asia (Metrotainment license); SPI PCB is marked "(C)1997 SXX2C ROM SUB8" */
// The SUB8 board is also capable of having two 23C8100 roms at U0223 and U0219 for PRG instead of the four roms below.
ROM_REGION32_LE( 0x200000, "maincpu", 0 ) /* i386 program, all are 27C040 */
@@ -3848,13 +3886,20 @@ GAME( 1996, rdftauge, rdft, spi, spi_3button, seibuspi_state, rdft,
GAME( 1996, rdftit, rdft, spi, spi_3button, seibuspi_state, rdft, ROT270, "Seibu Kaihatsu", "Raiden Fighters (Italy)", MACHINE_SUPPORTS_SAVE | MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND )
GAME( 1996, rdfta, rdft, spi, spi_3button, seibuspi_state, rdft, ROT270, "Seibu Kaihatsu", "Raiden Fighters (Austria)", MACHINE_SUPPORTS_SAVE | MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND )
+// this is one revision
GAME( 1997, rdft2, 0, spi, spi_2button, seibuspi_state, rdft2, ROT270, "Seibu Kaihatsu (Tuning license)", "Raiden Fighters 2 - Operation Hell Dive (Germany)", MACHINE_SUPPORTS_SAVE | MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND )
-GAME( 1997, rdft2u, rdft2, spi, spi_2button, seibuspi_state, rdft2, ROT270, "Seibu Kaihatsu (Fabtek license)", "Raiden Fighters 2 - Operation Hell Dive (US)", MACHINE_SUPPORTS_SAVE | MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND )
GAME( 1997, rdft2j, rdft2, spi, spi_2button, seibuspi_state, rdft2, ROT270, "Seibu Kaihatsu", "Raiden Fighters 2 - Operation Hell Dive (Japan set 1)", MACHINE_SUPPORTS_SAVE | MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND )
-GAME( 1997, rdft2ja, rdft2, spi, spi_2button, seibuspi_state, rdft2, ROT270, "Seibu Kaihatsu", "Raiden Fighters 2 - Operation Hell Dive (Japan set 2)", MACHINE_SUPPORTS_SAVE | MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND )
GAME( 1997, rdft2a, rdft2, spi, spi_2button, seibuspi_state, rdft2, ROT270, "Seibu Kaihatsu (Metrotainment license)", "Raiden Fighters 2 - Operation Hell Dive (Hong Kong)", MACHINE_SUPPORTS_SAVE | MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND )
+// this is another
+GAME( 1997, rdft2ja, rdft2, spi, spi_2button, seibuspi_state, rdft2, ROT270, "Seibu Kaihatsu", "Raiden Fighters 2 - Operation Hell Dive (Japan set 2)", MACHINE_SUPPORTS_SAVE | MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND )
GAME( 1997, rdft2aa, rdft2, spi, spi_2button, seibuspi_state, rdft2, ROT270, "Seibu Kaihatsu (Dream Island license)", "Raiden Fighters 2 - Operation Hell Dive (Korea)", MACHINE_SUPPORTS_SAVE | MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND )
+GAME( 1997, rdft2it, rdft2, spi, spi_2button, seibuspi_state, rdft2, ROT270, "Seibu Kaihatsu", "Raiden Fighters 2 - Operation Hell Dive (Italy)", MACHINE_SUPPORTS_SAVE | MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND )
+// these 2 are both unique
GAME( 1997, rdft2t, rdft2, spi, spi_2button, seibuspi_state, rdft2, ROT270, "Seibu Kaihatsu", "Raiden Fighters 2 - Operation Hell Dive (Taiwan)", MACHINE_SUPPORTS_SAVE | MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND )
+GAME( 1997, rdft2u, rdft2, spi, spi_2button, seibuspi_state, rdft2, ROT270, "Seibu Kaihatsu (Fabtek license)", "Raiden Fighters 2 - Operation Hell Dive (US)", MACHINE_SUPPORTS_SAVE | MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND )
+
+
+
GAME( 1998, rfjet, 0, spi, spi_2button, seibuspi_state, rfjet, ROT270, "Seibu Kaihatsu (Tuning license)", "Raiden Fighters Jet (Germany)", MACHINE_SUPPORTS_SAVE | MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND )
GAME( 1998, rfjetu, rfjet, spi, spi_2button, seibuspi_state, rfjet, ROT270, "Seibu Kaihatsu (Fabtek license)", "Raiden Fighters Jet (US)", MACHINE_SUPPORTS_SAVE | MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND )
diff --git a/src/mame/drivers/sfbonus.cpp b/src/mame/drivers/sfbonus.cpp
index 46843e34271..3fcf0368c39 100644
--- a/src/mame/drivers/sfbonus.cpp
+++ b/src/mame/drivers/sfbonus.cpp
@@ -294,7 +294,9 @@ public:
m_2801_regs(*this, "2801_regs"),
m_2c01_regs(*this, "2c01_regs"),
m_3000_regs(*this, "3000_regs"),
- m_3800_regs(*this, "3800_regs") { }
+ m_3800_regs(*this, "3800_regs")
+ {
+ }
required_device<cpu_device> m_maincpu;
required_device<gfxdecode_device> m_gfxdecode;
@@ -5843,9 +5845,6 @@ ROM_START( amclink )
ROM_REGION( 0x100000, "gfx2", ROMREGION_ERASE00 )
ROM_END
-//ROM_REGION( 0x80000, "user1", 0 ) /* Z80 Code */
-//ROM_LOAD( "dummy.rom", 0x00000, 0x40000, CRC(1) SHA1(1) )
-
DRIVER_INIT_MEMBER(sfbonus_state,sfbonus_common)
{
m_tilemap_ram = std::make_unique<UINT8[]>(0x4000);
@@ -5873,46 +5872,6 @@ DRIVER_INIT_MEMBER(sfbonus_state,sfbonus_common)
memset(m_videoram.get(), 0xff, 0x10000);
save_pointer(NAME(m_videoram.get()), 0x10000);
-
- // dummy.rom helper
- {
- UINT8 *ROM = memregion("maincpu")->base();
- int length = memregion("maincpu")->bytes();
- UINT8* ROM2 = memregion("user1")->base();
-
- if (ROM2)
- {
- printf("X %02x %02x %02x %02x %02x %02x %02x %02x\n", ROM[0x50], ROM[0x51], ROM[0x52], ROM[0x53], ROM[0x54], ROM[0x55],ROM[0x56],ROM[0x57]);
-
- {
- int x;
- int y;
- for (y = 0; y < 0x8; y++)
- {
- printf("@Echo Off\n");
- printf("a.exe ");
- for (x = 0; x < 0x20 * 0x8; x += 0x8)
- {
- printf("%02x %02x ", ROM[x + y], ROM2[x + y]);
- }
- printf("\n");
- }
-
- }
-
- {
- FILE *fp;
- char filename[256];
- sprintf(filename,"decr_%s", machine().system().name);
- fp = fopen(filename, "w+b");
- if (fp)
- {
- fwrite(ROM, length, 1, fp);
- fclose(fp);
- }
- }
- }
- }
}
void sfbonus_state::sfbonus_bitswap(
@@ -6348,8 +6307,6 @@ GAME( 2006, version4o, version4, sfbonus, amcoe1_reels3, sfbonus_state,
// Known sets but no roms dumped at all for these:
// Merry Circus
// Devil Island - 14 Liner version
-// Fruit Bonus 2010 (or is this on the older goldstar.c style hardware)
-
// ?? what is this
GAME( 200?, amclink, 0, sfbonus, amcoe1_reels3, sfbonus_state, sfbonus_common, ROT0, "Amcoe", "Amcoe Link Control Box (Version 2.2)", MACHINE_NOT_WORKING)
diff --git a/src/mame/drivers/sfkick.cpp b/src/mame/drivers/sfkick.cpp
index e94210e21fb..8866fcece35 100644
--- a/src/mame/drivers/sfkick.cpp
+++ b/src/mame/drivers/sfkick.cpp
@@ -85,11 +85,11 @@ Player 2 Shoot | Z | 22| Player 1 Shoot
GND | e | 27| GND
GND | f | 28| GND
- ____
+ ____
/ \
| Dial |
\____/
- /| |\
+ /| |\
/ | | \
Blue Red Black Yellow
/ | | \
@@ -510,22 +510,22 @@ static INPUT_PORTS_START( sfkick )
PORT_BIT( 0xff, 0x00, IPT_DIAL ) PORT_SENSITIVITY(25) PORT_KEYDELTA(-20)
PORT_START("DSW1") /* bitswapped at read! 76543210 -> 45673210 */
- PORT_DIPNAME( 0x10, 0x10, DEF_STR( Cabinet ) ) PORT_DIPLOCATION("SW1:1")
+ PORT_DIPNAME( 0x10, 0x10, DEF_STR( Cabinet ) ) PORT_DIPLOCATION("SW1:1")
PORT_DIPSETTING( 0x10, DEF_STR( Upright ) )
PORT_DIPSETTING( 0x00, DEF_STR( Cocktail ) )
- PORT_DIPNAME( 0x01, 0x01, "Stage Select" ) PORT_DIPLOCATION("SW1:2") /* How does this work?? */
+ PORT_DIPNAME( 0x01, 0x01, "Stage Select" ) PORT_DIPLOCATION("SW1:2") /* How does this work?? */
PORT_DIPSETTING( 0x01, DEF_STR( Off ) )
PORT_DIPSETTING( 0x00, DEF_STR( On ) )
- PORT_DIPNAME( 0x20, 0x20, "Freeze" ) PORT_DIPLOCATION("SW1:3")
+ PORT_DIPNAME( 0x20, 0x20, "Freeze" ) PORT_DIPLOCATION("SW1:3")
PORT_DIPSETTING( 0x20, DEF_STR( Off ) )
PORT_DIPSETTING( 0x00, DEF_STR( On ) )
- PORT_DIPNAME( 0x02, 0x02, "Test Mode" ) PORT_DIPLOCATION("SW1:4")
+ PORT_DIPNAME( 0x02, 0x02, "Test Mode" ) PORT_DIPLOCATION("SW1:4")
PORT_DIPSETTING( 0x02, DEF_STR( Off ) )
PORT_DIPSETTING( 0x00, DEF_STR( On ) )
- PORT_DIPNAME( 0x40, 0x00, DEF_STR( Allow_Continue ) ) PORT_DIPLOCATION("SW1:5")
+ PORT_DIPNAME( 0x40, 0x00, DEF_STR( Allow_Continue ) ) PORT_DIPLOCATION("SW1:5")
PORT_DIPSETTING( 0x40, DEF_STR( No ) )
PORT_DIPSETTING( 0x00, DEF_STR( Yes ) )
- PORT_DIPNAME( 0x8c, 0x8c, DEF_STR( Coinage ) ) PORT_DIPLOCATION("SW1:6,8,7")
+ PORT_DIPNAME( 0x8c, 0x8c, DEF_STR( Coinage ) ) PORT_DIPLOCATION("SW1:6,8,7")
PORT_DIPSETTING( 0x04, DEF_STR( 3C_1C ) )
PORT_DIPSETTING( 0x84, DEF_STR( 2C_1C ) )
PORT_DIPSETTING( 0x00, DEF_STR( 3C_2C ) )
@@ -537,20 +537,20 @@ static INPUT_PORTS_START( sfkick )
PORT_START("DSW2") /* bitswapped at read! 76543210 -> 45673210 */
PORT_DIPUNUSED_DIPLOC( 0x10, IP_ACTIVE_LOW, "SW2:1" ) /* Manual states "No Comment" */
- PORT_DIPNAME( 0x20, 0x20, DEF_STR( Demo_Sounds ) ) PORT_DIPLOCATION("SW2:2")
+ PORT_DIPNAME( 0x20, 0x20, DEF_STR( Demo_Sounds ) ) PORT_DIPLOCATION("SW2:2")
PORT_DIPSETTING( 0x00, DEF_STR( Off ) )
PORT_DIPSETTING( 0x20, DEF_STR( On ) )
- PORT_DIPNAME( 0x41, 0x01, DEF_STR( Lives ) ) PORT_DIPLOCATION("SW2:3,4")
+ PORT_DIPNAME( 0x41, 0x01, DEF_STR( Lives ) ) PORT_DIPLOCATION("SW2:3,4")
PORT_DIPSETTING( 0x41, "1" )
PORT_DIPSETTING( 0x40, "2" )
PORT_DIPSETTING( 0x01, "3" )
PORT_DIPSETTING( 0x00, "5" )
- PORT_DIPNAME( 0x82, 0x02, DEF_STR( Bonus_Life ) ) PORT_DIPLOCATION("SW2:5,6")
+ PORT_DIPNAME( 0x82, 0x02, DEF_STR( Bonus_Life ) ) PORT_DIPLOCATION("SW2:5,6")
PORT_DIPSETTING( 0x80, "Every 20,000" )
PORT_DIPSETTING( 0x02, "20,000 & 50,000" )
PORT_DIPSETTING( 0x00, "Every 50,000" )
PORT_DIPSETTING( 0x82, DEF_STR( None ) )
- PORT_DIPNAME( 0x0c, 0x08, DEF_STR( Difficulty ) ) PORT_DIPLOCATION("SW2:7,8")
+ PORT_DIPNAME( 0x0c, 0x08, DEF_STR( Difficulty ) ) PORT_DIPLOCATION("SW2:7,8")
PORT_DIPSETTING( 0x0c, DEF_STR( Easy ) )
PORT_DIPSETTING( 0x08, DEF_STR( Normal ) )
PORT_DIPSETTING( 0x04, DEF_STR( Hard ) )
diff --git a/src/mame/drivers/shougi.cpp b/src/mame/drivers/shougi.cpp
index 3d8a4a56374..528f062fdef 100644
--- a/src/mame/drivers/shougi.cpp
+++ b/src/mame/drivers/shougi.cpp
@@ -1,4 +1,4 @@
-// license:???
+// license:GPL-2.0+
// copyright-holders:Jarek Burczynski, Tomasz Slanina
/***************************************************************************
diff --git a/src/mame/drivers/slapfght.cpp b/src/mame/drivers/slapfght.cpp
index 98f7578ac71..413cf8651b2 100644
--- a/src/mame/drivers/slapfght.cpp
+++ b/src/mame/drivers/slapfght.cpp
@@ -1832,72 +1832,166 @@ ROM_START( slapfighb3 )
ROM_LOAD( "sf_col19.bin", 0x0200, 0x0100, CRC(5cbf9fbf) SHA1(abfa58fa4e44ebc56f2e0fac9bcc36164c845fa3) )
ROM_END
+/*
+
+Guardian
+1986 Taito Corporation
+
+The Guardian PCB is exactly the same PCB as Tiger Heli, including the
+edge connector pinout.
+
+PCB Layout
+----------
+
+Top Board
+
+Sticker - M6100151B 860010898
+GX-006-A MADE IN JAPAN
+|--------------------------------------------------|
+|VOL ROM21.12Q 2148 |
+|MB3712 2148 |
+| ROM19.12P 2148 |
+| 2148 |
+| ROM20.12M 6264 |
+| |
+| 6264 |
+| |
+|2 A68_13.8J A68_12.6J 6264 |
+|2 YM2149F |
+|W A68_11.8H A68_10.6H 6264 |
+|A DSW1 DSW2 |
+|Y 2148 |
+| YM2149F |
+| ROM16.1E|
+| |
+| A68_03.12D ROM17.1C|
+| |
+| ROM18.2B |
+| Z80A 6116 |
+| |
+|-----|----------|--------------|----------|-------|
+ |----------| |----------|
+Notes:
+ YM2149F - Clock 1.500MHz (36/24)
+ Z80A - Clock 3.000MHz (36/12)
+ 6116 - 2kx8 SRAM
+ 6264 - 8kx8 SRAM
+ MB3712 - Audio Power AMP
+ 2148 - 1kx4 SRAM
+ DSW1/2 - 8-position DIP-switch
+ VSync - 56.91313Hz
+ HSync - 14.97090kHz
+ A68_03 - 2764 EPROM
+ A68_10 to 13 - 27256 EPROM
+ ROM18 - 82S123 PROM
+ROM16/17/19/20/21 - 82S129 PROM
+
+
+Bottom Board
+
+GX-006-B MADE IN JAPAN
+|--------------------------------------------------|
+| A68_14.6A |
+| |
+| ROM14.2C ROM15.8B |
+| |
+| |
+| 6116 A68_05.6F |
+| 36MHz |
+| 6116 A68_04.6G |
+| |
+| |
+| |
+| |
+| 6116 |
+| A68_02.8K |
+| |
+| A68_09.4M A47_08.6M X |
+| 6116 |
+| 6116 A68_07.6N A68_01.8N |
+| |
+| 6116 A68_06.6P A68_00.8P |
+| Z80B |
+|-----|----------|--------------|----------|-------|
+ |----------| |----------|
+Notes:
+ Z80B - Clock 6.000MHz (36/6)
+ 6116 - 2kx8 SRAM
+ ROM14/15 - 82S129 PROM
+ A68_00/01 - 27128 EPROM
+A68_02 & 06 to 09 - 27256 EPROM
+ A68_04/05 - 2764 EPROM
+ A68_14 - Motorola MC68705P5 Micro-Controller (protected). Clock 3.000MHz [36/12]
+ X - Unpopulated socket
+
+*/
+
ROM_START( grdian )
ROM_REGION( 0x18000, "maincpu", 0 ) /* Region 0 - main cpu code */
- ROM_LOAD( "a68_00-1", 0x00000, 0x4000, CRC(6a8bdc6c) SHA1(c923bca539bd2eb9a34cb9c7a67a199e28bc081a) )
- ROM_LOAD( "a68_01-1", 0x04000, 0x4000, CRC(ebe8db3c) SHA1(9046d6e63c33fc9cbd48b90dcbcc0badf1d3b9ba) )
- ROM_LOAD( "a68_02-1", 0x10000, 0x8000, CRC(343e8415) SHA1(00b98055277a0ddfb7d0bda6537df10a4049533e) )
+ ROM_LOAD( "a68_00-1.8p", 0x00000, 0x4000, CRC(6a8bdc6c) SHA1(c923bca539bd2eb9a34cb9c7a67a199e28bc081a) )
+ ROM_LOAD( "a68_01-1.8n", 0x04000, 0x4000, CRC(ebe8db3c) SHA1(9046d6e63c33fc9cbd48b90dcbcc0badf1d3b9ba) )
+ ROM_LOAD( "a68_02-1.8k", 0x10000, 0x8000, CRC(343e8415) SHA1(00b98055277a0ddfb7d0bda6537df10a4049533e) )
ROM_REGION( 0x10000, "audiocpu", 0 ) /* Region 3 - sound cpu code */
- ROM_LOAD( "a68-03", 0x0000, 0x2000, CRC(18daa44c) SHA1(1a3d22a186c591321d1b836ee30d89fba4771122) )
+ ROM_LOAD( "a68-03.12d", 0x0000, 0x2000, CRC(18daa44c) SHA1(1a3d22a186c591321d1b836ee30d89fba4771122) )
ROM_REGION( 0x0800, "mcu", 0 ) /* 2k for the microcontroller */
- ROM_LOAD( "a68_14", 0x0000, 0x0800, NO_DUMP )
+ ROM_LOAD( "a68_14.6a", 0x0000, 0x0800, NO_DUMP )
ROM_REGION( 0x04000, "gfx1", 0 ) /* Region 1 - temporary for gfx */
- ROM_LOAD( "a68_05-1", 0x00000, 0x2000, CRC(06f60107) SHA1(c5dcf0c7a5863ea960ee747d2d7ec7ac8bb7d3af) ) /* Chars */
- ROM_LOAD( "a68_04-1", 0x02000, 0x2000, CRC(1fc8f277) SHA1(59dc1a0fad23b1e98abca3d0b1685b9d2939b059) )
+ ROM_LOAD( "a68_05-1.6f", 0x00000, 0x2000, CRC(06f60107) SHA1(c5dcf0c7a5863ea960ee747d2d7ec7ac8bb7d3af) ) /* Chars */
+ ROM_LOAD( "a68_04-1.6g", 0x02000, 0x2000, CRC(1fc8f277) SHA1(59dc1a0fad23b1e98abca3d0b1685b9d2939b059) )
ROM_REGION( 0x20000, "gfx2", 0 ) /* Region 1 - temporary for gfx */
- ROM_LOAD( "a68_09", 0x00000, 0x8000, CRC(a293cc2e) SHA1(a2c2598e92982d13b51cbb6efb4b963142233433) ) /* Tiles */
- ROM_LOAD( "a68_08", 0x08000, 0x8000, CRC(37662375) SHA1(46ba8a3f0b553d476ecf431d0d20556896b4ca43) )
- ROM_LOAD( "a68_07", 0x10000, 0x8000, CRC(cf1a964c) SHA1(e9223c8d4f3bdafed193a1ded63e377f16f45e17) )
- ROM_LOAD( "a68_06", 0x18000, 0x8000, CRC(05f9eb9a) SHA1(a71640a63b259799086d361ef293aa26cec46a0c) )
+ ROM_LOAD( "a68_09.4m", 0x00000, 0x8000, CRC(a293cc2e) SHA1(a2c2598e92982d13b51cbb6efb4b963142233433) ) /* Tiles */
+ ROM_LOAD( "a68_08.6m", 0x08000, 0x8000, CRC(37662375) SHA1(46ba8a3f0b553d476ecf431d0d20556896b4ca43) )
+ ROM_LOAD( "a68_07.6n", 0x10000, 0x8000, CRC(cf1a964c) SHA1(e9223c8d4f3bdafed193a1ded63e377f16f45e17) )
+ ROM_LOAD( "a68_06.6p", 0x18000, 0x8000, CRC(05f9eb9a) SHA1(a71640a63b259799086d361ef293aa26cec46a0c) )
ROM_REGION( 0x20000, "gfx3", 0 ) /* Region 1 - temporary for gfx */
- ROM_LOAD( "a68-13", 0x00000, 0x8000, CRC(643fb282) SHA1(d904d3c27c2b56341929c5eed4ea97e948c53c34) ) /* Sprites */
- ROM_LOAD( "a68-12", 0x08000, 0x8000, CRC(11f74e32) SHA1(02d8b4cc679f45a02c4989f2b62cde91b7418235) )
- ROM_LOAD( "a68-11", 0x10000, 0x8000, CRC(f24158cf) SHA1(db4c6b68a488b0798ea5f793ac8ced283a8ecab2) )
- ROM_LOAD( "a68-10", 0x18000, 0x8000, CRC(83161ed0) SHA1(a6aa28f22f487dc3a2ec07935e6d42bcdd1eff81) )
+ ROM_LOAD( "a68-13.8j", 0x00000, 0x8000, CRC(643fb282) SHA1(d904d3c27c2b56341929c5eed4ea97e948c53c34) ) /* Sprites */
+ ROM_LOAD( "a68-12.6j", 0x08000, 0x8000, CRC(11f74e32) SHA1(02d8b4cc679f45a02c4989f2b62cde91b7418235) )
+ ROM_LOAD( "a68-11.8h", 0x10000, 0x8000, CRC(f24158cf) SHA1(db4c6b68a488b0798ea5f793ac8ced283a8ecab2) )
+ ROM_LOAD( "a68-10.6h", 0x18000, 0x8000, CRC(83161ed0) SHA1(a6aa28f22f487dc3a2ec07935e6d42bcdd1eff81) )
ROM_REGION( 0x0300, "proms", 0 )
- ROM_LOAD( "rom21", 0x0000, 0x0100, CRC(d6360b4d) SHA1(3e64548c82a3378fc091e104cdc2b0c7e592fc44) )
- ROM_LOAD( "rom20", 0x0100, 0x0100, CRC(4ca01887) SHA1(2892c89d5e60f1d10593adffff55c1a9654e8209) )
- ROM_LOAD( "rom19", 0x0200, 0x0100, CRC(513224f0) SHA1(15b34612206138f6fc5f7478925b1fff2ed56aa8) )
+ ROM_LOAD( "rom21.12q", 0x0000, 0x0100, CRC(d6360b4d) SHA1(3e64548c82a3378fc091e104cdc2b0c7e592fc44) )
+ ROM_LOAD( "rom20.12m", 0x0100, 0x0100, CRC(4ca01887) SHA1(2892c89d5e60f1d10593adffff55c1a9654e8209) )
+ ROM_LOAD( "rom19.12p", 0x0200, 0x0100, CRC(513224f0) SHA1(15b34612206138f6fc5f7478925b1fff2ed56aa8) )
ROM_END
ROM_START( getstarj )
ROM_REGION( 0x18000, "maincpu", 0 ) /* Region 0 - main cpu code */
- ROM_LOAD( "a68_00.bin", 0x00000, 0x4000, CRC(ad1a0143) SHA1(0d9adeb12bd4d5ad11e5bada0cd7498bc565c1db) )
- ROM_LOAD( "a68_01.bin", 0x04000, 0x4000, CRC(3426eb7c) SHA1(e91db45a650a1bfefd7c12c7553b647bc916c7c8) )
- ROM_LOAD( "a68_02.bin", 0x10000, 0x8000, CRC(3567da17) SHA1(29d698606d0bd30abfc3171d79bfad95b0de89fc) )
+ ROM_LOAD( "a68_00.8p", 0x00000, 0x4000, CRC(ad1a0143) SHA1(0d9adeb12bd4d5ad11e5bada0cd7498bc565c1db) )
+ ROM_LOAD( "a68_01.8n", 0x04000, 0x4000, CRC(3426eb7c) SHA1(e91db45a650a1bfefd7c12c7553b647bc916c7c8) )
+ ROM_LOAD( "a68_02.8k", 0x10000, 0x8000, CRC(3567da17) SHA1(29d698606d0bd30abfc3171d79bfad95b0de89fc) )
ROM_REGION( 0x10000, "audiocpu", 0 ) /* Region 3 - sound cpu code */
- ROM_LOAD( "a68-03", 0x00000, 0x2000, CRC(18daa44c) SHA1(1a3d22a186c591321d1b836ee30d89fba4771122) )
+ ROM_LOAD( "a68-03.12d", 0x00000, 0x2000, CRC(18daa44c) SHA1(1a3d22a186c591321d1b836ee30d89fba4771122) )
ROM_REGION( 0x0800, "mcu", 0 ) /* 2k for the microcontroller */
- ROM_LOAD( "68705.bin", 0x0000, 0x0800, NO_DUMP )
+ ROM_LOAD( "68705.6a", 0x0000, 0x0800, NO_DUMP )
ROM_REGION( 0x04000, "gfx1", 0 ) /* Region 1 - temporary for gfx */
- ROM_LOAD( "a68_05.bin", 0x00000, 0x2000, CRC(e3d409e7) SHA1(0b6be4767f110729f4dd1a472ef8d9a0c718b684) ) /* Chars */
- ROM_LOAD( "a68_04.bin", 0x02000, 0x2000, CRC(6e5ac9d4) SHA1(74f90b7a1ceb3b1c2fd92dff100d92dea0155530) )
+ ROM_LOAD( "a68_05.6f", 0x00000, 0x2000, CRC(e3d409e7) SHA1(0b6be4767f110729f4dd1a472ef8d9a0c718b684) ) /* Chars */
+ ROM_LOAD( "a68_04.6g", 0x02000, 0x2000, CRC(6e5ac9d4) SHA1(74f90b7a1ceb3b1c2fd92dff100d92dea0155530) )
ROM_REGION( 0x20000, "gfx2", 0 ) /* Region 1 - temporary for gfx */
- ROM_LOAD( "a68_09", 0x00000, 0x8000, CRC(a293cc2e) SHA1(a2c2598e92982d13b51cbb6efb4b963142233433) ) /* Tiles */
- ROM_LOAD( "a68_08", 0x08000, 0x8000, CRC(37662375) SHA1(46ba8a3f0b553d476ecf431d0d20556896b4ca43) )
- ROM_LOAD( "a68_07", 0x10000, 0x8000, CRC(cf1a964c) SHA1(e9223c8d4f3bdafed193a1ded63e377f16f45e17) )
- ROM_LOAD( "a68_06", 0x18000, 0x8000, CRC(05f9eb9a) SHA1(a71640a63b259799086d361ef293aa26cec46a0c) )
+ ROM_LOAD( "a68_09.4m", 0x00000, 0x8000, CRC(a293cc2e) SHA1(a2c2598e92982d13b51cbb6efb4b963142233433) ) /* Tiles */
+ ROM_LOAD( "a68_08.6m", 0x08000, 0x8000, CRC(37662375) SHA1(46ba8a3f0b553d476ecf431d0d20556896b4ca43) )
+ ROM_LOAD( "a68_07.6n", 0x10000, 0x8000, CRC(cf1a964c) SHA1(e9223c8d4f3bdafed193a1ded63e377f16f45e17) )
+ ROM_LOAD( "a68_06.6p", 0x18000, 0x8000, CRC(05f9eb9a) SHA1(a71640a63b259799086d361ef293aa26cec46a0c) )
ROM_REGION( 0x20000, "gfx3", 0 ) /* Region 1 - temporary for gfx */
- ROM_LOAD( "a68-13", 0x00000, 0x8000, CRC(643fb282) SHA1(d904d3c27c2b56341929c5eed4ea97e948c53c34) ) /* Sprites */
- ROM_LOAD( "a68-12", 0x08000, 0x8000, CRC(11f74e32) SHA1(02d8b4cc679f45a02c4989f2b62cde91b7418235) )
- ROM_LOAD( "a68-11", 0x10000, 0x8000, CRC(f24158cf) SHA1(db4c6b68a488b0798ea5f793ac8ced283a8ecab2) )
- ROM_LOAD( "a68-10", 0x18000, 0x8000, CRC(83161ed0) SHA1(a6aa28f22f487dc3a2ec07935e6d42bcdd1eff81) )
+ ROM_LOAD( "a68-13.8j", 0x00000, 0x8000, CRC(643fb282) SHA1(d904d3c27c2b56341929c5eed4ea97e948c53c34) ) /* Sprites */
+ ROM_LOAD( "a68-12.6j", 0x08000, 0x8000, CRC(11f74e32) SHA1(02d8b4cc679f45a02c4989f2b62cde91b7418235) )
+ ROM_LOAD( "a68-11.8h", 0x10000, 0x8000, CRC(f24158cf) SHA1(db4c6b68a488b0798ea5f793ac8ced283a8ecab2) )
+ ROM_LOAD( "a68-10.6h", 0x18000, 0x8000, CRC(83161ed0) SHA1(a6aa28f22f487dc3a2ec07935e6d42bcdd1eff81) )
ROM_REGION( 0x0300, "proms", 0 )
- ROM_LOAD( "rom21", 0x0000, 0x0100, CRC(d6360b4d) SHA1(3e64548c82a3378fc091e104cdc2b0c7e592fc44) )
- ROM_LOAD( "rom20", 0x0100, 0x0100, CRC(4ca01887) SHA1(2892c89d5e60f1d10593adffff55c1a9654e8209) )
- ROM_LOAD( "rom19", 0x0200, 0x0100, CRC(513224f0) SHA1(15b34612206138f6fc5f7478925b1fff2ed56aa8) )
+ ROM_LOAD( "rom21.12q", 0x0000, 0x0100, CRC(d6360b4d) SHA1(3e64548c82a3378fc091e104cdc2b0c7e592fc44) )
+ ROM_LOAD( "rom20.12m", 0x0100, 0x0100, CRC(4ca01887) SHA1(2892c89d5e60f1d10593adffff55c1a9654e8209) )
+ ROM_LOAD( "rom19.12p", 0x0200, 0x0100, CRC(513224f0) SHA1(15b34612206138f6fc5f7478925b1fff2ed56aa8) )
ROM_END
ROM_START( getstarb1 )
diff --git a/src/mame/drivers/smc777.cpp b/src/mame/drivers/smc777.cpp
index c4d6902b299..627f850559a 100644
--- a/src/mame/drivers/smc777.cpp
+++ b/src/mame/drivers/smc777.cpp
@@ -925,7 +925,6 @@ void smc777_state::machine_reset()
m_raminh_prefetch = 0xff;
m_pal_mode = 0x10;
- m_beeper->set_frequency(300); //TODO: correct frequency
m_beeper->set_state(0);
}
@@ -1003,7 +1002,7 @@ static MACHINE_CONFIG_START( smc777, smc777_state )
MCFG_SOUND_ADD("sn1", SN76489A, MASTER_CLOCK) // unknown clock / divider
MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.50)
- MCFG_SOUND_ADD("beeper", BEEP, 0)
+ MCFG_SOUND_ADD("beeper", BEEP, 300) // TODO: correct frequency
MCFG_SOUND_ROUTE(ALL_OUTPUTS,"mono",0.50)
MCFG_TIMER_DRIVER_ADD_PERIODIC("keyboard_timer", smc777_state, keyboard_callback, attotime::from_hz(240/32))
diff --git a/src/mame/drivers/snk.cpp b/src/mame/drivers/snk.cpp
index 4e2b1f95301..0e35f023e59 100644
--- a/src/mame/drivers/snk.cpp
+++ b/src/mame/drivers/snk.cpp
@@ -1733,7 +1733,7 @@ static INPUT_PORTS_START( jcross )
PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_UNKNOWN )
PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_START1 )
PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_START2 )
- PORT_BIT( 0x20, IP_ACTIVE_HIGH, IPT_SPECIAL ) PORT_CUSTOM_MEMBER(DEVICE_SELF, snk_state,snk_sound_busy, 0)
+ PORT_BIT( 0x20, IP_ACTIVE_HIGH, IPT_SPECIAL ) PORT_CUSTOM_MEMBER(DEVICE_SELF, snk_state,snk_sound_busy, NULL)
PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_UNKNOWN )
PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_UNKNOWN )
@@ -1818,7 +1818,7 @@ static INPUT_PORTS_START( sgladiat )
PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_SERVICE1 )
PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_START1 )
PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_START2 )
- PORT_BIT( 0x20, IP_ACTIVE_HIGH, IPT_SPECIAL ) PORT_CUSTOM_MEMBER(DEVICE_SELF, snk_state,snk_sound_busy, 0)
+ PORT_BIT( 0x20, IP_ACTIVE_HIGH, IPT_SPECIAL ) PORT_CUSTOM_MEMBER(DEVICE_SELF, snk_state,snk_sound_busy, NULL)
PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_UNKNOWN )
PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_SERVICE ) /* code at 0x054e */
@@ -1902,7 +1902,7 @@ static INPUT_PORTS_START( hal21 )
PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_SERVICE1 )
PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_START1 )
PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_START2 )
- PORT_BIT( 0x20, IP_ACTIVE_HIGH, IPT_SPECIAL ) PORT_CUSTOM_MEMBER(DEVICE_SELF, snk_state,snk_sound_busy, 0)
+ PORT_BIT( 0x20, IP_ACTIVE_HIGH, IPT_SPECIAL ) PORT_CUSTOM_MEMBER(DEVICE_SELF, snk_state,snk_sound_busy, NULL)
PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_UNKNOWN )
PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_UNKNOWN )
@@ -1985,7 +1985,7 @@ static INPUT_PORTS_START( aso )
PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_SERVICE1 ) /* uses "Coinage" settings - code at 0x2e04 */
PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_START1 )
PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_START2 )
- PORT_BIT( 0x20, IP_ACTIVE_HIGH, IPT_SPECIAL ) PORT_CUSTOM_MEMBER(DEVICE_SELF, snk_state,snk_sound_busy, 0)
+ PORT_BIT( 0x20, IP_ACTIVE_HIGH, IPT_SPECIAL ) PORT_CUSTOM_MEMBER(DEVICE_SELF, snk_state,snk_sound_busy, NULL)
PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_UNKNOWN )
PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_UNKNOWN )
@@ -2071,7 +2071,7 @@ static INPUT_PORTS_START( alphamis )
PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_SERVICE1 ) /* uses "Coin A" settings - code at 0x2e17 */
PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_START1 )
PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_START2 )
- PORT_BIT( 0x20, IP_ACTIVE_HIGH, IPT_SPECIAL ) PORT_CUSTOM_MEMBER(DEVICE_SELF, snk_state,snk_sound_busy, 0)
+ PORT_BIT( 0x20, IP_ACTIVE_HIGH, IPT_SPECIAL ) PORT_CUSTOM_MEMBER(DEVICE_SELF, snk_state,snk_sound_busy, NULL)
PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_UNKNOWN )
PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_UNKNOWN )
@@ -2153,7 +2153,7 @@ static INPUT_PORTS_START( tnk3 )
PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_SERVICE1 )
PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_START1 )
PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_START2 )
- PORT_BIT( 0x20, IP_ACTIVE_HIGH, IPT_SPECIAL ) PORT_CUSTOM_MEMBER(DEVICE_SELF, snk_state,snk_sound_busy, 0)
+ PORT_BIT( 0x20, IP_ACTIVE_HIGH, IPT_SPECIAL ) PORT_CUSTOM_MEMBER(DEVICE_SELF, snk_state,snk_sound_busy, NULL)
PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_UNKNOWN )
PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_UNKNOWN )
@@ -2236,7 +2236,7 @@ INPUT_PORTS_END
static INPUT_PORTS_START( athena )
PORT_START("IN0")
- PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_SPECIAL ) PORT_CUSTOM_MEMBER(DEVICE_SELF, snk_state,snk_sound_busy, 0)
+ PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_SPECIAL ) PORT_CUSTOM_MEMBER(DEVICE_SELF, snk_state,snk_sound_busy, NULL)
PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_SERVICE1 ) /* uses "Coin A" settings - code at 0x09d4 */
PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_UNKNOWN )
PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_UNKNOWN )
@@ -2321,7 +2321,7 @@ INPUT_PORTS_END
static INPUT_PORTS_START( fitegolf )
PORT_START("IN0")
- PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_SPECIAL ) PORT_CUSTOM_MEMBER(DEVICE_SELF, snk_state,snk_sound_busy, 0)
+ PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_SPECIAL ) PORT_CUSTOM_MEMBER(DEVICE_SELF, snk_state,snk_sound_busy, NULL)
PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_SERVICE1 ) /* uses "Coin A" settings - code at 0x045b */
PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_TILT ) /* reset */
PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_SERVICE ) /* same as the dip switch */
@@ -2417,7 +2417,7 @@ INPUT_PORTS_END
static INPUT_PORTS_START( countryc )
PORT_START("IN0")
- PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_SPECIAL ) PORT_CUSTOM_MEMBER(DEVICE_SELF, snk_state,snk_sound_busy, 0)
+ PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_SPECIAL ) PORT_CUSTOM_MEMBER(DEVICE_SELF, snk_state,snk_sound_busy, NULL)
PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_SERVICE1 ) /* uses "Coin A" settings - code at 0x0450 */
PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_TILT ) /* reset */
PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_SERVICE ) /* same as the dip switch */
@@ -2427,10 +2427,10 @@ static INPUT_PORTS_START( countryc )
PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_START1 )
PORT_START("IN1")
- PORT_BIT( 0xff, IP_ACTIVE_HIGH, IPT_SPECIAL ) PORT_CUSTOM_MEMBER(DEVICE_SELF, snk_state,countryc_trackball_x, 0)
+ PORT_BIT( 0xff, IP_ACTIVE_HIGH, IPT_SPECIAL ) PORT_CUSTOM_MEMBER(DEVICE_SELF, snk_state,countryc_trackball_x, NULL)
PORT_START("IN2")
- PORT_BIT( 0xff, IP_ACTIVE_HIGH, IPT_SPECIAL ) PORT_CUSTOM_MEMBER(DEVICE_SELF, snk_state,countryc_trackball_y, 0)
+ PORT_BIT( 0xff, IP_ACTIVE_HIGH, IPT_SPECIAL ) PORT_CUSTOM_MEMBER(DEVICE_SELF, snk_state,countryc_trackball_y, NULL)
PORT_START("IN3")
PORT_BIT( 0xff, IP_ACTIVE_LOW, IPT_UNUSED )
@@ -2499,7 +2499,7 @@ INPUT_PORTS_END
static INPUT_PORTS_START( ikari )
PORT_START("IN0")
- PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_SPECIAL ) PORT_CUSTOM_MEMBER(DEVICE_SELF, snk_state,snk_sound_busy, 0)
+ PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_SPECIAL ) PORT_CUSTOM_MEMBER(DEVICE_SELF, snk_state,snk_sound_busy, NULL)
PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_SERVICE1 ) /* adds 1 credit - code at 0x0a15 */
PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_UNKNOWN )
PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_UNKNOWN )
@@ -2594,7 +2594,7 @@ static INPUT_PORTS_START( ikaria )
PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_SERVICE1 ) /* adds 1 credit - code at 0x0a00 */
PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_START1 )
PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_START2 )
- PORT_BIT( 0x20, IP_ACTIVE_HIGH, IPT_SPECIAL ) PORT_CUSTOM_MEMBER(DEVICE_SELF, snk_state,snk_sound_busy, 0)
+ PORT_BIT( 0x20, IP_ACTIVE_HIGH, IPT_SPECIAL ) PORT_CUSTOM_MEMBER(DEVICE_SELF, snk_state,snk_sound_busy, NULL)
PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_UNKNOWN )
PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_TILT ) /* reset */
INPUT_PORTS_END
@@ -2631,7 +2631,7 @@ INPUT_PORTS_END
static INPUT_PORTS_START( victroad )
PORT_START("IN0")
- PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_SPECIAL ) PORT_CUSTOM_MEMBER(DEVICE_SELF, snk_state,snk_sound_busy, 0)
+ PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_SPECIAL ) PORT_CUSTOM_MEMBER(DEVICE_SELF, snk_state,snk_sound_busy, NULL)
PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_SERVICE1 ) /* adds 1 credit - code at 0x0a19 */
PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_TILT ) /* reset */
PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_UNKNOWN )
@@ -2735,7 +2735,7 @@ INPUT_PORTS_END
static INPUT_PORTS_START( bermudat )
PORT_START("IN0")
- PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_SPECIAL ) PORT_CUSTOM_MEMBER(DEVICE_SELF, snk_state,snk_sound_busy, 0)
+ PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_SPECIAL ) PORT_CUSTOM_MEMBER(DEVICE_SELF, snk_state,snk_sound_busy, NULL)
PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_SERVICE1 ) /* uses "Coin A" settings - code at 0x0a0a */
PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_TILT ) /* reset */
PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_UNKNOWN )
@@ -2864,7 +2864,7 @@ INPUT_PORTS_END
static INPUT_PORTS_START( psychos )
PORT_START("IN0")
- PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_SPECIAL ) PORT_CUSTOM_MEMBER(DEVICE_SELF, snk_state,snk_sound_busy, 0)
+ PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_SPECIAL ) PORT_CUSTOM_MEMBER(DEVICE_SELF, snk_state,snk_sound_busy, NULL)
PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_UNKNOWN )
PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_TILT ) /* reset */
PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_UNKNOWN )
@@ -2949,7 +2949,7 @@ INPUT_PORTS_END
static INPUT_PORTS_START( gwar )
PORT_START("IN0")
- PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_SPECIAL ) PORT_CUSTOM_MEMBER(DEVICE_SELF, snk_state,snk_sound_busy, 0)
+ PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_SPECIAL ) PORT_CUSTOM_MEMBER(DEVICE_SELF, snk_state,snk_sound_busy, NULL)
PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_SERVICE1 ) /* uses "Coin A" settings - code at 0x08c8 */
PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_TILT ) /* reset */
PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_SERVICE )
@@ -2963,7 +2963,7 @@ static INPUT_PORTS_START( gwar )
PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_JOYSTICK_DOWN ) PORT_8WAY PORT_PLAYER(1)
PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_JOYSTICK_LEFT ) PORT_8WAY PORT_PLAYER(1)
PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_JOYSTICK_RIGHT ) PORT_8WAY PORT_PLAYER(1)
- PORT_BIT( 0xf0, IP_ACTIVE_HIGH, IPT_SPECIAL ) PORT_CUSTOM_MEMBER(DEVICE_SELF, snk_state,gwar_rotary, (void*)nullptr)
+ PORT_BIT( 0xf0, IP_ACTIVE_HIGH, IPT_SPECIAL ) PORT_CUSTOM_MEMBER(DEVICE_SELF, snk_state,gwar_rotary, (void*)0)
PORT_START("P1ROT")
PORT_BIT( 0x0f, 0x00, IPT_POSITIONAL ) PORT_POSITIONS(12) PORT_WRAPS PORT_SENSITIVITY(15) PORT_KEYDELTA(1) PORT_CODE_DEC(KEYCODE_Z) PORT_CODE_INC(KEYCODE_X) PORT_REVERSE PORT_FULL_TURN_COUNT(12)
@@ -3044,7 +3044,7 @@ static INPUT_PORTS_START( gwarb )
// connected. If rotary is not connected, player fires in the direction he's facing.
PORT_MODIFY("IN1")
- PORT_BIT( 0xf0, IP_ACTIVE_HIGH, IPT_SPECIAL ) PORT_CUSTOM_MEMBER(DEVICE_SELF, snk_state,gwarb_rotary, (void*)nullptr)
+ PORT_BIT( 0xf0, IP_ACTIVE_HIGH, IPT_SPECIAL ) PORT_CUSTOM_MEMBER(DEVICE_SELF, snk_state,gwarb_rotary, (void*)0)
PORT_MODIFY("IN2")
PORT_BIT( 0xf0, IP_ACTIVE_HIGH, IPT_SPECIAL ) PORT_CUSTOM_MEMBER(DEVICE_SELF, snk_state,gwarb_rotary, (void*)1)
@@ -3058,7 +3058,7 @@ INPUT_PORTS_END
static INPUT_PORTS_START( chopper )
PORT_START("IN0")
- PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_SPECIAL ) PORT_CUSTOM_MEMBER(DEVICE_SELF, snk_state,snk_sound_busy, 0)
+ PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_SPECIAL ) PORT_CUSTOM_MEMBER(DEVICE_SELF, snk_state,snk_sound_busy, NULL)
PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_SERVICE1 ) /* uses "Coin A" settings - code at 0x0849 */
PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_TILT ) /* reset */
PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_SERVICE )
@@ -3179,7 +3179,7 @@ static INPUT_PORTS_START( tdfever )
PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_UNKNOWN )
PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_SERVICE ) /* also reset - code at 0x074a */
PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_SERVICE1 ) /* adds 1 credit - code at 0x1065 */
- PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_SPECIAL ) PORT_CUSTOM_MEMBER(DEVICE_SELF, snk_state,snk_sound_busy, 0)
+ PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_SPECIAL ) PORT_CUSTOM_MEMBER(DEVICE_SELF, snk_state,snk_sound_busy, NULL)
PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_COIN1 )
PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_COIN2 )
PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_START1 ) PORT_NAME("Start Game A")
@@ -3320,7 +3320,7 @@ static INPUT_PORTS_START( fsoccer )
PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_UNKNOWN )
PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_SERVICE ) /* same as the dip switch / also reset - code at 0x00cc */
PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_SERVICE1 ) /* uses "Coin A" settings - code at 0x677f */
- PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_SPECIAL ) PORT_CUSTOM_MEMBER(DEVICE_SELF, snk_state,snk_sound_busy, 0)
+ PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_SPECIAL ) PORT_CUSTOM_MEMBER(DEVICE_SELF, snk_state,snk_sound_busy, NULL)
PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_COIN1 )
PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_COIN2 )
PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_START1 ) PORT_NAME("Start Game A")
@@ -3841,6 +3841,11 @@ static MACHINE_CONFIG_DERIVED( fitegolf, tnk3 )
MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 2.0)
MACHINE_CONFIG_END
+static MACHINE_CONFIG_DERIVED( fitegolf2, fitegolf )
+ MCFG_SCREEN_MODIFY("screen")
+ MCFG_SCREEN_UPDATE_DRIVER(snk_state, screen_update_fitegolf2)
+MACHINE_CONFIG_END
+
static MACHINE_CONFIG_START( ikari, snk_state )
@@ -4643,6 +4648,47 @@ ROM_START( fitegolfu ) /* Later US version containing enhancements to make the
ROM_LOAD( "pal20l8a.6r", 0x0400, 0x0144, CRC(0f011673) SHA1(383e6f6e78daec9c874d5b48378111ca60f5ed64) )
ROM_END
+
+
+
+ROM_START( fitegolf2 )
+ ROM_REGION( 0x10000, "maincpu", 0 )
+ ROM_LOAD( "fg_ver2_6.4e", 0x0000, 0x4000, CRC(4cc9ef0c) SHA1(0ac6071725db3ec85659b170eecec91d22e76abd) )
+ ROM_LOAD( "fg_ver2_7.g4", 0x4000, 0x4000, CRC(144b0beb) SHA1(5b5e58ee93cabbdd560487b16d0cc7217d9cea7f) )
+ ROM_LOAD( "fg_ver2_8.4h", 0x8000, 0x4000, CRC(057888c9) SHA1(bd412bbd9939358fedf6cc7635b46f737a288e64) )
+
+ ROM_REGION( 0x10000, "sub", 0 )
+ ROM_LOAD( "fg_ver2_3.2e", 0x0000, 0x4000, CRC(cf8c29d7) SHA1(2153ed43ddd1967e3aea7b40415b6cd70fc6ff34) )
+ ROM_LOAD( "fg_ver2_4.2g", 0x4000, 0x4000, CRC(90c1fb09) SHA1(13dcb6e9ffb3ed1588225df195c9f6af8a868970) )
+ ROM_LOAD( "fg_ver2_5.2h", 0x8000, 0x4000, CRC(0ffbdbb8) SHA1(09e58551a8caf06ba420b6b44f16003b50b2ebc4) )
+
+ ROM_REGION( 0x10000, "audiocpu", 0 )
+ ROM_LOAD( "fg_2.3e", 0x0000, 0x4000, CRC(811b87d7) SHA1(fb387f42085d6e0e5a88729ca0e50656411ce037) )
+ ROM_LOAD( "fg_1.2e", 0x4000, 0x8000, CRC(2d998e2b) SHA1(a471cfbb4dabc90fcc29c562620b9965eaff6861) )
+
+ ROM_REGION( 0x0c00, "proms", 0 )
+ ROM_LOAD( "gl1.5f", 0x00000, 0x00400, CRC(6e4c7836) SHA1(3ab3c498939fac992e2bf1c33983ee821a9b6a18) )
+ ROM_LOAD( "gl2.5g", 0x00400, 0x00400, CRC(29e7986f) SHA1(85ba8d3443458c27728f633745857a1315dd183f) )
+ ROM_LOAD( "gl3.5h", 0x00800, 0x00400, CRC(27ba9ff9) SHA1(f021d10460f40de4447560df5ac47fa53bb57ff9) )
+
+ ROM_REGION( 0x4000, "tx_tiles", 0 )
+ ROM_LOAD( "fg_12.1e", 0x0000, 0x4000, CRC(f1628dcf) SHA1(efea343d3a9dd45ef74947c297e166e34afbb680) )
+
+ ROM_REGION( 0x8000, "bg_tiles", 0 )
+ ROM_LOAD( "fg_14.3d", 0x0000, 0x4000, CRC(29393a19) SHA1(bae5a61c16832dc217c6fd0bd9d54db86cb9692f) )
+ ROM_LOAD( "fg_ver2_13.3c", 0x4000, 0x4000, CRC(5cd57c93) SHA1(7f5fb0d9e40b4894f3940373ad09fa4e984b108e) )
+
+ ROM_REGION( 0x18000, "sp16_tiles", 0 )
+ ROM_LOAD( "fg_ver2_11.7h", 0x00000, 0x8000, CRC(d4957ec5) SHA1(8ead7866ba5ac66ead6b707aa868bcae30c486e1) )
+ ROM_LOAD( "fg_ver2_10.7g", 0x08000, 0x8000, CRC(b3acdac2) SHA1(7377480d5e1b5ab2c49f5fee2927623ce8240e19) )
+ ROM_LOAD( "fg_ver2_9.7e", 0x10000, 0x8000, CRC(b99cf73b) SHA1(23989fc3914e77d364807a9eb96a4ddf75ad7cf1) )
+
+ ROM_REGION( 0x0600, "plds", 0 )
+ ROM_LOAD( "pal16r6a.6c", 0x0000, 0x0104, CRC(de291f4e) SHA1(b50294d30cb8eacc7a9bb8b46695a7463ef45ff1) )
+ ROM_LOAD( "pal16l8a.3f", 0x0200, 0x0104, CRC(c5f1c1da) SHA1(e17293be0f77d302c59c1095fe1ec65e45557627) )
+ ROM_LOAD( "pal20l8a.6r", 0x0400, 0x0144, CRC(0f011673) SHA1(383e6f6e78daec9c874d5b48378111ca60f5ed64) )
+ROM_END
+
/***********************************************************************/
/*
@@ -4982,9 +5028,9 @@ ROM_START( ikariram )
ROM_LOAD( "15.rom", 0x18000, 0x8000, CRC(65a61c99) SHA1(767694c919180de208b6211b593db68fc5a66ff1) )
ROM_LOAD( "13.rom", 0x20000, 0x8000, CRC(315383d7) SHA1(1c1c5931e3447c4dcbd54fc8ae383b03cb5fbf5b) )
ROM_LOAD( "16.rom", 0x28000, 0x8000, CRC(e9b03e07) SHA1(124e5328a965ea2af28c4d74934a82394a2ffd72) )
-
+
ROM_REGION( 0x30000, "bootleg_proms", 0 )
- ROM_LOAD( "82s191.bin", 0x00000, 0x800, CRC(072f8622) SHA1(43b0d48656263e88067cddea1d01188755a2023d) ) //prom from a bootleg pcb
+ ROM_LOAD( "82s191.bin", 0x00000, 0x800, CRC(072f8622) SHA1(43b0d48656263e88067cddea1d01188755a2023d) ) //prom from a bootleg pcb
ROM_END
@@ -6317,6 +6363,7 @@ GAME( 1985, tnk3j, tnk3, tnk3, tnk3, driver_device, 0, ROT
GAME( 1986, athena, 0, athena, athena, driver_device, 0, ROT0, "SNK", "Athena", 0 )
GAME( 1988, fitegolf, 0, fitegolf, fitegolf, driver_device, 0, ROT0, "SNK", "Fighting Golf (World?)", 0 )
GAME( 1988, fitegolfu,fitegolf, fitegolf, fitegolfu, driver_device,0, ROT0, "SNK", "Fighting Golf (US)", 0 )
+GAME( 1988, fitegolf2,fitegolf, fitegolf2,fitegolfu, driver_device,0, ROT0, "SNK", "Fighting Golf (US, Ver 2)", 0 )
GAME( 1988, countryc, 0, fitegolf, countryc, snk_state, countryc, ROT0, "SNK", "Country Club", 0 )
GAME( 1986, ikari, 0, ikari, ikari, driver_device, 0, ROT270, "SNK", "Ikari Warriors (US JAMMA)", 0 ) // distributed by Tradewest(?)
diff --git a/src/mame/drivers/spaceg.cpp b/src/mame/drivers/spaceg.cpp
index e7b81a0ac7b..785d22f2de3 100644
--- a/src/mame/drivers/spaceg.cpp
+++ b/src/mame/drivers/spaceg.cpp
@@ -1,4 +1,4 @@
-// license:???
+// license:GPL-2.0+
// copyright-holders:Jarek Burczynski, Tomasz Slanina
/**************************************************************************************
diff --git a/src/mame/drivers/spc1500.cpp b/src/mame/drivers/spc1500.cpp
index 2017c27f3e7..11b9c4a48e4 100644
--- a/src/mame/drivers/spc1500.cpp
+++ b/src/mame/drivers/spc1500.cpp
@@ -7,19 +7,19 @@ Samsung SPC-1500 driver by Miso Kim
2015-12-16 preliminary driver initialized
2015-12-18 cassette tape supported
2015-12-26 80/40 column mode supported
- 2015-12-28 double access mode supported for I/O
+ 2015-12-28 double access mode supported for I/O
2016-01-02 Korean character input method and display enabled
- 2016-01-03 user defined char (PCG, Programmable Character Generator) support
- 2016-01-05 detection of color palette initialization
+ 2016-01-03 user defined char (PCG, Programmable Character Generator) support
+ 2016-01-05 detection of color palette initialization
2016-01-06 80x16 mode graphic mode support
2016-01-10 double character support
2016-01-12 PCG adressing improved
2016-01-13 Cassette tape motor improved
-
+
TODO:
- Verify PCG ram read for Korean character (english character is fine)
- Support floppy disk drive with SD-1500A controller card
-
+
****************************************************************************/
/*
@@ -32,7 +32,7 @@ TODO:
* Market price 365,000 won ($430) on 04-01-1987
Hardware Specification
-
+
1) SPC-1500
RAM 122KB
- Main Memory: 64KB
@@ -59,19 +59,19 @@ TODO:
Two external power connector for FDD connection
- DIP switch settings for the screen
- Volume control
- 
+
2) SPC-1500A
July 1987 Release
RF modulator only remove the product from an existing model
- 
+
3) SPC-1500V
This product can not confirm the release date because of PCB level modification.
It equiped SPC-1500V VLSI chip embedded products and removed a lot of TTLs and the memory expansion card.
- IOCS ROM Version: 1.6
- Two internal 50-pin expension slots
- 
+
Firmware
- 
+
IOCS ROM
The various versions with 32KB of capacity existed to date has confirmed the final version number 1.8
- Version 1.3:
@@ -79,34 +79,34 @@ TODO:
- Version 1.5:
- Version 1.6:
- Version 1.8: supports a variety of peripherals such as external hard disk, FM-Sound, RS-232C from Static soft (C)
-    various memu appears on the initial screen.
- 
+ various memu appears on the initial screen.
+
BASIC ROM
Capacity and the final version number of the currently identified 32KB 1.3
- 
+
English ROM
The final version of the verification of the capacity 8KB SS150-1222
The character set of a 8x8 size, and are stored with the size 8x16 8x16 is a part of the size of the font data are written differently and 8x8.
- 
+
Hangul ROM
8KB each is divided by a consonant and consonant and neutral.
- Inital (Choseong) SS151-1223: 8 types of intial character (actual 6 types)
- Middle (Jungseong) SS152-1224: 2 types of middle character
- Final (Jongseong) SS153-1225: 2 types of final character
-  
+
Periperials - Monitor
- , high-resolution monitor SM, color monitor model was to distinguish it from CD.
- 
+
1) MD-1255H (Low resolution monitors MD)
- 12 inches Composite 15.734KHz / 60Hz
- N displayed after the model name in the model is non - CRT scanning products
- Stand adopted: if you put the rest on the bottom that can be placed slightly tilted back.
- 
+
2) MD-9052H (Low resolution monitors MD)
- 9 inches Composite 15.734KHz / 60Hz
- - N from model name means 'anti-glare'
+ - N from model name means 'anti-glare'
- All parts except for the appearance and size is the same as the CRT 1255H.
- 
+
3) MD-2563 (color monitor SM)
4) SM-1439A (high-resolution monitor SM)
5) SM-1422 (high-resolution monitor SM)
@@ -115,38 +115,38 @@ TODO:
- High-resolution monochrome monitor
7) SM-1231A (high-resolution monitor SM)
- The other part is other than the appearance of the stand is attached to the same as the model SM-1231
- 
- 8) CD-1451D (color monitor SM)
+
+ 8) CD-1451D (color monitor SM)
- Composite color monitors
9) CD-1462X (color monitor SM)
10)CD-1464W (color monitor SM)
- 11)CW-4644
- 
+ 11)CW-4644
+
FDD (floppy disk drive)
- 
+
1) SD-1500A
- 5.25 "floppy drive for 2D composed of external disk drives diskettes
-  2) SD-1500B
+ 2) SD-1500B
- Dual external disk drives
- The two models are idential except the number of FDD. They need the expension controller card named by SFC-1500.
- IBM PC XT compatible FDD can be quipped. SFD-5x0 model is a genuine FDD from Samsung Electronics.
HDD (Hard Disk Drive)
- 
+
1) STH-20
- External hard disk drive set having a capacity of 20MB SCSI controller and the way
- The controller had not solved alone but the controller can be used to mount another hard disk products.
- Release price: 450,000 won ($530).
- 
+
Joysticks
- - Joystick was limited to 1 as possible (The PCB was designed by supporting two joysticks.
- 
+ - Joystick was limited to 1 as possible (The PCB was designed by supporting two joysticks.
+
1) SJ-1500
- Release price: 8,000 won ($9.4)
- SPC-1000A, MSX-compatible
- 
+
Printer
- 
+
1) SP-510S
- Bitmap image output method Hangul support
- Recommanded 80 columns dot-matrix printer
@@ -157,68 +157,68 @@ TODO:
5) SP-570B
Expansion Cards
- 
+
1) SFC-1500
- External FDD capacity of the floppy disk controller 5.25 inches / 320KB can connect up to two.
- 
+
2) Multi-controller
- Floppy disk controllers and hard disk controllers on the same PCB.
- 
+
3) ST-PAC
- FM sound card can play with up to 9 simultaneous sound or 5 simultaneous sound and 5 drum tones at the same time (FM-PAC compatible MSX)
- Line output and speaker output volume, tone adjustment built-in volume
- - it can be used as a synthesizer by connecting the ST-KEY2 product
+ - it can be used as a synthesizer by connecting the ST-KEY2 product
- Release price: 60,000won ($71)
- 
+
SPC-1500 VDP card
- - MSX game support
+ - MSX game support
- Release price: 35,000won ($41) with composite output only
- Release price: 60,000won ($71) with composite and RGB outputs simultaneously
- 
+
VDP UNIT I
- Composite video output with built-in card expansion card using the same video chip and MSX (static soft)
- Release price: 40,000won ($47).
- 
+
VDP UNIT II
- Expansion using the same video chip and video card with built-in card MSX with an RGB output (static soft)
- Release price: 55,000won ($59).
- 
+
LAN card (SAMNET-K)
- It uses serial communication instead of an Ethernet network card has a way with two serial ports.
- There are two kinds of host card without a DIP switch and the DIP switch is in the client card.
- It was mainly supplied to the teacher / student in an educational institution.
- 
+
Super Pack Card
- Expansion cards that enable the external expansion slot, etc.
- 
+
RS-232C card
- - At least 300bps, an external modem connected to the serial communication card that supports up to 19,200bps
- additionally available communications services using the PSTN network (general switched telephone network)
- and may also be connected to a 9-pin serial mouse.
- - Support for common serial communications functions,
+ - At least 300bps, an external modem connected to the serial communication card that supports up to 19,200bps
+ additionally available communications services using the PSTN network (general switched telephone network)
+ and may also be connected to a 9-pin serial mouse.
+ - Support for common serial communications functions,
and if IOCS ROM version 1.8 or higher to connect an external modem to the PC communication card is available.
- - When used in this communication program is super soft static net programs (XMODEM protocol, FS 220-6 compatible
+ - When used in this communication program is super soft static net programs (XMODEM protocol, FS 220-6 compatible
and supporting Samsung/Sambo combination korean character code, and an 8-bit code completion support Hangul) is used.
- Release price: 60,000won ($71).
- 
+
SS-1 ROM pack unit
- The VDP unit containing 1 cartridge slot card and ROM pack
- ROM pack was not compatible with original MSX ROM pack
- Release price: 49,900won ($58)
- 
+
Super Pack
- External ROM cartrige from Static Soft (C)
- 1 cartridge slot and 3 expansion slots (up to five expansion slots available)
- It is available to use the MSX ROM packs without any modification with the static soft VDP card
- Release price: 60,000won ($71)
- 
+
ST-KEY2
- For synthesizer external keyboard
- 
+
* Compatiblity with X1 series of Sharp Electronics
- Almost the key components is the same as X1 models of Sharp Electronics and except for the keyboard input.
- To port the X1 software to SPC-1500, Text attribute, keyboard input and DMA related code should be modified
-
+
*/
#include "emu.h"
@@ -247,14 +247,14 @@ public:
, m_pcgram(*this, "pcgram")
, m_io_kb(*this, "LINE")
, m_io_joy(*this, "JOY")
- , m_dipsw(*this, "DIP_SWITCH")
+ , m_dipsw(*this, "DIP_SWITCH")
, m_centronics(*this, "centronics")
, m_pio(*this, "ppi8255")
, m_sound(*this, "ay8910")
, m_palette(*this, "palette")
, m_timer(nullptr)
{}
- DECLARE_READ8_MEMBER(psga_r);
+ DECLARE_READ8_MEMBER(psga_r);
DECLARE_READ8_MEMBER(porta_r);
DECLARE_WRITE_LINE_MEMBER( centronics_busy_w ) { m_centronics_busy = state; }
DECLARE_READ8_MEMBER(mc6845_videoram_r);
@@ -281,7 +281,7 @@ public:
DECLARE_READ8_MEMBER(io_r);
DECLARE_PALETTE_INIT(spc);
DECLARE_VIDEO_START(spc);
- MC6845_UPDATE_ROW(crtc_update_row);
+ MC6845_UPDATE_ROW(crtc_update_row);
MC6845_RECONFIGURE(crtc_reconfig);
TIMER_DEVICE_CALLBACK_MEMBER(timer);
private:
@@ -315,8 +315,8 @@ private:
required_device<centronics_device> m_centronics;
required_device<i8255_device> m_pio;
required_device<ay8910_device> m_sound;
- required_device<palette_device> m_palette;
- UINT8 *m_font;
+ required_device<palette_device> m_palette;
+ UINT8 *m_font;
UINT8 m_priority;
emu_timer *m_timer;
void get_pcg_addr();
@@ -338,7 +338,7 @@ WRITE8_MEMBER( spc1500_state::romsel)
if (m_ipl)
membank("bank1")->set_entry(0);
else
- membank("bank1")->set_entry(1);
+ membank("bank1")->set_entry(1);
}
WRITE8_MEMBER( spc1500_state::ramsel)
@@ -349,7 +349,7 @@ WRITE8_MEMBER( spc1500_state::ramsel)
WRITE8_MEMBER( spc1500_state::portb_w)
{
-// m_ipl = data & (1 << 1);
+// m_ipl = data & (1 << 1);
}
WRITE8_MEMBER( spc1500_state::psgb_w)
@@ -381,12 +381,12 @@ WRITE8_MEMBER( spc1500_state::portc_w)
READ8_MEMBER( spc1500_state::portb_r)
{
UINT8 data = 0;
- data |= ((m_cass->get_state() & CASSETTE_MASK_UISTATE) == CASSETTE_STOPPED || ((m_cass->get_state() & CASSETTE_MASK_MOTOR) == CASSETTE_MOTOR_DISABLED));
- data |= (m_dipsw->read() & 1) << 4;
- data |= (m_cass->input() > 0.0038)<<1;
- data |= m_vdg->vsync_r()<<7;
- data &= ~((m_centronics_busy==0)<<3);
- return data;
+ data |= ((m_cass->get_state() & CASSETTE_MASK_UISTATE) == CASSETTE_STOPPED || ((m_cass->get_state() & CASSETTE_MASK_MOTOR) == CASSETTE_MOTOR_DISABLED));
+ data |= (m_dipsw->read() & 1) << 4;
+ data |= (m_cass->input() > 0.0038)<<1;
+ data |= m_vdg->vsync_r()<<7;
+ data &= ~((m_centronics_busy==0)<<3);
+ return data;
}
WRITE8_MEMBER( spc1500_state::crtc_w)
@@ -444,7 +444,7 @@ void spc1500_state::get_pcg_addr()
m_pcg_offset[0] = 0;
m_pcg_offset[1] = 0;
m_pcg_offset[2] = 0;
- }
+ }
}
WRITE8_MEMBER( spc1500_state::pcg_w)
@@ -506,13 +506,12 @@ PALETTE_INIT_MEMBER(spc1500_state,spc)
VIDEO_START_MEMBER(spc1500_state, spc)
{
-
}
MC6845_RECONFIGURE(spc1500_state::crtc_reconfig)
{
-// printf("reconfig. w:%d, h:%d, %f (%d,%d,%d,%d)\n", width, height, (float)frame_period, visarea.left(), visarea.top(), visarea.right(), visarea.bottom());
-// printf("register. m_vert_disp:%d, m_horiz_disp:%d, m_max_ras_addr:%d, m_vert_char_total:%d\n", m_crtc_vreg[6], m_crtc_vreg[1], m_crtc_vreg[9], m_crtc_vreg[0x4]);
+// printf("reconfig. w:%d, h:%d, %f (%d,%d,%d,%d)\n", width, height, (float)frame_period, visarea.left(), visarea.top(), visarea.right(), visarea.bottom());
+// printf("register. m_vert_disp:%d, m_horiz_disp:%d, m_max_ras_addr:%d, m_vert_char_total:%d\n", m_crtc_vreg[6], m_crtc_vreg[1], m_crtc_vreg[9], m_crtc_vreg[0x4]);
}
MC6845_UPDATE_ROW(spc1500_state::crtc_update_row)
@@ -524,7 +523,7 @@ MC6845_UPDATE_ROW(spc1500_state::crtc_update_row)
int j;
int h1, h2, h3;
UINT32 *p = &bitmap.pix32(y);
-
+
unsigned char cho[] ={1,1,1,1,1,1,1,1,0,0,1,1,1,3,5,5,0,0,5,3,3,5,5,5,0,0,3,3,5,1};
unsigned char jong[]={0,0,0,1,1,1,1,1,0,0,1,1,1,2,2,2,0,0,2,2,2,2,2,2,0,0,2,2,1,1};
bool inv = false;
@@ -564,7 +563,7 @@ MC6845_UPDATE_ROW(spc1500_state::crtc_update_row)
hfnt = hfnt & ((*pf << 8) | (*(pf+16)));
pf = &m_font[0x6000+(h3 * 32) + (jong[h2]-1) * 16 * 2 * 32 + n];
hfnt = hfnt & ((*pf << 8) | (*(pf+16)));
- }
+ }
else
{
ascii = *(pv+0x1001);
@@ -639,15 +638,15 @@ WRITE8_MEMBER( spc1500_state::double_w)
if (offset < 0x1e00) { romsel(space, offset, data);} else
if (offset < 0x1f00) { ramsel(space, offset, data);} else
if (offset < 0x2000) {} else
- if (offset < 0x10000)
- {
- if (offset < 0x4000)
+ if (offset < 0x10000)
+ {
+ if (offset < 0x4000)
{
offset &= 0xf7ff;
m_p_videoram[offset-0x1800] = m_p_videoram[offset-0x2000] = data;
}
else
- m_p_videoram[offset-0x2000] = data;
+ m_p_videoram[offset-0x2000] = data;
};
}
}
@@ -655,7 +654,7 @@ WRITE8_MEMBER( spc1500_state::double_w)
READ8_MEMBER( spc1500_state::io_r)
{
m_double_mode = false;
- if (offset < 0x1000) {} else
+ if (offset < 0x1000) {} else
if (offset < 0x1400) {} else
if (offset < 0x1800) { return pcg_r(space, offset); } else
if (offset < 0x1900) { return crtc_r(space, offset); } else
@@ -663,7 +662,7 @@ READ8_MEMBER( spc1500_state::io_r)
if (offset < 0x1b00) { return m_pio->read(space, offset); } else
if (offset < 0x1c00) { return m_sound->data_r(space, offset); } else
if (offset < 0x2000) {} else
- if (offset < 0x10000){
+ if (offset < 0x10000){
if (offset < 0x4000)
offset &= 0xf7ff;
return m_p_videoram[offset - 0x2000]; }
@@ -680,13 +679,13 @@ ADDRESS_MAP_END
#if 0
static ADDRESS_MAP_START( spc1500_io , AS_IO, 8, spc1500_state )
ADDRESS_MAP_UNMAP_HIGH
-// AM_RANGE(0x0000, 0x03ff) AM_DEVREADWRITE("userio", user_device, userio_r, userio_w)
-// AM_RANGE(0x0400, 0x05ff) AM_DEVREADWRITE("lanio", lan_device, lanio_r, lanio_w)
-// AM_RANGE(0x0600, 0x07ff) AM_DEVREADWRITE("rs232c", rs232c_device, rs232c_r, rs232c_w)
-// AM_RANGE(0x0800, 0x09ff) AM_DEVREADWRITE("fdcx", fdcx_device, fdcx_r, fdcx_w)
-// AM_RANGE(0x0a00, 0x0bff) AM_DEVREADWRITE("userio", user_device, userio_r, userio_w)
-// AM_RANGE(0x0c00, 0x0dff) AM_DEVREADWRITE("fdc", fdc_device, fdc_r, fdc_w)
-// AM_RANGE(0x0e00, 0x0fff) AM_DEVREADWRITE("extram", extram_device, extram_r, extram_w)
+// AM_RANGE(0x0000, 0x03ff) AM_DEVREADWRITE("userio", user_device, userio_r, userio_w)
+// AM_RANGE(0x0400, 0x05ff) AM_DEVREADWRITE("lanio", lan_device, lanio_r, lanio_w)
+// AM_RANGE(0x0600, 0x07ff) AM_DEVREADWRITE("rs232c", rs232c_device, rs232c_r, rs232c_w)
+// AM_RANGE(0x0800, 0x09ff) AM_DEVREADWRITE("fdcx", fdcx_device, fdcx_r, fdcx_w)
+// AM_RANGE(0x0a00, 0x0bff) AM_DEVREADWRITE("userio", user_device, userio_r, userio_w)
+// AM_RANGE(0x0c00, 0x0dff) AM_DEVREADWRITE("fdc", fdc_device, fdc_r, fdc_w)
+// AM_RANGE(0x0e00, 0x0fff) AM_DEVREADWRITE("extram", extram_device, extram_r, extram_w)
AM_RANGE(0x1000, 0x10ff) AM_WRITE(paletb_w)
AM_RANGE(0x1100, 0x11ff) AM_WRITE(paletr_w)
AM_RANGE(0x1200, 0x12ff) AM_WRITE(paletg_w)
@@ -696,48 +695,48 @@ static ADDRESS_MAP_START( spc1500_io , AS_IO, 8, spc1500_state )
AM_RANGE(0x1600, 0x16ff) AM_READWRITE(pcgr_r, pcgr_w)
AM_RANGE(0x1700, 0x17ff) AM_WRITE(pcgg_w)
AM_RANGE(0x1800, 0x18ff) AM_READWRITE(crtc_r, crtc_w)
-// AM_RANGE(0x1800, 0x1800) AM_DEVWRITE("mc6845", mc6845_device, address_w)
-// AM_RANGE(0x1801, 0x1801) AM_DEVREADWRITE("mc6845", mc6845_device, register_r, register_w)
-// AM_RANGE(0x1800, 0x1801) AM_READWRITE(crtc_r, crtc_w)
+// AM_RANGE(0x1800, 0x1800) AM_DEVWRITE("mc6845", mc6845_device, address_w)
+// AM_RANGE(0x1801, 0x1801) AM_DEVREADWRITE("mc6845", mc6845_device, register_r, register_w)
+// AM_RANGE(0x1800, 0x1801) AM_READWRITE(crtc_r, crtc_w)
AM_RANGE(0x1900, 0x1909) AM_READ(keyboard_r)
- AM_RANGE(0x1a00, 0x1a03) AM_DEVREADWRITE("ppi8255", i8255_device, read, write)
+ AM_RANGE(0x1a00, 0x1a03) AM_DEVREADWRITE("ppi8255", i8255_device, read, write)
AM_RANGE(0x1b00, 0x1bff) AM_DEVREADWRITE("ay8910", ay8910_device, data_r, data_w)
AM_RANGE(0x1c00, 0x1cff) AM_DEVWRITE("ay8910", ay8910_device, address_w)
AM_RANGE(0x1d00, 0x1d00) AM_WRITE(romsel)
AM_RANGE(0x1e00, 0x1e00) AM_WRITE(ramsel)
AM_RANGE(0x2000, 0xffff) AM_RAM AM_SHARE("videoram")
ADDRESS_MAP_END
-#endif
+#endif
/* Input ports */
static INPUT_PORTS_START( spc1500 )
- PORT_START("DIP_SWITCH")
- PORT_DIPNAME( 0x01, 0x00, "40/80" )
- PORT_DIPSETTING( 0x00, "40COL" )
- PORT_DIPSETTING( 0x01, "80COL" )
- PORT_DIPNAME( 0x02, 0x02, "Language" )
- PORT_DIPSETTING( 0x02, "Korean" )
- PORT_DIPSETTING( 0x00, "English" )
+ PORT_START("DIP_SWITCH")
+ PORT_DIPNAME( 0x01, 0x00, "40/80" )
+ PORT_DIPSETTING( 0x00, "40COL" )
+ PORT_DIPSETTING( 0x01, "80COL" )
+ PORT_DIPNAME( 0x02, 0x02, "Language" )
+ PORT_DIPSETTING( 0x02, "Korean" )
+ PORT_DIPSETTING( 0x00, "English" )
PORT_DIPNAME( 0x04, 0x00, "V-Res" )
- PORT_DIPSETTING( 0x04, "400" )
+ PORT_DIPSETTING( 0x04, "400" )
PORT_DIPSETTING( 0x00, "200" )
PORT_DIPNAME( 0x08, 0x08, "X1" )
- PORT_DIPSETTING( 0x08, "Compatible Mode" )
+ PORT_DIPSETTING( 0x08, "Compatible Mode" )
PORT_DIPSETTING( 0x00, "Non Compatible" )
-
+
PORT_START("LINE.0")
- PORT_BIT(0x01, IP_ACTIVE_HIGH, IPT_UNUSED)
+ PORT_BIT(0x01, IP_ACTIVE_HIGH, IPT_UNUSED)
PORT_BIT(0x02, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_NAME("Shift") PORT_CODE(KEYCODE_RSHIFT) PORT_CODE(KEYCODE_LSHIFT) PORT_CHAR(UCHAR_SHIFT_1)
PORT_BIT(0x04, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_NAME("Ctrl") PORT_CODE(KEYCODE_RCONTROL) PORT_CODE(KEYCODE_LCONTROL) PORT_CHAR(UCHAR_SHIFT_2)
- PORT_BIT(0x08, IP_ACTIVE_HIGH, IPT_UNUSED)
+ PORT_BIT(0x08, IP_ACTIVE_HIGH, IPT_UNUSED)
PORT_BIT(0x10, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_NAME("Break") PORT_CODE(KEYCODE_PAUSE)
PORT_BIT(0x20, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_NAME("\\ |") PORT_CODE(KEYCODE_BACKSLASH) PORT_CHAR('\\') PORT_CHAR('|') PORT_CHAR(0x1c)
PORT_BIT(0x40, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_NAME("Graph") PORT_CODE(KEYCODE_LALT)
PORT_BIT(0x80, IP_ACTIVE_HIGH, IPT_UNUSED)
PORT_START("LINE.1")
- PORT_BIT(0x01, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_NAME("= +") PORT_CODE(KEYCODE_EQUALS) PORT_CHAR('=') PORT_CHAR('+')
+ PORT_BIT(0x01, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_NAME("= +") PORT_CODE(KEYCODE_EQUALS) PORT_CHAR('=') PORT_CHAR('+')
PORT_BIT(0x02, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_NAME("Right") PORT_CODE(KEYCODE_RIGHT)
PORT_BIT(0x04, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_NAME("Space") PORT_CODE(KEYCODE_SPACE) PORT_CHAR(' ')
PORT_BIT(0x08, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_NAME("Return") PORT_CODE(KEYCODE_ENTER) PORT_CHAR(13)
@@ -768,7 +767,7 @@ static INPUT_PORTS_START( spc1500 )
PORT_START("LINE.4")
PORT_BIT(0x01, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_NAME("Del Ins") PORT_CODE(KEYCODE_DEL_PAD) PORT_CHAR(UCHAR_MAMEKEY(DEL_PAD)) PORT_CHAR(8)
- PORT_BIT(0x02, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_NAME("Down") PORT_CODE(KEYCODE_DOWN)
+ PORT_BIT(0x02, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_NAME("Down") PORT_CODE(KEYCODE_DOWN)
PORT_BIT(0x04, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_NAME("Tab") PORT_CODE(KEYCODE_TAB) PORT_CHAR('\t')
PORT_BIT(0x08, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_NAME("Home") PORT_CODE(KEYCODE_HOME)
PORT_BIT(0x10, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_NAME("N") PORT_CODE(KEYCODE_N) PORT_CHAR('n') PORT_CHAR('N') PORT_CHAR(0x0e)
@@ -777,9 +776,9 @@ static INPUT_PORTS_START( spc1500 )
PORT_BIT(0x80, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_NAME("4 $") PORT_CODE(KEYCODE_4) PORT_CHAR('4') PORT_CHAR('$')
PORT_START("LINE.5")
- PORT_BIT(0x01, IP_ACTIVE_HIGH, IPT_UNUSED)
+ PORT_BIT(0x01, IP_ACTIVE_HIGH, IPT_UNUSED)
PORT_BIT(0x02, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_NAME("F1") PORT_CODE(KEYCODE_F1)
- PORT_BIT(0x04, IP_ACTIVE_HIGH, IPT_UNUSED)
+ PORT_BIT(0x04, IP_ACTIVE_HIGH, IPT_UNUSED)
PORT_BIT(0x08, IP_ACTIVE_HIGH, IPT_UNUSED)
PORT_BIT(0x10, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_NAME("M") PORT_CODE(KEYCODE_M) PORT_CHAR('m') PORT_CHAR('M') PORT_CHAR(0x0d)
PORT_BIT(0x20, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_NAME("G") PORT_CODE(KEYCODE_G) PORT_CHAR('g') PORT_CHAR('G') PORT_CHAR(0x07)
@@ -787,7 +786,7 @@ static INPUT_PORTS_START( spc1500 )
PORT_BIT(0x80, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_NAME("5 %") PORT_CODE(KEYCODE_5) PORT_CHAR('5') PORT_CHAR('%')
PORT_START("LINE.6")
- PORT_BIT(0x01, IP_ACTIVE_HIGH, IPT_UNUSED)
+ PORT_BIT(0x01, IP_ACTIVE_HIGH, IPT_UNUSED)
PORT_BIT(0x02, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_NAME("F2") PORT_CODE(KEYCODE_F2)
PORT_BIT(0x04, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_NAME("[ {") PORT_CODE(KEYCODE_OPENBRACE) PORT_CHAR('[') PORT_CHAR('{') PORT_CHAR(0x1b)
PORT_BIT(0x08, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_NAME("X") PORT_CODE(KEYCODE_X) PORT_CHAR('x') PORT_CHAR('X') PORT_CHAR(0x18)
@@ -797,9 +796,9 @@ static INPUT_PORTS_START( spc1500 )
PORT_BIT(0x80, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_NAME("6 ^") PORT_CODE(KEYCODE_6) PORT_CHAR('6') PORT_CHAR('^')
PORT_START("LINE.7")
- PORT_BIT(0x01, IP_ACTIVE_HIGH, IPT_UNUSED)
+ PORT_BIT(0x01, IP_ACTIVE_HIGH, IPT_UNUSED)
PORT_BIT(0x02, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_NAME("F3") PORT_CODE(KEYCODE_F3)
- PORT_BIT(0x04, IP_ACTIVE_HIGH, IPT_UNUSED)
+ PORT_BIT(0x04, IP_ACTIVE_HIGH, IPT_UNUSED)
PORT_BIT(0x08, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_NAME("P") PORT_CODE(KEYCODE_P) PORT_CHAR('p') PORT_CHAR('P') PORT_CHAR(0x10)
PORT_BIT(0x10, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_NAME(". >") PORT_CODE(KEYCODE_STOP) PORT_CHAR('.') PORT_CHAR('>')
PORT_BIT(0x20, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_NAME("J") PORT_CODE(KEYCODE_J) PORT_CHAR('j') PORT_CHAR('J') PORT_CHAR(0x0a)
@@ -807,9 +806,9 @@ static INPUT_PORTS_START( spc1500 )
PORT_BIT(0x80, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_NAME("7 &") PORT_CODE(KEYCODE_7) PORT_CHAR('7') PORT_CHAR('&')
PORT_START("LINE.8")
- PORT_BIT(0x01, IP_ACTIVE_HIGH, IPT_UNUSED)
+ PORT_BIT(0x01, IP_ACTIVE_HIGH, IPT_UNUSED)
PORT_BIT(0x02, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_NAME("F4") PORT_CODE(KEYCODE_F4)
- PORT_BIT(0x04, IP_ACTIVE_HIGH, IPT_UNUSED)
+ PORT_BIT(0x04, IP_ACTIVE_HIGH, IPT_UNUSED)
PORT_BIT(0x08, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_NAME("\' \"") PORT_CODE(KEYCODE_QUOTE) PORT_CHAR('\'') PORT_CHAR('\"')
PORT_BIT(0x10, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_NAME("/ ?") PORT_CODE(KEYCODE_SLASH) PORT_CHAR('/') PORT_CHAR('?')
PORT_BIT(0x20, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_NAME("K") PORT_CODE(KEYCODE_K) PORT_CHAR('k') PORT_CHAR('K') PORT_CHAR(0x0b)
@@ -817,7 +816,7 @@ static INPUT_PORTS_START( spc1500 )
PORT_BIT(0x80, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_NAME("8 *") PORT_CODE(KEYCODE_8) PORT_CHAR('8') PORT_CHAR('*')
PORT_START("LINE.9")
- PORT_BIT(0x01, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_NAME("Hangul") PORT_CODE(KEYCODE_RALT)
+ PORT_BIT(0x01, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_NAME("Hangul") PORT_CODE(KEYCODE_RALT)
PORT_BIT(0x02, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_NAME("F5") PORT_CODE(KEYCODE_F5)
PORT_BIT(0x04, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_NAME("- _") PORT_CODE(KEYCODE_MINUS) PORT_CHAR('-') PORT_CHAR('_')
PORT_BIT(0x08, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_NAME("0 )") PORT_CODE(KEYCODE_0) PORT_CHAR('0') PORT_CHAR(')')
@@ -834,12 +833,12 @@ static INPUT_PORTS_START( spc1500 )
PORT_BIT(0x10, IP_ACTIVE_HIGH,IPT_UNUSED) // DIP SW2 for Korean/English
PORT_BIT(0x20, IP_ACTIVE_LOW, IPT_BUTTON1 ) PORT_PLAYER(1)
PORT_BIT(0x40, IP_ACTIVE_LOW, IPT_BUTTON2 ) PORT_PLAYER(1)
- PORT_BIT(0x80, IP_ACTIVE_HIGH,IPT_UNUSED) // DIP SW3 for 200/400 line
+ PORT_BIT(0x80, IP_ACTIVE_HIGH,IPT_UNUSED) // DIP SW3 for 200/400 line
INPUT_PORTS_END
static ADDRESS_MAP_START(spc1500_mem, AS_PROGRAM, 8, spc1500_state )
ADDRESS_MAP_UNMAP_HIGH
- AM_RANGE(0x0000, 0x7fff) AM_READ_BANK("bank1") AM_WRITE_BANK("bank2")
+ AM_RANGE(0x0000, 0x7fff) AM_READ_BANK("bank1") AM_WRITE_BANK("bank2")
AM_RANGE(0x8000, 0xffff) AM_READWRITE_BANK("bank4")
ADDRESS_MAP_END
@@ -848,7 +847,7 @@ void spc1500_state::machine_start()
UINT8 *mem_basic = memregion("basic")->base();
UINT8 *mem_ipl = memregion("ipl")->base();
m_p_ram = m_ram->pointer();
- m_font = memregion("font1")->base();
+ m_font = memregion("font1")->base();
// configure and intialize banks 1 (read banks)
membank("bank1")->configure_entry(0, mem_ipl);
membank("bank1")->configure_entry(1, mem_basic);
@@ -859,7 +858,7 @@ void spc1500_state::machine_start()
set_address_space(AS_IO, m_maincpu->space(AS_IO));
// intialize banks 2, 3, 4 (write banks)
membank("bank2")->set_base(m_p_ram);
- membank("bank4")->set_base(m_p_ram + 0x8000);
+ membank("bank4")->set_base(m_p_ram + 0x8000);
m_timer = timer_alloc(0);
m_timer->adjust(attotime::zero);
}
@@ -867,7 +866,7 @@ void spc1500_state::machine_start()
void spc1500_state::machine_reset()
{
m_motor = false;
- m_time = machine().scheduler().time();
+ m_time = machine().scheduler().time();
m_double_mode = false;
memset(&m_paltbl[0], 1, 8);
m_char_count = 0;
@@ -904,30 +903,30 @@ static MACHINE_CONFIG_START( spc1500, spc1500_state )
MCFG_CPU_PERIODIC_INT_DRIVER(spc1500_state, irq0_line_hold, 60)
/* 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, 400)
MCFG_SCREEN_VISIBLE_AREA(0,640-1,0,400-1)
MCFG_SCREEN_UPDATE_DEVICE("mc6845", mc6845_device, screen_update )
- MCFG_PALETTE_ADD("palette", 8)
+ MCFG_PALETTE_ADD("palette", 8)
MCFG_PALETTE_INIT_OWNER(spc1500_state, spc)
MCFG_MC6845_ADD("mc6845", MC6845, "screen", (VDP_CLOCK/48)) //unknown divider
MCFG_MC6845_SHOW_BORDER_AREA(false)
MCFG_MC6845_CHAR_WIDTH(8)
MCFG_MC6845_UPDATE_ROW_CB(spc1500_state, crtc_update_row)
MCFG_MC6845_RECONFIGURE_CB(spc1500_state, crtc_reconfig)
- MCFG_VIDEO_START_OVERRIDE(spc1500_state, spc)
-
+ MCFG_VIDEO_START_OVERRIDE(spc1500_state, spc)
+
MCFG_DEVICE_ADD("ppi8255", I8255, 0)
MCFG_I8255_OUT_PORTA_CB(DEVWRITE8("cent_data_out", output_latch_device, write))
MCFG_I8255_IN_PORTB_CB(READ8(spc1500_state, portb_r))
MCFG_I8255_OUT_PORTB_CB(WRITE8(spc1500_state, portb_w))
MCFG_I8255_OUT_PORTC_CB(WRITE8(spc1500_state, portc_w))
-
+
MCFG_TIMER_DRIVER_ADD_PERIODIC("1hz", spc1500_state, timer, attotime::from_hz(1))
-
+
/* sound hardware */
MCFG_SPEAKER_STANDARD_MONO("mono")
MCFG_SOUND_ADD("ay8910", AY8910, XTAL_4MHz / 2)
@@ -959,12 +958,12 @@ ROM_START( spc1500 )
ROM_LOAD("ipl.rom", 0x0000, 0x8000, CRC(80d0704a) SHA1(01e4cbe8baad72effbbe01addd477c5b0ec85c16))
ROM_REGION(0x8000, "basic", ROMREGION_ERASEFF)
ROM_LOAD("basic.rom", 0x0000, 0x8000, CRC(f48328e1) SHA1(fb874ea7d20078726682f2d0e03ea0d1f8bdbb07))
- ROM_REGION(0x8000, "font1", 0)
+ ROM_REGION(0x8000, "font1", 0)
ROM_LOAD( "ss150fnt.bin", 0x0000, 0x2000, CRC(affdc5c0) SHA1(2a93582fcccf9e40b99ae238ce585d189afe9a5a) )
ROM_LOAD( "ss151fnt.bin", 0x2000, 0x2000, CRC(83c2eb8d) SHA1(2adf7816206dc74b9f0d32cb3b56cbab31fa6044) )
ROM_LOAD( "ss152fnt.bin", 0x4000, 0x2000, CRC(f4a5a590) SHA1(c9a02756107083bf602ae7c90cfe29b8b964e0df) )
ROM_LOAD( "ss153fnt.bin", 0x6000, 0x2000, CRC(8677d5fa) SHA1(34bfacc855c3846744cd586c150c72e5cbe948b0) )
-
+
ROM_END
diff --git a/src/mame/drivers/spoker.cpp b/src/mame/drivers/spoker.cpp
index 6c7b74529e9..1c652c9717e 100644
--- a/src/mame/drivers/spoker.cpp
+++ b/src/mame/drivers/spoker.cpp
@@ -348,7 +348,7 @@ static INPUT_PORTS_START( spoker )
PORT_START("SERVICE")
PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_UNKNOWN )
PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_SERVICE1 ) PORT_NAME("Memory Clear") // stats, memory
- PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_SPECIAL ) PORT_CUSTOM_MEMBER(DEVICE_SELF,spoker_state,hopper_r, (void *)nullptr ) PORT_NAME("HPSW") // hopper sensor
+ PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_SPECIAL ) PORT_CUSTOM_MEMBER(DEVICE_SELF,spoker_state,hopper_r, NULL) PORT_NAME("HPSW") // hopper sensor
PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_UNKNOWN )
PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_GAMBLE_PAYOUT )
PORT_SERVICE_NO_TOGGLE( 0x20, IP_ACTIVE_LOW )
@@ -417,7 +417,7 @@ static INPUT_PORTS_START( 3super8 )
PORT_START("IN0")
PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_UNKNOWN )
- PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_SPECIAL ) PORT_CUSTOM_MEMBER(DEVICE_SELF,spoker_state,hopper_r, (void *)nullptr ) PORT_NAME("HPSW") // hopper sensor
+ PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_SPECIAL ) PORT_CUSTOM_MEMBER(DEVICE_SELF,spoker_state,hopper_r, NULL) PORT_NAME("HPSW") // hopper sensor
PORT_SERVICE( 0x04, IP_ACTIVE_LOW )
PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_GAMBLE_BOOK ) PORT_NAME("Statistics")
PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_COIN1 )
diff --git a/src/mame/drivers/sprint4.cpp b/src/mame/drivers/sprint4.cpp
index 43dbcb80572..083fe721afa 100644
--- a/src/mame/drivers/sprint4.cpp
+++ b/src/mame/drivers/sprint4.cpp
@@ -276,7 +276,7 @@ static INPUT_PORTS_START( sprint4 )
PORT_START("COLLISION")
PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_BUTTON1 ) PORT_NAME("Player 1 Gas") PORT_PLAYER(1)
- PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_SPECIAL ) PORT_CUSTOM_MEMBER(DEVICE_SELF, sprint4_state, get_collision, (void *)nullptr )
+ PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_SPECIAL ) PORT_CUSTOM_MEMBER(DEVICE_SELF, sprint4_state, get_collision, (void *)0 )
PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_BUTTON1 ) PORT_NAME("Player 2 Gas") PORT_PLAYER(2)
PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_SPECIAL ) PORT_CUSTOM_MEMBER(DEVICE_SELF, sprint4_state, get_collision, (void *)1 )
PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_BUTTON1 ) PORT_NAME("Player 3 Gas") PORT_PLAYER(3)
@@ -313,8 +313,8 @@ static INPUT_PORTS_START( sprint4 )
PORT_DIPSETTING( 0xe0, "150 seconds" )
PORT_START("ANALOG")
- PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_SPECIAL ) PORT_CUSTOM_MEMBER(DEVICE_SELF, sprint4_state, get_wheel, (void *)nullptr)
- PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_SPECIAL ) PORT_CUSTOM_MEMBER(DEVICE_SELF, sprint4_state, get_lever, (void *)nullptr)
+ PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_SPECIAL ) PORT_CUSTOM_MEMBER(DEVICE_SELF, sprint4_state, get_wheel, (void *)0)
+ PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_SPECIAL ) PORT_CUSTOM_MEMBER(DEVICE_SELF, sprint4_state, get_lever, (void *)0)
PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_SPECIAL ) PORT_CUSTOM_MEMBER(DEVICE_SELF, sprint4_state, get_wheel, (void *)1)
PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_SPECIAL ) PORT_CUSTOM_MEMBER(DEVICE_SELF, sprint4_state, get_lever, (void *)1)
PORT_BIT( 0x10, IP_ACTIVE_HIGH, IPT_SPECIAL ) PORT_CUSTOM_MEMBER(DEVICE_SELF, sprint4_state, get_wheel, (void *)2)
diff --git a/src/mame/drivers/ssv.cpp b/src/mame/drivers/ssv.cpp
index c8c2ae7bc09..a698d6bcc9d 100644
--- a/src/mame/drivers/ssv.cpp
+++ b/src/mame/drivers/ssv.cpp
@@ -4675,7 +4675,7 @@ ROM_START( gdfs )
ROM_LOAD( "vg004-10.u45", 0x200000, 0x200000, CRC(b3c6b1cb) SHA1(c601213e35d8dfd1244921da5c093f82145706d2) )
ROM_LOAD( "vg004-11.u48", 0x400000, 0x200000, CRC(1491def1) SHA1(344043302c81b4118cac4f692375b8af7ea68570) )
- ROM_REGION( 0x1000000, "st0020", /*0*/0 ) // Zooming Sprites, read by a blitter
+ ROM_REGION( 0x1000000, "st0020_spr", /*0*/0 ) // Zooming Sprites, read by a blitter
ROM_LOAD( "vg004-01.u33", 0x0000000, 0x200000, CRC(aa9a81c2) SHA1(a7d005f9be199e317aa4c6aed8a2ab322fe82119) )
ROM_LOAD( "vg004-02.u34", 0x0200000, 0x200000, CRC(fa40ecb4) SHA1(0513f3b6879dc7d207646d949d6ddb7251f77bcc) )
ROM_LOAD( "vg004-03.u35", 0x0400000, 0x200000, CRC(90004023) SHA1(041edb77b34e6677ac5b85ce542d87a9bb1baf31) )
diff --git a/src/mame/drivers/st_mp200.cpp b/src/mame/drivers/st_mp200.cpp
index 59c9d41d77f..ff7d88e7c1c 100644
--- a/src/mame/drivers/st_mp200.cpp
+++ b/src/mame/drivers/st_mp200.cpp
@@ -73,11 +73,11 @@ private:
bool m_u11_cb2;
bool m_timer_x;
bool m_u11_timer;
- bool m_su; // speech unit fitted yes/no
bool m_7d; // 7-digit display yes/no
UINT8 m_digit;
UINT8 m_counter;
UINT8 m_segment[5];
+ virtual void machine_start() override;
virtual void machine_reset() override;
required_device<m6800_cpu_device> m_maincpu;
optional_device<s14001a_device> m_s14001a;
@@ -320,9 +320,9 @@ WRITE_LINE_MEMBER( st_mp200_state::u10_ca2_w )
WRITE_LINE_MEMBER( st_mp200_state::u10_cb2_w )
{
- if (m_su)
+ if (m_s14001a)
{
- if (m_s14001a->bsy_r())
+ if (m_s14001a->busy_r())
m_pia_u11->cb1_w(0);
else
m_pia_u11->cb1_w(state);
@@ -333,18 +333,19 @@ WRITE_LINE_MEMBER( st_mp200_state::u11_ca2_w )
{
output().set_value("led0", !state);
- if ((m_su) & (state))
+ if (m_s14001a && state)
{
if BIT(m_u10a, 7)
{
- m_s14001a->reg_w(m_u10a & 0x3f);
- m_s14001a->rst_w(1);
- m_s14001a->rst_w(0);
+ m_s14001a->data_w(generic_space(), 0, m_u10a & 0x3f);
+ m_s14001a->start_w(1);
+ m_s14001a->start_w(0);
}
else
if BIT(m_u10a, 6)
{
- m_s14001a->set_volume(((m_u10a & 0x38) >> 3) + 1);
+ m_s14001a->force_update();
+ m_s14001a->set_output_gain(0, ((m_u10a >> 3 & 0xf) + 1) / 16.0);
UINT8 clock_divisor = 16 - (m_u10a & 0x07);
@@ -534,6 +535,10 @@ WRITE8_MEMBER( st_mp200_state::u11_b_w )
}
}
+void st_mp200_state::machine_start()
+{
+}
+
void st_mp200_state::machine_reset()
{
m_u10a = 0;
@@ -546,19 +551,16 @@ void st_mp200_state::machine_reset()
DRIVER_INIT_MEMBER( st_mp200_state, st_mp200 )
{
m_7d = 1;
- m_su = 0;
}
DRIVER_INIT_MEMBER( st_mp200_state, st_mp201 )
{
m_7d = 1;
- m_su = 1;
}
DRIVER_INIT_MEMBER( st_mp200_state, st_mp202 )
{
m_7d = 0;
- m_su = 0;
}
// zero-cross detection
@@ -614,7 +616,7 @@ MACHINE_CONFIG_END
static MACHINE_CONFIG_DERIVED( st_mp201, st_mp200 )
MCFG_SPEAKER_STANDARD_MONO("mono")
MCFG_SOUND_ADD("speech", S14001A, S14001_CLOCK)
- MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.50)
+ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.00)
MACHINE_CONFIG_END
diff --git a/src/mame/drivers/starwars.cpp b/src/mame/drivers/starwars.cpp
index d0c9027ff1c..986d1c6d671 100644
--- a/src/mame/drivers/starwars.cpp
+++ b/src/mame/drivers/starwars.cpp
@@ -1,10 +1,10 @@
-// license:???
+// license:BSD-3-Clause
// copyright-holders:Steve Baines, Frank Palazzolo
/***************************************************************************
Atari Star Wars hardware
- driver by Steve Baines (sulaco@ntlworld.com) and Frank Palazzolo
+ driver by Steve Baines and Frank Palazzolo
This file is Copyright Steve Baines.
Modified by Frank Palazzolo for sound support
@@ -333,8 +333,6 @@ static MACHINE_CONFIG_START( starwars, starwars_state )
MCFG_CPU_PERIODIC_INT_DRIVER(starwars_state, irq0_line_assert, CLOCK_3KHZ / 12)
MCFG_WATCHDOG_TIME_INIT(attotime::from_hz(CLOCK_3KHZ / 128))
- MCFG_SLAPSTIC_ADD("slapstic")
-
MCFG_CPU_ADD("audiocpu", M6809, MASTER_CLOCK / 8)
MCFG_CPU_PROGRAM_MAP(sound_map)
@@ -378,6 +376,11 @@ static MACHINE_CONFIG_START( starwars, starwars_state )
MACHINE_CONFIG_END
+static MACHINE_CONFIG_DERIVED( esb, starwars )
+ MCFG_SLAPSTIC_ADD("slapstic", 101)
+MACHINE_CONFIG_END
+
+
/*************************************
*
@@ -558,7 +561,7 @@ DRIVER_INIT_MEMBER(starwars_state,esb)
UINT8 *rom = memregion("maincpu")->base();
/* init the slapstic */
- m_slapstic_device->slapstic_init(machine(), 101);
+ m_slapstic_device->slapstic_init();
m_slapstic_source = &rom[0x14000];
m_slapstic_base = &rom[0x08000];
@@ -603,4 +606,4 @@ GAME( 1983, starwarso,starwars, starwars, starwars, starwars_state, starwars, RO
GAME( 1983, tomcatsw, tomcat, starwars, starwars, starwars_state, starwars, ROT0, "Atari", "TomCat (Star Wars hardware, prototype)", MACHINE_NO_SOUND )
-GAME( 1985, esb, 0, starwars, esb, starwars_state, esb, ROT0, "Atari Games", "The Empire Strikes Back", 0 )
+GAME( 1985, esb, 0, esb, esb, starwars_state, esb, ROT0, "Atari Games", "The Empire Strikes Back", 0 )
diff --git a/src/mame/drivers/studio2.cpp b/src/mame/drivers/studio2.cpp
index 99b8cf5738b..74f681d5134 100644
--- a/src/mame/drivers/studio2.cpp
+++ b/src/mame/drivers/studio2.cpp
@@ -242,7 +242,6 @@ public:
/* keyboard state */
UINT8 m_keylatch;
- DECLARE_DRIVER_INIT(studio2);
};
class visicom_state : public studio2_state
@@ -640,7 +639,7 @@ static MACHINE_CONFIG_START( studio2, studio2_state )
/* sound hardware */
MCFG_SPEAKER_STANDARD_MONO("mono")
- MCFG_SOUND_ADD("beeper", BEEP, 0)
+ MCFG_SOUND_ADD("beeper", BEEP, 300)
MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.00)
MCFG_FRAGMENT_ADD( studio2_cartslot )
@@ -668,7 +667,7 @@ static MACHINE_CONFIG_START( visicom, visicom_state )
/* sound hardware */
MCFG_SPEAKER_STANDARD_MONO("mono")
- MCFG_SOUND_ADD("beeper", BEEP, 0)
+ MCFG_SOUND_ADD("beeper", BEEP, 300)
MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.00)
MCFG_GENERIC_CARTSLOT_ADD("cartslot", generic_plain_slot, "visicom_cart")
@@ -696,7 +695,7 @@ static MACHINE_CONFIG_START( mpt02, mpt02_state )
/* sound hardware */
MCFG_SPEAKER_STANDARD_MONO("mono")
- MCFG_SOUND_ADD("beeper", BEEP, 0)
+ MCFG_SOUND_ADD("beeper", BEEP, 300)
MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.00)
MCFG_CDP1864_ADD(CDP1864_TAG, SCREEN_TAG, CDP1864_CLOCK, GND, INPUTLINE(CDP1802_TAG, COSMAC_INPUT_LINE_INT), INPUTLINE(CDP1802_TAG, COSMAC_INPUT_LINE_DMAOUT), INPUTLINE(CDP1802_TAG, COSMAC_INPUT_LINE_EF1), NULL, READLINE(mpt02_state, rdata_r), READLINE(mpt02_state, bdata_r), READLINE(mpt02_state, gdata_r))
@@ -739,22 +738,15 @@ ROM_END
#define rom_cm1200 rom_mpt02
#define rom_apollo80 rom_mpt02
-/* Driver Initialization */
-
-DRIVER_INIT_MEMBER(studio2_state,studio2)
-{
- m_beeper->set_state(0);
- m_beeper->set_frequency(300);
-}
/* Game Drivers */
-// YEAR NAME PARENT COMPAT MACHINE INPUT INIT COMPANY FULLNAME FLAGS
-CONS( 1977, studio2, 0, 0, studio2, studio2, studio2_state, studio2, "RCA", "Studio II", MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE )
-CONS( 1978, visicom, studio2,0, visicom, studio2, studio2_state, studio2, "Toshiba", "Visicom COM-100 (Japan)", MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE )
-CONS( 1978, mpt02, studio2,0, mpt02, studio2, studio2_state, studio2, "Soundic", "Victory MPT-02 Home TV Programmer (Austria)", MACHINE_SUPPORTS_SAVE )
-CONS( 1978, mpt02h, studio2,0, mpt02, studio2, studio2_state, studio2, "Hanimex", "MPT-02 Jeu TV Programmable (France)", MACHINE_SUPPORTS_SAVE )
-CONS( 1978, mtc9016, studio2,0, mpt02, studio2, studio2_state, studio2, "Mustang", "9016 Telespiel Computer (Germany)", MACHINE_SUPPORTS_SAVE )
-CONS( 1978, shmc1200, studio2,0, mpt02, studio2, studio2_state, studio2, "Sheen", "M1200 Micro Computer (Australia)", MACHINE_SUPPORTS_SAVE )
-CONS( 1978, cm1200, studio2,0, mpt02, studio2, studio2_state, studio2, "Conic", "M-1200 (?)", MACHINE_SUPPORTS_SAVE )
-CONS( 1978, apollo80, studio2,0, mpt02, studio2, studio2_state, studio2, "Academy", "Apollo 80 (Germany)", MACHINE_SUPPORTS_SAVE )
+// YEAR NAME PARENT COMPAT MACHINE INPUT INIT COMPANY FULLNAME FLAGS
+CONS( 1977, studio2, 0, 0, studio2, studio2, driver_device, 0, "RCA", "Studio II", MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE )
+CONS( 1978, visicom, studio2,0, visicom, studio2, driver_device, 0, "Toshiba", "Visicom COM-100 (Japan)", MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE )
+CONS( 1978, mpt02, studio2,0, mpt02, studio2, driver_device, 0, "Soundic", "Victory MPT-02 Home TV Programmer (Austria)", MACHINE_SUPPORTS_SAVE )
+CONS( 1978, mpt02h, studio2,0, mpt02, studio2, driver_device, 0, "Hanimex", "MPT-02 Jeu TV Programmable (France)", MACHINE_SUPPORTS_SAVE )
+CONS( 1978, mtc9016, studio2,0, mpt02, studio2, driver_device, 0, "Mustang", "9016 Telespiel Computer (Germany)", MACHINE_SUPPORTS_SAVE )
+CONS( 1978, shmc1200, studio2,0, mpt02, studio2, driver_device, 0, "Sheen", "M1200 Micro Computer (Australia)", MACHINE_SUPPORTS_SAVE )
+CONS( 1978, cm1200, studio2,0, mpt02, studio2, driver_device, 0, "Conic", "M-1200 (?)", MACHINE_SUPPORTS_SAVE )
+CONS( 1978, apollo80, studio2,0, mpt02, studio2, driver_device, 0, "Academy", "Apollo 80 (Germany)", MACHINE_SUPPORTS_SAVE )
diff --git a/src/mame/drivers/stv.cpp b/src/mame/drivers/stv.cpp
index c75d566f39d..1a823eabcc1 100644
--- a/src/mame/drivers/stv.cpp
+++ b/src/mame/drivers/stv.cpp
@@ -2901,61 +2901,192 @@ ROM_START( pclub2fc ) // set to 1p
ROM_END
-ROM_START( pclb297w ) // set to 1p
+ROM_START( pclub2pf ) // set to 1p
STV_BIOS
ROM_REGION32_BE( 0x3000000, "cart", ROMREGION_ERASE00 ) /* SH2 code */
- ROM_LOAD16_WORD_SWAP( "pclb297w_ic22", 0x0200000, 0x0200000, CRC(589f6705) SHA1(d10897ab26c3ecdd518087562207de131133646c) ) // OK - IC7?
- ROM_LOAD16_WORD_SWAP( "pclb297w_ic24", 0x0400000, 0x0200000, CRC(4bd706d1) SHA1(e3c52c63bb93d9fa836c300865423a226bf74586) ) // OK - IC2?
- ROM_LOAD16_WORD_SWAP( "pclb297w_ic26", 0x0600000, 0x0200000, CRC(417e182a) SHA1(4df04a390523e52e48efcc48891bc54452f351c9) ) // OK - IC2?
- ROM_LOAD16_WORD_SWAP( "pclb297w_ic28", 0x0800000, 0x0200000, CRC(73da594e) SHA1(936b0af4a32d5b93847bbf2ecfc8d334290059c0) ) // OK - IC3?
- ROM_LOAD16_WORD_SWAP( "pclb297w_ic30", 0x0a00000, 0x0200000, CRC(03b9eacf) SHA1(d69c10f7613d9f52042dd6cce64e74e2b1ecc2d8) ) // OK - IC3?
- ROM_LOAD16_WORD_SWAP( "pclb297w_ic32", 0x0c00000, 0x0200000, CRC(20437e93) SHA1(dfd2026bec6b2f418cd1cbfa7266717211d013b6) ) // OK - IC4?
- ROM_LOAD16_WORD_SWAP( "pclb297w_ic34", 0x0e00000, 0x0200000, CRC(9639b003) SHA1(8f95b024ad19151e1e642d58aa785d14ae3a0661) ) // OK - IC4?
- ROM_LOAD16_WORD_SWAP( "pclb297w_ic36", 0x1000000, 0x0200000, CRC(dd1b57b6) SHA1(8450355ec6cdc9718f8579f8702f3900f686c3f8) ) // BAD? - IC5 ?? (will need rom below to pass)
- ROM_LOAD16_WORD_SWAP( "pclb297w_ic23", 0x1200000, 0x0200000, NO_DUMP) // IC5 ??
- ROM_LOAD16_WORD_SWAP( "pclb297w_ic25", 0x1400000, 0x0200000, NO_DUMP) // IC6 ??
- ROM_LOAD16_WORD_SWAP( "pclb297w_ic27", 0x1600000, 0x0200000, NO_DUMP) // IC6 ??
+ ROM_LOAD16_WORD_SWAP( "pclb2puf.IC22", 0x0200000, 0x0200000, CRC(a14282f2) SHA1(b96e70693d8e71b090e20efdd3aa6228e7289fa4) ) // OK
+ ROM_LOAD16_WORD_SWAP( "pclb2puf.IC24", 0x0400000, 0x0200000, CRC(4fb4dc74) SHA1(1f174512c9cd5420d7f935cbc6b5875836f6e825) ) // OK
+ ROM_LOAD16_WORD_SWAP( "pclb2puf.IC26", 0x0600000, 0x0200000, CRC(d20bbfb5) SHA1(5f2768e0e306bd0e3ed9b4e1d234aac8fd7155e6) ) // OK
+ ROM_LOAD16_WORD_SWAP( "pclb2puf.IC28", 0x0800000, 0x0200000, CRC(da658ae9) SHA1(24293c2b23b3009956fc05df5177a27415754301) ) // OK
+ ROM_LOAD16_WORD_SWAP( "pclb2puf.IC30", 0x0a00000, 0x0200000, CRC(cafc0e6b) SHA1(fa2ac54260336d5dd1ced7ccaf87115511ece1f8) ) // OK
+
+ ROM_REGION16_BE( 0x80, "eeprom", 0 ) // preconfigured to 1 player
+ ROM_LOAD( "pclub2pf.nv", 0x0000, 0x0080, CRC(447bb3bd) SHA1(9fefec09849bfa0c14b49e73ff13e2a538dff511) )
+ROM_END
+
+ROM_START( prc297wi ) // set to 1p
+ STV_BIOS
+
+ ROM_REGION32_BE( 0x3000000, "cart", ROMREGION_ERASE00 ) /* SH2 code */
+
+ ROM_LOAD16_WORD_SWAP( "prc297wi_ic22", 0x0200000, 0x0200000, CRC(589f6705) SHA1(d10897ab26c3ecdd518087562207de131133646c) ) // OK - IC7
+ ROM_LOAD16_WORD_SWAP( "prc297wi_ic24", 0x0400000, 0x0200000, CRC(4bd706d1) SHA1(e3c52c63bb93d9fa836c300865423a226bf74586) ) // OK - IC2
+ ROM_LOAD16_WORD_SWAP( "prc297wi_ic26", 0x0600000, 0x0200000, CRC(417e182a) SHA1(4df04a390523e52e48efcc48891bc54452f351c9) ) // OK - IC2
+ ROM_LOAD16_WORD_SWAP( "prc297wi_ic28", 0x0800000, 0x0200000, CRC(73da594e) SHA1(936b0af4a32d5b93847bbf2ecfc8d334290059c0) ) // OK - IC3
+ ROM_LOAD16_WORD_SWAP( "prc297wi_ic30", 0x0a00000, 0x0200000, CRC(03b9eacf) SHA1(d69c10f7613d9f52042dd6cce64e74e2b1ecc2d8) ) // OK - IC3
+ ROM_LOAD16_WORD_SWAP( "prc297wi_ic32", 0x0c00000, 0x0200000, CRC(20437e93) SHA1(dfd2026bec6b2f418cd1cbfa7266717211d013b6) ) // OK - IC4
+ ROM_LOAD16_WORD_SWAP( "prc297wi_ic34", 0x0e00000, 0x0200000, CRC(9639b003) SHA1(8f95b024ad19151e1e642d58aa785d14ae3a0661) ) // OK - IC4
+ ROM_LOAD16_WORD_SWAP( "prc297wi_ic36", 0x1000000, 0x0200000, CRC(dd1b57b6) SHA1(8450355ec6cdc9718f8579f8702f3900f686c3f8) ) // OK - IC5
+ ROM_LOAD16_WORD_SWAP( "prc297wi_ic23", 0x1200000, 0x0200000, CRC(e3d9d12b) SHA1(28ec3727774ef8a6a241238ad134a5adab8327fd) ) // OK - IC5
+ ROM_LOAD16_WORD_SWAP( "prc297wi_ic25", 0x1400000, 0x0200000, CRC(71238374) SHA1(0dc534628a98aba508bdef58f8b812908414ae48) ) // OK - IC6
+ ROM_LOAD16_WORD_SWAP( "prc297wi_ic27", 0x1600000, 0x0200000, CRC(7485a9a2) SHA1(17999a5192f185a27c08c2f05e19c65977b8f84e) ) // OK - IC6
+
+ ROM_REGION16_BE( 0x80, "eeprom", 0 ) // preconfigured to 1 player
+ ROM_LOAD( "eeprom", 0x0000, 0x0080, CRC(9ba58358) SHA1(555ac21321b3051f7083cd72176ddc0fef2d4155) )
+ROM_END
+
+ROM_START( prc297wia ) // set to 1p
+ STV_BIOS
+
+ ROM_REGION32_BE( 0x3000000, "cart", ROMREGION_ERASE00 ) /* SH2 code */
+
+ ROM_LOAD16_WORD_SWAP( "pclb297w_ic22_ALT", 0x0200000, 0x0200000, CRC(1feb3bfe) SHA1(cb79908a13e32c3c00e5892d988088a902d6f874) ) // OK - IC7
+ ROM_LOAD16_WORD_SWAP( "prc297wi_ic24", 0x0400000, 0x0200000, CRC(4bd706d1) SHA1(e3c52c63bb93d9fa836c300865423a226bf74586) ) // OK - IC2
+ ROM_LOAD16_WORD_SWAP( "prc297wi_ic26", 0x0600000, 0x0200000, CRC(417e182a) SHA1(4df04a390523e52e48efcc48891bc54452f351c9) ) // OK - IC2
+ ROM_LOAD16_WORD_SWAP( "prc297wi_ic28", 0x0800000, 0x0200000, CRC(73da594e) SHA1(936b0af4a32d5b93847bbf2ecfc8d334290059c0) ) // OK - IC3
+ ROM_LOAD16_WORD_SWAP( "prc297wi_ic30", 0x0a00000, 0x0200000, CRC(03b9eacf) SHA1(d69c10f7613d9f52042dd6cce64e74e2b1ecc2d8) ) // OK - IC3
+ ROM_LOAD16_WORD_SWAP( "prc297wi_ic32", 0x0c00000, 0x0200000, CRC(20437e93) SHA1(dfd2026bec6b2f418cd1cbfa7266717211d013b6) ) // OK - IC4
+ ROM_LOAD16_WORD_SWAP( "prc297wi_ic34", 0x0e00000, 0x0200000, CRC(9639b003) SHA1(8f95b024ad19151e1e642d58aa785d14ae3a0661) ) // OK - IC4
+ ROM_LOAD16_WORD_SWAP( "prc297wi_ic36", 0x1000000, 0x0200000, CRC(dd1b57b6) SHA1(8450355ec6cdc9718f8579f8702f3900f686c3f8) ) // OK - IC5
+ ROM_LOAD16_WORD_SWAP( "prc297wi_ic23", 0x1200000, 0x0200000, CRC(e3d9d12b) SHA1(28ec3727774ef8a6a241238ad134a5adab8327fd) ) // OK - IC5
+ ROM_LOAD16_WORD_SWAP( "prc297wi_ic25", 0x1400000, 0x0200000, CRC(71238374) SHA1(0dc534628a98aba508bdef58f8b812908414ae48) ) // OK - IC6
+ ROM_LOAD16_WORD_SWAP( "prc297wi_ic27", 0x1600000, 0x0200000, CRC(7485a9a2) SHA1(17999a5192f185a27c08c2f05e19c65977b8f84e) ) // OK - IC6
ROM_REGION16_BE( 0x80, "eeprom", 0 ) // preconfigured to 1 player
ROM_LOAD( "eeprom", 0x0000, 0x0080, CRC(9ba58358) SHA1(555ac21321b3051f7083cd72176ddc0fef2d4155) )
ROM_END
-ROM_START( pclub298 ) // set to 1p
+
+ROM_START( prc298sp ) // set to 1p
+ STV_BIOS
+
+ ROM_REGION32_BE( 0x3000000, "cart", ROMREGION_ERASE00 ) /* SH2 code */
+
+ ROM_LOAD16_WORD_SWAP( "prc298sp_ic22", 0x0200000, 0x0200000, CRC(cb0ec98a) SHA1(efef536cb3bc71207936b26b87f04641baded10b) ) // OK? - tested as IC7?
+ ROM_LOAD16_WORD_SWAP( "prc298sp_ic24", 0x0400000, 0x0200000, CRC(645e7e24) SHA1(7362b0c4b500639c20ec27002f543a0b4390eaa8) ) // OK - tested as IC2
+ ROM_LOAD16_WORD_SWAP( "prc298sp_ic26", 0x0600000, 0x0200000, CRC(9d3ad85d) SHA1(71fe330594ab58be331aa5311472855be07cb44c) ) // OK - tested as IC2
+ ROM_LOAD16_WORD_SWAP( "prc298sp_ic28", 0x0800000, 0x0200000, CRC(877e73cc) SHA1(dd9928a3fe0ed759611e1b7be8ea10b45084e392) ) // OK - tested as IC3
+ ROM_LOAD16_WORD_SWAP( "prc298sp_ic30", 0x0a00000, 0x0200000, CRC(03b9eacf) SHA1(d69c10f7613d9f52042dd6cce64e74e2b1ecc2d8) ) // OK - tested as IC3
+ ROM_LOAD16_WORD_SWAP( "prc298sp_ic32", 0x0c00000, 0x0200000, CRC(62c10626) SHA1(58cb0ca0330fa7a62b277ab0ff84bff65b81bb23) ) // OK - tested as IC4
+ ROM_LOAD16_WORD_SWAP( "prc298sp_ic34", 0x0e00000, 0x0200000, CRC(8d89877e) SHA1(7d76d48d64d7ac5411d714a4bb83f37e3e5b8df6) ) // 00 fill. OK - tested as IC4
+ ROM_LOAD16_WORD_SWAP( "prc298sp_ic36", 0x1000000, 0x0200000, CRC(8d89877e) SHA1(7d76d48d64d7ac5411d714a4bb83f37e3e5b8df6) ) // 00 fill, OK - tested as IC5
+
+ ROM_REGION16_BE( 0x80, "eeprom", 0 ) // preconfigured to 1 player
+ ROM_LOAD( "prc298sp.nv", 0x0000, 0x0080, CRC(a23dd0f2) SHA1(457282b5d40a17477b95330bba91e05c603f951e) )
+ROM_END
+
+ROM_START( prc298su ) // set to 1p
+ STV_BIOS
+
+ ROM_REGION32_BE( 0x3000000, "cart", ROMREGION_ERASE00 ) /* SH2 code */
+
+ ROM_LOAD16_WORD_SWAP( "pclb298s_ic22", 0x0200000, 0x0200000, CRC(9720fe7a) SHA1(5b17eee0bd4574c0b2eb5bb64928d37bd87da23f) ) // OK - tested as IC7
+ ROM_LOAD16_WORD_SWAP( "pclb298s_ic24", 0x0400000, 0x0200000, CRC(380496dc) SHA1(60a000cd71553cd23009ffd41b0208153b18d858) ) // OK - tested as IC2
+ ROM_LOAD16_WORD_SWAP( "pclb298s_ic26", 0x0600000, 0x0200000, CRC(42622126) SHA1(cc312b1be51e919013ce55d4c1242a90676157e0) ) // OK - tested as IC2
+ ROM_LOAD16_WORD_SWAP( "pclb298s_ic28", 0x0800000, 0x0200000, CRC(c03e861a) SHA1(e39e1d040651577d088ce88d354c74e96971efaa) ) // OK - tested as IC3
+ ROM_LOAD16_WORD_SWAP( "pclb298s_ic30", 0x0a00000, 0x0200000, CRC(01844b12) SHA1(92d23e54cdfba8c0bdf3d87c52313334e2f903fa) ) // OK - tested as IC3
+
+ ROM_REGION16_BE( 0x80, "eeprom", 0 ) // preconfigured to 1 player
+ ROM_LOAD( "prc298su.nv", 0x0000, 0x0080, CRC(6b81636a) SHA1(c84de7c374c46f92985186834ab023986e2abbd8) )
+ROM_END
+
+
+ROM_START( pclub26w ) // set to 1p
+ STV_BIOS
+
+ ROM_REGION32_BE( 0x3000000, "cart", ROMREGION_ERASE00 ) /* SH2 code */
+
+ ROM_LOAD16_WORD_SWAP( "pclbvol6w_IC22", 0x0200000, 0x0200000, CRC(72aa320c) SHA1(09bc30e8cb00a5a4014c44e468cc64f6c3425d92) )
+ ROM_LOAD16_WORD_SWAP( "pclbvol6w_IC24", 0x0400000, 0x0200000, CRC(d98371e2) SHA1(813ac5f3c5b57d07cc319c73560bc0719ddcfe6b) )
+ ROM_LOAD16_WORD_SWAP( "pclbvol6w_IC26", 0x0600000, 0x0200000, CRC(e6bbe3a5) SHA1(b2f642b8ca0779ad66cfbbadece40f4e3dc41fd1) )
+ ROM_LOAD16_WORD_SWAP( "pclbvol6w_IC28", 0x0800000, 0x0200000, CRC(3c330c9b) SHA1(92f8e8d4f43db7c4ce431d17501492a7f8d8a867) )
+ ROM_LOAD16_WORD_SWAP( "pclbvol6w_IC30", 0x0a00000, 0x0200000, CRC(67646090) SHA1(ed6402a22acafa0203c587b871edc547f0ec5277) )
+
+ ROM_REGION16_BE( 0x80, "eeprom", 0 ) // preconfigured to 1 player
+ ROM_LOAD( "pclub26w.nv", 0x0000, 0x0080, CRC(448f770d) SHA1(5f966c511c4c8e9d5b2d257c41c2c88a453b4944) )
+ROM_END
+
+ROM_START( pclub27s ) // set to 1p
+ STV_BIOS
+
+ ROM_REGION32_BE( 0x3000000, "cart", ROMREGION_ERASE00 ) /* SH2 code */
+
+ ROM_LOAD16_WORD_SWAP( "pclub2v7.IC22", 0x0200000, 0x0200000, CRC(44c8ab27) SHA1(65e2705b2918da32ea40375707df4e148b311159) )
+ ROM_LOAD16_WORD_SWAP( "pclub2v7.IC24", 0x0400000, 0x0200000, CRC(24818437) SHA1(5293d45b53680301abaf0b32a62596aaaa2552d6) )
+ ROM_LOAD16_WORD_SWAP( "pclub2v7.IC26", 0x0600000, 0x0200000, CRC(076c1d44) SHA1(d597ed4524bb03eb0ef8ada08d49f3dc0fc8136d) )
+ ROM_LOAD16_WORD_SWAP( "pclub2v7.IC28", 0x0800000, 0x0200000, CRC(ff9643ca) SHA1(3309f970f87324b06cc48add386019f769abcd89) )
+ ROM_LOAD16_WORD_SWAP( "pclub2v7.IC30", 0x0a00000, 0x0200000, CRC(03b9eacf) SHA1(d69c10f7613d9f52042dd6cce64e74e2b1ecc2d8) )
+
+ ROM_REGION16_BE( 0x80, "eeprom", 0 ) // preconfigured to 1 player
+ ROM_LOAD( "pclub27s.nv", 0x0000, 0x0080, CRC(e58c7167) SHA1(d88b1648c5d86a90615a8c6a1bf87bc9e75dc320) )
+ROM_END
+
+ROM_START( pclub2pe ) // set to 1p
STV_BIOS
ROM_REGION32_BE( 0x3000000, "cart", ROMREGION_ERASE00 ) /* SH2 code */
- ROM_LOAD16_WORD_SWAP( "pclub298_ic22", 0x0200000, 0x0200000, CRC(cb0ec98a) SHA1(efef536cb3bc71207936b26b87f04641baded10b) ) // OK? - tested as IC7?
- ROM_LOAD16_WORD_SWAP( "pclub298_ic24", 0x0400000, 0x0200000, CRC(645e7e24) SHA1(7362b0c4b500639c20ec27002f543a0b4390eaa8) ) // OK - tested as IC2
- ROM_LOAD16_WORD_SWAP( "pclub298_ic26", 0x0600000, 0x0200000, CRC(9d3ad85d) SHA1(71fe330594ab58be331aa5311472855be07cb44c) ) // OK - tested as IC2
- ROM_LOAD16_WORD_SWAP( "pclub298_ic28", 0x0800000, 0x0200000, CRC(877e73cc) SHA1(dd9928a3fe0ed759611e1b7be8ea10b45084e392) ) // OK - tested as IC3
- ROM_LOAD16_WORD_SWAP( "pclub298_ic30", 0x0a00000, 0x0200000, CRC(03b9eacf) SHA1(d69c10f7613d9f52042dd6cce64e74e2b1ecc2d8) ) // OK - tested as IC3
- ROM_LOAD16_WORD_SWAP( "pclub298_ic32", 0x0c00000, 0x0200000, CRC(62c10626) SHA1(58cb0ca0330fa7a62b277ab0ff84bff65b81bb23) ) // OK - tested as IC4
- ROM_LOAD16_WORD_SWAP( "pclub298_ic34", 0x0e00000, 0x0200000, CRC(8d89877e) SHA1(7d76d48d64d7ac5411d714a4bb83f37e3e5b8df6) ) // 00 fill. OK - tested as IC4
- ROM_LOAD16_WORD_SWAP( "pclub298_ic36", 0x1000000, 0x0200000, CRC(8d89877e) SHA1(7d76d48d64d7ac5411d714a4bb83f37e3e5b8df6) ) // 00 fill, OK - tested as IC5
+ ROM_LOAD16_WORD_SWAP( "pclb2psi_IC22", 0x0200000, 0x0200000, CRC(caadc660) SHA1(f2e84bee96266bb03d8f9009249c17c27935f82e) )
+ ROM_LOAD16_WORD_SWAP( "pclb2psi_IC24", 0x0400000, 0x0200000, CRC(ece82698) SHA1(b17b1ea8adc13c3722067c9854d1b7fdf3917090) )
+ ROM_LOAD16_WORD_SWAP( "pclb2psi_IC26", 0x0600000, 0x0200000, CRC(c8a1e335) SHA1(a95ddfc41fdd9f720c11208f45ef5db4bee6cb97) )
+ ROM_LOAD16_WORD_SWAP( "pclb2psi_IC28", 0x0800000, 0x0200000, CRC(52f09627) SHA1(e2ffc321bb0f2a650d0c0b39c3ec68226e1ca7f4) )
+ ROM_LOAD16_WORD_SWAP( "pclb2psi_IC30", 0x0a00000, 0x0200000, CRC(03b9eacf) SHA1(d69c10f7613d9f52042dd6cce64e74e2b1ecc2d8) )
ROM_REGION16_BE( 0x80, "eeprom", 0 ) // preconfigured to 1 player
- ROM_LOAD( "pclub298.nv", 0x0000, 0x0080, CRC(a23dd0f2) SHA1(457282b5d40a17477b95330bba91e05c603f951e) )
+ ROM_LOAD( "pclub2pe.nv", 0x0000, 0x0080, CRC(447bb3bd) SHA1(9fefec09849bfa0c14b49e73ff13e2a538dff511))
ROM_END
-ROM_START( pclb298a ) // set to 1p
+ROM_START( pclub2wb ) // set to 1p
STV_BIOS
ROM_REGION32_BE( 0x3000000, "cart", ROMREGION_ERASE00 ) /* SH2 code */
- ROM_LOAD16_WORD_SWAP( "pclb298a_ic22", 0x0200000, 0x0200000, CRC(21a995ce) SHA1(6ee1250becd76bef3aa8044a42e10c3830a609bd) ) // OK
- ROM_LOAD16_WORD_SWAP( "pclb298a_ic24", 0x0400000, 0x0200000, CRC(94540f39) SHA1(cee9fff48d177e7502802d366339ed922c212871) ) // OK
- ROM_LOAD16_WORD_SWAP( "pclb298a_ic26", 0x0600000, 0x0200000, CRC(8b22c41f) SHA1(371f8b35ed45f695f5ec0c8db2c4b62007bf4782) ) // OK
- ROM_LOAD16_WORD_SWAP( "pclb298a_ic28", 0x0800000, 0x0200000, CRC(bf68cec0) SHA1(550138f5110661d69eaff44c0596914a2621c3df) ) // OK
- ROM_LOAD16_WORD_SWAP( "pclb298a_ic30", 0x0a00000, 0x0200000, CRC(ae276c06) SHA1(98358860ae9bf7c405ba4f763c7a4bf309ce85e3) ) // OK
- ROM_LOAD16_WORD_SWAP( "pclb298a_ic32", 0x0c00000, 0x0200000, CRC(a3fb81f5) SHA1(6c78c97635dd486d2a7c09bc0511267eae6082c4) ) // OK
- ROM_LOAD16_WORD_SWAP( "pclb298a_ic34", 0x0e00000, 0x0200000, CRC(04200dc9) SHA1(e40b01d12ccf71e50da7fd0f3000158626e5a98d) ) // OK
- ROM_LOAD16_WORD_SWAP( "pclb298a_ic36", 0x1000000, 0x0200000, CRC(9a4109e5) SHA1(ba59caac5f5a80fc52c507d8a47f322a380aa9a1) ) // (blank! - not tested)
+ ROM_LOAD16_WORD_SWAP( "pclb2wb_IC22", 0x0200000, 0x0200000, CRC(12245be7) SHA1(4d6c2c9ca7fe73a9ec490157cdb01a6228dee7f8) )
+ ROM_LOAD16_WORD_SWAP( "pclb2wb_IC24", 0x0400000, 0x0200000, CRC(e5d6e11e) SHA1(4af3c646747f76d99482c985f960df2519a85c23) )
+ ROM_LOAD16_WORD_SWAP( "pclb2wb_IC26", 0x0600000, 0x0200000, CRC(7ee066f0) SHA1(a7c725ce8e621ed299474dd215174699e097db3f) )
+ ROM_LOAD16_WORD_SWAP( "pclb2wb_IC28", 0x0800000, 0x0200000, CRC(9ed59513) SHA1(c8f5ed13be2a91f83c35a7929aaa5751d7843e6e) )
+ ROM_LOAD16_WORD_SWAP( "pclb2wb_IC30", 0x0a00000, 0x0200000, CRC(00a0c702) SHA1(f2c4a7a51559f0ade96b8e6337cd1a1d61472de7) )
ROM_REGION16_BE( 0x80, "eeprom", 0 ) // preconfigured to 1 player
- ROM_LOAD( "pclub298a.nv", 0x0000, 0x0080, CRC(b4440ff0) SHA1(bd3c83221ede11c68163df4b52a85856c83f865f) )
+ ROM_LOAD( "pclub2wb.nv", 0x0000, 0x0080, CRC(0d442eec) SHA1(54dd544e1496e3999d8111eb06abf805b610d77d) )
+ROM_END
+
+
+
+ROM_START( pclubyo2 ) // set to 1p
+ STV_BIOS
+
+ ROM_REGION32_BE( 0x3000000, "cart", ROMREGION_ERASE00 ) /* SH2 code */
+
+ ROM_LOAD16_WORD_SWAP( "pclbyov2.IC22", 0x0200000, 0x0200000, CRC(719a4d27) SHA1(328dfb8debea02e8660e636e953982d381529945) )
+ ROM_LOAD16_WORD_SWAP( "pclbyov2.IC24", 0x0400000, 0x0200000, CRC(790dc7b5) SHA1(829ead39930779617a9bef41d8615362ca86c4c7) )
+ ROM_LOAD16_WORD_SWAP( "pclbyov2.IC26", 0x0600000, 0x0200000, CRC(12ae1606) SHA1(9534fb2dbf6fd2c258ba2716783cc5bab8bd8dc0) )
+ ROM_LOAD16_WORD_SWAP( "pclbyov2.IC28", 0x0800000, 0x0200000, CRC(ff9643ca) SHA1(3309f970f87324b06cc48add386019f769abcd89) )
+ ROM_LOAD16_WORD_SWAP( "pclbyov2.IC30", 0x0a00000, 0x0200000, CRC(03b9eacf) SHA1(d69c10f7613d9f52042dd6cce64e74e2b1ecc2d8) )
+
+ ROM_REGION16_BE( 0x80, "eeprom", 0 ) // preconfigured to 1 player
+ ROM_LOAD( "pclubyo2.nv", 0x0000, 0x0080, CRC(2b26a8f7) SHA1(32f34096cac05a37c492ee389ed8e4c02694c268) )
+ROM_END
+
+
+ROM_START( prc298au ) // set to 1p
+ STV_BIOS
+
+ ROM_REGION32_BE( 0x3000000, "cart", ROMREGION_ERASE00 ) /* SH2 code */
+
+ ROM_LOAD16_WORD_SWAP( "prc298au_ic22", 0x0200000, 0x0200000, CRC(21a995ce) SHA1(6ee1250becd76bef3aa8044a42e10c3830a609bd) ) // OK
+ ROM_LOAD16_WORD_SWAP( "prc298au_ic24", 0x0400000, 0x0200000, CRC(94540f39) SHA1(cee9fff48d177e7502802d366339ed922c212871) ) // OK
+ ROM_LOAD16_WORD_SWAP( "prc298au_ic26", 0x0600000, 0x0200000, CRC(8b22c41f) SHA1(371f8b35ed45f695f5ec0c8db2c4b62007bf4782) ) // OK
+ ROM_LOAD16_WORD_SWAP( "prc298au_ic28", 0x0800000, 0x0200000, CRC(bf68cec0) SHA1(550138f5110661d69eaff44c0596914a2621c3df) ) // OK
+ ROM_LOAD16_WORD_SWAP( "prc298au_ic30", 0x0a00000, 0x0200000, CRC(ae276c06) SHA1(98358860ae9bf7c405ba4f763c7a4bf309ce85e3) ) // OK
+ ROM_LOAD16_WORD_SWAP( "prc298au_ic32", 0x0c00000, 0x0200000, CRC(a3fb81f5) SHA1(6c78c97635dd486d2a7c09bc0511267eae6082c4) ) // OK
+ ROM_LOAD16_WORD_SWAP( "prc298au_ic34", 0x0e00000, 0x0200000, CRC(04200dc9) SHA1(e40b01d12ccf71e50da7fd0f3000158626e5a98d) ) // OK
+ ROM_LOAD16_WORD_SWAP( "prc298au_ic36", 0x1000000, 0x0200000, CRC(9a4109e5) SHA1(ba59caac5f5a80fc52c507d8a47f322a380aa9a1) ) // (blank! - not tested)
+
+ ROM_REGION16_BE( 0x80, "eeprom", 0 ) // preconfigured to 1 player
+ ROM_LOAD( "prc298au.nv", 0x0000, 0x0080, CRC(b4440ff0) SHA1(bd3c83221ede11c68163df4b52a85856c83f865f) )
ROM_END
@@ -3058,6 +3189,82 @@ ROM_START( pclb2elk ) // set to 1p
ROM_LOAD( "pclb2elk.nv", 0x0000, 0x0080, CRC(54c7564f) SHA1(574dcc5e8fe4aac091fee1476347485ed660eddd) )
ROM_END
+ROM_START( pclove )
+ STV_BIOS
+
+ ROM_REGION32_BE( 0x3000000, "cart", ROMREGION_ERASE00 ) /* SH2 code */
+ // note, 'IC2' in service mode (the test of IC24/IC26) fails once you map the protection device because it occupies the same memory address as the rom at IC26
+ // there must be a way to enable / disable it.
+ ROM_LOAD16_WORD_SWAP( "pclbLove.ic22", 0x0200000, 0x0200000, CRC(8cd25a0f) SHA1(c938d5f4f800db019abc2e17cce1e780e93f3d02) ) // OK (tested as IC7)
+ ROM_LOAD16_WORD_SWAP( "pclbLove.ic24", 0x0400000, 0x0200000, CRC(85583e2c) SHA1(7f407d1bce40317fc10433dafcd82ee41be05839) ) // OK (tested as IC2)
+ ROM_LOAD16_WORD_SWAP( "pclbLove.ic26", 0x0600000, 0x0200000, CRC(7efcabcc) SHA1(b99a67ab2053c3be5ce37530b65f9693c2a4eef8) ) // OK (tested as IC2)
+ ROM_LOAD16_WORD_SWAP( "pclbLove.ic28", 0x0800000, 0x0200000, CRC(a1336da7) SHA1(ba26810067a13968a54a8867025b8d8e96384ae7) ) // OK (tested as IC3)
+ ROM_LOAD16_WORD_SWAP( "pclbLove.ic30", 0x0a00000, 0x0200000, CRC(ec5b5e28) SHA1(89bcddb52c176c86ad4bdb9f4f052be5b75bcd1b) ) // OK (tested as IC3)
+ ROM_LOAD16_WORD_SWAP( "pclbLove.ic32", 0x0c00000, 0x0200000, CRC(9a4109e5) SHA1(ba59caac5f5a80fc52c507d8a47f322a380aa9a1) ) // FF fill? (not tested either)
+
+ // protection device used to decrypt some startup code
+
+ ROM_REGION16_BE( 0x80, "eeprom", 0 ) // preconfigured to 1 player
+ ROM_LOAD( "pclove.nv", 0x0000, 0x0080, CRC(3c78e3bd) SHA1(6d5fe8545f434b4cc1e8229549adb0a49ac45bd1) )
+ROM_END
+
+ROM_START( pclove2 )
+ STV_BIOS
+
+ ROM_REGION32_BE( 0x3000000, "cart", ROMREGION_ERASE00 ) /* SH2 code */
+ // note, 'IC2' in service mode (the test of IC24/IC26) fails once you map the protection device because it occupies the same memory address as the rom at IC26
+ // there must be a way to enable / disable it.
+ ROM_LOAD16_WORD_SWAP( "ic22", 0x0200000, 0x0200000, CRC(d7d968d6) SHA1(59916a453ba8a53af2138272e359c6d6ce11ea8c) ) // OK (tested as IC7)
+ ROM_LOAD16_WORD_SWAP( "ic24", 0x0400000, 0x0200000, CRC(9c9b7e57) SHA1(ae834a3648126ec2456d2cc5544f81b6dc2f5825) ) // OK (tested as IC2)
+ ROM_LOAD16_WORD_SWAP( "ic26", 0x0600000, 0x0200000, CRC(55eb859f) SHA1(4f25536787142f965d688d1758a45885b52ae52e) ) // OK (tested as IC2)
+ ROM_LOAD16_WORD_SWAP( "ic28", 0x0800000, 0x0200000, CRC(463604a6) SHA1(d8eb41676c750e01870241361ef04c8f22a0c4b4) ) // OK (tested as IC3)
+ ROM_LOAD16_WORD_SWAP( "ic30", 0x0a00000, 0x0200000, CRC(ec5b5e28) SHA1(89bcddb52c176c86ad4bdb9f4f052be5b75bcd1b) ) // OK (tested as IC3)
+ ROM_LOAD16_WORD_SWAP( "ic32", 0x0c00000, 0x0200000, CRC(9a4109e5) SHA1(ba59caac5f5a80fc52c507d8a47f322a380aa9a1) ) // FF fill? (not tested either)
+
+ // protection device used to decrypt some startup code
+
+ ROM_REGION16_BE( 0x80, "eeprom", 0 ) // preconfigured to 1 player
+ ROM_LOAD( "pclove2.nv", 0x0000, 0x0080, CRC(93b30600) SHA1(eadba12ec322911823a6873a343e4d9b4089ed93) )
+ROM_END
+
+
+// Name Club / Name Club vol.2
+// have an unusual rom mapping compared to other games, the cartridge is a little different too, with a large PALCE16V8H-10 marked 315-6026
+// For Name Club vol. 2, the protection device (317-0229 on both) is checked in the 'each game test' menu as 'RCDD2'
+// For the service mode test the game just passes a large block of compressed data and checksums the result, it doesn't even look like it's
+// passing 100% valid data, just an entire section of ROM, checking the result against a pre-calculated checksum.
+
+// The device is accessed by the game when you choose to print, it looks like it's decompressing the full-size graphics for the printer rather
+// than anything you see onscreen. It makes quite extensive use of the device, with lots of different dictionaries, unlike Decathlete where
+// there are only 2 that cover all the data.
+
+ROM_START( nameclub )
+ STV_BIOS
+
+ ROM_REGION32_BE( 0x3000000, "cart", ROMREGION_ERASEFF ) /* SH2 code */
+ ROM_LOAD16_WORD_SWAP( "ic22", 0x0200000, 0x0200000, CRC(ac23c648) SHA1(4dd099a92ff162082eb24a61a277ca907b3f9892) ) // OK
+ ROM_LOAD16_WORD_SWAP( "ic24", 0x0600000, 0x0200000, CRC(a16902e3) SHA1(85c582cb0d02ef028a8ae32688c20a5b5aeeaae8) ) // OK
+ ROM_LOAD16_WORD_SWAP( "ic26", 0x0a00000, 0x0200000, CRC(a5eab3f3) SHA1(1b7263639bb8f4aa644cc46133988ef4d2b6c9de) ) // OK
+ ROM_LOAD16_WORD_SWAP( "ic28", 0x0e00000, 0x0200000, CRC(34ed677a) SHA1(ff2c4dd8fae33ac618f6e3e28ba71c4ecb4ca88f) ) // OK
+
+ ROM_REGION16_BE( 0x80, "eeprom", 0 ) // preconfigured to 1 player
+ ROM_LOAD( "nameclub.nv", 0x0000, 0x0080, CRC(680a64bc) SHA1(45194bbe4a7e67f0e44f858589881967884f63a6) )
+ROM_END
+
+ROM_START( nclubv2 )
+ STV_BIOS
+
+ ROM_REGION32_BE( 0x3000000, "cart", ROMREGION_ERASEFF ) /* SH2 code */
+ ROM_LOAD16_WORD_SWAP( "nclubv2.ic22", 0x0200000, 0x0200000, CRC(7e81676d) SHA1(fc0f0dcdb4aaf71218d7c1dd0e4ddc5381e8b13b) ) // OK
+ ROM_LOAD16_WORD_SWAP( "nclubv2.ic24", 0x0600000, 0x0200000, CRC(1b7637de) SHA1(43c3094f60a6582298a45bad923fef57e98c5b2b) ) // OK
+ ROM_LOAD16_WORD_SWAP( "nclubv2.ic26", 0x0a00000, 0x0200000, CRC(630be99d) SHA1(ac7fbaae98b126fad5228b0ebffa91a0f0a94516) ) // OK
+ ROM_LOAD16_WORD_SWAP( "nclubv2.ic28", 0x0e00000, 0x0200000, CRC(1a3ca5e2) SHA1(4d3aed51d29c54e71175d828f648c9feb813ac04) ) // OK
+
+ ROM_REGION16_BE( 0x80, "eeprom", 0 ) // preconfigured to 1 player
+ ROM_LOAD( "nclubv2.nv", 0x0000, 0x0080, CRC(96d55fa9) SHA1(b3c821d6cd4ed52d0e20565e12a06d8f81a08dbc) )
+ROM_END
+
+
GAME( 1996, stvbios, 0, stv_slot, stv, stv_state, stv, ROT0, "Sega", "ST-V Bios", MACHINE_IS_BIOS_ROOT )
@@ -3103,7 +3310,6 @@ GAME( 1998, sss, stvbios, stv_5881, stv, stv_state, sss, ROT
GAME( 1995, sandor, stvbios, stv, stv, stv_state, sandor, ROT0, "Sega", "Puzzle & Action: Sando-R (J 951114 V1.000)", MACHINE_IMPERFECT_SOUND | MACHINE_IMPERFECT_GRAPHICS )
GAME( 1997, thunt, sandor, stv, stv, stv_state, thunt, ROT0, "Sega", "Puzzle & Action: Treasure Hunt (JUET 970901 V2.00E)", MACHINE_IMPERFECT_SOUND | MACHINE_IMPERFECT_GRAPHICS )
GAME( 1997, thuntk, sandor, stv, stv, stv_state, sandor, ROT0, "Sega / Deniam", "Puzzle & Action: BoMulEul Chajara (JUET 970125 V2.00K)", MACHINE_IMPERFECT_SOUND | MACHINE_IMPERFECT_GRAPHICS )
-GAME( 1998, twcup98, stvbios, stv_5881, stv, stv_state, twcup98, ROT0, "Tecmo", "Tecmo World Cup '98 (JUET 980410 V1.000)", MACHINE_IMPERFECT_SOUND | MACHINE_IMPERFECT_GRAPHICS )
GAME( 1995, smleague, stvbios, stv, stv, stv_state, smleague, ROT0, "Sega", "Super Major League (U 960108 V1.000)", MACHINE_NOT_WORKING | MACHINE_IMPERFECT_SOUND | MACHINE_IMPERFECT_GRAPHICS )
GAME( 1995, finlarch, smleague,stv, stv, stv_state, finlarch, ROT0, "Sega", "Final Arch (J 950714 V1.001)", MACHINE_NOT_WORKING | MACHINE_IMPERFECT_SOUND | MACHINE_IMPERFECT_GRAPHICS )
GAME( 1996, sokyugrt, stvbios, stv, stv, stv_state, sokyugrt, ROT0, "Raizing / Eighting", "Soukyugurentai / Terra Diver (JUET 960821 V1.000)", MACHINE_IMPERFECT_SOUND | MACHINE_IMPERFECT_GRAPHICS )
@@ -3114,26 +3320,48 @@ GAME( 1997, winterht, stvbios, stv, stv, stv_state, winterht, ROT
GAME( 1997, znpwfv, stvbios, stv, stv, stv_state, znpwfv, ROT0, "Sega", "Zen Nippon Pro-Wrestling Featuring Virtua (J 971123 V1.000)", MACHINE_IMPERFECT_SOUND | MACHINE_IMPERFECT_GRAPHICS )
/* Unemulated printer / camera devices */
-GAME( 1998, stress, stvbios, stv, stv, stv_state, stv, ROT0, "Sega", "Stress Busters (J 981020 V1.000)", MACHINE_NOT_WORKING | MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND )
-GAME( 1997, nclubv3, stvbios, stv, stv, stv_state, nameclv3, ROT0, "Sega", "Name Club Ver.3 (J 970723 V1.000)", MACHINE_IMPERFECT_SOUND | MACHINE_IMPERFECT_GRAPHICS | MACHINE_NOT_WORKING )
-GAME( 1997, pclub2, stvbios, stv, stv, stv_state, stv, ROT0, "Atlus", "Print Club 2 (U 970921 V1.000)", MACHINE_NOT_WORKING )
-GAME( 1999, pclub2fc, pclub2, stv, stv, stv_state, stv, ROT0, "Atlus", "Print Club 2 Felix The Cat (Rev. A) (J 970415 V1.100)", MACHINE_NOT_WORKING )
-GAME( 1997, pclb297w, pclub2, stv, stv, stv_state, stv, ROT0, "Atlus", "Print Club 2 '97 Winter Ver (J 971017 V1.100)", MACHINE_NOT_WORKING )
-GAME( 1997, pclub298, pclub2, stv, stv, stv_state, stv, ROT0, "Atlus", "Print Club 2 '98 Spring Ver (J 971017 V1.100)", MACHINE_NOT_WORKING )
-GAME( 1998, pclb298a, pclub2, stv, stv, stv_state, stv, ROT0, "Atlus", "Print Club 2 '98 Autumn Ver (J 980827 V1.000)", MACHINE_NOT_WORKING )
+// USA sets
+GAME( 1997, pclub2, stvbios, stv, stv, stv_state, stv, ROT0, "Atlus", "Print Club 2 (U 970921 V1.000)", MACHINE_NOT_WORKING )
+GAME( 1999, pclub2v3, stvbios, stv, stv, stv_state, stv, ROT0, "Atlus", "Print Club 2 Vol. 3 (U 990310 V1.000)", MACHINE_NOT_WORKING ) // Hello Kitty themed
+GAME( 1999, pclubpok, stvbios, stv, stv, stv_state, stv, ROT0, "Atlus", "Print Club Pokemon B (U 991126 V1.000)", MACHINE_NOT_WORKING )
+// Japan sets
+GAME( 1999, pclub2fc, stvbios, stv, stv, stv_state, stv, ROT0, "Atlus", "Print Club 2 Felix The Cat (Rev. A) (J 970415 V1.100)", MACHINE_NOT_WORKING )
+GAME( 1998, pclub2pf, stvbios, stv, stv, stv_state, stv, ROT0, "Atlus", "Print Club 2 Puffy (Japan)", MACHINE_NOT_WORKING ) // version info is blank
+GAME( 1997, pclb2elk, stvbios, stv, stv, stv_state, stv, ROT0, "Atlus", "Print Club 2 Earth Limited Kobe (Print Club Custom) (J 970808 V1.000)", MACHINE_NOT_WORKING )
+GAME( 1997, pclub2pe, stvbios, stv, stv, stv_state, stv, ROT0, "Atlus", "Print Club 2 Pepsiman (J 970618 V1.100)", MACHINE_NOT_WORKING )
+GAME( 1997, pclub2wb, stvbios, stv, stv, stv_state, stv, ROT0, "Atlus", "Print Club 2 Warner Bros (J 970228 V1.000)", MACHINE_NOT_WORKING )
+
+GAME( 1997, pclub26w, stvbios, stv, stv, stv_state, stv, ROT0, "Atlus", "Print Club 2 Vol. 6 Winter (J 961210 V1.000)", MACHINE_NOT_WORKING ) // internal string is 'PURIKURA2 97FUYU' (but in reality it seems to be an end of 96 Winter version)
+GAME( 1997, pclub27s, stvbios, stv, stv, stv_state, stv, ROT0, "Atlus", "Print Club 2 Vol. 7 Spring (J 970313 V1.100)", MACHINE_NOT_WORKING )
+// Summer 97?
+// Autumn 97?
+GAME( 1997, prc297wi, stvbios, stv, stv, stv_state, stv, ROT0, "Atlus", "Print Club 2 '97 Winter Ver (J 971017 V1.100, set 1)", MACHINE_NOT_WORKING ) // internal string is '97WINTER'
+GAME( 1997, prc297wia, prc297wi,stv, stv, stv_state, stv, ROT0, "Atlus", "Print Club 2 '97 Winter Ver (J 971017 V1.100, set 2)", MACHINE_NOT_WORKING ) // different program revision, same date code, clearly didn't get updated properly
+GAME( 1998, prc298sp, stvbios, stv, stv, stv_state, stv, ROT0, "Atlus", "Print Club 2 '98 Spring Ver (J 971017 V1.100)", MACHINE_NOT_WORKING ) // again, dat doesn't appear to have bene updated, this should be early 98
+GAME( 1998, prc298su, stvbios, stv, stv, stv_state, stv, ROT0, "Atlus", "Print Club 2 '98 Summer Ver (J 980603 V1.100)", MACHINE_NOT_WORKING ) // again, dat doesn't appear to have bene updated, this should be early 98
+GAME( 1998, prc298au, stvbios, stv, stv, stv_state, stv, ROT0, "Atlus", "Print Club 2 '98 Autumn Ver (J 980827 V1.000)", MACHINE_NOT_WORKING )
+
GAME( 1999, pclubor, stvbios, stv, stv, stv_state, stv, ROT0, "Atlus", "Print Club Goukakenran (J 991104 V1.000)", MACHINE_NOT_WORKING )
GAME( 1999, pclubol, stvbios, stv, stv, stv_state, stv, ROT0, "Atlus", "Print Club Olive (J 980717 V1.000)", MACHINE_NOT_WORKING )
-GAME( 1999, pclub2v3, pclub2, stv, stv, stv_state, stv, ROT0, "Atlus", "Print Club 2 Vol. 3 (U 990310 V1.000)", MACHINE_NOT_WORKING )
-GAME( 1999, pclubpok, stvbios, stv, stv, stv_state, stv, ROT0, "Atlus", "Print Club Pokemon B (U 991126 V1.000)", MACHINE_NOT_WORKING )
GAME( 1997, pclub2kc, stvbios, stv, stv, stv_state, stv, ROT0, "Atlus", "Print Club Kome Kome Club (J 970203 V1.000)", MACHINE_NOT_WORKING )
-GAME( 1997, pclb2elk, stvbios, stv, stv, stv_state, stv, ROT0, "Atlus", "Print Club 2 Earth Limited Kobe (Print Club Custom) (J 970808 V1.000)", MACHINE_NOT_WORKING )
+GAME( 1997, pclubyo2, stvbios, stv, stv, stv_state, stv, ROT0, "Atlus", "Print Club Yoshimoto V2 (J 970422 V1.100)", MACHINE_NOT_WORKING )
+
+GAME( 1997, pclove, stvbios, stv_5838, stv, stv_state, decathlt, ROT0, "Atlus", "Print Club LoveLove (J 970421 V1.000)", MACHINE_NOT_WORKING ) // uses the same type of protection as decathlete!!
+GAME( 1997, pclove2, stvbios, stv_5838, stv, stv_state, decathlt, ROT0, "Atlus", "Print Club LoveLove Ver 2 (J 970825 V1.000)", MACHINE_NOT_WORKING ) // ^
+
+GAME( 1998, stress, stvbios, stv, stv, stv_state, stv, ROT0, "Sega", "Stress Busters (J 981020 V1.000)", MACHINE_NOT_WORKING | MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND )
+
+GAME( 1996, nameclub, stvbios, stv_5838, stv, stv_state, decathlt, ROT0, "Sega", "Name Club (J 960315 V1.000)", MACHINE_NOT_WORKING ) // uses the same type of protection as decathlete!!
+GAME( 1996, nclubv2, stvbios, stv_5838, stv, stv_state, decathlt, ROT0, "Sega", "Name Club Ver.2 (J 960315 V1.000)", MACHINE_NOT_WORKING ) // ^ (has the same datecode as nameclub, probably incorrect unless both were released today)
+GAME( 1997, nclubv3, stvbios, stv, stv, stv_state, nameclv3, ROT0, "Sega", "Name Club Ver.3 (J 970723 V1.000)", MACHINE_IMPERFECT_SOUND | MACHINE_IMPERFECT_GRAPHICS | MACHINE_NOT_WORKING ) // no protection
+
/* Doing something.. but not enough yet */
GAME( 1995, vfremix, stvbios, stv, stv, stv_state, vfremix, ROT0, "Sega", "Virtua Fighter Remix (JUETBKAL 950428 V1.000)", MACHINE_IMPERFECT_SOUND | MACHINE_IMPERFECT_GRAPHICS | MACHINE_NOT_WORKING )
GAME( 1996, decathlt, stvbios, stv_5838, stv, stv_state, decathlt, ROT0, "Sega", "Decathlete (JUET 960709 V1.001)", MACHINE_NO_SOUND | MACHINE_NOT_WORKING | MACHINE_UNEMULATED_PROTECTION )
GAME( 1996, decathlto, decathlt,stv_5838, stv, stv_state, decathlt, ROT0, "Sega", "Decathlete (JUET 960424 V1.000)", MACHINE_NO_SOUND | MACHINE_NOT_WORKING | MACHINE_UNEMULATED_PROTECTION )
-
+GAME( 1998, twcup98, stvbios, stv_5881, stv, stv_state, twcup98, ROT0, "Tecmo", "Tecmo World Cup '98 (JUET 980410 V1.000)", MACHINE_NOT_WORKING | MACHINE_IMPERFECT_SOUND | MACHINE_IMPERFECT_GRAPHICS ) // some situations with the GK result in the game stalling, maybe CPU core bug??
/* Gives I/O errors */
GAME( 1996, magzun, stvbios, stv, stv, stv_state, magzun, ROT0, "Sega", "Magical Zunou Power (J 961031 V1.000)", MACHINE_NOT_WORKING )
GAME( 1997, techbowl, stvbios, stv, stv, stv_state, stv, ROT0, "Sega", "Technical Bowling (J 971212 V1.000)", MACHINE_NOT_WORKING )
diff --git a/src/mame/drivers/super80.cpp b/src/mame/drivers/super80.cpp
index ec9cd2286b4..ad47e443f2a 100644
--- a/src/mame/drivers/super80.cpp
+++ b/src/mame/drivers/super80.cpp
@@ -948,6 +948,7 @@ ROM_START( super80r )
ROM_LOAD("s80hmce.ic24", 0xf000, 0x0800, CRC(a6488a1e) SHA1(7ba613d70a37a6b738dcd80c2bb9988ff1f011ef) )
ROM_REGION( 0x1000, "videoram", ROMREGION_ERASEFF )
+ ROM_REGION( 0x1000, "colorram", ROMREGION_ERASEFF )
ROM_END
ROM_START( super80v )
diff --git a/src/mame/drivers/supercon.cpp b/src/mame/drivers/supercon.cpp
index be2198189f1..f40be537c43 100644
--- a/src/mame/drivers/supercon.cpp
+++ b/src/mame/drivers/supercon.cpp
@@ -791,7 +791,7 @@ static MACHINE_CONFIG_START( supercon, supercon_state )
/* sound hardware */
MCFG_SPEAKER_STANDARD_MONO("mono")
- MCFG_SOUND_ADD("beeper", BEEP, 0)
+ MCFG_SOUND_ADD("beeper", BEEP, 3250)
MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.50)
MCFG_TIMER_DRIVER_ADD_PERIODIC("artwork_timer", supercon_state, update_artwork, attotime::from_hz(20))
diff --git a/src/mame/drivers/system16.cpp b/src/mame/drivers/system16.cpp
index 4ebc0d2f7f6..2c36cdd09af 100644
--- a/src/mame/drivers/system16.cpp
+++ b/src/mame/drivers/system16.cpp
@@ -3124,7 +3124,7 @@ ROM_START( beautyb )
ROM_LOAD( "b53.bin", 0x10000, 0x10000, CRC(aca8e330) SHA1(912e636e3c1e238682ea29620e8e2c6089c77209) )
ROM_LOAD( "b63.bin", 0x00000, 0x10000, CRC(f2af2fd5) SHA1(0a95ebb5eae7cdc6535533d73d06419c23d01ac3) )
- ROM_REGION( 0x020000, "sprites", ROMREGION_ERASEFF ) /* sprites */
+ ROM_REGION16_BE( 0x020000, "sprites", ROMREGION_ERASEFF ) /* sprites */
/* no sprites on this */
ROM_REGION( 0x40000, "soundcpu", 0 ) /* sound CPU */
@@ -3151,7 +3151,7 @@ ROM_START( iqpipe )
ROM_LOAD( "iqpipe.5", 0x10000, 0x10000, CRC(dfaedd39) SHA1(498f1c34fecd8de497fdce41bb683d00047a868a) )
ROM_LOAD( "iqpipe.6", 0x00000, 0x10000, CRC(8e554f8d) SHA1(4b3b0e47c36f37947422f1c31063f11975108cd0) )
- ROM_REGION( 0x020000, "sprites", ROMREGION_ERASEFF ) /* sprites */
+ ROM_REGION16_BE( 0x020000, "sprites", ROMREGION_ERASEFF ) /* sprites */
/* no sprites on this */
ROM_REGION( 0x40000, "soundcpu", 0 ) /* sound CPU */
diff --git a/src/mame/drivers/taito_b.cpp b/src/mame/drivers/taito_b.cpp
index eb0cff9f77c..a58f7b22e90 100644
--- a/src/mame/drivers/taito_b.cpp
+++ b/src/mame/drivers/taito_b.cpp
@@ -1,4 +1,4 @@
-// license:???
+// license:GPL-2.0+
// copyright-holders:Jarek Burczynski
/***************************************************************************
diff --git a/src/mame/drivers/taito_f2.cpp b/src/mame/drivers/taito_f2.cpp
index bf7cb9f4849..05a3b11fecc 100644
--- a/src/mame/drivers/taito_f2.cpp
+++ b/src/mame/drivers/taito_f2.cpp
@@ -5196,6 +5196,7 @@ ROM_START( yesnoj ) /* Yes/No Sinri Tokimeki Chart */
ROM_LOAD( "d20-06.5", 0x00000, 0x04000, CRC(3eb537dc) SHA1(368a03fc265157faf50612b823a78c820b2519f1) )
ROM_CONTINUE( 0x10000, 0x0c000 ) /* banked stuff */
+ ROM_REGION( 0x100000, "ymsnd", ROMREGION_ERASE00 )
/* no ADPCM samples */
/* no Delta-T samples */
diff --git a/src/mame/drivers/taito_f3.cpp b/src/mame/drivers/taito_f3.cpp
index a892f6487d7..1d33d59194a 100644
--- a/src/mame/drivers/taito_f3.cpp
+++ b/src/mame/drivers/taito_f3.cpp
@@ -233,8 +233,8 @@ static INPUT_PORTS_START( f3 )
PORT_BIT( 0x00002000, IP_ACTIVE_LOW, IPT_START2 )
PORT_BIT( 0x00004000, IP_ACTIVE_LOW, IPT_START3 )
PORT_BIT( 0x00008000, IP_ACTIVE_LOW, IPT_START4 )
- PORT_BIT( 0x00ff0000, IP_ACTIVE_HIGH, IPT_SPECIAL ) PORT_CUSTOM_MEMBER(DEVICE_SELF, taito_f3_state,eeprom_read, (void *)nullptr)
- PORT_BIT( 0xff000000, IP_ACTIVE_HIGH, IPT_SPECIAL ) PORT_CUSTOM_MEMBER(DEVICE_SELF, taito_f3_state,eeprom_read, (void *)nullptr)
+ PORT_BIT( 0x00ff0000, IP_ACTIVE_HIGH, IPT_SPECIAL ) PORT_CUSTOM_MEMBER(DEVICE_SELF, taito_f3_state,eeprom_read, NULL)
+ PORT_BIT( 0xff000000, IP_ACTIVE_HIGH, IPT_SPECIAL ) PORT_CUSTOM_MEMBER(DEVICE_SELF, taito_f3_state,eeprom_read, NULL)
/* MSW: Coin counters/lockouts are readable, LSW: Joysticks (Player 1 & 2) */
PORT_START("IN.1")
@@ -247,7 +247,7 @@ static INPUT_PORTS_START( f3 )
PORT_BIT( 0x00000040, IP_ACTIVE_LOW, IPT_JOYSTICK_LEFT ) PORT_8WAY PORT_PLAYER(2)
PORT_BIT( 0x00000080, IP_ACTIVE_LOW, IPT_JOYSTICK_RIGHT ) PORT_8WAY PORT_PLAYER(2)
PORT_BIT( 0x0000ff00, IP_ACTIVE_HIGH, IPT_UNKNOWN ) /* These must be high */
- PORT_BIT( 0xffff0000, IP_ACTIVE_HIGH, IPT_SPECIAL ) PORT_CUSTOM_MEMBER(DEVICE_SELF, taito_f3_state,f3_coin_r, (void *)nullptr)
+ PORT_BIT( 0xffff0000, IP_ACTIVE_HIGH, IPT_SPECIAL ) PORT_CUSTOM_MEMBER(DEVICE_SELF, taito_f3_state,f3_coin_r, (void *)0)
/* Player 3 & 4 fire buttons (Player 2 top fire buttons in Kaiser Knuckle) */
PORT_START("IN.4")
@@ -277,7 +277,7 @@ static INPUT_PORTS_START( f3 )
/* Analog control 1 */
PORT_START("IN.2")
- PORT_BIT( 0x0000ffff, IP_ACTIVE_HIGH, IPT_SPECIAL ) PORT_CUSTOM_MEMBER(DEVICE_SELF, taito_f3_state,f3_analog_r, (void*)nullptr)
+ PORT_BIT( 0x0000ffff, IP_ACTIVE_HIGH, IPT_SPECIAL ) PORT_CUSTOM_MEMBER(DEVICE_SELF, taito_f3_state,f3_analog_r, (void*)0)
PORT_BIT( 0xffff0000, IP_ACTIVE_LOW, IPT_UNKNOWN )
/* Analog control 2 */
diff --git a/src/mame/drivers/taitopjc.cpp b/src/mame/drivers/taitopjc.cpp
index c9e6807add9..0751d5504b7 100644
--- a/src/mame/drivers/taitopjc.cpp
+++ b/src/mame/drivers/taitopjc.cpp
@@ -236,7 +236,7 @@ void taitopjc_state::video_start()
m_tilemap[1] = &machine().tilemap().create(m_gfxdecode, tilemap_get_info_delegate(FUNC(taitopjc_state::tile_get_info),this), tilemap_mapper_delegate(FUNC(taitopjc_state::tile_scan_layer1),this), 16, 16, 32, 32);
m_tilemap[0]->set_transparent_pen(0);
m_tilemap[1]->set_transparent_pen(1);
-
+
m_gfxdecode->set_gfx(0, std::make_unique<gfx_element>(m_palette, char_layout, (UINT8*)m_screen_ram.get(), 0, m_palette->entries() / 256, 0));
machine().add_notifier(MACHINE_NOTIFY_EXIT, machine_notify_delegate(FUNC(taitopjc_state::video_exit), this));
@@ -280,7 +280,7 @@ void taitopjc_state::videochip_w(offs_t address, UINT32 data)
{
UINT32 addr = address - 0x10000000;
m_screen_ram[addr] = data;
-
+
if (address >= 0x1003f000)
{
UINT32 a = address - 0x1003f000;
diff --git a/src/mame/drivers/taitosj.cpp b/src/mame/drivers/taitosj.cpp
index 2d6460b2afc..0d6b3cdcb51 100644
--- a/src/mame/drivers/taitosj.cpp
+++ b/src/mame/drivers/taitosj.cpp
@@ -1607,7 +1607,7 @@ static INPUT_PORTS_START( kikstart )
PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_START2 )
PORT_START("IN3") /* Service */
- PORT_BIT( 0x03, IP_ACTIVE_HIGH, IPT_SPECIAL ) PORT_CUSTOM_MEMBER(DEVICE_SELF, taitosj_state,kikstart_gear_r, (void *)nullptr)
+ PORT_BIT( 0x03, IP_ACTIVE_HIGH, IPT_SPECIAL ) PORT_CUSTOM_MEMBER(DEVICE_SELF, taitosj_state,kikstart_gear_r, (void *)0)
PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_UNKNOWN )
PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_UNKNOWN ) /* needs to be 0, otherwise cannot shift */
PORT_BIT( 0x10, IP_ACTIVE_HIGH, IPT_SERVICE1 )
@@ -2424,11 +2424,11 @@ ROM_START( elevator )
/* 10000-11fff space for banked ROMs (not used) */
ROM_REGION( 0x10000, "audiocpu", 0 )
- ROM_LOAD( "ea-ic70.bin", 0x0000, 0x1000, CRC(6d5f57cb) SHA1(abb916d675ee85032697d656121d4f525202cab3) )
- ROM_LOAD( "ea-ic71.bin", 0x1000, 0x1000, CRC(f0a769a1) SHA1(9970fba3afeaaaa7fd217f0704fb9df9cf13cf65) )
+ ROM_LOAD( "ea-9.ic70", 0x0000, 0x1000, CRC(6d5f57cb) SHA1(abb916d675ee85032697d656121d4f525202cab3) )
+ ROM_LOAD( "ea-10.ic71", 0x1000, 0x1000, CRC(f0a769a1) SHA1(9970fba3afeaaaa7fd217f0704fb9df9cf13cf65) )
ROM_REGION( 0x0800, "mcu", 0 ) /* 2k for the microcontroller */
- ROM_LOAD( "ba3.11", 0x0000, 0x0800, CRC(9ce75afc) SHA1(4c8f5d926ae2bec8fcb70692125b9e1c863166c6) )
+ ROM_LOAD( "ba3.11.ic4", 0x0000, 0x0800, CRC(9ce75afc) SHA1(4c8f5d926ae2bec8fcb70692125b9e1c863166c6) ) // IC4 on the z80+security daughterboard; older 4-layer pcbs the mcu is at a different location on the maincpu board itself. The MCU itself has a strange custom from-factory silkscreen, rather than "MC68705P3S" it is labeled "15-00011-001 // DA68237"
ROM_REGION( 0x8000, "gfx1", 0 ) /* graphic ROMs used at runtime */
ROM_LOAD( "ea-ic1.bin", 0x0000, 0x1000, CRC(bbbb3fba) SHA1(a8e3a0886ea5dc8e70aa280b4cef5fb26ca0e125) )
@@ -2458,8 +2458,8 @@ ROM_START( elevatorb )
ROM_LOAD( "ea52.bin", 0x11000, 0x1000, CRC(44b1314a) SHA1(e8980536f787fcb603943d4b2b3a64f475e51a16) ) /* protection crack, bank switched at 7000 */
ROM_REGION( 0x10000, "audiocpu", 0 )
- ROM_LOAD( "ea-ic70.bin", 0x0000, 0x1000, CRC(6d5f57cb) SHA1(abb916d675ee85032697d656121d4f525202cab3) )
- ROM_LOAD( "ea-ic71.bin", 0x1000, 0x1000, CRC(f0a769a1) SHA1(9970fba3afeaaaa7fd217f0704fb9df9cf13cf65) )
+ ROM_LOAD( "ea-9.ic70", 0x0000, 0x1000, CRC(6d5f57cb) SHA1(abb916d675ee85032697d656121d4f525202cab3) )
+ ROM_LOAD( "ea-10.ic71", 0x1000, 0x1000, CRC(f0a769a1) SHA1(9970fba3afeaaaa7fd217f0704fb9df9cf13cf65) )
ROM_REGION( 0x8000, "gfx1", 0 ) /* graphic ROMs used at runtime */
ROM_LOAD( "ea-ic1.bin", 0x0000, 0x1000, CRC(bbbb3fba) SHA1(a8e3a0886ea5dc8e70aa280b4cef5fb26ca0e125) )
diff --git a/src/mame/drivers/taitotz.cpp b/src/mame/drivers/taitotz.cpp
index 8f52dab25ed..f0db0bbaeb8 100644
--- a/src/mame/drivers/taitotz.cpp
+++ b/src/mame/drivers/taitotz.cpp
@@ -590,7 +590,6 @@ public:
UINT32 m_reg105;
- UINT32 m_displist_addr;
int m_count;
std::unique_ptr<taitotz_renderer> m_renderer;
@@ -622,20 +621,25 @@ public:
class taitotz_renderer : public poly_manager<float, taitotz_polydata, 6, 50000>
{
public:
- taitotz_renderer(taitotz_state &state, int width, int height, UINT32 *texram)
+ taitotz_renderer(taitotz_state &state, int width, int height, UINT32 *scrram, UINT32 *texram)
: poly_manager<float, taitotz_polydata, 6, 50000>(state.machine()),
m_state(state)
{
+ m_fb = std::make_unique<bitmap_rgb32>(width, height);
m_zbuffer = std::make_unique<bitmap_ind32>(width, height);
m_texture = texram;
+ m_screen_ram = scrram;
m_diffuse_intensity = 224;
m_ambient_intensity = 32;
m_specular_intensity = 256;
m_specular_power = 20;
+
+ m_cliprect = m_state.m_screen->visible_area();
+
+ setup_viewport(0, 0, 256, 192, 256, 192);
}
- void set_fb(bitmap_rgb32 *fb) { m_fb = fb; }
void render_displaylist(const rectangle &cliprect);
void draw_object(UINT32 address, float scale, UINT8 alpha);
float line_plane_intersection(const vertex_t *v1, const vertex_t *v2, PLANE cp);
@@ -644,6 +648,13 @@ public:
void draw_scanline_noz(INT32 scanline, const extent_t &extent, const taitotz_polydata &extradata, int threadid);
void draw_scanline(INT32 scanline, const extent_t &extent, const taitotz_polydata &extradata, int threadid);
+ void push_tnl_fifo(UINT32 data);
+ void push_direct_poly_fifo(UINT32 data);
+
+ void render_tnl_object(UINT32 address, float scale, UINT8 alpha);
+
+ void draw(bitmap_rgb32 &bitmap, const rectangle &cliprect);
+
private:
enum
{
@@ -658,9 +669,12 @@ private:
//static const float ZBUFFER_MAX = 10000000000.0f;
taitotz_state &m_state;
- bitmap_rgb32 *m_fb;
+ std::unique_ptr<bitmap_rgb32> m_fb;
std::unique_ptr<bitmap_ind32> m_zbuffer;
UINT32 *m_texture;
+ UINT32 *m_screen_ram;
+
+ rectangle m_cliprect;
PLANE m_clip_plane[6];
float m_matrix[4][3];
@@ -693,6 +707,11 @@ private:
UINT32 m_reg_10000100;
UINT32 m_reg_10000101;
+
+ UINT32 m_tnl_fifo[64];
+ UINT32 m_direct_fifo[64];
+ int m_tnl_fifo_ptr;
+ int m_direct_fifo_ptr;
};
@@ -747,7 +766,7 @@ void taitotz_state::video_start()
m_texture_ram = std::make_unique<UINT32[]>(0x800000);
/* create renderer */
- m_renderer = std::make_unique<taitotz_renderer>(*this, width, height, m_texture_ram.get());
+ m_renderer = std::make_unique<taitotz_renderer>(*this, width, height, m_screen_ram.get(), m_texture_ram.get());
//machine().add_notifier(MACHINE_NOTIFY_EXIT, machine_notify_delegate(FUNC(taitotz_exit), &machine()));
}
@@ -1154,32 +1173,63 @@ int taitotz_renderer::clip_polygon(const vertex_t *v, int num_vertices, PLANE cp
return clip_verts;
}
-void taitotz_renderer::draw_object(UINT32 address, float scale, UINT8 alpha)
+void taitotz_renderer::setup_viewport(int x, int y, int width, int height, int center_x, int center_y)
{
- const rectangle& visarea = m_state.m_screen->visible_area();
+ m_vp_center_x = center_x;
+ m_vp_center_y = center_y;
+ m_vp_focus = width * 2;
+ m_vp_mul = 512.0f / m_vp_focus;
+ m_vp_x = x;
+ m_vp_y = y;
- UINT32 *src = &m_state.m_screen_ram[address];
- taitotz_renderer::vertex_t v[10];
+ // set up clip planes
+ //float angleh = atan2(512/2, 512.0f) - 0.0001;
+ //float anglev = atan2(384/2, 512.0f) - 0.0001;
+ float angleh = atan2(width, m_vp_focus) - 0.0001;
+ float anglev = atan2(height, m_vp_focus) - 0.0001;
+ float sh = sin(angleh);
+ float sv = sin(anglev);
+ float ch = cos(angleh);
+ float cv = cos(anglev);
- // fetch global light vector
- int ilx = (m_reg_10000100 >> 16) & 0x1ff;
- if (ilx & 0x100) ilx |= 0xfffffe00;
- int ily = m_reg_10000100 & 0x1ff;
- if (ily & 0x100) ily |= 0xfffffe00;
- int ilz = m_reg_10000101 & 0x7f;
+ // left
+ m_clip_plane[0].x = ch;
+ m_clip_plane[0].y = 0.0f;
+ m_clip_plane[0].z = sh;
+ m_clip_plane[0].d = 0.0f;
- float light_x = (float)(ilx) / 127.0f;
- float light_y = (float)(ily) / 127.0f;
- float light_z = (float)(ilz) / 127.0f;
+ // right
+ m_clip_plane[1].x = -ch;
+ m_clip_plane[1].y = 0.0f;
+ m_clip_plane[1].z = sh;
+ m_clip_plane[1].d = 0.0f;
- // normalize
- float l = finvsqrt(light_x * light_x + light_y * light_y + light_z * light_z);
- light_x *= l;
- light_y *= l;
- light_z *= l;
+ // top
+ m_clip_plane[2].x = 0.0f;
+ m_clip_plane[2].y = cv;
+ m_clip_plane[2].z = sv;
+ m_clip_plane[2].d = 0.0f;
- int end = 0;
+ // bottom
+ m_clip_plane[3].x = 0.0f;
+ m_clip_plane[3].y = -cv;
+ m_clip_plane[3].z = sv;
+ m_clip_plane[3].d = 0.0f;
+
+ // Z-near
+ m_clip_plane[4].x = 0.0f;
+ m_clip_plane[4].y = 0.0f;
+ m_clip_plane[4].z = 1.0f;
+ m_clip_plane[4].d = 0.1f;
+}
+
+void taitotz_renderer::render_tnl_object(UINT32 address, float scale, UINT8 alpha)
+{
+ UINT32 *src = &m_screen_ram[address];
+ vertex_t v[10];
+
+ bool end = false;
int index = 0;
do
{
@@ -1188,7 +1238,7 @@ void taitotz_renderer::draw_object(UINT32 address, float scale, UINT8 alpha)
int num_verts;
if (src[index] & 0x10000000)
- end = 1;
+ end = true;
if (src[index] & 0x01000000)
num_verts = 4;
@@ -1196,28 +1246,19 @@ void taitotz_renderer::draw_object(UINT32 address, float scale, UINT8 alpha)
num_verts = 3;
int texture = src[index] & 0x7ff;
- int tex_switch = (src[index+3] >> 26) & 3;
-
- /*
- INT8 polyinx = (src[index+1] >> 16) & 0xff;
- INT8 polyiny = (src[index+1] >> 8) & 0xff;
- INT8 polyinz = src[index+1] & 0xff;
- float polynx = (float)(polyinx) / 128.0f;
- float polyny = (float)(polyiny) / 128.0f;
- float polynz = (float)(polyinz) / 128.0f;
- */
+ int tex_switch = (src[index+3] >> 26) & 0x3;
index += 4;
for (int i=0; i < num_verts; i++)
{
- // texture coordinates
- UINT8 tu = (src[index] >> 8) & 0xff;
- UINT8 tv = (src[index] >> 0) & 0xff;
+ // texture coords
+ UINT8 tu = src[index] >> 8;
+ UINT8 tv = src[index] & 0xff;
v[i].p[POLY_U] = (float)(tu);
v[i].p[POLY_V] = (float)(tv);
- // coordinates
+ // coords
INT16 x = src[index + 1] & 0xffff;
INT16 y = src[index + 2] & 0xffff;
INT16 z = src[index + 3] & 0xffff;
@@ -1266,338 +1307,121 @@ void taitotz_renderer::draw_object(UINT32 address, float scale, UINT8 alpha)
extra.texture = texture;
extra.alpha = alpha;
extra.flags = tex_switch;
- extra.diffuse_r = m_diffuse_r;
- extra.diffuse_g = m_diffuse_g;
- extra.diffuse_b = m_diffuse_b;
- extra.ambient_r = m_ambient_r;
- extra.ambient_g = m_ambient_g;
- extra.ambient_b = m_ambient_b;
- extra.specular_r = m_specular_r;
- extra.specular_g = m_specular_g;
- extra.specular_b = m_specular_b;
- extra.light[0] = light_x;
- extra.light[1] = light_y;
- extra.light[2] = -light_z;
+ extra.diffuse_r = 0xff;
+ extra.diffuse_g = 0xff;
+ extra.diffuse_b = 0xff;
+ extra.ambient_r = 0x00;
+ extra.ambient_g = 0x00;
+ extra.ambient_b = 0x00;
+ extra.specular_r = 0xff;
+ extra.specular_g = 0xff;
+ extra.specular_b = 0xff;
+ extra.light[0] = 0.0f;
+ extra.light[1] = 0.0f;
+ extra.light[2] = -1.0f;
for (int i=2; i < num_verts; i++)
{
- render_triangle(visarea, render_delegate(FUNC(taitotz_renderer::draw_scanline), this), 6, v[0], v[i-1], v[i]);
+ render_triangle(m_cliprect, render_delegate(FUNC(taitotz_renderer::draw_scanline), this), 6, v[0], v[i-1], v[i]);
}
}
while (!end);
}
-void taitotz_renderer::setup_viewport(int x, int y, int width, int height, int center_x, int center_y)
-{
- m_vp_center_x = center_x;
- m_vp_center_y = center_y;
- m_vp_focus = width * 2;
- m_vp_mul = 512.0f / m_vp_focus;
- m_vp_x = x;
- m_vp_y = y;
- // set up clip planes
- //float angleh = atan2(512/2, 512.0f) - 0.0001;
- //float anglev = atan2(384/2, 512.0f) - 0.0001;
-
- float angleh = atan2(width, m_vp_focus) - 0.0001;
- float anglev = atan2(height, m_vp_focus) - 0.0001;
- float sh = sin(angleh);
- float sv = sin(anglev);
- float ch = cos(angleh);
- float cv = cos(anglev);
-
- // left
- m_clip_plane[0].x = ch;
- m_clip_plane[0].y = 0.0f;
- m_clip_plane[0].z = sh;
- m_clip_plane[0].d = 0.0f;
-
- // right
- m_clip_plane[1].x = -ch;
- m_clip_plane[1].y = 0.0f;
- m_clip_plane[1].z = sh;
- m_clip_plane[1].d = 0.0f;
-
- // top
- m_clip_plane[2].x = 0.0f;
- m_clip_plane[2].y = cv;
- m_clip_plane[2].z = sv;
- m_clip_plane[2].d = 0.0f;
- // bottom
- m_clip_plane[3].x = 0.0f;
- m_clip_plane[3].y = -cv;
- m_clip_plane[3].z = sv;
- m_clip_plane[3].d = 0.0f;
+void taitotz_renderer::draw(bitmap_rgb32 &bitmap, const rectangle &cliprect)
+{
+ wait();
+ copybitmap(bitmap, *m_fb, 0, 0, 0, 0, cliprect);
- // Z-near
- m_clip_plane[4].x = 0.0f;
- m_clip_plane[4].y = 0.0f;
- m_clip_plane[4].z = 1.0f;
- m_clip_plane[4].d = 0.1f;
+ float zvalue = 0.0f;
+ m_zbuffer->fill(*(int*)&zvalue, cliprect);
}
-void taitotz_renderer::render_displaylist(const rectangle &cliprect)
+void taitotz_renderer::push_tnl_fifo(UINT32 data)
{
- float zvalue = 0;//ZBUFFER_MAX;
- m_zbuffer->fill(*(int*)&zvalue, cliprect);
-
- const rectangle& visarea = m_state.m_screen->visible_area();
- vertex_t v[8];
-
- UINT32 *src = (UINT32*)&m_state.m_work_ram[0];
-
- UINT32 w[32];
- int j;
- int end = 0;
-
- UINT32 index = m_state.m_displist_addr / 4;
-
- setup_viewport(0, 0, 256, 192, 256, 192);
+ m_tnl_fifo[m_tnl_fifo_ptr] = data;
+ m_tnl_fifo_ptr++;
+ if (m_tnl_fifo_ptr >= 16)
+ {
+ m_matrix[0][0] = u2f(m_tnl_fifo[4]);
+ m_matrix[1][0] = u2f(m_tnl_fifo[5]);
+ m_matrix[2][0] = u2f(m_tnl_fifo[6]);
+ m_matrix[3][0] = u2f(m_tnl_fifo[7]);
+
+ m_matrix[0][1] = u2f(m_tnl_fifo[8]);
+ m_matrix[1][1] = u2f(m_tnl_fifo[9]);
+ m_matrix[2][1] = u2f(m_tnl_fifo[10]);
+ m_matrix[3][1] = u2f(m_tnl_fifo[11]);
+
+ m_matrix[0][2] = u2f(m_tnl_fifo[12]);
+ m_matrix[1][2] = u2f(m_tnl_fifo[13]);
+ m_matrix[2][2] = u2f(m_tnl_fifo[14]);
+ m_matrix[3][2] = u2f(m_tnl_fifo[15]);
+
+ float scale = u2f(m_tnl_fifo[1]);
+ if (scale < 1.0f)
+ scale *= 2.0f;
+
+ UINT32 alpha = m_tnl_fifo[2];
+ render_tnl_object(m_tnl_fifo[0] & 0x1fffff, scale, alpha);
+
+// printf("TNL FIFO: %08X, %f, %08X, %08X\n", m_tnl_fifo[0], u2f(m_tnl_fifo[1]), m_tnl_fifo[2], m_tnl_fifo[3]);
+ m_tnl_fifo_ptr = 0;
+ }
+}
- m_specular_r = 0xff;
- m_specular_g = 0xff;
- m_specular_b = 0xff;
- m_diffuse_r = 0;
- m_diffuse_g = 0;
- m_diffuse_b = 0;
- m_ambient_r = 0;
- m_ambient_g = 0;
- m_ambient_b = 0;
-
+void taitotz_renderer::push_direct_poly_fifo(UINT32 data)
+{
+ m_direct_fifo[m_direct_fifo_ptr] = data;
+ m_direct_fifo_ptr++;
-#if LOG_DISPLAY_LIST
- printf("--------------------------------------------\n");
- printf("Start of displist\n");
-#endif
+ int num_verts = ((m_direct_fifo[0] >> 8) & 0x7) + 1;
+ int expected_size;
+ switch ((m_direct_fifo[0] >> 8) & 0x7)
+ {
+ case 0: expected_size = 24; break;
+ case 2: expected_size = 16; break;
+ case 3: expected_size = 24; break;
+ case 4: expected_size = 24; break;
+ case 5: expected_size = 32; break;
+ case 6: expected_size = 32; break;
+ default: fatalerror("push_direct_poly_fifo: %08X, num_verts = %d\n", m_direct_fifo[0], num_verts); break;
+ }
- do
+ if (m_direct_fifo_ptr >= expected_size)
{
- UINT32 cmd = src[index^1];
- index++;
+ vertex_t v[8];
+ taitotz_polydata &extra = object_data_alloc();
- if (cmd == 0xffff0011)
+ int index = 4;
+ for (int i=0; i < num_verts; i++)
{
- for (j=0; j < 16; j++)
- {
- w[j] = src[index^1];
- index++;
- }
-
- m_matrix[0][0]= *(float*)&w[4];
- m_matrix[1][0]= *(float*)&w[5];
- m_matrix[2][0]= *(float*)&w[6];
- m_matrix[3][0]= *(float*)&w[7];
-
- m_matrix[0][1]= *(float*)&w[8];
- m_matrix[1][1]= *(float*)&w[9];
- m_matrix[2][1]= *(float*)&w[10];
- m_matrix[3][1]= *(float*)&w[11];
+ v[i].x = (m_direct_fifo[index+0] >> 16) & 0xffff;
+ v[i].y = m_direct_fifo[index+0] & 0xffff;
+ v[i].p[POLY_U] = (m_direct_fifo[index+2] >> 20) & 0xfff;
+ v[i].p[POLY_V] = (m_direct_fifo[index+2] >> 4) & 0xfff;
+ //UINT16 z = m_direct_fifo[index+1] & 0xffff;
- m_matrix[0][2]= *(float*)&w[12];
- m_matrix[1][2]= *(float*)&w[13];
- m_matrix[2][2]= *(float*)&w[14];
- m_matrix[3][2]= *(float*)&w[15];
-
- float scale = *(float*)&w[1];
- if (scale < 1.0f)
- scale *= 2;
-
- UINT32 alpha = w[2];
-
- draw_object(w[0] & 0x1fffff, scale, alpha);
-
-#if LOG_DISPLAY_LIST
- printf("0xffff0011: %08X, %08X, %08X, %08X\n", w[0], w[1], w[2], w[3]);
-#endif
- }
- else if (cmd == 0xffff0010)
- {
-#if LOG_DISPLAY_LIST
- printf("0xffff0010\n");
-#endif
- }
- else if (cmd == 0xffff0020)
- {
-#if LOG_DISPLAY_LIST
- printf("0xffff0020\n");
-#endif
+ index += 4;
}
- else if (cmd == 0xffff0021)
- {
- taitotz_polydata &extra = object_data_alloc();
-
- int num_verts;
- w[0] = src[index^1];
- index++;
- w[1] = src[index^1];
- index++;
- w[2] = src[index^1];
- index++;
- w[3] = src[index^1];
- index++;
- num_verts = ((w[0] >> 8) & 0xf) + 1;
-
- for (j=0; j < num_verts; j++)
- {
- w[4] = src[index^1];
- index++;
- w[5] = src[index^1];
- index++;
- w[6] = src[index^1];
- index++;
- w[7] = src[index^1];
- index++;
-
- UINT16 x = (w[4] >> 16) & 0xffff;
- UINT16 y = (w[4] >> 0) & 0xffff;
- UINT16 tu = (w[6] >> 20) & 0xfff;
- UINT16 tv = (w[6] >> 4) & 0xfff;
-// UINT16 z = (w[5] & 0xffff);
-
- v[j].x = x;
- v[j].y = y; // batlgear needs -50 modifier here (why?)
- v[j].p[POLY_U] = tu;
- v[j].p[POLY_V] = tv;
- }
-
- extra.texture = w[1] & 0x7ff;
-
- for (j=2; j < num_verts; j++)
- {
- render_triangle(visarea, render_delegate(FUNC(taitotz_renderer::draw_scanline_noz), this), 3, v[0], v[j-1], v[j]);
- }
+ extra.texture = m_direct_fifo[1] & 0x7ff;
-#if LOG_DISPLAY_LIST
- printf("0xffff0021: %08X, %08X, %08X, %08X\n", w[0], w[1], w[2], w[3]);
-#endif
- }
- else if (cmd == 0xffff0022)
+ for (int i=2; i < num_verts; i++)
{
- w[0] = src[index^1];
- index++;
-
-#if LOG_DISPLAY_LIST
- printf("0xffff0022: %08X\n", w[0]);
-#endif
+ render_triangle(m_cliprect, render_delegate(FUNC(taitotz_renderer::draw_scanline_noz), this), 3, v[0], v[i-1], v[i]);
}
- else if (cmd == 0xffff0030)
- {
- UINT32 address = src[index^1];
- index++;
- UINT32 num = src[index^1];
- index++;
-
-#if LOG_DISPLAY_LIST
- printf("0xffff0030: %08X = ", address);
-#endif
-
- int addr = address;
-
- for (j=0; j < num; j++)
- {
- UINT32 word = src[index^1];
- index++;
-
- if (addr == 0x100)
- {
- m_reg_100 = word;
- }
- else if (addr == 0x101)
- {
- m_reg_101 = word;
- }
- else if (addr == 0x102)
- {
- m_reg_102 = word;
- }
- else if (addr == 0x10000100)
- {
- m_reg_10000100 = word;
- }
- else if (addr == 0x10000101)
- {
- m_reg_10000101 = word;
- }
- else if (addr == 0x10000102)
- {
- m_diffuse_r = ((word >> (16+10)) & 0x1f) << 3;
- m_diffuse_g = ((word >> (16+5)) & 0x1f) << 3;
- m_diffuse_b = ((word >> 16) & 0x1f) << 3;
- m_ambient_r = ((word >> 10) & 0x1f) << 3;
- m_ambient_g = ((word >> 5) & 0x1f) << 3;
- m_ambient_b = (word & 0x1f) << 3;
- }
- addr++;
-
-#if LOG_DISPLAY_LIST
- printf("%08X, ", word);
-#endif
- }
-#if LOG_DISPLAY_LIST
- printf("\n");
-#endif
-
- if (address == 0x100)
- {
- int vpw = (m_reg_101 >> 16) & 0xffff;
- int vph = (m_reg_101 >> 0) & 0xffff;
- int xw = (m_reg_100 >> 0) & 0xffff;
- int xh = (m_reg_100 >> 16) & 0xffff;
-
- setup_viewport(xw, xh, vpw-xw, vph-xh, vpw, vph);
- }
-
- /*
- if (address == 0x10000100)
- {
- int in1 = (m_reg_10000100 >> 16) & 0x1ff;
- if (in1 & 0x100) in1 |= 0xfffffe00;
- int in2 = m_reg_10000100 & 0x1ff;
- if (in2 & 0x100) in2 |= 0xfffffe00;
- int in3 = m_reg_10000101 & 0x7f;
-
- float n1 = (float)(in1) / 127.0f;
- float n2 = (float)(in2) / 127.0f;
- float n3 = (float)(in3) / 127.0f;
- printf("UNK: %f, %f, %f\n", n1, n2, n3);
- }
- */
- }
- else if (cmd == 0xffff0080)
- {
- }
- else if (cmd == 0xffff00ff)
- {
- end = 1;
- w[0] = src[index^1];
- index++;
- w[1] = src[index^1];
- index++;
- }
- else
- {
-#if LOG_DISPLAY_LIST
- printf("%08X: %08X (unknown)\n", index, cmd);
-#endif
- end = 1;
- }
+ m_direct_fifo_ptr = 0;
}
- while (!end);
-
- wait("render_polygons");
}
UINT32 taitotz_state::screen_update_taitotz(screen_device &screen, bitmap_rgb32 &bitmap, const rectangle &cliprect)
{
- bitmap.fill(0x000000, cliprect);
- m_renderer->set_fb(&bitmap);
- m_renderer->render_displaylist(cliprect);
-
+ m_renderer->draw(bitmap, cliprect);
UINT16 *screen_src = (UINT16*)&m_screen_ram[m_scr_base];
@@ -1826,7 +1650,7 @@ READ64_MEMBER(taitotz_state::video_chip_r)
{
case 0x14:
{
- r |= 0xffffffff;
+ r |= 0xff; // more busy flags? (value & 0x11ff == 0xff expected)
break;
}
@@ -1982,13 +1806,36 @@ WRITE64_MEMBER(taitotz_state::video_fifo_w)
}
else if (command == 0x1)
{
- // FIFO command/packet write
+ // Direct Polygon FIFO
+
+ if (ACCESSING_BITS_32_63)
+ {
+ if (m_video_fifo_ptr >= 8)
+ {
+ m_renderer->push_direct_poly_fifo((UINT32)(data >> 32));
+ //logerror("FIFO packet w: %08X at %08X\n", (UINT32)(data >> 32), space.device().safe_pc());
+ }
+ m_video_fifo_ptr++;
+ }
+ if (ACCESSING_BITS_0_31)
+ {
+ if (m_video_fifo_ptr >= 8)
+ {
+ m_renderer->push_direct_poly_fifo((UINT32)(data));
+ //logerror("FIFO packet w: %08X at %08X\n", (UINT32)(data), space.device().safe_pc());
+ }
+ m_video_fifo_ptr++;
+ }
+ }
+ else if (command == 0x0)
+ {
+ // T&L FIFO
if (ACCESSING_BITS_32_63)
{
if (m_video_fifo_ptr >= 8)
{
- logerror("FIFO packet w: %08X at %08X\n", (UINT32)(data >> 32), space.device().safe_pc());
+ m_renderer->push_tnl_fifo((UINT32)(data >> 32));
}
m_video_fifo_ptr++;
}
@@ -1996,7 +1843,7 @@ WRITE64_MEMBER(taitotz_state::video_fifo_w)
{
if (m_video_fifo_ptr >= 8)
{
- logerror("FIFO packet w: %08X at %08X\n", (UINT32)(data), space.device().safe_pc());
+ m_renderer->push_tnl_fifo((UINT32)(data));
}
m_video_fifo_ptr++;
}
@@ -2169,6 +2016,30 @@ WRITE64_MEMBER(taitotz_state::ppc_common_w)
machine().scheduler().trigger(TLCS_PPC_COMM_TRIGGER);
}
}
+
+#if 0
+ // debug hookup
+ if ((m_io_share_ram[0xd82] & 0xff) == 0xff)
+ {
+ for (int i=0; i < 0x80; i++)
+ {
+ UINT16 w = m_io_share_ram[0x900+i];
+ printf("%c%c", w & 0xff, (w >> 8) & 0xff);
+ }
+ printf("\n");
+ m_io_share_ram[0xd82] = 0;
+ }
+ if ((m_io_share_ram[0xd8a] & 0xff) == 0xff)
+ {
+ for (int i=0; i < 0x80; i++)
+ {
+ UINT16 w = m_io_share_ram[0xb00+i];
+ printf("%c%c", w & 0xff, (w >> 8) & 0xff);
+ }
+ printf("\n");
+ m_io_share_ram[0xd8a] = 0;
+ }
+#endif
}
// BAT Config:
@@ -2739,6 +2610,12 @@ void taitotz_state::init_taitotz_152()
UINT32 *rom = (UINT32*)memregion("user1")->base();
rom[(0x2c87c^4)/4] = 0x38600000; // skip sound load timeout...
// rom[(0x2c620^4)/4] = 0x48000014; // ID check skip (not needed with correct serial number)
+
+#if 0
+ rom[(0x2c164^4)/4] = 0x39600001; // enable game debug output
+ rom[(0x2c174^4)/4] = 0x39200001; // enable game debug output
+ rom[(0x2c978^4)/4] = 0x48000028;
+#endif
}
// Init for BIOS 1.11a
@@ -2773,8 +2650,6 @@ DRIVER_INIT_MEMBER(taitotz_state,landhigh)
m_hdd_serial_number = LANDHIGH_HDD_SERIAL;
m_scr_base = 0x1c0000;
-
- m_displist_addr = 0x5200b8;
}
DRIVER_INIT_MEMBER(taitotz_state,batlgear)
@@ -2785,8 +2660,6 @@ DRIVER_INIT_MEMBER(taitotz_state,batlgear)
m_hdd_serial_number = nullptr;
m_scr_base = 0x1c0000;
-
- m_displist_addr = 0x420038;
}
DRIVER_INIT_MEMBER(taitotz_state,batlgr2)
@@ -2796,8 +2669,6 @@ DRIVER_INIT_MEMBER(taitotz_state,batlgr2)
m_hdd_serial_number = BATLGR2_HDD_SERIAL;
m_scr_base = 0x1e0000;
-
- m_displist_addr = 0x3608e4;
}
DRIVER_INIT_MEMBER(taitotz_state,batlgr2a)
@@ -2807,8 +2678,6 @@ DRIVER_INIT_MEMBER(taitotz_state,batlgr2a)
m_hdd_serial_number = BATLGR2A_HDD_SERIAL;
m_scr_base = 0x1e0000;
-
- m_displist_addr = 0x3608e4;
}
DRIVER_INIT_MEMBER(taitotz_state,pwrshovl)
@@ -2819,8 +2688,6 @@ DRIVER_INIT_MEMBER(taitotz_state,pwrshovl)
m_hdd_serial_number = nullptr;
m_scr_base = 0x1c0000;
-
- m_displist_addr = 0x4a989c;
}
DRIVER_INIT_MEMBER(taitotz_state,raizpin)
@@ -2830,8 +2697,6 @@ DRIVER_INIT_MEMBER(taitotz_state,raizpin)
m_hdd_serial_number = RAIZPIN_HDD_SERIAL;
m_scr_base = 0x1c0000;
-
- m_displist_addr = 0x33480c;
}
DRIVER_INIT_MEMBER(taitotz_state,raizpinj)
@@ -2841,8 +2706,6 @@ DRIVER_INIT_MEMBER(taitotz_state,raizpinj)
m_hdd_serial_number = RAIZPINJ_HDD_SERIAL;
m_scr_base = 0x1c0000;
-
- m_displist_addr = 0x33480c;
}
DRIVER_INIT_MEMBER(taitotz_state,styphp)
@@ -2852,8 +2715,6 @@ DRIVER_INIT_MEMBER(taitotz_state,styphp)
m_hdd_serial_number = STYPHP_HDD_SERIAL;
m_scr_base = 0x1e0000;
-
- m_displist_addr = 0x490b70;
}
@@ -2890,9 +2751,9 @@ Logical Cylinders 14,848
Logical Sectors/Track 63
Physical Heads 6
Physical Disks 3
-Sectors Per Drive 8,418,816
-Average Seek Time 10.0 ms (read)
-Buffer Size 128K
+Sectors Per Drive 8,418,816
+Average Seek Time 10.0 ms (read)
+Buffer Size 128K
*/
diff --git a/src/mame/drivers/tankbust.cpp b/src/mame/drivers/tankbust.cpp
index b7c4044cdc5..87d363612b7 100644
--- a/src/mame/drivers/tankbust.cpp
+++ b/src/mame/drivers/tankbust.cpp
@@ -1,4 +1,4 @@
-// license:???
+// license:GPL-2.0+
// copyright-holders:Jarek Burczynski
/***************************************************************************
diff --git a/src/mame/drivers/targeth.cpp b/src/mame/drivers/targeth.cpp
index 7715e634236..89c800b1581 100644
--- a/src/mame/drivers/targeth.cpp
+++ b/src/mame/drivers/targeth.cpp
@@ -204,6 +204,9 @@ ROM_START( targeth )
ROM_LOAD16_BYTE( "targeth.c23", 0x000000, 0x040000, CRC(840887d6) SHA1(9a36b346608d531a62a2e0704ea44f12e07f9d91) )
ROM_LOAD16_BYTE( "targeth.c22", 0x000001, 0x040000, CRC(d2435eb8) SHA1(ce75a115dad8019c8e66a1c3b3e15f54781f65ae) )
+ ROM_REGION( 0x10000, "mcu", 0 ) /* DS5002FP code */
+ ROM_LOAD( "targeth_ds5002fp.bin", 0x00000, 0x8000, NO_DUMP )
+
ROM_REGION( 0x200000, "gfx1", 0 ) /* Graphics */
ROM_LOAD( "targeth.i13", 0x000000, 0x080000, CRC(b892be24) SHA1(9cccaaacf20e77c7358f0ceac60b8a1012f1216c) )
ROM_LOAD( "targeth.i11", 0x080000, 0x080000, CRC(6797faf9) SHA1(112cffe72f91cb46c262e19a47b0cab3237dd60f) )
@@ -222,6 +225,9 @@ ROM_START( targetha )
ROM_LOAD16_BYTE( "c23.bin", 0x000000, 0x040000, CRC(e38a54e2) SHA1(239bfa6f1c0fc8aa0ad7de9be237bef55b384007) )
ROM_LOAD16_BYTE( "c22.bin", 0x000001, 0x040000, CRC(24fe3efb) SHA1(8f48f08a6db28966c9263be119883c9179e349ed) )
+ ROM_REGION( 0x10000, "mcu", 0 ) /* DS5002FP code */
+ ROM_LOAD( "targeth_ds5002fp.bin", 0x00000, 0x8000, NO_DUMP )
+
ROM_REGION( 0x200000, "gfx1", 0 ) /* Graphics */
ROM_LOAD( "targeth.i13", 0x000000, 0x080000, CRC(b892be24) SHA1(9cccaaacf20e77c7358f0ceac60b8a1012f1216c) )
ROM_LOAD( "targeth.i11", 0x080000, 0x080000, CRC(6797faf9) SHA1(112cffe72f91cb46c262e19a47b0cab3237dd60f) )
diff --git a/src/mame/drivers/tavernie.cpp b/src/mame/drivers/tavernie.cpp
index 4733eacb843..9c15b99f5c1 100644
--- a/src/mame/drivers/tavernie.cpp
+++ b/src/mame/drivers/tavernie.cpp
@@ -179,7 +179,6 @@ MACHINE_RESET_MEMBER( tavernie_state, cpu09)
MACHINE_RESET_MEMBER( tavernie_state, ivg09)
{
m_p_chargen = memregion("chargen")->base();
- m_beep->set_frequency(950); /* guess */
m_beep->set_state(1);
m_term_data = 0;
m_pia_ivg->cb1_w(1);
@@ -354,7 +353,7 @@ static MACHINE_CONFIG_DERIVED( ivg09, cpu09 )
MCFG_DEFAULT_LAYOUT(layout_tavernie)
/* sound hardware */
- MCFG_SOUND_ADD("beeper", BEEP, 0)
+ MCFG_SOUND_ADD("beeper", BEEP, 950) // guess
MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.50)
/* Devices */
diff --git a/src/mame/drivers/tb303.cpp b/src/mame/drivers/tb303.cpp
index 6788bb1257d..41b5f648a02 100644
--- a/src/mame/drivers/tb303.cpp
+++ b/src/mame/drivers/tb303.cpp
@@ -23,12 +23,9 @@ class tb303_state : public hh_ucom4_state
{
public:
tb303_state(const machine_config &mconfig, device_type type, const char *tag)
- : hh_ucom4_state(mconfig, type, tag),
- m_t3_off_timer(*this, "t3_off")
+ : hh_ucom4_state(mconfig, type, tag)
{ }
- required_device<timer_device> m_t3_off_timer;
-
UINT8 m_ram[0xc00];
UINT16 m_ram_address;
bool m_ram_ce;
@@ -43,37 +40,18 @@ public:
DECLARE_READ8_MEMBER(input_r);
void update_leds();
- TIMER_DEVICE_CALLBACK_MEMBER(t3_clock);
- TIMER_DEVICE_CALLBACK_MEMBER(t3_off);
+ TIMER_DEVICE_CALLBACK_MEMBER(tp3_clock) { m_maincpu->set_input_line(0, ASSERT_LINE); }
+ TIMER_DEVICE_CALLBACK_MEMBER(tp3_clear) { m_maincpu->set_input_line(0, CLEAR_LINE); }
virtual void machine_start() override;
};
+// TP2 to MCU CLK: LC circuit(TI S74230), stable sine wave, 2.2us interval
+#define TP2_HZ 454545
-/***************************************************************************
-
- Timer/Interrupt
-
-***************************************************************************/
-
-// T2 to MCU CLK: LC circuit, stable sine wave, 2.2us interval
-#define TB303_T2_CLOCK_HZ 454545 /* in hz */
-
-// T3 to MCU _INT: square wave, 1.8ms interval, short duty cycle
-#define TB303_T3_CLOCK attotime::from_usec(1800)
-#define TB303_T3_OFF (TB303_T3_CLOCK / 8)
-
-TIMER_DEVICE_CALLBACK_MEMBER(tb303_state::t3_off)
-{
- m_maincpu->set_input_line(0, CLEAR_LINE);
-}
-
-TIMER_DEVICE_CALLBACK_MEMBER(tb303_state::t3_clock)
-{
- m_maincpu->set_input_line(0, ASSERT_LINE);
- m_t3_off_timer->adjust(TB303_T3_OFF);
-}
-
+// TP3 to MCU _INT: square wave, 1.8ms interval, short duty cycle
+#define TP3_PERIOD attotime::from_usec(1800)
+#define TP3_LOW (TP3_PERIOD / 8)
/***************************************************************************
@@ -270,7 +248,7 @@ void tb303_state::machine_start()
static MACHINE_CONFIG_START( tb303, tb303_state )
/* basic machine hardware */
- MCFG_CPU_ADD("maincpu", NEC_D650, TB303_T2_CLOCK_HZ)
+ MCFG_CPU_ADD("maincpu", NEC_D650, TP2_HZ)
MCFG_UCOM4_READ_A_CB(READ8(tb303_state, input_r))
MCFG_UCOM4_READ_B_CB(READ8(tb303_state, input_r))
MCFG_UCOM4_READ_C_CB(READ8(tb303_state, ram_r))
@@ -282,15 +260,13 @@ static MACHINE_CONFIG_START( tb303, tb303_state )
MCFG_UCOM4_WRITE_H_CB(WRITE8(tb303_state, switch_w))
MCFG_UCOM4_WRITE_I_CB(WRITE8(tb303_state, strobe_w))
- MCFG_TIMER_DRIVER_ADD_PERIODIC("t3_clock", tb303_state, t3_clock, TB303_T3_CLOCK)
- MCFG_TIMER_START_DELAY(TB303_T3_CLOCK)
- MCFG_TIMER_DRIVER_ADD("t3_off", tb303_state, t3_off)
+ MCFG_TIMER_DRIVER_ADD_PERIODIC("tp3_clock", tb303_state, tp3_clock, TP3_PERIOD)
+ MCFG_TIMER_START_DELAY(TP3_PERIOD - TP3_LOW)
+ MCFG_TIMER_DRIVER_ADD_PERIODIC("tp3_clear", tb303_state, tp3_clear, TP3_PERIOD)
MCFG_TIMER_DRIVER_ADD_PERIODIC("display_decay", hh_ucom4_state, display_decay_tick, attotime::from_msec(1))
MCFG_DEFAULT_LAYOUT(layout_tb303)
- /* no video! */
-
/* sound hardware */
// discrete...
MACHINE_CONFIG_END
@@ -309,4 +285,4 @@ ROM_START( tb303 )
ROM_END
-CONS( 1982, tb303, 0, 0, tb303, tb303, driver_device, 0, "Roland", "TB-303", MACHINE_NOT_WORKING | MACHINE_NO_SOUND | MACHINE_SUPPORTS_SAVE )
+CONS( 1982, tb303, 0, 0, tb303, tb303, driver_device, 0, "Roland", "TB-303 Bass Line", MACHINE_NOT_WORKING | MACHINE_NO_SOUND | MACHINE_SUPPORTS_SAVE )
diff --git a/src/mame/drivers/thoop2.cpp b/src/mame/drivers/thoop2.cpp
index 0afe1ccf3d5..756d5a87bb5 100644
--- a/src/mame/drivers/thoop2.cpp
+++ b/src/mame/drivers/thoop2.cpp
@@ -221,6 +221,9 @@ ROM_START( thoop2 )
ROM_LOAD16_BYTE( "th2c23.040", 0x000000, 0x080000, CRC(3e465753) SHA1(1ea1173b9fe5d652e7b5fafb822e2535cecbc198) )
ROM_LOAD16_BYTE( "th2c22.040", 0x000001, 0x080000, CRC(837205b7) SHA1(f78b90c2be0b4dddaba26f074ea00eff863cfdb2) )
+ ROM_REGION( 0x10000, "mcu", 0 ) /* DS5002FP code */
+ ROM_LOAD( "thoop2_ds5002fp.bin", 0x00000, 0x8000, NO_DUMP )
+
ROM_REGION( 0x800000, "gfx1", 0 )
ROM_LOAD( "th2-h8.32m", 0x000000, 0x400000, CRC(60328a11) SHA1(fcdb374d2fc7ef5351a4181c471d192199dc2081) )
ROM_LOAD( "th2-h12.32m", 0x400000, 0x400000, CRC(b25c2d3e) SHA1(d70f3e4e2432d80c2ac87cd81208ada303bac04a) )
diff --git a/src/mame/drivers/thunderj.cpp b/src/mame/drivers/thunderj.cpp
index fac68c2a57e..0f4f00105f0 100644
--- a/src/mame/drivers/thunderj.cpp
+++ b/src/mame/drivers/thunderj.cpp
@@ -100,7 +100,7 @@ WRITE16_MEMBER(thunderj_state::latch_w)
if (m_alpha_tile_bank != ((data >> 2) & 7))
{
m_screen->update_partial(m_screen->vpos());
- m_vad->alpha()->mark_all_dirty();
+ m_vad->alpha().mark_all_dirty();
m_alpha_tile_bank = (data >> 2) & 7;
}
}
diff --git a/src/mame/drivers/ti99_4p.cpp b/src/mame/drivers/ti99_4p.cpp
index f934677565e..0f48e57772b 100644
--- a/src/mame/drivers/ti99_4p.cpp
+++ b/src/mame/drivers/ti99_4p.cpp
@@ -861,12 +861,10 @@ static MACHINE_CONFIG_START( ti99_4p_60hz, ti99_4p_state )
MCFG_TMS99xx_CLKOUT_HANDLER( WRITELINE(ti99_4p_state, clock_out) )
/* video hardware */
- // Although we should have a 60 Hz screen rate, we have to set it to 30 here.
- // The reason is that that the number of screen lines is counted twice for the
- // interlace mode, but in non-interlace modes only half of the lines are
- // painted. Accordingly, the full set of lines is refreshed at 30 Hz,
- // not 60 Hz. This should be fixed in the v9938 emulation.
- MCFG_TI_V9938_ADD(VIDEO_SYSTEM_TAG, 30, SCREEN_TAG, 2500, 512+32, (212+28)*2, ti99_4p_state, set_tms9901_INT2_from_v9938)
+ MCFG_DEVICE_ADD(VIDEO_SYSTEM_TAG, V9938VIDEO, 0)
+ MCFG_V9938_ADD(VDP_TAG, SCREEN_TAG, 0x20000, XTAL_21_4772MHz) /* typical 9938 clock, not verified */
+ MCFG_V99X8_INTERRUPT_CALLBACK(WRITELINE(ti99_4p_state, set_tms9901_INT2_from_v9938))
+ MCFG_V99X8_SCREEN_ADD_NTSC(SCREEN_TAG, VDP_TAG, XTAL_21_4772MHz)
// tms9901
MCFG_DEVICE_ADD(TMS9901_TAG, TMS9901, 3000000)
diff --git a/src/mame/drivers/ti99_4x.cpp b/src/mame/drivers/ti99_4x.cpp
index 2d9e11f4dc2..b8fcb75b3cb 100644
--- a/src/mame/drivers/ti99_4x.cpp
+++ b/src/mame/drivers/ti99_4x.cpp
@@ -1055,12 +1055,10 @@ static MACHINE_CONFIG_START( ti99_4ev_60hz, ti99_4x_state )
MCFG_MACHINE_START_OVERRIDE(ti99_4x_state, ti99_4a )
/* video hardware */
- // Although we should have a 60 Hz screen rate, we have to set it to 30 here.
- // The reason is that that the number of screen lines is counted twice for the
- // interlace mode, but in non-interlace modes only half of the lines are
- // painted. Accordingly, the full set of lines is refreshed at 30 Hz,
- // not 60 Hz. This should be fixed in the v9938 emulation.
- MCFG_TI_V9938_ADD(VIDEO_SYSTEM_TAG, 30, SCREEN_TAG, 2500, 512+32, (212+28)*2, ti99_4x_state, video_interrupt_in)
+ MCFG_DEVICE_ADD(VIDEO_SYSTEM_TAG, V9938VIDEO, 0)
+ MCFG_V9938_ADD(VDP_TAG, SCREEN_TAG, 0x20000, XTAL_21_4772MHz) /* typical 9938 clock, not verified */
+ MCFG_V99X8_INTERRUPT_CALLBACK(WRITELINE(ti99_4x_state, video_interrupt_in))
+ MCFG_V99X8_SCREEN_ADD_NTSC(SCREEN_TAG, VDP_TAG, XTAL_21_4772MHz)
/* Main board */
MCFG_DEVICE_ADD(TMS9901_TAG, TMS9901, 3000000)
diff --git a/src/mame/drivers/ticalc1x.cpp b/src/mame/drivers/ticalc1x.cpp
index cbc16d3d7b2..dcdea37827c 100644
--- a/src/mame/drivers/ticalc1x.cpp
+++ b/src/mame/drivers/ticalc1x.cpp
@@ -60,7 +60,7 @@ void ticalc1x_state::machine_start()
TI SR-16 (1974, first consumer product with TMS1000 series MCU)
* TMS1000 MCU labeled TMS1001NL (die labeled 1000, 1001A)
* 12-digit 7seg LED display
-
+
TI SR-16 II (1975 version)
* TMS1000 MCU labeled TMS1016NL (die labeled 1000B, 1016A)
* notes: cost-reduced 'sequel', [10^x] was removed, and [pi] was added.
@@ -283,11 +283,11 @@ MACHINE_CONFIG_END
TI-1250/TI-1200 (1976 version), TI-1400, TI-1450, TI-1205, TI-1255, LADY 1200, ABLE
* TMS0970 MCU labeled TMS0972NL ZA0348, JP0972A (die labeled 0970D-72A)
* 8-digit 7seg LED display, or 9 digits with leftmost unused
-
+
As seen listed above, the basic 4-function TMS0972 calculator MCU was used
in many calculators. It was licensed to other manufacturers too, one funny
example being a Mattel Barbie handheld calculator.
-
+
Some cheaper models lacked the memory buttons (the function itself still works).
The ABLE series was for educational purposes, with each having a small subset of
available buttons.
diff --git a/src/mame/drivers/timex.cpp b/src/mame/drivers/timex.cpp
index ee30790defb..64c03c69713 100644
--- a/src/mame/drivers/timex.cpp
+++ b/src/mame/drivers/timex.cpp
@@ -212,9 +212,13 @@ WRITE8_MEMBER( spectrum_state::ts2068_port_ff_w )
*******************************************************************/
void spectrum_state::ts2068_update_memory()
{
- UINT8 *messram = m_ram->pointer();
+ UINT8 *messram = nullptr;
+ if (m_ram) messram = m_ram->pointer();
address_space &space = m_maincpu->space(AS_PROGRAM);
- UINT8 *DOCK = m_dock_crt->base();
+ UINT8 *DOCK = nullptr;
+ if (m_dock_crt) DOCK = m_dock_crt->base();
+
+
UINT8 *ExROM = memregion("maincpu")->base() + 0x014000;
UINT8 *ChosenROM;
diff --git a/src/mame/drivers/tispeak.cpp b/src/mame/drivers/tispeak.cpp
index 6726b44f29e..0bfc1888c5c 100644
--- a/src/mame/drivers/tispeak.cpp
+++ b/src/mame/drivers/tispeak.cpp
@@ -34,7 +34,7 @@ Wiz-A-Tron or Little Professor. But the popularity of this product was much
above expectations. TI continued to manufacture many products for this line.
Speak & Spell (US), 1978
- - MCU: TMC0271*
+ - MCU: TMC0271*, labeled TMC0271NL (die label unknown)
- TMS51xx: TMC0281
- VSM(1/2): 16KB TMC0351NL
- VSM(2/2): 16KB TMC0352NL
@@ -42,12 +42,12 @@ above expectations. TI continued to manufacture many products for this line.
- notes: keyboard has buttons instead of cheap membrane
Speak & Spell (US), 1979
- - MCU: TMC0271* (different from 1978 version)
+ - MCU: TMC0271, labeled TMC0271H-N2L (die labeled 0271H T0270D)
- TMS51xx: TMC0281
- VSM(1/2): 16KB TMC0351N2L
- VSM(2/2): 16KB TMC0352N2L
- notes: fixed a funny bug with gibberish-talk when Module button is pressed
- with no module inserted
+ with no module inserted, MCU ROM contents differs from 1978 version
Speak & Spell (US), 1980
- MCU: same as 1979 version
@@ -56,7 +56,7 @@ above expectations. TI continued to manufacture many products for this line.
- notes: only 1 VSM, meaning much smaller internal vocabulary
Speak & Spell (Japan), 1980
- - MCU: TMC0271* (assume same as US 1978 or 1979 version)
+ - MCU: TMC0271 (assume same as US 1979 version)
- TMS51xx: TMC0281
- VSM(1/2): 16KB CD2321
- VSM(2/2): 16KB CD2322
@@ -73,14 +73,14 @@ above expectations. TI continued to manufacture many products for this line.
word 'butcher' took 3 days - I still don't know if it sounds right."
Speak & Spell (UK), 1981
- - MCU: TMC0271* (assume same as US 1979 version)
+ - MCU: TMC0271 (assume same as US 1979 version)
- TMS51xx: CD2801
- VSM: 16KB CD62175
- - VFD: same as Speak & Math(!)
+ - VFD: some seen with the one from Speak & Math(!)
- notes: this one has a dedicated voice actor
Speak & Spell (France) "La Dictee Magique", 1980
- - MCU: CD2702*
+ - MCU: CD2702, labeled CD2702AN2L (die labeled TMC0270F 2702A)
- TMS51xx: CD2801
- VSM: 16KB CD2352
@@ -102,7 +102,8 @@ above expectations. TI continued to manufacture many products for this line.
- notes: no display, MCU is TMS1100 instead of TMS0270, overall similar to Touch & Tell
Speak & Spell Compact (UK) "Speak & Write", 1981
- - MCU & TMS51xx: same as US 1981 version
+ - MCU: same as US 1981 version
+ - TMS51xx: CD2801A
- VSM: 16KB CD62174(rev.A)
- notes: BTANB: gibberish when the module button is pressed (with module present),
anecdotes from the developer, the same person working on the original UK version:
@@ -142,7 +143,7 @@ Note that they are interchangeable, eg. you can use a French module on a US Spea
Speak & Math:
Speak & Math (US), 1980 (renamed to "Speak & Maths" in UK, but is the same product)
- - MCU: CD2704*
+ - MCU: CD2704, labeled CD2704B-N2L (die labeled TMC0270F 2704B) - 2nd revision?(mid-1982)
- TMS51xx: CD2801
- VSM(1/2): 16KB CD2392
- VSM(2/2): 16KB CD2393
@@ -169,7 +170,7 @@ Speak & Math:
Speak & Read:
Speak & Read (US), 1980
- - MCU: CD2705, labeled CD2705B-N2L (die labeled TMC0270E 2705B) - 2nd revision?
+ - MCU: CD2705, labeled CD2705B-N2L (die labeled TMC0270E 2705B) - 2nd revision?(late-1981)
- TMS51xx: CD2801
- VSM(1/2): 16KB CD2394(rev.A)
- VSM(2/2): 16KB CD2395(rev.A)
@@ -350,10 +351,38 @@ Language Tutor modules:
- English(4/4): VSM: 16KB CD3529
+Other manufacturers:
+
+Tiger Electronics K28 (model 7-232) Sold in Hong Kong, distributed in US as:
+- Coleco: Talking Teacher
+- Sears: Talkatron - Learning Computer
+
+Earlier K28 models 7-230 and 7-231 are on different hardware, showing a different
+keyboard, VFD display, and use the SC-01 speech chip.
+
+ K28 model 7-232 (HK), 1985
+ - MCU: TMS1400 MP7324
+ - TMS51xx: TMS5110A
+ - VSM: 16KB CM62084
+ - LCD: unknown 8*16-seg
+
+K28 modules:
+
+ - Spelling I: VSM: 16KB CM62086
+ - Spelling II: VSM: 16KB CM62085?
+ - Spelling III: VSM: 16KB CM62087
+ - Expansion Module 1: VSM: 16KB CM62214? - assumed same VSM as CM62086
+ - Expansion Module 2: VSM: 16KB CM62216 - assumed same VSM as the one in Spelling II
+ - Expansion Module 3: VSM: 16KB CM62215 - same VSM as CM62087
+ - Expansion Module 4: VSM: 16KB CM62217
+ - Expansion Module 5: VSM: 16KB CM62218*
+ - Expansion Module 6: VSM: 16KB CM62219
+
----------------------------------------------------------------------------
TODO:
- why doesn't lantutor work?
+ - identify and emulate k28 LCD
- emulate other known devices
@@ -367,6 +396,7 @@ Language Tutor modules:
#include "softlist.h"
// internal artwork
+#include "k28.lh"
#include "lantutor.lh"
#include "snmath.lh"
#include "snspell.lh"
@@ -411,6 +441,11 @@ public:
DECLARE_WRITE16_MEMBER(snspellc_write_r);
DECLARE_READ8_MEMBER(tntell_read_k);
+ void k28_prepare_display(UINT8 old, UINT8 data);
+ DECLARE_READ8_MEMBER(k28_read_k);
+ DECLARE_WRITE16_MEMBER(k28_write_o);
+ DECLARE_WRITE16_MEMBER(k28_write_r);
+
// cartridge
UINT32 m_cart_max_size;
UINT8* m_cart_base;
@@ -630,6 +665,46 @@ TIMER_DEVICE_CALLBACK_MEMBER(tispeak_state::tntell_get_overlay)
}
+// k28 specific
+
+void tispeak_state::k28_prepare_display(UINT8 old, UINT8 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);
+
+ // R0: TMS5100 PDC pin
+ m_tms5100->pdc_w(data & 1);
+
+ // R5: input mux high bit
+ m_inp_mux = (m_inp_mux & 0xff) | (data << 3 & 0x100);
+
+ // R6: power-off request, on falling edge
+ if ((m_r >> 6 & 1) && !(data >> 6 & 1))
+ power_off();
+
+ // R7-R10: LCD data
+ k28_prepare_display(m_r >> 7 & 0xf, data >> 7 & 0xf);
+ m_r = data;
+}
+
+WRITE16_MEMBER(tispeak_state::k28_write_o)
+{
+ // O0-O7: input mux low
+ m_inp_mux = (m_inp_mux & ~0xff) | data;
+}
+
+READ8_MEMBER(tispeak_state::k28_read_k)
+{
+ // K: TMS5100 CTL, multiplexed inputs
+ return m_tms5100->ctl_r(space, 0) | read_inputs(9);
+}
+
+
/***************************************************************************
@@ -798,7 +873,7 @@ static INPUT_PORTS_START( snmath )
PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_KEYPAD ) PORT_CODE(KEYCODE_PLUS_PAD) PORT_NAME("+")
PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_KEYPAD ) PORT_CODE(KEYCODE_MINUS_PAD) PORT_NAME("-")
PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_KEYPAD ) PORT_CODE(KEYCODE_ASTERISK) PORT_NAME(UTF8_MULTIPLY)
- PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_KEYPAD ) PORT_CODE(KEYCODE_SLASH_PAD) PORT_NAME(UTF8_DIVIDE) // /
+ PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_KEYPAD ) PORT_CODE(KEYCODE_SLASH_PAD) PORT_NAME(UTF8_DIVIDE)
PORT_BIT( 0x10, IP_ACTIVE_HIGH, IPT_KEYPAD ) PORT_CODE(KEYCODE_E) PORT_NAME("Mix It")
PORT_START("IN.6") // R6
@@ -1030,6 +1105,63 @@ static INPUT_PORTS_START( tntell )
INPUT_PORTS_END
+static INPUT_PORTS_START( k28 )
+ PORT_START("IN.0") // O0
+ PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_PGDN) PORT_NAME("Off") // -> auto_power_off
+ PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_A) PORT_CODE(KEYCODE_1) PORT_CODE(KEYCODE_1_PAD) PORT_CHAR('A') PORT_NAME("A/1")
+ PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_J) PORT_CODE(KEYCODE_0) PORT_CODE(KEYCODE_0_PAD) PORT_CHAR('J') PORT_NAME("J/0")
+ PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_S) PORT_CHAR('S')
+
+ PORT_START("IN.1") // O1
+ PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_PGUP) PORT_NAME("On") PORT_CHANGED_MEMBER(DEVICE_SELF, tispeak_state, power_button, (void *)true)
+ PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_B) PORT_CODE(KEYCODE_2) PORT_CODE(KEYCODE_2_PAD) PORT_CHAR('B') PORT_NAME("B/2")
+ PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_K) PORT_CODE(KEYCODE_PLUS_PAD) PORT_CHAR('K') PORT_NAME("K/+")
+ PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_T) PORT_CHAR('T')
+
+ PORT_START("IN.2") // O2
+ PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_MINUS) PORT_NAME("Repeat")
+ PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_C) PORT_CODE(KEYCODE_3) PORT_CODE(KEYCODE_3_PAD) PORT_CHAR('C') PORT_NAME("C/3")
+ PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_L) PORT_CODE(KEYCODE_MINUS_PAD) PORT_CHAR('L') PORT_NAME("L/-")
+ PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_U) PORT_CHAR('U')
+
+ PORT_START("IN.3") // O3
+ PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_EQUALS) PORT_NAME("Prompt")
+ PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_D) PORT_CODE(KEYCODE_4) PORT_CODE(KEYCODE_4_PAD) PORT_CHAR('D') PORT_NAME("D/4")
+ PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_M) PORT_CODE(KEYCODE_ASTERISK) PORT_CHAR('M') PORT_NAME("M/" UTF8_MULTIPLY)
+ PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_V) PORT_CHAR('V')
+
+ PORT_START("IN.4") // O4
+ PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_HOME) PORT_NAME("Menu")
+ PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_E) PORT_CODE(KEYCODE_5) PORT_CODE(KEYCODE_5_PAD) PORT_CHAR('E') PORT_NAME("E/5")
+ PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_N) PORT_CODE(KEYCODE_SLASH_PAD) PORT_CHAR('N') PORT_NAME("N/" UTF8_DIVIDE)
+ PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_W) PORT_CHAR('W')
+
+ PORT_START("IN.5") // O5
+ PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_END) PORT_NAME("Module")
+ PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_F) PORT_CODE(KEYCODE_6) PORT_CODE(KEYCODE_6_PAD) PORT_CHAR('F') PORT_NAME("F/6")
+ PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_O) PORT_CHAR('O')
+ PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_X) PORT_CHAR('X')
+
+ PORT_START("IN.6") // O6
+ PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_SPACE) PORT_NAME("Select")
+ PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_G) PORT_CODE(KEYCODE_7) PORT_CODE(KEYCODE_7_PAD) PORT_CHAR('G') PORT_NAME("G/7")
+ PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_P) PORT_CHAR('P')
+ PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_Y) PORT_CHAR('Y')
+
+ PORT_START("IN.7") // O7
+ PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_DEL) PORT_CODE(KEYCODE_BACKSPACE) PORT_NAME("Clear")
+ PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_H) PORT_CODE(KEYCODE_8) PORT_CODE(KEYCODE_8_PAD) PORT_CHAR('H') PORT_NAME("H/8")
+ PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_Q) PORT_CHAR('Q')
+ PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_Z) PORT_CHAR('Z')
+
+ PORT_START("IN.8") // R5
+ PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_QUOTE) PORT_CHAR('\'')
+ PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_I) PORT_CODE(KEYCODE_9) PORT_CODE(KEYCODE_9_PAD) PORT_CHAR('I') PORT_NAME("I/9")
+ PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_R) PORT_CHAR('R')
+ PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_ENTER) PORT_CODE(KEYCODE_ENTER_PAD) PORT_NAME("Enter")
+INPUT_PORTS_END
+
+
/***************************************************************************
@@ -1170,6 +1302,13 @@ static MACHINE_CONFIG_START( snspellc, tispeak_state )
MCFG_SOFTWARE_LIST_ADD("cart_list", "snspell")
MACHINE_CONFIG_END
+static MACHINE_CONFIG_DERIVED( snspellcuk, snspellc )
+
+ /* sound hardware */
+ MCFG_SOUND_REPLACE("tms5100", CD2801, MASTER_CLOCK) // CD2801A!
+ MCFG_FRAGMENT_ADD(tms5110_route)
+MACHINE_CONFIG_END
+
static MACHINE_CONFIG_START( vocaid, tispeak_state )
@@ -1202,6 +1341,33 @@ static MACHINE_CONFIG_DERIVED( tntell, vocaid )
MACHINE_CONFIG_END
+static MACHINE_CONFIG_START( k28, tispeak_state )
+
+ /* basic machine hardware */
+ MCFG_CPU_ADD("maincpu", TMS1400, MASTER_CLOCK/2)
+ MCFG_TMS1XXX_READ_K_CB(READ8(tispeak_state, k28_read_k))
+ MCFG_TMS1XXX_WRITE_O_CB(WRITE16(tispeak_state, k28_write_o))
+ MCFG_TMS1XXX_WRITE_R_CB(WRITE16(tispeak_state, k28_write_r))
+
+ MCFG_TIMER_DRIVER_ADD_PERIODIC("display_decay", hh_tms1k_state, display_decay_tick, attotime::from_msec(1))
+ MCFG_DEFAULT_LAYOUT(layout_k28)
+
+ /* sound hardware */
+ MCFG_DEVICE_ADD("tms6100", TMS6100, MASTER_CLOCK/4)
+
+ MCFG_SPEAKER_STANDARD_MONO("mono")
+ MCFG_SOUND_ADD("tms5100", TMS5110A, MASTER_CLOCK)
+ MCFG_FRAGMENT_ADD(tms5110_route)
+
+ /* cartridge */
+ MCFG_GENERIC_CARTSLOT_ADD("cartslot", generic_plain_slot, "k28")
+ MCFG_GENERIC_EXTENSIONS("vsm")
+ MCFG_GENERIC_LOAD(tispeak_state, tispeak_cartridge)
+
+ MCFG_SOFTWARE_LIST_ADD("cart_list", "k28")
+MACHINE_CONFIG_END
+
+
/***************************************************************************
@@ -1209,50 +1375,64 @@ MACHINE_CONFIG_END
***************************************************************************/
-#define rom_snspellp rom_snspell // until we have a correct dump
-
ROM_START( snspell )
ROM_REGION( 0x1000, "maincpu", 0 )
+ ROM_LOAD( "tmc0271h-n2l", 0x0000, 0x1000, CRC(f83b5d2d) SHA1(10155b0b7f7f1583c7def8a693553cd35944ea6f) )
+
+ ROM_REGION( 1246, "maincpu:ipla", 0 )
+ ROM_LOAD( "tms0980_common1_instr.pla", 0, 1246, CRC(42db9a38) SHA1(2d127d98028ec8ec6ea10c179c25e447b14ba4d0) )
+ ROM_REGION( 2127, "maincpu:mpla", 0 )
+ ROM_LOAD( "tms0270_common2_micro.pla", 0, 2127, CRC(86737ac1) SHA1(4aa0444f3ddf88738ea74aec404c684bf54eddba) )
+ ROM_REGION( 1246, "maincpu:opla", 0 )
+ ROM_LOAD( "tms0270_tmc0271h_output.pla", 0, 1246, CRC(2478c595) SHA1(9a8ac690902731e1e01533279a1c9223011e1537) )
+
+ ROM_REGION( 0x10000, "tms6100", ROMREGION_ERASEFF ) // 8000-bfff = space reserved for cartridge
+ ROM_LOAD( "tmc0351n2l.vsm", 0x0000, 0x4000, CRC(2d03b292) SHA1(a3e9a365307ae936c7472f720a7a8240741531d6) )
+ ROM_LOAD( "tmc0352n2l.vsm", 0x4000, 0x4000, CRC(a6d56883) SHA1(eebf9c07f2f9001679dec06c2367d4a50596d04b) )
+ROM_END
+
+ROM_START( snspellp )
+ ROM_REGION( 0x1000, "maincpu", 0 )
ROM_LOAD( "us4189779_tmc0271", 0x0000, 0x1000, CRC(d3f5a37d) SHA1(f75ab617a6067d4d3a954a9f86126d2089554df8) ) // typed in from patent US4189779, verified by 2 sources
ROM_REGION( 1246, "maincpu:ipla", 0 )
ROM_LOAD( "tms0980_common1_instr.pla", 0, 1246, CRC(42db9a38) SHA1(2d127d98028ec8ec6ea10c179c25e447b14ba4d0) )
ROM_REGION( 2127, "maincpu:mpla", 0 )
- ROM_LOAD( "tms0270_common1_micro.pla", 0, 2127, BAD_DUMP CRC(504b96bb) SHA1(67b691e7c0b97239410587e50e5182bf46475b43) ) // not verified
+ ROM_LOAD( "tms0270_common2_micro.pla", 0, 2127, CRC(86737ac1) SHA1(4aa0444f3ddf88738ea74aec404c684bf54eddba) )
ROM_REGION( 1246, "maincpu:opla", 0 )
- ROM_LOAD( "tms0270_tmc0271_output.pla", 0, 1246, CRC(9ebe12ab) SHA1(acb4e07ba26f2daca5f1c234885ac0371c7ce87f) )
+ ROM_LOAD( "tms0270_tmc0271_output.pla", 0, 1246, CRC(9ebe12ab) SHA1(acb4e07ba26f2daca5f1c234885ac0371c7ce87f) ) // using the one from 1st version
ROM_REGION( 0x10000, "tms6100", ROMREGION_ERASEFF ) // 8000-bfff = space reserved for cartridge
- ROM_LOAD( "tmc0351nl.vsm", 0x0000, 0x4000, CRC(beea3373) SHA1(8b0f7586d2f12c3d4a885fdb528cf23feffa1a3b) )
- ROM_LOAD( "tmc0352nl.vsm", 0x4000, 0x4000, CRC(d51f0587) SHA1(ddaa484be1bba5fef46b481cafae517e4acaa8ed) )
+ ROM_LOAD( "tmc0351nl.vsm", 0x0000, 0x4000, CRC(beea3373) SHA1(8b0f7586d2f12c3d4a885fdb528cf23feffa1a3b) ) // using the one from 1st version
+ ROM_LOAD( "tmc0352nl.vsm", 0x4000, 0x4000, CRC(d51f0587) SHA1(ddaa484be1bba5fef46b481cafae517e4acaa8ed) ) // "
ROM_END
ROM_START( snspellua )
ROM_REGION( 0x1000, "maincpu", 0 )
- ROM_LOAD( "us4189779_tmc0271", 0x0000, 0x1000, BAD_DUMP CRC(d3f5a37d) SHA1(f75ab617a6067d4d3a954a9f86126d2089554df8) ) // placeholder, use the one we have
+ ROM_LOAD( "tmc0271h-n2l", 0x0000, 0x1000, BAD_DUMP CRC(f83b5d2d) SHA1(10155b0b7f7f1583c7def8a693553cd35944ea6f) ) // placeholder, use the one we have
ROM_REGION( 1246, "maincpu:ipla", 0 )
ROM_LOAD( "tms0980_common1_instr.pla", 0, 1246, CRC(42db9a38) SHA1(2d127d98028ec8ec6ea10c179c25e447b14ba4d0) )
ROM_REGION( 2127, "maincpu:mpla", 0 )
- ROM_LOAD( "tms0270_common1_micro.pla", 0, 2127, BAD_DUMP CRC(504b96bb) SHA1(67b691e7c0b97239410587e50e5182bf46475b43) ) // not verified
+ ROM_LOAD( "tms0270_common2_micro.pla", 0, 2127, CRC(86737ac1) SHA1(4aa0444f3ddf88738ea74aec404c684bf54eddba) )
ROM_REGION( 1246, "maincpu:opla", 0 )
ROM_LOAD( "tms0270_tmc0271_output.pla", 0, 1246, CRC(9ebe12ab) SHA1(acb4e07ba26f2daca5f1c234885ac0371c7ce87f) )
ROM_REGION( 0x10000, "tms6100", ROMREGION_ERASEFF ) // 8000-bfff = space reserved for cartridge
- ROM_LOAD( "tmc0351n2l.vsm", 0x0000, 0x4000, CRC(2d03b292) SHA1(a3e9a365307ae936c7472f720a7a8240741531d6) )
- ROM_LOAD( "tmc0352n2l.vsm", 0x4000, 0x4000, CRC(a6d56883) SHA1(eebf9c07f2f9001679dec06c2367d4a50596d04b) )
+ ROM_LOAD( "tmc0351nl.vsm", 0x0000, 0x4000, CRC(beea3373) SHA1(8b0f7586d2f12c3d4a885fdb528cf23feffa1a3b) )
+ ROM_LOAD( "tmc0352nl.vsm", 0x4000, 0x4000, CRC(d51f0587) SHA1(ddaa484be1bba5fef46b481cafae517e4acaa8ed) )
ROM_END
ROM_START( snspellub )
ROM_REGION( 0x1000, "maincpu", 0 )
- ROM_LOAD( "us4189779_tmc0271", 0x0000, 0x1000, BAD_DUMP CRC(d3f5a37d) SHA1(f75ab617a6067d4d3a954a9f86126d2089554df8) ) // placeholder, use the one we have
+ ROM_LOAD( "tmc0271h-n2l", 0x0000, 0x1000, CRC(f83b5d2d) SHA1(10155b0b7f7f1583c7def8a693553cd35944ea6f) )
ROM_REGION( 1246, "maincpu:ipla", 0 )
ROM_LOAD( "tms0980_common1_instr.pla", 0, 1246, CRC(42db9a38) SHA1(2d127d98028ec8ec6ea10c179c25e447b14ba4d0) )
ROM_REGION( 2127, "maincpu:mpla", 0 )
- ROM_LOAD( "tms0270_common1_micro.pla", 0, 2127, BAD_DUMP CRC(504b96bb) SHA1(67b691e7c0b97239410587e50e5182bf46475b43) ) // not verified
+ ROM_LOAD( "tms0270_common2_micro.pla", 0, 2127, CRC(86737ac1) SHA1(4aa0444f3ddf88738ea74aec404c684bf54eddba) )
ROM_REGION( 1246, "maincpu:opla", 0 )
- ROM_LOAD( "tms0270_tmc0271_output.pla", 0, 1246, CRC(9ebe12ab) SHA1(acb4e07ba26f2daca5f1c234885ac0371c7ce87f) )
+ ROM_LOAD( "tms0270_tmc0271h_output.pla", 0, 1246, CRC(2478c595) SHA1(9a8ac690902731e1e01533279a1c9223011e1537) )
ROM_REGION( 0x10000, "tms6100", ROMREGION_ERASEFF ) // uses only 1 rom, 8000-bfff = space reserved for cartridge
ROM_LOAD( "cd2350a.vsm", 0x0000, 0x4000, CRC(2adda742) SHA1(3f868ed8284b723c815a30343057e03467c043b5) )
@@ -1260,12 +1440,12 @@ ROM_END
ROM_START( snspelluk )
ROM_REGION( 0x1000, "maincpu", 0 )
- ROM_LOAD( "us4189779_tmc0271", 0x0000, 0x1000, BAD_DUMP CRC(d3f5a37d) SHA1(f75ab617a6067d4d3a954a9f86126d2089554df8) ) // placeholder, use the one we have
+ ROM_LOAD( "tmc0271h-n2l", 0x0000, 0x1000, BAD_DUMP CRC(f83b5d2d) SHA1(10155b0b7f7f1583c7def8a693553cd35944ea6f) ) // placeholder, use the one we have
ROM_REGION( 1246, "maincpu:ipla", 0 )
ROM_LOAD( "tms0980_common1_instr.pla", 0, 1246, CRC(42db9a38) SHA1(2d127d98028ec8ec6ea10c179c25e447b14ba4d0) )
ROM_REGION( 2127, "maincpu:mpla", 0 )
- ROM_LOAD( "tms0270_common1_micro.pla", 0, 2127, BAD_DUMP CRC(504b96bb) SHA1(67b691e7c0b97239410587e50e5182bf46475b43) ) // not verified
+ ROM_LOAD( "tms0270_common2_micro.pla", 0, 2127, CRC(86737ac1) SHA1(4aa0444f3ddf88738ea74aec404c684bf54eddba) )
ROM_REGION( 1246, "maincpu:opla", 0 )
ROM_LOAD( "tms0270_tmc0271_output.pla", 0, 1246, CRC(9ebe12ab) SHA1(acb4e07ba26f2daca5f1c234885ac0371c7ce87f) )
@@ -1276,14 +1456,14 @@ ROM_END
ROM_START( snspelluka )
ROM_REGION( 0x1000, "maincpu", 0 )
- ROM_LOAD( "us4189779_tmc0271", 0x0000, 0x1000, BAD_DUMP CRC(d3f5a37d) SHA1(f75ab617a6067d4d3a954a9f86126d2089554df8) ) // placeholder, use the one we have
+ ROM_LOAD( "tmc0271h-n2l", 0x0000, 0x1000, CRC(f83b5d2d) SHA1(10155b0b7f7f1583c7def8a693553cd35944ea6f) )
ROM_REGION( 1246, "maincpu:ipla", 0 )
ROM_LOAD( "tms0980_common1_instr.pla", 0, 1246, CRC(42db9a38) SHA1(2d127d98028ec8ec6ea10c179c25e447b14ba4d0) )
ROM_REGION( 2127, "maincpu:mpla", 0 )
- ROM_LOAD( "tms0270_common1_micro.pla", 0, 2127, BAD_DUMP CRC(504b96bb) SHA1(67b691e7c0b97239410587e50e5182bf46475b43) ) // not verified
+ ROM_LOAD( "tms0270_common2_micro.pla", 0, 2127, CRC(86737ac1) SHA1(4aa0444f3ddf88738ea74aec404c684bf54eddba) )
ROM_REGION( 1246, "maincpu:opla", 0 )
- ROM_LOAD( "tms0270_tmc0271_output.pla", 0, 1246, CRC(9ebe12ab) SHA1(acb4e07ba26f2daca5f1c234885ac0371c7ce87f) )
+ ROM_LOAD( "tms0270_tmc0271h_output.pla", 0, 1246, CRC(2478c595) SHA1(9a8ac690902731e1e01533279a1c9223011e1537) )
ROM_REGION( 0x10000, "tms6100", ROMREGION_ERASEFF ) // uses only 1 rom, 8000-bfff = space reserved for cartridge
ROM_LOAD( "cd62175.vsm", 0x0000, 0x4000, CRC(6e1063d4) SHA1(b5c66c51148c5921ecb8ffccd7a460ae639cdb68) )
@@ -1291,14 +1471,14 @@ ROM_END
ROM_START( snspelljp )
ROM_REGION( 0x1000, "maincpu", 0 )
- ROM_LOAD( "us4189779_tmc0271", 0x0000, 0x1000, BAD_DUMP CRC(d3f5a37d) SHA1(f75ab617a6067d4d3a954a9f86126d2089554df8) ) // placeholder, use the one we have
+ ROM_LOAD( "tmc0271h-n2l", 0x0000, 0x1000, CRC(f83b5d2d) SHA1(10155b0b7f7f1583c7def8a693553cd35944ea6f) )
ROM_REGION( 1246, "maincpu:ipla", 0 )
ROM_LOAD( "tms0980_common1_instr.pla", 0, 1246, CRC(42db9a38) SHA1(2d127d98028ec8ec6ea10c179c25e447b14ba4d0) )
ROM_REGION( 2127, "maincpu:mpla", 0 )
- ROM_LOAD( "tms0270_common1_micro.pla", 0, 2127, BAD_DUMP CRC(504b96bb) SHA1(67b691e7c0b97239410587e50e5182bf46475b43) ) // not verified
+ ROM_LOAD( "tms0270_common2_micro.pla", 0, 2127, CRC(86737ac1) SHA1(4aa0444f3ddf88738ea74aec404c684bf54eddba) )
ROM_REGION( 1246, "maincpu:opla", 0 )
- ROM_LOAD( "tms0270_tmc0271_output.pla", 0, 1246, CRC(9ebe12ab) SHA1(acb4e07ba26f2daca5f1c234885ac0371c7ce87f) )
+ ROM_LOAD( "tms0270_tmc0271h_output.pla", 0, 1246, CRC(2478c595) SHA1(9a8ac690902731e1e01533279a1c9223011e1537) )
ROM_REGION( 0x10000, "tms6100", ROMREGION_ERASEFF ) // 8000-bfff = space reserved for cartridge
ROM_LOAD( "cd2321.vsm", 0x0000, 0x4000, CRC(ac010cce) SHA1(c0200d857b62be696248ac2d684a390c66ab0c31) )
@@ -1307,14 +1487,14 @@ ROM_END
ROM_START( snspellfr )
ROM_REGION( 0x1000, "maincpu", 0 )
- ROM_LOAD( "us4189779_tmc0271", 0x0000, 0x1000, BAD_DUMP CRC(d3f5a37d) SHA1(f75ab617a6067d4d3a954a9f86126d2089554df8) ) // placeholder, use the one we have
+ ROM_LOAD( "cd2702an2l", 0x0000, 0x1000, CRC(895d6a4e) SHA1(a8bc118c83a84260033734191dcaa71a93dfa52b) )
ROM_REGION( 1246, "maincpu:ipla", 0 )
ROM_LOAD( "tms0980_common1_instr.pla", 0, 1246, CRC(42db9a38) SHA1(2d127d98028ec8ec6ea10c179c25e447b14ba4d0) )
ROM_REGION( 2127, "maincpu:mpla", 0 )
- ROM_LOAD( "tms0270_common1_micro.pla", 0, 2127, BAD_DUMP CRC(504b96bb) SHA1(67b691e7c0b97239410587e50e5182bf46475b43) ) // not verified
+ ROM_LOAD( "tms0270_common1_micro.pla", 0, 2127, CRC(504b96bb) SHA1(67b691e7c0b97239410587e50e5182bf46475b43) )
ROM_REGION( 1246, "maincpu:opla", 0 )
- ROM_LOAD( "tms0270_tmc0271_output.pla", 0, 1246, BAD_DUMP CRC(9ebe12ab) SHA1(acb4e07ba26f2daca5f1c234885ac0371c7ce87f) ) // placeholder, use the one we have
+ ROM_LOAD( "tms0270_cd2702_output.pla", 0, 1246, CRC(2478c595) SHA1(9a8ac690902731e1e01533279a1c9223011e1537) )
ROM_REGION( 0x10000, "tms6100", ROMREGION_ERASEFF ) // uses only 1 rom, 8000-bfff = space reserved for cartridge
ROM_LOAD( "cd2352.vsm", 0x0000, 0x4000, CRC(181a239e) SHA1(e16043766c385e152b7005c1c010be4c5fccdd9b) )
@@ -1322,14 +1502,14 @@ ROM_END
ROM_START( snspellit )
ROM_REGION( 0x1000, "maincpu", 0 )
- ROM_LOAD( "us4189779_tmc0271", 0x0000, 0x1000, BAD_DUMP CRC(d3f5a37d) SHA1(f75ab617a6067d4d3a954a9f86126d2089554df8) ) // placeholder, use the one we have
+ ROM_LOAD( "cd2702an2l", 0x0000, 0x1000, CRC(895d6a4e) SHA1(a8bc118c83a84260033734191dcaa71a93dfa52b) )
ROM_REGION( 1246, "maincpu:ipla", 0 )
ROM_LOAD( "tms0980_common1_instr.pla", 0, 1246, CRC(42db9a38) SHA1(2d127d98028ec8ec6ea10c179c25e447b14ba4d0) )
ROM_REGION( 2127, "maincpu:mpla", 0 )
- ROM_LOAD( "tms0270_common1_micro.pla", 0, 2127, BAD_DUMP CRC(504b96bb) SHA1(67b691e7c0b97239410587e50e5182bf46475b43) ) // not verified
+ ROM_LOAD( "tms0270_common1_micro.pla", 0, 2127, CRC(504b96bb) SHA1(67b691e7c0b97239410587e50e5182bf46475b43) )
ROM_REGION( 1246, "maincpu:opla", 0 )
- ROM_LOAD( "tms0270_tmc0271_output.pla", 0, 1246, BAD_DUMP CRC(9ebe12ab) SHA1(acb4e07ba26f2daca5f1c234885ac0371c7ce87f) ) // placeholder, use the one we have
+ ROM_LOAD( "tms0270_cd2702_output.pla", 0, 1246, CRC(2478c595) SHA1(9a8ac690902731e1e01533279a1c9223011e1537) )
ROM_REGION( 0x10000, "tms6100", ROMREGION_ERASEFF ) // uses only 1 rom, 8000-bfff = space reserved for cartridge
ROM_LOAD( "cd62190.vsm", 0x0000, 0x4000, CRC(63832002) SHA1(ea8124b2bf0f5908c5f1a56d60063f2468a10143) )
@@ -1378,7 +1558,23 @@ ROM_END
ROM_START( snmath )
ROM_REGION( 0x1000, "maincpu", 0 )
- ROM_LOAD( "cd2708n2l", 0x0000, 0x1000, CRC(35937360) SHA1(69c362c75bb459056c09c7fab37c91040485474b) )
+ ROM_LOAD( "cd2704b-n2l", 0x0000, 0x1000, CRC(7e06c7c5) SHA1(d60a35a8163ab593c31afc840a0d8a9b3a762f29) )
+
+ ROM_REGION( 1246, "maincpu:ipla", 0 )
+ ROM_LOAD( "tms0980_common1_instr.pla", 0, 1246, CRC(42db9a38) SHA1(2d127d98028ec8ec6ea10c179c25e447b14ba4d0) )
+ ROM_REGION( 2127, "maincpu:mpla", 0 )
+ ROM_LOAD( "tms0270_common1_micro.pla", 0, 2127, CRC(504b96bb) SHA1(67b691e7c0b97239410587e50e5182bf46475b43) )
+ ROM_REGION( 1246, "maincpu:opla", 0 )
+ ROM_LOAD( "tms0270_cd2704_output.pla", 0, 1246, CRC(5a2eb949) SHA1(8bb161d4884f229af65f8d155e59b9d8966fe3d1) )
+
+ ROM_REGION( 0x8000, "tms6100", ROMREGION_ERASEFF )
+ ROM_LOAD( "cd2392.vsm", 0x0000, 0x4000, CRC(4ed2e920) SHA1(8896f29e25126c1e4d9a47c9a325b35dddecc61f) )
+ ROM_LOAD( "cd2393.vsm", 0x4000, 0x4000, CRC(571d5b5a) SHA1(83284755d9b77267d320b5b87fdc39f352433715) )
+ROM_END
+
+ROM_START( snmatha )
+ ROM_REGION( 0x1000, "maincpu", 0 )
+ ROM_LOAD( "cd2708-n2l", 0x0000, 0x1000, CRC(35937360) SHA1(69c362c75bb459056c09c7fab37c91040485474b) )
ROM_REGION( 1246, "maincpu:ipla", 0 )
ROM_LOAD( "tms0980_common1_instr.pla", 0, 1246, CRC(42db9a38) SHA1(2d127d98028ec8ec6ea10c179c25e447b14ba4d0) )
@@ -1404,13 +1600,13 @@ ROM_START( snmathp )
ROM_REGION( 1246, "maincpu:ipla", 0 )
ROM_LOAD( "tms0980_common1_instr.pla", 0, 1246, CRC(42db9a38) SHA1(2d127d98028ec8ec6ea10c179c25e447b14ba4d0) )
ROM_REGION( 2127, "maincpu:mpla", 0 )
- ROM_LOAD( "tms0270_common1_micro.pla", 0, 2127, BAD_DUMP CRC(504b96bb) SHA1(67b691e7c0b97239410587e50e5182bf46475b43) ) // not verified
+ ROM_LOAD( "tms0270_common1_micro.pla", 0, 2127, CRC(504b96bb) SHA1(67b691e7c0b97239410587e50e5182bf46475b43) )
ROM_REGION( 1246, "maincpu:opla", 0 )
- ROM_LOAD( "tms0270_cd2708_output.pla", 0, 1246, BAD_DUMP CRC(1abad753) SHA1(53d20b519ed73ce248368047a056836afbe3cd46) ) // taken from cd2708, need to verify if it's same as cd2704
+ ROM_LOAD( "tms0270_cd2704_output.pla", 0, 1246, CRC(5a2eb949) SHA1(8bb161d4884f229af65f8d155e59b9d8966fe3d1) ) // using the one from 1st version
ROM_REGION( 0x8000, "tms6100", ROMREGION_ERASEFF )
- ROM_LOAD( "cd2392.vsm", 0x0000, 0x4000, CRC(4ed2e920) SHA1(8896f29e25126c1e4d9a47c9a325b35dddecc61f) )
- ROM_LOAD( "cd2393.vsm", 0x4000, 0x4000, CRC(571d5b5a) SHA1(83284755d9b77267d320b5b87fdc39f352433715) )
+ ROM_LOAD( "cd2392.vsm", 0x0000, 0x4000, CRC(4ed2e920) SHA1(8896f29e25126c1e4d9a47c9a325b35dddecc61f) ) // using the one from 1st version
+ ROM_LOAD( "cd2393.vsm", 0x4000, 0x4000, CRC(571d5b5a) SHA1(83284755d9b77267d320b5b87fdc39f352433715) ) // "
ROM_END
@@ -1513,32 +1709,49 @@ ROM_START( vocaid )
ROM_END
+ROM_START( k28 )
+ ROM_REGION( 0x1000, "maincpu", 0 )
+ ROM_LOAD( "mp7324", 0x0000, 0x1000, CRC(08d15ab6) SHA1(5b0f6c53e6732a362c4bb25d966d4072fdd33db8) )
+
+ ROM_REGION( 867, "maincpu:mpla", 0 )
+ ROM_LOAD( "tms1100_common1_micro.pla", 0, 867, CRC(62445fc9) SHA1(d6297f2a4bc7a870b76cc498d19dbb0ce7d69fec) )
+ ROM_REGION( 557, "maincpu:opla", 0 )
+ ROM_LOAD( "tms1400_k28_output.pla", 0, 557, CRC(3a5c7005) SHA1(3fe5819c138a90e7fc12817415f2622ca81b40b2) )
+
+ ROM_REGION( 0x10000, "tms6100", ROMREGION_ERASEFF ) // 8000-bfff? = space reserved for cartridge
+ ROM_LOAD( "cm62084.vsm", 0x0000, 0x4000, CRC(cd1376f7) SHA1(96fa484c392c451599bc083b8376cad9c998df7d) )
+ROM_END
+
+
/* YEAR NAME PARENT COMPAT MACHINE INPUT INIT COMPANY, FULLNAME, FLAGS */
-COMP( 1978, snspell, 0, 0, sns_tmc0281, snspell, tispeak_state, snspell, "Texas Instruments", "Speak & Spell (US, 1978 version)", MACHINE_SUPPORTS_SAVE | MACHINE_IMPERFECT_SOUND | MACHINE_NOT_WORKING ) // incomplete dump, uses patent MCU ROM
+COMP( 1979, snspell, 0, 0, sns_tmc0281, snspell, tispeak_state, snspell, "Texas Instruments", "Speak & Spell (US, 1979 version)", MACHINE_SUPPORTS_SAVE | MACHINE_IMPERFECT_SOUND )
COMP( 1978, snspellp, snspell, 0, sns_tmc0281, snspell, tispeak_state, snspell, "Texas Instruments", "Speak & Spell (US, patent)", MACHINE_SUPPORTS_SAVE | MACHINE_IMPERFECT_SOUND )
-COMP( 1979, snspellua, snspell, 0, sns_tmc0281, snspell, tispeak_state, snspell, "Texas Instruments", "Speak & Spell (US, 1979 version)", MACHINE_SUPPORTS_SAVE | MACHINE_IMPERFECT_SOUND | MACHINE_NOT_WORKING ) // "
-COMP( 1980, snspellub, snspell, 0, sns_tmc0281d, snspell, tispeak_state, snspell, "Texas Instruments", "Speak & Spell (US, 1980 version)", MACHINE_SUPPORTS_SAVE | MACHINE_IMPERFECT_SOUND | MACHINE_NOT_WORKING ) // "
-COMP( 1978, snspelluk, snspell, 0, sns_tmc0281, snspell, tispeak_state, snspell, "Texas Instruments", "Speak & Spell (UK, 1978 version)", MACHINE_SUPPORTS_SAVE | MACHINE_IMPERFECT_SOUND | MACHINE_NOT_WORKING ) // "
-COMP( 1981, snspelluka, snspell, 0, sns_cd2801_m, snspell, tispeak_state, snspell, "Texas Instruments", "Speak & Spell (UK, 1981 version)", MACHINE_SUPPORTS_SAVE | MACHINE_IMPERFECT_SOUND | MACHINE_NOT_WORKING ) // "
-COMP( 1979, snspelljp, snspell, 0, sns_tmc0281, snspell, tispeak_state, snspell, "Texas Instruments", "Speak & Spell (Japan)", MACHINE_SUPPORTS_SAVE | MACHINE_IMPERFECT_SOUND | MACHINE_NOT_WORKING ) // "
-COMP( 1980, snspellfr, snspell, 0, sns_cd2801, snspellfr, tispeak_state, snspell, "Texas Instruments", "La Dictee Magique (France)", MACHINE_SUPPORTS_SAVE | MACHINE_IMPERFECT_SOUND | MACHINE_NOT_WORKING ) // doesn't work due to missing CD2702 MCU dump, German/Italian version has CD2702 too
-COMP( 1982, snspellit, snspell, 0, sns_cd2801_m, snspellit, tispeak_state, snspell, "Texas Instruments", "Grillo Parlante (Italy)", MACHINE_SUPPORTS_SAVE | MACHINE_IMPERFECT_SOUND | MACHINE_NOT_WORKING ) // "
+COMP( 1980, snspellub, snspell, 0, sns_tmc0281d, snspell, tispeak_state, snspell, "Texas Instruments", "Speak & Spell (US, 1980 version)", MACHINE_SUPPORTS_SAVE | MACHINE_IMPERFECT_SOUND )
+COMP( 1978, snspellua, snspell, 0, sns_tmc0281, snspell, tispeak_state, snspell, "Texas Instruments", "Speak & Spell (US, 1978 version)", MACHINE_SUPPORTS_SAVE | MACHINE_IMPERFECT_SOUND ) // incomplete dump, using 1979 MCU ROM instead
+COMP( 1978, snspelluk, snspell, 0, sns_tmc0281, snspell, tispeak_state, snspell, "Texas Instruments", "Speak & Spell (UK, 1978 version)", MACHINE_SUPPORTS_SAVE | MACHINE_IMPERFECT_SOUND ) // "
+COMP( 1981, snspelluka, snspell, 0, sns_cd2801, snspell, tispeak_state, snspell, "Texas Instruments", "Speak & Spell (UK, 1981 version)", MACHINE_SUPPORTS_SAVE | MACHINE_IMPERFECT_SOUND )
+COMP( 1979, snspelljp, snspell, 0, sns_tmc0281, snspell, tispeak_state, snspell, "Texas Instruments", "Speak & Spell (Japan)", MACHINE_SUPPORTS_SAVE | MACHINE_IMPERFECT_SOUND )
+COMP( 1980, snspellfr, snspell, 0, sns_cd2801, snspellfr, tispeak_state, snspell, "Texas Instruments", "La Dictee Magique (France)", MACHINE_SUPPORTS_SAVE | MACHINE_IMPERFECT_SOUND )
+COMP( 1982, snspellit, snspell, 0, sns_cd2801_m, snspellit, tispeak_state, snspell, "Texas Instruments", "Grillo Parlante (Italy)", MACHINE_SUPPORTS_SAVE | MACHINE_IMPERFECT_SOUND )
COMP( 1981, snspellc, 0, 0, snspellc, snspellc, tispeak_state, snspell, "Texas Instruments", "Speak & Spell Compact (US, 1981 version)", MACHINE_SUPPORTS_SAVE | MACHINE_IMPERFECT_SOUND )
COMP( 1982, snspellca, snspellc, 0, snspellc, snspellc, tispeak_state, snspell, "Texas Instruments", "Speak & Spell Compact (US, 1982 version)", MACHINE_SUPPORTS_SAVE | MACHINE_IMPERFECT_SOUND )
-COMP( 1982, snspellcuk, snspellc, 0, snspellc, snspellcuk, tispeak_state, snspell, "Texas Instruments", "Speak & Write (UK)", MACHINE_SUPPORTS_SAVE | MACHINE_IMPERFECT_SOUND )
+COMP( 1982, snspellcuk, snspellc, 0, snspellcuk, snspellcuk, tispeak_state, snspell, "Texas Instruments", "Speak & Write (UK)", MACHINE_SUPPORTS_SAVE | MACHINE_IMPERFECT_SOUND )
-COMP( 1986, snmath, 0, 0, snmath, snmath, driver_device, 0, "Texas Instruments", "Speak & Math (US, 1986 version)", MACHINE_SUPPORTS_SAVE | MACHINE_IMPERFECT_SOUND )
-COMP( 1980, snmathp, snmath, 0, snmath, snmath, driver_device, 0, "Texas Instruments", "Speak & Math (US, 1980 version/patent)", MACHINE_SUPPORTS_SAVE | MACHINE_IMPERFECT_SOUND | MACHINE_NOT_WORKING )
+COMP( 1980, snmath, 0, 0, snmath, snmath, driver_device, 0, "Texas Instruments", "Speak & Math (US, 1980 version)", MACHINE_SUPPORTS_SAVE | MACHINE_IMPERFECT_SOUND )
+COMP( 1986, snmatha, snmath, 0, snmath, snmath, driver_device, 0, "Texas Instruments", "Speak & Math (US, 1986 version)", MACHINE_SUPPORTS_SAVE | MACHINE_IMPERFECT_SOUND )
+COMP( 1980, snmathp, snmath, 0, snmath, snmath, driver_device, 0, "Texas Instruments", "Speak & Math (US, patent)", MACHINE_SUPPORTS_SAVE | MACHINE_IMPERFECT_SOUND | MACHINE_IS_INCOMPLETE )
COMP( 1980, snread, 0, 0, snread, snread, tispeak_state, snspell, "Texas Instruments", "Speak & Read (US)", MACHINE_SUPPORTS_SAVE | MACHINE_IMPERFECT_SOUND )
COMP( 1979, lantutor, 0, 0, lantutor, lantutor, tispeak_state, lantutor, "Texas Instruments", "Language Tutor (patent)", MACHINE_SUPPORTS_SAVE | MACHINE_IMPERFECT_SOUND | MACHINE_NOT_WORKING )
-COMP( 1981, tntell, 0, 0, tntell, tntell, tispeak_state, tntell, "Texas Instruments", "Touch & Tell (US, 1981 version)", MACHINE_SUPPORTS_SAVE | MACHINE_IMPERFECT_SOUND | MACHINE_REQUIRES_ARTWORK ) // assume there is an older version too, with CD8010 MCU
-COMP( 1980, tntellp, tntell, 0, tntell, tntell, tispeak_state, tntell, "Texas Instruments", "Touch & Tell (patent)", MACHINE_SUPPORTS_SAVE | MACHINE_IMPERFECT_SOUND | MACHINE_REQUIRES_ARTWORK | MACHINE_NOT_WORKING )
-COMP( 1981, tntelluk, tntell, 0, tntell, tntell, tispeak_state, tntell, "Texas Instruments", "Touch & Tell (UK)", MACHINE_SUPPORTS_SAVE | MACHINE_IMPERFECT_SOUND | MACHINE_REQUIRES_ARTWORK )
-COMP( 1981, tntellfr, tntell, 0, tntell, tntell, tispeak_state, tntell, "Texas Instruments", "Le Livre Magique (France)", MACHINE_SUPPORTS_SAVE | MACHINE_IMPERFECT_SOUND | MACHINE_REQUIRES_ARTWORK )
+COMP( 1981, tntell, 0, 0, tntell, tntell, tispeak_state, tntell, "Texas Instruments", "Touch & Tell (US)", MACHINE_SUPPORTS_SAVE | MACHINE_IMPERFECT_SOUND | MACHINE_CLICKABLE_ARTWORK | MACHINE_REQUIRES_ARTWORK )
+COMP( 1980, tntellp, tntell, 0, tntell, tntell, tispeak_state, tntell, "Texas Instruments", "Touch & Tell (US, patent)", MACHINE_SUPPORTS_SAVE | MACHINE_IMPERFECT_SOUND | MACHINE_CLICKABLE_ARTWORK | MACHINE_REQUIRES_ARTWORK | MACHINE_NOT_WORKING )
+COMP( 1981, tntelluk, tntell, 0, tntell, tntell, tispeak_state, tntell, "Texas Instruments", "Touch & Tell (UK)", MACHINE_SUPPORTS_SAVE | MACHINE_IMPERFECT_SOUND | MACHINE_CLICKABLE_ARTWORK | MACHINE_REQUIRES_ARTWORK )
+COMP( 1981, tntellfr, tntell, 0, tntell, tntell, tispeak_state, tntell, "Texas Instruments", "Le Livre Magique (France)", MACHINE_SUPPORTS_SAVE | MACHINE_IMPERFECT_SOUND | MACHINE_CLICKABLE_ARTWORK | MACHINE_REQUIRES_ARTWORK )
COMP( 1982, vocaid, 0, 0, vocaid, tntell, driver_device, 0, "Texas Instruments", "Vocaid", MACHINE_SUPPORTS_SAVE | MACHINE_IMPERFECT_SOUND | MACHINE_REQUIRES_ARTWORK )
+
+COMP( 1985, k28, 0, 0, k28, k28, tispeak_state, snspell, "Tiger Electronics", "K28: Talking Learning Computer (model 7-232)", MACHINE_SUPPORTS_SAVE | MACHINE_IMPERFECT_SOUND | MACHINE_NOT_WORKING )
diff --git a/src/mame/drivers/tmc1800.cpp b/src/mame/drivers/tmc1800.cpp
index 57d98fe40f5..8cf47eed402 100644
--- a/src/mame/drivers/tmc1800.cpp
+++ b/src/mame/drivers/tmc1800.cpp
@@ -863,7 +863,7 @@ void tmc1800_state::device_timer(emu_timer &timer, device_timer_id id, int param
{
case TIMER_SETUP_BEEP:
m_beeper->set_state(0);
- m_beeper->set_frequency(0);
+ m_beeper->set_clock(0);
break;
default:
assert_always(FALSE, "Unknown id in tmc1800_state::device_timer");
diff --git a/src/mame/drivers/tourvis.cpp b/src/mame/drivers/tourvis.cpp
index ca1a7f1fc9f..769171d5b2f 100644
--- a/src/mame/drivers/tourvis.cpp
+++ b/src/mame/drivers/tourvis.cpp
@@ -24,7 +24,7 @@
Ballistix
Be Ball
Bomberman
- ChÅzetsurinjin Beraboh Man (Super Foolish Man)
+ Chozetsurinjin Beraboh Man (Super Foolish Man)
Chuka Taisen
Columns
Coryoon
@@ -35,8 +35,8 @@
Devil Crash
* Die Hard
Dodge Ball
- * Doraemon Meikyuu Daisakusen
- * Doramon II
+ Doraemon Meikyuu Daisakusen
+ * Doraemon II
* Down Load
Dragon Spirit
Dungeon Explorer
@@ -458,7 +458,9 @@ MACHINE_CONFIG_END
ROM_SYSTEM_BIOS( 3, "52", "U4-52" ) \
ROMX_LOAD( "u4-52.ic29", 0x0000, 0x8000, CRC(ffd7b0fe) SHA1(d1804865c91e925a01b05cf441e8458a3db23f50), ROM_BIOS(4) ) \
ROM_SYSTEM_BIOS( 4, "43", "U4-43" ) \
- ROMX_LOAD( "u4-43.ic29", 0x0000, 0x8000, CRC(88da23f3) SHA1(9d24faa116129783e55c7f79a4a08902a236d5a6), ROM_BIOS(5) )
+ ROMX_LOAD( "u4-43.ic29", 0x0000, 0x8000, CRC(88da23f3) SHA1(9d24faa116129783e55c7f79a4a08902a236d5a6), ROM_BIOS(5) ) \
+ ROM_SYSTEM_BIOS( 5, "40", "U4-40" ) \
+ ROMX_LOAD( "u4-40.ic29", 0x0000, 0x8000, CRC(ba6290cc) SHA1(92b0e9f55791e892ec209de4fadd80faef370622), ROM_BIOS(6) )
ROM_START(tourvis)
@@ -469,7 +471,7 @@ ROM_END
-/* 1943 Kai */
+/* 1943 Kai */
ROM_START(tv1943)
ROM_REGION( 0x100000, "maincpu", 0 )
ROM_LOAD( "tourv_1943_kia.bin", 0x00000, 0x100000, CRC(de4672ab) SHA1(2da1ee082bfb920c632a95014208f11fb48c58e1) )
@@ -477,7 +479,7 @@ ROM_START(tv1943)
TOURVISION_BIOS
ROM_END
-/* Aero Blasters - Hudson / Kaneko */
+/* Aero Blasters - Hudson / Kaneko */
ROM_START(tvablast)
ROM_REGION( 0x100000, "maincpu", 0 )
ROM_LOAD( "tourv_ablast.bin", 0x00000, 0x100000, CRC(9302f6d0) SHA1(76ef27a6d639514ed261b9d65f37217f2989d1c0) )
@@ -485,7 +487,7 @@ ROM_START(tvablast)
TOURVISION_BIOS
ROM_END
-/* After Burner */
+/* After Burner */
ROM_START(tvaburn)
ROM_REGION( 0x100000, "maincpu", 0 )
ROM_LOAD( "tourv_afterburner.bin", 0x00000, 0x100000, CRC(5ce31322) SHA1(08918d443891bd70f1b0b0c739522b764b16bc96) )
@@ -493,7 +495,7 @@ ROM_START(tvaburn)
TOURVISION_BIOS
ROM_END
-/* Armed-F */
+/* Armed-F */
ROM_START(tvarmedf)
ROM_REGION( 0x100000, "maincpu", 0 )
ROM_LOAD( "tourv_armed-f.bin", 0x00000, 0x100000, CRC(056617f5) SHA1(d10eb80b8436b8d217170309647104181cca750a) )
@@ -501,7 +503,7 @@ ROM_START(tvarmedf)
TOURVISION_BIOS
ROM_END
-/* Ballistix */
+/* Ballistix */
ROM_START(tvbalstx)
ROM_REGION( 0x100000, "maincpu", 0 )
ROM_LOAD( "tourv_ballistix.bin", 0x00000, 0x100000, CRC(9d32ed98) SHA1(404cc3695940a7fdc802ac166ec564a858a894d0) )
@@ -509,7 +511,7 @@ ROM_START(tvbalstx)
TOURVISION_BIOS
ROM_END
-/* Be Ball */
+/* Be Ball */
ROM_START(tvbeball)
ROM_REGION( 0x100000, "maincpu", 0 )
ROM_LOAD( "tourv_be_ball.bin", 0x00000, 0x100000, CRC(4b1e2861) SHA1(bea449543284bb6f4b33b1fb4156cd18a782ad6a) )
@@ -517,7 +519,7 @@ ROM_START(tvbeball)
TOURVISION_BIOS
ROM_END
-/* Bomberman */
+/* Bomberman */
ROM_START(tvbomber)
ROM_REGION( 0x100000, "maincpu", 0 )
ROM_LOAD( "tourv_bomberman.bin", 0x00000, 0x100000, CRC(cfcabe78) SHA1(bdd1766fad43c6c76e1b0d6e8b4f0ba3363442d6) )
@@ -525,7 +527,7 @@ ROM_START(tvbomber)
TOURVISION_BIOS
ROM_END
-/* ChÅzetsurinjin Beraboh Man (Super Foolist Man) */
+/* Chozetsurinjin Beraboh Man (Super Foolist Man) */
ROM_START(tvbrabho)
ROM_REGION( 0x100000, "maincpu", 0 )
ROM_LOAD( "tourv_chozetsurinjin_beraboh_man.bin", 0x00000, 0x100000, CRC(1f80cf04) SHA1(121bfb9ba4de4d047b08442d900b7f351210dd48) )
@@ -533,7 +535,7 @@ ROM_START(tvbrabho)
TOURVISION_BIOS
ROM_END
-/* Chuka Taisen */
+/* Chuka Taisen */
ROM_START(tvtaisen)
ROM_REGION( 0x100000, "maincpu", 0 )
ROM_LOAD( "tourv_chuka_taisen.bin", 0x00000, 0x100000, CRC(3b9e9185) SHA1(96f9f82a9fa6ee2b92c0294e71d47886e27fdc06) )
@@ -549,7 +551,7 @@ ROM_START(tvcolumn)
TOURVISION_BIOS
ROM_END
-/* Coryoon */
+/* Coryoon */
ROM_START(tvcoryon)
ROM_REGION( 0x100000, "maincpu", 0 )
ROM_LOAD( "tourv_corycoon.bin", 0x00000, 0x100000, CRC(c377db91) SHA1(1585d886f775ed361b2558839e544660533e9297) )
@@ -557,7 +559,7 @@ ROM_START(tvcoryon)
TOURVISION_BIOS
ROM_END
-/* Daisenpu */
+/* Daisenpu */
ROM_START(tvdsenpu)
ROM_REGION( 0x100000, "maincpu", 0 )
ROM_LOAD( "tourv_daisenpu.bin", 0x00000, 0x100000, CRC(5a8cef75) SHA1(00f27127114e4f5bf69c81212e66948caaec755d) )
@@ -565,7 +567,7 @@ ROM_START(tvdsenpu)
TOURVISION_BIOS
ROM_END
-/* Dead Moon */
+/* Dead Moon */
ROM_START(tvdmoon)
ROM_REGION( 0x100000, "maincpu", 0 )
ROM_LOAD( "tourv_dead_moon.bin", 0x00000, 0x100000, CRC(b54793c1) SHA1(8899947092d9a02f3be61ac9c293642e83a015ec) )
@@ -573,7 +575,7 @@ ROM_START(tvdmoon)
TOURVISION_BIOS
ROM_END
-/* Devil Crash */
+/* Devil Crash */
ROM_START(tvdevilc)
ROM_REGION( 0x100000, "maincpu", 0 )
ROM_LOAD( "tourv_devil_crash.bin", 0x00000, 0x100000, CRC(c163e5c1) SHA1(2134b3943df87af556694dbe6c77b30723f9175a) )
@@ -581,7 +583,7 @@ ROM_START(tvdevilc)
TOURVISION_BIOS
ROM_END
-/* Dodge Ball */
+/* Dodge Ball */
ROM_START(tvdodgeb)
ROM_REGION( 0x100000, "maincpu", 0 )
ROM_LOAD( "tourv_dodge_ball.bin", 0x00000, 0x100000, CRC(7a12cf72) SHA1(c477bc5dae4e82a89766052f185afb73ca2234f3) )
@@ -589,7 +591,15 @@ ROM_START(tvdodgeb)
TOURVISION_BIOS
ROM_END
-/* Dragon Spirit */
+/* Doraemon Meikyuu Daisakusen */
+ROM_START(tvdormon)
+ ROM_REGION( 0x100000, "maincpu", 0 )
+ ROM_LOAD( "tourv_doreamon.bin", 0x00000, 0x100000, CRC(22e8b5ba) SHA1(f21101358df8625c39a5078b9f1b1a0215470bed) )
+
+ TOURVISION_BIOS
+ROM_END
+
+/* Dragon Spirit */
ROM_START(tvdrgnst)
ROM_REGION( 0x100000, "maincpu", 0 )
ROM_LOAD( "tourv_dragon_spirit.bin", 0x00000, 0x100000, CRC(5733951f) SHA1(0256b4c343a3ad1ca625c316a470cc91a5254e8e) )
@@ -610,7 +620,7 @@ ROM_START(tvdunexp)
TOURVISION_BIOS
ROM_END
-/* Final Blaster */
+/* Final Blaster */
ROM_START(tvfblast)
ROM_REGION( 0x100000, "maincpu", 0 )
ROM_LOAD( "tourv_final_blaster.bin", 0x00000, 0x100000, CRC(f5f7483c) SHA1(3933719bdd7a0c73cdad76de78d80463112b475a) )
@@ -626,7 +636,7 @@ ROM_START(tvflaptw)
TOURVISION_BIOS
ROM_END
-/* Final Match Tennis */
+/* Final Match Tennis */
ROM_START(tvftenis)
ROM_REGION( 0x100000, "maincpu", 0 )
ROM_LOAD( "tourv_final_match_tennis.bin", 0x00000, 0x100000, CRC(f83ed70f) SHA1(f566bd7a806c11f3d33ba0a976e36026a131e6fd) )
@@ -650,7 +660,7 @@ ROM_START(tvgomola)
TOURVISION_BIOS
ROM_END
-/* Gunhed */
+/* Gunhed */
ROM_START(tvgunhed)
ROM_REGION( 0x100000, "maincpu", 0 )
ROM_LOAD( "tourv_gunhed.bin", 0x00000, 0x100000, CRC(9baace99) SHA1(ab676ba72a80314e8cba3810789041d3cc6298f9) )
@@ -658,7 +668,7 @@ ROM_START(tvgunhed)
TOURVISION_BIOS
ROM_END
-/* Hana Taka Daka (Super Long Nose Goblin) */
+/* Hana Taka Daka (Super Long Nose Goblin) */
ROM_START(tvhtdaka)
ROM_REGION( 0x100000, "maincpu", 0 )
ROM_LOAD( "tourv_hana_taka_daka.bin", 0x00000, 0x100000, CRC(0fbfda5c) SHA1(02b2ce93ee5e2aaa11c8640ced15258d0d844e6f) )
@@ -674,7 +684,7 @@ ROM_START(tvjchan)
TOURVISION_BIOS
ROM_END
-/* jinmu Densho */
+/* jinmu Densho */
ROM_START(tvdensho)
ROM_REGION( 0x100000, "maincpu", 0 )
ROM_LOAD( "tourv_dinmu_densho.bin", 0x00000, 0x100000, CRC(411a8643) SHA1(46258042dcf6510404ebccaf47034421928f72a8) )
@@ -682,7 +692,7 @@ ROM_START(tvdensho)
TOURVISION_BIOS
ROM_END
-/* Kiki Kaikai */
+/* Kiki Kaikai */
ROM_START(tvkaikai)
ROM_REGION( 0x100000, "maincpu", 0 )
ROM_LOAD( "tourv_kiki_kaikai.bin", 0x00000, 0x100000, CRC(2bdd93f9) SHA1(9b08606865abb8cc8fa17a22becae34b172ff81a) )
@@ -690,7 +700,7 @@ ROM_START(tvkaikai)
TOURVISION_BIOS
ROM_END
-/* Ledgnd of Hero Tonma */
+/* Ledgnd of Hero Tonma */
ROM_START(tvtonma)
ROM_REGION( 0x100000, "maincpu", 0 )
ROM_LOAD( "tourv_legend_of_hero_tonma.bin", 0x00000, 0x100000, CRC(e7c2efe3) SHA1(5767bdfa5600b1586e49c17cebd0fd7ef2c5426c) )
@@ -706,7 +716,7 @@ ROM_START(tvlegaxe)
TOURVISION_BIOS
ROM_END
-/* Mizubaku Daibouken Liquid Kids */
+/* Mizubaku Daibouken Liquid Kids */
ROM_START(tvlqkids)
ROM_REGION( 0x100000, "maincpu", 0 )
ROM_LOAD( "tourv_liquid_kids.bin", 0x00000, 0x100000, CRC(23a8636d) SHA1(752e03dcf8617b5a39cd250f4db1fe13cd13b761) )
@@ -714,7 +724,7 @@ ROM_START(tvlqkids)
TOURVISION_BIOS
ROM_END
-/* Mr Heli */
+/* Mr Heli */
ROM_START(tvmrheli)
ROM_REGION( 0x100000, "maincpu", 0 )
ROM_LOAD( "tourv_mr_heli.bin", 0x00000, 0x100000, CRC(bf197c7a) SHA1(048f91f8ab86220a39ab146e531081950eaf1138) )
@@ -722,7 +732,7 @@ ROM_START(tvmrheli)
TOURVISION_BIOS
ROM_END
-/* Ninja Ryukenden */
+/* Ninja Ryukenden */
ROM_START(tvninjar)
ROM_REGION( 0x100000, "maincpu", 0 )
ROM_LOAD( "tourv_ninja_ryukenden.bin", 0x00000, 0x100000, CRC(d9cc00ca) SHA1(42d914d338d7d0073b5cc98a4e85729e86bbfad1) )
@@ -730,7 +740,7 @@ ROM_START(tvninjar)
TOURVISION_BIOS
ROM_END
-/* Operation Wolf */
+/* Operation Wolf */
ROM_START(tvopwolf)
ROM_REGION( 0x100000, "maincpu", 0 )
ROM_LOAD( "tourv_operation_wolf.bin", 0x00000, 0x100000, CRC(d4a755a9) SHA1(cd236ba0c3439ba2356cb270f56a41a52e0d6dc6) )
@@ -738,7 +748,7 @@ ROM_START(tvopwolf)
TOURVISION_BIOS
ROM_END
-/* Override */
+/* Override */
ROM_START(tvovride)
ROM_REGION( 0x100000, "maincpu", 0 )
ROM_LOAD( "tourv_override.bin", 0x00000, 0x100000, CRC(4dbbf4ef) SHA1(180a68f87a881db1d01ffa3566e0d2e28303d09e) )
@@ -746,7 +756,7 @@ ROM_START(tvovride)
TOURVISION_BIOS
ROM_END
-/* Pac-Land */
+/* Pac-Land */
ROM_START(tvpaclnd)
ROM_REGION( 0x100000, "maincpu", 0 )
ROM_LOAD( "tourv_pac-land.bin", 0x00000, 0x100000, CRC(32aee4e2) SHA1(900a918e73aaa1dc5752f851ebd85217e736109b) )
@@ -754,7 +764,7 @@ ROM_START(tvpaclnd)
TOURVISION_BIOS
ROM_END
-/* PC Genjin Punkic Cyborg */
+/* PC Genjin Punkic Cyborg */
ROM_START(tvpcybrg)
ROM_REGION( 0x100000, "maincpu", 0 )
ROM_LOAD( "tourv_pc_genijin_punkic_cyborg.bin", 0x00000, 0x100000, CRC(5dfdc8fd) SHA1(e4e263cf7c102837c7d669d27894085f3369dd9b) )
@@ -778,7 +788,7 @@ ROM_START(tvpow11)
TOURVISION_BIOS
ROM_END
-/* Power Drift */
+/* Power Drift */
ROM_START(tvpdrift)
ROM_REGION( 0x100000, "maincpu", 0 )
ROM_LOAD( "tourv_power_drift.bin", 0x00000, 0x100000, CRC(eb2fdf0b) SHA1(da2191dd6e9d186c10c1c4d415254b8d7c456159) )
@@ -801,7 +811,7 @@ ROM_START(tvpwlg4)
TOURVISION_BIOS
ROM_END
-/* Pro Yakyuu World Stadium '91 */
+/* Pro Yakyuu World Stadium '91 */
ROM_START(tvpros91)
ROM_REGION( 0x100000, "maincpu", 0 )
ROM_LOAD( "tourv_pro_yakyuu_world_stadium_91.bin", 0x00000, 0x100000, CRC(2a5f1283) SHA1(e5044e397e6ccbc5c5741fa3f073697b60116325) )
@@ -809,7 +819,7 @@ ROM_START(tvpros91)
TOURVISION_BIOS
ROM_END
-/* Psycho Chaser */
+/* Psycho Chaser */
ROM_START(tvpchasr)
ROM_REGION( 0x100000, "maincpu", 0 )
ROM_LOAD( "tourv_pyscho_chaser.bin", 0x00000, 0x100000, CRC(e0b65280) SHA1(83248975e9bea62e67b5314c663d372c12b08416) )
@@ -817,7 +827,7 @@ ROM_START(tvpchasr)
TOURVISION_BIOS
ROM_END
-/* Puzzle Boy */
+/* Puzzle Boy */
ROM_START(tvpzlboy)
ROM_REGION( 0x100000, "maincpu", 0 )
ROM_LOAD( "tourv_puzzle_boy.bin", 0x00000, 0x100000, CRC(0dd96cda) SHA1(652ce8b06f2aef69698d4372ff67b86362655de5) )
@@ -825,7 +835,7 @@ ROM_START(tvpzlboy)
TOURVISION_BIOS
ROM_END
-/* Raiden */
+/* Raiden */
ROM_START(tvraiden)
ROM_REGION( 0x100000, "maincpu", 0 )
ROM_LOAD( "tourv_raiden.bin", 0x00000, 0x100000, CRC(b99a85b6) SHA1(5c8b103c5a7bfeba20dcc490204d672b55e36452) )
@@ -846,7 +856,7 @@ ROM_START(tvrs2)
TOURVISION_BIOS
ROM_END
-/* R-Type II */
+/* R-Type II */
ROM_START(tvrtype2)
ROM_REGION( 0x100000, "maincpu", 0 )
ROM_LOAD( "tourv_r-type_ii.bin", 0x00000, 0x100000, CRC(b03bfd7a) SHA1(cc8cec1fc4bae3937d0ed60468ff703d07ce9d0c) )
@@ -854,7 +864,7 @@ ROM_START(tvrtype2)
TOURVISION_BIOS
ROM_END
-/* Saiga No Nindou - Ninja Spirit */
+/* Saiga No Nindou - Ninja Spirit */
ROM_START(tvninjas)
ROM_REGION( 0x100000, "maincpu", 0 )
ROM_LOAD( "tourv_saiga_no_nindou.bin", 0x00000, 0x100000, CRC(87894514) SHA1(6845c29247f9dd805b7cd8cb046e88526e853a11) )
@@ -862,7 +872,7 @@ ROM_START(tvninjas)
TOURVISION_BIOS
ROM_END
-/* Salamander */
+/* Salamander */
ROM_START(tvslmndr)
ROM_REGION( 0x100000, "maincpu", 0 )
ROM_LOAD( "tourv_salamander.bin", 0x00000, 0x100000, CRC(ae8bcdf1) SHA1(3cc48fa594ab5ce1573c61861ec8e927163b6abb) )
@@ -870,7 +880,7 @@ ROM_START(tvslmndr)
TOURVISION_BIOS
ROM_END
-/* Shinobi */
+/* Shinobi */
ROM_START(tvshnobi)
ROM_REGION( 0x100000, "maincpu", 0 )
ROM_LOAD( "tourv_shinobi.bin", 0x00000, 0x100000, CRC(091a2b01) SHA1(aac2d5fadc74f837b73f662456f8a308413de57a) )
@@ -878,7 +888,7 @@ ROM_START(tvshnobi)
TOURVISION_BIOS
ROM_END
-/* Side arms */
+/* Side arms */
ROM_START(tvsdarms)
ROM_REGION( 0x100000, "maincpu", 0 )
ROM_LOAD( "tourv_side_arms.bin", 0x00000, 0x100000, CRC(04256267) SHA1(a4ff8f19fa528fc8a7aae5ad7e0c574dc52c3388) )
@@ -886,7 +896,7 @@ ROM_START(tvsdarms)
TOURVISION_BIOS
ROM_END
-/* Skweek */
+/* Skweek */
ROM_START(tvskweek)
ROM_REGION( 0x100000, "maincpu", 0 )
ROM_LOAD( "tourv_skweek.bin", 0x00000, 0x100000, CRC(b2a86ecc) SHA1(c1b113132ca6be1b0f3f16f31cc5ba894bee7e91) )
@@ -894,7 +904,7 @@ ROM_START(tvskweek)
TOURVISION_BIOS
ROM_END
-/* Son Son II */
+/* Son Son II */
ROM_START(tvsson2)
ROM_REGION( 0x100000, "maincpu", 0 )
ROM_LOAD( "tourv_son_son_ii.bin", 0x00000, 0x100000, CRC(8fb484cd) SHA1(553838dcb3524fe0b620ea60e926a57cc371068d) )
@@ -933,7 +943,7 @@ ROM_START(tvsvball)
TOURVISION_BIOS
ROM_END
-/* Tatsujin */
+/* Tatsujin */
ROM_START(tvtsujin)
ROM_REGION( 0x100000, "maincpu", 0 )
ROM_LOAD( "tourv_tatsujin.bin", 0x00000, 0x100000, CRC(023adbcc) SHA1(bef7d03fff2e74970a0747c12d31ec8661703deb) )
@@ -941,7 +951,7 @@ ROM_START(tvtsujin)
TOURVISION_BIOS
ROM_END
-/* Terra Cresta II */
+/* Terra Cresta II */
ROM_START(tvtcrst2)
ROM_REGION( 0x100000, "maincpu", 0 )
ROM_LOAD( "tourv_terra_cresta_ii.bin", 0x00000, 0x100000, CRC(8e7bb390) SHA1(af13afe006313b0db1273782c977efdad6100291) )
@@ -964,7 +974,7 @@ ROM_START(tvthbld)
TOURVISION_BIOS
ROM_END
-/* Toy Shop Boys */
+/* Toy Shop Boys */
ROM_START(tvtsboys)
ROM_REGION( 0x100000, "maincpu", 0 )
ROM_LOAD( "tourv_toy_shop_boys.bin", 0x00000, 0x100000, CRC(a9ed3440) SHA1(c519744cc16dad7a1455e359020ce95f4ac0b51a) )
@@ -987,7 +997,7 @@ ROM_START(tvusapb)
TOURVISION_BIOS
ROM_END
-/* Veigues */
+/* Veigues */
ROM_START(tveigues)
ROM_REGION( 0x100000, "maincpu", 0 )
ROM_LOAD( "tourv_veigues.bin", 0x00000, 0x100000, CRC(64ef8be7) SHA1(634191a181cbccbed8cf7a86e4f074691ba9b715) )
@@ -1003,7 +1013,7 @@ ROM_START(tvvolfd)
TOURVISION_BIOS
ROM_END
-/* Winning Shot */
+/* Winning Shot */
ROM_START(tvwnshot)
ROM_REGION( 0x100000, "maincpu", 0 )
ROM_LOAD( "tourv_winning_shot.bin", 0x00000, 0x100000, CRC(7196b2ca) SHA1(a1ae2e875541ad39751a95629d614d2c913b8c02) )
@@ -1011,7 +1021,7 @@ ROM_START(tvwnshot)
TOURVISION_BIOS
ROM_END
-/* W-Ring */
+/* W-Ring */
ROM_START(tvwring)
ROM_REGION( 0x100000, "maincpu", 0 )
ROM_LOAD( "tourv_w-ring.bin", 0x00000, 0x100000, CRC(609dc08d) SHA1(191b8751fc5b8700c7d9dae23d194016fe84586c) )
@@ -1019,7 +1029,7 @@ ROM_START(tvwring)
TOURVISION_BIOS
ROM_END
-/* Xevious */
+/* Xevious */
ROM_START(tvxvious)
ROM_REGION( 0x100000, "maincpu", 0 )
ROM_LOAD( "tourv_xevious.bin", 0x00000, 0x100000, CRC(3c0fb5a9) SHA1(1fd9ff582da83e1b9fee569da4db4de15e912f62) )
@@ -1032,6 +1042,7 @@ GAME( 19??, tourvis, 0, tourvision, tourvision, pce_common_state, pce_com
GAME( 1988, tvdrgnst, tourvis, tourvision, tourvision, pce_common_state, pce_common, ROT0, "bootleg (Tourvision) / Namcot", "Dragon Spirit (Tourvision PCE bootleg)", MACHINE_IMPERFECT_SOUND | MACHINE_NOT_WORKING )
GAME( 1988, tvlegaxe, tourvis, tourvision, tourvision, pce_common_state, pce_common, ROT0, "bootleg (Tourvision) / Victor Musical Industries, Inc.", "Makyo Densetsu - The Legenary Axe (Tourvision PCE bootleg)", MACHINE_IMPERFECT_SOUND | MACHINE_NOT_WORKING )
+GAME( 1989, tvdormon, tourvis, tourvision, tourvision, pce_common_state, pce_common, ROT0, "bootleg (Tourvision) / Fujiko-Shogakukan-TV Asahi / Hudson Soft", "Doraemon Meikyuu Daisakusen (Tourvision PCE bootleg)", MACHINE_IMPERFECT_SOUND | MACHINE_NOT_WORKING )
GAME( 1989, tvdunexp, tourvis, tourvision, tourvision, pce_common_state, pce_common, ROT0, "bootleg (Tourvision) / Atlus Ltd. / Hudson Soft", "Dungeon Explorer (Tourvision PCE bootleg)", MACHINE_IMPERFECT_SOUND | MACHINE_NOT_WORKING )
GAME( 1989, tvflaptw, tourvis, tourvision, tourvision, pce_common_state, pce_common, ROT0, "bootleg (Tourvision) / Namco Ltd. / Namcot", "Final Lap Twin (Tourvision PCE bootleg)", MACHINE_IMPERFECT_SOUND | MACHINE_NOT_WORKING )
GAME( 1989, tvgunhed, tourvis, tourvision, tourvision, pce_common_state, pce_common, ROT0, "bootleg (Tourvision) / Hudson / Toho Sunrise", "Gunhed (Tourvision PCE bootleg)", MACHINE_IMPERFECT_SOUND | MACHINE_NOT_WORKING )
@@ -1050,7 +1061,7 @@ GAME( 1990, tvaburn, tourvis, tourvision, tourvision, pce_common_state, pce_com
GAME( 1990, tvarmedf, tourvis, tourvision, tourvision, pce_common_state, pce_common, ROT0, "bootleg (Tourvision) / Nichibutsu / Big Don", "Armed-F (Tourvision PCE bootleg)", MACHINE_IMPERFECT_SOUND | MACHINE_NOT_WORKING )
GAME( 1990, tvbeball, tourvis, tourvision, tourvision, pce_common_state, pce_common, ROT0, "bootleg (Tourvision) / Hudson Soft", "Be Ball (Tourvision PCE bootleg)", MACHINE_IMPERFECT_SOUND | MACHINE_NOT_WORKING )
GAME( 1990, tvbomber, tourvis, tourvision, tourvision, pce_common_state, pce_common, ROT0, "bootleg (Tourvision) / Hudson Soft", "Bomberman (Tourvision PCE bootleg)", MACHINE_IMPERFECT_SOUND | MACHINE_NOT_WORKING )
-GAME( 1990, tvbrabho, tourvis, tourvision, tourvision, pce_common_state, pce_common, ROT0, "bootleg (Tourvision) / Namco / Namcot", "ChÅzetsurinjin Beraboh Man (Tourvision PCE bootleg)", MACHINE_IMPERFECT_SOUND | MACHINE_NOT_WORKING )
+GAME( 1990, tvbrabho, tourvis, tourvision, tourvision, pce_common_state, pce_common, ROT0, "bootleg (Tourvision) / Namco / Namcot", "Ch??zetsurinjin Beraboh Man (Tourvision PCE bootleg)", MACHINE_IMPERFECT_SOUND | MACHINE_NOT_WORKING )
GAME( 1990, tvdsenpu, tourvis, tourvision, tourvision, pce_common_state, pce_common, ROT0, "bootleg (Tourvision) / Toaplan / Nec Avenue", "Daisenpu (Tourvision PCE bootleg)", MACHINE_IMPERFECT_SOUND | MACHINE_NOT_WORKING )
GAME( 1990, tvdevilc, tourvis, tourvision, tourvision, pce_common_state, pce_common, ROT0, "bootleg (Tourvision) / Naxat / Red", "Devil Crash (Tourvision PCE bootleg)", MACHINE_IMPERFECT_SOUND | MACHINE_NOT_WORKING )
GAME( 1990, tvdodgeb, tourvis, tourvision, tourvision, pce_common_state, pce_common, ROT0, "bootleg (Tourvision) / Technos Japan Corp / Naxat Soft", "Dodge Ball (Tourvision PCE bootleg)", MACHINE_IMPERFECT_SOUND | MACHINE_NOT_WORKING )
diff --git a/src/mame/drivers/tp84.cpp b/src/mame/drivers/tp84.cpp
index 2deb09d485e..93aab1e92f5 100644
--- a/src/mame/drivers/tp84.cpp
+++ b/src/mame/drivers/tp84.cpp
@@ -1,12 +1,9 @@
-// license:???
-// copyright-holders:Marc Lafontaine
+// license:BSD-3-Clause
+// copyright-holders:Aaron Giles
/***************************************************************************
Time Pilot 84 (c) 1984 Konami
-driver by Marc Lafontaine
-
-
---- Master 6809 ------
Write
diff --git a/src/mame/drivers/tr606.cpp b/src/mame/drivers/tr606.cpp
new file mode 100644
index 00000000000..4fd0e50141e
--- /dev/null
+++ b/src/mame/drivers/tr606.cpp
@@ -0,0 +1,109 @@
+// license:BSD-3-Clause
+// copyright-holders:hap
+/***************************************************************************
+
+ ** subclass of hh_ucom4_state (includes/hh_ucom4.h, drivers/hh_ucom4.cpp) **
+
+ Roland TR-606 Drumatix, early 1982
+ * NEC uCOM-43 MCU, labeled D650C 128
+ * 2*uPD444C 1024x4 Static CMOS SRAM
+ * board is packed with discrete components
+
+ TODO:
+ - still too much to list here
+
+***************************************************************************/
+
+#include "includes/hh_ucom4.h"
+
+#include "tr606.lh"
+
+
+class tr606_state : public hh_ucom4_state
+{
+public:
+ tr606_state(const machine_config &mconfig, device_type type, const char *tag)
+ : hh_ucom4_state(mconfig, type, tag)
+ { }
+
+ TIMER_DEVICE_CALLBACK_MEMBER(tp3_clock) { m_maincpu->set_input_line(0, ASSERT_LINE); }
+ TIMER_DEVICE_CALLBACK_MEMBER(tp3_clear) { m_maincpu->set_input_line(0, CLEAR_LINE); }
+
+ virtual void machine_start() override;
+};
+
+// TP2 to MCU CLK: LC circuit(TI S74230), stable sine wave, 2.2us interval
+#define TP2_HZ 454545
+
+// MCU interrupt timing is same as in TB303
+// TP3 to MCU _INT: square wave, 1.8ms interval, short duty cycle
+#define TP3_PERIOD attotime::from_usec(1800)
+#define TP3_LOW (TP3_PERIOD / 8)
+
+
+/***************************************************************************
+
+ I/O
+
+***************************************************************************/
+
+
+
+/***************************************************************************
+
+ Inputs
+
+***************************************************************************/
+
+static INPUT_PORTS_START( tr606 )
+
+INPUT_PORTS_END
+
+
+
+/***************************************************************************
+
+ Machine Config
+
+***************************************************************************/
+
+void tr606_state::machine_start()
+{
+ hh_ucom4_state::machine_start();
+
+ // zerofill
+
+ // register for savestates
+}
+
+static MACHINE_CONFIG_START( tr606, tr606_state )
+
+ /* basic machine hardware */
+ MCFG_CPU_ADD("maincpu", NEC_D650, TP2_HZ)
+
+ MCFG_TIMER_DRIVER_ADD_PERIODIC("tp3_clock", tr606_state, tp3_clock, TP3_PERIOD)
+ MCFG_TIMER_START_DELAY(TP3_PERIOD - TP3_LOW)
+ MCFG_TIMER_DRIVER_ADD_PERIODIC("tp3_clear", tr606_state, tp3_clear, TP3_PERIOD)
+
+ MCFG_TIMER_DRIVER_ADD_PERIODIC("display_decay", hh_ucom4_state, display_decay_tick, attotime::from_msec(1))
+ MCFG_DEFAULT_LAYOUT(layout_tr606)
+
+ /* sound hardware */
+ // discrete...
+MACHINE_CONFIG_END
+
+
+
+/***************************************************************************
+
+ Game driver(s)
+
+***************************************************************************/
+
+ROM_START( tr606 )
+ ROM_REGION( 0x0800, "maincpu", 0 )
+ ROM_LOAD( "d650c-128.ic4", 0x0000, 0x0800, CRC(eee88f80) SHA1(ae605ce2b95adc2e0bacde3cd7ed0f39ac88b981) )
+ROM_END
+
+
+CONS( 1982, tr606, 0, 0, tr606, tr606, driver_device, 0, "Roland", "TR-606 Drumatix", MACHINE_NOT_WORKING | MACHINE_NO_SOUND | MACHINE_SUPPORTS_SAVE )
diff --git a/src/mame/drivers/ts803.cpp b/src/mame/drivers/ts803.cpp
index 7c8eec2f7ae..f706f95a693 100644
--- a/src/mame/drivers/ts803.cpp
+++ b/src/mame/drivers/ts803.cpp
@@ -124,20 +124,20 @@ ADDRESS_MAP_END
I/0 Port Addresses
-System Status Switch 1 00
-Diagnostic Indicators 1 and 2 10
-Diagnostic Indicators 3 and 4 11
-RS-422 Control and Auto Wait 12
-Memory Bank Select 13
-STI Device (modem) 20-2F
-DART Dual Asynchronous Receiver Transmitter
-Device (keyboard, printer, mouse) 30-33
-RS-422 SIO Device· 40-43
-Floppy Disk Controller 80-83
-Floppy Disk Drive Decoder 90
-Winchester Disk Controller Reset A0
-Winchester Disk Controller B0-BF
-Graphics Controller C0-CF
+System Status Switch 1 00
+Diagnostic Indicators 1 and 2 10
+Diagnostic Indicators 3 and 4 11
+RS-422 Control and Auto Wait 12
+Memory Bank Select 13
+STI Device (modem) 20-2F
+DART Dual Asynchronous Receiver Transmitter
+Device (keyboard, printer, mouse) 30-33
+RS-422 SIO Device 40-43
+Floppy Disk Controller 80-83
+Floppy Disk Drive Decoder 90
+Winchester Disk Controller Reset A0
+Winchester Disk Controller B0-BF
+Graphics Controller C0-CF
*/
static ADDRESS_MAP_START(ts803_io, AS_IO, 8, ts803_state)
@@ -176,7 +176,7 @@ WRITE8_MEMBER( ts803_state::keyboard_put )
//m_maincpu->set_input_line(INPUT_LINE_IRQ0, ASSERT_LINE);
if (data==0x0d) m_maincpu->space(AS_PROGRAM).write_byte(0xf83f,0xC1);
- else
+ else
{
m_maincpu->space(AS_PROGRAM).write_byte(0xf83f,0x4f);
m_maincpu->space(AS_PROGRAM).write_byte(0xf890,data);
@@ -260,7 +260,7 @@ READ8_MEMBER( ts803_state::ts803_porthi_r )
WRITE8_MEMBER( ts803_state::ts803_porthi_w )
{
//printf("PortHI write [%2x] [%2x]\n",offset+0x91,data);
-
+
switch (offset+0x91)
{
case 0xc4:
@@ -416,11 +416,11 @@ WRITE8_MEMBER( ts803_state::crtc_controlreg_w )
{
/*
Bit 0 = 0 alpha mode
- 1 graphics mode
+ 1 graphics mode
Bit 1 = 0 page 1 (alpha mode only)
- 1 page 2 (alpha mode only)
+ 1 page 2 (alpha mode only)
Bit 2 = 0 alpha memory access (round off)
- 1 graphics memory access (normal CPU address)
+ 1 graphics memory access (normal CPU address)
*/
//printf("CRTC::c4 write [%2x]\n",data);
diff --git a/src/mame/drivers/tubep.cpp b/src/mame/drivers/tubep.cpp
index f4d692faec5..381225db409 100644
--- a/src/mame/drivers/tubep.cpp
+++ b/src/mame/drivers/tubep.cpp
@@ -1,4 +1,4 @@
-// license:???
+// license:GPL-2.0+
// copyright-holders:Jarek Burczynski
/***************************************************************************
diff --git a/src/mame/drivers/tumbleb.cpp b/src/mame/drivers/tumbleb.cpp
index 2bef5b2ff6d..291dcab7e68 100644
--- a/src/mame/drivers/tumbleb.cpp
+++ b/src/mame/drivers/tumbleb.cpp
@@ -2207,12 +2207,15 @@ MACHINE_CONFIG_END
MACHINE_RESET_MEMBER(tumbleb_state,htchctch)
{
- /* copy protection data every reset */
- UINT16 *PROTDATA = (UINT16*)memregion("user1")->base();
- int i, len = memregion("user1")->bytes();
+ if (memregion("user1") != nullptr)
+ {
+ /* copy protection data every reset */
+ UINT16 *PROTDATA = (UINT16*)memregion("user1")->base();
+ int i, len = memregion("user1")->bytes();
- for (i = 0; i < len / 2; i++)
- m_mainram[0x000/2 + i] = PROTDATA[i];
+ for (i = 0; i < len / 2; i++)
+ m_mainram[0x000 / 2 + i] = PROTDATA[i];
+ }
MACHINE_RESET_CALL_MEMBER(tumbleb);
}
diff --git a/src/mame/drivers/ultratnk.cpp b/src/mame/drivers/ultratnk.cpp
index a23bf7d4615..50cc6adc43e 100644
--- a/src/mame/drivers/ultratnk.cpp
+++ b/src/mame/drivers/ultratnk.cpp
@@ -203,7 +203,7 @@ static INPUT_PORTS_START( ultratnk )
PORT_START("COLLISION")
PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_UNUSED )
- PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_SPECIAL ) PORT_CUSTOM_MEMBER(DEVICE_SELF, ultratnk_state, get_collision, (void *)nullptr )
+ PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_SPECIAL ) PORT_CUSTOM_MEMBER(DEVICE_SELF, ultratnk_state, get_collision, (void *)0 )
PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_UNUSED )
PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_SPECIAL ) PORT_CUSTOM_MEMBER(DEVICE_SELF, ultratnk_state, get_collision, (void *)1 )
PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_UNUSED ) /* VCC */
diff --git a/src/mame/drivers/vc4000.cpp b/src/mame/drivers/vc4000.cpp
index 2dcc44e54e7..11362de1e92 100644
--- a/src/mame/drivers/vc4000.cpp
+++ b/src/mame/drivers/vc4000.cpp
@@ -722,5 +722,5 @@ CONS(1979, telngtcs, rwtrntcs, 0, rwtrntcs, vc4000, driver_device,
CONS(1979, krvnjvtv, 0, vc4000, vc4000, vc4000, driver_device, 0, "SOE", "OC Jeu Video TV Karvan", MACHINE_IMPERFECT_GRAPHICS ) /* France */
CONS(1979, oc2000, krvnjvtv, 0, vc4000, vc4000, driver_device, 0, "SOE", "OC-2000", MACHINE_IMPERFECT_GRAPHICS ) /* France */
CONS(1980, mpt05, 0, vc4000, vc4000, vc4000, driver_device, 0, "ITMC", "MPT-05", MACHINE_IMPERFECT_GRAPHICS ) /* France */
-CONS(1982, h21, 0, 0, h21, vc4000, driver_device, 0, "TRQ", "Video Computer H-21", MACHINE_IMPERFECT_GRAPHICS) // Spain
+CONS(1982, h21, 0, vc4000, h21, vc4000, driver_device, 0, "TRQ", "Video Computer H-21", MACHINE_IMPERFECT_GRAPHICS) // Spain
CONS(1979, elektor, 0, 0, elektor, elektor, driver_device, 0, "Elektor", "Elektor TV Games Computer", MACHINE_IMPERFECT_GRAPHICS )
diff --git a/src/mame/drivers/vegas.cpp b/src/mame/drivers/vegas.cpp
index c71cff65f1a..c65e6885d9a 100644
--- a/src/mame/drivers/vegas.cpp
+++ b/src/mame/drivers/vegas.cpp
@@ -493,7 +493,7 @@ public:
UINT8 m_sio_led_state;
UINT8 m_pending_analog_read;
UINT8 m_cmos_unlocked;
- device_t *m_voodoo;
+ voodoo_device *m_voodoo;
UINT8 m_dcs_idma_cs;
int m_count;
int m_dynamic_count;
@@ -567,7 +567,7 @@ public:
UINT32 vegas_state::screen_update_vegas(screen_device &screen, bitmap_rgb32 &bitmap, const rectangle &cliprect)
{
- return voodoo_update(m_voodoo, bitmap, cliprect) ? 0 : UPDATE_HAS_NOT_CHANGED;
+ return m_voodoo->voodoo_update(bitmap, cliprect) ? 0 : UPDATE_HAS_NOT_CHANGED;
}
@@ -579,7 +579,7 @@ UINT32 vegas_state::screen_update_vegas(screen_device &screen, bitmap_rgb32 &bit
void vegas_state::machine_start()
{
- m_voodoo = machine().device("voodoo");
+ m_voodoo = (voodoo_device*)machine().device("voodoo");
/* allocate timers for the NILE */
m_timer[0] = machine().scheduler().timer_alloc(FUNC_NULL);
@@ -797,7 +797,7 @@ WRITE32_MEMBER( vegas_state::pci_ide_w )
READ32_MEMBER( vegas_state::pci_3dfx_r )
{
- int voodoo_type = voodoo_get_type(m_voodoo);
+ int voodoo_type = m_voodoo->voodoo_get_type();
UINT32 result = m_pci_3dfx_regs[offset];
switch (offset)
@@ -830,7 +830,7 @@ READ32_MEMBER( vegas_state::pci_3dfx_r )
WRITE32_MEMBER( vegas_state::pci_3dfx_w )
{
- int voodoo_type = voodoo_get_type(m_voodoo);
+ int voodoo_type = m_voodoo->voodoo_get_type();
m_pci_3dfx_regs[offset] = data;
@@ -869,7 +869,7 @@ WRITE32_MEMBER( vegas_state::pci_3dfx_w )
break;
case 0x10: /* initEnable register */
- voodoo_set_init_enable(m_voodoo, data);
+ m_voodoo->voodoo_set_init_enable(data);
break;
}
@@ -1555,7 +1555,7 @@ inline void vegas_state::_add_dynamic_address(offs_t start, offs_t end, read32_d
void vegas_state::remap_dynamic_addresses()
{
dynamic_address *dynamic = m_dynamic;
- int voodoo_type = voodoo_get_type(m_voodoo);
+ int voodoo_type = m_voodoo->voodoo_get_type();
offs_t base;
int addr;
diff --git a/src/mame/drivers/vicdual.cpp b/src/mame/drivers/vicdual.cpp
index 16443eb7824..66b9577f1eb 100644
--- a/src/mame/drivers/vicdual.cpp
+++ b/src/mame/drivers/vicdual.cpp
@@ -235,12 +235,14 @@ void vicdual_state::machine_start()
m_port1State = 0;
m_port2State = 0;
m_psgData = 0;
+ m_psgBus = 0;
save_item(NAME(m_coin_status));
save_item(NAME(m_palette_bank));
save_item(NAME(m_port1State));
save_item(NAME(m_port2State));
save_item(NAME(m_psgData));
+ save_item(NAME(m_psgBus));
}
@@ -1991,6 +1993,7 @@ static MACHINE_CONFIG_DERIVED( invds, vicdual_dualgame_root )
MACHINE_CONFIG_END
static MACHINE_CONFIG_DERIVED( carhntds, vicdual_dualgame_root )
+
/* basic machine hardware */
MCFG_CPU_MODIFY("maincpu")
MCFG_CPU_PROGRAM_MAP(carhntds_dualgame_map)
@@ -2024,24 +2027,21 @@ static MACHINE_CONFIG_DERIVED( carnival, vicdual_dualgame_root )
MCFG_CPU_MODIFY("maincpu")
MCFG_CPU_IO_MAP(carnival_io_map)
+ MCFG_QUANTUM_PERFECT_CPU("maincpu")
+
/* audio hardware */
MCFG_SPEAKER_STANDARD_MONO("mono")
MCFG_FRAGMENT_ADD(carnival_audio)
MACHINE_CONFIG_END
-static MACHINE_CONFIG_DERIVED( carnivalh, vicdual_dualgame_root )
+static MACHINE_CONFIG_DERIVED( carnivalh, carnival )
/* basic machine hardware */
MCFG_CPU_MODIFY("maincpu")
MCFG_CPU_IO_MAP(headon_io_map)
-
- /* audio hardware */
- MCFG_SPEAKER_STANDARD_MONO("mono")
- MCFG_FRAGMENT_ADD(carnival_audio)
MACHINE_CONFIG_END
-
static MACHINE_CONFIG_DERIVED( tranqgun, vicdual_dualgame_root )
/* basic machine hardware */
@@ -2093,7 +2093,6 @@ MACHINE_CONFIG_END
*
*************************************/
-
WRITE8_MEMBER(vicdual_state::samurai_protection_w)
{
m_samurai_protection_data = data;
@@ -2334,7 +2333,7 @@ static INPUT_PORTS_START( nsub )
PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_SPECIAL ) PORT_CUSTOM_MEMBER(DEVICE_SELF, vicdual_state, read_coin_status, NULL)
PORT_START("COIN")
- PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_COIN1 ) PORT_CHANGED_MEMBER(DEVICE_SELF, vicdual_state,nsub_coin_in, (void*)nullptr)
+ PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_COIN1 ) PORT_CHANGED_MEMBER(DEVICE_SELF, vicdual_state,nsub_coin_in, (void*)0)
PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_COIN2 ) PORT_CHANGED_MEMBER(DEVICE_SELF, vicdual_state,nsub_coin_in, (void*)1)
PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_SERVICE1 ) PORT_CHANGED_MEMBER(DEVICE_SELF, vicdual_state,nsub_coin_in, (void*)2)
@@ -3126,10 +3125,6 @@ ROM_START( tranqgun )
ROM_LOAD( "316-0042.u88", 0x0020, 0x0020, CRC(a1506b9d) SHA1(037c3db2ea40eca459e8acba9d1506dd28d72d10) ) /* sequence PROM */
ROM_END
-
-
-
-
ROM_START( spacetrk )
ROM_REGION( 0x10000, "maincpu", 0 )
ROM_LOAD( "u33.bin", 0x0000, 0x0400, CRC(9033fe50) SHA1(0a9b86af03956575403d8b494963f55887fc4dc3) )
@@ -3206,7 +3201,7 @@ ROM_START( carnival )
ROM_REGION( 0x0020, "proms", 0 )
ROM_LOAD( "316-633", 0x0000, 0x0020, CRC(f0084d80) SHA1(95ec912ac2c64cd58a50c68afc0993746841a531) )
- ROM_REGION( 0x0800, "audiocpu", 0 ) /* sound ROM */
+ ROM_REGION( 0x0400, "audiocpu", 0 ) /* sound ROM */
ROM_LOAD( "epr-412", 0x0000, 0x0400, CRC(0dbaa2b0) SHA1(eae7fc362a0ff8f908c42e093c7dbb603659373c) )
ROM_REGION( 0x0020, "user1", 0 ) /* timing PROM */
@@ -3235,7 +3230,7 @@ ROM_START( carnivalc )
ROM_REGION( 0x0020, "proms", 0 )
ROM_LOAD( "316-633", 0x0000, 0x0020, CRC(f0084d80) SHA1(95ec912ac2c64cd58a50c68afc0993746841a531) )
- ROM_REGION( 0x0800, "audiocpu", 0 ) /* sound ROM */
+ ROM_REGION( 0x0400, "audiocpu", 0 ) /* sound ROM */
ROM_LOAD( "epr-412", 0x0000, 0x0400, CRC(0dbaa2b0) SHA1(eae7fc362a0ff8f908c42e093c7dbb603659373c) )
ROM_REGION( 0x0020, "user1", 0 ) /* timing PROM */
@@ -3256,7 +3251,7 @@ ROM_START( carnivalh )
ROM_REGION( 0x0020, "proms", 0 )
ROM_LOAD( "pr-62.u44", 0x0000, 0x0020, CRC(f0084d80) SHA1(95ec912ac2c64cd58a50c68afc0993746841a531) ) /* Same as 316-633 */
- ROM_REGION( 0x0800, "audiocpu", 0 ) /* sound ROM */
+ ROM_REGION( 0x0400, "audiocpu", 0 ) /* sound ROM */
ROM_LOAD( "epr-412.u5", 0x0000, 0x0400, CRC(0dbaa2b0) SHA1(eae7fc362a0ff8f908c42e093c7dbb603659373c) )
ROM_REGION( 0x0040, "user1", 0 ) /* misc PROMs (type n82s123) */
@@ -3278,7 +3273,7 @@ ROM_START( carnivalha )
ROM_REGION( 0x0020, "proms", 0 )
ROM_LOAD( "pr-62.u44", 0x0000, 0x0020, CRC(f0084d80) SHA1(95ec912ac2c64cd58a50c68afc0993746841a531) ) /* Same as 316-633 */
- ROM_REGION( 0x0800, "audiocpu", 0 ) /* sound ROM */
+ ROM_REGION( 0x0400, "audiocpu", 0 ) /* sound ROM */
ROM_LOAD( "epr-412.u5", 0x0000, 0x0400, CRC(0dbaa2b0) SHA1(eae7fc362a0ff8f908c42e093c7dbb603659373c) )
ROM_REGION( 0x0040, "user1", 0 ) /* misc PROMs (type n82s123) */
@@ -3308,16 +3303,16 @@ ROM_START( brdrline )
ROM_REGION( 0x0020, "proms", 0 )
ROM_LOAD( "borderc.49", 0x0000, 0x0020, CRC(bc6be94e) SHA1(34e113ec25e19212b74907d35be5cb8714a8249c) )
- ROM_REGION( 0x0800, "cpu1", 0 ) /* sound ROM */
- ROM_LOAD( "au.bin", 0x0000, 0x0400, CRC(a23e1d9f) SHA1(ce209571f6341aa6f036a015e666673098bc98ea) )
-
ROM_REGION( 0x0100, "user1", 0 ) /* misc PROM */
ROM_LOAD( "border.32", 0x0000, 0x0020, CRC(c128d0ba) SHA1(0ce9febbb7e2f5388ed999a479e3d385dba0b342) )
- ROM_LOAD( "bordera.15", 0x0000, 0x0020, CRC(6449e678) SHA1(421c45c8fba3c2bc2a7ebbea2c837c8fa1a5a2f3) )
- ROM_LOAD( "borderb.14", 0x0000, 0x0020, CRC(55dcdef1) SHA1(6fbd041edc258b7e1b99bbe9526612cfb1b541f8) )
+ ROM_LOAD( "bordera.15", 0x0000, 0x0020, CRC(6449e678) SHA1(421c45c8fba3c2bc2a7ebbea2c837c8fa1a5a2f3) ) // sequence
+ ROM_LOAD( "borderb.14", 0x0000, 0x0020, CRC(55dcdef1) SHA1(6fbd041edc258b7e1b99bbe9526612cfb1b541f8) ) // control
/* following 2 from sound board */
ROM_LOAD( "prom93427.1", 0x0000, 0x0100, CRC(64b98dc7) SHA1(f0bb7d0b4b56cc2936ce4cbec165394f3026ed6d) )
ROM_LOAD( "prom93427.2", 0x0000, 0x0100, CRC(bda82367) SHA1(1c96453c2ae372892c39b5657cf2b252a90a10a9) )
+
+ ROM_REGION( 0x0400, "user2", 0 ) /* sound ROM */
+ ROM_LOAD( "au.bin", 0x0000, 0x0400, CRC(a23e1d9f) SHA1(ce209571f6341aa6f036a015e666673098bc98ea) )
ROM_END
@@ -3379,9 +3374,6 @@ ROM_START( starrkr )
ROM_REGION( 0x0020, "proms", 0 )
ROM_LOAD( "pr-23.u49", 0x0000, 0x0020, CRC(0a2156b3) SHA1(504abe8e253ff9b12ac6ffacd92722f8ee8a30ae) )
- ROM_REGION( 0x0800, "cpu1", 0 ) /* sound ROM */
- ROM_LOAD( "epr-613.1", 0x0000, 0x0400, CRC(ff4be0c7) SHA1(7311c34aa88f6ba905a01e7a9f2ed99a0353a06b) )
-
ROM_REGION( 0x0800, "user1", 0 ) /* misc PROM */
ROM_LOAD( "pr-33.u15", 0x0000, 0x0020, CRC(a1506b9d) SHA1(037c3db2ea40eca459e8acba9d1506dd28d72d10) )
ROM_LOAD( "pr-34.u14", 0x0000, 0x0020, CRC(e60a7960) SHA1(b8b8716e859c57c35310efc4594262afedb84823) )
@@ -3395,6 +3387,9 @@ ROM_START( starrkr )
ROM_LOAD( "pr-64.25", 0x0000, 0x0800, CRC(7342cf53) SHA1(761aa5a38a28c044cbbbe66e3a8a2f47c493d56d) )
ROM_LOAD( "pr-62.26", 0x0000, 0x0800, CRC(d352c545) SHA1(6da4f7a7974e2f471b081d230a47767315b2f1a7) )
ROM_LOAD( "pr-66.28", 0x0000, 0x0800, CRC(895c5733) SHA1(881a274cdcf23292ea658dcab793303cfb445e51) )
+
+ ROM_REGION( 0x0400, "user2", 0 ) /* sound ROM */
+ ROM_LOAD( "epr-613.1", 0x0000, 0x0400, CRC(ff4be0c7) SHA1(7311c34aa88f6ba905a01e7a9f2ed99a0353a06b) )
ROM_END
/*
@@ -3453,9 +3448,6 @@ ROM_START( brdrlins )
ROM_REGION( 0x0020, "proms", 0 )
ROM_LOAD( "5610.49", 0x0000, 0x0020, CRC(bc6be94e) SHA1(34e113ec25e19212b74907d35be5cb8714a8249c) )
- ROM_REGION( 0x0800, "cpu1", 0 ) /* sound ROM */
- ROM_LOAD( "au.bin", 0x0000, 0x0400, CRC(a23e1d9f) SHA1(ce209571f6341aa6f036a015e666673098bc98ea) )
-
ROM_REGION( 0x0100, "user1", 0 ) /* misc PROM */
ROM_LOAD( "82s123.bin", 0x0000, 0x0020, CRC(c128d0ba) SHA1(0ce9febbb7e2f5388ed999a479e3d385dba0b342) )
ROM_LOAD( "5610.15", 0x0000, 0x0020, CRC(6449e678) SHA1(421c45c8fba3c2bc2a7ebbea2c837c8fa1a5a2f3) )
@@ -3463,6 +3455,9 @@ ROM_START( brdrlins )
/* following 2 from sound board */
ROM_LOAD( "93427.1", 0x0000, 0x0100, CRC(64b98dc7) SHA1(f0bb7d0b4b56cc2936ce4cbec165394f3026ed6d) )
ROM_LOAD( "93427.2", 0x0000, 0x0100, CRC(bda82367) SHA1(1c96453c2ae372892c39b5657cf2b252a90a10a9) )
+
+ ROM_REGION( 0x0400, "user2", 0 ) /* sound ROM */
+ ROM_LOAD( "au.bin", 0x0000, 0x0400, CRC(a23e1d9f) SHA1(ce209571f6341aa6f036a015e666673098bc98ea) )
ROM_END
ROM_START( brdrlinb )
@@ -3479,13 +3474,13 @@ ROM_START( brdrlinb )
ROM_REGION( 0x0020, "proms", 0 )
ROM_LOAD( "borderc.49", 0x0000, 0x0020, CRC(bc6be94e) SHA1(34e113ec25e19212b74907d35be5cb8714a8249c) )
- ROM_REGION( 0x0800, "cpu1", 0 ) /* sound ROM */
- ROM_LOAD( "bords.bin", 0x0000, 0x0400, CRC(a23e1d9f) SHA1(ce209571f6341aa6f036a015e666673098bc98ea) )
-
ROM_REGION( 0x0020, "user1", 0 ) /* misc PROM */
ROM_LOAD( "border.32", 0x0000, 0x0020, CRC(c128d0ba) SHA1(0ce9febbb7e2f5388ed999a479e3d385dba0b342) )
ROM_LOAD( "bordera.15", 0x0000, 0x0020, CRC(6449e678) SHA1(421c45c8fba3c2bc2a7ebbea2c837c8fa1a5a2f3) )
ROM_LOAD( "borderb.14", 0x0000, 0x0020, CRC(55dcdef1) SHA1(6fbd041edc258b7e1b99bbe9526612cfb1b541f8) )
+
+ ROM_REGION( 0x0400, "user2", 0 ) /* sound ROM */
+ ROM_LOAD( "bords.bin", 0x0000, 0x0400, CRC(a23e1d9f) SHA1(ce209571f6341aa6f036a015e666673098bc98ea) )
ROM_END
ROM_START( startrks )
@@ -3620,7 +3615,7 @@ GAME( 1979, headon, 0, headon, headon, driver_device, 0, ROT0,
GAME( 1979, headon1, headon, headon, headon, driver_device, 0, ROT0, "Gremlin", "Head On (1 player)", MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE )
GAME( 1979, headons, headon, headons, headons, driver_device, 0, ROT0, "bootleg (Sidam)", "Head On (Sidam bootleg, set 1)", MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE )
GAME( 1979, headonsa, headon, headons, headons, driver_device, 0, ROT0, "bootleg (Sidam)", "Head On (Sidam bootleg, set 2)", MACHINE_NOT_WORKING | MACHINE_SUPPORTS_SAVE ) // won't coin up?
-GAME( 1979, headonmz, headon, headon, headonmz, driver_device, 0, ROT0, "bootleg", "Head On (bootleg, alt maze)", MACHINE_SUPPORTS_SAVE )
+GAME( 1979, headonmz, headon, headon, headonmz, driver_device, 0, ROT0, "bootleg", "Head On (bootleg, alt maze)", MACHINE_SUPPORTS_SAVE )
GAME( 1979, supcrash, headon, headons, supcrash, driver_device, 0, ROT0, "bootleg", "Super Crash (bootleg of Head On)", MACHINE_NO_SOUND | MACHINE_SUPPORTS_SAVE )
GAME( 1979, hocrash, headon, headons, headons, driver_device, 0, ROT0, "bootleg (Fraber)", "Crash (bootleg of Head On)", MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE )
GAME( 1979, headon2, 0, headon2, headon2, driver_device, 0, ROT0, "Sega", "Head On 2", MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE )
@@ -3645,7 +3640,6 @@ GAME( 1981, brdrlins, brdrline, brdrline, brdrline, driver_device, 0, ROT270
GAME( 1981, brdrlinb, brdrline, brdrline, brdrline, driver_device, 0, ROT270, "bootleg (Karateco)", "Borderline (Karateco bootleg)", MACHINE_NO_SOUND | MACHINE_SUPPORTS_SAVE )
GAME( 1981, brdrlinet, brdrline, tranqgun, tranqgun, driver_device, 0, ROT270, "Sega", "Borderline (Tranquilizer Gun conversion)", MACHINE_NO_SOUND | MACHINE_SUPPORTS_SAVE ) // official factory conversion
GAME( 198?, startrks, 0, headons, headons, driver_device, 0, ROT0, "bootleg (Sidam)", "Star Trek (Head On hardware)", MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE )
-
GAME( 1980, digger, 0, digger, digger, driver_device, 0, ROT270, "Sega", "Digger", MACHINE_NO_SOUND | MACHINE_SUPPORTS_SAVE )
GAME( 1981, pulsar, 0, pulsar, pulsar, driver_device, 0, ROT270, "Sega", "Pulsar", MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE )
GAME( 1979, heiankyo, 0, heiankyo, heiankyo, driver_device, 0, ROT270, "Denki Onkyo", "Heiankyo Alien", MACHINE_NO_SOUND | MACHINE_SUPPORTS_SAVE )
diff --git a/src/mame/drivers/viper.cpp b/src/mame/drivers/viper.cpp
index 5a35dfa8909..12a63346d22 100644
--- a/src/mame/drivers/viper.cpp
+++ b/src/mame/drivers/viper.cpp
@@ -376,7 +376,8 @@ public:
viper_state(const machine_config &mconfig, device_type type, const char *tag)
: driver_device(mconfig, type, tag),
m_maincpu(*this, "maincpu"),
- m_ata(*this, "ata")
+ m_ata(*this, "ata"),
+ m_voodoo(*this, "voodoo")
{
}
@@ -384,6 +385,11 @@ public:
int m_cf_card_ide;
int m_unk1_bit;
UINT32 m_voodoo3_pci_reg[0x100];
+ int m_unk_serial_bit_w;
+ UINT16 m_unk_serial_cmd;
+ UINT16 m_unk_serial_data;
+ UINT16 m_unk_serial_data_r;
+ UINT8 m_unk_serial_regs[0x80];
DECLARE_READ32_MEMBER(epic_r);
DECLARE_WRITE32_MEMBER(epic_w);
@@ -412,9 +418,12 @@ public:
DECLARE_WRITE64_MEMBER(cf_card_w);
DECLARE_READ64_MEMBER(ata_r);
DECLARE_WRITE64_MEMBER(ata_w);
+ DECLARE_READ64_MEMBER(unk_serial_r);
+ DECLARE_WRITE64_MEMBER(unk_serial_w);
DECLARE_WRITE_LINE_MEMBER(voodoo_vblank);
DECLARE_DRIVER_INIT(viper);
DECLARE_DRIVER_INIT(vipercf);
+ DECLARE_DRIVER_INIT(viperhd);
virtual void machine_start() override;
virtual void machine_reset() override;
UINT32 screen_update_viper(screen_device &screen, bitmap_rgb32 &bitmap, const rectangle &cliprect);
@@ -429,16 +438,18 @@ public:
void DS2430_w(int bit);
required_device<ppc_device> m_maincpu;
required_device<ata_interface_device> m_ata;
+ required_device<voodoo_3_device> m_voodoo;
};
UINT32 viper_state::screen_update_viper(screen_device &screen, bitmap_rgb32 &bitmap, const rectangle &cliprect)
{
- device_t *device = machine().device("voodoo");
- return voodoo_update(device, bitmap, cliprect) ? 0 : UPDATE_HAS_NOT_CHANGED;
+ voodoo_device *voodoo = (voodoo_device*)machine().device("voodoo");
+ return voodoo->voodoo_update(bitmap, cliprect) ? 0 : UPDATE_HAS_NOT_CHANGED;
}
UINT32 m_mpc8240_regs[256/4];
+#ifdef UNUSED_FUNCTION
static inline UINT64 read64le_with_32le_device_handler(read32_delegate handler, address_space &space, offs_t offset, UINT64 mem_mask)
{
UINT64 result = 0;
@@ -457,12 +468,16 @@ static inline void write64le_with_32le_device_handler(write32_delegate handler,
if (ACCESSING_BITS_32_63)
handler(space, offset * 2 + 1, data >> 32, mem_mask >> 32);
}
+#endif
static inline UINT64 read64be_with_32le_device_handler(read32_delegate handler, address_space &space, offs_t offset, UINT64 mem_mask)
{
- UINT64 result;
mem_mask = FLIPENDIAN_INT64(mem_mask);
- result = read64le_with_32le_device_handler(handler, space, offset, mem_mask);
+ UINT64 result = 0;
+ if (ACCESSING_BITS_0_31)
+ result = (UINT64)(handler)(space, offset * 2, mem_mask & 0xffffffff);
+ if (ACCESSING_BITS_32_63)
+ result |= (UINT64)(handler)(space, offset * 2 + 1, mem_mask >> 32) << 32;
return FLIPENDIAN_INT64(result);
}
@@ -471,7 +486,10 @@ static inline void write64be_with_32le_device_handler(write32_delegate handler,
{
data = FLIPENDIAN_INT64(data);
mem_mask = FLIPENDIAN_INT64(mem_mask);
- write64le_with_32le_device_handler(handler, space, offset, data, mem_mask);
+ if (ACCESSING_BITS_0_31)
+ handler(space, offset * 2, data & 0xffffffff, mem_mask & 0xffffffff);
+ if (ACCESSING_BITS_32_63)
+ handler(space, offset * 2 + 1, data >> 32, mem_mask >> 32);
}
/*****************************************************************************/
@@ -1658,41 +1676,35 @@ static void voodoo3_pci_w(device_t *busdevice, device_t *device, int function, i
READ64_MEMBER(viper_state::voodoo3_io_r)
{
- voodoo_banshee_device *device = machine().device<voodoo_banshee_device>("voodoo");
- return read64be_with_32le_device_handler(read32_delegate(FUNC(voodoo_banshee_device::banshee_io_r), device), space, offset, mem_mask);
+ return read64be_with_32le_device_handler(read32_delegate(FUNC(voodoo_3_device::banshee_io_r), &(*m_voodoo)), space, offset, mem_mask);
}
WRITE64_MEMBER(viper_state::voodoo3_io_w)
{
// printf("voodoo3_io_w: %08X%08X, %08X at %08X\n", (UINT32)(data >> 32), (UINT32)(data), offset, space.device().safe_pc());
- voodoo_banshee_device *device = machine().device<voodoo_banshee_device>("voodoo");
- write64be_with_32le_device_handler(write32_delegate(FUNC(voodoo_banshee_device::banshee_io_w), device), space, offset, data, mem_mask);
+ write64be_with_32le_device_handler(write32_delegate(FUNC(voodoo_3_device::banshee_io_w), &(*m_voodoo)), space, offset, data, mem_mask);
}
READ64_MEMBER(viper_state::voodoo3_r)
{
- voodoo_banshee_device *device = machine().device<voodoo_banshee_device>("voodoo");
- return read64be_with_32le_device_handler(read32_delegate(FUNC(voodoo_banshee_device::banshee_r), device), space, offset, mem_mask);
+ return read64be_with_32le_device_handler(read32_delegate(FUNC(voodoo_3_device::banshee_r), &(*m_voodoo)), space, offset, mem_mask);
}
WRITE64_MEMBER(viper_state::voodoo3_w)
{
// printf("voodoo3_w: %08X%08X, %08X at %08X\n", (UINT32)(data >> 32), (UINT32)(data), offset, space.device().safe_pc());
- voodoo_banshee_device *device = machine().device<voodoo_banshee_device>("voodoo");
- write64be_with_32le_device_handler(write32_delegate(FUNC(voodoo_banshee_device::banshee_w), device), space, offset, data, mem_mask);
+ write64be_with_32le_device_handler(write32_delegate(FUNC(voodoo_3_device::banshee_w), &(*m_voodoo)), space, offset, data, mem_mask);
}
READ64_MEMBER(viper_state::voodoo3_lfb_r)
{
- voodoo_banshee_device *device = machine().device<voodoo_banshee_device>("voodoo");
- return read64be_with_32le_device_handler(read32_delegate(FUNC(voodoo_banshee_device::banshee_fb_r), device), space, offset, mem_mask);
+ return read64be_with_32le_device_handler(read32_delegate(FUNC(voodoo_3_device::banshee_fb_r), &(*m_voodoo)), space, offset, mem_mask);
}
WRITE64_MEMBER(viper_state::voodoo3_lfb_w)
{
// printf("voodoo3_lfb_w: %08X%08X, %08X at %08X\n", (UINT32)(data >> 32), (UINT32)(data), offset, space.device().safe_pc());
- voodoo_banshee_device *device = machine().device<voodoo_banshee_device>("voodoo");
- write64be_with_32le_device_handler(write32_delegate(FUNC(voodoo_banshee_device::banshee_fb_w), device), space, offset, data, mem_mask);
+ write64be_with_32le_device_handler(write32_delegate(FUNC(voodoo_3_device::banshee_fb_w), &(*m_voodoo)), space, offset, data, mem_mask);
}
@@ -1966,6 +1978,68 @@ READ64_MEMBER(viper_state::e00000_r)
return r;
}
+READ64_MEMBER(viper_state::unk_serial_r)
+{
+ UINT64 r = 0;
+ if (ACCESSING_BITS_16_31)
+ {
+ int bit = m_unk_serial_data_r & 0x1;
+ m_unk_serial_data_r >>= 1;
+ r |= bit << 17;
+ }
+ return r;
+}
+
+WRITE64_MEMBER(viper_state::unk_serial_w)
+{
+ if (ACCESSING_BITS_16_31)
+ {
+ if (data & 0x10000)
+ {
+ int bit = (data & 0x20000) ? 1 : 0;
+ if (m_unk_serial_bit_w < 8)
+ {
+ if (m_unk_serial_bit_w > 0)
+ m_unk_serial_cmd <<= 1;
+ m_unk_serial_cmd |= bit;
+ }
+ else
+ {
+ if (m_unk_serial_bit_w > 8)
+ m_unk_serial_data <<= 1;
+ m_unk_serial_data |= bit;
+ }
+ m_unk_serial_bit_w++;
+
+ if (m_unk_serial_bit_w == 8)
+ {
+ if ((m_unk_serial_cmd & 0x80) == 0) // register read
+ {
+ int reg = m_unk_serial_cmd & 0x7f;
+ UINT8 data = m_unk_serial_regs[reg];
+
+ m_unk_serial_data_r = ((data & 0x1) << 7) | ((data & 0x2) << 5) | ((data & 0x4) << 3) | ((data & 0x8) << 1) | ((data & 0x10) >> 1) | ((data & 0x20) >> 3) | ((data & 0x40) >> 5) | ((data & 0x80) >> 7);
+
+ printf("unk_serial read reg %02X: %04X\n", reg, data);
+ }
+ }
+ if (m_unk_serial_bit_w == 16)
+ {
+ if (m_unk_serial_cmd & 0x80) // register write
+ {
+ int reg = m_unk_serial_cmd & 0x7f;
+ m_unk_serial_regs[reg] = m_unk_serial_data;
+ printf("unk_serial write reg %02X: %04X\n", reg, m_unk_serial_data);
+ }
+
+ m_unk_serial_bit_w = 0;
+ m_unk_serial_cmd = 0;
+ m_unk_serial_data = 0;
+ }
+ }
+ }
+}
+
/*****************************************************************************/
@@ -1980,7 +2054,7 @@ static ADDRESS_MAP_START(viper_map, AS_PROGRAM, 64, viper_state )
AM_RANGE(0xfee00000, 0xfeefffff) AM_READWRITE(pci_config_data_r, pci_config_data_w)
// 0xff000000, 0xff000fff - cf_card_data_r/w (installed in DRIVER_INIT(vipercf))
// 0xff200000, 0xff200fff - cf_card_r/w (installed in DRIVER_INIT(vipercf))
- AM_RANGE(0xff300000, 0xff300fff) AM_READWRITE(ata_r, ata_w)
+ // 0xff300000, 0xff300fff - ata_r/w (installed in DRIVER_INIT(viperhd))
AM_RANGE(0xffe00000, 0xffe00007) AM_READ(e00000_r)
AM_RANGE(0xffe00008, 0xffe0000f) AM_READWRITE(e00008_r, e00008_w)
AM_RANGE(0xffe10000, 0xffe10007) AM_READ(unk1_r)
@@ -2131,12 +2205,21 @@ DRIVER_INIT_MEMBER(viper_state,viper)
// m_maincpu->space(AS_PROGRAM).install_legacy_readwrite_handler( *ide, 0xff200000, 0xff207fff, FUNC(hdd_r), FUNC(hdd_w) ); //TODO
}
+DRIVER_INIT_MEMBER(viper_state,viperhd)
+{
+ DRIVER_INIT_CALL(viper);
+
+ m_maincpu->space(AS_PROGRAM).install_readwrite_handler(0xff300000, 0xff300fff, read64_delegate(FUNC(viper_state::ata_r), this), write64_delegate(FUNC(viper_state::ata_w), this));
+}
+
DRIVER_INIT_MEMBER(viper_state,vipercf)
{
DRIVER_INIT_CALL(viper);
m_maincpu->space(AS_PROGRAM).install_readwrite_handler(0xff000000, 0xff000fff, read64_delegate(FUNC(viper_state::cf_card_data_r), this), write64_delegate(FUNC(viper_state::cf_card_data_w), this) );
m_maincpu->space(AS_PROGRAM).install_readwrite_handler(0xff200000, 0xff200fff, read64_delegate(FUNC(viper_state::cf_card_r), this), write64_delegate(FUNC(viper_state::cf_card_w), this) );
+
+ m_maincpu->space(AS_PROGRAM).install_readwrite_handler(0xff300000, 0xff300fff, read64_delegate(FUNC(viper_state::unk_serial_r), this), write64_delegate(FUNC(viper_state::unk_serial_w), this) );
}
@@ -2232,6 +2315,8 @@ ROM_END
ROM_START(gticlub2ea) //*
VIPER_BIOS
+ ROM_REGION(0x28, "ds2430", ROMREGION_ERASE00) /* DS2430 */
+
ROM_REGION(0x2000, "m48t58", ROMREGION_ERASE00) /* M48T58 Timekeeper NVRAM */
ROM_LOAD("941eaa_nvram.u39", 0x00000, 0x2000, CRC(5ee7004d) SHA1(92e0ce01049308f459985d466fbfcfac82f34a47))
@@ -2495,6 +2580,8 @@ ROM_END
ROM_START(wcombatk) //*
VIPER_BIOS
+ ROM_REGION(0x28, "ds2430", ROMREGION_ERASE00) /* DS2430 */
+
ROM_REGION(0x2000, "m48t58", ROMREGION_ERASE00) /* M48T58 Timekeeper NVRAM */
ROM_LOAD("wcombatk_nvram.u39", 0x00000, 0x2000, CRC(ebd4d645) SHA1(2fa7e2c6b113214f3eb1900c8ceef4d5fcf0bb76))
@@ -2505,6 +2592,8 @@ ROM_END
ROM_START(wcombatu) //*
VIPER_BIOS
+ ROM_REGION(0x28, "ds2430", ROMREGION_ERASE00) /* DS2430 */
+
ROM_REGION(0x2000, "m48t58", ROMREGION_ERASE00) /* M48T58 Timekeeper NVRAM */
ROM_LOAD("Warzaid u39 c22d02", 0x00000, 0x2000, CRC(71744990) SHA1(19ed07572f183e7b3a712704ebddf7a848c48a78) )
@@ -2621,7 +2710,7 @@ ROM_END
/* Viper BIOS */
GAME(1999, kviper, 0, viper, viper, viper_state, viper, ROT0, "Konami", "Konami Viper BIOS", MACHINE_IS_BIOS_ROOT)
-GAME(2001, ppp2nd, kviper, viper, viper, viper_state, viper, ROT0, "Konami", "ParaParaParadise 2nd Mix", MACHINE_NOT_WORKING|MACHINE_NO_SOUND)
+GAME(2001, ppp2nd, kviper, viper, viper, viper_state, viperhd, ROT0, "Konami", "ParaParaParadise 2nd Mix", MACHINE_NOT_WORKING|MACHINE_NO_SOUND)
GAME(2001, boxingm, kviper, viper, viper, viper_state, vipercf, ROT0, "Konami", "Boxing Mania (ver JAA)", MACHINE_NOT_WORKING|MACHINE_NO_SOUND)
GAME(2000, code1d, kviper, viper, viper, viper_state, vipercf, ROT0, "Konami", "Code One Dispatch (ver D)", MACHINE_NOT_WORKING|MACHINE_NO_SOUND)
diff --git a/src/mame/drivers/vk100.cpp b/src/mame/drivers/vk100.cpp
index 7864083b066..abe616047a8 100644
--- a/src/mame/drivers/vk100.cpp
+++ b/src/mame/drivers/vk100.cpp
@@ -918,7 +918,6 @@ INPUT_PORTS_END
void vk100_state::machine_start()
{
- m_speaker->set_frequency(116); //116 hz (page 172 of TM), but duty cycle is wrong here!
output().set_value("online_led",1);
output().set_value("local_led", 0);
output().set_value("noscroll_led",1);
@@ -1063,7 +1062,7 @@ static MACHINE_CONFIG_START( vk100, vk100_state )
MCFG_DEFAULT_LAYOUT( layout_vk100 )
MCFG_SPEAKER_STANDARD_MONO( "mono" )
- MCFG_SOUND_ADD( "beeper", BEEP, 0 )
+ MCFG_SOUND_ADD( "beeper", BEEP, 116 ) // 116 hz (page 172 of TM), but duty cycle is wrong here!
MCFG_SOUND_ROUTE( ALL_OUTPUTS, "mono", 0.25 )
MACHINE_CONFIG_END
diff --git a/src/mame/drivers/vt100.cpp b/src/mame/drivers/vt100.cpp
index 1d655600979..810587b7c46 100644
--- a/src/mame/drivers/vt100.cpp
+++ b/src/mame/drivers/vt100.cpp
@@ -151,7 +151,6 @@ TIMER_DEVICE_CALLBACK_MEMBER(vt100_state::keyboard_callback)
WRITE8_MEMBER( vt100_state::vt100_keyboard_w )
{
- m_speaker->set_frequency(786); // 7.945us per serial clock = ~125865.324hz, / 160 clocks per char = ~ 786 hz
output().set_value("online_led",BIT(data, 5) ? 0 : 1);
output().set_value("local_led", BIT(data, 5));
output().set_value("locked_led",BIT(data, 4) ? 0 : 1);
@@ -352,7 +351,6 @@ void vt100_state::machine_reset()
m_keyboard_int = 0;
m_receiver_int = 0;
m_vertical_int = 0;
- m_speaker->set_frequency(786); // 7.945us per serial clock = ~125865.324hz, / 160 clocks per char = ~ 786 hz
output().set_value("online_led",1);
output().set_value("local_led", 0);
output().set_value("locked_led",1);
@@ -441,7 +439,7 @@ static MACHINE_CONFIG_START( vt100, vt100_state )
/* audio hardware */
MCFG_SPEAKER_STANDARD_MONO("mono")
- MCFG_SOUND_ADD("beeper", BEEP, 0)
+ MCFG_SOUND_ADD("beeper", BEEP, 786) // 7.945us per serial clock = ~125865.324hz, / 160 clocks per char = ~ 786 hz
MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.50)
MCFG_TIMER_DRIVER_ADD_PERIODIC("keyboard_timer", vt100_state, keyboard_callback, attotime::from_hz(800))
diff --git a/src/mame/drivers/wallc.cpp b/src/mame/drivers/wallc.cpp
index 7e6243e6f60..0e6607ab2e1 100644
--- a/src/mame/drivers/wallc.cpp
+++ b/src/mame/drivers/wallc.cpp
@@ -1,4 +1,4 @@
-// license:???
+// license:GPL-2.0+
// copyright-holders:Jarek Burczynski
/****************************************************************************
diff --git a/src/mame/drivers/whitestar.cpp b/src/mame/drivers/whitestar.cpp
index 2eb20073da7..aad4685e0b3 100644
--- a/src/mame/drivers/whitestar.cpp
+++ b/src/mame/drivers/whitestar.cpp
@@ -37,8 +37,7 @@ public:
DECLARE_READ8_MEMBER(switch_r);
DECLARE_WRITE8_MEMBER(switch_w);
- DECLARE_DRIVER_INIT(whitestar);
- virtual void machine_reset() override;
+ virtual void machine_start() override;
INTERRUPT_GEN_MEMBER(whitestar_firq_interrupt);
};
@@ -92,7 +91,7 @@ WRITE8_MEMBER(whitestar_state::switch_w)
WRITE8_MEMBER(whitestar_state::bank_w)
{
- membank("bank1")->set_base(memregion("user1")->base() + (data & 0x1f) * 0x4000);
+ membank("bank1")->set_entry(data & 0x1f);
}
// Whitestar automatically pulses the DMD IRQ line? DE hardware doesn't do that...
@@ -102,13 +101,10 @@ WRITE8_MEMBER(whitestar_state::dmddata_w)
m_decodmd->ctrl_w(space,0,1);
m_decodmd->ctrl_w(space,0,0);
}
-void whitestar_state::machine_reset()
-{
- membank("bank1")->set_base(memregion("user1")->base());
-}
-
-DRIVER_INIT_MEMBER(whitestar_state,whitestar)
+void whitestar_state::machine_start()
{
+ membank("bank1")->configure_entries(0, 32, memregion("user1")->base(), 0x4000);
+ membank("bank1")->set_entry(0);
}
// the appropriate device is passed in, so we can share this routine
@@ -3162,183 +3158,183 @@ ROM_END
#define MACHINE_IS_PINBALL MACHINE_NOT_WORKING | MACHINE_NO_SOUND | MACHINE_MECHANICAL
-GAME(1995, apollo13, 0, whitestar, whitestar, whitestar_state, whitestar, ROT0, "Sega", "Apollo 13 (5.01)", MACHINE_IS_PINBALL)
-GAME(1995, apollo13_10,apollo13, whitestar, whitestar, whitestar_state, whitestar, ROT0, "Sega", "Apollo 13 (1.00)", MACHINE_IS_PINBALL)
-GAME(2001, austin, 0, whitestar, whitestar, whitestar_state, whitestar, ROT0, "Stern", "Austin Powers (3.02)", MACHINE_IS_PINBALL)
-GAME(2001, aust301, austin, whitestar, whitestar, whitestar_state, whitestar, ROT0, "Stern", "Austin Powers (3.01)", MACHINE_IS_PINBALL)
-GAME(2001, aust300, austin, whitestar, whitestar, whitestar_state, whitestar, ROT0, "Stern", "Austin Powers (3.00)", MACHINE_IS_PINBALL)
-GAME(2001, aust201, austin, whitestar, whitestar, whitestar_state, whitestar, ROT0, "Stern", "Austin Powers (2.01)", MACHINE_IS_PINBALL)
-GAME(2001, austnew, austin, whitestar, whitestar, whitestar_state, whitestar, ROT0, "Stern", "Austin Powers (ARM7 Sound Board)", MACHINE_IS_PINBALL)
-GAME(2001, austinf, austin, whitestar, whitestar, whitestar_state, whitestar, ROT0, "Stern", "Austin Powers (France)", MACHINE_IS_PINBALL)
-GAME(2001, austing, austin, whitestar, whitestar, whitestar_state, whitestar, ROT0, "Stern", "Austin Powers (Germany)", MACHINE_IS_PINBALL)
-GAME(2001, austini, austin, whitestar, whitestar, whitestar_state, whitestar, ROT0, "Stern", "Austin Powers (Italy)", MACHINE_IS_PINBALL)
-GAME(1998, godzillp, 0, whitestar, whitestar, whitestar_state, whitestar, ROT0, "Sega", "Godzilla (Pinball)", MACHINE_IS_PINBALL)
-GAME(1996, gldneye, 0, whitestar, whitestar, whitestar_state, whitestar, ROT0, "Sega", "Goldeneye", MACHINE_IS_PINBALL)
-GAME(1998, goldcue, 0, whitestar, whitestar, whitestar_state, whitestar, ROT0, "Sega", "Golden Cue", MACHINE_IS_PINBALL)
-GAME(1999, harl_a13, 0, whitestar, whitestar, whitestar_state, whitestar, ROT0, "Sega", "Harley Davidson (1.03)", MACHINE_IS_PINBALL)
-GAME(1999, harl_u13, harl_a13, whitestar, whitestar, whitestar_state, whitestar, ROT0, "Sega", "Harley Davidson (1.03 UK)", MACHINE_IS_PINBALL)
-GAME(1999, harl_a10, harl_a13, whitestar, whitestar, whitestar_state, whitestar, ROT0, "Sega", "Harley Davidson (1.03 Display rev. 1.00)", MACHINE_IS_PINBALL)
-GAME(1999, harl_f13, harl_a13, whitestar, whitestar, whitestar_state, whitestar, ROT0, "Sega", "Harley Davidson (1.03 France)", MACHINE_IS_PINBALL)
-GAME(1999, harl_g13, harl_a13, whitestar, whitestar, whitestar_state, whitestar, ROT0, "Sega", "Harley Davidson (1.03 Germany)", MACHINE_IS_PINBALL)
-GAME(1999, harl_i13, harl_a13, whitestar, whitestar, whitestar_state, whitestar, ROT0, "Sega", "Harley Davidson (1.03 Italy)", MACHINE_IS_PINBALL)
-GAME(1999, harl_l13, harl_a13, whitestar, whitestar, whitestar_state, whitestar, ROT0, "Sega", "Harley Davidson (1.03 Spain)", MACHINE_IS_PINBALL)
-GAME(2004, harl_a40, 0, whitestar, whitestar, whitestar_state, whitestar, ROT0, "Stern", "Harley Davidson (4.00)", MACHINE_IS_PINBALL)
-GAME(2004, harl_f40, harl_a40, whitestar, whitestar, whitestar_state, whitestar, ROT0, "Stern", "Harley Davidson (4.00 France)", MACHINE_IS_PINBALL)
-GAME(2004, harl_g40, harl_a40, whitestar, whitestar, whitestar_state, whitestar, ROT0, "Stern", "Harley Davidson (4.00 Germany)", MACHINE_IS_PINBALL)
-GAME(2004, harl_i40, harl_a40, whitestar, whitestar, whitestar_state, whitestar, ROT0, "Stern", "Harley Davidson (4.00 Italy)", MACHINE_IS_PINBALL)
-GAME(2004, harl_l40, harl_a40, whitestar, whitestar, whitestar_state, whitestar, ROT0, "Stern", "Harley Davidson (4.00 Spain)", MACHINE_IS_PINBALL)
-GAME(2004, harl_a30, harl_a40, whitestar, whitestar, whitestar_state, whitestar, ROT0, "Stern", "Harley Davidson (3.00)", MACHINE_IS_PINBALL)
-GAME(2004, harl_f30, harl_a40, whitestar, whitestar, whitestar_state, whitestar, ROT0, "Stern", "Harley Davidson (3.00 France)", MACHINE_IS_PINBALL)
-GAME(2004, harl_g30, harl_a40, whitestar, whitestar, whitestar_state, whitestar, ROT0, "Stern", "Harley Davidson (3.00 Germany)", MACHINE_IS_PINBALL)
-GAME(2004, harl_i30, harl_a40, whitestar, whitestar, whitestar_state, whitestar, ROT0, "Stern", "Harley Davidson (3.00 Italy)", MACHINE_IS_PINBALL)
-GAME(2004, harl_l30, harl_a40, whitestar, whitestar, whitestar_state, whitestar, ROT0, "Stern", "Harley Davidson (3.00 Spain)", MACHINE_IS_PINBALL)
-GAME(2003, harl_a18, harl_a40, whitestar, whitestar, whitestar_state, whitestar, ROT0, "Stern", "Harley Davidson (1.08)", MACHINE_IS_PINBALL)
-GAME(2003, harl_f18, harl_a40, whitestar, whitestar, whitestar_state, whitestar, ROT0, "Stern", "Harley Davidson (1.08 France)", MACHINE_IS_PINBALL)
-GAME(2003, harl_g18, harl_a40, whitestar, whitestar, whitestar_state, whitestar, ROT0, "Stern", "Harley Davidson (1.08 Germany)", MACHINE_IS_PINBALL)
-GAME(2003, harl_i18, harl_a40, whitestar, whitestar, whitestar_state, whitestar, ROT0, "Stern", "Harley Davidson (1.08 Italy)", MACHINE_IS_PINBALL)
-GAME(2003, harl_l18, harl_a40, whitestar, whitestar, whitestar_state, whitestar, ROT0, "Stern", "Harley Davidson (1.08 Spain)", MACHINE_IS_PINBALL)
-GAME(2001, hirolcas, 0, whitestar, whitestar, whitestar_state, whitestar, ROT0, "Stern", "High Roller Casino (3.00)", MACHINE_IS_PINBALL)
-GAME(2001, hironew, hirolcas, whitestar, whitestar, whitestar_state, whitestar, ROT0, "Stern", "High Roller Casino (ARM7 Sound Board)", MACHINE_IS_PINBALL)
-GAME(2001, hirolcat, hirolcas, whitestar, whitestar, whitestar_state, whitestar, ROT0, "Stern", "High Roller Casino (3.00) TEST", MACHINE_IS_PINBALL)
-GAME(2001, hirolcas_210,hirolcas, whitestar, whitestar, whitestar_state, whitestar, ROT0, "Stern", "High Roller Casino (2.10)", MACHINE_IS_PINBALL)
-GAME(2001, hirol_fr, hirolcas, whitestar, whitestar, whitestar_state, whitestar, ROT0, "Stern", "High Roller Casino (3.00 France)", MACHINE_IS_PINBALL)
-GAME(2001, hirol_gr, hirolcas, whitestar, whitestar, whitestar_state, whitestar, ROT0, "Stern", "High Roller Casino (3.00 Germany)", MACHINE_IS_PINBALL)
-GAME(2001, hirol_gr_210,hirolcas, whitestar, whitestar, whitestar_state, whitestar, ROT0, "Stern", "High Roller Casino (2.10 Germany)", MACHINE_IS_PINBALL)
-GAME(2001, hirol_it, hirolcas, whitestar, whitestar, whitestar_state, whitestar, ROT0, "Stern", "High Roller Casino (3.00 Italy)", MACHINE_IS_PINBALL)
-GAME(1996, id4, 0, whitestar, whitestar, whitestar_state, whitestar, ROT0, "Sega", "Independence Day", MACHINE_IS_PINBALL)
-GAME(1996, id4_201, id4, whitestar, whitestar, whitestar_state, whitestar, ROT0, "Sega", "Independence Day (v2.01)", MACHINE_IS_PINBALL)
-GAME(1998, lostspc, 0, whitestar, whitestar, whitestar_state, whitestar, ROT0, "Sega", "Lost in Space", MACHINE_IS_PINBALL)
-GAME(2001, monopolp, 0, whitestar, whitestar, whitestar_state, whitestar, ROT0, "Stern", "Monopoly (3.20)", MACHINE_IS_PINBALL)
-GAME(2002, monop303, monopolp, whitestar, whitestar, whitestar_state, whitestar, ROT0, "Stern", "Monopoly (3.03)", MACHINE_IS_PINBALL)
-GAME(2002, monop301, monopolp, whitestar, whitestar, whitestar_state, whitestar, ROT0, "Stern", "Monopoly (3.01)", MACHINE_IS_PINBALL)
-GAME(2002, monop251, monopolp, whitestar, whitestar, whitestar_state, whitestar, ROT0, "Stern", "Monopoly (2.51)", MACHINE_IS_PINBALL)
-GAME(2002, monop233, monopolp, whitestar, whitestar, whitestar_state, whitestar, ROT0, "Stern", "Monopoly (2.33)", MACHINE_IS_PINBALL)
-GAME(2002, monopolf, monopolp, whitestar, whitestar, whitestar_state, whitestar, ROT0, "Stern", "Monopoly (France)", MACHINE_IS_PINBALL)
-GAME(2002, monopolg, monopolp, whitestar, whitestar, whitestar_state, whitestar, ROT0, "Stern", "Monopoly (Germany)", MACHINE_IS_PINBALL)
-GAME(2002, monopoli, monopolp, whitestar, whitestar, whitestar_state, whitestar, ROT0, "Stern", "Monopoly (Italy)", MACHINE_IS_PINBALL)
-GAME(2002, monopoll, monopolp, whitestar, whitestar, whitestar_state, whitestar, ROT0, "Stern", "Monopoly (Spain)", MACHINE_IS_PINBALL)
-GAME(2002, mononew, monopolp, whitestar, whitestar, whitestar_state, whitestar, ROT0, "Stern", "Monopoly (ARM7 Sound Board)", MACHINE_IS_PINBALL)
-GAME(2001, nfl, 0, whitestar, whitestar, whitestar_state, whitestar, ROT0, "Stern", "NFL", MACHINE_IS_PINBALL)
-GAME(2002, playboys, 0, whitestar, whitestar, whitestar_state, whitestar, ROT0, "Stern", "Playboy (5.00)", MACHINE_IS_PINBALL)
-GAME(2002, playboys_401,playboys, whitestar, whitestar, whitestar_state, whitestar, ROT0, "Stern", "Playboy (4.01)", MACHINE_IS_PINBALL)
-GAME(2002, playboys_303,playboys, whitestar, whitestar, whitestar_state, whitestar, ROT0, "Stern", "Playboy (3.03)", MACHINE_IS_PINBALL)
-GAME(2002, playboys_302,playboys, whitestar, whitestar, whitestar_state, whitestar, ROT0, "Stern", "Playboy (3.02)", MACHINE_IS_PINBALL)
-GAME(2002, playboys_300,playboys, whitestar, whitestar, whitestar_state, whitestar, ROT0, "Stern", "Playboy (3.00)", MACHINE_IS_PINBALL)
-GAME(2002, playboys_203,playboys, whitestar, whitestar, whitestar_state, whitestar, ROT0, "Stern", "Playboy (2.03)", MACHINE_IS_PINBALL)
-GAME(2002, playnew, playboys, whitestar, whitestar, whitestar_state, whitestar, ROT0, "Stern", "Playboy (ARM7 Sound Board)", MACHINE_IS_PINBALL)
-GAME(2002, playboyf, 0, whitestar, whitestar, whitestar_state, whitestar, ROT0, "Stern", "Playboy (5.00 France)", MACHINE_IS_PINBALL)
-GAME(2002, playboyf_401,playboyf, whitestar, whitestar, whitestar_state, whitestar, ROT0, "Stern", "Playboy (4.01 France)", MACHINE_IS_PINBALL)
-GAME(2002, playboyf_303,playboyf, whitestar, whitestar, whitestar_state, whitestar, ROT0, "Stern", "Playboy (3.03 France)", MACHINE_IS_PINBALL)
-GAME(2002, playboyf_302,playboyf, whitestar, whitestar, whitestar_state, whitestar, ROT0, "Stern", "Playboy (3.02 France)", MACHINE_IS_PINBALL)
-GAME(2002, playboyf_300,playboyf, whitestar, whitestar, whitestar_state, whitestar, ROT0, "Stern", "Playboy (3.00 France)", MACHINE_IS_PINBALL)
-GAME(2002, playboyf_203,playboyf, whitestar, whitestar, whitestar_state, whitestar, ROT0, "Stern", "Playboy (2.03 France)", MACHINE_IS_PINBALL)
-GAME(2002, playboyg, 0, whitestar, whitestar, whitestar_state, whitestar, ROT0, "Stern", "Playboy (5.00 Germany)", MACHINE_IS_PINBALL)
-GAME(2002, playboyg_401,playboyg, whitestar, whitestar, whitestar_state, whitestar, ROT0, "Stern", "Playboy (4.01 Germany)", MACHINE_IS_PINBALL)
-GAME(2002, playboyg_303,playboyg, whitestar, whitestar, whitestar_state, whitestar, ROT0, "Stern", "Playboy (3.03 Germany)", MACHINE_IS_PINBALL)
-GAME(2002, playboyg_302,playboyg, whitestar, whitestar, whitestar_state, whitestar, ROT0, "Stern", "Playboy (3.02 Germany)", MACHINE_IS_PINBALL)
-GAME(2002, playboyg_300,playboyg, whitestar, whitestar, whitestar_state, whitestar, ROT0, "Stern", "Playboy (3.00 Germany)", MACHINE_IS_PINBALL)
-GAME(2002, playboyg_203,playboyg, whitestar, whitestar, whitestar_state, whitestar, ROT0, "Stern", "Playboy (2.03 Germany)", MACHINE_IS_PINBALL)
-GAME(2002, playboyi, 0, whitestar, whitestar, whitestar_state, whitestar, ROT0, "Stern", "Playboy (5.00 Italy)", MACHINE_IS_PINBALL)
-GAME(2002, playboyi_401,playboyi, whitestar, whitestar, whitestar_state, whitestar, ROT0, "Stern", "Playboy (4.01 Italy)", MACHINE_IS_PINBALL)
-GAME(2002, playboyi_303,playboyi, whitestar, whitestar, whitestar_state, whitestar, ROT0, "Stern", "Playboy (3.03 Italy)", MACHINE_IS_PINBALL)
-GAME(2002, playboyi_302,playboyi, whitestar, whitestar, whitestar_state, whitestar, ROT0, "Stern", "Playboy (3.02 Italy)", MACHINE_IS_PINBALL)
-GAME(2002, playboyi_300,playboyi, whitestar, whitestar, whitestar_state, whitestar, ROT0, "Stern", "Playboy (3.00 Italy)", MACHINE_IS_PINBALL)
-GAME(2002, playboyi_203,playboyi, whitestar, whitestar, whitestar_state, whitestar, ROT0, "Stern", "Playboy (2.03 Italy)", MACHINE_IS_PINBALL)
-GAME(2002, playboyl, 0, whitestar, whitestar, whitestar_state, whitestar, ROT0, "Stern", "Playboy (5.00 Spain)", MACHINE_IS_PINBALL)
-GAME(2002, playboyl_401,playboyl, whitestar, whitestar, whitestar_state, whitestar, ROT0, "Stern", "Playboy (4.01 Spain)", MACHINE_IS_PINBALL)
-GAME(2002, playboyl_303,playboyl, whitestar, whitestar, whitestar_state, whitestar, ROT0, "Stern", "Playboy (3.03 Spain)", MACHINE_IS_PINBALL)
-GAME(2002, playboyl_302,playboyl, whitestar, whitestar, whitestar_state, whitestar, ROT0, "Stern", "Playboy (3.02 Spain)", MACHINE_IS_PINBALL)
-GAME(2002, playboyl_300,playboyl, whitestar, whitestar, whitestar_state, whitestar, ROT0, "Stern", "Playboy (3.00 Spain)", MACHINE_IS_PINBALL)
-GAME(2002, playboyl_203,playboyl, whitestar, whitestar, whitestar_state, whitestar, ROT0, "Stern", "Playboy (2.03 Spain)", MACHINE_IS_PINBALL)
-GAME(2002, rctycn, 0, whitestar, whitestar, whitestar_state, whitestar, ROT0, "Stern", "Roller Coaster Tycoon (7.02)", MACHINE_IS_PINBALL)
-GAME(2002, rctycn_701, rctycn, whitestar, whitestar, whitestar_state, whitestar, ROT0, "Stern", "Roller Coaster Tycoon (7.01)", MACHINE_IS_PINBALL)
-GAME(2002, rctycn_600, rctycn, whitestar, whitestar, whitestar_state, whitestar, ROT0, "Stern", "Roller Coaster Tycoon (6.00)", MACHINE_IS_PINBALL)
-GAME(2002, rctycn_400, rctycn, whitestar, whitestar, whitestar_state, whitestar, ROT0, "Stern", "Roller Coaster Tycoon (4.00)", MACHINE_IS_PINBALL)
-GAME(2002, rctnew, rctycn, whitestar, whitestar, whitestar_state, whitestar, ROT0, "Stern", "Roller Coaster Tycoon (ARM7 Sound Board)", MACHINE_IS_PINBALL)
-GAME(2002, rctycng, 0, whitestar, whitestar, whitestar_state, whitestar, ROT0, "Stern", "Roller Coaster Tycoon (7.02 Germany)", MACHINE_IS_PINBALL)
-GAME(2002, rctycng_701,rctycng, whitestar, whitestar, whitestar_state, whitestar, ROT0, "Stern", "Roller Coaster Tycoon (7.01 Germany)", MACHINE_IS_PINBALL)
-GAME(2002, rctycng_400,rctycng, whitestar, whitestar, whitestar_state, whitestar, ROT0, "Stern", "Roller Coaster Tycoon (4.00 Germany)", MACHINE_IS_PINBALL)
-GAME(2002, rctycnf, 0, whitestar, whitestar, whitestar_state, whitestar, ROT0, "Stern", "Roller Coaster Tycoon (7.02 France)", MACHINE_IS_PINBALL)
-GAME(2002, rctycnf_701,rctycnf, whitestar, whitestar, whitestar_state, whitestar, ROT0, "Stern", "Roller Coaster Tycoon (7.01 France)", MACHINE_IS_PINBALL)
-GAME(2002, rctycnf_600,rctycnf, whitestar, whitestar, whitestar_state, whitestar, ROT0, "Stern", "Roller Coaster Tycoon (6.00 France)", MACHINE_IS_PINBALL)
-GAME(2002, rctycnf_400,rctycnf, whitestar, whitestar, whitestar_state, whitestar, ROT0, "Stern", "Roller Coaster Tycoon (4.00 France)", MACHINE_IS_PINBALL)
-GAME(2002, rctycni, 0, whitestar, whitestar, whitestar_state, whitestar, ROT0, "Stern", "Roller Coaster Tycoon (7.02 Italy)", MACHINE_IS_PINBALL)
-GAME(2002, rctycni_701,rctycni, whitestar, whitestar, whitestar_state, whitestar, ROT0, "Stern", "Roller Coaster Tycoon (7.01 Italy)", MACHINE_IS_PINBALL)
-GAME(2002, rctycni_600,rctycni, whitestar, whitestar, whitestar_state, whitestar, ROT0, "Stern", "Roller Coaster Tycoon (6.00 Italy)", MACHINE_IS_PINBALL)
-GAME(2002, rctycni_400,rctycni, whitestar, whitestar, whitestar_state, whitestar, ROT0, "Stern", "Roller Coaster Tycoon (4.00 Italy)", MACHINE_IS_PINBALL)
-GAME(2002, rctycnl, 0, whitestar, whitestar, whitestar_state, whitestar, ROT0, "Stern", "Roller Coaster Tycoon (7.02 Spain)", MACHINE_IS_PINBALL)
-GAME(2002, rctycnl_701,rctycnl, whitestar, whitestar, whitestar_state, whitestar, ROT0, "Stern", "Roller Coaster Tycoon (7.01 Spain)", MACHINE_IS_PINBALL)
-GAME(2002, rctycnl_600,rctycnl, whitestar, whitestar, whitestar_state, whitestar, ROT0, "Stern", "Roller Coaster Tycoon (6.00 Spain)", MACHINE_IS_PINBALL)
-GAME(2002, rctycnl_400,rctycnl, whitestar, whitestar, whitestar_state, whitestar, ROT0, "Stern", "Roller Coaster Tycoon (4.00 Spain)", MACHINE_IS_PINBALL)
-GAME(2000, shrkysht, 0, whitestar, whitestar, whitestar_state, whitestar, ROT0, "Stern", "Sharkey's Shootout (2.11)", MACHINE_IS_PINBALL)
-GAME(2000, shrky_207, shrkysht, whitestar, whitestar, whitestar_state, whitestar, ROT0, "Stern", "Sharkey's Shootout (2.07)", MACHINE_IS_PINBALL)
-GAME(2001, shrknew, shrkysht, whitestar, whitestar, whitestar_state, whitestar, ROT0, "Stern", "Sharkey's Shootout (ARM7 Sound Board)", MACHINE_IS_PINBALL)
-GAME(2001, shrkygr, shrkysht, whitestar, whitestar, whitestar_state, whitestar, ROT0, "Stern", "Sharkey's Shootout (2.11 Germany)", MACHINE_IS_PINBALL)
-GAME(2001, shrkygr_207,shrkysht, whitestar, whitestar, whitestar_state, whitestar, ROT0, "Stern", "Sharkey's Shootout (2.07 Germany)", MACHINE_IS_PINBALL)
-GAME(2001, shrkyfr, shrkysht, whitestar, whitestar, whitestar_state, whitestar, ROT0, "Stern", "Sharkey's Shootout (2.11 France)", MACHINE_IS_PINBALL)
-GAME(2001, shrkyfr_207,shrkysht, whitestar, whitestar, whitestar_state, whitestar, ROT0, "Stern", "Sharkey's Shootout (2.07 France)", MACHINE_IS_PINBALL)
-GAME(2001, shrkyit, shrkysht, whitestar, whitestar, whitestar_state, whitestar, ROT0, "Stern", "Sharkey's Shootout (2.11 Italy)", MACHINE_IS_PINBALL)
-GAME(2001, shrkyit_207,shrkysht, whitestar, whitestar, whitestar_state, whitestar, ROT0, "Stern", "Sharkey's Shootout (2.07 Italy)", MACHINE_IS_PINBALL)
-GAME(1999, sprk_103, 0, whitestar, whitestar, whitestar_state, whitestar, ROT0, "Sega", "South Park (1.03)", MACHINE_IS_PINBALL)
-GAME(1999, sprk_096, sprk_103, whitestar, whitestar, whitestar_state, whitestar, ROT0, "Sega", "South Park (0.96)", MACHINE_IS_PINBALL)
-GAME(1999, sprk_090, sprk_103, whitestar, whitestar, whitestar_state, whitestar, ROT0, "Sega", "South Park (0.90)", MACHINE_IS_PINBALL)
-GAME(1997, spacejam, 0, whitestar, whitestar, whitestar_state, whitestar, ROT0, "Sega", "Space Jam", MACHINE_IS_PINBALL)
-GAME(1997, spacejmg, spacejam, whitestar, whitestar, whitestar_state, whitestar, ROT0, "Sega", "Space Jam (Germany)", MACHINE_IS_PINBALL)
-GAME(1997, spacejmf, spacejam, whitestar, whitestar, whitestar_state, whitestar, ROT0, "Sega", "Space Jam (France)", MACHINE_IS_PINBALL)
-GAME(1997, spacejmi, spacejam, whitestar, whitestar, whitestar_state, whitestar, ROT0, "Sega", "Space Jam (Italy)", MACHINE_IS_PINBALL)
-GAME(1997, swtril43, 0, whitestar, whitestar, whitestar_state, whitestar, ROT0, "Sega", "Star Wars Trilogy (4.03)", MACHINE_IS_PINBALL)
-GAME(1997, swtril41, swtril43, whitestar, whitestar, whitestar_state, whitestar, ROT0, "Sega", "Star Wars Trilogy (4.01)", MACHINE_IS_PINBALL)
-GAME(1997, startrp, 0, whitestar, whitestar, whitestar_state, whitestar, ROT0, "Sega", "Starship Troopers", MACHINE_IS_PINBALL)
-GAME(1999, strikext, 0, whitestar, whitestar, whitestar_state, whitestar, ROT0, "Stern", "Striker Xtreme (1.02)", MACHINE_IS_PINBALL)
-GAME(1999, strknew, strikext, whitestar, whitestar, whitestar_state, whitestar, ROT0, "Stern", "Striker Xtreme (ARM7 Sound Board)", MACHINE_IS_PINBALL)
-GAME(1999, strxt_uk, strikext, whitestar, whitestar, whitestar_state, whitestar, ROT0, "Stern", "Striker Xtreme (UK)", MACHINE_IS_PINBALL)
-GAME(1999, strxt_gr, strikext, whitestar, whitestar, whitestar_state, whitestar, ROT0, "Stern", "Striker Xtreme (Germany)", MACHINE_IS_PINBALL)
-GAME(1999, strxt_fr, strikext, whitestar, whitestar, whitestar_state, whitestar, ROT0, "Stern", "Striker Xtreme (France)", MACHINE_IS_PINBALL)
-GAME(1999, strxt_it, strikext, whitestar, whitestar, whitestar_state, whitestar, ROT0, "Stern", "Striker Xtreme (Italy)", MACHINE_IS_PINBALL)
-GAME(1999, strxt_sp, strikext, whitestar, whitestar, whitestar_state, whitestar, ROT0, "Stern", "Striker Xtreme (Spain)", MACHINE_IS_PINBALL)
-GAME(2003, term3, 0, whitestar, whitestar, whitestar_state, whitestar, ROT0, "Stern", "Terminator 3: Rise of the Machines (4.00)", MACHINE_IS_PINBALL)
-GAME(2003, term3_301, term3, whitestar, whitestar, whitestar_state, whitestar, ROT0, "Stern", "Terminator 3: Rise of the Machines (3.01)", MACHINE_IS_PINBALL)
-GAME(2003, term3_205, term3, whitestar, whitestar, whitestar_state, whitestar, ROT0, "Stern", "Terminator 3: Rise of the Machines (2.05)", MACHINE_IS_PINBALL)
-GAME(2003, t3new, term3, whitestar, whitestar, whitestar_state, whitestar, ROT0, "Stern", "Terminator 3: Rise of the Machines (ARM7 Sound Board)", MACHINE_IS_PINBALL)
-GAME(2003, term3g, term3, whitestar, whitestar, whitestar_state, whitestar, ROT0, "Stern", "Terminator 3: Rise of the Machines (4.00 Germany)", MACHINE_IS_PINBALL)
-GAME(2003, term3g_301, term3, whitestar, whitestar, whitestar_state, whitestar, ROT0, "Stern", "Terminator 3: Rise of the Machines (3.01 Germany)", MACHINE_IS_PINBALL)
-GAME(2003, term3l, term3, whitestar, whitestar, whitestar_state, whitestar, ROT0, "Stern", "Terminator 3: Rise of the Machines (4.00 Spain)", MACHINE_IS_PINBALL)
-GAME(2003, term3l_301, term3, whitestar, whitestar, whitestar_state, whitestar, ROT0, "Stern", "Terminator 3: Rise of the Machines (3.01 Spain)", MACHINE_IS_PINBALL)
-GAME(2003, term3l_205, term3, whitestar, whitestar, whitestar_state, whitestar, ROT0, "Stern", "Terminator 3: Rise of the Machines (2.05 Spain)", MACHINE_IS_PINBALL)
-GAME(2003, term3f, term3, whitestar, whitestar, whitestar_state, whitestar, ROT0, "Stern", "Terminator 3: Rise of the Machines (4.00 France)", MACHINE_IS_PINBALL)
-GAME(2003, term3f_301, term3, whitestar, whitestar, whitestar_state, whitestar, ROT0, "Stern", "Terminator 3: Rise of the Machines (3.01 France)", MACHINE_IS_PINBALL)
-GAME(2003, term3f_205, term3, whitestar, whitestar, whitestar_state, whitestar, ROT0, "Stern", "Terminator 3: Rise of the Machines (2.05 France)", MACHINE_IS_PINBALL)
-GAME(2003, term3i, term3, whitestar, whitestar, whitestar_state, whitestar, ROT0, "Stern", "Terminator 3: Rise of the Machines (4.00 Italy)", MACHINE_IS_PINBALL)
-GAME(2003, term3i_301, term3, whitestar, whitestar, whitestar_state, whitestar, ROT0, "Stern", "Terminator 3: Rise of the Machines (3.01 Italy)", MACHINE_IS_PINBALL)
-GAME(2003, term3i_205, term3, whitestar, whitestar, whitestar_state, whitestar, ROT0, "Stern", "Terminator 3: Rise of the Machines (2.05 Italy)", MACHINE_IS_PINBALL)
-GAME(1997, jplstw22, 0, whitestar, whitestar, whitestar_state, whitestar, ROT0, "Sega", "The Lost World: Jurassic Park (2.02)", MACHINE_IS_PINBALL)
-GAME(1997, jplstw20, jplstw22, whitestar, whitestar, whitestar_state, whitestar, ROT0, "Sega", "The Lost World: Jurassic Park (2.00)", MACHINE_IS_PINBALL)
-GAME(2003, simpprty, 0, whitestar, whitestar, whitestar_state, whitestar, ROT0, "Stern", "The Simpsons Pinball Party (5.00)", MACHINE_IS_PINBALL)
-GAME(2003, simpprty_400,simpprty, whitestar, whitestar, whitestar_state, whitestar, ROT0, "Stern", "The Simpsons Pinball Party (4.00)", MACHINE_IS_PINBALL)
-GAME(2003, simpprty_300,simpprty, whitestar, whitestar, whitestar_state, whitestar, ROT0, "Stern", "The Simpsons Pinball Party (3.00)", MACHINE_IS_PINBALL)
-GAME(2003, simpprty_204,simpprty, whitestar, whitestar, whitestar_state, whitestar, ROT0, "Stern", "The Simpsons Pinball Party (2.04)", MACHINE_IS_PINBALL)
-GAME(2003, simpnew, simpprty, whitestar, whitestar, whitestar_state, whitestar, ROT0, "Stern", "The Simpsons Pinball Party (ARM7 Sound Board)", MACHINE_IS_PINBALL)
-GAME(2003, simpprtg, 0, whitestar, whitestar, whitestar_state, whitestar, ROT0, "Stern", "The Simpsons Pinball Party (5.00 Germany)", MACHINE_IS_PINBALL)
-GAME(2003, simpprtg_400,simpprtg, whitestar, whitestar, whitestar_state, whitestar, ROT0, "Stern", "The Simpsons Pinball Party (4.00 Germany)", MACHINE_IS_PINBALL)
-GAME(2003, simpprtl, 0, whitestar, whitestar, whitestar_state, whitestar, ROT0, "Stern", "The Simpsons Pinball Party (5.00 Spain)", MACHINE_IS_PINBALL)
-GAME(2003, simpprtl_400,simpprtl, whitestar, whitestar, whitestar_state, whitestar, ROT0, "Stern", "The Simpsons Pinball Party (4.00 Spain)", MACHINE_IS_PINBALL)
-GAME(2003, simpprtl_300,simpprtl, whitestar, whitestar, whitestar_state, whitestar, ROT0, "Stern", "The Simpsons Pinball Party (3.00 Spain)", MACHINE_IS_PINBALL)
-GAME(2003, simpprtl_204,simpprtl, whitestar, whitestar, whitestar_state, whitestar, ROT0, "Stern", "The Simpsons Pinball Party (2.04 Spain)", MACHINE_IS_PINBALL)
-GAME(2003, simpprtf, 0, whitestar, whitestar, whitestar_state, whitestar, ROT0, "Stern", "The Simpsons Pinball Party (5.00 France)", MACHINE_IS_PINBALL)
-GAME(2003, simpprtf_400,simpprtf, whitestar, whitestar, whitestar_state, whitestar, ROT0, "Stern", "The Simpsons Pinball Party (4.00 France)", MACHINE_IS_PINBALL)
-GAME(2003, simpprtf_300,simpprtf, whitestar, whitestar, whitestar_state, whitestar, ROT0, "Stern", "The Simpsons Pinball Party (3.00 France)", MACHINE_IS_PINBALL)
-GAME(2003, simpprtf_204,simpprtf, whitestar, whitestar, whitestar_state, whitestar, ROT0, "Stern", "The Simpsons Pinball Party (2.04 France)", MACHINE_IS_PINBALL)
-GAME(2003, simpprti, 0, whitestar, whitestar, whitestar_state, whitestar, ROT0, "Stern", "The Simpsons Pinball Party (5.00 Italy)", MACHINE_IS_PINBALL)
-GAME(2003, simpprti_400,simpprti, whitestar, whitestar, whitestar_state, whitestar, ROT0, "Stern", "The Simpsons Pinball Party (4.00 Italy)", MACHINE_IS_PINBALL)
-GAME(2003, simpprti_300,simpprti, whitestar, whitestar, whitestar_state, whitestar, ROT0, "Stern", "The Simpsons Pinball Party (3.00 Italy)", MACHINE_IS_PINBALL)
-GAME(2003, simpprti_204,simpprti, whitestar, whitestar, whitestar_state, whitestar, ROT0, "Stern", "The Simpsons Pinball Party (2.04 Italy)", MACHINE_IS_PINBALL)
-GAME(1997, xfilesp, 0, whitestar, whitestar, whitestar_state, whitestar, ROT0, "Sega", "X-Files (3.03)", MACHINE_IS_PINBALL)
-GAME(1997, xfiles2, xfilesp, whitestar, whitestar, whitestar_state, whitestar, ROT0, "Sega", "X-Files (2.04)", MACHINE_IS_PINBALL)
-GAME(1996, twst_405, 0, whitestar, whitestar, whitestar_state, whitestar, ROT0, "Sega", "Twister (4.05)", MACHINE_IS_PINBALL)
-GAME(1996, twst_404, twst_405, whitestar, whitestar, whitestar_state, whitestar, ROT0, "Sega", "Twister (4.04)", MACHINE_IS_PINBALL)
-GAME(1996, twst_300, twst_405, whitestar, whitestar, whitestar_state, whitestar, ROT0, "Sega", "Twister (3.00)", MACHINE_IS_PINBALL)
-GAME(1998, viprsega, 0, whitestar, whitestar, whitestar_state, whitestar, ROT0, "Sega", "Viper Night Drivin'", MACHINE_IS_PINBALL)
-GAME(1998, ctchzdlx, ctcheese, whitestar, whitestar, whitestar_state, whitestar, ROT0, "Sega", "Cut The Cheese Deluxe (Redemption)", MACHINE_IS_PINBALL)
-GAME(1998, titanic, 0, whitestar, whitestar, whitestar_state, whitestar, ROT0, "Sega", "Titanic (Coin dropper)", MACHINE_IS_PINBALL)
-GAME(2002, monopred, 0, whitestar, whitestar, whitestar_state, whitestar, ROT0, "Stern", "Monopoly (Coin dropper)", MACHINE_IS_PINBALL)
-GAME(1998, wackadoo, 0, whitestar, whitestar, whitestar_state, whitestar, ROT0, "Sega", "Wack-A-Doodle-Doo (Redemption)", MACHINE_IS_PINBALL)
+GAME(1995, apollo13, 0, whitestar, whitestar, driver_device, 0, ROT0, "Sega", "Apollo 13 (5.01)", MACHINE_IS_PINBALL)
+GAME(1995, apollo13_10,apollo13, whitestar, whitestar, driver_device, 0, ROT0, "Sega", "Apollo 13 (1.00)", MACHINE_IS_PINBALL)
+GAME(2001, austin, 0, whitestar, whitestar, driver_device, 0, ROT0, "Stern", "Austin Powers (3.02)", MACHINE_IS_PINBALL)
+GAME(2001, aust301, austin, whitestar, whitestar, driver_device, 0, ROT0, "Stern", "Austin Powers (3.01)", MACHINE_IS_PINBALL)
+GAME(2001, aust300, austin, whitestar, whitestar, driver_device, 0, ROT0, "Stern", "Austin Powers (3.00)", MACHINE_IS_PINBALL)
+GAME(2001, aust201, austin, whitestar, whitestar, driver_device, 0, ROT0, "Stern", "Austin Powers (2.01)", MACHINE_IS_PINBALL)
+GAME(2001, austnew, austin, whitestar, whitestar, driver_device, 0, ROT0, "Stern", "Austin Powers (ARM7 Sound Board)", MACHINE_IS_PINBALL)
+GAME(2001, austinf, austin, whitestar, whitestar, driver_device, 0, ROT0, "Stern", "Austin Powers (France)", MACHINE_IS_PINBALL)
+GAME(2001, austing, austin, whitestar, whitestar, driver_device, 0, ROT0, "Stern", "Austin Powers (Germany)", MACHINE_IS_PINBALL)
+GAME(2001, austini, austin, whitestar, whitestar, driver_device, 0, ROT0, "Stern", "Austin Powers (Italy)", MACHINE_IS_PINBALL)
+GAME(1998, godzillp, 0, whitestar, whitestar, driver_device, 0, ROT0, "Sega", "Godzilla (Pinball)", MACHINE_IS_PINBALL)
+GAME(1996, gldneye, 0, whitestar, whitestar, driver_device, 0, ROT0, "Sega", "Goldeneye", MACHINE_IS_PINBALL)
+GAME(1998, goldcue, 0, whitestar, whitestar, driver_device, 0, ROT0, "Sega", "Golden Cue", MACHINE_IS_PINBALL)
+GAME(1999, harl_a13, 0, whitestar, whitestar, driver_device, 0, ROT0, "Sega", "Harley Davidson (1.03)", MACHINE_IS_PINBALL)
+GAME(1999, harl_u13, harl_a13, whitestar, whitestar, driver_device, 0, ROT0, "Sega", "Harley Davidson (1.03 UK)", MACHINE_IS_PINBALL)
+GAME(1999, harl_a10, harl_a13, whitestar, whitestar, driver_device, 0, ROT0, "Sega", "Harley Davidson (1.03 Display rev. 1.00)", MACHINE_IS_PINBALL)
+GAME(1999, harl_f13, harl_a13, whitestar, whitestar, driver_device, 0, ROT0, "Sega", "Harley Davidson (1.03 France)", MACHINE_IS_PINBALL)
+GAME(1999, harl_g13, harl_a13, whitestar, whitestar, driver_device, 0, ROT0, "Sega", "Harley Davidson (1.03 Germany)", MACHINE_IS_PINBALL)
+GAME(1999, harl_i13, harl_a13, whitestar, whitestar, driver_device, 0, ROT0, "Sega", "Harley Davidson (1.03 Italy)", MACHINE_IS_PINBALL)
+GAME(1999, harl_l13, harl_a13, whitestar, whitestar, driver_device, 0, ROT0, "Sega", "Harley Davidson (1.03 Spain)", MACHINE_IS_PINBALL)
+GAME(2004, harl_a40, 0, whitestar, whitestar, driver_device, 0, ROT0, "Stern", "Harley Davidson (4.00)", MACHINE_IS_PINBALL)
+GAME(2004, harl_f40, harl_a40, whitestar, whitestar, driver_device, 0, ROT0, "Stern", "Harley Davidson (4.00 France)", MACHINE_IS_PINBALL)
+GAME(2004, harl_g40, harl_a40, whitestar, whitestar, driver_device, 0, ROT0, "Stern", "Harley Davidson (4.00 Germany)", MACHINE_IS_PINBALL)
+GAME(2004, harl_i40, harl_a40, whitestar, whitestar, driver_device, 0, ROT0, "Stern", "Harley Davidson (4.00 Italy)", MACHINE_IS_PINBALL)
+GAME(2004, harl_l40, harl_a40, whitestar, whitestar, driver_device, 0, ROT0, "Stern", "Harley Davidson (4.00 Spain)", MACHINE_IS_PINBALL)
+GAME(2004, harl_a30, harl_a40, whitestar, whitestar, driver_device, 0, ROT0, "Stern", "Harley Davidson (3.00)", MACHINE_IS_PINBALL)
+GAME(2004, harl_f30, harl_a40, whitestar, whitestar, driver_device, 0, ROT0, "Stern", "Harley Davidson (3.00 France)", MACHINE_IS_PINBALL)
+GAME(2004, harl_g30, harl_a40, whitestar, whitestar, driver_device, 0, ROT0, "Stern", "Harley Davidson (3.00 Germany)", MACHINE_IS_PINBALL)
+GAME(2004, harl_i30, harl_a40, whitestar, whitestar, driver_device, 0, ROT0, "Stern", "Harley Davidson (3.00 Italy)", MACHINE_IS_PINBALL)
+GAME(2004, harl_l30, harl_a40, whitestar, whitestar, driver_device, 0, ROT0, "Stern", "Harley Davidson (3.00 Spain)", MACHINE_IS_PINBALL)
+GAME(2003, harl_a18, harl_a40, whitestar, whitestar, driver_device, 0, ROT0, "Stern", "Harley Davidson (1.08)", MACHINE_IS_PINBALL)
+GAME(2003, harl_f18, harl_a40, whitestar, whitestar, driver_device, 0, ROT0, "Stern", "Harley Davidson (1.08 France)", MACHINE_IS_PINBALL)
+GAME(2003, harl_g18, harl_a40, whitestar, whitestar, driver_device, 0, ROT0, "Stern", "Harley Davidson (1.08 Germany)", MACHINE_IS_PINBALL)
+GAME(2003, harl_i18, harl_a40, whitestar, whitestar, driver_device, 0, ROT0, "Stern", "Harley Davidson (1.08 Italy)", MACHINE_IS_PINBALL)
+GAME(2003, harl_l18, harl_a40, whitestar, whitestar, driver_device, 0, ROT0, "Stern", "Harley Davidson (1.08 Spain)", MACHINE_IS_PINBALL)
+GAME(2001, hirolcas, 0, whitestar, whitestar, driver_device, 0, ROT0, "Stern", "High Roller Casino (3.00)", MACHINE_IS_PINBALL)
+GAME(2001, hironew, hirolcas, whitestar, whitestar, driver_device, 0, ROT0, "Stern", "High Roller Casino (ARM7 Sound Board)", MACHINE_IS_PINBALL)
+GAME(2001, hirolcat, hirolcas, whitestar, whitestar, driver_device, 0, ROT0, "Stern", "High Roller Casino (3.00) TEST", MACHINE_IS_PINBALL)
+GAME(2001, hirolcas_210,hirolcas, whitestar, whitestar, driver_device, 0, ROT0, "Stern", "High Roller Casino (2.10)", MACHINE_IS_PINBALL)
+GAME(2001, hirol_fr, hirolcas, whitestar, whitestar, driver_device, 0, ROT0, "Stern", "High Roller Casino (3.00 France)", MACHINE_IS_PINBALL)
+GAME(2001, hirol_gr, hirolcas, whitestar, whitestar, driver_device, 0, ROT0, "Stern", "High Roller Casino (3.00 Germany)", MACHINE_IS_PINBALL)
+GAME(2001, hirol_gr_210,hirolcas, whitestar, whitestar, driver_device, 0, ROT0, "Stern", "High Roller Casino (2.10 Germany)", MACHINE_IS_PINBALL)
+GAME(2001, hirol_it, hirolcas, whitestar, whitestar, driver_device, 0, ROT0, "Stern", "High Roller Casino (3.00 Italy)", MACHINE_IS_PINBALL)
+GAME(1996, id4, 0, whitestar, whitestar, driver_device, 0, ROT0, "Sega", "Independence Day", MACHINE_IS_PINBALL)
+GAME(1996, id4_201, id4, whitestar, whitestar, driver_device, 0, ROT0, "Sega", "Independence Day (v2.01)", MACHINE_IS_PINBALL)
+GAME(1998, lostspc, 0, whitestar, whitestar, driver_device, 0, ROT0, "Sega", "Lost in Space", MACHINE_IS_PINBALL)
+GAME(2001, monopolp, 0, whitestar, whitestar, driver_device, 0, ROT0, "Stern", "Monopoly (3.20)", MACHINE_IS_PINBALL)
+GAME(2002, monop303, monopolp, whitestar, whitestar, driver_device, 0, ROT0, "Stern", "Monopoly (3.03)", MACHINE_IS_PINBALL)
+GAME(2002, monop301, monopolp, whitestar, whitestar, driver_device, 0, ROT0, "Stern", "Monopoly (3.01)", MACHINE_IS_PINBALL)
+GAME(2002, monop251, monopolp, whitestar, whitestar, driver_device, 0, ROT0, "Stern", "Monopoly (2.51)", MACHINE_IS_PINBALL)
+GAME(2002, monop233, monopolp, whitestar, whitestar, driver_device, 0, ROT0, "Stern", "Monopoly (2.33)", MACHINE_IS_PINBALL)
+GAME(2002, monopolf, monopolp, whitestar, whitestar, driver_device, 0, ROT0, "Stern", "Monopoly (France)", MACHINE_IS_PINBALL)
+GAME(2002, monopolg, monopolp, whitestar, whitestar, driver_device, 0, ROT0, "Stern", "Monopoly (Germany)", MACHINE_IS_PINBALL)
+GAME(2002, monopoli, monopolp, whitestar, whitestar, driver_device, 0, ROT0, "Stern", "Monopoly (Italy)", MACHINE_IS_PINBALL)
+GAME(2002, monopoll, monopolp, whitestar, whitestar, driver_device, 0, ROT0, "Stern", "Monopoly (Spain)", MACHINE_IS_PINBALL)
+GAME(2002, mononew, monopolp, whitestar, whitestar, driver_device, 0, ROT0, "Stern", "Monopoly (ARM7 Sound Board)", MACHINE_IS_PINBALL)
+GAME(2001, nfl, 0, whitestar, whitestar, driver_device, 0, ROT0, "Stern", "NFL", MACHINE_IS_PINBALL)
+GAME(2002, playboys, 0, whitestar, whitestar, driver_device, 0, ROT0, "Stern", "Playboy (5.00)", MACHINE_IS_PINBALL)
+GAME(2002, playboys_401,playboys, whitestar, whitestar, driver_device, 0, ROT0, "Stern", "Playboy (4.01)", MACHINE_IS_PINBALL)
+GAME(2002, playboys_303,playboys, whitestar, whitestar, driver_device, 0, ROT0, "Stern", "Playboy (3.03)", MACHINE_IS_PINBALL)
+GAME(2002, playboys_302,playboys, whitestar, whitestar, driver_device, 0, ROT0, "Stern", "Playboy (3.02)", MACHINE_IS_PINBALL)
+GAME(2002, playboys_300,playboys, whitestar, whitestar, driver_device, 0, ROT0, "Stern", "Playboy (3.00)", MACHINE_IS_PINBALL)
+GAME(2002, playboys_203,playboys, whitestar, whitestar, driver_device, 0, ROT0, "Stern", "Playboy (2.03)", MACHINE_IS_PINBALL)
+GAME(2002, playnew, playboys, whitestar, whitestar, driver_device, 0, ROT0, "Stern", "Playboy (ARM7 Sound Board)", MACHINE_IS_PINBALL)
+GAME(2002, playboyf, 0, whitestar, whitestar, driver_device, 0, ROT0, "Stern", "Playboy (5.00 France)", MACHINE_IS_PINBALL)
+GAME(2002, playboyf_401,playboyf, whitestar, whitestar, driver_device, 0, ROT0, "Stern", "Playboy (4.01 France)", MACHINE_IS_PINBALL)
+GAME(2002, playboyf_303,playboyf, whitestar, whitestar, driver_device, 0, ROT0, "Stern", "Playboy (3.03 France)", MACHINE_IS_PINBALL)
+GAME(2002, playboyf_302,playboyf, whitestar, whitestar, driver_device, 0, ROT0, "Stern", "Playboy (3.02 France)", MACHINE_IS_PINBALL)
+GAME(2002, playboyf_300,playboyf, whitestar, whitestar, driver_device, 0, ROT0, "Stern", "Playboy (3.00 France)", MACHINE_IS_PINBALL)
+GAME(2002, playboyf_203,playboyf, whitestar, whitestar, driver_device, 0, ROT0, "Stern", "Playboy (2.03 France)", MACHINE_IS_PINBALL)
+GAME(2002, playboyg, 0, whitestar, whitestar, driver_device, 0, ROT0, "Stern", "Playboy (5.00 Germany)", MACHINE_IS_PINBALL)
+GAME(2002, playboyg_401,playboyg, whitestar, whitestar, driver_device, 0, ROT0, "Stern", "Playboy (4.01 Germany)", MACHINE_IS_PINBALL)
+GAME(2002, playboyg_303,playboyg, whitestar, whitestar, driver_device, 0, ROT0, "Stern", "Playboy (3.03 Germany)", MACHINE_IS_PINBALL)
+GAME(2002, playboyg_302,playboyg, whitestar, whitestar, driver_device, 0, ROT0, "Stern", "Playboy (3.02 Germany)", MACHINE_IS_PINBALL)
+GAME(2002, playboyg_300,playboyg, whitestar, whitestar, driver_device, 0, ROT0, "Stern", "Playboy (3.00 Germany)", MACHINE_IS_PINBALL)
+GAME(2002, playboyg_203,playboyg, whitestar, whitestar, driver_device, 0, ROT0, "Stern", "Playboy (2.03 Germany)", MACHINE_IS_PINBALL)
+GAME(2002, playboyi, 0, whitestar, whitestar, driver_device, 0, ROT0, "Stern", "Playboy (5.00 Italy)", MACHINE_IS_PINBALL)
+GAME(2002, playboyi_401,playboyi, whitestar, whitestar, driver_device, 0, ROT0, "Stern", "Playboy (4.01 Italy)", MACHINE_IS_PINBALL)
+GAME(2002, playboyi_303,playboyi, whitestar, whitestar, driver_device, 0, ROT0, "Stern", "Playboy (3.03 Italy)", MACHINE_IS_PINBALL)
+GAME(2002, playboyi_302,playboyi, whitestar, whitestar, driver_device, 0, ROT0, "Stern", "Playboy (3.02 Italy)", MACHINE_IS_PINBALL)
+GAME(2002, playboyi_300,playboyi, whitestar, whitestar, driver_device, 0, ROT0, "Stern", "Playboy (3.00 Italy)", MACHINE_IS_PINBALL)
+GAME(2002, playboyi_203,playboyi, whitestar, whitestar, driver_device, 0, ROT0, "Stern", "Playboy (2.03 Italy)", MACHINE_IS_PINBALL)
+GAME(2002, playboyl, 0, whitestar, whitestar, driver_device, 0, ROT0, "Stern", "Playboy (5.00 Spain)", MACHINE_IS_PINBALL)
+GAME(2002, playboyl_401,playboyl, whitestar, whitestar, driver_device, 0, ROT0, "Stern", "Playboy (4.01 Spain)", MACHINE_IS_PINBALL)
+GAME(2002, playboyl_303,playboyl, whitestar, whitestar, driver_device, 0, ROT0, "Stern", "Playboy (3.03 Spain)", MACHINE_IS_PINBALL)
+GAME(2002, playboyl_302,playboyl, whitestar, whitestar, driver_device, 0, ROT0, "Stern", "Playboy (3.02 Spain)", MACHINE_IS_PINBALL)
+GAME(2002, playboyl_300,playboyl, whitestar, whitestar, driver_device, 0, ROT0, "Stern", "Playboy (3.00 Spain)", MACHINE_IS_PINBALL)
+GAME(2002, playboyl_203,playboyl, whitestar, whitestar, driver_device, 0, ROT0, "Stern", "Playboy (2.03 Spain)", MACHINE_IS_PINBALL)
+GAME(2002, rctycn, 0, whitestar, whitestar, driver_device, 0, ROT0, "Stern", "Roller Coaster Tycoon (7.02)", MACHINE_IS_PINBALL)
+GAME(2002, rctycn_701, rctycn, whitestar, whitestar, driver_device, 0, ROT0, "Stern", "Roller Coaster Tycoon (7.01)", MACHINE_IS_PINBALL)
+GAME(2002, rctycn_600, rctycn, whitestar, whitestar, driver_device, 0, ROT0, "Stern", "Roller Coaster Tycoon (6.00)", MACHINE_IS_PINBALL)
+GAME(2002, rctycn_400, rctycn, whitestar, whitestar, driver_device, 0, ROT0, "Stern", "Roller Coaster Tycoon (4.00)", MACHINE_IS_PINBALL)
+GAME(2002, rctnew, rctycn, whitestar, whitestar, driver_device, 0, ROT0, "Stern", "Roller Coaster Tycoon (ARM7 Sound Board)", MACHINE_IS_PINBALL)
+GAME(2002, rctycng, 0, whitestar, whitestar, driver_device, 0, ROT0, "Stern", "Roller Coaster Tycoon (7.02 Germany)", MACHINE_IS_PINBALL)
+GAME(2002, rctycng_701,rctycng, whitestar, whitestar, driver_device, 0, ROT0, "Stern", "Roller Coaster Tycoon (7.01 Germany)", MACHINE_IS_PINBALL)
+GAME(2002, rctycng_400,rctycng, whitestar, whitestar, driver_device, 0, ROT0, "Stern", "Roller Coaster Tycoon (4.00 Germany)", MACHINE_IS_PINBALL)
+GAME(2002, rctycnf, 0, whitestar, whitestar, driver_device, 0, ROT0, "Stern", "Roller Coaster Tycoon (7.02 France)", MACHINE_IS_PINBALL)
+GAME(2002, rctycnf_701,rctycnf, whitestar, whitestar, driver_device, 0, ROT0, "Stern", "Roller Coaster Tycoon (7.01 France)", MACHINE_IS_PINBALL)
+GAME(2002, rctycnf_600,rctycnf, whitestar, whitestar, driver_device, 0, ROT0, "Stern", "Roller Coaster Tycoon (6.00 France)", MACHINE_IS_PINBALL)
+GAME(2002, rctycnf_400,rctycnf, whitestar, whitestar, driver_device, 0, ROT0, "Stern", "Roller Coaster Tycoon (4.00 France)", MACHINE_IS_PINBALL)
+GAME(2002, rctycni, 0, whitestar, whitestar, driver_device, 0, ROT0, "Stern", "Roller Coaster Tycoon (7.02 Italy)", MACHINE_IS_PINBALL)
+GAME(2002, rctycni_701,rctycni, whitestar, whitestar, driver_device, 0, ROT0, "Stern", "Roller Coaster Tycoon (7.01 Italy)", MACHINE_IS_PINBALL)
+GAME(2002, rctycni_600,rctycni, whitestar, whitestar, driver_device, 0, ROT0, "Stern", "Roller Coaster Tycoon (6.00 Italy)", MACHINE_IS_PINBALL)
+GAME(2002, rctycni_400,rctycni, whitestar, whitestar, driver_device, 0, ROT0, "Stern", "Roller Coaster Tycoon (4.00 Italy)", MACHINE_IS_PINBALL)
+GAME(2002, rctycnl, 0, whitestar, whitestar, driver_device, 0, ROT0, "Stern", "Roller Coaster Tycoon (7.02 Spain)", MACHINE_IS_PINBALL)
+GAME(2002, rctycnl_701,rctycnl, whitestar, whitestar, driver_device, 0, ROT0, "Stern", "Roller Coaster Tycoon (7.01 Spain)", MACHINE_IS_PINBALL)
+GAME(2002, rctycnl_600,rctycnl, whitestar, whitestar, driver_device, 0, ROT0, "Stern", "Roller Coaster Tycoon (6.00 Spain)", MACHINE_IS_PINBALL)
+GAME(2002, rctycnl_400,rctycnl, whitestar, whitestar, driver_device, 0, ROT0, "Stern", "Roller Coaster Tycoon (4.00 Spain)", MACHINE_IS_PINBALL)
+GAME(2000, shrkysht, 0, whitestar, whitestar, driver_device, 0, ROT0, "Stern", "Sharkey's Shootout (2.11)", MACHINE_IS_PINBALL)
+GAME(2000, shrky_207, shrkysht, whitestar, whitestar, driver_device, 0, ROT0, "Stern", "Sharkey's Shootout (2.07)", MACHINE_IS_PINBALL)
+GAME(2001, shrknew, shrkysht, whitestar, whitestar, driver_device, 0, ROT0, "Stern", "Sharkey's Shootout (ARM7 Sound Board)", MACHINE_IS_PINBALL)
+GAME(2001, shrkygr, shrkysht, whitestar, whitestar, driver_device, 0, ROT0, "Stern", "Sharkey's Shootout (2.11 Germany)", MACHINE_IS_PINBALL)
+GAME(2001, shrkygr_207,shrkysht, whitestar, whitestar, driver_device, 0, ROT0, "Stern", "Sharkey's Shootout (2.07 Germany)", MACHINE_IS_PINBALL)
+GAME(2001, shrkyfr, shrkysht, whitestar, whitestar, driver_device, 0, ROT0, "Stern", "Sharkey's Shootout (2.11 France)", MACHINE_IS_PINBALL)
+GAME(2001, shrkyfr_207,shrkysht, whitestar, whitestar, driver_device, 0, ROT0, "Stern", "Sharkey's Shootout (2.07 France)", MACHINE_IS_PINBALL)
+GAME(2001, shrkyit, shrkysht, whitestar, whitestar, driver_device, 0, ROT0, "Stern", "Sharkey's Shootout (2.11 Italy)", MACHINE_IS_PINBALL)
+GAME(2001, shrkyit_207,shrkysht, whitestar, whitestar, driver_device, 0, ROT0, "Stern", "Sharkey's Shootout (2.07 Italy)", MACHINE_IS_PINBALL)
+GAME(1999, sprk_103, 0, whitestar, whitestar, driver_device, 0, ROT0, "Sega", "South Park (1.03)", MACHINE_IS_PINBALL)
+GAME(1999, sprk_096, sprk_103, whitestar, whitestar, driver_device, 0, ROT0, "Sega", "South Park (0.96)", MACHINE_IS_PINBALL)
+GAME(1999, sprk_090, sprk_103, whitestar, whitestar, driver_device, 0, ROT0, "Sega", "South Park (0.90)", MACHINE_IS_PINBALL)
+GAME(1997, spacejam, 0, whitestar, whitestar, driver_device, 0, ROT0, "Sega", "Space Jam", MACHINE_IS_PINBALL)
+GAME(1997, spacejmg, spacejam, whitestar, whitestar, driver_device, 0, ROT0, "Sega", "Space Jam (Germany)", MACHINE_IS_PINBALL)
+GAME(1997, spacejmf, spacejam, whitestar, whitestar, driver_device, 0, ROT0, "Sega", "Space Jam (France)", MACHINE_IS_PINBALL)
+GAME(1997, spacejmi, spacejam, whitestar, whitestar, driver_device, 0, ROT0, "Sega", "Space Jam (Italy)", MACHINE_IS_PINBALL)
+GAME(1997, swtril43, 0, whitestar, whitestar, driver_device, 0, ROT0, "Sega", "Star Wars Trilogy (4.03)", MACHINE_IS_PINBALL)
+GAME(1997, swtril41, swtril43, whitestar, whitestar, driver_device, 0, ROT0, "Sega", "Star Wars Trilogy (4.01)", MACHINE_IS_PINBALL)
+GAME(1997, startrp, 0, whitestar, whitestar, driver_device, 0, ROT0, "Sega", "Starship Troopers", MACHINE_IS_PINBALL)
+GAME(1999, strikext, 0, whitestar, whitestar, driver_device, 0, ROT0, "Stern", "Striker Xtreme (1.02)", MACHINE_IS_PINBALL)
+GAME(1999, strknew, strikext, whitestar, whitestar, driver_device, 0, ROT0, "Stern", "Striker Xtreme (ARM7 Sound Board)", MACHINE_IS_PINBALL)
+GAME(1999, strxt_uk, strikext, whitestar, whitestar, driver_device, 0, ROT0, "Stern", "Striker Xtreme (UK)", MACHINE_IS_PINBALL)
+GAME(1999, strxt_gr, strikext, whitestar, whitestar, driver_device, 0, ROT0, "Stern", "Striker Xtreme (Germany)", MACHINE_IS_PINBALL)
+GAME(1999, strxt_fr, strikext, whitestar, whitestar, driver_device, 0, ROT0, "Stern", "Striker Xtreme (France)", MACHINE_IS_PINBALL)
+GAME(1999, strxt_it, strikext, whitestar, whitestar, driver_device, 0, ROT0, "Stern", "Striker Xtreme (Italy)", MACHINE_IS_PINBALL)
+GAME(1999, strxt_sp, strikext, whitestar, whitestar, driver_device, 0, ROT0, "Stern", "Striker Xtreme (Spain)", MACHINE_IS_PINBALL)
+GAME(2003, term3, 0, whitestar, whitestar, driver_device, 0, ROT0, "Stern", "Terminator 3: Rise of the Machines (4.00)", MACHINE_IS_PINBALL)
+GAME(2003, term3_301, term3, whitestar, whitestar, driver_device, 0, ROT0, "Stern", "Terminator 3: Rise of the Machines (3.01)", MACHINE_IS_PINBALL)
+GAME(2003, term3_205, term3, whitestar, whitestar, driver_device, 0, ROT0, "Stern", "Terminator 3: Rise of the Machines (2.05)", MACHINE_IS_PINBALL)
+GAME(2003, t3new, term3, whitestar, whitestar, driver_device, 0, ROT0, "Stern", "Terminator 3: Rise of the Machines (ARM7 Sound Board)", MACHINE_IS_PINBALL)
+GAME(2003, term3g, term3, whitestar, whitestar, driver_device, 0, ROT0, "Stern", "Terminator 3: Rise of the Machines (4.00 Germany)", MACHINE_IS_PINBALL)
+GAME(2003, term3g_301, term3, whitestar, whitestar, driver_device, 0, ROT0, "Stern", "Terminator 3: Rise of the Machines (3.01 Germany)", MACHINE_IS_PINBALL)
+GAME(2003, term3l, term3, whitestar, whitestar, driver_device, 0, ROT0, "Stern", "Terminator 3: Rise of the Machines (4.00 Spain)", MACHINE_IS_PINBALL)
+GAME(2003, term3l_301, term3, whitestar, whitestar, driver_device, 0, ROT0, "Stern", "Terminator 3: Rise of the Machines (3.01 Spain)", MACHINE_IS_PINBALL)
+GAME(2003, term3l_205, term3, whitestar, whitestar, driver_device, 0, ROT0, "Stern", "Terminator 3: Rise of the Machines (2.05 Spain)", MACHINE_IS_PINBALL)
+GAME(2003, term3f, term3, whitestar, whitestar, driver_device, 0, ROT0, "Stern", "Terminator 3: Rise of the Machines (4.00 France)", MACHINE_IS_PINBALL)
+GAME(2003, term3f_301, term3, whitestar, whitestar, driver_device, 0, ROT0, "Stern", "Terminator 3: Rise of the Machines (3.01 France)", MACHINE_IS_PINBALL)
+GAME(2003, term3f_205, term3, whitestar, whitestar, driver_device, 0, ROT0, "Stern", "Terminator 3: Rise of the Machines (2.05 France)", MACHINE_IS_PINBALL)
+GAME(2003, term3i, term3, whitestar, whitestar, driver_device, 0, ROT0, "Stern", "Terminator 3: Rise of the Machines (4.00 Italy)", MACHINE_IS_PINBALL)
+GAME(2003, term3i_301, term3, whitestar, whitestar, driver_device, 0, ROT0, "Stern", "Terminator 3: Rise of the Machines (3.01 Italy)", MACHINE_IS_PINBALL)
+GAME(2003, term3i_205, term3, whitestar, whitestar, driver_device, 0, ROT0, "Stern", "Terminator 3: Rise of the Machines (2.05 Italy)", MACHINE_IS_PINBALL)
+GAME(1997, jplstw22, 0, whitestar, whitestar, driver_device, 0, ROT0, "Sega", "The Lost World: Jurassic Park (2.02)", MACHINE_IS_PINBALL)
+GAME(1997, jplstw20, jplstw22, whitestar, whitestar, driver_device, 0, ROT0, "Sega", "The Lost World: Jurassic Park (2.00)", MACHINE_IS_PINBALL)
+GAME(2003, simpprty, 0, whitestar, whitestar, driver_device, 0, ROT0, "Stern", "The Simpsons Pinball Party (5.00)", MACHINE_IS_PINBALL)
+GAME(2003, simpprty_400,simpprty, whitestar, whitestar, driver_device, 0, ROT0, "Stern", "The Simpsons Pinball Party (4.00)", MACHINE_IS_PINBALL)
+GAME(2003, simpprty_300,simpprty, whitestar, whitestar, driver_device, 0, ROT0, "Stern", "The Simpsons Pinball Party (3.00)", MACHINE_IS_PINBALL)
+GAME(2003, simpprty_204,simpprty, whitestar, whitestar, driver_device, 0, ROT0, "Stern", "The Simpsons Pinball Party (2.04)", MACHINE_IS_PINBALL)
+GAME(2003, simpnew, simpprty, whitestar, whitestar, driver_device, 0, ROT0, "Stern", "The Simpsons Pinball Party (ARM7 Sound Board)", MACHINE_IS_PINBALL)
+GAME(2003, simpprtg, 0, whitestar, whitestar, driver_device, 0, ROT0, "Stern", "The Simpsons Pinball Party (5.00 Germany)", MACHINE_IS_PINBALL)
+GAME(2003, simpprtg_400,simpprtg, whitestar, whitestar, driver_device, 0, ROT0, "Stern", "The Simpsons Pinball Party (4.00 Germany)", MACHINE_IS_PINBALL)
+GAME(2003, simpprtl, 0, whitestar, whitestar, driver_device, 0, ROT0, "Stern", "The Simpsons Pinball Party (5.00 Spain)", MACHINE_IS_PINBALL)
+GAME(2003, simpprtl_400,simpprtl, whitestar, whitestar, driver_device, 0, ROT0, "Stern", "The Simpsons Pinball Party (4.00 Spain)", MACHINE_IS_PINBALL)
+GAME(2003, simpprtl_300,simpprtl, whitestar, whitestar, driver_device, 0, ROT0, "Stern", "The Simpsons Pinball Party (3.00 Spain)", MACHINE_IS_PINBALL)
+GAME(2003, simpprtl_204,simpprtl, whitestar, whitestar, driver_device, 0, ROT0, "Stern", "The Simpsons Pinball Party (2.04 Spain)", MACHINE_IS_PINBALL)
+GAME(2003, simpprtf, 0, whitestar, whitestar, driver_device, 0, ROT0, "Stern", "The Simpsons Pinball Party (5.00 France)", MACHINE_IS_PINBALL)
+GAME(2003, simpprtf_400,simpprtf, whitestar, whitestar, driver_device, 0, ROT0, "Stern", "The Simpsons Pinball Party (4.00 France)", MACHINE_IS_PINBALL)
+GAME(2003, simpprtf_300,simpprtf, whitestar, whitestar, driver_device, 0, ROT0, "Stern", "The Simpsons Pinball Party (3.00 France)", MACHINE_IS_PINBALL)
+GAME(2003, simpprtf_204,simpprtf, whitestar, whitestar, driver_device, 0, ROT0, "Stern", "The Simpsons Pinball Party (2.04 France)", MACHINE_IS_PINBALL)
+GAME(2003, simpprti, 0, whitestar, whitestar, driver_device, 0, ROT0, "Stern", "The Simpsons Pinball Party (5.00 Italy)", MACHINE_IS_PINBALL)
+GAME(2003, simpprti_400,simpprti, whitestar, whitestar, driver_device, 0, ROT0, "Stern", "The Simpsons Pinball Party (4.00 Italy)", MACHINE_IS_PINBALL)
+GAME(2003, simpprti_300,simpprti, whitestar, whitestar, driver_device, 0, ROT0, "Stern", "The Simpsons Pinball Party (3.00 Italy)", MACHINE_IS_PINBALL)
+GAME(2003, simpprti_204,simpprti, whitestar, whitestar, driver_device, 0, ROT0, "Stern", "The Simpsons Pinball Party (2.04 Italy)", MACHINE_IS_PINBALL)
+GAME(1997, xfilesp, 0, whitestar, whitestar, driver_device, 0, ROT0, "Sega", "X-Files (3.03)", MACHINE_IS_PINBALL)
+GAME(1997, xfiles2, xfilesp, whitestar, whitestar, driver_device, 0, ROT0, "Sega", "X-Files (2.04)", MACHINE_IS_PINBALL)
+GAME(1996, twst_405, 0, whitestar, whitestar, driver_device, 0, ROT0, "Sega", "Twister (4.05)", MACHINE_IS_PINBALL)
+GAME(1996, twst_404, twst_405, whitestar, whitestar, driver_device, 0, ROT0, "Sega", "Twister (4.04)", MACHINE_IS_PINBALL)
+GAME(1996, twst_300, twst_405, whitestar, whitestar, driver_device, 0, ROT0, "Sega", "Twister (3.00)", MACHINE_IS_PINBALL)
+GAME(1998, viprsega, 0, whitestar, whitestar, driver_device, 0, ROT0, "Sega", "Viper Night Drivin'", MACHINE_IS_PINBALL)
+GAME(1998, ctchzdlx, ctcheese, whitestar, whitestar, driver_device, 0, ROT0, "Sega", "Cut The Cheese Deluxe (Redemption)", MACHINE_IS_PINBALL)
+GAME(1998, titanic, 0, whitestar, whitestar, driver_device, 0, ROT0, "Sega", "Titanic (Coin dropper)", MACHINE_IS_PINBALL)
+GAME(2002, monopred, 0, whitestar, whitestar, driver_device, 0, ROT0, "Stern", "Monopoly (Coin dropper)", MACHINE_IS_PINBALL)
+GAME(1998, wackadoo, 0, whitestar, whitestar, driver_device, 0, ROT0, "Sega", "Wack-A-Doodle-Doo (Redemption)", MACHINE_IS_PINBALL)
diff --git a/src/mame/drivers/wildpkr.cpp b/src/mame/drivers/wildpkr.cpp
index c3f35668fdc..546df6a94b5 100644
--- a/src/mame/drivers/wildpkr.cpp
+++ b/src/mame/drivers/wildpkr.cpp
@@ -231,9 +231,9 @@ static ADDRESS_MAP_START( tabpkr_map, AS_PROGRAM, 16, wildpkr_state )
AM_RANGE(0x300000, 0x303fff) AM_RAM
AM_RANGE(0x400000, 0x4007ff) AM_RAM // dallas timekeeper?
-// AM_RANGE(0x800200, 0x800201) AM_DEVWRITE8("ramdac", ramdac_device, index_w, 0xff00)
-// AM_RANGE(0x800202, 0x800203) AM_DEVWRITE8("ramdac", ramdac_device, pal_w, 0xff00)
-// AM_RANGE(0x800204, 0x800205) AM_DEVWRITE8("ramdac", ramdac_device, mask_w, 0xff00)
+// AM_RANGE(0x800200, 0x800201) AM_DEVWRITE8("ramdac", ramdac_device, index_w, 0xff00)
+// AM_RANGE(0x800202, 0x800203) AM_DEVWRITE8("ramdac", ramdac_device, pal_w, 0xff00)
+// AM_RANGE(0x800204, 0x800205) AM_DEVWRITE8("ramdac", ramdac_device, mask_w, 0xff00)
ADDRESS_MAP_END
/* Unknown R/W:
diff --git a/src/mame/drivers/williams.cpp b/src/mame/drivers/williams.cpp
index 62113318034..80418b19126 100644
--- a/src/mame/drivers/williams.cpp
+++ b/src/mame/drivers/williams.cpp
@@ -1,11 +1,9 @@
-// license:???
-// copyright-holders:Michael Soderstrom, Marc LaFontaine, Aaron Giles
+// license:BSD-3-Clause
+// copyright-holders:Aaron Giles
/***************************************************************************
Williams 6809 system
- driver by Michael Soderstrom, Marc LaFontaine, Aaron Giles
-
Games supported:
* Defender
* Mayday
@@ -495,7 +493,7 @@ are available at http://arcarc.xmission.com/PDF_Arcade_Williams/
It's a RAM-based palette with 4 bit red, green, blue and brightness/intensity components. It looks like the
brightness component (from IC76, the uppermost of the four 2148 SRAMs) should be combined with the color
-components in a more complicated way than simply multiplying them like MAME does.
+components in a more complicated way than simply multiplying them like MAME does.
Reference video: https://www.youtube.com/watch?v=R5OeC6Wc_yI
diff --git a/src/mame/drivers/witch.cpp b/src/mame/drivers/witch.cpp
index 1eaa13ce0ee..864da701bcf 100644
--- a/src/mame/drivers/witch.cpp
+++ b/src/mame/drivers/witch.cpp
@@ -266,11 +266,8 @@ public:
int m_scrollx;
int m_scrolly;
UINT8 m_reg_a002;
- int m_bank;
DECLARE_WRITE8_MEMBER(gfx0_vram_w);
DECLARE_WRITE8_MEMBER(gfx0_cram_w);
- DECLARE_READ8_MEMBER(gfx0_vram_r);
- DECLARE_READ8_MEMBER(gfx0_cram_r);
DECLARE_WRITE8_MEMBER(gfx1_vram_w);
DECLARE_WRITE8_MEMBER(gfx1_cram_w);
DECLARE_READ8_MEMBER(gfx1_vram_r);
@@ -354,15 +351,6 @@ WRITE8_MEMBER(witch_state::gfx0_cram_w)
m_gfx0a_tilemap->mark_tile_dirty(offset);
m_gfx0b_tilemap->mark_tile_dirty(offset);
}
-READ8_MEMBER(witch_state::gfx0_vram_r)
-{
- return m_gfx0_vram[offset];
-}
-
-READ8_MEMBER(witch_state::gfx0_cram_r)
-{
- return m_gfx0_cram[offset];
-}
#define FIX_OFFSET() do { \
offset=(((offset + ((m_scrolly & 0xf8) << 2) ) & 0x3e0)+((offset + (m_scrollx >> 3) ) & 0x1f)+32)&0x3ff; } while(0)
@@ -426,17 +414,9 @@ WRITE8_MEMBER(witch_state::write_a00x)
{
case 0x02: //A002 bit 7&6 = m_bank ????
{
- int newbank;
m_reg_a002 = data;
- newbank = (data>>6)&3;
-
- if(newbank != m_bank)
- {
- UINT8 *ROM = memregion("maincpu")->base();
- m_bank = newbank;
- ROM = &ROM[0x10000+0x8000 * newbank + UNBANKED_SIZE];
- membank("bank1")->set_base(ROM);
- }
+
+ membank("bank1")->set_entry((data>>6)&3);
}
break;
@@ -495,8 +475,8 @@ static ADDRESS_MAP_START( map_main, AS_PROGRAM, 8, witch_state )
AM_RANGE(0x8000, 0x8001) AM_DEVREADWRITE("ym1", ym2203_device, read, write)
AM_RANGE(0x8008, 0x8009) AM_DEVREADWRITE("ym2", ym2203_device, read, write)
AM_RANGE(0xa000, 0xa00f) AM_READWRITE(read_a00x, write_a00x)
- AM_RANGE(0xc000, 0xc3ff) AM_READWRITE(gfx0_vram_r, gfx0_vram_w) AM_SHARE("gfx0_vram")
- AM_RANGE(0xc400, 0xc7ff) AM_READWRITE(gfx0_cram_r, gfx0_cram_w) AM_SHARE("gfx0_cram")
+ AM_RANGE(0xc000, 0xc3ff) AM_RAM AM_WRITE(gfx0_vram_w) AM_SHARE("gfx0_vram")
+ AM_RANGE(0xc400, 0xc7ff) AM_RAM AM_WRITE(gfx0_cram_w) AM_SHARE("gfx0_cram")
AM_RANGE(0xc800, 0xcbff) AM_READWRITE(gfx1_vram_r, gfx1_vram_w) AM_SHARE("gfx1_vram")
AM_RANGE(0xcc00, 0xcfff) AM_READWRITE(gfx1_cram_r, gfx1_cram_w) AM_SHARE("gfx1_cram")
AM_RANGE(0xd000, 0xdfff) AM_RAM AM_SHARE("sprite_ram")
@@ -744,6 +724,10 @@ void witch_state::video_start()
m_gfx0a_tilemap->set_palette_offset(0x100);
m_gfx0b_tilemap->set_palette_offset(0x100);
m_gfx1_tilemap->set_palette_offset(0x200);
+
+ save_item(NAME(m_scrollx));
+ save_item(NAME(m_scrolly));
+ save_item(NAME(m_reg_a002));
}
void witch_state::draw_sprites(bitmap_ind16 &bitmap, const rectangle &cliprect)
@@ -941,14 +925,13 @@ ROM_END
DRIVER_INIT_MEMBER(witch_state,witch)
{
- UINT8 *ROM = (UINT8 *)memregion("maincpu")->base();
- membank("bank1")->set_base(&ROM[0x10000+UNBANKED_SIZE]);
+ membank("bank1")->configure_entries(0, 4, memregion("maincpu")->base() + 0x10000 + UNBANKED_SIZE, 0x8000);
+ membank("bank1")->set_entry(0);
m_subcpu->space(AS_PROGRAM).install_read_handler(0x7000, 0x700f, read8_delegate(FUNC(witch_state::prot_read_700x), this));
- m_bank = -1;
}
-GAME( 1992, witch, 0, witch, witch, witch_state, witch, ROT0, "Excellent System", "Witch", 0 )
-GAME( 1992, witchb, witch, witch, witch, witch_state, witch, ROT0, "Excellent System", "Witch (With ranking)", 0 )
-GAME( 1992, witchs, witch, witch, witch, witch_state, witch, ROT0, "Sega / Vic Tokai", "Witch (Sega License)", 0 )
-GAME( 1995, pbchmp95, witch, witch, witch, witch_state, witch, ROT0, "Veltmeijer Automaten", "Pinball Champ '95", 0 )
+GAME( 1992, witch, 0, witch, witch, witch_state, witch, ROT0, "Excellent System", "Witch", MACHINE_SUPPORTS_SAVE )
+GAME( 1992, witchb, witch, witch, witch, witch_state, witch, ROT0, "Excellent System", "Witch (With ranking)", MACHINE_SUPPORTS_SAVE )
+GAME( 1992, witchs, witch, witch, witch, witch_state, witch, ROT0, "Sega / Vic Tokai", "Witch (Sega License)", MACHINE_SUPPORTS_SAVE )
+GAME( 1995, pbchmp95, witch, witch, witch, witch_state, witch, ROT0, "Veltmeijer Automaten", "Pinball Champ '95", MACHINE_SUPPORTS_SAVE )
diff --git a/src/mame/drivers/wolfpack.cpp b/src/mame/drivers/wolfpack.cpp
index 01bf3937b5a..6d8514d7fa5 100644
--- a/src/mame/drivers/wolfpack.cpp
+++ b/src/mame/drivers/wolfpack.cpp
@@ -2,7 +2,7 @@
// copyright-holders:Stefan Jokisch
/***************************************************************************
-Atari Wolf Pack (prototype) driver
+ Atari Wolf Pack (prototype) driver
***************************************************************************/
@@ -65,7 +65,7 @@ READ8_MEMBER(wolfpack_state::wolfpack_misc_r)
/* BIT6 => UNUSED */
/* BIT7 => VBLANK */
- if (!m_s14001a->bsy_r())
+ if (!m_s14001a->busy_r())
val |= 0x01;
if (!m_collision)
@@ -93,13 +93,12 @@ WRITE8_MEMBER(wolfpack_state::wolfpack_word_w)
{
/* latch word from bus into temp register, and place on s14001a input bus */
/* there is no real need for a temp register at all, since the bus 'register' acts as one */
- m_s14001a->reg_w(data & 0x1f); /* SA0 (IN5) is pulled low according to the schematic, so its 0x1f and not 0x3f as one would expect */
+ m_s14001a->data_w(space, 0, data & 0x1f); /* SA0 (IN5) is pulled low according to the schematic, so its 0x1f and not 0x3f as one would expect */
}
WRITE8_MEMBER(wolfpack_state::wolfpack_start_speech_w)
{
- m_s14001a->set_volume(15); /* hack, should be executed just once during game init, or defaulted to this in the s14001a core */
- m_s14001a->rst_w(data&1);
+ m_s14001a->start_w(data&1);
}
@@ -163,7 +162,7 @@ ADDRESS_MAP_END
static INPUT_PORTS_START( wolfpack )
PORT_START("INPUTS")
- PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_SPECIAL ) PORT_CUSTOM_MEMBER(DEVICE_SELF, wolfpack_state,wolfpack_dial_r, (void *)nullptr) /* dial connects here */
+ PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_SPECIAL ) PORT_CUSTOM_MEMBER(DEVICE_SELF, wolfpack_state,wolfpack_dial_r, (void *)0) /* dial connects here */
PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_SPECIAL ) PORT_CUSTOM_MEMBER(DEVICE_SELF, wolfpack_state,wolfpack_dial_r, (void *)1) /* dial connects here */
PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_TILT )
PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_BUTTON1 )
@@ -299,15 +298,12 @@ GFXDECODE_END
static MACHINE_CONFIG_START( wolfpack, wolfpack_state )
- MCFG_SPEAKER_STANDARD_MONO("mono")
/* basic machine hardware */
MCFG_CPU_ADD("maincpu", M6502, 12096000 / 16)
MCFG_CPU_PROGRAM_MAP(main_map)
/* video hardware */
-
-
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(60)
MCFG_SCREEN_SIZE(512, 262)
@@ -322,8 +318,9 @@ static MACHINE_CONFIG_START( wolfpack, wolfpack_state )
MCFG_PALETTE_INIT_OWNER(wolfpack_state, wolfpack)
/* sound hardware */
+ MCFG_SPEAKER_STANDARD_MONO("mono")
MCFG_SOUND_ADD("speech", S14001A, 20000) /* RC Clock (C=100pf, R=470K-670K ohms, adjustable) ranging from 14925.37313hz to 21276.59574hz, likely factory set to 20000hz since anything below 19500 is too slow */
- MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.50)
+ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.00)
MACHINE_CONFIG_END
diff --git a/src/mame/drivers/wpc_an.cpp b/src/mame/drivers/wpc_an.cpp
index 893b2331747..96e665aa08a 100644
--- a/src/mame/drivers/wpc_an.cpp
+++ b/src/mame/drivers/wpc_an.cpp
@@ -349,7 +349,7 @@ ROM_START(dd_p7)
ROM_LOAD("dude_u19.l1", 0x20000, 0x10000, CRC(dc7b985b) SHA1(f672d1f1fe1d1d887113ea6ccd745a78f7760526))
ROM_LOAD("dude_u20.l1", 0x30000, 0x10000, CRC(a83d53dd) SHA1(92a81069c42c7760888201fb0787fa7ddfbf1658))
ROM_REGION(0x8000, "fixed", 0)
- ROM_FILL(0x0000,0x8000,nullptr)
+ ROM_FILL(0x0000,0x8000,0x00)
ROM_END
ROM_START(dd_p06)
@@ -360,7 +360,7 @@ ROM_START(dd_p06)
ROM_LOAD("dude_u19.l1", 0x20000, 0x10000, CRC(dc7b985b) SHA1(f672d1f1fe1d1d887113ea6ccd745a78f7760526))
ROM_LOAD("dude_u20.l1", 0x30000, 0x10000, CRC(a83d53dd) SHA1(92a81069c42c7760888201fb0787fa7ddfbf1658))
ROM_REGION(0x8000, "fixed", 0)
- ROM_FILL(0x0000,0x8000,nullptr)
+ ROM_FILL(0x0000,0x8000,0x00)
ROM_END
/*-------------
@@ -383,7 +383,7 @@ ROM_START(fh_l9)
ROM_RELOAD( 0x100000 + 0x40000, 0x20000)
ROM_RELOAD( 0x100000 + 0x60000, 0x20000)
ROM_REGION(0x8000, "fixed", 0)
- ROM_FILL(0x0000,0x8000,nullptr)
+ ROM_FILL(0x0000,0x8000,0x00)
ROM_END
ROM_START(fh_l9b)
@@ -403,7 +403,7 @@ ROM_START(fh_l9b)
ROM_RELOAD( 0x100000 + 0x40000, 0x20000)
ROM_RELOAD( 0x100000 + 0x60000, 0x20000)
ROM_REGION(0x8000, "fixed", 0)
- ROM_FILL(0x0000,0x8000,nullptr)
+ ROM_FILL(0x0000,0x8000,0x00)
ROM_END
ROM_START(fh_l3)
@@ -423,7 +423,7 @@ ROM_START(fh_l3)
ROM_RELOAD( 0x100000 + 0x40000, 0x20000)
ROM_RELOAD( 0x100000 + 0x60000, 0x20000)
ROM_REGION(0x8000, "fixed", 0)
- ROM_FILL(0x0000,0x8000,nullptr)
+ ROM_FILL(0x0000,0x8000,0x00)
ROM_END
ROM_START(fh_l4)
@@ -443,7 +443,7 @@ ROM_START(fh_l4)
ROM_RELOAD( 0x100000 + 0x40000, 0x20000)
ROM_RELOAD( 0x100000 + 0x60000, 0x20000)
ROM_REGION(0x8000, "fixed", 0)
- ROM_FILL(0x0000,0x8000,nullptr)
+ ROM_FILL(0x0000,0x8000,0x00)
ROM_END
ROM_START(fh_l5)
@@ -463,7 +463,7 @@ ROM_START(fh_l5)
ROM_RELOAD( 0x100000 + 0x40000, 0x20000)
ROM_RELOAD( 0x100000 + 0x60000, 0x20000)
ROM_REGION(0x8000, "fixed", 0)
- ROM_FILL(0x0000,0x8000,nullptr)
+ ROM_FILL(0x0000,0x8000,0x00)
ROM_END
ROM_START(fh_905h)
@@ -483,7 +483,7 @@ ROM_START(fh_905h)
ROM_RELOAD( 0x100000 + 0x40000, 0x20000)
ROM_RELOAD( 0x100000 + 0x60000, 0x20000)
ROM_REGION(0x8000, "fixed", 0)
- ROM_FILL(0x0000,0x8000,nullptr)
+ ROM_FILL(0x0000,0x8000,0x00)
ROM_END
@@ -503,7 +503,7 @@ ROM_START(hd_l3)
ROM_RELOAD( 0x080000 + 0x40000, 0x20000)
ROM_RELOAD( 0x080000 + 0x60000, 0x20000)
ROM_REGION(0x8000, "fixed", 0)
- ROM_FILL(0x0000,0x8000,nullptr)
+ ROM_FILL(0x0000,0x8000,0x00)
ROM_END
ROM_START(hd_l1)
@@ -519,7 +519,7 @@ ROM_START(hd_l1)
ROM_RELOAD( 0x080000 + 0x40000, 0x20000)
ROM_RELOAD( 0x080000 + 0x60000, 0x20000)
ROM_REGION(0x8000, "fixed", 0)
- ROM_FILL(0x0000,0x8000,nullptr)
+ ROM_FILL(0x0000,0x8000,0x00)
ROM_END
/*-----------------
@@ -542,7 +542,7 @@ ROM_START(bop_l7)
ROM_RELOAD( 0x100000 + 0x40000, 0x20000)
ROM_RELOAD( 0x100000 + 0x60000, 0x20000)
ROM_REGION(0x8000, "fixed", 0)
- ROM_FILL(0x0000,0x8000,nullptr)
+ ROM_FILL(0x0000,0x8000,0x00)
ROM_END
ROM_START(bop_l6)
@@ -562,7 +562,7 @@ ROM_START(bop_l6)
ROM_RELOAD( 0x100000 + 0x40000, 0x20000)
ROM_RELOAD( 0x100000 + 0x60000, 0x20000)
ROM_REGION(0x8000, "fixed", 0)
- ROM_FILL(0x0000,0x8000,nullptr)
+ ROM_FILL(0x0000,0x8000,0x00)
ROM_END
ROM_START(bop_l5)
@@ -582,7 +582,7 @@ ROM_START(bop_l5)
ROM_RELOAD( 0x100000 + 0x40000, 0x20000)
ROM_RELOAD( 0x100000 + 0x60000, 0x20000)
ROM_REGION(0x8000, "fixed", 0)
- ROM_FILL(0x0000,0x8000,nullptr)
+ ROM_FILL(0x0000,0x8000,0x00)
ROM_END
ROM_START(bop_l4)
@@ -602,7 +602,7 @@ ROM_START(bop_l4)
ROM_RELOAD( 0x100000 + 0x40000, 0x20000)
ROM_RELOAD( 0x100000 + 0x60000, 0x20000)
ROM_REGION(0x8000, "fixed", 0)
- ROM_FILL(0x0000,0x8000,nullptr)
+ ROM_FILL(0x0000,0x8000,0x00)
ROM_END
ROM_START(bop_l3)
@@ -622,7 +622,7 @@ ROM_START(bop_l3)
ROM_RELOAD( 0x100000 + 0x40000, 0x20000)
ROM_RELOAD( 0x100000 + 0x60000, 0x20000)
ROM_REGION(0x8000, "fixed", 0)
- ROM_FILL(0x0000,0x8000,nullptr)
+ ROM_FILL(0x0000,0x8000,0x00)
ROM_END
ROM_START(bop_l2)
@@ -642,7 +642,7 @@ ROM_START(bop_l2)
ROM_RELOAD( 0x100000 + 0x40000, 0x20000)
ROM_RELOAD( 0x100000 + 0x60000, 0x20000)
ROM_REGION(0x8000, "fixed", 0)
- ROM_FILL(0x0000,0x8000,nullptr)
+ ROM_FILL(0x0000,0x8000,0x00)
ROM_END
/*===========
@@ -652,9 +652,9 @@ ROM_START(tfa_13)
ROM_REGION(0x30000, "maincpu", ROMREGION_ERASEFF)
ROM_LOAD("u6_l3.rom", 0x10000, 0x20000, CRC(bf4a37b5) SHA1(91b8bba6182e818a34252a4b2a0b86a2a44d9c42))
ROM_REGION(0x180000, "sound1",0)
- ROM_FILL(0x0000,0x180000,nullptr)
+ ROM_FILL(0x0000,0x180000,0x00)
ROM_REGION(0x8000, "fixed", 0)
- ROM_FILL(0x0000,0x8000,nullptr)
+ ROM_FILL(0x0000,0x8000,0x00)
ROM_END
GAME(1990, tfa_13, 0, wpc_an, wpc_an, wpc_an_state, wpc_an, ROT0, "Bally", "WPC Test Fixture: Alphanumeric (1.3)", MACHINE_IS_SKELETON_MECHANICAL)
diff --git a/src/mame/drivers/wpc_dot.cpp b/src/mame/drivers/wpc_dot.cpp
index 7f2aef3c0b6..959b7a1daff 100644
--- a/src/mame/drivers/wpc_dot.cpp
+++ b/src/mame/drivers/wpc_dot.cpp
@@ -657,7 +657,7 @@ ROM_START(tfdmd_l3)
ROM_REGION(0x20000, "code", 0)
ROM_LOAD("u6_l3.rom", 0x00000, 0x20000, CRC(bd43e28c) SHA1(df0a64a9fddbc59e3edde56ae12b68f76e44ba2e))
ROM_REGION(0x180000, "sound1", 0)
- ROM_FILL(0x0000,0x180000,nullptr)
+ ROM_FILL(0x0000,0x180000,0x00)
ROM_END
diff --git a/src/mame/drivers/wrally.cpp b/src/mame/drivers/wrally.cpp
index db729a6b7ac..c6af288a8eb 100644
--- a/src/mame/drivers/wrally.cpp
+++ b/src/mame/drivers/wrally.cpp
@@ -66,6 +66,7 @@ CPUs related:
Sound related:
==============
* 1xOKIM6295 @ C6
+* 1xOSC1MHz @ C7
* 2xM27C4001 @ C1 & C3 (OKI ADPCM samples)
* 1xPAL16R4 @ E2 (handles OKI ROM banking)
@@ -94,6 +95,12 @@ to pin #2 (CLK) at ICs A16 and A17 and it is a clock for the 74LS169 ICs; this c
frequency is proportional to the movements of the steering wheel: fast movements
produces a high clock frequency, slow movements a low freq.
+PCB: REF.930217
+
+The PCB has a layout that can either use the 4 rom set of I7, I9, I11 & I 13 or larger
+ roms at H8 & H12 for graphics as well as the ability to use different size sound sample
+ roms at C1 & C3
+
***************************************************************************/
#include "emu.h"
@@ -329,7 +336,31 @@ ROM_START( wrallya )
ROM_LOAD( "pal16r8-b15.bin", 0x0000, 0x0104, CRC(b50337a6) SHA1(1f922753cb9982cad9a3c9246894ecd38273236e) )
ROM_END
-ROM_START( wrallyb ) /* Board Marked 930217, Atari License */
+ROM_START( wrallyb )
+ ROM_REGION( 0x100000, "maincpu", 0 ) /* 68000 code */
+ ROM_LOAD16_BYTE( "rally_c23.c23", 0x000000, 0x080000, CRC(ddd6f833) SHA1(f12f82c412fa93f46020d50c2620974ae2fb502b) )
+ ROM_LOAD16_BYTE( "rally_c22.c22", 0x000001, 0x080000, CRC(59a0d35c) SHA1(7c6f376a53c1e6d793cbfb16861ee3298ee013a1) )
+
+ ROM_REGION( 0x10000, "mcu", 0 ) /* DS5002FP code */
+ ROM_LOAD( "wrdallas.bin", 0x00000, 0x8000, CRC(547d1768) SHA1(c58d1edd072d796be0663fb265f4739ec006b688) )
+
+ ROM_REGION( 0x200000, "gfx1", 0 )
+ ROM_LOAD( "rally h-12.h12", 0x000000, 0x100000, CRC(3353dc00) SHA1(db3b1686751dcaa231d66c08b5be81fcfe299ad9) ) /* Same data, different layout */
+ ROM_LOAD( "rally h-8.h8", 0x100000, 0x100000, CRC(58dcd024) SHA1(384ff296d3c7c8e0c4469231d1940de3cea89fc2) )
+
+ ROM_REGION( 0x140000, "oki", 0 ) /* ADPCM samples - sound chip is OKIM6295 */
+ ROM_LOAD( "sound c-1.c1", 0x000000, 0x100000, CRC(2d69c9b8) SHA1(328cb3c928dc6921c0c3f0277f59bca6c747c504) ) /* Same data in a single rom */
+ ROM_RELOAD( 0x040000, 0x100000 )
+
+ ROM_REGION( 0x0514, "plds", 0 ) /* PAL's and GAL's */
+ ROM_LOAD( "tibpal20l8-25cnt.b23", 0x0000, 0x0104, NO_DUMP )
+ ROM_LOAD( "gal16v8-25lnc.h21", 0x0000, 0x0104, NO_DUMP )
+ ROM_LOAD( "tibpal20l8-25cnt.h15", 0x0000, 0x0104, NO_DUMP )
+ ROM_LOAD( "pal16r4-e2.bin", 0x0000, 0x0104, CRC(15fee75c) SHA1(b9ee5121dd41f2535d9abd78ff5fcfeaa1ac6b62) )
+ ROM_LOAD( "pal16r8-b15.bin", 0x0000, 0x0104, CRC(b50337a6) SHA1(1f922753cb9982cad9a3c9246894ecd38273236e) )
+ROM_END
+
+ROM_START( wrallyat ) /* Board Marked 930217, Atari License */
ROM_REGION( 0x100000, "maincpu", 0 ) /* 68000 code */
ROM_LOAD16_BYTE( "rally.c23", 0x000000, 0x080000, CRC(366595ad) SHA1(e16341ed9eacf9b729c28184268150ea9b62f185) ) /* North & South America only... */
ROM_LOAD16_BYTE( "rally.c22", 0x000001, 0x080000, CRC(0ad4ec6f) SHA1(991557cf25fe960b1c586e990e6019befe5a11d0) )
@@ -354,6 +385,7 @@ ROM_START( wrallyb ) /* Board Marked 930217, Atari License */
ROM_END
-GAME( 1993, wrally, 0, wrally, wrally, driver_device, 0, ROT0, "Gaelco", "World Rally (set 1)", MACHINE_SUPPORTS_SAVE ) /* Dallas DS5002FP power failure shows as: "Tension baja " */
-GAME( 1993, wrallya, wrally, wrally, wrally, driver_device, 0, ROT0, "Gaelco", "World Rally (set 2)", MACHINE_SUPPORTS_SAVE ) /* Dallas DS5002FP power failure shows as: "Power Failure" */
-GAME( 1993, wrallyb, wrally, wrally, wrally, driver_device, 0, ROT0, "Gaelco (Atari license)", "World Rally (US, 930217)", MACHINE_SUPPORTS_SAVE )
+GAME( 1993, wrally, 0, wrally, wrally, driver_device, 0, ROT0, "Gaelco", "World Rally (Version 1.0, Checksum 0E56)", MACHINE_SUPPORTS_SAVE ) /* Dallas DS5002FP power failure shows as: "Tension baja " */
+GAME( 1993, wrallya, wrally, wrally, wrally, driver_device, 0, ROT0, "Gaelco", "World Rally (Version 1.0, Checksum 3873)", MACHINE_SUPPORTS_SAVE ) /* Dallas DS5002FP power failure shows as: "Power Failure" */
+GAME( 1993, wrallyb, wrally, wrally, wrally, driver_device, 0, ROT0, "Gaelco", "World Rally (Version 1.0, Checksum 8AA2)", MACHINE_SUPPORTS_SAVE )
+GAME( 1993, wrallyat, wrally, wrally, wrally, driver_device, 0, ROT0, "Gaelco (Atari license)", "World Rally (US, 930217)", MACHINE_SUPPORTS_SAVE )
diff --git a/src/mame/drivers/x07.cpp b/src/mame/drivers/x07.cpp
index 4cb0db32f25..6716c3b60c8 100644
--- a/src/mame/drivers/x07.cpp
+++ b/src/mame/drivers/x07.cpp
@@ -1186,17 +1186,16 @@ WRITE8_MEMBER( x07_state::x07_io_w )
m_cass_tick->reset();
}
-#if(1)
if((data & 0x0e) == 0x0e)
{
+ UINT16 div = (m_regs_w[2] | m_regs_w[3] << 8) & 0x0fff;
+ m_beep->set_clock((div == 0) ? 0 : 192000 / div);
m_beep->set_state(1);
- m_beep->set_frequency(192000 / ((m_regs_w[2] | (m_regs_w[3] << 8)) & 0x0fff));
m_beep_stop->adjust(attotime::from_msec(m_ram->pointer()[0x450] * 0x20));
}
else
m_beep->set_state(0);
-#endif
break;
case 0xf5:
diff --git a/src/mame/drivers/x1.cpp b/src/mame/drivers/x1.cpp
index 58bcebd11ce..21bd91f6253 100644
--- a/src/mame/drivers/x1.cpp
+++ b/src/mame/drivers/x1.cpp
@@ -1041,6 +1041,7 @@ WRITE8_MEMBER( x1_state::x1_fdc_w )
break;
case 0x0ffc:
+ m_fdc_ctrl = data;
switch (data & 0x03)
{
case 0: floppy = m_floppy0->get_device(); break;
@@ -1071,6 +1072,22 @@ WRITE_LINE_MEMBER(x1_state::fdc_drq_w)
m_dma->rdy_w(state ^ 1);
}
+WRITE_LINE_MEMBER(x1_state::hdl_w)
+{
+ floppy_image_device *floppy = nullptr;
+
+ if(!state)
+ return;
+ switch (m_fdc_ctrl & 0x03)
+ {
+ case 0: floppy = m_floppy0->get_device(); break;
+ case 1: floppy = m_floppy1->get_device(); break;
+ case 2: floppy = m_floppy2->get_device(); break;
+ case 3: floppy = m_floppy3->get_device(); break;
+ }
+ floppy->mon_w(CLEAR_LINE);
+}
+
/*************************************
*
* Programmable Character Generator
@@ -2485,6 +2502,7 @@ static MACHINE_CONFIG_START( x1, x1_state )
MCFG_VIDEO_START_OVERRIDE(x1_state,x1)
MCFG_MB8877_ADD("fdc", MAIN_CLOCK / 16)
+ MCFG_WD_FDC_HLD_CALLBACK(WRITELINE(x1_state, hdl_w)) // XXX: wag
MCFG_FLOPPY_DRIVE_ADD("fdc:0", x1_floppies, "dd", x1_state::floppy_formats)
MCFG_FLOPPY_DRIVE_ADD("fdc:1", x1_floppies, "dd", x1_state::floppy_formats)
diff --git a/src/mame/drivers/xerox820.cpp b/src/mame/drivers/xerox820.cpp
index 891cbc7e65d..bb35067b6a1 100644
--- a/src/mame/drivers/xerox820.cpp
+++ b/src/mame/drivers/xerox820.cpp
@@ -489,7 +489,6 @@ void bigboard_state::machine_reset()
/* bigboard has a one-pulse output to drive a user-supplied beeper */
m_beeper->set_state(0);
- m_beeper->set_frequency(950);
m_fdc->reset();
}
@@ -610,7 +609,7 @@ MACHINE_CONFIG_END
static MACHINE_CONFIG_DERIVED_CLASS( bigboard, xerox820, bigboard_state )
/* sound hardware */
MCFG_SPEAKER_STANDARD_MONO("mono")
- MCFG_SOUND_ADD("beeper", BEEP, 0)
+ MCFG_SOUND_ADD("beeper", BEEP, 950)
MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.00) /* bigboard only */
MACHINE_CONFIG_END
diff --git a/src/mame/drivers/xybots.cpp b/src/mame/drivers/xybots.cpp
index 948e7aa33ae..9cb32712bd2 100644
--- a/src/mame/drivers/xybots.cpp
+++ b/src/mame/drivers/xybots.cpp
@@ -184,7 +184,7 @@ static MACHINE_CONFIG_START( xybots, xybots_state )
MCFG_CPU_PROGRAM_MAP(main_map)
MCFG_DEVICE_VBLANK_INT_DRIVER("screen", atarigen_state, video_int_gen)
- MCFG_SLAPSTIC_ADD("slapstic")
+ MCFG_SLAPSTIC_ADD("slapstic", 107)
MCFG_MACHINE_RESET_OVERRIDE(xybots_state,xybots)
@@ -395,7 +395,7 @@ ROM_END
DRIVER_INIT_MEMBER(xybots_state,xybots)
{
m_h256 = 0x0400;
- slapstic_configure(*m_maincpu, 0x008000, 0, 107);
+ slapstic_configure(*m_maincpu, 0x008000, 0);
}
diff --git a/src/mame/drivers/z9001.cpp b/src/mame/drivers/z9001.cpp
index 8c824b53f87..9cfb24ceb73 100644
--- a/src/mame/drivers/z9001.cpp
+++ b/src/mame/drivers/z9001.cpp
@@ -125,7 +125,6 @@ TIMER_DEVICE_CALLBACK_MEMBER(z9001_state::timer_callback)
void z9001_state::machine_reset()
{
- m_beeper->set_frequency(800);
m_maincpu->set_state_int(Z80_PC, 0xf000);
}
@@ -224,7 +223,7 @@ static MACHINE_CONFIG_START( z9001, z9001_state )
MCFG_SPEAKER_STANDARD_MONO("mono")
MCFG_SOUND_WAVE_ADD(WAVE_TAG, "cassette")
MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.25)
- MCFG_SOUND_ADD("beeper", BEEP, 0)
+ MCFG_SOUND_ADD("beeper", BEEP, 800)
MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.50)
/* Devices */
diff --git a/src/mame/drivers/zaxxon.cpp b/src/mame/drivers/zaxxon.cpp
index 7611396f7a0..e87d8125f91 100644
--- a/src/mame/drivers/zaxxon.cpp
+++ b/src/mame/drivers/zaxxon.cpp
@@ -530,12 +530,12 @@ static INPUT_PORTS_START( zaxxon )
PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_START1 )
PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_START2 )
PORT_BIT( 0x10, IP_ACTIVE_HIGH, IPT_UNUSED )
- PORT_BIT( 0x20, IP_ACTIVE_HIGH, IPT_SPECIAL ) PORT_CUSTOM_MEMBER(DEVICE_SELF, zaxxon_state,zaxxon_coin_r, (void *)nullptr)
+ PORT_BIT( 0x20, IP_ACTIVE_HIGH, IPT_SPECIAL ) PORT_CUSTOM_MEMBER(DEVICE_SELF, zaxxon_state,zaxxon_coin_r, (void *)0)
PORT_BIT( 0x40, IP_ACTIVE_HIGH, IPT_SPECIAL ) PORT_CUSTOM_MEMBER(DEVICE_SELF, zaxxon_state,zaxxon_coin_r, (void *)1)
PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_SPECIAL ) PORT_CUSTOM_MEMBER(DEVICE_SELF, zaxxon_state,zaxxon_coin_r, (void *)2)
PORT_START("COIN")
- PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_COIN1 ) PORT_CHANGED_MEMBER(DEVICE_SELF, zaxxon_state,zaxxon_coin_inserted, (void *)nullptr)
+ PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_COIN1 ) PORT_CHANGED_MEMBER(DEVICE_SELF, zaxxon_state,zaxxon_coin_inserted, (void *)0)
PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_COIN2 ) PORT_CHANGED_MEMBER(DEVICE_SELF, zaxxon_state,zaxxon_coin_inserted, (void *)1)
PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_SERVICE1 ) PORT_CHANGED_MEMBER(DEVICE_SELF, zaxxon_state,zaxxon_coin_inserted, (void *)2)
@@ -691,7 +691,7 @@ INPUT_PORTS_END
static INPUT_PORTS_START( razmataz )
PORT_START("SW00")
- PORT_BIT( 0xff, 0x00, IPT_SPECIAL) PORT_CUSTOM_MEMBER(DEVICE_SELF, zaxxon_state,razmataz_dial_r, (void *)nullptr)
+ PORT_BIT( 0xff, 0x00, IPT_SPECIAL) PORT_CUSTOM_MEMBER(DEVICE_SELF, zaxxon_state,razmataz_dial_r, (void *)0)
PORT_START("DIAL.0")
PORT_BIT( 0xff, 0x00, IPT_DIAL ) PORT_SENSITIVITY(30) PORT_KEYDELTA(15) PORT_RESET PORT_PLAYER(1)
@@ -719,12 +719,12 @@ static INPUT_PORTS_START( razmataz )
PORT_START("SW100")
PORT_BIT( 0x1f, IP_ACTIVE_HIGH, IPT_UNUSED )
- PORT_BIT( 0x20, IP_ACTIVE_HIGH, IPT_SPECIAL ) PORT_CUSTOM_MEMBER(DEVICE_SELF, zaxxon_state,zaxxon_coin_r, (void *)nullptr)
+ PORT_BIT( 0x20, IP_ACTIVE_HIGH, IPT_SPECIAL ) PORT_CUSTOM_MEMBER(DEVICE_SELF, zaxxon_state,zaxxon_coin_r, (void *)0)
PORT_BIT( 0x40, IP_ACTIVE_HIGH, IPT_SPECIAL ) PORT_CUSTOM_MEMBER(DEVICE_SELF, zaxxon_state,zaxxon_coin_r, (void *)1)
PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_SPECIAL ) PORT_CUSTOM_MEMBER(DEVICE_SELF, zaxxon_state,zaxxon_coin_r, (void *)2)
PORT_START("COIN")
- PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_COIN1 ) PORT_CHANGED_MEMBER(DEVICE_SELF, zaxxon_state,zaxxon_coin_inserted, (void *)nullptr)
+ PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_COIN1 ) PORT_CHANGED_MEMBER(DEVICE_SELF, zaxxon_state,zaxxon_coin_inserted, (void *)0)
PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_COIN2 ) PORT_CHANGED_MEMBER(DEVICE_SELF, zaxxon_state,zaxxon_coin_inserted, (void *)1)
PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_SERVICE1 ) PORT_CHANGED_MEMBER(DEVICE_SELF, zaxxon_state,zaxxon_coin_inserted, (void *)2)
@@ -784,7 +784,7 @@ static INPUT_PORTS_START( ixion )
PORT_INCLUDE(zaxxon)
PORT_MODIFY("SW00")
- PORT_BIT( 0xff, 0x00, IPT_SPECIAL) PORT_CUSTOM_MEMBER(DEVICE_SELF, zaxxon_state,razmataz_dial_r, (void *)nullptr)
+ PORT_BIT( 0xff, 0x00, IPT_SPECIAL) PORT_CUSTOM_MEMBER(DEVICE_SELF, zaxxon_state,razmataz_dial_r, (void *)0)
PORT_START("DIAL.0")
PORT_BIT( 0xff, 0x00, IPT_DIAL ) PORT_SENSITIVITY(30) PORT_KEYDELTA(15) PORT_CODE_DEC(KEYCODE_Z) PORT_CODE_INC(KEYCODE_X) PORT_RESET
diff --git a/src/mame/drivers/zn.cpp b/src/mame/drivers/zn.cpp
index 79d6ea77855..c4de6dc757f 100644
--- a/src/mame/drivers/zn.cpp
+++ b/src/mame/drivers/zn.cpp
@@ -4079,6 +4079,7 @@ ROM_START( taitofx1 )
TAITOFX1_BIOS
ROM_REGION32_LE( 0x01000000, "bankedroms", ROMREGION_ERASE00 )
ROM_REGION( 0x080000, "audiocpu", ROMREGION_ERASE00 )
+ ROM_REGION( 0x200000, "ymsnd", ROMREGION_ERASE00 )
ROM_END
ROM_START( ftimpcta )
diff --git a/src/mame/drivers/zorba.cpp b/src/mame/drivers/zorba.cpp
index 647ef396c0f..d6ab846e84c 100644
--- a/src/mame/drivers/zorba.cpp
+++ b/src/mame/drivers/zorba.cpp
@@ -320,7 +320,6 @@ GFXDECODE_END
MACHINE_RESET_MEMBER( zorba_state, zorba )
{
m_fdc_rq = 0;
- m_beep->set_frequency(800);
m_p_chargen = memregion("chargen")->base();
membank("bankr0")->set_entry(1); // point at rom
membank("bankw0")->set_entry(0); // always write to ram
@@ -362,7 +361,7 @@ static MACHINE_CONFIG_START( zorba, zorba_state )
/* sound hardware */
MCFG_SPEAKER_STANDARD_MONO("mono")
- MCFG_SOUND_ADD("beeper", BEEP, 0)
+ MCFG_SOUND_ADD("beeper", BEEP, 800)
MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.00)
/* devices */
diff --git a/src/mame/drivers/zrt80.cpp b/src/mame/drivers/zrt80.cpp
index 940a0ce6acc..dc895e73e9c 100644
--- a/src/mame/drivers/zrt80.cpp
+++ b/src/mame/drivers/zrt80.cpp
@@ -206,7 +206,6 @@ INPUT_PORTS_END
void zrt80_state::machine_reset()
{
- m_beep->set_frequency(800);
m_term_data = 0;
}
@@ -292,7 +291,7 @@ static MACHINE_CONFIG_START( zrt80, zrt80_state )
/* sound hardware */
MCFG_SPEAKER_STANDARD_MONO("mono")
- MCFG_SOUND_ADD("beeper", BEEP, 0)
+ MCFG_SOUND_ADD("beeper", BEEP, 800)
MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.50)
/* Devices */
diff --git a/src/mame/includes/20pacgal.h b/src/mame/includes/20pacgal.h
index b9043dd26d2..f9561c57f3a 100644
--- a/src/mame/includes/20pacgal.h
+++ b/src/mame/includes/20pacgal.h
@@ -62,7 +62,6 @@ public:
virtual void machine_reset() override;
UINT32 screen_update_20pacgal(screen_device &screen, bitmap_rgb32 &bitmap, const rectangle &cliprect);
INTERRUPT_GEN_MEMBER(vblank_irq);
- void set_bankptr();
void get_pens(pen_t *pens);
void do_pen_lookup(bitmap_rgb32 &bitmap, const rectangle &cliprect);
void draw_sprites(bitmap_rgb32 &bitmap);
diff --git a/src/mame/includes/40love.h b/src/mame/includes/40love.h
index f40e4b338f3..4cccbd9a040 100644
--- a/src/mame/includes/40love.h
+++ b/src/mame/includes/40love.h
@@ -1,4 +1,4 @@
-// license:???
+// license:GPL-2.0+
// copyright-holders:Jarek Burczynski
#include "machine/buggychl.h"
#include "sound/msm5232.h"
@@ -42,9 +42,9 @@ public:
bitmap_ind16 *m_pixel_bitmap1;
bitmap_ind16 *m_pixel_bitmap2;
int m_pixram_sel;
- bool m_color_bank;
- bool m_screen_disable;
-
+ bool m_color_bank;
+ bool m_screen_disable;
+
/* sound-related */
int m_sound_nmi_enable;
int m_pending_nmi;
diff --git a/src/mame/includes/4enraya.h b/src/mame/includes/4enraya.h
index fbc92212515..8e15d04c7b9 100644
--- a/src/mame/includes/4enraya.h
+++ b/src/mame/includes/4enraya.h
@@ -12,12 +12,15 @@ class _4enraya_state : public driver_device
{
public:
_4enraya_state(const machine_config &mconfig, device_type type, const char *tag)
- : driver_device(mconfig, type, tag),
- m_maincpu(*this, "maincpu"),
- m_ay(*this, "aysnd"),
- m_gfxdecode(*this, "gfxdecode"),
- m_palette(*this, "palette")
- { }
+ : driver_device(mconfig, type, tag)
+ , m_maincpu(*this, "maincpu")
+ , m_ay(*this, "aysnd")
+ , m_gfxdecode(*this, "gfxdecode")
+ , m_palette(*this, "palette")
+ , m_prom(*this, "pal_prom")
+ , m_rom(*this, "maincpu")
+ {
+ }
required_device<cpu_device> m_maincpu;
required_device<ay8910_device> m_ay;
@@ -28,8 +31,8 @@ public:
UINT8 m_videoram[0x1000];
UINT8 m_workram[0x1000];
- UINT8* m_prom;
- UINT8* m_rom;
+ optional_region_ptr<UINT8> m_prom;
+ optional_region_ptr<UINT8> m_rom;
/* video-related */
tilemap_t *m_bg_tilemap;
diff --git a/src/mame/includes/8080bw.h b/src/mame/includes/8080bw.h
index da298c9174d..cf8dde7cb7a 100644
--- a/src/mame/includes/8080bw.h
+++ b/src/mame/includes/8080bw.h
@@ -56,9 +56,6 @@ public:
UINT8 m_schaser_background_select;
UINT16 m_claybust_gun_pos;
- int m_invmulti_bank;
-
-
DECLARE_CUSTOM_INPUT_MEMBER(sflush_80_r);
DECLARE_INPUT_CHANGED_MEMBER(claybust_gun_trigger);
DECLARE_CUSTOM_INPUT_MEMBER(claybust_gun_on_r);
@@ -120,7 +117,6 @@ public:
DECLARE_MACHINE_START(polaris);
DECLARE_MACHINE_START(darthvdr);
DECLARE_MACHINE_RESET(darthvdr);
- DECLARE_MACHINE_RESET(invmulti);
DECLARE_MACHINE_START(extra_8080bw_sh);
DECLARE_MACHINE_START(extra_8080bw_vh);
DECLARE_MACHINE_START(schaser_sh);
@@ -155,7 +151,6 @@ public:
inline void set_pixel( bitmap_rgb32 &bitmap, UINT8 y, UINT8 x, int color );
inline void set_8_pixels( bitmap_rgb32 &bitmap, UINT8 y, UINT8 x, UINT8 data, int fore_color, int back_color );
void clear_extra_columns( bitmap_rgb32 &bitmap, int color );
- void invmulti_bankswitch_restore();
};
diff --git a/src/mame/includes/arcadecl.h b/src/mame/includes/arcadecl.h
index 7a580d012c1..056875df906 100644
--- a/src/mame/includes/arcadecl.h
+++ b/src/mame/includes/arcadecl.h
@@ -8,15 +8,18 @@
#include "machine/atarigen.h"
#include "video/atarimo.h"
+#include "sound/okim6295.h"
class arcadecl_state : public atarigen_state
{
public:
arcadecl_state(const machine_config &mconfig, device_type type, const char *tag)
: atarigen_state(mconfig, type, tag),
+ m_oki(*this, "oki"),
m_mob(*this, "mob"),
m_bitmap(*this, "bitmap") { }
+ required_device<okim6295_device> m_oki;
optional_device<atari_motion_objects_device> m_mob;
required_shared_ptr<UINT16> m_bitmap;
diff --git a/src/mame/includes/arkanoid.h b/src/mame/includes/arkanoid.h
index 05d3ab53400..3bae2fd73bf 100644
--- a/src/mame/includes/arkanoid.h
+++ b/src/mame/includes/arkanoid.h
@@ -54,7 +54,7 @@ public:
UINT8 m_toz80; // byte latch for 68705->z80 comms
/* mcu internal related */
- UINT8 m_port_a_in;
+ UINT8 m_port_a_in;
UINT8 m_port_a_out;
UINT8 m_ddr_a;
UINT8 m_port_c_internal;
@@ -62,7 +62,7 @@ public:
UINT8 m_ddr_c;
UINT8 m_tdr;
UINT8 m_tcr;
-
+ emu_timer *m_68705_timer;
/* hexaa */
UINT8 m_hexaa_from_main;
diff --git a/src/mame/includes/atarifb.h b/src/mame/includes/atarifb.h
index 445ab76f18a..49fa450d7aa 100644
--- a/src/mame/includes/atarifb.h
+++ b/src/mame/includes/atarifb.h
@@ -1,4 +1,4 @@
-// license:???
+// license:BSD-3-Clause
// copyright-holders:Mike Balfour, Patrick Lawrence, Brad Oliver
/*************************************************************************
diff --git a/src/mame/includes/atarig1.h b/src/mame/includes/atarig1.h
index 3cef67afe31..01e9b3e9e82 100644
--- a/src/mame/includes/atarig1.h
+++ b/src/mame/includes/atarig1.h
@@ -55,9 +55,6 @@ public:
void update_bank(int bank);
DECLARE_DRIVER_INIT(hydrap);
DECLARE_DRIVER_INIT(hydra);
- DECLARE_DRIVER_INIT(pitfight9);
- DECLARE_DRIVER_INIT(pitfight7);
- DECLARE_DRIVER_INIT(pitfightj);
DECLARE_DRIVER_INIT(pitfight);
DECLARE_DRIVER_INIT(pitfightb);
TILE_GET_INFO_MEMBER(get_alpha_tile_info);
@@ -67,6 +64,5 @@ public:
DECLARE_VIDEO_START(atarig1);
UINT32 screen_update_atarig1(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
private:
- void init_common(offs_t slapstic_base, int slapstic, bool is_pitfight);
void pitfightb_cheap_slapstic_init();
};
diff --git a/src/mame/includes/atarisy1.h b/src/mame/includes/atarisy1.h
index a2e27c24704..3c0c0d5e4ec 100644
--- a/src/mame/includes/atarisy1.h
+++ b/src/mame/includes/atarisy1.h
@@ -15,6 +15,8 @@ class atarisy1_state : public atarigen_state
public:
atarisy1_state(const machine_config &mconfig, device_type type, const char *tag)
: atarigen_state(mconfig, type, tag),
+ m_audiocpu(*this, "audiocpu"),
+ m_soundcomm(*this, "soundcomm"),
m_bankselect(*this, "bankselect"),
m_mob(*this, "mob"),
m_joystick_timer(*this, "joystick_timer"),
@@ -25,6 +27,9 @@ public:
m_int3off_timer(*this, "int3off_timer"),
m_tms(*this, "tms") { }
+ required_device<cpu_device> m_audiocpu;
+ required_device<atari_sound_comm_device> m_soundcomm;
+
required_shared_ptr<UINT16> m_bankselect;
required_device<atari_motion_objects_device> m_mob;
@@ -67,8 +72,7 @@ public:
DECLARE_READ8_MEMBER(via_pa_r);
DECLARE_WRITE8_MEMBER(via_pb_w);
DECLARE_READ8_MEMBER(via_pb_r);
- DECLARE_DRIVER_INIT(roadb110);
- DECLARE_DRIVER_INIT(roadb109);
+ DECLARE_DRIVER_INIT(roadblst);
DECLARE_DRIVER_INIT(peterpak);
DECLARE_DRIVER_INIT(marble);
DECLARE_DRIVER_INIT(roadrunn);
diff --git a/src/mame/includes/atarisy2.h b/src/mame/includes/atarisy2.h
index 21be1d85549..3fefb6a7130 100644
--- a/src/mame/includes/atarisy2.h
+++ b/src/mame/includes/atarisy2.h
@@ -10,6 +10,9 @@
#include "video/atarimo.h"
#include "cpu/m6502/m6502.h"
#include "cpu/t11/t11.h"
+#include "sound/2151intf.h"
+#include "sound/pokey.h"
+#include "sound/tms5220.h"
#include "slapstic.h"
class atarisy2_state : public atarigen_state
@@ -23,6 +26,11 @@ public:
m_slapstic_base(*this, "slapstic_base"),
m_playfield_tilemap(*this, "playfield"),
m_alpha_tilemap(*this, "alpha"),
+ m_soundcomm(*this, "soundcomm"),
+ m_ym2151(*this, "ymsnd"),
+ m_pokey1(*this, "pokey1"),
+ m_pokey2(*this, "pokey2"),
+ m_tms5220(*this, "tms"),
m_rombank1(*this, "rombank1"),
m_rombank2(*this, "rombank2"),
m_slapstic(*this, "slapstic")
@@ -40,7 +48,11 @@ public:
INT8 m_pedal_count;
- UINT8 m_has_tms5220;
+ required_device<atari_sound_comm_device> m_soundcomm;
+ required_device<ym2151_device> m_ym2151;
+ required_device<pokey_device> m_pokey1;
+ required_device<pokey_device> m_pokey2;
+ optional_device<tms5220_device> m_tms5220;
UINT8 m_which_adc;
diff --git a/src/mame/includes/badlands.h b/src/mame/includes/badlands.h
index dca560b4466..a23ec09a2c3 100644
--- a/src/mame/includes/badlands.h
+++ b/src/mame/includes/badlands.h
@@ -14,9 +14,14 @@ class badlands_state : public atarigen_state
public:
badlands_state(const machine_config &mconfig, device_type type, const char *tag)
: atarigen_state(mconfig, type, tag),
+ m_audiocpu(*this, "audiocpu"),
+ m_soundcomm(*this, "soundcomm"),
m_playfield_tilemap(*this, "playfield"),
m_mob(*this, "mob") { }
+ optional_device<cpu_device> m_audiocpu;
+ optional_device<atari_sound_comm_device> m_soundcomm;
+
required_device<tilemap_device> m_playfield_tilemap;
required_device<atari_motion_objects_device> m_mob;
diff --git a/src/mame/includes/bigevglf.h b/src/mame/includes/bigevglf.h
index d0bd4a3cea5..39fd1c170ab 100644
--- a/src/mame/includes/bigevglf.h
+++ b/src/mame/includes/bigevglf.h
@@ -1,4 +1,4 @@
-// license:???
+// license:GPL-2.0+
// copyright-holders:Jarek Burczynski, Tomasz Slanina
#include "sound/msm5232.h"
diff --git a/src/mame/includes/btime.h b/src/mame/includes/btime.h
index fb27d1722cc..92331e41f83 100644
--- a/src/mame/includes/btime.h
+++ b/src/mame/includes/btime.h
@@ -10,21 +10,24 @@ class btime_state : public driver_device
{
public:
btime_state(const machine_config &mconfig, device_type type, const char *tag)
- : driver_device(mconfig, type, tag),
- m_rambase(*this, "rambase"),
- m_videoram(*this, "videoram"),
- m_colorram(*this, "colorram"),
- m_bnj_backgroundram(*this, "bnj_bgram"),
- m_zoar_scrollram(*this, "zoar_scrollram"),
- m_lnc_charbank(*this, "lnc_charbank"),
- m_deco_charram(*this, "deco_charram"),
- m_spriteram(*this, "spriteram"),
- m_audio_rambase(*this, "audio_rambase"),
- m_maincpu(*this, "maincpu"),
- m_audiocpu(*this, "audiocpu"),
- m_gfxdecode(*this, "gfxdecode"),
- m_screen(*this, "screen"),
- m_palette(*this, "palette") { }
+ : driver_device(mconfig, type, tag)
+ , m_rambase(*this, "rambase")
+ , m_videoram(*this, "videoram")
+ , m_colorram(*this, "colorram")
+ , m_bnj_backgroundram(*this, "bnj_bgram")
+ , m_zoar_scrollram(*this, "zoar_scrollram")
+ , m_lnc_charbank(*this, "lnc_charbank")
+ , m_deco_charram(*this, "deco_charram")
+ , m_spriteram(*this, "spriteram")
+ , m_audio_rambase(*this, "audio_rambase")
+ , m_maincpu(*this, "maincpu")
+ , m_audiocpu(*this, "audiocpu")
+ , m_gfxdecode(*this, "gfxdecode")
+ , m_screen(*this, "screen")
+ , m_palette(*this, "palette")
+ , m_prom_region(*this, "proms")
+ {
+ }
/* memory pointers */
optional_shared_ptr<UINT8> m_rambase;
@@ -62,6 +65,7 @@ public:
required_device<gfxdecode_device> m_gfxdecode;
required_device<screen_device> m_screen;
required_device<palette_device> m_palette;
+ optional_memory_region m_prom_region;
DECLARE_WRITE8_MEMBER(audio_nmi_enable_w);
DECLARE_WRITE8_MEMBER(audio_command_w);
diff --git a/src/mame/includes/ccastles.h b/src/mame/includes/ccastles.h
index d690dc7f839..2a815cec48f 100644
--- a/src/mame/includes/ccastles.h
+++ b/src/mame/includes/ccastles.h
@@ -1,5 +1,5 @@
-// license:???
-// copyright-holders:Patrick Lawrence, Aaron Giles
+// license:BSD-3-Clause
+// copyright-holders:Aaron Giles
/*************************************************************************
Atari Crystal Castles hardware
diff --git a/src/mame/includes/changela.h b/src/mame/includes/changela.h
index 2b0d9b24db7..232e2e783ce 100644
--- a/src/mame/includes/changela.h
+++ b/src/mame/includes/changela.h
@@ -1,4 +1,4 @@
-// license:???
+// license:GPL-2.0+
// copyright-holders:Jarek Burczynski, Phil Stroffolino, Tomasz Slanina
diff --git a/src/mame/includes/chihiro.h b/src/mame/includes/chihiro.h
index a9efcc711e3..0a1915157c6 100644
--- a/src/mame/includes/chihiro.h
+++ b/src/mame/includes/chihiro.h
@@ -3,6 +3,8 @@
/*
* geforce 3d (NV2A) vertex program disassembler
*/
+#include <mutex>
+
class vertex_program_disassembler {
static const char *srctypes[];
static const char *scaops[];
@@ -344,6 +346,15 @@ public:
B8 = 9,
G8B8 = 10
};
+ enum class NV2A_GL_FRONT_FACE {
+ CW = 0x0900,
+ CCW = 0x0901
+ };
+ enum class NV2A_GL_CULL_FACE {
+ FRONT = 0x0404,
+ BACK = 0x0405,
+ FRONT_AND_BACK = 0x0408
+ };
nv2a_renderer(running_machine &machine) : poly_manager<float, nvidia_object_data, 13, 8192>(machine)
{
@@ -357,11 +368,13 @@ public:
objectdata = &(object_data_alloc());
objectdata->data = this;
combiner.used = 0;
- combiner.lock = osd_lock_alloc();
enabled_vertex_attributes = 0;
indexesleft_count = 0;
vertex_pipeline = 4;
color_mask = 0xffffffff;
+ backface_culling_enabled = false;
+ backface_culling_winding = NV2A_GL_FRONT_FACE::CCW;
+ backface_culling_culled = NV2A_GL_CULL_FACE::BACK;
alpha_test_enabled = false;
alpha_reference = 0;
alpha_func = NV2A_COMPARISON_OP::ALWAYS;
@@ -463,6 +476,7 @@ public:
int read_vertices_0x1810(address_space & space, vertex_nv *destination, int offset, int limit);
int read_vertices_0x1818(address_space & space, vertex_nv *destination, UINT32 address, int limit);
void convert_vertices_poly(vertex_nv *source, vertex_t *destination, int count);
+ UINT32 render_triangle_culling(const rectangle &cliprect, render_delegate callback, int paramcount, const vertex_t &_v1, const vertex_t &_v2, const vertex_t &_v3);
void clear_render_target(int what, UINT32 value);
void clear_depth_buffer(int what, UINT32 value);
inline UINT8 *direct_access_ptr(offs_t address);
@@ -626,9 +640,12 @@ public:
} final;
int stages;
int used;
- osd_lock *lock;
+ std::mutex lock;
} combiner;
UINT32 color_mask;
+ bool backface_culling_enabled;
+ NV2A_GL_FRONT_FACE backface_culling_winding;
+ NV2A_GL_CULL_FACE backface_culling_culled;
bool alpha_test_enabled;
NV2A_COMPARISON_OP alpha_func;
int alpha_reference;
diff --git a/src/mame/includes/compis.h b/src/mame/includes/compis.h
index 8a8e48eb53e..d8a06b09757 100644
--- a/src/mame/includes/compis.h
+++ b/src/mame/includes/compis.h
@@ -1,14 +1,12 @@
-// license:???
-// copyright-holders:Per Ola Ingvarsson, Tomas Karlsson
+// license:BSD-3-Clause
+// copyright-holders:Curt Coder
+// thanks-to:Per Ola Ingvarsson, Tomas Karlsson
/*****************************************************************************
*
* includes/compis.h
*
* machine driver header
*
- * Per Ola Ingvarsson
- * Tomas Karlsson
- *
****************************************************************************/
#pragma once
diff --git a/src/mame/includes/cps1.h b/src/mame/includes/cps1.h
index 6e3354de437..a26495d923b 100644
--- a/src/mame/includes/cps1.h
+++ b/src/mame/includes/cps1.h
@@ -124,7 +124,8 @@ public:
m_gfxdecode(*this, "gfxdecode"),
m_screen(*this, "screen"),
m_palette(*this, "palette"),
- m_decrypted_opcodes(*this, "decrypted_opcodes")
+ m_decrypted_opcodes(*this, "decrypted_opcodes"),
+ m_region_stars(*this, "stars")
{ }
/* memory pointers */
@@ -232,6 +233,7 @@ public:
required_device<screen_device> m_screen;
required_device<palette_device> m_palette;
optional_shared_ptr<UINT16> m_decrypted_opcodes;
+ optional_memory_region m_region_stars;
DECLARE_READ16_MEMBER(cps1_hack_dsw_r);
DECLARE_READ16_MEMBER(cps1_in1_r);
diff --git a/src/mame/includes/cps3.h b/src/mame/includes/cps3.h
index 4f954dbdb9d..2319f023245 100644
--- a/src/mame/includes/cps3.h
+++ b/src/mame/includes/cps3.h
@@ -15,23 +15,26 @@ class cps3_state : public driver_device
{
public:
cps3_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_palette(*this, "palette"),
- m_cps3sound(*this, "cps3sound"),
- m_mainram(*this, "mainram"),
- m_spriteram(*this, "spriteram"),
- m_colourram(*this, "colourram"),
- m_tilemap20_regs_base(*this, "tmap20_regs"),
- m_tilemap30_regs_base(*this, "tmap30_regs"),
- m_tilemap40_regs_base(*this, "tmap40_regs"),
- m_tilemap50_regs_base(*this, "tmap50_regs"),
- m_fullscreenzoom(*this, "fullscreenzoom"),
- m_0xc0000000_ram(*this, "0xc0000000_ram"),
- m_decrypted_gamerom(*this, "decrypted_gamerom"),
- m_0xc0000000_ram_decrypted(*this, "0xc0000000_ram_decrypted")
- { }
+ : driver_device(mconfig, type, tag)
+ , m_maincpu(*this, "maincpu")
+ , m_gfxdecode(*this, "gfxdecode")
+ , m_palette(*this, "palette")
+ , m_cps3sound(*this, "cps3sound")
+ , m_mainram(*this, "mainram")
+ , m_spriteram(*this, "spriteram")
+ , m_colourram(*this, "colourram")
+ , m_tilemap20_regs_base(*this, "tmap20_regs")
+ , m_tilemap30_regs_base(*this, "tmap30_regs")
+ , m_tilemap40_regs_base(*this, "tmap40_regs")
+ , m_tilemap50_regs_base(*this, "tmap50_regs")
+ , m_fullscreenzoom(*this, "fullscreenzoom")
+ , m_0xc0000000_ram(*this, "0xc0000000_ram")
+ , m_decrypted_gamerom(*this, "decrypted_gamerom")
+ , m_0xc0000000_ram_decrypted(*this, "0xc0000000_ram_decrypted")
+ , m_user4_region(*this, "user4")
+ , m_user5_region(*this, "user5")
+ {
+ }
required_device<sh2_device> m_maincpu;
required_device<gfxdecode_device> m_gfxdecode;
@@ -50,6 +53,9 @@ public:
required_shared_ptr<UINT32> m_decrypted_gamerom;
required_shared_ptr<UINT32> m_0xc0000000_ram_decrypted;
+ optional_memory_region m_user4_region;
+ optional_memory_region m_user5_region;
+
fujitsu_29f016a_device *m_simm[7][8];
UINT32 m_cram_gfxflash_bank;
std::unique_ptr<UINT32[]> m_char_ram;
@@ -61,7 +67,7 @@ public:
std::unique_ptr<UINT32[]> m_mame_colours;
bitmap_rgb32 m_renderbuffer_bitmap;
rectangle m_renderbuffer_clip;
- UINT8* m_user4region;
+ UINT8* m_user4;
UINT32 m_key1;
UINT32 m_key2;
int m_altEncryption;
@@ -81,7 +87,7 @@ public:
int m_last_normal_byte;
unsigned short m_lastb;
unsigned short m_lastb2;
- UINT8* m_user5region;
+ UINT8* m_user5;
DECLARE_READ32_MEMBER(cps3_ssram_r);
DECLARE_WRITE32_MEMBER(cps3_ssram_w);
diff --git a/src/mame/includes/cyberbal.h b/src/mame/includes/cyberbal.h
index 0bc65bccb57..aca6711a0ae 100644
--- a/src/mame/includes/cyberbal.h
+++ b/src/mame/includes/cyberbal.h
@@ -24,6 +24,7 @@ public:
m_daccpu(*this, "dac"),
m_dac1(*this, "dac1"),
m_dac2(*this, "dac2"),
+ m_soundcomm(*this, "soundcomm"),
m_jsa(*this, "jsa"),
m_playfield_tilemap(*this, "playfield"),
m_alpha_tilemap(*this, "alpha"),
@@ -40,6 +41,7 @@ public:
optional_device<cpu_device> m_daccpu;
optional_device<dac_device> m_dac1;
optional_device<dac_device> m_dac2;
+ optional_device<atari_sound_comm_device> m_soundcomm;
optional_device<atari_jsa_ii_device> m_jsa;
required_device<tilemap_device> m_playfield_tilemap;
required_device<tilemap_device> m_alpha_tilemap;
@@ -76,8 +78,6 @@ public:
DECLARE_WRITE16_MEMBER(sound_68k_w);
DECLARE_WRITE16_MEMBER(sound_68k_dac_w);
DECLARE_DRIVER_INIT(cyberbalt);
- DECLARE_DRIVER_INIT(cyberbal2p);
- DECLARE_DRIVER_INIT(cyberbal);
TILE_GET_INFO_MEMBER(get_alpha_tile_info);
TILE_GET_INFO_MEMBER(get_playfield_tile_info);
DECLARE_MACHINE_START(cyberbal);
diff --git a/src/mame/includes/darius.h b/src/mame/includes/darius.h
index 13f037f0ca0..9800aa14dd3 100644
--- a/src/mame/includes/darius.h
+++ b/src/mame/includes/darius.h
@@ -1,4 +1,4 @@
-// license:???
+// license:GPL-2.0+
// copyright-holders:David Graves, Jarek Burczynski
/*************************************************************************
diff --git a/src/mame/includes/dkong.h b/src/mame/includes/dkong.h
index 2033bf96bbe..61848bf7e7c 100644
--- a/src/mame/includes/dkong.h
+++ b/src/mame/includes/dkong.h
@@ -94,33 +94,35 @@ class dkong_state : public driver_device
{
public:
dkong_state(const machine_config &mconfig, device_type type, const char *tag)
- : driver_device(mconfig, type, tag),
- m_maincpu(*this, "maincpu"),
- m_soundcpu(*this, "soundcpu"),
- m_eeprom(*this, "eeprom"),
- m_dev_n2a03a(*this, "n2a03a"),
- m_dev_n2a03b(*this, "n2a03b"),
- m_dev_vp2(*this, "virtual_p2"),
- m_dev_6h(*this, "ls259.6h"),
- m_discrete(*this, "discrete"),
- m_video_ram(*this,"video_ram"),
- m_sprite_ram(*this,"sprite_ram"),
- m_vidhw(DKONG_BOARD),
- m_sig30Hz(0),
- m_blue_level(0),
- m_cv1(0),
- m_cv2(0),
- m_vg1(0),
- m_vg2(0),
- m_vg3(0),
- m_cv3(0),
- m_cv4(0),
- m_gfxdecode(*this, "gfxdecode"),
- m_screen(*this, "screen"),
- m_palette(*this, "palette"),
- m_z80dma(*this, "z80dma"),
- m_dma8257(*this, "dma8257")
- { }
+ : driver_device(mconfig, type, tag)
+ , m_maincpu(*this, "maincpu")
+ , m_soundcpu(*this, "soundcpu")
+ , m_eeprom(*this, "eeprom")
+ , m_dev_n2a03a(*this, "n2a03a")
+ , m_dev_n2a03b(*this, "n2a03b")
+ , m_dev_vp2(*this, "virtual_p2")
+ , m_dev_6h(*this, "ls259.6h")
+ , m_discrete(*this, "discrete")
+ , m_video_ram(*this,"video_ram")
+ , m_sprite_ram(*this,"sprite_ram")
+ , m_snd_rom(*this, "soundcpu")
+ , m_vidhw(DKONG_BOARD)
+ , m_sig30Hz(0)
+ , m_blue_level(0)
+ , m_cv1(0)
+ , m_cv2(0)
+ , m_vg1(0)
+ , m_vg2(0)
+ , m_vg3(0)
+ , m_cv3(0)
+ , m_cv4(0)
+ , m_gfxdecode(*this, "gfxdecode")
+ , m_screen(*this, "screen")
+ , m_palette(*this, "palette")
+ , m_z80dma(*this, "z80dma")
+ , m_dma8257(*this, "dma8257")
+ {
+ }
/* devices */
required_device<cpu_device> m_maincpu;
@@ -141,8 +143,9 @@ public:
UINT8 m_nmi_mask;
std::unique_ptr<UINT8[]> m_decrypted;
+
/* sound state */
- const UINT8 *m_snd_rom;
+ optional_region_ptr<UINT8> m_snd_rom;
/* video state */
tilemap_t *m_bg_tilemap;
diff --git a/src/mame/includes/dynax.h b/src/mame/includes/dynax.h
index 7d84e0cc86e..f5bcb8119da 100644
--- a/src/mame/includes/dynax.h
+++ b/src/mame/includes/dynax.h
@@ -14,16 +14,26 @@ class dynax_state : public driver_device
{
public:
dynax_state(const machine_config &mconfig, device_type type, const char *tag)
- : driver_device(mconfig, type, tag),
- m_maincpu(*this, "maincpu"),
- m_soundcpu(*this, "soundcpu"),
- m_ym2413(*this, "ym2413"),
- m_oki(*this, "oki"),
- m_msm(*this, "msm"),
- m_screen(*this, "screen"),
- m_palette(*this, "palette"),
- m_rtc(*this, "rtc")
- { }
+ : driver_device(mconfig, type, tag)
+ , m_maincpu(*this, "maincpu")
+ , m_soundcpu(*this, "soundcpu")
+ , m_ym2413(*this, "ym2413")
+ , m_oki(*this, "oki")
+ , m_msm(*this, "msm")
+ , m_screen(*this, "screen")
+ , m_palette(*this, "palette")
+ , m_rtc(*this, "rtc")
+ , m_gfx_region1(*this, "gfx1")
+ , m_gfx_region2(*this, "gfx2")
+ , m_gfx_region3(*this, "gfx3")
+ , m_gfx_region4(*this, "gfx4")
+ , m_gfx_region5(*this, "gfx5")
+ , m_gfx_region6(*this, "gfx6")
+ , m_gfx_region7(*this, "gfx7")
+ , m_gfx_region8(*this, "gfx8")
+
+ {
+ }
/* devices */
required_device<cpu_device> m_maincpu;
@@ -34,6 +44,16 @@ public:
optional_device<screen_device> m_screen;
required_device<palette_device> m_palette;
optional_device<msm6242_device> m_rtc;
+ optional_region_ptr<UINT8> m_gfx_region1;
+ optional_region_ptr<UINT8> m_gfx_region2;
+ optional_region_ptr<UINT8> m_gfx_region3;
+ optional_region_ptr<UINT8> m_gfx_region4;
+ optional_region_ptr<UINT8> m_gfx_region5;
+ optional_region_ptr<UINT8> m_gfx_region6;
+ optional_region_ptr<UINT8> m_gfx_region7;
+ optional_region_ptr<UINT8> m_gfx_region8;
+
+ memory_region * m_gfxregions[8];
// up to 8 layers, 2 images per layer (interleaved on screen)
std::unique_ptr<UINT8[]> m_pixmap[8][2];
@@ -112,6 +132,7 @@ public:
UINT8 m_gekisha_val[2];
UINT8 m_gekisha_rom_enable;
UINT8 *m_romptr;
+ UINT8 *m_hnoridur_ptr;
DECLARE_WRITE8_MEMBER(dynax_vblank_ack_w);
DECLARE_WRITE8_MEMBER(dynax_blitter_ack_w);
@@ -282,7 +303,7 @@ public:
DECLARE_VIDEO_START(neruton);
inline void blitter_plot_pixel( int layer, int mask, int x, int y, int pen, int wrap, int flags );
- int blitter_drawgfx( int layer, int mask, const char *gfx, int src, int pen, int x, int y, int wrap, int flags );
+ int blitter_drawgfx( int layer, int mask, memory_region *gfx, int src, int pen, int x, int y, int wrap, int flags );
void dynax_blitter_start( int flags );
void jantouki_blitter_start( int flags );
void jantouki_blitter2_start( int flags );
diff --git a/src/mame/includes/exedexes.h b/src/mame/includes/exedexes.h
index cb7097c66a6..48d2c2cd65a 100644
--- a/src/mame/includes/exedexes.h
+++ b/src/mame/includes/exedexes.h
@@ -1,4 +1,4 @@
-// license:???
+// license:BSD-3-Clause
// copyright-holders:Richard Davies
/*************************************************************************
diff --git a/src/mame/includes/fidelz80.h b/src/mame/includes/fidelz80.h
new file mode 100644
index 00000000000..6598cc76ec0
--- /dev/null
+++ b/src/mame/includes/fidelz80.h
@@ -0,0 +1,64 @@
+// license:BSD-3-Clause
+// copyright-holders:Kevin Horton,Jonathan Gevaryahu,Sandro Ronco,hap
+/******************************************************************************
+*
+* Fidelity Electronics Z80 based board driver
+*
+******************************************************************************/
+
+#include "emu.h"
+#include "sound/speaker.h"
+#include "sound/s14001a.h"
+
+class fidelz80base_state : public driver_device
+{
+public:
+ fidelz80base_state(const machine_config &mconfig, device_type type, const char *tag)
+ : driver_device(mconfig, type, tag),
+ m_maincpu(*this, "maincpu"),
+ m_inp_matrix(*this, "IN"),
+ m_speech(*this, "speech"),
+ m_speech_rom(*this, "speech"),
+ m_speaker(*this, "speaker"),
+ m_display_wait(33),
+ m_display_maxy(1),
+ m_display_maxx(0)
+ { }
+
+ // devices/pointers
+ required_device<cpu_device> m_maincpu;
+ optional_ioport_array<11> m_inp_matrix; // max 11
+ optional_device<s14001a_device> m_speech;
+ optional_region_ptr<UINT8> m_speech_rom;
+ optional_device<speaker_sound_device> m_speaker;
+
+ // misc common
+ UINT16 m_inp_mux; // multiplexed keypad/leds mask
+ UINT16 m_led_select;
+ UINT16 m_7seg_data; // data for seg leds
+ UINT16 m_led_data;
+ UINT8 m_speech_data;
+ UINT8 m_speech_bank; // speech rom higher address bits
+
+ UINT16 read_inputs(int columns);
+
+ // display common
+ int m_display_wait; // led/lamp off-delay in microseconds (default 33ms)
+ int m_display_maxy; // display matrix number of rows
+ int m_display_maxx; // display matrix number of columns (max 31 for now)
+
+ UINT32 m_display_state[0x20]; // display matrix rows data (last bit is used for always-on)
+ UINT16 m_display_segmask[0x20]; // if not 0, display matrix row is a digit, mask indicates connected segments
+ UINT32 m_display_cache[0x20]; // (internal use)
+ UINT8 m_display_decay[0x20][0x20]; // (internal use)
+
+ TIMER_DEVICE_CALLBACK_MEMBER(display_decay_tick);
+ void display_update();
+ void set_display_size(int maxx, int maxy);
+ void set_display_segmask(UINT32 digits, UINT32 mask);
+ void display_matrix(int maxx, int maxy, UINT32 setx, UINT32 sety);
+
+protected:
+ virtual void machine_start() override;
+ virtual void machine_reset() override;
+};
diff --git a/src/mame/includes/fm7.h b/src/mame/includes/fm7.h
index cdc22c6e092..4496b679b8b 100644
--- a/src/mame/includes/fm7.h
+++ b/src/mame/includes/fm7.h
@@ -136,6 +136,9 @@ public:
m_floppy0(*this, "fdc:0"),
m_floppy1(*this, "fdc:1"),
m_floppy(nullptr),
+ m_ram_ptr(*this, "maincpu"),
+ m_rom_ptr(*this, "init"),
+ m_basic_ptr(*this, "fbasic"),
m_kanji(*this, "kanji1"),
m_key1(*this, "key1"),
m_key2(*this, "key2"),
@@ -164,42 +167,22 @@ public:
m_avbank16(*this, "av_bank16")
{
}
+ DECLARE_DRIVER_INIT(fm7);
- optional_shared_ptr<UINT8> m_shared_ram;
- optional_shared_ptr<UINT8> m_boot_ram;
+ virtual void machine_reset() override;
+ virtual void video_start() override;
+
+ DECLARE_MACHINE_START(fm7);
+ DECLARE_MACHINE_START(fm77av);
+ DECLARE_MACHINE_START(fm11);
+ DECLARE_MACHINE_START(fm16);
+
+ DECLARE_WRITE_LINE_MEMBER(fm7_fdc_intrq_w);
+ DECLARE_WRITE_LINE_MEMBER(fm7_fdc_drq_w);
+ DECLARE_READ8_MEMBER(fm77av_joy_1_r);
+ DECLARE_READ8_MEMBER(fm77av_joy_2_r);
+ DECLARE_WRITE_LINE_MEMBER(fm77av_fmirq);
- UINT8 m_irq_flags;
- UINT8 m_irq_mask;
- emu_timer* m_timer;
- emu_timer* m_subtimer;
- emu_timer* m_keyboard_timer;
- UINT8 m_basic_rom_en;
- UINT8 m_init_rom_en;
- unsigned int m_key_delay;
- unsigned int m_key_repeat;
- UINT16 m_current_scancode;
- UINT32 m_key_data[4];
- UINT32 m_mod_data;
- UINT8 m_key_scan_mode;
- UINT8 m_break_flag;
- UINT8 m_psg_regsel;
- UINT8 m_psg_data;
- UINT8 m_fdc_side;
- UINT8 m_fdc_drive;
- UINT8 m_fdc_irq_flag;
- UINT8 m_fdc_drq_flag;
- UINT8 m_fm77av_ym_irq;
- UINT8 m_speaker_active;
- UINT16 m_kanji_address;
- fm7_encoder_t m_encoder;
- fm7_mmr_t m_mmr;
- UINT8 m_cp_prev;
- std::unique_ptr<UINT8[]> m_video_ram;
- emu_timer* m_fm77av_vsync_timer;
- UINT8 m_type;
- fm7_video_t m_video;
- fm7_alu_t m_alu;
- int m_sb_prev;
DECLARE_READ8_MEMBER(fm7_subintf_r);
DECLARE_WRITE8_MEMBER(fm7_subintf_w);
DECLARE_READ8_MEMBER(fm7_sub_busyflag_r);
@@ -286,16 +269,62 @@ public:
DECLARE_WRITE8_MEMBER(fm7_mmr_w);
DECLARE_READ8_MEMBER(fm7_kanji_r);
DECLARE_WRITE8_MEMBER(fm7_kanji_w);
+
+ IRQ_CALLBACK_MEMBER(fm7_irq_ack);
+ IRQ_CALLBACK_MEMBER(fm7_sub_irq_ack);
+
+ DECLARE_WRITE_LINE_MEMBER(write_centronics_busy);
+ DECLARE_WRITE_LINE_MEMBER(write_centronics_fault);
+ DECLARE_WRITE_LINE_MEMBER(write_centronics_ack);
+ DECLARE_WRITE_LINE_MEMBER(write_centronics_perror);
+
+ UINT32 screen_update_fm7(screen_device &screen, bitmap_rgb32 &bitmap, const rectangle &cliprect);
+
+protected:
+ optional_shared_ptr<UINT8> m_shared_ram;
+ optional_shared_ptr<UINT8> m_boot_ram;
+
+ UINT8 m_irq_flags;
+ UINT8 m_irq_mask;
+ emu_timer* m_timer;
+ emu_timer* m_subtimer;
+ emu_timer* m_keyboard_timer;
+ UINT8 m_basic_rom_en;
+ UINT8 m_init_rom_en;
+
+ unsigned int m_key_delay;
+ unsigned int m_key_repeat;
+ UINT16 m_current_scancode;
+ UINT32 m_key_data[4];
+ UINT32 m_mod_data;
+ UINT8 m_key_scan_mode;
+ UINT8 m_break_flag;
+
+ UINT8 m_psg_regsel;
+ UINT8 m_psg_data;
+
+ UINT8 m_fdc_side;
+ UINT8 m_fdc_drive;
+ UINT8 m_fdc_irq_flag;
+ UINT8 m_fdc_drq_flag;
+
+ UINT8 m_fm77av_ym_irq;
+ UINT8 m_speaker_active;
+
+ UINT16 m_kanji_address;
+ fm7_encoder_t m_encoder;
+ fm7_mmr_t m_mmr;
+ UINT8 m_cp_prev;
+
+ std::unique_ptr<UINT8[]> m_video_ram;
+ emu_timer* m_fm77av_vsync_timer;
+ UINT8 m_type;
+ fm7_video_t m_video;
+ fm7_alu_t m_alu;
+ int m_sb_prev;
+
void fm77av_encoder_setup_command();
void fm77av_encoder_handle_command();
- DECLARE_DRIVER_INIT(fm7);
- virtual void machine_reset() override;
- virtual void video_start() override;
- DECLARE_MACHINE_START(fm7);
- DECLARE_MACHINE_START(fm77av);
- DECLARE_MACHINE_START(fm11);
- DECLARE_MACHINE_START(fm16);
- UINT32 screen_update_fm7(screen_device &screen, bitmap_rgb32 &bitmap, const rectangle &cliprect);
TIMER_CALLBACK_MEMBER(fm7_beeper_off);
TIMER_CALLBACK_MEMBER(fm77av_encoder_ack);
TIMER_CALLBACK_MEMBER(fm7_timer_irq);
@@ -303,13 +332,7 @@ public:
TIMER_CALLBACK_MEMBER(fm7_keyboard_poll);
TIMER_CALLBACK_MEMBER(fm77av_alu_task_end);
TIMER_CALLBACK_MEMBER(fm77av_vsync);
- DECLARE_WRITE_LINE_MEMBER(fm7_fdc_intrq_w);
- DECLARE_WRITE_LINE_MEMBER(fm7_fdc_drq_w);
- DECLARE_READ8_MEMBER(fm77av_joy_1_r);
- DECLARE_READ8_MEMBER(fm77av_joy_2_r);
- IRQ_CALLBACK_MEMBER(fm7_irq_ack);
- IRQ_CALLBACK_MEMBER(fm7_sub_irq_ack);
- DECLARE_WRITE_LINE_MEMBER(fm77av_fmirq);
+
required_device<cpu_device> m_maincpu;
required_device<cpu_device> m_sub;
optional_device<cpu_device> m_x86;
@@ -317,14 +340,19 @@ public:
required_device<beep_device> m_beeper;
optional_device<ym2203_device> m_ym;
optional_device<ay8910_device> m_psg;
+
required_device<centronics_device> m_centronics;
required_device<output_latch_device> m_cent_data_out;
+
required_device<mb8877_t> m_fdc;
required_device<floppy_connector> m_floppy0;
required_device<floppy_connector> m_floppy1;
-
floppy_image_device *m_floppy;
+ optional_region_ptr<UINT8> m_ram_ptr;
+ optional_region_ptr<UINT8> m_rom_ptr;
+ optional_region_ptr<UINT8> m_basic_ptr;
+
void fm7_alu_mask_write(UINT32 offset, int bank, UINT8 dat);
void fm7_alu_function_compare(UINT32 offset);
void fm7_alu_function_pset(UINT32 offset);
@@ -350,11 +378,6 @@ public:
int m_centronics_ack;
int m_centronics_perror;
- DECLARE_WRITE_LINE_MEMBER(write_centronics_busy);
- DECLARE_WRITE_LINE_MEMBER(write_centronics_fault);
- DECLARE_WRITE_LINE_MEMBER(write_centronics_ack);
- DECLARE_WRITE_LINE_MEMBER(write_centronics_perror);
-
optional_memory_region m_kanji;
required_ioport m_key1;
required_ioport m_key2;
@@ -383,7 +406,6 @@ public:
optional_device<address_map_bank_device> m_avbank15;
optional_device<address_map_bank_device> m_avbank16;
-protected:
virtual void device_timer(emu_timer &timer, device_timer_id id, int param, void *ptr) override;
};
diff --git a/src/mame/includes/gaelco2.h b/src/mame/includes/gaelco2.h
index ab458342036..14cd42e3284 100644
--- a/src/mame/includes/gaelco2.h
+++ b/src/mame/includes/gaelco2.h
@@ -16,7 +16,9 @@ public:
m_eeprom(*this, "eeprom"),
m_gfxdecode(*this, "gfxdecode"),
m_palette(*this, "palette"),
- m_generic_paletteram_16(*this, "paletteram") { }
+ m_generic_paletteram_16(*this, "paletteram"),
+ m_shareram(*this, "shareram")
+ { }
required_device<m68000_device> m_maincpu;
required_device<buffered_spriteram16_device> m_spriteram;
@@ -26,6 +28,9 @@ public:
required_device<gfxdecode_device> m_gfxdecode;
required_device<palette_device> m_palette;
required_shared_ptr<UINT16> m_generic_paletteram_16;
+ optional_shared_ptr<UINT16> m_shareram;
+
+
UINT32 snowboard_latch;
@@ -35,6 +40,8 @@ public:
int m_dual_monitor;
DECLARE_READ16_MEMBER(dallas_kludge_r);
+ DECLARE_READ16_MEMBER(maniacsqa_prot_r);
+
DECLARE_WRITE16_MEMBER(gaelco2_coin_w);
DECLARE_WRITE16_MEMBER(gaelco2_coin2_w);
DECLARE_WRITE16_MEMBER(touchgo_coin_w);
@@ -45,6 +52,7 @@ public:
DECLARE_DRIVER_INIT(touchgo);
DECLARE_DRIVER_INIT(snowboar);
DECLARE_DRIVER_INIT(alighunt);
+ DECLARE_DRIVER_INIT(maniacsqa);
TILE_GET_INFO_MEMBER(get_tile_info_gaelco2_screen0);
TILE_GET_INFO_MEMBER(get_tile_info_gaelco2_screen1);
TILE_GET_INFO_MEMBER(get_tile_info_gaelco2_screen0_dual);
diff --git a/src/mame/includes/gauntlet.h b/src/mame/includes/gauntlet.h
index 685021ebaa8..e14e72776a2 100644
--- a/src/mame/includes/gauntlet.h
+++ b/src/mame/includes/gauntlet.h
@@ -8,16 +8,30 @@
#include "machine/atarigen.h"
#include "video/atarimo.h"
+#include "sound/2151intf.h"
+#include "sound/pokey.h"
+#include "sound/tms5220.h"
class gauntlet_state : public atarigen_state
{
public:
gauntlet_state(const machine_config &mconfig, device_type type, const char *tag)
: atarigen_state(mconfig, type, tag),
+ m_audiocpu(*this, "audiocpu"),
+ m_soundcomm(*this, "soundcomm"),
+ m_ym2151(*this, "ymsnd"),
+ m_pokey(*this, "pokey"),
+ m_tms5220(*this, "tms"),
m_playfield_tilemap(*this, "playfield"),
m_alpha_tilemap(*this, "alpha"),
m_mob(*this, "mob") { }
+ required_device<cpu_device> m_audiocpu;
+ required_device<atari_sound_comm_device> m_soundcomm;
+ required_device<ym2151_device> m_ym2151;
+ required_device<pokey_device> m_pokey;
+ required_device<tms5220_device> m_tms5220;
+
required_device<tilemap_device> m_playfield_tilemap;
required_device<tilemap_device> m_alpha_tilemap;
required_device<atari_motion_objects_device> m_mob;
@@ -33,9 +47,7 @@ public:
DECLARE_WRITE8_MEMBER(sound_ctl_w);
DECLARE_WRITE8_MEMBER(mixer_w);
void swap_memory(void *ptr1, void *ptr2, int bytes);
- void common_init(int slapstic, int vindctr2);
- DECLARE_DRIVER_INIT(gauntlet2);
- DECLARE_DRIVER_INIT(gaunt2p);
+ void common_init(int vindctr2);
DECLARE_DRIVER_INIT(gauntlet);
DECLARE_DRIVER_INIT(vindctr2);
TILE_GET_INFO_MEMBER(get_alpha_tile_info);
diff --git a/src/mame/includes/harddriv.h b/src/mame/includes/harddriv.h
index c887c8a2597..01fad97eb95 100644
--- a/src/mame/includes/harddriv.h
+++ b/src/mame/includes/harddriv.h
@@ -46,7 +46,209 @@ class harddriv_state : public device_t
public:
harddriv_state(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock);
+ void init_strtdriv(void);
+
+ void init_harddriv(void);
+
+ void init_harddrivc(void);
+
+ void init_racedriv(void);
+ void init_racedrivb1(void);
+
+ void init_racedrivc(void);
+ void init_racedrivc1(void);
+
+ void init_hdrivair(void);
+ void init_hdrivairp(void);
+
+ void init_steeltal(void);
+ void init_steeltal1(void);
+ void init_steeltalp(void);
+
+ void init_stunrun(void);
+ void init_racedrivc_panorama_side();
+
+ mc68681_device* get_duart() { return m_duartn68681; }
+ screen_device* get_screen() { return m_screen; }
+
+ void init_video();
+ INTERRUPT_GEN_MEMBER(hd68k_irq_gen);
+ TIMER_CALLBACK_MEMBER(deferred_adsp_bank_switch);
+ TIMER_CALLBACK_MEMBER(rddsp32_sync_cb);
+
+ /*----------- defined in machine/harddriv.c -----------*/
+
+ /* Driver/Multisync board */
+ DECLARE_WRITE16_MEMBER( hd68k_irq_ack_w );
+
+ DECLARE_WRITE_LINE_MEMBER(harddriv_duart_irq_handler);
+
+ DECLARE_READ16_MEMBER( hd68k_gsp_io_r );
+ DECLARE_WRITE16_MEMBER( hd68k_gsp_io_w );
+
+ DECLARE_READ16_MEMBER( hd68k_msp_io_r );
+ DECLARE_WRITE16_MEMBER( hd68k_msp_io_w );
+
+ DECLARE_READ16_MEMBER( hd68k_a80000_r );
+ DECLARE_READ16_MEMBER( hd68k_port0_r );
+ DECLARE_READ16_MEMBER( hd68k_adc8_r );
+ DECLARE_READ16_MEMBER( hd68k_adc12_r );
+ DECLARE_READ16_MEMBER( hdc68k_port1_r );
+ DECLARE_READ16_MEMBER( hda68k_port1_r );
+ DECLARE_READ16_MEMBER( hdc68k_wheel_r );
+ DECLARE_READ16_MEMBER( hd68k_sound_reset_r );
+
+ DECLARE_WRITE16_MEMBER( hd68k_adc_control_w );
+ DECLARE_WRITE16_MEMBER( hd68k_wr0_write );
+ DECLARE_WRITE16_MEMBER( hd68k_wr1_write );
+ DECLARE_WRITE16_MEMBER( hd68k_wr2_write );
+ DECLARE_WRITE16_MEMBER( hd68k_nwr_w );
+ DECLARE_WRITE16_MEMBER( hdc68k_wheel_edge_reset_w );
+
+ DECLARE_READ16_MEMBER( hd68k_zram_r );
+ DECLARE_WRITE16_MEMBER( hd68k_zram_w );
+
+ DECLARE_WRITE16_MEMBER( hdgsp_io_w );
+
+ DECLARE_WRITE16_MEMBER( hdgsp_protection_w );
+
+ DECLARE_WRITE_LINE_MEMBER( hdgsp_irq_gen );
+ DECLARE_WRITE_LINE_MEMBER( hdmsp_irq_gen );
+
+ /* ADSP board */
+ DECLARE_READ16_MEMBER( hd68k_adsp_program_r );
+ DECLARE_WRITE16_MEMBER( hd68k_adsp_program_w );
+
+ DECLARE_READ16_MEMBER( hd68k_adsp_data_r );
+ DECLARE_WRITE16_MEMBER( hd68k_adsp_data_w );
+
+ DECLARE_READ16_MEMBER( hd68k_adsp_buffer_r );
+ DECLARE_WRITE16_MEMBER( hd68k_adsp_buffer_w );
+
+ DECLARE_WRITE16_MEMBER( hd68k_adsp_control_w );
+ DECLARE_WRITE16_MEMBER( hd68k_adsp_irq_clear_w );
+ DECLARE_READ16_MEMBER( hd68k_adsp_irq_state_r );
+
+ DECLARE_READ16_MEMBER( hdadsp_special_r );
+ DECLARE_WRITE16_MEMBER( hdadsp_special_w );
+
+ DECLARE_READ16_MEMBER(steeltal_dummy_r);
+ DECLARE_READ32_MEMBER(rddsp_unmap_r);
+
+ /* DS III/IV board */
+ DECLARE_WRITE16_MEMBER( hd68k_ds3_control_w );
+ DECLARE_READ16_MEMBER( hd68k_ds3_girq_state_r );
+
+ DECLARE_READ16_MEMBER( hd68k_ds3_gdata_r );
+ DECLARE_WRITE16_MEMBER( hd68k_ds3_gdata_w );
+
+ DECLARE_READ16_MEMBER( hdds3_special_r );
+ DECLARE_WRITE16_MEMBER( hdds3_special_w );
+ DECLARE_READ16_MEMBER( hdds3_control_r );
+ DECLARE_WRITE16_MEMBER( hdds3_control_w );
+
+ DECLARE_READ16_MEMBER( hd68k_ds3_program_r );
+ DECLARE_WRITE16_MEMBER( hd68k_ds3_program_w );
+
+ DECLARE_READ16_MEMBER( hd68k_ds3_sdata_r );
+ DECLARE_WRITE16_MEMBER( hd68k_ds3_sdata_w );
+ DECLARE_WRITE16_MEMBER( hd68k_ds3_sirq_clear_w );
+ DECLARE_READ16_MEMBER( hd68k_ds3_sirq_state_r );
+
+ DECLARE_READ16_MEMBER( hdds3_sdsp_special_r );
+ DECLARE_WRITE16_MEMBER( hdds3_sdsp_special_w );
+
+ DECLARE_READ16_MEMBER( hdds3_sdsp_control_r );
+ DECLARE_WRITE16_MEMBER( hdds3_sdsp_control_w );
+ DECLARE_READ16_MEMBER( hdds3_xdsp_control_r );
+ DECLARE_WRITE16_MEMBER( hdds3_xdsp_control_w );
+
+ TIMER_CALLBACK_MEMBER( xsdp_sport1_irq_off_callback );
+
+ WRITE16_MEMBER( watchdog_reset16_w );
+
+ DECLARE_READ16_MEMBER( hdgsp_control_lo_r );
+ DECLARE_WRITE16_MEMBER( hdgsp_control_lo_w );
+ DECLARE_READ16_MEMBER( hdgsp_control_hi_r );
+ DECLARE_WRITE16_MEMBER( hdgsp_control_hi_w );
+
+ DECLARE_READ16_MEMBER( hdgsp_vram_2bpp_r );
+ DECLARE_WRITE16_MEMBER( hdgsp_vram_1bpp_w );
+ DECLARE_WRITE16_MEMBER( hdgsp_vram_2bpp_w );
+
+ DECLARE_READ16_MEMBER( hdgsp_paletteram_lo_r );
+ DECLARE_WRITE16_MEMBER( hdgsp_paletteram_lo_w );
+ DECLARE_READ16_MEMBER( hdgsp_paletteram_hi_r );
+ DECLARE_WRITE16_MEMBER( hdgsp_paletteram_hi_w );
+
+ /* DSK board */
+ DECLARE_WRITE32_MEMBER(hddsk_update_pif);
+
+ /* DS III/IV board */
+ TIMER_DEVICE_CALLBACK_MEMBER( ds3sdsp_internal_timer_callback );
+ TIMER_DEVICE_CALLBACK_MEMBER( ds3xdsp_internal_timer_callback );
+
+ TMS340X0_SCANLINE_IND16_CB_MEMBER(scanline_driver);
+ TMS340X0_SCANLINE_IND16_CB_MEMBER(scanline_multisync);
+
+ /*----------- defined in video/harddriv.c -----------*/
+
+ TMS340X0_TO_SHIFTREG_CB_MEMBER(hdgsp_write_to_shiftreg);
+ TMS340X0_FROM_SHIFTREG_CB_MEMBER(hdgsp_read_from_shiftreg);
+
+ INTERRUPT_GEN_MEMBER(video_int_gen);
+ DECLARE_WRITE_LINE_MEMBER(sound_int_write_line);
+
+
+ /* DSK board */
+ DECLARE_WRITE16_MEMBER( hd68k_dsk_control_w );
+ DECLARE_READ16_MEMBER( hd68k_dsk_ram_r );
+ DECLARE_WRITE16_MEMBER( hd68k_dsk_ram_w );
+ DECLARE_READ16_MEMBER( hd68k_dsk_small_rom_r );
+ DECLARE_READ16_MEMBER( hd68k_dsk_rom_r );
+ DECLARE_WRITE16_MEMBER( hd68k_dsk_dsp32_w );
+ DECLARE_READ16_MEMBER( hd68k_dsk_dsp32_r );
+ DECLARE_WRITE32_MEMBER( rddsp32_sync0_w );
+ DECLARE_WRITE32_MEMBER( rddsp32_sync1_w );
+
+ /* DSPCOM board */
+ DECLARE_WRITE16_MEMBER( hddspcom_control_w );
+
+ DECLARE_WRITE16_MEMBER( rd68k_slapstic_w );
+ DECLARE_READ16_MEMBER( rd68k_slapstic_r );
+
+ /* Game-specific protection */
+ DECLARE_WRITE16_MEMBER( st68k_sloop_w );
+ DECLARE_READ16_MEMBER( st68k_sloop_r );
+ DECLARE_READ16_MEMBER( st68k_sloop_alt_r );
+ DECLARE_WRITE16_MEMBER( st68k_protosloop_w );
+ DECLARE_READ16_MEMBER( st68k_protosloop_r );
+
+ /* GSP optimizations */
+ DECLARE_READ16_MEMBER( hdgsp_speedup_r );
+ DECLARE_WRITE16_MEMBER( hdgsp_speedup1_w );
+ DECLARE_WRITE16_MEMBER( hdgsp_speedup2_w );
+ DECLARE_READ16_MEMBER( rdgsp_speedup1_r );
+ DECLARE_WRITE16_MEMBER( rdgsp_speedup1_w );
+
+ /* MSP optimizations */
+ DECLARE_READ16_MEMBER( hdmsp_speedup_r );
+ DECLARE_WRITE16_MEMBER( hdmsp_speedup_w );
+
+ /* ADSP optimizations */
+ DECLARE_READ16_MEMBER( hdadsp_speedup_r );
+ DECLARE_READ16_MEMBER( hdds3_speedup_r );
+
+
+ DECLARE_WRITE_LINE_MEMBER(hdds3sdsp_timer_enable_callback);
+ DECLARE_WRITE32_MEMBER(hdds3sdsp_serial_tx_callback);
+ DECLARE_READ32_MEMBER(hdds3sdsp_serial_rx_callback);
+
+ DECLARE_WRITE_LINE_MEMBER(hdds3xdsp_timer_enable_callback);
+ DECLARE_WRITE32_MEMBER(hdds3xdsp_serial_tx_callback);
+ DECLARE_READ32_MEMBER(hdds3xdsp_serial_rx_callback);
+protected:
required_device<cpu_device> m_maincpu;
required_device<tms34010_device> m_gsp;
optional_device<tms34010_device> m_msp;
@@ -63,13 +265,15 @@ public:
optional_device<mc68681_device> m_duartn68681;
UINT8 m_hd34010_host_access;
- UINT8 m_dsk_pio_access;
optional_shared_ptr<UINT16> m_msp_ram;
+
UINT16 * m_dsk_ram;
UINT16 * m_dsk_rom;
optional_device<eeprom_parallel_28xx_device> m_dsk_10c;
optional_device<eeprom_parallel_28xx_device> m_dsk_30c;
+ UINT8 m_dsk_pio_access;
+
UINT16 * m_m68k_slapstic_base;
UINT16 * m_m68k_sloop_alt_base;
@@ -140,7 +344,7 @@ public:
UINT16 m_som_memory[0x8000/2];
UINT16 * m_adsp_pgm_memory_word;
- UINT16 * m_ds3_sdata_memory;
+ optional_region_ptr<UINT16> m_ds3_sdata_memory;
UINT32 m_ds3_sdata_memory_size;
UINT8 m_ds3_gcmd;
@@ -204,8 +408,6 @@ public:
INT8 m_gfx_finescroll;
UINT8 m_gfx_palettebank;
virtual void update_interrupts();
- DECLARE_READ16_MEMBER(steeltal_dummy_r);
- DECLARE_READ32_MEMBER(rddsp_unmap_r);
void init_driver();
void init_multisync(int compact_inputs);
void init_adsp();
@@ -217,217 +419,33 @@ public:
void racedrivc_init_common(offs_t gsp_protection);
void steeltal_init_common(offs_t ds3_transfer_pc, int proto_sloop);
- void init_strtdriv(void);
-
- void init_harddriv(void);
-
- void init_harddrivc(void);
-
- void init_racedriv(void);
- void init_racedrivb1(void);
-
- void init_racedrivc(void);
- void init_racedrivc1(void);
-
- void init_hdrivair(void);
- void init_hdrivairp(void);
-
- void init_steeltal(void);
- void init_steeltal1(void);
- void init_steeltalp(void);
-
- void init_stunrun(void);
- void init_racedrivc_panorama_side();
-
- void init_video();
- INTERRUPT_GEN_MEMBER(hd68k_irq_gen);
- TIMER_CALLBACK_MEMBER(deferred_adsp_bank_switch);
- TIMER_CALLBACK_MEMBER(rddsp32_sync_cb);
required_device<mc68681_device> m_duart;
optional_device<asic65_device> m_asic65;
- DECLARE_WRITE_LINE_MEMBER(harddriv_duart_irq_handler);
-
- /*----------- defined in machine/harddriv.c -----------*/
-
- /* Driver/Multisync board */
- DECLARE_WRITE16_MEMBER( hd68k_irq_ack_w );
-
- DECLARE_READ16_MEMBER( hd68k_gsp_io_r );
- DECLARE_WRITE16_MEMBER( hd68k_gsp_io_w );
-
- DECLARE_READ16_MEMBER( hd68k_msp_io_r );
- DECLARE_WRITE16_MEMBER( hd68k_msp_io_w );
-
- DECLARE_READ16_MEMBER( hd68k_a80000_r );
- DECLARE_READ16_MEMBER( hd68k_port0_r );
- DECLARE_READ16_MEMBER( hd68k_adc8_r );
- DECLARE_READ16_MEMBER( hd68k_adc12_r );
- DECLARE_READ16_MEMBER( hdc68k_port1_r );
- DECLARE_READ16_MEMBER( hda68k_port1_r );
- DECLARE_READ16_MEMBER( hdc68k_wheel_r );
- DECLARE_READ16_MEMBER( hd68k_sound_reset_r );
-
- DECLARE_WRITE16_MEMBER( hd68k_adc_control_w );
- DECLARE_WRITE16_MEMBER( hd68k_wr0_write );
- DECLARE_WRITE16_MEMBER( hd68k_wr1_write );
- DECLARE_WRITE16_MEMBER( hd68k_wr2_write );
- DECLARE_WRITE16_MEMBER( hd68k_nwr_w );
- DECLARE_WRITE16_MEMBER( hdc68k_wheel_edge_reset_w );
-
- DECLARE_READ16_MEMBER( hd68k_zram_r );
- DECLARE_WRITE16_MEMBER( hd68k_zram_w );
-
- DECLARE_WRITE16_MEMBER( hdgsp_io_w );
-
- DECLARE_WRITE16_MEMBER( hdgsp_protection_w );
-
- DECLARE_WRITE_LINE_MEMBER( hdgsp_irq_gen );
- DECLARE_WRITE_LINE_MEMBER( hdmsp_irq_gen );
-
- /* ADSP board */
- DECLARE_READ16_MEMBER( hd68k_adsp_program_r );
- DECLARE_WRITE16_MEMBER( hd68k_adsp_program_w );
-
- DECLARE_READ16_MEMBER( hd68k_adsp_data_r );
- DECLARE_WRITE16_MEMBER( hd68k_adsp_data_w );
-
- DECLARE_READ16_MEMBER( hd68k_adsp_buffer_r );
- DECLARE_WRITE16_MEMBER( hd68k_adsp_buffer_w );
-
- DECLARE_WRITE16_MEMBER( hd68k_adsp_control_w );
- DECLARE_WRITE16_MEMBER( hd68k_adsp_irq_clear_w );
- DECLARE_READ16_MEMBER( hd68k_adsp_irq_state_r );
-
- DECLARE_READ16_MEMBER( hdadsp_special_r );
- DECLARE_WRITE16_MEMBER( hdadsp_special_w );
/* DS III/IV board */
void update_ds3_irq();
void update_ds3_sirq();
- DECLARE_WRITE16_MEMBER( hd68k_ds3_control_w );
- DECLARE_READ16_MEMBER( hd68k_ds3_girq_state_r );
-
- DECLARE_READ16_MEMBER( hd68k_ds3_gdata_r );
- DECLARE_WRITE16_MEMBER( hd68k_ds3_gdata_w );
-
- DECLARE_READ16_MEMBER( hdds3_special_r );
- DECLARE_WRITE16_MEMBER( hdds3_special_w );
- DECLARE_READ16_MEMBER( hdds3_control_r );
- DECLARE_WRITE16_MEMBER( hdds3_control_w );
-
- DECLARE_READ16_MEMBER( hd68k_ds3_program_r );
- DECLARE_WRITE16_MEMBER( hd68k_ds3_program_w );
-
- DECLARE_READ16_MEMBER( hd68k_ds3_sdata_r );
- DECLARE_WRITE16_MEMBER( hd68k_ds3_sdata_w );
- DECLARE_WRITE16_MEMBER( hd68k_ds3_sirq_clear_w );
- DECLARE_READ16_MEMBER( hd68k_ds3_sirq_state_r );
-
- DECLARE_READ16_MEMBER( hdds3_sdsp_special_r );
- DECLARE_WRITE16_MEMBER( hdds3_sdsp_special_w );
-
- DECLARE_READ16_MEMBER( hdds3_sdsp_control_r );
- DECLARE_WRITE16_MEMBER( hdds3_sdsp_control_w );
- DECLARE_READ16_MEMBER( hdds3_xdsp_control_r );
- DECLARE_WRITE16_MEMBER( hdds3_xdsp_control_w );
-
void hdds3sdsp_reset_timer();
void hdds3xdsp_reset_timer();
- TIMER_CALLBACK_MEMBER( xsdp_sport1_irq_off_callback );
-
- /* DSK board */
- DECLARE_WRITE16_MEMBER( hd68k_dsk_control_w );
- DECLARE_READ16_MEMBER( hd68k_dsk_ram_r );
- DECLARE_WRITE16_MEMBER( hd68k_dsk_ram_w );
- DECLARE_READ16_MEMBER( hd68k_dsk_small_rom_r );
- DECLARE_READ16_MEMBER( hd68k_dsk_rom_r );
- DECLARE_WRITE16_MEMBER( hd68k_dsk_dsp32_w );
- DECLARE_READ16_MEMBER( hd68k_dsk_dsp32_r );
- DECLARE_WRITE32_MEMBER( rddsp32_sync0_w );
- DECLARE_WRITE32_MEMBER( rddsp32_sync1_w );
-
- /* DSPCOM board */
- DECLARE_WRITE16_MEMBER( hddspcom_control_w );
-
- DECLARE_WRITE16_MEMBER( rd68k_slapstic_w );
- DECLARE_READ16_MEMBER( rd68k_slapstic_r );
-
/* Game-specific protection */
int st68k_sloop_tweak(offs_t offset);
- DECLARE_WRITE16_MEMBER( st68k_sloop_w );
- DECLARE_READ16_MEMBER( st68k_sloop_r );
- DECLARE_READ16_MEMBER( st68k_sloop_alt_r );
int st68k_protosloop_tweak(offs_t offset);
- DECLARE_WRITE16_MEMBER( st68k_protosloop_w );
- DECLARE_READ16_MEMBER( st68k_protosloop_r );
-
- /* GSP optimizations */
- DECLARE_READ16_MEMBER( hdgsp_speedup_r );
- DECLARE_WRITE16_MEMBER( hdgsp_speedup1_w );
- DECLARE_WRITE16_MEMBER( hdgsp_speedup2_w );
- DECLARE_READ16_MEMBER( rdgsp_speedup1_r );
- DECLARE_WRITE16_MEMBER( rdgsp_speedup1_w );
-
- /* MSP optimizations */
- DECLARE_READ16_MEMBER( hdmsp_speedup_r );
- DECLARE_WRITE16_MEMBER( hdmsp_speedup_w );
-
- /* ADSP optimizations */
- DECLARE_READ16_MEMBER( hdadsp_speedup_r );
- DECLARE_READ16_MEMBER( hdds3_speedup_r );
-
-
- DECLARE_WRITE_LINE_MEMBER(hdds3sdsp_timer_enable_callback);
- DECLARE_WRITE32_MEMBER(hdds3sdsp_serial_tx_callback);
- DECLARE_READ32_MEMBER(hdds3sdsp_serial_rx_callback);
-
- DECLARE_WRITE_LINE_MEMBER(hdds3xdsp_timer_enable_callback);
- DECLARE_WRITE32_MEMBER(hdds3xdsp_serial_tx_callback);
- DECLARE_READ32_MEMBER(hdds3xdsp_serial_rx_callback);
/*----------- defined in video/harddriv.c -----------*/
- TMS340X0_TO_SHIFTREG_CB_MEMBER(hdgsp_write_to_shiftreg);
- TMS340X0_FROM_SHIFTREG_CB_MEMBER(hdgsp_read_from_shiftreg);
void update_palette_bank(int newbank);
- DECLARE_READ16_MEMBER( hdgsp_control_lo_r );
- DECLARE_WRITE16_MEMBER( hdgsp_control_lo_w );
- DECLARE_READ16_MEMBER( hdgsp_control_hi_r );
- DECLARE_WRITE16_MEMBER( hdgsp_control_hi_w );
-
- DECLARE_READ16_MEMBER( hdgsp_vram_2bpp_r );
- DECLARE_WRITE16_MEMBER( hdgsp_vram_1bpp_w );
- DECLARE_WRITE16_MEMBER( hdgsp_vram_2bpp_w );
-
inline void gsp_palette_change(int offset);
- DECLARE_READ16_MEMBER( hdgsp_paletteram_lo_r );
- DECLARE_WRITE16_MEMBER( hdgsp_paletteram_lo_w );
- DECLARE_READ16_MEMBER( hdgsp_paletteram_hi_r );
- DECLARE_WRITE16_MEMBER( hdgsp_paletteram_hi_w );
-
- /* DSK board */
- DECLARE_WRITE32_MEMBER(hddsk_update_pif);
-
- /* DS III/IV board */
- TIMER_DEVICE_CALLBACK_MEMBER( ds3sdsp_internal_timer_callback );
- TIMER_DEVICE_CALLBACK_MEMBER( ds3xdsp_internal_timer_callback );
-
- TMS340X0_SCANLINE_IND16_CB_MEMBER(scanline_driver);
- TMS340X0_SCANLINE_IND16_CB_MEMBER(scanline_multisync);
-
UINT8 m_sound_int_state;
UINT8 m_video_int_state;
optional_device<palette_device> m_palette;
int get_hblank(screen_device &screen) const { return (screen.hpos() > (screen.width() * 9 / 10)); }
- WRITE16_MEMBER( watchdog_reset16_w );
- INTERRUPT_GEN_MEMBER(video_int_gen);
- DECLARE_WRITE_LINE_MEMBER(sound_int_write_line);
optional_device<atari_slapstic_device> m_slapstic_device;
+
protected:
//virtual machine_config_constructor device_mconfig_additions() const;
virtual void device_start() override;
diff --git a/src/mame/includes/hh_tms1k.h b/src/mame/includes/hh_tms1k.h
index 4a7ccb99467..0551bc8e17f 100644
--- a/src/mame/includes/hh_tms1k.h
+++ b/src/mame/includes/hh_tms1k.h
@@ -60,6 +60,7 @@ public:
TIMER_DEVICE_CALLBACK_MEMBER(display_decay_tick);
void display_update();
void set_display_size(int maxx, int maxy);
+ void set_display_segmask(UINT32 digits, UINT32 mask);
void display_matrix(int maxx, int maxy, UINT32 setx, UINT32 sety);
void display_matrix_seg(int maxx, int maxy, UINT32 setx, UINT32 sety, UINT16 segmask);
diff --git a/src/mame/includes/jackal.h b/src/mame/includes/jackal.h
index 84f1da6eebe..0249cde4bbd 100644
--- a/src/mame/includes/jackal.h
+++ b/src/mame/includes/jackal.h
@@ -1,5 +1,6 @@
-// license:???
-// copyright-holders:Kenneth Lin
+// license:BSD-3-Clause
+// copyright-holders:Curt Coder
+// thanks-to:Kenneth Lin (original driver author)
#define MASTER_CLOCK XTAL_18_432MHz
#define SOUND_CLOCK XTAL_3_579545MHz
diff --git a/src/mame/includes/jaguar.h b/src/mame/includes/jaguar.h
index cbee2eafd21..ed48210795b 100644
--- a/src/mame/includes/jaguar.h
+++ b/src/mame/includes/jaguar.h
@@ -43,6 +43,7 @@ public:
m_shared_ram(*this, "sharedram"),
m_gpu_ram(*this, "gpuram"),
m_gpu_clut(*this, "gpuclut"),
+ m_romboard_region(*this, "romboard"),
m_is_r3000(false),
m_is_cojag(false),
m_hacks_enabled(false),
@@ -83,6 +84,7 @@ public:
required_shared_ptr<UINT32> m_shared_ram;
required_shared_ptr<UINT32> m_gpu_ram;
required_shared_ptr<UINT32> m_gpu_clut;
+ optional_memory_region m_romboard_region;
// configuration
bool m_is_r3000;
diff --git a/src/mame/includes/kaneko16.h b/src/mame/includes/kaneko16.h
index cc8ae0ed4dd..fa80cab978a 100644
--- a/src/mame/includes/kaneko16.h
+++ b/src/mame/includes/kaneko16.h
@@ -96,7 +96,7 @@ public:
TIMER_DEVICE_CALLBACK_MEMBER(shogwarr_interrupt);
template<class _BitmapClass>
- void kaneko16_fill_bitmap(palette_device* palette, _BitmapClass &bitmap, const rectangle &cliprect);
+ void kaneko16_fill_bitmap(_BitmapClass &bitmap, const rectangle &cliprect);
void kaneko16_common_oki_bank_w( const char *bankname, const char* tag, int bank, size_t fixedsize, size_t bankedsize );
void kaneko16_unscramble_tiles(const char *region);
diff --git a/src/mame/includes/liberatr.h b/src/mame/includes/liberatr.h
index 39e3c11b967..2f71c14af23 100644
--- a/src/mame/includes/liberatr.h
+++ b/src/mame/includes/liberatr.h
@@ -7,14 +7,18 @@
*************************************************************************/
#include "cpu/m6502/m6502.h"
-#include "machine/atarigen.h"
+#include "machine/er2055.h"
#include "sound/pokey.h"
-class liberatr_state : public atarigen_state
+class liberatr_state : public driver_device
{
public:
liberatr_state(const machine_config &mconfig, device_type type, const char *tag)
- : atarigen_state(mconfig, type, tag),
+ : driver_device(mconfig, type, tag),
+ m_earom(*this, "earom"),
+ m_earom_data(0),
+ m_earom_control(0),
+ m_screen(*this, "screen"),
m_base_ram(*this, "base_ram"),
m_planet_frame(*this, "planet_frame"),
m_planet_select(*this, "planet_select"),
@@ -35,11 +39,20 @@ public:
UINT32 screen_update(screen_device &screen, bitmap_rgb32 &bitmap, const rectangle &cliprect);
+ // early raster EAROM interface
+ DECLARE_READ8_MEMBER( earom_r );
+ DECLARE_WRITE8_MEMBER( earom_w );
+ DECLARE_WRITE8_MEMBER( earom_control_w );
+
protected:
virtual void machine_start() override;
+ virtual void machine_reset() override;
virtual void video_start() override;
- virtual void update_interrupts() override { }
+ // vector and early raster EAROM interface
+ required_device<er2055_device> m_earom;
+ UINT8 m_earom_data;
+ UINT8 m_earom_control;
struct planet;
@@ -48,6 +61,7 @@ protected:
void draw_planet(bitmap_rgb32 &bitmap, pen_t *pens);
void draw_bitmap(bitmap_rgb32 &bitmap, pen_t *pens);
+ required_device<screen_device> m_screen;
required_shared_ptr<UINT8> m_base_ram;
required_shared_ptr<UINT8> m_planet_frame;
required_shared_ptr<UINT8> m_planet_select;
diff --git a/src/mame/includes/m107.h b/src/mame/includes/m107.h
index f34df43c638..ffdbd28f911 100644
--- a/src/mame/includes/m107.h
+++ b/src/mame/includes/m107.h
@@ -18,16 +18,18 @@ class m107_state : public driver_device
{
public:
m107_state(const machine_config &mconfig, device_type type, const char *tag)
- : driver_device(mconfig, type, tag),
- m_maincpu(*this, "maincpu"),
- m_soundcpu(*this, "soundcpu"),
- m_gfxdecode(*this, "gfxdecode"),
- m_screen(*this, "screen"),
- m_palette(*this, "palette"),
- m_spriteram(*this, "spriteram"),
- m_vram_data(*this, "vram_data"),
- m_upd71059c(*this, "upd71059c")
- { }
+ : driver_device(mconfig, type, tag)
+ , m_maincpu(*this, "maincpu")
+ , m_soundcpu(*this, "soundcpu")
+ , m_gfxdecode(*this, "gfxdecode")
+ , m_screen(*this, "screen")
+ , m_palette(*this, "palette")
+ , m_spriteram(*this, "spriteram")
+ , m_vram_data(*this, "vram_data")
+ , m_upd71059c(*this, "upd71059c")
+ , m_user1_ptr(*this, "user1")
+ {
+ }
required_device<cpu_device> m_maincpu;
required_device<cpu_device> m_soundcpu;
@@ -38,6 +40,7 @@ public:
required_shared_ptr<UINT16> m_spriteram;
required_shared_ptr<UINT16> m_vram_data;
required_device<pic8259_device> m_upd71059c;
+ optional_region_ptr<UINT8> m_user1_ptr;
// driver init
UINT8 m_spritesystem;
diff --git a/src/mame/includes/m58.h b/src/mame/includes/m58.h
index 6254d3e86d5..26af9956764 100644
--- a/src/mame/includes/m58.h
+++ b/src/mame/includes/m58.h
@@ -1,6 +1,12 @@
// license:BSD-3-Clause
// copyright-holders:Lee Taylor
// thanks-to:John Clegg
+/****************************************************************************
+
+ Irem M58 hardware
+
+****************************************************************************/
+
class m58_state : public driver_device
{
public:
@@ -15,7 +21,8 @@ public:
m_scroll_x_low(*this, "scroll_x_low"),
m_scroll_x_high(*this, "scroll_x_high"),
m_scroll_y_low(*this, "scroll_y_low"),
- m_score_panel_disabled(*this, "score_disable") { }
+ m_score_panel_disabled(*this, "score_disable")
+ { }
/* devices */
required_device<cpu_device> m_maincpu;
@@ -32,14 +39,13 @@ public:
required_shared_ptr<UINT8> m_score_panel_disabled;
/* video-related */
- tilemap_t* m_bg_tilemap;
- bitmap_ind16 m_scroll_panel_bitmap;
+ tilemap_t* m_bg_tilemap;
+ bitmap_ind16 m_scroll_panel_bitmap;
DECLARE_WRITE8_MEMBER(videoram_w);
DECLARE_WRITE8_MEMBER(scroll_panel_w);
DECLARE_WRITE8_MEMBER(flipscreen_w);
- DECLARE_DRIVER_INIT(yard85);
virtual void video_start() override;
DECLARE_PALETTE_INIT(m58);
diff --git a/src/mame/includes/megasys1.h b/src/mame/includes/megasys1.h
index 414b670cc36..65694249f8f 100644
--- a/src/mame/includes/megasys1.h
+++ b/src/mame/includes/megasys1.h
@@ -65,8 +65,8 @@ public:
bitmap_ind16 m_sprite_buffer_bitmap;
UINT16 *m_spriteram;
- UINT16 m_ip_select;
- UINT16 m_ip_select_values[5];
+ UINT16 m_ip_select_values[7];
+ UINT16 m_ip_latched;
UINT8 m_ignore_oki_status;
UINT16 m_protection_val;
int m_scrollx[3];
diff --git a/src/mame/includes/msisaac.h b/src/mame/includes/msisaac.h
index d2f94f51e41..23453743854 100644
--- a/src/mame/includes/msisaac.h
+++ b/src/mame/includes/msisaac.h
@@ -1,4 +1,4 @@
-// license:???
+// license:GPL-2.0+
// copyright-holders:Jarek Burczynski
#include "machine/buggychl.h"
#include "sound/msm5232.h"
diff --git a/src/mame/includes/n64.h b/src/mame/includes/n64.h
index 783efd70a12..d22df5fa7e4 100644
--- a/src/mame/includes/n64.h
+++ b/src/mame/includes/n64.h
@@ -4,10 +4,9 @@
#define _INCLUDES_N64_H_
#include "cpu/rsp/rsp.h"
+#include "cpu/mips/mips3.h"
#include "sound/dmadac.h"
-/*----------- forward decls -----------*/
-
/*----------- driver state -----------*/
class n64_rdp;
@@ -16,11 +15,15 @@ class n64_state : public driver_device
{
public:
n64_state(const machine_config &mconfig, device_type type, const char *tag)
- : driver_device(mconfig, type, tag) ,
- m_maincpu(*this, "maincpu") { }
-
- /* video-related */
- n64_rdp *m_rdp;
+ : driver_device(mconfig, type, tag)
+ , m_vr4300(*this, "maincpu")
+ , m_rsp(*this, "rsp")
+ , m_sram(*this, "sram")
+ , m_rdram(*this, "rdram")
+ , m_rsp_imem(*this, "rsp_imem")
+ , m_rsp_dmem(*this, "rsp_dmem")
+ {
+ }
virtual void machine_start() override;
virtual void machine_reset() override;
@@ -29,7 +32,25 @@ public:
UINT32 screen_update_n64(screen_device &screen, bitmap_rgb32 &bitmap, const rectangle &cliprect);
void screen_eof_n64(screen_device &screen, bool state);
- required_device<cpu_device> m_maincpu;
+
+ // Getters
+ n64_rdp* rdp() { return m_rdp; }
+ UINT32* rdram() { return m_rdram; }
+ UINT32* sram() { return m_sram; }
+ UINT32* rsp_imem() { return m_rsp_imem; }
+ UINT32* rsp_dmem() { return m_rsp_dmem; }
+
+protected:
+ required_device<mips3_device> m_vr4300;
+ required_device<rsp_device> m_rsp;
+
+ optional_shared_ptr<UINT32> m_sram;
+ required_shared_ptr<UINT32> m_rdram;
+ required_shared_ptr<UINT32> m_rsp_imem;
+ required_shared_ptr<UINT32> m_rsp_dmem;
+
+ /* video-related */
+ n64_rdp *m_rdp;
};
/*----------- devices -----------*/
@@ -98,7 +119,6 @@ public:
void ai_timer_tick();
void pi_dma_tick();
void si_dma_tick();
- void vi_scanline_tick();
void reset_tick();
void video_update(bitmap_rgb32 &bitmap);
@@ -137,15 +157,22 @@ public:
void poll_reset_button(bool button);
UINT32 dp_clock;
+
protected:
// device-level overrides
virtual void device_start() override;
virtual void device_reset() override;
private:
- address_space *mem_map;
- device_t *maincpu;
- device_t *rspcpu;
+ n64_state* m_n64;
+ address_space *m_mem_map;
+ mips3_device *m_vr4300;
+ rsp_device *m_rsp;
+
+ UINT32 *m_rdram;
+ UINT32 *m_sram;
+ UINT32 *m_rsp_imem;
+ UINT32 *m_rsp_dmem;
void clear_rcp_interrupt(int interrupt);
@@ -370,13 +397,6 @@ const unsigned int ddStartOffset[16] =
{0x0,0x5F15E0,0xB79D00,0x10801A0,0x1523720,0x1963D80,0x1D414C0,0x20BBCE0,
0x23196E0,0x28A1E00,0x2DF5DC0,0x3299340,0x36D99A0,0x3AB70E0,0x3E31900,0x4149200};
-
-
-extern UINT32 *n64_sram;
-extern UINT32 *rdram;
-extern UINT32 *rsp_imem;
-extern UINT32 *rsp_dmem;
-
extern void dp_full_sync(running_machine &machine);
#endif
diff --git a/src/mame/includes/namcos86.h b/src/mame/includes/namcos86.h
index 5842c5c570e..a9f206c5fd7 100644
--- a/src/mame/includes/namcos86.h
+++ b/src/mame/includes/namcos86.h
@@ -6,15 +6,18 @@ class namcos86_state : public driver_device
{
public:
namcos86_state(const machine_config &mconfig, device_type type, const char *tag)
- : driver_device(mconfig, type, tag),
- m_cpu1(*this, "cpu1"),
- m_cpu2(*this, "cpu2"),
- m_cus30(*this, "namco"),
- m_gfxdecode(*this, "gfxdecode"),
- m_palette(*this, "palette"),
- m_rthunder_videoram1(*this, "videoram1"),
- m_rthunder_videoram2(*this, "videoram2"),
- m_rthunder_spriteram(*this, "spriteram") { }
+ : driver_device(mconfig, type, tag)
+ , m_cpu1(*this, "cpu1")
+ , m_cpu2(*this, "cpu2")
+ , m_cus30(*this, "namco")
+ , m_gfxdecode(*this, "gfxdecode")
+ , m_palette(*this, "palette")
+ , m_rthunder_videoram1(*this, "videoram1")
+ , m_rthunder_videoram2(*this, "videoram2")
+ , m_rthunder_spriteram(*this, "spriteram")
+ , m_user1_ptr(*this, "user1")
+ {
+ }
required_device<cpu_device> m_cpu1;
required_device<cpu_device> m_cpu2;
@@ -24,6 +27,7 @@ public:
required_shared_ptr<UINT8> m_rthunder_videoram1;
required_shared_ptr<UINT8> m_rthunder_videoram2;
required_shared_ptr<UINT8> m_rthunder_spriteram;
+ optional_region_ptr<UINT8> m_user1_ptr;
UINT8 *m_spriteram;
int m_wdog;
diff --git a/src/mame/includes/nb1414m4.h b/src/mame/includes/nb1414m4.h
index 20e392f6f2e..b00bdf6ae2e 100644
--- a/src/mame/includes/nb1414m4.h
+++ b/src/mame/includes/nb1414m4.h
@@ -24,7 +24,7 @@ private:
void _0600(UINT8 is2p, UINT8 *vram);
void _0e00(UINT16 mcu_cmd, UINT8 *vram);
- UINT8 *m_data;
+ optional_region_ptr<UINT8> m_data;
};
diff --git a/src/mame/includes/nbmj8891.h b/src/mame/includes/nbmj8891.h
index 6c636e289cb..0c5969010f6 100644
--- a/src/mame/includes/nbmj8891.h
+++ b/src/mame/includes/nbmj8891.h
@@ -11,16 +11,20 @@ public:
};
nbmj8891_state(const machine_config &mconfig, device_type type, const char *tag)
- : driver_device(mconfig, type, tag) ,
- m_maincpu(*this, "maincpu"),
- m_nb1413m3(*this, "nb1413m3"),
- m_screen(*this, "screen"),
- m_palette(*this, "palette") { }
+ : driver_device(mconfig, type, tag)
+ , m_maincpu(*this, "maincpu")
+ , m_nb1413m3(*this, "nb1413m3")
+ , m_screen(*this, "screen")
+ , m_palette(*this, "palette")
+ , m_clut_ptr(*this, "protection")
+ {
+ }
required_device<cpu_device> m_maincpu;
required_device<nb1413m3_device> m_nb1413m3;
required_device<screen_device> m_screen;
required_device<palette_device> m_palette;
+ optional_region_ptr<UINT8> m_clut_ptr;
int m_scrolly;
int m_blitter_destx;
diff --git a/src/mame/includes/ninjakd2.h b/src/mame/includes/ninjakd2.h
index 45f35a3d42c..39a95953216 100644
--- a/src/mame/includes/ninjakd2.h
+++ b/src/mame/includes/ninjakd2.h
@@ -16,6 +16,7 @@ public:
m_maincpu(*this,"maincpu"),
m_soundcpu(*this, "soundcpu"),
m_pcm(*this, "pcm"),
+ m_pcm_region(*this, "pcm"),
m_bg_videoram(*this, "bg_videoram"),
m_fg_videoram(*this, "fg_videoram"),
m_spriteram(*this, "spriteram"),
@@ -28,6 +29,7 @@ public:
required_device<cpu_device> m_maincpu;
required_device<cpu_device> m_soundcpu;
optional_device<samples_device> m_pcm;
+ optional_memory_region m_pcm_region;
optional_shared_ptr<UINT8> m_bg_videoram;
required_shared_ptr<UINT8> m_fg_videoram;
required_shared_ptr<UINT8> m_spriteram;
diff --git a/src/mame/includes/opwolf.h b/src/mame/includes/opwolf.h
index e93ab442abd..d8cffe9b213 100644
--- a/src/mame/includes/opwolf.h
+++ b/src/mame/includes/opwolf.h
@@ -1,4 +1,4 @@
-// license:???
+// license:GPL-2.0+
// copyright-holders:David Graves, Jarek Burczynski
/*************************************************************************
diff --git a/src/mame/includes/overdriv.h b/src/mame/includes/overdriv.h
index ad0cceba7a7..9b5cc1b2cd2 100644
--- a/src/mame/includes/overdriv.h
+++ b/src/mame/includes/overdriv.h
@@ -24,7 +24,6 @@ public:
m_k053246(*this, "k053246"),
m_k053251(*this, "k053251"),
m_k053252(*this, "k053252"),
- m_sprram(*this, "sprram"),
m_screen(*this, "screen")
{ }
@@ -45,22 +44,25 @@ public:
required_device<k053247_device> m_k053246;
required_device<k053251_device> m_k053251;
required_device<k053252_device> m_k053252;
- required_shared_ptr<UINT16> m_sprram;
required_device<screen_device> m_screen;
DECLARE_WRITE16_MEMBER(eeprom_w);
DECLARE_WRITE16_MEMBER(cpuA_ctrl_w);
DECLARE_READ16_MEMBER(cpuB_ctrl_r);
DECLARE_WRITE16_MEMBER(cpuB_ctrl_w);
DECLARE_WRITE16_MEMBER(overdriv_soundirq_w);
- DECLARE_WRITE16_MEMBER(overdriv_cpuB_irq_x_w);
- DECLARE_WRITE16_MEMBER(overdriv_cpuB_irq_y_w);
+ DECLARE_WRITE8_MEMBER(sound_ack_w);
+ DECLARE_WRITE16_MEMBER(slave_irq4_assert_w);
+ DECLARE_WRITE16_MEMBER(slave_irq5_assert_w);
+ DECLARE_WRITE16_MEMBER(objdma_w);
+ TIMER_CALLBACK_MEMBER(objdma_end_cb);
+
virtual void machine_start() override;
virtual void machine_reset() override;
UINT32 screen_update_overdriv(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
- INTERRUPT_GEN_MEMBER(cpuB_interrupt);
+ //INTERRUPT_GEN_MEMBER(cpuB_interrupt);
TIMER_DEVICE_CALLBACK_MEMBER(overdriv_cpuA_scanline);
-
- DECLARE_WRITE16_MEMBER( overdriv_k053246_word_w );
+ int m_fake_timer;
+
K051316_CB_MEMBER(zoom_callback_1);
K051316_CB_MEMBER(zoom_callback_2);
K053246_CB_MEMBER(sprite_callback);
diff --git a/src/mame/includes/p2000t.h b/src/mame/includes/p2000t.h
index 0548f661356..93ec179ea73 100644
--- a/src/mame/includes/p2000t.h
+++ b/src/mame/includes/p2000t.h
@@ -1,4 +1,4 @@
-// license:???
+// license:BSD-3-Clause
// copyright-holders:Paul Daniels
/*****************************************************************************
*
diff --git a/src/mame/includes/phoenix.h b/src/mame/includes/phoenix.h
index 0f423efea69..2ceca77c4f6 100644
--- a/src/mame/includes/phoenix.h
+++ b/src/mame/includes/phoenix.h
@@ -1,4 +1,4 @@
-// license:???
+// license:BSD-3-Clause
// copyright-holders:Richard Davies
#include "audio/pleiads.h"
#include "sound/discrete.h"
diff --git a/src/mame/includes/playch10.h b/src/mame/includes/playch10.h
index c69f07cd514..a97de718bd3 100644
--- a/src/mame/includes/playch10.h
+++ b/src/mame/includes/playch10.h
@@ -13,16 +13,18 @@ class playch10_state : public driver_device
{
public:
playch10_state(const machine_config &mconfig, device_type type, const char *tag)
- : driver_device(mconfig, type, tag),
- m_maincpu(*this, "maincpu"),
- m_ppu(*this, "ppu"),
- m_rp5h01(*this, "rp5h01"),
- m_ram_8w(*this, "ram_8w"),
- m_videoram(*this, "videoram"),
- m_timedata(*this, "timedata"),
- m_work_ram(*this, "work_ram"),
- m_gfxdecode(*this, "gfxdecode")
- { }
+ : driver_device(mconfig, type, tag)
+ , m_maincpu(*this, "maincpu")
+ , m_ppu(*this, "ppu")
+ , m_rp5h01(*this, "rp5h01")
+ , m_ram_8w(*this, "ram_8w")
+ , m_videoram(*this, "videoram")
+ , m_timedata(*this, "timedata")
+ , m_work_ram(*this, "work_ram")
+ , m_gfxdecode(*this, "gfxdecode")
+ , m_vrom_region(*this, "gfx2")
+ {
+ }
required_device<cpu_device> m_maincpu;
required_device<ppu2c0x_device> m_ppu;
@@ -34,6 +36,8 @@ public:
required_shared_ptr<UINT8> m_work_ram;
required_device<gfxdecode_device> m_gfxdecode;
+ optional_memory_region m_vrom_region;
+
int m_up_8w;
int m_pc10_nmi_enable;
int m_pc10_dog_di;
diff --git a/src/mame/includes/polyplay.h b/src/mame/includes/polyplay.h
index fd223ee5026..cc0b31abb6f 100644
--- a/src/mame/includes/polyplay.h
+++ b/src/mame/includes/polyplay.h
@@ -1,4 +1,4 @@
-// license:???
+// license:BSD-3-Clause
// copyright-holders:Martin Buchholz
#include "sound/samples.h"
diff --git a/src/mame/includes/popeye.h b/src/mame/includes/popeye.h
index c7eee33bf4d..f24304dbe3b 100644
--- a/src/mame/includes/popeye.h
+++ b/src/mame/includes/popeye.h
@@ -1,5 +1,6 @@
-// license:???
-// copyright-holders:Marc Lafontaine, Couriersud
+// license:BSD-3-Clause
+// copyright-holders:Nicola Salmoria, Couriersud
+// thanks-to: Marc Lafontaine
class popeye_state : public driver_device
{
public:
diff --git a/src/mame/includes/qix.h b/src/mame/includes/qix.h
index 9ac434a1f85..0372610aec1 100644
--- a/src/mame/includes/qix.h
+++ b/src/mame/includes/qix.h
@@ -1,11 +1,10 @@
-// license:???
-// copyright-holders:John Butler, Ed Mueller, Aaron Giles
+// license:BSD-3-Clause
+// copyright-holders:Aaron Giles, Zsolt Vasvari
+// thanks-to: John Butler, Ed Mueller
/***************************************************************************
Taito Qix hardware
- driver by John Butler, Ed Mueller, Aaron Giles
-
***************************************************************************/
#include "cpu/m6809/m6809.h"
diff --git a/src/mame/includes/rampart.h b/src/mame/includes/rampart.h
index d7e62bc9b39..964befa8056 100644
--- a/src/mame/includes/rampart.h
+++ b/src/mame/includes/rampart.h
@@ -8,6 +8,7 @@
#include "machine/atarigen.h"
#include "sound/okim6295.h"
+#include "sound/2413intf.h"
#include "video/atarimo.h"
class rampart_state : public atarigen_state
@@ -17,10 +18,12 @@ public:
: atarigen_state(mconfig, type, tag),
m_mob(*this, "mob"),
m_oki(*this, "oki"),
+ m_ym2413(*this, "ymsnd"),
m_bitmap(*this, "bitmap") { }
required_device<atari_motion_objects_device> m_mob;
required_device<okim6295_device> m_oki;
+ required_device<ym2413_device> m_ym2413;
required_shared_ptr<UINT16> m_bitmap;
diff --git a/src/mame/includes/rastan.h b/src/mame/includes/rastan.h
index 4d4771a407d..177579c0ef2 100644
--- a/src/mame/includes/rastan.h
+++ b/src/mame/includes/rastan.h
@@ -1,4 +1,4 @@
-// license:???
+// license:GPL-2.0+
// copyright-holders:Jarek Burczynski
/*************************************************************************
diff --git a/src/mame/includes/relief.h b/src/mame/includes/relief.h
index cae4ad37e3d..7d80ef07569 100644
--- a/src/mame/includes/relief.h
+++ b/src/mame/includes/relief.h
@@ -8,6 +8,8 @@
#include "machine/atarigen.h"
#include "video/atarimo.h"
+#include "sound/okim6295.h"
+#include "sound/2413intf.h"
class relief_state : public atarigen_state
{
@@ -15,10 +17,14 @@ public:
relief_state(const machine_config &mconfig, device_type type, const char *tag)
: atarigen_state(mconfig, type, tag),
m_vad(*this, "vad"),
+ m_oki(*this, "oki"),
+ m_ym2413(*this, "ymsnd"),
m_okibank(*this, "okibank")
{ }
required_device<atari_vad_device> m_vad;
+ required_device<okim6295_device> m_oki;
+ required_device<ym2413_device> m_ym2413;
required_memory_bank m_okibank;
UINT8 m_ym2413_volume;
diff --git a/src/mame/includes/segas16b.h b/src/mame/includes/segas16b.h
index 498c4fb86d1..28f783dbd15 100644
--- a/src/mame/includes/segas16b.h
+++ b/src/mame/includes/segas16b.h
@@ -187,7 +187,7 @@ protected:
optional_device<sega_315_5250_compare_timer_device> m_cmptimer_1;
optional_device<sega_315_5250_compare_timer_device> m_cmptimer_2;
required_device<nvram_device> m_nvram;
- required_device<sega_sys16b_sprite_device> m_sprites;
+ optional_device<sega_sys16b_sprite_device> m_sprites;
required_device<segaic16_video_device> m_segaic16vid;
// memory pointers
diff --git a/src/mame/includes/segas18.h b/src/mame/includes/segas18.h
index 44e66be4fb4..5efbcfea648 100644
--- a/src/mame/includes/segas18.h
+++ b/src/mame/includes/segas18.h
@@ -115,6 +115,7 @@ protected:
};
// device overrides
+ virtual void machine_start() override;
virtual void machine_reset() override;
virtual void video_start() override;
virtual void device_timer(emu_timer &timer, device_timer_id id, int param, void *ptr) override;
diff --git a/src/mame/includes/segas24.h b/src/mame/includes/segas24.h
index f2633b12632..8a44799d2bc 100644
--- a/src/mame/includes/segas24.h
+++ b/src/mame/includes/segas24.h
@@ -12,14 +12,16 @@ class segas24_state : public driver_device
{
public:
segas24_state(const machine_config &mconfig, device_type type, const char *tag)
- : driver_device(mconfig, type, tag) ,
- m_maincpu(*this, "maincpu"),
- m_subcpu(*this, "subcpu"),
- m_dac(*this, "dac"),
- m_screen(*this, "screen"),
- m_palette(*this, "palette"),
- m_generic_paletteram_16(*this, "paletteram")
- { }
+ : driver_device(mconfig, type, tag)
+ , m_maincpu(*this, "maincpu")
+ , m_subcpu(*this, "subcpu")
+ , m_dac(*this, "dac")
+ , m_screen(*this, "screen")
+ , m_palette(*this, "palette")
+ , m_generic_paletteram_16(*this, "paletteram")
+ , m_romboard(*this, "romboard")
+ {
+ }
required_device<cpu_device> m_maincpu;
required_device<cpu_device> m_subcpu;
@@ -27,6 +29,7 @@ public:
required_device<screen_device> m_screen;
required_device<palette_device> m_palette;
required_shared_ptr<UINT16> m_generic_paletteram_16;
+ optional_memory_region m_romboard;
static const UINT8 mahmajn_mlt[8];
static const UINT8 mahmajn2_mlt[8];
diff --git a/src/mame/includes/segaybd.h b/src/mame/includes/segaybd.h
index baf0b1d7c37..2fb72a602ee 100644
--- a/src/mame/includes/segaybd.h
+++ b/src/mame/includes/segaybd.h
@@ -26,7 +26,7 @@ public:
m_suby(*this, "suby"),
m_soundcpu(*this, "soundcpu"),
m_linkcpu(*this, "linkcpu"),
- m_bsprites(*this, "bsprites"),
+ m_bsprites(*this, "sprites"),
m_ysprites(*this, "ysprites"),
m_segaic16vid(*this, "segaic16vid"),
m_digital_ports(*this, digital_ports),
diff --git a/src/mame/includes/slapstic.h b/src/mame/includes/slapstic.h
index cfcfcce890e..27328fc4c04 100644
--- a/src/mame/includes/slapstic.h
+++ b/src/mame/includes/slapstic.h
@@ -23,8 +23,9 @@
extern const device_type SLAPSTIC;
-#define MCFG_SLAPSTIC_ADD(_tag) \
- MCFG_DEVICE_ADD(_tag, SLAPSTIC, 0)
+#define MCFG_SLAPSTIC_ADD(_tag, _chip) \
+ MCFG_DEVICE_ADD(_tag, SLAPSTIC, 0) \
+ MCFG_SLAPSTIC_NUM(_chip)
/*************************************
@@ -123,6 +124,9 @@ enum
};
+#define MCFG_SLAPSTIC_NUM(_chipnum) \
+ atari_slapstic_device::static_set_chipnum(*device, _chipnum);
+
#define MCFG_SLAPSTIC_68K_ACCESS(_type) \
atari_slapstic_device::static_set_access68k(*device, _type);
@@ -134,10 +138,10 @@ public:
// construction/destruction
atari_slapstic_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock);
- void slapstic_init(running_machine &machine, int chip);
- void slapstic_reset(void);
+ void slapstic_init();
+ void slapstic_reset();
- int slapstic_bank(void);
+ int slapstic_bank();
int slapstic_tweak(address_space &space, offs_t offset);
int alt2_kludge(address_space &space, offs_t offset);
@@ -148,6 +152,13 @@ public:
dev.access_68k = type;
}
+ static void static_set_chipnum(device_t &device, int chipnum)
+ {
+ atari_slapstic_device &dev = downcast<atari_slapstic_device &>(device);
+ dev.m_chipnum = chipnum;
+ }
+
+ int m_chipnum;
UINT8 state;
UINT8 current_bank;
@@ -168,6 +179,7 @@ public:
protected:
virtual void device_start() override;
virtual void device_reset() override;
+ virtual void device_validity_check(validity_checker &valid) const override;
private:
diff --git a/src/mame/includes/snk.h b/src/mame/includes/snk.h
index 7e6469d6f3b..81744602a36 100644
--- a/src/mame/includes/snk.h
+++ b/src/mame/includes/snk.h
@@ -185,6 +185,7 @@ public:
UINT32 screen_update_ikari(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
UINT32 screen_update_gwar(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
UINT32 screen_update_tdfever(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
+ UINT32 screen_update_fitegolf2(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
TIMER_CALLBACK_MEMBER(sgladiat_sndirq_update_callback);
TIMER_CALLBACK_MEMBER(sndirq_update_callback);
DECLARE_WRITE_LINE_MEMBER(ymirq_callback_2);
diff --git a/src/mame/includes/starwars.h b/src/mame/includes/starwars.h
index 6baec75153a..77c94f31c04 100644
--- a/src/mame/includes/starwars.h
+++ b/src/mame/includes/starwars.h
@@ -1,4 +1,4 @@
-// license:???
+// license:BSD-3-Clause
// copyright-holders:Steve Baines, Frank Palazzolo
/***************************************************************************
diff --git a/src/mame/includes/taito_b.h b/src/mame/includes/taito_b.h
index 9a317f2eea9..b8a4a3aa4e8 100644
--- a/src/mame/includes/taito_b.h
+++ b/src/mame/includes/taito_b.h
@@ -1,4 +1,4 @@
-// license:???
+// license:GPL-2.0+
// copyright-holders:Jarek Burczynski
#include "machine/mb87078.h"
#include "machine/taitoio.h"
diff --git a/src/mame/includes/tankbust.h b/src/mame/includes/tankbust.h
index aa1501e59d0..1eeda476258 100644
--- a/src/mame/includes/tankbust.h
+++ b/src/mame/includes/tankbust.h
@@ -1,4 +1,4 @@
-// license:???
+// license:GPL-2.0+
// copyright-holders:Jarek Burczynski
class tankbust_state : public driver_device
{
diff --git a/src/mame/includes/tp84.h b/src/mame/includes/tp84.h
index 928450edc0c..282f8287290 100644
--- a/src/mame/includes/tp84.h
+++ b/src/mame/includes/tp84.h
@@ -1,5 +1,5 @@
-// license:???
-// copyright-holders:Marc Lafontaine
+// license:BSD-3-Clause
+// copyright-holders:Aaron Giles
class tp84_state : public driver_device
{
public:
diff --git a/src/mame/includes/tubep.h b/src/mame/includes/tubep.h
index 5e86965aac6..9494d3c9299 100644
--- a/src/mame/includes/tubep.h
+++ b/src/mame/includes/tubep.h
@@ -1,4 +1,4 @@
-// license:???
+// license:GPL-2.0+
// copyright-holders:Jarek Burczynski
#include "sound/msm5205.h"
diff --git a/src/mame/includes/vicdual.h b/src/mame/includes/vicdual.h
index c0ae21c289a..64cec06b74e 100644
--- a/src/mame/includes/vicdual.h
+++ b/src/mame/includes/vicdual.h
@@ -63,6 +63,7 @@ public:
int m_port1State;
int m_port2State;
int m_psgData;
+ int m_psgBus;
emu_timer *m_frogs_croak_timer;
void coin_in();
@@ -110,13 +111,13 @@ public:
DECLARE_WRITE8_MEMBER( invho2_audio_w );
TIMER_CALLBACK_MEMBER( frogs_croak_callback );
-
/*----------- defined in audio/carnival.c -----------*/
DECLARE_WRITE8_MEMBER( carnival_audio_1_w );
DECLARE_WRITE8_MEMBER( carnival_audio_2_w );
DECLARE_READ8_MEMBER( carnival_music_port_t1_r );
DECLARE_WRITE8_MEMBER( carnival_music_port_1_w );
DECLARE_WRITE8_MEMBER( carnival_music_port_2_w );
+ void carnival_psg_latch(address_space &space);
/*----------- defined in audio/depthch.c -----------*/
DECLARE_WRITE8_MEMBER( depthch_audio_w );
diff --git a/src/mame/includes/vsnes.h b/src/mame/includes/vsnes.h
index 064919f66ff..08ecb2927aa 100644
--- a/src/mame/includes/vsnes.h
+++ b/src/mame/includes/vsnes.h
@@ -6,15 +6,17 @@ class vsnes_state : public driver_device
{
public:
vsnes_state(const machine_config &mconfig, device_type type, const char *tag)
- : driver_device(mconfig, type, tag),
- m_maincpu(*this, "maincpu"),
- m_subcpu(*this, "sub"),
- m_ppu1(*this, "ppu1"),
- m_ppu2(*this, "ppu2"),
- m_work_ram(*this, "work_ram"),
- m_work_ram_1(*this, "work_ram_1"),
- m_palette(*this, "palette")
- { }
+ : driver_device(mconfig, type, tag)
+ , m_maincpu(*this, "maincpu")
+ , m_subcpu(*this, "sub")
+ , m_ppu1(*this, "ppu1")
+ , m_ppu2(*this, "ppu2")
+ , m_work_ram(*this, "work_ram")
+ , m_work_ram_1(*this, "work_ram_1")
+ , m_palette(*this, "palette")
+ , m_gfx1_rom(*this, "gfx1")
+ {
+ }
required_device<cpu_device> m_maincpu;
optional_device<cpu_device> m_subcpu;
@@ -24,6 +26,9 @@ public:
required_shared_ptr<UINT8> m_work_ram;
optional_shared_ptr<UINT8> m_work_ram_1;
required_device<palette_device> m_palette;
+
+ optional_memory_region m_gfx1_rom;
+
int m_coin;
int m_do_vrom_bank;
int m_input_latch[4];
diff --git a/src/mame/includes/williams.h b/src/mame/includes/williams.h
index a647edc287d..ad211654cd6 100644
--- a/src/mame/includes/williams.h
+++ b/src/mame/includes/williams.h
@@ -1,5 +1,5 @@
-// license:???
-// copyright-holders:Michael Soderstrom, Marc LaFontaine, Aaron Giles
+// license:BSD-3-Clause
+// copyright-holders:Aaron Giles
/*************************************************************************
Driver for early Williams games
diff --git a/src/mame/includes/wolfpack.h b/src/mame/includes/wolfpack.h
index 59f513f3969..e1d4628eb86 100644
--- a/src/mame/includes/wolfpack.h
+++ b/src/mame/includes/wolfpack.h
@@ -1,5 +1,11 @@
// license:BSD-3-Clause
// copyright-holders:Stefan Jokisch
+/***************************************************************************
+
+ Atari Wolf Pack (prototype) driver
+
+***************************************************************************/
+
#include "sound/s14001a.h"
class wolfpack_state : public driver_device
@@ -17,10 +23,11 @@ public:
m_s14001a(*this, "speech"),
m_gfxdecode(*this, "gfxdecode"),
m_screen(*this, "screen"),
- m_palette(*this, "palette") { }
+ m_palette(*this, "palette")
+ { }
+ // devices, pointers
required_shared_ptr<UINT8> m_alpha_num_ram;
-
required_device<cpu_device> m_maincpu;
required_device<s14001a_device> m_s14001a;
required_device<gfxdecode_device> m_gfxdecode;
diff --git a/src/mame/includes/x1.h b/src/mame/includes/x1.h
index eb8d63182cd..c20e9bf0375 100644
--- a/src/mame/includes/x1.h
+++ b/src/mame/includes/x1.h
@@ -276,6 +276,8 @@ public:
TIMER_DEVICE_CALLBACK_MEMBER(x1_cmt_wind_timer);
TIMER_DEVICE_CALLBACK_MEMBER(x1_keyboard_callback);
DECLARE_WRITE_LINE_MEMBER(fdc_drq_w);
+ DECLARE_WRITE_LINE_MEMBER(hdl_w);
+ UINT8 m_fdc_ctrl;
void x1_draw_pixel(bitmap_rgb32 &bitmap,int y,int x,UINT16 pen,UINT8 width,UINT8 height);
void draw_fgtilemap(bitmap_rgb32 &bitmap,const rectangle &cliprect);
diff --git a/src/mame/layout/fidel_bcc.lay b/src/mame/layout/fidel_bcc.lay
new file mode 100644
index 00000000000..d9bf4712953
--- /dev/null
+++ b/src/mame/layout/fidel_bcc.lay
@@ -0,0 +1,69 @@
+<?xml version="1.0"?>
+<mamelayout version="2">
+
+<!-- define elements -->
+
+ <element name="digit" defstate="0">
+ <led7seg><color red="1.0" green="0.1" blue="0.15" /></led7seg>
+ </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="txt_check">
+ <text string="CHECK"><color red="0.6" green="0.6" blue="0.6" /></text>
+ </element>
+ <element name="txt_lose">
+ <text string="I LOSE"><color red="0.6" green="0.6" blue="0.6" /></text>
+ </element>
+
+ <element name="txt_from">
+ <text string="FROM"><color red="0.6" green="0.6" blue="0.6" /></text>
+ </element>
+ <element name="txt_to">
+ <text string="TO"><color red="0.6" green="0.6" blue="0.6" /></text>
+ </element>
+
+
+<!-- build screen -->
+
+ <view name="Internal Layout">
+ <bounds left="0" right="47" top="0" bottom="25" />
+
+ <bezel element="txt_check">
+ <bounds x="1" y="1" width="20" height="3" />
+ </bezel>
+ <bezel element="txt_lose">
+ <bounds x="26" y="1" width="20" height="3" />
+ </bezel>
+ <bezel name="4.a" element="led">
+ <bounds x="2" y="1" width="3" height="3" />
+ </bezel>
+ <bezel name="5.a" element="led">
+ <bounds x="27" y="1" width="3" height="3" />
+ </bezel>
+
+ <bezel element="txt_from">
+ <bounds x="1" y="21" width="20" height="3" />
+ </bezel>
+ <bezel element="txt_to">
+ <bounds x="26" y="21" width="20" height="3" />
+ </bezel>
+
+ <bezel name="digit0" element="digit">
+ <bounds x="1" y="5" width="10" height="15" />
+ </bezel>
+ <bezel name="digit1" element="digit">
+ <bounds x="11" y="5" width="10" height="15" />
+ </bezel>
+ <bezel name="digit2" element="digit">
+ <bounds x="26" y="5" width="10" height="15" />
+ </bezel>
+ <bezel name="digit3" element="digit">
+ <bounds x="36" y="5" width="10" height="15" />
+ </bezel>
+
+ </view>
+</mamelayout>
diff --git a/src/mame/layout/fidel_cc.lay b/src/mame/layout/fidel_cc.lay
index 818713acf89..6c10abb5180 100644
--- a/src/mame/layout/fidel_cc.lay
+++ b/src/mame/layout/fidel_cc.lay
@@ -1,62 +1,69 @@
<?xml version="1.0"?>
<mamelayout version="2">
+
+<!-- define elements -->
+
<element name="digit" defstate="0">
- <led7seg>
- <color red="0.75" green="0.0" blue="0.0" />
- </led7seg>
+ <led7seg><color red="1.0" green="0.1" blue="0.15" /></led7seg>
</element>
+
<element name="led" defstate="0">
- <disk state="1">
- <color red="0.75" green="0.0" blue="0.0" />
- </disk>
- <disk state="0">
- <color red="0.09375" green="0.0" blue="0.0" />
- </disk>
+ <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="check">
- <text string="CHECK">
- <color red="1.0" green="1.0" blue="1.0" /></text>
+
+ <element name="txt_check">
+ <text string="CHECK"><color red="0.6" green="0.6" blue="0.6" /></text>
+ </element>
+ <element name="txt_lose">
+ <text string="I LOSE"><color red="0.6" green="0.6" blue="0.6" /></text>
</element>
- <element name="lose">
- <text string="I LOSE">
- <color red="1.0" green="1.0" blue="1.0" /></text>
+
+ <element name="txt_from">
+ <text string="FROM"><color red="0.6" green="0.6" blue="0.6" /></text>
</element>
- <element name="background">
- <rect>
- <bounds left="0" top="0" right="1" bottom="1" />
- <color red="0.0" green="0.0" blue="0.0" />
- </rect>
+ <element name="txt_to">
+ <text string="TO"><color red="0.6" green="0.6" blue="0.6" /></text>
</element>
- <view name="Default Layout">
- <!-- Black background -->
- <bezel element="background">
- <bounds left="00" top="00" right="240" bottom="95" />
+
+<!-- build screen -->
+
+ <view name="Internal Layout">
+ <bounds left="0" right="47" top="0" bottom="25" />
+
+ <bezel element="txt_check">
+ <bounds x="1" y="1" width="20" height="3" />
+ </bezel>
+ <bezel element="txt_lose">
+ <bounds x="26" y="1" width="20" height="3" />
+ </bezel>
+ <bezel name="1.7" element="led">
+ <bounds x="2" y="1" width="3" height="3" />
+ </bezel>
+ <bezel name="0.7" element="led">
+ <bounds x="27" y="1" width="3" height="3" />
+ </bezel>
+
+ <bezel element="txt_from">
+ <bounds x="1" y="21" width="20" height="3" />
+ </bezel>
+ <bezel element="txt_to">
+ <bounds x="26" y="21" width="20" height="3" />
</bezel>
<bezel name="digit0" element="digit">
- <bounds x="10" y="15" width="50" height="80" />
+ <bounds x="1" y="5" width="10" height="15" />
</bezel>
<bezel name="digit1" element="digit">
- <bounds x="70" y="15" width="50" height="80" />
+ <bounds x="11" y="5" width="10" height="15" />
</bezel>
<bezel name="digit2" element="digit">
- <bounds x="130" y="15" width="50" height="80" />
+ <bounds x="26" y="5" width="10" height="15" />
</bezel>
<bezel name="digit3" element="digit">
- <bounds x="190" y="15" width="50" height="80" />
- </bezel>
- <bezel name="1.7" element="led">
- <bounds x="10" y="00" width="10" height="10" />
- </bezel>
- <bezel name="0.7" element="led">
- <bounds x="130" y="00" width="10" height="10" />
- </bezel>
- <bezel name="check_str" element="check">
- <bounds x="20" y="00" width="40" height="10" />
- </bezel>
- <bezel name="lose_str" element="lose">
- <bounds x="140" y="00" width="40" height="10" />
+ <bounds x="36" y="5" width="10" height="15" />
</bezel>
+
</view>
</mamelayout>
diff --git a/src/mame/layout/fidel_csc.lay b/src/mame/layout/fidel_csc.lay
new file mode 100644
index 00000000000..22aed7ef11c
--- /dev/null
+++ b/src/mame/layout/fidel_csc.lay
@@ -0,0 +1,493 @@
+<?xml version="1.0"?>
+<mamelayout version="2">
+
+<!-- other than panel button mappings, layout is identical to vsc -->
+
+<!-- define elements -->
+
+ <element name="static_black"><rect><color red="0.0" green="0.0" blue="0.0" /></rect></element>
+
+ <element name="digit" defstate="0">
+ <led7seg><color red="1.0" green="0.1" blue="0.15" /></led7seg>
+ </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="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="hlp" 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>
+ <rect 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" />
+ </rect>
+ </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="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_re">
+ <disk><color red="0.81" green="0.8" blue="0.79" /></disk>
+ <text string="RE"><color red="0.17" green="0.15" blue="0.15" /></text>
+ </element>
+ <element name="text_cl">
+ <disk><color red="0.81" green="0.8" blue="0.79" /></disk>
+ <text string="CL"><color red="0.17" green="0.15" blue="0.15" /></text>
+ </element>
+ <element name="text_king">
+ <disk><color red="0.81" green="0.8" blue="0.79" /></disk>
+ <text string="K"><color red="0.17" green="0.15" blue="0.15" /></text>
+ </element>
+ <element name="text_queen">
+ <disk><color red="0.81" green="0.8" blue="0.79" /></disk>
+ <text string="Q"><color red="0.17" green="0.15" blue="0.15" /></text>
+ </element>
+ <element name="text_rook">
+ <disk><color red="0.81" green="0.8" blue="0.79" /></disk>
+ <text string="R"><color red="0.17" green="0.15" blue="0.15" /></text>
+ </element>
+ <element name="text_bishop">
+ <disk><color red="0.81" green="0.8" blue="0.79" /></disk>
+ <text string="B"><color red="0.17" green="0.15" blue="0.15" /></text>
+ </element>
+ <element name="text_knight">
+ <disk><color red="0.81" green="0.8" blue="0.79" /></disk>
+ <text string="N"><color red="0.17" green="0.15" blue="0.15" /></text>
+ </element>
+ <element name="text_pion">
+ <disk><color red="0.81" green="0.8" blue="0.79" /></disk>
+ <text string="P"><color red="0.17" green="0.15" blue="0.15" /></text>
+ </element>
+
+ <element name="text_tm">
+ <rect><color red="0.17" green="0.15" blue="0.15" /></rect>
+ <text string="TM"><color red="0.81" green="0.8" blue="0.79" /></text>
+ </element>
+ <element name="text_rv">
+ <rect><color red="0.17" green="0.15" blue="0.15" /></rect>
+ <text string="RV"><color red="0.81" green="0.8" blue="0.79" /></text>
+ </element>
+ <element name="text_speak">
+ <rect><color red="0.17" green="0.15" blue="0.15" /></rect>
+ <text string="spk"><color red="0.81" green="0.8" blue="0.79" /></text>
+ </element>
+ <element name="text_st">
+ <rect><color red="0.17" green="0.15" blue="0.15" /></rect>
+ <text string="ST"><color red="0.81" green="0.8" blue="0.79" /></text>
+ </element>
+ <element name="text_dm">
+ <rect><color red="0.17" green="0.15" blue="0.15" /></rect>
+ <text string="DM"><color red="0.81" green="0.8" blue="0.79" /></text>
+ </element>
+ <element name="text_lv">
+ <rect><color red="0.17" green="0.15" blue="0.15" /></rect>
+ <text string="LV"><color red="0.81" green="0.8" blue="0.79" /></text>
+ </element>
+
+
+<!-- build screen -->
+
+ <view name="Internal Layout">
+ <bounds left="-2" right="98" top="-18" bottom="88" />
+ <bezel element="static_black">
+ <bounds left="-2" right="98" top="-18" bottom="88" />
+ </bezel>
+
+ <bezel element="white"><bounds x="-2.5" y="-2" width="101" height="90.5" /></bezel>
+
+ <!-- chessboard coords -->
+
+ <bezel element="text_8"><bounds x="-0.8" y="7" width="2" height="2" /></bezel>
+ <bezel element="text_7"><bounds x="-0.8" y="17" width="2" height="2" /></bezel>
+ <bezel element="text_6"><bounds x="-0.8" y="27" width="2" height="2" /></bezel>
+ <bezel element="text_5"><bounds x="-0.8" y="37" width="2" height="2" /></bezel>
+ <bezel element="text_4"><bounds x="-0.8" y="47" width="2" height="2" /></bezel>
+ <bezel element="text_3"><bounds x="-0.8" y="57" width="2" height="2" /></bezel>
+ <bezel element="text_2"><bounds x="-0.8" y="67" width="2" height="2" /></bezel>
+ <bezel element="text_1"><bounds x="-0.8" y="77" width="2" height="2" /></bezel>
+
+ <bezel element="text_a"><bounds x="7" y="85" width="2" height="2" /></bezel>
+ <bezel element="text_b"><bounds x="17" y="85" width="2" height="2" /></bezel>
+ <bezel element="text_c"><bounds x="27" y="85" width="2" height="2" /></bezel>
+ <bezel element="text_d"><bounds x="37" y="85" width="2" height="2" /></bezel>
+ <bezel element="text_e"><bounds x="47" y="85" width="2" height="2" /></bezel>
+ <bezel element="text_f"><bounds x="57" y="85" width="2" height="2" /></bezel>
+ <bezel element="text_g"><bounds x="67" y="85" width="2" height="2" /></bezel>
+ <bezel element="text_h"><bounds x="77" y="85" width="2" height="2" /></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 leds -->
+
+ <bezel name="4.7" element="led"><bounds x="3.2" y="11.3" width="1.5" height="1.5" /></bezel>
+ <bezel name="5.7" element="led"><bounds x="13.2" y="11.3" width="1.5" height="1.5" /></bezel>
+ <bezel name="6.7" element="led"><bounds x="23.2" y="11.3" width="1.5" height="1.5" /></bezel>
+ <bezel name="7.7" element="led"><bounds x="33.2" y="11.3" width="1.5" height="1.5" /></bezel>
+ <bezel name="8.7" element="led"><bounds x="43.2" y="11.3" width="1.5" height="1.5" /></bezel>
+ <bezel name="9.7" element="led"><bounds x="53.2" y="11.3" width="1.5" height="1.5" /></bezel>
+ <bezel name="10.7" element="led"><bounds x="63.2" y="11.3" width="1.5" height="1.5" /></bezel>
+ <bezel name="11.7" element="led"><bounds x="73.2" y="11.3" width="1.5" height="1.5" /></bezel>
+
+ <bezel name="4.6" element="led"><bounds x="3.2" y="21.3" width="1.5" height="1.5" /></bezel>
+ <bezel name="5.6" element="led"><bounds x="13.2" y="21.3" width="1.5" height="1.5" /></bezel>
+ <bezel name="6.6" element="led"><bounds x="23.2" y="21.3" width="1.5" height="1.5" /></bezel>
+ <bezel name="7.6" element="led"><bounds x="33.2" y="21.3" width="1.5" height="1.5" /></bezel>
+ <bezel name="8.6" element="led"><bounds x="43.2" y="21.3" width="1.5" height="1.5" /></bezel>
+ <bezel name="9.6" element="led"><bounds x="53.2" y="21.3" width="1.5" height="1.5" /></bezel>
+ <bezel name="10.6" element="led"><bounds x="63.2" y="21.3" width="1.5" height="1.5" /></bezel>
+ <bezel name="11.6" element="led"><bounds x="73.2" y="21.3" width="1.5" height="1.5" /></bezel>
+
+ <bezel name="4.5" element="led"><bounds x="3.2" y="31.3" width="1.5" height="1.5" /></bezel>
+ <bezel name="5.5" element="led"><bounds x="13.2" y="31.3" width="1.5" height="1.5" /></bezel>
+ <bezel name="6.5" element="led"><bounds x="23.2" y="31.3" width="1.5" height="1.5" /></bezel>
+ <bezel name="7.5" element="led"><bounds x="33.2" y="31.3" width="1.5" height="1.5" /></bezel>
+ <bezel name="8.5" element="led"><bounds x="43.2" y="31.3" width="1.5" height="1.5" /></bezel>
+ <bezel name="9.5" element="led"><bounds x="53.2" y="31.3" width="1.5" height="1.5" /></bezel>
+ <bezel name="10.5" element="led"><bounds x="63.2" y="31.3" width="1.5" height="1.5" /></bezel>
+ <bezel name="11.5" element="led"><bounds x="73.2" y="31.3" width="1.5" height="1.5" /></bezel>
+
+ <bezel name="4.4" element="led"><bounds x="3.2" y="41.3" width="1.5" height="1.5" /></bezel>
+ <bezel name="5.4" element="led"><bounds x="13.2" y="41.3" width="1.5" height="1.5" /></bezel>
+ <bezel name="6.4" element="led"><bounds x="23.2" y="41.3" width="1.5" height="1.5" /></bezel>
+ <bezel name="7.4" element="led"><bounds x="33.2" y="41.3" width="1.5" height="1.5" /></bezel>
+ <bezel name="8.4" element="led"><bounds x="43.2" y="41.3" width="1.5" height="1.5" /></bezel>
+ <bezel name="9.4" element="led"><bounds x="53.2" y="41.3" width="1.5" height="1.5" /></bezel>
+ <bezel name="10.4" element="led"><bounds x="63.2" y="41.3" width="1.5" height="1.5" /></bezel>
+ <bezel name="11.4" element="led"><bounds x="73.2" y="41.3" width="1.5" height="1.5" /></bezel>
+
+ <bezel name="4.3" element="led"><bounds x="3.2" y="51.3" width="1.5" height="1.5" /></bezel>
+ <bezel name="5.3" element="led"><bounds x="13.2" y="51.3" width="1.5" height="1.5" /></bezel>
+ <bezel name="6.3" element="led"><bounds x="23.2" y="51.3" width="1.5" height="1.5" /></bezel>
+ <bezel name="7.3" element="led"><bounds x="33.2" y="51.3" width="1.5" height="1.5" /></bezel>
+ <bezel name="8.3" element="led"><bounds x="43.2" y="51.3" width="1.5" height="1.5" /></bezel>
+ <bezel name="9.3" element="led"><bounds x="53.2" y="51.3" width="1.5" height="1.5" /></bezel>
+ <bezel name="10.3" element="led"><bounds x="63.2" y="51.3" width="1.5" height="1.5" /></bezel>
+ <bezel name="11.3" element="led"><bounds x="73.2" y="51.3" width="1.5" height="1.5" /></bezel>
+
+ <bezel name="4.2" element="led"><bounds x="3.2" y="61.3" width="1.5" height="1.5" /></bezel>
+ <bezel name="5.2" element="led"><bounds x="13.2" y="61.3" width="1.5" height="1.5" /></bezel>
+ <bezel name="6.2" element="led"><bounds x="23.2" y="61.3" width="1.5" height="1.5" /></bezel>
+ <bezel name="7.2" element="led"><bounds x="33.2" y="61.3" width="1.5" height="1.5" /></bezel>
+ <bezel name="8.2" element="led"><bounds x="43.2" y="61.3" width="1.5" height="1.5" /></bezel>
+ <bezel name="9.2" element="led"><bounds x="53.2" y="61.3" width="1.5" height="1.5" /></bezel>
+ <bezel name="10.2" element="led"><bounds x="63.2" y="61.3" width="1.5" height="1.5" /></bezel>
+ <bezel name="11.2" element="led"><bounds x="73.2" y="61.3" width="1.5" height="1.5" /></bezel>
+
+ <bezel name="4.1" element="led"><bounds x="3.2" y="71.3" width="1.5" height="1.5" /></bezel>
+ <bezel name="5.1" element="led"><bounds x="13.2" y="71.3" width="1.5" height="1.5" /></bezel>
+ <bezel name="6.1" element="led"><bounds x="23.2" y="71.3" width="1.5" height="1.5" /></bezel>
+ <bezel name="7.1" element="led"><bounds x="33.2" y="71.3" width="1.5" height="1.5" /></bezel>
+ <bezel name="8.1" element="led"><bounds x="43.2" y="71.3" width="1.5" height="1.5" /></bezel>
+ <bezel name="9.1" element="led"><bounds x="53.2" y="71.3" width="1.5" height="1.5" /></bezel>
+ <bezel name="10.1" element="led"><bounds x="63.2" y="71.3" width="1.5" height="1.5" /></bezel>
+ <bezel name="11.1" element="led"><bounds x="73.2" y="71.3" width="1.5" height="1.5" /></bezel>
+
+ <bezel name="4.0" element="led"><bounds x="3.2" y="81.3" width="1.5" height="1.5" /></bezel>
+ <bezel name="5.0" element="led"><bounds x="13.2" y="81.3" width="1.5" height="1.5" /></bezel>
+ <bezel name="6.0" element="led"><bounds x="23.2" y="81.3" width="1.5" height="1.5" /></bezel>
+ <bezel name="7.0" element="led"><bounds x="33.2" y="81.3" width="1.5" height="1.5" /></bezel>
+ <bezel name="8.0" element="led"><bounds x="43.2" y="81.3" width="1.5" height="1.5" /></bezel>
+ <bezel name="9.0" element="led"><bounds x="53.2" y="81.3" width="1.5" height="1.5" /></bezel>
+ <bezel name="10.0" element="led"><bounds x="63.2" y="81.3" width="1.5" height="1.5" /></bezel>
+ <bezel name="11.0" element="led"><bounds x="73.2" y="81.3" width="1.5" height="1.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.1" inputmask="0x80"><bounds x="13" y="3" width="10" height="10" /><color alpha="0.2" /></bezel>
+ <bezel element="hl" inputtag="IN.2" inputmask="0x80"><bounds x="23" y="3" width="10" height="10" /><color alpha="0.4" /></bezel>
+ <bezel element="hl" inputtag="IN.3" inputmask="0x80"><bounds x="33" y="3" width="10" height="10" /><color alpha="0.2" /></bezel>
+ <bezel element="hl" inputtag="IN.4" inputmask="0x80"><bounds x="43" y="3" width="10" height="10" /><color alpha="0.4" /></bezel>
+ <bezel element="hl" inputtag="IN.5" inputmask="0x80"><bounds x="53" y="3" width="10" height="10" /><color alpha="0.2" /></bezel>
+ <bezel element="hl" inputtag="IN.6" inputmask="0x80"><bounds x="63" y="3" width="10" height="10" /><color alpha="0.4" /></bezel>
+ <bezel element="hl" inputtag="IN.7" inputmask="0x80"><bounds x="73" y="3" width="10" height="10" /><color alpha="0.2" /></bezel>
+
+ <bezel element="hl" inputtag="IN.0" inputmask="0x40"><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.2" inputmask="0x40"><bounds x="23" y="13" width="10" height="10" /><color alpha="0.2" /></bezel>
+ <bezel element="hl" inputtag="IN.3" inputmask="0x40"><bounds x="33" y="13" width="10" height="10" /><color alpha="0.4" /></bezel>
+ <bezel element="hl" inputtag="IN.4" inputmask="0x40"><bounds x="43" y="13" width="10" height="10" /><color alpha="0.2" /></bezel>
+ <bezel element="hl" inputtag="IN.5" inputmask="0x40"><bounds x="53" y="13" width="10" height="10" /><color alpha="0.4" /></bezel>
+ <bezel element="hl" inputtag="IN.6" inputmask="0x40"><bounds x="63" y="13" width="10" height="10" /><color alpha="0.2" /></bezel>
+ <bezel element="hl" inputtag="IN.7" inputmask="0x40"><bounds x="73" y="13" width="10" height="10" /><color alpha="0.4" /></bezel>
+
+ <bezel element="hl" inputtag="IN.0" inputmask="0x20"><bounds x="3" y="23" width="10" height="10" /><color alpha="0.4" /></bezel>
+ <bezel element="hl" inputtag="IN.1" inputmask="0x20"><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.3" inputmask="0x20"><bounds x="33" y="23" width="10" height="10" /><color alpha="0.2" /></bezel>
+ <bezel element="hl" inputtag="IN.4" inputmask="0x20"><bounds x="43" y="23" width="10" height="10" /><color alpha="0.4" /></bezel>
+ <bezel element="hl" inputtag="IN.5" inputmask="0x20"><bounds x="53" y="23" width="10" height="10" /><color alpha="0.2" /></bezel>
+ <bezel element="hl" inputtag="IN.6" inputmask="0x20"><bounds x="63" y="23" width="10" height="10" /><color alpha="0.4" /></bezel>
+ <bezel element="hl" inputtag="IN.7" inputmask="0x20"><bounds x="73" y="23" width="10" height="10" /><color alpha="0.2" /></bezel>
+
+ <bezel element="hl" inputtag="IN.0" inputmask="0x10"><bounds x="3" y="33" width="10" height="10" /><color alpha="0.2" /></bezel>
+ <bezel element="hl" inputtag="IN.1" inputmask="0x10"><bounds x="13" y="33" width="10" height="10" /><color alpha="0.4" /></bezel>
+ <bezel element="hl" inputtag="IN.2" inputmask="0x10"><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.4" inputmask="0x10"><bounds x="43" y="33" width="10" height="10" /><color alpha="0.2" /></bezel>
+ <bezel element="hl" inputtag="IN.5" inputmask="0x10"><bounds x="53" y="33" width="10" height="10" /><color alpha="0.4" /></bezel>
+ <bezel element="hl" inputtag="IN.6" inputmask="0x10"><bounds x="63" y="33" width="10" height="10" /><color alpha="0.2" /></bezel>
+ <bezel element="hl" inputtag="IN.7" inputmask="0x10"><bounds x="73" y="33" width="10" height="10" /><color alpha="0.4" /></bezel>
+
+ <bezel element="hl" inputtag="IN.0" inputmask="0x08"><bounds x="3" y="43" width="10" height="10" /><color alpha="0.4" /></bezel>
+ <bezel element="hl" inputtag="IN.1" inputmask="0x08"><bounds x="13" y="43" width="10" height="10" /><color alpha="0.2" /></bezel>
+ <bezel element="hl" inputtag="IN.2" inputmask="0x08"><bounds x="23" y="43" width="10" height="10" /><color alpha="0.4" /></bezel>
+ <bezel element="hl" inputtag="IN.3" inputmask="0x08"><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.5" inputmask="0x08"><bounds x="53" y="43" width="10" height="10" /><color alpha="0.2" /></bezel>
+ <bezel element="hl" inputtag="IN.6" inputmask="0x08"><bounds x="63" y="43" width="10" height="10" /><color alpha="0.4" /></bezel>
+ <bezel element="hl" inputtag="IN.7" inputmask="0x08"><bounds x="73" y="43" width="10" height="10" /><color alpha="0.2" /></bezel>
+
+ <bezel element="hl" inputtag="IN.0" inputmask="0x04"><bounds x="3" y="53" width="10" height="10" /><color alpha="0.2" /></bezel>
+ <bezel element="hl" inputtag="IN.1" inputmask="0x04"><bounds x="13" y="53" width="10" height="10" /><color alpha="0.4" /></bezel>
+ <bezel element="hl" inputtag="IN.2" inputmask="0x04"><bounds x="23" y="53" width="10" height="10" /><color alpha="0.2" /></bezel>
+ <bezel element="hl" inputtag="IN.3" inputmask="0x04"><bounds x="33" y="53" width="10" height="10" /><color alpha="0.4" /></bezel>
+ <bezel element="hl" inputtag="IN.4" inputmask="0x04"><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.6" inputmask="0x04"><bounds x="63" y="53" width="10" height="10" /><color alpha="0.2" /></bezel>
+ <bezel element="hl" inputtag="IN.7" inputmask="0x04"><bounds x="73" y="53" width="10" height="10" /><color alpha="0.4" /></bezel>
+
+ <bezel element="hl" inputtag="IN.0" inputmask="0x02"><bounds x="3" y="63" width="10" height="10" /><color alpha="0.4" /></bezel>
+ <bezel element="hl" inputtag="IN.1" inputmask="0x02"><bounds x="13" y="63" width="10" height="10" /><color alpha="0.2" /></bezel>
+ <bezel element="hl" inputtag="IN.2" inputmask="0x02"><bounds x="23" y="63" width="10" height="10" /><color alpha="0.4" /></bezel>
+ <bezel element="hl" inputtag="IN.3" inputmask="0x02"><bounds x="33" y="63" width="10" height="10" /><color alpha="0.2" /></bezel>
+ <bezel element="hl" inputtag="IN.4" inputmask="0x02"><bounds x="43" y="63" width="10" height="10" /><color alpha="0.4" /></bezel>
+ <bezel element="hl" inputtag="IN.5" inputmask="0x02"><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.7" inputmask="0x02"><bounds x="73" y="63" width="10" height="10" /><color alpha="0.2" /></bezel>
+
+ <bezel element="hl" inputtag="IN.0" inputmask="0x01"><bounds x="3" y="73" width="10" height="10" /><color alpha="0.2" /></bezel>
+ <bezel element="hl" inputtag="IN.1" inputmask="0x01"><bounds x="13" y="73" width="10" height="10" /><color alpha="0.4" /></bezel>
+ <bezel element="hl" inputtag="IN.2" inputmask="0x01"><bounds x="23" y="73" width="10" height="10" /><color alpha="0.2" /></bezel>
+ <bezel element="hl" inputtag="IN.3" inputmask="0x01"><bounds x="33" y="73" width="10" height="10" /><color alpha="0.4" /></bezel>
+ <bezel element="hl" inputtag="IN.4" inputmask="0x01"><bounds x="43" y="73" width="10" height="10" /><color alpha="0.2" /></bezel>
+ <bezel element="hl" inputtag="IN.5" inputmask="0x01"><bounds x="53" y="73" width="10" height="10" /><color alpha="0.4" /></bezel>
+ <bezel element="hl" inputtag="IN.6" inputmask="0x01"><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>
+
+ <!-- right side -->
+
+ <bezel name="0.7" element="led"><bounds x="89.95" y="7.25" width="1.5" height="1.5" /></bezel>
+
+ <bezel element="disk_black"><bounds x="87" y="13" width="7.4" height="7.4" /></bezel>
+ <bezel element="disk_black"><bounds x="87" y="21.8" width="7.4" height="7.4" /></bezel>
+ <bezel element="disk_black"><bounds x="87" y="30.6" width="7.4" height="7.4" /></bezel>
+ <bezel element="disk_black"><bounds x="87" y="39.4" width="7.4" height="7.4" /></bezel>
+ <bezel element="disk_black"><bounds x="87" y="48.2" width="7.4" height="7.4" /></bezel>
+ <bezel element="disk_black"><bounds x="87" y="57" width="7.4" height="7.4" /></bezel>
+ <bezel element="disk_black"><bounds x="87" y="65.8" width="7.4" height="7.4" /></bezel>
+ <bezel element="disk_black"><bounds x="87" y="74.6" width="7.4" height="7.4" /></bezel>
+
+ <bezel element="disk_white"><bounds x="88.2" y="14.2" width="5" height="5" /></bezel>
+ <bezel element="disk_white"><bounds x="88.2" y="23" width="5" height="5" /></bezel>
+ <bezel element="disk_white"><bounds x="88.2" y="31.8" width="5" height="5" /></bezel>
+ <bezel element="disk_white"><bounds x="88.2" y="40.6" width="5" height="5" /></bezel>
+ <bezel element="disk_white"><bounds x="88.2" y="49.4" width="5" height="5" /></bezel>
+ <bezel element="disk_white"><bounds x="88.2" y="58.2" width="5" height="5" /></bezel>
+ <bezel element="disk_white"><bounds x="88.2" y="67" width="5" height="5" /></bezel>
+ <bezel element="disk_white"><bounds x="88.2" y="75.8" width="5" height="5" /></bezel>
+
+ <bezel element="text_re"><bounds x="88.2" y="15.2" width="5" height="3" /></bezel>
+ <bezel element="text_cl"><bounds x="88.2" y="24" width="5" height="3" /></bezel>
+ <bezel element="text_king"><bounds x="88.2" y="32.8" width="5" height="3" /></bezel>
+ <bezel element="text_queen"><bounds x="88.2" y="41.6" width="5" height="3" /></bezel>
+ <bezel element="text_bishop"><bounds x="88.2" y="50.4" width="5" height="3" /></bezel>
+ <bezel element="text_knight"><bounds x="88.2" y="59.2" width="5" height="3" /></bezel>
+ <bezel element="text_rook"><bounds x="88.2" y="68" width="5" height="3" /></bezel>
+ <bezel element="text_pion"><bounds x="88.2" y="76.8" width="5" height="3" /></bezel>
+
+ <bezel element="hlb" inputtag="IN.8" inputmask="0x80"><bounds x="87" y="13" width="7.4" height="7.4" /><color alpha="0.3" /></bezel>
+ <bezel element="hlb" inputtag="IN.8" inputmask="0x40"><bounds x="87" y="21.8" width="7.4" height="7.4" /><color alpha="0.3" /></bezel>
+ <bezel element="hlb" inputtag="IN.8" inputmask="0x20"><bounds x="87" y="30.6" width="7.4" height="7.4" /><color alpha="0.3" /></bezel>
+ <bezel element="hlb" inputtag="IN.8" inputmask="0x10"><bounds x="87" y="39.4" width="7.4" height="7.4" /><color alpha="0.3" /></bezel>
+ <bezel element="hlb" inputtag="IN.8" inputmask="0x08"><bounds x="87" y="48.2" width="7.4" height="7.4" /><color alpha="0.3" /></bezel>
+ <bezel element="hlb" inputtag="IN.8" inputmask="0x04"><bounds x="87" y="57" width="7.4" height="7.4" /><color alpha="0.3" /></bezel>
+ <bezel element="hlb" inputtag="IN.8" inputmask="0x02"><bounds x="87" y="65.8" width="7.4" height="7.4" /><color alpha="0.3" /></bezel>
+ <bezel element="hlb" inputtag="IN.8" inputmask="0x01"><bounds x="87" y="74.6" width="7.4" height="7.4" /><color alpha="0.3" /></bezel>
+
+ <!-- panel 7seg leds -->
+
+ <bezel name="digit3" element="digit">
+ <bounds x="33" y="-14.5" width="5.66" height="8.5" />
+ </bezel>
+ <bezel name="digit2" element="digit">
+ <bounds x="38.66" y="-14.5" width="5.66" height="8.5" />
+ </bezel>
+ <bezel name="digit1" element="digit">
+ <bounds x="47.16" y="-14.5" width="5.66" height="8.5" />
+ </bezel>
+ <bezel name="digit0" element="digit">
+ <bounds x="52.82" y="-14.5" width="5.66" height="8.5" />
+ </bezel>
+
+ <bezel name="2.7" element="led">
+ <bounds x="45.58" y="-13" width="0.85" height="0.85" />
+ </bezel>
+ <bezel name="3.7" element="led">
+ <bounds x="45.13" y="-8.35" width="0.85" height="0.85" />
+ </bezel>
+
+ <!-- panel buttons -->
+
+ <bezel element="black"><bounds x="73" y="-14.5" width="5" height="3" /></bezel>
+ <bezel element="text_tm"><bounds x="73.05" y="-14.45" width="4.9" height="2.9" /></bezel>
+ <bezel element="hlp" inputtag="IN.2" inputmask="0x100"><bounds x="73" y="-14.5" width="5" height="3" /><color alpha="0.25" /></bezel>
+
+ <bezel element="black"><bounds x="79.2" y="-14.5" width="5" height="3" /></bezel>
+ <bezel element="text_rv"><bounds x="79.25" y="-14.45" width="4.9" height="2.9" /></bezel>
+ <bezel element="hlp" inputtag="IN.1" inputmask="0x100"><bounds x="79.2" y="-14.5" width="5" height="3" /><color alpha="0.25" /></bezel>
+
+ <bezel element="black"><bounds x="85.4" y="-14.5" width="5" height="3" /></bezel>
+ <bezel element="text_speak"><bounds x="85.45" y="-14.45" width="4.9" height="2.9" /></bezel>
+ <bezel element="hlp" inputtag="IN.0" inputmask="0x100"><bounds x="85.4" y="-14.5" width="5" height="3" /><color alpha="0.25" /></bezel>
+
+ <bezel element="black"><bounds x="73" y="-9" width="5" height="3" /></bezel>
+ <bezel element="text_st"><bounds x="73.05" y="-8.95" width="4.9" height="2.9" /></bezel>
+ <bezel element="hlp" inputtag="IN.5" inputmask="0x100"><bounds x="73" y="-9" width="5" height="3" /><color alpha="0.25" /></bezel>
+
+ <bezel element="black"><bounds x="79.2" y="-9" width="5" height="3" /></bezel>
+ <bezel element="text_dm"><bounds x="79.25" y="-8.95" width="4.9" height="2.9" /></bezel>
+ <bezel element="hlp" inputtag="IN.4" inputmask="0x100"><bounds x="79.2" y="-9" width="5" height="3" /><color alpha="0.25" /></bezel>
+
+ <bezel element="black"><bounds x="85.4" y="-9" width="5" height="3" /></bezel>
+ <bezel element="text_lv"><bounds x="85.45" y="-8.95" width="4.9" height="2.9" /></bezel>
+ <bezel element="hlp" inputtag="IN.3" inputmask="0x100"><bounds x="85.4" y="-9" width="5" height="3" /><color alpha="0.25" /></bezel>
+
+
+ </view>
+</mamelayout>
diff --git a/src/mame/layout/fidel_fev.lay b/src/mame/layout/fidel_fev.lay
new file mode 100644
index 00000000000..1ecc3e9bcc7
--- /dev/null
+++ b/src/mame/layout/fidel_fev.lay
@@ -0,0 +1,483 @@
+<?xml version="1.0"?>
+<mamelayout version="2">
+
+<!-- define elements -->
+
+ <element name="static_black"><rect><color red="0.0" green="0.0" blue="0.0" /></rect></element>
+
+ <element name="digit" defstate="0">
+ <led7seg><color red="1.0" green="0.1" blue="0.15" /></led7seg>
+ </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.1" green="1.0" blue="0.15" /></disk>
+ <disk state="0"><color red="0.01" green="0.1" blue="0.015" /></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>
+ <rect 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" />
+ </rect>
+ </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="redb"><rect><color red="0.81" green="0.3" blue="0.29" /></rect></element>
+
+ <element name="text_1">
+ <rect><color red="0.81" green="0.8" blue="0.79" /></rect>
+ <text string="1" align="2"><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" align="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" align="2"><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" align="2"><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" align="2"><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" align="2"><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" align="2"><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" align="2"><color red="0.01" green="0.01" blue="0.01" /></text>
+ </element>
+
+ <element name="text_9">
+ <rect><color red="0.81" green="0.8" blue="0.79" /></rect>
+ <text string="9" align="2"><color red="0.01" green="0.01" blue="0.01" /></text>
+ </element>
+ <element name="text_10">
+ <rect><color red="0.81" green="0.8" blue="0.79" /></rect>
+ <text string="10" align="2"><color red="0.01" green="0.01" blue="0.01" /></text>
+ </element>
+ <element name="text_11">
+ <rect><color red="0.81" green="0.8" blue="0.79" /></rect>
+ <text string="11" align="2"><color red="0.01" green="0.01" blue="0.01" /></text>
+ </element>
+ <element name="text_12">
+ <rect><color red="0.81" green="0.8" blue="0.79" /></rect>
+ <text string="12" align="2"><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_lb">
+ <rect><color red="0.81" green="0.8" blue="0.79" /></rect>
+ <text string="CHECK"><color red="0.01" green="0.01" blue="0.01" /></text>
+ </element>
+ <element name="text_lc">
+ <rect><color red="0.81" green="0.8" blue="0.79" /></rect>
+ <text string="MATE"><color red="0.01" green="0.01" blue="0.01" /></text>
+ </element>
+ <element name="text_ld">
+ <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_le">
+ <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_lf">
+ <rect><color red="0.81" green="0.8" blue="0.79" /></rect>
+ <text string="STALEMATE"><color red="0.01" green="0.01" blue="0.01" /></text>
+ </element>
+ <element name="text_lg">
+ <rect><color red="0.81" green="0.8" blue="0.79" /></rect>
+ <text string="DRAW"><color red="0.01" green="0.01" blue="0.01" /></text>
+ </element>
+ <element name="text_lh">
+ <rect><color red="0.81" green="0.8" blue="0.79" /></rect>
+ <text string="I LOSE"><color red="0.01" green="0.01" blue="0.01" /></text>
+ </element>
+
+ <element name="text_t81">
+ <rect><color red="0.81" green="0.8" blue="0.79" /></rect>
+ <text string="NEW"><color red="0.17" green="0.15" blue="0.15" /></text>
+ </element>
+ <element name="text_t82">
+ <rect><color red="0.81" green="0.8" blue="0.79" /></rect>
+ <text string="GAME"><color red="0.17" green="0.15" blue="0.15" /></text>
+ </element>
+ <element name="text_t7">
+ <rect><color red="0.81" green="0.8" blue="0.79" /></rect>
+ <text string="VERIFY"><color red="0.17" green="0.15" blue="0.15" /></text>
+ </element>
+ <element name="text_t6">
+ <rect><color red="0.81" green="0.8" blue="0.79" /></rect>
+ <text string="OPTIONS"><color red="0.17" green="0.15" blue="0.15" /></text>
+ </element>
+ <element name="text_t5">
+ <rect><color red="0.81" green="0.8" blue="0.79" /></rect>
+ <text string="LEVEL"><color red="0.17" green="0.15" blue="0.15" /></text>
+ </element>
+ <element name="text_t41">
+ <rect><color red="0.81" green="0.8" blue="0.79" /></rect>
+ <text string="TAKE"><color red="0.17" green="0.15" blue="0.15" /></text>
+ </element>
+ <element name="text_t42">
+ <rect><color red="0.81" green="0.8" blue="0.79" /></rect>
+ <text string="BACK"><color red="0.17" green="0.15" blue="0.15" /></text>
+ </element>
+ <element name="text_t3">
+ <rect><color red="0.81" green="0.8" blue="0.79" /></rect>
+ <text string="HINT"><color red="0.17" green="0.15" blue="0.15" /></text>
+ </element>
+ <element name="text_t2">
+ <rect><color red="0.81" green="0.8" blue="0.79" /></rect>
+ <text string="MOVE"><color red="0.17" green="0.15" blue="0.15" /></text>
+ </element>
+ <element name="text_t1">
+ <rect><color red="0.81" green="0.8" blue="0.79" /></rect>
+ <text string="CLEAR"><color red="0.17" green="0.15" blue="0.15" /></text>
+ </element>
+
+ <element name="text_tl7">
+ <rect><color red="0.17" green="0.15" blue="0.15" /></rect>
+ <text string="king"><color red="0.65" green="0.15" blue="0.14" /></text>
+ </element>
+ <element name="text_tl6">
+ <rect><color red="0.17" green="0.15" blue="0.15" /></rect>
+ <text string="queen"><color red="0.65" green="0.15" blue="0.14" /></text>
+ </element>
+ <element name="text_tl5">
+ <rect><color red="0.17" green="0.15" blue="0.15" /></rect>
+ <text string="rook"><color red="0.65" green="0.15" blue="0.14" /></text>
+ </element>
+ <element name="text_tl4">
+ <rect><color red="0.17" green="0.15" blue="0.15" /></rect>
+ <text string="bishop"><color red="0.65" green="0.15" blue="0.14" /></text>
+ </element>
+ <element name="text_tl3">
+ <rect><color red="0.17" green="0.15" blue="0.15" /></rect>
+ <text string="knight"><color red="0.65" green="0.15" blue="0.14" /></text>
+ </element>
+ <element name="text_tl2">
+ <rect><color red="0.17" green="0.15" blue="0.15" /></rect>
+ <text string="pion"><color red="0.65" green="0.15" blue="0.14" /></text>
+ </element>
+
+<!-- build screen -->
+
+ <view name="Internal Layout">
+ <bounds left="-2" right="98" top="-14.5" bottom="89" />
+ <bezel element="static_black">
+ <bounds left="-2" right="98" top="-14.5" bottom="89" />
+ </bezel>
+
+ <bezel element="white"><bounds x="-2.5" y="-2" width="101" height="91.5" /></bezel>
+
+ <!-- chessboard coords -->
+
+ <bezel element="text_8"><bounds x="-0.3" y="9" width="2" height="2" /></bezel>
+ <bezel element="text_7"><bounds x="-0.3" y="19" width="2" height="2" /></bezel>
+ <bezel element="text_6"><bounds x="-0.3" y="29" width="2" height="2" /></bezel>
+ <bezel element="text_5"><bounds x="-0.3" y="39" width="2" height="2" /></bezel>
+ <bezel element="text_4"><bounds x="-0.3" y="49" width="2" height="2" /></bezel>
+ <bezel element="text_3"><bounds x="-0.3" y="59" width="2" height="2" /></bezel>
+ <bezel element="text_2"><bounds x="-0.3" y="69" width="2" height="2" /></bezel>
+ <bezel element="text_1"><bounds x="-0.3" y="79" width="2" height="2" /></bezel>
+
+ <bezel element="text_a"><bounds x="5" y="84.2" width="2" height="2" /></bezel>
+ <bezel element="text_b"><bounds x="15" y="84.2" width="2" height="2" /></bezel>
+ <bezel element="text_c"><bounds x="25" y="84.2" width="2" height="2" /></bezel>
+ <bezel element="text_d"><bounds x="35" y="84.2" width="2" height="2" /></bezel>
+ <bezel element="text_e"><bounds x="45" y="84.2" width="2" height="2" /></bezel>
+ <bezel element="text_f"><bounds x="55" y="84.2" width="2" height="2" /></bezel>
+ <bezel element="text_g"><bounds x="65" y="84.2" width="2" height="2" /></bezel>
+ <bezel element="text_h"><bounds x="75" y="84.2" width="2" height="2" /></bezel>
+
+ <!-- left side labels -->
+
+ <bezel element="text_9"><bounds x="-4.3" y="12" width="5" height="2" /></bezel>
+ <bezel element="text_10"><bounds x="-4.3" y="22" width="5" height="2" /></bezel>
+ <bezel element="text_11"><bounds x="-4.3" y="32" width="5" height="2" /></bezel>
+ <bezel element="text_12"><bounds x="-4.3" y="42" width="5" height="2" /></bezel>
+
+ <!-- bottom side labels -->
+
+ <bezel element="text_lb"><bounds x="13" y="86.3" width="10" height="2" /></bezel>
+ <bezel element="text_lc"><bounds x="23" y="86.3" width="10" height="2" /></bezel>
+ <bezel element="text_ld"><bounds x="33" y="86.3" width="10" height="2" /></bezel>
+ <bezel element="text_le"><bounds x="43" y="86.3" width="10" height="2" /></bezel>
+ <bezel element="text_lf"><bounds x="53" y="86.3" width="10" height="2" /></bezel>
+ <bezel element="text_lh"><bounds x="73" y="86.3" width="10" height="2" /></bezel>
+ <bezel element="text_lg"><bounds x="62" y="86.3" width="12" height="2" /></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.1" inputmask="0x80"><bounds x="13" y="3" width="10" height="10" /><color alpha="0.2" /></bezel>
+ <bezel element="hl" inputtag="IN.2" inputmask="0x80"><bounds x="23" y="3" width="10" height="10" /><color alpha="0.4" /></bezel>
+ <bezel element="hl" inputtag="IN.3" inputmask="0x80"><bounds x="33" y="3" width="10" height="10" /><color alpha="0.2" /></bezel>
+ <bezel element="hl" inputtag="IN.4" inputmask="0x80"><bounds x="43" y="3" width="10" height="10" /><color alpha="0.4" /></bezel>
+ <bezel element="hl" inputtag="IN.5" inputmask="0x80"><bounds x="53" y="3" width="10" height="10" /><color alpha="0.2" /></bezel>
+ <bezel element="hl" inputtag="IN.6" inputmask="0x80"><bounds x="63" y="3" width="10" height="10" /><color alpha="0.4" /></bezel>
+ <bezel element="hl" inputtag="IN.7" inputmask="0x80"><bounds x="73" y="3" width="10" height="10" /><color alpha="0.2" /></bezel>
+
+ <bezel element="hl" inputtag="IN.0" inputmask="0x40"><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.2" inputmask="0x40"><bounds x="23" y="13" width="10" height="10" /><color alpha="0.2" /></bezel>
+ <bezel element="hl" inputtag="IN.3" inputmask="0x40"><bounds x="33" y="13" width="10" height="10" /><color alpha="0.4" /></bezel>
+ <bezel element="hl" inputtag="IN.4" inputmask="0x40"><bounds x="43" y="13" width="10" height="10" /><color alpha="0.2" /></bezel>
+ <bezel element="hl" inputtag="IN.5" inputmask="0x40"><bounds x="53" y="13" width="10" height="10" /><color alpha="0.4" /></bezel>
+ <bezel element="hl" inputtag="IN.6" inputmask="0x40"><bounds x="63" y="13" width="10" height="10" /><color alpha="0.2" /></bezel>
+ <bezel element="hl" inputtag="IN.7" inputmask="0x40"><bounds x="73" y="13" width="10" height="10" /><color alpha="0.4" /></bezel>
+
+ <bezel element="hl" inputtag="IN.0" inputmask="0x20"><bounds x="3" y="23" width="10" height="10" /><color alpha="0.4" /></bezel>
+ <bezel element="hl" inputtag="IN.1" inputmask="0x20"><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.3" inputmask="0x20"><bounds x="33" y="23" width="10" height="10" /><color alpha="0.2" /></bezel>
+ <bezel element="hl" inputtag="IN.4" inputmask="0x20"><bounds x="43" y="23" width="10" height="10" /><color alpha="0.4" /></bezel>
+ <bezel element="hl" inputtag="IN.5" inputmask="0x20"><bounds x="53" y="23" width="10" height="10" /><color alpha="0.2" /></bezel>
+ <bezel element="hl" inputtag="IN.6" inputmask="0x20"><bounds x="63" y="23" width="10" height="10" /><color alpha="0.4" /></bezel>
+ <bezel element="hl" inputtag="IN.7" inputmask="0x20"><bounds x="73" y="23" width="10" height="10" /><color alpha="0.2" /></bezel>
+
+ <bezel element="hl" inputtag="IN.0" inputmask="0x10"><bounds x="3" y="33" width="10" height="10" /><color alpha="0.2" /></bezel>
+ <bezel element="hl" inputtag="IN.1" inputmask="0x10"><bounds x="13" y="33" width="10" height="10" /><color alpha="0.4" /></bezel>
+ <bezel element="hl" inputtag="IN.2" inputmask="0x10"><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.4" inputmask="0x10"><bounds x="43" y="33" width="10" height="10" /><color alpha="0.2" /></bezel>
+ <bezel element="hl" inputtag="IN.5" inputmask="0x10"><bounds x="53" y="33" width="10" height="10" /><color alpha="0.4" /></bezel>
+ <bezel element="hl" inputtag="IN.6" inputmask="0x10"><bounds x="63" y="33" width="10" height="10" /><color alpha="0.2" /></bezel>
+ <bezel element="hl" inputtag="IN.7" inputmask="0x10"><bounds x="73" y="33" width="10" height="10" /><color alpha="0.4" /></bezel>
+
+ <bezel element="hl" inputtag="IN.0" inputmask="0x08"><bounds x="3" y="43" width="10" height="10" /><color alpha="0.4" /></bezel>
+ <bezel element="hl" inputtag="IN.1" inputmask="0x08"><bounds x="13" y="43" width="10" height="10" /><color alpha="0.2" /></bezel>
+ <bezel element="hl" inputtag="IN.2" inputmask="0x08"><bounds x="23" y="43" width="10" height="10" /><color alpha="0.4" /></bezel>
+ <bezel element="hl" inputtag="IN.3" inputmask="0x08"><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.5" inputmask="0x08"><bounds x="53" y="43" width="10" height="10" /><color alpha="0.2" /></bezel>
+ <bezel element="hl" inputtag="IN.6" inputmask="0x08"><bounds x="63" y="43" width="10" height="10" /><color alpha="0.4" /></bezel>
+ <bezel element="hl" inputtag="IN.7" inputmask="0x08"><bounds x="73" y="43" width="10" height="10" /><color alpha="0.2" /></bezel>
+
+ <bezel element="hl" inputtag="IN.0" inputmask="0x04"><bounds x="3" y="53" width="10" height="10" /><color alpha="0.2" /></bezel>
+ <bezel element="hl" inputtag="IN.1" inputmask="0x04"><bounds x="13" y="53" width="10" height="10" /><color alpha="0.4" /></bezel>
+ <bezel element="hl" inputtag="IN.2" inputmask="0x04"><bounds x="23" y="53" width="10" height="10" /><color alpha="0.2" /></bezel>
+ <bezel element="hl" inputtag="IN.3" inputmask="0x04"><bounds x="33" y="53" width="10" height="10" /><color alpha="0.4" /></bezel>
+ <bezel element="hl" inputtag="IN.4" inputmask="0x04"><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.6" inputmask="0x04"><bounds x="63" y="53" width="10" height="10" /><color alpha="0.2" /></bezel>
+ <bezel element="hl" inputtag="IN.7" inputmask="0x04"><bounds x="73" y="53" width="10" height="10" /><color alpha="0.4" /></bezel>
+
+ <bezel element="hl" inputtag="IN.0" inputmask="0x02"><bounds x="3" y="63" width="10" height="10" /><color alpha="0.4" /></bezel>
+ <bezel element="hl" inputtag="IN.1" inputmask="0x02"><bounds x="13" y="63" width="10" height="10" /><color alpha="0.2" /></bezel>
+ <bezel element="hl" inputtag="IN.2" inputmask="0x02"><bounds x="23" y="63" width="10" height="10" /><color alpha="0.4" /></bezel>
+ <bezel element="hl" inputtag="IN.3" inputmask="0x02"><bounds x="33" y="63" width="10" height="10" /><color alpha="0.2" /></bezel>
+ <bezel element="hl" inputtag="IN.4" inputmask="0x02"><bounds x="43" y="63" width="10" height="10" /><color alpha="0.4" /></bezel>
+ <bezel element="hl" inputtag="IN.5" inputmask="0x02"><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.7" inputmask="0x02"><bounds x="73" y="63" width="10" height="10" /><color alpha="0.2" /></bezel>
+
+ <bezel element="hl" inputtag="IN.0" inputmask="0x01"><bounds x="3" y="73" width="10" height="10" /><color alpha="0.2" /></bezel>
+ <bezel element="hl" inputtag="IN.1" inputmask="0x01"><bounds x="13" y="73" width="10" height="10" /><color alpha="0.4" /></bezel>
+ <bezel element="hl" inputtag="IN.2" inputmask="0x01"><bounds x="23" y="73" width="10" height="10" /><color alpha="0.2" /></bezel>
+ <bezel element="hl" inputtag="IN.3" inputmask="0x01"><bounds x="33" y="73" width="10" height="10" /><color alpha="0.4" /></bezel>
+ <bezel element="hl" inputtag="IN.4" inputmask="0x01"><bounds x="43" y="73" width="10" height="10" /><color alpha="0.2" /></bezel>
+ <bezel element="hl" inputtag="IN.5" inputmask="0x01"><bounds x="53" y="73" width="10" height="10" /><color alpha="0.4" /></bezel>
+ <bezel element="hl" inputtag="IN.6" inputmask="0x01"><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>
+
+ <!-- chessboard leds -->
+
+ <bezel name="0.7" element="led"><bounds x="1.5" y="7.25" width="1.5" height="1.5" /></bezel>
+ <bezel name="0.6" element="led"><bounds x="1.5" y="17.25" width="1.5" height="1.5" /></bezel>
+ <bezel name="0.5" element="led"><bounds x="1.5" y="27.25" width="1.5" height="1.5" /></bezel>
+ <bezel name="0.4" element="led"><bounds x="1.5" y="37.25" width="1.5" height="1.5" /></bezel>
+ <bezel name="0.3" element="led"><bounds x="1.5" y="47.25" width="1.5" height="1.5" /></bezel>
+ <bezel name="0.2" element="led"><bounds x="1.5" y="57.25" width="1.5" height="1.5" /></bezel>
+ <bezel name="0.1" element="led"><bounds x="1.5" y="67.25" width="1.5" height="1.5" /></bezel>
+ <bezel name="0.0" element="led"><bounds x="1.5" y="77.25" width="1.5" height="1.5" /></bezel>
+
+ <bezel name="1.0" element="ledg"><bounds x="7.25" y="83" width="1.5" height="1.5" /></bezel>
+ <bezel name="1.1" element="ledg"><bounds x="17.25" y="83" width="1.5" height="1.5" /></bezel>
+ <bezel name="1.2" element="ledg"><bounds x="27.25" y="83" width="1.5" height="1.5" /></bezel>
+ <bezel name="1.3" element="ledg"><bounds x="37.25" y="83" width="1.5" height="1.5" /></bezel>
+ <bezel name="1.4" element="ledg"><bounds x="47.25" y="83" width="1.5" height="1.5" /></bezel>
+ <bezel name="1.5" element="ledg"><bounds x="57.25" y="83" width="1.5" height="1.5" /></bezel>
+ <bezel name="1.6" element="ledg"><bounds x="67.25" y="83" width="1.5" height="1.5" /></bezel>
+ <bezel name="1.7" element="ledg"><bounds x="77.25" y="83" width="1.5" height="1.5" /></bezel>
+
+ <!-- 7seg leds -->
+
+ <bezel name="digit2" element="digit">
+ <bounds x="64.18" y="-12.5" width="5.66" height="8.5" />
+ </bezel>
+ <bezel name="digit3" element="digit">
+ <bounds x="69.84" y="-12.5" width="5.66" height="8.5" />
+ </bezel>
+ <bezel name="digit4" element="digit">
+ <bounds x="78.34" y="-12.5" width="5.66" height="8.5" />
+ </bezel>
+ <bezel name="digit5" element="digit">
+ <bounds x="84" y="-12.5" width="5.66" height="8.5" />
+ </bezel>
+
+ <bezel name="3.7" element="led">
+ <bounds x="76.76" y="-11" width="0.85" height="0.85" />
+ </bezel>
+ <bezel name="2.7" element="led">
+ <bounds x="76.31" y="-6.35" width="0.85" height="0.85" />
+ </bezel>
+
+ <!-- right side -->
+
+ <bezel element="black"><bounds x="86" y="2" width="10" height="82" /></bezel>
+
+ <bezel element="text_tl7"><bounds x="87" y="17" width="8" height="1.7" /></bezel>
+ <bezel element="text_tl6"><bounds x="87" y="26" width="8" height="1.7" /></bezel>
+ <bezel element="text_tl5"><bounds x="87" y="35" width="8" height="1.7" /></bezel>
+ <bezel element="text_tl4"><bounds x="87" y="44" width="8" height="1.7" /></bezel>
+ <bezel element="text_tl3"><bounds x="87" y="53" width="8" height="1.7" /></bezel>
+ <bezel element="text_tl2"><bounds x="87" y="62" width="8" height="1.7" /></bezel>
+
+ <bezel element="redb"><bounds x="87" y="9" width="8" height="4" /></bezel>
+ <bezel element="redb"><bounds x="87" y="19" width="8" height="4" /></bezel>
+ <bezel element="redb"><bounds x="87" y="28" width="8" height="4" /></bezel>
+ <bezel element="redb"><bounds x="87" y="37" width="8" height="4" /></bezel>
+ <bezel element="redb"><bounds x="87" y="46" width="8" height="4" /></bezel>
+ <bezel element="redb"><bounds x="87" y="55" width="8" height="4" /></bezel>
+ <bezel element="redb"><bounds x="87" y="64" width="8" height="4" /></bezel>
+ <bezel element="redb"><bounds x="87" y="73" width="8" height="4" /></bezel>
+
+ <bezel element="white"><bounds x="87.3" y="9.3" width="7.4" height="3.4" /></bezel>
+ <bezel element="white"><bounds x="87.3" y="19.3" width="7.4" height="3.4" /></bezel>
+ <bezel element="white"><bounds x="87.3" y="28.3" width="7.4" height="3.4" /></bezel>
+ <bezel element="white"><bounds x="87.3" y="37.3" width="7.4" height="3.4" /></bezel>
+ <bezel element="white"><bounds x="87.3" y="46.3" width="7.4" height="3.4" /></bezel>
+ <bezel element="white"><bounds x="87.3" y="55.3" width="7.4" height="3.4" /></bezel>
+ <bezel element="white"><bounds x="87.3" y="64.3" width="7.4" height="3.4" /></bezel>
+ <bezel element="white"><bounds x="87.3" y="73.3" width="7.4" height="3.4" /></bezel>
+
+ <bezel element="text_t81"><bounds x="87.35" y="9.5" width="7.3" height="1.5" /></bezel>
+ <bezel element="text_t82"><bounds x="87.35" y="11" width="7.3" height="1.5" /></bezel>
+ <bezel element="text_t7"><bounds x="87.35" y="20.25" width="7.3" height="1.5" /></bezel>
+ <bezel element="text_t6"><bounds x="87.35" y="29.25" width="7.3" height="1.5" /></bezel>
+ <bezel element="text_t5"><bounds x="87.35" y="38.25" width="7.3" height="1.5" /></bezel>
+ <bezel element="text_t41"><bounds x="87.35" y="46.5" width="7.3" height="1.5" /></bezel>
+ <bezel element="text_t42"><bounds x="87.35" y="48" width="7.3" height="1.5" /></bezel>
+ <bezel element="text_t3"><bounds x="87.35" y="56.25" width="7.3" height="1.5" /></bezel>
+ <bezel element="text_t2"><bounds x="87.35" y="65.25" width="7.3" height="1.5" /></bezel>
+ <bezel element="text_t1"><bounds x="87.35" y="74.25" width="7.3" height="1.5" /></bezel>
+
+ <bezel element="hlb" inputtag="IN.8" inputmask="0x80"><bounds x="87" y="9" width="8" height="4" /><color alpha="0.4" /></bezel>
+ <bezel element="hlb" inputtag="IN.8" inputmask="0x40"><bounds x="87" y="19" width="8" height="4" /><color alpha="0.4" /></bezel>
+ <bezel element="hlb" inputtag="IN.8" inputmask="0x20"><bounds x="87" y="28" width="8" height="4" /><color alpha="0.4" /></bezel>
+ <bezel element="hlb" inputtag="IN.8" inputmask="0x10"><bounds x="87" y="37" width="8" height="4" /><color alpha="0.4" /></bezel>
+ <bezel element="hlb" inputtag="IN.8" inputmask="0x08"><bounds x="87" y="46" width="8" height="4" /><color alpha="0.4" /></bezel>
+ <bezel element="hlb" inputtag="IN.8" inputmask="0x04"><bounds x="87" y="55" width="8" height="4" /><color alpha="0.4" /></bezel>
+ <bezel element="hlb" inputtag="IN.8" inputmask="0x02"><bounds x="87" y="64" width="8" height="4" /><color alpha="0.4" /></bezel>
+ <bezel element="hlb" inputtag="IN.8" inputmask="0x01"><bounds x="87" y="73" width="8" height="4" /><color alpha="0.4" /></bezel>
+
+
+ </view>
+</mamelayout>
diff --git a/src/mame/layout/fidel_sc12.lay b/src/mame/layout/fidel_sc12.lay
new file mode 100644
index 00000000000..3d087368edf
--- /dev/null
+++ b/src/mame/layout/fidel_sc12.lay
@@ -0,0 +1,500 @@
+<?xml version="1.0"?>
+<mamelayout version="2">
+
+<!-- define elements -->
+
+ <element name="static_black"><rect><color red="0.0" green="0.0" blue="0.0" /></rect></element>
+ <element name="blackl"><rect><color red="0.01" green="0.01" blue="0.01" /></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="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="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="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_l1">
+ <rect><color red="0.81" green="0.8" blue="0.79" /></rect>
+ <text string="9" align="2"><color red="0.01" green="0.01" blue="0.01" /></text>
+ </element>
+ <element name="text_l2">
+ <rect><color red="0.81" green="0.8" blue="0.79" /></rect>
+ <text string="10" align="2"><color red="0.01" green="0.01" blue="0.01" /></text>
+ </element>
+ <element name="text_l3">
+ <rect><color red="0.81" green="0.8" blue="0.79" /></rect>
+ <text string="11" align="2"><color red="0.01" green="0.01" blue="0.01" /></text>
+ </element>
+ <element name="text_l4">
+ <rect><color red="0.81" green="0.8" blue="0.79" /></rect>
+ <text string="12" align="2"><color red="0.01" green="0.01" blue="0.01" /></text>
+ </element>
+
+ <element name="text_l5">
+ <rect><color red="0.81" green="0.8" blue="0.79" /></rect>
+ <text string="NO MATE"><color red="0.01" green="0.01" blue="0.01" /></text>
+ </element>
+ <element name="text_l61">
+ <rect><color red="0.81" green="0.8" blue="0.79" /></rect>
+ <text string="DRAW"><color red="0.01" green="0.01" blue="0.01" /></text>
+ </element>
+ <element name="text_l62">
+ <rect><color red="0.81" green="0.8" blue="0.79" /></rect>
+ <text string="ACCEPTED"><color red="0.01" green="0.01" blue="0.01" /></text>
+ </element>
+ <element name="text_l71">
+ <rect><color red="0.81" green="0.8" blue="0.79" /></rect>
+ <text string="DRAW"><color red="0.01" green="0.01" blue="0.01" /></text>
+ </element>
+ <element name="text_l72">
+ <rect><color red="0.81" green="0.8" blue="0.79" /></rect>
+ <text string="DECLINED"><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_b1">
+ <rect><color red="0.81" green="0.8" blue="0.79" /></rect>
+ <text string="WHITE" align="2"><color red="0.01" green="0.01" blue="0.01" /></text>
+ </element>
+ <element name="text_b9">
+ <rect><color red="0.81" green="0.8" blue="0.79" /></rect>
+ <text string="BLACK" align="1"><color red="0.01" green="0.01" blue="0.01" /></text>
+ </element>
+
+ <element name="text_b2">
+ <rect><color red="0.81" green="0.8" blue="0.79" /></rect>
+ <text string="STALEMATE"><color red="0.01" green="0.01" blue="0.01" /></text>
+ </element>
+ <element name="text_b31">
+ <rect><color red="0.81" green="0.8" blue="0.79" /></rect>
+ <text string="3 TIME"><color red="0.01" green="0.01" blue="0.01" /></text>
+ </element>
+ <element name="text_b32">
+ <rect><color red="0.81" green="0.8" blue="0.79" /></rect>
+ <text string="REPEAT"><color red="0.01" green="0.01" blue="0.01" /></text>
+ </element>
+ <element name="text_b41">
+ <rect><color red="0.81" green="0.8" blue="0.79" /></rect>
+ <text string="50 MOVE"><color red="0.01" green="0.01" blue="0.01" /></text>
+ </element>
+ <element name="text_b42">
+ <rect><color red="0.81" green="0.8" blue="0.79" /></rect>
+ <text string="RULE"><color red="0.01" green="0.01" blue="0.01" /></text>
+ </element>
+ <element name="text_b5">
+ <rect><color red="0.81" green="0.8" blue="0.79" /></rect>
+ <text string="YOUR MOVE"><color red="0.01" green="0.01" blue="0.01" /></text>
+ </element>
+ <element name="text_b61">
+ <rect><color red="0.81" green="0.8" blue="0.79" /></rect>
+ <text string="DRAW"><color red="0.01" green="0.01" blue="0.01" /></text>
+ </element>
+ <element name="text_b62">
+ <rect><color red="0.81" green="0.8" blue="0.79" /></rect>
+ <text string="OFFER"><color red="0.01" green="0.01" blue="0.01" /></text>
+ </element>
+ <element name="text_b7">
+ <rect><color red="0.81" green="0.8" blue="0.79" /></rect>
+ <text string="I LOSE"><color red="0.01" green="0.01" blue="0.01" /></text>
+ </element>
+ <element name="text_b8">
+ <rect><color red="0.81" green="0.8" blue="0.79" /></rect>
+ <text string="MATE"><color red="0.01" green="0.01" blue="0.01" /></text>
+ </element>
+
+ <element name="text_illegal">
+ <rect><color red="0.81" green="0.8" blue="0.79" /></rect>
+ <text string="ILLEGAL"><color red="0.01" green="0.01" blue="0.01" /></text>
+ </element>
+ <element name="text_check">
+ <rect><color red="0.81" green="0.8" blue="0.79" /></rect>
+ <text string="CHECK"><color red="0.01" green="0.01" blue="0.01" /></text>
+ </element>
+
+ <element name="text_re">
+ <disk><color red="0.81" green="0.8" blue="0.79" /></disk>
+ <text string="RE"><color red="0.17" green="0.15" blue="0.15" /></text>
+ </element>
+ <element name="text_cl">
+ <disk><color red="0.81" green="0.8" blue="0.79" /></disk>
+ <text string="CL"><color red="0.17" green="0.15" blue="0.15" /></text>
+ </element>
+ <element name="text_king">
+ <disk><color red="0.81" green="0.8" blue="0.79" /></disk>
+ <text string="PB/K"><color red="0.17" green="0.15" blue="0.15" /></text>
+ </element>
+ <element name="text_queen">
+ <disk><color red="0.81" green="0.8" blue="0.79" /></disk>
+ <text string="PV/Q"><color red="0.17" green="0.15" blue="0.15" /></text>
+ </element>
+ <element name="text_rook">
+ <disk><color red="0.81" green="0.8" blue="0.79" /></disk>
+ <text string="LV/R"><color red="0.17" green="0.15" blue="0.15" /></text>
+ </element>
+ <element name="text_bishop">
+ <disk><color red="0.81" green="0.8" blue="0.79" /></disk>
+ <text string="TB/B"><color red="0.17" green="0.15" blue="0.15" /></text>
+ </element>
+ <element name="text_knight">
+ <disk><color red="0.81" green="0.8" blue="0.79" /></disk>
+ <text string="DM/N"><color red="0.17" green="0.15" blue="0.15" /></text>
+ </element>
+ <element name="text_pion">
+ <disk><color red="0.81" green="0.8" blue="0.79" /></disk>
+ <text string="RV/P"><color red="0.17" green="0.15" blue="0.15" /></text>
+ </element>
+
+
+<!-- build screen -->
+
+ <view name="Internal Layout">
+ <bounds left="-7" right="98" top="-2" bottom="93" />
+ <bezel element="static_black">
+ <bounds left="-7" right="98" top="-2" bottom="93" />
+ </bezel>
+
+ <bezel element="white"><bounds x="-7.5" y="-2.5" width="106" height="96" /></bezel>
+
+ <!-- chessboard coords -->
+
+ <bezel element="text_8"><bounds x="-0.8" y="9" width="2" height="2" /></bezel>
+ <bezel element="text_7"><bounds x="-0.8" y="19" width="2" height="2" /></bezel>
+ <bezel element="text_6"><bounds x="-0.8" y="29" width="2" height="2" /></bezel>
+ <bezel element="text_5"><bounds x="-0.8" y="39" width="2" height="2" /></bezel>
+ <bezel element="text_4"><bounds x="-0.8" y="49" width="2" height="2" /></bezel>
+ <bezel element="text_3"><bounds x="-0.8" y="59" width="2" height="2" /></bezel>
+ <bezel element="text_2"><bounds x="-0.8" y="69" width="2" height="2" /></bezel>
+ <bezel element="text_1"><bounds x="-0.8" y="79" 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>
+
+ <!-- left side labels -->
+
+ <bezel element="text_l1"><bounds x="-6.8" y="12" width="5" height="2" /></bezel>
+ <bezel element="text_l2"><bounds x="-6.8" y="22" width="5" height="2" /></bezel>
+ <bezel element="text_l3"><bounds x="-6.8" y="32" width="5" height="2" /></bezel>
+ <bezel element="text_l4"><bounds x="-6.8" y="42" width="5" height="2" /></bezel>
+
+ <bezel element="text_l5"><bounds x="-3.8" y="47.25" width="2" height="11.5" /><orientation rotate="90" /></bezel>
+ <bezel element="text_l61"><bounds x="-3.8" y="58.75" width="2" height="8.5" /><orientation rotate="90" /></bezel>
+ <bezel element="text_l62"><bounds x="-5.81" y="58.0" width="2" height="10" /><orientation rotate="90" /></bezel>
+ <bezel element="text_l71"><bounds x="-3.8" y="68.75" width="2" height="8.5" /><orientation rotate="90" /></bezel>
+ <bezel element="text_l72"><bounds x="-5.81" y="68.0" width="2" height="10" /><orientation rotate="90" /></bezel>
+
+ <bezel element="blackl"><bounds x="-1.3" y="8.75" width="0.3" height="8.5" /></bezel>
+ <bezel element="blackl"><bounds x="-1.3" y="18.75" width="0.3" height="8.5" /></bezel>
+ <bezel element="blackl"><bounds x="-1.3" y="28.75" width="0.3" height="8.5" /></bezel>
+ <bezel element="blackl"><bounds x="-1.3" y="38.75" width="0.3" height="8.5" /></bezel>
+ <bezel element="blackl"><bounds x="-1.3" y="48.75" width="0.3" height="8.5" /></bezel>
+ <bezel element="blackl"><bounds x="-1.3" y="58.75" width="0.3" height="8.5" /></bezel>
+ <bezel element="blackl"><bounds x="-1.3" y="68.75" width="0.3" height="8.5" /></bezel>
+
+ <!-- bottom side labels -->
+
+ <bezel element="text_b1"><bounds x="0" y="87.5" width="7.25" height="2" /></bezel>
+ <bezel element="text_b9"><bounds x="78.75" y="87.5" width="7.25" height="2" /></bezel>
+
+ <bezel element="blackl"><bounds x="3" y="87" width="4.25" height="0.3" /></bezel>
+ <bezel element="blackl"><bounds x="78.75" y="87" width="4.25" height="0.3" /></bezel>
+
+ <bezel element="text_b2"><bounds x="7.35" y="87.5" width="11.3" height="2" /></bezel>
+ <bezel element="text_b31"><bounds x="18.75" y="87.5" width="8.5" height="2" /></bezel>
+ <bezel element="text_b32"><bounds x="18.75" y="89.51" width="8.5" height="2" /></bezel>
+ <bezel element="text_b41"><bounds x="28.75" y="87.5" width="8.5" height="2" /></bezel>
+ <bezel element="text_b42"><bounds x="28.75" y="89.51" width="8.5" height="2" /></bezel>
+ <bezel element="text_b61"><bounds x="48.75" y="87.5" width="8.5" height="2" /></bezel>
+ <bezel element="text_b62"><bounds x="48.75" y="89.51" width="8.5" height="2" /></bezel>
+ <bezel element="text_b5"><bounds x="37.25" y="87.5" width="12" height="2" /></bezel>
+ <bezel element="text_b7"><bounds x="58.75" y="87.5" width="8.5" height="2" /></bezel>
+ <bezel element="text_b8"><bounds x="68.75" y="87.5" width="8.5" height="2" /></bezel>
+
+ <bezel element="blackl"><bounds x="8.75" y="87" width="8.5" height="0.3" /></bezel>
+ <bezel element="blackl"><bounds x="18.75" y="87" width="8.5" height="0.3" /></bezel>
+ <bezel element="blackl"><bounds x="28.75" y="87" width="8.5" height="0.3" /></bezel>
+ <bezel element="blackl"><bounds x="38.75" y="87" width="8.5" height="0.3" /></bezel>
+ <bezel element="blackl"><bounds x="48.75" y="87" width="8.5" height="0.3" /></bezel>
+ <bezel element="blackl"><bounds x="58.75" y="87" width="8.5" height="0.3" /></bezel>
+ <bezel element="blackl"><bounds x="68.75" y="87" width="8.5" height="0.3" /></bezel>
+
+ <!-- chessboard leds -->
+
+ <bezel name="1.0" element="led"><bounds x="-1" y="7.25" width="1.5" height="1.5" /></bezel>
+ <bezel name="1.1" element="led"><bounds x="-1" y="17.25" width="1.5" height="1.5" /></bezel>
+ <bezel name="1.2" element="led"><bounds x="-1" y="27.25" width="1.5" height="1.5" /></bezel>
+ <bezel name="1.3" element="led"><bounds x="-1" y="37.25" width="1.5" height="1.5" /></bezel>
+ <bezel name="1.4" element="led"><bounds x="-1" y="47.25" width="1.5" height="1.5" /></bezel>
+ <bezel name="1.5" element="led"><bounds x="-1" y="57.25" width="1.5" height="1.5" /></bezel>
+ <bezel name="1.6" element="led"><bounds x="-1" y="67.25" width="1.5" height="1.5" /></bezel>
+ <bezel name="1.7" element="led"><bounds x="-1" y="77.25" width="1.5" height="1.5" /></bezel>
+
+ <bezel name="0.0" element="led"><bounds x="7.25" y="85.5" width="1.5" height="1.5" /></bezel>
+ <bezel name="0.1" element="led"><bounds x="17.25" y="85.5" width="1.5" height="1.5" /></bezel>
+ <bezel name="0.2" element="led"><bounds x="27.25" y="85.5" width="1.5" height="1.5" /></bezel>
+ <bezel name="0.3" element="led"><bounds x="37.25" y="85.5" width="1.5" height="1.5" /></bezel>
+ <bezel name="0.4" element="led"><bounds x="47.25" y="85.5" width="1.5" height="1.5" /></bezel>
+ <bezel name="0.5" element="led"><bounds x="57.25" y="85.5" width="1.5" height="1.5" /></bezel>
+ <bezel name="0.6" element="led"><bounds x="67.25" y="85.5" width="1.5" height="1.5" /></bezel>
+ <bezel name="0.7" element="led"><bounds x="77.25" y="85.5" width="1.5" height="1.5" /></bezel>
+
+ <bezel element="text_illegal"><bounds x="85" y="79.5" width="11.4" height="2" /></bezel>
+ <bezel element="text_check"><bounds x="85" y="83.5" width="11.4" height="2" /></bezel>
+
+ <bezel name="1.8" element="led"><bounds x="89.95" y="81.5" width="1.5" height="1.5" /></bezel>
+ <bezel name="0.8" element="led"><bounds x="89.95" 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.1" inputmask="0x80"><bounds x="13" y="3" width="10" height="10" /><color alpha="0.2" /></bezel>
+ <bezel element="hl" inputtag="IN.2" inputmask="0x80"><bounds x="23" y="3" width="10" height="10" /><color alpha="0.4" /></bezel>
+ <bezel element="hl" inputtag="IN.3" inputmask="0x80"><bounds x="33" y="3" width="10" height="10" /><color alpha="0.2" /></bezel>
+ <bezel element="hl" inputtag="IN.4" inputmask="0x80"><bounds x="43" y="3" width="10" height="10" /><color alpha="0.4" /></bezel>
+ <bezel element="hl" inputtag="IN.5" inputmask="0x80"><bounds x="53" y="3" width="10" height="10" /><color alpha="0.2" /></bezel>
+ <bezel element="hl" inputtag="IN.6" inputmask="0x80"><bounds x="63" y="3" width="10" height="10" /><color alpha="0.4" /></bezel>
+ <bezel element="hl" inputtag="IN.7" inputmask="0x80"><bounds x="73" y="3" width="10" height="10" /><color alpha="0.2" /></bezel>
+
+ <bezel element="hl" inputtag="IN.0" inputmask="0x40"><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.2" inputmask="0x40"><bounds x="23" y="13" width="10" height="10" /><color alpha="0.2" /></bezel>
+ <bezel element="hl" inputtag="IN.3" inputmask="0x40"><bounds x="33" y="13" width="10" height="10" /><color alpha="0.4" /></bezel>
+ <bezel element="hl" inputtag="IN.4" inputmask="0x40"><bounds x="43" y="13" width="10" height="10" /><color alpha="0.2" /></bezel>
+ <bezel element="hl" inputtag="IN.5" inputmask="0x40"><bounds x="53" y="13" width="10" height="10" /><color alpha="0.4" /></bezel>
+ <bezel element="hl" inputtag="IN.6" inputmask="0x40"><bounds x="63" y="13" width="10" height="10" /><color alpha="0.2" /></bezel>
+ <bezel element="hl" inputtag="IN.7" inputmask="0x40"><bounds x="73" y="13" width="10" height="10" /><color alpha="0.4" /></bezel>
+
+ <bezel element="hl" inputtag="IN.0" inputmask="0x20"><bounds x="3" y="23" width="10" height="10" /><color alpha="0.4" /></bezel>
+ <bezel element="hl" inputtag="IN.1" inputmask="0x20"><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.3" inputmask="0x20"><bounds x="33" y="23" width="10" height="10" /><color alpha="0.2" /></bezel>
+ <bezel element="hl" inputtag="IN.4" inputmask="0x20"><bounds x="43" y="23" width="10" height="10" /><color alpha="0.4" /></bezel>
+ <bezel element="hl" inputtag="IN.5" inputmask="0x20"><bounds x="53" y="23" width="10" height="10" /><color alpha="0.2" /></bezel>
+ <bezel element="hl" inputtag="IN.6" inputmask="0x20"><bounds x="63" y="23" width="10" height="10" /><color alpha="0.4" /></bezel>
+ <bezel element="hl" inputtag="IN.7" inputmask="0x20"><bounds x="73" y="23" width="10" height="10" /><color alpha="0.2" /></bezel>
+
+ <bezel element="hl" inputtag="IN.0" inputmask="0x10"><bounds x="3" y="33" width="10" height="10" /><color alpha="0.2" /></bezel>
+ <bezel element="hl" inputtag="IN.1" inputmask="0x10"><bounds x="13" y="33" width="10" height="10" /><color alpha="0.4" /></bezel>
+ <bezel element="hl" inputtag="IN.2" inputmask="0x10"><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.4" inputmask="0x10"><bounds x="43" y="33" width="10" height="10" /><color alpha="0.2" /></bezel>
+ <bezel element="hl" inputtag="IN.5" inputmask="0x10"><bounds x="53" y="33" width="10" height="10" /><color alpha="0.4" /></bezel>
+ <bezel element="hl" inputtag="IN.6" inputmask="0x10"><bounds x="63" y="33" width="10" height="10" /><color alpha="0.2" /></bezel>
+ <bezel element="hl" inputtag="IN.7" inputmask="0x10"><bounds x="73" y="33" width="10" height="10" /><color alpha="0.4" /></bezel>
+
+ <bezel element="hl" inputtag="IN.0" inputmask="0x08"><bounds x="3" y="43" width="10" height="10" /><color alpha="0.4" /></bezel>
+ <bezel element="hl" inputtag="IN.1" inputmask="0x08"><bounds x="13" y="43" width="10" height="10" /><color alpha="0.2" /></bezel>
+ <bezel element="hl" inputtag="IN.2" inputmask="0x08"><bounds x="23" y="43" width="10" height="10" /><color alpha="0.4" /></bezel>
+ <bezel element="hl" inputtag="IN.3" inputmask="0x08"><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.5" inputmask="0x08"><bounds x="53" y="43" width="10" height="10" /><color alpha="0.2" /></bezel>
+ <bezel element="hl" inputtag="IN.6" inputmask="0x08"><bounds x="63" y="43" width="10" height="10" /><color alpha="0.4" /></bezel>
+ <bezel element="hl" inputtag="IN.7" inputmask="0x08"><bounds x="73" y="43" width="10" height="10" /><color alpha="0.2" /></bezel>
+
+ <bezel element="hl" inputtag="IN.0" inputmask="0x04"><bounds x="3" y="53" width="10" height="10" /><color alpha="0.2" /></bezel>
+ <bezel element="hl" inputtag="IN.1" inputmask="0x04"><bounds x="13" y="53" width="10" height="10" /><color alpha="0.4" /></bezel>
+ <bezel element="hl" inputtag="IN.2" inputmask="0x04"><bounds x="23" y="53" width="10" height="10" /><color alpha="0.2" /></bezel>
+ <bezel element="hl" inputtag="IN.3" inputmask="0x04"><bounds x="33" y="53" width="10" height="10" /><color alpha="0.4" /></bezel>
+ <bezel element="hl" inputtag="IN.4" inputmask="0x04"><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.6" inputmask="0x04"><bounds x="63" y="53" width="10" height="10" /><color alpha="0.2" /></bezel>
+ <bezel element="hl" inputtag="IN.7" inputmask="0x04"><bounds x="73" y="53" width="10" height="10" /><color alpha="0.4" /></bezel>
+
+ <bezel element="hl" inputtag="IN.0" inputmask="0x02"><bounds x="3" y="63" width="10" height="10" /><color alpha="0.4" /></bezel>
+ <bezel element="hl" inputtag="IN.1" inputmask="0x02"><bounds x="13" y="63" width="10" height="10" /><color alpha="0.2" /></bezel>
+ <bezel element="hl" inputtag="IN.2" inputmask="0x02"><bounds x="23" y="63" width="10" height="10" /><color alpha="0.4" /></bezel>
+ <bezel element="hl" inputtag="IN.3" inputmask="0x02"><bounds x="33" y="63" width="10" height="10" /><color alpha="0.2" /></bezel>
+ <bezel element="hl" inputtag="IN.4" inputmask="0x02"><bounds x="43" y="63" width="10" height="10" /><color alpha="0.4" /></bezel>
+ <bezel element="hl" inputtag="IN.5" inputmask="0x02"><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.7" inputmask="0x02"><bounds x="73" y="63" width="10" height="10" /><color alpha="0.2" /></bezel>
+
+ <bezel element="hl" inputtag="IN.0" inputmask="0x01"><bounds x="3" y="73" width="10" height="10" /><color alpha="0.2" /></bezel>
+ <bezel element="hl" inputtag="IN.1" inputmask="0x01"><bounds x="13" y="73" width="10" height="10" /><color alpha="0.4" /></bezel>
+ <bezel element="hl" inputtag="IN.2" inputmask="0x01"><bounds x="23" y="73" width="10" height="10" /><color alpha="0.2" /></bezel>
+ <bezel element="hl" inputtag="IN.3" inputmask="0x01"><bounds x="33" y="73" width="10" height="10" /><color alpha="0.4" /></bezel>
+ <bezel element="hl" inputtag="IN.4" inputmask="0x01"><bounds x="43" y="73" width="10" height="10" /><color alpha="0.2" /></bezel>
+ <bezel element="hl" inputtag="IN.5" inputmask="0x01"><bounds x="53" y="73" width="10" height="10" /><color alpha="0.4" /></bezel>
+ <bezel element="hl" inputtag="IN.6" inputmask="0x01"><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>
+
+ <!-- right side -->
+
+ <bezel element="disk_black"><bounds x="87" y="3.1" width="7.4" height="7.4" /></bezel>
+ <bezel element="disk_black"><bounds x="87" y="12.4" width="7.4" height="7.4" /></bezel>
+ <bezel element="disk_black"><bounds x="87" y="24.3" width="7.4" height="7.4" /></bezel>
+ <bezel element="disk_black"><bounds x="87" y="33.6" width="7.4" height="7.4" /></bezel>
+ <bezel element="disk_black"><bounds x="87" y="42.9" width="7.4" height="7.4" /></bezel>
+ <bezel element="disk_black"><bounds x="87" y="52.2" width="7.4" height="7.4" /></bezel>
+ <bezel element="disk_black"><bounds x="87" y="61.5" width="7.4" height="7.4" /></bezel>
+ <bezel element="disk_black"><bounds x="87" y="70.8" width="7.4" height="7.4" /></bezel>
+
+ <bezel element="disk_white"><bounds x="87.8" y="3.9" width="5.8" height="5.8" /></bezel>
+ <bezel element="disk_white"><bounds x="87.8" y="13.2" width="5.8" height="5.8" /></bezel>
+ <bezel element="disk_white"><bounds x="87.8" y="25.1" width="5.8" height="5.8" /></bezel>
+ <bezel element="disk_white"><bounds x="87.8" y="34.4" width="5.8" height="5.8" /></bezel>
+ <bezel element="disk_white"><bounds x="87.8" y="43.7" width="5.8" height="5.8" /></bezel>
+ <bezel element="disk_white"><bounds x="87.8" y="53 " width="5.8" height="5.8" /></bezel>
+ <bezel element="disk_white"><bounds x="87.8" y="62.3" width="5.8" height="5.8" /></bezel>
+ <bezel element="disk_white"><bounds x="87.8" y="71.6" width="5.8" height="5.8" /></bezel>
+
+ <bezel element="text_re"><bounds x="87.8" y="5.6" width="5.8" height="2.4" /></bezel>
+ <bezel element="text_cl"><bounds x="87.8" y="14.9" width="5.8" height="2.4" /></bezel>
+ <bezel element="text_king"><bounds x="87.8" y="26.8" width="5.8" height="2.4" /></bezel>
+ <bezel element="text_queen"><bounds x="87.8" y="36.1" width="5.8" height="2.4" /></bezel>
+ <bezel element="text_rook"><bounds x="87.8" y="45.4" width="5.8" height="2.4" /></bezel>
+ <bezel element="text_bishop"><bounds x="87.8" y="54.7" width="5.8" height="2.4" /></bezel>
+ <bezel element="text_knight"><bounds x="87.8" y="64 " width="5.8" height="2.4" /></bezel>
+ <bezel element="text_pion"><bounds x="87.8" y="73.3" width="5.8" height="2.4" /></bezel>
+
+ <bezel element="hlb" inputtag="IN.8" inputmask="0x80"><bounds x="87" y="3.1" width="7.4" height="7.4" /><color alpha="0.3" /></bezel>
+ <bezel element="hlb" inputtag="IN.8" inputmask="0x40"><bounds x="87" y="12.4" width="7.4" height="7.4" /><color alpha="0.3" /></bezel>
+ <bezel element="hlb" inputtag="IN.8" inputmask="0x20"><bounds x="87" y="24.3" width="7.4" height="7.4" /><color alpha="0.3" /></bezel>
+ <bezel element="hlb" inputtag="IN.8" inputmask="0x10"><bounds x="87" y="33.6" width="7.4" height="7.4" /><color alpha="0.3" /></bezel>
+ <bezel element="hlb" inputtag="IN.8" inputmask="0x08"><bounds x="87" y="42.9" width="7.4" height="7.4" /><color alpha="0.3" /></bezel>
+ <bezel element="hlb" inputtag="IN.8" inputmask="0x04"><bounds x="87" y="52.2" width="7.4" height="7.4" /><color alpha="0.3" /></bezel>
+ <bezel element="hlb" inputtag="IN.8" inputmask="0x02"><bounds x="87" y="61.5" width="7.4" height="7.4" /><color alpha="0.3" /></bezel>
+ <bezel element="hlb" inputtag="IN.8" inputmask="0x01"><bounds x="87" y="70.8" width="7.4" height="7.4" /><color alpha="0.3" /></bezel>
+
+
+ </view>
+</mamelayout>
diff --git a/src/mame/layout/fidel_vbrc.lay b/src/mame/layout/fidel_vbrc.lay
index 3fbbe99deb3..d28248fb36b 100644
--- a/src/mame/layout/fidel_vbrc.lay
+++ b/src/mame/layout/fidel_vbrc.lay
@@ -1,16 +1,16 @@
<?xml version="1.0"?>
<mamelayout version="2">
+
<element name="digit" defstate="0">
- <led14seg>
- <color red="0.0" green="0.6" blue="1.0" />
- </led14seg>
+ <led14seg><color red="0.2" green="1.0" blue="0.85" /></led14seg>
</element>
+
<element name="led" defstate="0">
- <rect state="1">
- <color red="0.0" green="0.2" blue="0.2" />
- </rect>
<rect state="0">
- <color red="0.0" green="0.6" blue="1.0" />
+ <color red="0.2" green="0.0" blue="0.0" />
+ </rect>
+ <rect state="1">
+ <color red="0.9" green="0.0" blue="0.0" />
</rect>
</element>
@@ -30,59 +30,59 @@
</rect>
</element>
- <view name="Default Layout">
+ <view name="Internal Layout">
<!-- Black background -->
<bezel element="background">
<bounds left="00" top="00" right="430" bottom="90" />
</bezel>
- <bezel name="digit1" element="digit">
+ <bezel name="digit0" element="digit">
<bounds x="10" y="20" width="50" height="80" />
</bezel>
- <bezel name="digit2" element="digit">
+ <bezel name="digit1" element="digit">
<bounds x="70" y="20" width="50" height="80" />
</bezel>
- <bezel name="digit3" element="digit">
+ <bezel name="digit2" element="digit">
<bounds x="130" y="20" width="50" height="80" />
</bezel>
- <bezel name="digit4" element="digit">
+ <bezel name="digit3" element="digit">
<bounds x="190" y="20" width="50" height="80" />
</bezel>
- <bezel name="digit5" element="digit">
+ <bezel name="digit4" element="digit">
<bounds x="250" y="20" width="50" height="80" />
</bezel>
- <bezel name="digit6" element="digit">
+ <bezel name="digit5" element="digit">
<bounds x="310" y="20" width="50" height="80" />
</bezel>
- <bezel name="digit7" element="digit">
+ <bezel name="digit6" element="digit">
<bounds x="370" y="20" width="50" height="80" />
</bezel>
- <bezel name="digit8" element="digit">
+ <bezel name="digit7" element="digit">
<bounds x="430" y="20" width="50" height="80" />
</bezel>
- <bezel name="led1" element="led">
+ <bezel name="7.15" element="led">
<bounds x="35" y="5" width="10" height="10" />
</bezel>
- <bezel name="led2" element="led">
+ <bezel name="6.15" element="led">
<bounds x="95" y="5" width="10" height="10" />
</bezel>
- <bezel name="led3" element="led">
+ <bezel name="5.15" element="led">
<bounds x="155" y="5" width="10" height="10" />
</bezel>
- <bezel name="led4" element="led">
+ <bezel name="4.15" element="led">
<bounds x="215" y="5" width="10" height="10" />
</bezel>
- <bezel name="led5" element="led">
+ <bezel name="3.15" element="led">
<bounds x="275" y="5" width="10" height="10" />
</bezel>
- <bezel name="led6" element="led">
+ <bezel name="2.15" element="led">
<bounds x="335" y="5" width="10" height="10" />
</bezel>
- <bezel name="led7" element="led">
+ <bezel name="1.15" element="led">
<bounds x="395" y="5" width="10" height="10" />
</bezel>
- <bezel name="led8" element="led">
+ <bezel name="0.15" element="led">
<bounds x="455" y="5" width="10" height="10" />
</bezel>
diff --git a/src/mame/layout/fidel_vcc.lay b/src/mame/layout/fidel_vcc.lay
index 24aabb55f2b..bb58b17b2ae 100644
--- a/src/mame/layout/fidel_vcc.lay
+++ b/src/mame/layout/fidel_vcc.lay
@@ -1,48 +1,67 @@
<?xml version="1.0"?>
<mamelayout version="2">
+
+<!-- define elements -->
+
+ <element name="static_black"><rect><color red="0.0" green="0.0" blue="0.0" /></rect></element>
+ <element name="static_bg"><rect><color red="0.5" green="0.5" blue="0.5" /></rect></element>
+
<element name="digit" defstate="0">
- <led7seg>
- <color red="0.75" green="0.0" blue="0.0" />
- </led7seg>
+ <led7seg><color red="1.0" green="0.1" blue="0.15" /></led7seg>
</element>
+
<element name="led" defstate="0">
- <disk state="1">
- <color red="0.75" green="0.0" blue="0.0" />
- </disk>
- <disk state="0">
- <color red="0.09375" green="0.0" blue="0.0" />
- </disk>
+ <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="background">
- <rect>
- <bounds left="0" top="0" right="1" bottom="1" />
- <color red="0.0" green="0.0" blue="0.0" />
- </rect>
+
+ <element name="txt_from">
+ <rect><color red="0.5" green="0.5" blue="0.5" /></rect>
+ <text string="FROM"><color red="0.03" green="0.03" blue="0.03" /></text>
+ </element>
+ <element name="txt_to">
+ <rect><color red="0.5" green="0.5" blue="0.5" /></rect>
+ <text string="TO"><color red="0.03" green="0.03" blue="0.03" /></text>
</element>
- <view name="Default Layout">
- <!-- Black background -->
- <bezel element="background">
- <bounds left="00" top="00" right="250" bottom="80" />
+
+<!-- build screen -->
+
+ <view name="Internal Layout">
+ <bounds left="0" right="47" top="0" bottom="25" />
+ <bezel element="static_bg">
+ <bounds left="-1" right="48" top="-1" bottom="26" />
+ </bezel>
+
+ <bezel element="txt_from">
+ <bounds x="1" y="21" width="20" height="3" />
+ </bezel>
+ <bezel element="txt_to">
+ <bounds x="26" y="21" width="20" height="3" />
</bezel>
+ <bezel element="static_black">
+ <bounds left="-2" right="49" top="4" bottom="21" />
+ </bezel>
<bezel name="digit0" element="digit">
- <bounds x="10" y="0" width="50" height="80" />
+ <bounds x="1" y="5" width="10" height="15" />
</bezel>
<bezel name="digit1" element="digit">
- <bounds x="70" y="0" width="50" height="80" />
+ <bounds x="11" y="5" width="10" height="15" />
</bezel>
<bezel name="digit2" element="digit">
- <bounds x="140" y="0" width="50" height="80" />
+ <bounds x="26" y="5" width="10" height="15" />
</bezel>
<bezel name="digit3" element="digit">
- <bounds x="200" y="0" width="50" height="80" />
+ <bounds x="36" y="5" width="10" height="15" />
</bezel>
+
<bezel name="1.7" element="led">
- <bounds x="130" y="10" width="10" height="10" />
+ <bounds x="23.25" y="6.5" width="1.5" height="1.5" />
</bezel>
<bezel name="0.7" element="led">
- <bounds x="130" y="60" width="10" height="10" />
+ <bounds x="22.25" y="17" width="1.5" height="1.5" />
</bezel>
+
</view>
</mamelayout>
diff --git a/src/mame/layout/fidel_vsc.lay b/src/mame/layout/fidel_vsc.lay
index ab74badbb94..f9c2c742620 100644
--- a/src/mame/layout/fidel_vsc.lay
+++ b/src/mame/layout/fidel_vsc.lay
@@ -1,262 +1,491 @@
<?xml version="1.0"?>
<mamelayout version="2">
+
+<!-- define elements -->
+
+ <element name="static_black"><rect><color red="0.0" green="0.0" blue="0.0" /></rect></element>
+
<element name="digit" defstate="0">
- <led7seg>
- <color red="0.75" green="0.0" blue="0.0" />
- </led7seg>
+ <led7seg><color red="1.0" green="0.1" blue="0.15" /></led7seg>
</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="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">
- <color red="0.75" green="0.0" blue="0.0" />
+ <bounds x="0.12" y="0.12" width="0.76" height="0.76" />
+ <color red="1.0" green="1.0" blue="1.0" />
</disk>
- <disk state="0">
- <color red="0.20" green="0.0" blue="0.0" />
+ </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="background">
- <rect>
- <bounds left="0" top="0" right="1" bottom="1" />
+ <element name="hlp" 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>
+ <rect 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" />
</rect>
</element>
- <view name="Default Layout">
- <!-- background -->
- <bezel element="background">
- <bounds left="00" top="00" right="82" bottom="90" />
- </bezel>
+ <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="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>
- <!-- Column A -->
- <bezel name="4.7" element="led" inputtag="IN.0" inputmask="0x80">
- <bounds x="5" y="15" width="2" height="2" />
- </bezel>
- <bezel name="4.6" element="led" inputtag="IN.0" inputmask="0x40">
- <bounds x="5" y="25" width="2" height="2" />
- </bezel>
- <bezel name="4.5" element="led" inputtag="IN.0" inputmask="0x20">
- <bounds x="5" y="35" width="2" height="2" />
- </bezel>
- <bezel name="4.4" element="led" inputtag="IN.0" inputmask="0x10">
- <bounds x="5" y="45" width="2" height="2" />
- </bezel>
- <bezel name="4.3" element="led" inputtag="IN.0" inputmask="0x08">
- <bounds x="5" y="55" width="2" height="2" />
- </bezel>
- <bezel name="4.2" element="led" inputtag="IN.0" inputmask="0x04">
- <bounds x="5" y="65" width="2" height="2" />
- </bezel>
- <bezel name="4.1" element="led" inputtag="IN.0" inputmask="0x02">
- <bounds x="5" y="75" width="2" height="2" />
- </bezel>
- <bezel name="4.0" element="led" inputtag="IN.0" inputmask="0x01">
- <bounds x="5" y="85" width="2" height="2" />
- </bezel>
+ <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>
- <!-- Column B -->
- <bezel name="5.7" element="led" inputtag="IN.1" inputmask="0x80">
- <bounds x="15" y="15" width="2" height="2" />
- </bezel>
- <bezel name="5.6" element="led" inputtag="IN.1" inputmask="0x40">
- <bounds x="15" y="25" width="2" height="2" />
- </bezel>
- <bezel name="5.5" element="led" inputtag="IN.1" inputmask="0x20">
- <bounds x="15" y="35" width="2" height="2" />
- </bezel>
- <bezel name="5.4" element="led" inputtag="IN.1" inputmask="0x10">
- <bounds x="15" y="45" width="2" height="2" />
- </bezel>
- <bezel name="5.3" element="led" inputtag="IN.1" inputmask="0x08">
- <bounds x="15" y="55" width="2" height="2" />
- </bezel>
- <bezel name="5.2" element="led" inputtag="IN.1" inputmask="0x04">
- <bounds x="15" y="65" width="2" height="2" />
- </bezel>
- <bezel name="5.1" element="led" inputtag="IN.1" inputmask="0x02">
- <bounds x="15" y="75" width="2" height="2" />
- </bezel>
- <bezel name="5.0" element="led" inputtag="IN.1" inputmask="0x01">
- <bounds x="15" y="85" width="2" height="2" />
- </bezel>
+ <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>
- <!-- Column C -->
- <bezel name="6.7" element="led" inputtag="IN.2" inputmask="0x80">
- <bounds x="25" y="15" width="2" height="2" />
- </bezel>
- <bezel name="6.6" element="led" inputtag="IN.2" inputmask="0x40">
- <bounds x="25" y="25" width="2" height="2" />
- </bezel>
- <bezel name="6.5" element="led" inputtag="IN.2" inputmask="0x20">
- <bounds x="25" y="35" width="2" height="2" />
- </bezel>
- <bezel name="6.4" element="led" inputtag="IN.2" inputmask="0x10">
- <bounds x="25" y="45" width="2" height="2" />
- </bezel>
- <bezel name="6.3" element="led" inputtag="IN.2" inputmask="0x08">
- <bounds x="25" y="55" width="2" height="2" />
- </bezel>
- <bezel name="6.2" element="led" inputtag="IN.2" inputmask="0x04">
- <bounds x="25" y="65" width="2" height="2" />
- </bezel>
- <bezel name="6.1" element="led" inputtag="IN.2" inputmask="0x02">
- <bounds x="25" y="75" width="2" height="2" />
- </bezel>
- <bezel name="6.0" element="led" inputtag="IN.2" inputmask="0x01">
- <bounds x="25" y="85" width="2" height="2" />
- </bezel>
+ <element name="text_re">
+ <disk><color red="0.81" green="0.8" blue="0.79" /></disk>
+ <text string="RE"><color red="0.17" green="0.15" blue="0.15" /></text>
+ </element>
+ <element name="text_cl">
+ <disk><color red="0.81" green="0.8" blue="0.79" /></disk>
+ <text string="CL"><color red="0.17" green="0.15" blue="0.15" /></text>
+ </element>
+ <element name="text_king">
+ <disk><color red="0.81" green="0.8" blue="0.79" /></disk>
+ <text string="K"><color red="0.17" green="0.15" blue="0.15" /></text>
+ </element>
+ <element name="text_queen">
+ <disk><color red="0.81" green="0.8" blue="0.79" /></disk>
+ <text string="Q"><color red="0.17" green="0.15" blue="0.15" /></text>
+ </element>
+ <element name="text_rook">
+ <disk><color red="0.81" green="0.8" blue="0.79" /></disk>
+ <text string="R"><color red="0.17" green="0.15" blue="0.15" /></text>
+ </element>
+ <element name="text_bishop">
+ <disk><color red="0.81" green="0.8" blue="0.79" /></disk>
+ <text string="B"><color red="0.17" green="0.15" blue="0.15" /></text>
+ </element>
+ <element name="text_knight">
+ <disk><color red="0.81" green="0.8" blue="0.79" /></disk>
+ <text string="N"><color red="0.17" green="0.15" blue="0.15" /></text>
+ </element>
+ <element name="text_pion">
+ <disk><color red="0.81" green="0.8" blue="0.79" /></disk>
+ <text string="P"><color red="0.17" green="0.15" blue="0.15" /></text>
+ </element>
- <!-- Column D -->
- <bezel name="7.7" element="led" inputtag="IN.3" inputmask="0x80">
- <bounds x="35" y="15" width="2" height="2" />
- </bezel>
- <bezel name="7.6" element="led" inputtag="IN.3" inputmask="0x40">
- <bounds x="35" y="25" width="2" height="2" />
- </bezel>
- <bezel name="7.5" element="led" inputtag="IN.3" inputmask="0x20">
- <bounds x="35" y="35" width="2" height="2" />
- </bezel>
- <bezel name="7.4" element="led" inputtag="IN.3" inputmask="0x10">
- <bounds x="35" y="45" width="2" height="2" />
- </bezel>
- <bezel name="7.3" element="led" inputtag="IN.3" inputmask="0x08">
- <bounds x="35" y="55" width="2" height="2" />
- </bezel>
- <bezel name="7.2" element="led" inputtag="IN.3" inputmask="0x04">
- <bounds x="35" y="65" width="2" height="2" />
- </bezel>
- <bezel name="7.1" element="led" inputtag="IN.3" inputmask="0x02">
- <bounds x="35" y="75" width="2" height="2" />
- </bezel>
- <bezel name="7.0" element="led" inputtag="IN.3" inputmask="0x01">
- <bounds x="35" y="85" width="2" height="2" />
- </bezel>
+ <element name="text_tm">
+ <rect><color red="0.17" green="0.15" blue="0.15" /></rect>
+ <text string="TM"><color red="0.81" green="0.8" blue="0.79" /></text>
+ </element>
+ <element name="text_rv">
+ <rect><color red="0.17" green="0.15" blue="0.15" /></rect>
+ <text string="RV"><color red="0.81" green="0.8" blue="0.79" /></text>
+ </element>
+ <element name="text_speak">
+ <rect><color red="0.17" green="0.15" blue="0.15" /></rect>
+ <text string="spk"><color red="0.81" green="0.8" blue="0.79" /></text>
+ </element>
+ <element name="text_st">
+ <rect><color red="0.17" green="0.15" blue="0.15" /></rect>
+ <text string="ST"><color red="0.81" green="0.8" blue="0.79" /></text>
+ </element>
+ <element name="text_dm">
+ <rect><color red="0.17" green="0.15" blue="0.15" /></rect>
+ <text string="DM"><color red="0.81" green="0.8" blue="0.79" /></text>
+ </element>
+ <element name="text_lv">
+ <rect><color red="0.17" green="0.15" blue="0.15" /></rect>
+ <text string="LV"><color red="0.81" green="0.8" blue="0.79" /></text>
+ </element>
- <!-- Column E -->
- <bezel name="8.7" element="led" inputtag="IN.4" inputmask="0x80">
- <bounds x="45" y="15" width="2" height="2" />
- </bezel>
- <bezel name="8.6" element="led" inputtag="IN.4" inputmask="0x40">
- <bounds x="45" y="25" width="2" height="2" />
- </bezel>
- <bezel name="8.5" element="led" inputtag="IN.4" inputmask="0x20">
- <bounds x="45" y="35" width="2" height="2" />
- </bezel>
- <bezel name="8.4" element="led" inputtag="IN.4" inputmask="0x10">
- <bounds x="45" y="45" width="2" height="2" />
- </bezel>
- <bezel name="8.3" element="led" inputtag="IN.4" inputmask="0x08">
- <bounds x="45" y="55" width="2" height="2" />
- </bezel>
- <bezel name="8.2" element="led" inputtag="IN.4" inputmask="0x04">
- <bounds x="45" y="65" width="2" height="2" />
- </bezel>
- <bezel name="8.1" element="led" inputtag="IN.4" inputmask="0x02">
- <bounds x="45" y="75" width="2" height="2" />
- </bezel>
- <bezel name="8.0" element="led" inputtag="IN.4" inputmask="0x01">
- <bounds x="45" y="85" width="2" height="2" />
- </bezel>
- <!-- Column F -->
- <bezel name="9.7" element="led" inputtag="IN.5" inputmask="0x80">
- <bounds x="55" y="15" width="2" height="2" />
- </bezel>
- <bezel name="9.6" element="led" inputtag="IN.5" inputmask="0x40">
- <bounds x="55" y="25" width="2" height="2" />
- </bezel>
- <bezel name="9.5" element="led" inputtag="IN.5" inputmask="0x20">
- <bounds x="55" y="35" width="2" height="2" />
- </bezel>
- <bezel name="9.4" element="led" inputtag="IN.5" inputmask="0x10">
- <bounds x="55" y="45" width="2" height="2" />
- </bezel>
- <bezel name="9.3" element="led" inputtag="IN.5" inputmask="0x08">
- <bounds x="55" y="55" width="2" height="2" />
- </bezel>
- <bezel name="9.2" element="led" inputtag="IN.5" inputmask="0x04">
- <bounds x="55" y="65" width="2" height="2" />
- </bezel>
- <bezel name="9.1" element="led" inputtag="IN.5" inputmask="0x02">
- <bounds x="55" y="75" width="2" height="2" />
- </bezel>
- <bezel name="9.0" element="led" inputtag="IN.5" inputmask="0x01">
- <bounds x="55" y="85" width="2" height="2" />
- </bezel>
+<!-- build screen -->
- <!-- Column G -->
- <bezel name="10.7" element="led" inputtag="IN.6" inputmask="0x80">
- <bounds x="65" y="15" width="2" height="2" />
- </bezel>
- <bezel name="10.6" element="led" inputtag="IN.6" inputmask="0x40">
- <bounds x="65" y="25" width="2" height="2" />
- </bezel>
- <bezel name="10.5" element="led" inputtag="IN.6" inputmask="0x20">
- <bounds x="65" y="35" width="2" height="2" />
- </bezel>
- <bezel name="10.4" element="led" inputtag="IN.6" inputmask="0x10">
- <bounds x="65" y="45" width="2" height="2" />
- </bezel>
- <bezel name="10.3" element="led" inputtag="IN.6" inputmask="0x08">
- <bounds x="65" y="55" width="2" height="2" />
- </bezel>
- <bezel name="10.2" element="led" inputtag="IN.6" inputmask="0x04">
- <bounds x="65" y="65" width="2" height="2" />
- </bezel>
- <bezel name="10.1" element="led" inputtag="IN.6" inputmask="0x02">
- <bounds x="65" y="75" width="2" height="2" />
- </bezel>
- <bezel name="10.0" element="led" inputtag="IN.6" inputmask="0x01">
- <bounds x="65" y="85" width="2" height="2" />
+ <view name="Internal Layout">
+ <bounds left="-2" right="98" top="-18" bottom="88" />
+ <bezel element="static_black">
+ <bounds left="-2" right="98" top="-18" bottom="88" />
</bezel>
- <!-- Column H -->
- <bezel name="11.7" element="led" inputtag="IN.7" inputmask="0x80">
- <bounds x="75" y="15" width="2" height="2" />
- </bezel>
- <bezel name="11.6" element="led" inputtag="IN.7" inputmask="0x40">
- <bounds x="75" y="25" width="2" height="2" />
- </bezel>
- <bezel name="11.5" element="led" inputtag="IN.7" inputmask="0x20">
- <bounds x="75" y="35" width="2" height="2" />
- </bezel>
- <bezel name="11.4" element="led" inputtag="IN.7" inputmask="0x10">
- <bounds x="75" y="45" width="2" height="2" />
- </bezel>
- <bezel name="11.3" element="led" inputtag="IN.7" inputmask="0x08">
- <bounds x="75" y="55" width="2" height="2" />
- </bezel>
- <bezel name="11.2" element="led" inputtag="IN.7" inputmask="0x04">
- <bounds x="75" y="65" width="2" height="2" />
- </bezel>
- <bezel name="11.1" element="led" inputtag="IN.7" inputmask="0x02">
- <bounds x="75" y="75" width="2" height="2" />
- </bezel>
- <bezel name="11.0" element="led" inputtag="IN.7" inputmask="0x01">
- <bounds x="75" y="85" width="2" height="2" />
- </bezel>
+ <bezel element="white"><bounds x="-2.5" y="-2" width="101" height="90.5" /></bezel>
- <!-- Problem mode LED -->
- <bezel name="0.7" element="led">
- <bounds x="69" y="5" width="2" height="2" />
- </bezel>
+ <!-- chessboard coords -->
+
+ <bezel element="text_8"><bounds x="-0.8" y="7" width="2" height="2" /></bezel>
+ <bezel element="text_7"><bounds x="-0.8" y="17" width="2" height="2" /></bezel>
+ <bezel element="text_6"><bounds x="-0.8" y="27" width="2" height="2" /></bezel>
+ <bezel element="text_5"><bounds x="-0.8" y="37" width="2" height="2" /></bezel>
+ <bezel element="text_4"><bounds x="-0.8" y="47" width="2" height="2" /></bezel>
+ <bezel element="text_3"><bounds x="-0.8" y="57" width="2" height="2" /></bezel>
+ <bezel element="text_2"><bounds x="-0.8" y="67" width="2" height="2" /></bezel>
+ <bezel element="text_1"><bounds x="-0.8" y="77" width="2" height="2" /></bezel>
+
+ <bezel element="text_a"><bounds x="7" y="85" width="2" height="2" /></bezel>
+ <bezel element="text_b"><bounds x="17" y="85" width="2" height="2" /></bezel>
+ <bezel element="text_c"><bounds x="27" y="85" width="2" height="2" /></bezel>
+ <bezel element="text_d"><bounds x="37" y="85" width="2" height="2" /></bezel>
+ <bezel element="text_e"><bounds x="47" y="85" width="2" height="2" /></bezel>
+ <bezel element="text_f"><bounds x="57" y="85" width="2" height="2" /></bezel>
+ <bezel element="text_g"><bounds x="67" y="85" width="2" height="2" /></bezel>
+ <bezel element="text_h"><bounds x="77" y="85" width="2" height="2" /></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 leds -->
+
+ <bezel name="4.7" element="led"><bounds x="3.2" y="11.3" width="1.5" height="1.5" /></bezel>
+ <bezel name="5.7" element="led"><bounds x="13.2" y="11.3" width="1.5" height="1.5" /></bezel>
+ <bezel name="6.7" element="led"><bounds x="23.2" y="11.3" width="1.5" height="1.5" /></bezel>
+ <bezel name="7.7" element="led"><bounds x="33.2" y="11.3" width="1.5" height="1.5" /></bezel>
+ <bezel name="8.7" element="led"><bounds x="43.2" y="11.3" width="1.5" height="1.5" /></bezel>
+ <bezel name="9.7" element="led"><bounds x="53.2" y="11.3" width="1.5" height="1.5" /></bezel>
+ <bezel name="10.7" element="led"><bounds x="63.2" y="11.3" width="1.5" height="1.5" /></bezel>
+ <bezel name="11.7" element="led"><bounds x="73.2" y="11.3" width="1.5" height="1.5" /></bezel>
+
+ <bezel name="4.6" element="led"><bounds x="3.2" y="21.3" width="1.5" height="1.5" /></bezel>
+ <bezel name="5.6" element="led"><bounds x="13.2" y="21.3" width="1.5" height="1.5" /></bezel>
+ <bezel name="6.6" element="led"><bounds x="23.2" y="21.3" width="1.5" height="1.5" /></bezel>
+ <bezel name="7.6" element="led"><bounds x="33.2" y="21.3" width="1.5" height="1.5" /></bezel>
+ <bezel name="8.6" element="led"><bounds x="43.2" y="21.3" width="1.5" height="1.5" /></bezel>
+ <bezel name="9.6" element="led"><bounds x="53.2" y="21.3" width="1.5" height="1.5" /></bezel>
+ <bezel name="10.6" element="led"><bounds x="63.2" y="21.3" width="1.5" height="1.5" /></bezel>
+ <bezel name="11.6" element="led"><bounds x="73.2" y="21.3" width="1.5" height="1.5" /></bezel>
+
+ <bezel name="4.5" element="led"><bounds x="3.2" y="31.3" width="1.5" height="1.5" /></bezel>
+ <bezel name="5.5" element="led"><bounds x="13.2" y="31.3" width="1.5" height="1.5" /></bezel>
+ <bezel name="6.5" element="led"><bounds x="23.2" y="31.3" width="1.5" height="1.5" /></bezel>
+ <bezel name="7.5" element="led"><bounds x="33.2" y="31.3" width="1.5" height="1.5" /></bezel>
+ <bezel name="8.5" element="led"><bounds x="43.2" y="31.3" width="1.5" height="1.5" /></bezel>
+ <bezel name="9.5" element="led"><bounds x="53.2" y="31.3" width="1.5" height="1.5" /></bezel>
+ <bezel name="10.5" element="led"><bounds x="63.2" y="31.3" width="1.5" height="1.5" /></bezel>
+ <bezel name="11.5" element="led"><bounds x="73.2" y="31.3" width="1.5" height="1.5" /></bezel>
+
+ <bezel name="4.4" element="led"><bounds x="3.2" y="41.3" width="1.5" height="1.5" /></bezel>
+ <bezel name="5.4" element="led"><bounds x="13.2" y="41.3" width="1.5" height="1.5" /></bezel>
+ <bezel name="6.4" element="led"><bounds x="23.2" y="41.3" width="1.5" height="1.5" /></bezel>
+ <bezel name="7.4" element="led"><bounds x="33.2" y="41.3" width="1.5" height="1.5" /></bezel>
+ <bezel name="8.4" element="led"><bounds x="43.2" y="41.3" width="1.5" height="1.5" /></bezel>
+ <bezel name="9.4" element="led"><bounds x="53.2" y="41.3" width="1.5" height="1.5" /></bezel>
+ <bezel name="10.4" element="led"><bounds x="63.2" y="41.3" width="1.5" height="1.5" /></bezel>
+ <bezel name="11.4" element="led"><bounds x="73.2" y="41.3" width="1.5" height="1.5" /></bezel>
+
+ <bezel name="4.3" element="led"><bounds x="3.2" y="51.3" width="1.5" height="1.5" /></bezel>
+ <bezel name="5.3" element="led"><bounds x="13.2" y="51.3" width="1.5" height="1.5" /></bezel>
+ <bezel name="6.3" element="led"><bounds x="23.2" y="51.3" width="1.5" height="1.5" /></bezel>
+ <bezel name="7.3" element="led"><bounds x="33.2" y="51.3" width="1.5" height="1.5" /></bezel>
+ <bezel name="8.3" element="led"><bounds x="43.2" y="51.3" width="1.5" height="1.5" /></bezel>
+ <bezel name="9.3" element="led"><bounds x="53.2" y="51.3" width="1.5" height="1.5" /></bezel>
+ <bezel name="10.3" element="led"><bounds x="63.2" y="51.3" width="1.5" height="1.5" /></bezel>
+ <bezel name="11.3" element="led"><bounds x="73.2" y="51.3" width="1.5" height="1.5" /></bezel>
+
+ <bezel name="4.2" element="led"><bounds x="3.2" y="61.3" width="1.5" height="1.5" /></bezel>
+ <bezel name="5.2" element="led"><bounds x="13.2" y="61.3" width="1.5" height="1.5" /></bezel>
+ <bezel name="6.2" element="led"><bounds x="23.2" y="61.3" width="1.5" height="1.5" /></bezel>
+ <bezel name="7.2" element="led"><bounds x="33.2" y="61.3" width="1.5" height="1.5" /></bezel>
+ <bezel name="8.2" element="led"><bounds x="43.2" y="61.3" width="1.5" height="1.5" /></bezel>
+ <bezel name="9.2" element="led"><bounds x="53.2" y="61.3" width="1.5" height="1.5" /></bezel>
+ <bezel name="10.2" element="led"><bounds x="63.2" y="61.3" width="1.5" height="1.5" /></bezel>
+ <bezel name="11.2" element="led"><bounds x="73.2" y="61.3" width="1.5" height="1.5" /></bezel>
+
+ <bezel name="4.1" element="led"><bounds x="3.2" y="71.3" width="1.5" height="1.5" /></bezel>
+ <bezel name="5.1" element="led"><bounds x="13.2" y="71.3" width="1.5" height="1.5" /></bezel>
+ <bezel name="6.1" element="led"><bounds x="23.2" y="71.3" width="1.5" height="1.5" /></bezel>
+ <bezel name="7.1" element="led"><bounds x="33.2" y="71.3" width="1.5" height="1.5" /></bezel>
+ <bezel name="8.1" element="led"><bounds x="43.2" y="71.3" width="1.5" height="1.5" /></bezel>
+ <bezel name="9.1" element="led"><bounds x="53.2" y="71.3" width="1.5" height="1.5" /></bezel>
+ <bezel name="10.1" element="led"><bounds x="63.2" y="71.3" width="1.5" height="1.5" /></bezel>
+ <bezel name="11.1" element="led"><bounds x="73.2" y="71.3" width="1.5" height="1.5" /></bezel>
+
+ <bezel name="4.0" element="led"><bounds x="3.2" y="81.3" width="1.5" height="1.5" /></bezel>
+ <bezel name="5.0" element="led"><bounds x="13.2" y="81.3" width="1.5" height="1.5" /></bezel>
+ <bezel name="6.0" element="led"><bounds x="23.2" y="81.3" width="1.5" height="1.5" /></bezel>
+ <bezel name="7.0" element="led"><bounds x="33.2" y="81.3" width="1.5" height="1.5" /></bezel>
+ <bezel name="8.0" element="led"><bounds x="43.2" y="81.3" width="1.5" height="1.5" /></bezel>
+ <bezel name="9.0" element="led"><bounds x="53.2" y="81.3" width="1.5" height="1.5" /></bezel>
+ <bezel name="10.0" element="led"><bounds x="63.2" y="81.3" width="1.5" height="1.5" /></bezel>
+ <bezel name="11.0" element="led"><bounds x="73.2" y="81.3" width="1.5" height="1.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.1" inputmask="0x80"><bounds x="13" y="3" width="10" height="10" /><color alpha="0.2" /></bezel>
+ <bezel element="hl" inputtag="IN.2" inputmask="0x80"><bounds x="23" y="3" width="10" height="10" /><color alpha="0.4" /></bezel>
+ <bezel element="hl" inputtag="IN.3" inputmask="0x80"><bounds x="33" y="3" width="10" height="10" /><color alpha="0.2" /></bezel>
+ <bezel element="hl" inputtag="IN.4" inputmask="0x80"><bounds x="43" y="3" width="10" height="10" /><color alpha="0.4" /></bezel>
+ <bezel element="hl" inputtag="IN.5" inputmask="0x80"><bounds x="53" y="3" width="10" height="10" /><color alpha="0.2" /></bezel>
+ <bezel element="hl" inputtag="IN.6" inputmask="0x80"><bounds x="63" y="3" width="10" height="10" /><color alpha="0.4" /></bezel>
+ <bezel element="hl" inputtag="IN.7" inputmask="0x80"><bounds x="73" y="3" width="10" height="10" /><color alpha="0.2" /></bezel>
+
+ <bezel element="hl" inputtag="IN.0" inputmask="0x40"><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.2" inputmask="0x40"><bounds x="23" y="13" width="10" height="10" /><color alpha="0.2" /></bezel>
+ <bezel element="hl" inputtag="IN.3" inputmask="0x40"><bounds x="33" y="13" width="10" height="10" /><color alpha="0.4" /></bezel>
+ <bezel element="hl" inputtag="IN.4" inputmask="0x40"><bounds x="43" y="13" width="10" height="10" /><color alpha="0.2" /></bezel>
+ <bezel element="hl" inputtag="IN.5" inputmask="0x40"><bounds x="53" y="13" width="10" height="10" /><color alpha="0.4" /></bezel>
+ <bezel element="hl" inputtag="IN.6" inputmask="0x40"><bounds x="63" y="13" width="10" height="10" /><color alpha="0.2" /></bezel>
+ <bezel element="hl" inputtag="IN.7" inputmask="0x40"><bounds x="73" y="13" width="10" height="10" /><color alpha="0.4" /></bezel>
+
+ <bezel element="hl" inputtag="IN.0" inputmask="0x20"><bounds x="3" y="23" width="10" height="10" /><color alpha="0.4" /></bezel>
+ <bezel element="hl" inputtag="IN.1" inputmask="0x20"><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.3" inputmask="0x20"><bounds x="33" y="23" width="10" height="10" /><color alpha="0.2" /></bezel>
+ <bezel element="hl" inputtag="IN.4" inputmask="0x20"><bounds x="43" y="23" width="10" height="10" /><color alpha="0.4" /></bezel>
+ <bezel element="hl" inputtag="IN.5" inputmask="0x20"><bounds x="53" y="23" width="10" height="10" /><color alpha="0.2" /></bezel>
+ <bezel element="hl" inputtag="IN.6" inputmask="0x20"><bounds x="63" y="23" width="10" height="10" /><color alpha="0.4" /></bezel>
+ <bezel element="hl" inputtag="IN.7" inputmask="0x20"><bounds x="73" y="23" width="10" height="10" /><color alpha="0.2" /></bezel>
+
+ <bezel element="hl" inputtag="IN.0" inputmask="0x10"><bounds x="3" y="33" width="10" height="10" /><color alpha="0.2" /></bezel>
+ <bezel element="hl" inputtag="IN.1" inputmask="0x10"><bounds x="13" y="33" width="10" height="10" /><color alpha="0.4" /></bezel>
+ <bezel element="hl" inputtag="IN.2" inputmask="0x10"><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.4" inputmask="0x10"><bounds x="43" y="33" width="10" height="10" /><color alpha="0.2" /></bezel>
+ <bezel element="hl" inputtag="IN.5" inputmask="0x10"><bounds x="53" y="33" width="10" height="10" /><color alpha="0.4" /></bezel>
+ <bezel element="hl" inputtag="IN.6" inputmask="0x10"><bounds x="63" y="33" width="10" height="10" /><color alpha="0.2" /></bezel>
+ <bezel element="hl" inputtag="IN.7" inputmask="0x10"><bounds x="73" y="33" width="10" height="10" /><color alpha="0.4" /></bezel>
+
+ <bezel element="hl" inputtag="IN.0" inputmask="0x08"><bounds x="3" y="43" width="10" height="10" /><color alpha="0.4" /></bezel>
+ <bezel element="hl" inputtag="IN.1" inputmask="0x08"><bounds x="13" y="43" width="10" height="10" /><color alpha="0.2" /></bezel>
+ <bezel element="hl" inputtag="IN.2" inputmask="0x08"><bounds x="23" y="43" width="10" height="10" /><color alpha="0.4" /></bezel>
+ <bezel element="hl" inputtag="IN.3" inputmask="0x08"><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.5" inputmask="0x08"><bounds x="53" y="43" width="10" height="10" /><color alpha="0.2" /></bezel>
+ <bezel element="hl" inputtag="IN.6" inputmask="0x08"><bounds x="63" y="43" width="10" height="10" /><color alpha="0.4" /></bezel>
+ <bezel element="hl" inputtag="IN.7" inputmask="0x08"><bounds x="73" y="43" width="10" height="10" /><color alpha="0.2" /></bezel>
+
+ <bezel element="hl" inputtag="IN.0" inputmask="0x04"><bounds x="3" y="53" width="10" height="10" /><color alpha="0.2" /></bezel>
+ <bezel element="hl" inputtag="IN.1" inputmask="0x04"><bounds x="13" y="53" width="10" height="10" /><color alpha="0.4" /></bezel>
+ <bezel element="hl" inputtag="IN.2" inputmask="0x04"><bounds x="23" y="53" width="10" height="10" /><color alpha="0.2" /></bezel>
+ <bezel element="hl" inputtag="IN.3" inputmask="0x04"><bounds x="33" y="53" width="10" height="10" /><color alpha="0.4" /></bezel>
+ <bezel element="hl" inputtag="IN.4" inputmask="0x04"><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.6" inputmask="0x04"><bounds x="63" y="53" width="10" height="10" /><color alpha="0.2" /></bezel>
+ <bezel element="hl" inputtag="IN.7" inputmask="0x04"><bounds x="73" y="53" width="10" height="10" /><color alpha="0.4" /></bezel>
+
+ <bezel element="hl" inputtag="IN.0" inputmask="0x02"><bounds x="3" y="63" width="10" height="10" /><color alpha="0.4" /></bezel>
+ <bezel element="hl" inputtag="IN.1" inputmask="0x02"><bounds x="13" y="63" width="10" height="10" /><color alpha="0.2" /></bezel>
+ <bezel element="hl" inputtag="IN.2" inputmask="0x02"><bounds x="23" y="63" width="10" height="10" /><color alpha="0.4" /></bezel>
+ <bezel element="hl" inputtag="IN.3" inputmask="0x02"><bounds x="33" y="63" width="10" height="10" /><color alpha="0.2" /></bezel>
+ <bezel element="hl" inputtag="IN.4" inputmask="0x02"><bounds x="43" y="63" width="10" height="10" /><color alpha="0.4" /></bezel>
+ <bezel element="hl" inputtag="IN.5" inputmask="0x02"><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.7" inputmask="0x02"><bounds x="73" y="63" width="10" height="10" /><color alpha="0.2" /></bezel>
+
+ <bezel element="hl" inputtag="IN.0" inputmask="0x01"><bounds x="3" y="73" width="10" height="10" /><color alpha="0.2" /></bezel>
+ <bezel element="hl" inputtag="IN.1" inputmask="0x01"><bounds x="13" y="73" width="10" height="10" /><color alpha="0.4" /></bezel>
+ <bezel element="hl" inputtag="IN.2" inputmask="0x01"><bounds x="23" y="73" width="10" height="10" /><color alpha="0.2" /></bezel>
+ <bezel element="hl" inputtag="IN.3" inputmask="0x01"><bounds x="33" y="73" width="10" height="10" /><color alpha="0.4" /></bezel>
+ <bezel element="hl" inputtag="IN.4" inputmask="0x01"><bounds x="43" y="73" width="10" height="10" /><color alpha="0.2" /></bezel>
+ <bezel element="hl" inputtag="IN.5" inputmask="0x01"><bounds x="53" y="73" width="10" height="10" /><color alpha="0.4" /></bezel>
+ <bezel element="hl" inputtag="IN.6" inputmask="0x01"><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>
+
+ <!-- right side -->
+
+ <bezel name="0.7" element="led"><bounds x="89.95" y="7.25" width="1.5" height="1.5" /></bezel>
+
+ <bezel element="disk_black"><bounds x="87" y="13" width="7.4" height="7.4" /></bezel>
+ <bezel element="disk_black"><bounds x="87" y="21.8" width="7.4" height="7.4" /></bezel>
+ <bezel element="disk_black"><bounds x="87" y="30.6" width="7.4" height="7.4" /></bezel>
+ <bezel element="disk_black"><bounds x="87" y="39.4" width="7.4" height="7.4" /></bezel>
+ <bezel element="disk_black"><bounds x="87" y="48.2" width="7.4" height="7.4" /></bezel>
+ <bezel element="disk_black"><bounds x="87" y="57" width="7.4" height="7.4" /></bezel>
+ <bezel element="disk_black"><bounds x="87" y="65.8" width="7.4" height="7.4" /></bezel>
+ <bezel element="disk_black"><bounds x="87" y="74.6" width="7.4" height="7.4" /></bezel>
+
+ <bezel element="disk_white"><bounds x="88.2" y="14.2" width="5" height="5" /></bezel>
+ <bezel element="disk_white"><bounds x="88.2" y="23" width="5" height="5" /></bezel>
+ <bezel element="disk_white"><bounds x="88.2" y="31.8" width="5" height="5" /></bezel>
+ <bezel element="disk_white"><bounds x="88.2" y="40.6" width="5" height="5" /></bezel>
+ <bezel element="disk_white"><bounds x="88.2" y="49.4" width="5" height="5" /></bezel>
+ <bezel element="disk_white"><bounds x="88.2" y="58.2" width="5" height="5" /></bezel>
+ <bezel element="disk_white"><bounds x="88.2" y="67" width="5" height="5" /></bezel>
+ <bezel element="disk_white"><bounds x="88.2" y="75.8" width="5" height="5" /></bezel>
+
+ <bezel element="text_re"><bounds x="88.2" y="15.2" width="5" height="3" /></bezel>
+ <bezel element="text_cl"><bounds x="88.2" y="24" width="5" height="3" /></bezel>
+ <bezel element="text_king"><bounds x="88.2" y="32.8" width="5" height="3" /></bezel>
+ <bezel element="text_queen"><bounds x="88.2" y="41.6" width="5" height="3" /></bezel>
+ <bezel element="text_bishop"><bounds x="88.2" y="50.4" width="5" height="3" /></bezel>
+ <bezel element="text_knight"><bounds x="88.2" y="59.2" width="5" height="3" /></bezel>
+ <bezel element="text_rook"><bounds x="88.2" y="68" width="5" height="3" /></bezel>
+ <bezel element="text_pion"><bounds x="88.2" y="76.8" width="5" height="3" /></bezel>
+
+ <bezel element="hlb" inputtag="IN.8" inputmask="0x80"><bounds x="87" y="13" width="7.4" height="7.4" /><color alpha="0.3" /></bezel>
+ <bezel element="hlb" inputtag="IN.8" inputmask="0x40"><bounds x="87" y="21.8" width="7.4" height="7.4" /><color alpha="0.3" /></bezel>
+ <bezel element="hlb" inputtag="IN.8" inputmask="0x20"><bounds x="87" y="30.6" width="7.4" height="7.4" /><color alpha="0.3" /></bezel>
+ <bezel element="hlb" inputtag="IN.8" inputmask="0x10"><bounds x="87" y="39.4" width="7.4" height="7.4" /><color alpha="0.3" /></bezel>
+ <bezel element="hlb" inputtag="IN.8" inputmask="0x08"><bounds x="87" y="48.2" width="7.4" height="7.4" /><color alpha="0.3" /></bezel>
+ <bezel element="hlb" inputtag="IN.8" inputmask="0x04"><bounds x="87" y="57" width="7.4" height="7.4" /><color alpha="0.3" /></bezel>
+ <bezel element="hlb" inputtag="IN.8" inputmask="0x02"><bounds x="87" y="65.8" width="7.4" height="7.4" /><color alpha="0.3" /></bezel>
+ <bezel element="hlb" inputtag="IN.8" inputmask="0x01"><bounds x="87" y="74.6" width="7.4" height="7.4" /><color alpha="0.3" /></bezel>
+
+ <!-- panel 7seg leds -->
- <!-- Display -->
<bezel name="digit3" element="digit">
- <bounds x="31" y="2" width="4" height="8" />
+ <bounds x="33" y="-14.5" width="5.66" height="8.5" />
</bezel>
<bezel name="digit2" element="digit">
- <bounds x="36" y="2" width="4" height="8" />
- </bezel>
- <bezel name="2.7" element="led">
- <bounds x="42" y="3" width="1" height="1" />
- </bezel>
- <bezel name="3.7" element="led">
- <bounds x="42" y="8" width="1" height="1" />
+ <bounds x="38.66" y="-14.5" width="5.66" height="8.5" />
</bezel>
<bezel name="digit1" element="digit">
- <bounds x="45" y="2" width="4" height="8" />
+ <bounds x="47.16" y="-14.5" width="5.66" height="8.5" />
</bezel>
<bezel name="digit0" element="digit">
- <bounds x="50" y="2" width="4" height="8" />
+ <bounds x="52.82" y="-14.5" width="5.66" height="8.5" />
+ </bezel>
+
+ <bezel name="2.7" element="led">
+ <bounds x="45.58" y="-13" width="0.85" height="0.85" />
+ </bezel>
+ <bezel name="3.7" element="led">
+ <bounds x="45.13" y="-8.35" width="0.85" height="0.85" />
</bezel>
+
+ <!-- panel buttons -->
+
+ <bezel element="black"><bounds x="73" y="-14.5" width="5" height="3" /></bezel>
+ <bezel element="text_tm"><bounds x="73.05" y="-14.45" width="4.9" height="2.9" /></bezel>
+ <bezel element="hlp" inputtag="IN.9" inputmask="0x01"><bounds x="73" y="-14.5" width="5" height="3" /><color alpha="0.25" /></bezel>
+
+ <bezel element="black"><bounds x="79.2" y="-14.5" width="5" height="3" /></bezel>
+ <bezel element="text_rv"><bounds x="79.25" y="-14.45" width="4.9" height="2.9" /></bezel>
+ <bezel element="hlp" inputtag="IN.9" inputmask="0x02"><bounds x="79.2" y="-14.5" width="5" height="3" /><color alpha="0.25" /></bezel>
+
+ <bezel element="black"><bounds x="85.4" y="-14.5" width="5" height="3" /></bezel>
+ <bezel element="text_speak"><bounds x="85.45" y="-14.45" width="4.9" height="2.9" /></bezel>
+ <bezel element="hlp" inputtag="IN.9" inputmask="0x04"><bounds x="85.4" y="-14.5" width="5" height="3" /><color alpha="0.25" /></bezel>
+
+ <bezel element="black"><bounds x="73" y="-9" width="5" height="3" /></bezel>
+ <bezel element="text_st"><bounds x="73.05" y="-8.95" width="4.9" height="2.9" /></bezel>
+ <bezel element="hlp" inputtag="IN.9" inputmask="0x20"><bounds x="73" y="-9" width="5" height="3" /><color alpha="0.25" /></bezel>
+
+ <bezel element="black"><bounds x="79.2" y="-9" width="5" height="3" /></bezel>
+ <bezel element="text_dm"><bounds x="79.25" y="-8.95" width="4.9" height="2.9" /></bezel>
+ <bezel element="hlp" inputtag="IN.9" inputmask="0x10"><bounds x="79.2" y="-9" width="5" height="3" /><color alpha="0.25" /></bezel>
+
+ <bezel element="black"><bounds x="85.4" y="-9" width="5" height="3" /></bezel>
+ <bezel element="text_lv"><bounds x="85.45" y="-8.95" width="4.9" height="2.9" /></bezel>
+ <bezel element="hlp" inputtag="IN.9" inputmask="0x08"><bounds x="85.4" y="-9" width="5" height="3" /><color alpha="0.25" /></bezel>
+
+
</view>
</mamelayout>
diff --git a/src/mame/layout/k28.lay b/src/mame/layout/k28.lay
new file mode 100644
index 00000000000..dde1a20e295
--- /dev/null
+++ b/src/mame/layout/k28.lay
@@ -0,0 +1,26 @@
+<?xml version="1.0"?>
+<mamelayout version="2">
+
+<!-- define elements -->
+
+ <element name="digit" defstate="0">
+ <led16seg><color red="0.5" green="0.5" blue="0.5" /></led16seg>
+ </element>
+
+
+<!-- build screen -->
+
+ <view name="Internal Layout">
+ <bounds left="0" right="80" top="0" bottom="15" />
+
+ <bezel name="digit0" element="digit"><bounds x="0" y="0" width="10" height="15" /></bezel>
+ <bezel name="digit1" element="digit"><bounds x="10" y="0" width="10" height="15" /></bezel>
+ <bezel name="digit2" element="digit"><bounds x="20" y="0" width="10" height="15" /></bezel>
+ <bezel name="digit3" element="digit"><bounds x="30" y="0" width="10" height="15" /></bezel>
+ <bezel name="digit4" element="digit"><bounds x="40" y="0" width="10" height="15" /></bezel>
+ <bezel name="digit5" element="digit"><bounds x="50" y="0" width="10" height="15" /></bezel>
+ <bezel name="digit6" element="digit"><bounds x="60" y="0" width="10" height="15" /></bezel>
+ <bezel name="digit7" element="digit"><bounds x="70" y="0" width="10" height="15" /></bezel>
+
+ </view>
+</mamelayout>
diff --git a/src/mame/layout/marywu.lay b/src/mame/layout/marywu.lay
new file mode 100644
index 00000000000..eb818bc69c2
--- /dev/null
+++ b/src/mame/layout/marywu.lay
@@ -0,0 +1,172 @@
+<?xml version="1.0"?>
+<!-- marywu.lay -->
+
+<mamelayout version="2">
+
+ <element name="digit" defstate="0">
+ <led7seg>
+ <color red="1.0" green="0.0" blue="0.0" />
+ </led7seg>
+ </element>
+
+ <element name="led" defstate="0">
+ <text string=""></text>
+ <disk state="0">
+ <color red="0.1" green="0.025" blue="0.028" />
+ <bounds x="0.25" y="0.25" width="0.5" height="0.5" />
+ </disk>
+ <disk state="1">
+ <color red="1.0" green="0.25" blue="0.28" />
+ <bounds x="0.25" y="0.25" width="0.5" height="0.5" />
+ </disk>
+ </element>
+
+ <element name="background">
+ <rect>
+ <bounds left="0" top="0" right="1" bottom="1" />
+ <color red="0.0" green="0.0" blue="0.0" />
+ </rect>
+ </element>
+
+ <view name="Default Layout">
+
+ <!-- Background -->
+ <backdrop element="background">
+ <bounds left="0" top="20" right="798" bottom="770" />
+ </backdrop>
+
+ <!-- LEDs -->
+
+ <bezel name="led4" element="led"><bounds x="199" y="160" width="40" height="40" /></bezel>
+ <bezel name="led5" element="led"><bounds x="249" y="160" width="40" height="40" /></bezel>
+ <bezel name="led6" element="led"><bounds x="324" y="160" width="40" height="40" /></bezel>
+ <bezel name="led7" element="led"><bounds x="399" y="160" width="40" height="40" /></bezel>
+ <bezel name="led8" element="led"><bounds x="474" y="160" width="40" height="40" /></bezel>
+ <bezel name="led9" element="led"><bounds x="549" y="160" width="40" height="40" /></bezel>
+ <bezel name="led10" element="led"><bounds x="599" y="160" width="40" height="40" /></bezel>
+
+ <bezel name="led3" element="led"><bounds x="199" y="210" width="40" height="40" /></bezel>
+ <bezel name="led11" element="led"><bounds x="599" y="210" width="40" height="40" /></bezel>
+
+ <bezel name="led2" element="led"><bounds x="199" y="285" width="40" height="40" /></bezel>
+ <bezel name="led12" element="led"><bounds x="599" y="285" width="40" height="40" /></bezel>
+
+ <bezel name="led1" element="led"><bounds x="199" y="360" width="40" height="40" /></bezel>
+ <bezel name="led30" element="led"><bounds x="399" y="360" width="40" height="40" /></bezel>
+ <bezel name="led13" element="led"><bounds x="599" y="360" width="40" height="40" /></bezel>
+
+ <bezel name="led0" element="led"><bounds x="199" y="435" width="40" height="40" /></bezel>
+ <bezel name="led14" element="led"><bounds x="599" y="435" width="40" height="40" /></bezel>
+
+ <bezel name="led23" element="led"><bounds x="199" y="510" width="40" height="40" /></bezel>
+ <bezel name="led15" element="led"><bounds x="599" y="510" width="40" height="40" /></bezel>
+
+ <bezel name="led22" element="led"><bounds x="199" y="560" width="40" height="40" /></bezel>
+ <bezel name="led21" element="led"><bounds x="249" y="560" width="40" height="40" /></bezel>
+ <bezel name="led20" element="led"><bounds x="324" y="560" width="40" height="40" /></bezel>
+ <bezel name="led19" element="led"><bounds x="399" y="560" width="40" height="40" /></bezel>
+ <bezel name="led18" element="led"><bounds x="474" y="560" width="40" height="40" /></bezel>
+ <bezel name="led17" element="led"><bounds x="549" y="560" width="40" height="40" /></bezel>
+ <bezel name="led16" element="led"><bounds x="599" y="560" width="40" height="40" /></bezel>
+
+ <bezel name="led29" element="led"><bounds x="199" y="660" width="40" height="40" /></bezel>
+ <bezel name="led28" element="led"><bounds x="279" y="660" width="40" height="40" /></bezel>
+ <bezel name="led27" element="led"><bounds x="359" y="660" width="40" height="40" /></bezel>
+ <bezel name="led26" element="led"><bounds x="439" y="660" width="40" height="40" /></bezel>
+ <bezel name="led25" element="led"><bounds x="519" y="660" width="40" height="40" /></bezel>
+ <bezel name="led24" element="led"><bounds x="599" y="660" width="40" height="40" /></bezel>
+
+ <!-- Top 7seg display modules -->
+
+ <bezel name="digit23" element="digit">
+ <bounds left="200" top="45" right="234" bottom="84" />
+ </bezel>
+ <bezel name="digit22" element="digit">
+ <bounds left="244" top="45" right="278" bottom="84" />
+ </bezel>
+ <bezel name="digit21" element="digit">
+ <bounds left="288" top="45" right="322" bottom="84" />
+ </bezel>
+ <bezel name="digit20" element="digit">
+ <bounds left="332" top="45" right="366" bottom="84" />
+ </bezel>
+
+
+ <bezel name="digit19" element="digit">
+ <bounds left="432" top="45" right="466" bottom="84" />
+ </bezel>
+ <bezel name="digit18" element="digit">
+ <bounds left="476" top="45" right="510" bottom="84" />
+ </bezel>
+ <bezel name="digit17" element="digit">
+ <bounds left="520" top="45" right="554" bottom="84" />
+ </bezel>
+ <bezel name="digit16" element="digit">
+ <bounds left="564" top="45" right="598" bottom="84" />
+ </bezel>
+
+
+
+ <!-- Middle 7seg display module -->
+
+ <bezel name="digit25" element="digit">
+ <bounds left="355" top="421" right="389" bottom="460" />
+ </bezel>
+ <bezel name="digit24" element="digit">
+ <bounds left="399" top="421" right="433" bottom="460" />
+ </bezel>
+
+
+
+ <!-- Bottom 7seg display modules -->
+
+ <bezel name="digit15" element="digit">
+ <bounds left="10" top="721" right="44" bottom="760" />
+ </bezel>
+ <bezel name="digit14" element="digit">
+ <bounds left="54" top="721" right="88" bottom="760" />
+ </bezel>
+ <bezel name="digit13" element="digit">
+ <bounds left="110" top="721" right="144" bottom="760" />
+ </bezel>
+ <bezel name="digit12" element="digit">
+ <bounds left="154" top="721" right="188" bottom="760" />
+ </bezel>
+ <bezel name="digit11" element="digit">
+ <bounds left="210" top="721" right="244" bottom="760" />
+ </bezel>
+ <bezel name="digit10" element="digit">
+ <bounds left="254" top="721" right="288" bottom="760" />
+ </bezel>
+ <bezel name="digit9" element="digit">
+ <bounds left="310" top="721" right="344" bottom="760" />
+ </bezel>
+ <bezel name="digit8" element="digit">
+ <bounds left="354" top="721" right="388" bottom="760" />
+ </bezel>
+ <bezel name="digit7" element="digit">
+ <bounds left="410" top="721" right="444" bottom="760" />
+ </bezel>
+ <bezel name="digit6" element="digit">
+ <bounds left="454" top="721" right="488" bottom="760" />
+ </bezel>
+ <bezel name="digit5" element="digit">
+ <bounds left="510" top="721" right="544" bottom="760" />
+ </bezel>
+ <bezel name="digit4" element="digit">
+ <bounds left="554" top="721" right="588" bottom="760" />
+ </bezel>
+ <bezel name="digit3" element="digit">
+ <bounds left="610" top="721" right="644" bottom="760" />
+ </bezel>
+ <bezel name="digit2" element="digit">
+ <bounds left="654" top="721" right="688" bottom="760" />
+ </bezel>
+ <bezel name="digit1" element="digit">
+ <bounds left="710" top="721" right="744" bottom="760" />
+ </bezel>
+ <bezel name="digit0" element="digit">
+ <bounds left="754" top="721" right="788" bottom="760" />
+ </bezel>
+ </view>
+</mamelayout>
diff --git a/src/mame/layout/md6802.lay b/src/mame/layout/md6802.lay
new file mode 100755
index 00000000000..140cc19c138
--- /dev/null
+++ b/src/mame/layout/md6802.lay
@@ -0,0 +1,125 @@
+<?xml version="1.0"?>
+<mamelayout version="2">
+ <element name="pcb">
+ <image file="md6802.png" />
+ </element>
+ <element name="redled" defstate="0">
+ <disk state="1">
+ <color red="1.0" green="0.0" blue="0.0" />
+ </disk>
+ </element>
+ <element name="button" defstate="1"/>
+ <element name="digit" defstate="1">
+ <led7seg>
+ <color red="0.75" green="0.0" blue="0.0" />
+ </led7seg>
+ </element>
+ <view name="Full Artwork">
+ <backdrop element="pcb">
+ <bounds left="0" top="0" right="800" bottom="869" />
+ </backdrop>
+ <bezel name="led1" element="redled">
+ <bounds x="290" y="668" width="15" height="15"/>
+ </bezel>
+
+ <bezel name="digit0" element="digit">
+ <bounds x="170" y="410" width="78" height="85" />
+ </bezel>
+ <bezel name="digit1" element="digit">
+ <bounds x="250" y="410" width="78" height="85" />
+ </bezel>
+ <bezel name="digit2" element="digit">
+ <bounds x="330" y="410" width="78" height="85" />
+ </bezel>
+ <bezel name="digit3" element="digit">
+ <bounds x="410" y="410" width="78" height="85" />
+ </bezel>
+ <bezel name="digit4" element="digit">
+ <bounds x="490" y="410" width="78" height="85" />
+ </bezel>
+ <bezel name="digit5" element="digit">
+ <bounds x="570" y="410" width="78" height="85" />
+ </bezel>
+
+ <!-- Buttons -->
+ <!-- Row 0 : C D E F -->
+ <bezel element="button" inputtag="LINE3" inputmask="0x01">
+ <bounds x="345" y="555" width="70" height="60" />
+ </bezel>
+
+ <bezel element="button" inputtag="LINE3" inputmask="0x02">
+ <bounds x="425" y="555" width="70" height="60" />
+ </bezel>
+
+ <bezel element="button" inputtag="LINE3" inputmask="0x04">
+ <bounds x="505" y="555" width="70" height="60" />
+ </bezel>
+
+ <bezel element="button" inputtag="LINE3" inputmask="0x08">
+ <bounds x="585" y="555" width="70" height="60" />
+ </bezel>
+
+ <!-- Buttons -->
+ <!-- Row 1 : 8 9 A B -->
+ <bezel element="button" inputtag="LINE2" inputmask="0x01">
+ <bounds x="345" y="635" width="70" height="60" />
+ </bezel>
+
+ <bezel element="button" inputtag="LINE2" inputmask="0x02">
+ <bounds x="425" y="635" width="70" height="60" />
+ </bezel>
+
+ <bezel element="button" inputtag="LINE2" inputmask="0x04">
+ <bounds x="505" y="635" width="70" height="60" />
+ </bezel>
+
+ <bezel element="button" inputtag="LINE2" inputmask="0x08">
+ <bounds x="585" y="635" width="70" height="60" />
+ </bezel>
+
+ <!-- Buttons -->
+ <!-- Row 2 : SHIFT 4 5 6 7 -->
+ <bezel element="button" inputtag="LINE4" inputmask="0x08">
+ <bounds x="265" y="715" width="70" height="60" />
+ </bezel>
+
+ <bezel element="button" inputtag="LINE1" inputmask="0x01">
+ <bounds x="345" y="715" width="70" height="60" />
+ </bezel>
+
+ <bezel element="button" inputtag="LINE1" inputmask="0x02">
+ <bounds x="425" y="715" width="70" height="60" />
+ </bezel>
+
+ <bezel element="button" inputtag="LINE1" inputmask="0x04">
+ <bounds x="505" y="715" width="70" height="60" />
+ </bezel>
+
+ <bezel element="button" inputtag="LINE1" inputmask="0x08">
+ <bounds x="585" y="715" width="70" height="60" />
+ </bezel>
+
+ <!-- Buttons -->
+ <!-- Row 3 : RESET 0 1 2 3 -->
+ <bezel element="button" inputtag="LINE4" inputmask="0x04">
+ <bounds x="265" y="795" width="70" height="60" />
+ </bezel>
+
+ <bezel element="button" inputtag="LINE0" inputmask="0x01">
+ <bounds x="345" y="795" width="70" height="60" />
+ </bezel>
+
+ <bezel element="button" inputtag="LINE0" inputmask="0x02">
+ <bounds x="425" y="795" width="70" height="60" />
+ </bezel>
+
+ <bezel element="button" inputtag="LINE0" inputmask="0x04">
+ <bounds x="505" y="795" width="70" height="60" />
+ </bezel>
+
+ <bezel element="button" inputtag="LINE0" inputmask="0x08">
+ <bounds x="585" y="795" width="70" height="60" />
+ </bezel>
+
+ </view>
+</mamelayout>
diff --git a/src/mame/layout/mp68a.lay b/src/mame/layout/mp68a.lay
new file mode 100755
index 00000000000..ff9d29e09e3
--- /dev/null
+++ b/src/mame/layout/mp68a.lay
@@ -0,0 +1,116 @@
+<?xml version="1.0"?>
+<mamelayout version="2">
+ <element name="pcb">
+ <image file="mp68A.png" />
+ </element>
+ <element name="button" defstate="1"/>
+ <element name="digit" defstate="1">
+ <led7seg>
+ <color red="0.75" green="0.0" blue="0.0" />
+ </led7seg>
+ </element>
+ <view name="Full Artwork">
+ <backdrop element="pcb">
+ <bounds left="0" top="0" right="840" bottom="1105" />
+ </backdrop>
+ <bezel name="digit0" element="digit">
+ <bounds left="70" top="840" right="100" bottom="885" />
+ </bezel>
+ <bezel name="digit1" element="digit">
+ <bounds left="100" top="840" right="125" bottom="885" />
+ </bezel>
+ <bezel name="digit2" element="digit">
+ <bounds left="125" top="840" right="150" bottom="885" />
+ </bezel>
+ <bezel name="digit3" element="digit">
+ <bounds left="150" top="840" right="175" bottom="885" />
+ </bezel>
+ <bezel name="digit4" element="digit">
+ <bounds left="175" top="840" right="200" bottom="885" />
+ </bezel>
+ <bezel name="digit5" element="digit">
+ <bounds left="200" top="840" right="225" bottom="885" />
+ </bezel>
+
+ <!-- Buttons -->
+ <!-- Row 3 : C D E F -->
+ <bezel element="button" inputtag="LINE0" inputmask="0x10">
+ <bounds x="240" y="750" width="85" height="85"/>
+ </bezel>
+
+ <bezel element="button" inputtag="LINE0" inputmask="0x20">
+ <bounds x="325" y="750" width="85" height="85"/>
+ </bezel>
+
+ <bezel element="button" inputtag="LINE0" inputmask="0x40">
+ <bounds x="410" y="750" width="85" height="85"/>
+ </bezel>
+
+ <bezel element="button" inputtag="LINE0" inputmask="0x80">
+ <bounds x="495" y="750" width="85" height="85"/>
+ </bezel>
+
+ <!-- Buttons -->
+ <!-- Row 2 : 8 9 A B -->
+ <bezel element="button" inputtag="LINE1" inputmask="0x01">
+ <bounds x="240" y="835" width="85" height="85"/>
+ </bezel>
+
+ <bezel element="button" inputtag="LINE1" inputmask="0x02">
+ <bounds x="325" y="835" width="85" height="85"/>
+ </bezel>
+
+ <bezel element="button" inputtag="LINE1" inputmask="0x04">
+ <bounds x="410" y="835" width="85" height="85"/>
+ </bezel>
+
+ <bezel element="button" inputtag="LINE1" inputmask="0x08">
+ <bounds x="495" y="835" width="85" height="85"/>
+ </bezel>
+
+ <!-- Buttons -->
+ <!-- Row 1 : SHIFT 4 5 6 7 -->
+ <bezel element="button" inputtag="LINE4" inputmask="0x08">
+ <bounds x="155" y="920" width="85" height="85"/>
+ </bezel>
+
+ <bezel element="button" inputtag="LINE2" inputmask="0x10">
+ <bounds x="240" y="920" width="85" height="85"/>
+ </bezel>
+
+ <bezel element="button" inputtag="LINE2" inputmask="0x20">
+ <bounds x="325" y="920" width="85" height="85"/>
+ </bezel>
+
+ <bezel element="button" inputtag="LINE2" inputmask="0x40">
+ <bounds x="410" y="920" width="85" height="85"/>
+ </bezel>
+
+ <bezel element="button" inputtag="LINE2" inputmask="0x80">
+ <bounds x="495" y="920" width="85" height="85"/>
+ </bezel>
+
+ <!-- Buttons -->
+ <!-- Row 0 : RESET 0 1 2 3 -->
+ <bezel element="button" inputtag="LINE4" inputmask="0x04">
+ <bounds x="155" y="1005" width="85" height="85"/>
+ </bezel>
+
+ <bezel element="button" inputtag="LINE3" inputmask="0x01">
+ <bounds x="240" y="1005" width="85" height="85"/>
+ </bezel>
+
+ <bezel element="button" inputtag="LINE3" inputmask="0x02">
+ <bounds x="325" y="1005" width="85" height="85"/>
+ </bezel>
+
+ <bezel element="button" inputtag="LINE3" inputmask="0x04">
+ <bounds x="410" y="1005" width="85" height="85"/>
+ </bezel>
+
+ <bezel element="button" inputtag="LINE3" inputmask="0x08">
+ <bounds x="495" y="1005" width="85" height="85"/>
+ </bezel>
+
+ </view>
+</mamelayout>
diff --git a/src/mame/layout/tr606.lay b/src/mame/layout/tr606.lay
new file mode 100644
index 00000000000..9d3e4d2766a
--- /dev/null
+++ b/src/mame/layout/tr606.lay
@@ -0,0 +1,20 @@
+<?xml version="1.0"?>
+<mamelayout version="2">
+
+<!-- define elements -->
+
+ <element name="led" defstate="0">
+ <disk state="0"><color red="0.2" green="0.04" blue="0.046" /></disk>
+ <disk state="1"><color red="1.0" green="0.2" blue="0.23" /></disk>
+ </element>
+
+
+<!-- build screen -->
+
+ <view name="Internal Layout">
+ <bounds left="0" right="100" top="0" bottom="100" />
+
+ <bezel name="0.0" element="led"><bounds x="1" y="1" width="1" height="1" /></bezel>
+
+ </view>
+</mamelayout>
diff --git a/src/mame/machine/315-5838_317-0229_comp.cpp b/src/mame/machine/315-5838_317-0229_comp.cpp
index cfd38aa7c88..f4c0b69129b 100644
--- a/src/mame/machine/315-5838_317-0229_comp.cpp
+++ b/src/mame/machine/315-5838_317-0229_comp.cpp
@@ -4,21 +4,32 @@
315-5838 - Decathlete (ST-V)
317-0229 - Dead or Alive (Model 2A)
+ 317-0229 - Name Club / Name Club Ver 2 (ST-V) (tested as RCDD2 in the service menu!)
+ 317-0231 - Print Club Love Love / Print Club Love Love Ver 2 (ST-V)
- Package Type: TQFP100
+ Several Print Club (ST-V) carts have
+ an unpopulated space marked '317-0229' on the PCB
- This appears to be a dual channel compression chip, used in 1996, predating the 5881.
- Decathlete uses it to compress ALL the game graphics, Dead or Alive uses it for a
- dumb security check, decompressing a single string.
+ Package Type: TQFP100
- Each channel appears to be connected to a different set of ROMs, however there is
- defintiely only a single 315-5838 chip. (could the different channels actually just
- be mirror addresses, with part of the address determining the ROMs to use?)
+ Decathlete accesses the chip at 2 different addresses, however, I don't think there
+ are 2 channels / sets of registers, instead the 2nd set of addresses are just a
+ mirror that allows access to a different set of source roms; the tables etc. are
+ re-uploaded before every transfer.
- Dead of Alive only uses a single channel, and has the source data in RAM, not ROM.
+ Dead of Alive has the source data in RAM, not ROM.
This is similar to how some 5881 games were set up, with the ST-V versions decrypting
data directly from ROM and the Model 2 ones using a RAM source buffer.
+ Decathlete decompresses all graphic data with the chip.
+
+ The Name Club games use the chip for decompressing data for the printer (full size
+ versions of the graphics?)
+
+ Print Club Love Love decrypts some start up code/data required for booting.
+
+ Dead or Alive decrypts a string that is checked on startup, nothing else.
+
Looking at the values read I don't think there is any address based encryption, for
example many blocks where you'd expect a zero fill start with repeating patterns
of 8f708f70 (different lengths) channel would appear to relate to compressed 0x00 data
@@ -49,11 +60,12 @@ sega_315_5838_comp_device::sega_315_5838_comp_device(const machine_config &mconf
void sega_315_5838_comp_device::device_start()
{
+ m_decathlt_lastcount = 0;
+ m_decathlt_prot_uploadmode = 0;
+ m_decathlt_prot_uploadoffset = 0;
+
for (auto & elem : m_channel)
{
- elem.m_decathlt_lastcount = 0;
- elem.m_decathlt_prot_uploadmode = 0;
- elem.m_decathlt_prot_uploadoffset = 0;
elem.m_read_ch.bind_relative_to(*owner());
}
@@ -61,14 +73,10 @@ void sega_315_5838_comp_device::device_start()
void sega_315_5838_comp_device::device_reset()
{
- for (auto & elem : m_channel)
- {
- elem.m_srcoffset = 0;
- elem.m_decathlt_lastcount = 0;
- elem.m_decathlt_prot_uploadmode = 0;
- elem.m_decathlt_prot_uploadoffset = 0;
- }
-
+ m_srcoffset = 0;
+ m_decathlt_lastcount = 0;
+ m_decathlt_prot_uploadmode = 0;
+ m_decathlt_prot_uploadoffset = 0;
m_protstate = 0;
}
@@ -100,46 +108,46 @@ UINT32 sega_315_5838_comp_device::genericdecathlt_prot_r(UINT32 mem_mask, int ch
// UINT32 *fake0 = (UINT32*)memregion( ":fake0" )->base();
// UINT32 retvalue = 0xffff;
- switch (m_channel[channel].m_srcoffset)
+ switch (m_srcoffset)
{
default:
- m_channel[channel].m_decathlt_lastcount++;
+ m_decathlt_lastcount++;
UINT32 tempdata = 0;
- tempdata |= m_channel[channel].m_read_ch(m_channel[channel].m_srcoffset) << 0;
- m_channel[channel].m_srcoffset++;
- tempdata |= m_channel[channel].m_read_ch(m_channel[channel].m_srcoffset) << 16;
- m_channel[channel].m_srcoffset++;
+ tempdata |= m_channel[channel].m_read_ch(m_srcoffset) << 0;
+ m_srcoffset++;
+ tempdata |= m_channel[channel].m_read_ch(m_srcoffset) << 16;
+ m_srcoffset++;
#ifdef DEBUG_DATA_DUMP
- //printf("read addr %08x, blah_r %08x - read count count %08x\n", m_channel[channel].m_srcoffset*2, tempdata, m_channel[channel].m_decathlt_lastcount*4);
+ //printf("read addr %08x, blah_r %08x - read count count %08x\n", m_srcoffset*2, tempdata, m_decathlt_lastcount*4);
fwrite(&tempdata, 1, 4, tempfile);
#else
- logerror("read addr %08x, blah_r %08x - read count count %08x\n", m_channel[channel].m_srcoffset*2, tempdata, m_channel[channel].m_decathlt_lastcount*4);
+ logerror("read addr %08x, blah_r %08x - read count count %08x\n", m_srcoffset*2, tempdata, m_decathlt_lastcount*4);
#endif
return tempdata;
#if 0
case 0x03228e4:
- if (fake0) retvalue = fake0[(((0x20080/4)+m_channel[channel].m_decathlt_lastcount))];
- m_channel[channel].m_decathlt_lastcount++;
+ if (fake0) retvalue = fake0[(((0x20080/4)+m_decathlt_lastcount))];
+ m_decathlt_lastcount++;
return retvalue;
case 0x00a9f3a:
- if (fake0) retvalue = fake0[(((0x00000/4)+m_channel[channel].m_decathlt_lastcount))];
- m_channel[channel].m_decathlt_lastcount++;
+ if (fake0) retvalue = fake0[(((0x00000/4)+m_decathlt_lastcount))];
+ m_decathlt_lastcount++;
return retvalue;
case 0x0213ab4:
- if (fake0) retvalue = fake0[(((0x40000/4)+m_channel[channel].m_decathlt_lastcount))];
- m_channel[channel].m_decathlt_lastcount++;
+ if (fake0) retvalue = fake0[(((0x40000/4)+m_decathlt_lastcount))];
+ m_decathlt_lastcount++;
return retvalue;
case 0x01efaf0:
- if (fake0) retvalue = fake0[(((0x60000/4)+m_channel[channel].m_decathlt_lastcount))];
- m_channel[channel].m_decathlt_lastcount++;
+ if (fake0) retvalue = fake0[(((0x60000/4)+m_decathlt_lastcount))];
+ m_decathlt_lastcount++;
return retvalue;
case 0x033f16c:
@@ -180,14 +188,14 @@ UINT32 sega_315_5838_comp_device::genericdecathlt_prot_r(UINT32 mem_mask, int ch
void sega_315_5838_comp_device::set_prot_addr(UINT32 data, UINT32 mem_mask, int channel)
{
// printf("set_prot_addr\n");
- COMBINE_DATA(&m_channel[channel].m_srcoffset);
+ COMBINE_DATA(&m_srcoffset);
- //if (m_decathlt_part==0) logerror("%d, last read count was %06x\n",channel, m_channel[channel].m_decathlt_lastcount*4);
- m_channel[channel].m_decathlt_lastcount = 0;
+ //if (m_decathlt_part==0) logerror("%d, last read count was %06x\n",channel, m_decathlt_lastcount*4);
+ m_decathlt_lastcount = 0;
if (mem_mask == 0x0000ffff)
{
- printf("set source address to %08x (channel %d)\n", m_channel[channel].m_srcoffset, channel);
+ printf("set source address to %08x (channel %d)\n", m_srcoffset, channel);
}
@@ -198,24 +206,24 @@ void sega_315_5838_comp_device::set_prot_addr(UINT32 data, UINT32 mem_mask, int
fclose(tempfile);
char filename[256];
- sprintf(filename, "%d_compressed_%08x", channel, m_channel[channel].m_srcoffset * 2);
+ sprintf(filename, "%d_compressed_%08x", channel, m_srcoffset * 2);
tempfile = fopen(filename, "w+b");
// the table and dictionary are uploaded repeatedly, usually before groups of data transfers but
// it's always the same tables (one pair for each channel)
{
FILE* fp;
- sprintf(filename, "%d_compressed_table1", channel);
+ sprintf(filename, "%d_compressed_table1_%08x", channel, m_srcoffset * 2);
fp = fopen(filename, "w+b");
- fwrite(&m_channel[channel].m_decathlt_prottable1, 24, 2, fp);
+ fwrite(&m_decathlt_prottable1, 24, 2, fp);
fclose(fp);
}
{
FILE* fp;
- sprintf(filename, "%d_compressed_dictionary", channel);
+ sprintf(filename, "%d_compressed_dictionary_%08x", channel, m_srcoffset * 2);
fp = fopen(filename, "w+b");
- fwrite(&m_channel[channel].m_decathlt_dictionary, 128, 2, fp);
+ fwrite(&m_decathlt_dictionaryy, 128, 2, fp);
fclose(fp);
}
}
@@ -228,13 +236,13 @@ void sega_315_5838_comp_device::set_upload_mode(UINT16 data, int channel)
if ((data == 0x8000) || (data == 0x0000))
{
// logerror("changed to upload mode 1\n");
- m_channel[channel].m_decathlt_prot_uploadmode = 1;
- m_channel[channel].m_decathlt_prot_uploadoffset = 0;
+ m_decathlt_prot_uploadmode = 1;
+ m_decathlt_prot_uploadoffset = 0;
}
else if ((data == 0x8080) || (data == 0x0080))
{
- m_channel[channel].m_decathlt_prot_uploadmode = 2;
- m_channel[channel].m_decathlt_prot_uploadoffset = 0;
+ m_decathlt_prot_uploadmode = 2;
+ m_decathlt_prot_uploadoffset = 0;
}
else
{
@@ -244,30 +252,30 @@ void sega_315_5838_comp_device::set_upload_mode(UINT16 data, int channel)
void sega_315_5838_comp_device::upload_table_data(UINT16 data, int channel)
{
- if (m_channel[channel].m_decathlt_prot_uploadmode == 1)
+ if (m_decathlt_prot_uploadmode == 1)
{
- if (m_channel[channel].m_decathlt_prot_uploadoffset >= 24)
+ if (m_decathlt_prot_uploadoffset >= 24)
{
fatalerror("upload mode 1 error, too big\n");
return;
}
- //logerror("uploading table 1 %04x %04x\n",m_channel[channel].m_decathlt_prot_uploadoffset, data&0xffff);
- m_channel[channel].m_decathlt_prottable1[m_channel[channel].m_decathlt_prot_uploadoffset] = data & 0xffff;
- m_channel[channel].m_decathlt_prot_uploadoffset++;
+ //logerror("uploading table 1 %04x %04x\n",m_decathlt_prot_uploadoffset, data&0xffff);
+ m_decathlt_prottable1[m_decathlt_prot_uploadoffset] = data & 0xffff;
+ m_decathlt_prot_uploadoffset++;
printf("unk table 1 %04x (channel %d)\n", data & 0xffff, channel);
}
- else if (m_channel[channel].m_decathlt_prot_uploadmode == 2)
+ else if (m_decathlt_prot_uploadmode == 2)
{
- if (m_channel[channel].m_decathlt_prot_uploadoffset >= 128)
+ if (m_decathlt_prot_uploadoffset >= 128)
{
fatalerror("upload mode 2 error, too big\n");
return;
}
- //logerror("uploading table 2 %04x %04x\n",m_channel[channel].m_decathlt_prot_uploadoffset, data&0xffff);
- m_channel[channel].m_decathlt_dictionary[m_channel[channel].m_decathlt_prot_uploadoffset] = data & 0xffff;
- m_channel[channel].m_decathlt_prot_uploadoffset++;
+ //logerror("uploading table 2 %04x %04x\n",m_decathlt_prot_uploadoffset, data&0xffff);
+ m_decathlt_dictionaryy[m_decathlt_prot_uploadoffset] = data & 0xffff;
+ m_decathlt_prot_uploadoffset++;
printf("dictionary %04x (channel %d)\n", data & 0xffff, channel);
}
}
diff --git a/src/mame/machine/315-5838_317-0229_comp.h b/src/mame/machine/315-5838_317-0229_comp.h
index 2fd0904450e..4ad6070ab84 100644
--- a/src/mame/machine/315-5838_317-0229_comp.h
+++ b/src/mame/machine/315-5838_317-0229_comp.h
@@ -65,17 +65,19 @@ protected:
virtual void device_reset() override;
private:
+ UINT16 m_decathlt_prottable1[24];
+ UINT16 m_decathlt_dictionaryy[128];
+
+ UINT32 m_srcoffset;
+
+ UINT32 m_decathlt_lastcount;
+ UINT32 m_decathlt_prot_uploadmode;
+ UINT32 m_decathlt_prot_uploadoffset;
+
// Decathlete specific variables and functions (see machine/decathlt.c)
struct channel_type
{
- UINT32 m_srcoffset;
- UINT16 m_decathlt_prottable1[24];
- UINT16 m_decathlt_dictionary[128];
-
- UINT32 m_decathlt_lastcount;
- UINT32 m_decathlt_prot_uploadmode;
- UINT32 m_decathlt_prot_uploadoffset;
sega_dec_read_delegate m_read_ch;
};
diff --git a/src/mame/machine/6883sam.cpp b/src/mame/machine/6883sam.cpp
index d912d65ea90..c3ce94e0fc6 100644
--- a/src/mame/machine/6883sam.cpp
+++ b/src/mame/machine/6883sam.cpp
@@ -85,7 +85,6 @@ sam6883_device::sam6883_device(const machine_config &mconfig, const char *tag, d
m_space_FF60(*this),
m_space_FFE0(*this)
{
- memset(m_banks, '\0', sizeof(m_banks));
}
diff --git a/src/mame/machine/amstrad.cpp b/src/mame/machine/amstrad.cpp
index 3e89d234271..e8ed9a6e266 100644
--- a/src/mame/machine/amstrad.cpp
+++ b/src/mame/machine/amstrad.cpp
@@ -1106,7 +1106,7 @@ static device_t* get_expansion_device(running_machine &machine, const char* tag)
amstrad_state *state = machine.driver_data<amstrad_state>();
cpc_expansion_slot_device* exp_port = state->m_exp;
- while(exp_port != nullptr)
+ while (exp_port != nullptr)
{
device_t* temp;
@@ -1117,11 +1117,16 @@ static device_t* get_expansion_device(running_machine &machine, const char* tag)
// if it's not what we're looking for, then check the expansion port on this expansion device. if it exists.
temp = dynamic_cast<device_t*>(exp_port->get_card_device());
- if(temp == nullptr)
+ if (temp == nullptr)
+ {
return nullptr; // no device attached
+ }
+
exp_port = temp->subdevice<cpc_expansion_slot_device>("exp");
- if(exp_port == nullptr)
+ if (exp_port == nullptr)
+ {
return nullptr; // we're at the end of the chain
+ }
}
return nullptr;
}
@@ -2000,18 +2005,22 @@ WRITE8_MEMBER(amstrad_state::rom_select)
// expansion devices know the selected ROM by monitoring I/O writes to DFxx
// there are no signals related to which ROM is selected
cpc_expansion_slot_device* exp_port = m_exp;
- while(exp_port != nullptr)
+ while (exp_port != nullptr)
{
device_cpc_expansion_card_interface* temp;
device_t* temp_dev;
temp = dynamic_cast<device_cpc_expansion_card_interface*>(exp_port->get_card_device());
temp_dev = dynamic_cast<device_t*>(exp_port->get_card_device());
- if(temp != nullptr)
+ if (temp != nullptr)
{
temp->set_rom_bank(data);
+ exp_port = temp_dev->subdevice<cpc_expansion_slot_device>("exp");
+ }
+ else
+ {
+ exp_port = NULL;
}
- exp_port = temp_dev->subdevice<cpc_expansion_slot_device>("exp");
}
amstrad_rethinkMemory();
@@ -2906,37 +2915,42 @@ static const UINT8 amstrad_cycle_table_ex[256]=
void amstrad_state::enumerate_roms()
{
UINT8 m_rom_count = 1;
- device_t* romexp;
- rom_image_device* romimage;
UINT8 *rom = m_region_maincpu->base();
- char str[20];
- int i;
- bool slot3 = false,slot7 = false;
+ bool slot7 = false;
if (m_system_type == SYSTEM_PLUS || m_system_type == SYSTEM_GX4000)
{
UINT8 *crt = m_region_cart->base();
int bank_mask = (m_cart->get_rom_size() / 0x4000) - 1;
/* ROMs are stored on the inserted cartridge in the Plus/GX4000 */
- for(i=0; i<128; i++) // fill ROM table
+ for (int i = 0; i < 128; i++) // fill ROM table
+ {
m_Amstrad_ROM_Table[i] = &crt[0x4000];
- for(i=128;i<160;i++)
+ }
+
+ for(int i = 128; i < 160; i++)
+ {
m_Amstrad_ROM_Table[i] = &crt[((i - 128) & bank_mask) * 0x4000];
+ }
m_Amstrad_ROM_Table[7] = &crt[0xc000];
slot7 = true;
}
else
{
/* slot 0 is always BASIC, as is any unused slot */
- for(i=0; i<256; i++)
+ for (int i = 0; i<256; i++)
+ {
m_Amstrad_ROM_Table[i] = &rom[0x014000];
+ }
+
/* AMSDOS ROM -- TODO: exclude from 464 unless a DDI-1 device is connected */
m_Amstrad_ROM_Table[7] = &rom[0x018000];
slot7 = true;
}
/* MSX-DOS BIOS - Aleste MSX emulation */
+ bool slot3 = false;
if(m_system_type == SYSTEM_ALESTE)
{
m_Amstrad_ROM_Table[3] = &rom[0x01c000];
@@ -2955,36 +2969,41 @@ void amstrad_state::enumerate_roms()
temp = dynamic_cast<device_t*>(exp_port->get_card_device());
if(temp != nullptr)
{
- if(temp->memregion("exp_rom")->base() != nullptr)
+ memory_region *temp_region = temp->memregion("exp_rom");
+ if(temp_region != nullptr && temp_region->base() != nullptr)
{
- int num = temp->memregion("exp_rom")->bytes() / 0x4000;
- for(i=0;i<num;i++)
+ int num = temp_region->bytes() / 0x4000;
+ for (int i = 0; i < num; i++)
{
- m_Amstrad_ROM_Table[m_rom_count] = temp->memregion("exp_rom")->base()+0x4000*i;
+ m_Amstrad_ROM_Table[m_rom_count] = temp_region->base()+0x4000*i;
NEXT_ROM_SLOT
}
}
+ exp_port = temp->subdevice<cpc_expansion_slot_device>("exp");
+ }
+ else
+ {
+ exp_port = NULL;
}
- exp_port = temp->subdevice<cpc_expansion_slot_device>("exp");
}
/* add ROMs from ROMbox expansion */
- romexp = get_expansion_device(machine(),"rom");
+ device_t* romexp = get_expansion_device(machine(),"rom");
if(romexp)
{
- for(i=0;i<8;i++)
+ for(int i = 0; i < 8; i++)
{
- sprintf(str,"rom%i",i+1);
- romimage = romexp->subdevice<rom_image_device>(str);
- if(romimage->base() != nullptr)
+ char str[20];
+ sprintf(str, "rom%i", i + 1);
+ rom_image_device* romimage = romexp->subdevice<rom_image_device>(str);
+ if(romimage != NULL && romimage->base() != nullptr)
{
m_Amstrad_ROM_Table[m_rom_count] = romimage->base();
NEXT_ROM_SLOT
}
}
}
-
}
void amstrad_state::amstrad_common_init()
@@ -3106,7 +3125,9 @@ MACHINE_START_MEMBER(amstrad_state,plus)
std::string region_tag;
m_region_cart = memregion(region_tag.assign(m_cart->tag()).append(GENERIC_ROM_REGION_TAG).c_str());
if (!m_region_cart) // this should never happen, since we make carts mandatory!
+ {
m_region_cart = memregion("maincpu");
+ }
}
diff --git a/src/mame/machine/apollo_kbd.cpp b/src/mame/machine/apollo_kbd.cpp
index b6cbef1d429..fbfbe18b94a 100644
--- a/src/mame/machine/apollo_kbd.cpp
+++ b/src/mame/machine/apollo_kbd.cpp
@@ -192,7 +192,6 @@ void apollo_kbd_device::beeper::on()
{
if (keyboard_has_beeper())
{
- m_beeper->set_frequency(1000);
m_beeper->set_state(1);
m_timer->adjust( attotime::from_msec(10), 0, attotime::zero);
}
diff --git a/src/mame/machine/arkanoid.cpp b/src/mame/machine/arkanoid.cpp
index 323c183cb90..02bb306a1b6 100644
--- a/src/mame/machine/arkanoid.cpp
+++ b/src/mame/machine/arkanoid.cpp
@@ -68,13 +68,13 @@ READ8_MEMBER(arkanoid_state::arkanoid_68705_tcr_r)
WRITE8_MEMBER(arkanoid_state::arkanoid_68705_tcr_w)
{
/*
- logerror("arkanoid_68705 TCR written with %02X\n", data);
- if (data&0x80) logerror(" TIR=1, Timer Interrupt state is set\n"); else logerror(" TIR=0; Timer Interrupt state is cleared\n");
- if (data&0x40) logerror(" TIM=1, Timer Interrupt is now masked\n"); else logerror(" TIM=0, Timer Interrupt is now unmasked\n");
- if (data&0x20) logerror(" TIN=1, Timer Clock source is set to external\n"); else logerror(" TIN=0, Timer Clock source is set to internal\n");
- if (data&0x10) logerror(" TIE=1, Timer External pin is enabled\n"); else logerror(" TIE=0, Timer External pin is disabled\n");
- if (data&0x08) logerror(" PSC=1, Prescaler counter cleared\n"); else logerror(" PSC=0, Prescaler counter left alone\n");
- logerror(" Prescaler: %d\n", (1<<(data&0x7)));
+ logerror("arkanoid_68705 TCR written with %02X\n", data);
+ if (data&0x80) logerror(" TIR=1, Timer Interrupt state is set\n"); else logerror(" TIR=0; Timer Interrupt state is cleared\n");
+ if (data&0x40) logerror(" TIM=1, Timer Interrupt is now masked\n"); else logerror(" TIM=0, Timer Interrupt is now unmasked\n");
+ if (data&0x20) logerror(" TIN=1, Timer Clock source is set to external\n"); else logerror(" TIN=0, Timer Clock source is set to internal\n");
+ if (data&0x10) logerror(" TIE=1, Timer External pin is enabled\n"); else logerror(" TIE=0, Timer External pin is disabled\n");
+ if (data&0x08) logerror(" PSC=1, Prescaler counter cleared\n"); else logerror(" PSC=0, Prescaler counter left alone\n");
+ logerror(" Prescaler: %d\n", (1<<(data&0x7)));
*/
// if timer was enabled but now isn't, shut it off.
// below is a hack assuming the TIMER pin isn't going anywhere except tied to +5v, so basically TIN is acting as an active-low timer enable, and TIE is ignored even in the case where TIE=1, the timer will end up being 5v ANDED against the internal timer clock which == the internal timer clock.
@@ -82,20 +82,20 @@ WRITE8_MEMBER(arkanoid_state::arkanoid_68705_tcr_w)
if ((m_tcr^data)&0x20)// check if TIN state changed
{
/* logerror("timer enable state changed!\n"); */
- if (data&0x20) timer_set(attotime::never, TIMER_68705_PRESCALER_EXPIRED);
- else timer_set(attotime::from_hz(((XTAL_12MHz/4)/4)/(1<<(data&0x7))), TIMER_68705_PRESCALER_EXPIRED);
+ if (data&0x20) m_68705_timer->adjust(attotime::never, TIMER_68705_PRESCALER_EXPIRED);
+ else m_68705_timer->adjust(attotime::from_hz(((XTAL_12MHz/4)/4)/(1<<(data&0x7))), TIMER_68705_PRESCALER_EXPIRED);
}
// prescaler check: if timer prescaler has changed, or the PSC bit is set, adjust the timer length for the prescaler expired timer, but only if the timer would be running
if ( (((m_tcr&0x07)!=(data&0x07))||(data&0x08)) && ((data&0x20)==0) )
{
/* logerror("timer reset due to PSC or prescaler change!\n"); */
- timer_set(attotime::from_hz(((XTAL_12MHz/4)/4)/(1<<(data&0x7))), TIMER_68705_PRESCALER_EXPIRED);
+ m_68705_timer->adjust(attotime::from_hz(((XTAL_12MHz/4)/4)/(1<<(data&0x7))), TIMER_68705_PRESCALER_EXPIRED);
}
m_tcr = data;
// if int state is set, and TIM is unmasked, assert an interrupt. otherwise clear it.
if ((m_tcr&0xC0) == 0x80)
m_mcu->set_input_line(M68705_INT_TIMER, ASSERT_LINE);
- else
+ else
m_mcu->set_input_line(M68705_INT_TIMER, CLEAR_LINE);
}
@@ -118,9 +118,9 @@ TIMER_CALLBACK_MEMBER(arkanoid_state::timer_68705_increment)
if (m_tdr == 0x00) m_tcr |= 0x80; // if we overflowed, set the int bit
if ((m_tcr&0xC0) == 0x80)
m_mcu->set_input_line(M68705_INT_TIMER, ASSERT_LINE);
- else
+ else
m_mcu->set_input_line(M68705_INT_TIMER, CLEAR_LINE);
- timer_set(attotime::from_hz(((XTAL_12MHz/4)/4)/(1<<(m_tcr&0x7))), TIMER_68705_PRESCALER_EXPIRED);
+ m_68705_timer->adjust(attotime::from_hz(((XTAL_12MHz/4)/4)/(1<<(m_tcr&0x7))), TIMER_68705_PRESCALER_EXPIRED);
}
READ8_MEMBER(arkanoid_state::arkanoid_68705_port_c_r)
@@ -178,7 +178,7 @@ WRITE8_MEMBER(arkanoid_state::arkanoid_68705_ddr_c_w)
{
UINT8 changed_m_port_c_out = (m_port_c_out^(m_port_c_internal|(~(data|0xF0))));
m_port_c_out = (m_port_c_internal|(~(data|0xF0)));
-
+
/* bits 0 and 1 are inputs, should never be set as outputs here. if they are, ignore them. */
/* bit 2 is an output, to clear latch 1(m_z80HasWritten) on rising edge, and enable the z80->68705 communication latch on level low */
// if 0x04 rising edge, clear m_z80HasWritten/latch 1 (and clear the irq line)
@@ -187,13 +187,13 @@ WRITE8_MEMBER(arkanoid_state::arkanoid_68705_ddr_c_w)
m_z80HasWritten = 0;
m_mcu->set_input_line(M68705_IRQ_LINE, CLEAR_LINE);
}
-
+
// if 0x04 low, enable the m_port_a_in latch, otherwise set the latch value to 0xFF
if (~m_port_c_out&0x04)
m_port_a_in = m_fromz80;
else
m_port_a_in = 0xFF;
-
+
/* bit 3 is an output, to set latch 2(m_68705HasWritten) and latch the port_a value into the 68705->z80 latch, on falling edge or low level */
// if 0x08 low, set m_68705HasWritten/latch 2
if (~m_port_c_out&0x08)
diff --git a/src/mame/machine/atarifb.cpp b/src/mame/machine/atarifb.cpp
index e7c2e6aec93..5917fb05ef1 100644
--- a/src/mame/machine/atarifb.cpp
+++ b/src/mame/machine/atarifb.cpp
@@ -1,4 +1,4 @@
-// license:???
+// license:BSD-3-Clause
// copyright-holders:Mike Balfour, Patrick Lawrence, Brad Oliver
/*************************************************************************
diff --git a/src/mame/machine/atarigen.cpp b/src/mame/machine/atarigen.cpp
index 05127cb1edd..2d55560cee8 100644
--- a/src/mame/machine/atarigen.cpp
+++ b/src/mame/machine/atarigen.cpp
@@ -10,11 +10,6 @@
#include "emu.h"
#include "cpu/m6502/m6502.h"
-#include "sound/2151intf.h"
-#include "sound/2413intf.h"
-#include "sound/tms5220.h"
-#include "sound/okim6295.h"
-#include "sound/pokey.h"
#include "video/atarimo.h"
#include "atarigen.h"
@@ -951,9 +946,6 @@ machine_config_constructor atari_eeprom_2816_device::device_mconfig_additions()
atarigen_state::atarigen_state(const machine_config &mconfig, device_type type, const char *tag)
: driver_device(mconfig, type, tag),
- m_earom(*this, "earom"),
- m_earom_data(0),
- m_earom_control(0),
m_scanline_int_state(0),
m_sound_int_state(0),
m_video_int_state(0),
@@ -968,9 +960,6 @@ atarigen_state::atarigen_state(const machine_config &mconfig, device_type type,
m_slapstic_mirror(0),
m_scanlines_per_callback(0),
m_maincpu(*this, "maincpu"),
- m_audiocpu(*this, "audiocpu"),
- m_oki(*this, "oki"),
- m_soundcomm(*this, "soundcomm"),
m_gfxdecode(*this, "gfxdecode"),
m_screen(*this, "screen"),
m_palette(*this, "palette"),
@@ -1004,9 +993,6 @@ void atarigen_state::machine_start()
save_item(NAME(m_slapstic_last_address));
save_item(NAME(m_scanlines_per_callback));
-
- save_item(NAME(m_earom_data));
- save_item(NAME(m_earom_control));
}
@@ -1015,14 +1001,10 @@ void atarigen_state::machine_reset()
// reset the interrupt states
m_video_int_state = m_sound_int_state = m_scanline_int_state = 0;
- // reset the control latch on the EAROM, if present
- if (m_earom != nullptr)
- m_earom->set_control(0, 1, 1, 0, 0);
-
// reset the slapstic
if (m_slapstic_num != 0)
{
- if (!m_slapstic_device)
+ if (!m_slapstic_device.found())
fatalerror("Slapstic device is missing?\n");
m_slapstic_device->slapstic_reset();
@@ -1197,8 +1179,8 @@ void atarigen_state::device_post_load()
{
if (m_slapstic_num != 0)
{
- if (!m_slapstic_device)
- fatalerror("Slapstic device is missing?\n");
+ if (!m_slapstic_device.found())
+ fatalerror("Slapstic device is missing?\n");
slapstic_update_bank(m_slapstic_device->slapstic_bank());
}
@@ -1232,37 +1214,30 @@ DIRECT_UPDATE_MEMBER(atarigen_state::slapstic_setdirect)
// slapstic and sets the chip number.
//-------------------------------------------------
-void atarigen_state::slapstic_configure(cpu_device &device, offs_t base, offs_t mirror, int chipnum)
+void atarigen_state::slapstic_configure(cpu_device &device, offs_t base, offs_t mirror)
{
- // reset in case we have no state
- m_slapstic_num = chipnum;
- m_slapstic = nullptr;
+ if (!m_slapstic_device.found())
+ fatalerror("Slapstic device is missing\n");
- // if we have a chip, install it
- if (chipnum != 0)
- {
- if (!m_slapstic_device)
- fatalerror("Slapstic device is missing\n");
-
- // initialize the slapstic
- m_slapstic_device->slapstic_init(machine(), chipnum);
+ // initialize the slapstic
+ m_slapstic_num = m_slapstic_device->m_chipnum;
+ m_slapstic_device->slapstic_init();
- // install the memory handlers
- address_space &program = device.space(AS_PROGRAM);
- m_slapstic = program.install_readwrite_handler(base, base + 0x7fff, 0, mirror, read16_delegate(FUNC(atarigen_state::slapstic_r), this), write16_delegate(FUNC(atarigen_state::slapstic_w), this));
- program.set_direct_update_handler(direct_update_delegate(FUNC(atarigen_state::slapstic_setdirect), this));
+ // install the memory handlers
+ address_space &program = device.space(AS_PROGRAM);
+ m_slapstic = program.install_readwrite_handler(base, base + 0x7fff, 0, mirror, read16_delegate(FUNC(atarigen_state::slapstic_r), this), write16_delegate(FUNC(atarigen_state::slapstic_w), this));
+ program.set_direct_update_handler(direct_update_delegate(FUNC(atarigen_state::slapstic_setdirect), this));
- // allocate memory for a copy of bank 0
- m_slapstic_bank0.resize(0x2000);
- memcpy(&m_slapstic_bank0[0], m_slapstic, 0x2000);
+ // allocate memory for a copy of bank 0
+ m_slapstic_bank0.resize(0x2000);
+ memcpy(&m_slapstic_bank0[0], m_slapstic, 0x2000);
- // ensure we recopy memory for the bank
- m_slapstic_bank = 0xff;
+ // ensure we recopy memory for the bank
+ m_slapstic_bank = 0xff;
- // install an opcode base handler if we are a 68000 or variant
- m_slapstic_base = base;
- m_slapstic_mirror = mirror;
- }
+ // install an opcode base handler if we are a 68000 or variant
+ m_slapstic_base = base;
+ m_slapstic_mirror = mirror;
}
@@ -1274,7 +1249,7 @@ void atarigen_state::slapstic_configure(cpu_device &device, offs_t base, offs_t
WRITE16_MEMBER(atarigen_state::slapstic_w)
{
- if (!m_slapstic_device)
+ if (!m_slapstic_device.found())
fatalerror("Slapstic device is missing?\n");
slapstic_update_bank(m_slapstic_device->slapstic_tweak(space, offset));
@@ -1288,7 +1263,7 @@ WRITE16_MEMBER(atarigen_state::slapstic_w)
READ16_MEMBER(atarigen_state::slapstic_r)
{
- if (!m_slapstic_device)
+ if (!m_slapstic_device.found())
fatalerror("Slapstic device is missing?\n");
// fetch the result from the current bank first
@@ -1302,57 +1277,6 @@ READ16_MEMBER(atarigen_state::slapstic_r)
/***************************************************************************
- SOUND HELPERS
-***************************************************************************/
-
-//-------------------------------------------------
-// set_volume_by_type: Scans for a particular
-// sound chip and changes the volume on all
-// channels associated with it.
-//-------------------------------------------------
-
-void atarigen_state::set_volume_by_type(int volume, device_type type)
-{
- sound_interface_iterator iter(*this);
- for (device_sound_interface *sound = iter.first(); sound != nullptr; sound = iter.next())
- if (sound->device().type() == type)
- sound->set_output_gain(ALL_OUTPUTS, volume / 100.0);
-}
-
-
-//-------------------------------------------------
-// set_XXXXX_volume: Sets the volume for a given
-// type of chip.
-//-------------------------------------------------
-
-void atarigen_state::set_ym2151_volume(int volume)
-{
- set_volume_by_type(volume, YM2151);
-}
-
-void atarigen_state::set_ym2413_volume(int volume)
-{
- set_volume_by_type(volume, YM2413);
-}
-
-void atarigen_state::set_pokey_volume(int volume)
-{
- set_volume_by_type(volume, POKEY);
-}
-
-void atarigen_state::set_tms5220_volume(int volume)
-{
- set_volume_by_type(volume, TMS5220);
-}
-
-void atarigen_state::set_oki6295_volume(int volume)
-{
- set_volume_by_type(volume, OKIM6295);
-}
-
-
-
-/***************************************************************************
SCANLINE TIMING
***************************************************************************/
@@ -1465,43 +1389,3 @@ void atarigen_state::blend_gfx(int gfx0, int gfx1, int mask0, int mask1)
// free the second graphics element
m_gfxdecode->set_gfx(gfx1, nullptr);
}
-
-
-
-//**************************************************************************
-// VECTOR AND EARLY RASTER EAROM INTERFACE
-//**************************************************************************
-
-READ8_MEMBER( atarigen_state::earom_r )
-{
- // return data latched from previous clock
- return m_earom->data();
-}
-
-
-WRITE8_MEMBER( atarigen_state::earom_w )
-{
- // remember the value written
- m_earom_data = data;
-
- // output latch only enabled if control bit 2 is set
- if (m_earom_control & 4)
- m_earom->set_data(m_earom_data);
-
- // always latch the address
- m_earom->set_address(offset);
-}
-
-
-WRITE8_MEMBER( atarigen_state::earom_control_w )
-{
- // remember the control state
- m_earom_control = data;
-
- // ensure ouput data is put on data lines prior to updating controls
- if (m_earom_control & 4)
- m_earom->set_data(m_earom_data);
-
- // set the control lines; /CS2 is always held low
- m_earom->set_control(data & 8, 1, ~data & 4, data & 2, data & 1);
-}
diff --git a/src/mame/machine/atarigen.h b/src/mame/machine/atarigen.h
index 5010057ca00..0266d2bd458 100644
--- a/src/mame/machine/atarigen.h
+++ b/src/mame/machine/atarigen.h
@@ -11,12 +11,9 @@
#ifndef __MACHINE_ATARIGEN__
#define __MACHINE_ATARIGEN__
-#include "machine/nvram.h"
-#include "machine/er2055.h"
#include "machine/eeprompar.h"
#include "video/atarimo.h"
#include "cpu/m6502/m6502.h"
-#include "sound/okim6295.h"
#include "includes/slapstic.h"
@@ -190,10 +187,10 @@ public:
template<class _Object> static devcb_base &static_set_scanline_int_cb(device_t &device, _Object object) { return downcast<atari_vad_device &>(device).m_scanline_int_cb.set_callback(object); }
// getters
- tilemap_device *alpha() const { return m_alpha_tilemap; }
- tilemap_device *playfield() const { return m_playfield_tilemap; }
- tilemap_device *playfield2() const { return m_playfield2_tilemap; }
- atari_motion_objects_device *mob() const { return m_mob; }
+ tilemap_device &alpha() const { return *m_alpha_tilemap; }
+ tilemap_device &playfield() const { return *m_playfield_tilemap; }
+ tilemap_device &playfield2() const { return *m_playfield2_tilemap; }
+ atari_motion_objects_device &mob() const { return *m_mob; }
// read/write handlers
DECLARE_READ16_MEMBER(control_read);
@@ -358,20 +355,12 @@ public:
DECLARE_WRITE16_MEMBER(video_int_ack_w);
// slapstic helpers
- void slapstic_configure(cpu_device &device, offs_t base, offs_t mirror, int chipnum);
+ void slapstic_configure(cpu_device &device, offs_t base, offs_t mirror);
void slapstic_update_bank(int bank);
DECLARE_DIRECT_UPDATE_MEMBER(slapstic_setdirect);
DECLARE_WRITE16_MEMBER(slapstic_w);
DECLARE_READ16_MEMBER(slapstic_r);
- // sound helpers
- void set_volume_by_type(int volume, device_type type);
- void set_ym2151_volume(int volume);
- void set_ym2413_volume(int volume);
- void set_pokey_volume(int volume);
- void set_tms5220_volume(int volume);
- void set_oki6295_volume(int volume);
-
// scanline timing
void scanline_timer_reset(screen_device &screen, int frequency);
void scanline_timer(emu_timer &timer, screen_device &screen, int scanline);
@@ -383,11 +372,6 @@ public:
// misc helpers
void blend_gfx(int gfx0, int gfx1, int mask0, int mask1);
- // vector and early raster EAROM interface
- DECLARE_READ8_MEMBER( earom_r );
- DECLARE_WRITE8_MEMBER( earom_w );
- DECLARE_WRITE8_MEMBER( earom_control_w );
-
// timer IDs
enum
{
@@ -397,11 +381,6 @@ public:
TID_ATARIGEN_LAST
};
- // vector and early raster EAROM interface
- optional_device<er2055_device> m_earom;
- UINT8 m_earom_data;
- UINT8 m_earom_control;
-
UINT8 m_scanline_int_state;
UINT8 m_sound_int_state;
UINT8 m_video_int_state;
@@ -424,10 +403,7 @@ public:
atarigen_screen_timer m_screen_timer[2];
required_device<cpu_device> m_maincpu;
- optional_device<cpu_device> m_audiocpu;
- optional_device<okim6295_device> m_oki;
- optional_device<atari_sound_comm_device> m_soundcomm;
optional_device<gfxdecode_device> m_gfxdecode;
optional_device<screen_device> m_screen;
optional_device<palette_device> m_palette;
diff --git a/src/mame/machine/awboard.cpp b/src/mame/machine/awboard.cpp
index 342ff0b18e9..7ec0c5b6c3a 100644
--- a/src/mame/machine/awboard.cpp
+++ b/src/mame/machine/awboard.cpp
@@ -89,7 +89,7 @@ ROM board internal layouts:
Type 1:
00000000 - 00800000 IC18 flash ROM
- 00800000 - 01000000 unk, probably mirror of above
+ 00800000 - 01000000 mirror of above
01000000 - 02000000 IC10 \
..... mask ROMs
07000000 - 08000000 IC17 /
@@ -97,8 +97,9 @@ ROM board internal layouts:
Type 2:
00000000 - 00800000 FMEM1 flash ROM
- 00800000 - 01000000 FMEM2 flash ROM
- 01000000 - 02000000 unk, probably mirror of above
+ 00800000 - 01000000 mirror of above
+ 01000000 - 01800000 FMEM2 flash ROM
+ 01800000 - 02000000 mirror of above
02000000 - 04000000 MROM1 MROM4 MROM7 MROM10 \
04000000 - 06000000 MROM2 MROM5 MROM8 MROM11 banked mask ROMs
06000000 - 08000000 MROM3 MROM6 MROM9 MROM12 /
@@ -307,7 +308,6 @@ READ16_MEMBER(aw_rom_board::pio_r)
if (roffset >= (mpr_offset / 2))
roffset += mpr_bank * 0x4000000;
UINT16 retval = (m_region->bytes() > roffset) ? m_region->u16(roffset) : 0;
- epr_offset++;
return retval;
}
@@ -316,7 +316,6 @@ WRITE16_MEMBER(aw_rom_board::pio_w)
// write to ROM board address space, including FlashROM programming using CFI (TODO)
if (epr_offset == 0x7fffff)
mpr_bank = data & 3;
- epr_offset++;
}
WRITE16_MEMBER(aw_rom_board::epr_offsetl_w)
diff --git a/src/mame/machine/bbc.cpp b/src/mame/machine/bbc.cpp
index d82f4fdd827..9d25639924b 100644
--- a/src/mame/machine/bbc.cpp
+++ b/src/mame/machine/bbc.cpp
@@ -1426,14 +1426,26 @@ WRITE_LINE_MEMBER(bbc_state::write_acia_clock)
WRITE_LINE_MEMBER(bbc_state::motor_w)
{
- m_i8271->subdevice<floppy_connector>("0")->get_device()->mon_w(!state);
- m_i8271->subdevice<floppy_connector>("1")->get_device()->mon_w(!state);
+ for (int i=0; i != 2; i++) {
+ char devname[1];
+ sprintf(devname, "%d", i);
+ floppy_connector *con = m_i8271->subdevice<floppy_connector>(devname);
+ if (con) {
+ con->get_device()->mon_w(!state);
+ }
+ }
}
WRITE_LINE_MEMBER(bbc_state::side_w)
{
- m_i8271->subdevice<floppy_connector>("0")->get_device()->ss_w(state);
- m_i8271->subdevice<floppy_connector>("1")->get_device()->ss_w(state);
+ for (int i=0; i != 2; i++) {
+ char devname[1];
+ sprintf(devname, "%d", i);
+ floppy_connector *con = m_i8271->subdevice<floppy_connector>(devname);
+ if (con) {
+ con->get_device()->ss_w(state);
+ }
+ }
}
diff --git a/src/mame/machine/beta.cpp b/src/mame/machine/beta.cpp
index ef9ec771805..4c1afc59f64 100644
--- a/src/mame/machine/beta.cpp
+++ b/src/mame/machine/beta.cpp
@@ -184,9 +184,13 @@ SLOT_INTERFACE_END
static MACHINE_CONFIG_FRAGMENT( beta_disk )
MCFG_KR1818VG93_ADD("wd179x", XTAL_8MHz / 8)
MCFG_FLOPPY_DRIVE_ADD("wd179x:0", beta_disk_floppies, "drive0", beta_disk_device::floppy_formats)
+ MCFG_FLOPPY_DRIVE_SOUND(true)
MCFG_FLOPPY_DRIVE_ADD("wd179x:1", beta_disk_floppies, "drive1", beta_disk_device::floppy_formats)
+ MCFG_FLOPPY_DRIVE_SOUND(true)
MCFG_FLOPPY_DRIVE_ADD("wd179x:2", beta_disk_floppies, "drive2", beta_disk_device::floppy_formats)
+ MCFG_FLOPPY_DRIVE_SOUND(true)
MCFG_FLOPPY_DRIVE_ADD("wd179x:3", beta_disk_floppies, "drive3", beta_disk_device::floppy_formats)
+ MCFG_FLOPPY_DRIVE_SOUND(true)
MACHINE_CONFIG_END
ROM_START( beta_disk )
diff --git a/src/mame/machine/bigevglf.cpp b/src/mame/machine/bigevglf.cpp
index bca48fed8af..0b2c801ecbf 100644
--- a/src/mame/machine/bigevglf.cpp
+++ b/src/mame/machine/bigevglf.cpp
@@ -1,4 +1,4 @@
-// license:???
+// license:GPL-2.0+
// copyright-holders:Jarek Burczynski, Tomasz Slanina
/***************************************************************************
diff --git a/src/mame/machine/dec_lk201.cpp b/src/mame/machine/dec_lk201.cpp
index 1c2c4fdf552..0643d46d38d 100644
--- a/src/mame/machine/dec_lk201.cpp
+++ b/src/mame/machine/dec_lk201.cpp
@@ -204,7 +204,7 @@ static MACHINE_CONFIG_FRAGMENT( lk201 )
MCFG_CPU_PROGRAM_MAP(lk201_map)
MCFG_SPEAKER_STANDARD_MONO("mono")
- MCFG_SOUND_ADD(LK201_SPK_TAG, BEEP, 0)
+ MCFG_SOUND_ADD(LK201_SPK_TAG, BEEP, 3250)
MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.50)
MACHINE_CONFIG_END
diff --git a/src/mame/machine/electron.cpp b/src/mame/machine/electron.cpp
index 3d92206ba3e..cbeb410bc23 100644
--- a/src/mame/machine/electron.cpp
+++ b/src/mame/machine/electron.cpp
@@ -252,7 +252,7 @@ WRITE8_MEMBER(electron_state::electron_ula_w)
* but the divider is wrong(?), says 16 but results in high pitch,
* 32 is more close
*/
- m_beeper->set_frequency( 1000000 / ( 32 * ( data + 1 ) ) );
+ m_beeper->set_clock( 1000000 / ( 32 * ( data + 1 ) ) );
}
break;
case 0x07: /* Misc. */
@@ -331,7 +331,7 @@ void electron_state::electron_interrupt_handler(int mode, int interrupt)
TIMER_CALLBACK_MEMBER(electron_state::setup_beep)
{
m_beeper->set_state( 0 );
- m_beeper->set_frequency( 300 );
+ m_beeper->set_clock( 300 );
}
void electron_state::machine_reset()
diff --git a/src/mame/machine/gaelco2.cpp b/src/mame/machine/gaelco2.cpp
index a33a2c6ec5c..6d39cdd0962 100644
--- a/src/mame/machine/gaelco2.cpp
+++ b/src/mame/machine/gaelco2.cpp
@@ -289,7 +289,6 @@ WRITE16_MEMBER(gaelco2_state::gaelco2_eeprom_data_w)
READ16_MEMBER(gaelco2_state::snowboar_protection_r)
{
-
chd_file * table = machine().rom_load().get_disk_handle(":decrypt");
UINT8 temp[1024];
table->read_hunk(snowboard_latch>>9, &temp[0]);
diff --git a/src/mame/machine/gamecom.cpp b/src/mame/machine/gamecom.cpp
index 259443b728e..8d5d9b26982 100644
--- a/src/mame/machine/gamecom.cpp
+++ b/src/mame/machine/gamecom.cpp
@@ -177,8 +177,8 @@ WRITE8_MEMBER( gamecom_state::gamecom_pio_w )
/* P3 bit6 clear, bit7 set -> enable cartridge port #1? */
switch (data & 0xc0)
{
- case 0x40: m_cart_ptr = m_cart1_rom->base(); break;
- case 0x80: m_cart_ptr = m_cart2_rom->base(); break;
+ case 0x40: m_cart_ptr = m_cart1_rom != NULL ? m_cart1_rom->base() : NULL; break;
+ case 0x80: m_cart_ptr = m_cart2_rom != NULL ? m_cart2_rom->base() : NULL; break;
default: m_cart_ptr = nullptr; break;
}
return;
diff --git a/src/mame/machine/harddriv.cpp b/src/mame/machine/harddriv.cpp
index 9dc14a34438..a9653cf34ea 100644
--- a/src/mame/machine/harddriv.cpp
+++ b/src/mame/machine/harddriv.cpp
@@ -54,11 +54,11 @@ void harddriv_state::device_reset()
{
/* generic reset */
//atarigen_state::machine_reset();
- m_slapstic_device->slapstic_reset();
+ if (m_slapstic_device.found()) m_slapstic_device->slapstic_reset();
/* halt several of the DSPs to start */
- if (m_adsp != nullptr) m_adsp->set_input_line(INPUT_LINE_HALT, ASSERT_LINE);
- if (m_dsp32 != nullptr) m_dsp32->set_input_line(INPUT_LINE_HALT, ASSERT_LINE);
+ if (m_adsp.found()) m_adsp->set_input_line(INPUT_LINE_HALT, ASSERT_LINE);
+ if (m_dsp32.found()) m_dsp32->set_input_line(INPUT_LINE_HALT, ASSERT_LINE);
m_last_gsp_shiftreg = 0;
@@ -72,14 +72,14 @@ void harddriv_state::device_reset()
m_adsp_br = 0;
m_adsp_xflag = 0;
- if (m_ds3sdsp != nullptr)
+ if (m_ds3sdsp.found())
{
m_ds3sdsp->load_boot_data(m_ds3sdsp->region()->base(), m_ds3sdsp_pgm_memory);
m_ds3sdsp_timer_en = 0;
m_ds3sdsp_internal_timer->adjust(attotime::never);
}
- if (m_ds3xdsp != nullptr)
+ if (m_ds3xdsp.found())
{
m_ds3xdsp->load_boot_data(m_ds3xdsp->region()->base(), m_ds3xdsp_pgm_memory);
m_ds3xdsp_timer_en = 0;
@@ -173,7 +173,7 @@ READ16_MEMBER( harddriv_state::hd68k_msp_io_r )
UINT16 result;
offset = (offset / 2) ^ 1;
m_hd34010_host_access = TRUE;
- result = (m_msp != nullptr) ? m_msp->host_r(space, offset, 0xffff) : 0xffff;
+ result = m_msp.found() ? m_msp->host_r(space, offset, 0xffff) : 0xffff;
m_hd34010_host_access = FALSE;
return result;
}
@@ -182,7 +182,7 @@ READ16_MEMBER( harddriv_state::hd68k_msp_io_r )
WRITE16_MEMBER( harddriv_state::hd68k_msp_io_w )
{
offset = (offset / 2) ^ 1;
- if (m_msp != nullptr)
+ if (m_msp.found())
{
m_hd34010_host_access = TRUE;
m_msp->host_w(space, offset, data, 0xffff);
@@ -302,7 +302,7 @@ READ16_MEMBER( harddriv_state::hd68k_adc12_r )
READ16_MEMBER( harddriv_state::hd68k_sound_reset_r )
{
- if (m_jsa != nullptr)
+ if (m_jsa.found())
m_jsa->reset();
return ~0;
}
@@ -404,12 +404,12 @@ WRITE16_MEMBER( harddriv_state::hd68k_nwr_w )
break;
case 6: /* /GSPRES */
logerror("Write to /GSPRES(%d)\n", data);
- if (m_gsp != nullptr)
+ if (m_gsp.found())
m_gsp->set_input_line(INPUT_LINE_RESET, data ? CLEAR_LINE : ASSERT_LINE);
break;
case 7: /* /MSPRES */
logerror("Write to /MSPRES(%d)\n", data);
- if (m_msp != nullptr)
+ if (m_msp.found())
m_msp->set_input_line(INPUT_LINE_RESET, data ? CLEAR_LINE : ASSERT_LINE);
break;
}
@@ -859,7 +859,7 @@ WRITE16_MEMBER( harddriv_state::hd68k_ds3_control_w )
{
case 0:
/* SRES - reset sound CPU */
- if (m_ds3sdsp)
+ if (m_ds3sdsp.found())
{
m_ds3sdsp->set_input_line(INPUT_LINE_RESET, val ? CLEAR_LINE : ASSERT_LINE);
m_ds3sdsp->load_boot_data(m_ds3sdsp->region()->base(), m_ds3sdsp_pgm_memory);
@@ -879,7 +879,7 @@ WRITE16_MEMBER( harddriv_state::hd68k_ds3_control_w )
case 1:
/* XRES - reset sound helper CPU */
- if (m_ds3xdsp)
+ if (m_ds3xdsp.found())
{
m_ds3xdsp->set_input_line(INPUT_LINE_RESET, val ? CLEAR_LINE : ASSERT_LINE);
m_ds3xdsp->load_boot_data(m_ds3xdsp->region()->base(), m_ds3xdsp_pgm_memory);
@@ -1510,11 +1510,11 @@ WRITE16_MEMBER( harddriv_state::hd68k_dsk_control_w )
switch (offset & 7)
{
case 0: /* DSPRESTN */
- if (m_dsp32) m_dsp32->set_input_line(INPUT_LINE_RESET, val ? CLEAR_LINE : ASSERT_LINE);
+ if (m_dsp32.found()) m_dsp32->set_input_line(INPUT_LINE_RESET, val ? CLEAR_LINE : ASSERT_LINE);
break;
case 1: /* DSPZN */
- if (m_dsp32) m_dsp32->set_input_line(INPUT_LINE_HALT, val ? CLEAR_LINE : ASSERT_LINE);
+ if (m_dsp32.found()) m_dsp32->set_input_line(INPUT_LINE_HALT, val ? CLEAR_LINE : ASSERT_LINE);
break;
case 2: /* ZW1 */
@@ -1578,7 +1578,7 @@ READ16_MEMBER( harddriv_state::hd68k_dsk_rom_r )
WRITE16_MEMBER( harddriv_state::hd68k_dsk_dsp32_w )
{
m_dsk_pio_access = TRUE;
- if (m_dsp32) m_dsp32->pio_w(offset, data);
+ if (m_dsp32.found()) m_dsp32->pio_w(offset, data);
m_dsk_pio_access = FALSE;
}
@@ -1587,7 +1587,7 @@ READ16_MEMBER( harddriv_state::hd68k_dsk_dsp32_r )
{
UINT16 result;
m_dsk_pio_access = TRUE;
- if (m_dsp32) result = m_dsp32->pio_r(offset);
+ if (m_dsp32.found()) result = m_dsp32->pio_r(offset);
else result = 0x00;
m_dsk_pio_access = FALSE;
diff --git a/src/mame/machine/iteagle_fpga.cpp b/src/mame/machine/iteagle_fpga.cpp
index 9fa7cef6da8..40e1a9bb19e 100644
--- a/src/mame/machine/iteagle_fpga.cpp
+++ b/src/mame/machine/iteagle_fpga.cpp
@@ -4,6 +4,7 @@
#include "coreutil.h"
#define LOG_FPGA (0)
+#define LOG_SERIAL (0)
#define LOG_RTC (0)
#define LOG_RAM (0)
#define LOG_EEPROM (0)
@@ -80,14 +81,14 @@ void iteagle_fpga_device::device_reset()
m_serial_str.clear();
m_serial_idx = 0;
m_serial_data = false;
+ memset(m_serial_com0, 0, sizeof(m_serial_com0));
memset(m_serial_com1, 0, sizeof(m_serial_com1));
memset(m_serial_com2, 0, sizeof(m_serial_com2));
memset(m_serial_com3, 0, sizeof(m_serial_com3));
- memset(m_serial_com4, 0, sizeof(m_serial_com4));
+ m_serial_com0[0] = 0x2c;
m_serial_com1[0] = 0x2c;
m_serial_com2[0] = 0x2c;
m_serial_com3[0] = 0x2c;
- m_serial_com4[0] = 0x2c;
}
void iteagle_fpga_device::update_sequence(UINT32 data)
@@ -130,12 +131,10 @@ void iteagle_fpga_device::update_sequence_eg1(UINT32 data)
val1 = ((m_seq & 0x2)<<6) | ((m_seq & 0x4)<<4) | ((m_seq & 0x8)<<2) | ((m_seq & 0x10)<<0)
| ((m_seq & 0x20)>>2) | ((m_seq & 0x40)>>4) | ((m_seq & 0x80)>>6) | ((m_seq & 0x100)>>8);
m_seq = (m_seq>>8) | ((feed&0xff)<<16);
- //m_fpga_regs[offset] = (m_fpga_regs[offset]&0xFFFFFF00) | ((val1 + m_seq_rem1)&0xFF);
m_fpga_regs[offset] = (m_fpga_regs[offset]&0xFFFFFF00) | ((val1 + m_seq_rem1 + m_seq_rem2)&0xFF);
} else if (data & 0x2) {
val1 = ((m_seq & 0x2)<<1) | ((m_seq & 0x4)>>1) | ((m_seq & 0x8)>>3);
m_seq_rem1 = ((m_seq & 0x10)) | ((m_seq & 0x20)>>2) | ((m_seq & 0x40)>>4);
- //m_seq_rem2 = ((m_seq & 0x80)>>1) | ((m_seq & 0x100)>>3) | ((m_seq & 0x200)>>5);
m_seq = (m_seq>>6) | ((feed&0x3f)<<18);
m_fpga_regs[offset] = (m_fpga_regs[offset]&0xFFFFFF00) | ((val1 + m_seq_rem1 + m_seq_rem2)&0xFF);
} else {
@@ -197,16 +196,16 @@ READ32_MEMBER( iteagle_fpga_device::fpga_r )
logerror("%s:fpga_r offset %04X = %08X & %08X\n", machine().describe_context(), offset*4, result, mem_mask);
break;
case 0x0c/4: // 1d = modem byte
- result = (result & 0xFFFF0000) | ((m_serial_com2[m_serial_idx]&0xff)<<8) | (m_serial_com1[m_serial_idx]&0xff);
+ result = (result & 0xFFFF0000) | ((m_serial_com1[m_serial_idx]&0xff)<<8) | (m_serial_com0[m_serial_idx]&0xff);
if (ACCESSING_BITS_0_15) {
m_serial_data = false;
m_serial_idx = 0;
}
- if (LOG_FPGA)
+ if (0 && LOG_FPGA)
logerror("%s:fpga_r offset %04X = %08X & %08X\n", machine().describe_context(), offset*4, result, mem_mask);
break;
case 0x1c/4: // 1d = modem byte
- result = (result & 0xFFFF0000) | ((m_serial_com4[m_serial_idx]&0xff)<<8) | (m_serial_com3[m_serial_idx]&0xff);
+ result = (result & 0xFFFF0000) | ((m_serial_com3[m_serial_idx]&0xff)<<8) | (m_serial_com2[m_serial_idx]&0xff);
if (ACCESSING_BITS_0_15) {
m_serial_data = false;
m_serial_idx = 0;
@@ -233,8 +232,8 @@ WRITE32_MEMBER( iteagle_fpga_device::fpga_w )
if ((m_version & 0xff00) == 0x0200)
update_sequence_eg1(data & 0xff);
else
- // ATMEL Chip access. Returns version id's when bit 7 is set.
- update_sequence(data & 0xff);
+ // ATMEL Chip access. Returns version id's when bit 7 is set.
+ update_sequence(data & 0xff);
if (0 && LOG_FPGA)
logerror("%s:fpga_w offset %04X = %08X & %08X\n", machine().describe_context(), offset*4, data, mem_mask);
}
@@ -242,7 +241,7 @@ WRITE32_MEMBER( iteagle_fpga_device::fpga_w )
if (ACCESSING_BITS_24_31 && (data & 0x01000000)) {
m_cpu->set_input_line(m_irq_num, CLEAR_LINE);
// Not sure what value to use here, needed for lightgun
- m_timer->adjust(attotime::from_hz(25));
+ m_timer->adjust(attotime::from_hz(59));
if (LOG_FPGA)
logerror("%s:fpga_w offset %04X = %08X & %08X Clearing interrupt(%i)\n", machine().describe_context(), offset*4, data, mem_mask, m_irq_num);
} else {
@@ -269,7 +268,7 @@ WRITE32_MEMBER( iteagle_fpga_device::fpga_w )
if (!m_serial_data) {
m_serial_idx = data&0xf;
} else {
- m_serial_com1[m_serial_idx] = data&0xff;
+ m_serial_com0[m_serial_idx] = data&0xff;
m_serial_idx = 0;
}
m_serial_data = !m_serial_data;
@@ -278,29 +277,31 @@ WRITE32_MEMBER( iteagle_fpga_device::fpga_w )
if (!m_serial_data) {
m_serial_idx = (data&0x0f00)>>8;
} else {
- m_serial_com2[m_serial_idx] = (data&0xff00)>>8;
+ m_serial_com1[m_serial_idx] = (data&0xff00)>>8;
}
m_serial_data = !m_serial_data;
}
if (ACCESSING_BITS_16_23) {
if (m_serial_str.size()==0)
- m_serial_str = "com1: ";
+ m_serial_str = "com0: ";
m_serial_str += (data>>16)&0xff;
if (((data>>16)&0xff)==0xd) {
+ if (LOG_SERIAL) logerror("%s\n", m_serial_str.c_str());
osd_printf_debug("%s\n", m_serial_str.c_str());
m_serial_str.clear();
}
}
if (ACCESSING_BITS_24_31) {
if (m_serial_str.size()==0)
- m_serial_str = "com2: ";
+ m_serial_str = "com1: ";
m_serial_str += (data>>24)&0xff;
if (1 || ((data>>24)&0xff)==0xd) {
+ if (LOG_SERIAL) logerror("%s\n", m_serial_str.c_str());
osd_printf_debug("%s\n", m_serial_str.c_str());
m_serial_str.clear();
}
}
- if (LOG_FPGA)
+ if (0 && LOG_FPGA)
logerror("%s:fpga_w offset %04X = %08X & %08X\n", machine().describe_context(), offset*4, data, mem_mask);
break;
case 0x1c/4:
@@ -308,7 +309,7 @@ WRITE32_MEMBER( iteagle_fpga_device::fpga_w )
if (!m_serial_data) {
m_serial_idx = data&0xf;
} else {
- m_serial_com3[m_serial_idx] = data&0xff;
+ m_serial_com2[m_serial_idx] = data&0xff;
m_serial_idx = 0;
}
m_serial_data = !m_serial_data;
@@ -317,24 +318,26 @@ WRITE32_MEMBER( iteagle_fpga_device::fpga_w )
if (!m_serial_data) {
m_serial_idx = (data&0x0f00)>>8;
} else {
- m_serial_com4[m_serial_idx] = (data&0xff00)>>8;
+ m_serial_com3[m_serial_idx] = (data&0xff00)>>8;
}
m_serial_data = !m_serial_data;
}
if (ACCESSING_BITS_16_23) {
if (m_serial_str.size()==0)
- m_serial_str = "com3: ";
+ m_serial_str = "com2: ";
m_serial_str += (data>>16)&0xff;
if (1 || ((data>>16)&0xff)==0xd) {
+ if (LOG_SERIAL) logerror("%s\n", m_serial_str.c_str());
osd_printf_debug("%s\n", m_serial_str.c_str());
m_serial_str.clear();
}
}
if (ACCESSING_BITS_24_31) {
if (m_serial_str.size()==0)
- m_serial_str = "com4: ";
+ m_serial_str = "com3: ";
m_serial_str += (data>>24)&0xff;
if (((data>>24)&0xff)==0xd) {
+ if (LOG_SERIAL) logerror("%s\n", m_serial_str.c_str());
osd_printf_debug("%s\n", m_serial_str.c_str());
m_serial_str.clear();
}
@@ -649,7 +652,7 @@ void iteagle_ide_device::device_reset()
{
pci_device::device_reset();
memset(m_ctrl_regs, 0, sizeof(m_ctrl_regs));
- m_ctrl_regs[0x10/4] = 0x00000000; // 0x6=No SIMM, 0x2, 0x1, 0x0 = SIMM . Top 16 bits are compared to 0x3.
+ m_ctrl_regs[0x10/4] = 0x00070000; // 0x6=No SIMM, 0x2, 0x1, 0x0 = SIMM . Top 16 bits are compared to 0x3. Bit 0 might be lan chip present.
memset(m_rtc_regs, 0, sizeof(m_rtc_regs));
m_rtc_regs[0xa] = 0x20; // 32.768 MHz
m_rtc_regs[0xb] = 0x02; // 24-hour format
diff --git a/src/mame/machine/iteagle_fpga.h b/src/mame/machine/iteagle_fpga.h
index 5d150e66116..fe5f9a76687 100644
--- a/src/mame/machine/iteagle_fpga.h
+++ b/src/mame/machine/iteagle_fpga.h
@@ -63,10 +63,10 @@ private:
std::string m_serial_str;
UINT8 m_serial_idx;
bool m_serial_data;
+ UINT8 m_serial_com0[0x10];
UINT8 m_serial_com1[0x10];
UINT8 m_serial_com2[0x10];
UINT8 m_serial_com3[0x10];
- UINT8 m_serial_com4[0x10];
UINT32 m_version;
UINT32 m_seq_init;
diff --git a/src/mame/machine/kay_kbd.cpp b/src/mame/machine/kay_kbd.cpp
index 501dac7119b..736d39d5fd8 100644
--- a/src/mame/machine/kay_kbd.cpp
+++ b/src/mame/machine/kay_kbd.cpp
@@ -293,7 +293,6 @@ MACHINE_RESET_MEMBER(kaypro_state,kay_kbd)
kbd->beep_on = 1;
kbd->control_status = 0x14;
kbd->beeper->set_state(0);
- kbd->beeper->set_frequency(950); /* piezo-device needs to be measured */
kbd->head = kbd->tail = 0; /* init buffer */
}
diff --git a/src/mame/machine/kc.cpp b/src/mame/machine/kc.cpp
index d4374e31c45..b324f334751 100644
--- a/src/mame/machine/kc.cpp
+++ b/src/mame/machine/kc.cpp
@@ -332,7 +332,7 @@ void kc_state::update_0x0c000()
{
address_space &space = m_maincpu->space( AS_PROGRAM );
- if ((m_pio_data[0] & (1<<7)) && memregion("basic")->base() != nullptr)
+ if ((m_pio_data[0] & (1<<7)) && memregion("basic") != nullptr)
{
/* BASIC takes next priority */
LOG(("BASIC rom 0x0c000\n"));
diff --git a/src/mame/machine/megacd.cpp b/src/mame/machine/megacd.cpp
index a76c07d4f25..b393a11a2cc 100644
--- a/src/mame/machine/megacd.cpp
+++ b/src/mame/machine/megacd.cpp
@@ -911,23 +911,23 @@ WRITE16_MEMBER( sega_segacd_device::scd_a12006_hint_register_w )
void sega_segacd_device::segacd_mark_tiles_dirty(int offset)
{
- m_gfx[0]->mark_dirty((offset*2)/(SEGACD_BYTES_PER_TILE16));
- m_gfx[1]->mark_dirty((offset*2)/(SEGACD_BYTES_PER_TILE16));
- m_gfx[2]->mark_dirty((offset*2)/(SEGACD_BYTES_PER_TILE16));
- m_gfx[3]->mark_dirty((offset*2)/(SEGACD_BYTES_PER_TILE16));
- m_gfx[4]->mark_dirty((offset*2)/(SEGACD_BYTES_PER_TILE16));
- m_gfx[5]->mark_dirty((offset*2)/(SEGACD_BYTES_PER_TILE16));
- m_gfx[6]->mark_dirty((offset*2)/(SEGACD_BYTES_PER_TILE16));
- m_gfx[7]->mark_dirty((offset*2)/(SEGACD_BYTES_PER_TILE16));
-
- m_gfx[8]->mark_dirty((offset*2)/(SEGACD_BYTES_PER_TILE32));
- m_gfx[9]->mark_dirty((offset*2)/(SEGACD_BYTES_PER_TILE32));
- m_gfx[10]->mark_dirty((offset*2)/(SEGACD_BYTES_PER_TILE32));
- m_gfx[11]->mark_dirty((offset*2)/(SEGACD_BYTES_PER_TILE32));
- m_gfx[12]->mark_dirty((offset*2)/(SEGACD_BYTES_PER_TILE32));
- m_gfx[13]->mark_dirty((offset*2)/(SEGACD_BYTES_PER_TILE32));
- m_gfx[14]->mark_dirty((offset*2)/(SEGACD_BYTES_PER_TILE32));
- m_gfx[15]->mark_dirty((offset*2)/(SEGACD_BYTES_PER_TILE32));
+ gfx(0)->mark_dirty((offset*2)/(SEGACD_BYTES_PER_TILE16));
+ gfx(1)->mark_dirty((offset*2)/(SEGACD_BYTES_PER_TILE16));
+ gfx(2)->mark_dirty((offset*2)/(SEGACD_BYTES_PER_TILE16));
+ gfx(3)->mark_dirty((offset*2)/(SEGACD_BYTES_PER_TILE16));
+ gfx(4)->mark_dirty((offset*2)/(SEGACD_BYTES_PER_TILE16));
+ gfx(5)->mark_dirty((offset*2)/(SEGACD_BYTES_PER_TILE16));
+ gfx(6)->mark_dirty((offset*2)/(SEGACD_BYTES_PER_TILE16));
+ gfx(7)->mark_dirty((offset*2)/(SEGACD_BYTES_PER_TILE16));
+
+ gfx(8)->mark_dirty((offset*2)/(SEGACD_BYTES_PER_TILE32));
+ gfx(9)->mark_dirty((offset*2)/(SEGACD_BYTES_PER_TILE32));
+ gfx(10)->mark_dirty((offset*2)/(SEGACD_BYTES_PER_TILE32));
+ gfx(11)->mark_dirty((offset*2)/(SEGACD_BYTES_PER_TILE32));
+ gfx(12)->mark_dirty((offset*2)/(SEGACD_BYTES_PER_TILE32));
+ gfx(13)->mark_dirty((offset*2)/(SEGACD_BYTES_PER_TILE32));
+ gfx(14)->mark_dirty((offset*2)/(SEGACD_BYTES_PER_TILE32));
+ gfx(15)->mark_dirty((offset*2)/(SEGACD_BYTES_PER_TILE32));
}
@@ -1062,11 +1062,11 @@ inline UINT8 sega_segacd_device::get_stampmap_16x16_1x1_tile_info_pixel(int xpos
int tile_region, tileno;
SCD_GET_TILE_INFO_16x16_1x1(tile_region,tileno,(int)tile_index);
- tileno %= m_gfx[tile_region]->elements();
+ tileno %= gfx(tile_region)->elements();
if (tileno==0) return 0x00;
- const UINT8* srcdata = m_gfx[tile_region]->get_data(tileno);
+ const UINT8* srcdata = gfx(tile_region)->get_data(tileno);
return srcdata[((ypos&((1<<tilesize)-1))*(1<<tilesize))+(xpos&((1<<tilesize)-1))];
}
@@ -1100,11 +1100,11 @@ inline UINT8 sega_segacd_device::get_stampmap_32x32_1x1_tile_info_pixel(int xpos
int tile_region, tileno;
SCD_GET_TILE_INFO_32x32_1x1(tile_region,tileno,(int)tile_index);
- tileno %= m_gfx[tile_region]->elements();
+ tileno %= gfx(tile_region)->elements();
if (tileno==0) return 0x00; // does this apply in this mode?
- const UINT8* srcdata = m_gfx[tile_region]->get_data(tileno);
+ const UINT8* srcdata = gfx(tile_region)->get_data(tileno);
return srcdata[((ypos&((1<<tilesize)-1))*(1<<tilesize))+(xpos&((1<<tilesize)-1))];
}
@@ -1138,11 +1138,11 @@ inline UINT8 sega_segacd_device::get_stampmap_16x16_16x16_tile_info_pixel(int xp
int tile_region, tileno;
SCD_GET_TILE_INFO_16x16_16x16(tile_region,tileno,(int)tile_index);
- tileno %= m_gfx[tile_region]->elements();
+ tileno %= gfx(tile_region)->elements();
if (tileno==0) return 0x00; // does this apply in this mode
- const UINT8* srcdata = m_gfx[tile_region]->get_data(tileno);
+ const UINT8* srcdata = gfx(tile_region)->get_data(tileno);
return srcdata[((ypos&((1<<tilesize)-1))*(1<<tilesize))+(xpos&((1<<tilesize)-1))];
}
@@ -1176,11 +1176,11 @@ inline UINT8 sega_segacd_device::get_stampmap_32x32_16x16_tile_info_pixel(int xp
int tile_region, tileno;
SCD_GET_TILE_INFO_32x32_16x16(tile_region,tileno,(int)tile_index);
- tileno %= m_gfx[tile_region]->elements();
+ tileno %= gfx(tile_region)->elements();
if (tileno==0) return 0x00;
- const UINT8* srcdata = m_gfx[tile_region]->get_data(tileno);
+ const UINT8* srcdata = gfx(tile_region)->get_data(tileno);
return srcdata[((ypos&((1<<tilesize)-1))*(1<<tilesize))+(xpos&((1<<tilesize)-1))];
}
diff --git a/src/mame/machine/meters.cpp b/src/mame/machine/meters.cpp
index 651e5902e20..c948d0f77bf 100644
--- a/src/mame/machine/meters.cpp
+++ b/src/mame/machine/meters.cpp
@@ -41,7 +41,7 @@ void meters_device::device_start()
m_meter_info[i].on = 0;
m_meter_info[i].meter_timer = timer_alloc(i);
m_meter_info[i].meter_timer->reset();
-
+
//save_item(NAME(m_meter_info[i].reacttime), i); //enable if void ReactTime(int id, INT32 cycles) gets used
save_item(NAME(m_meter_info[i].state), i);
save_item(NAME(m_meter_info[i].count), i);
@@ -65,7 +65,7 @@ void meters_device::device_timer(emu_timer &timer, device_timer_id id, int param
{
if (id >= m_number_mtr)
assert_always(FALSE, "Unknown id in meters_device::device_timer");
-
+
m_meter_info[param].count++;
}
diff --git a/src/mame/machine/meters.h b/src/mame/machine/meters.h
index 9a0c49e0cd3..99e440d8c39 100644
--- a/src/mame/machine/meters.h
+++ b/src/mame/machine/meters.h
@@ -18,8 +18,7 @@
#define MCFG_METERS_NUMBER(_number) \
- meters_device::static_set_number_meters(*device, _number); \
-
+ meters_device::static_set_number_meters(*device, _number);
#define MAXMECHMETERS 8
#define METERREACTTIME 0.025 // number of seconds meter has to be active to tick
@@ -56,7 +55,7 @@ private:
bool state; // state 0/1
emu_timer *meter_timer;
};
-
+
meter_info m_meter_info[MAXMECHMETERS];
int m_number_mtr;
diff --git a/src/mame/machine/midwayic.cpp b/src/mame/machine/midwayic.cpp
index 2d848da5d0f..6761ab89289 100644
--- a/src/mame/machine/midwayic.cpp
+++ b/src/mame/machine/midwayic.cpp
@@ -645,11 +645,15 @@ void midway_ioasic_device::device_start()
m_cage = machine().device<atari_cage_device>("cage");
m_has_cage = (m_cage != nullptr);
- m_dcs_cpu = m_dcs->subdevice("dcs2");
- if (m_dcs_cpu == nullptr)
- m_dcs_cpu = m_dcs->subdevice("dsio");
- if (m_dcs_cpu == nullptr)
- m_dcs_cpu = m_dcs->subdevice("denver");
+ if (m_has_dcs)
+ {
+ m_dcs_cpu = m_dcs->subdevice("dcs2");
+ if (m_dcs_cpu == nullptr)
+ m_dcs_cpu = m_dcs->subdevice("dsio");
+ if (m_dcs_cpu == nullptr)
+ m_dcs_cpu = m_dcs->subdevice("denver");
+ }
+
m_shuffle_map = &shuffle_maps[m_shuffle_type][0];
// resolve callbacks
m_irq_callback.resolve_safe();
@@ -662,6 +666,7 @@ void midway_ioasic_device::device_start()
m_reg[IOASIC_SOUNDCTL] = 0x0001;
+
/* configure the fifo */
if (m_has_dcs)
{
@@ -671,6 +676,7 @@ void midway_ioasic_device::device_start()
m_dcs->set_io_callbacks(write_line_delegate(FUNC(midway_ioasic_device::ioasic_output_full),this),
write_line_delegate(FUNC(midway_ioasic_device::ioasic_input_empty),this));
}
+
fifo_reset_w(1);
}
diff --git a/src/mame/machine/ms7004.cpp b/src/mame/machine/ms7004.cpp
index f0f9d2ad10d..766b67173f4 100644
--- a/src/mame/machine/ms7004.cpp
+++ b/src/mame/machine/ms7004.cpp
@@ -64,7 +64,7 @@ static MACHINE_CONFIG_FRAGMENT( ms7004 )
MCFG_I8243_ADD("i8243", NOOP, WRITE8(ms7004_device, i8243_port_w))
MCFG_SPEAKER_STANDARD_MONO("mono")
- MCFG_SOUND_ADD(MS7004_SPK_TAG, BEEP, 0)
+ MCFG_SOUND_ADD(MS7004_SPK_TAG, BEEP, 3250)
MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.50)
MACHINE_CONFIG_END
diff --git a/src/mame/machine/mz700.cpp b/src/mame/machine/mz700.cpp
index 877bb528858..9d8e9fa0a85 100644
--- a/src/mame/machine/mz700.cpp
+++ b/src/mame/machine/mz700.cpp
@@ -70,8 +70,9 @@ DRIVER_INIT_MEMBER(mz_state,mz800)
m_cgram = std::make_unique<UINT8[]>(0x1000);
memset(m_cgram.get(), 0, sizeof(UINT8) * 0x1000);
- m_p_chargen = memregion("cgrom")->base();
- if (!m_p_chargen)
+ if (memregion("cgrom"))
+ m_p_chargen = memregion("cgrom")->base();
+ else
m_p_chargen = m_cgram.get();
UINT8 *rom = memregion("monitor")->base();
UINT8 *ram = m_ram->pointer();
diff --git a/src/mame/machine/n64.cpp b/src/mame/machine/n64.cpp
index 4918f1a1613..5f0d8a6b4d2 100644
--- a/src/mame/machine/n64.cpp
+++ b/src/mame/machine/n64.cpp
@@ -9,17 +9,9 @@
#include "includes/n64.h"
#include "video/n64.h"
-UINT32 *n64_sram;
-UINT32 *rdram;
-UINT32 *rsp_imem;
-UINT32 *rsp_dmem;
-
// device type definition
const device_type N64PERIPH = &device_creator<n64_periphs>;
-
-
-
n64_periphs::n64_periphs(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock)
: device_t(mconfig, N64PERIPH, "N64 Periphal Chips", tag, owner, clock, "n64_periphs", __FILE__)
, device_video_interface(mconfig, *this)
@@ -49,11 +41,11 @@ TIMER_CALLBACK_MEMBER(n64_periphs::reset_timer_callback)
void n64_periphs::reset_tick()
{
reset_timer->adjust(attotime::never);
- maincpu->reset();
- maincpu->execute().set_input_line(INPUT_LINE_IRQ2, CLEAR_LINE);
- rspcpu->reset();
- rspcpu->execute().set_input_line(INPUT_LINE_HALT, ASSERT_LINE);
- rspcpu->state().set_state_int(RSP_SR, rspcpu->state().state_int(RSP_SR) | RSP_STATUS_HALT);
+ m_vr4300->reset();
+ m_vr4300->set_input_line(INPUT_LINE_IRQ2, CLEAR_LINE);
+ m_rsp->reset();
+ m_rsp->set_input_line(INPUT_LINE_HALT, ASSERT_LINE);
+ m_rsp->set_state_int(RSP_SR, m_rsp->state_int(RSP_SR) | RSP_STATUS_HALT);
reset_held = false;
cic_status = 0;
memset(pif_ram, 0, sizeof(pif_ram));
@@ -104,7 +96,7 @@ void n64_periphs::poll_reset_button(bool button)
reset_held = button;
if(!old_held && reset_held)
{
- machine().device("maincpu")->execute().set_input_line(INPUT_LINE_IRQ2, ASSERT_LINE);
+ m_vr4300->set_input_line(INPUT_LINE_IRQ2, ASSERT_LINE);
}
else if(old_held && reset_held)
{
@@ -123,15 +115,21 @@ void n64_periphs::device_start()
si_dma_timer = machine().scheduler().timer_alloc(timer_expired_delegate(FUNC(n64_periphs::si_dma_callback),this));
vi_scanline_timer = machine().scheduler().timer_alloc(timer_expired_delegate(FUNC(n64_periphs::vi_scanline_callback),this));
reset_timer = machine().scheduler().timer_alloc(timer_expired_delegate(FUNC(n64_periphs::reset_timer_callback),this));
+ m_n64 = machine().driver_data<n64_state>();
}
void n64_periphs::device_reset()
{
UINT32 *cart = (UINT32*)machine().root_device().memregion("user2")->base();
- maincpu = machine().device("maincpu");
- rspcpu = machine().device("rsp");
- mem_map = &maincpu->memory().space(AS_PROGRAM);
+ m_vr4300 = machine().device<mips3_device>("maincpu");
+ m_rsp = machine().device<rsp_device>("rsp");
+ m_mem_map = &m_vr4300->space(AS_PROGRAM);
+
+ m_rdram = m_n64->rdram();
+ m_rsp_imem = m_n64->rsp_imem();
+ m_rsp_dmem = m_n64->rsp_dmem();
+ m_sram = m_n64->sram();
mi_version = 0x01010101;
mi_interrupt = 0;
@@ -238,7 +236,7 @@ void n64_periphs::device_reset()
pif_ram[0x26] = 0x3f;
pif_ram[0x27] = 0x3f;
cic_type=2;
- mem_map->write_dword(0x00000318, 0x800000); /* RDRAM Size */
+ m_mem_map->write_dword(0x00000318, 0x800000); /* RDRAM Size */
if (boot_checksum == U64(0x00000000001ff230))
{
@@ -274,7 +272,7 @@ void n64_periphs::device_reset()
pif_ram[0x26] = 0x91;
pif_ram[0x27] = 0x3f;
cic_type=5;
- mem_map->write_dword(0x000003f0, 0x800000);
+ m_mem_map->write_dword(0x000003f0, 0x800000);
}
else if (boot_checksum == U64(0x000000d6d5de4ba0))
{
@@ -329,7 +327,7 @@ READ32_MEMBER( n64_periphs::mi_reg_r )
break;
default:
- logerror("mi_reg_r: %08X, %08X at %08X\n", offset, mem_mask, mem_map->device().safe_pc());
+ logerror("mi_reg_r: %08X, %08X at %08X\n", offset, mem_mask, m_vr4300->pc());
break;
}
@@ -414,7 +412,7 @@ WRITE32_MEMBER( n64_periphs::mi_reg_w )
}
default:
- logerror("mi_reg_w: %08X, %08X, %08X at %08X\n", data, offset, mem_mask, maincpu->safe_pc());
+ logerror("mi_reg_w: %08X, %08X, %08X at %08X\n", data, offset, mem_mask, m_vr4300->pc());
break;
}
}
@@ -428,11 +426,11 @@ void n64_periphs::check_interrupts()
{
if (mi_intr_mask & mi_interrupt)
{
- machine().device("maincpu")->execute().set_input_line(INPUT_LINE_IRQ0, ASSERT_LINE);
+ m_vr4300->set_input_line(INPUT_LINE_IRQ0, ASSERT_LINE);
}
else
{
- machine().device("maincpu")->execute().set_input_line(INPUT_LINE_IRQ0, CLEAR_LINE);
+ m_vr4300->set_input_line(INPUT_LINE_IRQ0, CLEAR_LINE);
}
}
@@ -529,7 +527,7 @@ READ32_MEMBER( n64_periphs::rdram_reg_r )
{
if(offset > 0x24/4)
{
- logerror("rdram_reg_r: %08X, %08X at %08X\n", offset, mem_mask, maincpu->safe_pc());
+ logerror("rdram_reg_r: %08X, %08X at %08X\n", offset, mem_mask, m_vr4300->pc());
return 0;
}
return rdram_regs[offset];
@@ -539,7 +537,7 @@ WRITE32_MEMBER( n64_periphs::rdram_reg_w )
{
if(offset > 0x24/4)
{
- logerror("rdram_reg_w: %08X, %08X, %08X at %08X\n", data, offset, mem_mask, maincpu->safe_pc());
+ logerror("rdram_reg_w: %08X, %08X, %08X at %08X\n", data, offset, mem_mask, m_vr4300->pc());
return;
}
COMBINE_DATA(&rdram_regs[offset]);
@@ -570,7 +568,7 @@ void n64_periphs::sp_dma(int direction)
length = 0x1000 - (sp_mem_addr & 0xfff);
}
- UINT32 *sp_mem[2] = { rsp_dmem, rsp_imem };
+ UINT32 *sp_mem[2] = { m_rsp_dmem, m_rsp_imem };
int sp_mem_page = (sp_mem_addr >> 12) & 1;
if(direction == 0)// RDRAM -> I/DMEM
@@ -582,7 +580,7 @@ void n64_periphs::sp_dma(int direction)
for(int i = 0; i < length / 4; i++)
{
- sp_mem[sp_mem_page][(dst + i) & 0x3ff] = rdram[src + i];
+ sp_mem[sp_mem_page][(dst + i) & 0x3ff] = m_rdram[src + i];
}
sp_mem_addr += length;
@@ -600,7 +598,7 @@ void n64_periphs::sp_dma(int direction)
for(int i = 0; i < length / 4; i++)
{
- rdram[dst + i] = sp_mem[sp_mem_page][(src + i) & 0x3ff];
+ m_rdram[dst + i] = sp_mem[sp_mem_page][(src + i) & 0x3ff];
}
sp_mem_addr += length;
@@ -615,15 +613,15 @@ WRITE32_MEMBER(n64_periphs::sp_set_status)
{
if (data & 0x1)
{
- rspcpu->execute().set_input_line(INPUT_LINE_HALT, ASSERT_LINE);
- rspcpu->state().set_state_int(RSP_SR, rspcpu->state().state_int(RSP_SR) | RSP_STATUS_HALT);
+ m_rsp->set_input_line(INPUT_LINE_HALT, ASSERT_LINE);
+ m_rsp->set_state_int(RSP_SR, m_rsp->state_int(RSP_SR) | RSP_STATUS_HALT);
}
if (data & 0x2)
{
- rspcpu->state().set_state_int(RSP_SR, rspcpu->state().state_int(RSP_SR) | RSP_STATUS_BROKE);
+ m_rsp->set_state_int(RSP_SR, m_rsp->state_int(RSP_SR) | RSP_STATUS_BROKE);
- if (rspcpu->state().state_int(RSP_SR) & RSP_STATUS_INTR_BREAK)
+ if (m_rsp->state_int(RSP_SR) & RSP_STATUS_INTR_BREAK)
{
signal_rcp_interrupt(SP_INTERRUPT);
}
@@ -632,99 +630,73 @@ WRITE32_MEMBER(n64_periphs::sp_set_status)
READ32_MEMBER(n64_periphs::sp_reg_r)
{
- UINT32 ret = 0;
switch (offset)
{
case 0x00/4: // SP_MEM_ADDR_REG
- ret = sp_mem_addr;
- break;
+ return sp_mem_addr;
case 0x04/4: // SP_DRAM_ADDR_REG
- ret = sp_dram_addr;
- break;
+ return sp_dram_addr;
case 0x08/4: // SP_RD_LEN_REG
- ret = (sp_dma_skip << 20) | (sp_dma_count << 12) | sp_dma_length;
- break;
+ return (sp_dma_skip << 20) | (sp_dma_count << 12) | sp_dma_length;
case 0x10/4: // SP_STATUS_REG
- ret = rspcpu->state().state_int(RSP_SR);
- break;
+ return m_rsp->state_int(RSP_SR);
case 0x14/4: // SP_DMA_FULL_REG
- ret = 0;
- break;
+ return 0;
case 0x18/4: // SP_DMA_BUSY_REG
- ret = 0;
- break;
+ return 0;
case 0x1c/4: // SP_SEMAPHORE_REG
- machine().device("maincpu")->execute().yield();
+ m_vr4300->yield();
if( sp_semaphore )
{
- ret = 1;
+ return 1;
}
else
{
sp_semaphore = 1;
- ret = 0;
+ return 0;
}
break;
case 0x20/4: // DP_CMD_START
- {
- n64_state *state = machine().driver_data<n64_state>();
- ret = state->m_rdp->get_start();
- break;
- }
+ return m_n64->rdp()->get_start();
case 0x24/4: // DP_CMD_END
- {
- n64_state *state = machine().driver_data<n64_state>();
- ret = state->m_rdp->get_end();
- break;
- }
+ return m_n64->rdp()->get_end();
case 0x28/4: // DP_CMD_CURRENT
- {
- n64_state *state = machine().driver_data<n64_state>();
- ret = state->m_rdp->get_current();
- break;
- }
+ return m_n64->rdp()->get_current();
case 0x34/4: // DP_CMD_BUSY
case 0x38/4: // DP_CMD_PIPE_BUSY
case 0x3c/4: // DP_CMD_TMEM_BUSY
- break;
+ return 0;
case 0x2c/4: // DP_CMD_STATUS
- {
- n64_state *state = machine().driver_data<n64_state>();
- ret = state->m_rdp->get_status();
- break;
- }
+ return m_n64->rdp()->get_status();
case 0x30/4: // DP_CMD_CLOCK
- {
- if(!(machine().driver_data<n64_state>()->m_rdp->get_status() & DP_STATUS_FREEZE))
+ if(!(m_n64->rdp()->get_status() & DP_STATUS_FREEZE))
{
dp_clock += 13;
- ret = dp_clock;
+ return dp_clock;
}
break;
- }
case 0x40000/4: // PC
- ret = rspcpu->state().state_int(RSP_PC) & 0x00000fff;
- break;
+ return m_rsp->state_int(RSP_PC) & 0x00000fff;
default:
- logerror("sp_reg_r: %08X at %08X\n", offset, maincpu->safe_pc());
+ logerror("sp_reg_r: %08X at %08X\n", offset, m_vr4300->pc());
break;
}
- return ret;
+ return 0;
}
@@ -758,17 +730,17 @@ WRITE32_MEMBER(n64_periphs::sp_reg_w )
case 0x10/4: // RSP_STATUS_REG
{
- UINT32 oldstatus = rspcpu->state().state_int(RSP_SR);
+ UINT32 oldstatus = m_rsp->state_int(RSP_SR);
UINT32 newstatus = oldstatus;
if (data & 0x00000001) // clear halt
{
- rspcpu->execute().set_input_line(INPUT_LINE_HALT, CLEAR_LINE);
+ m_rsp->set_input_line(INPUT_LINE_HALT, CLEAR_LINE);
newstatus &= ~RSP_STATUS_HALT;
}
if (data & 0x00000002) // set halt
{
- rspcpu->execute().set_input_line(INPUT_LINE_HALT, ASSERT_LINE);
+ m_rsp->set_input_line(INPUT_LINE_HALT, ASSERT_LINE);
newstatus |= RSP_STATUS_HALT;
}
if (data & 0x00000004)
@@ -792,8 +764,8 @@ WRITE32_MEMBER(n64_periphs::sp_reg_w )
newstatus |= RSP_STATUS_SSTEP; // set single step
if(!(oldstatus & (RSP_STATUS_BROKE | RSP_STATUS_HALT)))
{
- rspcpu->state().set_state_int(RSP_STEPCNT, 1 );
- machine().device("rsp")->execute().yield();
+ m_rsp->set_state_int(RSP_STEPCNT, 1 );
+ m_rsp->yield();
}
}
if (data & 0x00000080)
@@ -868,7 +840,7 @@ WRITE32_MEMBER(n64_periphs::sp_reg_w )
{
newstatus |= RSP_STATUS_SIGNAL7; // set signal 7
}
- rspcpu->state().set_state_int(RSP_SR, newstatus);
+ m_rsp->set_state_int(RSP_SR, newstatus);
break;
}
@@ -880,7 +852,7 @@ WRITE32_MEMBER(n64_periphs::sp_reg_w )
break;
default:
- logerror("sp_reg_w: %08X, %08X, %08X at %08X\n", data, offset, mem_mask, maincpu->safe_pc());
+ logerror("sp_reg_w: %08X, %08X, %08X at %08X\n", data, offset, mem_mask, m_vr4300->pc());
break;
}
}
@@ -889,18 +861,18 @@ WRITE32_MEMBER(n64_periphs::sp_reg_w )
switch (offset & 0xffff)
{
case 0x00/4: // SP_PC_REG
- if( rspcpu->state().state_int(RSP_NEXTPC) != 0xffffffff )
+ if( m_rsp->state_int(RSP_NEXTPC) != 0xffffffff )
{
- rspcpu->state().set_state_int(RSP_NEXTPC, 0x1000 | (data & 0xfff));
+ m_rsp->set_state_int(RSP_NEXTPC, 0x1000 | (data & 0xfff));
}
else
{
- rspcpu->state().set_state_int(RSP_PC, 0x1000 | (data & 0xfff));
+ m_rsp->set_state_int(RSP_PC, 0x1000 | (data & 0xfff));
}
break;
default:
- logerror("sp_reg_w: %08X, %08X, %08X at %08X\n", data, offset, mem_mask, maincpu->safe_pc());
+ logerror("sp_reg_w: %08X, %08X, %08X at %08X\n", data, offset, mem_mask, m_vr4300->pc());
break;
}
}
@@ -916,85 +888,77 @@ void dp_full_sync(running_machine &machine)
READ32_MEMBER( n64_periphs::dp_reg_r )
{
- n64_state *state = space.machine().driver_data<n64_state>();
- UINT32 ret = 0;
-
switch (offset)
{
case 0x00/4: // DP_START_REG
- ret = state->m_rdp->get_start();
- break;
+ return m_n64->rdp()->get_start();
case 0x04/4: // DP_END_REG
- ret = state->m_rdp->get_end();
- break;
+ return m_n64->rdp()->get_end();
case 0x08/4: // DP_CURRENT_REG
- ret = state->m_rdp->get_current();
- break;
+ return m_n64->rdp()->get_current();
case 0x0c/4: // DP_STATUS_REG
- ret = state->m_rdp->get_status();
- break;
+ return m_n64->rdp()->get_status();
case 0x10/4: // DP_CLOCK_REG
- {
- if(!(state->m_rdp->get_status() & DP_STATUS_FREEZE))
+ if(!(m_n64->rdp()->get_status() & DP_STATUS_FREEZE))
{
dp_clock += 13;
- ret = dp_clock;
+ return dp_clock;
}
break;
- }
default:
- logerror("dp_reg_r: %08X, %08X at %08X\n", offset, mem_mask, safe_pc());
+ logerror("dp_reg_r: %08X, %08X at %08X\n", offset, mem_mask, m_vr4300->pc());
break;
}
- return ret;
+ return 0;
}
WRITE32_MEMBER( n64_periphs::dp_reg_w )
{
- n64_state *state = space.machine().driver_data<n64_state>();
- UINT32 status = state->m_rdp->get_status();
+ UINT32 status = m_n64->rdp()->get_status();
switch (offset)
{
case 0x00/4: // DP_START_REG
if(status & DP_STATUS_START_VALID)
+ {
break;
+ }
else
{
- state->m_rdp->set_status(status | DP_STATUS_START_VALID);
- state->m_rdp->set_start(data & ~7);
+ m_n64->rdp()->set_status(status | DP_STATUS_START_VALID);
+ m_n64->rdp()->set_start(data & ~7);
}
break;
case 0x04/4: // DP_END_REG
if(status & DP_STATUS_START_VALID)
{
- state->m_rdp->set_status(status & ~DP_STATUS_START_VALID);
- state->m_rdp->set_current(state->m_rdp->get_start());
- state->m_rdp->set_end(data & ~7);
+ m_n64->rdp()->set_status(status & ~DP_STATUS_START_VALID);
+ m_n64->rdp()->set_current(m_n64->rdp()->get_start());
+ m_n64->rdp()->set_end(data & ~7);
g_profiler.start(PROFILER_USER1);
- state->m_rdp->process_command_list();
+ m_n64->rdp()->process_command_list();
g_profiler.stop();
break;
}
else
{
- state->m_rdp->set_end(data & ~7);
+ m_n64->rdp()->set_end(data & ~7);
g_profiler.start(PROFILER_USER1);
- state->m_rdp->process_command_list();
+ m_n64->rdp()->process_command_list();
g_profiler.stop();
break;
}
case 0x0c/4: // DP_STATUS_REG
{
- UINT32 current_status = state->m_rdp->get_status();
+ UINT32 current_status = m_n64->rdp()->get_status();
if (data & 0x00000001) current_status &= ~DP_STATUS_XBUS_DMA;
if (data & 0x00000002) current_status |= DP_STATUS_XBUS_DMA;
if (data & 0x00000004) current_status &= ~DP_STATUS_FREEZE;
@@ -1002,23 +966,18 @@ WRITE32_MEMBER( n64_periphs::dp_reg_w )
if (data & 0x00000010) current_status &= ~DP_STATUS_FLUSH;
if (data & 0x00000020) current_status |= DP_STATUS_FLUSH;
if (data & 0x00000200) dp_clock = 0;
- state->m_rdp->set_status(current_status);
+ m_n64->rdp()->set_status(current_status);
break;
}
default:
- logerror("dp_reg_w: %08X, %08X, %08X at %08X\n", data, offset, mem_mask, safe_pc());
+ logerror("dp_reg_w: %08X, %08X, %08X at %08X\n", data, offset, mem_mask, m_vr4300->pc());
break;
}
}
TIMER_CALLBACK_MEMBER(n64_periphs::vi_scanline_callback)
{
- machine().device<n64_periphs>("rcp")->vi_scanline_tick();
-}
-
-void n64_periphs::vi_scanline_tick()
-{
signal_rcp_interrupt(VI_INTERRUPT);
vi_scanline_timer->adjust(m_screen->time_until_pos(vi_intr >> 1));
}
@@ -1124,7 +1083,7 @@ READ32_MEMBER( n64_periphs::vi_reg_r )
break;
default:
- logerror("vi_reg_r: %08X, %08X at %08X\n", offset, mem_mask, maincpu->safe_pc());
+ logerror("vi_reg_r: %08X, %08X at %08X\n", offset, mem_mask, m_vr4300->pc());
break;
}
@@ -1152,7 +1111,6 @@ WRITE32_MEMBER( n64_periphs::vi_reg_w )
vi_recalculate_resolution();
}
vi_width = data;
- //state->m_rdp->m_misc_state.m_fb_width = data;
break;
case 0x0c/4: // VI_INTR_REG
@@ -1214,7 +1172,7 @@ WRITE32_MEMBER( n64_periphs::vi_reg_w )
*/
default:
- logerror("vi_reg_w: %08X, %08X, %08X at %08X\n", data, offset, mem_mask, maincpu->safe_pc());
+ logerror("vi_reg_w: %08X, %08X, %08X at %08X\n", data, offset, mem_mask, m_vr4300->pc());
break;
}
}
@@ -1289,7 +1247,7 @@ n64_periphs::AUDIO_DMA *n64_periphs::ai_fifo_get_top()
void n64_periphs::ai_dma()
{
- INT16 *ram = (INT16*)rdram;
+ INT16 *ram = (INT16*)m_rdram;
AUDIO_DMA *current = ai_fifo_get_top();
attotime period;
@@ -1365,7 +1323,7 @@ READ32_MEMBER( n64_periphs::ai_reg_r )
break;
default:
- logerror("ai_reg_r: %08X, %08X at %08X\n", offset, mem_mask, maincpu->safe_pc());
+ logerror("ai_reg_r: %08X, %08X at %08X\n", offset, mem_mask, m_vr4300->pc());
break;
}
@@ -1404,7 +1362,7 @@ WRITE32_MEMBER( n64_periphs::ai_reg_w )
break;
default:
- logerror("ai_reg_w: %08X, %08X, %08X at %08X\n", data, offset, mem_mask, maincpu->safe_pc());
+ logerror("ai_reg_w: %08X, %08X, %08X at %08X\n", data, offset, mem_mask, m_vr4300->pc());
break;
}
}
@@ -1414,15 +1372,15 @@ WRITE32_MEMBER( n64_periphs::ai_reg_w )
TIMER_CALLBACK_MEMBER(n64_periphs::pi_dma_callback)
{
- machine().device<n64_periphs>("rcp")->pi_dma_tick();
- machine().device("rsp")->execute().yield();
+ pi_dma_tick();
+ m_rsp->yield();
}
void n64_periphs::pi_dma_tick()
{
bool update_bm = false;
UINT16 *cart16;
- UINT16 *dram16 = (UINT16*)rdram;
+ UINT16 *dram16 = (UINT16*)m_rdram;
UINT32 cart_addr = (pi_cart_addr & 0x0fffffff) >> 1;
UINT32 dram_addr = (pi_dram_addr & 0x007fffff) >> 1;
@@ -1441,7 +1399,7 @@ void n64_periphs::pi_dma_tick()
}
else if((cart_addr & 0x04000000) == 0x04000000)
{
- cart16 = (UINT16*)n64_sram;
+ cart16 = (UINT16*)m_sram;
cart_addr = (pi_cart_addr & 0x0001ffff) >> 1;
}
else if((cart_addr & 0x03000000) == 0x03000000 && dd_present)
@@ -1549,7 +1507,7 @@ READ32_MEMBER( n64_periphs::pi_reg_r )
break;
default:
- logerror("pi_reg_r: %08X, %08X at %08X\n", offset, mem_mask, maincpu->safe_pc());
+ logerror("pi_reg_r: %08X, %08X at %08X\n", offset, mem_mask, m_vr4300->pc());
break;
}
@@ -1574,14 +1532,14 @@ WRITE32_MEMBER( n64_periphs::pi_reg_w )
dd_status_reg &= ~DD_ASIC_STATUS_DREQ;
dd_status_reg &= ~DD_ASIC_STATUS_BM_INT;
//logerror("Clearing DREQ, INT\n");
- machine().device("maincpu")->execute().set_input_line(INPUT_LINE_IRQ1, CLEAR_LINE);
+ m_vr4300->set_input_line(INPUT_LINE_IRQ1, CLEAR_LINE);
}
if(pi_cart_addr == 0x05000000 && dd_present)
{
dd_status_reg &= ~DD_ASIC_STATUS_C2_XFER;
dd_status_reg &= ~DD_ASIC_STATUS_BM_INT;
//logerror("Clearing C2, INT\n");
- machine().device("maincpu")->execute().set_input_line(INPUT_LINE_IRQ1, CLEAR_LINE);
+ m_vr4300->set_input_line(INPUT_LINE_IRQ1, CLEAR_LINE);
}
break;
}
@@ -1658,7 +1616,7 @@ WRITE32_MEMBER( n64_periphs::pi_reg_w )
break;
default:
- logerror("pi_reg_w: %08X, %08X, %08X at %08X\n", data, offset, mem_mask, maincpu->safe_pc());
+ logerror("pi_reg_w: %08X, %08X, %08X at %08X\n", data, offset, mem_mask, m_vr4300->pc());
break;
}
}
@@ -1678,12 +1636,12 @@ READ32_MEMBER( n64_periphs::ri_reg_r )
time recommended for letting the SI devices settle after startup.
This allows the initialization routines for the SI to see that a
proper amount of time has passed since system startup. */
- machine().device<mips3_device>("maincpu")->burn_cycles(93750000/2);
+ m_vr4300->burn_cycles(93750000/2);
}
if(offset > 0x1c/4)
{
- logerror("ri_reg_r: %08X, %08X at %08X\n", offset, mem_mask, maincpu->safe_pc());
+ logerror("ri_reg_r: %08X, %08X at %08X\n", offset, mem_mask, m_vr4300->pc());
return 0;
}
return ri_regs[offset];
@@ -1693,7 +1651,7 @@ WRITE32_MEMBER( n64_periphs::ri_reg_w )
{
if(offset > 0x1c/4)
{
- logerror("ri_reg_w: %08X, %08X, %08X at %08X\n", data, offset, mem_mask, maincpu->safe_pc());
+ logerror("ri_reg_w: %08X, %08X, %08X at %08X\n", data, offset, mem_mask, m_vr4300->pc());
return;
}
COMBINE_DATA(&ri_regs[offset]);
@@ -2131,14 +2089,14 @@ void n64_periphs::si_dma_tick()
void n64_periphs::pif_dma(int direction)
{
- if (si_dram_addr & 0x3)
+ if (!DWORD_ALIGNED(si_dram_addr))
{
fatalerror("pif_dma: si_dram_addr unaligned: %08X\n", si_dram_addr);
}
if (direction) // RDRAM -> PIF RAM
{
- UINT32 *src = (UINT32*)&rdram[(si_dram_addr & 0x1fffffff) / 4];
+ UINT32 *src = m_rdram + ((si_dram_addr & 0x1fffffff) / 4);
for(int i = 0; i < 64; i+=4)
{
@@ -2155,7 +2113,7 @@ void n64_periphs::pif_dma(int direction)
{
handle_pif();
- UINT32 *dst = (UINT32*)&rdram[(si_dram_addr & 0x1fffffff) / 4];
+ UINT32 *dst = m_rdram + ((si_dram_addr & 0x1fffffff) / 4);
for(int i = 0; i < 64; i+=4)
{
@@ -2315,7 +2273,7 @@ void n64_periphs::dd_update_bm()
}
//logerror("DD Write, Sending Interrupt\n");
dd_status_reg |= DD_ASIC_STATUS_BM_INT;
- machine().device("maincpu")->execute().set_input_line(INPUT_LINE_IRQ1, ASSERT_LINE);
+ m_vr4300->set_input_line(INPUT_LINE_IRQ1, ASSERT_LINE);
return;
}
else // dd read, BM Mode 1
@@ -2359,7 +2317,7 @@ void n64_periphs::dd_update_bm()
}
//logerror("DD Read, Sending Interrupt\n");
dd_status_reg |= DD_ASIC_STATUS_BM_INT;
- machine().device("maincpu")->execute().set_input_line(INPUT_LINE_IRQ1, ASSERT_LINE);
+ m_vr4300->set_input_line(INPUT_LINE_IRQ1, ASSERT_LINE);
return;
}
}
@@ -2452,7 +2410,7 @@ READ32_MEMBER( n64_periphs::dd_reg_r )
{
dd_status_reg &= ~DD_ASIC_STATUS_BM_INT;
//logerror("DD Read Gap, Clearing INT\n");
- machine().device("maincpu")->execute().set_input_line(INPUT_LINE_IRQ1, CLEAR_LINE);
+ m_vr4300->set_input_line(INPUT_LINE_IRQ1, CLEAR_LINE);
dd_update_bm();
}
break;
@@ -2623,7 +2581,7 @@ WRITE32_MEMBER( n64_periphs::dd_reg_w )
}
//logerror("Sending MECHA Int\n");
dd_status_reg |= DD_ASIC_STATUS_MECHA_INT;
- machine().device("maincpu")->execute().set_input_line(INPUT_LINE_IRQ1, ASSERT_LINE);
+ m_vr4300->set_input_line(INPUT_LINE_IRQ1, ASSERT_LINE);
break;
case 0x10/4: // BM Status
@@ -2664,7 +2622,7 @@ WRITE32_MEMBER( n64_periphs::dd_reg_w )
if(!(dd_status_reg & DD_ASIC_STATUS_BM_INT) && !(dd_status_reg & DD_ASIC_STATUS_MECHA_INT))
{
//logerror("DD Status, Clearing INT\n");
- machine().device("maincpu")->execute().set_input_line(INPUT_LINE_IRQ1, CLEAR_LINE);
+ m_vr4300->set_input_line(INPUT_LINE_IRQ1, CLEAR_LINE);
}
if(data & DD_BM_START)
{
@@ -2742,7 +2700,14 @@ void n64_state::n64_machine_stop()
device_image_interface *image = dynamic_cast<device_image_interface *>(periphs->m_nvram_image);
UINT8 data[0x30800];
- memcpy(data, n64_sram, 0x20000);
+ if (m_sram != NULL)
+ {
+ memset(data, 0, 0x20000);
+ }
+ else
+ {
+ memcpy(data, m_sram, 0x20000);
+ }
memcpy(data + 0x20000, periphs->m_save_data.eeprom, 0x800);
memcpy(data + 0x20800, periphs->m_save_data.mempak[0], 0x8000);
memcpy(data + 0x28800, periphs->m_save_data.mempak[1], 0x8000);
@@ -2751,21 +2716,16 @@ void n64_state::n64_machine_stop()
void n64_state::machine_start()
{
- rdram = reinterpret_cast<UINT32 *>(memshare("rdram")->ptr());
- n64_sram = reinterpret_cast<UINT32 *>(memshare("sram")->ptr());
- rsp_imem = reinterpret_cast<UINT32 *>(memshare("rsp_imem")->ptr());
- rsp_dmem = reinterpret_cast<UINT32 *>(memshare("rsp_dmem")->ptr());
-
- dynamic_cast<mips3_device *>(machine().device("maincpu"))->mips3drc_set_options(MIPS3DRC_COMPATIBLE_OPTIONS);
+ m_vr4300->mips3drc_set_options(MIPS3DRC_COMPATIBLE_OPTIONS);
/* configure fast RAM regions */
- dynamic_cast<mips3_device *>(machine().device("maincpu"))->add_fastram(0x00000000, 0x007fffff, FALSE, rdram);
+ m_vr4300->add_fastram(0x00000000, 0x007fffff, FALSE, m_rdram);
rsp_device *rsp = machine().device<rsp_device>("rsp");
rsp->rspdrc_set_options(RSPDRC_STRICT_VERIFY);
rsp->rspdrc_flush_drc_cache();
- rsp->rsp_add_dmem(rsp_dmem);
- rsp->rsp_add_imem(rsp_imem);
+ rsp->rsp_add_dmem(m_rsp_dmem);
+ rsp->rsp_add_imem(m_rsp_imem);
/* add a hook for battery save */
machine().add_notifier(MACHINE_NOTIFY_EXIT, machine_notify_delegate(FUNC(n64_state::n64_machine_stop),this));
@@ -2773,5 +2733,5 @@ void n64_state::machine_start()
void n64_state::machine_reset()
{
- machine().device("rsp")->execute().set_input_line(INPUT_LINE_HALT, ASSERT_LINE);
+ m_rsp->set_input_line(INPUT_LINE_HALT, ASSERT_LINE);
}
diff --git a/src/mame/machine/naomi.cpp b/src/mame/machine/naomi.cpp
index 72a3a6338b9..d54da60cbfb 100644
--- a/src/mame/machine/naomi.cpp
+++ b/src/mame/machine/naomi.cpp
@@ -87,13 +87,17 @@ UINT8 naomi_state::asciihex_to_dec(UINT8 in)
void naomi_state::create_pic_from_retdat()
{
{
- UINT8* hexregion = memregion("pichex")->base();
- UINT8* retregion = memregion("picreturn")->base();
- UINT8* newregion = memregion("pic")->base();
+ memory_region * rgn_hexregion = memregion("pichex");
+ memory_region * rgn_retregion = memregion("picreturn");
+ memory_region * rgn_newregion = memregion("pic");
int outcount = 0;
- if (hexregion && retregion && newregion)
+ if (rgn_hexregion && rgn_newregion)
{
+ UINT8* hexregion = rgn_hexregion->base();
+ UINT8* newregion = rgn_newregion->base();
+
+
int hexoffs = 0;
int line;
@@ -131,7 +135,12 @@ void naomi_state::create_pic_from_retdat()
}
+ if (rgn_retregion && rgn_newregion)
{
+ UINT8* retregion = rgn_retregion->base();
+ UINT8* newregion = rgn_newregion->base();
+
+
int i;
printf("string 1 (key1)\n");
for (i=0;i<7;i++)
@@ -166,8 +175,10 @@ void naomi_state::create_pic_from_retdat()
}
}
-
+ if (rgn_newregion)
{
+ UINT8* newregion = rgn_newregion->base();
+
FILE *fp;
char filename[256];
sprintf(filename,"picbin_%s", machine().system().name);
diff --git a/src/mame/machine/nb1414m4.cpp b/src/mame/machine/nb1414m4.cpp
index 07fc537fd6c..5b9b9ea8e36 100644
--- a/src/mame/machine/nb1414m4.cpp
+++ b/src/mame/machine/nb1414m4.cpp
@@ -35,7 +35,7 @@ const device_type NB1414M4 = &device_creator<nb1414m4_device>;
nb1414m4_device::nb1414m4_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock)
: device_t(mconfig, NB1414M4, "NB1414M4 Mahjong Custom", tag, owner, clock, "nb1414m4", __FILE__),
device_video_interface(mconfig, *this),
- m_data(nullptr)
+ m_data(*this, DEVICE_SELF)
{
}
@@ -46,7 +46,6 @@ nb1414m4_device::nb1414m4_device(const machine_config &mconfig, const char *tag,
void nb1414m4_device::device_start()
{
- m_data = region()->base();
}
//-------------------------------------------------
diff --git a/src/mame/machine/opwolf.cpp b/src/mame/machine/opwolf.cpp
index e356e55a156..41ba01a582f 100644
--- a/src/mame/machine/opwolf.cpp
+++ b/src/mame/machine/opwolf.cpp
@@ -1,4 +1,4 @@
-// license:???
+// license:GPL-2.0+
// copyright-holders:David Graves, Jarek Burczynski
/*************************************************************************
diff --git a/src/mame/machine/p2000t.cpp b/src/mame/machine/p2000t.cpp
index 224e2e462ae..099a98be629 100644
--- a/src/mame/machine/p2000t.cpp
+++ b/src/mame/machine/p2000t.cpp
@@ -1,4 +1,4 @@
-// license:???
+// license:BSD-3-Clause
// copyright-holders:Paul Daniels
/**********************************************************************
diff --git a/src/mame/machine/pc9801_cd.cpp b/src/mame/machine/pc9801_cd.cpp
new file mode 100644
index 00000000000..2a4dffdc98e
--- /dev/null
+++ b/src/mame/machine/pc9801_cd.cpp
@@ -0,0 +1,34 @@
+// license:BSD-3-Clause
+// copyright-holders:smf
+#include "pc9801_cd.h"
+
+// device type definition
+const device_type PC9801_CD = &device_creator<pc9801_cd_device>;
+
+pc9801_cd_device::pc9801_cd_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock) :
+ atapi_cdrom_device(mconfig, PC9801_CD, "PC9801 CD-ROM Drive", tag, owner, clock, "pc9801_cd", __FILE__)
+{
+}
+
+void pc9801_cd_device::fill_buffer()
+{
+ atapi_hle_device::fill_buffer();
+ m_status |= IDE_STATUS_DRDY | IDE_STATUS_SERV;
+}
+
+void pc9801_cd_device::process_buffer()
+{
+ atapi_hle_device::process_buffer();
+ m_status |= IDE_STATUS_DRDY | IDE_STATUS_SERV;
+}
+
+void pc9801_cd_device::process_command()
+{
+ atapi_hle_device::process_command();
+ switch(m_command)
+ {
+ case IDE_COMMAND_CHECK_POWER_MODE:
+ m_status = IDE_STATUS_DRDY | IDE_STATUS_SERV;
+ break;
+ }
+}
diff --git a/src/mame/machine/pc9801_cd.h b/src/mame/machine/pc9801_cd.h
new file mode 100644
index 00000000000..35a2d223bd8
--- /dev/null
+++ b/src/mame/machine/pc9801_cd.h
@@ -0,0 +1,23 @@
+// license:BSD-3-Clause
+// copyright-holders:smf
+
+#ifndef __PC9801_CD_H__
+#define __PC9801_CD_H__
+
+#include "machine/atapicdr.h"
+
+class pc9801_cd_device : public atapi_cdrom_device
+{
+public:
+ pc9801_cd_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock);
+
+protected:
+ virtual void fill_buffer() override;
+ virtual void process_command() override;
+ virtual void process_buffer() override;
+};
+
+// device type definition
+extern const device_type PC9801_CD;
+
+#endif
diff --git a/src/mame/machine/pc9801_kbd.cpp b/src/mame/machine/pc9801_kbd.cpp
index 260bd9f6b3d..3e4cd4373f8 100644
--- a/src/mame/machine/pc9801_kbd.cpp
+++ b/src/mame/machine/pc9801_kbd.cpp
@@ -257,6 +257,7 @@ void pc9801_kbd_device::device_reset()
m_keyb_tx = 0xff;
m_keyb_rx = 0;
+ m_key_avail = false;
}
//-------------------------------------------------
@@ -276,6 +277,7 @@ void pc9801_kbd_device::device_timer(emu_timer &timer, device_timer_id id, int p
{
m_keyb_tx = i | 0x80;
m_write_irq(ASSERT_LINE);
+ m_key_avail = true;
m_rx_buf[i] = 0;
return;
}
@@ -288,6 +290,7 @@ void pc9801_kbd_device::device_timer(emu_timer &timer, device_timer_id id, int p
{
m_keyb_tx = i;
m_write_irq(ASSERT_LINE);
+ m_key_avail = true;
m_rx_buf[i] = 0;
return;
}
@@ -303,8 +306,11 @@ READ8_MEMBER( pc9801_kbd_device::rx_r )
{
m_write_irq(CLEAR_LINE);
if(!offset)
+ {
+ m_key_avail = false;
return m_keyb_tx;
- return 1 | 4 | 2;
+ }
+ return 1 | 4 | (m_key_avail ? 2 : 0);
}
WRITE8_MEMBER( pc9801_kbd_device::tx_w )
diff --git a/src/mame/machine/pc9801_kbd.h b/src/mame/machine/pc9801_kbd.h
index c33d554ab3e..e776e2b238e 100644
--- a/src/mame/machine/pc9801_kbd.h
+++ b/src/mame/machine/pc9801_kbd.h
@@ -55,6 +55,7 @@ protected:
UINT8 m_rx_buf[0x80];
UINT8 m_keyb_tx;
UINT8 m_keyb_rx;
+ bool m_key_avail;
};
diff --git a/src/mame/machine/playch10.cpp b/src/mame/machine/playch10.cpp
index f48334c287a..d8c586b7826 100644
--- a/src/mame/machine/playch10.cpp
+++ b/src/mame/machine/playch10.cpp
@@ -38,7 +38,7 @@ void playch10_state::machine_reset()
void playch10_state::machine_start()
{
- m_vrom = memregion("gfx2")->base();
+ m_vrom = (m_vrom_region != NULL) ? m_vrom_region->base() : NULL;
/* allocate 4K of nametable ram here */
/* move to individual boards as documentation of actual boards allows */
@@ -58,7 +58,7 @@ void playch10_state::machine_start()
MACHINE_START_MEMBER(playch10_state,playch10_hboard)
{
- m_vrom = memregion("gfx2")->base();
+ m_vrom = (m_vrom_region != NULL) ? m_vrom_region->base() : NULL;
/* allocate 4K of nametable ram here */
/* move to individual boards as documentation of actual boards allows */
diff --git a/src/mame/machine/qix.cpp b/src/mame/machine/qix.cpp
index a54ffb984eb..e15e409a8ad 100644
--- a/src/mame/machine/qix.cpp
+++ b/src/mame/machine/qix.cpp
@@ -1,11 +1,10 @@
-// license:???
-// copyright-holders:John Butler, Ed Mueller, Aaron Giles
+// license:BSD-3-Clause
+// copyright-holders:Aaron Giles, Zsolt Vasvari
+// thanks-to: John Butler, Ed Mueller
/***************************************************************************
Taito Qix hardware
- driver by John Butler, Ed Mueller, Aaron Giles
-
***************************************************************************/
#include "emu.h"
diff --git a/src/mame/machine/slapstic.cpp b/src/mame/machine/slapstic.cpp
index 4ff2fe4a2e3..2d1e83aae67 100644
--- a/src/mame/machine/slapstic.cpp
+++ b/src/mame/machine/slapstic.cpp
@@ -182,6 +182,7 @@
#include "includes/slapstic.h"
+#include "validity.h"
extern const device_type SLAPSTIC = &device_creator<atari_slapstic_device>;
@@ -736,6 +737,12 @@ static const struct slapstic_data *const slapstic_table[] =
};
+void atari_slapstic_device::device_validity_check(validity_checker &valid) const
+{
+ // only a small number of chips are known to exist
+ if (m_chipnum < 101 || m_chipnum > 118 || !slapstic_table[m_chipnum - 101])
+ osd_printf_error("Unknown slapstic number: %d\n", m_chipnum);
+}
/*************************************
@@ -744,23 +751,17 @@ static const struct slapstic_data *const slapstic_table[] =
*
*************************************/
-void atari_slapstic_device::slapstic_init(running_machine &machine, int chip)
+void atari_slapstic_device::slapstic_init()
{
if (access_68k == -1)
{
/* see if we're 68k or 6502/6809 based */
- device_type cputype = machine.device(":maincpu")->type();
+ device_type cputype = machine().device(":maincpu")->type();
access_68k = (cputype == M68000 || cputype == M68010);
}
- /* only a small number of chips are known to exist */
- if (chip < 101 || chip > 118)
- return;
-
/* set up the parameters */
- if (!slapstic_table[chip - 101])
- return;
- slapstic = *slapstic_table[chip - 101];
+ slapstic = *slapstic_table[m_chipnum - 101];
/* reset the chip */
slapstic_reset();
diff --git a/src/mame/machine/sms.cpp b/src/mame/machine/sms.cpp
index 8b709dcb815..bf50bb12d15 100644
--- a/src/mame/machine/sms.cpp
+++ b/src/mame/machine/sms.cpp
@@ -851,8 +851,11 @@ void sms_state::setup_media_slots()
void sms_state::setup_bios()
{
- m_BIOS = memregion("user1")->base();
- m_bios_page_count = (m_BIOS ? memregion("user1")->bytes() / 0x4000 : 0);
+ if (memregion("user1") != nullptr)
+ {
+ m_BIOS = memregion("user1")->base();
+ m_bios_page_count = (m_BIOS ? memregion("user1")->bytes() / 0x4000 : 0);
+ }
if (m_BIOS == nullptr || m_BIOS[0] == 0x00)
{
diff --git a/src/mame/machine/starwars.cpp b/src/mame/machine/starwars.cpp
index a2fc61401f2..ef6bb701f40 100644
--- a/src/mame/machine/starwars.cpp
+++ b/src/mame/machine/starwars.cpp
@@ -1,4 +1,4 @@
-// license:???
+// license:BSD-3-Clause
// copyright-holders:Steve Baines, Frank Palazzolo
/***************************************************************************
diff --git a/src/mame/machine/vsnes.cpp b/src/mame/machine/vsnes.cpp
index 0acb85626c5..b837ad8c4d6 100644
--- a/src/mame/machine/vsnes.cpp
+++ b/src/mame/machine/vsnes.cpp
@@ -197,14 +197,23 @@ MACHINE_START_MEMBER(vsnes_state,vsnes)
ppu1_space.install_readwrite_handler(0x2000, 0x3eff, read8_delegate(FUNC(vsnes_state::vsnes_nt0_r),this), write8_delegate(FUNC(vsnes_state::vsnes_nt0_w),this));
- m_vrom[0] = memregion("gfx1")->base();
- m_vrom_size[0] = memregion("gfx1")->bytes();
- m_vrom_banks = m_vrom_size[0] / 0x400;
+ if (m_gfx1_rom != NULL)
+ {
+ m_vrom[0] = memregion("gfx1")->base();
+ m_vrom_size[0] = memregion("gfx1")->bytes();
+ m_vrom_banks = m_vrom_size[0] / 0x400;
+ }
+ else
+ {
+ m_vrom[0] = NULL;
+ m_vrom_size[0] = 0;
+ m_vrom_banks = 0;
+ }
/* establish chr banks */
/* bank 1 is used already! */
/* DRIVER_INIT is called first - means we can handle this different for VRAM games! */
- if (nullptr != m_vrom[0])
+ if (m_vrom[0] != nullptr)
{
for (i = 0; i < 8; i++)
{
diff --git a/src/mame/machine/williams.cpp b/src/mame/machine/williams.cpp
index 817b5c9f676..9f6a861bf7c 100644
--- a/src/mame/machine/williams.cpp
+++ b/src/mame/machine/williams.cpp
@@ -1,5 +1,5 @@
-// license:???
-// copyright-holders:Michael Soderstrom, Marc LaFontaine, Aaron Giles
+// license:BSD-3-Clause
+// copyright-holders:Aaron Giles
/***************************************************************************
Williams 6809 system
diff --git a/src/mame/machine/xbox.cpp b/src/mame/machine/xbox.cpp
index 7740b1545b0..d341d9804d5 100644
--- a/src/mame/machine/xbox.cpp
+++ b/src/mame/machine/xbox.cpp
@@ -1521,7 +1521,7 @@ WRITE8_MEMBER(xbox_base_state::superio_write)
superiost.configuration_mode = true;
return;
}
- if ((offset == 0) && (data == 0xaa))
+ if ((offset == 0) && (data == 0xaa))
{
// config port 0x2e
superiost.configuration_mode = false;
@@ -1543,7 +1543,7 @@ WRITE8_MEMBER(xbox_base_state::superio_write)
{
superiost.registers[superiost.selected][superiost.index] = data;
//if ((superiost.selected == 4) && (superiost.index == 0x30) && (data != 0))
- // ; // add handlers 0x3f8- +7
+ // ; // add handlers 0x3f8- +7
}
}
}
diff --git a/src/mame/mess.lst b/src/mame/mess.lst
index 1efb41b9240..d43909d9e41 100644
--- a/src/mame/mess.lst
+++ b/src/mame/mess.lst
@@ -120,7 +120,7 @@ dcdev // 1998 Sega HKT-0120 Sega Dreamcast Development Box
svmu // 1998 Sega Visual Memory Unit
// Sequential Circuits
-prpht600 // 1983 Sequential Circuits
+prpht600 // 1983 Sequential Circuits
// Sony
psj // 1994 Sony PlayStation (Japan)
@@ -2034,7 +2034,18 @@ newbrainmd
mm1m6
mm1m7
+noki3210
+noki7110
+noki8210
+noki8850
noki3310
+noki6210
+noki6250
+noki8250
+noki8890
+noki3330
+noki3410
+noki5210
// Nuova Elettronica
z80ne // 1980 - Z80NE
@@ -2112,6 +2123,7 @@ swtpc09d3 // S09, DMF3 Floppy UNIBUG U3 rom - UniFLEX U3
imds2 // Intellec MDS series-II
//***************Games******************************************************
+
// Computer Electronic
ccmk1 // Chess Champion MK I
// Quelle International
@@ -2128,6 +2140,32 @@ sfortec // 1989 Novag Super Forte C Chess Computer
sexpertc // 1989 Novag Super Expert C Chess Computer
diablo68 // 1991 Novag Diablo 68000 Chess Computer
+// Fidelity
+cc10
+cc7
+vcc // VCC: Voice Chess Challenger (English)
+vccg // * Spanish
+vccfr // * German
+vccsp // * French
+uvc // UVC: Advanced Voice Chess Challenger (English)
+uvcsp // * Spanish
+uvcg // * German
+uvcfr // * French
+vsc // VSC: Voice Sensory Chess Challenger (English)
+vscsp // * Spanish
+vscg // * German
+vscfr // * French
+vbrc
+bridgec3
+
+csc // CSC: Champion Sensory Chess Challenger (English)
+cscsp // * Spanish
+cscg // * German
+cscfr // * French
+fscc12
+fexcel
+fexcelv
+
// Hegener & Glaser Munich
//mephisto // Mephisto 1 - roms needed - not in driver
mm2 // Mephisto 2
@@ -2158,7 +2196,6 @@ van16 // 1991 Mephisto Vancouver 68000
van32 // 1991 Mephisto Vancouver 68020
gen32 // 1993 Mephisto Genius030 V4.00
gen32_41 // 1993 Mephisto Genius030 V4.01
-gen32_oc // 1993 Mephisto Genius030 V4.01OC
berlinp // 1994 Mephisto Berlin Pro 68020
bpl32 // 1996 Mephisto Berlin Pro London Upgrade V5.00
lond020 // 1996 Mephisto London 68020 32 Bit
@@ -2295,6 +2332,10 @@ lilprof
lilprof78
dataman
+// hh_tms1k tispellb.cpp
+spellb
+mrchalgr
+
// hh_tms1k tispeak.cpp
snspell
snspellp
@@ -2309,6 +2350,7 @@ snspellc
snspellca
snspellcuk
snmath
+snmatha
snmathp
snread
lantutor
@@ -2317,10 +2359,7 @@ tntelluk
tntellfr
tntellp
vocaid
-
-// hh_tms1k tispellb.cpp
-spellb
-mrchalgr
+k28 // Tiger Electronics
// hh_ucom4
ufombs // Bambino
@@ -2344,6 +2383,7 @@ alnchase // Tomy
// hh_ucom4 derivatives
tb303 // Roland
+tr606 // Roland
// other
tama // Bandai
@@ -2375,6 +2415,7 @@ ds348 //Sigtron Daruma
mc1000
d6809
mp68a
+md6802
mk85
mk90
elwro800
@@ -2550,11 +2591,6 @@ dms5000
dms86
codata
rvoicepc
-vcc
-uvc
-bridgec3
-vbrc
-vsc
victor9k
phc25
phc25j
@@ -2610,7 +2646,6 @@ czk80
c10
k8915
mes
-cc10
systec
p112
selz80
@@ -2689,7 +2724,6 @@ cvicny
pc486mu
mstation
mbc200
-csc
chesstrv
alphatro
ax20
@@ -2797,6 +2831,7 @@ hp_ipc
lggp40
mt735
squale
+goupilg1
micral
rd100
proteus3
diff --git a/src/mame/video/40love.cpp b/src/mame/video/40love.cpp
index 6facc1c7006..bff0760f333 100644
--- a/src/mame/video/40love.cpp
+++ b/src/mame/video/40love.cpp
@@ -1,4 +1,4 @@
-// license:???
+// license:GPL-2.0+
// copyright-holders:Jarek Burczynski
/*
* Video Driver for Forty-Love
@@ -164,16 +164,16 @@ WRITE8_MEMBER(fortyl_state::fortyl_pixram_sel_w)
if(data & 0xd2)
popmessage("pixram sel = %02x, contact MAMEdev",data);
-
+
m_pixram_sel = (data & 0x04) >> 2;
m_screen_disable = bool(data & 0x20); // Undoukai
-
+
if(cur_col_bank != m_color_bank)
{
m_color_bank = cur_col_bank;
redraw_pixels();
}
-
+
if (m_flipscreen != f)
{
m_flipscreen = f;
@@ -372,7 +372,7 @@ UINT32 fortyl_state::screen_update_fortyl(screen_device &screen, bitmap_ind16 &b
bitmap.fill(m_palette->black_pen(), cliprect);
return 0;
}
-
+
draw_pixram(bitmap, cliprect);
m_bg_tilemap->set_scrolldy(- m_video_ctrl[1] + 1, - m_video_ctrl[1] - 1 );
diff --git a/src/mame/video/911_vdt.cpp b/src/mame/video/911_vdt.cpp
index c0d30600681..ff7b2b6a03c 100644
--- a/src/mame/video/911_vdt.cpp
+++ b/src/mame/video/911_vdt.cpp
@@ -188,8 +188,6 @@ void vdt911_device::device_start()
/* set up cursor blink clock. 2Hz frequency -> .25s half-period. */
/*m_blink_clock =*/
- // m_beeper->set_frequency(2000);
-
m_blink_timer = timer_alloc(BLINK_TIMER);
m_beep_timer = timer_alloc(BEEP_TIMER);
m_line_timer = timer_alloc(LINE_TIMER);
@@ -818,7 +816,7 @@ static MACHINE_CONFIG_FRAGMENT( vdt911 )
MCFG_SCREEN_PALETTE("palette")
MCFG_SPEAKER_STANDARD_MONO("speaker")
- MCFG_SOUND_ADD("beeper", BEEP, 0)
+ MCFG_SOUND_ADD("beeper", BEEP, 3250)
MCFG_SOUND_ROUTE(ALL_OUTPUTS, "speaker", 0.50)
MCFG_PALETTE_ADD("palette", 8)
diff --git a/src/mame/video/atari.cpp b/src/mame/video/atari.cpp
index e67fd6f55d0..4798af44c8d 100644
--- a/src/mame/video/atari.cpp
+++ b/src/mame/video/atari.cpp
@@ -23,10 +23,10 @@
void atari_common_state::video_start()
{
- palette_device *m_palette = machine().first_screen()->palette();
+ palette_device &palette = machine().first_screen()->palette();
for (int i = 0; i < 256; i++)
- m_gtia->set_color_lookup(i, (m_palette->pen(0) << 8) + m_palette->pen(0));
+ m_gtia->set_color_lookup(i, (palette.pen(0) << 8) + palette.pen(0));
}
diff --git a/src/mame/video/atarifb.cpp b/src/mame/video/atarifb.cpp
index 8f8c3d23ad0..d4986deff06 100644
--- a/src/mame/video/atarifb.cpp
+++ b/src/mame/video/atarifb.cpp
@@ -1,4 +1,4 @@
-// license:???
+// license:BSD-3-Clause
// copyright-holders:Mike Balfour, Patrick Lawrence, Brad Oliver
/*************************************************************************
diff --git a/src/mame/video/avgdvg.cpp b/src/mame/video/avgdvg.cpp
index 4363db0e66c..d125198c158 100644
--- a/src/mame/video/avgdvg.cpp
+++ b/src/mame/video/avgdvg.cpp
@@ -1,5 +1,6 @@
// license:BSD-3-Clause
-// copyright-holders:Eric Smith, Brad Oliver, Bernd Wiebelt, Aaron Giles, Andrew Caldwell
+// copyright-holders:Mathis Rosenhauer
+// thanks-to:Eric Smith, Brad Oliver, Bernd Wiebelt, Aaron Giles, Andrew Caldwell
/*************************************************************************
avgdvg.c: Atari DVG and AVG
@@ -1343,7 +1344,11 @@ void avg_device::device_start()
avgdvg_vectorram = reinterpret_cast<UINT8 *>(machine().root_device().memshare("vectorram")->ptr());
avgdvg_vectorram_size = machine().root_device().memshare("vectorram")->bytes();
- avgdvg_colorram = reinterpret_cast<UINT8 *>(machine().root_device().memshare("colorram")->ptr());
+ memory_share *colorram = machine().root_device().memshare("colorram");
+ if (colorram != NULL)
+ {
+ avgdvg_colorram = reinterpret_cast<UINT8 *>(colorram->ptr());
+ }
xmin = visarea.min_x;
ymin = visarea.min_y;
@@ -1379,7 +1384,11 @@ void dvg_device::device_start()
avgdvg_vectorram = reinterpret_cast<UINT8 *>(machine().root_device().memshare("vectorram")->ptr());
avgdvg_vectorram_size = machine().root_device().memshare("vectorram")->bytes();
- avgdvg_colorram = reinterpret_cast<UINT8 *>(machine().root_device().memshare("colorram")->ptr());
+ memory_share *colorram = machine().root_device().memshare("colorram");
+ if (colorram != NULL)
+ {
+ avgdvg_colorram = reinterpret_cast<UINT8 *>(colorram->ptr());
+ }
xmin = visarea.min_x;
ymin = visarea.min_y;
diff --git a/src/mame/video/avgdvg.h b/src/mame/video/avgdvg.h
index 8c15bde31d5..36dc59b8b84 100644
--- a/src/mame/video/avgdvg.h
+++ b/src/mame/video/avgdvg.h
@@ -1,5 +1,6 @@
// license:BSD-3-Clause
-// copyright-holders:Eric Smith, Brad Oliver, Bernd Wiebelt, Aaron Giles, Andrew Caldwell
+// copyright-holders:Mathis Rosenhauer
+// thanks-to:Eric Smith, Brad Oliver, Bernd Wiebelt, Aaron Giles, Andrew Caldwell
#ifndef __AVGDVG__
#define __AVGDVG__
diff --git a/src/mame/video/batman.cpp b/src/mame/video/batman.cpp
index f6ec07bfea0..e625761d2d6 100644
--- a/src/mame/video/batman.cpp
+++ b/src/mame/video/batman.cpp
@@ -105,23 +105,23 @@ VIDEO_START_MEMBER(batman_state,batman)
UINT32 batman_state::screen_update_batman(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect)
{
// start drawing
- m_vad->mob()->draw_async(cliprect);
+ m_vad->mob().draw_async(cliprect);
/* draw the playfield */
bitmap_ind8 &priority_bitmap = screen.priority();
priority_bitmap.fill(0, cliprect);
- m_vad->playfield()->draw(screen, bitmap, cliprect, 0, 0x00);
- m_vad->playfield()->draw(screen, bitmap, cliprect, 1, 0x01);
- m_vad->playfield()->draw(screen, bitmap, cliprect, 2, 0x02);
- m_vad->playfield()->draw(screen, bitmap, cliprect, 3, 0x03);
- m_vad->playfield2()->draw(screen, bitmap, cliprect, 0, 0x80);
- m_vad->playfield2()->draw(screen, bitmap, cliprect, 1, 0x84);
- m_vad->playfield2()->draw(screen, bitmap, cliprect, 2, 0x88);
- m_vad->playfield2()->draw(screen, bitmap, cliprect, 3, 0x8c);
+ m_vad->playfield().draw(screen, bitmap, cliprect, 0, 0x00);
+ m_vad->playfield().draw(screen, bitmap, cliprect, 1, 0x01);
+ m_vad->playfield().draw(screen, bitmap, cliprect, 2, 0x02);
+ m_vad->playfield().draw(screen, bitmap, cliprect, 3, 0x03);
+ m_vad->playfield2().draw(screen, bitmap, cliprect, 0, 0x80);
+ m_vad->playfield2().draw(screen, bitmap, cliprect, 1, 0x84);
+ m_vad->playfield2().draw(screen, bitmap, cliprect, 2, 0x88);
+ m_vad->playfield2().draw(screen, bitmap, cliprect, 3, 0x8c);
// draw and merge the MO
- bitmap_ind16 &mobitmap = m_vad->mob()->bitmap();
- for (const sparse_dirty_rect *rect = m_vad->mob()->first_dirty_rect(cliprect); rect != nullptr; rect = rect->next())
+ bitmap_ind16 &mobitmap = m_vad->mob().bitmap();
+ for (const sparse_dirty_rect *rect = m_vad->mob().first_dirty_rect(cliprect); rect != nullptr; rect = rect->next())
for (int y = rect->min_y; y <= rect->max_y; y++)
{
UINT16 *mo = &mobitmap.pix16(y);
@@ -190,10 +190,10 @@ UINT32 batman_state::screen_update_batman(screen_device &screen, bitmap_ind16 &b
}
/* add the alpha on top */
- m_vad->alpha()->draw(screen, bitmap, cliprect, 0, 0);
+ m_vad->alpha().draw(screen, bitmap, cliprect, 0, 0);
/* now go back and process the upper bit of MO priority */
- for (const sparse_dirty_rect *rect = m_vad->mob()->first_dirty_rect(cliprect); rect != nullptr; rect = rect->next())
+ for (const sparse_dirty_rect *rect = m_vad->mob().first_dirty_rect(cliprect); rect != nullptr; rect = rect->next())
for (int y = rect->min_y; y <= rect->max_y; y++)
{
UINT16 *mo = &mobitmap.pix16(y);
@@ -208,7 +208,7 @@ UINT32 batman_state::screen_update_batman(screen_device &screen, bitmap_ind16 &b
{
/* if bit 2 is set, start setting high palette bits */
if (mo[x] & 2)
- m_vad->mob()->apply_stain(bitmap, pf, mo, x, y);
+ m_vad->mob().apply_stain(bitmap, pf, mo, x, y);
}
}
}
diff --git a/src/mame/video/battlex.cpp b/src/mame/video/battlex.cpp
index bc1c72e7286..f808d1e536e 100644
--- a/src/mame/video/battlex.cpp
+++ b/src/mame/video/battlex.cpp
@@ -96,7 +96,7 @@ UINT32 battlex_state::screen_update_battlex(screen_device &screen, bitmap_ind16
m_bg_tilemap->set_scrollx(0, m_scroll_lsb | (m_scroll_msb << 8));
else
m_bg_tilemap->set_scrollx(0, m_scroll_lsb | m_scroll_msb);
-
+
m_bg_tilemap->draw(screen, bitmap, cliprect, 0, 0);
draw_sprites(bitmap, cliprect);
diff --git a/src/mame/video/bigevglf.cpp b/src/mame/video/bigevglf.cpp
index b2e32d00a63..fcf253b9e8c 100644
--- a/src/mame/video/bigevglf.cpp
+++ b/src/mame/video/bigevglf.cpp
@@ -1,4 +1,4 @@
-// license:???
+// license:GPL-2.0+
// copyright-holders:Jarek Burczynski, Tomasz Slanina
/***************************************************************************
diff --git a/src/mame/video/btime.cpp b/src/mame/video/btime.cpp
index bda913ffd58..07e7a1fde32 100644
--- a/src/mame/video/btime.cpp
+++ b/src/mame/video/btime.cpp
@@ -32,33 +32,34 @@
PALETTE_INIT_MEMBER(btime_state,btime)
{
- const UINT8 *color_prom = memregion("proms")->base();
- int i;
-
-
/* Burger Time doesn't have a color PROM, but Hamburge has. */
/* This function is also used by Eggs. */
- if (color_prom == nullptr) return;
-
- for (i = 0; i < palette.entries(); i++)
+ if (m_prom_region == nullptr)
{
- int bit0, bit1, bit2, r, g, b;
+ return;
+ }
+
+ const UINT8 *color_prom = m_prom_region->base();
+ for (int i = 0; i < palette.entries(); i++)
+ {
/* red component */
- bit0 = (color_prom[i] >> 0) & 0x01;
- bit1 = (color_prom[i] >> 1) & 0x01;
- bit2 = (color_prom[i] >> 2) & 0x01;
- r = 0x21 * bit0 + 0x47 * bit1 + 0x97 * bit2;
+ int bit0 = (color_prom[i] >> 0) & 0x01;
+ int bit1 = (color_prom[i] >> 1) & 0x01;
+ int bit2 = (color_prom[i] >> 2) & 0x01;
+ int r = 0x21 * bit0 + 0x47 * bit1 + 0x97 * bit2;
+
/* green component */
bit0 = (color_prom[i] >> 3) & 0x01;
bit1 = (color_prom[i] >> 4) & 0x01;
bit2 = (color_prom[i] >> 5) & 0x01;
- g = 0x21 * bit0 + 0x47 * bit1 + 0x97 * bit2;
+ int g = 0x21 * bit0 + 0x47 * bit1 + 0x97 * bit2;
+
/* blue component */
bit0 = 0;
bit1 = (color_prom[i] >> 6) & 0x01;
bit2 = (color_prom[i] >> 7) & 0x01;
- b = 0x21 * bit0 + 0x47 * bit1 + 0x97 * bit2;
+ int b = 0x21 * bit0 + 0x47 * bit1 + 0x97 * bit2;
palette.set_pen_color(i, rgb_t(r,g,b));
}
@@ -84,27 +85,26 @@ PALETTE_INIT_MEMBER(btime_state,btime)
PALETTE_INIT_MEMBER(btime_state,lnc)
{
const UINT8 *color_prom = memregion("proms")->base();
- int i;
- for (i = 0; i < palette.entries(); i++)
+ for (int i = 0; i < palette.entries(); i++)
{
- int bit0, bit1, bit2, r, g, b;
-
/* red component */
- bit0 = (color_prom[i] >> 7) & 0x01;
- bit1 = (color_prom[i] >> 6) & 0x01;
- bit2 = (color_prom[i] >> 5) & 0x01;
- r = 0x21 * bit0 + 0x47 * bit1 + 0x97 * bit2;
+ int bit0 = (color_prom[i] >> 7) & 0x01;
+ int bit1 = (color_prom[i] >> 6) & 0x01;
+ int bit2 = (color_prom[i] >> 5) & 0x01;
+ int r = 0x21 * bit0 + 0x47 * bit1 + 0x97 * bit2;
+
/* green component */
bit0 = (color_prom[i] >> 4) & 0x01;
bit1 = (color_prom[i] >> 3) & 0x01;
bit2 = (color_prom[i] >> 2) & 0x01;
- g = 0x21 * bit0 + 0x47 * bit1 + 0x97 * bit2;
+ int g = 0x21 * bit0 + 0x47 * bit1 + 0x97 * bit2;
+
/* blue component */
bit0 = 0;
bit1 = (color_prom[i] >> 1) & 0x01;
bit2 = (color_prom[i] >> 0) & 0x01;
- b = 0x21 * bit0 + 0x47 * bit1 + 0x97 * bit2;
+ int b = 0x21 * bit0 + 0x47 * bit1 + 0x97 * bit2;
palette.set_pen_color(i, rgb_t(r,g,b));
}
diff --git a/src/mame/video/c116.cpp b/src/mame/video/c116.cpp
index e9a1381462a..a9deb49648f 100644
--- a/src/mame/video/c116.cpp
+++ b/src/mame/video/c116.cpp
@@ -156,7 +156,7 @@ WRITE8_MEMBER(namco_c116_device::write)
}
int color = ((offset & 0x6000) >> 2) | (offset & 0x7ff);
RAM[color] = data;
- m_palette->set_pen_color(color,m_ram_r[color],m_ram_g[color],m_ram_b[color]);
+ palette().set_pen_color(color,m_ram_r[color],m_ram_g[color],m_ram_b[color]);
}
diff --git a/src/mame/video/c45.cpp b/src/mame/video/c45.cpp
index 6860961b4b7..24c264f74d8 100644
--- a/src/mame/video/c45.cpp
+++ b/src/mame/video/c45.cpp
@@ -133,7 +133,7 @@ WRITE16_MEMBER( namco_c45_road_device::tilemap_w )
WRITE16_MEMBER( namco_c45_road_device::tileram_w )
{
COMBINE_DATA(&m_tileram[offset]);
- m_gfx[0]->mark_dirty(offset / WORDS_PER_ROAD_TILE);
+ gfx(0)->mark_dirty(offset / WORDS_PER_ROAD_TILE);
}
@@ -200,7 +200,7 @@ void namco_c45_road_device::draw(bitmap_ind16 &bitmap, const rectangle &cliprect
while (numpixels-- > 0)
{
int pen = source_gfx[sourcex >> 16];
- if (m_palette->pen_indirect(pen) != m_transparent_color)
+ if (palette().pen_indirect(pen) != m_transparent_color)
{
if (m_clut != nullptr)
pen = (pen & ~0xff) | m_clut[pen & 0xff];
@@ -231,7 +231,8 @@ void namco_c45_road_device::draw(bitmap_ind16 &bitmap, const rectangle &cliprect
void namco_c45_road_device::device_start()
{
- m_clut = memregion("clut")->base();
+ if (memregion("clut") != nullptr)
+ m_clut = memregion("clut")->base();
// create a tilemap for the road
m_tilemap = &machine().tilemap().create(*this, tilemap_get_info_delegate(FUNC(namco_c45_road_device::get_road_info), this),
diff --git a/src/mame/video/ccastles.cpp b/src/mame/video/ccastles.cpp
index 9618fcdf9f0..cf3b23f83d3 100644
--- a/src/mame/video/ccastles.cpp
+++ b/src/mame/video/ccastles.cpp
@@ -1,5 +1,5 @@
-// license:???
-// copyright-holders:Patrick Lawrence, Aaron Giles
+// license:BSD-3-Clause
+// copyright-holders:Aaron Giles
/***************************************************************************
Atari Crystal Castles hardware
diff --git a/src/mame/video/changela.cpp b/src/mame/video/changela.cpp
index e9bdae5c878..09d8aecc0eb 100644
--- a/src/mame/video/changela.cpp
+++ b/src/mame/video/changela.cpp
@@ -1,4 +1,4 @@
-// license:???
+// license:GPL-2.0+
// copyright-holders:Jarek Burczynski, Phil Stroffolino, Tomasz Slanina
/**************************************************************************
Change Lanes - Video Hardware
diff --git a/src/mame/video/chihiro.cpp b/src/mame/video/chihiro.cpp
index d31e2150e4f..845110e59b4 100644
--- a/src/mame/video/chihiro.cpp
+++ b/src/mame/video/chihiro.cpp
@@ -1953,7 +1953,7 @@ void nv2a_renderer::render_register_combiners(INT32 scanline, const extent_t &ex
if ((extent.startx < 0) || (extent.stopx > 640))
return;
- osd_lock_acquire(combiner.lock); // needed since multithreading is not supported yet
+ std::lock_guard<std::mutex> lock(combiner.lock); // needed since multithreading is not supported yet
x = extent.stopx - extent.startx - 1; // number of pixels to draw
while (x >= 0) {
xp = extent.startx + x;
@@ -1998,7 +1998,6 @@ void nv2a_renderer::render_register_combiners(INT32 scanline, const extent_t &ex
write_pixel(xp, scanline, a8r8g8b8, z);
x--;
}
- osd_lock_release(combiner.lock);
}
#if 0
@@ -2318,10 +2317,10 @@ void nv2a_renderer::convert_vertices_poly(vertex_nv *source, vertex_t *destinati
};
/*
for (int i = 0; i < 4; i++) {
- v[i] *= matrix.scale[i];
+ v[i] *= matrix.scale[i];
}
for (int i = 0; i < 4; i++) {
- v[i] += matrix.translate[i];
+ v[i] += matrix.translate[i];
}
*/
destination[m].x = v[0] / v[3]; // source[m].attribute[0].fv[0];
@@ -2550,6 +2549,25 @@ void nv2a_renderer::clear_depth_buffer(int what, UINT32 value)
}
}
+UINT32 nv2a_renderer::render_triangle_culling(const rectangle &cliprect, render_delegate callback, int paramcount, const vertex_t &_v1, const vertex_t &_v2, const vertex_t &_v3)
+{
+ float areax2;
+
+ if (backface_culling_enabled == false)
+ return render_triangle(cliprect, callback, paramcount, _v1, _v2, _v3);
+ if (backface_culling_culled == NV2A_GL_CULL_FACE::FRONT_AND_BACK)
+ return 0;
+ areax2 = _v1.x*(_v2.y - _v3.y) + _v2.x*(_v3.y - _v1.y) + _v3.x*(_v1.y - _v2.y);
+ if (backface_culling_winding == NV2A_GL_FRONT_FACE::CCW)
+ areax2 = -areax2;
+ // if areax2 >= 0 then front faced else back faced
+ if ((backface_culling_culled == NV2A_GL_CULL_FACE::FRONT) && (areax2 >= 0))
+ return 0;
+ if ((backface_culling_culled == NV2A_GL_CULL_FACE::BACK) && (areax2 < 0))
+ return 0;
+ return render_triangle(cliprect, callback, paramcount, _v1, _v2, _v3);
+}
+
int nv2a_renderer::geforce_exec_method(address_space & space, UINT32 chanel, UINT32 subchannel, UINT32 method, UINT32 address, int &countlen)
{
UINT32 maddress;
@@ -2593,7 +2611,9 @@ int nv2a_renderer::geforce_exec_method(address_space & space, UINT32 chanel, UIN
for (n = 0; n <= count; n += 4) {
read_vertices_0x1810(space, vertex_software + vertex_first, n + offset, 4);
convert_vertices_poly(vertex_software + vertex_first, vertex_xy + vertex_first, 4);
- render_polygon<4>(limits_rendertarget, renderspans, 4 + 4 * 2, vertex_xy + vertex_first); // 4 rgba, 4 texture units 2 uv
+ //render_polygon<4>(limits_rendertarget, renderspans, 4 + 4 * 2, vertex_xy + vertex_first); // 4 rgba, 4 texture units 2 uv
+ render_triangle_culling(limits_rendertarget, renderspans, 4 + 4 * 2, vertex_xy[vertex_first], vertex_xy[vertex_first + 1], vertex_xy[vertex_first + 2]);
+ render_triangle_culling(limits_rendertarget, renderspans, 4 + 4 * 2, vertex_xy[vertex_first], vertex_xy[vertex_first + 2], vertex_xy[vertex_first + 3]);
vertex_first = (vertex_first + 4) & 1023;
vertex_count = vertex_count + 4;
wait();
@@ -2603,7 +2623,7 @@ int nv2a_renderer::geforce_exec_method(address_space & space, UINT32 chanel, UIN
for (n = 0; n <= count; n += 3) {
read_vertices_0x1810(space, vertex_software + vertex_first, n + offset, 3);
convert_vertices_poly(vertex_software + vertex_first, vertex_xy + vertex_first, 3);
- render_triangle(limits_rendertarget, renderspans, 4 + 4 * 2, vertex_xy[vertex_first], vertex_xy[(vertex_first + 1) & 1023], vertex_xy[(vertex_first + 2) & 1023]); // 4 rgba, 4 texture units 2 uv
+ render_triangle_culling(limits_rendertarget, renderspans, 4 + 4 * 2, vertex_xy[vertex_first], vertex_xy[(vertex_first + 1) & 1023], vertex_xy[(vertex_first + 2) & 1023]); // 4 rgba, 4 texture units 2 uv
vertex_first = (vertex_first + 3) & 1023;
vertex_count = vertex_count + 3;
wait();
@@ -2625,7 +2645,7 @@ int nv2a_renderer::geforce_exec_method(address_space & space, UINT32 chanel, UIN
for (n = 0; n <= count; n++) {
read_vertices_0x1810(space, vertex_software + vertex_first, offset + n, 1);
convert_vertices_poly(vertex_software + vertex_first, vertex_xy + vertex_first, 1);
- render_triangle(limits_rendertarget, renderspans, 4 + 4 * 2, vertex_xy[1024], vertex_xy[(vertex_first - 1) & 1023], vertex_xy[vertex_first]);
+ render_triangle_culling(limits_rendertarget, renderspans, 4 + 4 * 2, vertex_xy[1024], vertex_xy[(vertex_first - 1) & 1023], vertex_xy[vertex_first]);
vertex_first = (vertex_first + 1) & 1023;
vertex_count = vertex_count + 1;
wait();
@@ -2646,9 +2666,9 @@ int nv2a_renderer::geforce_exec_method(address_space & space, UINT32 chanel, UIN
read_vertices_0x1810(space, vertex_software + vertex_first, offset + n, 1);
convert_vertices_poly(vertex_software + vertex_first, vertex_xy + vertex_first, 1);
if ((vertex_count & 1) == 0)
- render_triangle(limits_rendertarget, renderspans, 4 + 4 * 2, vertex_xy[(vertex_first - 2) & 1023], vertex_xy[(vertex_first - 1) & 1023], vertex_xy[vertex_first]);
+ render_triangle_culling(limits_rendertarget, renderspans, 4 + 4 * 2, vertex_xy[(vertex_first - 2) & 1023], vertex_xy[(vertex_first - 1) & 1023], vertex_xy[vertex_first]);
else
- render_triangle(limits_rendertarget, renderspans, 4 + 4 * 2, vertex_xy[(vertex_first - 2) & 1023], vertex_xy[vertex_first], vertex_xy[(vertex_first - 1) & 1023]);
+ render_triangle_culling(limits_rendertarget, renderspans, 4 + 4 * 2, vertex_xy[(vertex_first - 2) & 1023], vertex_xy[vertex_first], vertex_xy[(vertex_first - 1) & 1023]);
vertex_first = (vertex_first + 1) & 1023;
vertex_count = vertex_count + 1;
wait();
@@ -2692,7 +2712,9 @@ int nv2a_renderer::geforce_exec_method(address_space & space, UINT32 chanel, UIN
address = address + c * 4;
countlen = countlen - c;
convert_vertices_poly(vertex_software + vertex_first, vertex_xy + vertex_first, 4);
- render_polygon<4>(limits_rendertarget, renderspans, 4 + 4 * 2, vertex_xy + vertex_first); // 4 rgba, 4 texture units 2 uv
+ //render_polygon<4>(limits_rendertarget, renderspans, 4 + 4 * 2, vertex_xy + vertex_first); // 4 rgba, 4 texture units 2 uv
+ render_triangle_culling(limits_rendertarget, renderspans, 4 + 4 * 2, vertex_xy[vertex_first], vertex_xy[vertex_first + 1], vertex_xy[vertex_first + 2]);
+ render_triangle_culling(limits_rendertarget, renderspans, 4 + 4 * 2, vertex_xy[vertex_first], vertex_xy[vertex_first + 2], vertex_xy[vertex_first + 3]);
vertex_first = (vertex_first + 4) & 1023;
vertex_count = vertex_count + 4;
wait();
@@ -2734,7 +2756,7 @@ int nv2a_renderer::geforce_exec_method(address_space & space, UINT32 chanel, UIN
convert_vertices_poly(vertex_software + vertex_first, vertex_xy + vertex_first, 1);
address = address + c * 4;
countlen = countlen - c;
- render_triangle(limits_rendertarget, renderspans, 4 + 4 * 2, vertex_xy[1024], vertex_xy[(vertex_first - 1) & 1023], vertex_xy[vertex_first]);
+ render_triangle_culling(limits_rendertarget, renderspans, 4 + 4 * 2, vertex_xy[1024], vertex_xy[(vertex_first - 1) & 1023], vertex_xy[vertex_first]);
vertex_first = (vertex_first + 1) & 1023;
vertex_count = vertex_count + 1;
wait();
@@ -2754,7 +2776,7 @@ int nv2a_renderer::geforce_exec_method(address_space & space, UINT32 chanel, UIN
address = address + c * 4;
countlen = countlen - c;
convert_vertices_poly(vertex_software + vertex_first, vertex_xy + vertex_first, 3);
- render_triangle(limits_rendertarget, renderspans, 4 + 4 * 2, vertex_xy[vertex_first], vertex_xy[(vertex_first + 1) & 1023], vertex_xy[(vertex_first + 2) & 1023]); // 4 rgba, 4 texture units 2 uv
+ render_triangle_culling(limits_rendertarget, renderspans, 4 + 4 * 2, vertex_xy[vertex_first], vertex_xy[(vertex_first + 1) & 1023], vertex_xy[(vertex_first + 2) & 1023]); // 4 rgba, 4 texture units 2 uv
vertex_first = (vertex_first + 3) & 1023;
vertex_count = vertex_count + 3;
wait();
@@ -2790,9 +2812,9 @@ int nv2a_renderer::geforce_exec_method(address_space & space, UINT32 chanel, UIN
countlen = countlen - c;
convert_vertices_poly(vertex_software + vertex_first, vertex_xy + vertex_first, 1);
if ((vertex_count & 1) == 0)
- render_triangle(limits_rendertarget, renderspans, 4 + 4 * 2, vertex_xy[(vertex_first - 2) & 1023], vertex_xy[(vertex_first - 1) & 1023], vertex_xy[vertex_first]);
+ render_triangle_culling(limits_rendertarget, renderspans, 4 + 4 * 2, vertex_xy[(vertex_first - 2) & 1023], vertex_xy[(vertex_first - 1) & 1023], vertex_xy[vertex_first]);
else
- render_triangle(limits_rendertarget, renderspans, 4 + 4 * 2, vertex_xy[(vertex_first - 2) & 1023], vertex_xy[vertex_first], vertex_xy[(vertex_first - 1) & 1023]);
+ render_triangle_culling(limits_rendertarget, renderspans, 4 + 4 * 2, vertex_xy[(vertex_first - 2) & 1023], vertex_xy[vertex_first], vertex_xy[(vertex_first - 1) & 1023]);
vertex_first = (vertex_first + 1) & 1023;
vertex_count = vertex_count + 1;
wait();
@@ -2850,7 +2872,9 @@ int nv2a_renderer::geforce_exec_method(address_space & space, UINT32 chanel, UIN
break;
}
address = address + c * 4;
- render_polygon<4>(limits_rendertarget, renderspans, 4 + 4 * 2, vertex_xy); // 4 rgba, 4 texture units 2 uv
+ //render_polygon<4>(limits_rendertarget, renderspans, 4 + 4 * 2, vertex_xy); // 4 rgba, 4 texture units 2 uv
+ render_triangle_culling(limits_rendertarget, renderspans, 4 + 4 * 2, vertex_xy[vertex_first], vertex_xy[vertex_first + 1], vertex_xy[vertex_first + 2]);
+ render_triangle_culling(limits_rendertarget, renderspans, 4 + 4 * 2, vertex_xy[vertex_first], vertex_xy[vertex_first + 2], vertex_xy[vertex_first + 3]);
vertex_first = (vertex_first + 4) & 1023;
vertex_count = vertex_count + 4;
wait();
@@ -2878,8 +2902,8 @@ int nv2a_renderer::geforce_exec_method(address_space & space, UINT32 chanel, UIN
return 0;
}
address = address + c * 4;
- render_triangle(limits_rendertarget, renderspans, 4 + 4 * 2, vertex_xy[n & 3], vertex_xy[(n + 1) & 3], vertex_xy[(n + 2) & 3]);
- render_triangle(limits_rendertarget, renderspans, 4 + 4 * 2, vertex_xy[(n + 2) & 3], vertex_xy[(n + 1) & 3], vertex_xy[(n + 3) & 3]);
+ render_triangle_culling(limits_rendertarget, renderspans, 4 + 4 * 2, vertex_xy[n & 3], vertex_xy[(n + 1) & 3], vertex_xy[(n + 2) & 3]);
+ render_triangle_culling(limits_rendertarget, renderspans, 4 + 4 * 2, vertex_xy[(n + 2) & 3], vertex_xy[(n + 1) & 3], vertex_xy[(n + 3) & 3]);
wait();
}
}
@@ -2915,7 +2939,7 @@ int nv2a_renderer::geforce_exec_method(address_space & space, UINT32 chanel, UIN
}
address = address + c * 4;
convert_vertices_poly(vertex_software + vertex_first, vertex_xy + vertex_first, 1);
- render_triangle(limits_rendertarget, renderspans, 4 + 4 * 2, vertex_xy[1024], vertex_xy[(vertex_first - 1) & 1023], vertex_xy[vertex_first]);
+ render_triangle_culling(limits_rendertarget, renderspans, 4 + 4 * 2, vertex_xy[1024], vertex_xy[(vertex_first - 1) & 1023], vertex_xy[vertex_first]);
vertex_first = (vertex_first + 1) & 1023;
vertex_count = vertex_count + 1;
wait();
@@ -2934,7 +2958,7 @@ int nv2a_renderer::geforce_exec_method(address_space & space, UINT32 chanel, UIN
break;
}
address = address + c * 4;
- render_triangle(limits_rendertarget, renderspans, 4 + 4 * 2, vertex_xy[vertex_first], vertex_xy[(vertex_first + 1) & 1023], vertex_xy[(vertex_first + 2) & 1023]); // 4 rgba, 4 texture units 2 uv
+ render_triangle_culling(limits_rendertarget, renderspans, 4 + 4 * 2, vertex_xy[vertex_first], vertex_xy[(vertex_first + 1) & 1023], vertex_xy[(vertex_first + 2) & 1023]); // 4 rgba, 4 texture units 2 uv
vertex_first = (vertex_first + 3) & 1023;
vertex_count = vertex_count + 3;
wait();
@@ -2969,9 +2993,9 @@ int nv2a_renderer::geforce_exec_method(address_space & space, UINT32 chanel, UIN
}
address = address + c * 4;
if ((vertex_count & 1) == 0)
- render_triangle(limits_rendertarget, renderspans, 4 + 4 * 2, vertex_xy[(vertex_first - 2) & 1023], vertex_xy[(vertex_first - 1) & 1023], vertex_xy[vertex_first]);
+ render_triangle_culling(limits_rendertarget, renderspans, 4 + 4 * 2, vertex_xy[(vertex_first - 2) & 1023], vertex_xy[(vertex_first - 1) & 1023], vertex_xy[vertex_first]);
else
- render_triangle(limits_rendertarget, renderspans, 4 + 4 * 2, vertex_xy[(vertex_first - 2) & 1023], vertex_xy[vertex_first], vertex_xy[(vertex_first - 1) & 1023]);
+ render_triangle_culling(limits_rendertarget, renderspans, 4 + 4 * 2, vertex_xy[(vertex_first - 2) & 1023], vertex_xy[vertex_first], vertex_xy[(vertex_first - 1) & 1023]);
vertex_first = (vertex_first + 1) & 1023;
vertex_count = vertex_count + 1;
wait();
@@ -3029,6 +3053,15 @@ int nv2a_renderer::geforce_exec_method(address_space & space, UINT32 chanel, UIN
}
if ((maddress == 0x1d6c) || (maddress == 0x1d70) || (maddress == 0x1a4))
countlen--;
+ if (maddress == 0x0308) {
+ backface_culling_enabled = data != 0 ? true : false;
+ }
+ if (maddress == 0x03a0) {
+ backface_culling_winding = (NV2A_GL_FRONT_FACE)data;
+ }
+ if (maddress == 0x039c) {
+ backface_culling_culled = (NV2A_GL_CULL_FACE)data;
+ }
if (maddress == 0x019c) {
geforce_read_dma_object(data, dma_offset[0], dma_size[0]);
}
diff --git a/src/mame/video/cps1.cpp b/src/mame/video/cps1.cpp
index 0b2fe39782c..790db240802 100644
--- a/src/mame/video/cps1.cpp
+++ b/src/mame/video/cps1.cpp
@@ -2806,7 +2806,7 @@ void cps_state::cps2_render_sprites( screen_device &screen, bitmap_ind16 &bitmap
void cps_state::cps1_render_stars( screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect )
{
int offs;
- UINT8 *stars_rom = memregion("stars")->base();
+ UINT8 *stars_rom = m_region_stars->base();
if (!stars_rom && (m_stars_enabled[0] || m_stars_enabled[1]))
{
@@ -2967,7 +2967,10 @@ UINT32 cps_state::screen_update_cps1(screen_device &screen, bitmap_ind16 &bitmap
bitmap.fill(m_palette->black_pen(), cliprect);
}
- cps1_render_stars(screen, bitmap, cliprect);
+ if (m_region_stars)
+ {
+ cps1_render_stars(screen, bitmap, cliprect);
+ }
/* Draw layers (0 = sprites, 1-3 = tilemaps) */
l0 = (layercontrol >> 0x06) & 03;
diff --git a/src/mame/video/cyberbal.cpp b/src/mame/video/cyberbal.cpp
index 3bd450cbbea..b04018b3f1b 100644
--- a/src/mame/video/cyberbal.cpp
+++ b/src/mame/video/cyberbal.cpp
@@ -85,8 +85,8 @@ void cyberbal_state::video_start_common(int screens)
if (screens == 2)
{
palette_device *rpalette = subdevice<palette_device>("rpalette");
- m_playfield2_tilemap->set_palette(rpalette);
- m_alpha2_tilemap->set_palette(rpalette);
+ m_playfield2_tilemap->set_palette(*rpalette);
+ m_alpha2_tilemap->set_palette(*rpalette);
}
/* initialize the motion objects */
diff --git a/src/mame/video/darius.cpp b/src/mame/video/darius.cpp
index 7cfbb834d6c..8b700250b43 100644
--- a/src/mame/video/darius.cpp
+++ b/src/mame/video/darius.cpp
@@ -1,4 +1,4 @@
-// license:???
+// license:GPL-2.0+
// copyright-holders:David Graves, Jarek Burczynski
#include "emu.h"
#include "includes/darius.h"
diff --git a/src/mame/video/dynax.cpp b/src/mame/video/dynax.cpp
index 70a00ce5e80..5d254272406 100644
--- a/src/mame/video/dynax.cpp
+++ b/src/mame/video/dynax.cpp
@@ -275,18 +275,18 @@ WRITE8_MEMBER(dynax_state::dynax_flipscreen_w)
}
-static const char *const gfxregions[] = { "gfx1", "gfx2", "gfx3", "gfx4", "gfx5", "gfx6", "gfx7", "gfx8" };
+
WRITE8_MEMBER(dynax_state::dynax_blit_romregion_w)
{
- if (data < ARRAY_LENGTH(gfxregions))
+ if (data < 8)
m_blit_romregion = data;
LOG(("GFX%X ", data + 1));
}
WRITE8_MEMBER(dynax_state::dynax_blit2_romregion_w)
{
- if (data + 1 < ARRAY_LENGTH(gfxregions))
+ if (data + 1 < 8)
m_blit2_romregion = data + 1;
LOG(("GFX%X' ", data + 2));
}
@@ -391,13 +391,13 @@ void dynax_state::blitter_plot_pixel( int layer, int mask, int x, int y, int pen
---- --1- 0 = Ignore the pens specified in ROM, draw everything with the pen supplied as parameter
---- ---0 Clear
*/
-int dynax_state::blitter_drawgfx( int layer, int mask, const char *gfx, int src, int pen, int x, int y, int wrap, int flags )
+int dynax_state::blitter_drawgfx( int layer, int mask, memory_region *gfx, int src, int pen, int x, int y, int wrap, int flags )
{
- UINT8 cmd;
- UINT8 *ROM = memregion(gfx)->base();
- size_t ROM_size = memregion(gfx)->bytes();
+ if (!gfx)
+ return 0;
- int sx;
+ size_t rom_size = gfx->bytes();
+ UINT8* rom_data = gfx->base();
if (m_layer_layout == LAYOUT_HNORIDUR) // e.g. yarunara
pen = ((pen >> 4) & 0xf) | ((mask & 0x10) ? ((pen & 0x08) << 1) : 0);
@@ -409,18 +409,14 @@ int dynax_state::blitter_drawgfx( int layer, int mask, const char *gfx, int src,
if (flags & 1)
{
- int start, len;
-
/* Clear the buffer(s) starting from the given scanline and exit */
-
int addr = x + (y << 8);
+ int start = addr;
if (m_flipscreen)
start = 0;
- else
- start = addr;
- len = 0x10000 - addr;
+ int len = 0x10000 - addr;
switch (m_layer_layout)
{
@@ -469,20 +465,20 @@ int dynax_state::blitter_drawgfx( int layer, int mask, const char *gfx, int src,
return src;
}
- sx = x;
+ int sx = x;
src &= 0xfffff;
for ( ;; )
{
- if (src >= ROM_size)
+ if (src >= rom_size)
{
popmessage("GFXROM %s OVER %08x",gfx,src);
LOG(("\nGFXROM %s OVER %08x",gfx,src));
return src;
}
- cmd = ROM[src++];
+ UINT8 cmd = rom_data[src++];
src &= 0xfffff;
if (!(flags & 0x02)) // Ignore the pens specified in ROM, draw everything with the pen supplied as parameter
pen = (pen & 0xf0) | ((cmd & 0xf0) >> 4);
@@ -503,24 +499,24 @@ int dynax_state::blitter_drawgfx( int layer, int mask, const char *gfx, int src,
popmessage("Blitter unknown command %06X: %02X\n", src - 1, cmd);
case 0xd: // Skip X pixels
- if (src >= ROM_size)
+ if (src >= rom_size)
{
popmessage("GFXROM %s OVER %08x",gfx,src);
LOG(("\nGFXROM %s OVER %08x",gfx,src));
return src;
}
- x = sx + ROM[src++];
+ x = sx + rom_data[src++];
src &= 0xfffff;
/* fall through into next case */
case 0xc: // Draw N pixels
- if (src >= ROM_size)
+ if (src >= rom_size)
{
popmessage("GFXROM %s OVER %08x",gfx,src);
LOG(("\nGFXROM %s OVER %08x",gfx,src));
return src;
}
- cmd = ROM[src++];
+ cmd = rom_data[src++];
src &= 0xfffff;
/* fall through into next case */
@@ -556,7 +552,7 @@ void dynax_state::dynax_blitter_start(int flags )
blit_newsrc = blitter_drawgfx(
0, // layer
m_blit_dest, // layer mask
- gfxregions[m_blit_romregion], // rom region
+ m_gfxregions[m_blit_romregion], // rom region
m_blit_src, // rom address
m_blit_pen, // pen
m_blit_x, m_blit_y, // x,y
@@ -583,7 +579,7 @@ void dynax_state::jantouki_blitter_start( int flags )
blit_newsrc = blitter_drawgfx(
0, // layer
m_blit_dest, // layer mask
- gfxregions[m_blit_romregion], // rom region
+ m_gfxregions[m_blit_romregion], // rom region
m_blit_src, // rom address
m_blit_pen, // pen
m_blit_x, m_blit_y, // x,y
@@ -610,7 +606,7 @@ void dynax_state::jantouki_blitter2_start( int flags )
blit2_newsrc = blitter_drawgfx(
4, // layer
m_blit2_dest, // layer mask
- gfxregions[m_blit2_romregion], // rom region
+ m_gfxregions[m_blit2_romregion], // rom region
m_blit2_src, // rom address
m_blit2_pen, // pen
m_blit2_x, m_blit2_y, // x,y
@@ -797,6 +793,16 @@ static const int priority_mjembase[8] = { 0x0231, 0x2031, 0x0321, 0x3021, 0x2301
void dynax_state::dynax_common_reset()
{
+ m_gfxregions[0] = memregion("gfx1");
+ m_gfxregions[1] = memregion("gfx2");
+ m_gfxregions[2] = memregion("gfx3");
+ m_gfxregions[3] = memregion("gfx4");
+ m_gfxregions[4] = memregion("gfx5");
+ m_gfxregions[5] = memregion("gfx6");
+ m_gfxregions[6] = memregion("gfx7");
+ m_gfxregions[7] = memregion("gfx8");
+
+
m_blit_romregion = 0;
m_blit2_romregion = 0;
m_blit_dest = -1;
@@ -1266,10 +1272,10 @@ int dynax_state::debug_viewer(bitmap_ind16 &bitmap, const rectangle &cliprect )
#ifdef MAME_DEBUG
static int toggle;
if (machine().input().code_pressed_once(KEYCODE_T)) toggle = 1 - toggle;
- if (toggle)
+ if (m_gfxregions[0] && toggle)
{
- UINT8 *RAM = memregion( "gfx1" )->base();
- size_t size = memregion( "gfx1" )->bytes();
+ UINT8 *RAM = m_gfxregions[0]->base();
+ size_t size = m_gfxregions[0]->bytes();
static int i = 0, c = 0, r = 0;
if (machine().input().code_pressed_once(KEYCODE_I)) c = (c - 1) & 0x1f;
@@ -1293,7 +1299,7 @@ int dynax_state::debug_viewer(bitmap_ind16 &bitmap, const rectangle &cliprect )
if (m_layer_layout != LAYOUT_MJDIALQ2)
memset(m_pixmap[0][1].get(), 0, sizeof(UINT8) * 0x100 * 0x100);
for (m_hanamai_layer_half = 0; m_hanamai_layer_half < 2; m_hanamai_layer_half++)
- blitter_drawgfx(0, 1, "gfx1", i, 0, cliprect.min_x, cliprect.min_y, 3, 0);
+ blitter_drawgfx(0, 1, m_gfxregions[0], i, 0, cliprect.min_x, cliprect.min_y, 3, 0);
if (m_layer_layout != LAYOUT_MJDIALQ2)
hanamai_copylayer(bitmap, cliprect, 0);
diff --git a/src/mame/video/electron.cpp b/src/mame/video/electron.cpp
index e77904ef8e6..0816c65ae77 100644
--- a/src/mame/video/electron.cpp
+++ b/src/mame/video/electron.cpp
@@ -1,6 +1,7 @@
// license:BSD-3-Clause
// copyright-holders:Wilbert Pol
/******************************************************************************
+
Acorn Electron driver
MESS Driver By:
@@ -15,31 +16,51 @@
/*
From the ElectrEm site:
-Timing is somewhat of a thorny issue on the Electron. It is almost certain the Electron could have been a much faster machine if BBC Micro OS level compatibility had not been not a design requirement.
+Timing is somewhat of a thorny issue on the Electron. It is almost certain the
+Electron could have been a much faster machine if BBC Micro OS level
+compatibility had not been not a design requirement.
-When accessing the ROM regions, the CPU always runs at 2MHz. When accessing the FC (1 MHz bus) or FD (JIM) pages, the CPU always runs at 1MHz.
+When accessing the ROM regions, the CPU always runs at 2MHz. When accessing
+the FC (1 MHz bus) or FD (JIM) pages, the CPU always runs at 1MHz.
-The timing for RAM accesses varies depending on the graphics mode, and how many bytes are required to be read by the video circuits per scanline. When accessing RAM in modes 4-6, the CPU is simply moved to a 1MHz clock. This occurs for any RAM access at any point during the frame.
+The timing for RAM accesses varies depending on the graphics mode, and how
+many bytes are required to be read by the video circuits per scanline. When
+accessing RAM in modes 4-6, the CPU is simply moved to a 1MHz clock. This
+occurs for any RAM access at any point during the frame.
-In modes 0-3, if the CPU tries to access RAM at any time during which the video circuits are fetching bytes, it is halted by means of receiving a stopped clock until the video circuits next stop fetching bytes.
+In modes 0-3, if the CPU tries to access RAM at any time during which the
+video circuits are fetching bytes, it is halted by means of receiving a
+stopped clock until the video circuits next stop fetching bytes.
-Each scanline is drawn in exactly 64us, and of that the video circuits fetch bytes for 40us. In modes 0, 1 and 2, 256 scanlines have pixels on, whereas in mode 3 only 250 scanlines are affected as mode 3 is a 'spaced' mode.
+Each scanline is drawn in exactly 64us, and of that the video circuits fetch
+bytes for 40us. In modes 0, 1 and 2, 256 scanlines have pixels on, whereas in
+mode 3 only 250 scanlines are affected as mode 3 is a 'spaced' mode.
-As opposed to one clock generator which changes pace, the 1MHz and 2MHz clocks are always available, so the ULA acts to simply change which clock is piped to the CPU. This means in half of all cases, a further 2MHz cycle is lost waiting for the 2MHz and 1MHz clocks to synchronise during a 2MHz to 1MHz step.
+As opposed to one clock generator which changes pace, the 1MHz and 2MHz clocks
+are always available, so the ULA acts to simply change which clock is piped to
+the CPU. This means in half of all cases, a further 2MHz cycle is lost waiting
+for the 2MHz and 1MHz clocks to synchronise during a 2MHz to 1MHz step.
-The video circuits run from a constant 2MHz clock, and generate 312 scanlines a frame, one scanline every 128 cycles. This actually gives means the Electron is running at 50.08 frames a second.
+The video circuits run from a constant 2MHz clock, and generate 312 scanlines
+a frame, one scanline every 128 cycles. This actually gives means the Electron
+is running at 50.08 frames a second.
-Creating a scanline numbering scheme where the first scanline with pixels is scanline 0, in all modes the end of display interrupt is generated at the end of scanline 255, and the RTC interrupt is generated upon the end of scanline 99.
+Creating a scanline numbering scheme where the first scanline with pixels is
+scanline 0, in all modes the end of display interrupt is generated at the end
+of scanline 255, and the RTC interrupt is generated upon the end of scanline 99.
-From investigating some code for vertical split modes printed in Electron User volume 7, issue 7 it seems that the exact timing of the end of display interrupt is somewhere between 24 and 40 cycles after the end of pixels. This may coincide with HSYNC. I have no similarly accurate timing for the real time clock interrupt at this time.
+From investigating some code for vertical split modes printed in Electron User
+volume 7, issue 7 it seems that the exact timing of the end of display interrupt
+is somewhere between 24 and 40 cycles after the end of pixels. This may coincide
+with HSYNC. I have no similarly accurate timing for the real time clock
+interrupt at this time.
-Mode changes are 'immediate', so any change in RAM access timing occurs exactly after the write cycle of the changing instruction. Similarly palette changes take effect immediately. VSYNC is not signalled in any way.
+Mode changes are 'immediate', so any change in RAM access timing occurs exactly
+after the write cycle of the changing instruction. Similarly palette changes
+take effect immediately. VSYNC is not signalled in any way.
*/
-
-
-
void electron_state::video_start()
{
int i;
diff --git a/src/mame/video/exedexes.cpp b/src/mame/video/exedexes.cpp
index cfd06979ce3..9a40ea1daa1 100644
--- a/src/mame/video/exedexes.cpp
+++ b/src/mame/video/exedexes.cpp
@@ -1,4 +1,4 @@
-// license:???
+// license:BSD-3-Clause
// copyright-holders:Richard Davies
/***************************************************************************
diff --git a/src/mame/video/flkatck.cpp b/src/mame/video/flkatck.cpp
index 64c75e17bf7..2476afd3fcb 100644
--- a/src/mame/video/flkatck.cpp
+++ b/src/mame/video/flkatck.cpp
@@ -162,7 +162,7 @@ UINT32 flkatck_state::screen_update_flkatck(screen_device &screen, bitmap_ind16
/* draw the graphics */
m_k007121_tilemap[0]->draw(screen, bitmap, clip[0], 0, 0);
- m_k007121->sprites_draw(bitmap, cliprect, m_gfxdecode->gfx(0), nullptr, &m_k007121_ram[0x1000], 0, 40, 0, screen.priority(), (UINT32)-1);
+ m_k007121->sprites_draw(bitmap, cliprect, m_gfxdecode->gfx(0), m_gfxdecode->palette(), &m_k007121_ram[0x1000], 0, 40, 0, screen.priority(), (UINT32)-1, true);
m_k007121_tilemap[1]->draw(screen, bitmap, clip[1], 0, 0);
return 0;
}
diff --git a/src/mame/video/fromanc2.cpp b/src/mame/video/fromanc2.cpp
index acd33f42a8f..e3a37c9f6a0 100644
--- a/src/mame/video/fromanc2.cpp
+++ b/src/mame/video/fromanc2.cpp
@@ -283,7 +283,7 @@ VIDEO_START_MEMBER(fromanc2_state,fromanc2)
for (int screen = 0; screen < 2; screen++)
{
- palette_device *palette = (screen == 0 ? m_lpalette : m_rpalette);
+ palette_device &palette = (screen == 0 ? *m_lpalette : *m_rpalette);
for (int tmap = 0; tmap < 4; tmap++)
{
m_videoram[screen][tmap] = std::make_unique<UINT16[]>((64 * 64));
@@ -321,7 +321,7 @@ VIDEO_START_MEMBER(fromanc2_state,fromancr)
for (int screen = 0; screen < 2; screen++)
{
- palette_device *palette = (screen == 0 ? m_lpalette : m_rpalette);
+ palette_device &palette = (screen == 0 ? *m_lpalette : *m_rpalette);
for (int tmap = 0; tmap < 3; tmap++)
{
m_videoram[screen][tmap] = std::make_unique<UINT16[]>((64 * 64));
@@ -357,7 +357,7 @@ VIDEO_START_MEMBER(fromanc2_state,fromanc4)
for (int screen = 0; screen < 2; screen++)
{
- palette_device *palette = (screen == 0 ? m_lpalette : m_rpalette);
+ palette_device &palette = (screen == 0 ? *m_lpalette : *m_rpalette);
for (int tmap = 0; tmap < 3; tmap++)
{
m_videoram[screen][tmap] = std::make_unique<UINT16[]>((256 * 64));
diff --git a/src/mame/video/gp9001.cpp b/src/mame/video/gp9001.cpp
index 31d939db1dd..de1435b49eb 100644
--- a/src/mame/video/gp9001.cpp
+++ b/src/mame/video/gp9001.cpp
@@ -681,9 +681,9 @@ void gp9001vdp_device::draw_sprites( bitmap_ind16 &bitmap, const rectangle &clip
UINT16 *source;
if (sp.use_sprite_buffer) source = sp.vram16_buffer.get();
- else source = m_spriteram;
- int total_elements = m_gfx[1]->elements();
- int total_colors = m_gfx[1]->colors();
+ else source = &m_spriteram[0];
+ int total_elements = gfx(1)->elements();
+ int total_colors = gfx(1)->colors();
int old_x = (-(sp.scrollx)) & 0x1ff;
int old_y = (-(sp.scrolly)) & 0x1ff;
@@ -784,10 +784,10 @@ void gp9001vdp_device::draw_sprites( bitmap_ind16 &bitmap, const rectangle &clip
*/
sprite %= total_elements;
color %= total_colors;
- const pen_t *paldata = &m_palette->pen(color * 16);
+ const pen_t *paldata = &palette().pen(color * 16);
{
int yy, xx;
- const UINT8* srcdata = m_gfx[1]->get_data(sprite);
+ const UINT8* srcdata = gfx(1)->get_data(sprite);
int count = 0;
int ystart, yend, yinc;
int xstart, xend, xinc;
diff --git a/src/mame/video/grchamp.cpp b/src/mame/video/grchamp.cpp
index 668fe88cd01..2cbdcdd047c 100644
--- a/src/mame/video/grchamp.cpp
+++ b/src/mame/video/grchamp.cpp
@@ -1,5 +1,5 @@
// license:BSD-3-Clause
-// copyright-holders:Ernesto Corvi, Phil Stroffolino
+// copyright-holders:Ernesto Corvi, Phil Stroffolino,Hans Andersson
/* Video hardware for Taito Grand Champion */
/* updated by Hans Andersson, dec 2005 */
diff --git a/src/mame/video/jackal.cpp b/src/mame/video/jackal.cpp
index 8eaad668b28..e2186428090 100644
--- a/src/mame/video/jackal.cpp
+++ b/src/mame/video/jackal.cpp
@@ -1,11 +1,10 @@
-// license:???
-// copyright-holders:Kenneth Lin
+// license:BSD-3-Clause
+// copyright-holders:Curt Coder
+// thanks-to:Kenneth Lin (original driver author)
/***************************************************************************
video.c
- Written by Kenneth Lin (kenneth_lin@ai.vancouver.bc.ca)
-
Functions to emulate the video hardware of the machine.
***************************************************************************/
diff --git a/src/mame/video/k007121.cpp b/src/mame/video/k007121.cpp
index 6914945baa5..bf62cd33bf2 100644
--- a/src/mame/video/k007121.cpp
+++ b/src/mame/video/k007121.cpp
@@ -229,13 +229,12 @@ WRITE8_MEMBER( k007121_device::ctrl_w )
*
*/
-void k007121_device::sprites_draw( bitmap_ind16 &bitmap, const rectangle &cliprect, gfx_element *gfx, palette_device *palette,
- const UINT8 *source, int base_color, int global_x_offset, int bank_base, bitmap_ind8 &priority_bitmap, UINT32 pri_mask )
+void k007121_device::sprites_draw( bitmap_ind16 &bitmap, const rectangle &cliprect, gfx_element *gfx, palette_device &palette,
+ const UINT8 *source, int base_color, int global_x_offset, int bank_base, bitmap_ind8 &priority_bitmap, UINT32 pri_mask, bool is_flakatck )
{
// gfx_element *gfx = gfxs[chip];
int flipscreen = m_flipscreen;
int i, num, inc, offs[5];
- int is_flakatck = (palette == nullptr);
if (is_flakatck)
{
@@ -296,7 +295,7 @@ void k007121_device::sprites_draw( bitmap_ind16 &bitmap, const rectangle &clipre
if (is_flakatck)
transparent_mask = 1 << 0;
else
- transparent_mask = palette->transpen_mask(*gfx, color, 0);
+ transparent_mask = palette.transpen_mask(*gfx, color, 0);
if (!is_flakatck || source[0x00]) /* Flak Attack needs this */
{
diff --git a/src/mame/video/k007121.h b/src/mame/video/k007121.h
index 0f1188b21fa..5e68578928d 100644
--- a/src/mame/video/k007121.h
+++ b/src/mame/video/k007121.h
@@ -17,7 +17,7 @@ public:
/* shall we move source in the interface? */
/* also notice that now we directly pass *gfx[chip] instead of **gfx !! */
- void sprites_draw( bitmap_ind16 &bitmap, const rectangle &cliprect, gfx_element *gfx, palette_device *palette, const UINT8 *source, int base_color, int global_x_offset, int bank_base, bitmap_ind8 &priority_bitmap, UINT32 pri_mask );
+ void sprites_draw( bitmap_ind16 &bitmap, const rectangle &cliprect, gfx_element *gfx, palette_device &palette, const UINT8 *source, int base_color, int global_x_offset, int bank_base, bitmap_ind8 &priority_bitmap, UINT32 pri_mask, bool is_flakatck = false );
protected:
// device-level overrides
diff --git a/src/mame/video/k051316.cpp b/src/mame/video/k051316.cpp
index 958b38fab3f..29493e7e69c 100644
--- a/src/mame/video/k051316.cpp
+++ b/src/mame/video/k051316.cpp
@@ -159,7 +159,7 @@ void k051316_device::device_start()
}
decode_gfx();
- m_gfx[0]->set_colors(m_palette->entries() / m_gfx[0]->depth());
+ gfx(0)->set_colors(palette().entries() / gfx(0)->depth());
m_tmap = &machine().tilemap().create(*this, tilemap_get_info_delegate(FUNC(k051316_device::get_tile_info),this), TILEMAP_SCAN_ROWS, 16, 16, 32, 32);
m_ram.resize(0x800);
diff --git a/src/mame/video/k051316.h b/src/mame/video/k051316.h
index 03d040340f1..fc51fdb95fb 100644
--- a/src/mame/video/k051316.h
+++ b/src/mame/video/k051316.h
@@ -70,7 +70,7 @@ public:
void zoom_draw(screen_device &screen, bitmap_ind16 &bitmap,const rectangle &cliprect,int flags,UINT32 priority);
void wraparound_enable(int status);
- void mark_gfx_dirty(offs_t byteoffset) { m_gfx[0]->mark_dirty(byteoffset * m_pixels_per_byte / (16 * 16)); }
+ void mark_gfx_dirty(offs_t byteoffset) { gfx(0)->mark_dirty(byteoffset * m_pixels_per_byte / (16 * 16)); }
void mark_tmap_dirty() { m_tmap->mark_all_dirty(); }
protected:
diff --git a/src/mame/video/k051960.cpp b/src/mame/video/k051960.cpp
index 81eb58f45af..ae93ec9cb01 100644
--- a/src/mame/video/k051960.cpp
+++ b/src/mame/video/k051960.cpp
@@ -196,9 +196,9 @@ void k051960_device::device_start()
m_sprite_size = region()->bytes();
decode_gfx();
- m_gfx[0]->set_colors(m_palette->entries() / m_gfx[0]->depth());
+ gfx(0)->set_colors(palette().entries() / gfx(0)->depth());
- if (VERBOSE && !(m_palette->shadows_enabled()))
+ if (VERBOSE && !(palette().shadows_enabled()))
popmessage("driver should use VIDEO_HAS_SHADOWS");
m_ram = make_unique_clear<UINT8[]>(0x400);
@@ -466,7 +466,7 @@ void k051960_device::k051960_sprites_draw( bitmap_ind16 &bitmap, const rectangle
flipy = !flipy;
}
- drawmode_table[m_gfx[0]->granularity() - 1] = shadow ? DRAWMODE_SHADOW : DRAWMODE_SOURCE;
+ drawmode_table[gfx(0)->granularity() - 1] = shadow ? DRAWMODE_SHADOW : DRAWMODE_SOURCE;
if (zoomx == 0x10000 && zoomy == 0x10000)
{
@@ -492,14 +492,14 @@ void k051960_device::k051960_sprites_draw( bitmap_ind16 &bitmap, const rectangle
c += yoffset[y];
if (max_priority == -1)
- m_gfx[0]->prio_transtable(bitmap,cliprect,
+ gfx(0)->prio_transtable(bitmap,cliprect,
c,color,
flipx,flipy,
sx & 0x1ff,sy,
priority_bitmap,pri,
drawmode_table);
else
- m_gfx[0]->transtable(bitmap,cliprect,
+ gfx(0)->transtable(bitmap,cliprect,
c,color,
flipx,flipy,
sx & 0x1ff,sy,
@@ -533,7 +533,7 @@ void k051960_device::k051960_sprites_draw( bitmap_ind16 &bitmap, const rectangle
c += yoffset[y];
if (max_priority == -1)
- m_gfx[0]->prio_zoom_transtable(bitmap,cliprect,
+ gfx(0)->prio_zoom_transtable(bitmap,cliprect,
c,color,
flipx,flipy,
sx & 0x1ff,sy,
@@ -541,7 +541,7 @@ void k051960_device::k051960_sprites_draw( bitmap_ind16 &bitmap, const rectangle
priority_bitmap,pri,
drawmode_table);
else
- m_gfx[0]->zoom_transtable(bitmap,cliprect,
+ gfx(0)->zoom_transtable(bitmap,cliprect,
c,color,
flipx,flipy,
sx & 0x1ff,sy,
diff --git a/src/mame/video/k052109.cpp b/src/mame/video/k052109.cpp
index f0e3c640051..08e781da0f8 100644
--- a/src/mame/video/k052109.cpp
+++ b/src/mame/video/k052109.cpp
@@ -223,7 +223,7 @@ void k052109_device::device_start()
}
decode_gfx();
- m_gfx[0]->set_colors(m_palette->entries() / m_gfx[0]->depth());
+ gfx(0)->set_colors(palette().entries() / gfx(0)->depth());
m_ram = make_unique_clear<UINT8[]>(0x6000);
diff --git a/src/mame/video/k053244_k053245.cpp b/src/mame/video/k053244_k053245.cpp
index 66846c73aa6..796eff8a3ec 100644
--- a/src/mame/video/k053244_k053245.cpp
+++ b/src/mame/video/k053244_k053245.cpp
@@ -123,9 +123,9 @@ void k05324x_device::device_start()
/* decode the graphics */
decode_gfx();
- m_gfx[0]->set_colors(m_palette->entries() / m_gfx[0]->depth());
+ gfx(0)->set_colors(palette().entries() / gfx(0)->depth());
- if (VERBOSE && !(m_palette->shadows_enabled()))
+ if (VERBOSE && !(palette().shadows_enabled()))
popmessage("driver should use VIDEO_HAS_SHADOWS");
m_ramsize = 0x800;
@@ -458,7 +458,7 @@ void k05324x_device::sprites_draw( bitmap_ind16 &bitmap, const rectangle &clipre
ox -= (zoomx * w) >> 13;
oy -= (zoomy * h) >> 13;
- drawmode_table[m_gfx[0]->granularity() - 1] = shadow ? DRAWMODE_SHADOW : DRAWMODE_SOURCE;
+ drawmode_table[gfx(0)->granularity() - 1] = shadow ? DRAWMODE_SHADOW : DRAWMODE_SOURCE;
for (y = 0; y < h; y++)
{
@@ -522,7 +522,7 @@ void k05324x_device::sprites_draw( bitmap_ind16 &bitmap, const rectangle &clipre
if (zoomx == 0x10000 && zoomy == 0x10000)
{
- m_gfx[0]->prio_transtable(bitmap,cliprect,
+ gfx(0)->prio_transtable(bitmap,cliprect,
c,color,
fx,fy,
sx,sy,
@@ -531,7 +531,7 @@ void k05324x_device::sprites_draw( bitmap_ind16 &bitmap, const rectangle &clipre
}
else
{
- m_gfx[0]->prio_zoom_transtable(bitmap,cliprect,
+ gfx(0)->prio_zoom_transtable(bitmap,cliprect,
c,color,
fx,fy,
sx,sy,
diff --git a/src/mame/video/k053250.cpp b/src/mame/video/k053250.cpp
index bb3c02805fc..09b59b99718 100644
--- a/src/mame/video/k053250.cpp
+++ b/src/mame/video/k053250.cpp
@@ -353,7 +353,7 @@ void k053250_device::draw( bitmap_rgb32 &bitmap, const rectangle &cliprect, int
linedata_offs += line_start * linedata_adv; // pre-advance line info offset for the clipped region
// load physical palette base
- pal_base = m_palette->pens() + (colorbase << 4) % m_palette->entries();
+ pal_base = palette().pens() + (colorbase << 4) % palette().entries();
// walk the target bitmap within the visible area vertically or horizontally, one line at a time
for (line_pos=line_start; line_pos <= line_end; linedata_offs += linedata_adv, line_pos++)
diff --git a/src/mame/video/k053936.cpp b/src/mame/video/k053936.cpp
index 8e851c14e82..8798921d73e 100644
--- a/src/mame/video/k053936.cpp
+++ b/src/mame/video/k053936.cpp
@@ -436,7 +436,7 @@ static inline void K053936GP_copyroz32clip( running_machine &machine,
bitmap_rgb32 &dst_bitmap, bitmap_ind16 &src_bitmap,
const rectangle &dst_cliprect, const rectangle &src_cliprect,
UINT32 _startx,UINT32 _starty,int _incxx,int _incxy,int _incyx,int _incyy,
- int tilebpp, int blend, int alpha, int clip, int pixeldouble_output, palette_device *palette )
+ int tilebpp, int blend, int alpha, int clip, int pixeldouble_output, palette_device &palette )
{
static const int colormask[8]={1,3,7,0xf,0x1f,0x3f,0x7f,0xff};
int cy, cx;
@@ -484,7 +484,7 @@ static inline void K053936GP_copyroz32clip( running_machine &machine,
ecx = tx = -tx;
tilebpp = (tilebpp-1) & 7;
- pal_base = palette->pens();
+ pal_base = palette.pens();
cmask = colormask[tilebpp];
src_pitch = src_bitmap.rowpixels();
@@ -590,7 +590,7 @@ static inline void K053936GP_copyroz32clip( running_machine &machine,
static void K053936GP_zoom_draw(running_machine &machine,
int chip, UINT16 *ctrl, UINT16 *linectrl,
bitmap_rgb32 &bitmap, const rectangle &cliprect, tilemap_t *tmap,
- int tilebpp, int blend, int alpha, int pixeldouble_output, palette_device *palette)
+ int tilebpp, int blend, int alpha, int pixeldouble_output, palette_device &palette)
{
UINT16 *lineaddr;
@@ -658,7 +658,7 @@ static void K053936GP_zoom_draw(running_machine &machine,
}
void K053936GP_0_zoom_draw(running_machine &machine, bitmap_rgb32 &bitmap, const rectangle &cliprect,
- tilemap_t *tmap, int tilebpp, int blend, int alpha, int pixeldouble_output, UINT16* temp_m_k053936_0_ctrl_16, UINT16* temp_m_k053936_0_linectrl_16,UINT16* temp_m_k053936_0_ctrl, UINT16* temp_m_k053936_0_linectrl, palette_device *palette)
+ tilemap_t *tmap, int tilebpp, int blend, int alpha, int pixeldouble_output, UINT16* temp_m_k053936_0_ctrl_16, UINT16* temp_m_k053936_0_linectrl_16,UINT16* temp_m_k053936_0_ctrl, UINT16* temp_m_k053936_0_linectrl, palette_device &palette)
{
if (temp_m_k053936_0_ctrl_16)
{
diff --git a/src/mame/video/k053936.h b/src/mame/video/k053936.h
index 311b2e198d9..cc840898b64 100644
--- a/src/mame/video/k053936.h
+++ b/src/mame/video/k053936.h
@@ -13,7 +13,7 @@ void K053936_set_offset(int chip, int xoffs, int yoffs);
void K053936GP_set_offset(int chip, int xoffs, int yoffs);
void K053936GP_clip_enable(int chip, int status);
void K053936GP_set_cliprect(int chip, int minx, int maxx, int miny, int maxy);
-void K053936GP_0_zoom_draw(running_machine &machine, bitmap_rgb32 &bitmap, const rectangle &cliprect, tilemap_t *tmap, int tilebpp, int blend, int alpha, int pixeldouble_output, UINT16* temp_m_k053936_0_ctrl_16, UINT16* temp_m_k053936_0_linectrl_16, UINT16* temp_m_k053936_0_ctrl, UINT16* temp_m_k053936_0_linectrl, palette_device *palette);
+void K053936GP_0_zoom_draw(running_machine &machine, bitmap_rgb32 &bitmap, const rectangle &cliprect, tilemap_t *tmap, int tilebpp, int blend, int alpha, int pixeldouble_output, UINT16* temp_m_k053936_0_ctrl_16, UINT16* temp_m_k053936_0_linectrl_16, UINT16* temp_m_k053936_0_ctrl, UINT16* temp_m_k053936_0_linectrl, palette_device &palette);
class k053936_device : public device_t
diff --git a/src/mame/video/k054338.cpp b/src/mame/video/k054338.cpp
index 928f331991f..181b60cd23b 100644
--- a/src/mame/video/k054338.cpp
+++ b/src/mame/video/k054338.cpp
@@ -74,7 +74,7 @@ int k054338_device::register_r( int reg )
return m_regs[reg];
}
-void k054338_device::update_all_shadows( int rushingheroes_hack, palette_device *palette )
+void k054338_device::update_all_shadows( int rushingheroes_hack, palette_device &palette )
{
int i, d;
int noclip = m_regs[K338_REG_CONTROL] & K338_CTL_CLIPSL;
@@ -89,15 +89,15 @@ void k054338_device::update_all_shadows( int rushingheroes_hack, palette_device
if (!rushingheroes_hack)
{
- palette->set_shadow_dRGB32(0, m_shd_rgb[0], m_shd_rgb[1], m_shd_rgb[2], noclip);
- palette->set_shadow_dRGB32(1, m_shd_rgb[3], m_shd_rgb[4], m_shd_rgb[5], noclip);
- palette->set_shadow_dRGB32(2, m_shd_rgb[6], m_shd_rgb[7], m_shd_rgb[8], noclip);
+ palette.set_shadow_dRGB32(0, m_shd_rgb[0], m_shd_rgb[1], m_shd_rgb[2], noclip);
+ palette.set_shadow_dRGB32(1, m_shd_rgb[3], m_shd_rgb[4], m_shd_rgb[5], noclip);
+ palette.set_shadow_dRGB32(2, m_shd_rgb[6], m_shd_rgb[7], m_shd_rgb[8], noclip);
}
else // rushing heroes seems to specify shadows in another format, or it's not being interpreted properly.
{
- palette->set_shadow_dRGB32(0, -80, -80, -80, 0);
- palette->set_shadow_dRGB32(1, -80, -80, -80, 0);
- palette->set_shadow_dRGB32(2, -80, -80, -80, 0);
+ palette.set_shadow_dRGB32(0, -80, -80, -80, 0);
+ palette.set_shadow_dRGB32(1, -80, -80, -80, 0);
+ palette.set_shadow_dRGB32(2, -80, -80, -80, 0);
}
}
diff --git a/src/mame/video/k054338.h b/src/mame/video/k054338.h
index ad4f95a590e..78c12f97394 100644
--- a/src/mame/video/k054338.h
+++ b/src/mame/video/k054338.h
@@ -38,7 +38,7 @@ public:
DECLARE_READ16_MEMBER( word_r ); // CLTC
int register_r(int reg);
- void update_all_shadows(int rushingheroes_hack, palette_device *palette); // called at the beginning of SCREEN_UPDATE()
+ void update_all_shadows(int rushingheroes_hack, palette_device &palette); // called at the beginning of SCREEN_UPDATE()
void fill_solid_bg(bitmap_rgb32 &bitmap, const rectangle &cliprect); // solid backcolor fill
void fill_backcolor(bitmap_rgb32 &bitmap, const rectangle &cliprect, const pen_t *pal_ptr, int mode); // solid or gradient fill using k055555
int set_alpha_level(int pblend); // blend style 0-2
diff --git a/src/mame/video/kaneko16.cpp b/src/mame/video/kaneko16.cpp
index 47dc6e209d9..22c58e13f0c 100644
--- a/src/mame/video/kaneko16.cpp
+++ b/src/mame/video/kaneko16.cpp
@@ -29,11 +29,11 @@ VIDEO_START_MEMBER(kaneko16_state,kaneko16)
the times. To do it right, each pixel should be drawn with pen 0
of the bottomost tile that covers it (which is pretty tricky to do) */
template<class _BitmapClass>
-void kaneko16_state::kaneko16_fill_bitmap(palette_device* palette, _BitmapClass &bitmap, const rectangle &cliprect)
+void kaneko16_state::kaneko16_fill_bitmap(_BitmapClass &bitmap, const rectangle &cliprect)
{
int pen = 0;
- if (m_kaneko_spr)
+ if (m_kaneko_spr.found())
{
if (m_kaneko_spr->get_sprite_type() == 1)
{
@@ -49,7 +49,7 @@ void kaneko16_state::kaneko16_fill_bitmap(palette_device* palette, _BitmapClass
}
else
{
- const pen_t *pal = palette->pens();
+ const pen_t *pal = m_palette->pens();
bitmap.fill(pal[pen], cliprect);
}
}
@@ -82,7 +82,7 @@ UINT32 kaneko16_state::screen_update_common(screen_device &screen, _BitmapClass
UINT32 kaneko16_state::screen_update_kaneko16(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect)
{
- kaneko16_fill_bitmap(m_palette, bitmap,cliprect);
+ kaneko16_fill_bitmap(bitmap,cliprect);
// if the display is disabled, do nothing?
if (!m_disp_enable) return 0;
diff --git a/src/mame/video/kaneko_spr.cpp b/src/mame/video/kaneko_spr.cpp
index 304800130a4..c9c1ac9eb8d 100644
--- a/src/mame/video/kaneko_spr.cpp
+++ b/src/mame/video/kaneko_spr.cpp
@@ -308,7 +308,7 @@ void kaneko16_sprite_device::kaneko16_draw_sprites_custom(_BitmapClass &dest_bmp
if (sizeof(*dest) == 2) rgb = 0;
else rgb = 1;
- const pen_t *pal = gfx->palette()->pens();
+ const pen_t *pal = gfx->palette().pens();
for (int y = sy; y < ey; y++)
{
@@ -575,7 +575,7 @@ void kaneko16_sprite_device::kaneko16_copybitmap(bitmap_ind16 &bitmap, const rec
void kaneko16_sprite_device::kaneko16_copybitmap(bitmap_rgb32 &bitmap, const rectangle &cliprect)
{
- const pen_t *pal = m_gfxdecode->gfx(0)->palette()->pens();
+ const pen_t *pal = m_gfxdecode->gfx(0)->palette().pens();
UINT16* srcbitmap;
UINT32* dstbitmap;
diff --git a/src/mame/video/konami_helper.cpp b/src/mame/video/konami_helper.cpp
index 6ef50ba8149..e26864a814b 100644
--- a/src/mame/video/konami_helper.cpp
+++ b/src/mame/video/konami_helper.cpp
@@ -11,7 +11,7 @@ void konami_decode_gfx(running_machine &machine, gfxdecode_device * gfxdecode, p
memcpy(&gl, layout, sizeof(gl));
gl.total = total;
- gfxdecode->set_gfx(gfx_index, std::make_unique<gfx_element>(&palette, gl, data, 0, palette.entries() >> bpp, 0));
+ gfxdecode->set_gfx(gfx_index, std::make_unique<gfx_element>(palette, gl, data, 0, palette.entries() >> bpp, 0));
}
diff --git a/src/mame/video/m107.cpp b/src/mame/video/m107.cpp
index 557884f85ed..8b7ebcad955 100644
--- a/src/mame/video/m107.cpp
+++ b/src/mame/video/m107.cpp
@@ -161,7 +161,7 @@ void m107_state::draw_sprites(screen_device &screen, bitmap_ind16 &bitmap, const
{
UINT16 *spriteram = m_buffered_spriteram.get();
int offs;
- UINT8 *rom = memregion("user1")->base();
+ UINT8 *rom = m_user1_ptr;
for (offs = 0;offs < 0x800;offs += 4)
{
@@ -217,6 +217,9 @@ void m107_state::draw_sprites(screen_device &screen, bitmap_ind16 &bitmap, const
{
int rom_offs = sprite*8;
+ if (!rom)
+ return;
+
if (rom[rom_offs+1] || rom[rom_offs+3] || rom[rom_offs+5] || rom[rom_offs+7])
{
while (rom_offs < 0x40000) /* safety check */
diff --git a/src/mame/video/m58.cpp b/src/mame/video/m58.cpp
index 4440491eb0a..3db0950cd66 100644
--- a/src/mame/video/m58.cpp
+++ b/src/mame/video/m58.cpp
@@ -11,9 +11,6 @@
#include "video/resnet.h"
#include "includes/m58.h"
-#define SCROLL_PANEL_WIDTH (14*4)
-#define RADAR_PALETTE_BASE (256)
-
/*************************************
@@ -114,24 +111,22 @@ WRITE8_MEMBER(m58_state::videoram_w)
WRITE8_MEMBER(m58_state::scroll_panel_w)
{
- int sx,sy,i;
-
- sx = ( offset % 16 );
- sy = ( offset / 16 );
+ int sx = ( offset % 16 );
+ int sy = ( offset / 16 );
if (sx < 1 || sx > 14)
return;
sx = 4 * (sx - 1);
- for (i = 0;i < 4;i++)
+ for (int i = 0;i < 4;i++)
{
int col;
col = (data >> i) & 0x11;
col = ((col >> 3) | col) & 3;
- m_scroll_panel_bitmap.pix16(sy, sx + i) = RADAR_PALETTE_BASE + (sy & 0xfc) + col;
+ m_scroll_panel_bitmap.pix16(sy, sx + i) = 0x100 + (sy & 0xfc) + col;
}
}
@@ -178,11 +173,10 @@ void m58_state::video_start()
int height = m_screen->height();
const rectangle &visarea = m_screen->visible_area();
- m_bg_tilemap = &machine().tilemap().create(m_gfxdecode, tilemap_get_info_delegate(FUNC(m58_state::get_bg_tile_info),this), tilemap_mapper_delegate(FUNC(m58_state::tilemap_scan_rows),this), 8, 8, 64, 32);
+ m_bg_tilemap = &machine().tilemap().create(m_gfxdecode, tilemap_get_info_delegate(FUNC(m58_state::get_bg_tile_info),this), tilemap_mapper_delegate(FUNC(m58_state::tilemap_scan_rows),this), 8, 8, 64, 32);
m_bg_tilemap->set_scrolldx(visarea.min_x, width - (visarea.max_x + 1));
m_bg_tilemap->set_scrolldy(visarea.min_y - 8, height + 16 - (visarea.max_y + 1));
- //m_scroll_panel_bitmap = std::make_unique<bitmap_ind16>(SCROLL_PANEL_WIDTH, height);
m_screen->register_screen_bitmap(m_scroll_panel_bitmap);
save_item(NAME(m_scroll_panel_bitmap));
}
@@ -212,14 +206,11 @@ WRITE8_MEMBER(m58_state::flipscreen_w)
*
*************************************/
-#define DRAW_SPRITE(code, sy) m_gfxdecode->gfx(1)->transmask(bitmap,cliprect, code, color, flipx, flipy, sx, sy, m_palette->transpen_mask(*m_gfxdecode->gfx(1), color, 512));
-
void m58_state::draw_sprites(bitmap_ind16 &bitmap, const rectangle &cliprect )
{
- int offs;
const rectangle &visarea = m_screen->visible_area();
- for (offs = m_spriteram.bytes() - 4; offs >= 0; offs -= 4)
+ for (int offs = m_spriteram.bytes() - 4; offs >= 0; offs -= 4)
{
int attr = m_spriteram[offs + 1];
int bank = (attr & 0x20) >> 5;
@@ -255,8 +246,16 @@ void m58_state::draw_sprites(bitmap_ind16 &bitmap, const rectangle &cliprect )
sy2 = sy1 + 0x10;
}
- DRAW_SPRITE(code1 + 256 * bank, visarea.min_y + sy1)
- DRAW_SPRITE(code2 + 256 * bank, visarea.min_y + sy2)
+ m_gfxdecode->gfx(1)->transmask(bitmap, cliprect,
+ code1 + 256 * bank, color,
+ flipx, flipy, sx, visarea.min_y + sy1,
+ m_palette->transpen_mask(*m_gfxdecode->gfx(1), color, 512)
+ );
+ m_gfxdecode->gfx(1)->transmask(bitmap, cliprect,
+ code2 + 256 * bank, color,
+ flipx, flipy, sx, visarea.min_y + sy2,
+ m_palette->transpen_mask(*m_gfxdecode->gfx(1), color, 512)
+ );
}
}
@@ -276,15 +275,14 @@ void m58_state::draw_panel( bitmap_ind16 &bitmap, const rectangle &cliprect )
const rectangle clippanelflip(0*8, 6*8-1, 1*8, 31*8-1);
rectangle clip = flip_screen() ? clippanelflip : clippanel;
const rectangle &visarea = m_screen->visible_area();
- int sx = flip_screen() ? cliprect.min_x - 8 : cliprect.max_x + 1 - SCROLL_PANEL_WIDTH;
+ int sx = flip_screen() ? cliprect.min_x - 8 : cliprect.max_x + 1 - 14*4;
int yoffs = flip_screen() ? -40 : -16;
clip.min_y += visarea.min_y + yoffs;
clip.max_y += visarea.max_y + yoffs;
clip &= cliprect;
- copybitmap(bitmap, m_scroll_panel_bitmap, flip_screen(), flip_screen(),
- sx, visarea.min_y + yoffs, clip);
+ copybitmap(bitmap, m_scroll_panel_bitmap, flip_screen(), flip_screen(), sx, visarea.min_y + yoffs, clip);
}
}
diff --git a/src/mame/video/megasys1.cpp b/src/mame/video/megasys1.cpp
index 1770c490218..7e04cec112d 100644
--- a/src/mame/video/megasys1.cpp
+++ b/src/mame/video/megasys1.cpp
@@ -844,14 +844,6 @@ struct priority
*/
-static const struct priority priorities[] =
-{
- { "chimerab",
- { 0x14032,0x04132,0x14032,0x04132,0xfffff,0xfffff,0xfffff,0xfffff,
- 0xfffff,0xfffff,0x01324,0xfffff,0xfffff,0xfffff,0xfffff,0xfffff }
- },
- { nullptr } // end of list: use the prom's data
-};
/*
@@ -901,27 +893,8 @@ void megasys1_state::megasys1_priority_create()
{
const UINT8 *color_prom = memregion("proms")->base();
int pri_code, offset, i, order;
-
- /* First check if we have an hand-crafted priority scheme
- available (this should happen only if no good dump
- of the prom is known) */
-
- i = 0;
- while ( priorities[i].driver &&
- strcmp(priorities[i].driver, machine().system().name) != 0 &&
- strcmp(priorities[i].driver, machine().system().parent) != 0)
- i++;
-
- if (priorities[i].driver)
- {
- memcpy (m_layers_order, priorities[i].priorities, 16 * sizeof(int));
-
- logerror("WARNING: using an hand-crafted priorities scheme\n");
-
- return;
- }
-
- /* Otherwise, perform the conversion from the prom itself */
+
+ /* convert PROM to something we can use */
for (pri_code = 0; pri_code < 0x10 ; pri_code++) // 16 priority codes
{
diff --git a/src/mame/video/msisaac.cpp b/src/mame/video/msisaac.cpp
index ffc5a77f238..0d5c596f1f9 100644
--- a/src/mame/video/msisaac.cpp
+++ b/src/mame/video/msisaac.cpp
@@ -1,4 +1,4 @@
-// license:???
+// license:GPL-2.0+
// copyright-holders:Jarek Burczynski
/*
* Video Driver for Metal Soldier Isaac II (1985)
diff --git a/src/mame/video/n64.cpp b/src/mame/video/n64.cpp
index 81c33f9cd2c..b80d22785ad 100644
--- a/src/mame/video/n64.cpp
+++ b/src/mame/video/n64.cpp
@@ -91,7 +91,7 @@ INT32 n64_rdp::get_alpha_cvg(INT32 comb_alpha, rdp_span_aux* userdata, const rdp
void n64_state::video_start()
{
- m_rdp = auto_alloc(machine(), n64_rdp(*this));
+ m_rdp = auto_alloc(machine(), n64_rdp(*this, m_rdram, m_rsp_dmem));
m_rdp->set_machine(machine());
m_rdp->init_internal_state();
@@ -203,7 +203,7 @@ void n64_periphs::video_update16(bitmap_rgb32 &bitmap)
//INT32 dither_filter = (n64->vi_control >> 16) & 1;
//INT32 vibuffering = ((n64->vi_control & 2) && fsaa && divot);
- UINT16* frame_buffer = (UINT16*)&rdram[(vi_origin & 0xffffff) >> 2];
+ UINT16* frame_buffer = (UINT16*)&m_rdram[(vi_origin & 0xffffff) >> 2];
//UINT32 hb = ((n64->vi_origin & 0xffffff) >> 2) >> 1;
//UINT8* hidden_buffer = &m_hidden_bits[hb];
@@ -261,7 +261,7 @@ void n64_periphs::video_update32(bitmap_rgb32 &bitmap)
INT32 gamma_dither = (vi_control >> 2) & 1;
//INT32 vibuffering = ((n64->vi_control & 2) && fsaa && divot);
- UINT32* frame_buffer32 = (UINT32*)&rdram[(vi_origin & 0xffffff) >> 2];
+ UINT32* frame_buffer32 = (UINT32*)&m_rdram[(vi_origin & 0xffffff) >> 2];
const INT32 hdiff = (vi_hstart & 0x3ff) - ((vi_hstart >> 16) & 0x3ff);
const float hcoeff = ((float)(vi_xscale & 0xfff) / (1 << 10));
@@ -843,7 +843,7 @@ void n64_rdp::z_store(const rdp_poly_state &object, UINT32 zcurpixel, UINT32 dzc
UINT16 zval = m_z_com_table[z & 0x3ffff]|(enc >> 2);
if(zcurpixel <= MEM16_LIMIT)
{
- ((UINT16*)rdram)[zcurpixel ^ WORD_ADDR_XOR] = zval;
+ ((UINT16*)m_rdram)[zcurpixel ^ WORD_ADDR_XOR] = zval;
}
if(dzcurpixel <= MEM8_LIMIT)
{
@@ -1099,11 +1099,11 @@ UINT32 n64_rdp::read_data(UINT32 address)
{
if (m_status & 0x1) // XBUS_DMEM_DMA enabled
{
- return rsp_dmem[(address & 0xfff) / 4];
+ return m_dmem[(address & 0xfff) / 4];
}
else
{
- return rdram[((address & 0xffffff) / 4)];
+ return m_rdram[((address & 0xffffff) / 4)];
}
}
@@ -2285,29 +2285,29 @@ void n64_rdp::cmd_tex_rect(UINT32 w1, UINT32 w2)
ewdata[0] = (0x24 << 24) | ((0x80 | tilenum) << 16) | yl; // command, flipped, tile, yl
ewdata[1] = (yl << 16) | yh; // ym, yh
ewdata[2] = (xlint << 16) | ((xl & 3) << 14); // xl, xl frac
- ewdata[3] = 0; // dxldy, dxldy frac
+ // ewdata[3] = 0; dxldy, dxldy frac
ewdata[4] = (xhint << 16) | ((xh & 3) << 14); // xh, xh frac
- ewdata[5] = 0; // dxhdy, dxhdy frac
+ // ewdata[5] = 0; dxhdy, dxhdy frac
ewdata[6] = (xlint << 16) | ((xl & 3) << 14); // xm, xm frac
- ewdata[7] = 0; // dxmdy, dxmdy frac
+ //ewdata[7] = 0; dxmdy, dxmdy frac
memset(&ewdata[8], 0, 16 * sizeof(UINT32)); // shade
ewdata[24] = (s << 16) | t; // s, t
- ewdata[25] = 0; // w
+ // ewdata[25] = 0; w
ewdata[26] = ((dsdx >> 5) << 16); // dsdx, dtdx
- ewdata[27] = 0; // dwdx
- ewdata[28] = 0; // s frac, t frac
- ewdata[29] = 0; // w frac
+ // ewdata[27] = 0; dwdx
+ // ewdata[28] = 0; s frac, t frac
+ // ewdata[29] = 0; w frac
ewdata[30] = ((dsdx & 0x1f) << 11) << 16; // dsdx frac, dtdx frac
- ewdata[31] = 0; // dwdx frac
- ewdata[32] = (dtdy >> 5) & 0xffff;//dsde, dtde
- ewdata[33] = 0;//dwde
- ewdata[34] = (dtdy >> 5) & 0xffff;//dsdy, dtdy
- ewdata[35] = 0;//dwdy
- ewdata[36] = (dtdy & 0x1f) << 11;//dsde frac, dtde frac
- ewdata[37] = 0;//dwde frac
- ewdata[38] = (dtdy & 0x1f) << 11;//dsdy frac, dtdy frac
- ewdata[39] = 0;//dwdy frac
- memset(&ewdata[40], 0, 4 * sizeof(UINT32));//depth
+ // ewdata[31] = 0; dwdx frac
+ ewdata[32] = (dtdy >> 5) & 0xffff; // dsde, dtde
+ // ewdata[33] = 0; dwde
+ ewdata[34] = (dtdy >> 5) & 0xffff; // dsdy, dtdy
+ // ewdata[35] = 0; dwdy
+ ewdata[36] = (dtdy & 0x1f) << 11; // dsde frac, dtde frac
+ // ewdata[37] = 0; dwde frac
+ ewdata[38] = (dtdy & 0x1f) << 11; // dsdy frac, dtdy frac
+ // ewdata[39] = 0; // dwdy frac
+ // ewdata[40-43] = 0; // depth
draw_triangle(true, true, false, true);
}
@@ -2339,32 +2339,32 @@ void n64_rdp::cmd_tex_rect_flip(UINT32 w1, UINT32 w2)
const INT32 xhint = (xh >> 2) & 0x3ff;
UINT32* ewdata = m_temp_rect_data;
- ewdata[0] = (0x25 << 24) | ((0x80 | tilenum) << 16) | yl;//command, flipped, tile, yl
- ewdata[1] = (yl << 16) | yh;//ym, yh
- ewdata[2] = (xlint << 16) | ((xl & 3) << 14);//xl, xl frac
- ewdata[3] = 0;//dxldy, dxldy frac
- ewdata[4] = (xhint << 16) | ((xh & 3) << 14);//xh, xh frac
- ewdata[5] = 0;//dxhdy, dxhdy frac
- ewdata[6] = (xlint << 16) | ((xl & 3) << 14);//xm, xm frac
- ewdata[7] = 0;//dxmdy, dxmdy frac
- memset(&ewdata[8], 0, 16 * sizeof(UINT32));//shade
- ewdata[24] = (s << 16) | t;//s, t
- ewdata[25] = 0;//w
- ewdata[26] = (dtdy >> 5) & 0xffff;//dsdx, dtdx
- ewdata[27] = 0;//dwdx
- ewdata[28] = 0;//s frac, t frac
- ewdata[29] = 0;//w frac
- ewdata[30] = ((dtdy & 0x1f) << 11);//dsdx frac, dtdx frac
- ewdata[31] = 0;//dwdx frac
- ewdata[32] = (dsdx >> 5) << 16;//dsde, dtde
- ewdata[33] = 0;//dwde
- ewdata[34] = (dsdx >> 5) << 16;//dsdy, dtdy
- ewdata[35] = 0;//dwdy
- ewdata[36] = (dsdx & 0x1f) << 27;//dsde frac, dtde frac
- ewdata[37] = 0;//dwde frac
- ewdata[38] = (dsdx & 0x1f) << 27;//dsdy frac, dtdy frac
- ewdata[39] = 0;//dwdy frac
- memset(&ewdata[40], 0, 4 * sizeof(UINT32));//depth
+ ewdata[0] = (0x25 << 24) | ((0x80 | tilenum) << 16) | yl; // command, flipped, tile, yl
+ ewdata[1] = (yl << 16) | yh; // ym, yh
+ ewdata[2] = (xlint << 16) | ((xl & 3) << 14); // xl, xl frac
+ // ewdata[3] = 0; dxldy, dxldy frac
+ ewdata[4] = (xhint << 16) | ((xh & 3) << 14); // xh, xh frac
+ // ewdata[5] = 0; dxhdy, dxhdy frac
+ ewdata[6] = (xlint << 16) | ((xl & 3) << 14); // xm, xm frac
+ // ewdata[7] = 0; dxmdy, dxmdy frac
+ memset(&ewdata[8], 0, 16 * sizeof(UINT32)); // shade
+ ewdata[24] = (s << 16) | t; // s, t
+ // ewdata[25] = 0; // w
+ ewdata[26] = (dtdy >> 5) & 0xffff; // dsdx, dtdx
+ // ewdata[27] = 0; dwdx
+ // ewdata[28] = 0; s frac, t frac
+ // ewdata[29] = 0; w frac
+ ewdata[30] = ((dtdy & 0x1f) << 11); // dsdx frac, dtdx frac
+ // ewdata[31] = 0; dwdx frac
+ ewdata[32] = (dsdx >> 5) << 16; // dsde, dtde
+ // ewdata[33] = 0; dwde
+ ewdata[34] = (dsdx >> 5) << 16; // dsdy, dtdy
+ // ewdata[35] = 0; dwdy
+ ewdata[36] = (dsdx & 0x1f) << 27; // dsde frac, dtde frac
+ // ewdata[37] = 0; dwde frac
+ ewdata[38] = (dsdx & 0x1f) << 27; // dsdy frac, dtdy frac
+ // ewdata[39] = 0; // dwdy frac
+ // ewdata[40-43] = 0; // depth
draw_triangle(true, true, false, true);
}
@@ -3124,10 +3124,14 @@ void n64_rdp::process_command_list()
/*****************************************************************************/
-n64_rdp::n64_rdp(n64_state &state) : poly_manager<UINT32, rdp_poly_state, 8, 32000>(state.machine())
+n64_rdp::n64_rdp(n64_state &state, UINT32* rdram, UINT32* dmem) : poly_manager<UINT32, rdp_poly_state, 8, 32000>(state.machine())
{
ignore = false;
dolog = false;
+
+ m_rdram = rdram;
+ m_dmem = dmem;
+
m_aux_buf_ptr = 0;
m_aux_buf = nullptr;
m_pipe_clean = true;
@@ -3154,6 +3158,8 @@ n64_rdp::n64_rdp(n64_state &state) : poly_manager<UINT32, rdp_poly_state, 8, 320
m_prim_lod_fraction.set(0, 0, 0, 0);
z_build_com_table();
+ memset(m_temp_rect_data, 0, sizeof(UINT32) * 0x1000);
+
for (INT32 i = 0; i < 0x4000; i++)
{
UINT32 exponent = (i >> 11) & 7;
diff --git a/src/mame/video/n64.h b/src/mame/video/n64.h
index 2f5890de3c4..08cf1597034 100644
--- a/src/mame/video/n64.h
+++ b/src/mame/video/n64.h
@@ -69,26 +69,26 @@
#endif
#if RDP_RANGE_CHECK
-#define RREADADDR8(in) ((rdp_range_check((in))) ? 0 : (((UINT8*)rdram)[(in) ^ BYTE_ADDR_XOR]))
-#define RREADIDX16(in) ((rdp_range_check((in) << 1)) ? 0 : (((UINT16*)rdram)[(in) ^ WORD_ADDR_XOR]))
-#define RREADIDX32(in) ((rdp_range_check((in) << 2)) ? 0 : rdram[(in)])
+#define RREADADDR8(in) ((rdp_range_check((in))) ? 0 : (((UINT8*)m_rdram)[(in) ^ BYTE_ADDR_XOR]))
+#define RREADIDX16(in) ((rdp_range_check((in) << 1)) ? 0 : (((UINT16*)m_rdram)[(in) ^ WORD_ADDR_XOR]))
+#define RREADIDX32(in) ((rdp_range_check((in) << 2)) ? 0 : m_rdram[(in)])
-#define RWRITEADDR8(in, val) if(rdp_range_check((in))) { printf("Write8: Address %08x out of range!\n", (in)); fflush(stdout); fatalerror("Address %08x out of range!\n", (in)); } else { ((UINT8*)rdram)[(in) ^ BYTE_ADDR_XOR] = val;}
-#define RWRITEIDX16(in, val) if(rdp_range_check((in) << 1)) { printf("Write16: Address %08x out of range!\n", ((object.m_misc_state.m_fb_address >> 1) + curpixel) << 1); fflush(stdout); fatalerror("Address out of range\n"); } else { ((UINT16*)rdram)[(in) ^ WORD_ADDR_XOR] = val;}
-#define RWRITEIDX32(in, val) if(rdp_range_check((in) << 2)) { printf("Write32: Address %08x out of range!\n", (in) << 2); fflush(stdout); fatalerror("Address %08x out of range!\n", (in) << 2); } else { rdram[(in)] = val;}
+#define RWRITEADDR8(in, val) if(rdp_range_check((in))) { printf("Write8: Address %08x out of range!\n", (in)); fflush(stdout); fatalerror("Address %08x out of range!\n", (in)); } else { ((UINT8*)m_rdram)[(in) ^ BYTE_ADDR_XOR] = val;}
+#define RWRITEIDX16(in, val) if(rdp_range_check((in) << 1)) { printf("Write16: Address %08x out of range!\n", ((object.m_misc_state.m_fb_address >> 1) + curpixel) << 1); fflush(stdout); fatalerror("Address out of range\n"); } else { ((UINT16*)m_rdram)[(in) ^ WORD_ADDR_XOR] = val;}
+#define RWRITEIDX32(in, val) if(rdp_range_check((in) << 2)) { printf("Write32: Address %08x out of range!\n", (in) << 2); fflush(stdout); fatalerror("Address %08x out of range!\n", (in) << 2); } else { m_rdram[(in)] = val;}
#else
-#define RREADADDR8(in) (((UINT8*)rdram)[(in) ^ BYTE_ADDR_XOR])
-#define RREADIDX16(in) (((UINT16*)rdram)[(in) ^ WORD_ADDR_XOR])
-#define RREADIDX32(in) (rdram[(in)])
+#define RREADADDR8(in) (((UINT8*)m_rdram)[(in) ^ BYTE_ADDR_XOR])
+#define RREADIDX16(in) (((UINT16*)m_rdram)[(in) ^ WORD_ADDR_XOR])
+#define RREADIDX32(in) (m_rdram[(in)])
-#define RWRITEADDR8(in, val) ((UINT8*)rdram)[(in) ^ BYTE_ADDR_XOR] = val;
-#define RWRITEIDX16(in, val) ((UINT16*)rdram)[(in) ^ WORD_ADDR_XOR] = val;
-#define RWRITEIDX32(in, val) rdram[(in)] = val
+#define RWRITEADDR8(in, val) ((UINT8*)m_rdram)[(in) ^ BYTE_ADDR_XOR] = val;
+#define RWRITEIDX16(in, val) ((UINT16*)m_rdram)[(in) ^ WORD_ADDR_XOR] = val;
+#define RWRITEIDX32(in, val) m_rdram[(in)] = val
#endif
-#define U_RREADADDR8(in) (((UINT8*)rdram)[(in) ^ BYTE_ADDR_XOR])
-#define U_RREADIDX16(in) (((UINT16*)rdram)[(in) ^ WORD_ADDR_XOR])
-#define U_RREADIDX32(in) (rdram[(in)])
+#define U_RREADADDR8(in) (((UINT8*)m_rdram)[(in) ^ BYTE_ADDR_XOR])
+#define U_RREADIDX16(in) (((UINT16*)m_rdram)[(in) ^ WORD_ADDR_XOR])
+#define U_RREADIDX32(in) (m_rdram[(in)])
#define GETLOWCOL(x) (((x) & 0x3e) << 2)
#define GETMEDCOL(x) (((x) & 0x7c0) >> 3)
@@ -133,7 +133,7 @@ typedef void (*rdp_command_t)(UINT32 w1, UINT32 w2);
class n64_rdp : public poly_manager<UINT32, rdp_poly_state, 8, 32000>
{
public:
- n64_rdp(n64_state &state);
+ n64_rdp(n64_state &state, UINT32* rdram, UINT32* dmem);
running_machine &machine() const { assert(m_machine != nullptr); return *m_machine; }
@@ -331,6 +331,8 @@ private:
compute_cvg_t m_compute_cvg[2];
running_machine* m_machine;
+ UINT32* m_rdram;
+ UINT32* m_dmem;
combine_modes_t m_combine;
bool m_pending_mode_block;
diff --git a/src/mame/video/nbmj8891.cpp b/src/mame/video/nbmj8891.cpp
index 78d92a4c3fe..875829e5a3b 100644
--- a/src/mame/video/nbmj8891.cpp
+++ b/src/mame/video/nbmj8891.cpp
@@ -480,9 +480,8 @@ void nbmj8891_state::gfxdraw()
******************************************************************************/
-VIDEO_START_MEMBER(nbmj8891_state,_1layer)
+VIDEO_START_MEMBER( nbmj8891_state, _1layer )
{
- UINT8 *CLUT = memregion("protection")->base();
int width = m_screen->width();
int height = m_screen->height();
@@ -497,7 +496,13 @@ VIDEO_START_MEMBER(nbmj8891_state,_1layer)
if (m_nb1413m3->m_nb1413m3_type == NB1413M3_TAIWANMB)
{
- for (int i = 0; i < 0x0800; i++) m_clut[i] = CLUT[i];
+ if (m_clut_ptr)
+ {
+ for (int i = 0; i < 0x0800; i++)
+ {
+ m_clut[i] = m_clut_ptr[i];
+ }
+ }
save_item(NAME(m_param_cnt));
save_item(NAME(m_param_old));
}
diff --git a/src/mame/video/offtwall.cpp b/src/mame/video/offtwall.cpp
index 4bba555e584..c11492ff3e9 100644
--- a/src/mame/video/offtwall.cpp
+++ b/src/mame/video/offtwall.cpp
@@ -84,14 +84,14 @@ VIDEO_START_MEMBER(offtwall_state,offtwall)
UINT32 offtwall_state::screen_update_offtwall(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect)
{
// start drawing
- m_vad->mob()->draw_async(cliprect);
+ m_vad->mob().draw_async(cliprect);
/* draw the playfield */
- m_vad->playfield()->draw(screen, bitmap, cliprect, 0, 0);
+ m_vad->playfield().draw(screen, bitmap, cliprect, 0, 0);
// draw and merge the MO
- bitmap_ind16 &mobitmap = m_vad->mob()->bitmap();
- for (const sparse_dirty_rect *rect = m_vad->mob()->first_dirty_rect(cliprect); rect != nullptr; rect = rect->next())
+ bitmap_ind16 &mobitmap = m_vad->mob().bitmap();
+ for (const sparse_dirty_rect *rect = m_vad->mob().first_dirty_rect(cliprect); rect != nullptr; rect = rect->next())
for (int y = rect->min_y; y <= rect->max_y; y++)
{
UINT16 *mo = &mobitmap.pix16(y);
diff --git a/src/mame/video/opwolf.cpp b/src/mame/video/opwolf.cpp
index 25336b1ee72..1ff719a8178 100644
--- a/src/mame/video/opwolf.cpp
+++ b/src/mame/video/opwolf.cpp
@@ -1,4 +1,4 @@
-// license:???
+// license:GPL-2.0+
// copyright-holders:David Graves, Jarek Burczynski
/***************************************************************************
Functions to emulate video hardware on these Taito games:
diff --git a/src/mame/video/p2000m.cpp b/src/mame/video/p2000m.cpp
index a75a994fe28..f2e8fc0ca9e 100644
--- a/src/mame/video/p2000m.cpp
+++ b/src/mame/video/p2000m.cpp
@@ -1,4 +1,4 @@
-// license:???
+// license:BSD-3-Clause
// copyright-holders:Paul Daniels
/**********************************************************************
diff --git a/src/mame/video/phoenix.cpp b/src/mame/video/phoenix.cpp
index 23a2389a9b8..49d69064b89 100644
--- a/src/mame/video/phoenix.cpp
+++ b/src/mame/video/phoenix.cpp
@@ -1,4 +1,4 @@
-// license:???
+// license:BSD-3-Clause
// copyright-holders:Richard Davies
/***************************************************************************
diff --git a/src/mame/video/polyplay.cpp b/src/mame/video/polyplay.cpp
index b4617cce71b..5e83eb773eb 100644
--- a/src/mame/video/polyplay.cpp
+++ b/src/mame/video/polyplay.cpp
@@ -1,4 +1,4 @@
-// license:???
+// license:BSD-3-Clause
// copyright-holders:Martin Buchholz
/***************************************************************************
diff --git a/src/mame/video/popeye.cpp b/src/mame/video/popeye.cpp
index d057139fbcb..bbb0c6ed705 100644
--- a/src/mame/video/popeye.cpp
+++ b/src/mame/video/popeye.cpp
@@ -1,5 +1,6 @@
-// license:???
-// copyright-holders:Marc Lafontaine, Couriersud
+// license:BSD-3-Clause
+// copyright-holders:Nicola Salmoria, Couriersud
+// thanks-to: Marc Lafontaine
/***************************************************************************
video.c
diff --git a/src/mame/video/psychic5.cpp b/src/mame/video/psychic5.cpp
index f1309597a4d..d4e070e8df3 100644
--- a/src/mame/video/psychic5.cpp
+++ b/src/mame/video/psychic5.cpp
@@ -236,6 +236,8 @@ void psychic5_state::draw_sprites(bitmap_rgb32 &bitmap, const rectangle &cliprec
for (int offs = 0; offs < m_spriteram.bytes(); offs += 16)
{
int attr = m_spriteram[offs + 13];
+ if(attr & 2) // Bombs Away: disable sprite if enabled
+ continue;
int code = m_spriteram[offs + 14] | ((attr & 0xc0) << 2);
int color = m_spriteram[offs + 15] & 0x0f;
int flipx = attr & 0x10;
diff --git a/src/mame/video/qix.cpp b/src/mame/video/qix.cpp
index a42fd44fc4e..779a7a5932b 100644
--- a/src/mame/video/qix.cpp
+++ b/src/mame/video/qix.cpp
@@ -1,11 +1,10 @@
-// license:???
-// copyright-holders:John Butler, Ed Mueller, Aaron Giles
+// license:BSD-3-Clause
+// copyright-holders:Aaron Giles, Zsolt Vasvari
+// thanks-to: John Butler, Ed Mueller
/***************************************************************************
Taito Qix hardware
- driver by John Butler, Ed Mueller, Aaron Giles
-
***************************************************************************/
#include "emu.h"
diff --git a/src/mame/video/rastan.cpp b/src/mame/video/rastan.cpp
index 9c4438579f8..b1af0d981d3 100644
--- a/src/mame/video/rastan.cpp
+++ b/src/mame/video/rastan.cpp
@@ -1,4 +1,4 @@
-// license:???
+// license:GPL-2.0+
// copyright-holders:Jarek Burczynski
/***************************************************************************
Functions to emulate video hardware on these Taito games:
diff --git a/src/mame/video/rdptpipe.cpp b/src/mame/video/rdptpipe.cpp
index 17182c97dab..b8371c0c0d7 100644
--- a/src/mame/video/rdptpipe.cpp
+++ b/src/mame/video/rdptpipe.cpp
@@ -25,7 +25,7 @@ void n64_texture_pipe_t::set_machine(running_machine &machine)
{
n64_state* state = machine.driver_data<n64_state>();
- m_rdp = state->m_rdp;
+ m_rdp = state->rdp();
for(INT32 i = 0; i < 0x10000; i++)
{
diff --git a/src/mame/video/relief.cpp b/src/mame/video/relief.cpp
index 3b0b0047177..01b9d16312e 100644
--- a/src/mame/video/relief.cpp
+++ b/src/mame/video/relief.cpp
@@ -96,17 +96,17 @@ VIDEO_START_MEMBER(relief_state,relief)
UINT32 relief_state::screen_update_relief(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect)
{
// start drawing
- m_vad->mob()->draw_async(cliprect);
+ m_vad->mob().draw_async(cliprect);
/* draw the playfield */
bitmap_ind8 &priority_bitmap = screen.priority();
priority_bitmap.fill(0, cliprect);
- m_vad->playfield()->draw(screen, bitmap, cliprect, 0, 0);
- m_vad->playfield2()->draw(screen, bitmap, cliprect, 0, 1);
+ m_vad->playfield().draw(screen, bitmap, cliprect, 0, 0);
+ m_vad->playfield2().draw(screen, bitmap, cliprect, 0, 1);
// draw and merge the MO
- bitmap_ind16 &mobitmap = m_vad->mob()->bitmap();
- for (const sparse_dirty_rect *rect = m_vad->mob()->first_dirty_rect(cliprect); rect != nullptr; rect = rect->next())
+ bitmap_ind16 &mobitmap = m_vad->mob().bitmap();
+ for (const sparse_dirty_rect *rect = m_vad->mob().first_dirty_rect(cliprect); rect != nullptr; rect = rect->next())
for (int y = rect->min_y; y <= rect->max_y; y++)
{
UINT16 *mo = &mobitmap.pix16(y);
diff --git a/src/mame/video/sega16sp.cpp b/src/mame/video/sega16sp.cpp
index 4b7e19a1c81..3629072e2e5 100644
--- a/src/mame/video/sega16sp.cpp
+++ b/src/mame/video/sega16sp.cpp
@@ -826,6 +826,7 @@ void bootleg_sys16a_sprite_device::draw(bitmap_ind16 &bitmap, const rectangle &c
sega_sys16b_sprite_device::sega_sys16b_sprite_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock)
: sega_16bit_sprite_device(mconfig, SEGA_SYS16B_SPRITES, "Sega System 16B Sprites", tag, owner, "sega_16bit_sprite", __FILE__)
+ , m_sprite_region_ptr(*this, ":sprites")
{
set_local_origin(184, 0x00, -184, 0);
}
@@ -868,8 +869,8 @@ void sega_sys16b_sprite_device::draw(bitmap_ind16 &bitmap, const rectangle &clip
//
// render the sprites in order
- const UINT16 *spritebase = reinterpret_cast<const UINT16 *>(region()->base());
- UINT8 numbanks = region()->bytes() / 0x20000;
+ const UINT16 *spritebase = &m_sprite_region_ptr[0];
+ UINT8 numbanks = m_sprite_region_ptr.bytes() / 0x20000;
UINT16 *ramend = spriteram() + spriteram_elements();
for (UINT16 *data = spriteram(); data < ramend; data += 8)
{
diff --git a/src/mame/video/sega16sp.h b/src/mame/video/sega16sp.h
index f0b99714bf8..f3b462f788a 100644
--- a/src/mame/video/sega16sp.h
+++ b/src/mame/video/sega16sp.h
@@ -201,6 +201,9 @@ public:
protected:
// subclass overrides
virtual void draw(bitmap_ind16 &bitmap, const rectangle &cliprect) override;
+
+ // memory regions
+ required_region_ptr<UINT16> m_sprite_region_ptr;
};
diff --git a/src/mame/video/segas16b.cpp b/src/mame/video/segas16b.cpp
index c37188cfdad..ab69cbef1f7 100644
--- a/src/mame/video/segas16b.cpp
+++ b/src/mame/video/segas16b.cpp
@@ -36,7 +36,8 @@ UINT32 segas16b_state::screen_update(screen_device &screen, bitmap_ind16 &bitmap
}
// start the sprites drawing
- m_sprites->draw_async(cliprect);
+ if (m_sprites.found())
+ m_sprites->draw_async(cliprect);
// reset priorities
screen.priority().fill(0, cliprect);
@@ -59,6 +60,7 @@ UINT32 segas16b_state::screen_update(screen_device &screen, bitmap_ind16 &bitmap
m_segaic16vid->tilemap_draw( screen, bitmap, cliprect, 0, SEGAIC16_TILEMAP_TEXT, 1, 0x08);
// mix in sprites
+ if (!m_sprites.found()) return 0;
bitmap_ind16 &sprites = m_sprites->bitmap();
for (const sparse_dirty_rect *rect = m_sprites->first_dirty_rect(cliprect); rect != nullptr; rect = rect->next())
for (int y = rect->min_y; y <= rect->max_y; y++)
diff --git a/src/mame/video/seibuspi.cpp b/src/mame/video/seibuspi.cpp
index cb267167789..42e683c70b2 100644
--- a/src/mame/video/seibuspi.cpp
+++ b/src/mame/video/seibuspi.cpp
@@ -111,7 +111,7 @@ WRITE32_MEMBER(seibuspi_state::tilemap_dma_start_w)
int dma_length_real = (m_video_dma_length + 1) * 2; // ideally we should be using this, let's check if we have to:
if (m_video_dma_length != 0 && dma_length_user != dma_length_real)
popmessage("Tile LEN %X %X, contact MAMEdev", dma_length_user, dma_length_real); // shouldn't happen
- else if ((m_video_dma_address & 3) != 0 || (m_video_dma_length & 3) != 3 || (m_video_dma_address + dma_length_user) > 0x40000)
+ else if (!DWORD_ALIGNED(m_video_dma_address) || (m_video_dma_length & 3) != 3 || (m_video_dma_address + dma_length_user) > 0x40000)
popmessage("Tile DMA %X %X, contact MAMEdev", m_video_dma_address, m_video_dma_length); // shouldn't happen
if (m_video_dma_address < 0x800)
logerror("tilemap_dma_start_w in I/O area: %X\n", m_video_dma_address);
@@ -198,7 +198,7 @@ WRITE32_MEMBER(seibuspi_state::palette_dma_start_w)
int dma_length = (m_video_dma_length + 1) * 2;
// safety check
- if ((m_video_dma_address & 3) != 0 || (m_video_dma_length & 3) != 3 || dma_length > m_palette_ram_size || (m_video_dma_address + dma_length) > 0x40000)
+ if (!DWORD_ALIGNED(m_video_dma_address) || (m_video_dma_length & 3) != 3 || dma_length > m_palette_ram_size || (m_video_dma_address + dma_length) > 0x40000)
popmessage("Pal DMA %X %X, contact MAMEdev", m_video_dma_address, m_video_dma_length); // shouldn't happen
if (m_video_dma_address < 0x800)
logerror("palette_dma_start_w in I/O area: %X\n", m_video_dma_address);
@@ -219,7 +219,7 @@ WRITE32_MEMBER(seibuspi_state::palette_dma_start_w)
WRITE16_MEMBER(seibuspi_state::sprite_dma_start_w)
{
// safety check
- if ((m_video_dma_address & 3) != 0 || (m_video_dma_address + m_sprite_ram_size) > 0x40000)
+ if (!DWORD_ALIGNED(m_video_dma_address) || (m_video_dma_address + m_sprite_ram_size) > 0x40000)
popmessage("Sprite DMA %X, contact MAMEdev", m_video_dma_address); // shouldn't happen
if (m_video_dma_address < 0x800)
logerror("sprite_dma_start_w in I/O area: %X\n", m_video_dma_address);
diff --git a/src/mame/video/seta.cpp b/src/mame/video/seta.cpp
index 222129ea6eb..8fd54378c0f 100644
--- a/src/mame/video/seta.cpp
+++ b/src/mame/video/seta.cpp
@@ -295,6 +295,9 @@ WRITE16_MEMBER(seta_state::seta_vregs_w)
if (new_bank != m_samples_bank)
{
+ if (memregion("x1snd") == nullptr) // triplfun no longer has the hardware, but still writes here
+ break;
+
UINT8 *rom = memregion("x1snd")->base();
int samples_len = memregion("x1snd")->bytes();
int addr;
diff --git a/src/mame/video/shuuz.cpp b/src/mame/video/shuuz.cpp
index b8ff46f6ab2..d8d1fcc30c4 100644
--- a/src/mame/video/shuuz.cpp
+++ b/src/mame/video/shuuz.cpp
@@ -78,14 +78,14 @@ const atari_motion_objects_config shuuz_state::s_mob_config =
UINT32 shuuz_state::screen_update(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect)
{
// start drawing
- m_vad->mob()->draw_async(cliprect);
+ m_vad->mob().draw_async(cliprect);
/* draw the playfield */
- m_vad->playfield()->draw(screen, bitmap, cliprect, 0, 0);
+ m_vad->playfield().draw(screen, bitmap, cliprect, 0, 0);
// draw and merge the MO
- bitmap_ind16 &mobitmap = m_vad->mob()->bitmap();
- for (const sparse_dirty_rect *rect = m_vad->mob()->first_dirty_rect(cliprect); rect != nullptr; rect = rect->next())
+ bitmap_ind16 &mobitmap = m_vad->mob().bitmap();
+ for (const sparse_dirty_rect *rect = m_vad->mob().first_dirty_rect(cliprect); rect != nullptr; rect = rect->next())
for (int y = rect->min_y; y <= rect->max_y; y++)
{
UINT16 *mo = &mobitmap.pix16(y);
diff --git a/src/mame/video/snk.cpp b/src/mame/video/snk.cpp
index 19bcf967fda..3749233adcb 100644
--- a/src/mame/video/snk.cpp
+++ b/src/mame/video/snk.cpp
@@ -930,6 +930,19 @@ UINT32 snk_state::screen_update_tnk3(screen_device &screen, bitmap_ind16 &bitmap
return 0;
}
+UINT32 snk_state::screen_update_fitegolf2(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect)
+{
+ m_bg_tilemap->set_scrollx(0, m_bg_scrollx);
+ m_bg_tilemap->set_scrolly(0, m_bg_scrolly);
+
+ m_bg_tilemap->draw(screen, bitmap, cliprect, 0, 0);
+ tnk3_draw_sprites(bitmap, cliprect, m_sp16_scrollx+1, m_sp16_scrolly); // needs an extra offset?? neither this or fitegolf actually write to sprite offset registers tho?
+ m_tx_tilemap->draw(screen, bitmap, cliprect, 0, 0);
+
+ return 0;
+}
+
+
UINT32 snk_state::screen_update_ikari(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect)
{
diff --git a/src/mame/video/st0020.cpp b/src/mame/video/st0020.cpp
index 8d61d56d56f..bb0bb01da1b 100644
--- a/src/mame/video/st0020.cpp
+++ b/src/mame/video/st0020.cpp
@@ -16,9 +16,9 @@
const device_type ST0020_SPRITES = &device_creator<st0020_device>;
st0020_device::st0020_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock)
- : device_t(mconfig, ST0020_SPRITES, "Seta ST0020 Sprites", tag, owner, clock, "st0020", __FILE__),
- m_gfxdecode(*this),
- m_palette(*this)
+ : device_t(mconfig, ST0020_SPRITES, "Seta ST0020 Sprites", tag, owner, clock, "st0020", __FILE__)
+ , m_gfxdecode(*this)
+ , m_palette(*this)
{
m_is_st0032 = 0;
m_is_jclub2 = 0;
@@ -73,6 +73,19 @@ static const gfx_layout layout_16x8x8_2 =
void st0020_device::device_start()
{
+ memory_region* rgn = memregion(tag());
+
+ if (rgn)
+ {
+ m_rom_ptr = rgn->base();
+ m_rom_size = rgn->bytes();
+ }
+ else
+ {
+ m_rom_ptr = nullptr;
+ m_rom_size = 0;
+ }
+
m_st0020_gfxram = make_unique_clear<UINT16[]>(4 * 0x100000 / 2);
m_st0020_spriteram = make_unique_clear<UINT16[]>(0x80000 / 2);
m_st0020_blitram = make_unique_clear<UINT16[]>(0x100 / 2);
@@ -183,20 +196,17 @@ WRITE16_MEMBER(st0020_device::st0020_blit_w)
UINT32 dst = (st0020_blitram[0xc4/2] + (st0020_blitram[0xc6/2] << 16)) << 4;
UINT32 len = (st0020_blitram[0xc8/2]) << 4;
- UINT8 *rom = memregion(":st0020")->base();
-
-
- if (!rom)
+ if (!m_rom_ptr)
{
logerror("CPU #0 PC: %06X - Blit out of range: src %x, dst %x, len %x\n",space.device().safe_pc(),src,dst,len);
return;
}
- size_t size = memregion(":st0020")->bytes();
+ size_t size = m_rom_size;
if ( (src+len <= size) && (dst+len <= 4 * 0x100000) )
{
- memcpy( &m_st0020_gfxram[dst/2], &rom[src], len );
+ memcpy( &m_st0020_gfxram[dst/2], &m_rom_ptr[src], len );
if (len % (16*8)) len = len / (16*8) + 1;
else len = len / (16*8);
diff --git a/src/mame/video/st0020.h b/src/mame/video/st0020.h
index 0282acd7699..33390a8bddc 100644
--- a/src/mame/video/st0020.h
+++ b/src/mame/video/st0020.h
@@ -47,6 +47,8 @@ private:
DECLARE_WRITE16_MEMBER(st0020_blit_w);
required_device<gfxdecode_device> m_gfxdecode;
required_device<palette_device> m_palette;
+ UINT8* m_rom_ptr;
+ size_t m_rom_size;
};
#define ST0020_ST0032_BYTESWAP_DATA \
diff --git a/src/mame/video/taito_b.cpp b/src/mame/video/taito_b.cpp
index 141331eccf2..cb96cbdb3ec 100644
--- a/src/mame/video/taito_b.cpp
+++ b/src/mame/video/taito_b.cpp
@@ -1,4 +1,4 @@
-// license:???
+// license:GPL-2.0+
// copyright-holders:Jarek Burczynski
#include "emu.h"
#include "includes/taito_b.h"
diff --git a/src/mame/video/tankbust.cpp b/src/mame/video/tankbust.cpp
index c1a73bca85c..6bf815907e5 100644
--- a/src/mame/video/tankbust.cpp
+++ b/src/mame/video/tankbust.cpp
@@ -1,4 +1,4 @@
-// license:???
+// license:GPL-2.0+
// copyright-holders:Jarek Burczynski
/*
* Video Driver for Tank Busters
diff --git a/src/mame/video/tecmo_mix.cpp b/src/mame/video/tecmo_mix.cpp
index 7e1a4414fa5..6c91837a2b9 100644
--- a/src/mame/video/tecmo_mix.cpp
+++ b/src/mame/video/tecmo_mix.cpp
@@ -90,13 +90,13 @@ void tecmo_mix_device::set_bgpen(device_t &device, int bgpen)
}
-void tecmo_mix_device::mix_bitmaps(screen_device &screen, bitmap_rgb32 &bitmap, const rectangle &cliprect, palette_device* palette, bitmap_ind16* bitmap_bg, bitmap_ind16* bitmap_fg, bitmap_ind16* bitmap_tx, bitmap_ind16* bitmap_sp)
+void tecmo_mix_device::mix_bitmaps(screen_device &screen, bitmap_rgb32 &bitmap, const rectangle &cliprect, palette_device &palette, bitmap_ind16* bitmap_bg, bitmap_ind16* bitmap_fg, bitmap_ind16* bitmap_tx, bitmap_ind16* bitmap_sp)
{
//int frame = (screen.frame_number()) & 1;
// note this game has no tx layer, comments relate to other drivers
int y, x;
- const pen_t *paldata = palette->pens();
+ const pen_t *paldata = palette.pens();
for (y = cliprect.min_y; y <= cliprect.max_y; y++)
{
diff --git a/src/mame/video/tecmo_mix.h b/src/mame/video/tecmo_mix.h
index 21ac7b83bf6..1169a795560 100644
--- a/src/mame/video/tecmo_mix.h
+++ b/src/mame/video/tecmo_mix.h
@@ -10,7 +10,7 @@ class tecmo_mix_device : public device_t,
public:
tecmo_mix_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock);
- void mix_bitmaps(screen_device &screen, bitmap_rgb32 &bitmap, const rectangle &cliprect, palette_device* palette, bitmap_ind16* bitmap_bg, bitmap_ind16* bitmap_fg, bitmap_ind16* bitmap_tx, bitmap_ind16* bitmap_sp);
+ void mix_bitmaps(screen_device &screen, bitmap_rgb32 &bitmap, const rectangle &cliprect, palette_device &palette, bitmap_ind16* bitmap_bg, bitmap_ind16* bitmap_fg, bitmap_ind16* bitmap_tx, bitmap_ind16* bitmap_sp);
static void set_mixer_shifts(device_t &device, int sprpri_shift, int sprbln_shift, int sprcol_shift);
static void set_blendcols(device_t &device, int bgblend_comp, int fgblend_comp, int txblend_comp, int spblend_comp);
static void set_regularcols(device_t &device, int bgregular_comp, int fgregular_comp, int txregular_comp, int spregular_comp);
diff --git a/src/mame/video/thunderj.cpp b/src/mame/video/thunderj.cpp
index 34cb3485248..e54e7f6e2f0 100644
--- a/src/mame/video/thunderj.cpp
+++ b/src/mame/video/thunderj.cpp
@@ -106,23 +106,23 @@ VIDEO_START_MEMBER(thunderj_state,thunderj)
UINT32 thunderj_state::screen_update_thunderj(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect)
{
// start drawing
- m_vad->mob()->draw_async(cliprect);
+ m_vad->mob().draw_async(cliprect);
/* draw the playfield */
bitmap_ind8 &priority_bitmap = screen.priority();
priority_bitmap.fill(0, cliprect);
- m_vad->playfield()->draw(screen, bitmap, cliprect, 0, 0x00);
- m_vad->playfield()->draw(screen, bitmap, cliprect, 1, 0x01);
- m_vad->playfield()->draw(screen, bitmap, cliprect, 2, 0x02);
- m_vad->playfield()->draw(screen, bitmap, cliprect, 3, 0x03);
- m_vad->playfield2()->draw(screen, bitmap, cliprect, 0, 0x80);
- m_vad->playfield2()->draw(screen, bitmap, cliprect, 1, 0x84);
- m_vad->playfield2()->draw(screen, bitmap, cliprect, 2, 0x88);
- m_vad->playfield2()->draw(screen, bitmap, cliprect, 3, 0x8c);
+ m_vad->playfield().draw(screen, bitmap, cliprect, 0, 0x00);
+ m_vad->playfield().draw(screen, bitmap, cliprect, 1, 0x01);
+ m_vad->playfield().draw(screen, bitmap, cliprect, 2, 0x02);
+ m_vad->playfield().draw(screen, bitmap, cliprect, 3, 0x03);
+ m_vad->playfield2().draw(screen, bitmap, cliprect, 0, 0x80);
+ m_vad->playfield2().draw(screen, bitmap, cliprect, 1, 0x84);
+ m_vad->playfield2().draw(screen, bitmap, cliprect, 2, 0x88);
+ m_vad->playfield2().draw(screen, bitmap, cliprect, 3, 0x8c);
// draw and merge the MO
- bitmap_ind16 &mobitmap = m_vad->mob()->bitmap();
- for (const sparse_dirty_rect *rect = m_vad->mob()->first_dirty_rect(cliprect); rect != nullptr; rect = rect->next())
+ bitmap_ind16 &mobitmap = m_vad->mob().bitmap();
+ for (const sparse_dirty_rect *rect = m_vad->mob().first_dirty_rect(cliprect); rect != nullptr; rect = rect->next())
for (int y = rect->min_y; y <= rect->max_y; y++)
{
UINT16 *mo = &mobitmap.pix16(y);
@@ -217,10 +217,10 @@ UINT32 thunderj_state::screen_update_thunderj(screen_device &screen, bitmap_ind1
}
/* add the alpha on top */
- m_vad->alpha()->draw(screen, bitmap, cliprect, 0, 0);
+ m_vad->alpha().draw(screen, bitmap, cliprect, 0, 0);
/* now go back and process the upper bit of MO priority */
- for (const sparse_dirty_rect *rect = m_vad->mob()->first_dirty_rect(cliprect); rect != nullptr; rect = rect->next())
+ for (const sparse_dirty_rect *rect = m_vad->mob().first_dirty_rect(cliprect); rect != nullptr; rect = rect->next())
for (int y = rect->min_y; y <= rect->max_y; y++)
{
UINT16 *mo = &mobitmap.pix16(y);
@@ -235,7 +235,7 @@ UINT32 thunderj_state::screen_update_thunderj(screen_device &screen, bitmap_ind1
{
/* if bit 2 is set, start setting high palette bits */
if (mo[x] & 2)
- m_vad->mob()->apply_stain(bitmap, pf, mo, x, y);
+ m_vad->mob().apply_stain(bitmap, pf, mo, x, y);
}
}
}
diff --git a/src/mame/video/timeplt.cpp b/src/mame/video/timeplt.cpp
index afd493a8b92..b418ab7c4fc 100644
--- a/src/mame/video/timeplt.cpp
+++ b/src/mame/video/timeplt.cpp
@@ -139,6 +139,9 @@ VIDEO_START_MEMBER(timeplt_state,psurge)
VIDEO_START_MEMBER(timeplt_state,chkun)
{
m_bg_tilemap = &machine().tilemap().create(m_gfxdecode, tilemap_get_info_delegate(FUNC(timeplt_state::get_chkun_tile_info),this), TILEMAP_SCAN_ROWS, 8, 8, 32, 32);
+ m_video_enable = 0;
+
+ save_item(NAME(m_video_enable));
}
diff --git a/src/mame/video/toaplan_scu.cpp b/src/mame/video/toaplan_scu.cpp
index 0fe17964308..dffa1d6b342 100644
--- a/src/mame/video/toaplan_scu.cpp
+++ b/src/mame/video/toaplan_scu.cpp
@@ -85,7 +85,7 @@ void toaplan_scu_device::draw_sprites_to_tempbitmap(const rectangle &cliprect, U
if (flipx) sx -= m_xoffs_flipped;
flipy = attribute & 0x200;
- m_gfx[0]->transpen_raw(m_temp_spritebitmap,cliprect,
+ gfx(0)->transpen_raw(m_temp_spritebitmap,cliprect,
sprite,
color << 4 /* << 4 because using _raw */ ,
flipx,flipy,
@@ -103,7 +103,7 @@ void toaplan_scu_device::draw_sprites_to_tempbitmap(const rectangle &cliprect, U
void toaplan_scu_device::copy_sprites_from_tempbitmap(bitmap_ind16 &bitmap, const rectangle &cliprect, int priority)
{
int y, x;
- int colourbase = m_gfx[0]->colorbase();
+ int colourbase = gfx(0)->colorbase();
for (y=cliprect.min_y;y<=cliprect.max_y;y++)
{
diff --git a/src/mame/video/tp84.cpp b/src/mame/video/tp84.cpp
index 852f845edf4..22a9bdd2ec3 100644
--- a/src/mame/video/tp84.cpp
+++ b/src/mame/video/tp84.cpp
@@ -1,5 +1,5 @@
-// license:???
-// copyright-holders:Marc Lafontaine
+// license:BSD-3-Clause
+// copyright-holders:Aaron Giles
/***************************************************************************
video.c
diff --git a/src/mame/video/tubep.cpp b/src/mame/video/tubep.cpp
index 95091136ee2..87404172aaf 100644
--- a/src/mame/video/tubep.cpp
+++ b/src/mame/video/tubep.cpp
@@ -1,4 +1,4 @@
-// license:???
+// license:GPL-2.0+
// copyright-holders:Jarek Burczynski
/***************************************************************************
diff --git a/src/mame/video/williams.cpp b/src/mame/video/williams.cpp
index 1cdd84fd823..68d182a2e94 100644
--- a/src/mame/video/williams.cpp
+++ b/src/mame/video/williams.cpp
@@ -1,5 +1,5 @@
-// license:???
-// copyright-holders:Michael Soderstrom, Marc LaFontaine, Aaron Giles
+// license:BSD-3-Clause
+// copyright-holders:Aaron Giles
/***************************************************************************
Williams 6809 system
diff --git a/src/osd/modules/debugger/debugint.cpp b/src/osd/modules/debugger/debugint.cpp
index 0f77f08f802..40a6e2a297b 100644
--- a/src/osd/modules/debugger/debugint.cpp
+++ b/src/osd/modules/debugger/debugint.cpp
@@ -1495,7 +1495,7 @@ static void handle_keys(running_machine &machine)
debug_cpu_get_visible_cpu(machine)->debug()->go();
}
}
-
+
if(machine.input().code_pressed_once(KEYCODE_F5))
debug_cpu_get_visible_cpu(machine)->debug()->go();
if(machine.input().code_pressed_once(KEYCODE_F6))
@@ -1556,7 +1556,7 @@ static void handle_keys(running_machine &machine)
set_focus_view(ndv);
}
- }
+ }
if(machine.input().code_pressed_once(KEYCODE_L))
{
if(machine.input().code_pressed(KEYCODE_LCONTROL))
@@ -1619,7 +1619,7 @@ static void handle_keys(running_machine &machine)
}
}
-
+
// pass keypresses to debug view with focus
if(machine.input().code_pressed_once(KEYCODE_UP))
focus_view->view->process_char(DCH_UP);
diff --git a/src/osd/modules/lib/osdobj_common.cpp b/src/osd/modules/lib/osdobj_common.cpp
index f6dc6aabdae..b36bbf60df3 100644
--- a/src/osd/modules/lib/osdobj_common.cpp
+++ b/src/osd/modules/lib/osdobj_common.cpp
@@ -185,6 +185,7 @@ void osd_common_t::register_options()
REGISTER_MODULE(m_mod_man, SOUND_COREAUDIO);
REGISTER_MODULE(m_mod_man, SOUND_JS);
REGISTER_MODULE(m_mod_man, SOUND_SDL);
+ REGISTER_MODULE(m_mod_man, SOUND_XAUDIO2);
REGISTER_MODULE(m_mod_man, SOUND_NONE);
#ifdef SDLMAME_MACOSX
diff --git a/src/osd/modules/render/d3d/d3dhlsl.cpp b/src/osd/modules/render/d3d/d3dhlsl.cpp
index 7dec152ba87..43d6ec9bc48 100644
--- a/src/osd/modules/render/d3d/d3dhlsl.cpp
+++ b/src/osd/modules/render/d3d/d3dhlsl.cpp
@@ -76,7 +76,7 @@ shaders::shaders() :
vecbuf_type(), vecbuf_index(0), vecbuf_count(0), avi_output_file(NULL), avi_frame(0), avi_copy_surface(NULL), avi_copy_texture(NULL), avi_final_target(NULL), avi_final_texture(NULL),
black_surface(NULL), black_texture(NULL), render_snap(false), snap_rendered(false), snap_copy_target(NULL), snap_copy_texture(NULL), snap_target(NULL), snap_texture(NULL),
snap_width(0), snap_height(0), lines_pending(false), backbuffer(NULL), curr_effect(NULL), default_effect(NULL), prescale_effect(NULL), post_effect(NULL), distortion_effect(NULL),
- focus_effect(NULL), phosphor_effect(NULL), deconverge_effect(NULL), color_effect(NULL), yiq_encode_effect(NULL), yiq_decode_effect(NULL), bloom_effect(NULL),
+ focus_effect(NULL), phosphor_effect(NULL), deconverge_effect(NULL), color_effect(NULL), ntsc_effect(NULL), bloom_effect(NULL),
downsample_effect(NULL), vector_effect(NULL), fsfx_vertices(NULL), curr_texture(NULL), curr_render_target(NULL), curr_poly(NULL)
{
master_enable = false;
@@ -632,7 +632,7 @@ void shaders::set_texture(texture_info *texture)
default_effect->set_texture("Diffuse", (texture == NULL) ? default_texture->get_finaltex() : texture->get_finaltex());
if (options->yiq_enable)
{
- yiq_encode_effect->set_texture("Diffuse", (texture == NULL) ? default_texture->get_finaltex() : texture->get_finaltex());
+ ntsc_effect->set_texture("Diffuse", (texture == NULL) ? default_texture->get_finaltex() : texture->get_finaltex());
}
else
{
@@ -706,7 +706,8 @@ void shaders::init(base *d3dintf, running_machine *machine, d3d::renderer *rende
options->scanline_height = winoptions.screen_scanline_height();
options->scanline_bright_scale = winoptions.screen_scanline_bright_scale();
options->scanline_bright_offset = winoptions.screen_scanline_bright_offset();
- options->scanline_offset = winoptions.screen_scanline_offset();
+ options->scanline_jitter = winoptions.screen_scanline_jitter();
+ options->hum_bar_alpha = winoptions.screen_hum_bar_alpha();
get_vector(winoptions.screen_defocus(), 2, options->defocus, TRUE);
get_vector(winoptions.screen_converge_x(), 3, options->converge_x, TRUE);
get_vector(winoptions.screen_converge_y(), 3, options->converge_y, TRUE);
@@ -722,6 +723,7 @@ void shaders::init(base *d3dintf, running_machine *machine, d3d::renderer *rende
get_vector(winoptions.screen_phosphor(), 3, options->phosphor, TRUE);
options->saturation = winoptions.screen_saturation();
options->yiq_enable = winoptions.screen_yiq_enable();
+ options->yiq_jitter = winoptions.screen_yiq_jitter();
options->yiq_cc = winoptions.screen_yiq_cc();
options->yiq_a = winoptions.screen_yiq_a();
options->yiq_b = winoptions.screen_yiq_b();
@@ -917,8 +919,7 @@ int shaders::create_resources(bool reset)
focus_effect = new effect(this, d3d->get_device(), "focus.fx", fx_dir);
deconverge_effect = new effect(this, d3d->get_device(), "deconverge.fx", fx_dir);
color_effect = new effect(this, d3d->get_device(), "color.fx", fx_dir);
- yiq_encode_effect = new effect(this, d3d->get_device(), "yiq_encode.fx", fx_dir);
- yiq_decode_effect = new effect(this, d3d->get_device(), "yiq_decode.fx", fx_dir);
+ ntsc_effect = new effect(this, d3d->get_device(), "ntsc.fx", fx_dir);
bloom_effect = new effect(this, d3d->get_device(), "bloom.fx", fx_dir);
downsample_effect = new effect(this, d3d->get_device(), "downsample.fx", fx_dir);
vector_effect = new effect(this, d3d->get_device(), "vector.fx", fx_dir);
@@ -931,8 +932,7 @@ int shaders::create_resources(bool reset)
!focus_effect->is_valid() ||
!deconverge_effect->is_valid() ||
!color_effect->is_valid() ||
- !yiq_encode_effect->is_valid() ||
- !yiq_decode_effect->is_valid() ||
+ !ntsc_effect->is_valid() ||
!bloom_effect->is_valid() ||
!downsample_effect->is_valid() ||
!vector_effect->is_valid())
@@ -940,35 +940,42 @@ int shaders::create_resources(bool reset)
return 1;
}
- yiq_encode_effect->add_uniform("ScreenDims", uniform::UT_VEC2, uniform::CU_SCREEN_DIMS);
- yiq_encode_effect->add_uniform("SourceDims", uniform::UT_VEC2, uniform::CU_SOURCE_DIMS);
- yiq_encode_effect->add_uniform("SourceRect", uniform::UT_VEC2, uniform::CU_SOURCE_RECT);
- yiq_encode_effect->add_uniform("CCValue", uniform::UT_FLOAT, uniform::CU_NTSC_CCFREQ);
- yiq_encode_effect->add_uniform("AValue", uniform::UT_FLOAT, uniform::CU_NTSC_A);
- yiq_encode_effect->add_uniform("BValue", uniform::UT_FLOAT, uniform::CU_NTSC_B);
- yiq_encode_effect->add_uniform("PValue", uniform::UT_FLOAT, uniform::CU_NTSC_P);
- yiq_encode_effect->add_uniform("NotchHalfWidth", uniform::UT_FLOAT, uniform::CU_NTSC_NOTCH);
- yiq_encode_effect->add_uniform("YFreqResponse", uniform::UT_FLOAT, uniform::CU_NTSC_YFREQ);
- yiq_encode_effect->add_uniform("IFreqResponse", uniform::UT_FLOAT, uniform::CU_NTSC_IFREQ);
- yiq_encode_effect->add_uniform("QFreqResponse", uniform::UT_FLOAT, uniform::CU_NTSC_QFREQ);
- yiq_encode_effect->add_uniform("ScanTime", uniform::UT_FLOAT, uniform::CU_NTSC_HTIME);
-
- yiq_decode_effect->add_uniform("ScreenDims", uniform::UT_VEC2, uniform::CU_SCREEN_DIMS);
- yiq_decode_effect->add_uniform("SourceDims", uniform::UT_VEC2, uniform::CU_SOURCE_DIMS);
- yiq_decode_effect->add_uniform("SourceRect", uniform::UT_VEC2, uniform::CU_SOURCE_RECT);
- yiq_decode_effect->add_uniform("CCValue", uniform::UT_FLOAT, uniform::CU_NTSC_CCFREQ);
- yiq_decode_effect->add_uniform("AValue", uniform::UT_FLOAT, uniform::CU_NTSC_A);
- yiq_decode_effect->add_uniform("BValue", uniform::UT_FLOAT, uniform::CU_NTSC_B);
- yiq_decode_effect->add_uniform("OValue", uniform::UT_FLOAT, uniform::CU_NTSC_O);
- yiq_decode_effect->add_uniform("PValue", uniform::UT_FLOAT, uniform::CU_NTSC_P);
- yiq_decode_effect->add_uniform("NotchHalfWidth", uniform::UT_FLOAT, uniform::CU_NTSC_NOTCH);
- yiq_decode_effect->add_uniform("YFreqResponse", uniform::UT_FLOAT, uniform::CU_NTSC_YFREQ);
- yiq_decode_effect->add_uniform("IFreqResponse", uniform::UT_FLOAT, uniform::CU_NTSC_IFREQ);
- yiq_decode_effect->add_uniform("QFreqResponse", uniform::UT_FLOAT, uniform::CU_NTSC_QFREQ);
- yiq_decode_effect->add_uniform("ScanTime", uniform::UT_FLOAT, uniform::CU_NTSC_HTIME);
-
- color_effect->add_uniform("ScreenDims", uniform::UT_VEC2, uniform::CU_SCREEN_DIMS);
- color_effect->add_uniform("SourceDims", uniform::UT_VEC2, uniform::CU_SOURCE_DIMS);
+ effect *effects[13] = {
+ default_effect,
+ post_effect,
+ distortion_effect,
+ prescale_effect,
+ phosphor_effect,
+ focus_effect,
+ deconverge_effect,
+ color_effect,
+ ntsc_effect,
+ color_effect,
+ bloom_effect,
+ downsample_effect,
+ vector_effect
+ };
+
+ for (int i = 0; i < 13; i++)
+ {
+ effects[i]->add_uniform("SourceDims", uniform::UT_VEC2, uniform::CU_SOURCE_DIMS);
+ effects[i]->add_uniform("SourceRect", uniform::UT_VEC2, uniform::CU_SOURCE_RECT);
+ effects[i]->add_uniform("TargetDims", uniform::UT_VEC2, uniform::CU_TARGET_DIMS);
+ effects[i]->add_uniform("ScreenDims", uniform::UT_VEC2, uniform::CU_SCREEN_DIMS);
+ effects[i]->add_uniform("QuadDims", uniform::UT_VEC2, uniform::CU_QUAD_DIMS);
+ effects[i]->add_uniform("SwapXY", uniform::UT_BOOL, uniform::CU_SWAP_XY);
+ }
+
+ ntsc_effect->add_uniform("CCValue", uniform::UT_FLOAT, uniform::CU_NTSC_CCFREQ);
+ ntsc_effect->add_uniform("AValue", uniform::UT_FLOAT, uniform::CU_NTSC_A);
+ ntsc_effect->add_uniform("BValue", uniform::UT_FLOAT, uniform::CU_NTSC_B);
+ ntsc_effect->add_uniform("OValue", uniform::UT_FLOAT, uniform::CU_NTSC_O);
+ ntsc_effect->add_uniform("PValue", uniform::UT_FLOAT, uniform::CU_NTSC_P);
+ ntsc_effect->add_uniform("NotchHalfWidth", uniform::UT_FLOAT, uniform::CU_NTSC_NOTCH);
+ ntsc_effect->add_uniform("YFreqResponse", uniform::UT_FLOAT, uniform::CU_NTSC_YFREQ);
+ ntsc_effect->add_uniform("IFreqResponse", uniform::UT_FLOAT, uniform::CU_NTSC_IFREQ);
+ ntsc_effect->add_uniform("QFreqResponse", uniform::UT_FLOAT, uniform::CU_NTSC_QFREQ);
+ ntsc_effect->add_uniform("ScanTime", uniform::UT_FLOAT, uniform::CU_NTSC_HTIME);
color_effect->add_uniform("RedRatios", uniform::UT_VEC3, uniform::CU_COLOR_RED_RATIOS);
color_effect->add_uniform("GrnRatios", uniform::UT_VEC3, uniform::CU_COLOR_GRN_RATIOS);
@@ -977,39 +984,15 @@ int shaders::create_resources(bool reset)
color_effect->add_uniform("Scale", uniform::UT_VEC3, uniform::CU_COLOR_SCALE);
color_effect->add_uniform("Saturation", uniform::UT_FLOAT, uniform::CU_COLOR_SATURATION);
- prescale_effect->add_uniform("ScreenDims", uniform::UT_VEC2, uniform::CU_SCREEN_DIMS);
-
- deconverge_effect->add_uniform("ScreenDims", uniform::UT_VEC2, uniform::CU_SCREEN_DIMS);
- deconverge_effect->add_uniform("SourceDims", uniform::UT_VEC2, uniform::CU_SOURCE_DIMS);
- deconverge_effect->add_uniform("SourceRect", uniform::UT_VEC2, uniform::CU_SOURCE_RECT);
deconverge_effect->add_uniform("ConvergeX", uniform::UT_VEC3, uniform::CU_CONVERGE_LINEAR_X);
deconverge_effect->add_uniform("ConvergeY", uniform::UT_VEC3, uniform::CU_CONVERGE_LINEAR_Y);
deconverge_effect->add_uniform("RadialConvergeX", uniform::UT_VEC3, uniform::CU_CONVERGE_RADIAL_X);
deconverge_effect->add_uniform("RadialConvergeY", uniform::UT_VEC3, uniform::CU_CONVERGE_RADIAL_Y);
- focus_effect->add_uniform("ScreenDims", uniform::UT_VEC2, uniform::CU_SCREEN_DIMS);
- focus_effect->add_uniform("TargetDims", uniform::UT_VEC2, uniform::CU_TARGET_DIMS);
- focus_effect->add_uniform("SourceRect", uniform::UT_VEC2, uniform::CU_SOURCE_RECT);
- focus_effect->add_uniform("QuadDims", uniform::UT_VEC2, uniform::CU_QUAD_DIMS);
focus_effect->add_uniform("Defocus", uniform::UT_VEC2, uniform::CU_FOCUS_SIZE);
- focus_effect->add_uniform("OrientationSwapXY", uniform::UT_BOOL, uniform::CU_ORIENTATION_SWAP);
- focus_effect->add_uniform("RotationSwapXY", uniform::UT_BOOL, uniform::CU_ROTATION_SWAP);
- phosphor_effect->add_uniform("ScreenDims", uniform::UT_VEC2, uniform::CU_SCREEN_DIMS);
- phosphor_effect->add_uniform("TargetDims", uniform::UT_VEC2, uniform::CU_TARGET_DIMS);
phosphor_effect->add_uniform("Phosphor", uniform::UT_VEC3, uniform::CU_PHOSPHOR_LIFE);
- downsample_effect->add_uniform("ScreenDims", uniform::UT_VEC2, uniform::CU_SCREEN_DIMS);
-
- bloom_effect->add_uniform("ScreenDims", uniform::UT_VEC2, uniform::CU_SCREEN_DIMS);
- bloom_effect->add_uniform("TargetDims", uniform::UT_VEC2, uniform::CU_TARGET_DIMS);
-
- post_effect->add_uniform("SourceDims", uniform::UT_VEC2, uniform::CU_SOURCE_DIMS);
- post_effect->add_uniform("SourceRect", uniform::UT_VEC2, uniform::CU_SOURCE_RECT);
- post_effect->add_uniform("ScreenDims", uniform::UT_VEC2, uniform::CU_SCREEN_DIMS);
- post_effect->add_uniform("TargetDims", uniform::UT_VEC2, uniform::CU_TARGET_DIMS);
- post_effect->add_uniform("QuadDims", uniform::UT_VEC2, uniform::CU_QUAD_DIMS); // backward compatibility
-
post_effect->add_uniform("VignettingAmount", uniform::UT_FLOAT, uniform::CU_POST_VIGNETTING); // backward compatibility
post_effect->add_uniform("CurvatureAmount", uniform::UT_FLOAT, uniform::CU_POST_CURVATURE); // backward compatibility
post_effect->add_uniform("RoundCornerAmount", uniform::UT_FLOAT, uniform::CU_POST_ROUND_CORNER); // backward compatibility
@@ -1030,29 +1013,16 @@ int shaders::create_resources(bool reset)
post_effect->add_uniform("Power", uniform::UT_VEC3, uniform::CU_POST_POWER);
post_effect->add_uniform("Floor", uniform::UT_VEC3, uniform::CU_POST_FLOOR);
- post_effect->add_uniform("OrientationSwapXY", uniform::UT_BOOL, uniform::CU_ORIENTATION_SWAP);
- post_effect->add_uniform("RotationSwapXY", uniform::UT_BOOL, uniform::CU_ROTATION_SWAP);
post_effect->add_uniform("RotationType", uniform::UT_INT, uniform::CU_ROTATION_TYPE);
- distortion_effect->add_uniform("ScreenDims", uniform::UT_VEC2, uniform::CU_SCREEN_DIMS);
- distortion_effect->add_uniform("TargetDims", uniform::UT_VEC2, uniform::CU_TARGET_DIMS);
- distortion_effect->add_uniform("QuadDims", uniform::UT_VEC2, uniform::CU_QUAD_DIMS);
-
distortion_effect->add_uniform("VignettingAmount", uniform::UT_FLOAT, uniform::CU_POST_VIGNETTING);
distortion_effect->add_uniform("CurvatureAmount", uniform::UT_FLOAT, uniform::CU_POST_CURVATURE);
distortion_effect->add_uniform("RoundCornerAmount", uniform::UT_FLOAT, uniform::CU_POST_ROUND_CORNER);
distortion_effect->add_uniform("SmoothBorderAmount", uniform::UT_FLOAT, uniform::CU_POST_SMOOTH_BORDER);
distortion_effect->add_uniform("ReflectionAmount", uniform::UT_FLOAT, uniform::CU_POST_REFLECTION);
- distortion_effect->add_uniform("OrientationSwapXY", uniform::UT_BOOL, uniform::CU_ORIENTATION_SWAP);
- distortion_effect->add_uniform("RotationSwapXY", uniform::UT_BOOL, uniform::CU_ROTATION_SWAP);
distortion_effect->add_uniform("RotationType", uniform::UT_INT, uniform::CU_ROTATION_TYPE);
- vector_effect->add_uniform("ScreenDims", uniform::UT_VEC2, uniform::CU_SCREEN_DIMS);
-
- default_effect->add_uniform("ScreenDims", uniform::UT_VEC2, uniform::CU_SCREEN_DIMS);
- default_effect->add_uniform("TargetDims", uniform::UT_VEC2, uniform::CU_TARGET_DIMS);
-
initialized = true;
return 0;
@@ -1072,15 +1042,19 @@ void shaders::begin_draw()
curr_effect = default_effect;
- default_effect->set_technique("TestTechnique");
- post_effect->set_technique("ScanMaskTechnique");
- distortion_effect->set_technique("DistortionTechnique");
- phosphor_effect->set_technique("TestTechnique");
- focus_effect->set_technique("TestTechnique");
- deconverge_effect->set_technique("DeconvergeTechnique");
- color_effect->set_technique("ColorTechnique");
- yiq_encode_effect->set_technique("EncodeTechnique");
- yiq_decode_effect->set_technique("DecodeTechnique");
+ default_effect->set_technique("DefaultTechnique");
+ post_effect->set_technique("DefaultTechnique");
+ distortion_effect->set_technique("DefaultTechnique");
+ prescale_effect->set_technique("DefaultTechnique");
+ phosphor_effect->set_technique("DefaultTechnique");
+ focus_effect->set_technique("DefaultTechnique");
+ deconverge_effect->set_technique("DefaultTechnique");
+ color_effect->set_technique("DefaultTechnique");
+ ntsc_effect->set_technique("DefaultTechnique");
+ color_effect->set_technique("DefaultTechnique");
+ bloom_effect->set_technique("DefaultTechnique");
+ downsample_effect->set_technique("DefaultTechnique");
+ vector_effect->set_technique("DefaultTechnique");
HRESULT result = (*d3dintf->device.get_render_target)(d3d->get_device(), 0, &backbuffer);
if (result != D3D_OK)
@@ -1258,20 +1232,15 @@ int shaders::ntsc_pass(render_target *rt, int source_index, poly_info *poly, int
return next_index;
}
- // Convert our signal into YIQ
- curr_effect = yiq_encode_effect;
- curr_effect->update_uniforms();
+ float signal_offset = curr_texture->get_cur_frame() == 0
+ ? 0.0f
+ : options->yiq_jitter;
// initial "Diffuse" texture is set in shaders::set_texture()
- next_index = rt->next_index(next_index);
- blit(rt->native_target[next_index], true, D3DPT_TRIANGLELIST, 0, 2);
-
- // Convert our signal from YIQ
- curr_effect = yiq_decode_effect;
+ curr_effect = ntsc_effect;
curr_effect->update_uniforms();
- curr_effect->set_texture("Composite", rt->native_texture[next_index]);
- curr_effect->set_texture("Diffuse", curr_texture->get_finaltex());
+ curr_effect->set_float("SignalOffset", signal_offset);
next_index = rt->next_index(next_index);
blit(rt->native_target[next_index], true, D3DPT_TRIANGLELIST, 0, 2);
@@ -1354,6 +1323,15 @@ int shaders::deconverge_pass(render_target *rt, int source_index, poly_info *pol
{
int next_index = source_index;
+ // skip deconverge if no influencing settings
+ if (options->converge_x[0] == 0.0f && options->converge_x[1] == 0.0f && options->converge_x[2] == 0.0f &&
+ options->converge_y[0] == 0.0f && options->converge_y[1] == 0.0f && options->converge_y[2] == 0.0f &&
+ options->radial_converge_x[0] == 0.0f && options->radial_converge_x[1] == 0.0f && options->radial_converge_x[2] == 0.0f &&
+ options->radial_converge_y[0] == 0.0f && options->radial_converge_y[1] == 0.0f && options->radial_converge_y[2] == 0.0f)
+ {
+ return next_index;
+ }
+
curr_effect = deconverge_effect;
curr_effect->update_uniforms();
curr_effect->set_texture("Diffuse", rt->prescale_texture[next_index]);
@@ -1368,11 +1346,8 @@ int shaders::defocus_pass(render_target *rt, int source_index, poly_info *poly,
{
int next_index = source_index;
- float defocus_x = options->defocus[0];
- float defocus_y = options->defocus[1];
-
// skip defocus if no influencing settings
- if (defocus_x == 0.0f && defocus_y == 0.0f)
+ if (options->defocus[0] == 0.0f && options->defocus[1] == 0.0f)
{
return next_index;
}
@@ -1391,6 +1366,12 @@ int shaders::phosphor_pass(render_target *rt, cache_target *ct, int source_index
{
int next_index = source_index;
+ // skip phosphor if no influencing settings
+ if (options->phosphor[0] == 0.0f && options->phosphor[1] == 0.0f && options->phosphor[2] == 0.0f)
+ {
+ return next_index;
+ }
+
curr_effect = phosphor_effect;
curr_effect->update_uniforms();
curr_effect->set_texture("Diffuse", rt->prescale_texture[next_index]);
@@ -1416,8 +1397,6 @@ int shaders::post_pass(render_target *rt, int source_index, poly_info *poly, int
{
int next_index = source_index;
- texture_info *texture = poly->get_texture();
-
bool prepare_vector =
machine->first_screen()->screen_type() == SCREEN_TYPE_VECTOR;
@@ -1437,9 +1416,9 @@ int shaders::post_pass(render_target *rt, int source_index, poly_info *poly, int
float screen_scale[2] = { xscale, yscale };
float screen_offset[2] = { xoffset, yoffset };
- rgb_t back_color_rgb = machine->first_screen()->palette() == NULL
+ rgb_t back_color_rgb = !machine->first_screen()->has_palette()
? rgb_t(0, 0, 0)
- : machine->first_screen()->palette()->palette()->entry_color(0);
+ : machine->first_screen()->palette().palette()->entry_color(0);
back_color_rgb = apply_color_convolution(back_color_rgb);
float back_color[3] = {
static_cast<float>(back_color_rgb.r()) / 255.0f,
@@ -1454,7 +1433,9 @@ int shaders::post_pass(render_target *rt, int source_index, poly_info *poly, int
curr_effect->set_vector("BackColor", 3, back_color);
curr_effect->set_vector("ScreenScale", 2, screen_scale);
curr_effect->set_vector("ScreenOffset", 2, screen_offset);
- curr_effect->set_float("ScanlineOffset", texture->get_cur_frame() == 0 ? 0.0f : options->scanline_offset);
+ curr_effect->set_float("ScanlineOffset", curr_texture->get_cur_frame() == 0 ? 0.0f : options->scanline_jitter);
+ curr_effect->set_float("TimeMilliseconds", (float)machine->time().as_double() * 1000.0f);
+ curr_effect->set_float("HumBarAlpha", options->hum_bar_alpha);
curr_effect->set_bool("PrepareBloom", prepare_bloom);
curr_effect->set_bool("PrepareVector", prepare_vector);
@@ -1468,16 +1449,15 @@ int shaders::downsample_pass(render_target *rt, int source_index, poly_info *pol
{
int next_index = source_index;
- bool prepare_vector =
- machine->first_screen()->screen_type() == SCREEN_TYPE_VECTOR;
- float bloom_rescale = options->bloom_scale;
-
// skip downsample if no influencing settings
- if (bloom_rescale == 0.0f)
+ if (options->bloom_scale == 0.0f)
{
return next_index;
}
+ bool prepare_vector =
+ machine->first_screen()->screen_type() == SCREEN_TYPE_VECTOR;
+
curr_effect = downsample_effect;
curr_effect->update_uniforms();
curr_effect->set_bool("PrepareVector", prepare_vector);
@@ -1514,46 +1494,52 @@ int shaders::bloom_pass(render_target *rt, int source_index, poly_info *poly, in
{
int next_index = source_index;
- float bloom_rescale = options->bloom_scale;
-
// skip bloom if no influencing settings
- if (bloom_rescale == 0.0f)
+ if (options->bloom_scale == 0.0f)
{
return next_index;
}
- curr_effect = bloom_effect;
- curr_effect->update_uniforms();
-
- float weight0123[4] = {
- options->bloom_level0_weight,
+ float weight12[2] = {
options->bloom_level1_weight,
- options->bloom_level2_weight,
- options->bloom_level3_weight
+ options->bloom_level2_weight
+ };
+ float weight34[2] = {
+ options->bloom_level3_weight,
+ options->bloom_level4_weight
};
- float weight4567[4] = {
- options->bloom_level4_weight,
+ float weight56[2] = {
options->bloom_level5_weight,
options->bloom_level6_weight,
- options->bloom_level7_weight
};
- float weight89A[3] = {
- options->bloom_level8_weight,
+ float weight78[2] = {
+ options->bloom_level7_weight,
+ options->bloom_level8_weight
+ };
+ float weight9A[2] = {
options->bloom_level9_weight,
options->bloom_level10_weight
};
- curr_effect->set_vector("Level0123Weight", 4, weight0123);
- curr_effect->set_vector("Level4567Weight", 4, weight4567);
- curr_effect->set_vector("Level89AWeight", 3, weight89A);
- curr_effect->set_vector("Level01Size", 4, bloom_dims[0]);
- curr_effect->set_vector("Level23Size", 4, bloom_dims[2]);
- curr_effect->set_vector("Level45Size", 4, bloom_dims[4]);
- curr_effect->set_vector("Level67Size", 4, bloom_dims[6]);
- curr_effect->set_vector("Level89Size", 4, bloom_dims[8]);
- curr_effect->set_vector("LevelASize", 2, bloom_dims[10]);
+
+ curr_effect = bloom_effect;
+ curr_effect->update_uniforms();
+
+ curr_effect->set_float ("Level0Weight", options->bloom_level0_weight);
+ curr_effect->set_vector("Level12Weight", 2, weight12);
+ curr_effect->set_vector("Level34Weight", 2, weight34);
+ curr_effect->set_vector("Level56Weight", 2, weight56);
+ curr_effect->set_vector("Level78Weight", 2, weight78);
+ curr_effect->set_vector("Level9AWeight", 2, weight9A);
+
+ curr_effect->set_vector("Level0Size", 2, bloom_dims[0]);
+ curr_effect->set_vector("Level12Size", 4, bloom_dims[1]);
+ curr_effect->set_vector("Level34Size", 4, bloom_dims[3]);
+ curr_effect->set_vector("Level56Size", 4, bloom_dims[5]);
+ curr_effect->set_vector("Level78Size", 4, bloom_dims[7]);
+ curr_effect->set_vector("Level9ASize", 4, bloom_dims[9]);
curr_effect->set_int("BloomBlendMode", options->bloom_blend_mode);
- curr_effect->set_float("BloomScale", bloom_rescale);
+ curr_effect->set_float("BloomScale", options->bloom_scale);
curr_effect->set_vector("BloomOverdrive", 3, options->bloom_overdrive);
curr_effect->set_texture("DiffuseA", rt->prescale_texture[next_index]);
@@ -1750,7 +1736,7 @@ void shaders::render_quad(poly_info *poly, int vertnum)
// render on screen
d3d->set_wrap(D3DTADDRESS_MIRROR);
next_index = screen_pass(rt, next_index, poly, vertnum);
- d3d->set_wrap(PRIMFLAG_GET_TEXWRAP(poly->get_texture()->get_flags()) ? D3DTADDRESS_WRAP : D3DTADDRESS_CLAMP);
+ d3d->set_wrap(PRIMFLAG_GET_TEXWRAP(curr_texture->get_flags()) ? D3DTADDRESS_WRAP : D3DTADDRESS_CLAMP);
curr_texture->increment_frame_count();
curr_texture->mask_frame_count(options->yiq_phase_count);
@@ -1796,6 +1782,7 @@ void shaders::render_quad(poly_info *poly, int vertnum)
int next_index = 0;
next_index = vector_buffer_pass(rt, next_index, poly, vertnum);
+ next_index = deconverge_pass(rt, next_index, poly, vertnum);
next_index = defocus_pass(rt, next_index, poly, vertnum); // 1st pass
next_index = defocus_pass(rt, next_index, poly, vertnum); // 2nd pass
next_index = phosphor_pass(rt, ct, next_index, poly, vertnum);
@@ -2150,15 +2137,10 @@ void shaders::delete_resources(bool reset)
delete color_effect;
color_effect = NULL;
}
- if (yiq_encode_effect != NULL)
- {
- delete yiq_encode_effect;
- yiq_encode_effect = NULL;
- }
- if (yiq_decode_effect != NULL)
+ if (ntsc_effect != NULL)
{
- delete yiq_decode_effect;
- yiq_decode_effect = NULL;
+ delete ntsc_effect;
+ ntsc_effect = NULL;
}
if (backbuffer != NULL)
@@ -2414,22 +2396,28 @@ static INT32 slider_scanline_bright_offset(running_machine &machine, void *arg,
return slider_set(&(((hlsl_options*)arg)->scanline_bright_offset), 0.05f, "%2.2f", str, newval);
}
-static INT32 slider_scanline_offset(running_machine &machine, void *arg, std::string *str, INT32 newval)
+static INT32 slider_scanline_jitter(running_machine &machine, void *arg, std::string *str, INT32 newval)
{
((hlsl_options*)arg)->params_dirty = true;
- return slider_set(&(((hlsl_options*)arg)->scanline_offset), 0.05f, "%2.2f", str, newval);
+ return slider_set(&(((hlsl_options*)arg)->scanline_jitter), 0.01f, "%1.2f", str, newval);
+}
+
+static INT32 slider_hum_bar_alpha(running_machine &machine, void *arg, std::string *str, INT32 newval)
+{
+ ((hlsl_options*)arg)->params_dirty = true;
+ return slider_set(&(((hlsl_options*)arg)->hum_bar_alpha), 0.01f, "%1.2f", str, newval);
}
static INT32 slider_defocus_x(running_machine &machine, void *arg, std::string *str, INT32 newval)
{
((hlsl_options*)arg)->params_dirty = true;
- return slider_set(&(((hlsl_options*)arg)->defocus[0]), 0.5f, "%2.1f", str, newval);
+ return slider_set(&(((hlsl_options*)arg)->defocus[0]), 0.1f, "%2.1f", str, newval);
}
static INT32 slider_defocus_y(running_machine &machine, void *arg, std::string *str, INT32 newval)
{
((hlsl_options*)arg)->params_dirty = true;
- return slider_set(&(((hlsl_options*)arg)->defocus[1]), 0.5f, "%2.1f", str, newval);
+ return slider_set(&(((hlsl_options*)arg)->defocus[1]), 0.1f, "%2.1f", str, newval);
}
static INT32 slider_red_converge_x(running_machine &machine, void *arg, std::string *str, INT32 newval)
@@ -2772,6 +2760,105 @@ static INT32 slider_bloom_lvl10_scale(running_machine &machine, void *arg, std::
return slider_set(&(((hlsl_options*)arg)->bloom_level10_weight), 0.01f, "%1.2f", str, newval);
}
+
+static INT32 slider_ntsc_enable(running_machine &machine, void *arg, std::string *str, INT32 newval)
+{
+ hlsl_options *options = (hlsl_options*)arg;
+ if (newval != SLIDER_NOCHANGE)
+ {
+ options->yiq_enable = newval;
+ }
+ if (str != NULL)
+ {
+ strprintf(*str, "%s", options->yiq_enable == 0 ? "Off" : "On");
+ }
+ options->params_dirty = true;
+
+ return options->yiq_enable;
+}
+
+// static INT32 slider_ntsc_phase_count(running_machine &machine, void *arg, std::string *str, INT32 newval)
+// {
+// hlsl_options *options = (hlsl_options*)arg;
+// if (newval != SLIDER_NOCHANGE)
+// {
+// options->yiq_phase_count = newval;
+// }
+// if (str != NULL)
+// {
+// strprintf(*str, "%d", options->yiq_phase_count);
+// }
+// options->params_dirty = true;
+
+// return options->yiq_phase_count;
+// }
+
+static INT32 slider_ntsc_jitter(running_machine &machine, void *arg, std::string *str, INT32 newval)
+{
+ ((hlsl_options*)arg)->params_dirty = true;
+ return slider_set(&(((hlsl_options*)arg)->yiq_jitter), 0.01f, "%1.2f", str, newval);
+}
+
+static INT32 slider_ntsc_a_value(running_machine &machine, void *arg, std::string *str, INT32 newval)
+{
+ ((hlsl_options*)arg)->params_dirty = true;
+ return slider_set(&(((hlsl_options*)arg)->yiq_a), 0.01f, "%1.2f", str, newval);
+}
+
+static INT32 slider_ntsc_b_value(running_machine &machine, void *arg, std::string *str, INT32 newval)
+{
+ ((hlsl_options*)arg)->params_dirty = true;
+ return slider_set(&(((hlsl_options*)arg)->yiq_b), 0.01f, "%1.2f", str, newval);
+}
+
+static INT32 slider_ntsc_p_value(running_machine &machine, void *arg, std::string *str, INT32 newval)
+{
+ ((hlsl_options*)arg)->params_dirty = true;
+ return slider_set(&(((hlsl_options*)arg)->yiq_p), 0.01f, "%1.2f", str, newval);
+}
+
+static INT32 slider_ntsc_o_value(running_machine &machine, void *arg, std::string *str, INT32 newval)
+{
+ ((hlsl_options*)arg)->params_dirty = true;
+ return slider_set(&(((hlsl_options*)arg)->yiq_o), 0.01f, "%1.2f", str, newval);
+}
+
+static INT32 slider_ntsc_cc_value(running_machine &machine, void *arg, std::string *str, INT32 newval)
+{
+ ((hlsl_options*)arg)->params_dirty = true;
+ return slider_set(&(((hlsl_options*)arg)->yiq_cc), 0.0001f, "%1.4f", str, newval);
+}
+
+static INT32 slider_ntsc_n_value(running_machine &machine, void *arg, std::string *str, INT32 newval)
+{
+ ((hlsl_options*)arg)->params_dirty = true;
+ return slider_set(&(((hlsl_options*)arg)->yiq_n), 0.01f, "%1.4f", str, newval);
+}
+
+static INT32 slider_ntsc_y_value(running_machine &machine, void *arg, std::string *str, INT32 newval)
+{
+ ((hlsl_options*)arg)->params_dirty = true;
+ return slider_set(&(((hlsl_options*)arg)->yiq_y), 0.01f, "%1.4f", str, newval);
+}
+
+static INT32 slider_ntsc_i_value(running_machine &machine, void *arg, std::string *str, INT32 newval)
+{
+ ((hlsl_options*)arg)->params_dirty = true;
+ return slider_set(&(((hlsl_options*)arg)->yiq_i), 0.01f, "%1.4f", str, newval);
+}
+
+static INT32 slider_ntsc_q_value(running_machine &machine, void *arg, std::string *str, INT32 newval)
+{
+ ((hlsl_options*)arg)->params_dirty = true;
+ return slider_set(&(((hlsl_options*)arg)->yiq_q), 0.01f, "%1.4f", str, newval);
+}
+
+static INT32 slider_ntsc_scan_time(running_machine &machine, void *arg, std::string *str, INT32 newval)
+{
+ ((hlsl_options*)arg)->params_dirty = true;
+ return slider_set(&(((hlsl_options*)arg)->yiq_scan_time), 0.01f, "%1.2f", str, newval);
+}
+
hlsl_options shaders::last_options = { false };
shaders::slider_desc shaders::s_sliders[] =
@@ -2796,21 +2883,22 @@ shaders::slider_desc shaders::s_sliders[] =
{ "Scanline Indiv. Height", 1, 20, 80, 1, 5, slider_scanline_height },
{ "Scanline Brightness", 0, 20, 40, 1, 5, slider_scanline_bright_scale },
{ "Scanline Brightness Overdrive", 0, 0, 20, 1, 5, slider_scanline_bright_offset },
- { "Scanline Jitter", 0, 0, 40, 1, 5, slider_scanline_offset },
- { "Defocus X", 0, 0, 20, 1, 7, slider_defocus_x },
- { "Defocus Y", 0, 0, 20, 1, 7, slider_defocus_y },
- { "Red Position Offset X", -1500, 0, 1500, 1, 7, slider_red_converge_x },
- { "Red Position Offset Y", -1500, 0, 1500, 1, 7, slider_red_converge_y },
- { "Green Position Offset X", -1500, 0, 1500, 1, 7, slider_green_converge_x },
- { "Green Position Offset Y", -1500, 0, 1500, 1, 7, slider_green_converge_y },
- { "Blue Position Offset X", -1500, 0, 1500, 1, 7, slider_blue_converge_x },
- { "Blue Position Offset Y", -1500, 0, 1500, 1, 7, slider_blue_converge_y },
- { "Red Convergence X", -1500, 0, 1500, 1, 7, slider_red_radial_converge_x },
- { "Red Convergence Y", -1500, 0, 1500, 1, 7, slider_red_radial_converge_y },
- { "Green Convergence X", -1500, 0, 1500, 1, 7, slider_green_radial_converge_x },
- { "Green Convergence Y", -1500, 0, 1500, 1, 7, slider_green_radial_converge_y },
- { "Blue Convergence X", -1500, 0, 1500, 1, 7, slider_blue_radial_converge_x },
- { "Blue Convergence Y", -1500, 0, 1500, 1, 7, slider_blue_radial_converge_y },
+ { "Scanline Jitter", 0, 0, 100, 1, 5, slider_scanline_jitter },
+ { "Hum Bar Darkness", 0, 0, 100, 1, 5, slider_hum_bar_alpha },
+ { "Defocus X", 0, 0, 100, 1, 7, slider_defocus_x },
+ { "Defocus Y", 0, 0, 100, 1, 7, slider_defocus_y },
+ { "Red Position Offset X", -100, 0, 100, 1, 7, slider_red_converge_x },
+ { "Red Position Offset Y", -100, 0, 100, 1, 7, slider_red_converge_y },
+ { "Green Position Offset X", -100, 0, 100, 1, 7, slider_green_converge_x },
+ { "Green Position Offset Y", -100, 0, 100, 1, 7, slider_green_converge_y },
+ { "Blue Position Offset X", -100, 0, 100, 1, 7, slider_blue_converge_x },
+ { "Blue Position Offset Y", -100, 0, 100, 1, 7, slider_blue_converge_y },
+ { "Red Convergence X", -100, 0, 100, 1, 7, slider_red_radial_converge_x },
+ { "Red Convergence Y", -100, 0, 100, 1, 7, slider_red_radial_converge_y },
+ { "Green Convergence X", -100, 0, 100, 1, 7, slider_green_radial_converge_x },
+ { "Green Convergence Y", -100, 0, 100, 1, 7, slider_green_radial_converge_y },
+ { "Blue Convergence X", -100, 0, 100, 1, 7, slider_blue_radial_converge_x },
+ { "Blue Convergence Y", -100, 0, 100, 1, 7, slider_blue_radial_converge_y },
{ "Red Output from Red Input", -400, 0, 400, 5, 7, slider_red_from_r },
{ "Red Output from Green Input", -400, 0, 400, 5, 7, slider_red_from_g },
{ "Red Output from Blue Input", -400, 0, 400, 5, 7, slider_red_from_b },
@@ -2852,6 +2940,19 @@ shaders::slider_desc shaders::s_sliders[] =
{ "Bloom Level 8 Scale", 0, 0, 100, 1, 7, slider_bloom_lvl8_scale },
{ "Bloom Level 9 Scale", 0, 0, 100, 1, 7, slider_bloom_lvl9_scale },
{ "Bloom Level 10 Scale", 0, 0, 100, 1, 7, slider_bloom_lvl10_scale },
+ { "NTSC processing", 0, 0, 1, 1, 5, slider_ntsc_enable },
+ { "Signal Jitter", 0, 0, 100, 1, 5, slider_ntsc_jitter },
+ { "A Value", -100, 50, 100, 1, 5, slider_ntsc_a_value },
+ { "B Value", -100, 50, 100, 1, 5, slider_ntsc_b_value },
+ { "Incoming Pixel Clock Scaling", -300, 100, 300, 1, 5, slider_ntsc_p_value },
+ { "Outgoing Color Carrier Phase", -300, 0, 300, 1, 5, slider_ntsc_o_value },
+ { "Color Carrier Frequency", 0, 35795, 60000, 5, 5, slider_ntsc_cc_value },
+ { "Y Notch", 0, 100, 600, 5, 5, slider_ntsc_n_value },
+ { "Y Frequency", 0, 600, 600, 5, 5, slider_ntsc_y_value },
+ { "I Frequency", 0, 120, 600, 5, 5, slider_ntsc_i_value },
+ { "Q Frequency", 0, 60, 600, 5, 5, slider_ntsc_q_value },
+ { "Scanline Duration", 0, 5260, 10000, 1, 5, slider_ntsc_scan_time },
+ // { "Phase Count", 1, 2, 3, 1, 5, slider_ntsc_phase_count },
{ NULL, 0, 0, 0, 0, 0, NULL },
};
@@ -2956,37 +3057,67 @@ void uniform::update()
}
case CU_SOURCE_DIMS:
{
- vec2f sourcedims = shadersys->curr_texture->get_rawdims();
- m_shader->set_vector("SourceDims", 2, &sourcedims.c.x);
+ if (shadersys->curr_texture != NULL)
+ {
+ vec2f sourcedims = shadersys->curr_texture->get_rawdims();
+ m_shader->set_vector("SourceDims", 2, &sourcedims.c.x);
+ }
+
break;
}
case CU_SOURCE_RECT:
{
- vec2f delta = shadersys->curr_texture->get_uvstop() - shadersys->curr_texture->get_uvstart();
- m_shader->set_vector("SourceRect", 2, &delta.c.x);
+ bool prepare_vector =
+ d3d->window().machine().first_screen()->screen_type() == SCREEN_TYPE_VECTOR;
+
+ if (prepare_vector)
+ {
+ float delta[2] = { 1.0f, 1.0f };
+ m_shader->set_vector("SourceRect", 2, delta);
+ break;
+ }
+
+ if (shadersys->curr_texture != NULL)
+ {
+ vec2f delta = shadersys->curr_texture->get_uvstop() - shadersys->curr_texture->get_uvstart();
+ m_shader->set_vector("SourceRect", 2, &delta.c.x);
+ break;
+ }
+
break;
}
case CU_TARGET_DIMS:
{
- if (shadersys->curr_render_target == NULL)
+ if (shadersys->curr_render_target != NULL)
{
- float targetdims[2] = { 0.0f, 0.0f };
- m_shader->set_vector("TargetDims", 2, targetdims);
- }
- else
- {
- float targetdims[2] = { static_cast<float>(shadersys->curr_render_target->target_width), static_cast<float>(shadersys->curr_render_target->target_height) };
+ float targetdims[2] = {
+ static_cast<float>(shadersys->curr_render_target->target_width),
+ static_cast<float>(shadersys->curr_render_target->target_height) };
m_shader->set_vector("TargetDims", 2, targetdims);
}
break;
}
case CU_QUAD_DIMS:
{
- float quaddims[2] = { shadersys->curr_poly->get_prim_width(), shadersys->curr_poly->get_prim_height() };
- m_shader->set_vector("QuadDims", 2, quaddims);
+ if (shadersys->curr_poly != NULL)
+ {
+ float quaddims[2] = {
+ shadersys->curr_poly->get_prim_width(),
+ shadersys->curr_poly->get_prim_height() };
+ m_shader->set_vector("QuadDims", 2, quaddims);
+ }
break;
}
+ case CU_SWAP_XY:
+ {
+ bool orientation_swap_xy =
+ (d3d->window().machine().system().flags & ORIENTATION_SWAP_XY) == ORIENTATION_SWAP_XY;
+ bool rotation_swap_xy =
+ (d3d->window().target()->orientation() & ROT90) == ROT90 ||
+ (d3d->window().target()->orientation() & ROT270) == ROT270;
+ m_shader->set_bool("SwapXY", orientation_swap_xy ^ rotation_swap_xy);
+ }
case CU_ORIENTATION_SWAP:
{
bool orientation_swap_xy =
@@ -3162,28 +3293,6 @@ void uniform::update()
case CU_POST_FLOOR:
m_shader->set_vector("Floor", 3, options->floor);
break;
-
- case CU_BLOOM_RESCALE:
- m_shader->set_float("BloomRescale", options->bloom_scale);
- break;
- case CU_BLOOM_LVL0123_WEIGHTS:
- {
- float weight0123[4] = { options->bloom_level0_weight, options->bloom_level1_weight, options->bloom_level2_weight, options->bloom_level3_weight };
- m_shader->set_vector("Level0123Weight", 4, weight0123);
- break;
- }
- case CU_BLOOM_LVL4567_WEIGHTS:
- {
- float weight4567[4] = { options->bloom_level4_weight, options->bloom_level5_weight, options->bloom_level6_weight, options->bloom_level7_weight };
- m_shader->set_vector("Level4567Weight", 4, weight4567);
- break;
- }
- case CU_BLOOM_LVL89A_WEIGHTS:
- {
- float weight89A[3] = { options->bloom_level8_weight, options->bloom_level9_weight, options->bloom_level10_weight };
- m_shader->set_vector("Level89AWeight", 3, weight89A);
- break;
- }
}
}
diff --git a/src/osd/modules/render/d3d/d3dhlsl.h b/src/osd/modules/render/d3d/d3dhlsl.h
index b8bb5ac6f89..d949c1417c8 100644
--- a/src/osd/modules/render/d3d/d3dhlsl.h
+++ b/src/osd/modules/render/d3d/d3dhlsl.h
@@ -50,6 +50,7 @@ public:
CU_TARGET_DIMS,
CU_QUAD_DIMS,
+ CU_SWAP_XY,
CU_ORIENTATION_SWAP,
CU_ROTATION_SWAP,
CU_ROTATION_TYPE,
@@ -101,11 +102,6 @@ public:
CU_POST_POWER,
CU_POST_FLOOR,
- CU_BLOOM_RESCALE,
- CU_BLOOM_LVL0123_WEIGHTS,
- CU_BLOOM_LVL4567_WEIGHTS,
- CU_BLOOM_LVL89A_WEIGHTS,
-
CU_COUNT
};
@@ -214,7 +210,8 @@ struct hlsl_options
float scanline_height;
float scanline_bright_scale;
float scanline_bright_offset;
- float scanline_offset;
+ float scanline_jitter;
+ float hum_bar_alpha;
float defocus[2];
float converge_x[3];
float converge_y[3];
@@ -232,6 +229,7 @@ struct hlsl_options
// NTSC
bool yiq_enable;
+ float yiq_jitter;
float yiq_cc;
float yiq_a;
float yiq_b;
@@ -431,8 +429,7 @@ private:
effect * phosphor_effect; // pointer to the phosphor-effect object
effect * deconverge_effect; // pointer to the deconvergence-effect object
effect * color_effect; // pointer to the color-effect object
- effect * yiq_encode_effect; // pointer to the YIQ encoder effect object
- effect * yiq_decode_effect; // pointer to the YIQ decoder effect object
+ effect * ntsc_effect; // pointer to the NTSC effect object
effect * bloom_effect; // pointer to the bloom composite effect
effect * downsample_effect; // pointer to the bloom downsample effect
effect * vector_effect; // pointer to the vector-effect object
diff --git a/src/osd/modules/render/drawd3d.cpp b/src/osd/modules/render/drawd3d.cpp
index d72b2df7f38..b8730696a54 100644
--- a/src/osd/modules/render/drawd3d.cpp
+++ b/src/osd/modules/render/drawd3d.cpp
@@ -2734,20 +2734,6 @@ void texture_info::prescale()
cache_target::~cache_target()
{
- for (int index = 0; index < 11; index++)
- {
- if (bloom_texture[index] != NULL)
- {
- (*d3dintf->texture.release)(bloom_texture[index]);
- bloom_texture[index] = NULL;
- }
- if (bloom_target[index] != NULL)
- {
- (*d3dintf->surface.release)(bloom_target[index]);
- bloom_target[index] = NULL;
- }
- }
-
if (last_texture != NULL)
{
(*d3dintf->texture.release)(last_texture);
@@ -2767,25 +2753,6 @@ cache_target::~cache_target()
bool cache_target::init(renderer *d3d, base *d3dintf, int width, int height, int prescale_x, int prescale_y)
{
- int bloom_index = 0;
- int bloom_size = (width < height) ? width : height;
- int bloom_width = width;
- int bloom_height = height;
- for (; bloom_size >= 2 && bloom_index < 11; bloom_size >>= 1)
- {
- bloom_width >>= 1;
- bloom_height >>= 1;
-
- HRESULT result = (*d3dintf->device.create_texture)(d3d->get_device(), bloom_width, bloom_height, 1, D3DUSAGE_RENDERTARGET, D3DFMT_A8R8G8B8, D3DPOOL_DEFAULT, &bloom_texture[bloom_index]);
- if (result != D3D_OK)
- {
- return false;
- }
- (*d3dintf->texture.get_surface_level)(bloom_texture[bloom_index], 0, &bloom_target[bloom_index]);
-
- bloom_index++;
- }
-
HRESULT result = (*d3dintf->device.create_texture)(d3d->get_device(), width * prescale_x, height * prescale_y, 1, D3DUSAGE_RENDERTARGET, D3DFMT_A8R8G8B8, D3DPOOL_DEFAULT, &last_texture);
if (result != D3D_OK)
{
diff --git a/src/osd/modules/render/drawd3d.h b/src/osd/modules/render/drawd3d.h
index ab5385914b5..906bd7711b8 100644
--- a/src/osd/modules/render/drawd3d.h
+++ b/src/osd/modules/render/drawd3d.h
@@ -53,9 +53,6 @@ public:
cache_target *next;
cache_target *prev;
-
- surface *bloom_target[11];
- texture *bloom_texture[11];
};
/* render_target is the information about a Direct3D render target chain */
diff --git a/src/osd/modules/render/drawdd.cpp b/src/osd/modules/render/drawdd.cpp
index fb82dff3c1f..f15b70691c2 100644
--- a/src/osd/modules/render/drawdd.cpp
+++ b/src/osd/modules/render/drawdd.cpp
@@ -566,7 +566,7 @@ int renderer_dd::ddraw_create_surfaces()
{
membuffersize = blitwidth * blitheight * 4;
global_free_array(membuffer);
- membuffer = global_alloc_array(UINT8, membuffersize);
+ membuffer = global_alloc_array_nothrow(UINT8, membuffersize);
}
if (membuffer == NULL)
goto error;
diff --git a/src/osd/modules/sound/js_sound.cpp b/src/osd/modules/sound/js_sound.cpp
index bd95c79dd2e..581de205d7b 100644
--- a/src/osd/modules/sound/js_sound.cpp
+++ b/src/osd/modules/sound/js_sound.cpp
@@ -6,7 +6,7 @@
Shim for native JavaScript sound interface implementations (Emscripten only).
-*******************************************************************c********/
+****************************************************************************/
#include "sound_module.h"
#include "modules/osdmodule.h"
@@ -34,14 +34,14 @@ public:
{
EM_ASM_ARGS({
// Forward audio stream update on to JS backend implementation.
- jsmess_update_audio_stream($0, $1);
+ jsmame_update_audio_stream($0, $1);
}, (unsigned int)buffer, samples_this_frame);
}
virtual void set_mastervolume(int attenuation)
{
EM_ASM_ARGS({
// Forward volume update on to JS backend implementation.
- jsmess_set_mastervolume($0);
+ jsmame_set_mastervolume($0);
}, attenuation);
}
diff --git a/src/osd/modules/sound/js_sound.js b/src/osd/modules/sound/js_sound.js
new file mode 100644
index 00000000000..b06cbb44365
--- /dev/null
+++ b/src/osd/modules/sound/js_sound.js
@@ -0,0 +1,213 @@
+// license:BSD-3-Clause
+// copyright-holders:Grant Galitz, Katelyn Gadd
+/***************************************************************************
+
+ JSMAME web audio backend v0.3
+
+ Original by katelyn gadd - kg at luminance dot org ; @antumbral on twitter
+ Substantial changes by taisel
+
+***************************************************************************/
+
+var jsmame_web_audio = (function () {
+
+var context = null;
+var gain_node = null;
+var eventNode = null;
+var sampleScale = 32766;
+var inputBuffer = new Float32Array(44100);
+var bufferSize = 44100;
+var start = 0;
+var rear = 0;
+var watchDogDateLast = null;
+var watchDogTimerEvent = null;
+
+function lazy_init () {
+ //Make
+ if (context) {
+ //Return if already created:
+ return;
+ }
+ if (typeof AudioContext != "undefined") {
+ //Standard context creation:
+ context = new AudioContext();
+ }
+ else if (typeof webkitAudioContext != "undefined") {
+ //Older webkit context creation:
+ context = new webkitAudioContext();
+ }
+ else {
+ //API not found!
+ return;
+ }
+ //Generate a volume control node:
+ gain_node = context.createGain();
+ //Set initial volume to 1:
+ gain_node.gain.value = 1.0;
+ //Connect volume node to output:
+ gain_node.connect(context.destination);
+ //Initialize the streaming event:
+ init_event();
+};
+
+function init_event() {
+ //Generate a streaming node point:
+ if (typeof context.createScriptProcessor == "function") {
+ //Current standard compliant way:
+ eventNode = context.createScriptProcessor(4096, 0, 2);
+ }
+ else {
+ //Deprecated way:
+ eventNode = context.createJavaScriptNode(4096, 0, 2);
+ }
+ //Make our tick function the audio callback function:
+ eventNode.onaudioprocess = tick;
+ //Connect stream to volume control node:
+ eventNode.connect(gain_node);
+ //WORKAROUND FOR FIREFOX BUG:
+ initializeWatchDogForFirefoxBug();
+};
+
+function initializeWatchDogForFirefoxBug() {
+ //TODO: decide if we want to user agent sniff firefox here,
+ //since Google Chrome doesn't need this:
+ watchDogDateLast = (new Date()).getTime();
+ if (watchDogTimerEvent === null) {
+ watchDogTimerEvent = setInterval(function () {
+ var timeDiff = (new Date()).getTime() - watchDogDateLast;
+ if (timeDiff > 500) {
+ disconnect_old_event();
+ init_event();
+ }
+ }, 500);
+ }
+};
+
+function disconnect_old_event() {
+ //Disconnect from audio graph:
+ eventNode.disconnect();
+ //IIRC there was a firefox bug that did not GC this event when nulling the node itself:
+ eventNode.onaudioprocess = null;
+ //Null the glitched/unused node:
+ eventNode = null;
+};
+
+function set_mastervolume (
+ // even though it's 'attenuation' the value is negative, so...
+ attenuation_in_decibels
+) {
+ lazy_init();
+ if (!context) return;
+
+ // http://stackoverflow.com/questions/22604500/web-audio-api-working-with-decibels
+ // seemingly incorrect/broken. figures. welcome to Web Audio
+ // var gain_web_audio = 1.0 - Math.pow(10, 10 / attenuation_in_decibels);
+
+ // HACK: Max attenuation in JSMESS appears to be 32.
+ // Hit ' then left/right arrow to test.
+ // FIXME: This is linear instead of log10 scale.
+ var gain_web_audio = 1.0 + (+attenuation_in_decibels / +32);
+ if (gain_web_audio < +0)
+ gain_web_audio = +0;
+ else if (gain_web_audio > +1)
+ gain_web_audio = +1;
+
+ gain_node.gain.value = gain_web_audio;
+};
+
+function update_audio_stream (
+ pBuffer, // pointer into emscripten heap. int16 samples
+ samples_this_frame // int. number of samples at pBuffer address.
+) {
+ lazy_init();
+ if (!context) return;
+
+ for (
+ var i = 0,
+ l = samples_this_frame | 0;
+ i < l;
+ i++
+ ) {
+ var offset =
+ // divide by sizeof(INT16) since pBuffer is offset
+ // in bytes
+ ((pBuffer / 2) | 0) +
+ ((i * 2) | 0);
+
+ var left_sample = HEAP16[offset];
+ var right_sample = HEAP16[(offset + 1) | 0];
+
+ // normalize from signed int16 to signed float
+ var left_sample_float = left_sample / sampleScale;
+ var right_sample_float = right_sample / sampleScale;
+
+ inputBuffer[rear++] = left_sample_float;
+ inputBuffer[rear++] = right_sample_float;
+ if (rear == bufferSize) {
+ rear = 0;
+ }
+ if (start == rear) {
+ start += 2;
+ if (start == bufferSize) {
+ start = 0;
+ }
+ }
+ }
+};
+function tick (event) {
+ //Find all output channels:
+ for (var bufferCount = 0, buffers = []; bufferCount < 2; ++bufferCount) {
+ buffers[bufferCount] = event.outputBuffer.getChannelData(bufferCount);
+ }
+ //Copy samples from the input buffer to the Web Audio API:
+ for (var index = 0; index < 4096 && start != rear; ++index) {
+ buffers[0][index] = inputBuffer[start++];
+ buffers[1][index] = inputBuffer[start++];
+ if (start == bufferSize) {
+ start = 0;
+ }
+ }
+ //Pad with silence if we're underrunning:
+ while (index < 4096) {
+ buffers[0][index] = 0;
+ buffers[1][index++] = 0;
+ }
+ //Deep inside the bowels of vendors bugs,
+ //we're using watchdog for a firefox bug,
+ //where the user agent decides to stop firing events
+ //if the user agent lags out due to system load.
+ //Don't even ask....
+ watchDogDateLast = (new Date()).getTime();
+}
+
+function get_context() {
+ return context;
+};
+
+function sample_count() {
+ //TODO get someone to call this from the emulator,
+ //so the emulator can do proper audio buffering by
+ //knowing how many samples are left:
+ if (!context) {
+ //Use impossible value as an error code:
+ return -1;
+ }
+ var count = rear - start;
+ if (start > rear) {
+ count += bufferSize;
+ }
+ return count;
+}
+
+return {
+ set_mastervolume: set_mastervolume,
+ update_audio_stream: update_audio_stream,
+ get_context: get_context,
+ sample_count: sample_count
+};
+
+})();
+
+window.jsmame_set_mastervolume = jsmame_web_audio.set_mastervolume;
+window.jsmame_update_audio_stream = jsmame_web_audio.update_audio_stream;
+window.jsmame_sample_count = jsmame_web_audio.sample_count;
diff --git a/src/osd/modules/sound/xaudio2_sound.cpp b/src/osd/modules/sound/xaudio2_sound.cpp
new file mode 100644
index 00000000000..9dc3d0461be
--- /dev/null
+++ b/src/osd/modules/sound/xaudio2_sound.cpp
@@ -0,0 +1,701 @@
+// license:BSD-3-Clause
+// copyright-holders:Brad Hughes
+//====================================================================
+//
+// xaudio2_sound.cpp - XAudio2 implementation of MAME sound routines
+//
+//====================================================================
+
+#include "sound_module.h"
+#include "modules/osdmodule.h"
+
+#if (defined(OSD_WINDOWS) && USE_XAUDIO2)
+
+// standard windows headers
+#define WIN32_LEAN_AND_MEAN
+#include <windows.h>
+#include <mutex>
+
+#pragma warning( push )
+#pragma warning( disable: 4068 )
+#pragma GCC diagnostic push
+#pragma GCC diagnostic ignored "-Wattributes"
+// XAudio2 include
+#include <xaudio2.h>
+#pragma GCC diagnostic pop
+#pragma warning( pop )
+
+
+#include <mmsystem.h>
+
+// stdlib includes
+#include <thread>
+#include <queue>
+
+#undef interface
+
+// MAME headers
+#include "emu.h"
+#include "osdepend.h"
+#include "emuopts.h"
+
+//============================================================
+// Constants
+//============================================================
+
+#define INITIAL_BUFFER_COUNT 4
+#define SUBMIT_FREQUENCY_TARGET_MS 20
+
+//============================================================
+// Macros
+//============================================================
+
+// Check HRESULT result and log if error, then take an optional action on failure
+#define HR_LOG( CALL, LOGFN, ONFAIL ) do { \
+ result = CALL; \
+ if (FAILED(result)) { \
+ LOGFN(#CALL " failed with error 0x%X\n", (unsigned int)result); \
+ ONFAIL; } \
+} while (0)
+
+// Variant of HR_LOG to log using osd_printf_error
+#define HR_LOGE( CALL, ONFAIL ) HR_LOG(CALL, osd_printf_error, ONFAIL)
+
+// Variant of HR_LOG to log using osd_printf_verbose
+#define HR_LOGV( CALL, ONFAIL ) HR_LOG(CALL, osd_printf_verbose, ONFAIL)
+
+// Macro to check for a failed HRESULT and if failed, goto a label called Error:
+#define HR_GOERR( CALL ) HR_LOGE( CALL, goto Error;)
+
+// Macro to check for a failed HRESULT and if failed, return the specified value
+#define HR_RET( CALL, ret ) HR_LOGE(CALL, return ret;)
+
+// Macro to check for a failed HRESULT and if failed, return nothing (void function)
+#define HR_RETV( CALL ) HR_RET(CALL,)
+
+// Macro to check for a failed HRESULT and if failed, return 0
+#define HR_RET0( CALL ) HR_RET(CALL, 0)
+
+// Macro to check for a failed HRESULT and if failed, return the HRESULT
+#define HR_RETHR( CALL ) HR_RET(CALL, result)
+
+// Macro to check for a failed HRESULT and if failed, return 1
+#define HR_RET1( CALL ) HR_RET(CALL, 1)
+
+// Macro to check for a failed HRESULT and if failed, log verbose, and proceed as normal
+#define HR_IGNORE( CALL ) HR_LOGV(CALL,)
+
+//============================================================
+// Structs and typedefs
+//============================================================
+
+// A stucture to hold a pointer and the count of bytes of the data it points to
+struct xaudio2_buffer
+{
+ std::unique_ptr<BYTE[]> AudioData;
+ DWORD AudioSize;
+};
+
+// Custom deleter with overloads to free smart pointer types used in the implementations
+struct xaudio2_custom_deleter
+{
+public:
+ void operator()(IXAudio2* obj) const
+ {
+ if (obj != nullptr)
+ {
+ obj->Release();
+ }
+ }
+
+ void operator()(IXAudio2MasteringVoice* obj) const
+ {
+ if (obj != nullptr)
+ {
+ obj->DestroyVoice();
+ }
+ }
+
+ void operator()(IXAudio2SourceVoice* obj) const
+ {
+ if (obj != nullptr)
+ {
+ obj->Stop(0);
+ obj->FlushSourceBuffers();
+ obj->DestroyVoice();
+ }
+ }
+};
+
+// Typedefs for smart pointers used with customer deleters
+typedef std::unique_ptr<IXAudio2, xaudio2_custom_deleter> xaudio2_ptr;
+typedef std::unique_ptr<IXAudio2MasteringVoice, xaudio2_custom_deleter> mastering_voice_ptr;
+typedef std::unique_ptr<IXAudio2SourceVoice, xaudio2_custom_deleter> src_voice_ptr;
+
+// Typedef for pointer to XAudio2Create
+typedef HRESULT(__stdcall* PFN_XAUDIO2CREATE)(IXAudio2**, UINT32, XAUDIO2_PROCESSOR);
+
+//============================================================
+// Helper classes
+//============================================================
+
+// Provides a pool of buffers
+class bufferpool
+{
+private:
+ int m_initial;
+ int m_buffersize;
+ std::queue<std::unique_ptr<BYTE[]>> m_queue;
+
+public:
+ // constructor
+ bufferpool(int capacity, int bufferSize) :
+ m_initial(capacity),
+ m_buffersize(bufferSize)
+ {
+ for (int i = 0; i < m_initial; i++)
+ {
+ auto newBuffer = std::make_unique<BYTE[]>(m_buffersize);
+ memset(newBuffer.get(), 0, m_buffersize);
+ m_queue.push(std::move(newBuffer));
+ }
+ }
+
+ // get next buffer element from the pool
+ BYTE* next()
+ {
+ BYTE* next_buffer;
+ if (!m_queue.empty())
+ {
+ next_buffer = m_queue.front().release();
+ m_queue.pop();
+ }
+ else
+ {
+ next_buffer = new BYTE[m_buffersize];
+ memset(next_buffer, 0, m_buffersize);
+ }
+
+ return next_buffer;
+ }
+
+ // release element, make it available back in the pool
+ void return_to_pool(BYTE* buffer)
+ {
+ auto returned_buf = std::unique_ptr<BYTE[]>(buffer);
+ memset(returned_buf.get(), 0, m_buffersize);
+ m_queue.push(std::move(returned_buf));
+ }
+};
+
+//============================================================
+// sound_xaudio2 class
+//============================================================
+
+// The main class for the XAudio2 sound module implementation
+class sound_xaudio2 : public osd_module, public sound_module, public IXAudio2VoiceCallback
+{
+private:
+ xaudio2_ptr m_xAudio2;
+ mastering_voice_ptr m_masterVoice;
+ src_voice_ptr m_sourceVoice;
+ DWORD m_sample_bytes;
+ std::unique_ptr<BYTE[]> m_buffer;
+ DWORD m_buffer_size;
+ DWORD m_buffer_count;
+ DWORD m_writepos;
+ std::mutex m_buffer_lock;
+ HANDLE m_hEventBufferCompleted;
+ HANDLE m_hEventDataAvailable;
+ HANDLE m_hEventExiting;
+ std::thread m_audioThread;
+ std::queue<xaudio2_buffer> m_queue;
+ std::unique_ptr<bufferpool> m_buffer_pool;
+ HMODULE m_xaudio2_module;
+ PFN_XAUDIO2CREATE m_pfnxaudio2create;
+ UINT32 m_overflows;
+ UINT32 m_underflows;
+ BOOL m_in_underflow;
+
+public:
+ sound_xaudio2() :
+ osd_module(OSD_SOUND_PROVIDER, "xaudio2"),
+ sound_module(),
+ m_xAudio2(nullptr),
+ m_masterVoice(nullptr),
+ m_sourceVoice(nullptr),
+ m_sample_bytes(0),
+ m_buffer(nullptr),
+ m_buffer_size(0),
+ m_buffer_count(0),
+ m_writepos(0),
+ m_hEventBufferCompleted(NULL),
+ m_hEventDataAvailable(NULL),
+ m_hEventExiting(NULL),
+ m_buffer_pool(nullptr),
+ m_xaudio2_module(NULL),
+ m_pfnxaudio2create(nullptr),
+ m_overflows(0),
+ m_underflows(0),
+ m_in_underflow(FALSE)
+ {
+ }
+
+ virtual int init(osd_options const &options) override;
+ virtual void exit() override;
+
+ // sound_module
+ virtual void update_audio_stream(bool is_throttled, INT16 const *buffer, int samples_this_frame) override;
+ virtual void set_mastervolume(int attenuation) override;
+
+ // Xaudio callbacks
+ void OnVoiceProcessingPassStart(UINT32 bytes_required) override;
+ void OnVoiceProcessingPassEnd() override {}
+ void OnStreamEnd() override {}
+ void OnBufferStart(void* pBufferContext) override {}
+ void OnLoopEnd(void* pBufferContext) override {}
+ void OnVoiceError(void* pBufferContext, HRESULT error) override {}
+ void OnBufferEnd(void *pBufferContext) override;
+
+private:
+ void create_buffers(const WAVEFORMATEX &format);
+ HRESULT create_voices(const WAVEFORMATEX &format);
+ void process_audio();
+ void submit_buffer(std::unique_ptr<BYTE[]> audioData, DWORD audioLength);
+ void submit_needed();
+ HRESULT xaudio2_create(IXAudio2 ** xaudio2_interface);
+ void roll_buffer();
+ BOOL submit_next_queued();
+};
+
+//============================================================
+// init
+//============================================================
+
+int sound_xaudio2::init(osd_options const &options)
+{
+ HRESULT result = S_OK;
+
+ // Create the IXAudio2 object
+ IXAudio2 *temp_xaudio2 = nullptr;
+ HR_RET1(xaudio2_create(&temp_xaudio2));
+ m_xAudio2 = xaudio2_ptr(temp_xaudio2);
+
+ // make a format description for what we want
+ WAVEFORMATEX format = { 0 };
+ format.wBitsPerSample = 16;
+ format.wFormatTag = WAVE_FORMAT_PCM;
+ format.nChannels = 2;
+ format.nSamplesPerSec = sample_rate();
+ format.nBlockAlign = format.wBitsPerSample * format.nChannels / 8;
+ format.nAvgBytesPerSec = format.nSamplesPerSec * format.nBlockAlign;
+
+ m_sample_bytes = format.nBlockAlign;
+
+#if defined(_DEBUG)
+ XAUDIO2_DEBUG_CONFIGURATION debugConfig = { 0 };
+ debugConfig.TraceMask = XAUDIO2_LOG_WARNINGS | XAUDIO2_LOG_TIMING | XAUDIO2_LOG_STREAMING;
+ debugConfig.LogFunctionName = TRUE;
+ m_xAudio2->SetDebugConfiguration(&debugConfig);
+#endif
+
+ // Create the buffers
+ create_buffers(format);
+
+ // Initialize our events
+ m_hEventBufferCompleted = CreateEvent(NULL, FALSE, FALSE, NULL);
+ m_hEventDataAvailable = CreateEvent(NULL, FALSE, FALSE, NULL);
+ m_hEventExiting = CreateEvent(NULL, FALSE, FALSE, NULL);
+
+ // create the voices and start them
+ HR_RET1(create_voices(format));
+ HR_RET1(m_sourceVoice->Start());
+
+ // Start the thread listening
+ m_audioThread = std::thread([](sound_xaudio2* self) { self->process_audio(); }, this);
+
+ osd_printf_verbose("Sound: XAudio2 initialized\n");
+
+ return 0;
+}
+
+//============================================================
+// exit
+//============================================================
+
+void sound_xaudio2::exit()
+{
+ // Wait on processing thread to end
+ SetEvent(m_hEventExiting);
+ m_audioThread.join();
+
+ CloseHandle(m_hEventBufferCompleted);
+ CloseHandle(m_hEventDataAvailable);
+ CloseHandle(m_hEventExiting);
+
+ m_sourceVoice.reset();
+ m_masterVoice.reset();
+ m_xAudio2.reset();
+ m_buffer.reset();
+ m_buffer_pool.reset();
+
+ if (m_overflows != 0 || m_underflows != 0)
+ osd_printf_verbose("Sound: overflows=%u, underflows=%u\n", m_overflows, m_underflows);
+
+ osd_printf_verbose("Sound: XAudio2 deinitialized\n");
+}
+
+//============================================================
+// update_audio_stream
+//============================================================
+
+void sound_xaudio2::update_audio_stream(
+ bool is_throttled,
+ INT16 const *buffer,
+ int samples_this_frame)
+{
+ if ((sample_rate() == 0) || !m_buffer)
+ return;
+
+ UINT32 const bytes_this_frame = samples_this_frame * m_sample_bytes;
+
+ std::lock_guard<std::mutex> lock(m_buffer_lock);
+
+ UINT32 bytes_left = bytes_this_frame;
+
+ while (bytes_left > 0)
+ {
+ UINT32 chunk = MIN(m_buffer_size, bytes_left);
+
+ // Roll the buffer if needed
+ if (m_writepos + chunk >= m_buffer_size)
+ {
+ roll_buffer();
+ }
+
+ // Copy in the data
+ memcpy(m_buffer.get() + m_writepos, buffer, chunk);
+ m_writepos += chunk;
+ bytes_left -= chunk;
+ }
+
+ // Signal data available
+ SetEvent(m_hEventDataAvailable);
+}
+
+//============================================================
+// set_mastervolume
+//============================================================
+
+void sound_xaudio2::set_mastervolume(int attenuation)
+{
+ assert(m_sourceVoice);
+
+ HRESULT result;
+
+ // clamp the attenuation to 0-32 range
+ attenuation = MAX(MIN(attenuation, 0), -32);
+
+ // Ranges from 1.0 to XAUDIO2_MAX_VOLUME_LEVEL indicate additional gain
+ // Ranges from 0 to 1.0 indicate a reduced volume level
+ // 0 indicates silence
+ // We only support a reduction from 1.0, so we generate values in the range 0.0 to 1.0
+ float scaledVolume = (32.0f + attenuation) / 32.0f;
+
+ // set the master volume
+ HR_RETV(m_sourceVoice->SetVolume(scaledVolume));
+}
+
+//============================================================
+// IXAudio2VoiceCallback::OnBufferEnd
+//============================================================
+
+// The XAudio2 voice callback triggered when a buffer finishes playing
+void sound_xaudio2::OnBufferEnd(void *pBufferContext)
+{
+ BYTE* completed_buffer = (BYTE*)pBufferContext;
+ if (completed_buffer != nullptr)
+ {
+ std::lock_guard<std::mutex> lock(m_buffer_lock);
+ m_buffer_pool->return_to_pool(completed_buffer);
+ }
+
+ SetEvent(m_hEventBufferCompleted);
+}
+
+//============================================================
+// IXAudio2VoiceCallback::OnVoiceProcessingPassStart
+//============================================================
+
+// The XAudio2 voice callback triggered on every pass
+void sound_xaudio2::OnVoiceProcessingPassStart(UINT32 bytes_required)
+{
+ if (bytes_required == 0)
+ {
+ // Reset underflow indicator if we're caught up
+ if (m_in_underflow) m_in_underflow = FALSE;
+
+ return;
+ }
+
+ // Since there are bytes required, we're going to be in underflow
+ if (!m_in_underflow)
+ {
+ m_underflows++;
+ m_in_underflow = TRUE;
+ }
+}
+
+//============================================================
+// xaudio2_create
+//============================================================
+
+// Dynamically loads the XAudio2 DLL and calls the exported XAudio2Create()
+HRESULT sound_xaudio2::xaudio2_create(IXAudio2 ** ppxaudio2_interface)
+{
+ HRESULT result;
+
+ if (nullptr == m_pfnxaudio2create)
+ {
+ if (nullptr == m_xaudio2_module)
+ {
+ m_xaudio2_module = LoadLibrary(XAUDIO2_DLL);
+ if (nullptr == m_xaudio2_module)
+ {
+ osd_printf_error("Failed to load module '%S', error: 0x%X\n", XAUDIO2_DLL, (unsigned int)GetLastError());
+ HR_RETHR(E_FAIL);
+ }
+ }
+
+ m_pfnxaudio2create = (PFN_XAUDIO2CREATE)GetProcAddress(m_xaudio2_module, "XAudio2Create");
+ if (nullptr == m_pfnxaudio2create)
+ {
+ osd_printf_error("Failed to get adddress of exported function XAudio2Create, error: 0x%X\n", (unsigned int)GetLastError());
+ HR_RETHR(E_FAIL);
+ }
+ }
+
+ HR_RETHR(m_pfnxaudio2create(ppxaudio2_interface, 0, XAUDIO2_DEFAULT_PROCESSOR));
+
+ return S_OK;
+}
+
+//============================================================
+// create_buffers
+//============================================================
+
+void sound_xaudio2::create_buffers(const WAVEFORMATEX &format)
+{
+ // Compute the buffer size
+ // buffer size is equal to the bytes we need to hold in memory per X tenths of a second where X is audio_latency
+ float audio_latency_in_seconds = m_audio_latency / 10.0f;
+ UINT32 format_bytes_per_second = format.nSamplesPerSec * format.nBlockAlign;
+ UINT32 total_buffer_size = format_bytes_per_second * audio_latency_in_seconds;
+
+ // We want to be able to submit buffers every X milliseconds
+ // I want to divide these up into "packets" so figure out how many buffers we need
+ m_buffer_count = (audio_latency_in_seconds * 1000.0f) / SUBMIT_FREQUENCY_TARGET_MS;
+
+ // Now record the size of the individual buffers
+ m_buffer_size = MAX(1024, total_buffer_size / m_buffer_count);
+
+ // Make the buffer a multiple of the format size bytes (rounding up)
+ UINT32 remainder = m_buffer_size % format.nBlockAlign;
+ if (remainder != 0)
+ m_buffer_size += format.nBlockAlign - remainder;
+
+ // get our initial buffer pool and our first buffer
+ m_buffer_pool = std::make_unique<bufferpool>(m_buffer_count + 1, m_buffer_size);
+ m_buffer = std::unique_ptr<BYTE[]>(m_buffer_pool->next());
+
+ osd_printf_verbose(
+ "Sound: XAudio2 created initial buffers. total size: %u, count %u, size each %u\n",
+ (unsigned int)total_buffer_size,
+ (unsigned int)m_buffer_count,
+ (unsigned int)m_buffer_size);
+
+ // reset buffer states
+ m_writepos = 0;
+ m_overflows = 0;
+ m_underflows = 0;
+}
+
+//============================================================
+// create_voices
+//============================================================
+
+HRESULT sound_xaudio2::create_voices(const WAVEFORMATEX &format)
+{
+ assert(m_xAudio2);
+ assert(!m_masterVoice);
+ HRESULT result;
+
+ IXAudio2MasteringVoice *temp_master_voice = nullptr;
+ HR_RET1(
+ m_xAudio2->CreateMasteringVoice(
+ &temp_master_voice,
+ format.nChannels,
+ sample_rate()));
+
+ m_masterVoice = mastering_voice_ptr(temp_master_voice);
+
+ // create the source voice
+ IXAudio2SourceVoice *temp_source_voice = nullptr;
+ HR_RET1(m_xAudio2->CreateSourceVoice(
+ &temp_source_voice,
+ &format,
+ XAUDIO2_VOICE_NOSRC | XAUDIO2_VOICE_NOPITCH,
+ 1.0,
+ this));
+
+ m_sourceVoice = src_voice_ptr(temp_source_voice);
+
+ return S_OK;
+}
+
+//============================================================
+// process_audio
+//============================================================
+
+// submits audio events on another thread in a loop
+void sound_xaudio2::process_audio()
+{
+ BOOL exiting = FALSE;
+ HANDLE hEvents[] = { m_hEventBufferCompleted, m_hEventDataAvailable, m_hEventExiting };
+ while (!exiting)
+ {
+ DWORD wait_result = WaitForMultipleObjects(3, hEvents, FALSE, INFINITE);
+ switch (wait_result)
+ {
+ // Buffer is complete or new data is available
+ case 0:
+ case 1:
+ submit_needed();
+ break;
+ case 2:
+ // exiting
+ exiting = TRUE;
+ break;
+ }
+ }
+}
+
+//============================================================
+// submit_needed
+//============================================================
+
+// Submits any buffers that have currently been queued,
+// assuming they are needed based on current queue depth
+void sound_xaudio2::submit_needed()
+{
+ XAUDIO2_VOICE_STATE state;
+ m_sourceVoice->GetState(&state, XAUDIO2_VOICE_NOSAMPLESPLAYED);
+
+ // If we have a buffer on the queue, no reason to submit
+ if (state.BuffersQueued >= 1)
+ return;
+
+ std::lock_guard<std::mutex> lock(m_buffer_lock);
+
+ // Roll the buffer
+ roll_buffer();
+
+ // Submit the next buffer
+ submit_next_queued();
+}
+
+//============================================================
+// submit_buffer
+//============================================================
+
+void sound_xaudio2::submit_buffer(std::unique_ptr<BYTE[]> audioData, DWORD audioLength)
+{
+ assert(audioLength != 0);
+
+ XAUDIO2_BUFFER buf = { 0 };
+ buf.AudioBytes = audioLength;
+ buf.pAudioData = audioData.get();
+ buf.PlayBegin = 0;
+ buf.PlayLength = audioLength / m_sample_bytes;
+ buf.Flags = XAUDIO2_END_OF_STREAM;
+ buf.pContext = audioData.get();
+
+ HRESULT result;
+ if (FAILED(result = m_sourceVoice->SubmitSourceBuffer(&buf)))
+ {
+ osd_printf_verbose("Sound: XAudio2 failed to submit source buffer (non-fatal). Error: 0x%X\n", (unsigned int)result);
+ m_buffer_pool->return_to_pool(audioData.release());
+ return;
+ }
+
+ // If we succeeded, relinquish the buffer allocation to the XAudio2 runtime
+ // The buffer will be freed on the OnBufferCompleted callback
+ audioData.release();
+}
+
+//============================================================
+// submit_next_queued
+//============================================================
+
+BOOL sound_xaudio2::submit_next_queued()
+{
+ if (!m_queue.empty())
+ {
+ // Get a reference to the buffer
+ auto buf = &m_queue.front();
+
+ // submit the buffer data
+ submit_buffer(std::move(buf->AudioData), buf->AudioSize);
+
+ // Remove it from the queue
+ assert(buf->AudioSize > 0);
+ m_queue.pop();
+
+ return !m_queue.empty();
+ }
+
+ // queue was already empty
+ return FALSE;
+}
+
+//============================================================
+// roll_buffer
+//============================================================
+
+// Queues the current buffer, and gets a new write buffer
+void sound_xaudio2::roll_buffer()
+{
+ // Don't queue a buffer if it is empty
+ if (m_writepos == 0)
+ return;
+
+ // Queue the current buffer
+ xaudio2_buffer buf;
+ buf.AudioData = std::move(m_buffer);
+ buf.AudioSize = m_writepos;
+ m_queue.push(std::move(buf));
+
+ // Get a new buffer
+ m_buffer = std::unique_ptr<BYTE[]>(m_buffer_pool->next());
+ m_writepos = 0;
+
+ // We only want to keep a maximum number of buffers at any given time
+ // so remove any from queue greater than MAX_QUEUED_BUFFERS
+ if (m_queue.size() > m_buffer_count)
+ {
+ xaudio2_buffer *next_buffer = &m_queue.front();
+
+ // return the oldest buffer to the pool, and remove it from queue
+ m_buffer_pool->return_to_pool(next_buffer->AudioData.release());
+ m_queue.pop();
+
+ m_overflows++;
+ }
+}
+
+
+#else
+MODULE_NOT_SUPPORTED(sound_xaudio2, OSD_SOUND_PROVIDER, "xaudio2")
+#endif
+
+MODULE_DEFINITION(SOUND_XAUDIO2, sound_xaudio2)
diff --git a/src/osd/modules/sync/osdsync.h b/src/osd/modules/sync/osdsync.h
index 46d32b09135..e6e5e2f99c9 100644
--- a/src/osd/modules/sync/osdsync.h
+++ b/src/osd/modules/sync/osdsync.h
@@ -24,7 +24,7 @@ struct osd_event;
/*-----------------------------------------------------------------------------
- osd_lock_event_alloc: allocate a new event
+ osd_event_alloc: allocate a new event
Parameters:
@@ -174,18 +174,4 @@ int osd_thread_cpu_affinity(osd_thread *thread, UINT32 mask);
-----------------------------------------------------------------------------*/
void osd_thread_wait_free(osd_thread *thread);
-//============================================================
-// Scalable Locks
-//============================================================
-
-struct osd_scalable_lock;
-
-osd_scalable_lock *osd_scalable_lock_alloc(void);
-
-INT32 osd_scalable_lock_acquire(osd_scalable_lock *lock);
-
-void osd_scalable_lock_release(osd_scalable_lock *lock, INT32 myslot);
-
-void osd_scalable_lock_free(osd_scalable_lock *lock);
-
#endif /* __OSDSYNC__ */
diff --git a/src/osd/modules/sync/sync_mini.cpp b/src/osd/modules/sync/sync_mini.cpp
index f5e6accb0c7..5829eb6d63c 100644
--- a/src/osd/modules/sync/sync_mini.cpp
+++ b/src/osd/modules/sync/sync_mini.cpp
@@ -20,63 +20,6 @@ struct _osd_thread {
//============================================================
-// osd_lock_alloc
-//============================================================
-
-osd_lock *osd_lock_alloc(void)
-{
- // the minimal implementation does not support threading
- // just return a dummy value here
- return (osd_lock *)1;
-}
-
-
-//============================================================
-// osd_lock_acquire
-//============================================================
-
-void osd_lock_acquire(osd_lock *lock)
-{
- // the minimal implementation does not support threading
- // the acquire always "succeeds"
-}
-
-
-//============================================================
-// osd_lock_try
-//============================================================
-
-int osd_lock_try(osd_lock *lock)
-{
- // the minimal implementation does not support threading
- // the acquire always "succeeds"
- return TRUE;
-}
-
-
-//============================================================
-// osd_lock_release
-//============================================================
-
-void osd_lock_release(osd_lock *lock)
-{
- // the minimal implementation does not support threading
- // do nothing here
-}
-
-
-//============================================================
-// osd_lock_free
-//============================================================
-
-void osd_lock_free(osd_lock *lock)
-{
- // the minimal implementation does not support threading
- // do nothing here
-}
-
-
-//============================================================
// osd_event_alloc
//============================================================
diff --git a/src/osd/modules/sync/sync_ntc.cpp b/src/osd/modules/sync/sync_ntc.cpp
index 462c56ee434..c78f67ce64a 100644
--- a/src/osd/modules/sync/sync_ntc.cpp
+++ b/src/osd/modules/sync/sync_ntc.cpp
@@ -38,16 +38,6 @@
#include <errno.h>
#include <sys/time.h>
-struct osd_lock {
- volatile pthread_t holder;
- INT32 count;
-#ifdef PTR64
- INT8 padding[52]; // Fill a 64-byte cache line
-#else
- INT8 padding[56]; // A bit more padding
-#endif
-};
-
struct osd_event {
pthread_mutex_t mutex;
pthread_cond_t cond;
@@ -69,275 +59,6 @@ struct osd_thread {
pthread_t thread;
};
-struct osd_scalable_lock
-{
- struct
- {
- volatile INT32 haslock; // do we have the lock?
- INT32 filler[64/4-1]; // assumes a 64-byte cache line
- } slot[WORK_MAX_THREADS]; // one slot per thread
- volatile INT32 nextindex; // index of next slot to use
-};
-
-
-//============================================================
-// Scalable Locks
-//============================================================
-
-osd_scalable_lock *osd_scalable_lock_alloc(void)
-{
- osd_scalable_lock *lock;
-
- lock = (osd_scalable_lock *)calloc(1, sizeof(*lock));
- if (lock == NULL)
- return NULL;
-
- memset(lock, 0, sizeof(*lock));
- lock->slot[0].haslock = TRUE;
- return lock;
-}
-
-
-INT32 osd_scalable_lock_acquire(osd_scalable_lock *lock)
-{
- INT32 myslot = (atomic_increment32(&lock->nextindex) - 1) & (WORK_MAX_THREADS - 1);
-
-#if defined(__i386__) || defined(__x86_64__)
- register INT32 tmp;
- __asm__ __volatile__ (
- "1: clr %[tmp] ;"
- " xchg %[haslock], %[tmp] ;"
- " test %[tmp], %[tmp] ;"
- " jne 3f ;"
- "2: mov %[haslock], %[tmp] ;"
- " test %[tmp], %[tmp] ;"
- " jne 1b ;"
- " pause ;"
- " jmp 2b ;"
- "3: "
- : [haslock] "+m" (lock->slot[myslot].haslock)
- , [tmp] "=&r" (tmp)
- :
- : "cc"
- );
-#elif defined(__ppc__) || defined (__PPC__) || defined(__ppc64__) || defined(__PPC64__)
- register INT32 tmp;
- __asm__ __volatile__ (
- "1: lwarx %[tmp], 0, %[haslock] \n"
- " cmpwi %[tmp], 0 \n"
- " bne 3f \n"
- "2: lwzx %[tmp], 0, %[haslock] \n"
- " cmpwi %[tmp], 0 \n"
- " bne 1b \n"
- " nop \n"
- " nop \n"
- " b 2b \n"
- "3: li %[tmp], 0 \n"
- " stwcx. %[tmp], 0, %[haslock] \n"
- " bne- 1b \n"
- " lwsync \n"
- : [tmp] "=&r" (tmp)
- : [haslock] "r" (&lock->slot[myslot].haslock)
- : "cr0"
- );
-#else
- INT32 backoff = 1;
- while (!osd_compare_exchange32(&lock->slot[myslot].haslock, TRUE, FALSE))
- {
- INT32 backcount;
- for (backcount = 0; backcount < backoff; backcount++)
- osd_yield_processor();
- backoff <<= 1;
- }
-#endif
- return myslot;
-}
-
-
-void osd_scalable_lock_release(osd_scalable_lock *lock, INT32 myslot)
-{
-#if defined(__i386__) || defined(__x86_64__)
- register INT32 tmp = TRUE;
- __asm__ __volatile__ (
- " xchg %[haslock], %[tmp] ;"
- : [haslock] "+m" (lock->slot[(myslot + 1) & (WORK_MAX_THREADS - 1)].haslock)
- , [tmp] "+r" (tmp)
- :
- );
-#elif defined(__ppc__) || defined (__PPC__) || defined(__ppc64__) || defined(__PPC64__)
- lock->slot[(myslot + 1) & (WORK_MAX_THREADS - 1)].haslock = TRUE;
- __asm__ __volatile__ ( " lwsync " : : );
-#else
- osd_exchange32(&lock->slot[(myslot + 1) & (WORK_MAX_THREADS - 1)].haslock, TRUE);
-#endif
-}
-
-void osd_scalable_lock_free(osd_scalable_lock *lock)
-{
- free(lock);
-}
-
-static inline pthread_t osd_compare_exchange_pthread_t(pthread_t volatile *ptr, pthread_t compare, pthread_t exchange)
-{
-#ifdef PTR64
- INT64 result = compare_exchange64((INT64 volatile *)ptr, (INT64)compare, (INT64)exchange);
-#else
- INT32 result = compare_exchange32((INT32 volatile *)ptr, (INT32)compare, (INT32)exchange);
-#endif
- return (pthread_t)result;
-}
-
-static inline pthread_t osd_exchange_pthread_t(pthread_t volatile *ptr, pthread_t exchange)
-{
-#ifdef PTR64
- INT64 result = osd_exchange64((INT64 volatile *)ptr, (INT64)exchange);
-#else
- INT32 result = atomic_exchange32((INT32 volatile *)ptr, (INT32)exchange);
-#endif
- return (pthread_t)result;
-}
-
-
-//============================================================
-// osd_lock_alloc
-//============================================================
-
-osd_lock *osd_lock_alloc(void)
-{
- osd_lock *lock;
-
- lock = (osd_lock *)calloc(1, sizeof(osd_lock));
- if (lock == NULL)
- return NULL;
-
- lock->holder = 0;
- lock->count = 0;
-
- return lock;
-}
-
-//============================================================
-// osd_lock_acquire
-//============================================================
-
-void osd_lock_acquire(osd_lock *lock)
-{
- pthread_t current, prev;
-
- current = pthread_self();
- prev = osd_compare_exchange_pthread_t(&lock->holder, 0, current);
- if (prev != nullptr && prev != current)
- {
- do {
- register INT32 spin = 10000; // Convenient spin count
- register pthread_t tmp;
-#if defined(__i386__) || defined(__x86_64__)
- __asm__ __volatile__ (
- "1: pause ;"
- " mov %[holder], %[tmp] ;"
- " test %[tmp], %[tmp] ;"
- " loopne 1b ;"
- : [spin] "+c" (spin)
- , [tmp] "=&r" (tmp)
- : [holder] "m" (lock->holder)
- : "cc"
- );
-#elif defined(__ppc__) || defined(__PPC__)
- __asm__ __volatile__ (
- "1: nop \n"
- " nop \n"
- " lwzx %[tmp], 0, %[holder] \n"
- " cmpwi %[tmp], 0 \n"
- " bdnzt eq, 1b \n"
- : [spin] "+c" (spin)
- , [tmp] "=&r" (tmp)
- : [holder] "r" (&lock->holder)
- : "cr0"
- );
-#elif defined(__ppc64__) || defined(__PPC64__)
- __asm__ __volatile__ (
- "1: nop \n"
- " nop \n"
- " ldx %[tmp], 0, %[holder] \n"
- " cmpdi %[tmp], 0 \n"
- " bdnzt eq, 1b \n"
- : [spin] "+c" (spin)
- , [tmp] "=&r" (tmp)
- : [holder] "r" (&lock->holder)
- : "cr0"
- );
-#else
- while (--spin > 0 && lock->holder != NULL)
- osd_yield_processor();
-#endif
-#if 0
- /* If you mean to use locks as a blocking mechanism for extended
- * periods of time, you should do something like this. However,
- * it kills the performance of gaelco3d.
- */
- if (spin == 0)
- {
- struct timespec sleep = { 0, 100000 }, remaining;
- nanosleep(&sleep, &remaining); // sleep for 100us
- }
-#endif
- } while (osd_compare_exchange_pthread_t(&lock->holder, 0, current) != nullptr);
- }
- lock->count++;
-}
-
-//============================================================
-// osd_lock_try
-//============================================================
-
-int osd_lock_try(osd_lock *lock)
-{
- pthread_t current, prev;
-
- current = pthread_self();
- prev = osd_compare_exchange_pthread_t(&lock->holder, 0, current);
- if (prev == nullptr || prev == current)
- {
- lock->count++;
- return 1;
- }
- return 0;
-}
-
-//============================================================
-// osd_lock_release
-//============================================================
-
-void osd_lock_release(osd_lock *lock)
-{
- pthread_t current;
-
- current = pthread_self();
- if (lock->holder == current)
- {
- if (--lock->count == 0)
-#if defined(__ppc__) || defined(__PPC__) || defined(__ppc64__) || defined(__PPC64__)
- lock->holder = 0;
- __asm__ __volatile__( " lwsync " : : );
-#else
- osd_exchange_pthread_t(&lock->holder, 0);
-#endif
- return;
- }
-
- // trying to release a lock you don't hold is bad!
-// assert(lock->holder == pthread_self());
-}
-
-//============================================================
-// osd_lock_free
-//============================================================
-
-void osd_lock_free(osd_lock *lock)
-{
- free(lock);
-}
-
//============================================================
// osd_event_alloc
//============================================================
diff --git a/src/osd/modules/sync/sync_os2.cpp b/src/osd/modules/sync/sync_os2.cpp
index dba34065610..6e3265bb198 100644
--- a/src/osd/modules/sync/sync_os2.cpp
+++ b/src/osd/modules/sync/sync_os2.cpp
@@ -31,16 +31,6 @@
#define pthread_t int
#define pthread_self _gettid
-struct osd_lock {
- volatile pthread_t holder;
- INT32 count;
-#ifdef PTR64
- INT8 padding[52]; // Fill a 64-byte cache line
-#else
- INT8 padding[56]; // A bit more padding
-#endif
-};
-
struct osd_event {
HMTX hmtx;
HEV hev;
@@ -58,276 +48,6 @@ struct osd_thread {
void *param;
};
-struct osd_scalable_lock
-{
- struct
- {
- volatile INT32 haslock; // do we have the lock?
- INT32 filler[64/4-1]; // assumes a 64-byte cache line
- } slot[WORK_MAX_THREADS]; // one slot per thread
- volatile INT32 nextindex; // index of next slot to use
-};
-
-
-//============================================================
-// Scalable Locks
-//============================================================
-
-osd_scalable_lock *osd_scalable_lock_alloc(void)
-{
- osd_scalable_lock *lock;
-
- lock = (osd_scalable_lock *)calloc(1, sizeof(*lock));
- if (lock == NULL)
- return NULL;
-
- memset(lock, 0, sizeof(*lock));
- lock->slot[0].haslock = TRUE;
- return lock;
-}
-
-
-INT32 osd_scalable_lock_acquire(osd_scalable_lock *lock)
-{
- INT32 myslot = (atomic_increment32(&lock->nextindex) - 1) & (WORK_MAX_THREADS - 1);
-
-#if defined(__i386__) || defined(__x86_64__)
- register INT32 tmp;
- __asm__ __volatile__ (
- "1: clr %[tmp] ;"
- " xchg %[haslock], %[tmp] ;"
- " test %[tmp], %[tmp] ;"
- " jne 3f ;"
- "2: mov %[haslock], %[tmp] ;"
- " test %[tmp], %[tmp] ;"
- " jne 1b ;"
- " pause ;"
- " jmp 2b ;"
- "3: "
- : [haslock] "+m" (lock->slot[myslot].haslock)
- , [tmp] "=&r" (tmp)
- :
- : "%cc"
- );
-#elif defined(__ppc__) || defined (__PPC__) || defined(__ppc64__) || defined(__PPC64__)
- register INT32 tmp;
- __asm__ __volatile__ (
- "1: lwarx %[tmp], 0, %[haslock] \n"
- " cmpwi %[tmp], 0 \n"
- " bne 3f \n"
- "2: lwzx %[tmp], 0, %[haslock] \n"
- " cmpwi %[tmp], 0 \n"
- " bne 1b \n"
- " nop \n"
- " nop \n"
- " b 2b \n"
- "3: li %[tmp], 0 \n"
- " sync \n"
- " stwcx. %[tmp], 0, %[haslock] \n"
- " bne- 1b \n"
- " eieio \n"
- : [tmp] "=&r" (tmp)
- : [haslock] "r" (&lock->slot[myslot].haslock)
- : "cr0"
- );
-#else
- INT32 backoff = 1;
- while (!osd_compare_exchange32(&lock->slot[myslot].haslock, TRUE, FALSE))
- {
- INT32 backcount;
- for (backcount = 0; backcount < backoff; backcount++)
- osd_yield_processor();
- backoff <<= 1;
- }
-#endif
- return myslot;
-}
-
-
-void osd_scalable_lock_release(osd_scalable_lock *lock, INT32 myslot)
-{
-#if defined(__i386__) || defined(__x86_64__)
- register INT32 tmp = TRUE;
- __asm__ __volatile__ (
- " xchg %[haslock], %[tmp] ;"
- : [haslock] "+m" (lock->slot[(myslot + 1) & (WORK_MAX_THREADS - 1)].haslock)
- , [tmp] "+r" (tmp)
- :
- );
-#elif defined(__ppc__) || defined (__PPC__) || defined(__ppc64__) || defined(__PPC64__)
- lock->slot[(myslot + 1) & (WORK_MAX_THREADS - 1)].haslock = TRUE;
- __asm__ __volatile__ ( " eieio " : : );
-#else
- osd_exchange32(&lock->slot[(myslot + 1) & (WORK_MAX_THREADS - 1)].haslock, TRUE);
-#endif
-}
-
-void osd_scalable_lock_free(osd_scalable_lock *lock)
-{
- free(lock);
-}
-
-static inline pthread_t osd_compare_exchange_pthread_t(pthread_t volatile *ptr, pthread_t compare, pthread_t exchange)
-{
-#ifdef PTR64
- INT64 result = compare_exchange64((INT64 volatile *)ptr, (INT64)compare, (INT64)exchange);
-#else
- INT32 result = compare_exchange32((INT32 volatile *)ptr, (INT32)compare, (INT32)exchange);
-#endif
- return (pthread_t)result;
-}
-
-static inline pthread_t osd_exchange_pthread_t(pthread_t volatile *ptr, pthread_t exchange)
-{
-#ifdef PTR64
- INT64 result = osd_exchange64((INT64 volatile *)ptr, (INT64)exchange);
-#else
- INT32 result = atomic_exchange32((INT32 volatile *)ptr, (INT32)exchange);
-#endif
- return (pthread_t)result;
-}
-
-
-//============================================================
-// osd_lock_alloc
-//============================================================
-
-osd_lock *osd_lock_alloc(void)
-{
- osd_lock *lock;
-
- lock = (osd_lock *)calloc(1, sizeof(osd_lock));
- if (lock == NULL)
- return NULL;
-
- lock->holder = 0;
- lock->count = 0;
-
- return lock;
-}
-
-//============================================================
-// osd_lock_acquire
-//============================================================
-
-void osd_lock_acquire(osd_lock *lock)
-{
- pthread_t current, prev;
-
- current = pthread_self();
- prev = osd_compare_exchange_pthread_t(&lock->holder, 0, current);
- if (prev != (size_t)NULL && prev != current)
- {
- do {
- register INT32 spin = 10000; // Convenient spin count
- register pthread_t tmp;
-#if defined(__i386__) || defined(__x86_64__)
- __asm__ __volatile__ (
- "1: pause ;"
- " mov %[holder], %[tmp] ;"
- " test %[tmp], %[tmp] ;"
- " loopne 1b ;"
- : [spin] "+c" (spin)
- , [tmp] "=&r" (tmp)
- : [holder] "m" (lock->holder)
- : "%cc"
- );
-#elif defined(__ppc__) || defined(__PPC__)
- __asm__ __volatile__ (
- "1: nop \n"
- " nop \n"
- " lwzx %[tmp], 0, %[holder] \n"
- " cmpwi %[tmp], 0 \n"
- " bdnzt eq, 1b \n"
- : [spin] "+c" (spin)
- , [tmp] "=&r" (tmp)
- : [holder] "r" (&lock->holder)
- : "cr0"
- );
-#elif defined(__ppc64__) || defined(__PPC64__)
- __asm__ __volatile__ (
- "1: nop \n"
- " nop \n"
- " ldx %[tmp], 0, %[holder] \n"
- " cmpdi %[tmp], 0 \n"
- " bdnzt eq, 1b \n"
- : [spin] "+c" (spin)
- , [tmp] "=&r" (tmp)
- : [holder] "r" (&lock->holder)
- : "cr0"
- );
-#else
- while (--spin > 0 && lock->holder != NULL)
- osd_yield_processor();
-#endif
-#if 0
- /* If you mean to use locks as a blocking mechanism for extended
- * periods of time, you should do something like this. However,
- * it kills the performance of gaelco3d.
- */
- if (spin == 0)
- {
- struct timespec sleep = { 0, 100000 }, remaining;
- nanosleep(&sleep, &remaining); // sleep for 100us
- }
-#endif
- } while (osd_compare_exchange_pthread_t(&lock->holder, 0, current) != (size_t)NULL);
- }
- lock->count++;
-}
-
-//============================================================
-// osd_lock_try
-//============================================================
-
-int osd_lock_try(osd_lock *lock)
-{
- pthread_t current, prev;
-
- current = pthread_self();
- prev = osd_compare_exchange_pthread_t(&lock->holder, 0, current);
- if (prev == (size_t)NULL || prev == current)
- {
- lock->count++;
- return 1;
- }
- return 0;
-}
-
-//============================================================
-// osd_lock_release
-//============================================================
-
-void osd_lock_release(osd_lock *lock)
-{
- pthread_t current;
-
- current = pthread_self();
- if (lock->holder == current)
- {
- if (--lock->count == 0)
-#if defined(__ppc__) || defined(__PPC__) || defined(__ppc64__) || defined(__PPC64__)
- lock->holder = 0;
- __asm__ __volatile__( " eieio " : : );
-#else
- osd_exchange_pthread_t(&lock->holder, 0);
-#endif
- return;
- }
-
- // trying to release a lock you don't hold is bad!
-// assert(lock->holder == pthread_self());
-}
-
-//============================================================
-// osd_lock_free
-//============================================================
-
-void osd_lock_free(osd_lock *lock)
-{
- free(lock);
-}
-
//============================================================
// osd_event_alloc
//============================================================
diff --git a/src/osd/modules/sync/sync_sdl.cpp b/src/osd/modules/sync/sync_sdl.cpp
index 90969b2a068..8a525723a45 100644
--- a/src/osd/modules/sync/sync_sdl.cpp
+++ b/src/osd/modules/sync/sync_sdl.cpp
@@ -51,138 +51,6 @@ struct osd_thread {
void *param;
};
-struct osd_scalable_lock
-{
- SDL_mutex * mutex;
-};
-
-//============================================================
-// Scalable Locks
-//============================================================
-
-osd_scalable_lock *osd_scalable_lock_alloc(void)
-{
- osd_scalable_lock *lock;
-
- lock = (osd_scalable_lock *)calloc(1, sizeof(*lock));
- if (lock == NULL)
- return NULL;
-
- lock->mutex = SDL_CreateMutex();
- return lock;
-}
-
-
-INT32 osd_scalable_lock_acquire(osd_scalable_lock *lock)
-{
- SDL_mutexP(lock->mutex);
- return 0;
-}
-
-
-void osd_scalable_lock_release(osd_scalable_lock *lock, INT32 myslot)
-{
- SDL_mutexV(lock->mutex);
-}
-
-void osd_scalable_lock_free(osd_scalable_lock *lock)
-{
- SDL_DestroyMutex(lock->mutex);
- free(lock);
-}
-
-//============================================================
-// osd_lock_alloc
-//============================================================
-
-osd_lock *osd_lock_alloc(void)
-{
- hidden_mutex_t *mutex;
-
- mutex = (hidden_mutex_t *)calloc(1, sizeof(hidden_mutex_t));
- if (mutex == NULL)
- return NULL;
-
- mutex->id = SDL_CreateMutex();
-
- return (osd_lock *)mutex;
-}
-
-//============================================================
-// osd_lock_acquire
-//============================================================
-
-void osd_lock_acquire(osd_lock *lock)
-{
- hidden_mutex_t *mutex = (hidden_mutex_t *) lock;
-
- LOG(("osd_lock_acquire"));
- /* get the lock */
- mutex->locked++; /* signal that we are *about* to lock - prevent osd_lock_try */
- SDL_mutexP(mutex->id);
- mutex->threadid = SDL_ThreadID();
-}
-
-//============================================================
-// osd_lock_try
-//============================================================
-
-int osd_lock_try(osd_lock *lock)
-{
- hidden_mutex_t *mutex = (hidden_mutex_t *) lock;
-
- LOG(("osd_lock_try"));
- if (mutex->locked && mutex->threadid == SDL_ThreadID())
- {
- /* get the lock */
- SDL_mutexP(mutex->id);
- mutex->locked++;
- mutex->threadid = SDL_ThreadID();
- return 1;
- }
- else if ((mutex->locked == 0))
- {
- /* get the lock */
- mutex->locked++;
- SDL_mutexP(mutex->id);
- mutex->threadid = SDL_ThreadID();
- return 1;
- }
- else
- {
- /* fail */
- return 0;
- }
-}
-
-//============================================================
-// osd_lock_release
-//============================================================
-
-void osd_lock_release(osd_lock *lock)
-{
- hidden_mutex_t *mutex = (hidden_mutex_t *) lock;
-
- LOG(("osd_lock_release"));
- mutex->locked--;
- if (mutex->locked == 0)
- mutex->threadid = -1;
- SDL_mutexV(mutex->id);
-}
-
-//============================================================
-// osd_lock_free
-//============================================================
-
-void osd_lock_free(osd_lock *lock)
-{
- hidden_mutex_t *mutex = (hidden_mutex_t *) lock;
-
- LOG(("osd_lock_free"));
- //osd_lock_release(lock);
- SDL_DestroyMutex(mutex->id);
- free(mutex);
-}
//============================================================
// osd_event_alloc
diff --git a/src/osd/modules/sync/sync_tc.cpp b/src/osd/modules/sync/sync_tc.cpp
index 06dc699edce..64a6a760e96 100644
--- a/src/osd/modules/sync/sync_tc.cpp
+++ b/src/osd/modules/sync/sync_tc.cpp
@@ -58,123 +58,6 @@ struct osd_thread {
pthread_t thread;
};
-struct osd_scalable_lock
-{
- osd_lock *lock;
-};
-
-//============================================================
-// Scalable Locks
-//============================================================
-
-osd_scalable_lock *osd_scalable_lock_alloc(void)
-{
- osd_scalable_lock *lock;
-
- lock = (osd_scalable_lock *)calloc(1, sizeof(*lock));
- if (lock == NULL)
- return NULL;
-
- lock->lock = osd_lock_alloc();
- return lock;
-}
-
-
-INT32 osd_scalable_lock_acquire(osd_scalable_lock *lock)
-{
- osd_lock_acquire(lock->lock);
- return 0;
-}
-
-
-void osd_scalable_lock_release(osd_scalable_lock *lock, INT32 myslot)
-{
- osd_lock_release(lock->lock);
-}
-
-void osd_scalable_lock_free(osd_scalable_lock *lock)
-{
- osd_lock_free(lock->lock);
- free(lock);
-}
-
-
-//============================================================
-// osd_lock_alloc
-//============================================================
-
-osd_lock *osd_lock_alloc(void)
-{
- hidden_mutex_t *mutex;
- pthread_mutexattr_t mtxattr;
-
- mutex = (hidden_mutex_t *)calloc(1, sizeof(hidden_mutex_t));
- if (mutex == NULL)
- return NULL;
-
- pthread_mutexattr_init(&mtxattr);
- pthread_mutexattr_settype(&mtxattr, PTHREAD_MUTEX_RECURSIVE);
- pthread_mutex_init(&mutex->id, &mtxattr);
-
- return (osd_lock *)mutex;
-}
-
-//============================================================
-// osd_lock_acquire
-//============================================================
-
-void osd_lock_acquire(osd_lock *lock)
-{
- hidden_mutex_t *mutex = (hidden_mutex_t *) lock;
- int r;
-
- r = pthread_mutex_lock(&mutex->id);
- if (r==0)
- return;
- //osd_printf_error("Error on lock: %d: %s\n", r, strerror(r));
-}
-
-//============================================================
-// osd_lock_try
-//============================================================
-
-int osd_lock_try(osd_lock *lock)
-{
- hidden_mutex_t *mutex = (hidden_mutex_t *) lock;
- int r;
-
- r = pthread_mutex_trylock(&mutex->id);
- if (r==0)
- return 1;
- //if (r!=EBUSY)
- // osd_printf_error("Error on trylock: %d: %s\n", r, strerror(r));
- return 0;
-}
-
-//============================================================
-// osd_lock_release
-//============================================================
-
-void osd_lock_release(osd_lock *lock)
-{
- hidden_mutex_t *mutex = (hidden_mutex_t *) lock;
-
- pthread_mutex_unlock(&mutex->id);
-}
-
-//============================================================
-// osd_lock_free
-//============================================================
-
-void osd_lock_free(osd_lock *lock)
-{
- hidden_mutex_t *mutex = (hidden_mutex_t *) lock;
-
- //pthread_mutex_unlock(&mutex->id);
- pthread_mutex_destroy(&mutex->id);
- free(mutex);
-}
-
//============================================================
// osd_event_alloc
//============================================================
diff --git a/src/osd/modules/sync/sync_windows.cpp b/src/osd/modules/sync/sync_windows.cpp
index 9439d68b72c..c744f345e6f 100644
--- a/src/osd/modules/sync/sync_windows.cpp
+++ b/src/osd/modules/sync/sync_windows.cpp
@@ -23,8 +23,6 @@
//============================================================
#define DEBUG_SLOW_LOCKS 0
-#define USE_SCALABLE_LOCKS (0)
-
//============================================================
@@ -33,11 +31,6 @@
typedef BOOL (WINAPI *try_enter_critical_section_ptr)(LPCRITICAL_SECTION lpCriticalSection);
-struct osd_lock
-{
- CRITICAL_SECTION critsect;
-};
-
struct osd_event
{
void * ptr;
@@ -49,113 +42,6 @@ struct osd_thread {
void *param;
};
-struct osd_scalable_lock
-{
-#if USE_SCALABLE_LOCKS
- struct
- {
- volatile INT32 haslock; // do we have the lock?
- INT32 filler[64/4-1]; // assumes a 64-byte cache line
- } slot[WORK_MAX_THREADS]; // one slot per thread
- volatile INT32 nextindex; // index of next slot to use
-#else
- CRITICAL_SECTION section;
-#endif
-};
-
-
-//============================================================
-// GLOBAL VARIABLES
-//============================================================
-
-static try_enter_critical_section_ptr try_enter_critical_section = nullptr;
-static int checked_for_try_enter = FALSE;
-
-
-
-//============================================================
-// osd_lock_alloc
-//============================================================
-
-osd_lock *osd_lock_alloc(void)
-{
- osd_lock *lock = (osd_lock *)malloc(sizeof(*lock));
- if (lock == nullptr)
- return nullptr;
- InitializeCriticalSection(&lock->critsect);
- return lock;
-}
-
-
-//============================================================
-// osd_lock_acquire
-//============================================================
-
-void osd_lock_acquire(osd_lock *lock)
-{
-#if DEBUG_SLOW_LOCKS
- osd_ticks_t ticks = osd_ticks();
-#endif
-
- // block until we can acquire the lock
- EnterCriticalSection(&lock->critsect);
-
-#if DEBUG_SLOW_LOCKS
- // log any locks that take more than 1ms
- ticks = osd_ticks() - ticks;
- if (ticks > osd_ticks_per_second() / 1000) osd_printf_debug("Blocked %d ticks on lock acquire\n", (int)ticks);
-#endif
-}
-
-
-//============================================================
-// osd_lock_try
-//============================================================
-
-int osd_lock_try(osd_lock *lock)
-{
- int result = TRUE;
-
- // if we haven't yet checked for the TryEnter API, do it now
- if (!checked_for_try_enter)
- {
- // see if we can use TryEnterCriticalSection
- HMODULE library = LoadLibrary(TEXT("kernel32.dll"));
- if (library != nullptr)
- try_enter_critical_section = (try_enter_critical_section_ptr)GetProcAddress(library, "TryEnterCriticalSection");
- checked_for_try_enter = TRUE;
- }
-
- // if we have it, use it, otherwise just block
- if (try_enter_critical_section != nullptr)
- result = (*try_enter_critical_section)(&lock->critsect);
- else
- EnterCriticalSection(&lock->critsect);
- return result;
-}
-
-
-//============================================================
-// osd_lock_release
-//============================================================
-
-void osd_lock_release(osd_lock *lock)
-{
- LeaveCriticalSection(&lock->critsect);
-}
-
-
-//============================================================
-// osd_lock_free
-//============================================================
-
-void osd_lock_free(osd_lock *lock)
-{
- DeleteCriticalSection(&lock->critsect);
- free(lock);
-}
-
-
//============================================================
// win_compare_exchange32
//============================================================
@@ -317,66 +203,3 @@ int osd_thread_cpu_affinity(osd_thread *thread, UINT32 mask)
{
return TRUE;
}
-
-//============================================================
-// Scalable Locks
-//============================================================
-
-osd_scalable_lock *osd_scalable_lock_alloc(void)
-{
- osd_scalable_lock *lock;
-
- lock = (osd_scalable_lock *)calloc(1, sizeof(*lock));
- if (lock == nullptr)
- return nullptr;
-
- memset(lock, 0, sizeof(*lock));
-#if USE_SCALABLE_LOCKS
- lock->slot[0].haslock = TRUE;
-#else
- InitializeCriticalSection(&lock->section);
-#endif
- return lock;
-}
-
-
-INT32 osd_scalable_lock_acquire(osd_scalable_lock *lock)
-{
-#if USE_SCALABLE_LOCKS
- INT32 myslot = (atomic_increment32(&lock->nextindex) - 1) & (WORK_MAX_THREADS - 1);
- INT32 backoff = 1;
-
- while (!lock->slot[myslot].haslock)
- {
- INT32 backcount;
- for (backcount = 0; backcount < backoff; backcount++)
- osd_yield_processor();
- backoff <<= 1;
- }
- lock->slot[myslot].haslock = FALSE;
- return myslot;
-#else
- EnterCriticalSection(&lock->section);
- return 0;
-#endif
-}
-
-
-void osd_scalable_lock_release(osd_scalable_lock *lock, INT32 myslot)
-{
-#if USE_SCALABLE_LOCKS
- atomic_exchange32(&lock->slot[(myslot + 1) & (WORK_MAX_THREADS - 1)].haslock, TRUE);
-#else
- LeaveCriticalSection(&lock->section);
-#endif
-}
-
-
-void osd_scalable_lock_free(osd_scalable_lock *lock)
-{
-#if USE_SCALABLE_LOCKS
-#else
- DeleteCriticalSection(&lock->section);
-#endif
- free(lock);
-}
diff --git a/src/osd/modules/sync/work_osd.cpp b/src/osd/modules/sync/work_osd.cpp
index e5582584666..3238fdfe792 100644
--- a/src/osd/modules/sync/work_osd.cpp
+++ b/src/osd/modules/sync/work_osd.cpp
@@ -18,6 +18,7 @@
#include <stdint.h>
#endif
#endif
+#include <mutex>
// MAME headers
#include "osdcore.h"
@@ -109,7 +110,7 @@ struct work_thread_info
struct osd_work_queue
{
- osd_scalable_lock * lock; // lock for protecting the queue
+ std::mutex *lock; // lock for protecting the queue
osd_work_item * volatile list; // list of items in the queue
osd_work_item ** volatile tailptr; // pointer to the tail pointer of work items in the queue
osd_work_item * volatile free; // free list of work items
@@ -188,7 +189,7 @@ osd_work_queue *osd_work_queue_alloc(int flags)
goto error;
// initialize the critical section
- queue->lock = osd_scalable_lock_alloc();
+ queue->lock = new std::mutex();
if (queue->lock == NULL)
goto error;
@@ -421,7 +422,7 @@ void osd_work_queue_free(osd_work_queue *queue)
printf("Spin loops = %9d\n", queue->spinloops);
#endif
- osd_scalable_lock_free(queue->lock);
+ delete queue->lock;
// free the queue itself
osd_free(queue);
}
@@ -435,7 +436,6 @@ osd_work_item *osd_work_item_queue_multiple(osd_work_queue *queue, osd_work_call
{
osd_work_item *itemlist = NULL, *lastitem = NULL;
osd_work_item **item_tailptr = &itemlist;
- INT32 lockslot;
int itemnum;
// loop over items, building up a local list of work
@@ -444,12 +444,14 @@ osd_work_item *osd_work_item_queue_multiple(osd_work_queue *queue, osd_work_call
osd_work_item *item;
// first allocate a new work item; try the free list first
- INT32 myslot = osd_scalable_lock_acquire(queue->lock);
- do
{
- item = (osd_work_item *)queue->free;
- } while (item != NULL && compare_exchange_ptr((PVOID volatile *)&queue->free, item, item->next) != item);
- osd_scalable_lock_release(queue->lock, myslot);
+ queue->lock->lock();
+ do
+ {
+ item = (osd_work_item *)queue->free;
+ } while (item != NULL && compare_exchange_ptr((PVOID volatile *)&queue->free, item, item->next) != item);
+ queue->lock->unlock();
+ }
// if nothing, allocate something new
if (item == NULL)
@@ -482,10 +484,12 @@ osd_work_item *osd_work_item_queue_multiple(osd_work_queue *queue, osd_work_call
}
// enqueue the whole thing within the critical section
- lockslot = osd_scalable_lock_acquire(queue->lock);
- *queue->tailptr = itemlist;
- queue->tailptr = item_tailptr;
- osd_scalable_lock_release(queue->lock, lockslot);
+ {
+ queue->lock->lock();
+ *queue->tailptr = itemlist;
+ queue->tailptr = item_tailptr;
+ queue->lock->unlock();
+ }
// increment the number of items in the queue
atomic_add32(&queue->items, numitems);
@@ -539,9 +543,9 @@ int osd_work_item_wait(osd_work_item *item, osd_ticks_t timeout)
// if we don't have an event, create one
if (item->event == NULL)
{
- INT32 lockslot = osd_scalable_lock_acquire(item->queue->lock);
+ item->queue->lock->lock();
item->event = osd_event_alloc(TRUE, FALSE); // manual reset, not signalled
- osd_scalable_lock_release(item->queue->lock, lockslot);
+ item->queue->lock->unlock();
}
else
osd_event_reset(item->event);
@@ -584,13 +588,13 @@ void osd_work_item_release(osd_work_item *item)
osd_work_item_wait(item, 100 * osd_ticks_per_second());
// add us to the free list on our queue
- INT32 lockslot = osd_scalable_lock_acquire(item->queue->lock);
+ item->queue->lock->lock();
do
{
next = (osd_work_item *)item->queue->free;
item->next = next;
} while (compare_exchange_ptr((PVOID volatile *)&item->queue->free, next, item) != next);
- osd_scalable_lock_release(item->queue->lock, lockslot);
+ item->queue->lock->unlock();
}
@@ -711,7 +715,7 @@ static void worker_thread_process(osd_work_queue *queue, work_thread_info *threa
// use a critical section to synchronize the removal of items
{
- INT32 lockslot = osd_scalable_lock_acquire(queue->lock);
+ queue->lock->lock();
if (queue->list == NULL)
{
end_loop = true;
@@ -727,7 +731,7 @@ static void worker_thread_process(osd_work_queue *queue, work_thread_info *threa
queue->tailptr = (osd_work_item **)&queue->list;
}
}
- osd_scalable_lock_release(queue->lock, lockslot);
+ queue->lock->unlock();
}
if (end_loop)
@@ -753,13 +757,13 @@ static void worker_thread_process(osd_work_queue *queue, work_thread_info *threa
// set the result and signal the event
else
{
- INT32 lockslot = osd_scalable_lock_acquire(item->queue->lock);
+ queue->lock->lock();
if (item->event != NULL)
{
osd_event_set(item->event);
add_to_stat(&item->queue->setevents, 1);
}
- osd_scalable_lock_release(item->queue->lock, lockslot);
+ queue->lock->unlock();
}
// if we removed an item and there's still work to do, bump the stats
@@ -780,8 +784,8 @@ static void worker_thread_process(osd_work_queue *queue, work_thread_info *threa
bool queue_has_list_items(osd_work_queue *queue)
{
- INT32 lockslot = osd_scalable_lock_acquire(queue->lock);
+ queue->lock->lock();
bool has_list_items = (queue->list != NULL);
- osd_scalable_lock_release(queue->lock, lockslot);
+ queue->lock->unlock();
return has_list_items;
}
diff --git a/src/osd/osdcore.h b/src/osd/osdcore.h
index 0a4f351e5e9..cd08fa8aa4e 100644
--- a/src/osd/osdcore.h
+++ b/src/osd/osdcore.h
@@ -440,93 +440,6 @@ osd_ticks_t osd_ticks_per_second(void);
-----------------------------------------------------------------------------*/
void osd_sleep(osd_ticks_t duration);
-
-
-/***************************************************************************
- SYNCHRONIZATION INTERFACES
-***************************************************************************/
-
-/* osd_lock is an opaque type which represents a recursive lock/mutex */
-struct osd_lock;
-
-
-/*-----------------------------------------------------------------------------
- osd_lock_alloc: allocate a new lock
-
- Parameters:
-
- None.
-
- Return value:
-
- A pointer to the allocated lock.
------------------------------------------------------------------------------*/
-osd_lock *osd_lock_alloc(void);
-
-
-/*-----------------------------------------------------------------------------
- osd_lock_acquire: acquire a lock, blocking until it can be acquired
-
- Parameters:
-
- lock - a pointer to a previously allocated osd_lock.
-
- Return value:
-
- None.
-
- Notes:
-
- osd_locks are defined to be recursive. If the current thread already
- owns the lock, this function should return immediately.
------------------------------------------------------------------------------*/
-void osd_lock_acquire(osd_lock *lock);
-
-
-/*-----------------------------------------------------------------------------
- osd_lock_try: attempt to acquire a lock
-
- Parameters:
-
- lock - a pointer to a previously allocated osd_lock.
-
- Return value:
-
- TRUE if the lock was available and was acquired successfully.
- FALSE if the lock was already in used by another thread.
------------------------------------------------------------------------------*/
-int osd_lock_try(osd_lock *lock);
-
-
-/*-----------------------------------------------------------------------------
- osd_lock_release: release control of a lock that has been acquired
-
- Parameters:
-
- lock - a pointer to a previously allocated osd_lock.
-
- Return value:
-
- None.
------------------------------------------------------------------------------*/
-void osd_lock_release(osd_lock *lock);
-
-
-/*-----------------------------------------------------------------------------
- osd_lock_free: free the memory and resources associated with an osd_lock
-
- Parameters:
-
- lock - a pointer to a previously allocated osd_lock.
-
- Return value:
-
- None.
------------------------------------------------------------------------------*/
-void osd_lock_free(osd_lock *lock);
-
-
-
/***************************************************************************
WORK ITEM INTERFACES
***************************************************************************/
diff --git a/src/osd/osdmini/minimisc.cpp b/src/osd/osdmini/minimisc.cpp
index 2bf613b0b7c..9891447359b 100644
--- a/src/osd/osdmini/minimisc.cpp
+++ b/src/osd/osdmini/minimisc.cpp
@@ -103,11 +103,9 @@ int osd_setenv(const char *name, const char *value, int overwrite)
//============================================================
// osd_subst_env
//============================================================
-int osd_subst_env(char **dst, const char *src)
+void osd_subst_env(char **dst, const char *src)
{
*dst = (char *)osd_malloc_array(strlen(src) + 1);
if (*dst != nullptr)
strcpy(*dst, src);
-
- return 0;
}
diff --git a/src/osd/osdmini/minisync.cpp b/src/osd/osdmini/minisync.cpp
deleted file mode 100644
index a78765f29ed..00000000000
--- a/src/osd/osdmini/minisync.cpp
+++ /dev/null
@@ -1,66 +0,0 @@
-// license:BSD-3-Clause
-// copyright-holders:Aaron Giles
-//============================================================
-//
-// minisync.c - Minimal core synchronization functions
-//
-//============================================================
-
-#include "osdcore.h"
-
-
-//============================================================
-// osd_lock_alloc
-//============================================================
-
-osd_lock *osd_lock_alloc(void)
-{
- // the minimal implementation does not support threading
- // just return a dummy value here
- return (osd_lock *)1;
-}
-
-
-//============================================================
-// osd_lock_acquire
-//============================================================
-
-void osd_lock_acquire(osd_lock *lock)
-{
- // the minimal implementation does not support threading
- // the acquire always "succeeds"
-}
-
-
-//============================================================
-// osd_lock_try
-//============================================================
-
-int osd_lock_try(osd_lock *lock)
-{
- // the minimal implementation does not support threading
- // the acquire always "succeeds"
- return TRUE;
-}
-
-
-//============================================================
-// osd_lock_release
-//============================================================
-
-void osd_lock_release(osd_lock *lock)
-{
- // the minimal implementation does not support threading
- // do nothing here
-}
-
-
-//============================================================
-// osd_lock_free
-//============================================================
-
-void osd_lock_free(osd_lock *lock)
-{
- // the minimal implementation does not support threading
- // do nothing here
-}
diff --git a/src/osd/sdl/input.cpp b/src/osd/sdl/input.cpp
index 4dfb5bd0ad0..a050cbf024b 100644
--- a/src/osd/sdl/input.cpp
+++ b/src/osd/sdl/input.cpp
@@ -15,6 +15,7 @@
#include "sdlinc.h"
#include <ctype.h>
#include <stddef.h>
+#include <mutex>
#if USE_XINPUT
// for xinput
@@ -154,7 +155,7 @@ struct device_info
//============================================================
// global states
-static osd_lock * input_lock;
+static std::mutex input_lock;
static UINT8 input_paused;
static sdl_window_info * focus_window = NULL;
@@ -1380,10 +1381,6 @@ bool sdl_osd_interface::input_init()
app_has_mouse_focus = 1;
- // allocate a lock for input synchronizations
- input_lock = osd_lock_alloc();
- assert_always(input_lock != NULL, "Failed to allocate input_lock");
-
// register the keyboards
sdlinput_register_keyboards(machine());
@@ -1441,9 +1438,6 @@ void sdl_osd_interface::input_resume()
void sdl_osd_interface::input_exit()
{
- // free the lock
- osd_lock_free(input_lock);
-
// deregister
sdlinput_deregister_joysticks(machine());
@@ -1568,7 +1562,7 @@ void sdlinput_process_events_buf()
if (SDLMAME_EVENTS_IN_WORKER_THREAD)
{
- osd_lock_acquire(input_lock);
+ std::lock_guard<std::mutex> lock(input_lock);
#if (SDLMAME_SDL2)
/* Make sure we get all pending events */
SDL_PumpEvents();
@@ -1580,7 +1574,6 @@ void sdlinput_process_events_buf()
else
osd_printf_warning("Event Buffer Overflow!\n");
}
- osd_lock_release(input_lock);
}
else
SDL_PumpEvents();
@@ -1709,11 +1702,10 @@ void sdlinput_poll(running_machine &machine)
if (SDLMAME_EVENTS_IN_WORKER_THREAD)
{
- osd_lock_acquire(input_lock);
+ std::lock_guard<std::mutex> lock(input_lock);
memcpy(loc_event_buf, event_buf, sizeof(event_buf));
loc_event_buf_count = event_buf_count;
event_buf_count = 0;
- osd_lock_release(input_lock);
bufp = 0;
}
@@ -1862,7 +1854,43 @@ void sdlinput_poll(running_machine &machine)
}
}
}
+#if (!SDLMAME_SDL2)
+ else if (event.button.button == 4) // SDL_BUTTON_WHEELUP
+ {
+ int cx, cy;
+ sdl_window_info *window = GET_FOCUS_WINDOW(&event.button);
+ if (window != NULL && window->xy_to_render_target(event.button.x,event.button.y, &cx, &cy) )
+ {
+ machine.ui_input().push_mouse_wheel_event(window->target(), cx, cy, 120, 3);
+ }
+ }
+
+ else if (event.button.button == 5) // SDL_BUTTON_WHEELDOWN
+ {
+ int cx, cy;
+ sdl_window_info *window = GET_FOCUS_WINDOW(&event.button);
+ if (window != NULL && window->xy_to_render_target(event.button.x,event.button.y, &cx, &cy) )
+ {
+ machine.ui_input().push_mouse_wheel_event(window->target(), cx, cy, -120, 3);
+ }
+ }
+#endif
break;
+#if (SDLMAME_SDL2)
+ case SDL_MOUSEWHEEL:
+#ifdef SDL2_MULTIAPI
+ devinfo = generic_device_find_index(mouse_list, mouse_map.logical[event.wheel.which]);
+#else
+ devinfo = generic_device_find_index(mouse_list, mouse_map.logical[0]);
+#endif
+ if (devinfo)
+ {
+ sdl_window_info *window = GET_FOCUS_WINDOW(&event.wheel);
+ if (window != NULL)
+ machine.ui_input().push_mouse_wheel_event(window->target(), 0, 0, event.wheel.y, 3);
+ }
+ break;
+#endif
case SDL_MOUSEBUTTONUP:
#ifdef SDL2_MULTIAPI
devinfo = generic_device_find_index(mouse_list, mouse_map.logical[event.button.which]);
@@ -1978,8 +2006,8 @@ void sdlinput_poll(running_machine &machine)
#endif
{
//printf("event data1,data2 %d x %d %ld\n", event.window.data1, event.window.data2, sizeof(SDL_Event));
- window->resize(event.window.data1, event.window.data2);
- }
+ window->resize(event.window.data1, event.window.data2);
+ }
}
focus_window = window;
break;
diff --git a/src/osd/sdl/sdlfile.cpp b/src/osd/sdl/sdlfile.cpp
index 9cf18f30b9d..1f6832b03dd 100644
--- a/src/osd/sdl/sdlfile.cpp
+++ b/src/osd/sdl/sdlfile.cpp
@@ -134,6 +134,8 @@ file_error osd_open(const char *path, UINT32 openflags, osd_file **file, UINT64
{
(*file)->type = SDLFILE_SOCKET;
filerr = sdl_open_socket(path, openflags, file, filesize);
+ if(filerr != FILERR_NONE && (*file)->socket != -1)
+ close((*file)->socket);
goto error;
}
@@ -576,7 +578,6 @@ void osd_subst_env(char **dst, const char *src)
// start with an environment variable?
if (*dst[0] == '$')
{
-
envstr = (char *) osd_malloc_array(strlen(src)+1);
strcpy(envstr, src);
diff --git a/src/osd/windows/input.cpp b/src/osd/windows/input.cpp
index 0165e4820f0..9157036ffd5 100644
--- a/src/osd/windows/input.cpp
+++ b/src/osd/windows/input.cpp
@@ -39,6 +39,7 @@
#include "config.h"
#include "winutil.h"
+#include <mutex>
//============================================================
// PARAMETERS
@@ -166,7 +167,7 @@ typedef /*WINUSERAPI*/ BOOL (WINAPI *register_rawinput_devices_ptr)(IN PCRAWINPU
// global states
static bool input_enabled;
-static osd_lock * input_lock;
+static std::mutex input_lock;
static bool input_paused;
static DWORD last_poll;
@@ -469,10 +470,6 @@ static inline INT32 normalize_absolute_axis(INT32 raw, INT32 rawmin, INT32 rawma
bool windows_osd_interface::input_init()
{
- // allocate a lock for input synchronizations, since messages sometimes come from another thread
- input_lock = osd_lock_alloc();
- assert_always(input_lock != NULL, "Failed to allocate input_lock");
-
// decode the options
lightgun_shared_axis_mode = downcast<windows_options &>(machine().options()).dual_lightgun();
@@ -512,15 +509,8 @@ void windows_osd_interface::input_resume()
void windows_osd_interface::input_exit()
{
// acquire the lock and turn off input (this ensures everyone is done)
- if (input_lock != NULL)
- {
- osd_lock_acquire(input_lock);
- input_enabled = false;
- osd_lock_release(input_lock);
-
- // free the lock
- osd_lock_free(input_lock);
- }
+ std::lock_guard<std::mutex> lock(input_lock);
+ input_enabled = false;
}
@@ -613,7 +603,7 @@ BOOL wininput_handle_mouse_button(int button, int down, int x, int y)
}
// take the lock
- osd_lock_acquire(input_lock);
+ std::lock_guard<std::mutex> lock(input_lock);
// set the button state
devinfo->mouse.state.rgbButtons[button] = down ? 0x80 : 0x00;
@@ -632,9 +622,6 @@ BOOL wininput_handle_mouse_button(int button, int down, int x, int y)
devinfo->mouse.state.lX = normalize_absolute_axis(mousepos.x, client_rect.left, client_rect.right);
devinfo->mouse.state.lY = normalize_absolute_axis(mousepos.y, client_rect.top, client_rect.bottom);
}
-
- // release the lock
- osd_lock_release(input_lock);
return TRUE;
}
@@ -661,7 +648,7 @@ BOOL wininput_handle_raw(HANDLE device)
// if necessary, allocate a temporary buffer and fetch the data
if (size > sizeof(small_buffer))
{
- data = global_alloc_array(BYTE, size);
+ data = global_alloc_array_nothrow(BYTE, size);
if (data == NULL)
return result;
}
@@ -675,18 +662,16 @@ BOOL wininput_handle_raw(HANDLE device)
// handle keyboard input
if (input->header.dwType == RIM_TYPEKEYBOARD)
{
- osd_lock_acquire(input_lock);
+ std::lock_guard<std::mutex> lock(input_lock);
rawinput_keyboard_update(input->header.hDevice, &input->data.keyboard);
- osd_lock_release(input_lock);
result = TRUE;
}
// handle mouse input
else if (input->header.dwType == RIM_TYPEMOUSE)
{
- osd_lock_acquire(input_lock);
+ std::lock_guard<std::mutex> lock(input_lock);
rawinput_mouse_update(input->header.hDevice, &input->data.mouse);
- osd_lock_release(input_lock);
result = TRUE;
}
}
@@ -2201,14 +2186,13 @@ static void rawinput_mouse_poll(device_info *devinfo)
poll_if_necessary(devinfo->machine());
// copy the accumulated raw state to the actual state
- osd_lock_acquire(input_lock);
+ std::lock_guard<std::mutex> lock(input_lock);
devinfo->mouse.state.lX = devinfo->mouse.raw_x;
devinfo->mouse.state.lY = devinfo->mouse.raw_y;
devinfo->mouse.state.lZ = devinfo->mouse.raw_z;
devinfo->mouse.raw_x = 0;
devinfo->mouse.raw_y = 0;
devinfo->mouse.raw_z = 0;
- osd_lock_release(input_lock);
}
diff --git a/src/osd/windows/output.cpp b/src/osd/windows/output.cpp
index 19d06f9ebc4..ef3c563e3ac 100644
--- a/src/osd/windows/output.cpp
+++ b/src/osd/windows/output.cpp
@@ -309,12 +309,12 @@ static LRESULT send_id_string(running_machine &machine, HWND hwnd, LPARAM id)
static void notifier_callback(const char *outname, INT32 value, void *param)
{
- registered_client *client;
+ registered_client *client;
// loop over clients and notify them
- for (client = clientlist; client != nullptr; client = client->next)
+ for (client = clientlist; client != nullptr; client = client->next)
{
- printf("there are clients\n");
- if (param == nullptr || param == client)
+ if (param == nullptr || param == client->machine) {
PostMessage(client->hwnd, om_mame_update_state, client->machine->output().name_to_id(outname), value);
+ }
}
}
diff --git a/src/osd/windows/window.cpp b/src/osd/windows/window.cpp
index 6111859a255..dd219949534 100644
--- a/src/osd/windows/window.cpp
+++ b/src/osd/windows/window.cpp
@@ -133,11 +133,11 @@ struct mtlog
};
static mtlog mtlog[100000];
-static volatile LONG mtlogindex;
+static volatile INT32 mtlogindex;
void mtlog_add(const char *event)
{
- int index = atomic_increment32((LONG *) &mtlogindex) - 1;
+ int index = atomic_increment32((INT32 *) &mtlogindex) - 1;
if (index < ARRAY_LENGTH(mtlog))
{
mtlog[index].timestamp = osd_ticks();
@@ -262,7 +262,6 @@ void windows_osd_interface::window_exit()
win_window_list = temp->m_next;
temp->destroy();
global_free(temp);
-
}
// kill the drawers
@@ -300,7 +299,6 @@ win_window_info::win_window_info(running_machine &machine)
m_fullscreen(0),
m_fullscreen_safe(0),
m_aspect(0),
- m_render_lock(NULL),
m_target(NULL),
m_targetview(0),
m_targetorient(0),
@@ -672,9 +670,6 @@ void win_window_info::create(running_machine &machine, int index, osd_monitor_in
*last_window_ptr = window;
last_window_ptr = &window->m_next;
- // create a lock that we can use to skip blitting
- window->m_render_lock = osd_lock_alloc();
-
// load the layout
window->m_target = machine.render().target_alloc();
@@ -746,11 +741,6 @@ void win_window_info::destroy()
// free the render target
machine().render().target_free(m_target);
-
- // FIXME: move to destructor
- // free the lock
- osd_lock_free(m_render_lock);
-
}
@@ -792,15 +782,15 @@ void win_window_info::update()
// if we're visible and running and not in the middle of a resize, draw
if (m_hwnd != NULL && m_target != NULL && m_renderer != NULL)
{
- int got_lock = TRUE;
+ bool got_lock = true;
mtlog_add("winwindow_video_window_update: try lock");
// only block if we're throttled
if (machine().video().throttled() || timeGetTime() - last_update_time > 250)
- osd_lock_acquire(m_render_lock);
+ m_render_lock.lock();
else
- got_lock = osd_lock_try(m_render_lock);
+ got_lock = m_render_lock.try_lock();
// only render if we were able to get the lock
if (got_lock)
@@ -810,7 +800,7 @@ void win_window_info::update()
mtlog_add("winwindow_video_window_update: got lock");
// don't hold the lock; we just used it to see if rendering was still happening
- osd_lock_release(m_render_lock);
+ m_render_lock.unlock();
// ensure the target bounds are up-to-date, and then get the primitives
primlist = m_renderer->get_primitives();
@@ -1329,6 +1319,14 @@ LRESULT CALLBACK win_window_info::video_window_proc(HWND wnd, UINT message, WPAR
window->machine().ui_input().push_char_event(window->m_target, (unicode_char) wparam);
break;
+ case WM_MOUSEWHEEL:
+ {
+ UINT ucNumLines = 3; // default
+ SystemParametersInfo(SPI_GETWHEELSCROLLLINES, 0, &ucNumLines, 0);
+ window->machine().ui_input().push_mouse_wheel_event(window->m_target, GET_X_LPARAM(lparam), GET_Y_LPARAM(lparam), GET_WHEEL_DELTA_WPARAM(wparam), ucNumLines);
+ break;
+ }
+
// pause the system when we start a menu or resize
case WM_ENTERSIZEMOVE:
window->m_resize_state = RESIZE_STATE_RESIZING;
@@ -1411,9 +1409,9 @@ LRESULT CALLBACK win_window_info::video_window_proc(HWND wnd, UINT message, WPAR
case WM_DESTROY:
if (!(window->m_renderer == NULL))
{
- window->m_renderer->destroy();
- global_free(window->m_renderer);
- window->m_renderer = NULL;
+ window->m_renderer->destroy();
+ global_free(window->m_renderer);
+ window->m_renderer = NULL;
}
window->m_hwnd = NULL;
return DefWindowProc(wnd, message, wparam, lparam);
@@ -1492,7 +1490,7 @@ void win_window_info::draw_video_contents(HDC dc, int update)
mtlog_add("draw_video_contents: begin");
mtlog_add("draw_video_contents: render lock acquire");
- osd_lock_acquire(m_render_lock);
+ std::lock_guard<std::mutex> lock(m_render_lock);
mtlog_add("draw_video_contents: render lock acquired");
// if we're iconic, don't bother
@@ -1516,7 +1514,6 @@ void win_window_info::draw_video_contents(HDC dc, int update)
}
}
- osd_lock_release(m_render_lock);
mtlog_add("draw_video_contents: render lock released");
mtlog_add("draw_video_contents: end");
diff --git a/src/osd/windows/window.h b/src/osd/windows/window.h
index 62d4f57db55..6a925494f93 100644
--- a/src/osd/windows/window.h
+++ b/src/osd/windows/window.h
@@ -9,6 +9,7 @@
#ifndef __WIN_WINDOW__
#define __WIN_WINDOW__
+#include <mutex>
#include "video.h"
#include "render.h"
@@ -92,7 +93,7 @@ public:
float m_aspect;
// rendering info
- osd_lock * m_render_lock;
+ std::mutex m_render_lock;
render_target * m_target;
int m_targetview;
int m_targetorient;
diff --git a/src/osd/windows/winmain.cpp b/src/osd/windows/winmain.cpp
index d1d944a2146..2a14281f7fc 100644
--- a/src/osd/windows/winmain.cpp
+++ b/src/osd/windows/winmain.cpp
@@ -303,12 +303,13 @@ const options_entry windows_options::s_option_entries[] =
{ WINOPTION_REFLECTION";fs_ref(0.0-1.0)", "0.0", OPTION_FLOAT, "screen reflection amount" },
{ WINOPTION_VIGNETTING";fs_vig(0.0-1.0)", "0.0", OPTION_FLOAT, "image vignetting amount" },
/* Beam-related values below this line*/
- { WINOPTION_SCANLINE_AMOUNT";fs_scanam(0.0-4.0)", "1.0", OPTION_FLOAT, "overall alpha scaling value for scanlines" },
+ { WINOPTION_SCANLINE_AMOUNT";fs_scanam(0.0-4.0)", "0.0", OPTION_FLOAT, "overall alpha scaling value for scanlines" },
{ WINOPTION_SCANLINE_SCALE";fs_scansc(0.0-4.0)", "1.0", OPTION_FLOAT, "overall height scaling value for scanlines" },
{ WINOPTION_SCANLINE_HEIGHT";fs_scanh(0.0-4.0)", "1.0", OPTION_FLOAT, "individual height scaling value for scanlines" },
{ WINOPTION_SCANLINE_BRIGHT_SCALE";fs_scanbs(0.0-2.0)", "1.0", OPTION_FLOAT, "overall brightness scaling value for scanlines (multiplicative)" },
{ WINOPTION_SCANLINE_BRIGHT_OFFSET";fs_scanbo(0.0-1.0)", "0.0", OPTION_FLOAT, "overall brightness offset value for scanlines (additive)" },
- { WINOPTION_SCANLINE_OFFSET";fs_scanjt(0.0-4.0)", "0.0", OPTION_FLOAT, "overall interlace jitter scaling value for scanlines" },
+ { WINOPTION_SCANLINE_JITTER";fs_scanjt(0.0-4.0)", "0.0", OPTION_FLOAT, "overall interlace jitter scaling value for scanlines" },
+ { WINOPTION_HUM_BAR_ALPHA";fs_humba(0.0-1.0)", "0.0", OPTION_FLOAT, "overall alpha scaling value for hum bar" },
{ WINOPTION_DEFOCUS";fs_focus", "1.0,0.0", OPTION_STRING, "overall defocus value in screen-relative coords" },
{ WINOPTION_CONVERGE_X";fs_convx", "0.25,0.00,-0.25", OPTION_STRING, "convergence in screen-relative X direction" },
{ WINOPTION_CONVERGE_Y";fs_convy", "0.0,0.25,-0.25", OPTION_STRING, "convergence in screen-relative Y direction" },
@@ -327,10 +328,11 @@ const options_entry windows_options::s_option_entries[] =
/* NTSC simulation below this line */
{ NULL, NULL, OPTION_HEADER, "NTSC POST-PROCESSING OPTIONS" },
{ WINOPTION_YIQ_ENABLE";yiq", "0", OPTION_BOOLEAN, "enables YIQ-space HLSL post-processing" },
- { WINOPTION_YIQ_CCVALUE";yiqcc", "3.59754545", OPTION_FLOAT, "Color Carrier frequency for NTSC signal processing" },
+ { WINOPTION_YIQ_JITTER";yiqj", "0.0", OPTION_FLOAT, "Jitter for the NTSC signal processing" },
+ { WINOPTION_YIQ_CCVALUE";yiqcc", "3.57954545", OPTION_FLOAT, "Color Carrier frequency for NTSC signal processing" },
{ WINOPTION_YIQ_AVALUE";yiqa", "0.5", OPTION_FLOAT, "A value for NTSC signal processing" },
{ WINOPTION_YIQ_BVALUE";yiqb", "0.5", OPTION_FLOAT, "B value for NTSC signal processing" },
- { WINOPTION_YIQ_OVALUE";yiqo", "1.570796325", OPTION_FLOAT, "Outgoing Color Carrier phase offset for NTSC signal processing" },
+ { WINOPTION_YIQ_OVALUE";yiqo", "0.0", OPTION_FLOAT, "Outgoing Color Carrier phase offset for NTSC signal processing" },
{ WINOPTION_YIQ_PVALUE";yiqp", "1.0", OPTION_FLOAT, "Incoming Pixel Clock scaling value for NTSC signal processing" },
{ WINOPTION_YIQ_NVALUE";yiqn", "1.0", OPTION_FLOAT, "Y filter notch width for NTSC signal processing" },
{ WINOPTION_YIQ_YVALUE";yiqy", "6.0", OPTION_FLOAT, "Y filter cutoff frequency for NTSC signal processing" },
@@ -338,8 +340,6 @@ const options_entry windows_options::s_option_entries[] =
{ WINOPTION_YIQ_QVALUE";yiqq", "0.6", OPTION_FLOAT, "Q filter cutoff frequency for NTSC signal processing" },
{ WINOPTION_YIQ_SCAN_TIME";yiqsc", "52.6", OPTION_FLOAT, "Horizontal scanline duration for NTSC signal processing (in usec)" },
{ WINOPTION_YIQ_PHASE_COUNT";yiqp", "2", OPTION_INTEGER, "Phase Count value for NTSC signal processing" },
- { WINOPTION_YIQ_SCAN_TIME";yiqsc", "52.6", OPTION_FLOAT, "Horizontal scanline duration for NTSC signal processing (in usec)" },
- { WINOPTION_YIQ_PHASE_COUNT";yiqp", "2", OPTION_INTEGER, "Phase Count value for NTSC signal processing" },
/* Vector simulation below this line */
{ NULL, NULL, OPTION_HEADER, "VECTOR POST-PROCESSING OPTIONS" },
{ WINOPTION_VECTOR_LENGTH_SCALE";veclength", "0.5", OPTION_FLOAT, "How much length affects vector fade" },
diff --git a/src/osd/windows/winmain.h b/src/osd/windows/winmain.h
index 53f9e137604..7656ab4ee31 100644
--- a/src/osd/windows/winmain.h
+++ b/src/osd/windows/winmain.h
@@ -55,7 +55,8 @@
#define WINOPTION_SCANLINE_HEIGHT "scanline_height"
#define WINOPTION_SCANLINE_BRIGHT_SCALE "scanline_bright_scale"
#define WINOPTION_SCANLINE_BRIGHT_OFFSET "scanline_bright_offset"
-#define WINOPTION_SCANLINE_OFFSET "scanline_jitter"
+#define WINOPTION_SCANLINE_JITTER "scanline_jitter"
+#define WINOPTION_HUM_BAR_ALPHA "hum_bar_alpha"
#define WINOPTION_DEFOCUS "defocus"
#define WINOPTION_CONVERGE_X "converge_x"
#define WINOPTION_CONVERGE_Y "converge_y"
@@ -71,6 +72,7 @@
#define WINOPTION_PHOSPHOR "phosphor_life"
#define WINOPTION_SATURATION "saturation"
#define WINOPTION_YIQ_ENABLE "yiq_enable"
+#define WINOPTION_YIQ_JITTER "yiq_jitter"
#define WINOPTION_YIQ_CCVALUE "yiq_cc"
#define WINOPTION_YIQ_AVALUE "yiq_a"
#define WINOPTION_YIQ_BVALUE "yiq_b"
@@ -154,7 +156,8 @@ public:
float screen_scanline_height() const { return float_value(WINOPTION_SCANLINE_HEIGHT); }
float screen_scanline_bright_scale() const { return float_value(WINOPTION_SCANLINE_BRIGHT_SCALE); }
float screen_scanline_bright_offset() const { return float_value(WINOPTION_SCANLINE_BRIGHT_OFFSET); }
- float screen_scanline_offset() const { return float_value(WINOPTION_SCANLINE_OFFSET); }
+ float screen_scanline_jitter() const { return float_value(WINOPTION_SCANLINE_JITTER); }
+ float screen_hum_bar_alpha() const { return float_value(WINOPTION_HUM_BAR_ALPHA); }
float screen_reflection() const { return float_value(WINOPTION_REFLECTION); }
float screen_curvature() const { return float_value(WINOPTION_CURVATURE); }
float screen_round_corner() const { return float_value(WINOPTION_ROUND_CORNER); }
@@ -169,6 +172,7 @@ public:
const char *screen_grn_ratio() const { return value(WINOPTION_GRN_RATIO); }
const char *screen_blu_ratio() const { return value(WINOPTION_BLU_RATIO); }
bool screen_yiq_enable() const { return bool_value(WINOPTION_YIQ_ENABLE); }
+ float screen_yiq_jitter() const { return float_value(WINOPTION_YIQ_JITTER); }
float screen_yiq_cc() const { return float_value(WINOPTION_YIQ_CCVALUE); }
float screen_yiq_a() const { return float_value(WINOPTION_YIQ_AVALUE); }
float screen_yiq_b() const { return float_value(WINOPTION_YIQ_BVALUE); }
diff --git a/src/version.cpp b/src/version.cpp
index aaa9455e40d..65db62b5d62 100644
--- a/src/version.cpp
+++ b/src/version.cpp
@@ -8,7 +8,7 @@
***************************************************************************/
-#define BARE_BUILD_VERSION "0.169"
+#define BARE_BUILD_VERSION "0.170"
extern const char bare_build_version[];
extern const char build_version[];